transaction = serializable_unsigned_transaction_from_dict(txmap) # 感受下transaction encode的原始数据 print(encode_hex(rlp.encode(transaction))) # 实际上只需要用sign_transaction就可以获得rawTransaction的编码数据了,input :txmap,私钥 signedTxResult = Account.sign_transaction(txmap, ac2.privateKey) print(signedTxResult) # signedTxResult.rawTransaction是二进制的,要放到rpc接口里要encode下 print(encode_hex(signedTxResult.rawTransaction)) url = "http://119.23.46.126:8545" rpc = utils.rpc.HTTPProvider(url) if True: param = [1, encode_hex(signedTxResult.rawTransaction)] # 发送 response = rpc.make_request("sendRawTransaction", param) print("deploy", response) txid = response['result'] param = [1, txid] i = 0 for i in range(0, 15): response = rpc.make_request("getTransactionReceipt", param) print("getTransactionReceipt : ", response) if response["result"] is None: time.sleep(1) continue result = response["result"] newaddr = result['contractAddress'] blocknum = result['blockNumber'] print("onblock : %d newaddr : %s " % (int(blocknum, 16), newaddr)) contractname = os.path.splitext(os.path.basename(contractFile))[0]
import ssl import utils.rpc import sys print(sys.path) url = "http://119.23.46.126:8545" rpc = utils.rpc.HTTPProvider(url) rpc.isConnected() param = [1] bn = rpc.make_request("getBlockNumber", param) if "error" in bn: print("error %d, [%s]" % (bn["error"]["code"], bn["error"]["message"])) else: print("********", int(bn['result'], 16)) txhash = "0x27a7e7c14470a534cbf491310d85ad8e5620a893637cc47cfac964413bb08bf9" tx = rpc.make_request("getTransactionByHash", [1, txhash]) input = tx["result"]["input"] print(input)
if True: # testing call functiondata = encode_transaction_data("select", contract_abi, None, ['abcefggg']) print("functiondata for call:", functiondata) decoderesult = decode_single("(string)", decode_hex(functiondata[10:])) print("testing decode: ", decoderesult) callmap = dict() callmap["data"] = functiondata callmap["from"] = ac2.address callmap["to"] = contractAddress callmap["value"] = 0 print("calldata", callmap) param = [1, callmap] # 发送 response = rpc.make_request("call", param) print(response) outputdata = response["result"]["output"] retabi = "(int256,uint256,address)" print("data:", outputdata) decoderesult = decode_single(retabi, decode_hex(outputdata)) print(decoderesult) from utils.contracts import get_function_info from utils.abi import * fn_abi, fn_selector, fn_arguments = get_function_info( "select", contract_abi, None, ['string'],
# 实际上只需要用sign_transaction就可以获得rawTransaction的编码数据了,input :txmap,私钥 signedTxResult = signer.sign_transaction(txmap) #print("signedTxResult",signedTxResult ) # signedTxResult.rawTransaction是二进制的,要放到rpc接口里要encode下 print("rawTransaction encode:", encode_hex(signedTxResult.rawTransaction)) def encode_transaction(unsigned_transaction, vrs): (v, r, s) = vrs chain_naive_transaction = dissoc(unsigned_transaction.as_dict(), 'v', 'r', 's') signed_transaction = BcosTransaction(v=v, r=r, s=s, **chain_naive_transaction) return rlp.encode(signed_transaction) data = b"Hello,World!" b = keccak(data) print("hello world hash : ", encode_hex(b)) url = "http://127.0.0.1:8555" rpc = utils.rpc.HTTPProvider(url) if True: param = [1, encode_hex(signedTxResult.rawTransaction)] # 发送 response = rpc.make_request("sendRawTransaction", param) print(response)