def add_inputs(self, rawtx, wifs, change_address=None, fee=10000, dont_sign=False): """Add sufficient inputs from given <wifs> to cover <rawtx> outputs and <fee>. If no <change_address> is given, change will be sent to first wif. """ tx = deserialize.tx(rawtx) keys = deserialize.keys(self.testnet, wifs) fee = deserialize.positive_integer(fee) if change_address is not None: change_address = deserialize.address(self.testnet, change_address) tx = control.add_inputs(self.service, self.testnet, tx, keys, change_address=change_address, fee=fee) if not dont_sign: tx = control.sign_tx(self.service, self.testnet, tx, keys) return serialize.tx(tx)
def test_invalid_netcode(self): testnet_address = "mgBJ5bG9mQw8mHHcVEJghMamQEXeNLtvpt" mainnet_address = "1BTF7gU1EmgasGh85ypacDvsVKg4weZMfz" # testnet positive address = deserialize.address(True, testnet_address) self.assertEqual(testnet_address, address) # mainnet positive address = deserialize.address(False, mainnet_address) self.assertEqual(mainnet_address, address) # testnet negative def callback(): deserialize.address(False, testnet_address) self.assertRaises(exceptions.InvalidAddress, callback) # mainnet negative def callback(): deserialize.address(True, mainnet_address) self.assertRaises(exceptions.InvalidAddress, callback) # non string testnet def callback(): deserialize.address(False, None) self.assertRaises(exceptions.InvalidInput, callback) # non string mainnet def callback(): deserialize.address(True, None) self.assertRaises(exceptions.InvalidInput, callback) # garbage string testnet def callback(): deserialize.address(False, "garbage") self.assertRaises(exceptions.InvalidAddress, callback) # garbage string mainnet def callback(): deserialize.address(True, "garbage") self.assertRaises(exceptions.InvalidAddress, callback)
def verify_signature(self, address, signature, hexdata): """Verify <signature> of <hexdata> by <address>.""" try: address = deserialize.address(self.testnet, address) data = deserialize.binary(hexdata) signature = deserialize.signature(signature) return control.verify_signature(self.testnet, address, signature, data) except exceptions.InvalidAddress: return False
def callback(): deserialize.address(False, testnet_address)
def validate_address(self, address): # TODO test try: deserialize.address(self.testnet, address) return True except exceptions.InvalidInput: return False
def callback(): deserialize.address(True, "garbage")
def callback(): deserialize.address(True, None)
def callback(): deserialize.address(False, "garbage")
def callback(): deserialize.address(False, None)
def get_transactions(self, address): address = deserialize.address(self.testnet, address) return self.service.transactions_for_address(address)
def callback(): deserialize.address(True, mainnet_address)
def address_network(address, testnet): try: deserialize.address(testnet, address) return True except exceptions.InvalidInput: return False