主页 > imtoken钱包下 > 基于以太坊 ICO 的安全合约架构

基于以太坊 ICO 的安全合约架构

imtoken钱包下 2023-01-18 10:54:30

基于以太坊 ICO 的安全合约架构概述

随着比特币和以太坊的兴起,越来越多的项目通过ICO筹集早期资金。 其中,大部分项目使用基于以太坊的ERC20代币发行代币。 基于ERC20代币的代币占据了数字货币市场的半壁江山,从而支撑了以太坊价格的上涨。

以太坊合约的图灵完备性给ICO带来了极大的自由和便利,但也引起了人们对ICO安全性的关注。 综合来看,通过合约控制ICO流程需要解决的几个问题如下:

* 代币是如何创建的,由谁创建?

* 如何在众筹期间创建代币?

* 如何控制用户转出的ETH?

带着上面的问题,如果我们想了解基于以太坊的ICO的技术细节,让我们继续。

ERC20代币

ERC20代币是以太坊平台上的数字货币标准,本质上是一种智能合约。 使用ERC20代币的优势在于:

以太坊合约地址查询_以太坊合约怎么做_siteqq.com 以太坊智能合约

* 众筹过程公开透明

* 众筹规则可控

* 交易时间可控

以上特性均基于以太坊的图灵完备性,通过合约进行控制。

众筹合同框架

考虑到整个ICO过程的可控性、安全性和监管要求,ICO过程会涉及三个合约:众筹合约、ERC20 Token标准合约、钱包合约,以及用于创建这三个合约的主账户。

* 主账户

以太坊合约怎么做_siteqq.com 以太坊智能合约_以太坊合约地址查询

主账户是一个普通的以太坊账户,负责创建三个合约

* 众筹合约

控制众筹时间、众筹总额,发起代币创建

为了方便描述四者的关系,这里我们用C代表众筹合约,T代表ERC20 Token标准合约,W代表钱包合约,M代表主账户。 它们的关系如下图所示:

操作流程

流程说明:

1、创建合约:通过主账户M创建三个合约C、T、W。此时三个合约的所有者为主账户M。(对于一些敏感操作,只有所有者才有操作权限)

siteqq.com 以太坊智能合约_以太坊合约怎么做_以太坊合约地址查询

2. 切换T的所有者:众筹合约为了分发代币,需要将代币合约T的所有者更换为众筹合约C。(只有完成这一步才能触发后续操作)

3.代币分配:用户参与众筹时,将Ether转入众筹合约C,C根据规则计算要发行的代币数量,并给用户分​​配代币

4. ETH转账:在分发代币的同时,用户转账的ETH会转入预设的钱包合约W(钱包合约有自己的提现规则)

安全

整个ICO流程看似复杂,其实复杂的背后是有安全考虑的。 其设计过程主要是为了解决以下问题:

* 代币是如何创建的,由谁创建?

* 如果代币只能由合约所有者创建,众筹合约如何顺利创建代币?

以太坊合约怎么做_siteqq.com 以太坊智能合约_以太坊合约地址查询

* 如何控制用户转出的ETH?

1. 代币是如何创建的,由谁创建的?

显然,不是每个人都可以创建代币! 一般的做法是让代币合约的创建者,即所有者,创建代币。

2. 如何让众筹合约顺利创建代币?

因为用户必须通过众筹合约C参与ICO,所以在用户转入ICO后,众筹合约C需要帮助用户创建代币(代币合约T中为用户存入代币数量)。

由于第一个限制,我们需要想办法让众筹合约C成为代币合约T的所有者。方法是这样的:

1、调用代币合约T中的changeOwner方法,将其所有者变更为众筹合约C;

以太坊合约怎么做_siteqq.com 以太坊智能合约_以太坊合约地址查询

2.调用众筹合约C的acceptTokenOwner方法接受成为代币合约T的所有者;

这样,众筹合约C就成为了代币合约T的所有者,拥有了创建代币的权限。

如果我以后要进行第二轮众筹,变更众筹合约又想使用之前的token合约怎么办? 很简单,就像上面的方法一样以太坊合约怎么做,众筹合约也可以将自己对token合约的owner权限转移给下一个众筹合约。 原则上,所有者的转移可以永远进行下去。

如何控制用户转出的ETH?

一般团队需要对众筹获得的ETH进行控制,比如锁定一定时间、限制提现金额、双重签名验证等,都可以通过钱包合约进行控制。

总结

基于以太坊ICO的安全考虑,主要针对三种合约(众筹合约、代币合约、钱包合约)进行安全审查。 ICO涉及的资金数额巨大,任何一个合约出现漏洞都会带来巨大的损失。

AE被盗超过100,000 ETH,因为它使用了Parity泄漏的官方钱包。 这足以让我们提高警惕,不要太相信所谓的“官方”,在ICO之前,项目组必须对合约代码进行多次审核以太坊合约怎么做,确保没有漏洞才可以发布。

引用

以太坊白皮书