Exemplo n.º 1
0
def print_p2pkh(tprv, path, start=0, end=2):
    root = tbtc.parse(tprv)
    for i in range(start, 1 + end):
        npath = path + f"/{i}"
        node = root.subkey_for_path(npath)
        addr = node.address()
        print(npath, addr)
Exemplo n.º 2
0
def print_segwit(tprv, path, start=0, end=2):
    root = tbtc.parse(tprv)
    for i in range(start, 1 + end):
        npath = path + f"/{i}"
        node = root.subkey_for_path(npath)
        hash = node.hash160(is_compressed=True)
        addr = tbtc.address.for_p2pkh_wit(hash)
        print(npath, addr)
Exemplo n.º 3
0
def print_p2tr(tprv, path, start=0, end=2):
    root = tbtc.parse(tprv)
    for i in range(start, 1 + end):
        npath = path + f"/{i}"
        node = root.subkey_for_path(npath)
        pk = node.sec()
        p2tr = taproot_construct(pk[1:])
        words = [1] + convertbits((list(p2tr.output_pubkey)), 8, 5)
        addr = bech32_encode(Encoding.BECH32M, 'tb', words)
        print(npath, addr)
Exemplo n.º 4
0
    def test_repr(self):
        key = XTN.keys.private(secret_exponent=273)

        address = key.address()
        pub_k = XTN.parse(address)
        self.assertEqual(repr(pub_k),  '<mhDVBkZBWLtJkpbszdjZRkH1o5RZxMwxca>')

        wif = key.wif()
        priv_k = XTN.parse.wif(wif)
        self.assertEqual(
            repr(priv_k),
            'private_for <XTNSEC:0264e1b1969f9102977691a40431b0b672055dcf31163897d996434420e6c95dc9>')
Exemplo n.º 5
0
 def test_parse_bip32_prv_xtn(self):
     key = XTN.parse(
         "tprv8ZgxMBicQKsPdpQD2swL99YVLB6W2GDqNVcCSfAZ9zMXvh6DYj5iJMZmUVrF66"
         "x7uXBDJSunexZjAtFLtd89iLTWGCEpBdBxs7GTBnEksxV")
     self.assertEqual(
         key.secret_exponent(),
         0x91880b0e3017ba586b735fe7d04f1790f3c46b818a2151fb2def5f14dd2fd9c3)
     self.assertEqual(key.address(), "mp1nuBzKGgv4ZtS5x8YywbCLD5CnVfT7hV")
     self.assertEqual(key.address(is_compressed=False),
                      "n2ThiotfoCrcRofQcFbCrVX2PC89s2KUjh")
     subkey = key.subkey_for_path("0")
     self.assertEqual(subkey.address(),
                      "n31129TfTCBky6N9RyitnGTf3t4LYwCV6A")
Exemplo n.º 6
0
    def test_repr(self):
        key = XTN.keys.private(secret_exponent=273)

        address = key.address()
        pub_k = XTN.parse(address)
        self.assertEqual(repr(pub_k), '<mhDVBkZBWLtJkpbszdjZRkH1o5RZxMwxca>')

        wif = key.wif()
        priv_k = XTN.parse.wif(wif)
        self.assertEqual(
            repr(priv_k),
            'private_for <XTNSEC:0264e1b1969f9102977691a40431b0b672055dcf31163897d996434420e6c95dc9>'
        )
Exemplo n.º 7
0
def main():
    wallet = {}
    db = Database(expandvars(filepath))
    for row in db['main'].rows:
        key = fmt_key(row['key'])
        value = fmt_key(row['value'])

        ktxt = key.split(',')[0].strip()
        kbin = key.split(',')[-1].strip()
        data = {kbin: value}
        if kbin != ktxt:
            data = {ktxt: data}
        if wallet.get(ktxt, False):
            wallet[ktxt].update(data[ktxt])
        else:
            wallet.update(data)
    # print(dumps(wallet, indent=2))

    assert wallet["walletdescriptor"] and wallet["walletdescriptorkey"]
    for dkey in wallet["walletdescriptor"].keys():
        for kkey in wallet["walletdescriptorkey"].keys():
            if kkey.startswith(dkey):
                print()
                desc = wallet["walletdescriptor"][dkey].split('#')[0]
                der = wallet["walletdescriptorkey"][kkey]
                assert der.startswith('d63081d30201010420')
                m = search('\(([A-z0-9]*)/', desc)
                pub = m.group(1)
                path = '/'.join(desc.split('/')[1:-1])
                sec = bytes.fromhex('00') + bytes.fromhex(der)[9:][:32]
                tpub = a2b_hashed_base58(pub)
                blob = tpub[4:-33] + sec
                prv = tbtc.bip32_as_string(blob, as_private=True)
                hwif = tbtc.parse(prv).hwif()
                assert hwif == pub
                print(descsum_create(desc))
                desc = desc.replace(pub, prv)
                print(descsum_create(desc))
                if desc.startswith("pkh(tprv"):
                    print_p2pkh(prv, path)
                elif desc.startswith("sh(wpkh(tprv"):
                    print_p2sh_segwit(prv, path)
                if desc.startswith("wpkh(tprv"):
                    print_segwit(prv, path)
                if desc.startswith("tr(tprv"):
                    print_p2tr(prv, path)