connecting...
Google translation for articles :
4 NEMBER donated to you!!

【NEM技術勉強会】8.6 ブロックチェーン処理【Symbol白書】

nem41.40xem (4) 534 0 0

ハーベストするアカウント選びや、フォーク対策について理解したところで、いよいよ実際のブロックがどのように作られるかについての概要です。かなり端折ってあるので、実際には開発者用文書などを当たったほうが良いでしょう。


8.3 ブロックチェーン処理

 

実行

 

概論的には、ノードがブロックを受け取った時に、一連の処理をおこなう。処理の前に、ブロックとトランザクションは、一連の通知(notification)に分解される。通知とは、Symbolで使われる基本的な処理単位のことである(2.1 プラグインでも出てきましたが、単なるメッセージ情報というよりは、トランザクション処理の単位という意味らしいですね)。

 

ブロックから通知を取り出して、順序よく並べるために、トランザクションは、一旦バラバラに分解される過程で、ブロックレベルデータ(ブロックに含まれるデータという意味か?)と結合される。それぞれの分離過程で作られたパーツは、一連のストリーム(stream)状につなげられていく。結果、この通知ストリームは、ブロック内で起きたすべての状態変化とトランザクションを描き出している(実際に次々とトランザクションが放り込まれてくる状態に近い?)。

 

通知ストリームの準備ができたら、通知ごとの処理がはじまる。まず、ブロックチェーン状態(blockchain state;一般的にはアカウントの残高が変化した状態などのこと)とは切り離された状態での内容の検証である。次に、現在のブロックチェーン状態と突き合わせての検証がおこなわれる。この検証処理のどこかで矛盾が見つかった場合には、そのブロックは棄却される。合格ならば、通知によって引き起こされた状態変化は、新たなブロックチェーン状態としてメモリー上に書き込まれ、次の通知の処理が始まる。この処理方法によって、同じブロック内のトランザクションが、それ以前のトランザクションによる状態変化にきちんと依存するようになる(ブロック内部の連続性が保たれる)。

 

ブロックに含まれるすべての通知処理が終わったら、レシートハッシュ(7.2.4 レシートハッシュ参照)と状態ハッシュ(7.3 状態ハッシュ参照)が計算される。さらに、network:enableVerificationStateがオンになっていれば、状態(ステート)のパトリシアツリーがすべて最新のものにアップデートされる。

 

ロールバック(巻き戻し)

 

一度承認されたブロックが、後で破棄されなければならない状況がときどき起きる。フォーク(ブロックチェーンの分岐)を解決するためである。たとえば、現在のブロックを、より良い(ブロックチェーンスコアが高いチェーンに含まれる)ブロックと置き換える時などである。Symbolでは、network:maxRollbackBlocksが許すブロック数のロールバックが可能になっている。この数を超えてしまうと、フォークの解決はできなくなる。

 

ブロックがロールバックされる場合には、一旦通知ストリームに還元される。このストリームは先の実行過程で作られるストリームとは反対向きになる。トランザクションは同じブロックに含まれるそれ以前のトランザクションに影響を受けることがあるので、(トランザクション間の)依存関係を解体するのではなく、まず後ろのトランザクションから解体するのである。

 

通知ストリームができたら、それぞれの通知が独立に処理される。ロールバックは以前の状態にブロックチェーンを巻き戻すので、検証は必要ない(時間的に古いブロック状態は、さらにそれ以前のブロック状態との関係で検証済みであり、未来の通知に影響を受けることはない)。その代わり、通知によって起きる状態変化は、現在のメモリ上のブロックチェーン状態から過去に巻き戻されて、次の(より古い)通知の処理へと移っていく。

 

すべてのブロックチェーンに関連する通知の巻き戻し処理が終わった後、(メモリー上のブロックチェーン状態は)それ以前のブロックチェーン状態へと戻る。network:enableVerifiableStateがオンになっている場合は、メモリー内の状態ハッシュもアップデートが必要である。その場合も、パトリシアツリーの再構築をおこなわず、ロールバック前の共通ブロックまで、強制的にメモリー内の状態ハッシュを巻き戻す。


かなり抽象的にですが、メモリー内に新しいブロックやブロックチェーン状態を保存したり、ロールバックの場合はどのようにして処理を巻き戻していくかの概要が書かれています。必要ない処理はおこなわず、処理を軽くするというポリシーがここでも徹底していますね。

 

目指せ北海道

Why don't you get crypt currency 'nem' by posting your blog article?

nemlog is blog posting service which has donation feature by crypt currency nem.
nemlog was launched to create environment which can be donated nem among NEMbers via blog articles.
Let's get nem by posting good blogs.

Nem prize event is being held frequently, Please join us on this opportunity!

nemlog registration from here
Register

NEMber who posted this article

趣味はバイクでツーリングしながら、ブログを書いたり、動画配信したりすること。暗号通貨はまだまだ初心者。

nemlogに何を書こうかいろいろ考えたのですが、まずはバイクで動画配信をするための工夫や楽しさ、充実感などを伝えられたらと思ってはじめました。ラズパイをバイクに積載して、ボタン一つでYoutubeライブ配信できるシステムを作りました。それを発展させて、XEMの価格を常時監視、取引するボットも作って活用してます。子供の頃から技術書を読むのが好きなので、NEMの白書を訳したりもしています。

本業は再生医療研究者です。歯の神経の中にいる「歯髄(しずい)細胞」を活用して新しい医療を開拓するために、しずい細胞プロジェクトを推進中。細胞の流通(トレーサビリティー)管理にNEMを使っています。管理システムの名称は「ShizuiNet」。NEM.ioのAlexさん、Jeffさんと名刺交換&握手できたのが心の宝物。
40587
0

Why don't you read following articles?