Ejemplo n.º 1
0
    def test_invalid_ss58_format_range_exceptions(self):
        with self.assertRaises(ValueError) as cm:
            ss58_encode(self.alice_keypair['public_key'], ss58_format=-1)
        self.assertEqual('Invalid value for ss58_format', str(cm.exception))

        with self.assertRaises(ValueError) as cm:
            ss58_encode(self.alice_keypair['public_key'], ss58_format=16384)

        self.assertEqual('Invalid value for ss58_format', str(cm.exception))
Ejemplo n.º 2
0
    def test_invalid_reserved_ss58_format(self):
        with self.assertRaises(ValueError) as cm:
            ss58_encode(self.alice_keypair['public_key'], ss58_format=46)

        self.assertEqual('Invalid value for ss58_format', str(cm.exception))

        with self.assertRaises(ValueError) as cm:
            ss58_encode(self.alice_keypair['public_key'], ss58_format=47)

        self.assertEqual('Invalid value for ss58_format', str(cm.exception))
Ejemplo n.º 3
0
 def setup_arbitrator(self, arbitrator_key: str):
     """
     Set up constants required for arbitrator functionality
     """
     self.keypair = sr25519.pair_from_seed(bytes.fromhex(arbitrator_key))
     self.arbitrator_account_id = self.keypair[0].hex()
     self.arbitrator_address = ss58_encode(self.keypair[0],
                                           ss58_format=self.address_type)
Ejemplo n.º 4
0
    def test_create_multi_sig_address(self):
        MultiAccountId = RuntimeConfiguration().get_decoder_class("MultiAccountId")

        multi_sig_account = MultiAccountId.create_from_account_list(
            ["CdVuGwX71W4oRbXHsLuLQxNPns23rnSSiZwZPN4etWf6XYo",
             "J9aQobenjZjwWtU2MsnYdGomvcYbgauCnBeb8xGrcqznvJc",
             "HvqnQxDQbi3LL2URh7WQfcmi8b2ZWfBhu7TEDmyyn5VK8e2"], 2)

        multi_sig_address = ss58_encode(multi_sig_account.value.replace('0x', ''), 2)

        self.assertEqual(multi_sig_address, "HFXXfXavDuKhLLBhFQTat2aaRQ5CMMw9mwswHzWi76m6iLt")
Ejemplo n.º 5
0
    def __init__(self, address_type=0, *, mnemonic=None, hex=None):
        if mnemonic:
            seed_bytes = bip39.bip39_to_mini_secret(mnemonic, "")
            seed_hex = bytearray(seed_bytes).hex()
            self.hex = seed_hex
        if hex:
            self.hex = hex

        self.keypair = sr25519.pair_from_seed(bytes.fromhex(self.hex))
        self.public_key = self.keypair[0].hex()
        self.private_key = self.keypair[1].hex()
        self.address = ss58_encode(self.keypair[0], ss58_format=address_type)
Ejemplo n.º 6
0
def order_addresses(addresses: list, address_type: int = 0):
    bytearray_public_keys = []
    ordered_addresses = []
    # Convert address to public keys and then to byte array
    for address in addresses:
        public_key = ss58_decode(address, valid_ss58_format=address_type)
        public_key_bytearray = bytearray()
        public_key_bytearray.extend(map(ord, public_key))
        bytearray_public_keys.append(public_key_bytearray)
    sorted_bytearray = sorted(bytearray_public_keys)
    # Convert back to addresses
    for byte_array in sorted_bytearray:
        ordered_addresses.append(
            ss58_encode(byte_array.decode(), ss58_format=address_type))
    return ordered_addresses
Ejemplo n.º 7
0
    def get_escrow_address(self,
                           buyer_address: str,
                           seller_address: str,
                           threshold: int = 2) -> str:
        """
        Returns an escrow address for multisignature transactions
        """
        MultiAccountId = self.runtime_config.get_decoder_class(
            "MultiAccountId")
        multi_sig_account_id = MultiAccountId.create_from_account_list(
            [buyer_address, seller_address, self.arbitrator_address],
            2,
        )

        multi_sig_address = ss58_encode(multi_sig_account_id.value.replace(
            "0x", ""),
                                        ss58_format=self.address_type)
        return multi_sig_address
Ejemplo n.º 8
0
 def test_encode_4_bytes_account_index(self):
     self.assertEqual('zswfoZa',
                      ss58_encode_account_index(67305985, ss58_format=2))
     self.assertEqual('zswfoZa', ss58_encode('0x01020304', ss58_format=2))
Ejemplo n.º 9
0
 def test_encode_2_bytes_account_index(self):
     self.assertEqual('3xygo', ss58_encode_account_index(256,
                                                         ss58_format=2))
     self.assertEqual('3xygo', ss58_encode('0x0001', ss58_format=2))
Ejemplo n.º 10
0
 def test_encode_1_byte_account_index_with_format(self):
     self.assertEqual('g4b', ss58_encode_account_index(1, ss58_format=2))
     self.assertEqual('g4b', ss58_encode('0x01', ss58_format=2))
Ejemplo n.º 11
0
    def test_invalid_public_key(self):
        with self.assertRaises(ValueError) as cm:
            ss58_encode(self.alice_keypair['public_key'][:30])

        self.assertEqual('Invalid length for address', str(cm.exception))
Ejemplo n.º 12
0
 def test_invalid_reserved_ss58_format(self):
     with self.assertRaises(ValueError):
         ss58_encode(self.alice_keypair['public_key'], ss58_format=46)
         ss58_encode(self.alice_keypair['public_key'], ss58_format=47)
Ejemplo n.º 13
0
    def test_encode_with_2_byte_prefix(self):
        public_key = ss58_decode(
            '5GoKvZWG5ZPYL1WUovuHW3zJBWBP5eT8CbqjdRY4Q6iMaQua')

        self.assertEqual('yGHU8YKprxHbHdEv7oUK4rzMZXtsdhcXVG2CAMyC9WhzhjH2k',
                         ss58_encode(public_key, ss58_format=255))
Ejemplo n.º 14
0
 def test_encode_33_byte_address(self):
     self.assertEqual(
         'KWCv1L3QX9LDPwY4VzvLmarEmXjVJidUzZcinvVnmxAJJCBou',
         ss58_encode(
             '0x03b9dc646dd71118e5f7fda681ad9eca36eb3ee96f344f582fbe7b5bcdebb13077'
         ))
Ejemplo n.º 15
0
 def test_invalid_public_key(self):
     with self.assertRaises(ValueError):
         ss58_encode(self.alice_keypair['public_key'][:30])
Ejemplo n.º 16
0
 def test_encode_8_bytes_account_index(self):
     self.assertEqual('848Gh2GcGaZia',
                      ss58_encode('0x2a2c0a0000000000', ss58_format=2))
Ejemplo n.º 17
0
 def test_encode_subkey_generated_pairs(self):
     for subkey_pair in self.subkey_pairs:
         self.assertEqual(
             subkey_pair['address'],
             ss58_encode(address=subkey_pair['public_key'],
                         ss58_format=subkey_pair['ss58_format']))
Ejemplo n.º 18
0
 def test_invalid_ss58_format_range_exceptions(self):
     with self.assertRaises(ValueError):
         ss58_encode(self.alice_keypair['public_key'], ss58_format=-1)
         ss58_encode(self.alice_keypair['public_key'], ss58_format=16384)