Problem with Rekeying - General - Algorand
Problem with Rekeying
post by bhaney44 on Jan 12, 2022
I am learning how to rekey accounts to create multi-sig wallets. I developed code, which is on GitHub to rekey address ADDA to ADDB. Running the rekey.py script from the terminal produced the following result.
(algoenv) Brians-MacBook-Pro:node brianhaney$ python3 rekey.py
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/algosdk/v2client/algod.py", line 82, in algod_request
resp = urlopen(req)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 531, in open
response = meth(req, response)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 641, in http_response
'http', request, response, code, msg, hdrs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 569, in error
return self._call_chain(*args)
result = func(*args)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "rekey.py", line 53, in <module>
txinfo = sign_and_send(txn, passphrase, client)
File "rekey.py", line 46, in sign_and_send
client.send_transaction(stxn)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/algosdk/v2client/algod.py", line 215, in send_transaction
encoding.msgpack_encode(txn), **kwargs
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/algosdk/v2client/algod.py", line 237, in send_raw_transaction
return self.algod_request("POST", req, data=txn, **kwargs)["txId"]
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/algosdk/v2client/algod.py", line 89, in algod_request
raise error.AlgodHTTPError(e, code)
algosdk.error.AlgodHTTPError: TransactionPool.Remember: transaction 5U25DK73JUS6R54MC5DZXYZ4JSLYHZOUQ2IGTP424EPWW7OYK3BA: should have been authorized by ADDB but was actually authorized by ADDA
It appears the rekey worked despite the return error because there was a transaction made ( TXID). However, I am unclear as to why the error was produced, given the successful result.
I checked the address in the mobile wallet, which shows ADDA had been rekeyed. Additionally, in the mobile wallet, the following error presents when attempting to send Algo from ADDA.
Error connected ledger device cannot sign transactions for this account. In order to do so, please connect ADDB.
However, I am not sure how to connect to ADDB or what the error means. When I open the ADDB address in the mobile wallet I am not able to send transactions from ADDA. So, I have three questions I would sincerely appreciate any help answering.
- What caused the script to return an error?
- How do I send Algo from ADDA, given it has been re-keyed to ADDB?
- How do you rekey to a multi-sig wallet as opposed to a single-sig wallet?
Thanks!
post by bhaney44 on Jan 12, 2022
Update
There is documentation on rekeying to a multi-sig wallet, as opposed to a single-sig wallet. I used these docs to formulate the general model for rekeying in Python that I used. The documentation states:
The following transaction will fail because, by default,
goalattempts to add the authorization using the--fromparameter. However, the protocol will reject this because it is expecting the authorization from$ADDR_Bdue to the confirmed rekeying transaction above.
However, it is unclear whether rekeying requires sending an authorized transaction as the documentation continues.
Sending from the authorized address of Account “A” requires:
- Construct an unsigned transaction from
$ADDR_A- Sign using authorized address
$ADDR_B- Send authorized transaction
post by bhaney44 on Jan 13, 2022
Update
I watched @paul 's video on rekeying. I’ve learned a couple things and please correct me if I’m mistaken.
- The Algorand Mobile Wallet does not support transactions from rekeyed addresses.
- Transactions from rekeyed addresses must be manual, done through code.
Hacking through this problem, I also sent a transaction from ADDA to ADDB and signing the transaction with the passphrase of ADDB. However, the transaction was rejected with an error.
post by Prince on Jan 15, 2022
Heading link Hello
I’ll get right to it sir
post by bhaney44 on Feb 28, 2022
This has been resolved. The error was due to issues relating to the purestake API connection. Additionally, it is not possible to send a transaction from the Algorand wallet once it has been rekeyed, and future transactions must be completed programmatically.