private CurrencyTransaction PrepareNewTransaction(string aFromAddress, string aToAddress, decimal aAmount, decimal aTxFee)
        {
            var lInput = new TransactionUnit[1] {
                new TransactionUnit(0, 0, aFromAddress)
            };
            var lTokenTxData = ERC20TokenDecoder.Encode(ERC20Methods.Transfer, aToAddress, (FToken as ICurrencyAmountFormatter).AmountToBigInteger(aAmount).ToString());
            var lOutput      = new TransactionUnit[1] {
                new TransactionUnit(0, 0, FToken.ContractAddress, aScript: lTokenTxData)
            };

            return(new CurrencyTransaction(lInput, lOutput, FCurrencyItem.AmountToLong(aTxFee), FToken.ParentCurrencyID));
        }
Esempio n. 2
0
        private IEnumerable <ClientTokenTransactionItem> BuildERC20TokenTransaction(TransactionRecord aTx, TokenTransactionInfo aTokenTxInfo, bool aIsValid = true)
        {
            var lResult = new List <ClientTokenTransactionItem>();

            if (ERC20TokenDecoder.TryDecode(aTokenTxInfo.Input, out IEnumerable <ERC20DataOutput> lDecodedTransactionPayloads))
            {
                foreach (var lDecodedPayload in lDecodedTransactionPayloads)
                {
                    lResult.Add(new ClientTokenTransactionItem
                    {
                        From                = string.IsNullOrEmpty(lDecodedPayload.OriginAddress) ? aTokenTxInfo.From : lDecodedPayload.OriginAddress,
                        To                  = lDecodedPayload.DestinationAddress,
                        TokenAddress        = string.IsNullOrEmpty(lDecodedPayload.ContractAddress) ? aTokenTxInfo.To : lDecodedPayload.ContractAddress,
                        Amount              = lDecodedPayload.AmountSent,
                        ParentTransactionID = aTx.TxId,
                        Valid               = aIsValid
                    });
                }
            }
            return(lResult);
        }