示例#1
0
        public async Task <ActionResult <TransactionReturnInfo> > Post([FromBody] QuorumTransactionInput input)
        {
            if (input.functionName == null || String.IsNullOrEmpty(input.contractAddress))
            {
                return(new BadRequestObjectResult("You must supply a contract address and function name"));
            }

            var contractInfo = new ContractInfo();
            var client       = new HttpClient();

            var filejson = await client.GetStringAsync(Environment.GetEnvironmentVariable("CONTRACT_JSON_BLOB_URL", EnvironmentVariableTarget.Process));

            dynamic _file = JsonConvert.DeserializeObject(filejson);

            var abi      = _file?.abi;
            var byteCode = _file?.bytecode?.Value;

            contractInfo.ContractABI      = JsonConvert.SerializeObject(abi);
            contractInfo.ContractByteCode = byteCode;

            var keyVaultURI = Environment.GetEnvironmentVariable("KEYVAULT_PRIVATEKEY_URI", EnvironmentVariableTarget.Process);
            var RPC         = Environment.GetEnvironmentVariable("RPC", EnvironmentVariableTarget.Process);

            QuorumContractHelper.Instance.SetWeb3Handler(RPC);

            var appID     = Environment.GetEnvironmentVariable("APP_ID", EnvironmentVariableTarget.Process);
            var appSecret = Environment.GetEnvironmentVariable("APP_SECRET", EnvironmentVariableTarget.Process);

            var externalAccount = await AccountHelper.BuildExternalSigner(this.logger, keyVaultURI);

            //var externalAccount = AccountHelper.BuildExternalSignerWithToken(log,keyVaultURI,appID,appSecret);
            var res = await QuorumContractHelper.Instance.CreateTransactionWithExternalAccountAsync(input.contractAddress, contractInfo, input.functionName, externalAccount, input.inputParams, input.privateFor);

            return(CreatedAtAction(nameof(Get), new { hashCode = res.TransactionHash }, res));
        }
示例#2
0
        public async Task <ActionResult <GetRecordByIndexResponse> > Post([FromBody] QuorumTransactionInput input)
        {
            Console.WriteLine("C# HTTP trigger function processed a request.");

            if (input.functionName == null || (String.IsNullOrEmpty(input.contractAddress)))
            {
                return(new BadRequestObjectResult("You must supply a contract address and function name"));
            }

            var contractInfo = new ContractInfo();
            var client       = new HttpClient();

            var filejson = await client.GetStringAsync(Environment.GetEnvironmentVariable("CONTRACT_JSON_BLOB_URL", EnvironmentVariableTarget.Process));

            dynamic _file = JsonConvert.DeserializeObject(filejson);

            var abi = _file?.abi;

            var byteCode = _file?.bytecode?.Value;

            contractInfo.ContractABI      = JsonConvert.SerializeObject(abi);
            contractInfo.ContractByteCode = byteCode;

            var accountJSON = Environment.GetEnvironmentVariable("KEYVAULT_ACCOUNT1_URL", EnvironmentVariableTarget.Process);

            var pwd = Environment.GetEnvironmentVariable("KEYVAULT_ETH_PASSWORD", EnvironmentVariableTarget.Process);
            var RPC = Environment.GetEnvironmentVariable("RPC", EnvironmentVariableTarget.Process);

            QuorumContractHelper.Instance.SetWeb3Handler(RPC);
            //var res = await QuorumContractHelper.Instance.CallContractFunctionAsync<int>(address, contractInfo, functionName, AccountHelper.DecryptAccount(accountJSON,pwd),functionParams);

            var keyVaultURI = Environment.GetEnvironmentVariable("KEYVAULT_PRIVATEKEY_URI", EnvironmentVariableTarget.Process);
            var appID       = Environment.GetEnvironmentVariable("APP_ID", EnvironmentVariableTarget.Process);
            var appSecret   = Environment.GetEnvironmentVariable("APP_SECRET", EnvironmentVariableTarget.Process);

            //var externalAccount = AccountHelper.BuildExternalSignerWithToken(this.logger,keyVaultURI,appID,appSecret);
            var externalAccount = await AccountHelper.BuildExternalSigner(this.logger, keyVaultURI);

            //var res = await QuorumContractHelper.Instance.CallContractFunctionAsync<int>(input.contractAddress, contractInfo, input.functionName, externalAccount.Address, input.inputParams);
            var res = await QuorumContractHelper.Instance.CallContractFunctionAsync <GetRecordByIndexResponse>(input.contractAddress, contractInfo, input.functionName, externalAccount.Address, input.inputParams);

            //return new GetRecordByIndexResponse { SensorId = res.SensorId}
            return(res);
        }
示例#3
0
        public async Task <ActionResult <TransactionReturnInfo> > Post([FromBody] QuorumTransactionInput input)
        {
            Console.WriteLine("Received request to create new contract");

            var contractInfo = await GetContractInfo();

            var keyVaultURI = Environment.GetEnvironmentVariable("KEYVAULT_PRIVATEKEY_URI", EnvironmentVariableTarget.Process);
            var RPC         = Environment.GetEnvironmentVariable("RPC", EnvironmentVariableTarget.Process);

            Console.WriteLine("Retrieved the keyvault uri and RPC endpoint from environment variables - {0}, {1}", keyVaultURI, RPC);

            QuorumContractHelper.Instance.SetWeb3Handler(RPC);

            var appID     = Environment.GetEnvironmentVariable("APP_ID", EnvironmentVariableTarget.Process);
            var appSecret = Environment.GetEnvironmentVariable("APP_SECRET", EnvironmentVariableTarget.Process);

            Console.WriteLine("Retrieved the APP_ID and APP_SECRET from environment variables - {0}, {1}", appID, appSecret);

            var externalAccount = await AccountHelper.BuildExternalSigner(this.logger, keyVaultURI);

            var transactionReturnInfo = await QuorumContractHelper.Instance.CreateContractWithExternalAccountAsync(contractInfo, externalAccount, input.inputParams, input.privateFor);

            return(CreatedAtAction(nameof(Get), new { hashCode = transactionReturnInfo.TransactionHash }, transactionReturnInfo));
        }