### 链下证明

Merkle Tree（默克尔树）是一种二叉树，其最底层叶子节点存储数据以及数据的哈希，而每上一层节点则存储两个子节点的哈希，最后由根节点的哈希保证这个Merkle Tree的任何节点数据的完整性。 因为修改任何一个叶子节点的数据都会导致根节点的哈希变化，因此，使用Merkle Tree可以保证，只要发布了Root，树的所有子节点均不可修改：

``````              ┌─┐
└─┘
┌───────┴───────┐
┌─┐             ┌─┐
└─┘             └─┘
┌───┴───┐       ┌───┴───┐
┌─┐     ┌─┐     ┌─┐     ┌─┐
└─┘     └─┘     └─┘     └─┘
┌─┴─┐   ┌─┴─┐   ┌─┴─┐   ┌─┴─┐
┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐
└─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘
``````

``````User ID, Balance
12345, 12.34
23456, 23.45
34567, 34.56
45678, 45.67
56789, 567.89
``````

``````                            root
▲
┌──┴──┐
...............................................

▲               ▲       ▲             ▲       ▲
┌──┴──┐         ┌──┴──┐ ┌──┴──┐       ┌──┴──┐ ┌──┴──┐
┌─────┐   ┌─────┐       ┌─────┐ ┌─────┐       ┌──────┐
... │12.34│...│23.45│.......│34.56│ │45.67│.......│567.89│...
└─────┘   └─────┘       └─────┘ └─────┘       └──────┘
index: 12345     23456         34567   45678         56789
``````

• 14.72783542
• 7.83947710
• 23.10268748

• 6f1cc8a44919eb1c6576d6819b37ac9ab288ecb5
• 9759bf1d54e5f25f135d7674dea3bef0d24fb153
• 46daefba020f7e5bfa957b13aeaa4b72034a90fd

``````add user asset: 12345 = 12.34
set 8038ee8dc0ee24097883f69a2ffe7946264fa377: 5.24622934
set cbd2331a281f6cba5f044f96f9f54633e6e8fdfe: 3.38555784
set b78f6fbb6226f453e5b4f43e22f2a653a2c5af43: 3.70821282
add user asset: 23456 = 23.45
set 4aa9352b9fe9df0554a139182dcefe09e543ea7e: 7.71339164
set c6c0132de4dfe36b44b07d6c3f3c8310f05c2147: 4.75253454
set bb17f54d8e86cd9cb8b22e4f28ccd8e9570d7717: 10.98407382
add user asset: 34567 = 34.56
set d57a42e1fd79bf0e77437140878cd0579caf8c8d: 15.26664377
set 9cffd3be18b70ddb743b5a1f5dc35967a206a6b6: 8.78207399
set f4fe734bd736144ec5b1bfcabe456431e4cd0eae: 10.51128224
add user asset: 45678 = 45.67
set 6f1cc8a44919eb1c6576d6819b37ac9ab288ecb5: 14.72783542
set 9759bf1d54e5f25f135d7674dea3bef0d24fb153: 7.83947710
set 46daefba020f7e5bfa957b13aeaa4b72034a90fd: 23.10268748
add user asset: 56789 = 567.89
set 7fe3990369fa0d3cf8dc7abb2cf817ddbf548b11: 226.26887015
set 790d84b35986cec20c006ef487e708900220c641: 93.97072264
set 549e751887e4e9ce2a490a5dc1995a7a1e89e205: 110.57987563
set 15844c96b44bd87dbd6f0ab275ddd815d51e62eb: 40.99473402
set 48e1a485f5e939cbe051128028c7bf38e9a630c3: 33.07176793
set b4d6711f896aeac3675827f3f51c11837341e23a: 63.00402963
``````

``````address, balance
15844c96b44bd87dbd6f0ab275ddd815d51e62eb, 40.99473402
46daefba020f7e5bfa957b13aeaa4b72034a90fd, 23.10268748
48e1a485f5e939cbe051128028c7bf38e9a630c3, 33.07176793
4aa9352b9fe9df0554a139182dcefe09e543ea7e, 7.71339164
549e751887e4e9ce2a490a5dc1995a7a1e89e205, 110.57987563
6f1cc8a44919eb1c6576d6819b37ac9ab288ecb5, 14.72783542
790d84b35986cec20c006ef487e708900220c641, 93.97072264
7fe3990369fa0d3cf8dc7abb2cf817ddbf548b11, 226.26887015
8038ee8dc0ee24097883f69a2ffe7946264fa377, 5.24622934
9759bf1d54e5f25f135d7674dea3bef0d24fb153, 7.83947710
9cffd3be18b70ddb743b5a1f5dc35967a206a6b6, 8.78207399
b4d6711f896aeac3675827f3f51c11837341e23a, 63.00402963
b78f6fbb6226f453e5b4f43e22f2a653a2c5af43, 3.70821282
bb17f54d8e86cd9cb8b22e4f28ccd8e9570d7717, 10.98407382
c6c0132de4dfe36b44b07d6c3f3c8310f05c2147, 4.75253454
cbd2331a281f6cba5f044f96f9f54633e6e8fdfe, 3.38555784
d57a42e1fd79bf0e77437140878cd0579caf8c8d, 15.26664377
f4fe734bd736144ec5b1bfcabe456431e4cd0eae, 10.51128224
``````