Beispiel #1
0
    def address(self):
        """The public address you share with others to receive funds."""
        if self._address is None:
            self._address = public_key_to_address(self._public_key,
                                                  version='test')

        return self._address
Beispiel #2
0
    def get_signer_address(self, txrow):
        txins = self.conn.execute('''SELECT asmhex FROM txin WHERE tx = ?''',
                                  (txrow, )).fetchall()
        address = None

        for txin in txins:
            asmhex = txin[0]
            asm = bytes.fromhex(asmhex)

            sig_size = int.from_bytes(asm[0:1], 'little')
            pubkey_size = int.from_bytes(asm[sig_size + 1:sig_size + 2],
                                         'little')
            pubkey = asm[sig_size + 2:sig_size + pubkey_size + 2]
            pubkey_address = public_key_to_address(pubkey)

            if not address:
                address = pubkey_address

            elif address != pubkey_address:
                raise ValueError(
                    "Multiple signer keys are present in the transaction inputs"
                )

        return address
Beispiel #3
0
def generate_key_address_pair():  # pragma: no cover
    private_key = ECPrivateKey()
    address = public_key_to_address(private_key.public_key.format())
    return bytes_to_wif(private_key.secret), address
Beispiel #4
0
 def test_public_key_to_address_incorrect_length(self):
     with pytest.raises(ValueError):
         public_key_to_address(PUBLIC_KEY_COMPRESSED[:-1])
Beispiel #5
0
 def test_public_key_to_address_test_uncompressed(self):
     assert public_key_to_address(PUBLIC_KEY_UNCOMPRESSED, version='test') == BITCOIN_ADDRESS_TEST
Beispiel #6
0
 def test_public_key_to_address_uncompressed(self):
     assert public_key_to_address(PUBLIC_KEY_UNCOMPRESSED) == BITCOIN_ADDRESS
Beispiel #7
0
 def test_public_key_to_address_regtest_uncompressed(self):
     assert (public_key_to_address(
         PUBLIC_KEY_UNCOMPRESSED,
         version="regtest") == BITCOIN_CASHADDRESS_REGTEST)
Beispiel #8
0
 def test_public_key_to_address_test_compressed(self):
     assert (public_key_to_address(
         PUBLIC_KEY_COMPRESSED,
         version="test") == BITCOIN_CASHADDRESS_TEST_COMPRESSED)
Beispiel #9
0
 def test_public_key_to_address_incorrect_version(self):
     with pytest.raises(ValueError):
         public_key_to_address(PUBLIC_KEY_COMPRESSED, "incorrect-version")
Beispiel #10
0
 def test_public_key_to_address_compressed(self):
     assert (public_key_to_address(PUBLIC_KEY_COMPRESSED) ==
             BITCOIN_CASHADDRESS_COMPRESSED)