class CardanoWallet::Shelley::Transactions

API for Transactions @see input-output-hk.github.io/cardano-wallet/api/edge/#tag/Transactions

Public Instance Methods

construct(wid, payments = nil, withdrawal = nil, metadata = nil, delegations = nil, mint = nil, validity_interval = nil) click to toggle source

Construct transaction @see input-output-hk.github.io/cardano-wallet/api/edge/#operation/constructTransaction @param wid [String] source wallet id @param payments [Array of Hashes] full payments payload with assets @param withdrawal [String or Array] 'self' or mnemonic sentence @param metadata [Hash] special metadata JSON subset format (cf: input-output-hk.github.io/cardano-wallet/api/edge/#operation/postTransaction) @param mint [Array of Hashes] mint object @param delegations [Array of Hashes] delegations object @param validity_interval [Hash] validity_interval object

# File lib/cardano_wallet/shelley.rb, line 270
def construct(wid,
              payments = nil,
              withdrawal = nil,
              metadata = nil,
              delegations = nil,
              mint = nil,
              validity_interval = nil)
  payload = {}
  payload[:payments] = payments if payments
  payload[:withdrawal] = withdrawal if withdrawal
  payload[:metadata] = metadata if metadata
  payload[:mint] = mint if mint
  payload[:delegations] = delegations if delegations
  payload[:validity_interval] = validity_interval if validity_interval

  self.class.post("/wallets/#{wid}/transactions-construct",
                  body: payload.to_json,
                  headers: { 'Content-Type' => 'application/json' })
end
create(wid, passphrase, payments, withdrawal = nil, metadata = nil, ttl = nil) click to toggle source

Create a transaction from the wallet @see input-output-hk.github.io/cardano-wallet/api/edge/#operation/postTransaction @param wid [String] source wallet id @param passphrase [String] source wallet's passphrase @param payments [Array of Hashes] address / amount list or full payments payload with assets @param withdrawal [String or Array] 'self' or mnemonic sentence @param metadata [Hash] special metadata JSON subset format (cf: input-output-hk.github.io/cardano-wallet/api/edge/#operation/postTransaction) @param ttl [Int] transaction's time-to-live in seconds

@example

create(wid, passphrase, [{addr1: 1000000}, {addr2: 1000000}], 'self', {"1": "abc"}, ttl = 10)
create(wid, passphrase, [{ "address": "addr1..",
                           "amount": { "quantity": 42000000, "unit": "lovelace" },
                           "assets": [{"policy_id": "pid", "asset_name": "name", "quantity": 0 } ] } ],
                           'self', {"1": "abc"}, ttl = 10)
# File lib/cardano_wallet/shelley.rb, line 337
def create(wid, passphrase, payments, withdrawal = nil, metadata = nil, ttl = nil)
  Utils.verify_param_is_array!(payments)
  payments_formatted = if payments.any? { |p| p.key?(:address) || p.key?('address') }
                         payments
                       else
                         Utils.format_payments(payments)
                       end
  payload = { payments: payments_formatted,
              passphrase: passphrase }
  payload[:withdrawal] = withdrawal if withdrawal
  payload[:metadata] = metadata if metadata
  payload[:time_to_live] = { quantity: ttl, unit: 'second' } if ttl

  self.class.post("/wallets/#{wid}/transactions",
                  body: payload.to_json,
                  headers: { 'Content-Type' => 'application/json' })
end
forget(wid, txid) click to toggle source

Forget a transaction @see input-output-hk.github.io/cardano-wallet/api/edge/#operation/deleteTransaction

# File lib/cardano_wallet/shelley.rb, line 385
def forget(wid, txid)
  self.class.delete("/wallets/#{wid}/transactions/#{txid}")
end
get(wid, tx_id) click to toggle source

Get tx by id @see input-output-hk.github.io/cardano-wallet/api/edge/#operation/getTransaction

# File lib/cardano_wallet/shelley.rb, line 308
def get(wid, tx_id)
  self.class.get("/wallets/#{wid}/transactions/#{tx_id}")
end
list(wid, query = {}) click to toggle source

List all wallet's transactions @see input-output-hk.github.io/cardano-wallet/api/edge/#operation/listTransactions

@example

list(wid, {start: "2012-09-25T10:15:00Z", order: "descending"})
# File lib/cardano_wallet/shelley.rb, line 317
def list(wid, query = {})
  query_formatted = query.empty? ? '' : Utils.to_query(query)
  self.class.get("/wallets/#{wid}/transactions#{query_formatted}")
end
payment_fees(wid, payments, withdrawal = nil, metadata = nil, ttl = nil) click to toggle source

Estimate fees for transaction @see input-output-hk.github.io/cardano-wallet/api/edge/#operation/postTransactionFee

@example

payment_fees(wid, [{addr1: 1000000}, {addr2: 1000000}], {"1": "abc"}, ttl = 10)
payment_fees(wid, [{ "address": "addr1..",
                     "amount": { "quantity": 42000000, "unit": "lovelace" },
                     "assets": [{"policy_id": "pid", "asset_name": "name", "quantity": 0 } ] } ],
                     {"1": "abc"}, ttl = 10)
# File lib/cardano_wallet/shelley.rb, line 364
def payment_fees(wid, payments, withdrawal = nil, metadata = nil, ttl = nil)
  Utils.verify_param_is_array!(payments)
  payments_formatted = if payments.any? { |p| p.key?(:address) || p.key?('address') }
                         payments
                       else
                         Utils.format_payments(payments)
                       end

  payload = { payments: payments_formatted }

  payload[:withdrawal] = withdrawal if withdrawal
  payload[:metadata] = metadata if metadata
  payload[:time_to_live] = { quantity: ttl, unit: 'second' } if ttl

  self.class.post("/wallets/#{wid}/payment-fees",
                  body: payload.to_json,
                  headers: { 'Content-Type' => 'application/json' })
end
sign(wid, passphrase, transaction) click to toggle source

Sign transaction @see input-output-hk.github.io/cardano-wallet/api/edge/#operation/signTransaction @param wid [String] source wallet id @param passphrase [String] wallet's passphrase @param passphrase [String] CBOR transaction data

# File lib/cardano_wallet/shelley.rb, line 295
def sign(wid, passphrase, transaction)
  payload = {
    'passphrase' => passphrase,
    'transaction' => transaction
  }

  self.class.post("/wallets/#{wid}/transactions-sign",
                  body: payload.to_json,
                  headers: { 'Content-Type' => 'application/json' })
end