比特币
比特币地址的产生
比特币的交易
例:
① 随机选取一个32字节的数作为私钥(大小介于1~0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C
D036 4141之间) : 18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725
② 计算私钥所对应的非压缩公钥: (共65字节, 1字节0x04, 32字节为x坐标, 32字节为y坐标)
0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11
A1DF38855ED6F2EE187E9C582BA6
③ 计算公钥的SHA‐256哈希值: 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
④ 计算上一步哈希值的RIPEMD‐160哈希值: 010966776006953D5567439E5E39F86A0D273BEE
⑤ 在上一步结果之间加入地址版本号: (如比特币主网版本号"0x00") 00010966776006953D5567439E5E39F86A0D273BEE
⑥ 计算上一步结果的SHA‐256哈希值: 445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094
⑦ 再次计算上一步结果的SHA‐256哈希值: D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30
⑧ 取上一步结果的前4个字节: ( 8位十六进制数) D61967F6,把这4个字节加在第五步结果的后面,作为校验(这就是比特
币地址的16进制形态) 00010966776006953D5567439E5E39F86A0D273BEED61967F6
⑨ 用base58表示法变换一下地址: (这就是最常见的比特币地址形态) 16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
① Randomly select a 32-bit number as the private key
② Calculate the uncompressed public key corresponding to the private key: (a total of 65 bytes, 1 byte 0x04, 32 bytes for x coordinate, 32 bytes for y coordinate)
③ Calculate the SHA‐256 hash of the public key:
④ Calculate the RIPEMD‐160 hash of the previous step:
⑤ Add the address version number between the results of the previous step:
⑥ Calculates the SHA‐256 hash of the result of the previous step:
⑦ Calculate the SHA‐256 hash from the previous step again:
⑧ Take the first 4 bytes of the result of the previous step and add these 4 bytes to the end of the result of the fifth step as a check (this is the hexadecimal form of bitcoin address).
⑨ Convert addresses using base58 notation:
默克尔树
Merkle树是一种树(数据结构中所说的树),通常称为Merkle Hash Tree,常用于高效汇总和验证大数据集的完整性.,可简化区块验证(Simplifies block validation)。
具有以下特点:
① 默克尔树常见的结构是二叉树,但它也可以是多叉树,它具有树结构的全部特点.
② 默克尔树的基础数据不是固定的,因为它只要数据经过哈希运算得到的hash值.
③ 默克尔树是从下往上逐层计算的,就是说每个中间节点是根据相邻的两个叶子节点组合计算得出的,而根节点是根据两个中间节点组合计算得出的,所以叶子节点是基础