声明:本文是要点笔记,介绍和系列笔记均收录在专题:区块链技术与应用
比特币实现了去中心化的货币,以太坊实现了去中心化的合约,那么去中心化这么好,为什么不把所有的都改成去中心化,所以有人提出一个口号:decentralized everthing,DAO(Decentralized Automous Organization,去中心化的自治组织)就是在这个背景下产生的。
传统社会当中,组织是建立在某种法律文件基础上的,比如说可以有一个书面的章程,规范组织的行为,有时候还需要到政府进行登记注册。
DAO概念
在区块链上 DAO 这个组织就是建立在代码基础上的,组织的规章制度是写在代码里面,通过区块链上的共识协议来维护一种规章制度的正常执行。
2016年5月出现了一个致力于众筹投资的DAO,名字叫做 The DAO。这个名字容易引起歧义,DAO是一个通用的概念,凡是去中心化的自治组织都能称为DAO,The DAO是指这个DAO。他的工作原理有点想一个众筹的投资资金,用来投资项目,只不过钱是通过区块链上的众筹的方法得到的,本质上是一个运行在以太坊上的智能合约,如果想参与其中,可以把以太币发给智能合约换到 The DAO 的代币,具体投资哪个项目是由大家投票决定,代币越多,投票权重越大。最后的收益也是按照智能合约规定的进行分配。
The DAO工作原理有点像DAC(Decentralized Automous Corporation).这两个的区别,DAC是处于盈利目的的,DAO可以是处于非盈利性目的,比如公益事业。虽然是Corporation,但是现实中不具有法人地位,也就是董事长之类的职务。
The DAO,2016年5月开始众筹,受到瞩目,因为以前没有这么民主的投资资金,在当时被称为是一种伟大的尝试,引起互联网社区里很大的兴奋,从5月开始众筹,一个月众筹到了1.5亿美元的以太币。但是3个月就不行了。
TheDao 的拆分
假如你是投资者,需要用钱了想把以前投资的以太币换回来,在The DAO的基金里,以拆分的方法实现,就是 split DAO,这个拆分的方法并不仅仅是取回收益,还是建立子资金的方法,chlid DAO。如果有一小部分人和其他人的投资理念不一样,这种情况下,这一小部分人可以用拆分的方法成立自己的子资金,拆分的时候手中的代币是要被收回的,换成相应数量的以太币,然后就可以投想投的项目。极端情况下,单个投资者成立一个子资金,在子资金里就能把所有的钱投给自己,这是投资者取回投资和收益的唯一途经。并没有withdraw()函数,竞拍不成直接取回,这里不行,只能用拆分的方法。
split DAO拆分的时候有 7 天的讨论期,大家可以讨论这个拆分好不好,拆分之后有 28 天锁定期,拆分后,把钱打入子资金里面,但是只有28天后才能取出来。拆分的理念没有错,问题出现在 splitDao 实现上,他是先转账后扣除总资金,然后把账户清零,正确的操作顺序是先清零后转账,黑客就用这个漏洞进行重入攻击。
TheDao 的补救
提出了两种方法:
- 回滚交易(如果出了问题就回滚,就不是去中心化的);
- 不需要采取补救措施,因为黑客没有做错,没有违反法律。
补救措施:软件升级,只回滚黑客的交易(软分叉)。但是有Bug:汽油费,非法执行用不用收取汽油费?如果不受汽油费,就会有人一直非法攻击,然后矿工就收不到交易费,后来就很多人恢复了原来的版本。
后来新的措施,把钱强行转到新的智能合约,这个新的智能合约只有一个功能:退钱,把代币退回成以太币用软件升级的方法,不用合不合法签名,这是硬分叉。现在旧链和新链并存,这会导致重放攻击,在新链上的也可以在旧链上执行,于是增加一个 chainID 防止它。
网友评论