def test_create_submit_work(self): """ Test the creatework / submitwork method pair. """ # Check for errors with wrong parameters. assert_raises_rpc_error(-1, None, self.nodes[0].creatework) assert_raises_rpc_error(-5, "Invalid coinbase payout address", self.nodes[0].creatework, "this_an_invalid_address") # Fix a coinbase address and construct methods for it. coinbaseAddr = self.nodes[0].getnewaddress() def create(): return self.nodes[0].creatework(coinbaseAddr) submit = self.nodes[0].submitwork # Run common tests. self.test_common(create, submit) # Ensure that the payout address is the one which we specify hash1 = mineWorkBlockWithMethods(self.nodes[0], create, submit) hash2 = mineWorkBlockWithMethods(self.nodes[0], create, submit) addr1 = getCoinbaseAddr(self.nodes[0], hash1) addr2 = getCoinbaseAddr(self.nodes[0], hash2) assert_equal(addr1, coinbaseAddr) assert_equal(addr2, coinbaseAddr)
def test_getwork(self): """ Test the getwork method. """ create = self.nodes[0].getwork submit = self.nodes[0].getwork self.test_common(create, submit) # Ensure that the payout address is changed from one block to the next. hash1 = mineWorkBlockWithMethods(self.nodes[0], create, submit) hash2 = mineWorkBlockWithMethods(self.nodes[0], create, submit) addr1 = getCoinbaseAddr(self.nodes[0], hash1) addr2 = getCoinbaseAddr(self.nodes[0], hash2) assert addr1 != addr2 info = self.nodes[0].getaddressinfo(addr1) assert info['ismine'] info = self.nodes[0].getaddressinfo(addr2) assert info['ismine']
def test_create_submit_work(self): """ Test the creatework / submitwork method pair. """ # Check for errors with wrong parameters. assert_raises_rpc_error(-1, None, self.nodes[0].creatework) assert_raises_rpc_error(-5, "Invalid coinbase payout address", self.nodes[0].creatework, "this_an_invalid_address") # Fix a coinbase address and construct methods for it. coinbaseAddr = self.nodes[0].getnewaddress() def create(): return self.nodes[0].creatework(coinbaseAddr) submit = self.nodes[0].submitwork # Run common tests. self.test_common(create, submit) # Ensure that the payout address is the one which we specify hash1 = mineWorkBlockWithMethods(self.nodes[0], create, submit) hash2 = mineWorkBlockWithMethods(self.nodes[0], create, submit) addr1 = getCoinbaseAddr(self.nodes[0], hash1) addr2 = getCoinbaseAddr(self.nodes[0], hash2) assert_equal(addr1, coinbaseAddr) assert_equal(addr2, coinbaseAddr) # Ensure that different payout addresses will generate different auxblocks work1 = self.nodes[0].creatework(self.nodes[0].getnewaddress()) work2 = self.nodes[0].creatework(self.nodes[0].getnewaddress()) assert work1['hash'] != work2['hash'] # Test that submitwork works also with just one argument. def submitOnlyData(hash, data): return self.nodes[0].submitwork(data) mineWorkBlockWithMethods(self.nodes[0], create, submitOnlyData)