public async Task <ActionResult> BroadcastTransaction([FromBody] RawTxRequest request)
        {
            Utils.CheckIfChainIsFresh(chain_, config_.AcceptStaleRequests);

            if (string.IsNullOrWhiteSpace(request?.rawtx))
            {
                return(BadRequest("Invalid post body: check structure, or payload size"));
            }

            Transaction tx;

            try
            {
                tx = new Transaction(Constants.TRANSACTION_VERSION_PROTOCOL, request.rawtx);
            }
            catch (Exception e) //TODO Use a BitprimException from bitprim-cs to avoid this
            {
                return(BadRequest("Invalid transaction: " + e.Message));
            }

            try
            {
                var ec = await chain_.OrganizeTransactionAsync(tx);

                if (ec != ErrorCode.Success)
                {
                    return(BadRequest(ec.ToString()));
                }

                return(Json
                       (
                           new BroadcastTransactionResponse
                {
                    txid = new BroadCastTransactionResult
                    {
                        //TODO Check if this should be returned by organize call
                        result = Binary.ByteArrayToHexString(tx.Hash),
                        error = null,
                        id = 0
                    }
                }
                       ));
            }
            catch (Exception e)
            {
                return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError, "Error broadcasting transaction: " + e.Message));
            }
            finally
            {
                tx?.Dispose();
            }
        }
 public ActionResult GetBroadcastTransaction(RawTxRequest request)
 {
     return(BadRequest("tx/send method only accepts POST requests"));
 }
Ejemplo n.º 3
0
 public ActionResult GetBroadcastTransaction(RawTxRequest request)
 {
     return(StatusCode((int)System.Net.HttpStatusCode.BadRequest, "tx/send method only accept POST requests"));
 }