22-ETH-TheDAO

聲明:本文是要點筆記,介紹和系列筆記均收錄在專題:區塊鏈技術與應用

比特幣實現了去中心化的貨幣,以太坊實現了去中心化的合約,那麼去中心化這麼好,爲什麼不把所有的都改成去中心化,所以有人提出一個口號: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()函數,競拍不成直接取回,這裏不行,只能用拆分的方法。

拆分的時候有 7 天的討論期,大家可以討論這個拆分好不好,拆分之後有 28 天鎖定期,拆分後,把錢打入子資金裏面,但是隻有28天后才能取出來。拆分的理念沒有錯,問題出現在 splitDao 實現上,他是先轉賬後扣除總資金,然後把賬戶清零,正確的操作順序是先清零後轉賬,黑客就用這個漏洞進行重入攻擊。

TheDao 的補救

提出了兩種方法:

  1. 回滾交易(如果出了問題就回滾,就不是去中心化的);
  2. 不需要採取補救措施,因爲黑客沒有做錯,沒有違反法律。

補救措施:軟件升級,只回滾黑客的交易(軟分叉)。但是有Bug:汽油費,非法執行用不用收取汽油費?如果不受汽油費,就會有人一直非法攻擊,然後礦工就收不到交易費,後來就很多人恢復了原來的版本。

後來新的措施,把錢強行轉到新的智能合約,這個新的智能合約只有一個功能:退錢,把代幣退回成以太幣用軟件升級的方法,不用合不合法簽名,這是硬分叉。現在舊鏈和新鏈並存,這會導致重放攻擊,在新鏈上的也可以在舊鏈上執行,於是增加一個 chainID 防止它。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章