@@ -57,6 +57,29 @@ def run_test(self):
5757 self .nodes [0 ].p2p .wait_for_tx (txid )
5858 assert_equal (self .nodes [0 ].getmempoolinfo ()['size' ], 1 )
5959
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" )
6083
6184if __name__ == '__main__' :
6285 P2PBlocksOnly ().main ()
0 commit comments