Exemplo 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;
        }
Exemplo 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);
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Generates TransactionEnvelope XDR object. This transaction MUST be signed before being useful
        /// </summary>
        /// <returns></returns>
        public TransactionEnvelope ToUnsignedEnvelopeXdr()
        {
            if (Signatures.Count > 0)
            {
                throw new TooManySignaturesException("Transaction must not be signed. Use ToEnvelopeXDR.");
            }

            TransactionEnvelope thisXdr = new TransactionEnvelope();

            xdr.Transaction transaction = ToXdr();
            thisXdr.Tx         = transaction;
            thisXdr.Signatures = new DecoratedSignature[0];

            return(thisXdr);
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Generates TransactionEnvelope XDR object. Transaction need to have at least one signature.
        /// </summary>
        /// <returns></returns>
        public TransactionEnvelope ToEnvelopeXdr()
        {
            if (Signatures.Count == 0)
            {
                throw new NotEnoughSignaturesException(
                          "Transaction must be signed by at least one signer. Use transaction.sign().");
            }

            TransactionEnvelope thisXdr = new TransactionEnvelope();

            xdr.Transaction transaction = ToXdr();
            thisXdr.Tx = transaction;

            DecoratedSignature[] signatures = Signatures.ToArray();
            thisXdr.Signatures = signatures;
            return(thisXdr);
        }
Exemplo n.º 5
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);
        }