美文网首页
EOS钱包开发原理

EOS钱包开发原理

作者: v587的毅哥 | 来源:发表于2019-12-06 10:46 被阅读0次

    EOS

    私钥转WIF

    EOS使用与Bitcion WIF地址相同的版本、校验、编码方案,并与现有库兼容。

    1.一个全是0的示例私钥,它是一个32字节的long(此处用16进制表示)
    0000000000000000000000000000000000000000000000000000000000000000

    2.添加一个版本字节0x80到最前面,这个字节其实代币Bitcoin mainnet。当编码后这个版本字节也标志着这是一个私钥,与比特币不同,EOS总是使用压缩后的公钥(从私钥衍生出来的)所以并不会在私钥后面添加0x01
    800000000000000000000000000000000000000000000000000000000000000000

    3.在上面已添加版本(就是指已添加0x80字节)key上执行二进制SHA-256
    ce145d282834c009c24410812a60588c1085b63d65a7effc2e0a5e3a2e21b236

    4.对上面的结果再次执行SHA-256
    0565fba7ebf8143516e0222d7950c28589a34c3ee144c3876ceb01bfb0e9bb70

    5.在上面的结果上再取前4个字节,这个是校验和
    0565fba7

    6.把上面这个校验和添加到第二步执行后结果里的后面
    8000000000000000000000000000000000000000000000000000000000000000000565fba7

    7.把上面这个结果用Base58编码
    5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAbuatmU

    WIF转私钥

    把上面的顺序反过来就OK了

    私钥转公钥

    1. 根据私钥bytes计算出公钥bytes(Java中通过bitcoinJ实现:val publicKeyBytes = ECKey.fromPrivate(privateKeyBytes))
    2. 将公钥bytes进行RIPEMD160算法加密
    3. 将上一步得到的结果取前4位为checksumBytes
    4. 将第一步原始公钥bytes与上一步的checksumBytes拼接
    5. Base58.encode()编码上一步的结果(注:不要使用Base58.encodeChecked()),再在前面添加字符串EOS,结果即为公钥

    Todo

    如何校验公钥是否有效?

    如何通过公钥拿到账号?

    交易离线签名怎么实现?

    怎么与结合HD钱包?

    相关文章

      网友评论

          本文标题:EOS钱包开发原理

          本文链接:https://www.haomeiwen.com/subject/szbsgctx.html