def fulfill(wallet, password, address, index, transaction): try: key = ks.get_private_key_drv(wallet, address, index, password) tx = fulfill_transaction( json.loads(transaction), private_keys=[b58encode(key.privkey).decode()]) click.echo(json.dumps(tx)) # TODO ks.WalletError decorator except ks.WalletError as error: click.echo(error) except json.JSONDecodeError: click.echo('Operation aborted during transaction parsing') except Exception: click.echo('Operation aborted: unrecoverable error')
def test_fulfill_transaction(alice_transaction, alice_sk): from bigchaindb_driver.offchain import fulfill_transaction fulfilled_transaction = fulfill_transaction(alice_transaction, private_keys=alice_sk) inputs = fulfilled_transaction['inputs'] assert len(inputs) == 1 alice_transaction['inputs'][0]['fulfillment'] = None message = rapidjson.dumps( alice_transaction, skipkeys=False, ensure_ascii=False, sort_keys=True, ).encode() fulfillment_uri = inputs[0]['fulfillment'] assert Fulfillment.from_uri(fulfillment_uri).validate(message=message)
def test_fulfill_transaction_raises(alice_transaction, bob_privkey): from bigchaindb_driver.offchain import fulfill_transaction from bigchaindb_driver.exceptions import MissingPrivateKeyError with raises(MissingPrivateKeyError): fulfill_transaction(alice_transaction, private_keys=bob_privkey)