LoginSignup
3
0

More than 3 years have passed since last update.

State Hash その2追記

Last updated at Posted at 2019-07-09

はじめに

State Hash その2 要素が1つだけの場合のsubCacheMerkleRootsの計算の追記です。

RocksDBにはまだあった

元の記事でFastNoSQLのスクショをあげていました。

image.png

このとき、DBにはdefaultしか表示されてませんでしたが、まだありました。

image.png

height_groupingとpatricia_treeというDBがありました。

これらについては、実はslackの方で教えてもらっていたのですが、GUI上には出てこなかったのでスルーしてました。

表示する

Load databaseをクリック。

image.png

赤くなってるやつを右クリックしてLoad content of databaseをクリック。

image.png

赤くなってないやつを右クリックしてset defaultをクリック。

image.png

赤いやつを右クリックしてLoad content of databaseをクリック。

image.png

みてみる

height_grouping

height_groupingには0レコード。これは確か有限期間のモザイクを指定していた場合にレコードができていたような気がします。

Jaguar0625さんに教えてもらった言葉を引用します。

"height_grouping" (key: height, value: list-of-mosaic-ids-expiring-at-height): this is secondary index (can be computed from 1)

patricia_tree

Jaguar0625さんに教えてもらった言葉を引用します。

"patricia_tree" (key: hashed-mosaic-id, value: hashed-mosaic-entry) OR (key: hashed-tree-node, value: tree-node): the tree nodes composing the patricia tree (can be computed from 1)

patricia_treeは2レコード。

rootレコードにはsubCacheMerkleRootが入っていました。

key: root
value: 5d8eead5907130d297c322698f3d201a78d629cac87487a0f4f890c1277b250c

もう一つのレコードはleaf node。

key: 5d8eead5907130d297c322698f3d201a78d629cac87487a0f4f890c1277b250c
value: ff4014979a1134c38c8a5c7c7e3669ce7aa98c2d46225f77645a1fc6e7a30ff5c5dab6bcae57d970e08bc94701a8333f081b633554fe5282ab2d841d17f9b93e9b2d

このPatricia Treeはただひとつのleaf nodeをもっているので、そのkeyがsubCacheMerkleRootと一致しています。

valueを分解します。

ff      // ffならleaf node, 00ならbranch node
40      // 後に続くnibbleの数 0x40 = 64nibble = 32byte
14979a1134c38c8a5c7c7e3669ce7aa98c2d46225f77645a1fc6e7a30ff5c5da    // hashed mosaic id
b6bcae57d970e08bc94701a8333f081b633554fe5282ab2d841d17f9b93e9b2d    // hashed mosaic entry

このような情報が入っていました。

このleaf nodeのhashは以下の計算式で求められます。これは、keyと一致します。

sha3(20 + hashed mosaic id + hashed mosaic entry)
  (= 5d8eead5907130d297c322698f3d201a78d629cac87487a0f4f890c1277b250c)

おわりに

頭が混乱してきました。

シリーズ

State Hash その1 subCacheMerkleRootsからstateHashの計算

State Hash その2 要素が1つだけの場合のsubCacheMerkleRootsの計算

State Hash その2追記

State Hash その3 要素が2つの場合のPatricia Tree

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0