public IActionResult Process(Transaction transaction) { try { var dns = DnsEntry.Parse(transaction.Data); if (!dns.VerifyForUId()) { _logger.LogInformation("Invalid client's signature for {0}", transaction.Index); return(new BadRequestObjectResult("Client's signature is invalid")); } //TODO: Add ork signature verification if (false) { _logger.LogInformation("Invalid ORK's signature for {0}", transaction.Index); return(new BadRequestObjectResult("One of the ORK signatures is invalid")); } //TODO: Verify if this works var sourceTran = _blockchain.Read(transaction.Location, transaction.Index); if (sourceTran != null) { _logger.LogInformation("Dns entry is already created for {0}", transaction.Index); return(new BadRequestObjectResult("The account already exists")); } lock (_lockObj) { var result = _blockchain.Write(transaction); _logger.LogInformation("Dns entry created for {0}", transaction.Index); return(result.success ? new OkResult() as IActionResult : new BadRequestObjectResult(result.error)); } } catch (System.Exception e) { _logger.LogError(0, e, "Error processing dns contract: {0}", transaction.Data); return(new ObjectResult(e.Message) { StatusCode = 500 }); } }
public IActionResult Get([FromRoute] string contract, string table, string scope) { return(Ok(_blockchain.Read(contract, table, scope))); }