/// <summary> /// 异步 通用合约部署,只返回交易Hash /// </summary> /// <param name="binCode">合约内容</param> /// <returns>交易Hash</returns> public async Task <string> DeployContractAsync(string binCode, string abi = null, params object[] values) { var blockNumber = await GetBlockNumberAsync(); var resultData = ""; ConstructorCallEncoder _constructorCallEncoder = new ConstructorCallEncoder(); if (values == null || values.Length == 0) { resultData = _constructorCallEncoder.EncodeRequest(binCode, ""); } var des = new ABIDeserialiser(); var contract = des.DeserialiseContract(abi); if (contract.Constructor == null) { throw new Exception( "Parameters supplied for a constructor but ABI does not contain a constructor definition"); } resultData = _constructorCallEncoder.EncodeRequest(binCode, contract.Constructor.InputParameters, values); var transParams = BuildTransactionParams(resultData, blockNumber, ""); var tx = BuildRLPTranscation(transParams); tx.Sign(new EthECKey(this._privateKey.HexToByteArray(), true)); var result = await SendRequestAysnc <string>(tx.Data, tx.Signature); return(result); }
public DeployContract(IClient client) { this.client = client; this.ethSendTransaction = new EthSendTransaction(client); this.constructorCallEncoder = new ConstructorCallEncoder(); this.abiDeserialiser = new ABIDeserialiser(); }
/// <summary> /// 同步 通用合约部署,只返回交易Hash /// </summary> /// <param name="binCode">合约内容</param> /// <returns>交易Hash</returns> public string DeployContract(string binCode, string abi = null, params object[] values) { var blockNumber = GetBlockNumber(); var resultData = ""; ConstructorCallEncoder _constructorCallEncoder = new ConstructorCallEncoder(); var des = new ABIDeserialiser(); var contract = des.DeserialiseContract(abi); if (contract.Constructor != null) { if (values != null) { resultData = _constructorCallEncoder.EncodeRequest(binCode, contract.Constructor.InputParameters, values); } else { resultData = _constructorCallEncoder.EncodeRequest(binCode, ""); } } else { resultData = binCode; } var transParams = BuildTransactionParams(resultData, blockNumber, ""); var tx = BuildRLPTranscation(transParams); tx.Sign(new EthECKey(this._privateKey.HexToByteArray(), true)); var result = SendRequest <object>(tx.Data, tx.Signature); return(Convert.ToString(result)); }
public DeployContract(IClient client) { this.client = client; ethSendTransaction = new EthSendTransaction(client); personalSignAndSendTransaction = new PersonalSignAndSendTransaction(client); constructorCallEncoder = new ConstructorCallEncoder(); abiDeserialiser = new ABIDeserialiser(); }
public DeployContract(ITransactionManager transactionManager) { TransactionManager = transactionManager; _constructorCallEncoder = new ConstructorCallEncoder(); _abiDeserialiser = new ABIDeserialiser(); }
public DeployContractTransactionBuilder() { _constructorCallEncoder = new ConstructorCallEncoder(); }
public DeployContractTransactionBuilder() { _constructorCallEncoder = new ConstructorCallEncoder(); _abiDeserialiser = new ABIDeserialiser(); }