Vreath
Sora Suegami氏による日本から発表されたブロックチェーンのコンセプト
White Paper
特徴1.Token Baseモデル
VreathはUTXOモデルでもアカウントモデルでもなく、Token Baseというモデルを提唱している。
Tokenは複数のstateを持つ。
Tokenの持つ情報
nonce: informationが変わった回数
token: トークン名
issued: トークン発行量
data: tokenの持つプログラムコードのハッシュ値
Tokenの持つstateの要素
nonce - stateの変わった回数
token - 所属するトークンの名称
owner - stateのオーナーとなるアドレス
amount - オーナーの持つトークン量
data - stateに関連するkey / valueデータ
stateを分ける事で並列的な変更を可能にし、スケーラビリティを保てる
state変更のlimitationを設定している。
Aliceのstateを変更するsmart contractはAliceのstateしか変更できない
特徴2.Request TxとRefresh Tx
Request Tx(リクエストトランザクション)はstateの遷移を要求する。
以下を含む
base states: 変更する対象state
input data: スマートコントラクトにインプットするデータ
Refresh Tx(リフレッシュトランザクション)はRequestされたstateの遷移を処理する。Refresh TxはRefresherとValidatorだけがスマートコントラクトを実行してstate更新できる。
request tx hash: 承認するrequest tx ハッシュ
height: request txの所属していたブロック高
block-hash: request txの所属していたブロックハッシュ
output state: 変更後のstate
nonce: マイニング用のnonce
このようにrequet とrefresh txを分ける意味合いは、並列的にstateを更新できるからであり、並列的にマイニングができるからである。
request txに対して、refresh txは1つだけしか承認されない。
コメント:どのように実装上で解決するかは検討しないといけなそう
実装方法に関するSuegami氏のリプライ
実装方法ですが、stateごとlock状態を管理したmerkle patricia treeを使っています。
もしrequest lockされたら、そのbase statesをalready lockedとして記録して、refreshされるとnot locked yet状態にします。
もし二度目のrefresh txが来ても、変更するstateのlock状態がnot locked yetになっているので、効率的に不正検知できます。
このlock dataのtree rootは、毎ブロックでstaterootと同じように合意が取られます。
特徴3.マイニング方式
refresh マイニング
request txに対して、refresh txのマイニングが行われる
マイニングの成功条件
hash(request tx hash+block height+block hash+nonce+refresher address+output states hash+unit price) < target
(1 / target) = difficultyはスマフォCPUで10秒以内に解ける程度に低く設定される。
stateの更新が並列化され、マイニングを必要とする事で、複数の簡単な問題がたくさん設定される。並列検証になる。
Vreathのコンセプトである暗号通貨を色々な人の手に渡らせるという点はここに設定されていると思われる。
コメント: 1ブロックに対してマイナー (refresher)が多く関わると考えられるが、マイナーが手元でマイニングする際にVVMを改竄して動かした場合、Validatorは不正な計算結果(Stateの移行)に気付けるか。Validateロジック内で簡単に検証する方法がある?
VVM改ざんに関するSuegami氏のリプライ
攻撃者が自分のPCのVVMを改ざんすることは可能です。
もし、悪意のあるrefresherがVVMを無視したり計算ミスしたりした結果を報告してきたとしても、validatorは自分のブロック内やその前のブロック内のrefresh txを検証するので、不正なものは防がれます。
さらに、大半のrefresherが正しく計算するなら、validatorに届くrefresh txのうちほとんどはvalidになり、それらの提示するoutput stateは同じになります。
逆に、不正なrefresh txの提示するoutput stateは「他とは違う」ことになり、容易に検知できます。
1request txに対して、refresh txは1つの関係性とのこと。
ネットワーク効果が働けば、refresh txはN個設定できるとのことで、不正なrefresh txの提示するoutput stateは「他とは違う」が成立するようです。
Proof of Unitアルゴリズム
Validatorの役割
Validatorはマイナーが従来のPoW的なマイニング方式(前節のrefresh マイニングで説明した内容)で生み出したUnitを購入する。
購入Unit残高だけマイニング成功確率が上がる
マイニング式
sha256(previous key block hash + validator′> s address + timestamp) <= 2^256 * unit balance / difficulty
PoWとPoSの特徴を併せ持つ
Validatorの数が増えた場合に、1 / Validatorの時、
NGV - まだまとめていない
Sharding
Child Chains
サイドチェーン