摘要:首先确认载入的合约地址是否是最新的,比如 web3 载入的 abi 格式的 json 文件名 正不正确。 其次需要检查合约逻辑是否都正确,以及是否是合约抛出的错误,这两点最好是通过写测试用例来保证。 最后看调用方是否传参有问题,包括调用合约时传递的任何一个选项,比如 from, value, dat
阅读全文
摘要:第一种,使用 Truffle 这类继承了测试工具的框架,只要编写 js 脚本就可以测试 web3 与合约的逻辑。 优点是完全可控,粒度够细,便于集成测试;缺点是需要花费一些时间编写测试脚本,不过值得。 第二种,使用 Remix 提供的图形化方法调用,可以快速验证方法返回值的正确性,方便了调试。 只需
阅读全文
摘要:思路:一种方式是使用 ethereum-alarm-clock,另一种是合约实现当前过去了多少时间,外部进行不间断调用获得。 Any else? Refer:Solidity能倒计时吗 Link:https://www.cnblogs.com/farwish/p/12424187.html
阅读全文
摘要:我们在调用合约方法时,都可以传一些参数的,比如转账金额 value。 value 的单位是 wei,这是一个很小的单位,所以一般数值很大。 如果误把 ether 当成 wei 传参,就会报标题中的错误。 注意,把 ether 转 wei 需要先把 ether 的值转成字符串。 比如 0.1 ethe
阅读全文
摘要:我们在调用合约方法时,都可以传一些参数的,比如转账金额 value。 value 的单位是 wei,这是一个很小的单位,所以一般数值很大。 注意,把 ether 转 wei 需要先把 ether 的值转成字符串,不然就会报出标题中的错误。 比如 0.1 ether 转 wei 使用 web3.uti
阅读全文
摘要:为什么需要监听网络变化?目前在 MetaMask 中切换网络,网页会自动刷新,但是这一特性后面将停止使用。 MetaMask: MetaMask will soon stop reloading pages on network change. If you rely upon this behav
阅读全文
摘要:web3.eth.getAccounts() 返回节点控制的账号列表(Promise returns Array) web3.eth.getCoinbase() 返回挖矿奖励所归集的地址(Promise returns String) 根据字面意思很难知道 两个函数 分别用在哪块,下面给出具体解释:
阅读全文
摘要:在前端用 web3 与 contract 交互时,需要获取到已部署的 contract 实例进行操作,如果没有获取到就会报此错。 比如如下的 .deployed() 阶段: /* 伪代码 */ const contractJson = contract(pokerJson) contractJson
阅读全文
摘要:address payable --> address address payable addr1 = msg.sender; address addr2 = addr1; // 隐式转 address addr3 = address(addr1); // 显式转 address --> addre
阅读全文
摘要:变量的默认值一般都代表 “零值”。 比如 bool 就是 false,uint、int 就是 0,string 就是空字符串。 其它组合的参考 Solidity 判断 mapping 值的存在 Refer:Solidity所有变量类型 Ref:https://solidity.readthedocs
阅读全文
摘要:思路:为需要遍历的 mapping 再准备一个 list,之后通过 for 循环遍历 list 取得 mapping 的 key。 mapping (address => uint) usersValue mapping (uint => address) list uint length = xx
阅读全文
摘要:比如 mapping(address => uint) tester,只需要判断 mapping 是否为默认值 0, tester[msg.sender] == 0 "You can think of mappings as hash tables, which are virtually init
阅读全文
摘要:合约内部访问的用 private,修饰内部变量时选择、通过 external 函数返回。 合约内部、外部均可访问的用 public。 仅在合约外部访问的用 external,明确暴露给前端使用时选择。 internal 类似 protected,可访问父合约的 internal 方法。 Refer:
阅读全文
摘要:顾名思义,address 属性不存在,请检查调用方。 比如:msg.sender.address 会有此提示,在 Solidity Contract 中,msg.sender.balance 是存在的,msg.sender 表示调用合约的人地址 Refer:智能合约中可支付的地址 Link:http
阅读全文
摘要:Installation $ npm install -g truffle Choose ethereum client (Ganache OR truffle build in `truffle develop`) https://www.trufflesuite.com/docs/truffle
阅读全文