主页 > imtoken正版app下载 > 以太坊令牌安全性如何最佳运行
以太坊令牌安全性如何最佳运行
令牌发布应遵循其他最佳实践,但有一些独特的警告。
符合最新标准
一般而言,代币智能合约应遵循公认且稳定的标准。
目前接受的标准是:
· EIP20标准
· EIP721标准
注意 EIP-20 的前端攻击
EIP-20 代币的 approve() 函数为批准的支出者创造了超过预期金额的可能性。 可以使用前端攻击,以便批准的花费者在处理对 approve() 的调用之前和之后调用 transferFrom()。
防止代币转移到 0x0 地址
在撰写本文时,“零”地址 (0x0000000000000000000000000000000000000000) 包含价值超过 8000 万美元的代币。
防止代币转移到合约地址
还要考虑防止代币转移到智能合约的同一地址。
可能损失的一个例子是 EOS 代币智能合约以太坊代币创建,其中超过 90,000 个代币被困在合约地址上。
例子:
实施上述两个建议的一个例子是创建以下修饰符; 验证“收件人”地址既不是 0x0 也不是智能合约自己的地址:
修饰符 validDesTInaTIon(地址){
要求(到!=地址(0x0));
要求(到!=地址(这个));
_;
}
然后将修饰符应用于“transfer”和“transferFrom”方法:
函数传输(address_to,uint_value)
有效目的地(_to)
回报(布尔)
{
(……你的逻辑……)
}
函数 transferFrom(address_from, address_to, uint_value)
有效目的地(_to)
回报(布尔)
{
(……你的逻辑……)
}
程序文件
在启动需要大量资金或需要关键任务的智能合约时,必须包含适当的解释文件和与安全相关的文档,包括:
规格和推出计划
· 规范、图表、状态机、模型和其他帮助审计员、审阅者和社区了解系统意图的文档。
· 可以在规范中发现许多错误,从而降低修复它们的成本。
· 推出计划,包括此处列出的详细信息以及目标日期。
状态
· 当前代码的部署位置。
编译器版本、使用的标志以及验证部署的字节码与源代码匹配的步骤
· 将在不同阶段使用的编译器版本和标志
· 已部署代码的当前状态(包括未解决的问题、性能统计等)
已知的问题
· 智能合约的主要风险。 (例如,您可能会损失所有的钱,黑客可能会投票支持某些结果)
· 所有已知的错误/限制。
· 潜在的攻击和解决方法。
· 潜在的利益冲突。 (例如,筹集的以太币将被收入囊中,就像 Slock.it 和 DAO)
历史记录
· 测试(包括使用统计、发现的错误、测试时间)。
· 审查过代码(以及他们的关键反馈)的人。
紧急程序
· 发现错误时的行动计划(例如,紧急选项、公共通知流程等)。
如果出现问题(例如,支持者从攻击前的剩余资金中获得一定比例的余额),则结束该过程。
负责任的披露政策(例如以太坊代币创建,在哪里报告发现的错误,任何错误赏金计划的规则)。
· 失败情况下的追索权(例如保险、罚款基金、无追索权)。
联系信息
· 谁来处理这个问题。
· 程序员和/或其他关键人员的姓名。
· 可以提问的聊天室。