public async Task <SmartContractDeployedInstanceItem> GetSmartContractDeployedInstance(int smartContractDeployedInstanceId) { SmartContractDeployedInstanceItem smartContractDeployedInstanceItem = null; using (SqlConnection conn = new SqlConnection(DbConfiguration.ConnectionString)) { SqlCommand sqlcmd = new SqlCommand(StoredProcedures.GetSmartContractDeployedInstance, conn); sqlcmd.CommandType = System.Data.CommandType.StoredProcedure; sqlcmd.Parameters.Add(new SqlParameter() { ParameterName = "@smartContractDeployedInstanceId", SqlDbType = System.Data.SqlDbType.Int, Value = smartContractDeployedInstanceId }); conn.Open(); var reader = await sqlcmd.ExecuteReaderAsync(); while (reader.Read()) { smartContractDeployedInstanceItem = new SmartContractDeployedInstanceItem(); smartContractDeployedInstanceItem.SmartContractInstanceId = Convert.ToInt32(reader["SmartContractDeployedInstanceId"]); smartContractDeployedInstanceItem.SmartContractId = Convert.ToInt32(reader["SmartContractId"]); smartContractDeployedInstanceItem.DeployByUserLoginId = reader["DeployedByUserLoginId"]?.ToString(); smartContractDeployedInstanceItem.DeployedAddress = reader["DeployedAddress"]?.ToString(); smartContractDeployedInstanceItem.InitialData = reader["InitialData"]?.ToString(); smartContractDeployedInstanceItem.DeployedInstanceDisplayName = reader["DeployedInstanceDisplayName"]?.ToString(); smartContractDeployedInstanceItem.CreatedDatetime = string.IsNullOrEmpty(reader["CreatedDatetime"]?.ToString()) ? DateTime.MinValue : Convert.ToDateTime(reader["CreatedDatetime"]); smartContractDeployedInstanceItem.UpdatedDatetime = string.IsNullOrEmpty(reader["UpdatedDatetime"]?.ToString()) ? DateTime.MinValue : Convert.ToDateTime(reader["UpdatedDatetime"]); } } return(smartContractDeployedInstanceItem); }
public void CreateSmartContractDeployedInstanceTest() { SmartContractDb smartContractDb = new SmartContractDb(); SmartContractDeployedInstanceItem deployedInstanceItem = new SmartContractDeployedInstanceItem() { DeployByUserLoginId = "aamolgote", InitialData = "Initial Data Test", DeployedAddress = "0X3838383", SmartContractId = 21, DeployedInstanceDisplayName = "Test" }; var item = smartContractDb.CreateSmartContractDeployedInstance(deployedInstanceItem).Result; Assert.IsTrue(item != null); }
public async Task <SmartContractDeployedInstanceItem> DeploySmartContract(SmartContractDeployRequest smartContractDeployRequest) { try { var smartContract = await this.smartContractDb.GetSmartContract(smartContractDeployRequest.SmartContractId); var userDltAccount = await this.accountDb.GetUserDltAccountByLoginId(smartContractDeployRequest.DeployByUserLoginId); if (smartContract != null) { var web3 = new Web3Geth(); var unlockResult = await web3.Personal.UnlockAccount.SendRequestAsync(userDltAccount.Address, userDltAccount.PassPhrase, 120); object[] parameters = null; if (smartContractDeployRequest.DeploymentData != null && smartContractDeployRequest.DeploymentData.Count > 0) { parameters = smartContractDeployRequest.DeploymentData.ToArray(); } if (unlockResult) { var gas = await web3.Eth.DeployContract.EstimateGasAsync(smartContract.Abi, smartContract.ByteCode, userDltAccount.Address, parameters); var receipt = await web3.Eth.DeployContract.SendRequestAndWaitForReceiptAsync(smartContract.Abi, smartContract.ByteCode, userDltAccount.Address, gas, null, parameters); string contractAddress = receipt.ContractAddress; SmartContractDeployedInstanceItem deployedInstanceItem = new SmartContractDeployedInstanceItem() { DeployByUserLoginId = smartContractDeployRequest.DeployByUserLoginId, InitialData = Newtonsoft.Json.JsonConvert.SerializeObject(smartContractDeployRequest.DeploymentData), DeployedAddress = contractAddress, SmartContractId = smartContractDeployRequest.SmartContractId, DeployedInstanceDisplayName = smartContractDeployRequest.DeployedInstanceDisplayName }; var mutatedSmartContractDeployedInstanceItem = await this.smartContractDb.CreateSmartContractDeployedInstance(deployedInstanceItem); return(mutatedSmartContractDeployedInstanceItem); } else { throw new Exception("Unable to unlock account"); } } else { throw new Exception("Invalid Smart Contract Id"); } } catch (Exception ex) { this.logger.LogException(ex, "An error occured in method SmartContractManager ==> DeploySmartContract"); throw; } }