def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        self.assertEqual(
            address_to_script('BZ1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KLQZTEW'),
            '0014751e76e8199196d454941c45d1b3a323f1433bd6')
        self.assertEqual(
            address_to_script(
                'bz1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7kp575ck'
            ),
            '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6'
        )
        self.assertEqual(address_to_script('BZ1SW50QWEDYZM'), '6002751e')
        self.assertEqual(
            address_to_script('bz1zw508d6qejxtdg4y5r3zarvaryvxc3xcn'),
            '5210751e76e8199196d454941c45d1b3a323')

        # base58 P2PKH
        self.assertEqual(
            address_to_script('Zf4UBc5AFpLEzJfChuP1D6ANrez4HiWqoh'),
            '76a91428662c67561b95c79d2257d2a93d9d151c977e9188ac')
        self.assertEqual(
            address_to_script('ZmchRnqQ3fXxavAgFgupT2tKDBMue1g9Gv'),
            '76a914704f4b81cadb7bf7e68c08cd3657220f680f863c88ac')

        # base58 P2SH
        self.assertEqual(
            address_to_script('35ZqQJcBQMZ1rsv8aSuJ2wkC7ohUCQMJbT'),
            'a9142a84cf00d47f699ee7bbc1dea5ec1bdecb4ac15487')
        self.assertEqual(
            address_to_script('3PyjzJ3im7f7bcV724GR57edKDqoZvH7Ji'),
            'a914f47c8954e421031ad04ecd8e7752c9479206b9d387')
Exemple #2
0
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        self.assertEqual(
            address_to_script('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4'),
            '0014751e76e8199196d454941c45d1b3a323f1433bd6')
        self.assertEqual(
            address_to_script(
                'bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx'
            ),
            '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6'
        )
        self.assertEqual(address_to_script('BC1SW50QA3JX3S'), '6002751e')
        self.assertEqual(
            address_to_script('bc1zw508d6qejxtdg4y5r3zarvaryvg6kdaj'),
            '5210751e76e8199196d454941c45d1b3a323')

        # base58 P2PKH
        self.assertEqual(
            address_to_script('14gcRovpkCoGkCNBivQBvw7eso7eiNAbxG'),
            '76a91428662c67561b95c79d2257d2a93d9d151c977e9188ac')
        self.assertEqual(
            address_to_script('1BEqfzh4Y3zzLosfGhw1AsqbEKVW6e1qHv'),
            '76a914704f4b81cadb7bf7e68c08cd3657220f680f863c88ac')

        # base58 P2SH
        self.assertEqual(
            address_to_script('35ZqQJcBQMZ1rsv8aSuJ2wkC7ohUCQMJbT'),
            'a9142a84cf00d47f699ee7bbc1dea5ec1bdecb4ac15487')
        self.assertEqual(
            address_to_script('3PyjzJ3im7f7bcV724GR57edKDqoZvH7Ji'),
            'a914f47c8954e421031ad04ecd8e7752c9479206b9d387')
Exemple #3
0
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        self.assertEqual(
            address_to_script('VIPS1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KT9G2VS'),
            '0014751e76e8199196d454941c45d1b3a323f1433bd6')
        self.assertEqual(
            address_to_script(
                'vips1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7kasxad6'
            ),
            '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6'
        )
        self.assertEqual(address_to_script('VIPS1SW50Q09FCH2'), '6002751e')
        self.assertEqual(
            address_to_script('vips1zw508d6qejxtdg4y5r3zarvaryvl872h2'),
            '5210751e76e8199196d454941c45d1b3a323')

        # base58 P2PKH
        self.assertEqual(
            address_to_script('VELqMQnzSqEbzY8FSHiVsiAiw79gU8Azt9'),
            '76a91428662c67561b95c79d2257d2a93d9d151c977e9188ac')
        self.assertEqual(
            address_to_script('VLu4bbZEEgSKb9diz5FK7etfHdXXr8AKXt'),
            '76a914704f4b81cadb7bf7e68c08cd3657220f680f863c88ac')

        # base58 P2SH
        self.assertEqual(
            address_to_script('MBmyiC29MUQSfPC2gKtdrazbSWHvGqJCnU'),
            'a9142a84cf00d47f699ee7bbc1dea5ec1bdecb4ac15487')
        self.assertEqual(
            address_to_script('MWBtJBTgiEWYQ7m17wFktku2dvSFZXqhWZ'),
            'a914f47c8954e421031ad04ecd8e7752c9479206b9d387')
Exemple #4
0
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173, adapted for Feathercoin
        self.assertEqual(
            address_to_script('FC1QMK84YX50TRP37UL4SYLFG3SH4CV5RCVWY9AJUK'),
            '0014dd8f521a8f58c31f73f5813e944617ae1941e18e')
        self.assertEqual(
            address_to_script(
                'fc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k34wt34'
            ),
            '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6'
        )
        self.assertEqual(address_to_script('fc1sw50qvkz623'), '6002751e')
        self.assertEqual(
            address_to_script('fc1zw508d6qejxtdg4y5r3zarvaryvgqhvh8'),
            '5210751e76e8199196d454941c45d1b3a323')

        # base58 P2PKH
        self.assertEqual(
            address_to_script('6hR4DL6rgjHYCGKQ4o4eigvfgrirgGNrsS'),
            '76a91428662c67561b95c79d2257d2a93d9d151c977e9188ac')
        self.assertEqual(
            address_to_script('6oyHTWs6UaVFnspscabTxdec3P6hx8gmo1'),
            '76a914704f4b81cadb7bf7e68c08cd3657220f680f863c88ac')

        # base58 P2SH
        self.assertEqual(
            address_to_script('35ZqQJcBQMZ1rsv8aSuJ2wkC7ohUCQMJbT'),
            'a9142a84cf00d47f699ee7bbc1dea5ec1bdecb4ac15487')
        self.assertEqual(
            address_to_script('3PyjzJ3im7f7bcV724GR57edKDqoZvH7Ji'),
            'a914f47c8954e421031ad04ecd8e7752c9479206b9d387')
Exemple #5
0
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        #self.assertEqual(address_to_script('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4'), '0014751e76e8199196d454941c45d1b3a323f1433bd6')
        # Converted to Namecoin using `contrib/convertBechAddress.py` from Namecoin Core.
        self.assertEqual(address_to_script('NC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KTTKKTK'), '0014751e76e8199196d454941c45d1b3a323f1433bd6')
        #self.assertEqual(address_to_script('bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx'), '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6')
        # Converted to Namecoin using `contrib/convertBechAddress.py` from Namecoin Core.
        self.assertEqual(address_to_script('nc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k0x5ld6'), '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6')
        #self.assertEqual(address_to_script('BC1SW50QA3JX3S'), '6002751e')
        # Converted to Namecoin using `contrib/convertBechAddress.py` from Namecoin Core.
        self.assertEqual(address_to_script('NC1SW50Q8CTT4N'), '6002751e')
        #self.assertEqual(address_to_script('bc1zw508d6qejxtdg4y5r3zarvaryvg6kdaj'), '5210751e76e8199196d454941c45d1b3a323')
        # Converted to Namecoin using `contrib/convertBechAddress.py` from Namecoin Core.
        self.assertEqual(address_to_script('nc1zw508d6qejxtdg4y5r3zarvaryvga4wry'), '5210751e76e8199196d454941c45d1b3a323')

        # base58 P2PKH
        #self.assertEqual(address_to_script('14gcRovpkCoGkCNBivQBvw7eso7eiNAbxG'), '76a91428662c67561b95c79d2257d2a93d9d151c977e9188ac')
        # Converted to Namecoin using `contrib/convertAddress.py` from Namecoin Core.
        self.assertEqual(address_to_script('MzFydTRofatqGjcgzjim9TGZc2WhgadiiY'), '76a91428662c67561b95c79d2257d2a93d9d151c977e9188ac')
        #self.assertEqual(address_to_script('1BEqfzh4Y3zzLosfGhw1AsqbEKVW6e1qHv'), '76a914704f4b81cadb7bf7e68c08cd3657220f680f863c88ac')
        # Converted to Namecoin using `contrib/convertAddress.py` from Namecoin Core.
        self.assertEqual(address_to_script('N6pCseC3TS6YsM8AYXFaPPzVxYtYykqDNn'), '76a914704f4b81cadb7bf7e68c08cd3657220f680f863c88ac')

        # base58 P2SH
        #self.assertEqual(address_to_script('35ZqQJcBQMZ1rsv8aSuJ2wkC7ohUCQMJbT'), 'a9142a84cf00d47f699ee7bbc1dea5ec1bdecb4ac15487')
        # Converted to Namecoin using `contrib/convertAddress.py` from Namecoin Core.
        self.assertEqual(address_to_script('6JGfHAzV5oG2QM2pmoZquwvV9qm1w9yv4A'), 'a9142a84cf00d47f699ee7bbc1dea5ec1bdecb4ac15487')
        #self.assertEqual(address_to_script('3PyjzJ3im7f7bcV724GR57edKDqoZvH7Ji'), 'a914f47c8954e421031ad04ecd8e7752c9479206b9d387')
        # Converted to Namecoin using `contrib/convertAddress.py` from Namecoin Core.
        self.assertEqual(address_to_script('6cgZsAS2SZN895boDQvxx7pvMFuMDwGfzQ'), 'a914f47c8954e421031ad04ecd8e7752c9479206b9d387')
 def parse_output(self, x) -> bytes:
     try:
         address = self.parse_address(x)
         return bfh(bitcoin.address_to_script(address))
     except:
         script = self.parse_script(x)
         return bfh(script)
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        #self.assertEqual(address_to_script('tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7'), '00201863143c14c5166804bd19203356da136c985678cd4d27a1b8c6329604903262')
        #self.assertEqual(address_to_script('tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy'), '0020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433')

        # base58 P2PKH
        self.assertEqual(
            address_to_script('kmNQZ6HERZfon4xeQq4WqneB4YwmGxqW6zy'),
            '76a9146702df3d1073c362f559b72c2785cb6f6b6a90b088ac')
        self.assertEqual(
            address_to_script('kmNSNBewaBfurAQXrmQFZTGodMhkpMqxuXL'),
            '76a914675a995579838aaf671aa1cfebf3795292eb4efe88ac')

        # base58 P2SH
        self.assertEqual(
            address_to_script('k2N3EGSQ3KtmE7foBiARJeFxbKq4Um4Tgos'),
            'a91485b0b7c736c93d01d8c1de5d44d02948aeb3fab487')
        self.assertEqual(
            address_to_script('k2SS4VkJEniW2SSUA8MyqT2f5D9SW3Yqmwt'),
            'a914b5e2a1d17e2ccd33f9585dc96c2152f6da40422d87')
Exemple #8
0
 def parse_output(self, x) -> bytes:
     try:
         address = self.parse_address(x)
         return bfh(bitcoin.address_to_script(address))
     except Exception:
         pass
     try:
         script = self.parse_script(x)
         return bfh(script)
     except Exception:
         pass
     raise Exception("Invalid address or script.")
Exemple #9
0
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        self.assertEqual(
            address_to_script(
                'tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7'
            ),
            '00201863143c14c5166804bd19203356da136c985678cd4d27a1b8c6329604903262'
        )
        self.assertEqual(
            address_to_script(
                'tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy'
            ),
            '0020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433'
        )

        # base58 P2PKH
        self.assertEqual(
            address_to_script('mutXcGt1CJdkRvXuN2xoz2quAAQYQ59bRX'),
            '76a9149da64e300c5e4eb4aaffc9c2fd465348d5618ad488ac')
        self.assertEqual(
            address_to_script('miqtaRTkU3U8rzwKbEHx3g8FSz8GJtPS3K'),
            '76a914247d2d5b6334bdfa2038e85b20fc15264f8e5d2788ac')

        # base58 P2SH
        self.assertEqual(
            address_to_script('2N3LSvr3hv5EVdfcrxg2Yzecf3SRvqyBE4p'),
            'a9146eae23d8c4a941316017946fc761a7a6c85561fb87')
        self.assertEqual(
            address_to_script('2NE4ZdmxFmUgwu5wtfoN2gVniyMgRDYq1kk'),
            'a914e4567743d378957cd2ee7072da74b1203c1a7a0b87')
Exemple #10
0
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        self.assertEqual(
            address_to_script(
                'tvips1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qezxj4n'
            ),
            '00201863143c14c5166804bd19203356da136c985678cd4d27a1b8c6329604903262'
        )
        self.assertEqual(
            address_to_script(
                'tvips1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvses45wu5f'
            ),
            '0020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433'
        )

        # base58 P2PKH
        self.assertEqual(
            address_to_script('vMzCHZ9476N9c2TisqxWAfZRNkpMPbrCDZ'),
            '76a9149da64e300c5e4eb4aaffc9c2fd465348d5618ad488ac')
        self.assertEqual(
            address_to_script('vAwZFhioNqCY36s973HeEJqmfaY5DVKgtH'),
            '76a914247d2d5b6334bdfa2038e85b20fc15264f8e5d2788ac')

        # base58 P2SH
        self.assertEqual(
            address_to_script('mSGaFWQvrZP9JPdQrbP9HsCzv4Goe1JU4t'),
            'a9146eae23d8c4a941316017946fc761a7a6c85561fb87')
        self.assertEqual(
            address_to_script('mczgxSKUhxqbZoxSZiicyiP4qyXJ4bbDKt'),
            'a914e4567743d378957cd2ee7072da74b1203c1a7a0b87')
Exemple #11
0
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        self.assertEqual(address_to_script('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4'), '0014751e76e8199196d454941c45d1b3a323f1433bd6')
        self.assertEqual(address_to_script('bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx'), '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6')
        self.assertEqual(address_to_script('BC1SW50QA3JX3S'), '6002751e')
        self.assertEqual(address_to_script('bc1zw508d6qejxtdg4y5r3zarvaryvg6kdaj'), '5210751e76e8199196d454941c45d1b3a323')

        # base58 P2PKH
        self.assertEqual(address_to_script('14gcRovpkCoGkCNBivQBvw7eso7eiNAbxG'), '76a91428662c67561b95c79d2257d2a93d9d151c977e9188ac')
        self.assertEqual(address_to_script('1BEqfzh4Y3zzLosfGhw1AsqbEKVW6e1qHv'), '76a914704f4b81cadb7bf7e68c08cd3657220f680f863c88ac')

        # base58 P2SH
        self.assertEqual(address_to_script('35ZqQJcBQMZ1rsv8aSuJ2wkC7ohUCQMJbT'), 'a9142a84cf00d47f699ee7bbc1dea5ec1bdecb4ac15487')
        self.assertEqual(address_to_script('3PyjzJ3im7f7bcV724GR57edKDqoZvH7Ji'), 'a914f47c8954e421031ad04ecd8e7752c9479206b9d387')
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173 TODO
        self.assertEqual(address_to_script('MONA1Q4KPN6PSTHGD5UR894AUHJJ2G02WLGMP8KE08NE'), '0014ad833d060bba1b4e0ce5af797949487a9df46c27')
        self.assertEqual(address_to_script('mona1qp8f842ywwr9h5rdxyzggex7q3trvvvaarfssxccju52rj6htfzfsqr79j2'), '002009d27aa88e70cb7a0da620908c9bc08ac6c633bd1a61036312e514396aeb4893')
        self.assertEqual(address_to_script('mona1sw50qpvnxy8'), '6002751e')
        self.assertEqual(address_to_script('mona1zw508d6qejxtdg4y5r3zarvaryvhm3vz7'), '5210751e76e8199196d454941c45d1b3a323')

        # base58 P2PKH
        self.assertEqual(address_to_script('MFMy9FwJsV6HiN5eZDqDETw4pw52q3UGrb'), '76a91451dadacc7021440cbe4ca148a5db563b329b4c0388ac')
        self.assertEqual(address_to_script('MVELZC3ks1Xk59kvKWuSN3mpByNwaxeaBJ'), '76a914e9fb298e72e29ebc2b89864a5e4ae10e0b84726088ac')

        # base58 P2SH
        self.assertEqual(address_to_script('PHjTKtgYLTJ9D2Bzw2f6xBB41KBm2HeGfg'), 'a9146449f568c9cd2378138f2636e1567112a184a9e887')
        self.assertEqual(address_to_script('3AqJ6Tn8qS8LKMDfi41AhuZiY6JbR6mt6E'), 'a9146449f568c9cd2378138f2636e1567112a184a9e887')
Exemple #13
0
 def pin_changed(s):
     if len(s) < len(self.idxs):
         i = self.idxs[len(s)]
         addr = self.txdata['address']
         if not constants.net.TESTNET:
             text = addr[:i] + '<u><b>' + addr[i:i+1] + '</u></b>' + addr[i+1:]
         else:
             # pin needs to be created from mainnet address
             addr_mainnet = bitcoin.script_to_address(bitcoin.address_to_script(addr), net=constants.BitcoinMainnet)
             addr_mainnet = addr_mainnet[:i] + '<u><b>' + addr_mainnet[i:i+1] + '</u></b>' + addr_mainnet[i+1:]
             text = str(addr) + '\n' + str(addr_mainnet)
         self.addrtext.setHtml(str(text))
     else:
         self.addrtext.setHtml(_("Press Enter"))
Exemple #14
0
 def pin_changed(s):
     if len(s) < len(self.idxs):
         i = self.idxs[len(s)]
         addr = self.txdata['address']
         if not constants.net.TESTNET:
             text = addr[:i] + '<u><b>' + addr[i:i+1] + '</u></b>' + addr[i+1:]
         else:
             # pin needs to be created from mainnet address
             addr_mainnet = bitcoin.script_to_address(bitcoin.address_to_script(addr), net=constants.BitcoinMainnet)
             addr_mainnet = addr_mainnet[:i] + '<u><b>' + addr_mainnet[i:i+1] + '</u></b>' + addr_mainnet[i+1:]
             text = str(addr) + '\n' + str(addr_mainnet)
         self.addrtext.setHtml(str(text))
     else:
         self.addrtext.setHtml(_("Press Enter"))
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        #self.assertEqual(address_to_script('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4'), '0014751e76e8199196d454941c45d1b3a323f1433bd6')
        #self.assertEqual(address_to_script('bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx'), '5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6')
        #self.assertEqual(address_to_script('BC1SW50QA3JX3S'), '6002751e')
        #self.assertEqual(address_to_script('bc1zw508d6qejxtdg4y5r3zarvaryvg6kdaj'), '5210751e76e8199196d454941c45d1b3a323')

        # base58 P2PKH
        self.assertEqual(
            address_to_script('k14quytvKGFUZetaPEWj69o9HqfiNco5VJj'),
            '76a9144cdb71dda10f2cb51eaa5573c78aad5b30e5028088ac')
        self.assertEqual(
            address_to_script('k1DJQZaHmRK5dCEK4ss8g6an4sEFennoFrS'),
            '76a914a99f1fbed517d4609cac8981b8d28b20a000465b88ac')

        # base58 P2SH
        self.assertEqual(
            address_to_script('k3BZhkHwTRFfEQDzsJJTNcMy9td6kko9Cba'),
            'a9148f020c44f8acb84a8ec69191f56031d97d85f94287')
        self.assertEqual(
            address_to_script('k38dCQVTgNuFr4Pnca3JsDcXGmHk5rf5Lna'),
            'a9146ec2d76982020c909a0c64d149fef0e8e3a0a4c187')
Exemple #16
0
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        self.assertEqual(address_to_script('tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7'), '00201863143c14c5166804bd19203356da136c985678cd4d27a1b8c6329604903262')
        self.assertEqual(address_to_script('tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy'), '0020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433')

        # base58 P2PKH
        self.assertEqual(address_to_script('mutXcGt1CJdkRvXuN2xoz2quAAQYQ59bRX'), '76a9149da64e300c5e4eb4aaffc9c2fd465348d5618ad488ac')
        self.assertEqual(address_to_script('miqtaRTkU3U8rzwKbEHx3g8FSz8GJtPS3K'), '76a914247d2d5b6334bdfa2038e85b20fc15264f8e5d2788ac')

        # base58 P2SH
        self.assertEqual(address_to_script('2N3LSvr3hv5EVdfcrxg2Yzecf3SRvqyBE4p'), 'a9146eae23d8c4a941316017946fc761a7a6c85561fb87')
        self.assertEqual(address_to_script('2NE4ZdmxFmUgwu5wtfoN2gVniyMgRDYq1kk'), 'a914e4567743d378957cd2ee7072da74b1203c1a7a0b87')
    def test_address_to_script(self):
        # bech32 native segwit
        # test vectors from BIP-0173
        self.assertEqual(address_to_script('tmona1qfj8lu0rafk2mpvk7jj62q8eerjpex3xlcadtupkrkhh5a73htmhs68e55m'), '00204c8ffe3c7d4d95b0b2de94b4a01f391c839344dfc75abe06c3b5ef4efa375eef')
        self.assertEqual(address_to_script('tmona1q0p29rfu7ap3duzqj5t9e0jzgqzwdtd97pa5rhuz4r38t5a6dknyqxmyyaz'), '0020785451a79ee862de0812a2cb97c848009cd5b4be0f683bf0551c4eba774db4c8')

        # base58 P2PKH
        self.assertEqual(address_to_script('mptvgSbAs4iwxQ7JQZdEN6Urpt3dtjbawd'), '76a91466e0ef980c8ff8129e8d0f716b2ce1df2f97bbbf88ac')
        self.assertEqual(address_to_script('mrodaP7iH3B9ZXSptfGQXLKE3hfdjMdf7y'), '76a9147bd0d45ec256701811ebb38cfd2ba3d17576bf3e88ac')

        # base58 P2SH
        self.assertEqual(address_to_script('pJwLxfRRUhAaYJsKzKCk9cATAn8Do2SS7L'), 'a91492e825fa92f4aa873c6caf4b20f6c7e949b456a987')
        self.assertEqual(address_to_script('pHNnBm6ECsh5QsUyXMzdoAXV8qV68wj2M4'), 'a91481c75a711f23443b44d70b10ddf856e39a6b254d87')
Exemple #18
0
    def test_close_upfront_shutdown_script(self):
        alice_channel, bob_channel = create_test_channels()

        # create upfront shutdown script for bob, alice doesn't use upfront
        # shutdown script
        bob_uss_pub = lnutil.privkey_to_pubkey(os.urandom(32))
        bob_uss_addr = bitcoin.pubkey_to_address('p2wpkh', bh2u(bob_uss_pub))
        bob_uss = bfh(bitcoin.address_to_script(bob_uss_addr))

        # bob commits to close to bob_uss
        alice_channel.config[HTLCOwner.REMOTE].upfront_shutdown_script = bob_uss
        # but bob closes to some receiving address, which we achieve by not
        # setting the upfront shutdown script in the channel config
        bob_channel.config[HTLCOwner.LOCAL].upfront_shutdown_script = b''

        p1, p2, w1, w2, q1, q2 = self.prepare_peers(alice_channel, bob_channel)
        w1.network.config.set_key('dynamic_fees', False)
        w2.network.config.set_key('dynamic_fees', False)
        w1.network.config.set_key('fee_per_kb', 5000)
        w2.network.config.set_key('fee_per_kb', 1000)

        async def test():
            async def close():
                await asyncio.wait_for(p1.initialized, 1)
                await asyncio.wait_for(p2.initialized, 1)
                # bob closes channel with different shutdown script
                await p1.close_channel(alice_channel.channel_id)
                gath.cancel()

            async def main_loop(peer):
                    async with peer.taskgroup as group:
                        await group.spawn(peer._message_loop())
                        await group.spawn(peer.htlc_switch())

            coros = [close(), main_loop(p1), main_loop(p2)]
            gath = asyncio.gather(*coros)
            await gath

        with self.assertRaises(UpfrontShutdownScriptViolation):
            run(test())

        # bob sends the same upfront_shutdown_script has he announced
        alice_channel.config[HTLCOwner.REMOTE].upfront_shutdown_script = bob_uss
        bob_channel.config[HTLCOwner.LOCAL].upfront_shutdown_script = bob_uss

        p1, p2, w1, w2, q1, q2 = self.prepare_peers(alice_channel, bob_channel)
        w1.network.config.set_key('dynamic_fees', False)
        w2.network.config.set_key('dynamic_fees', False)
        w1.network.config.set_key('fee_per_kb', 5000)
        w2.network.config.set_key('fee_per_kb', 1000)

        async def test():
            async def close():
                await asyncio.wait_for(p1.initialized, 1)
                await asyncio.wait_for(p2.initialized, 1)
                await p1.close_channel(alice_channel.channel_id)
                gath.cancel()

            async def main_loop(peer):
                async with peer.taskgroup as group:
                    await group.spawn(peer._message_loop())
                    await group.spawn(peer.htlc_switch())

            coros = [close(), main_loop(p1), main_loop(p2)]
            gath = asyncio.gather(*coros)
            await gath
        with self.assertRaises(concurrent.futures.CancelledError):
            run(test())
Exemple #19
0
from electrum.transaction import Transaction
from electrum import paymentrequest
from electrum import paymentrequest_pb2 as pb2
from electrum.bitcoin import address_to_script

chain_file = 'mychain.pem'
cert_file = 'mycert.pem'
amount = 1000000
address = "18U5kpCAU4s8weFF8Ps5n8HAfpdUjDVF64"
memo = "blah"
out_file = "payreq"

with open(chain_file, 'r') as f:
    chain = tlslite.X509CertChain()
    chain.parsePemList(f.read())

certificates = pb2.X509Certificates()
certificates.certificate.extend(map(lambda x: str(x.bytes), chain.x509List))

with open(cert_file, 'r') as f:
    rsakey = tlslite.utils.python_rsakey.Python_RSAKey.parsePEM(f.read())

script = address_to_script(address)

pr_string = paymentrequest.make_payment_request(amount, script, memo, rsakey)

with open(out_file, 'wb') as f:
    f.write(pr_string)

print("Payment request was written to file '%s'" % out_file)