def check( state_engine ):

    global wallet_keys, dataset_1, data_hash_1, dataset_2, data_hash_2

    # not revealed, but ready 
    ns = state_engine.get_namespace_reveal( "test" )
    if ns is not None:
        print "namespace not ready"
        return False 

    ns = state_engine.get_namespace( "test" )
    if ns is None:
        print "no namespace"
        return False 

    if ns['namespace_id'] != 'test':
        print "wrong namespace"
        return False 

    # not preordered
    preorder = state_engine.get_name_preorder( "foo.test", pybitcoin.make_pay_to_address_script(wallets[2].addr), wallets[3].addr )
    if preorder is not None:
        print "still have preorder"
        return False
    
    # registered 
    name_rec = state_engine.get_name( "foo.test" )
    if name_rec is None:
        print "name does not exist"
        return False 

    # owned 
    if name_rec['address'] != wallets[3].addr or name_rec['sender'] != pybitcoin.make_pay_to_address_script(wallets[3].addr):
        print "name has wrong owner"
        return False 

    # have right hash 
    if name_rec['value_hash'] != last_hash:
        print "Invalid zonefile hash (%s != %s)" % (name_rec['value_hash'], last_hash)
        return False 

    # have no data 
    test_proxy = testlib.TestAPIProxy()
    blockstack_client.set_default_proxy( test_proxy )

    for i in xrange(0, len(datasets)):
        immutable_data = blockstack_client.get_immutable( "foo.test", zonefile_hashes[i] )
        if immutable_data is not None and 'error' not in immutable_data:
            print "still have data for dataset %s\n%s" % (i, json.dumps(immutable_data,indent=4,sort_keys=True))
            return False 

        if immutable_data['error'] != 'No such immutable datum':
            print json.dumps(immutable_data,indent=4,sort_keys=True)
            return False

        immutable_data_by_name = blockstack_client.get_immutable_by_name( "foo.test", "hello_world_%s" % (i+1) )
        if immutable_data_by_name is not None and 'error' not in immutable_data:
            print "still have data for dataset hello_world_%s\n%s" % (i, json.dumps(immutable_data,indent=4,sort_keys=True))
            return False 

        if immutable_data['error'] != 'No such immutable datum':
            print json.dumps(immutable_data,indent=4,sort_keys=True)
            return False

    return True
コード例 #2
0
def check(state_engine):

    global wallet_keys, dataset_1, data_hash_1, dataset_2, data_hash_2

    # not revealed, but ready
    ns = state_engine.get_namespace_reveal("test")
    if ns is not None:
        print "namespace not ready"
        return False

    ns = state_engine.get_namespace("test")
    if ns is None:
        print "no namespace"
        return False

    if ns['namespace_id'] != 'test':
        print "wrong namespace"
        return False

    # not preordered
    preorder = state_engine.get_name_preorder(
        "foo.test", pybitcoin.make_pay_to_address_script(wallets[2].addr),
        wallets[3].addr)
    if preorder is not None:
        print "still have preorder"
        return False

    # registered
    name_rec = state_engine.get_name("foo.test")
    if name_rec is None:
        print "name does not exist"
        return False

    # owned
    if name_rec['address'] != wallets[3].addr or name_rec[
            'sender'] != pybitcoin.make_pay_to_address_script(wallets[3].addr):
        print "name has wrong owner"
        return False

    # have right hash
    if name_rec['value_hash'] != last_hash:
        print "Invalid zonefile hash (%s != %s)" % (name_rec['value_hash'],
                                                    last_hash)
        return False

    # have no data
    test_proxy = testlib.TestAPIProxy()
    blockstack_client.set_default_proxy(test_proxy)

    for i in xrange(0, len(datasets)):
        immutable_data = blockstack_client.get_immutable(
            "foo.test", zonefile_hashes[i])
        if immutable_data is not None and 'error' not in immutable_data:
            print "still have data for dataset %s\n%s" % (
                i, json.dumps(immutable_data, indent=4, sort_keys=True))
            return False

        if immutable_data['error'] != 'No such immutable datum':
            print json.dumps(immutable_data, indent=4, sort_keys=True)
            return False

        immutable_data_by_name = blockstack_client.get_immutable_by_name(
            "foo.test", "hello_world_%s" % (i + 1))
        if immutable_data_by_name is not None and 'error' not in immutable_data:
            print "still have data for dataset hello_world_%s\n%s" % (
                i, json.dumps(immutable_data, indent=4, sort_keys=True))
            return False

        if immutable_data['error'] != 'No such immutable datum':
            print json.dumps(immutable_data, indent=4, sort_keys=True)
            return False

    return True