以太坊代币安全如何 *** 作是最佳的

以太坊代币安全如何 *** 作是最佳的,第1张

代币发布时应遵循其他最佳实践经验,但也要有一些独特的注意事项。

符合最新标准

一般来说,代币的智能合约应遵循公认且稳定的标准。

目前接受的标准有:

· EIP20标准

· EIP721标准

注意在EIP-20上的前端攻击

EIP-20令牌的approve()函数为批准的支出者创造了超出预期金额的可能性。可以使用前端攻击,使批准的支出者可以在处理对approve()的调用之前和之后调用transferFrom()。

防止将代币传输到0x0地址

在编写本文时,“零”地址(0x0000000000000000000000000000000000000000)包含值超过8000万美元的代币。

防止将代币传传输合约地址

还要考虑防止代币转移到智能合约的同一地址。

EOS代币智能合约就是其中一个可能造成损失的例子,其中超过90,000个代币被卡在合约地址上。

示例:

实施上述两项建议的一个示例是创建以下修饰符;验证“to”地址既不是0x0也不是智能合约自己的地址:

modifier validDesTInaTIon( address to ) {

require(to != address(0x0));

require(to != address(this) );

_;

}

然后将修饰符应用于“ transfer”和“ transferFrom”方法:

funcTIon transfer(address _to, uint _value)

validDesTInation(_to)

returns (bool)

{

(。.. your logic 。..)

}

function transferFrom(address _from, address _to, uint _value)

validDestination(_to)

returns (bool)

{

(。.. your logic 。..)

}

程序文件

当启动一个将有大量资金或需要关键任务的智能合约时,必须包括适当的解释文件和安全相关的文档包括:

规格和推出计划

· 规范,图表,状态机,模型和其他文档,可帮助审核员,审阅者和社区了解系统的意图。

· 很多bug都可以从规范中找到,从而降低修复它们的成本。

· 推出计划,其中包括此处列出的详细信息以及目标日期。

状态

· 当前代码的部署位置。

· 编译器版本,使用的标志以及用于验证部署的字节码的步骤与源代码匹配

· 将用于不同阶段的编译器版本和标志

· 已部署代码的当前状态(包括未决问题、性能统计等)

已知的问题

· 智能合约的主要风险。 (例如, 你可能会丢掉所有的钱,黑客可能会通过投票支持某些结果)

· 所有已知Bug/限制。

· 潜在的攻击和解决方法。

· 潜在的利益冲突。(例如,筹集的Ether将纳入自己的腰包,像Slock.it与DAO一样)

历史记录

· 测试(包括使用情况统计信息,发现的Bug,测试时间)。

· 已审阅代码的人员(及其关键反馈)。

紧急程序

· 发现Bug时的行动计划(例如,紧急选项,公共通知流程等)。

· 如果出现问题,请结束流程(例如出资者会在攻击前从剩余资金中获得余额的百分比)。

· 负责任的披露政策(例如在何处报告发现的Bug,任何Bug赏金计划的规则)。

· 发生故障时的追索权(例如保险,罚款基金,无追索权)。

联系信息

· 谁来处理问题。

· 程序员和/或其他重要人员的姓名。

· 可以提问的聊天室。

来源: 区块链研究实验室

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2584802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-08
下一篇 2022-08-08

发表评论

登录后才能评论

评论列表(0条)

保存