examples/non_native_payment.rb
#!/usr/bin/env ruby
# This is an example of using the higher level "payment" wrapper. Notice
# that we are using KeyPair instead of the raw rbnacl keys and that we need
# not build the entire heirarchy of xdr object manually.
#
# You can see where these helpers are defined in the files underneath /lib,
# which is where we extend the xdrgen generated source files with our higher
# level api.
#
# NOTE: due to the way that sequence number for a new account are set, this
# example is pretty cumbersome to run. It is only used for illustrative purposes
# of the flow
require 'stellar-base'
require 'faraday'
require 'faraday_middleware'
$server = Faraday.new(url: "http://localhost:39132") do |conn|
conn.response :json
conn.adapter Faraday.default_adapter
end
def submit(key, tx)
b64 = tx.to_envelope(key).to_xdr(:base64)
response = $server.get('tx', blob: b64)
raw = [response.body["result"]].pack("H*")
p response.body
end
master = Stellar::KeyPair.master
destination = Stellar::KeyPair.master
submit master, Stellar::Transaction.payment({
account: master,
destination: destination,
sequence: 1,
amount: [:native, 2000]
})
# NOTE: after this step, you need to get the sequence number for destination
# Which is based off of the ledger sequence number it was funded in.
gets # pause to get the account's sequence from the hayashi db
destination_sequence = FILL_ME_IN
# destination_sequence = 17179869185
submit destination, Stellar::Transaction.change_trust({
account: destination,
sequence: destination_sequence,
line: [:alphanum4, "USD\x00", master],
limit: 1000
})
submit master, Stellar::Transaction.payment({
account: master,
destination: destination,
sequence: 3,
amount: [:alphanum4, "USD\x00", master, 100]
})