LINEで送る
Pocket

ethereum

Ethereumのバージョンアップデートが控えている。開発者によれば、次期バージョン「Metropolis」(メトロポリス)はByzantium(ビザンティウム)とConstantinople(コンスタンティノープル)の二つのパートに分けられ、Byzantiumはブロック4,300,000(9月22日)からブロック4,400,000(10月27日)の間に行われる可能性が高い。今回のアップデートでは9つのEIPが実装される予定だ。Constantinopleに関しては詳細不明なので、本記事ではByzantiumについて簡単に紹介する。

Byzantium

以下にEthereumメインネットに採用される予定のEIPについて簡単にまとめた。各EIPのより詳細な情報はリンクのGitHubから確認できる。

EIP100: Change difficulty adjustment to target mean block time including uncles

Uncleブロックを含むより安定したブロック生成時間を実現するための難易度調整。

EthereumのUncleブロックはビットコインのOrphan Block(孤立ブロック)に相当するものだが、ビットコインでは無効になる孤立ブロックがEthereumではUncleブロックとしてメインチェーンの構成要素として扱われ、マイナー報酬も与えられる。ビットコインでは長いチェーンがメインチェーンとして採用され、Ethereumでは重いチェーンが採用されると表現されるのはこのためである。

Ethereumの難易度は以下の式で算出される。

adj_factor = max(1 - ((timestamp - parent.timestamp) // 10), -99)
child_diff = int(max(parent.difficulty + (parent.difficulty // BLOCK_DIFF_FACTOR) * adj_factor, min(parent.difficulty, MIN_DIFF)))

EIP100では一行目を以下のように変更する。

adj_factor = max(1 + len(parent.uncles) - ((timestamp - parent.timestamp) // 9), -99)

これはUncleブロックを含むブロックの平均生成時間を安定させること目的としている。EthereumブロックチェーンにおけるUncleブロックの比率を操作することによる新規ETH発行頻度の不正操作を防ぐ意味もあるようだ。

EIP140: REVERT instruction in the Ethereum Virtual Machine

REVERTにより用意された全てのガスを使い切ることなくコントラクト実行停止と状態変更の取り消しが可能になり、さらに停止や取り消しの理由を返すことが可能となる。

EIP196: Precompiled contracts for addition and scalar multiplication on the elliptic curve alt_bn128
EIP197: Precompiled contracts for optimal Ate pairing check on the elliptic curve alt_bn128

Zcashで用いられているzk-SNARK(zero-knowledge Succinct Non-interactive ARgument of Knowledge)の導入。

EIP198: Precompiled contract for bigint modular exponentiation

ガス代の計算に使用される。

EIP211: New opcodes: RETURNDATASIZE and RETURNDATACOPY

EVM(Ethereum Virtual Machine)内で任意長のデータを返すことができるようになる。従来では破棄されていた超過データを、バーチャルマシーンの特別なバッファに保持することによって任意長のデータの返却が可能になる。

EIP214: New opcode STATICCALL

コントラクトが状態変更を伴わずアウトプットのみを返す呼び出しを行うことを可能にする。これによりre-entrancy等のバグ発生を防ぐ。現状では呼び出されたコントラクトの挙動には計算能力とコントラクトのために用意されたガスの総量以外には制限がない。このEIPでは他のコントラクトの挙動を制限した上で呼び出せる機能が追加される。これによりスマートコントラクトのセキュリティが向上する。

EIP649: Metropolis Difficulty Bomb Delay and Issuance Reduction

Ethereumの発掘難易度を上昇させるディフィカルティボムの約一年半の延期。ブロック採掘報酬の5ETHから3ETHへの低減。

Ethereumは「Olympic」(オリンピック)、「Frontier」(フロンティア)を経て、「Homestead」(ホームステッド)と呼ばれるバージョンまでリリースが済んでおり、次回のハードフォークで「Metropolis」(メトロポリス)へ、その次に「Serenity」(セレニティ)へと移行する予定だ。計画では、Serenityでは現行のPOW(プルーフオブワーク)からCasperと呼ばれるPOS(プルーフオブステーク)へとコンセンサスアルゴリズムが変更される。その際にPOW側のチェーンにマイナーが居座るリスクを低減するために、マイニングによる収益化が現実的でないほどに採掘難易度を上昇させる仕組みが内蔵されている。この仕組みがディフィカルティボムである。しかしSerenity以降への準備が遅延しているため、POWによるコンセンサスアルゴリズムを維持するためには難易度の急上昇の延期する必要がある。

ディフィカルティボムを延期することでブロックタイムの短縮が予想される。マイナーに対する報酬の発生頻度が高くなるため、ブロック報酬が現行のままだとETHの新規発行量が増えることになる。これを防ぎ、ETHの新規発行量を現行と同程度にするためにマイナー報酬が3ETHへと減らされる。

EIP658: Embedding transaction return data in receipts

ライトクライアントがトランザクションの成否を確認できるようにする。

ユーザーの対応は?

Constantinopleはハードフォークを伴うEthereumのアップデートであるが、今のところネットワークの分裂や大きな混乱に繋がるような問題は報告されていない。とはいえETH保有者はハードフォーク前後には注意しておく必要があるだろう。


EIPs/README.md at master · ethereum/EIPs

  • ビットコインニュースを毎日お届け!

    BTCNの最新ニュースを毎日お昼ごろお届けします!

  • BTCN公式アカウントをフォロー

    follow us in feedly
シェアする