コード例 #1
0
    def test_from_merkle_hvc(self):
        hashes = [
            u'0511ad21ba69ece737568f72f925b068807aedb0f329aba76d8c9ccffd68add9',
            u'fbd125fba1d3dcd0852abfefbb21a78b0fbf3627ede4a0c7180f023564bc047c',
            u'57930b0987f5974b6637ba33eacf1a8c659ada1ef24a199003b39a2879ad2a13',
            u'56183660728d5890468f96b7e0c4c7b69ec370557375700cdd8ec2bbf4f774f7',
        ]
        deserial = [unhexlify(hsh)[::-1] for hsh in hashes]
        fake_coinbase = Transaction(coin='HVC')
        fake_coinbase._hash = deserial[0]
        branch = merklebranch(deserial[1:], hashes=True, hash_func=hvc_hash)

        self.assertEquals(
            "bf97c8ac14a0c115598e2d06f4522b332415a568a0f16330d8f8317534829160",
            hexlify(
                merkleroot(deserial, hashes=True, be=True,
                           hash_func=hvc_hash)[0]).decode('ascii'))

        self.assertEquals(
            "bf97c8ac14a0c115598e2d06f4522b332415a568a0f16330d8f8317534829160",
            hexlify(
                from_merklebranch(branch,
                                  fake_coinbase,
                                  True,
                                  hash_func=hvc_hash)))
コード例 #2
0
def merkleroot_fuzz(args):
    """ Tests the merkleroot and merklebranch functions by getting a block
    from a bitcoind server and recalculating the merkle root from the given
    transaction hashes. Checks against bitcoind's merkleroot listed. """
    conn = AuthServiceProxy("http://{0}:{1}@{2}:{3}/".format(args.username,
                                                             args.password,
                                                             args.address,
                                                             args.port))
    block = conn.getblock("7e22ccbce8b28364f80c305f63b1307f0f7f90364bf983b04bc3a3fe73916f1a")
    for hsh in block['tx']:
        print hsh
        try:
            pprint(conn.gettransaction(hsh))
        except Exception as e:
            print e.error
    pprint(block)
    exit(0)
    branch_failure = 0
    root_failure = 0
    iters = 0
    fail = []
    blocks = conn.getblockcount()
    try:
        for i in range(30000, blocks):
            block = conn.getblock(conn.getblockhash(i))
            deserial = [unhexlify(hsh)[::-1] for hsh in block['tx']]
            # compute the merkle root to confirm
            root = hexlify(merkleroot(deserial, hashes=True, be=False)[0]).decode('ascii')
            # now compute the merkle root from a branch by pretending the first
            # transaction was a coinbase
            if len(block['tx']) > 1:
                merkle = deserial[0]
                for hsh in merklebranch(deserial[1:], hashes=True, be=True):
                    merkle = sha256(sha256(merkle + hsh).digest()).digest()
                merkle = hexlify(merkle[::-1]).decode('ascii')

                if merkle != block['merkleroot']:
                    branch_failure += 1
                    print("FAIL BRANCH\n")
                    fail.append(block)

            print("COMP: " + block['merkleroot'] + " " + str(len(block['tx'])))
            if root != block['merkleroot']:
                root_failure += 1
                print("FAIL ROOT\n")
                fail.append(block)

            iters += 1
            sleep(args.sleep)
            exit(0)
    finally:
        for f in fail:
            print(f)
        print()
        print("Branch Failed: %s" % branch_failure)
        print("Root Failed: %s" % root_failure)
        print("Iterations: %s" % iters)
コード例 #3
0
ファイル: unit_tests.py プロジェクト: sbwdlihao/cryptokit
    def test_from_merkle_mls(self):
        hashes = [
            u'044af3d25dd487c982e85ff45c40d41561bcdc3477174862460db9583143beaa',
            u'4e6c02a0ab2ba51e9da9c10556b293a708884030b4145f5fa5357372c71a836f',
            ]
        deserial = [unhexlify(hsh)[::-1] for hsh in hashes]
        fake_coinbase = Transaction(coin='HVC')
        fake_coinbase._hash = deserial[0]
        branch = merklebranch(deserial[1:], hashes=True, hash_func=hvc_hash)

        self.assertEquals(
            "dcef589f3e0b3ce034709b16d59543aae3ea19897ccea87778072537aa7ce8a2",
            hexlify(merkleroot(deserial, hashes=True, be=True, hash_func=hvc_hash)[0]).decode('ascii'))

        self.assertEquals(
            "dcef589f3e0b3ce034709b16d59543aae3ea19897ccea87778072537aa7ce8a2",
            hexlify(from_merklebranch(branch, fake_coinbase, True, hash_func=hvc_hash)))
コード例 #4
0
ファイル: unit_tests.py プロジェクト: sbwdlihao/cryptokit
    def test_from_merkle_hvc(self):
        hashes = [
            u'0511ad21ba69ece737568f72f925b068807aedb0f329aba76d8c9ccffd68add9',
            u'fbd125fba1d3dcd0852abfefbb21a78b0fbf3627ede4a0c7180f023564bc047c',
            u'57930b0987f5974b6637ba33eacf1a8c659ada1ef24a199003b39a2879ad2a13',
            u'56183660728d5890468f96b7e0c4c7b69ec370557375700cdd8ec2bbf4f774f7',
            ]
        deserial = [unhexlify(hsh)[::-1] for hsh in hashes]
        fake_coinbase = Transaction(coin='HVC')
        fake_coinbase._hash = deserial[0]
        branch = merklebranch(deserial[1:], hashes=True, hash_func=hvc_hash)

        self.assertEquals(
            "bf97c8ac14a0c115598e2d06f4522b332415a568a0f16330d8f8317534829160",
            hexlify(merkleroot(deserial, hashes=True, be=True, hash_func=hvc_hash)[0]).decode('ascii'))

        self.assertEquals(
            "bf97c8ac14a0c115598e2d06f4522b332415a568a0f16330d8f8317534829160",
            hexlify(from_merklebranch(branch, fake_coinbase, True, hash_func=hvc_hash)))
コード例 #5
0
ファイル: unit_tests.py プロジェクト: sbwdlihao/cryptokit
    def test_from_merkle(self):
        hashes = [
            u'0549ac6ce7c0256174f29aec802d59ad5dcd49da0160f55b793bf056b0ab87d3',
            u'e010c10d8b9a7ab835498f160ed1ab585d4a5d30f88d431988254ec9120371cf',
            u'29057d0ebb70519850697a2004909ce7fe986162fb31dbd3817db378ab0f4dbb',
            u'b225985430eda525cfb40f0fc390ab6138b037b3418e1f32abb386e028352c65',
            u'20bae70c4a10dabd6a9c34a2a81f05bfeede917dcf0c9cacbb40278f3f8fb36a',
            ]
        deserial = [unhexlify(hsh)[::-1] for hsh in hashes]
        fake_coinbase = Transaction()
        fake_coinbase._hash = deserial[0]
        branch = merklebranch(deserial[1:], hashes=True)

        self.assertEquals(
            "652a365df3f5498cc5e9c578f20df9607a739c659711efa35cdc74f247410dc5",
            hexlify(merkleroot(deserial, hashes=True, be=True)[0]).decode('ascii'))

        self.assertEquals(
            "652a365df3f5498cc5e9c578f20df9607a739c659711efa35cdc74f247410dc5",
            hexlify(from_merklebranch(branch, fake_coinbase, True)))
コード例 #6
0
    def test_from_merkle(self):
        hashes = [
            u'0549ac6ce7c0256174f29aec802d59ad5dcd49da0160f55b793bf056b0ab87d3',
            u'e010c10d8b9a7ab835498f160ed1ab585d4a5d30f88d431988254ec9120371cf',
            u'29057d0ebb70519850697a2004909ce7fe986162fb31dbd3817db378ab0f4dbb',
            u'b225985430eda525cfb40f0fc390ab6138b037b3418e1f32abb386e028352c65',
            u'20bae70c4a10dabd6a9c34a2a81f05bfeede917dcf0c9cacbb40278f3f8fb36a',
        ]
        deserial = [unhexlify(hsh)[::-1] for hsh in hashes]
        fake_coinbase = Transaction()
        fake_coinbase._hash = deserial[0]
        branch = merklebranch(deserial[1:], hashes=True)

        self.assertEquals(
            "652a365df3f5498cc5e9c578f20df9607a739c659711efa35cdc74f247410dc5",
            hexlify(merkleroot(deserial, hashes=True,
                               be=True)[0]).decode('ascii'))

        self.assertEquals(
            "652a365df3f5498cc5e9c578f20df9607a739c659711efa35cdc74f247410dc5",
            hexlify(from_merklebranch(branch, fake_coinbase, True)))
コード例 #7
0
    def test_from_merkle_mls(self):
        hashes = [
            u'044af3d25dd487c982e85ff45c40d41561bcdc3477174862460db9583143beaa',
            u'4e6c02a0ab2ba51e9da9c10556b293a708884030b4145f5fa5357372c71a836f',
        ]
        deserial = [unhexlify(hsh)[::-1] for hsh in hashes]
        fake_coinbase = Transaction(coin='HVC')
        fake_coinbase._hash = deserial[0]
        branch = merklebranch(deserial[1:], hashes=True, hash_func=hvc_hash)

        self.assertEquals(
            "dcef589f3e0b3ce034709b16d59543aae3ea19897ccea87778072537aa7ce8a2",
            hexlify(
                merkleroot(deserial, hashes=True, be=True,
                           hash_func=hvc_hash)[0]).decode('ascii'))

        self.assertEquals(
            "dcef589f3e0b3ce034709b16d59543aae3ea19897ccea87778072537aa7ce8a2",
            hexlify(
                from_merklebranch(branch,
                                  fake_coinbase,
                                  True,
                                  hash_func=hvc_hash)))
コード例 #8
0
ファイル: unit_tests.py プロジェクト: ericecook/cryptokit
    def test_from_merkle(self):
        hashes = [
            u'031b96acd2c05833758460d46466be1086361cd9c2844f26538e0bf9afa19841',
            u'b20c1a5e2b69bac036596e3303fda56221f7a0890898512c06755399d63583c9',
            u'49ec27da3cc56167b01118461d22297e56654ab680d3ff5842263e0e35cff209',
            u'7cee60dcb944a00c2e1dda02774fdbe91dd4e920e12053f9b7b8d1e5fb539991',
            u'650a54d0b53cc89be342a3883b96462bcdb0054e6ec2c29c6fe81d08c0c2b546',
            u'10d44ef68e5f7929e2a79c42a83d5c4155fcf82da0901d3bdea436ba1da21cac',
            u'2a5c3ede2786638db6eb52a6229a828f0e7de3a33e1091d5caa1048592e05133',
            u'aff21bcae129d57dc37aa8c75d41652e5d7bd8a58bfd2195ad4e3e129b856e12',
            u'94ed6c0089a259b0fd593ff26a5055157179cc0679ae4f16f25c030b5a64b441',
            u'3effb59479c79f1cbe79e2bcb5825c3ec4b1c9fd2011ac121b1369d38234c4cc',
            u'98db3cccb6e2c6fd69d87693def5df9fc0720f7298fa811a523d7dfe42b5ae8f',
            u'3663378ea537dced269957442d17aa5452060c8b04a9b1b80613e496b8999a65',
            u'2ee24381fb4f3e52d0aabc1686096efbb1d5a0b63f0c7451f697d31fec34ac23',
            u'329439f7481c3efaff5e82936f650c063a797265f3b0941e5d20b5d0df930954',
            u'3da1168feef4a45c19cfac6cbe104927954a459a2010a0d3a5cc667087c5bf7c',
            u'c33e8ec70c0fee9e3794e91100987c22e7e1d96c32be10c93eb1e41ae2041136',
            u'80a39c4002c89f037f2bfdf9377027e8af0e302a709abc83a0312f541b37a5b8',
            u'3f979f56f041eb972b73cee4b992262d6c5dcf540bbb7804455c4c407fc6facf',
            u'11c7f9d16c7ca6ad5afac4308dcacdf8fd83aad23581d3a5a11311845465defa',
            u'9a9e3ed8aa8e72f8cf438e00f0d441e3ff7efc3ea5f4d8e8c199f142f46bd24d',
            u'1eb8a910da4c04f165fc222edaa840d1cd9ff4df4ecadbeb71fde0292b5dda44',
            u'95a9d16ce095f35da8c193afb411ae1dd0c4c6b9ea29b54b30b44bd7619b0f93',
            u'16097a77cf25ccb91a1b49f76869c288dc0f41535d38bef3ba5ab9f509beadaf',
            u'a847e20fb6de61346d2066dbaaf5e180355b64fbeac366a4c6c3a273d87ad6d2',
            u'c03678582368d04386a7d1dd568784ab6f16e7f9d99052b740e67103f77cf7d9',
            u'd3c0efa5b704ac115ce5e9bd6e60179e601a64711cb963e602daff93c94ab7eb',
            u'ea1355acd68536b8694cd143d7ca0a79caf6fde35c45178868ea38062ceb06f7',
            u'63de6020f5b7f80e446551cda8976e394ba834a8e1e083df32f440cba4cfa549',
            u'c6993904f9ad9fd4ba3fad6f1c94aba2f2c01ff889b5089bde976940554cde7a',
            u'8fafd793e9384fe5c88322ea47d01329f3b7f10c57e617088fd8b08bbe3f2919',
            u'2fc314299a442e27e53afcb4c511f8843cd81a29f363b18120db55eddc75b115',
            u'07cbb85877cb6c4e8dc137803f02667553031798bbe85709aaaaa7abc7d01cf9',
            u'75ecf3a3cf703c1909ec454e3059daff5c445aab8ea9e3b2f42fdf328124d5fb',
            u'd22b413f85483218c1225d4a2f5d5285b19095251445f2093370d447c8858568',
            u'ca555b2828aa24fe71a60c0b1042d9bf4827c9bdf2d791c3e2206f6b236f8b2c',
            u'e139729ba444a99d192ebf45b229f901e8ea29fb198143378467c2567fad8a38',
            u'8b8a08193e8675943f9f65dec0acffac7a648fedd90b80419a5d347d83999681',
            u'a9ffe21ec4c6a9f68fd48c753965896684fd03a5191996921d17b3543a08d69e',
            u'571ec571305ba5243a68b297c16ecb71add209ce4fa672c1ffdc90e969afd207',
            u'db37d10ed2449c7e223a3ce1346ed66a07b733fc0cdb8f9a27552b29dc61076c',
            u'bd3378261297648c09345fe7702a4028b2c56f853086eaea5e03cda2d1d6573e',
            u'71d0597baa6b673a1bac8daf5c9d2447bd64fba799449c5c8ec245b5d681cf5f',
            u'68d7ca294bbfe075f7dcc521db418fcb822bc86caaa96219d2e135258676aabd',
            u'dfef23ff7a3f21a946b2726ee88ed81e110be7152885d9a26996e7ba6b219e23',
            u'0e7ae7690568de29d763bc2e51f28e6767b431ffc83e223187111872a48ba598',
            u'd88a17b6325671243edfa315889be93828975c8a89ba2fea3f9e1754c874af3a',
            u'b01a28e8dd891aa6915ce5b2be55133b7177eec60cd97861a8aae93f4d4a79b0',
            u'691a7c91dd49578e363c2aa72c54248bb9e8389ca98c896950781390877c3a72',
            u'b9db62c767249d58ec70c18250482f0cd276d085ac4f7d07af095218cbc31448',
            u'c7b98e339ac1e47fcabf6c403974df3ed95c66134e867b350d835f64b7c24767',
            u'5839cb48d43dbbfa3aedded2a4936b2555325a7333e15cdbe4441350fdedc9ea',
            u'6b83bf5a2189cba5cf0e575b7d48268c4fc0ba96ca72043eceb0a20282b0d3f0',
            u'5347aa403cee27080fce61de817f6ea4f6521f2372756b7e3f798e37791f3a8b',
            u'2c9cce8b51f7e4fa2999eb9b7edd947dc085ffde88bbbd28df5ae0ccd1da1885',
            u'1121858dab0210eb61bee7e1cad801c2d91f81c1dce7db1791da44137ae0dd4c',
            u'8b4f50d0d80b707374d2c00a9278357edc040039d6987673df1722140201df05',
            u'b08f1f3c9fd02fa6d913027da36252885645c055099c0ca469e58c50806f337a',
            u'611a221b0682c6637cc540850e765cd3934719a224b60978a2592e48bc8dc5c2',
            u'c454503fdb63dce12b5be7762f22a2a57f3ec98eead60b85d22296a036bcbb56',
            u'5fee11f3e4459e95dbaaccd4e94c1ab682cbdaa20c2c8f59bccb429c2bc78ab1',
            u'09da229c7f1293acf84be8f878b92a588e5453f0245348f37bdc4d6f5a387d47',
            u'ed673ca00a18cde535fc81979e837098c73cdeee9c0ba19b58e4aeb81b165e2e',
            u'a25bf0b994f409d6d2a84f7d10af5989afe333bcfafc334db345083a7c86537c',
            u'643154069912d9df3c3db3fe968b71834efb9e2bdc38302ce13ba195d9694d82',
            u'ca8e9f9986bdcb6a0ff64082c2d3793ce3daf59174504b5c9072fc1fc2738087',
            u'6f243acbd348929cbe53b96354b1c79c326c08404b5dc4175eb7bb48cfe2eeb9',
            u'ba8c01b123c8cee5a9227a3ff9415c004180659e4766078902024ceb845aeac4',
            u'be082bb1b18d34d3b4cfbb05b96f638667a36d19e76397b23ae57460b3f57b31',
            u'01c984db15cc087990d2e84bc64686a9a99192ea1836abdb1be99c66f670eb15',
            u'583d5846f8f6b737c36554e63960fe74137cd9fd38294d59cfdf71e481a9e43f',
            u'a5a07cc3d98ab71a426764b7450f3f7d305051e392f3e432691550b15c30f6b1',
            u'e326d992a88c802cb28a77d25c6cc1d5d242cf01560f73c04f94133c9b73c769',
            u'c861a51d2cd70e181d1c8b3d8a4c20aa189934bae9c9a5621361c41132cb7f63',
            u'ce57dd89677933fbd2a2d19f652e1bb5ca61ad93bba9cd9ce465797498e6b0d4',
            u'118c4e00531ccd12b174471cf6e1cf30e972060011333596568ba35a01659a88',
            u'e7b446a4943c38b5cc88b94d1dd969044fb039da6825508a3293625cae0e92fc',
            u'44eb9324dc78179262b75a8f17e7d911c8e1c9910b48fccc84702894d37a5a44',
            u'3514ed8de21f8dbdd99b14d0af61414686db9860e4577af88d1e72955a028c47',
            u'60581a61184fcc6325914741507516ef7bc0d2bf217d6fa1d5fa3a755de75e47',
            u'ec4e485a2e1a0b846ea7deff79a2c0321f9c6b09f532cc526ca3d1c92977018c',
            u'0b33c756479df9cd2c0c7485413abaff4a7a33d7906d3509554525e33f593427',
            u'0d2221a6e35ab3f6c60bae81f55077311937f88ad59c3f2151f7d9edbfa7904e',
            u'8136819af4de83099aea5f8a67e0eeea58d0b7bceea3d2fbaf8ba1b0a58c52e0',
            u'aa95fc62ed225d0ac2576f699aef9100ae8baa667463a18bd5f4be18ef0a5ef3',
            u'6f6f6b4e9a01c6deb8c5a04677b9ff876cfbf76ec7fe4c3dedb87ce505e040c7',
            u'794ff1e55ac33d25d80d69a8c737c0b8b08a2dbfc814ae8156d5fb6a42e120f1',
            u'3305fb31f4c2e6de8fa6cc70becd6cc743ec225088fd4f10620e95d3bb646bb5',
            u'0cb57364c30d129add699c2b03d8369d703368c5f2fb2cc31b32058acebc0c7b',
            u'7e070ab3ffeddd00c7724d973209574ec9a3ee9858e1779f05044106b2da3899',
            u'60ddb151003083cc35a581714ccee94d429322bd1ad6b6584f4b14b2cf752d4c',
            u'7c5bc4b07705e7edaf25eb2aa9951a90990ceda10819a86432d765bcdf942633',
            u'a1eac1226c8f579048435e6b1f59818129780d0cbe9785a4a2fe8d3a7a18519b',
            u'889cf865c6567e25d5f9e0a73f44b52f34e4cc7afe561a53ee8a8a03b36069e3',
            u'b580bf1409c69899adaa5bb9808670a52e3f06c3d46c4a727c38a142ba964297',
            u'41215eaf44bca7469fba8647c8db3b96a6b98108daae266547340dcc496bd54c',
            u'0fb42e25504f215d7d23f4fb7cb1cbe11ca80d6ed3934171fe68e8b0bf478fd8',
            u'51e78675d2af5b5c4b9caf99d814dbac939788990a22144e7b4a6e22cc81007b',
            u'd703f3a9712395594b98c235a6749032c26a7cf4ecaf3f6d583b27cc6fa9dec4',
            u'8eb479a334b4a1be45c7bbb1327d6bf673d61903cced730c6ecc198951587df1',
            u'292c1a76011a0dc8a7628c746a5edfeb3e78287d1db019f71dd780dbaf4befd8',
            u'60f9d2e16962e7136a7ead6418af4cf053e961828bc8acc001af3bb59fbeca34',
            u'bebbd5d4b05824101343ef88bd98b31db5ae9d7298ef428dae2da799a022993e',
            u'a1f7d2f4b222f425546edb7ac729b5833c994b74cf029bf0ae1226174cf776d3',
            u'ea339fb2e68872d676f4c2e1295542f22ede06c040edeeb0916bfee4d19fcf46',
            u'db24ec449bcd05757bb38bae23dbc1353f6b1872dc4cc5c90c9d3afee40d8f82',
            u'f851bc47b636abdfd41eb4117d3eee8f209515f4cb23e8196c49619cc8ca83a7',
            u'350b40fca68801518a811460c2e5563cc0f87ac83cea5037711ee8602105ef15',
            u'4b5865a0b2a9c3caa84842a65d43690eba1023f01d4c812a77802e621c4be28a',
            u'672ff658e5c8466945a99e2de0345683eb00a0e36dd62703582a373fde780b50',
            u'ec79627d162ea984ed57c62e69ccb2b35f4c150759884e696fafacf54437febd',
            u'fbedb24e52d3297de748c099cba26d478692feede176b188cbf9e0db166e1c0c',
            u'bd71b1d3458bfa57458351b60d537f87ec5b7212c11f3e06783423480be7ebe5',
            u'0eefe2bb2844ad5f9f6af69799005b2fb75a0b79b7173387ae49c7959157208b',
            u'789d5e59e0817bbda57f8c0e2e5430cc67356b6ded07911b495ae9571d1bf872',
            u'c95bae84aa5c60ccb2dbc1c2f9eb5ee3099588cc41dda38ea322d03ff732c9cb',
            u'194a97f6afa0023a83f6294b6486a35fbe1e33ed66bc405d2884cc0daee44249',
            u'3a7c2ef8906eeb800d03e63c3fd912b47fa68c17d38949bddce6b1fb934592e9',
            u'e7cc8c6fe4a64b88834883e58dc076f4c3de251ba7d9d29c6f6b476f5b05148e',
            u'cdedb1d2d39f2bd56c937084766a3ce6b0a50242041c98f79bc06116ccced7d7',
            u'1be2ee4faf38b19c2e31b437d4101e0fbe44e88fc3ad5266fac12f400568198d',
            u'6623aada75e16d001f29955f33a68d489f158a08f515d50745f96d96452232e0',
            u'88a8dbf460a6ddb9357890cecc835f96889df7770cefbe999a3c2a0ed6042982',
            u'14d8f24500b70778fdf8c4ebcd98ce04fcb7c824262251b0aae0359dcbe34d8f',
            u'815750786992781fb144ac1176151467a1c24787732c62488b600e46adcf2471',
            u'2bd677ed05a5088dd03fa603849e3b3dde7b9cca2ddfe794625278fe8eac33ec',
            u'd3c429807b1f077fcefaef3501910b9b13e7c7331b56afc11be7e7735cc22e71',
            u'483d69143b27259c1f7f1bbdbbacdebb707103e705e5e0b9c07ffc2ec8986e9c',
            u'fd8ca31b142529fd7893e1fa443b0aa588c74afb86fa7a3dd167b026e8471ad1',
            u'f7c8249fbbeccc31fd3eb1122f458596f4a6177fe7498073ceac8eeba195feff',
            u'81052b0ca3e0257ae236bbb516b419d894f7938e1771e447b220d84ad66bf0ba',
            u'50bcfc57d4a5aaffb811530cc591aab4b30699c2eded645d95d2a0778928f122',
            u'23b7c0b708746ca70d37d85cb4154aa84d6c6f47644cbf1e5e69ba6ba174e793',
            u'18006412a0a225eff5c9d0561fb8002f3804864b86858bd3386af52427a84518',
            u'19cad084c6d94fbd1b43d582d3e04a757860d9dcebbde4b44b545a3b9e322bac',
            u'4a9a70c4c716b080bdbe1098641fbf2757c7d65f3d9b0c89926be9690473cd53',
            u'af5e2040b644947a5ede5164eeb953e2f6cacac1e081f6d350265af2a00ef720',
            u'01c347a1a162a72dedeba569349562df2a853e9a34e8399c8f81fab2d5c591aa',
            u'd4fe56d65f11bb777c87c063dd369018cf93ab58f32942a89781a72f8b515d83',
            u'a62f5e7db2f0fc6f7d258d5f6588cbf8480d8c63757eba7be173bd0ddb00c425',
            u'15f16534df8d59d613d5018ea62b235be2f6bc01bc239a10376601aa020cb7bc',
            u'e5adfaaad73d934fa5ebeb4bf0e5e40bff51a3b78edc05640830a469440d6615',
            u'1d7d878a0ae396dab92bde7e0df60562e9795bacc220944f79094b9ea7fb7680',
            u'8b1a7d50b4c388a5aefb4e0b26064f15aaf3f7129918050adb73e4e5af688334',
            u'427e92786ef3b589eda3458df3bd2c2f9799b8b3cbf210c99be9717092a64caa',
            u'85232adfecb2510f6a7951a3ce97776fbe48012b1d43ec9eae1cddd4222e0f97',
            u'bae6a239b58434321050c52d99acd109c9219081a943a7558023e9f5234fe1bc',
            u'1e8a3e6f8a4c5184bee08f144134b1eff209a81629ae8ffc26445aa60b6778e8',
            u'9f06ed34914823e48ce299b74c934044e618974a85396435c3afbd14d93a034a',
            u'c2abf971ed3b875e2214c3bb3b6cef6e3b9cfd7f71c80472654bf875291fec1a',
            u'f8efe2380bb7944f8fd2f95a177f6c3b4353c6a84a00a05076bf39a1abb80a79',
            u'31d20d04e0941bfac520487efcdde192addf6c3a768ade3992e91f23e181dd3a',
            u'e6f5c08d2899cfc63b8c72142174d7aac61f50893238b13e12ecbbd65356af73',
            u'deeb1340a234d64b1552e345923febb72fd14e85409af33d3e1aad7fc3a17fd5',
            u'e90b8f2244bde77c1859ad047220a36160a0097cab70cb2c78980b8b618a5f49',
            u'fa61d3985f21b3695664ce996905e7932b4c713e102632777f20a4cd664fdcc7',
            u'22e181b5a8333617daa57f70481cfb7639b7115e3bdc409b69a2a18dadde959a']
        deserial = [unhexlify(hsh)[::-1] for hsh in hashes]
        fake_coinbase = Transaction()
        fake_coinbase._hash = deserial[0]
        branch = merklebranch(deserial[1:], hashes=True, be=True)

        self.assertEquals(
            "35bc46dc56cd6bcb9844323c52eb894a29a3c60add8553a08281fb3eed62cdcf",
            hexlify(merkleroot(deserial, hashes=True, be=False)[0]).decode('ascii'))

        self.assertEquals(
            "35bc46dc56cd6bcb9844323c52eb894a29a3c60add8553a08281fb3eed62cdcf",
            hexlify(from_merklebranch(branch, fake_coinbase)))
コード例 #9
0
ファイル: unit_tests.py プロジェクト: uingei/cryptokit
    def test_from_merkle(self):
        hashes = [
            u'031b96acd2c05833758460d46466be1086361cd9c2844f26538e0bf9afa19841',
            u'b20c1a5e2b69bac036596e3303fda56221f7a0890898512c06755399d63583c9',
            u'49ec27da3cc56167b01118461d22297e56654ab680d3ff5842263e0e35cff209',
            u'7cee60dcb944a00c2e1dda02774fdbe91dd4e920e12053f9b7b8d1e5fb539991',
            u'650a54d0b53cc89be342a3883b96462bcdb0054e6ec2c29c6fe81d08c0c2b546',
            u'10d44ef68e5f7929e2a79c42a83d5c4155fcf82da0901d3bdea436ba1da21cac',
            u'2a5c3ede2786638db6eb52a6229a828f0e7de3a33e1091d5caa1048592e05133',
            u'aff21bcae129d57dc37aa8c75d41652e5d7bd8a58bfd2195ad4e3e129b856e12',
            u'94ed6c0089a259b0fd593ff26a5055157179cc0679ae4f16f25c030b5a64b441',
            u'3effb59479c79f1cbe79e2bcb5825c3ec4b1c9fd2011ac121b1369d38234c4cc',
            u'98db3cccb6e2c6fd69d87693def5df9fc0720f7298fa811a523d7dfe42b5ae8f',
            u'3663378ea537dced269957442d17aa5452060c8b04a9b1b80613e496b8999a65',
            u'2ee24381fb4f3e52d0aabc1686096efbb1d5a0b63f0c7451f697d31fec34ac23',
            u'329439f7481c3efaff5e82936f650c063a797265f3b0941e5d20b5d0df930954',
            u'3da1168feef4a45c19cfac6cbe104927954a459a2010a0d3a5cc667087c5bf7c',
            u'c33e8ec70c0fee9e3794e91100987c22e7e1d96c32be10c93eb1e41ae2041136',
            u'80a39c4002c89f037f2bfdf9377027e8af0e302a709abc83a0312f541b37a5b8',
            u'3f979f56f041eb972b73cee4b992262d6c5dcf540bbb7804455c4c407fc6facf',
            u'11c7f9d16c7ca6ad5afac4308dcacdf8fd83aad23581d3a5a11311845465defa',
            u'9a9e3ed8aa8e72f8cf438e00f0d441e3ff7efc3ea5f4d8e8c199f142f46bd24d',
            u'1eb8a910da4c04f165fc222edaa840d1cd9ff4df4ecadbeb71fde0292b5dda44',
            u'95a9d16ce095f35da8c193afb411ae1dd0c4c6b9ea29b54b30b44bd7619b0f93',
            u'16097a77cf25ccb91a1b49f76869c288dc0f41535d38bef3ba5ab9f509beadaf',
            u'a847e20fb6de61346d2066dbaaf5e180355b64fbeac366a4c6c3a273d87ad6d2',
            u'c03678582368d04386a7d1dd568784ab6f16e7f9d99052b740e67103f77cf7d9',
            u'd3c0efa5b704ac115ce5e9bd6e60179e601a64711cb963e602daff93c94ab7eb',
            u'ea1355acd68536b8694cd143d7ca0a79caf6fde35c45178868ea38062ceb06f7',
            u'63de6020f5b7f80e446551cda8976e394ba834a8e1e083df32f440cba4cfa549',
            u'c6993904f9ad9fd4ba3fad6f1c94aba2f2c01ff889b5089bde976940554cde7a',
            u'8fafd793e9384fe5c88322ea47d01329f3b7f10c57e617088fd8b08bbe3f2919',
            u'2fc314299a442e27e53afcb4c511f8843cd81a29f363b18120db55eddc75b115',
            u'07cbb85877cb6c4e8dc137803f02667553031798bbe85709aaaaa7abc7d01cf9',
            u'75ecf3a3cf703c1909ec454e3059daff5c445aab8ea9e3b2f42fdf328124d5fb',
            u'd22b413f85483218c1225d4a2f5d5285b19095251445f2093370d447c8858568',
            u'ca555b2828aa24fe71a60c0b1042d9bf4827c9bdf2d791c3e2206f6b236f8b2c',
            u'e139729ba444a99d192ebf45b229f901e8ea29fb198143378467c2567fad8a38',
            u'8b8a08193e8675943f9f65dec0acffac7a648fedd90b80419a5d347d83999681',
            u'a9ffe21ec4c6a9f68fd48c753965896684fd03a5191996921d17b3543a08d69e',
            u'571ec571305ba5243a68b297c16ecb71add209ce4fa672c1ffdc90e969afd207',
            u'db37d10ed2449c7e223a3ce1346ed66a07b733fc0cdb8f9a27552b29dc61076c',
            u'bd3378261297648c09345fe7702a4028b2c56f853086eaea5e03cda2d1d6573e',
            u'71d0597baa6b673a1bac8daf5c9d2447bd64fba799449c5c8ec245b5d681cf5f',
            u'68d7ca294bbfe075f7dcc521db418fcb822bc86caaa96219d2e135258676aabd',
            u'dfef23ff7a3f21a946b2726ee88ed81e110be7152885d9a26996e7ba6b219e23',
            u'0e7ae7690568de29d763bc2e51f28e6767b431ffc83e223187111872a48ba598',
            u'd88a17b6325671243edfa315889be93828975c8a89ba2fea3f9e1754c874af3a',
            u'b01a28e8dd891aa6915ce5b2be55133b7177eec60cd97861a8aae93f4d4a79b0',
            u'691a7c91dd49578e363c2aa72c54248bb9e8389ca98c896950781390877c3a72',
            u'b9db62c767249d58ec70c18250482f0cd276d085ac4f7d07af095218cbc31448',
            u'c7b98e339ac1e47fcabf6c403974df3ed95c66134e867b350d835f64b7c24767',
            u'5839cb48d43dbbfa3aedded2a4936b2555325a7333e15cdbe4441350fdedc9ea',
            u'6b83bf5a2189cba5cf0e575b7d48268c4fc0ba96ca72043eceb0a20282b0d3f0',
            u'5347aa403cee27080fce61de817f6ea4f6521f2372756b7e3f798e37791f3a8b',
            u'2c9cce8b51f7e4fa2999eb9b7edd947dc085ffde88bbbd28df5ae0ccd1da1885',
            u'1121858dab0210eb61bee7e1cad801c2d91f81c1dce7db1791da44137ae0dd4c',
            u'8b4f50d0d80b707374d2c00a9278357edc040039d6987673df1722140201df05',
            u'b08f1f3c9fd02fa6d913027da36252885645c055099c0ca469e58c50806f337a',
            u'611a221b0682c6637cc540850e765cd3934719a224b60978a2592e48bc8dc5c2',
            u'c454503fdb63dce12b5be7762f22a2a57f3ec98eead60b85d22296a036bcbb56',
            u'5fee11f3e4459e95dbaaccd4e94c1ab682cbdaa20c2c8f59bccb429c2bc78ab1',
            u'09da229c7f1293acf84be8f878b92a588e5453f0245348f37bdc4d6f5a387d47',
            u'ed673ca00a18cde535fc81979e837098c73cdeee9c0ba19b58e4aeb81b165e2e',
            u'a25bf0b994f409d6d2a84f7d10af5989afe333bcfafc334db345083a7c86537c',
            u'643154069912d9df3c3db3fe968b71834efb9e2bdc38302ce13ba195d9694d82',
            u'ca8e9f9986bdcb6a0ff64082c2d3793ce3daf59174504b5c9072fc1fc2738087',
            u'6f243acbd348929cbe53b96354b1c79c326c08404b5dc4175eb7bb48cfe2eeb9',
            u'ba8c01b123c8cee5a9227a3ff9415c004180659e4766078902024ceb845aeac4',
            u'be082bb1b18d34d3b4cfbb05b96f638667a36d19e76397b23ae57460b3f57b31',
            u'01c984db15cc087990d2e84bc64686a9a99192ea1836abdb1be99c66f670eb15',
            u'583d5846f8f6b737c36554e63960fe74137cd9fd38294d59cfdf71e481a9e43f',
            u'a5a07cc3d98ab71a426764b7450f3f7d305051e392f3e432691550b15c30f6b1',
            u'e326d992a88c802cb28a77d25c6cc1d5d242cf01560f73c04f94133c9b73c769',
            u'c861a51d2cd70e181d1c8b3d8a4c20aa189934bae9c9a5621361c41132cb7f63',
            u'ce57dd89677933fbd2a2d19f652e1bb5ca61ad93bba9cd9ce465797498e6b0d4',
            u'118c4e00531ccd12b174471cf6e1cf30e972060011333596568ba35a01659a88',
            u'e7b446a4943c38b5cc88b94d1dd969044fb039da6825508a3293625cae0e92fc',
            u'44eb9324dc78179262b75a8f17e7d911c8e1c9910b48fccc84702894d37a5a44',
            u'3514ed8de21f8dbdd99b14d0af61414686db9860e4577af88d1e72955a028c47',
            u'60581a61184fcc6325914741507516ef7bc0d2bf217d6fa1d5fa3a755de75e47',
            u'ec4e485a2e1a0b846ea7deff79a2c0321f9c6b09f532cc526ca3d1c92977018c',
            u'0b33c756479df9cd2c0c7485413abaff4a7a33d7906d3509554525e33f593427',
            u'0d2221a6e35ab3f6c60bae81f55077311937f88ad59c3f2151f7d9edbfa7904e',
            u'8136819af4de83099aea5f8a67e0eeea58d0b7bceea3d2fbaf8ba1b0a58c52e0',
            u'aa95fc62ed225d0ac2576f699aef9100ae8baa667463a18bd5f4be18ef0a5ef3',
            u'6f6f6b4e9a01c6deb8c5a04677b9ff876cfbf76ec7fe4c3dedb87ce505e040c7',
            u'794ff1e55ac33d25d80d69a8c737c0b8b08a2dbfc814ae8156d5fb6a42e120f1',
            u'3305fb31f4c2e6de8fa6cc70becd6cc743ec225088fd4f10620e95d3bb646bb5',
            u'0cb57364c30d129add699c2b03d8369d703368c5f2fb2cc31b32058acebc0c7b',
            u'7e070ab3ffeddd00c7724d973209574ec9a3ee9858e1779f05044106b2da3899',
            u'60ddb151003083cc35a581714ccee94d429322bd1ad6b6584f4b14b2cf752d4c',
            u'7c5bc4b07705e7edaf25eb2aa9951a90990ceda10819a86432d765bcdf942633',
            u'a1eac1226c8f579048435e6b1f59818129780d0cbe9785a4a2fe8d3a7a18519b',
            u'889cf865c6567e25d5f9e0a73f44b52f34e4cc7afe561a53ee8a8a03b36069e3',
            u'b580bf1409c69899adaa5bb9808670a52e3f06c3d46c4a727c38a142ba964297',
            u'41215eaf44bca7469fba8647c8db3b96a6b98108daae266547340dcc496bd54c',
            u'0fb42e25504f215d7d23f4fb7cb1cbe11ca80d6ed3934171fe68e8b0bf478fd8',
            u'51e78675d2af5b5c4b9caf99d814dbac939788990a22144e7b4a6e22cc81007b',
            u'd703f3a9712395594b98c235a6749032c26a7cf4ecaf3f6d583b27cc6fa9dec4',
            u'8eb479a334b4a1be45c7bbb1327d6bf673d61903cced730c6ecc198951587df1',
            u'292c1a76011a0dc8a7628c746a5edfeb3e78287d1db019f71dd780dbaf4befd8',
            u'60f9d2e16962e7136a7ead6418af4cf053e961828bc8acc001af3bb59fbeca34',
            u'bebbd5d4b05824101343ef88bd98b31db5ae9d7298ef428dae2da799a022993e',
            u'a1f7d2f4b222f425546edb7ac729b5833c994b74cf029bf0ae1226174cf776d3',
            u'ea339fb2e68872d676f4c2e1295542f22ede06c040edeeb0916bfee4d19fcf46',
            u'db24ec449bcd05757bb38bae23dbc1353f6b1872dc4cc5c90c9d3afee40d8f82',
            u'f851bc47b636abdfd41eb4117d3eee8f209515f4cb23e8196c49619cc8ca83a7',
            u'350b40fca68801518a811460c2e5563cc0f87ac83cea5037711ee8602105ef15',
            u'4b5865a0b2a9c3caa84842a65d43690eba1023f01d4c812a77802e621c4be28a',
            u'672ff658e5c8466945a99e2de0345683eb00a0e36dd62703582a373fde780b50',
            u'ec79627d162ea984ed57c62e69ccb2b35f4c150759884e696fafacf54437febd',
            u'fbedb24e52d3297de748c099cba26d478692feede176b188cbf9e0db166e1c0c',
            u'bd71b1d3458bfa57458351b60d537f87ec5b7212c11f3e06783423480be7ebe5',
            u'0eefe2bb2844ad5f9f6af69799005b2fb75a0b79b7173387ae49c7959157208b',
            u'789d5e59e0817bbda57f8c0e2e5430cc67356b6ded07911b495ae9571d1bf872',
            u'c95bae84aa5c60ccb2dbc1c2f9eb5ee3099588cc41dda38ea322d03ff732c9cb',
            u'194a97f6afa0023a83f6294b6486a35fbe1e33ed66bc405d2884cc0daee44249',
            u'3a7c2ef8906eeb800d03e63c3fd912b47fa68c17d38949bddce6b1fb934592e9',
            u'e7cc8c6fe4a64b88834883e58dc076f4c3de251ba7d9d29c6f6b476f5b05148e',
            u'cdedb1d2d39f2bd56c937084766a3ce6b0a50242041c98f79bc06116ccced7d7',
            u'1be2ee4faf38b19c2e31b437d4101e0fbe44e88fc3ad5266fac12f400568198d',
            u'6623aada75e16d001f29955f33a68d489f158a08f515d50745f96d96452232e0',
            u'88a8dbf460a6ddb9357890cecc835f96889df7770cefbe999a3c2a0ed6042982',
            u'14d8f24500b70778fdf8c4ebcd98ce04fcb7c824262251b0aae0359dcbe34d8f',
            u'815750786992781fb144ac1176151467a1c24787732c62488b600e46adcf2471',
            u'2bd677ed05a5088dd03fa603849e3b3dde7b9cca2ddfe794625278fe8eac33ec',
            u'd3c429807b1f077fcefaef3501910b9b13e7c7331b56afc11be7e7735cc22e71',
            u'483d69143b27259c1f7f1bbdbbacdebb707103e705e5e0b9c07ffc2ec8986e9c',
            u'fd8ca31b142529fd7893e1fa443b0aa588c74afb86fa7a3dd167b026e8471ad1',
            u'f7c8249fbbeccc31fd3eb1122f458596f4a6177fe7498073ceac8eeba195feff',
            u'81052b0ca3e0257ae236bbb516b419d894f7938e1771e447b220d84ad66bf0ba',
            u'50bcfc57d4a5aaffb811530cc591aab4b30699c2eded645d95d2a0778928f122',
            u'23b7c0b708746ca70d37d85cb4154aa84d6c6f47644cbf1e5e69ba6ba174e793',
            u'18006412a0a225eff5c9d0561fb8002f3804864b86858bd3386af52427a84518',
            u'19cad084c6d94fbd1b43d582d3e04a757860d9dcebbde4b44b545a3b9e322bac',
            u'4a9a70c4c716b080bdbe1098641fbf2757c7d65f3d9b0c89926be9690473cd53',
            u'af5e2040b644947a5ede5164eeb953e2f6cacac1e081f6d350265af2a00ef720',
            u'01c347a1a162a72dedeba569349562df2a853e9a34e8399c8f81fab2d5c591aa',
            u'd4fe56d65f11bb777c87c063dd369018cf93ab58f32942a89781a72f8b515d83',
            u'a62f5e7db2f0fc6f7d258d5f6588cbf8480d8c63757eba7be173bd0ddb00c425',
            u'15f16534df8d59d613d5018ea62b235be2f6bc01bc239a10376601aa020cb7bc',
            u'e5adfaaad73d934fa5ebeb4bf0e5e40bff51a3b78edc05640830a469440d6615',
            u'1d7d878a0ae396dab92bde7e0df60562e9795bacc220944f79094b9ea7fb7680',
            u'8b1a7d50b4c388a5aefb4e0b26064f15aaf3f7129918050adb73e4e5af688334',
            u'427e92786ef3b589eda3458df3bd2c2f9799b8b3cbf210c99be9717092a64caa',
            u'85232adfecb2510f6a7951a3ce97776fbe48012b1d43ec9eae1cddd4222e0f97',
            u'bae6a239b58434321050c52d99acd109c9219081a943a7558023e9f5234fe1bc',
            u'1e8a3e6f8a4c5184bee08f144134b1eff209a81629ae8ffc26445aa60b6778e8',
            u'9f06ed34914823e48ce299b74c934044e618974a85396435c3afbd14d93a034a',
            u'c2abf971ed3b875e2214c3bb3b6cef6e3b9cfd7f71c80472654bf875291fec1a',
            u'f8efe2380bb7944f8fd2f95a177f6c3b4353c6a84a00a05076bf39a1abb80a79',
            u'31d20d04e0941bfac520487efcdde192addf6c3a768ade3992e91f23e181dd3a',
            u'e6f5c08d2899cfc63b8c72142174d7aac61f50893238b13e12ecbbd65356af73',
            u'deeb1340a234d64b1552e345923febb72fd14e85409af33d3e1aad7fc3a17fd5',
            u'e90b8f2244bde77c1859ad047220a36160a0097cab70cb2c78980b8b618a5f49',
            u'fa61d3985f21b3695664ce996905e7932b4c713e102632777f20a4cd664fdcc7',
            u'22e181b5a8333617daa57f70481cfb7639b7115e3bdc409b69a2a18dadde959a'
        ]
        deserial = [unhexlify(hsh)[::-1] for hsh in hashes]
        fake_coinbase = Transaction()
        fake_coinbase._hash = deserial[0]
        branch = merklebranch(deserial[1:], hashes=True, be=True)

        self.assertEquals(
            "35bc46dc56cd6bcb9844323c52eb894a29a3c60add8553a08281fb3eed62cdcf",
            hexlify(merkleroot(deserial, hashes=True,
                               be=False)[0]).decode('ascii'))

        self.assertEquals(
            "35bc46dc56cd6bcb9844323c52eb894a29a3c60add8553a08281fb3eed62cdcf",
            hexlify(from_merklebranch(branch, fake_coinbase)))