Ejemplo n.º 1
0
        /// <summary>
        ///     Generates Transaction XDR object.
        /// </summary>
        /// <returns></returns>
        public xdr.Transaction ToXdr()
        {
            // fee
            var fee = new Uint32 { InnerValue = Fee };

            // sequenceNumber
            var sequenceNumberUint = new Uint64 { InnerValue = SequenceNumber };
            var sequenceNumber = new SequenceNumber { InnerValue = sequenceNumberUint };

            // sourceAccount
            var sourceAccount = new AccountID { InnerValue = SourceAccount.XdrPublicKey };

            // operations
            var operations = new xdr.Operation[Operations.Length];

            for (var i = 0; i < Operations.Length; i++)
                operations[i] = Operations[i].ToXdr();

            // ext
            var ext = new xdr.Transaction.TransactionExt { Discriminant = 0 };

            var transaction = new xdr.Transaction
            {
                Fee = fee,
                SeqNum = sequenceNumber,
                SourceAccount = sourceAccount,
                Operations = operations,
                Memo = Memo.ToXdr(),
                TimeBounds = TimeBounds?.ToXdr(),
                Ext = ext
            };
            return transaction;
        }
Ejemplo n.º 2
0
        public static Transaction FromEnvelopeXdr(TransactionEnvelope envelope)
        {
            xdr.Transaction transactionXdr = envelope.Tx;
            int             fee            = transactionXdr.Fee.InnerValue;
            KeyPair         sourceAccount  = KeyPair.FromXdrPublicKey(transactionXdr.SourceAccount.InnerValue);
            long            sequenceNumber = transactionXdr.SeqNum.InnerValue.InnerValue;
            Memo            memo           = Memo.FromXdr(transactionXdr.Memo);
            TimeBounds      timeBounds     = TimeBounds.FromXdr(transactionXdr.TimeBounds);

            Operation[] operations = new Operation[transactionXdr.Operations.Length];

            for (int i = 0; i < transactionXdr.Operations.Length; i++)
            {
                operations[i] = Operation.FromXdr(transactionXdr.Operations[i]);
            }

            Transaction transaction = new Transaction(sourceAccount, fee, sequenceNumber, operations, memo, timeBounds);

            foreach (DecoratedSignature signature in envelope.Signatures)
            {
                transaction.Signatures.Add(signature);
            }

            return(transaction);
        }
Ejemplo n.º 3
0
            /// <summary>
            ///     Adds a time-bounds to this transaction.
            ///     See: https://www.stellar.org/developers/learn/concepts/transactions.html
            /// </summary>
            /// <param name="timeBounds">timeBounds</param>
            /// <returns>Builder object so you can chain methods.</returns>
            public Builder AddTimeBounds(TimeBounds timeBounds)
            {
                if (_timeBounds != null)
                    throw new ArgumentException("TimeBounds has been already added.", nameof(timeBounds));

                _timeBounds = timeBounds ?? throw new ArgumentNullException(nameof(timeBounds), "timeBounds cannot be null");

                return this;
            }
Ejemplo n.º 4
0
        private Transaction(KeyPair sourceAccount, int fee, long sequenceNumber, Operation[] operations, Memo memo, TimeBounds timeBounds)
        {
            SourceAccount = sourceAccount ?? throw new ArgumentNullException(nameof(sourceAccount), "sourceAccount cannot be null");
            SequenceNumber = sequenceNumber;
            Operations = operations ?? throw new ArgumentNullException(nameof(operations), "operations cannot be null");

            if (operations.Length == 0)
                throw new ArgumentNullException(nameof(operations), "At least one operation required");

            Fee = fee;
            Signatures = new List<DecoratedSignature>();
            Memo = memo ?? Memo.None();
            TimeBounds = timeBounds;
        }
Ejemplo n.º 5
0
        public override bool Equals(Object o)
        {
            if (this == o)
            {
                return(true);
            }
            if (o == null || GetType() != o.GetType())
            {
                return(false);
            }

            TimeBounds that = (TimeBounds)o;

            if (MinTime != that.MinTime)
            {
                return(false);
            }
            return(MaxTime == that.MaxTime);
        }
Ejemplo n.º 6
0
        /// <summary>
        ///     Generates Transaction XDR object.
        /// </summary>
        /// <returns></returns>
        public xdr.Transaction ToXdr()
        {
            // fee
            Uint32 fee = new Uint32 {
                InnerValue = Fee
            };

            // sequenceNumber
            Int64          sequenceNumberUint = new Int64(SequenceNumber);
            SequenceNumber sequenceNumber     = new SequenceNumber {
                InnerValue = sequenceNumberUint
            };

            // sourceAccount
            AccountID sourceAccount = new AccountID {
                InnerValue = SourceAccount.XdrPublicKey
            };

            // operations
            xdr.Operation[] operations = new xdr.Operation[Operations.Length];

            for (int i = 0; i < Operations.Length; i++)
            {
                operations[i] = Operations[i].ToXdr();
            }

            // ext
            xdr.Transaction.TransactionExt ext = new xdr.Transaction.TransactionExt {
                Discriminant = 0
            };

            xdr.Transaction transaction = new xdr.Transaction
            {
                Fee           = fee,
                SeqNum        = sequenceNumber,
                SourceAccount = sourceAccount,
                Operations    = operations,
                Memo          = Memo.ToXdr(),
                TimeBounds    = TimeBounds?.ToXdr(),
                Ext           = ext
            };
            return(transaction);
        }