1212the same local address. See Issue #14210 for more info.
1313Therefore, this test is limited to the remaining protection criteria.
1414"""
15-
1615import time
1716
18- from test_framework .blocktools import COINBASE_MATURITY , create_block , create_coinbase
17+ from test_framework .blocktools import (
18+ create_block ,
19+ create_coinbase ,
20+ )
1921from test_framework .p2p import (
2022 P2PDataStore ,
2123 P2PInterface ,
2527from test_framework .messages import (
2628 msg_pong ,
2729 msg_tx ,
28- tx_from_hex ,
2930)
30-
31+ from test_framework . wallet import MiniWallet
3132
3233class SlowP2PDataStore (P2PDataStore ):
3334 def on_ping (self , message ):
3435 time .sleep (0.1 )
3536 self .send_message (msg_pong (message .nonce ))
3637
38+
3739class SlowP2PInterface (P2PInterface ):
3840 def on_ping (self , message ):
3941 time .sleep (0.1 )
4042 self .send_message (msg_pong (message .nonce ))
4143
44+
4245class P2PEvict (BitcoinTestFramework ):
4346 def set_test_params (self ):
44- self .setup_clean_chain = True
4547 self .disable_mocktime = True
4648 self .num_nodes = 1
4749 # The choice of maxconnections=32 results in a maximum of 21 inbound connections
@@ -53,7 +55,8 @@ def run_test(self):
5355 protected_peers = set () # peers that we expect to be protected from eviction
5456 current_peer = - 1
5557 node = self .nodes [0 ]
56- self .generatetoaddress (node , COINBASE_MATURITY + 1 , node .get_deterministic_priv_key ().address )
58+ self .wallet = MiniWallet (node )
59+ self .wallet .rescan_utxos ()
5760
5861 self .log .info ("Create 4 peers and protect them from eviction by sending us a block" )
5962 for _ in range (4 ):
@@ -79,21 +82,8 @@ def run_test(self):
7982 current_peer += 1
8083 txpeer .sync_with_ping ()
8184
82- prevtx = node .getblock (node .getblockhash (i + 1 ), 2 )['tx' ][0 ]
83- rawtx = node .createrawtransaction (
84- inputs = [{'txid' : prevtx ['txid' ], 'vout' : 0 }],
85- outputs = [{node .get_deterministic_priv_key ().address : 50 - 0.00125 }],
86- )
87- sigtx = node .signrawtransactionwithkey (
88- hexstring = rawtx ,
89- privkeys = [node .get_deterministic_priv_key ().key ],
90- prevtxs = [{
91- 'txid' : prevtx ['txid' ],
92- 'vout' : 0 ,
93- 'scriptPubKey' : prevtx ['vout' ][0 ]['scriptPubKey' ]['hex' ],
94- }],
95- )['hex' ]
96- txpeer .send_message (msg_tx (tx_from_hex (sigtx )))
85+ tx = self .wallet .create_self_transfer ()['tx' ]
86+ txpeer .send_message (msg_tx (tx ))
9787 protected_peers .add (current_peer )
9888
9989 self .log .info ("Create 8 peers and protect them from eviction by having faster pings" )
@@ -133,5 +123,6 @@ def run_test(self):
133123 self .log .debug ("{} protected peers: {}" .format (len (protected_peers ), protected_peers ))
134124 assert evicted_peers [0 ] not in protected_peers
135125
126+
136127if __name__ == '__main__' :
137128 P2PEvict ().main ()
0 commit comments