コード例 #1
0
    def test_feefilter(self):
        node1 = self.nodes[1]
        node0 = self.nodes[0]

        conn = self.nodes[0].add_p2p_connection(TestP2PConn())

        # Test that invs are received by test connection for all txs at
        # feerate of .2 sat/byte
        node1.settxfee(Decimal("2"))
        txids = [
            node1.sendtoaddress(node1.getnewaddress(), 1000000)
            for x in range(3)
        ]
        assert allInvsMatch(txids, conn)
        conn.clear_invs()

        # Set a filter of .15 sat/byte on test connection
        conn.send_and_ping(msg_feefilter(150))

        # Test that txs are still being received by test connection
        # (paying .15 sat/byte)
        node1.settxfee(Decimal("1.5"))
        txids = [
            node1.sendtoaddress(node1.getnewaddress(), 1000000)
            for x in range(3)
        ]
        assert allInvsMatch(txids, conn)
        conn.clear_invs()

        # Change tx fee rate to .1 sat/byte and test they are no longer received
        # by the test connection
        node1.settxfee(Decimal("1"))
        [node1.sendtoaddress(node1.getnewaddress(), 1000000) for x in range(3)]
        self.sync_mempools()  # must be sure node 0 has received all txs

        # Send one transaction from node0 that should be received, so that we
        # we can sync the test on receipt (if node1's txs were relayed, they'd
        # be received by the time this node0 tx is received). This is
        # unfortunately reliant on the current relay behavior where we batch up
        # to 35 entries in an inv, which means that when this next transaction
        # is eligible for relay, the prior transactions from node1 are eligible
        # as well.
        node0.settxfee(Decimal("200.00"))
        txids = [node0.sendtoaddress(node0.getnewaddress(), 1000000)]
        assert allInvsMatch(txids, conn)
        conn.clear_invs()

        # Remove fee filter and check that txs are received again
        conn.send_and_ping(msg_feefilter(0))
        txids = [
            node1.sendtoaddress(node1.getnewaddress(), 1000000)
            for x in range(3)
        ]
        assert allInvsMatch(txids, conn)
        conn.clear_invs()
コード例 #2
0
    def run_test(self):
        node1 = self.nodes[1]
        node0 = self.nodes[0]
        # Get out of IBD
        node1.generate(1)
        sync_blocks(self.nodes)

        # Setup the p2p connections and start up the network thread.
        self.nodes[0].add_p2p_connection(TestNode())
        network_thread_start()
        self.nodes[0].p2p.wait_for_verack()

        # Test that invs are received for all txs at feerate of 20 sat/byte
        node1.settxfee(Decimal("0.00020000"))
        txids = [
            node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)
        ]
        assert (allInvsMatch(txids, self.nodes[0].p2p))
        self.nodes[0].p2p.clear_invs()

        # Set a filter of 15 sat/byte
        self.nodes[0].p2p.send_and_ping(msg_feefilter(15000))

        # Test that txs are still being received (paying 20 sat/byte)
        txids = [
            node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)
        ]
        assert (allInvsMatch(txids, self.nodes[0].p2p))
        self.nodes[0].p2p.clear_invs()

        # Change tx fee rate to 10 sat/byte and test they are no longer
        # received
        node1.settxfee(Decimal("0.00010000"))
        [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
        sync_mempools(self.nodes)  # must be sure node 0 has received all txs

        # Send one transaction from node0 that should be received, so that we
        # we can sync the test on receipt (if node1's txs were relayed, they'd
        # be received by the time this node0 tx is received). This is
        # unfortunately reliant on the current relay behavior where we batch up
        # to 35 entries in an inv, which means that when this next transaction
        # is eligible for relay, the prior transactions from node1 are eligible
        # as well.
        node0.settxfee(Decimal("0.00020000"))
        txids = [node0.sendtoaddress(node0.getnewaddress(), 1)]
        assert (allInvsMatch(txids, self.nodes[0].p2p))
        self.nodes[0].p2p.clear_invs()

        # Remove fee filter and check that txs are received again
        self.nodes[0].p2p.send_and_ping(msg_feefilter(0))
        txids = [
            node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)
        ]
        assert (allInvsMatch(txids, self.nodes[0].p2p))
        self.nodes[0].p2p.clear_invs()
コード例 #3
0
ファイル: p2p_feefilter.py プロジェクト: amaher00/KPICoin
    def test_feefilter(self):
        node1 = self.nodes[1]
        node0 = self.nodes[0]

        conn = self.nodes[0].add_p2p_connection(TestP2PConn())

        self.log.info(
            "Test txs paying 0.2 sat/byte are received by test connection")
        node1.settxfee(Decimal("0.00000200"))
        txids = [
            node1.sendtoaddress(node1.getnewaddress(), 1) for _ in range(3)
        ]
        conn.wait_for_invs_to_match(txids)
        conn.clear_invs()

        # Set a fee filter of 0.15 sat/byte on test connection
        conn.send_and_ping(msg_feefilter(150))

        self.log.info(
            "Test txs paying 0.15 sat/byte are received by test connection")
        node1.settxfee(Decimal("0.00000150"))
        txids = [
            node1.sendtoaddress(node1.getnewaddress(), 1) for _ in range(3)
        ]
        conn.wait_for_invs_to_match(txids)
        conn.clear_invs()

        self.log.info(
            "Test txs paying 0.1 sat/byte are no longer received by test connection"
        )
        node1.settxfee(Decimal("0.00000100"))
        [node1.sendtoaddress(node1.getnewaddress(), 1) for _ in range(3)]
        self.sync_mempools()  # must be sure node 0 has received all txs

        # Send one transaction from node0 that should be received, so that we
        # we can sync the test on receipt (if node1's txs were relayed, they'd
        # be received by the time this node0 tx is received). This is
        # unfortunately reliant on the current relay behavior where we batch up
        # to 35 entries in an inv, which means that when this next transaction
        # is eligible for relay, the prior transactions from node1 are eligible
        # as well.
        node0.settxfee(Decimal("0.00020000"))
        txids = [node0.sendtoaddress(node0.getnewaddress(), 1)]
        conn.wait_for_invs_to_match(txids)
        conn.clear_invs()

        self.log.info("Remove fee filter and check txs are received again")
        conn.send_and_ping(msg_feefilter(0))
        txids = [
            node1.sendtoaddress(node1.getnewaddress(), 1) for _ in range(3)
        ]
        conn.wait_for_invs_to_match(txids)
        conn.clear_invs()
コード例 #4
0
ファイル: p2p_feefilter.py プロジェクト: chaincoin/chaincoin
    def run_test(self):
        node1 = self.nodes[1]
        node0 = self.nodes[0]
        # Get out of IBD
        node1.generate(1)
        sync_blocks(self.nodes)

        self.nodes[0].add_p2p_connection(TestP2PConn())

        # Test that invs are received for all txs at feerate of 20 sat/byte
        node1.settxfee(Decimal("0.00020000"))
        txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
        assert(allInvsMatch(txids, self.nodes[0].p2p))
        self.nodes[0].p2p.clear_invs()

        # Set a filter of 15 sat/byte
        self.nodes[0].p2p.send_and_ping(msg_feefilter(15000))

        # Test that txs are still being received (paying 20 sat/byte)
        txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
        assert(allInvsMatch(txids, self.nodes[0].p2p))
        self.nodes[0].p2p.clear_invs()

        # Change tx fee rate to 10 sat/byte and test they are no longer received
        node1.settxfee(Decimal("0.00010000"))
        [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
        sync_mempools(self.nodes) # must be sure node 0 has received all txs

        # Send one transaction from node0 that should be received, so that we
        # we can sync the test on receipt (if node1's txs were relayed, they'd
        # be received by the time this node0 tx is received). This is
        # unfortunately reliant on the current relay behavior where we batch up
        # to 35 entries in an inv, which means that when this next transaction
        # is eligible for relay, the prior transactions from node1 are eligible
        # as well.
        node0.settxfee(Decimal("0.00020000"))
        txids = [node0.sendtoaddress(node0.getnewaddress(), 1)]
        assert(allInvsMatch(txids, self.nodes[0].p2p))
        self.nodes[0].p2p.clear_invs()

        # Remove fee filter and check that txs are received again
        self.nodes[0].p2p.send_and_ping(msg_feefilter(0))
        txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
        assert(allInvsMatch(txids, self.nodes[0].p2p))
        self.nodes[0].p2p.clear_invs()
コード例 #5
0
    def test_feefilter(self):
        node1 = self.nodes[1]
        node0 = self.nodes[0]
        miniwallet = MiniWallet(node1)
        # Add enough mature utxos to the wallet, so that all txs spend confirmed coins
        miniwallet.generate(5)
        node1.generate(100)

        conn = self.nodes[0].add_p2p_connection(TestP2PConn())

        self.log.info("Test txs paying 0.2 sat/byte are received by test connection")
        txids = [miniwallet.send_self_transfer(fee_rate=Decimal('0.00000200'), from_node=node1)['wtxid'] for _ in range(3)]
        conn.wait_for_invs_to_match(txids)
        conn.clear_invs()

        # Set a fee filter of 0.15 sat/byte on test connection
        conn.send_and_ping(msg_feefilter(150))

        self.log.info("Test txs paying 0.15 sat/byte are received by test connection")
        txids = [miniwallet.send_self_transfer(fee_rate=Decimal('0.00000150'), from_node=node1)['wtxid'] for _ in range(3)]
        conn.wait_for_invs_to_match(txids)
        conn.clear_invs()

        self.log.info("Test txs paying 0.1 sat/byte are no longer received by test connection")
        txids = [miniwallet.send_self_transfer(fee_rate=Decimal('0.00000100'), from_node=node1)['wtxid'] for _ in range(3)]
        self.sync_mempools()  # must be sure node 0 has received all txs

        # Send one transaction from node0 that should be received, so that we
        # we can sync the test on receipt (if node1's txs were relayed, they'd
        # be received by the time this node0 tx is received). This is
        # unfortunately reliant on the current relay behavior where we batch up
        # to 35 entries in an inv, which means that when this next transaction
        # is eligible for relay, the prior transactions from node1 are eligible
        # as well.
        txids = [miniwallet.send_self_transfer(fee_rate=Decimal('0.00020000'), from_node=node0)['wtxid'] for _ in range(1)]
        conn.wait_for_invs_to_match(txids)
        conn.clear_invs()
        self.sync_mempools()  # must be sure node 1 has received all txs

        self.log.info("Remove fee filter and check txs are received again")
        conn.send_and_ping(msg_feefilter(0))
        txids = [miniwallet.send_self_transfer(fee_rate=Decimal('0.00020000'), from_node=node1)['wtxid'] for _ in range(3)]
        conn.wait_for_invs_to_match(txids)
        conn.clear_invs()
コード例 #6
0
ファイル: p2p_feefilter.py プロジェクト: takagotch/coin2
  def run_test(self):
    node1 = self.nodes[1]
    node0 = self.nodes[0]

    node1.generate(1)
    self.sync_blocks()

    self.nodes[0].add_p2p_connection(TestP2PConn())

    node1.settxfee(Decimal("0.00000200"))
    txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
    assert allInvsMatch(txids, self.nodes[0].p2p)
    self.nodes[0].p2p.clear_invs()

    self.nodes[0].p2p.send_and_ping(msg_feefilter(150))

    node1.settxfee(Decimal("0.00000150"))
    txids = [node1.sendtoaddress(node1.getnewaddress(), 1), for x in range(3)]
コード例 #7
0
ファイル: p2p_feefilter.py プロジェクト: takagotch/coin2
    node1.settxfee(Decimal("0.00000200"))
    txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
    assert allInvsMatch(txids, self.nodes[0].p2p)
    self.nodes[0].p2p.clear_invs()

    self.nodes[0].p2p.send_and_ping(msg_feefilter(150))

    node1.settxfee(Decimal("0.00000150"))
    txids = [node1.sendtoaddress(node1.getnewaddress(), 1), for x in range(3)]
    assert allInvsMatch(txids, self.nodes[0].p2p)
    self.nodes[0].p2p.clear_invs()

    node1.settxfee(Decimal("0.000000100"))
    [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
    self.sync_mempools()

    node0.settxfee(Decimal("0.00020000"))
    txids = [node0.sendtoaddress(node0.getnewaddress(), 1)]
    assert allInvsMatch(txids, self.nodes[0].p2p)
    self.nodes[0].p2p.clear_invs()

    self.nodes[0].p2p.send_and_ping(msg_feefilter(0))
    txids = [node1.sendtoaddress(node1.getnewaddress(), 1) for x in range(3)]
    assert allInvsMatch(txids, self.nodes[0].p2p)
    self.nodes[0].p2p.clear_invs()

if __name__ = "__main__"
  FeeFilterTest().main()