使用bitcoin-abc从公钥获取比特币现金地址

时间:2019-10-22 16:16:48

标签: public-key cryptocurrency

嘿,我正在使用https://github.com/Bitcoin-ABC/bitcoin-abc并尝试从ecdsa公钥获取bch地址。

我有这个压缩的公钥:

     publickKey = "02c0fe3501b514b1b2136b4d923de0907314a7c92499fd29a0cb7cf9f731711a19"

这是它的比特币地址:“ 39n8cpkeHhJDzhTVkboagHMbr9WYSLv2Yk”

根据https://cashaddr.bitcoincash.org/,这是它的比特币现金地址:“ bitcoincash:ppvt3t9zkp3flgvgunp0wpp6l9t9tc85kvhtg5zkvr”

我试图这样获得bch地址:

    const auto netParams = bCreateChainParams(bCBaseChainParams::MAIN);
    CTxDestination dst = CKeyID(uint160S(publickKey));
    std::string encoded = EncodeCashAddr(dst, *netParams);

我得到了不同的bitcoincash地址(而不是上面的那个)

我也尝试过:

    std::vector<uint8_t> hashVector = std::vector<uint8_t>(uncompressKey(publickKey));
    bCashAddrContent keyContent{PUBKEY_TYPE, hashVector};
    string encoded = EncodeCashAddr("bitcoincash", keyContent);

当uncompressKey函数解压缩ecdsa密钥并从其中删除headres时。

我也尝试使用SCRIPT_TYPE而不是PUBKEY_TYPE,但是我没有得到正确的地址。...

我也找不到任何示例代码

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

我成功到达了压缩比特币现金地址:

CPubKey cPubKey = CPubKey(hash.begin(), hash.end()); 
auto dst = GetDestinationForKey(cPubKey, OutputType::LEGACY); 
std::string encoded = EncodeCashAddr(dst, *netParams);

“ hash”是压缩公共密钥(66个字符)的std :: vector且“ encoded”是比特币现金地址已压缩

如果有人知道如何获取常规地址(未压缩),请告诉我