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()