去中心化自治組織(Decentralized autonomous organization),如同一般的組織,由一群有共識的所組成,但不同的點是其沒有中心的權威管理,一切決定由社區的參與者及開發者共同維護,可以透過出資或對技術的貢獻來獲得象徵社區投票權的代幣,而持有代幣者都可以進行提案,根據持有代幣的比重來進行投票進而影響組織的運作,自治部分則是將運行的程序寫入智能合約中。不過DAO也顯現出些許隱憂,像是智能合約的漏洞,或是在表達出社區的意見中和組織有效率的運行兩者之中做出平衡,都是未來可以進步的方向。
在近期觀看影片中,有位web3的創業者提出了他決定進入web3的關鍵點,是Community Ownership,片中他提到其在原先傳統的組織中,假使一位工程師提供了程式碼完成了極其重要的功能,這個功能幫助公司賺了很多,但覺大部分的利益將會落入老闆及投資人手中,而工程師也許只能獲得相較之下少量的加薪及升遷,技術的貢獻是否應該要同等於資金的貢獻?又或者像我們使用google、facebook等,我們使用的同時也間接提供了資訊,是否也算是對於大公司資料庫的貢獻?透過DAO,不論事出資者、開發者及參與者都能根據持有代幣而有對等的影響力。而這觀點也讓我解惑了為何許多項目如Meme幣或是一些NFT項目他們發行的用意是?有些項目發行代幣並沒有提供實質有意義的功能,因此如果從投資的角度來看可能會覺得這是來割韭菜的,但如果從一個社區的角度來看,購入代幣並不是要賺錢,而是可以象徵對於社區的信仰,就如同有些籃球員或粉絲會穿著Jordan鞋,不論價格都會購入,而他們不是要炒作而是為了表達出Jordan就是G.O.A.T(Greatest Of All Time),所以從社區參與的角度來看,這些項目確實有其存在的價值。
是2016年發生在以太坊上的攻擊事件,The DAO在ICO共獲得1.5億美金,而當時The DAO的智能合約出現了問題,問題點是程序上的邏輯,其在轉帳時先在收款地址增加金額,如成功再扣除提款錢包餘額,黑客的做法是發起轉帳到一個編寫好的智能合約地址,當進行智能合約地址收到款項時會觸發收款函數,此函數一般是作為紀錄的功能,而黑客在此函數內再次發起轉帳,而此時提款錢包還未扣款,因此進入無限循環而導致大量金額被轉出。而此事件後有一派的人包含V神認為可以將區塊回到事件發生前,讓此事件看似沒有發生過,而另一派的人認為這樣的做法有違區塊鏈的不可篡改性,因此以太坊硬分岔為以V神為的以太坊(ETH)和另一派人的以太坊經典(ETC)。
建立modifier,當是false才執行轉帳功能,可避免重入攻擊。
//在自訂義修飾詞增添確認,也可以避免重入攻擊
contract Test{
bool public locked = false;
modifier noReentrancy (){
require(!locked,"not reentrancy");
locked = true;
_;
locked = false;
}
}