『ON DISTRIBUTED COMMUNICATIONS NETWORKS』Paul Baran. September. 1962
http://pages.cs.wisc.edu/~akella/CS740/F08/740-Papers/Bar64.pdf
『The Meaning of Decentralization』February. 2017
http://pages.cs.wisc.edu/~akella/CS740/F08/740-Papers/Bar64.pdf
コンセンサスの安全性の背後にある数学的および経済的な推論は、しばしば非協調選択モデル、またはゲームが独立して決定を下す多くの小さなActorで構成されているという仮定に大きく依存・・・有益な調整と有害な調整を区別し、前者をより簡単にし、後者をより難しくする。・・・分権化、望ましくない調整回避としての分権化は、おそらく達成するのが最も困難であり、トレードオフは避けられません。
・
・
・
IPFS
P2P
Concensus,
Protocol, etc...
OverView
smart contract is overview.
private - public platform.
※under the figure not all platform.
public
private
consortium
Fabric/Sawtooth/Iroha
利用ケースは汎用的(通貨としての機能は一つのユースケース)
(例)
dex,dapps
oracle(provable...)
未来予測市場(augur...)
分散デジタルID(uPort...)
・ブロックチェーン上にプログラムを配置(デプロイ)してブロックチェーン上で動作させることが可能
・複雑なプログラムも記述して可能(チューリング完全)
プログラムの実行環境を提供する仮想マシン。Windows/macOS/Linuxなどの様々な環境上で同じようにプログラムを動作させることが可能。
(EVMは)ステートマシンとしてトランザクションの履歴を保存するなど状態を保存。
各ノードのlocal databaseにトランザクションとシステムの状態を保存。
ライトクライアント(ビットコインのSPVクライアントと類似)は、
・トランザクションの検証にブロックヘッダーをフルノードから取得して検証
・マークルプルーフを用いてブロックチェーンにトランザクションが含まれているかを検証
※いずれも検証しないものはリモートクライアントとして区別
フルノードは、
・イーサリアムブロックチェーンの完全なコピーを保存
・保持する全てのトランザクションについて検証可能
2019年頃の動き
・結果として条件分岐やloopなども含めてアルゴリズムとして表現して処理が可能
同時にプログラムを実行せずにそのプログラムが終了するのか、またどのくらいの時間実行されるかは予測できない(停止性問題)
よって意図的かどうかによらずプログラムが終了しない場合、結果として無制限にリソースを消費し続ける(ある種のDoS攻撃)
スマートコントラクトで使用されるリソースを抑制するのはどうすればよいか?
// Version of Solidity compiler this program was written for
pragma solidity ^0.4.19;
// Our first contract is a faucet!
contract Faucet {
// Give out ether to anyone who asks
function withdraw(uint withdraw_amount) public {
// Limit withdrawal amount
require(withdraw_amount <= 100000000000000000);
// Send the amount to the address that requested it
msg.sender.transfer(withdraw_amount);
}
// Accept any incoming amount
function () public payable {}
}