
ADA艾达币--交易解析
Hello , 我是09
此篇内容为我2018~2020年在【库神】工作时,对部分重要知识做的学习总结
随着比特币冲破10万美金,行业又再次兴起,希望相关从业者可以学习到你需要的内容
介绍
模型
和比特币一样属于UTXO系列
官网:
https://www.cardano.org/zh/home-3/
论坛:
浏览器:
cbor序列化数据查看:
用于查看序列化数据的详细内容 http://cbor.me/
github:
https://github.com/input-output-hk
共识算法Ouroboros:
https://zhuanlan.zhihu.com/p/33824015
签名算法:ed25519
地址生成
Address(cbor):
[
[ # Address (as CBOR data item)
h'C61F822357B7F4A48CB9...A7C602C4A7856A6', # Root
{ # Attributes
0: h'8200581CFC310...F678BD553206AC4', # StakeDistribution
1: h'49EB93EC6B3A6205311D' # PkDerivationPath
},
0 # AddrType
],
3948132476 # Checksum
]
where:
Root - address root,
Attributes - map with address attributes (currently: stake distribution and derivation path),
AddrType - type of an address,
Checksum - CRC32 checksum of an address.
测试数据:
msgFirst = "{\"wallet_id\":\"0221316b61bf\",\"path\":\"m/44'/1815'/0'\",\"out_total\":2,\"in_total\":2}";
msgBean = "{\"start_index\":0,\"vin\":[{\"prev_hash\":\"4806BBDFA6BBBFEA0443AB6C301F6D7D04442F0A146877F654C08DA092AF3DD8\",\"prev_index\":15440,\"value\":33208426245162773},{\"prev_hash\":\"60FC8FBDD6FF6C3B455D8A5B9F86D33F4137C45ECE43ABB86E04671254E12C08\",\"prev_index\":31371,\"value\":1082080442928567}]}";
msgBean_out = "{\"start_index\":0,\"vout\":[{\"address\":\"BDHJBaaLRuJoaXR7USuHDyFgoBWnaaaA88EMu8aH9wcR9BB4XmgAtmVfZNvNThsnXdgNwr1MaLG1AaBu9riCZaTMaBnoGzshgs7CHi4P3YKqBFioMne92Ym4LgLG9wDuiA\",\"value\":33208426245162773},{\"address\":\"3XsWSbV7z5bxQVv3YScPKuv6AQbNswgu4phHXmqcnQDnt9QC1WkrnvHsLkRxQVcPE78iXVUymMhYx72EL9jDFfvjhrerXQqc2Y31ab5pLhhfWcfbKwQNXzmdcZZuFR6cJecqSvjeVSU3pG4L\",\"value\":1082080442928567}]}";
将测试数据进行序列化后:
82839F8200D81858268258204806BBDFA6BBBFEA0443AB6C301F6D7D04442F0A146877F654C08DA092AF3DD8193C508200D818582682582060FC8FBDD6FF6C3B455D8A5B9F86D33F4137C45ECE43ABB86E04671254E12C08197A8BFF9F8282D818585583581CE6E37D78F4326709AF13851862E075BCE800D06401AD5C370D4D48E8A20058208200581C23F1DE5619369C763E19835E0CB62C255C3FCA80AA13057A1760E804014F4E4CED4AA010522E84B8E70A121894001AE41EF3231B0075FAE341E487158282D818585F83581CFD9104B3EFB4C7425D697EEB3EFC723EF4FF469E7F37F41A5AFF78A9A20058208200581C53345E24A7A30EC701611C7E9D0593C41D6EA335B2EB195C9A0D2238015818578B485ADC9D142B1E692DE1FD5929ACFC5A31332938F192011AD0FCDC751B0003D8257C6B4DB7FFA0818200D818588582584040927DDDDBD418BAA308418F3A00DAF750C0B51555C4C52BB8A584C349973D8BC183B5FA73306B5A3687B7C3DE662F764E478960214BBF529178FF306E293DB858408F257243204B7879E137F88FE3ABF58C9F5EAA5D168E2D569D3CF7A13EA9AEE3DA158585E07EFEF20052C974EB6BBE8DA208A339269CC0D7851F22194FF91B0F
序列化数据分析(cbor编码):
82 # array(2) 两个元素(tx、sig)
83 # array(3) tx三个元素(input、output、attr)
9F # array(*) input元素个数不限,以FF为结尾标志
82 # array(2) input[1]两个元素(InType、list)
00 # unsigned(0) intype 0
D8 18 # tag(24) byte string
58 26 # bytes(38) 长度
82 # array(2) item两个元素
58 20 # bytes(32) TxId长度
4806BBDFA6BBBFEA0443AB6C301F6D7D04442F0A146877F654C08DA092AF3DD8 TxId
19 3C50 # unsigned(15440) TxOutputIndex
82 # array(2) input[2]两个元素(InType、list)
00 # unsigned(0) intype 0
D8 18 # tag(24) byte string
58 26 # bytes(38) 长度
82 # array(2) item两个元素
58 20 # bytes(32) TxId长度
60FC8FBDD6FF6C3B455D8A5B9F86D33F4137C45ECE43ABB86E04671254E12C08 TxId
19 7A8B # unsigned(31371) TxOutputIndex
FF # primitive(*) input结束标志
9F # array(*) output元素个数不限,以FF为结尾标志
82 # array(2) output[1]两个元素(Address、Amount)
82 # array(2) Address两个元素(address、Checksum)
D8 18 # tag(24) byte string
58 55 # bytes(85) 长度
83 # array(3) address三个元素(Root、Attributes、AddrType)
58 1C # bytes(28) Root长度
E6E37D78F4326709AF13851862E075BCE800D06401AD5C370D4D48E8 Root
A2 # map(2) Attributes两组键值对
00 # unsigned(0) 键:0
58 20 # bytes(32) StakeDistribution长度
8200581C23F1DE5619369C763E19835E0CB62C255C3FCA80AA13057A1760E804 value
01 # unsigned(1) 键:1
4F # bytes(15) StakeDistribution长度
4E4CED4AA010522E84B8E70A121894 value
00 # unsigned(0) AddrType
1A E41EF323 # unsigned(3827233571) Checksum
1B 0075FAE341E48715 # unsigned(33208426245162773) Amount
82 # array(2) output[2]两个元素(Address、Amount)
82 # array(2) Address两个元素(address、Checksum)
D8 18 # tag(24) byte string
58 5F # bytes(95) 长度
83 # array(3) address三个元素(Root、Attributes、AddrType)
58 1C # bytes(28) Root长度
FD9104B3EFB4C7425D697EEB3EFC723EF4FF469E7F37F41A5AFF78A9 Root
A2 # map(2) Attributes两组键值对
00 # unsigned(0) 键:0
58 20 # bytes(32) StakeDistribution长度
8200581C53345E24A7A30EC701611C7E9D0593C41D6EA335B2EB195C9A0D2238 value
01 # unsigned(1) 键:1
58 18 # bytes(24) StakeDistribution长度
578B485ADC9D142B1E692DE1FD5929ACFC5A31332938F192 value
01 # unsigned(1) AddrType
1A D0FCDC75 # unsigned(3506232437) Checksum
1B 0003D8257C6B4DB7 # unsigned(1082080442928567) Amount
FF # primitive(*) output结束标志
A0 # map(0) Attributes(为空)
81 # array(1) sig一个元素
82 # array(2) list内容(type、xpub_sign)
00 # unsigned(0) type
D8 18 # tag(24) byte string
58 85 # bytes(133) byte string长度
82 # array(2) xpub_sign两个元素(xpub、sign)
58 40 # bytes(64) xpub长度 40927DDDDBD418BAA308418F3A00DAF750C0B51555C4C52BB8A584C349973D8BC183B5FA73306B5A3687B7C3DE662F764E478960214BBF529178FF306E293DB8 xpub
58 40 # bytes(64) sign长度 8F257243204B7879E137F88FE3ABF58C9F5EAA5D168E2D569D3CF7A13EA9AEE3DA158585E07EFEF20052C974EB6BBE8DA208A339269CC0D7851F22194FF91B0F sign
注意:红色部分的序列化(涉及xpub和signature
)不保证正确,需要进一步上链广播验证
xpub = pubkey+chaincode
[
[
[
[
0,
[
h'4806BBDFA6BBBFEA0443AB6C301F6D7D04442F0A146877F654C08DA092AF3DD8',
15440
]
],
[
0,
[
h'60FC8FBDD6FF6C3B455D8A5B9F86D33F4137C45ECE43ABB86E04671254E12C08',
31371
]
]
],
[
[
[
[
h'E6E37D78F4326709AF13851862E075BCE800D06401AD5C370D4D48E8',
{
0:8200581C23F1DE5619369C763E19835E0CB62C255C3FCA80AA13057A1760E804,
1:4E4CED4AA010522E84B8E70A121894
},
0
],
3827233571
],
33208426245162773
],
[
[
[
h'FD9104B3EFB4C7425D697EEB3EFC723EF4FF469E7F37F41A5AFF78A9',
{
0:8200581C53345E24A7A30EC701611C7E9D0593C41D6EA335B2EB195C9A0D2238,
1:578B485ADC9D142B1E692DE1FD5929ACFC5A31332938F192
},
1
]
3506232437
],
1082080442928567
]
],
{}
],
[
[
0,
[
h'40927DDDDBD418BAA308418F3A00DAF750C0B51555C4C52BB8A584C349973D8BC183B5FA73306B5A3687B7C3DE662F764E478960214BBF529178FF306E293DB8',
h'8F257243204B7879E137F88FE3ABF58C9F5EAA5D168E2D569D3CF7A13EA9AEE3DA158585E07EFEF20052C974EB6BBE8DA208A339269CC0D7851F22194FF91B0F'
]
]
]
]