protected APIResultCodes ValidateReceiveTransAmount(ReceiveTransferBlock block, TransactionInfo receiveTransaction) { //find the corresponding send block and validate the added transaction amount var sourceBlock = _accountCollection.FindBlockByHash(block.SourceHash); if (sourceBlock == null) { return(APIResultCodes.SourceSendBlockNotFound); } // find the actual amount of transaction TransactionBlock prevToSendBlock = _accountCollection.FindBlockByHash(sourceBlock.PreviousHash); if (prevToSendBlock == null) { return(APIResultCodes.CouldNotTraceSendBlockChain); } TransactionInfo sendTransaction; if (block.BlockType == BlockTypes.ReceiveTransfer || block.BlockType == BlockTypes.OpenAccountWithReceiveTransfer) { if ((sourceBlock as SendTransferBlock).DestinationAccountId != block.AccountID) { return(APIResultCodes.InvalidDestinationAccountId); } sendTransaction = sourceBlock.GetTransaction(prevToSendBlock); if (!sourceBlock.ValidateTransaction(prevToSendBlock)) { return(APIResultCodes.SendTransactionValidationFailed); } //originallySentAmount = sendTransaction.Amount; //originallySentAmount = // prevToSendBlock.Balances[LyraGlobal.LYRA_TICKER_CODE] - sourceBlock.Balances[LyraGlobal.LYRA_TICKER_CODE] - (sourceBlock as IFeebleBlock).Fee; } else if (block.BlockType == BlockTypes.ReceiveFee || block.BlockType == BlockTypes.OpenAccountWithReceiveFee) { sendTransaction = new TransactionInfo() { TokenCode = LyraGlobal.LYRA_TICKER_CODE, Amount = sourceBlock.Fee }; } else { return(APIResultCodes.InvalidBlockType); } if (sendTransaction.Amount != receiveTransaction.Amount) { return(APIResultCodes.TransactionAmountDoesNotMatch); } if (sendTransaction.TokenCode != receiveTransaction.TokenCode) { return(APIResultCodes.TransactionTokenDoesNotMatch); } return(APIResultCodes.Success); }
public async Task <AuthorizationAPIResult> ReceiveTransfer(ReceiveTransferBlock block) { return(await PostBlock("ReceiveTransfer", block)); }
public async Task <AuthorizationAPIResult> ReceiveTransfer(ReceiveTransferBlock receiveBlock) { return(await Pre_PrepareAsync(receiveBlock).ConfigureAwait(false)); }