Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion crypto/transactions/builder/unvote_builder.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
from typing import Optional
from crypto.enums.contract_addresses import ContractAddresses
from crypto.transactions.builder.base import AbstractTransactionBuilder
from crypto.transactions.types.unvote import Unvote

class UnvoteBuilder(AbstractTransactionBuilder):
def __init__(self, data: Optional[dict] = None):
super().__init__(data)

self.recipient_address(ContractAddresses.CONSENSUS.value)

def get_transaction_instance(self, data: dict):
return Unvote(data)
return Unvote(data)
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
from typing import Optional
from crypto.enums.contract_addresses import ContractAddresses
from crypto.transactions.builder.base import AbstractTransactionBuilder
from crypto.transactions.types.validator_registration import ValidatorRegistration

class ValidatorRegistrationBuilder(AbstractTransactionBuilder):
def __init__(self, data: Optional[dict] = None):
super().__init__(data)

self.recipient_address(ContractAddresses.CONSENSUS.value)

def validator_public_key(self, validator_public_key: str):
self.transaction.data['validatorPublicKey'] = validator_public_key
self.transaction.refresh_payload_data()
return self

def get_transaction_instance(self, data: dict):
return ValidatorRegistration(data)
return ValidatorRegistration(data)
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
from typing import Optional
from crypto.enums.contract_addresses import ContractAddresses
from crypto.transactions.builder.base import AbstractTransactionBuilder
from crypto.transactions.types.validator_resignation import ValidatorResignation

class ValidatorResignationBuilder(AbstractTransactionBuilder):
def __init__(self, data: Optional[dict] = None):
super().__init__(data)

self.recipient_address(ContractAddresses.CONSENSUS.value)

def get_transaction_instance(self, data: dict):
return ValidatorResignation(data)
return ValidatorResignation(data)
9 changes: 8 additions & 1 deletion crypto/transactions/builder/vote_builder.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
from typing import Optional
from crypto.enums.contract_addresses import ContractAddresses
from crypto.transactions.builder.base import AbstractTransactionBuilder
from crypto.transactions.types.vote import Vote

class VoteBuilder(AbstractTransactionBuilder):
def __init__(self, data: Optional[dict] = None):
super().__init__(data)

self.recipient_address(ContractAddresses.CONSENSUS.value)

def vote(self, vote: str):
self.transaction.data['vote'] = vote
self.transaction.refresh_payload_data()
return self

def get_transaction_instance(self, data: dict) -> Vote:
return Vote(data)
return Vote(data)
26 changes: 26 additions & 0 deletions tests/transactions/builder/test_unvote_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,29 @@ def test_unvote_transaction(passphrase, load_transaction_fixture):
assert builder.transaction.serialize().hex() == fixture['serialized']
assert builder.transaction.data['id'] == fixture['data']['id']
assert builder.verify()

def test_unvote_transaction_with_default_recipient_address(passphrase, load_transaction_fixture):
fixture = load_transaction_fixture('unvote')

builder = (
UnvoteBuilder()
.gas_price(fixture['data']['gasPrice'])
.nonce(fixture['data']['nonce'])
.network(fixture['data']['network'])
.gas_limit(fixture['data']['gasLimit'])
.sign(passphrase)
)

assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice']
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
assert builder.transaction.data['network'] == fixture['data']['network']
assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit']
assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower()
assert builder.transaction.data['value'] == fixture['data']['value']
assert builder.transaction.data['v'] == fixture['data']['v']
assert builder.transaction.data['r'] == fixture['data']['r']
assert builder.transaction.data['s'] == fixture['data']['s']

assert builder.transaction.serialize().hex() == fixture['serialized']
assert builder.transaction.data['id'] == fixture['data']['id']
assert builder.verify()
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,30 @@ def test_validator_registration_transaction(passphrase, load_transaction_fixture
assert builder.transaction.serialize().hex() == fixture['serialized']
assert builder.transaction.data['id'] == fixture['data']['id']
assert builder.verify()

def test_validator_registration_transaction_with_default_recipient_address(passphrase, load_transaction_fixture):
fixture = load_transaction_fixture('validator-registration')

builder = (
ValidatorRegistrationBuilder()
.gas_price(fixture['data']['gasPrice'])
.nonce(fixture['data']['nonce'])
.network(fixture['data']['network'])
.gas_limit(fixture['data']['gasLimit'])
.validator_public_key('954f46d6097a1d314e900e66e11e0dad0a57cd03e04ec99f0dedd1c765dcb11e6d7fa02e22cf40f9ee23d9cc1c0624bd')
.sign(passphrase)
)

assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice']
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
assert builder.transaction.data['network'] == fixture['data']['network']
assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit']
assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower()
assert builder.transaction.data['value'] == fixture['data']['value']
assert builder.transaction.data['v'] == fixture['data']['v']
assert builder.transaction.data['r'] == fixture['data']['r']
assert builder.transaction.data['s'] == fixture['data']['s']

assert builder.transaction.serialize().hex() == fixture['serialized']
assert builder.transaction.data['id'] == fixture['data']['id']
assert builder.verify()
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,29 @@ def test_validator_resignation_transaction(passphrase, load_transaction_fixture)
assert builder.transaction.serialize().hex() == fixture['serialized']
assert builder.transaction.data['id'] == fixture['data']['id']
assert builder.verify()

def test_validator_resignation_transaction_with_default_recipient_address(passphrase, load_transaction_fixture):
fixture = load_transaction_fixture('validator-resignation')

builder = (
ValidatorResignationBuilder()
.gas_price(fixture['data']['gasPrice'])
.nonce(fixture['data']['nonce'])
.network(fixture['data']['network'])
.gas_limit(fixture['data']['gasLimit'])
.sign(passphrase)
)

assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice']
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
assert builder.transaction.data['network'] == fixture['data']['network']
assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit']
assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower()
assert builder.transaction.data['value'] == fixture['data']['value']
assert builder.transaction.data['v'] == fixture['data']['v']
assert builder.transaction.data['r'] == fixture['data']['r']
assert builder.transaction.data['s'] == fixture['data']['s']

assert builder.transaction.serialize().hex() == fixture['serialized']
assert builder.transaction.data['id'] == fixture['data']['id']
assert builder.verify()
27 changes: 27 additions & 0 deletions tests/transactions/builder/test_vote_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,30 @@ def test_vote_transaction(passphrase, load_transaction_fixture):
assert builder.transaction.serialize().hex() == fixture['serialized']
assert builder.transaction.data['id'] == fixture['data']['id']
assert builder.verify()

def test_vote_transaction_with_default_recipient_address(passphrase, load_transaction_fixture):
fixture = load_transaction_fixture('vote')

builder = (
VoteBuilder()
.gas_price(fixture['data']['gasPrice'])
.nonce(fixture['data']['nonce'])
.network(fixture['data']['network'])
.gas_limit(fixture['data']['gasLimit'])
.vote('0xC3bBE9B1CeE1ff85Ad72b87414B0E9B7F2366763') # Example vote address
.sign(passphrase)
)

assert builder.transaction.data['gasPrice'] == fixture['data']['gasPrice']
assert builder.transaction.data['nonce'] == fixture['data']['nonce']
assert builder.transaction.data['network'] == fixture['data']['network']
assert builder.transaction.data['gasLimit'] == fixture['data']['gasLimit']
assert builder.transaction.data['recipientAddress'].lower() == fixture['data']['recipientAddress'].lower()
assert builder.transaction.data['value'] == fixture['data']['value']
assert builder.transaction.data['v'] == fixture['data']['v']
assert builder.transaction.data['r'] == fixture['data']['r']
assert builder.transaction.data['s'] == fixture['data']['s']

assert builder.transaction.serialize().hex() == fixture['serialized']
assert builder.transaction.data['id'] == fixture['data']['id']
assert builder.verify()