fortesp / bitcoinaddress

Bitcoin Wallet Address Generator
https://pypi.org/project/bitcoinaddress/
MIT License
146 stars 54 forks source link

Wallet generator failing #12

Closed cryptofunallday closed 3 years ago

cryptofunallday commented 3 years ago

Cloned and just running the example immediately fails:

In [11]: from bitcoinaddress import Wallet

In [12]: wallet = Wallet()

AttributeError Traceback (most recent call last)

in ----> 1 wallet = Wallet() /usr/lib/python3.9/site-packages/bitcoinaddress/wallet.py in __init__(self, hash_or_seed, testnet) 13 def __init__(self, hash_or_seed=None, testnet=False): 14 if hash_or_seed is None: hash_or_seed = Seed() ---> 15 self.key = Key.of(hash_or_seed) 16 self.address = Address.of(self.key) 17 self.testnet = testnet /usr/lib/python3.9/site-packages/bitcoinaddress/key/key.py in of(obj) 57 key = Key() 58 if isinstance(obj, Seed): ---> 59 key._from_seed(obj) 60 else: 61 try: /usr/lib/python3.9/site-packages/bitcoinaddress/key/key.py in _from_seed(self, seed) 77 self._generate_digest() 78 self._generate_hex() ---> 79 self.mainnet.generate_wif() 80 self.mainnet.generate_wif_compressed() 81 self.testnet.generate_wif() /usr/lib/python3.9/site-packages/bitcoinaddress/key/key.py in generate_wif(self) 28 29 def generate_wif(self): ---> 30 self.wif = self.instance._generate_wif(Key.MainNet.PREFIX) 31 32 def generate_wif_compressed(self): /usr/lib/python3.9/site-packages/bitcoinaddress/key/key.py in _generate_wif(self, prefix) 110 digest = prefix + self.digest 111 c = checksum(digest) --> 112 return base58.b58encode(digest + c).decode('utf-8') 113 114 def _generate_wif_compressed(self, prefix, suffix): AttributeError: 'str' object has no attribute 'decode'
fortesp commented 3 years ago

I am unable to make any conclusion with just the information you pasted here. How are you executing the script? Which script? Where? Do you have the most up to date package? To upgrade the package execute: sudo pip install [package_name] --upgrade Thanks.

cryptofunallday commented 3 years ago

Apologies the formatting was not done correctly. The issue is the example does not run. I have tried on multiple machines, same thing. Using git clone https://github.com/fortesp/bitcoinaddress for my source. Running in ipython here is what happens:

Python 3.9.1 (default, Dec 16 2020, 02:20:47) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from bitcoinaddress import Wallet
In [2]: wallet = Wallet()
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)
<ipython-input-2-ea0485b5b53f> in <module>
----> 1 wallet = Wallet()

~/bitcoinaddress/bitcoinaddress/wallet.py in __init__(self, hash_or_seed, testnet)
     13     def __init__(self, hash_or_seed=None, testnet=False):
     14         if hash_or_seed is None: hash_or_seed = Seed()
---> 15         self.key = Key.of(hash_or_seed)
     16         self.address = Address.of(self.key)
     17         self.testnet = testnet

~/bitcoinaddress/bitcoinaddress/key/key.py in of(obj)
     57         key = Key()
     58         if isinstance(obj, Seed):
---> 59             key._from_seed(obj)
     60         else:
     61             try:

~/bitcoinaddress/bitcoinaddress/key/key.py in _from_seed(self, seed)
     77         self._generate_digest()
     78         self._generate_hex()
---> 79         self.mainnet.generate_wif()
     80         self.mainnet.generate_wif_compressed()
     81         self.testnet.generate_wif()

~/bitcoinaddress/bitcoinaddress/key/key.py in generate_wif(self)
     28 
     29         def generate_wif(self):
---> 30             self.wif = self.instance._generate_wif(Key.MainNet.PREFIX)
     31 
     32         def generate_wif_compressed(self):

~/bitcoinaddress/bitcoinaddress/key/key.py in _generate_wif(self, prefix)
    110         digest = prefix + self.digest
    111         c = checksum(digest)
--> 112         return base58.b58encode(digest + c).decode('utf-8')
    113 
    114     def _generate_wif_compressed(self, prefix, suffix):

AttributeError: 'str' object has no attribute 'decode'

In [3]: 
cryptofunallday commented 3 years ago

Which is fixed by removing the .decode('utf-8') in the key.py and address.py files that are referenced in the error messages, in case anyone hits this issue.

fortesp commented 3 years ago

Strange. I just tested it by creating a new venv and it works perfectly. For instance:

python -m venv new_env
cd new_env
source bin/activate
pip install bitcoinaddress
python /path/to/test.py <---  with wallet = Wallet()