@@ -57,6 +57,29 @@ def run_test(self):
57
57
self .nodes [0 ].p2p .wait_for_tx (txid )
58
58
assert_equal (self .nodes [0 ].getmempoolinfo ()['size' ], 1 )
59
59
60
+ self .log .info ('Check that txs from whitelisted peers are not rejected and relayed to others' )
61
+ self .log .info ("Restarting node 0 with whitelist permission and blocksonly" )
62
+ self .restart_node (0 , ["-persistmempool=0" , "-whitelist=127.0.0.1" , "-whitelistforcerelay" , "-blocksonly" ])
63
+ assert_equal (self .nodes [0 ].getrawmempool (),[])
64
+ first_peer = self .nodes [0 ].add_p2p_connection (P2PInterface ())
65
+ second_peer = self .nodes [0 ].add_p2p_connection (P2PInterface ())
66
+ peer_1_info = self .nodes [0 ].getpeerinfo ()[0 ]
67
+ assert_equal (peer_1_info ['whitelisted' ], True )
68
+ assert_equal (peer_1_info ['permissions' ], ['noban' , 'forcerelay' , 'relay' , 'mempool' ])
69
+ peer_2_info = self .nodes [0 ].getpeerinfo ()[1 ]
70
+ assert_equal (peer_2_info ['whitelisted' ], True )
71
+ assert_equal (peer_2_info ['permissions' ], ['noban' , 'forcerelay' , 'relay' , 'mempool' ])
72
+ assert_equal (self .nodes [0 ].testmempoolaccept ([sigtx ])[0 ]['allowed' ], True )
73
+ txid = self .nodes [0 ].testmempoolaccept ([sigtx ])[0 ]['txid' ]
74
+
75
+ self .log .info ('Check that the tx from whitelisted first_peer is relayed to others (ie.second_peer)' )
76
+ with self .nodes [0 ].assert_debug_log (["received getdata" ]):
77
+ first_peer .send_message (msg_tx (FromHex (CTransaction (), sigtx )))
78
+ self .log .info ('Check that the whitelisted peer is still connected after sending the transaction' )
79
+ assert_equal (first_peer .is_connected , True )
80
+ second_peer .wait_for_tx (txid )
81
+ assert_equal (self .nodes [0 ].getmempoolinfo ()['size' ], 1 )
82
+ self .log .info ("Whitelisted peer's transaction is accepted and relayed" )
60
83
61
84
if __name__ == '__main__' :
62
85
P2PBlocksOnly ().main ()
0 commit comments