mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-03 10:18:41 +02:00
doc: Use precise permission flags where possible
This commit is contained in:
@@ -57,10 +57,10 @@ class P2PBlocksOnly(BitcoinTestFramework):
|
||||
self.nodes[0].p2p.wait_for_tx(txid)
|
||||
assert_equal(self.nodes[0].getmempoolinfo()['size'], 1)
|
||||
|
||||
self.log.info('Check that txs from whitelisted peers are not rejected and relayed to others')
|
||||
self.log.info("Restarting node 0 with whitelist permission and blocksonly")
|
||||
self.log.info('Check that txs from forcerelay peers are not rejected and relayed to others')
|
||||
self.log.info("Restarting node 0 with forcerelay permission and blocksonly")
|
||||
self.restart_node(0, ["-persistmempool=0", "-whitelist=127.0.0.1", "-whitelistforcerelay", "-blocksonly"])
|
||||
assert_equal(self.nodes[0].getrawmempool(),[])
|
||||
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]
|
||||
@@ -72,14 +72,15 @@ class P2PBlocksOnly(BitcoinTestFramework):
|
||||
assert_equal(self.nodes[0].testmempoolaccept([sigtx])[0]['allowed'], True)
|
||||
txid = self.nodes[0].testmempoolaccept([sigtx])[0]['txid']
|
||||
|
||||
self.log.info('Check that the tx from whitelisted first_peer is relayed to others (ie.second_peer)')
|
||||
self.log.info('Check that the tx from forcerelay first_peer is relayed to others (ie.second_peer)')
|
||||
with self.nodes[0].assert_debug_log(["received getdata"]):
|
||||
first_peer.send_message(msg_tx(FromHex(CTransaction(), sigtx)))
|
||||
self.log.info('Check that the whitelisted peer is still connected after sending the transaction')
|
||||
self.log.info('Check that the forcerelay peer 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("Whitelisted peer's transaction is accepted and relayed")
|
||||
self.log.info("Forcerelay peer's transaction is accepted and relayed")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
P2PBlocksOnly().main()
|
||||
|
||||
@@ -108,9 +108,9 @@ class P2PPermissionsTests(BitcoinTestFramework):
|
||||
block_op_true = self.nodes[0].getblock(self.nodes[0].generatetoaddress(100, ADDRESS_BCRT1_P2WSH_OP_TRUE)[0])
|
||||
self.sync_all()
|
||||
|
||||
self.log.debug("Create a connection from a whitelisted wallet that rebroadcasts raw txs")
|
||||
self.log.debug("Create a connection from a forcerelay peer that rebroadcasts raw txs")
|
||||
# A python mininode is needed to send the raw transaction directly. If a full node was used, it could only
|
||||
# rebroadcast via the inv-getdata mechanism. However, even for whitelisted connections, a full node would
|
||||
# rebroadcast via the inv-getdata mechanism. However, even for forcerelay connections, a full node would
|
||||
# currently not request a txid that is already in the mempool.
|
||||
self.restart_node(1, extra_args=["-whitelist=forcerelay@127.0.0.1"])
|
||||
p2p_rebroadcast_wallet = self.nodes[1].add_p2p_connection(P2PDataStore())
|
||||
@@ -135,7 +135,7 @@ class P2PPermissionsTests(BitcoinTestFramework):
|
||||
|
||||
self.log.debug("Check that node[1] will send the tx to node[0] even though it is already in the mempool")
|
||||
connect_nodes(self.nodes[1], 0)
|
||||
with self.nodes[1].assert_debug_log(["Force relaying tx {} from whitelisted peer=0".format(txid)]):
|
||||
with self.nodes[1].assert_debug_log(["Force relaying tx {} from peer=0".format(txid)]):
|
||||
p2p_rebroadcast_wallet.send_txs_and_test([tx], self.nodes[1])
|
||||
wait_until(lambda: txid in self.nodes[0].getrawmempool())
|
||||
|
||||
@@ -146,7 +146,7 @@ class P2PPermissionsTests(BitcoinTestFramework):
|
||||
[tx],
|
||||
self.nodes[1],
|
||||
success=False,
|
||||
reject_reason='Not relaying non-mempool transaction {} from whitelisted peer=0'.format(txid),
|
||||
reject_reason='Not relaying non-mempool transaction {} from forcerelay peer=0'.format(txid),
|
||||
)
|
||||
|
||||
def checkpermission(self, args, expectedPermissions, whitelisted):
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test processing of unrequested blocks.
|
||||
|
||||
Setup: two nodes, node0+node1, not connected to each other. Node1 will have
|
||||
Setup: two nodes, node0 + node1, not connected to each other. Node1 will have
|
||||
nMinimumChainWork set to 0x10, so it won't process low-work unrequested blocks.
|
||||
|
||||
We have one P2PInterface connection to node0 called test_node, and one to node1
|
||||
@@ -71,18 +71,10 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||
self.extra_args = [[], ["-minimumchainwork=0x10"]]
|
||||
|
||||
def setup_network(self):
|
||||
# Node0 will be used to test behavior of processing unrequested blocks
|
||||
# from peers which are not whitelisted, while Node1 will be used for
|
||||
# the whitelisted case.
|
||||
# Node2 will be used for non-whitelisted peers to test the interaction
|
||||
# with nMinimumChainWork.
|
||||
self.setup_nodes()
|
||||
|
||||
def run_test(self):
|
||||
# Setup the p2p connections
|
||||
# test_node connects to node0 (not whitelisted)
|
||||
test_node = self.nodes[0].add_p2p_connection(P2PInterface())
|
||||
# min_work_node connects to node1 (whitelisted)
|
||||
min_work_node = self.nodes[1].add_p2p_connection(P2PInterface())
|
||||
|
||||
# 1. Have nodes mine a block (leave IBD)
|
||||
@@ -226,7 +218,7 @@ class AcceptBlockTest(BitcoinTestFramework):
|
||||
self.nodes[0].getblock(all_blocks[286].hash)
|
||||
assert_equal(self.nodes[0].getbestblockhash(), all_blocks[286].hash)
|
||||
assert_raises_rpc_error(-1, "Block not found on disk", self.nodes[0].getblock, all_blocks[287].hash)
|
||||
self.log.info("Successfully reorged to longer chain from non-whitelisted peer")
|
||||
self.log.info("Successfully reorged to longer chain")
|
||||
|
||||
# 8. Create a chain which is invalid at a height longer than the
|
||||
# current chain, but which has more blocks on top of that
|
||||
|
||||
Reference in New Issue
Block a user