Nimiq 代币销售智能合约
Nimiq 交易代币(NET)功能性,NET 智能合约和安全
智能合约
6月28日的代币销售将由一个以太坊智能合约控制,可在此处进行同行评审:
https://github.com/nimiq-network/nimiq-exchange-token
我们的智能合约基于 BAT 代币销售使用的那个智能合约。我们认为他们做的工作很深入,且他们的合约经过了实战检验,设计良好,在遵循最佳的安全级别上能够提供启发性和指导意义。
NET 代币
NET 是标准的 ERC20 代币。ERC20 的功能由 StandardToken 合约(在 StandardToken.sol 文件中定义)提供,包括安全检测在内的基础数学函数由 SafeMath 合约(在 SafeMath.sol 文件中定义) 提供。
合约周期
合约将经历三个不同时期。
- 建立期:当高度 fundingStartBlock 的以太区块生成后,合约将进入建立期,这个时期它接受以太币赞助。
- 交易期:在合约完成之后,贡献者拿到的 NET 可以开始交易。我们会尽快让 NET 能在诸如 liqui.io 这样的代币交易所交易。
- 赎回期:大概在主网络启动的前两个月,我们开启赎回期。我们会提供一个工具给你以创建 Nimiq 帐号和地址,和 NET 等值的 Nimiq 主网络代币(NIM)将会存入这个帐号。具体我们是在 Nimiq 主网络区块链的创始区块中将相应的 NIM 记入对应帐号。汇率固定为 1 NIM = 10 NET,我们的工具将通过简单的步骤,引导贡献者完成兑换。
合约条件
控制代币销售的条件在 NEToken 合约(在 NEToken.sol 文件中定义)中,照着代币销售的条款和条件实现。注意我们在文中的声明,我们将于6月24日前根据市场情况对条款做最终调整。
开始
合约将在某个以太区块开始之后接受赞助,这个开始区块等智能合约在以太主网络部署之后宣布。合约将按照下面的比例发放 NET 到发送者的帐号:
- 前两周(从 UTC 时间6月28日下午1点开始):1 ETH = 175 NET
- 剩余两周(直到销售结束):1 ETH = 125 NET
退款
如果募资阶段已经结束,仍然未达到5,000这个最小的 ETH 容量,那么贡献者就可以执行退款功能并将他们赞助的 ETH 退回原地址。
停止
如果达到或超过最小的 ETH 容量,那么只要满足以下其中一个条件,代币销售合约立即完成:
- 结束时间:代币销售进行了28天,在 UTC 时间7月26日下午1点结束。
- ETH 容量:当到达60,000这个最大的 ETH 容量的时候,合同将停止接受赞助。
- NET 容量:当最多10,500,000的 NET 被分配给 ETH 贡献者时,合同将停止接受赞助。
完成
合约完成的时候,我们把合约状态设置为 Finalized,并根据行业最佳做法,把收到的 ETH 发给一个多重签名的钱包保管。
紧急暂停
假如我们在代币销售过程中发现任何安全问题,Nimiq 团队可以使用多重签名密钥暂停代币销售。除非真正威胁到代币销售,否则我们不会使用此功能。
赎回
一旦赎回期开始,合约的 redeemTokens 函数被激活。redeemTokens 函数登记着可以在创始区块中生成 NIM 的 NET 总额,其唯一参数就是用户在 Nimiq 主网络的地址。
安全
我们非常重视安全,它是我们团队的核心竞争力之一。
测试
我们开发团队中的安全高手,Jeff、Pascal、Marvin 和 Philipp 投入大量的时间完成和测试我们的合约。我们为所有预期场景创建了测试,包括所有可能想到的边角案例。
外部安全审计
智能合约正由德国软件安全公司 Backes Security Research & Technologies GmbH 进行审核。我们预计很快就会有一个初步的审计结果。最终审核结果将于6月24日至25日等几个数值确定后(见代币销售条款里面的声明)发布。
BUG 悬赏奖励
随着我们用于同行评审的智能合约的发布,我们正在宣布一个5,000美元的 BUG 悬赏,奖励发现和可靠披露合约存在的问题,这些问题会给代币销售造成实际安全威胁。重要的是,这种错误报告需要根据在实际的攻击情形下的确切执行进行分类。合格的 BUG 是这样的:
- 安全威胁:错误的 ETH/NET 分配
- DoS:通过恶意的行为导致合约错误执行(陷入无效,不可恢复的状态)
- 逻辑错误:合约里面的问题导致与规定的意图和条款发生重大偏离。
分散化
为了保护代币销售贡献者的权利 — — 即按项目路线图交付 — — 有必要将销售立即分散化。一旦超过智能合约的最低 ETH 容量,赞助的 ETH 将被释放到多重签名的地址,这样就可以采取进一步行动,以使持有分散化,且降低单独暴露风险给市场带来波动。
总结
设计这个合约比我们预期的多花费了几天,但是定义一个智能合约,使它能可靠的用于安全接收和100%正确地使用贡献者资金,具有挑战性。我们想要确保我们的合约在发布前经过精心设计和严格测试。这跟我们在我们的测试网络以及路线图上所有其他即将发布的版本计划中采取的方法一样。
阅读更多Nimiq相关内容
参考:https://medium.com/nimiq-network/nimiq-token-sale-smart-contract-715b32c19dc2
The Nimiq team thanks jonfish for its translation. You can find his original translation here.