fromV0EnvelopeXdr static method

Transaction fromV0EnvelopeXdr(
  1. XdrTransactionV0Envelope envelope
)

Creates a Transaction instance from a XdrTransactionV0Envelope envelope.

Implementation

static Transaction fromV0EnvelopeXdr(XdrTransactionV0Envelope envelope) {
  XdrTransactionV0? tx = envelope.tx;
  int? mFee = tx.fee.uint32;
  String mSourceAccount =
      KeyPair.fromPublicKey(tx.sourceAccountEd25519.uint256).accountId;
  int mSequenceNumber = tx.seqNum.sequenceNumber.int64;
  Memo mMemo = Memo.fromXdr(tx.memo);
  TimeBounds? mTimeBounds = TimeBounds.fromXdr(tx.timeBounds!);

  List<Operation> mOperations = List<Operation>.empty(growable: true);
  for (int i = 0; i < tx.operations.length; i++) {
    mOperations.add(Operation.fromXdr(tx.operations[i]));
  }
  MuxedAccount muxSource = MuxedAccount.fromAccountId(mSourceAccount)!;
  TransactionPreconditions preconditions = TransactionPreconditions();
  preconditions.timeBounds = mTimeBounds;
  Transaction transaction = Transaction(
      muxSource, mFee, mSequenceNumber, mOperations, mMemo, preconditions);

  for (XdrDecoratedSignature? signature in envelope.signatures) {
    if (signature != null) {
      transaction._mSignatures.add(signature);
    }
  }

  return transaction;
}