def push_script(x): """Return hex-encoded PUSH operation. Args: x(str): Hex-encoded string to push. """ return CScriptOp.encode_op_pushdata(x.decode('hex')).encode('hex')
def send(self, amt=MIN_TAX, tax=MIN_TAX, dummy=False): (i, s) = self._i(amt, tax) o = self._o(s, amt, tax, i) self._create(i, o) assert(s - tax == round(sum([ v * 10 ** 8 for k, v in o.items() ]))) # get the unpacked data and edit to suit our needs d = self.tx.unpack() # prep the OP_RETURN payload p = CScriptOp.encode_op_pushdata(self.msg) # append OP_RETURN tx out d['vout'].append({ 'value' : 0, 'scriptPubKey' : RawTx.BinaryStream._unpack_hex(p) + '6a', }) self.tx.pack(d) # signed, sealed, delivered # we're using the base _CALL() function to bypass bitcoin.rpc's object shenanigans tx = RawTx(self.proxy, self.proxy._call('signrawtransaction', self.tx.raw)['hex']) if not dummy: self.txid = self.proxy._call('sendrawtransaction', tx.raw) return str(self.txid)
OP_CHECKSEQUENCEVERIFY, OP_EQUALVERIFY, OP_CHECKMULTISIG, OP_DUP, OP_HASH160, OP_CHECKSIG, OP_VERIFY, CScript, CScriptOp, ) from naive_eval import eval_script s = eval_script([], CScript([])) print("blank is fine", len(s)) n = CScriptOp.encode_op_pushdata(b"qowie") s = eval_script([n], CScript([n, OP_EQUALVERIFY])) print("equalverify is fine", len(s)) s = eval_script( [ CScriptOp.encode_op_pushdata( unhexlify( "30450220377bf4cab9bbdb219f1b0cca56f4a39fbf787d6fa9d04e248101d498de991d30022100b8e0c72dfab9a0d88eb2703c62e0e57ab2cb906e8f156b7641c2f0e24b8bba2b01" )), ], CScript([ CScriptOp.encode_op_pushdata( unhexlify( "045e9392308b08d0d663961463b6cd056a66b757a2ced9dde197c21362360237f231b80ea66315898969f5c079f0ba3fc1c0661ed8c853ad15043f22f2b7779c95" )),
def push_script(x): return CScriptOp.encode_op_pushdata(x.decode('hex')).encode('hex')