예제 #1
0
def test_staking_transaction():
    transaction = Transaction(
        chain=1,
        nonce=4_294_967_295,
        fee=57000,
        value=5_000_000,
        to_address=Config.STAKING_ADDRESS,
        unlock_sig=Config.COINBASE_UNLOCK_SIGNATURE,
    )

    assert transaction.validate() is False
    with pytest.raises(TransactionNotValid,
                       match=errors.TRANSACTION_INVALID_STAKING):
        transaction.validate_fields(raise_exception=True)

    transaction = Transaction(
        chain=1,
        nonce=4_294_967_295,
        fee=57000,
        value=5_000_000,
        to_address=Config.STAKING_ADDRESS,
    )

    transaction = transaction.sign(unhexlify(WALLET_1["private_key"]))

    assert transaction.validate() is True
예제 #2
0
def test_unlock_sig(mocker):
    """
    Test to validate the field 'unlock_sig' from a transaction
    """
    transaction = Transaction(
        chain=1,
        nonce=10,
        fee=50,
        value=5_000_000,
        to_address="1H7NtUENrEbwSVm52fHePzBnu4W3bCqimP",
        unlock_sig=Config.COINBASE_UNLOCK_SIGNATURE,
    )

    assert transaction.validate_fields() == True
    assert transaction.validate_fields(raise_exception=True) == True

    transaction.unlock_sig = binascii.unhexlify("0" * 258)
    assert transaction.validate_fields() == False
    with pytest.raises(TransactionNotValid,
                       match=errors.TRANSACTION_FIELD_SIGNATURE):
        transaction.validate_fields(raise_exception=True)

    transaction.unlock_sig = binascii.unhexlify("1" * 256)
    assert transaction.validate_fields() == True
    assert transaction.validate_fields(raise_exception=True) == True