diff --git a/solar_crypto/transactions/builder/base.py b/solar_crypto/transactions/builder/base.py index 60acf8c..b166a2b 100644 --- a/solar_crypto/transactions/builder/base.py +++ b/solar_crypto/transactions/builder/base.py @@ -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() diff --git a/solar_crypto/transactions/builder/htlc_lock.py b/solar_crypto/transactions/builder/htlc_lock.py index b3ae4e3..91480d6 100644 --- a/solar_crypto/transactions/builder/htlc_lock.py +++ b/solar_crypto/transactions/builder/htlc_lock.py @@ -14,7 +14,7 @@ def __init__( secret_hash, expiration_type, expiration_value, - vendorField=None, + memo=None, fee=None, ): """Create a timelock transaction @@ -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__() @@ -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 diff --git a/solar_crypto/transactions/builder/legacy_transfer.py b/solar_crypto/transactions/builder/legacy_transfer.py index 5dcecc7..c791832 100644 --- a/solar_crypto/transactions/builder/legacy_transfer.py +++ b/solar_crypto/transactions/builder/legacy_transfer.py @@ -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__() @@ -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 diff --git a/solar_crypto/transactions/builder/transfer.py b/solar_crypto/transactions/builder/transfer.py index 9fac8b5..e6405b3 100644 --- a/solar_crypto/transactions/builder/transfer.py +++ b/solar_crypto/transactions/builder/transfer.py @@ -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__() @@ -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 diff --git a/solar_crypto/transactions/deserializer.py b/solar_crypto/transactions/deserializer.py index ca93fc0..82f9ce5 100644 --- a/solar_crypto/transactions/deserializer.py +++ b/solar_crypto/transactions/deserializer.py @@ -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 diff --git a/solar_crypto/transactions/serializer.py b/solar_crypto/transactions/serializer.py index 59245b4..b029286 100644 --- a/solar_crypto/transactions/serializer.py +++ b/solar_crypto/transactions/serializer.py @@ -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) diff --git a/solar_crypto/transactions/transaction.py b/solar_crypto/transactions/transaction.py index 45c1d22..9f9c4c2 100644 --- a/solar_crypto/transactions/transaction.py +++ b/solar_crypto/transactions/transaction.py @@ -32,7 +32,7 @@ "nonce": None, "type": None, "typeGroup": None, - "vendorField": None, + "memo": None, "version": None, "lockTransactionId": None, "lockSecret": None, diff --git a/tests/transactions/builder/test_burn.py b/tests/transactions/builder/test_burn.py index 01da850..dcd1243 100644 --- a/tests/transactions/builder/test_burn.py +++ b/tests/transactions/builder/test_burn.py @@ -32,10 +32,10 @@ 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") @@ -43,7 +43,7 @@ def test_burn_transaction_with_vendor_field(version): 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 diff --git a/tests/transactions/builder/test_delegate_resignation.py b/tests/transactions/builder/test_delegate_resignation.py index b90bd16..025f9b7 100644 --- a/tests/transactions/builder/test_delegate_resignation.py +++ b/tests/transactions/builder/test_delegate_resignation.py @@ -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 diff --git a/tests/transactions/builder/test_legacy_transfer.py b/tests/transactions/builder/test_legacy_transfer.py index e69e5c6..de400ab 100644 --- a/tests/transactions/builder/test_legacy_transfer.py +++ b/tests/transactions/builder/test_legacy_transfer.py @@ -33,14 +33,14 @@ 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") @@ -48,7 +48,7 @@ def test_transfer_transaction_with_vendor_field(version): 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 diff --git a/tests/transactions/deserializers/test_legacy_transfer.py b/tests/transactions/deserializers/test_legacy_transfer.py index d5f47c2..20a2a7f 100644 --- a/tests/transactions/deserializers/test_legacy_transfer.py +++ b/tests/transactions/deserializers/test_legacy_transfer.py @@ -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()