通告

分叉的真正含义: Slock.it 对软硬分叉的解释

Tubo   |     |   3633 次阅读

在过去的36个小时里,我们目睹了The DAO被攻击的过程。攻击者使用了splitDAO() 中的"Recursive Call Exploit" (递归调用漏洞),提取了350万以太币,而只消耗了一点点DAO token。

还好,目前这些资金被锁在了一个子DAO里,并不在攻击者手上。

我们Slock.it团队全力支持Vitalik文章里描述的解决方案。

分叉?

1)软分叉

在Vitalik的博客里写道:

有人提议软分叉(不涉及回滚;没有任何交易或区块会被撤销),从第1760000个区块起(具体的区块数可能会改变,直到追溯到恶意代码提交前),任何降低这个账户(地址为0x7278d050619a624f84f51987149ddb439cdaadfba5966f7cfaea7ad44340a4ba)余额的转帐操作,包括calls/callcodes/delegatecalls,都会被算作无效。这样就算过了27天,也能防止被盗的以太币被提走。

换句话说,通过我们的DAO Framework,任何DAO里的以太币都会被冻结。攻击者,以及所有其他人,都无法从任何DAO里提取资金。

可是这只解决问题的一半,虽然攻击者无法提取被盗资金,可是主DAO里的真正token持有人也无法提款。

这个提议已经实现并提交给geth和parity了。

就像Vitalik说的那样:

这样可以给我们足够的时间来讨论未来的各种的解决办法,包括让token持有者收回他们的以太币。

我们提倡第二步解决方案:

2)硬分叉

  • 把所有资金从地址为7278d050619a624f84f51987149ddb439cdaadfba5966f7cfaea7ad44340a4ba
    的合同账户转入到一个新的退款合同("RefundDAO"),我们再循环查找主DAO提议表里所有被分割的DAO。

  • 用一个只可以退款的单函数合同,来代替主DAO的合同。这个函数只有一个输入项(即子DAO的地址),来计算主DAO和子DAO的总余额,然后再依次进行退款(就可以归还已经进行了分割的DAO token持有人的资金)

用这个方法,100%的资金都可以被收回,因为目前连一个Wei还没有损失。而且不需要回滚任何区块和交易。

这一点至关重要:一般人们说起硬分叉,都会认为是要回滚整个区块,甚至要撤销与事件无关的交易(比特币的硬分叉就是这样)。但是我们的情况不同,因为我们不需要回滚撤销任何与the DAO无关的区块或交易,所以我们的硬分叉会非常的简练,容易实现。

其实,一个正常的以太坊用户根本不会察觉到硬分叉带来的任何变化,除了简单的升级一下客户端。

因此,我们认为硬分叉是前进的方向。

以太坊的协议中描述道,若有人不同意以太坊的运作方式,只要得到大多数矿工或群众同意,就可以升级/分叉。这并没有丝毫削弱去中心化的理念,因为没有人,除了矿工和社区群众自己们,没有任何人能够决定是否分叉。我们这些开发者只是提供分叉要用到的代码。

感谢目前为止所有对我们的支持,我们期待能够尽快把此事件解决!


原文:https://blog.slock.it/what-the-fork-really-means-6fe573ac31dd#.qm87vx4j0
作者:Christoph Jentzsch

 
2 人喜欢