def test_chain(self): node = self.nodes[0] first_coin = self.coins.pop() (chain_hex, chain_txns) = create_raw_chain(node, first_coin, self.address, self.privkeys) self.log.info( "Check that testmempoolaccept requires packages to be sorted by dependency" ) assert_equal(node.testmempoolaccept(rawtxs=chain_hex[::-1]), [{ "txid": tx.rehash(), "wtxid": tx.getwtxid(), "package-error": "package-not-sorted" } for tx in chain_txns[::-1]]) self.log.info("Testmempoolaccept a chain of 25 transactions") testres_multiple = node.testmempoolaccept(rawtxs=chain_hex) testres_single = [] # Test accept and then submit each one individually, which should be identical to package test accept for rawtx in chain_hex: testres = node.testmempoolaccept([rawtx]) testres_single.append(testres[0]) # Submit the transaction now so its child should have no problem validating node.sendrawtransaction(rawtx) assert_equal(testres_single, testres_multiple) # Clean up by clearing the mempool self.generate(node, 1)
def test_submitpackage(self): node = self.nodes[0] self.log.info( "Submitpackage valid packages with 1 child and some number of parents" ) for num_parents in [1, 2, 24]: self.test_submit_child_with_parents(num_parents, False) self.test_submit_child_with_parents(num_parents, True) self.log.info("Submitpackage valid packages with CPFP") self.test_submit_cpfp() self.log.info( "Submitpackage only allows packages of 1 child with its parents") # Chain of 3 transactions has too many generations chain_hex, _ = create_raw_chain(node, self.coins.pop(), self.address, self.privkeys, 3) assert_raises_rpc_error(-25, "not-child-with-parents", node.submitpackage, chain_hex)