def address_checksum(address): """ Takes a address (81 Characters) and converts it to an address with checksum (90 Characters) :param address: :return: """ bytes_address = bytes(address.encode('utf-8')) addy = Address(bytes_address) address = str(addy.with_valid_checksum()) return address
def test_checksum_valid(self): """ An address is created with a valid checksum. """ addy = Address(b'RVORZ9SIIP9RCYMREUIXXVPQIPHVCNPQ9HZWYKFWYWZRE' b'9JQKG9REPKIASHUUECPSQO9JT9XNMVKWYGVAFOXM9MUBX') self.assertTrue(addy.is_checksum_valid()) self.assertEqual( binary_type(addy.with_valid_checksum()), b'RVORZ9SIIP9RCYMREUIXXVPQIPHVCNPQ9HZWYKFWYWZRE' b'9JQKG9REPKIASHUUECPSQO9JT9XNMVKWYGVAFOXM9MUBX')
def test_checksum_null(self): """ An address is created without a checksum. """ trytes = (b'ZKIUDZXQYQAWSHPKSAATJXPAQZPGYCDCQDRSMWWCGQJNI' b'PCOORMDRNREDUDKBMUYENYTFVUNEWDBAKXMV') addy = Address(trytes) self.assertFalse(addy.is_checksum_valid()) self.assertEqual( binary_type(addy.with_valid_checksum()), b'ZKIUDZXQYQAWSHPKSAATJXPAQZPGYCDCQDRSMWWCGQJNI' b'PCOORMDRNREDUDKBMUYENYTFVUNEWDBAKXMVJJJGBARPB', )
def test_checksum_invalid(self): """ An address is created with an invalid checksum. """ trytes = (b'IGKUOZGEFNSVJXETLIBKRSUZAWMYSVDPMHGQPCETEFNZP' b'XSJLZMBLAWDRLUBWPIPKFNEPADIWMXMYYRKQ') addy = Address(trytes + b'XYYNAFRMB' # <- Last tryte s/b 'A'. ) self.assertFalse(addy.is_checksum_valid()) self.assertEqual( binary_type(addy.with_valid_checksum()), b'IGKUOZGEFNSVJXETLIBKRSUZAWMYSVDPMHGQPCETEFNZP' b'XSJLZMBLAWDRLUBWPIPKFNEPADIWMXMYYRKQXYYNAFRMA', )
def test_checksum_valid(self): """ An address is created with a valid checksum. """ addy = Address( b'RVORZ9SIIP9RCYMREUIXXVPQIPHVCNPQ9HZWYKFWYWZRE' b'9JQKG9REPKIASHUUECPSQO9JT9XNMVKWYGVAITCOXAQSD', ) self.assertTrue(addy.is_checksum_valid()) self.assertEqual( binary_type(addy.with_valid_checksum()), b'RVORZ9SIIP9RCYMREUIXXVPQIPHVCNPQ9HZWYKFWYWZRE' b'9JQKG9REPKIASHUUECPSQO9JT9XNMVKWYGVAITCOXAQSD', )
def test_with_checksum_attributes(self): """ :py:meth:`Address.with_valid_checksum` also copies attributes such as key index and balance. """ addy = \ Address( trytes=b'ZKIUDZXQYQAWSHPKSAATJXPAQZPGYCDCQDRSMWWCGQJNI' b'PCOORMDRNREDUDKBMUYENYTFVUNEWDBAKXMV', key_index=42, balance=86, ) checked = addy.with_valid_checksum() self.assertEqual(checked.key_index, 42) self.assertEqual(checked.balance, 86)
def test_with_checksum_attributes(self): """ :py:meth:`Address.with_valid_checksum` also copies attributes such as key index and balance. """ addy =\ Address( trytes = b'ZKIUDZXQYQAWSHPKSAATJXPAQZPGYCDCQDRSMWWCGQJNI' b'PCOORMDRNREDUDKBMUYENYTFVUNEWDBAKXMV', key_index = 42, balance = 86, ) checked = addy.with_valid_checksum() self.assertEqual(checked.key_index, 42) self.assertEqual(checked.balance, 86)
def test_checksum_null(self): """ An address is created without a checksum. """ trytes = ( b'ZKIUDZXQYQAWSHPKSAATJXPAQZPGYCDCQDRSMWWCGQJNI' b'PCOORMDRNREDUDKBMUYENYTFVUNEWDBAKXMV' ) addy = Address(trytes) self.assertFalse(addy.is_checksum_valid()) self.assertEqual( binary_type(addy.with_valid_checksum()), b'ZKIUDZXQYQAWSHPKSAATJXPAQZPGYCDCQDRSMWWCGQJNI' b'PCOORMDRNREDUDKBMUYENYTFVUNEWDBAKXMVJJJGBARPB', )
def test_checksum_invalid(self): """ An address is created with an invalid checksum. """ trytes = ( b'IGKUOZGEFNSVJXETLIBKRSUZAWMYSVDPMHGQPCETEFNZP' b'XSJLZMBLAWDRLUBWPIPKFNEPADIWMXMYYRKQ' ) addy = Address( trytes + b'XYYNAFRMB' # <- Last tryte s/b 'A'. ) self.assertFalse(addy.is_checksum_valid()) self.assertEqual( binary_type(addy.with_valid_checksum()), b'IGKUOZGEFNSVJXETLIBKRSUZAWMYSVDPMHGQPCETEFNZP' b'XSJLZMBLAWDRLUBWPIPKFNEPADIWMXMYYRKQXYYNAFRMA', )
def _apply(self, value): super(AddressNoChecksum, self)._apply(value) if self._has_errors: return None # Possible it's still just a TryteString if not isinstance(value, Address): value = Address(value) # Bail out if we have a bad checksum if value.checksum and not value.is_checksum_valid(): return self._invalid_value( value=value, reason=self.ADDRESS_BAD_CHECKSUM, exc_info=True, context={ 'supplied_checksum': value.checksum, 'expected_checksum': value.with_valid_checksum().checksum, }, ) return Address(value.address)
def _apply(self, value): super(AddressNoChecksum, self)._apply(value) if self._has_errors: return None # Possible it's still just a TryteString if not isinstance(value, Address): value = Address(value) # Bail out if we have a bad checksum if value.checksum and not value.is_checksum_valid(): return self._invalid_value( value = value, reason = self.ADDRESS_BAD_CHECKSUM, exc_info = True, context = { 'supplied_checksum': value.checksum, 'expected_checksum': value.with_valid_checksum().checksum, }, ) return Address(value.address)
def address_checksum(address): bytes_address = bytes(address) addy = Address(bytes_address) address = str(addy.with_valid_checksum()) return address