def test_transfer_2of2_offline(self): # Send a 2 of 2 transaction from dpaygo5 which needs dpaygo4's cosign to send # funds but sign the transaction with dpaygo5's key and then serialize the transaction # and deserialize the transaction. After that, sign with dpaygo4's key. dpay = self.bts dpay.nobroadcast = False dpay.wallet.unlock("123") dpay.wallet.removeAccount("dpaygo4") tx = TransactionBuilder(dpay_instance=dpay) tx.appendOps( Transfer( **{ "from": 'dpaygo5', "to": 'dpaygo', "amount": '0.01 BBD', "memo": '2 of 2 serialized/deserialized transaction' })) tx.appendSigner("dpaygo5", "active") tx.addSigningInformation("dpaygo5", "active") tx.sign() tx.clearWifs() self.assertEqual(len(tx['signatures']), 1) dpay.wallet.removeAccount("dpaygo5") dpay.wallet.addPrivateKey(self.active_private_key_of_dpaygo4) tx.appendMissingSignatures() tx.sign(reconstruct_tx=False) self.assertEqual(len(tx['signatures']), 2) tx.broadcast() dpay.nobroadcast = True dpay.wallet.addPrivateKey(self.active_private_key_of_dpaygo5)
def test_transfer_2of2_wif(self): nodelist = NodeList() # Send a 2 of 2 transaction from elf which needs dpaygo4's cosign to send # funds but sign the transaction with elf's key and then serialize the transaction # and deserialize the transaction. After that, sign with dpaygo4's key. dpay = DPay( node=nodelist.get_testnet(), num_retries=10, keys=[self.active_private_key_of_dpaygo5], expiration=360, ) tx = TransactionBuilder(dpay_instance=dpay) tx.appendOps( Transfer( **{ "from": 'dpaygo5', "to": 'dpaygo', "amount": '0.01 BBD', "memo": '2 of 2 serialized/deserialized transaction' })) tx.appendSigner("dpaygo5", "active") tx.addSigningInformation("dpaygo5", "active") tx.sign() tx.clearWifs() self.assertEqual(len(tx['signatures']), 1) tx_json = tx.json() del dpay del tx dpay = DPay( node=nodelist.get_testnet(), num_retries=10, keys=[self.active_private_key_of_dpaygo4], expiration=360, ) new_tx = TransactionBuilder(tx=tx_json, dpay_instance=dpay) new_tx.appendMissingSignatures() new_tx.sign(reconstruct_tx=False) self.assertEqual(len(new_tx['signatures']), 2) new_tx.broadcast()