def scenario(wallets, **kw): testlib.blockstack_namespace_preorder("test", wallets[1].addr, wallets[0].privkey) testlib.next_block(**kw) testlib.blockstack_namespace_reveal( "test", wallets[1].addr, 52595, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[0].privkey, version_bits=2) testlib.next_block(**kw) testlib.blockstack_namespace_ready("test", wallets[1].privkey) testlib.next_block(**kw) namespace_rec = testlib.blockstack_cli_get_namespace_blockchain_record( "test") if 'error' in namespace_rec: print namespace_rec return False namespace_balance = testlib.get_balance(namespace_rec['address']) testlib.blockstack_name_preorder("foo.test", wallets[2].privkey, wallets[3].addr) testlib.next_block(**kw) testlib.blockstack_name_register("foo.test", wallets[2].privkey, wallets[3].addr) testlib.next_block(**kw) new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_rec = testlib.get_name_blockchain_record('foo.test') name_cost = name_rec['op_fee'] if new_namespace_balance - namespace_balance != name_cost: print 'address {} did not get credited'.format( namespace_rec['address']) print '{} != {} + {}'.format(new_namespace_balance, namespace_balance, name_cost) return False
def scenario( wallets, **kw ): testlib.blockstack_namespace_preorder( "test", wallets[1].addr, wallets[0].privkey ) testlib.next_block( **kw ) testlib.blockstack_namespace_reveal( "test", wallets[1].addr, 2, 250, 4, [6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0], 10, 10, wallets[0].privkey, version_bits=2) testlib.next_block( **kw ) resp = testlib.blockstack_name_import( "foo.test", wallets[3].addr, "11" * 20, wallets[1].privkey ) if 'error' in resp: print json.dumps( resp, indent=4 ) return False testlib.blockstack_namespace_ready( "test", wallets[1].privkey ) testlib.next_block( **kw ) namespace_rec = testlib.blockstack_cli_get_namespace_blockchain_record("test") if 'error' in namespace_rec: print namespace_rec return False namespace_balance = testlib.get_balance(namespace_rec['address']) testlib.blockstack_name_renew("foo.test", wallets[3].privkey) testlib.next_block(**kw) new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_rec = testlib.get_name_blockchain_record('foo.test') name_cost = name_rec['op_fee'] if new_namespace_balance - namespace_balance != name_cost: print 'address {} did not get credited'.format(namespace_rec['address']) print '{} != {} + {}'.format(new_namespace_balance, namespace_balance, name_cost) return False testlib.blockstack_name_renew("foo.test", wallets[3].privkey, recipient_addr=wallets[4].addr, zonefile_hash='22' * 20) testlib.next_block(**kw) new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_rec = testlib.get_name_blockchain_record('foo.test') name_cost = name_rec['op_fee'] if new_namespace_balance - namespace_balance != 2*name_cost: print 'address {} did not get credited'.format(namespace_rec['address']) print '{} != {} + {}'.format(new_namespace_balance, namespace_balance, 2*name_cost) return False
def scenario(wallets, **kw): testlib.blockstack_namespace_preorder("test", wallets[1].addr, wallets[0].privkey) testlib.next_block(**kw) testlib.blockstack_namespace_reveal( "test", wallets[1].addr, 52595, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[0].privkey, version_bits=2) testlib.next_block(**kw) testlib.blockstack_namespace_ready("test", wallets[1].privkey) testlib.next_block(**kw) namespace_rec = testlib.blockstack_cli_get_namespace_blockchain_record( "test") if 'error' in namespace_rec: print namespace_rec return False namespace_balance = testlib.get_balance(namespace_rec['address']) testlib.blockstack_name_preorder("foo.test", wallets[2].privkey, wallets[3].addr) testlib.next_block(**kw) testlib.blockstack_name_register("foo.test", wallets[2].privkey, wallets[3].addr) testlib.next_block(**kw) # renew/xfer/update res = testlib.blockstack_name_renew("foo.test", wallets[3].privkey, zonefile_hash="22" * 20, recipient_addr=wallets[4].addr) if 'error' in res: print res return False testlib.next_block(**kw) # renew/update res = testlib.blockstack_name_renew("foo.test", wallets[4].privkey, zonefile_hash="33" * 20) if 'error' in res: print res return False testlib.next_block(**kw) # renew/xfer res = testlib.blockstack_name_renew("foo.test", wallets[4].privkey, recipient_addr=wallets[1].addr) if 'error' in res: print res return False testlib.next_block(**kw) # renew res = testlib.blockstack_name_renew("foo.test", wallets[1].privkey) if 'error' in res: print res return False testlib.next_block(**kw) new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_rec = testlib.get_name_blockchain_record('foo.test') name_cost = name_rec['op_fee'] if new_namespace_balance - namespace_balance != name_cost * 5: print 'address {} did not get credited'.format( namespace_rec['address']) print '{} != {} + {}'.format(new_namespace_balance, namespace_balance, name_cost * 5) return False
def scenario(wallets, **kw): testlib.blockstack_namespace_preorder("test", wallets[1].addr, wallets[0].privkey) testlib.next_block(**kw) testlib.blockstack_namespace_reveal( "test", wallets[1].addr, 52595, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[0].privkey, version_bits=2) testlib.next_block(**kw) testlib.blockstack_namespace_ready("test", wallets[1].privkey) testlib.next_block(**kw) namespace_rec = testlib.blockstack_cli_get_namespace_blockchain_record( "test") if 'error' in namespace_rec: print namespace_rec return False namespace_balance = testlib.get_balance(namespace_rec['address']) burn_balance = testlib.get_balance( blockstack_client.constants.BLOCKSTACK_BURN_ADDRESS) res = testlib.blockstack_name_preorder("foo.test", wallets[2].privkey, wallets[3].addr) if 'error' in res: print res return False testlib.next_block(**kw) res = testlib.blockstack_name_register("foo.test", wallets[2].privkey, wallets[3].addr) if 'error' in res: print res return False testlib.next_block(**kw) new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_rec = testlib.get_name_blockchain_record('foo.test') name_cost = name_rec['op_fee'] if new_namespace_balance - namespace_balance != name_cost: print 'address {} did not get credited'.format( namespace_rec['address']) print '{} != {} + {}'.format(new_namespace_balance, namespace_balance, name_cost) return False # should send to null burn address res = testlib.blockstack_name_preorder("foo2.test", wallets[2].privkey, wallets[3].addr) if 'error' in res: print res return False # preorder should send to the null burn address now. # try forcing it to the namespace burn address, to verify that it fails res = testlib.blockstack_name_preorder("foo_fail.test", wallets[2].privkey, wallets[3].addr, burn_addr=namespace_rec['address']) if 'error' not in res: print res return False res = testlib.blockstack_name_preorder("foo_fail.test", wallets[2].privkey, wallets[3].addr, burn_addr=namespace_rec['address'], safety_checks=False, tx_fee=10000 * 5) if 'error' in res: print res return False testlib.next_block(**kw) # should be rejected res = testlib.blockstack_name_register("foo_fail.test", wallets[2].privkey, wallets[3].addr) if 'error' in res: print res return False # should be accepted res = testlib.blockstack_name_register("foo2.test", wallets[2].privkey, wallets[3].addr) if 'error' in res: print res return False testlib.next_block(**kw) testlib.expect_snv_fail_at('foo_fail.test', testlib.get_current_block(**kw)) # should have been rejected due to wrong burn address whois = testlib.blockstack_cli_whois('foo_fail.test') if 'error' not in whois: print whois return False new_burn_balance = testlib.get_balance( blockstack_client.constants.BLOCKSTACK_BURN_ADDRESS) new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_rec_2 = testlib.get_name_blockchain_record('foo2.test') name_cost_2 = name_rec_2['op_fee'] # namespace should NOT have gotten the fee for foo_fail. It should only have gotten it for foo.test if new_namespace_balance - namespace_balance != name_cost + 5500: print 'address {} got credited after fee capture period'.format( namespace_rec['address']) print '{} != {} + {}'.format(new_namespace_balance, namespace_balance, name_cost) return False # burn address should have received the fee for the second name if new_burn_balance - name_cost_2 != burn_balance: print 'null burn address did not get credited' print '{} != {} + {}'.format(new_burn_balance, burn_balance, name_cost_2) return False
def scenario( wallets, **kw ): testlib.blockstack_namespace_preorder( "test", wallets[1].addr, wallets[0].privkey ) testlib.next_block( **kw ) testlib.blockstack_namespace_reveal( "test", wallets[1].addr, 52595, 250, 4, [6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0], 10, 10, wallets[0].privkey, version_bits=2) testlib.next_block( **kw ) resp = testlib.blockstack_name_import( "foo.test", wallets[3].addr, "11" * 20, wallets[1].privkey ) if 'error' in resp: print json.dumps( resp, indent=4 ) testlib.next_block( **kw ) testlib.blockstack_namespace_ready( "test", wallets[1].privkey ) testlib.next_block( **kw ) namespace_rec = testlib.blockstack_cli_get_namespace_blockchain_record("test") if 'error' in namespace_rec: print namespace_rec return False namespace_balance = testlib.get_balance(namespace_rec['address']) burn_balance = testlib.get_balance(blockstack.lib.config.BLOCKSTACK_BURN_ADDRESS) # should send to namespace burn address res = testlib.blockstack_name_renew('foo.test', wallets[3].privkey) if 'error' in res: print res return False testlib.next_block(**kw) # should send to namespace burn address res = testlib.blockstack_name_renew('foo.test', wallets[3].privkey) if 'error' in res: print res return False testlib.next_block(**kw) new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_rec = testlib.get_name_blockchain_record('foo.test') name_cost = name_rec['op_fee'] if new_namespace_balance - namespace_balance != 2*name_cost: print 'address {} did not get credited'.format(namespace_rec['address']) print '{} != {} + {}'.format(new_namespace_balance, namespace_balance, name_cost) return False # should be rejected if not burned res = testlib.blockstack_name_renew('foo.test', wallets[3].privkey, burn_addr=namespace_rec['address'], expect_fail=True) if 'error' not in res: print res return False res = testlib.blockstack_name_renew('foo.test', wallets[3].privkey, burn_addr=namespace_rec['address'], safety_checks=False, tx_fee=10000*5) if 'error' in res: print res return False testlib.next_block(**kw) # should have been rejected name_rec_2 = testlib.get_name_blockchain_record('foo.test') if name_rec_2['last_renewed'] != name_rec['last_renewed']: print 'accidentally renewed' return False # renew, but correctly (with proper burn address) res = testlib.blockstack_name_renew('foo.test', wallets[3].privkey) if 'error' in res: print res return False testlib.next_block(**kw) name_rec_2 = testlib.get_name_blockchain_record('foo.test') if name_rec_2['last_renewed'] <= name_rec['last_renewed']: print 'did not renew' return False # must have burned new_burn_balance = testlib.get_balance(blockstack.lib.config.BLOCKSTACK_BURN_ADDRESS) if new_burn_balance - name_cost != burn_balance: print 'did not burn fee' print '{} != {} + {}'.format(new_burn_balance, burn_balance, name_cost) return False
def scenario(wallets, **kw): testlib.blockstack_namespace_preorder("test", wallets[1].addr, wallets[0].privkey) testlib.next_block(**kw) testlib.blockstack_namespace_reveal( "test", wallets[1].addr, 3, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[0].privkey, version_bits=2) testlib.next_block(**kw) resp = testlib.blockstack_name_import("foo.test", wallets[3].addr, "11" * 20, wallets[1].privkey) if 'error' in resp: print json.dumps(resp, indent=4) return False testlib.next_block(**kw) testlib.blockstack_namespace_ready("test", wallets[1].privkey) testlib.next_block(**kw) namespace_rec = testlib.blockstack_cli_get_namespace_blockchain_record( "test") if 'error' in namespace_rec: print namespace_rec return False namespace_balance = testlib.get_balance(namespace_rec['address']) burn_balance = testlib.get_balance( blockstack.lib.config.BLOCKSTACK_BURN_ADDRESS) testlib.next_block(**kw) testlib.next_block(**kw) testlib.next_block(**kw) testlib.next_block(**kw) # expired res = testlib.blockstack_name_preorder("foo.test", wallets[2].privkey, wallets[3].addr) # +name_cost if 'error' in res: print res return False testlib.next_block(**kw) res = testlib.blockstack_name_register("foo.test", wallets[2].privkey, wallets[3].addr) if 'error' in res: print res return False testlib.next_block(**kw) testlib.next_block(**kw) testlib.next_block(**kw) testlib.next_block(**kw) testlib.next_block(**kw) # expired res = testlib.blockstack_name_preorder("foo.test", wallets[3].privkey, wallets[4].addr) # +name_cost if 'error' in res: print res return False testlib.next_block(**kw) res = testlib.blockstack_name_register("foo.test", wallets[3].privkey, wallets[4].addr) if 'error' in res: print res return False testlib.next_block(**kw) testlib.next_block(**kw) res = testlib.blockstack_name_renew("foo.test", wallets[4].privkey) # +name_cost if 'error' in res: print res return False testlib.next_block(**kw) testlib.next_block(**kw) testlib.next_block(**kw) testlib.next_block(**kw) testlib.next_block(**kw) # expired res = testlib.blockstack_name_preorder("foo.test", wallets[2].privkey, wallets[3].addr) # +name_cost if 'error' in res: print res return False testlib.next_block(**kw) res = testlib.blockstack_name_register("foo.test", wallets[2].privkey, wallets[3].addr) if 'error' in res: print res return False testlib.next_block(**kw) new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_rec = testlib.get_name_blockchain_record('foo.test') name_cost = name_rec['op_fee'] testlib.next_block(**kw) testlib.next_block(**kw) # stop fee collection testlib.next_block(**kw) testlib.next_block(**kw) # expired if new_namespace_balance - namespace_balance != 4 * name_cost: print 'address {} did not get credited'.format( namespace_rec['address']) print '{} != {} + 4*{}'.format(new_namespace_balance, namespace_balance, name_cost) return False # preorder should send to the null burn address now. res = testlib.blockstack_name_preorder( "foo2.test", wallets[4].privkey, wallets[0].addr) # does not pay to namespace if 'error' in res: print res return False # try forcing it to the namespace burn address, to verify that it fails res = testlib.blockstack_name_preorder( "foo_fail.test", wallets[4].privkey, wallets[0].addr, burn_addr=namespace_rec['address'], expect_fail=True) # does not pay to namespace (command fails) if 'error' not in res: print res return False res = testlib.blockstack_name_preorder("foo_fail.test", wallets[4].privkey, wallets[0].addr, burn_addr=namespace_rec['address'], price={ 'units': 'BTC', 'amount': name_cost }, safety_checks=False, tx_fee=10000 * 5) # +name_cost if 'error' in res: print res return False testlib.next_block(**kw) testlib.expect_snv_fail_at('foo_fail.test', testlib.get_current_block(**kw)) # should be accepted res = testlib.blockstack_name_register("foo2.test", wallets[4].privkey, wallets[0].addr) if 'error' in res: print res return False # should be rejected res = testlib.blockstack_name_register("foo_fail.test", wallets[4].privkey, wallets[0].addr, safety_checks=False) if 'error' in res: print res return False testlib.next_block(**kw) testlib.expect_snv_fail_at('foo_fail.test', testlib.get_current_block(**kw)) # should have been rejected due to wrong burn address whois = testlib.blockstack_cli_whois('foo_fail.test') if 'error' not in whois: print whois return False new_burn_balance = testlib.get_balance( blockstack.lib.config.BLOCKSTACK_BURN_ADDRESS) new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_rec_2 = testlib.get_name_blockchain_record('foo2.test') name_cost_2 = name_rec_2['op_fee'] # namespace should NOT have gotten the fee for foo_fail. It should only have gotten it for foo.test if new_namespace_balance - namespace_balance < 5 * name_cost or new_namespace_balance - namespace_balance > 6 * name_cost: print 'address {} got credited after fee capture period'.format( namespace_rec['address']) print '{} != {} + 5*{}'.format(new_namespace_balance, namespace_balance, name_cost) return False # burn address should have received the fee for the second name if new_burn_balance - name_cost_2 != burn_balance: print 'null burn address did not get credited' print '{} != {} + {}'.format(new_burn_balance, burn_balance, name_cost_2) return False
def scenario(wallets, **kw): namespace_price_old_btc_2 = { 'units': 'BTC', 'amount': blockstack.lib.scripts.price_namespace('old_btc_2', 694, 'BTC') } namespace_price_stacks_too_early_1_btc = { 'units': 'BTC', 'amount': blockstack.lib.scripts.price_namespace('stacks_too_early_1', 690, 'BTC') } namespace_price_stacks_too_early_2_stacks = { 'units': 'STACKS', 'amount': blockstack.lib.scripts.price_namespace('stacks_too_early_1', 694, 'STACKS') } testlib.blockstack_namespace_preorder("test", wallets[1].addr, wallets[0].privkey) testlib.blockstack_namespace_preorder( "stacks_too_early_1", wallets[1].addr, wallets[0].privkey, safety_checks=False, price=namespace_price_stacks_too_early_1_btc, tx_fee=50000) testlib.blockstack_namespace_preorder("old_btc_1", wallets[1].addr, wallets[0].privkey) btc_too_late_tx = testlib.blockstack_namespace_preorder('btc_too_late', wallets[1].addr, wallets[2].privkey, tx_only=True) print '' print btc_too_late_tx print '' testlib.next_block(**kw) # end of 689 # should be accepted testlib.blockstack_namespace_reveal( "test", wallets[1].addr, 52595, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[0].privkey) # the stacks_too_early namespace cannot be revealed (i.e. its preorder got rejected) testlib.blockstack_namespace_reveal( "stacks_too_early_1", wallets[1].addr, 52595, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[0].privkey, version_bits=blockstack.NAMESPACE_VERSION_PAY_WITH_STACKS, safety_checks=False, tx_fee=50000) testlib.next_block(**kw) # end of 690 testlib.expect_snv_fail_at('stacks_too_early_1', testlib.get_current_block(**kw)) res = testlib.blockstack_cli_get_namespace_blockchain_record('test') if 'error' in res: print 'test was not revealed' print res return False res = testlib.blockstack_cli_get_namespace_blockchain_record( 'stacks_too_early_1') if 'error' not in res: print 'stacks too early 1 was revealed' print res return False testlib.blockstack_namespace_ready("test", wallets[1].privkey) testlib.next_block(**kw) # end of 691 testlib.next_block(**kw) # end of 692 # should succeed---last block we can pay in BTC testlib.blockstack_namespace_preorder("old_btc_2", wallets[1].addr, wallets[0].privkey, price=namespace_price_old_btc_2) # should be rejected---this is one block early testlib.blockstack_namespace_preorder( "stacks_too_early_2", wallets[1].addr, wallets[0].privkey, safety_checks=False, price=namespace_price_stacks_too_early_2_stacks, tx_fee=50000, expect_reject=True) testlib.next_block(**kw) # end of 693 testlib.expect_snv_fail_at('stacks_too_early_2', testlib.get_current_block(**kw)) # should succeed even though preordered with BTC testlib.blockstack_namespace_reveal( "old_btc_1", wallets[1].addr, 52595, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[0].privkey, version_bits=blockstack.NAMESPACE_VERSION_PAY_WITH_STACKS) # should fail -- no preorder testlib.blockstack_namespace_reveal( "stacks_too_early_2", wallets[1].addr, 52595, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[0].privkey, version_bits=blockstack.NAMESPACE_VERSION_PAY_WITH_STACKS, safety_checks=False, tx_fee=50000) # should be rejected---it's a block too late testlib.broadcast_transaction(btc_too_late_tx['transaction']) testlib.next_block(**kw) # end of 694 testlib.expect_snv_fail_at('stacks_too_early_2', testlib.get_current_block(**kw)) res = testlib.blockstack_cli_get_namespace_blockchain_record( 'stacks_too_early_2') if 'error' not in res: print 'stacks too early 2 was revealed' print res return False res = testlib.blockstack_cli_get_namespace_blockchain_record('old_btc_1') if 'error' in res: print 'old_btc_1 not revealed' print res return False # should succeed, even though we're in the STACKS epoch testlib.blockstack_namespace_reveal( "old_btc_2", wallets[1].addr, 52595, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[0].privkey, version_bits=blockstack.NAMESPACE_VERSION_PAY_WITH_STACKS) # should fail, since the preorer for btc_too_late was sent too late testlib.blockstack_namespace_reveal( "btc_too_late", wallets[1].addr, 52595, 250, 4, [6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 10, 10, wallets[2].privkey, version_bits=blockstack.NAMESPACE_VERSION_PAY_WITH_STACKS) testlib.next_block(**kw) # end of 695 testlib.expect_snv_fail_at('btc_too_late', testlib.get_current_block(**kw)) res = testlib.blockstack_cli_get_namespace_blockchain_record('old_btc_2') if 'error' in res: print 'failed to reveal btc 2' print res return False res = testlib.blockstack_cli_get_namespace_blockchain_record( 'btc_too_late') if 'error' not in res: print 'revealed btc_too_late' print res return False
def scenario( wallets, **kw ): testlib.blockstack_namespace_preorder( "test", wallets[1].addr, wallets[0].privkey ) testlib.next_block( **kw ) testlib.blockstack_namespace_reveal( "test", wallets[1].addr, 52595, 250, 4, [6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0], 10, 10, wallets[0].privkey, version_bits=2) testlib.next_block( **kw ) testlib.blockstack_namespace_ready( "test", wallets[1].privkey ) testlib.next_block( **kw ) namespace_rec = testlib.blockstack_cli_get_namespace_blockchain_record("test") if 'error' in namespace_rec: print namespace_rec return False namespace_balance = testlib.get_balance(namespace_rec['address']) # should fail safety checks res = testlib.blockstack_name_preorder( "foo.test", wallets[2].privkey, wallets[3].addr, burn_addr=wallets[1].addr, expect_fail=True) if 'error' not in res: print res return False # should succeed to be transmitted and should be accepted res = testlib.blockstack_name_preorder( "foo.test", wallets[2].privkey, wallets[3].addr, burn_addr=wallets[1].addr, safety_checks=False, tx_fee=300 * 5) if 'error' in res: print res return False testlib.next_block( **kw ) res = testlib.blockstack_name_register( "foo.test", wallets[2].privkey, wallets[3].addr, safety_checks=False, tx_fee=300*5 ) if 'error 'in res: print res return False testlib.next_block( **kw ) testlib.expect_snv_fail_at( "foo.test", testlib.get_current_block(**kw)) # should NOT have registered (wrong burn address) name_rec = testlib.get_name_blockchain_record('foo.test') if 'error' not in name_rec: print name_rec return False # try again, with the right burn address but the same register address (should be rejected) res = testlib.blockstack_name_preorder("foo.test", wallets[2].privkey, wallets[3].addr, burn_addr=wallets[0].addr, safety_checks=False, tx_fee=300 * 5) if 'error' in res: print res return False testlib.next_block( **kw ) nameops = blockstack.lib.client.get_blockstack_transactions_at(testlib.get_current_block(**kw), hostport='http://localhost:16264') if 'error' in nameops: print nameops return False if len(nameops) > 0: print nameops return False # try again, but with the right burn address AND a different register address (should be accepted) res = testlib.blockstack_name_preorder("foo.test", wallets[2].privkey, wallets[4].addr, burn_addr=wallets[0].addr, safety_checks=False, tx_fee=300 * 5) if 'error' in res: print res return False testlib.next_block( **kw ) # should succeed res = testlib.blockstack_name_register( "foo.test", wallets[2].privkey, wallets[4].addr ) if 'error 'in res: print res return False testlib.next_block( **kw ) # should have registered name_rec = testlib.get_name_blockchain_record('foo.test') if 'error' in name_rec: print name_rec return False new_namespace_balance = testlib.get_balance(namespace_rec['address']) name_cost = name_rec['op_fee'] if new_namespace_balance - namespace_balance != name_cost * 2: print 'address {} did not get credited'.format(namespace_rec['address']) print '{} != {} + {}'.format(new_namespace_balance, namespace_balance, name_cost * 2) return False