Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to derive public address for Bitcoin Cash ABC (BCH) #328

Open
nandubatchu opened this issue Jan 31, 2019 · 3 comments
Open

Unable to derive public address for Bitcoin Cash ABC (BCH) #328

nandubatchu opened this issue Jan 31, 2019 · 3 comments

Comments

@nandubatchu
Copy link

nandubatchu commented Jan 31, 2019

@richardkiss Not working for both mainnet (BCH) and testnet (XCH).

rand = codecs.encode(os.urandom(32), 'hex').decode()
key = Key(secret_exponent=int('0x' + rand, 0), netcode="XCH")

in create_account
    address = key.address()
in address
    return hash160_sec_to_bitcoin_address(hash160, address_prefix=address_prefix)
in hash160_sec_to_bitcoin_address
    return b2a_hashed_base58(address_prefix + hash160_sec)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'bytes'
@nandubatchu
Copy link
Author

nandubatchu commented Jan 31, 2019

@richardkiss I see that BCH and XCH are missing in the _NETWORK_PREFIXES variable.

I guess this part of code is not release to pypi package version 0.80. Can you validate?

@richardkiss
Copy link
Owner

Try now. I get

>>> from pycoin.symbols.xch import network
>>> network.keys.private(1).wif()
'cMahea7zqjxrtgAbB7LSGbcQUr1uX1ojuat9jZodMN87JcbXMTcA'
>>> network.keys.private(1).address()
'mrCDrCybB6J1vRfbwM5hemdJz73FwDBC8r'

>>> from pycoin.symbols.bch import network
>>> network.keys.private(1).address()
'1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH'
>>> network.keys.private(1).wif()
'KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn'

Are XCH and BCH still using base58 or have they switched to bech32?

@simon-v
Copy link

simon-v commented Oct 17, 2021

Hi,

Thank you for making this package.

Bitcoin Cash uses a variant of bech32 called CashAddress. The specification can be found, for example, here: https://flowee.org/docs/spec/blockchain/encoding/cashaddr/

A Python implementation handling conversion between base58 and CashAddress can be found here: https://github.com/oskyk/cashaddress

Using those resources as reference, implementing CashAddress in pycoin should be fairly straightforward.

Thanks again, and looking forward towards using your package in my future projects!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants