def test_pubkeys_to_address(self, tmp_storage, network): coin = network.COIN privkey = PrivateKey.from_random() WIF = privkey.to_WIF(coin=coin) wallet = ImportedPrivkeyWallet.from_text(tmp_storage, WIF, None) public_key = privkey.public_key pubkey_hex = public_key.to_hex() address = public_key.to_address(coin=coin).to_string() assert wallet.pubkeys_to_address(pubkey_hex) == Address.from_string(address)
def test_P2PKHK_script(self): p = PrivateKey.from_random() PC = p.public_key PU = PC.complement() for P in (PC, PU): script = P.P2PKH_script() data = P.hash160() assert script == ( bytes([OP_DUP, OP_HASH160, len(data)]) + data + bytes([OP_EQUALVERIFY, OP_CHECKSIG]))
def test_pubkeys_to_address(self, tmp_storage, network): coin = network.COIN privkey = PrivateKey.from_random() WIF = privkey.to_WIF(coin=coin) parent_wallet = _TestableParentWallet.as_legacy_wallet_container( tmp_storage) wallet = ImportedPrivkeyWallet.from_text(parent_wallet, WIF) public_key = privkey.public_key pubkey_hex = public_key.to_hex() address = public_key.to_address(coin=coin).to_string() assert wallet.pubkeys_to_address(pubkey_hex) == address_from_string( address)
def test_from_template_bad(self): public_keys = [ PrivateKey.from_random().public_key.to_bytes() for n in range(2) ] with pytest.raises(ValueError): script = P2MultiSig_Output.from_template(pack_byte(1), *public_keys, pack_byte(1)) with pytest.raises(ValueError): script = P2MultiSig_Output.from_template(pack_byte(1), *public_keys, pack_byte(3))
def test_store__write_encrypted(store_class) -> None: privkey = PrivateKey.from_random() wallet_path = tempfile.mktemp() store = store_class(wallet_path, privkey.public_key.to_hex()) assert not store.is_primed() store.put("number", 10) store._write() assert store.is_primed() # This will raise an assertion if there is not locatible data for the JSON lump. store.read_raw_data() assert store.get("number") == 10 store = store_class(wallet_path, privkey.public_key.to_hex()) assert store.is_primed() store.read_raw_data() encrypted_data = store.get_encrypted_data() print(encrypted_data) raw_data = zlib.decompress(privkey.decrypt_message(encrypted_data)) store.load_data(raw_data) assert store.get("number") == 10
def test_xpubkey_to_address(): privkey = PrivateKey.from_random() public_key = privkey.public_key x_pubkey = 'fd' + public_key.P2PKH_script().to_hex() assert xpubkey_to_address(x_pubkey) == ( x_pubkey, Address.from_string(public_key.to_address().to_string()))
def test_store_is_encrypted_true(store_class) -> None: privkey = PrivateKey.from_random() wallet_path = tempfile.mktemp() db_store = store_class(wallet_path, privkey.public_key.to_hex()) db_store.write() assert db_store.is_encrypted()
def test_hashable(self): p = PrivateKey.from_random().public_key {P2PK_Output(p, Bitcoin)}
def test_eq(self): p = PrivateKey.from_random().public_key assert P2PK_Output(p, Bitcoin) == P2PK_Output(p, Bitcoin) assert P2PK_Output(p, Bitcoin) != p
assert isinstance(address, P2PKH_Address) assert address.to_string() == '16ZbRYV2f1NNuNQ9FDYyUMC2d1cjGS2G3L' def test_to_address_uncompressed(self): pubkey_hex = ( '046d6caac248af96f6afa7f904f550253a0f3ef3f5aa2fe6838a95b216691468e' '2487e6222a6664e079c8edf7518defd562dbeda1e7593dfd7f0be285880a24dab' ) pubkey = PublicKey.from_hex(pubkey_hex) output = P2PK_Output(pubkey, Bitcoin) address = output.to_address() assert isinstance(address, P2PKH_Address) assert address.to_string() == '1G9f5Kdd5A8MeBN8jduUNfcAXUVvtFxVhP' MS_PUBKEYS = [PrivateKey.from_random().public_key for n in range(5)] multisig_scriptsig = ( '004830450221009a8f3f87228213a66525137b59bb9884c5a6fce43128f0eaf81082c50b99c07b022030a2a4' '5a7b75b9d691370afc0e790ad17d971cfccb3da9c236e9aaa316973d0c41483045022100928b6b9b5e0d063f' 'ff02d74a7fcc2fcc2ea5a9a1d4cf4e241302979fe0b976d102203f4aeac2959cf4f91742720c0c77b66c4883' '34d56e45486aecf46599af1f204941' ) p2sh_multisig_scriptsig = ( '004830450221009a8f3f87228213a66525137b59bb9884c5a6fce43128f0eaf81082c50b99c07b022030a2a4' '5a7b75b9d691370afc0e790ad17d971cfccb3da9c236e9aaa316973d0c41483045022100928b6b9b5e0d063f' 'ff02d74a7fcc2fcc2ea5a9a1d4cf4e241302979fe0b976d102203f4aeac2959cf4f91742720c0c77b66c4883' '34d56e45486aecf46599af1f204941475221022812701688bc76ef3610b46c8e97f4b385241d5ed6eab6269b' '8af5f9bfd5a89c2103fa0879c543ac97f34daffdaeed808f3500811aa5070e4a1f7e2daed3dd22ef2052ae' )
assert Ops['OP_CHECKMULTISIGVERIFY'].value == 175 assert Ops['OP_NOP1'].value == 176 assert Ops['OP_CHECKLOCKTIMEVERIFY'].value == 177 assert Ops['OP_NOP2'].value == 177 assert Ops['OP_CHECKSEQUENCEVERIFY'].value == 178 assert Ops['OP_NOP3'].value == 178 assert Ops['OP_NOP4'].value == 179 assert Ops['OP_NOP5'].value == 180 assert Ops['OP_NOP6'].value == 181 assert Ops['OP_NOP7'].value == 182 assert Ops['OP_NOP8'].value == 183 assert Ops['OP_NOP9'].value == 184 assert Ops['OP_NOP10'].value == 185 P2PKH_script = PrivateKey.from_random().public_key.P2PKH_script() class TestScript: def test_construtor(self): assert Script() == b'' def test_len(self): script = b'abcd' assert len(Script(script)) == len(script) def test_len_does_bytes_conversion(self): assert len(P2PKH_script) == 25 def test_bytes(self): script = b'abcd'
import pytest import scryptlib.utils import scryptlib.contract from scryptlib.types import Sig, PubKey, Ripemd160, SigHashPreimage, Bytes import bitcoinx from bitcoinx import SigHash, PrivateKey, P2PKH_Address, TxOutput, Bitcoin, Tx, TxInput, TxInputContext, Script, PublicKey SATS_PER_TOKEN = 1000 input_sats = 100000 sighash_flag = SigHash(SigHash.ANYONE_CAN_PAY | SigHash.ALL | SigHash.FORKID) priv_keys = [] for i in range(0, 5): priv_keys.append(PrivateKey.from_random()) pub_keys = [] for priv_key in priv_keys: pub_keys.append(priv_key.public_key) pkhs = [] for pub_key in pub_keys: pkhs.append(pub_key.hash160()) contract = './test/res/advancedTokenSale.scrypt' compiler_result = scryptlib.utils.compile_contract(contract) desc = compiler_result.to_desc() AdvancedTokenSale = scryptlib.contract.build_contract_class(desc)