# Stellar SDK examples
## Create account
```elixir
{source_pk, _sk} =
source_key_pair =
Stellar.KeyPair.from_secret_seed("SBXUGZ25PNYMPMK36M52TDPB4HSF4CZ23DJPY4ENZMGAN2D4CYFSSVIL")
# 1. Set the creator account
source_account = Stellar.TxBuild.Account.new(source_pk)
# 2. set the next sequence number for the founder account
{:ok, seq_num} = Stellar.Horizon.Accounts.fetch_next_sequence_number(source_pk)
sequence_number = Stellar.TxBuild.SequenceNumber.new(seq_num)
# 3. build the create_account operation
operation =
Stellar.TxBuild.CreateAccount.new(
destination: "GA5LAUWYGVTWLNUKQK42EJ2VHMXN5TEYTUWD4KBHVMOTQWH2IMZUUQLV",
starting_balance: 2
)
# 4. build the tx signatures
signature = Stellar.TxBuild.Signature.new(source_key_pair)
# 5. submit the transaction to Horizon
{:ok, envelope} =
source_account
|> Stellar.TxBuild.new(sequence_number: sequence_number)
|> Stellar.TxBuild.add_operation(operation)
|> Stellar.TxBuild.sign(signature)
|> Stellar.TxBuild.envelope()
Stellar.Horizon.Transactions.create(envelope)
```
## Create payment setting trustline
```elixir
{payer_pk, _sk} =
payer_key_pair =
Stellar.KeyPair.from_secret_seed("SCP6HOQYN57RWQHVDPTPDGV3FMTYL3AULW3A26S5XTB2UNMZ52IFL5FN")
{paid_pk, _sk} =
paid_key_pair =
Stellar.KeyPair.from_secret_seed("SAHGVCA37V54AACEYNDLNIB356BWV3WEALMYFOAVX2OE24SZCIBDRO4X")
# 1. set the payer account
source_account = Stellar.TxBuild.Account.new(payer_pk)
# 2. set the next sequence number for the payer account
{:ok, seq_num} = Stellar.Horizon.Accounts.fetch_next_sequence_number(payer_pk)
sequence_number = Stellar.TxBuild.SequenceNumber.new(seq_num)
asset = [code: "MTK", issuer: "GA2YG3YULNTUEMMLN4HUQVL7B37GJTYSRZYH6HZUFLXFDCCGKLXIXMDT"]
# 3. Set trustline for the payment
trustline_operation =
Stellar.TxBuild.ChangeTrust.new(
asset: asset,
source_account: paid_pk
)
# 4. build the payment operation
operation =
Stellar.TxBuild.Payment.new(
destination: paid_pk,
asset: asset,
amount: 1000
)
# 5. build the tx signatures
payer_signature = Stellar.TxBuild.Signature.new(payer_key_pair)
paid_signature = Stellar.TxBuild.Signature.new(paid_key_pair)
# 6. submit the transaction to Horizon
{:ok, envelope} =
source_account
|> Stellar.TxBuild.new(sequence_number: sequence_number)
|> Stellar.TxBuild.add_operation(trustline_operation)
|> Stellar.TxBuild.add_operation(operation)
|> Stellar.TxBuild.sign([paid_signature, payer_signature])
|> Stellar.TxBuild.envelope()
Stellar.Horizon.Transactions.create(envelope)
```
## Create payment without trustline
```elixir
{payer_pk, _sk} =
signer_key_pair =
Stellar.KeyPair.from_secret_seed("SCP6HOQYN57RWQHVDPTPDGV3FMTYL3AULW3A26S5XTB2UNMZ52IFL5FN")
{paid_pk, _sk} =
Stellar.KeyPair.from_secret_seed("SAHGVCA37V54AACEYNDLNIB356BWV3WEALMYFOAVX2OE24SZCIBDRO4X")
# 1. set the payer account
source_account = Stellar.TxBuild.Account.new(payer_pk)
# 2. set the next sequence number for the payer account
{:ok, seq_num} = Stellar.Horizon.Accounts.fetch_next_sequence_number(payer_pk)
sequence_number = Stellar.TxBuild.SequenceNumber.new(seq_num)
asset = [code: "MTK", issuer: "GA2YG3YULNTUEMMLN4HUQVL7B37GJTYSRZYH6HZUFLXFDCCGKLXIXMDT"]
# 3. build the payment operation
operation =
Stellar.TxBuild.Payment.new(
destination: paid_pk,
asset: asset,
amount: 1000
)
# 4. build the tx signatures
payer_signature = Stellar.TxBuild.Signature.new(signer_key_pair)
# 5. submit the transaction to Horizon
{:ok, envelope} =
source_account
|> Stellar.TxBuild.new(sequence_number: sequence_number)
|> Stellar.TxBuild.add_operation(operation)
|> Stellar.TxBuild.sign(payer_signature)
|> Stellar.TxBuild.envelope()
Stellar.Horizon.Transactions.create(envelope)
```
## Create asset
```elixir
payer_secret = "SCWQHQGSMYXVEGF3THMKIJMWWFW3ADBVNWRGHL7KA72OQNNJNLSGED25"
paid_secret = "SBTHIZ7MVKZQXGPMKLJGXJMGB4SVY22PPR7LUYCRG2ZAEY5MIUDKUCDT"
{issuer_pk, _issuer_sk} = issuer_keypair = Stellar.KeyPair.from_secret_seed(payer_secret)
{distribution_pk, _sk} = distribution_keypair = Stellar.KeyPair.from_secret_seed(paid_secret)
source_account = Stellar.TxBuild.Account.new(issuer_pk)
asset_code = "MTK"
asset_supply = 1_000_000
# 2. set the next sequence number for the issuer account
{:ok, seq_num} = Stellar.Horizon.Accounts.fetch_next_sequence_number(issuer_pk)
sequence_number = Stellar.TxBuild.SequenceNumber.new(seq_num)
# 3. build the create_account operation
asset = [code: asset_code, issuer: issuer_pk]
trustline_operation =
Stellar.TxBuild.ChangeTrust.new(
asset: asset,
source_account: distribution_pk
)
create_payment_operation =
Stellar.TxBuild.Payment.new(
destination: distribution_pk,
asset: asset,
amount: asset_supply,
source_account: issuer_pk
)
# 4. build the tx signatures
distribution_signature = Stellar.TxBuild.Signature.new(distribution_keypair)
issuer_signature = Stellar.TxBuild.Signature.new(issuer_keypair)
# 5. submit the transaction to Horizon
{:ok, envelope} =
source_account
|> Stellar.TxBuild.new(sequence_number: sequence_number)
|> Stellar.TxBuild.add_operation(trustline_operation)
|> Stellar.TxBuild.add_operation(create_payment_operation)
|> Stellar.TxBuild.sign([issuer_signature, distribution_signature])
|> Stellar.TxBuild.envelope()
Stellar.Horizon.Transactions.create(envelope)
```
## Authorize asset
```elixir
{truster_pk, _sk} =
truster_keypair =
Stellar.KeyPair.from_secret_seed("SDG3KYI5RR6YKUECA4J6TNOAPY2XW7OFHAPKR3LII4R47W4SYZNPMPY6")
# 1. Set the truster source account
source_account = Stellar.TxBuild.Account.new(truster_pk)
# 2. set the next sequence number for the issuer account
{:ok, seq_num} = Stellar.Horizon.Accounts.fetch_next_sequence_number(truster_pk)
sequence_number = Stellar.TxBuild.SequenceNumber.new(seq_num)
# 3. build the trustline operation
trustline_operation =
Stellar.TxBuild.ChangeTrust.new(
asset: [code: "MTK", issuer: "GA2YG3YULNTUEMMLN4HUQVL7B37GJTYSRZYH6HZUFLXFDCCGKLXIXMDT"]
)
# 4. build the tx signatures
truster_signature = Stellar.TxBuild.Signature.new(truster_keypair)
# 5. submit the transaction to Horizon
{:ok, envelope} =
source_account
|> Stellar.TxBuild.new(sequence_number: sequence_number)
|> Stellar.TxBuild.add_operation(trustline_operation)
|> Stellar.TxBuild.sign(truster_signature)
|> Stellar.TxBuild.envelope()
Stellar.Horizon.Transactions.create(envelope)
```