怎么样编写以太坊ERC-20智能合约的单元测试

当前位置:首页 > 币圈百科 > 怎么样编写以太坊ERC-20智能合约的单元测试

怎么样编写以太坊ERC-20智能合约的单元测试

2022-11-08币圈百科230

为您的智能合约编写单元测试非常重要,就像为任何开发项目编写代码一样。然而,基于区块链的解决方案中的单个设备测试经常被低估和忽略。去年,我审计了200多份智能合约,它们大多是由以太坊(Ethereum)和Neo、Eos、Tron和比特币区块链撰写的。据我观察,这些项目中有将近一半没有写设备测试。这种监管往往导致合同执行不佳,审计过程中发现各种安全问题。

基本测试

每个智能合约都有一些共同的部分,比如构造器、总供给、来回传输的函数、批准的函数,有时还有燃烧额外令牌的函数。所以,检查你的智能合约的所有参数是否初始化正确,溢出总供给或其他器件值时是否能及时返回,是非常重要的。您还需要检查修饰符并更正权限用法。在这里,我们将以以太坊为例,但这也适用于其他平台,因为合同往往具有相同的结构。首先,让我们测试正确的令牌初始化和正确的地址传输。正确的初始化测试很简单。您只需要创建一个样本契约,并检查所有必须初始化的值的正确性。检查传递函数非常重要,因为可能会出现一些问题,导致传递不正确。你必须保证接收者和发送者之间的平衡,并设法恢复它,以防止它受到错误函数参数的影响。比如发送次数超过发送方余额,发蓑衣网小编2022送合同地址或无效地址。最后,您必须检查从传输事件中获得的正确日志。转账功能与转账非常相似,但这里还需要测试spender是否有足够的已批准余额可以发送。进行以下测试的费用少于所需资金。批准功能是ERC20标准中最简单的功能。不需要检查零地址,只需要检查余量数组填充是否正确。此外,如果您不增加或减少批准功能,批准将覆盖所有以前的值。因此,我们建议使用这些功能来防止不必要的覆盖。当然,检查从批准事件中获得的正确日志非常重要。大多数智能合约都包含一项功能,即在主销售结束后烧掉剩余的代币。他们中的许多人有一个特殊的代币持有者帐户,有时是所有者帐户。因此,对于焚烧未售出的代币,最佳解决方案是:获取持有者地址上的代币数量,然后从总供应量中减去该数量,并将代币数量设置为零。这样可以确保你不会烧掉所有的代币,所以在白纸上列出代币燃烧策略很重要。

结论

在将智能合蓑衣网小编2022约部署到主网络之前,对其进行测试以防止将来出现问题非常重要。当你写设备测试的时候,他们会保证你的白皮书和智能合约没有区别,你的智能合约不会被调用的函数攻击。一段时间以来,我听过的最好的编程面试语录是:“在设备测试完成之前,代码是不会完成的。3354 @ brianrivard

这不仅仅是关于智能合约,你需要对你所有的应用程序和代码进行设备测试,因为它向你展示了你的应用程序可能失败的所有方式。

怎么样编写以太坊ERC-20智能合约的单元测试 | 分享给朋友: