algorand / algorand/py-algorand-sdk

kmd.sign_transaction() fails when signing_address is specified

Abierto
#436 4 comentarios 0 reacciones 0 asignados Ver en GitHub
bug Team Lamprey
Lenguaje dominante
Python
Estrellas
274
Forks
145
Merge medio
3 h 1 min
PR fusionados (30 d)
2

Descripción

### algosdk.kmd.sign_transaction() fails when `signing_address` arg is specified

### Expected behaviour
Transaction should be signed using the private key corresponding to the specified `signing_address`

### Actual behaviour
Exception is raised:
```
algosdk.error.KMDHTTPError: {
"error": true,
"message": "could not decode request body"
```

### Steps to reproduce issue
1. start sandbox environment
2. Run the below code to reproduce
```
from pprint import pprint
from typing import cast

from algosdk import kmd
from algosdk.transaction import PaymentTxn
from algosdk.v2client.algod import AlgodClient

token = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
kmd_client = kmd.KMDClient(kmd_token=token, kmd_address='http://127.0.0.1:4002')
algod_client = AlgodClient(algod_token=token, algod_address='http://127.0.0.1:4001')

suggested_params = algod_client.suggested_params()
address = 'XDOV35UGGYEQHHN2UJSW4NQKS3IAFK2PYTGLK2CSUTDTXZ4EVRXTMEONEQ'
txn = PaymentTxn(sender=address, receiver=address, amt=0, sp=suggested_params)

def unencrypted_default_wallet_id() -> str:
wallets = cast(list[dict[str, str]], kmd_client.list_wallets())
for wallet in wallets:
if wallet['name'] == 'unencrypted-default-wallet':
return wallet['id']
raise Exception('not found')

wallet_handle = kmd_client.init_wallet_handle(id=unencrypted_default_wallet_id(), password='')
# works when `signing_address` is None
signed_txn = kmd_client.sign_transaction(handle=wallet_handle, password='', txn=txn)
print('*** SUCCESSFULLY SIGNED TRANSACTION ***')
pprint(signed_txn.dictify())

print('*** Signing transaction with a `signing_address` arg fails')
# fails when `signing_address` is specified
signed_txn = kmd_client.sign_transaction(handle=wallet_handle, password='', txn=txn, signing_address=address) # raises exception
```

### Your environment
py-algorand-sdk==2.0.0

./sandbox version

algod version
12885032963
3.2.3.stable [rel/stable] (commit #d2289a52)
go-algorand is licensed with AGPLv3.0
source code available at https://github.com/algorand/go-algorand

Indexer version
2.8.0-dev.unknown compiled at 2022-01-21T13:24:39+0000 from git hash cf2a3873600a95c5740f0a854ecd3e5636bb4afb (modified)

Postgres version
postgres (PostgreSQL) 13.4

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.