iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 21
0
自我挑戰組

區塊鏈報明牌系列 第 21

[區塊鏈報明牌]Day 21 Ethereum(4)-The DAO Attack

  • 分享至 

  • xImage
  •  

ICO

在講THE DAO之前要先提到ICO(Initial Coin Offering),概念可以大致對照股票的IPO(Initial Public Offerings)一樣也是向大眾公開募資,有個團隊製作了一種加密貨幣(當然也有可能像是lottery token這樣基於Ethereum的代幣),然後公眾可以將其他的幣(可能是法幣、乙太幣、比特幣之類的)換成該幣。

以The DAO來說,幣的功能在其中更類似股份的性質,以持有的幣多寡來決定The DAO中的決策和進行分紅等。

The DAO

The DAO是目前世界眾籌金額第一的項目(雖然隨著在day8提到的出包事件這個項目早就死了),它的目的就是打算在Ethereum上打造一個沒有員工的基金公司。

這是什麼意思呢?隨著前幾天介紹Ethereum的脈絡其實很好理解:

  1. Ethereum上可以打造智能合約,合約可以做很多事(既然是圖靈完備,理論上就是能做任何可計算的事情),像是發行自己的代幣等等,甚至以此為基礎在上面發展業務等等。

  2. 智能合約的執行需要消耗乙太幣。

  3. 於是The DAO就是提供乙太幣給那些需要資助的項目,就像我們在昨天看到的Congress的例子,自然也可以寫出嚴謹的資金運作流程程式來執行這種投資。

這樣看來有著世界第一眾籌項目的前景,The DAO這個乙太幣基金本該隨著Ethereum的發展成為其上眾項目的項目、眾代幣的代幣,前途無可限量,究竟是怎樣的攻擊事件毀了它呢?

The DAO Attack

這裡的介紹主要參考該文和其引用的兩片文章,來介紹THE DAO智能合約中的漏洞。

childDAO:是為了讓THE DAO中的持幣較少者(類似小股東),因為弱勢而權益受損時可以分離出來。

splitDAO:創建childDAO的函式,其中往下call會call到paidOut函式。

paidOut:這個函式會轉帳乙太幣到指定的地址,此時原本的DAO token還沒有被回收。

重點在於paidOut如果把乙太幣轉給一個智能合約,該合約在收到時能執行一個fallback函式,這個fallback函式再去呼叫splitDAO,而原本的DAO token回收是在paidOut之後,所以攻擊者能利用漏洞一直從The DAO中拿出乙太幣,不用付出原本的DAO token做交換。

相關參考資源:

ICO
https://en.wikipedia.org/wiki/Initial_coin_offering
The DAO
https://en.wikipedia.org/wiki/The_DAO_(organization)
从技术角度剖析针对THE DAO的攻击手法
http://ethfans.org/posts/114


上一篇
[區塊鏈報明牌]Day 20 Ethereum(3)-DAO
下一篇
[區塊鏈報明牌]Day 22 Ethereum(5)-CryptoKitties
系列文
區塊鏈報明牌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
小chi
iT邦新手 5 級 ‧ 2018-01-09 08:52:30

加油喔

willyc20 iT邦新手 5 級 ‧ 2018-01-09 12:46:38 檢舉

謝謝/images/emoticon/emoticon06.gif

我要留言

立即登入留言