摘要:官网:https://polkadot.js.org/ 浏览器扩展(即钱包, 等同以太坊的MetaMask):https://polkadot.js.org/extension/ 钱包的作用方便你管理自己的DOT资产,参与DOT生态的项目 (众贷、质押等) 基本都需要连接 DOT 钱包签名操作。 链
阅读全文
摘要:当使用 npx hardhat compile 命令编译智能合约时,会先下载你在 hardhat.config.js 配置中对应版本的 solidity 编译器。 当网络不可达时,就会提示无法下载的错误。 至少有两种方式可以解决: 1. 通过指定环境变量 HTTP_PROXY 或 HTTPS_PRO
阅读全文
摘要:Moralis 的基础设施数据库是使用的 MongoDB,其非常适合Dev阶段的快速开发。 如果进入生产环境,需要锁定数据库,防止任何用户可利用SDK向Mongo插入多余数据。 另外,Moralis 提供了很多方式来保护app的数据,对于公共数据,可使用 class (数据表)级别的权限锁定表使之
阅读全文
摘要:ether.js 是 Web3 封装的 js 库,特别适合以太坊平台。 Moralis 不仅是 Web3 的封装,还是一体化解决方案,包括服务端部署方案和适配各种链,使用范围更广。 在选择上,主要还是看项目涉及的内容,有针对性的选择解决方案。 Link:https://www.cnblogs.com
阅读全文
摘要:Moralis 提供的使用功能包括三个方面: 进一步封装Web3功能的 Moralis SDK,极大方便了开发者对于DApp基础功能的开发,比如 MetaMask登录验证,签名,IPFS集成,DApp托管。 提供快速的全节点API,快速连接到 以太坊/BSC/Polygon 节点。 索引过的区块链数
阅读全文
摘要:Install Dependency $ npm init $ npm install @openzeppelin/cli Setup project $ npx openzeppelin init Write first contract in contracts/, then compile p
阅读全文
摘要:在使用 `truffle migrate` 时,如果合约的构造函数需要传参,而部署脚本里没有传的时候,就会报这个错。 未传参时: const Migrations = artifacts.require("Migrations"); module.exports = function(deploye
阅读全文
摘要:Solidity 实现的合约中,函数操作都是原子操作,旷工本地执行,取得共识后发布到区块链上。 实际发布到区块链上的不存在并发,全节点同步状态到本地。 Solidity 中有三种方式进行转账,address.transfer、address.send、address.call。 Solidity 重
阅读全文
摘要:在 solidity 中控制访问,一般是通过 modifier 修饰符方法来直接做。 那么对于稍复杂的多种访问控制,通常需要一个统一操作的模块化类库。 现在已经有了这样的类库存在,我们通过一个实现功能上增删改查的 library,然后在具体的合约中声明变量、按需使用。 建议参考 openzeppel
阅读全文
摘要:using A for *; # 把 A 的函数附给任意类型使用 using A for B; # 意思是把 A 中的方法附给 B 使用 使用上面的方式,那么在我们的合约中定义了 B 类型的变量后,就可以像 B.xx() 这样使用 A 库的函数了。 举个局部例子:_miners 可以直接使用 has
阅读全文
摘要:当使用的 Solidity 库文件中 pragma 指定的 版本 与本地编译器的使用版本不一致时,会出现这类提示。 解决方式是菜单栏 View -> Extensions -> Extension Settings -> Compile Using Remote Versio 编辑 settings
阅读全文
摘要:目前 openzeppelin-contracts 的稳定版是 v2.5,截止到本文发布,最新的 Tag 为 v3.0.0-rc.0 以下是 token/ETC20 的文件列表: IERC20.sol 是 interface 接口文件,不包含实现。 ERC20.sol 是对上面 interface
阅读全文
摘要:OpenSea 是用于交易以太坊加密商品的网上商店,主要的商品是 ERC721、ERC1155 标准的 Token。 它的特色就在于,只需要一个部署好的智能合约,你就能在 OpenSea 提供的界面上交易,这点类似 OneClickDapp 这一类针对合约提供统一交互的网站。 所以在交易层面你完全不
阅读全文
摘要:在 Ethereum dapp 中,任何涉及状态改动的交易都需要消耗 Gas,这限制了很多没有钱包或者 ETH 的用户对 dapp 的采用。 理念 让非以太用户能够访问智能合约 (如dapps),允许合约接受“接听来电”,即为来电付费。 让合约在可公开访问的渠道上“监听”(例如web URL)。鼓励
阅读全文
摘要:使用 $ npm install truffle-flattener -g $ truffle-flattener <solidity-files> > output.sol 为什么不是 Solidity Flattener ? truffle-flattener 与 truffle 结合紧密,利用
阅读全文
摘要:Gas 是一个交易费的基本单位(unit),类似汽油的单位“升”,比如一次链上交易可能消耗 5 Gas 汽油,由运行的程序决定。 GasPrice 是一个 Gas 的单价,一般用 Gwei 来形象表示 ( 但注意实际在应用程序中都是使用 Wei ),GasPrice 由用户自己设置,其大小会决定交易
阅读全文
摘要:以太坊网络每天的平均气价(Gas)是变化,有一张价格表:https://etherscan.io/chart/gasprice 然后你可以知道 1 Gas = xx Gwei,再换算一下 1 ETH = xx Gas 即可。 另外你需要 搞懂 ETH Gas, GasPrice, GasLimit
阅读全文
摘要:当我们本地完成了一系列测试以后,接下来就是准备上线了。 关于合约部署可以参考这篇:Solidity 合约使用 truffle 部署到测试网和主网 你可能有一个疑问,在上主网之前,先上测试网的作用是什么呢? 理由是,我们可以通过 MetaMask 切换到 ropsten 网络,进行 Dapp 上的常规
阅读全文
摘要:使用 truffle 发布到非本地的以太坊主网或者测试网时,需要提供钱包的助记词或私钥。 首先安装 truffle 组件:npm install @truffle/hdwallet-provider 注册 https://infura.io,得到 project id 和 key,使用其 api 连
阅读全文
摘要:仅创建者可以销毁合约的示例: address public owner; // When deploy contract constructor() public { owner = msg.sender; } function destroyContract() external onlyOwne
阅读全文