Packages
stellar_sdk
0.3.0
0.23.0
0.22.0
0.21.2
0.21.1
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.17.1
0.17.0
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Elixir SDK for the Stellar network.
Current section
Files
Jump to
Current section
Files
lib/tx_build/transaction_envelope.ex
defmodule Stellar.TxBuild.TransactionEnvelope do
@moduledoc """
`TransactionEnvelope` struct definition.
"""
alias Stellar.TxBuild.{Signature, Transaction, TransactionSignature}
alias StellarBase.XDR.{
EnvelopeType,
TransactionV1Envelope,
TransactionEnvelope
}
@behaviour Stellar.TxBuild.XDR
@type signatures :: list(Signature.t())
@type t :: %__MODULE__{tx: Transaction.t(), signatures: signatures()}
defstruct [:tx, :signatures]
@impl true
def new(%Transaction{} = tx, signatures) when is_list(signatures) do
%__MODULE__{tx: tx, signatures: signatures}
end
@impl true
def to_xdr(%__MODULE__{tx: tx, signatures: signatures}) do
envelope_type = EnvelopeType.new(:ENVELOPE_TYPE_TX)
decorated_signatures = TransactionSignature.sign(tx, signatures)
tx
|> Transaction.to_xdr()
|> TransactionV1Envelope.new(decorated_signatures)
|> TransactionEnvelope.new(envelope_type)
end
@spec to_base64(tx_envelope_xdr :: TransactionEnvelope.t()) :: String.t()
def to_base64(%TransactionEnvelope{} = tx_envelope_xdr) do
tx_envelope_xdr
|> TransactionEnvelope.encode_xdr!()
|> Base.encode64()
end
end