Exemplo n.º 1
0
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)
Exemplo n.º 3
0
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)