Skip to content

Commit

Permalink
refactor: use memo (#40)
Browse files Browse the repository at this point in the history
  • Loading branch information
sleepdefic1t authored Jul 4, 2022
1 parent f344efc commit 7cf7d65
Show file tree
Hide file tree
Showing 11 changed files with 33 additions and 33 deletions.
4 changes: 2 additions & 2 deletions solar_crypto/transactions/builder/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,5 +131,5 @@ def set_type_group(self, type_group):
def set_version(self, version):
self.transaction.version = version

def set_vendor_field(self, value: str):
self.transaction.vendorField = value.encode()
def set_memo(self, value: str):
self.transaction.memo = value.encode()
6 changes: 3 additions & 3 deletions solar_crypto/transactions/builder/htlc_lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def __init__(
secret_hash,
expiration_type,
expiration_value,
vendorField=None,
memo=None,
fee=None,
):
"""Create a timelock transaction
Expand All @@ -25,7 +25,7 @@ def __init__(
secret_hash (str): a hash of the secret. The SAME hash must be used in the corresponding “claim” transaction
expiration_type (int): type of the expiration. Either block height or network epoch timestamp based
expiration_value (int): Expiration of transaction in seconds or height depending on expiration_type
vendorField (str): value for the vendor field aka smartbridge
memo (str): value for the optional text field
fee (int, optional): fee used for the transaction (default is already set)
"""
super().__init__()
Expand All @@ -47,7 +47,7 @@ def __init__(
"expiration": {"type": expiration_type, "value": expiration_value},
}

self.transaction.vendorField = vendorField.encode() if vendorField else None
self.transaction.memo = memo.encode() if memo else None

if fee:
self.transaction.fee = fee
Expand Down
6 changes: 3 additions & 3 deletions solar_crypto/transactions/builder/legacy_transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ class LegacyTransfer(BaseTransactionBuilder):

transaction_type = TRANSACTION_LEGACY_TRANSFER

def __init__(self, recipientId, amount, vendorField=None, fee=None):
def __init__(self, recipientId, amount, memo=None, fee=None):
"""Create a transfer transaction
Args:
recipientId (str): address to which you want to send coins
amount (int): amount of coins you want to transfer
vendorField (str): value for the vendor field aka smartbridge
memo (str): value for the optional text field
fee (int, optional): fee used for the transaction (default is already set)
"""
super().__init__()
Expand All @@ -28,7 +28,7 @@ def __init__(self, recipientId, amount, vendorField=None, fee=None):
else:
raise ValueError("Amount is not valid")

self.transaction.vendorField = vendorField.encode() if vendorField else None
self.transaction.memo = memo.encode() if memo else None

if fee:
self.transaction.fee = fee
6 changes: 3 additions & 3 deletions solar_crypto/transactions/builder/transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ class Transfer(BaseTransactionBuilder):

transaction_type = TRANSACTION_TRANSFER

def __init__(self, vendorField=None, fee=None):
def __init__(self, memo=None, fee=None):
"""Create a transfer transaction
Args:
vendorField (str): value for the vendor field aka smartbridge
memo (str): value for the optional text field
fee (int, optional): fee used for the transaction (default is already set)
"""
super().__init__()
Expand All @@ -20,7 +20,7 @@ def __init__(self, vendorField=None, fee=None):

self.transaction.asset["transfers"] = []

self.transaction.vendorField = vendorField.encode() if vendorField else None
self.transaction.memo = memo.encode() if memo else None

if fee:
self.transaction.fee = fee
Expand Down
12 changes: 6 additions & 6 deletions solar_crypto/transactions/deserializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ def deserialize(self):
transaction.senderPublicKey = hexlify(self.serialized)[34 : 66 + 34].decode()
transaction.fee = read_bit64(self.serialized, offset=50)

vendor_field_length = read_bit8(self.serialized, offset=58)
if vendor_field_length > 0:
vendor_field_offset = 59
vendorField_end = vendor_field_offset + vendor_field_length
transaction.vendorField = self.serialized[vendor_field_offset:vendorField_end].decode()
memo_length = read_bit8(self.serialized, offset=58)
if memo_length > 0:
memo_offset = 59
memo_end = memo_offset + memo_length
transaction.memo = self.serialized[memo_offset:memo_end].decode()

asset_offset = (58 + 1) * 2 + vendor_field_length * 2
asset_offset = (58 + 1) * 2 + memo_length * 2
handled_transaction = self._handle_transaction_type(asset_offset, transaction)
transaction.amount = handled_transaction.amount
transaction.version = handled_transaction.version
Expand Down
8 changes: 4 additions & 4 deletions solar_crypto/transactions/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ def serialize(
bytes_data += write_high(self.transaction.get("senderPublicKey"))
bytes_data += write_bit64(self.transaction.get("fee"))

if self.transaction.get("vendorField"):
vendorFieldLength = len(self.transaction.get("vendorField"))
bytes_data += write_bit8(vendorFieldLength)
bytes_data += self.transaction["vendorField"].encode()
if self.transaction.get("memo"):
memo_length = len(self.transaction.get("memo"))
bytes_data += write_bit8(memo_length)
bytes_data += self.transaction["memo"].encode()
else:
bytes_data += write_bit8(0x00)

Expand Down
2 changes: 1 addition & 1 deletion solar_crypto/transactions/transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"nonce": None,
"type": None,
"typeGroup": None,
"vendorField": None,
"memo": None,
"version": None,
"lockTransactionId": None,
"lockSecret": None,
Expand Down
6 changes: 3 additions & 3 deletions tests/transactions/builder/test_burn.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,18 @@ def test_burn_transaction(version):


@pytest.mark.parametrize("version", [2, 3])
def test_burn_transaction_with_vendor_field(version):
def test_burn_transaction_with_memo(version):
"""Test if a transfer transaction gets built"""
transaction = Burn(amount=200000000)
transaction.set_vendor_field("hello world")
transaction.set_memo("hello world")
transaction.set_nonce(1)
transaction.set_version(version)
transaction.sign("this is a top secret passphrase")
transaction_dict = transaction.to_dict()

assert transaction_dict["nonce"] == 1
assert transaction_dict["signature"]
assert transaction_dict["vendorField"] == "hello world"
assert transaction_dict["memo"] == "hello world"
assert transaction_dict["version"] == version
assert transaction_dict["type"] is SOLAR_TRANSACTION_BURN
assert transaction_dict["typeGroup"] == TRANSACTION_TYPE_GROUP.SOLAR.value
Expand Down
6 changes: 3 additions & 3 deletions tests/transactions/builder/test_delegate_resignation.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,19 @@ def test_delegate_resignation_transaction(version):


@pytest.mark.parametrize("version", [2, 3])
def test_delegate_resignation_with_vendor_field_transaction(version):
def test_delegate_resignation_with_memo_transaction(version):
"""Test if delegate resignation transaction gets built"""
transaction = DelegateResignation()
transaction.set_nonce(1)
transaction.set_type_group(TRANSACTION_TYPE_GROUP.CORE)
transaction.set_version(version)
transaction.set_vendor_field("bye mr delegate")
transaction.set_memo("bye mr delegate")
transaction.sign("testing")
transaction_dict = transaction.to_dict()

assert transaction_dict["nonce"] == 1
assert transaction_dict["signature"]
assert transaction_dict["vendorField"] == "bye mr delegate"
assert transaction_dict["memo"] == "bye mr delegate"
assert transaction_dict["type"] is TRANSACTION_DELEGATE_RESIGNATION
assert transaction_dict["typeGroup"] == TRANSACTION_TYPE_GROUP.CORE.value
assert transaction_dict["fee"] == 0
Expand Down
6 changes: 3 additions & 3 deletions tests/transactions/builder/test_legacy_transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,22 @@ def test_transfer_transaction(version):


@pytest.mark.parametrize("version", [2, 3])
def test_transfer_transaction_with_vendor_field(version):
def test_transfer_transaction_with_memo(version):
"""Test if a transfer transaction gets built"""
transaction = LegacyTransfer(
recipientId="D61mfSggzbvQgTUe6JhYKH2doHaqJ3Dyib",
amount=200000000,
)
transaction.set_type_group(TRANSACTION_TYPE_GROUP.CORE)
transaction.set_vendor_field("hello world")
transaction.set_memo("hello world")
transaction.set_nonce(1)
transaction.set_version(version)
transaction.sign("this is a top secret passphrase")
transaction_dict = transaction.to_dict()

assert transaction_dict["nonce"] == 1
assert transaction_dict["signature"]
assert transaction_dict["vendorField"] == "hello world"
assert transaction_dict["memo"] == "hello world"
assert transaction_dict["version"] == version
assert transaction_dict["type"] is TRANSACTION_LEGACY_TRANSFER
assert transaction_dict["typeGroup"] == TRANSACTION_TYPE_GROUP.CORE.value
Expand Down
4 changes: 2 additions & 2 deletions tests/transactions/deserializers/test_legacy_transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,12 @@ def test_transfer_second_signature_deserializer():
actual.verify()


def test_transfer_with_vendor_field_deserializer():
def test_transfer_with_memo_deserializer():
serialized = "ff021e0100000000000100000000000000034151a3ec46b5670a682b0a63394f863587d1bc97483b1b6c70eb58e7f0aed19280969800000000000b68656c6c6f20776f726c6400c2eb0b00000000000000001e0995750207ecaf0ccf251c1265b92ad84f553662dc79fe9c166d898cf27e36e8897cb154925a48faa32738edb87d71acfae68cc5e384a9969374cc85b335bf89549342f17266cce370ff57c3401ff8ca90424086"

deserializer = Deserializer(serialized)
actual = deserializer.deserialize()

assert actual.vendorField == "hello world"
assert actual.memo == "hello world"

actual.verify()

0 comments on commit 7cf7d65

Please sign in to comment.