示例#1
0
        private async Task <TransactionResult> GetTransactionResult(Hash txHash)
        {
            // in storage
            var res = await _transactionResultQueryService.GetTransactionResultAsync(txHash);

            if (res != null)
            {
                return(res);
            }

            // in tx pool
            var receipt = await _txHub.GetTransactionReceiptAsync(txHash);

            if (receipt != null)
            {
                return(new TransactionResult
                {
                    TransactionId = receipt.TransactionId,
                    Status = TransactionResultStatus.Pending
                });
            }

            // not existed
            return(new TransactionResult
            {
                TransactionId = txHash,
                Status = TransactionResultStatus.NotExisted
            });
        }
示例#2
0
        public async Task Broadcast_UnableVerify_Transaction_ReturnInvalidTransaction()
        {
            // Generate unsigned transaction
            var transaction = await _osTestHelper.GenerateTransferTransaction();

            transaction.Signature = ByteString.CopyFrom(new byte[0]);

            var response = await JsonCallAsJObject("/chain", "BroadcastTransaction",
                                                   new { rawTransaction = transaction.ToByteArray().ToHex() });

            var responseCode    = (long)response["error"]["code"];
            var responseMessage = response["error"]["message"].ToString();

            responseCode.ShouldBe(Error.InvalidTransaction);
            responseMessage.ShouldBe(Error.Message[Error.InvalidTransaction]);

            var existTransaction = await _txHub.GetTransactionReceiptAsync(transaction.GetHash());

            existTransaction.ShouldBeNull();
        }
示例#3
0
        public async Task Broadcast_UnableVerify_Transaction_ReturnInvalidTransaction()
        {
            // Generate unsigned transaction
            var transaction = await _osTestHelper.GenerateTransferTransaction();

            transaction.Signature = ByteString.CopyFrom(new byte[0]);

            var parameters = new Dictionary <string, string>
            {
                { "rawTransaction", transaction.ToByteArray().ToHex() }
            };
            var response = await PostResponseAsObjectAsync <WebAppErrorResponse>(
                "/api/blockChain/broadcastTransaction", parameters, expectedStatusCode : HttpStatusCode.Forbidden);

            response.Error.Code.ShouldBe(Error.InvalidTransaction.ToString());
            response.Error.Message.ShouldBe(Error.Message[Error.InvalidTransaction]);

            var existTransaction = await _txHub.GetTransactionReceiptAsync(transaction.GetHash());

            existTransaction.ShouldBeNull();
        }