Beispiel #1
0
    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)
Beispiel #2
0
    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()