/ test / functional / wallet_timelock.py
wallet_timelock.py
 1  #!/usr/bin/env python3
 2  # Copyright (c) 2022 The Bitcoin Core developers
 3  # Distributed under the MIT software license, see the accompanying
 4  # file COPYING or http://www.opensource.org/licenses/mit-license.php.
 5  
 6  from test_framework.test_framework import BitcoinTestFramework
 7  from test_framework.util import assert_equal
 8  
 9  
10  class WalletLocktimeTest(BitcoinTestFramework):
11      def add_options(self, parser):
12          self.add_wallet_options(parser)
13  
14      def set_test_params(self):
15          self.num_nodes = 1
16  
17      def skip_test_if_missing_module(self):
18          self.skip_if_no_wallet()
19  
20      def run_test(self):
21          node = self.nodes[0]
22  
23          mtp_tip = node.getblockheader(node.getbestblockhash())["mediantime"]
24  
25          self.log.info("Get new address with label")
26          label = "timelock⌛🔓"
27          address = node.getnewaddress(label=label)
28  
29          self.log.info("Send to new address with locktime")
30          node.send(
31              outputs={address: 5},
32              locktime=mtp_tip - 1,
33          )
34          self.generate(node, 1)
35  
36          self.log.info("Check that clock cannot change finality of confirmed txs")
37          amount_before_ad = node.getreceivedbyaddress(address)
38          amount_before_lb = node.getreceivedbylabel(label)
39          list_before_ad = node.listreceivedbyaddress(address_filter=address)
40          list_before_lb = node.listreceivedbylabel(include_empty=False)
41          balance_before = node.getbalances()["mine"]["trusted"]
42          coin_before = node.listunspent(maxconf=1)
43          node.setmocktime(mtp_tip - 1)
44          assert_equal(node.getreceivedbyaddress(address), amount_before_ad)
45          assert_equal(node.getreceivedbylabel(label), amount_before_lb)
46          assert_equal(node.listreceivedbyaddress(address_filter=address), list_before_ad)
47          assert_equal(node.listreceivedbylabel(include_empty=False), list_before_lb)
48          assert_equal(node.getbalances()["mine"]["trusted"], balance_before)
49          assert_equal(node.listunspent(maxconf=1), coin_before)
50  
51  
52  if __name__ == "__main__":
53      WalletLocktimeTest().main()