public static void Encode(XdrDataOutputStream stream, TransactionV0Envelope encodedTransactionV0Envelope) { TransactionV0.Encode(stream, encodedTransactionV0Envelope.Tx); int signaturessize = encodedTransactionV0Envelope.Signatures.Length; stream.WriteInt(signaturessize); for (int i = 0; i < signaturessize; i++) { DecoratedSignature.Encode(stream, encodedTransactionV0Envelope.Signatures[i]); } }
public static TransactionV0Envelope Decode(XdrDataInputStream stream) { TransactionV0Envelope decodedTransactionV0Envelope = new TransactionV0Envelope(); decodedTransactionV0Envelope.Tx = TransactionV0.Decode(stream); int signaturessize = stream.ReadInt(); decodedTransactionV0Envelope.Signatures = new DecoratedSignature[signaturessize]; for (int i = 0; i < signaturessize; i++) { decodedTransactionV0Envelope.Signatures[i] = DecoratedSignature.Decode(stream); } return(decodedTransactionV0Envelope); }
public static void Encode(XdrDataOutputStream stream, TransactionEnvelope encodedTransactionEnvelope) { stream.WriteInt((int)encodedTransactionEnvelope.Discriminant.InnerValue); switch (encodedTransactionEnvelope.Discriminant.InnerValue) { case EnvelopeType.EnvelopeTypeEnum.ENVELOPE_TYPE_TX_V0: TransactionV0Envelope.Encode(stream, encodedTransactionEnvelope.V0); break; case EnvelopeType.EnvelopeTypeEnum.ENVELOPE_TYPE_TX: TransactionV1Envelope.Encode(stream, encodedTransactionEnvelope.V1); break; case EnvelopeType.EnvelopeTypeEnum.ENVELOPE_TYPE_TX_FEE_BUMP: FeeBumpTransactionEnvelope.Encode(stream, encodedTransactionEnvelope.FeeBump); break; } }
public static TransactionEnvelope Decode(XdrDataInputStream stream) { TransactionEnvelope decodedTransactionEnvelope = new TransactionEnvelope(); EnvelopeType discriminant = EnvelopeType.Decode(stream); decodedTransactionEnvelope.Discriminant = discriminant; switch (decodedTransactionEnvelope.Discriminant.InnerValue) { case EnvelopeType.EnvelopeTypeEnum.ENVELOPE_TYPE_TX_V0: decodedTransactionEnvelope.V0 = TransactionV0Envelope.Decode(stream); break; case EnvelopeType.EnvelopeTypeEnum.ENVELOPE_TYPE_TX: decodedTransactionEnvelope.V1 = TransactionV1Envelope.Decode(stream); break; case EnvelopeType.EnvelopeTypeEnum.ENVELOPE_TYPE_TX_FEE_BUMP: decodedTransactionEnvelope.FeeBump = FeeBumpTransactionEnvelope.Decode(stream); break; } return(decodedTransactionEnvelope); }
public static Transaction FromEnvelopeXdrV0(TransactionV0Envelope envelope) { var transactionXdr = envelope.Tx; var fee = transactionXdr.Fee.InnerValue; KeyPair sourceAccount = KeyPair.FromPublicKey(transactionXdr.SourceAccountEd25519.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 (var signature in envelope.Signatures) { transaction.Signatures.Add(signature); } return(transaction); }