イーサリアムのハードフォーク提案が発表され、コミュニティに残された時間はわずか15日

イーサリアムのハードフォーク提案が発表され、コミュニティに残された時間はわずか15日

過去 6 日間にわたり、Slock.it チームのメンバーは、他のイーサリアム開発者数名とともに、DAO ハッキングに対処するためにイーサリアムのハードフォークに協力してきました。

次のハードフォーク計画はまだテストが必要であり、コミュニティのレビューも必要です。これはオープンソース プロジェクトなので、多くのソースからの貴重な入力に依存しています。もちろん変更も可能です。この投稿では、ハードフォーク開発の進捗状況に関する最新情報のみを提供します。お役に立てれば幸いです。

提案されたハードフォーク

0xbb9bc244d798123fde783fcc1c72d3bb8c189413からのトランザクションの元となるすべてのアカウント、それらの extraBalance アカウント[1]、および DAO のメイン アカウント ( 0xbb9bc244d798123fde783fcc1c72d3bb8c189413 ) とその extraBalance アカウント ( 0x807640A13483f8AC783c557fcDF27Be11ea4AC7A ) が列表L含まれます。このリスト L はブロック X (ブロック番号は未定) で決定されます。リストの現在の内容はここで見ることができます[2]:ブロックY(ブロック番号は未定)の開始時に、Lリストのアカウント内のすべてのイーサが払い戻し契約アカウントに転送されます。コードは次のとおりです。

 /*
このファイルは DAO の一部です。

DAOはフリーソフトウェアです。再配布や改変が可能です。
これはGNU Lesser General Public Licenseの条件に基づいて公開されています。
フリーソフトウェア財団、ライセンスのバージョン3、または
(オプション) それ以降のバージョン。

DAOは有用であることを期待して配布されています。
ただし、いかなる保証もありません。暗黙の保証さえなく
商品性または特定目的への適合性。を参照してください
詳細については、GNU Lesser General Public License を参照してください。

GNU Lesser General Public Licenseのコピーを受け取っているはずです
DAO とともに。そうでない場合は、<http://www.gnu.org/licenses/> を参照してください。
*/

// TODO: すべての定数を二重チェックする必要がある
「github.com/slockit/DAO/DAO.sol」をインポートします。

契約の払い戻し
    DAO 定数パブリック マザー = 0xbb9bc244d798123fde783fcc1c72d3bb8c189413;
    マッピング (アドレス => bool) パブリックホワイトリスト;
    uint 定数 public totalSupply = 11712722930974665882186911;
    uint 定数 public totalWeiSupply = 12072858342395652843028271;
    uint 定数 public fixChildDAOsListTime = 1468057560; // 2016年7月9日 - 11:46:00 CEST

    関数払い戻し(){
        // 攻撃者 DAO を除くすべての childDAO をホワイトリストに登録 (コメントアウト)
        ホワイトリスト[0xd4fe7bc31cedb7bfb8a345f31e668033056b2728] = 真;
        ホワイトリスト[0x2c19c7f9ae8b751e37aeb2d93a699722395ae18f] = 真;
        ホワイトリスト[0x1975bd06d486162d5dc297798dfc41edd5d160a7] = 真;
        ホワイトリスト[0x319f70bab6845585f412ec7724b744fec6095c85] = 真;
        ホワイトリスト[0x5c8536898fbb74fc7445814902fd08422eac56d0] = 真;
        ホワイトリスト[0x779543a0491a837ca36ce8c635d6154e3c4911a6] = 真;
        ホワイトリスト[0x5c6e67ccd5849c0d29219c4f95f1a7a93b3f5dc5] = 真;
        ホワイトリスト[0x200450f06520bdd6c527622a273333384d870efb] = 真;
        ホワイトリスト[0x6b0c4d41ba9ab8d8cfb5d379c69a612f2ced8ecb] = 真;
        ホワイトリスト[0xd1ac8b1ef1b69ff51d1d401a476e7e612414f091] = 真;

        ホワイトリスト[0x51e0ddd9998364a2eb38588679f0d2c42653e4a6] = 真;
        ホワイトリスト[0xf0b1aa0eb660754448a7937c022e30aa692fe0c5] = 真;
        ホワイトリスト[0x9f27daea7aca0aa0446220b98d028715e3bc803d] = 真;
        ホワイトリスト[0xd9aef3a1e38a39c16b31d1ace71bca8ef58d315b] = 真;
        ホワイトリスト[0x6f6704e5a10332af6672e50b3d9754dc460dfa4d] = 真;
        ホワイトリスト[0x492ea3bb0f3315521c31f273e565b868fc090f17] = 真;
        ホワイトリスト[0x9ea779f907f0b315b364b0cfc39a0fde5b02a416] = 真;
        ホワイトリスト[0xcc34673c6c40e791051898567a1222daf90be287] = 真;
        ホワイトリスト[0xe308bd1ac5fda103967359b2712dd89deffb7973] = 真;
        ホワイトリスト[0xac1ecab32727358dba8962a0f3b261731aad9723] = 真;

        ホワイトリスト[0x440c59b325d2997a134c2c7c60a8c61611212bad] = 真;
        ホワイトリスト[0x9c15b54878ba618f494b38f0ae7443db6af648ba] = 真;
        ホワイトリスト[0x21c7fdb9ed8d291d79ffd82eb2c4356ec0d81241] = 真;
        ホワイトリスト[0x1ca6abd14d30affe533b24d7a21bff4c2d5e1f3b] = 真;
        ホワイトリスト[0x6131c42fa982e56929107413a9d526fd99405560] = 真;
        ホワイトリスト[0x542a9515200d14b68e934e9830d91645a980dd7a] = 真;
        ホワイトリスト[0x782495b7b3355efb2833d56ecb34dc22ad7dfcc4] = 真;
        ホワイトリスト[0x3ba4d81db016dc2890c81f3acec2454bff5aada5] = 真;
        ホワイトリスト[0xe4ae1efdfc53b73893af49113d8694a057b9c0d1] = 真;
        ホワイトリスト[0x0737a6b837f97f46ebade41b9bc3e1c509c85c53] = 真;

        ホワイトリスト[0x52c5317c848ba20c7504cb2c8052abd1fde29d03] = 真;
        ホワイトリスト[0x5d2b2e6fcbe3b11d26b525e085ff818dae332479] = 真;
        ホワイトリスト[0x057b56736d32b86616a10f619859c6cd6f59092a] = 真;
    // ホワイトリスト[0x304a554a310c7e546dfe434669c62820b7d83490] = true;
        ホワイトリスト[0x4deb0033bb26bc534b197e61d19e0733e5679784] = 真;
        ホワイトリスト[0x35a051a0010aba705c9008d7a7eff6fb88f6ea7b] = 真;
        ホワイトリスト[0x9da397b9e80755301a3b32173283a91c0ef6c87e] = 真;
        ホワイトリスト[0x0101f3be8ebb4bbd39a2e3b9a3639d4259832fd9] = 真;
        ホワイトリスト[0xbcf899e6c7d9d5a215ab1e3444c86806fa854c76] = 真;
        ホワイトリスト[0xa2f1ccba9395d7fcb155bba8bc92db9bafaeade7] = 真;

        ホワイトリスト[0xd164b088bd9108b60d0ca3751da4bceb207b0782] = 真;
        ホワイトリスト[0x1cba23d343a983e9b5cfd19496b9a9701ada385f] = 真;
        ホワイトリスト[0x9fcd2deaff372a39cc679d5c5e4de7bafb0b1339] = 真;
        ホワイトリスト[0x0e0da70933f4c7849fc0d203f5d1d43b9ae4532d] = 真;
        ホワイトリスト[0xbc07118b9ac290e4622f5e77a0853539789effbe] = 真;
        ホワイトリスト[0xacd87e28b0c9d1254e868b81cba4cc20d9a32225] = 真;
        ホワイトリスト[0x5524c55fb03cf21f549444ccbecb664d0acad706] = 真;
    // ホワイトリスト[0xfe24cdd8648121a43a7c86d289be4dd2951ed49f] = true;
        ホワイトリスト[0x253488078a4edf4d6f42f113d1e62836a942cf1a] = 真;
    // ホワイトリスト[0xb136707642a4ea12fb4bae820f03d2562ebff487] = true;

        ホワイトリスト[0xf14c14075d6c4ed84b86798af0956deef67365b5] = 真;
    // ホワイトリスト[0xaeeb8ff27288bdabc0fa5ebb731b6f409507516c] = true;
        ホワイトリスト[0x6d87578288b6cb5549d5076a207456a1f6a63dc0] = 真;
        ホワイトリスト[0xaccc230e8a6e5be9160b8cdf2864dd2a001c28b6] = 真;
    // ホワイトリスト[0x4613f3bca5c44ea06337a9e439fbc6d42e501d0a] = true;
    // ホワイトリスト[0x84ef4b2357079cd7a7c69fd7a37cd0609a679106] = true;
    // ホワイトリスト[0xf4c64518ea10f995918a454158c6b61407ea345c] = true;
    }

    関数withdrawFromChildDAO(DAO _child) {
        // 子DAOの引き出しが開始される前に直接引き出しが完了する時間に置き換えられます
        (現在 < fixChildDAOsListTime + 4 週間) の場合は throw; if (!whiteList[_child] || _child.lastTimeMinQuorumMet() > fixChildDAOsListTime
            || _child.privateCreation() != 母)
            投げる;

        撤回(_child);
    }

    関数withdraw(){
        撤退する(母親)
    }

    関数withdraw(DAO _dao)内部{
        uint バランス = _dao.balanceOf(msg.sender);

        if (!_dao.transferFrom(msg.sender, this, balance) || !msg.sender.send(balance * totalWeiSupply / totalSupply))
            投げる;
    }
}

述べる:

子 DAO におけるイーサの実際の分配は、実際のハードフォークが発生する前に決定することは困難であり、特定の時点 (ブロック X) で完了します。ブロックチェーン分析の結果はこのハードフォークの一部となり、後の時点(ブロック Y)で有効になります。これは、ブロックの高さ X 以降、トークン保有者はメイン DAO または子 DAO イーサを削除する分割または提案を実行すべきではないことを意味します。そうしないと、この払い戻し契約を利用できなくなります。そうした場合、払い戻しは受けられなくなります。 DAO トークンの転送と取引は、このハードフォーク計画の影響を受けません。

リンク:

[1] web3.eth.contract(abi).at(newDAO).extraBalance()
[2] https://gist.github.com/CJentzsch/856b7d4b3010bf9a10ff7cbbea1876a9 (最終版ではないので確認が必要です)
[3] 契約の準備ができているかどうかに応じて、単純なゼロコードハッシュ契約(後で別のハードフォークが必要になることを意味します)または確定された契約が使用されます。最終的な契約には 2 つの機能 (「引き出し」と「子 DAO からの引き出し」) が含まれます。

現在のコード(ラフバージョン、未テスト):

https://gist.github.com/CJentzsch/038b86ae1658c680cee3bfb1499c1297

または https://gist.github.com/CJentzsch/bc01bfe17d850331eadf0c33041071a8

口論

実行中のエラーのリスクを軽減するために、シンプルなハードフォーク計画を設計しました。これにより、DAO トークン保有者の大多数が損失を回復できましたが、欠点もありました。一部のグループは 100% の払い戻しを受けることができませんでした。

1. 過去 2 週間以内にトークンを作成したトークン保有者。

DAO トークンは取引可能かつ代替可能であるため、特定の時間に作成されたトークンを区別することは非常に困難です。その結果、すべての DAO トークン保有者に対して、1 イーサ: 100 DAO トークンをわずかに上回る比率の非固定払い戻しモデルが実現しました。

2. 攻撃開始後に分割操作を実行したトークン保有者。

子 DAO に作成されるトークンの数は、最初の「DAO の分割」コマンド実行時のメイン DAO の残高によって決まります。このため、攻撃開始後に分割したトークン保有者は、メイン DAO で以前に所有していたトークンよりも子 DAO トークンが少なくなります。

このグループが追加の払い戻しを受けられない主な理由は、彼らがイーサをメイン DAO に送信し、その後出口を分割したためです。これにより、1 イーサ: 100 子 DAO トークンの比率で子 DAO トークンを作成できるようになります。このグループが追加の払い戻しを受ける場合、攻撃者はこれを利用して意図したよりも多くの払い戻しを受ける可能性があります。

3. 子 DAO はトークン保有者に対する再帰分割攻撃に使用されます。

攻撃者の DAO (ハッカーとホワイトハットの両方) は返金契約のホワイトリストに登録されていませんでした。そうでなければ、攻撃者はより大きな返金を要求することができたでしょう。残念ながら、これは「darkDAO」トークンの保有者が払い戻しを受けることができないことを意味します。

ただし、ソリューションの複雑さにより、新たなエラーや損失が発生する可能性があります。私たちは過去の失敗から学び、スマートコントラクトをシンプルに保つことの重要性を覚えているので、このハードフォーク計画は達成可能であり、短期間でテストでき、現時点で最適なハードフォーク戦略であると信じています。

重要な日付

  1. 最初の子DAOの作成期間は、2016年7月1日16:25:02 CESTに終了します。

  2. 最初の 2000 イーサは、2016 年 7 月 16 日 17:04:37 CET に DAO システムから送信されました (分割提案 #8)

  3. DarkDAO 作成終了時間: 2016 年 7 月 14 日 05:34:48 CEST

  4. 攻撃者のDAOが最初の分割操作を実行できた時間: 2016年7月21日 05:34:48 CEST

  5. 攻撃者のDAOからの最初の引き出しは、2016年7月28日午前5時34分48秒(中央ヨーロッパ時間)に行われました。

  6. 分割提案を通じて攻撃者のDAOが利用できる最初の引き出し: 2106年8月31日 05:34:48 CEST

つまり、7 月 16 日に終了するこのクリーン ハード フォークには追加のルールは追加されません。これは、分割提案 #8 の所有者が子 DAO から合法的に Ether を引き出すことができるときです。分割された DAO がすべて無視された場合、攻撃者の DAO のイーサを処理するだけで済み、7 月 21 日がハードフォークの期限になります。この後、イーサは攻撃者によって作成された複数の分割DAOに転送される可能性があり、ハードフォーク計画は大幅に複雑になります。

結論は

この記事では、このハードフォークに関する提案を紹介します。これは、geth、parity、cpp-ethereum、pyeth を含むさまざまなバージョンのクライアントの開発者に転送されています。また、このシンプルなハードフォーク計画の背後にある理論的根拠と、予想されるこのハードフォークに関するいくつかの重要なタイミングポイントについても説明します。

私たちは、このハードフォーク提案、特にハードコードされた数字、リスト L 内のアカウント、そしてもちろんスマート コントラクト自体をテストしてレビューするよう皆様にお願いしています。


<<:  資本市場におけるブロックチェーンと分散型台帳の可能性

>>:  コインゾーントレンド: 今週のビッグデータに基づくビットコインの価格動向 (2016-07-07)

推薦する

MovieTickets CEO: ビットコインが映画鑑賞の支出を増加

MovieTicketsのCEO、ジョエル・コーエン氏にとって、同社のビジネスにおける支払いオプショ...

2019年後半の暗号通貨界で最も期待される5つのイベント

2018年は暗号通貨投資家にとって悲惨な年でした。 2017 年の狂乱の強気相場の後、人々は至る所で...

[復号化] マイニング収益モデルとその適用シナリオの紹介

PPS、PPLNS、PPS+... 各種マイニングプールの収益モデルは多種多様で圧倒されます。これ...

3団体が発表した「仮想通貨取引投機のリスク防止に関するお知らせ」をどう理解すればよいのでしょうか?

2020年末以来、暗号デジタル資産市場は強気相場に突入しました。まず、ビットコインやイーサリアムに...

ハイパーレジャープロジェクトは、Belink、BitSE、Onchainの3つの中国企業を含む7つの新しいメンバーの追加を正式に発表しました。

Hyperledger は、ブロックチェーン技術の研究に特化したオープンソースの業界横断プロジェク...

コインゾーントレンド: 今週のイーサリアム価格動向に関するビッグデータ (2017-05-22)

ETH ウィークリーレポート |イーサリアムが急騰、初めて1,000元の水準を突破1. 市場のハイ...

新ブラウザBraveがビットコインで広告をなくすために450万ドルの資金を獲得

広告なしの体験と引き換えにビットコインによるマイクロペイメントをユーザーに提供する広告ブロックブラウ...

360 マイニングトロイの木馬調査レポート: ビットコインマイニングの秘密を暴く

ブロックチェーン技術は最近注目を集めていますが、ブロックチェーン技術をベースにしたビットコインは、市...

易邦IPO、鉱業王たちの「鐘を鳴らす夢」

まとめ特集:鉱業王たちの「鐘を鳴らす夢」、易邦IPO。 3回目のBTCブロック報酬の半減後、BTC価...

香港サイバーポートがビットコイン・ラウンドテーブルに参加

ビットコインの主要プロトコルの基本的な運用面の変更をめぐる数か月にわたる激しい議論の末、ついに合意に...

明日から日本でもビットコイン決済が合法化され、ビットコイン価格が小幅反発

中国証券ネットワークニュース(記者 王周傑)日本の内閣が署名した資金決済法改正案が4月1日に正式に施...

中央銀行:ビットコインはマネーロンダリング防止策としてリストされるべき

台湾のビットコイン採掘コストは世界で3番目に低い。楊金龍氏は、自身の理解によれば、台湾のビットコイン...

ユーロポール、ビットコイン取引を追跡するインターンを募集

(写真:容疑者追跡)欧州連合(EU)の最高法執行機関であるユーロポールは、ビットコイン取引を追跡でき...