
恒星币XLM
Hello , 我是09
此篇内容为我2018~2020年在【库神】工作时,对部分重要知识做的学习总结
随着比特币冲破10万美金,行业又再次兴起,希望相关从业者可以学习到你需要的内容
币种简介:
恒星币是一种能够迅速确认交易的支付网络,它的交易确认时间在几秒以内完成,因此具有简便易行快捷的特点。在恒星支付网络中,用户使用恒星币作为基础货币。用户可以通过XLM转账任意一种货币,包括美元、人民币、欧元、日元,或者是比特币等等。
恒星币(Stellar),一个由前瑞波币(Ripple)创始人Jed McCaleb发起的数字货币项目,用于搭建一个数字货币与法定货币之间传输的去中心化网关。将通过免费发放的形式提供给用户,其供应上线为1000亿,其中95%数量的恒星币用于免费发放。
供应量:104,363,617,748XLM,然而,每年都有百分之一的通货膨胀率。这意味着新的xlm每年以1%的速率添加到网络中。
Stellar使用ed=d25519签名方案和32字节公钥作为加密地址。
官方网址:
浏览器:
https://stellar.expert/explorer/public/
源代码:
交流区:
签名算法:ed25519
签名:是对hash数据进行签名
地址生成
size_t stellar_publicAddressAsStr(const uint8_t bytes, char out, size_t outlen)
{
// version + key bytes + checksum
uint8_t keylen = 1 + 32 + 2;
uint8_t bytes_full[keylen];
bytes_full[0] = 6 << 3; // 'G'
memcpy(bytes_full + 1, bytes, 32);
// Last two bytes are the checksum
uint16_t checksum = stellar_crc16(bytes_full, 33);
bytes_full[keylen-2] = checksum & 0x00ff;
bytes_full[keylen-1] = (checksum>>8) & 0x00ff;
base32_encode(bytes_full, keylen, out, outlen, BASE32_ALPHABET_RFC4648);
// Public key will always be 56 characters
return 56;
}
bytes为压缩公钥去掉前缀(32字节)
待hash原始数据分段解析
sha256 network_hash(sha256 network_passphrase)
sha256 { 0x00, 0x00, 0x00, 0x02 }
sha256 (0 32bits)
sha256 (pubkey 32 bytes)
sha256 (fee 32bits)
sha256 (sequence number 64bits)
(has timebound)
{
stellar_hashupdate_bool(true); sha256
// Timebounds are sent as uint32s since that's all we can display, but they must be hashed as
// 64-bit values
stellar_hashupdate_uint32(0); sha256
stellar_hashupdate_uint32(msg->timebounds_start); sha256
stellar_hashupdate_uint32(0); sha256
stellar_hashupdate_uint32(msg->timebounds_end); sha256
}
else
{
hash256 (0 32bits)
}
sha256 (memo_type 32bits)
switch (msg->memo_type) {
// None, nothing else to do
case 0:
break;
// Text: 4 bytes (size) + up to 28 bytes
case 1:
sha256 (lens 32bits)
sha256(text,个数为4的倍数,不够补0)
break;
}
sha256 (num_operations 32bits)
sha256 (false 32bits,表示没有source account)
sha256 (operation type 32bits,1表示payment)
sha256 (0 32bits)
sha256 (pubkey 32 bytes receipt)
sha256 (32bits,when XLM asset->type = 0 )
sha256 (amount 64bits)
sha256 (0 32bits) 表示sha结束
//数据序列化结果
0000000066AF688FD138A9250DE2D3EE8CAE72A8D3EFE97FF6B0D9275BD6C2092B41A226000000640121E532000042D500000000000000010000000677656978696E0000000000010000000000000001000000003AA0A99247E062EE1E968EF57716DFB7868DD6614FA16972C67D894242FFBB7C0000000158595A0000000000A071C74A90AADA2CB7D8B4D514976A49422D356400DDB84B033AAB9B83B42516000000002EC0F44700000000000000012B41A226000000408F5A3EB27F1B906AE16E682C6F21D05B13E23C4BD0AB893E7998688CC9DD2F1A26C934B471FBB1587352EE1997FDAA5331FE2A19E77F66D622F54732F1115901
//序列化数据解析
00000000 //First 4 bytes of an address are the type. There's only one type (0)
66AF688FD138A9250DE2D3EE8CAE72A8D3EFE97FF6B0D9275BD6C2092B41A226 //public key
00000064 //fee(100)
0121E532000042D5 //sequence number
00000000 //No timebounds
00000001 //memo type
00000006 //string len
77656978696E0000 //string 长度是4的整数倍,不够时填充0
00000001 //number of operations 1(操作的数量,操作类似于类型)
00000000 //no source account(正常不需要source account)
00000001 //Payment(交易类型)
00000000 //First 4 bytes of an address are the type. There's only one type (0)
3AA0A99247E062EE1E968EF57716DFB7868DD6614FA16972C67D894242FFBB7C //receipt address pubkey
00000001 //4-character asset code asset type
58595A00 //asset code
00000000 //First 4 bytes of an address are the type. There's only one type (0)
A071C74A90AADA2CB7D8B4D514976A49422D356400DDB84B033AAB9B83B42516 //asset address pubke
000000002EC0F447 //amount
00000000 //4 null bytes
00000001 //has signature
2B41A226 //pubkey Last 4 bytes
00000040 //64
8F5A3EB27F1B906AE16E682C6F21D05B13E23C4BD0AB893E7998688CC9DD2F1A26C934B471FBB1587352EE1997FDAA5331FE2A19E77F66D622F54732F1115901 //signature
//base64
AAAAAGavaI/ROKklDeLT7oyucqjT7+l/9rDZJ1vWwgkrQaImAAAAZAEh5TIAAELVAAAAAAAAAAEAAAAGd2VpeGluAAAAAAABAAAAAAAAAAEAAAAAOqCpkkfgYu4elo71dxbft4aN1mFPoWlyxn2JQkL/u3wAAAABWFlaAAAAAACgccdKkKraLLfYtNUUl2pJQi01ZADduEsDOqubg7QlFgAAAAAuwPRHAAAAAAAAAAErQaImAAAAQI9aPrJ/G5Bq4W5oLG8h0FsT4jxL0KuJPnmYaIzJ3S8aJsk0tHH7sVhzUu4Zl/2qUzH+Khnnf2bWIvVHMvERWQE=
base-64 XDR数据解析:
https://www.stellar.org/laboratory#xdr-viewer?type=TransactionEnvelope&network=public
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果