예제 #1
0
 def do_test_solve(self, tx, tx_in_idx, **kwargs):
     solver = Solver(tx)
     constraints = solver.determine_constraints(tx_in_idx, p2sh_lookup=kwargs.get("p2sh_lookup"))
     solution_list, witness_list = solver.solve_for_constraints(constraints, **kwargs)
     solution_script = BitcoinScriptTools.compile_push_data_list(solution_list)
     tx.txs_in[tx_in_idx].script = solution_script
     tx.txs_in[tx_in_idx].witness = witness_list
     if not kwargs.get("nocheck"):
         tx.check_solution(tx_in_idx)
     return solution_script, witness_list
예제 #2
0
 def do_test_solve(self, tx, tx_in_idx, **kwargs):
     solver = Solver(tx)
     constraints = solver.determine_constraints(
         tx_in_idx, p2sh_lookup=kwargs.get("p2sh_lookup"))
     solution_list, witness_list = solver.solve_for_constraints(
         constraints, **kwargs)
     solution_script = BitcoinScriptTools.compile_push_data_list(
         solution_list)
     tx.txs_in[tx_in_idx].script = solution_script
     tx.txs_in[tx_in_idx].witness = witness_list
     if not kwargs.get("nocheck"):
         tx.check_solution(tx_in_idx)
     return solution_script, witness_list
예제 #3
0
 def test_nulldata_push(self):
     OP_RETURN = BitcoinScriptTools.compile("OP_RETURN")
     for sample in [b'test', b'me', b'a', b'39qEwuwyb2cAX38MFtrNzvq3KV9hSNov3q', b'', b'0'*80]:
         sample_push = BitcoinScriptTools.compile_push_data_list([sample])
         sample_script = OP_RETURN + sample_push
         sc = script_for_nulldata_push(sample)
         info = script_info_for_script(sc)
         self.assertEqual(info.get("data"), sample_push)
         self.assertEqual(sc, sample_script)
         out = Tx.TxOut(1, sc)
         # ensure we can create a tx
         Tx(0, [], [out])
         # convert between asm and back to ensure no bugs with compilation
         self.assertEqual(sc, BitcoinScriptTools.compile(BitcoinScriptTools.disassemble(sc)))
예제 #4
0
 def test_nulldata_push(self):
     OP_RETURN = BitcoinScriptTools.compile("OP_RETURN")
     for sample in [b'test', b'me', b'a', b'39qEwuwyb2cAX38MFtrNzvq3KV9hSNov3q', b'', b'0'*80]:
         sample_push = BitcoinScriptTools.compile_push_data_list([sample])
         sample_script = OP_RETURN + sample_push
         sc = script_for_nulldata_push(sample)
         info = script_info_for_script(sc)
         self.assertEqual(info.get("data"), sample_push)
         self.assertEqual(sc, sample_script)
         out = Tx.TxOut(1, sc)
         # ensure we can create a tx
         Tx(0, [], [out])
         # convert between asm and back to ensure no bugs with compilation
         self.assertEqual(sc, BitcoinScriptTools.compile(BitcoinScriptTools.disassemble(sc)))