def METHOD_NAME(self):
    self.log.info("Tests with node running in -blocksonly mode")
    assert_equal(self.nodes[0].getnetworkinfo()['localrelay'], False)
    self.nodes[0].add_p2p_connection(P2PInterface())
    tx, txid, wtxid, tx_hex = self.check_p2p_tx_violation()
    self.log.info('Check that tx invs also violate the protocol')
    self.nodes[0].add_p2p_connection(P2PInterface())
    with self.nodes[0].assert_debug_log(['transaction (0000000000000000000000000000000000000000000000000000000000001234) inv sent in violation of protocol, disconnecting peer']):
        self.nodes[0].p2ps[0].send_message(msg_inv([CInv(t=MSG_WTX, h=0x1234)]))
        self.nodes[0].p2ps[0].wait_for_disconnect()
        del self.nodes[0].p2ps[0]
    self.log.info('Check that txs from rpc are not rejected and relayed to other peers')
    tx_relay_peer = self.nodes[0].add_p2p_connection(P2PInterface())
    assert_equal(self.nodes[0].getpeerinfo()[0]['relaytxes'], True)
    assert_equal(self.nodes[0].testmempoolaccept([tx_hex])[0]['allowed'], True)
    with self.nodes[0].assert_debug_log(['received getdata for: wtx {} peer'.format(wtxid)]):
        self.nodes[0].sendrawtransaction(tx_hex)
        tx_relay_peer.wait_for_tx(txid)
        assert_equal(self.nodes[0].getmempoolinfo()['size'], 1)
    self.log.info("Restarting node 0 with relay permission and blocksonly")
    self.restart_node(0, ["-persistmempool=0", "-whitelist=relay@127.0.0.1", "-blocksonly"])
    assert_equal(self.nodes[0].getrawmempool(), [])
    first_peer = self.nodes[0].add_p2p_connection(P2PInterface())
    second_peer = self.nodes[0].add_p2p_connection(P2PInterface())
    peer_1_info = self.nodes[0].getpeerinfo()[0]
    assert_equal(peer_1_info['permissions'], ['relay'])
    assert_equal(first_peer.relay, 1)
    peer_2_info = self.nodes[0].getpeerinfo()[1]
    assert_equal(peer_2_info['permissions'], ['relay'])
    assert_equal(self.nodes[0].testmempoolaccept([tx_hex])[0]['allowed'], True)
    self.log.info('Check that the tx from first_peer with relay-permission is relayed to others (ie.second_peer)')
    with self.nodes[0].assert_debug_log(["received getdata"]):
        # Note that normally, first_peer would never send us transactions since we're a blocksonly node.
        # By activating blocksonly, we explicitly tell our peers that they should not send us transactions,
        # and Bitcoin Core respects that choice and will not send transactions.
        # But if, for some reason, first_peer decides to relay transactions to us anyway, we should relay them to
        # second_peer since we gave relay permission to first_peer.
        # See https://github.com/bitcoin/bitcoin/issues/19943 for details.
        first_peer.send_message(msg_tx(tx))
        self.log.info('Check that the peer with relay-permission is still connected after sending the transaction')
        assert_equal(first_peer.is_connected, True)
        second_peer.wait_for_tx(txid)
        assert_equal(self.nodes[0].getmempoolinfo()['size'], 1)
    self.log.info("Relay-permission peer's transaction is accepted and relayed")
    self.nodes[0].disconnect_p2ps()
    self.generate(self.nodes[0], 1)