コード例 #1
0
        private async Task SetOutputSpendInfo(TransactionOutputSummary jsonOutput, byte[] txHash, UInt32 index)
        {
            using (var outPoint = new OutputPoint(txHash, index))
            {
                var fetchSpendResult = await chain_.FetchSpendAsync(outPoint);

                if (fetchSpendResult.ErrorCode == ErrorCode.NotFound)
                {
                    jsonOutput.spentTxId   = null;
                    jsonOutput.spentIndex  = null;
                    jsonOutput.spentHeight = null;
                }
                else
                {
                    Utils.CheckBitprimApiErrorCode(fetchSpendResult.ErrorCode, "FetchSpendAsync failed, check error log");
                    var spend = fetchSpendResult.Result;
                    jsonOutput.spentTxId  = Binary.ByteArrayToHexString(spend.Hash);
                    jsonOutput.spentIndex = spend.Index;
                    using (var getTxResult = await chain_.FetchTransactionAsync(spend.Hash, false))
                    {
                        Utils.CheckBitprimApiErrorCode(getTxResult.ErrorCode, "FetchTransactionAsync(" + Binary.ByteArrayToHexString(spend.Hash) + "), check error log");
                        jsonOutput.spentHeight = getTxResult.Result.TxPosition.BlockHeight;
                    }
                }
            }
        }
コード例 #2
0
        private async Task <TransactionOutputSummary[]> TxOutputsToJSON(Transaction tx, bool noAsm, bool noSpend)
        {
            var outputs     = tx.Outputs;
            var jsonOutputs = new List <TransactionOutputSummary>();

            for (uint i = 0; i < outputs.Count; i++)
            {
                var     output     = outputs[i];
                dynamic jsonOutput = new TransactionOutputSummary();
                jsonOutput.value        = Utils.SatoshisToCoinUnits(output.Value);
                jsonOutput.n            = i;
                jsonOutput.scriptPubKey = OutputScriptToJSON(output, noAsm);
                if (!noSpend)
                {
                    await SetOutputSpendInfo(jsonOutput, tx.Hash, (UInt32)i);
                }
                jsonOutputs.Add(jsonOutput);
            }
            return(jsonOutputs.ToArray());
        }
コード例 #3
0
        private async Task <TransactionOutputSummary[]> TxOutputsToJSON(ITransaction tx, bool returnLegacyAddresses, bool noAsm,
                                                                        bool noSpend)
        {
            var outputs     = tx.Outputs;
            var jsonOutputs = new List <TransactionOutputSummary>();

            for (uint i = 0; i < outputs.Count; i++)
            {
                var     output     = outputs[i];
                dynamic jsonOutput = new TransactionOutputSummary();
                jsonOutput.value        = Utils.SatoshisToCoinUnits(output.Value).ToString("0.00000000"); //Bitpay uses this format
                jsonOutput.n            = i;
                jsonOutput.scriptPubKey = OutputScriptToJSON(output, returnLegacyAddresses, noAsm);
                if (!noSpend)
                {
                    await SetOutputSpendInfo(jsonOutput, tx.Hash, i);
                }
                jsonOutputs.Add(jsonOutput);
            }
            return(jsonOutputs.ToArray());
        }