Minter

This is a Ruby SDK based on Golang SDK for working with Minter blockchain

Installation

Add this line to your application's Gemfile:

gem 'minter'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install minter

Using Minter API

Minter API

You can get all valid responses and full documentation at Minter Node Api

Create Minter::Api client

require "minter"

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

Address

Returns coins list, balance and transaction count (for nonce) of an address.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

address = "Mx251cb0043a0240779103aa7c210f638f887699f8"
response = client.address(address: address)
response.status
#=> 200
response.body
#=> {"balance"=>[{"coin"=>{"id"=>"0", "symbol"=>"MNT"}, "value"=>"29999857000000000000000", "bip_value"=>"29999857000000000000000"}], "delegated"=>[], "total"=>[], "transaction_count"=>"13", "bip_value"=>"29999857000000000000000"}

Address at height

Returns coins list, balance and transaction count (for nonce) of an address.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

address = "Mx251cb0043a0240779103aa7c210f638f887699f8"
response = client.address(address: address, height: 1)
response.status
#=> 200
response.body
#=> {"balance"=>[], "delegated"=>[], "total"=>[], "transaction_count"=>"0", "bip_value"=>"0"} 

Balance

Returns coins list, balance and transaction count (for nonce) of an address.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

address = "Mx251cb0043a0240779103aa7c210f638f887699f8"
response = client.balance(address: address)
response.status
#=> 200
response.body
#=> {"balance"=>[{"coin"=>{"id"=>"0", "symbol"=>"MNT"}, "value"=>"29999857000000000000000", "bip_value"=>"29999857000000000000000"}], "delegated"=>[], "total"=>[], "transaction_count"=>"13", "bip_value"=>"29999857000000000000000"} 

Nonce

Returns next transaction number (nonce) of an address.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

address = "Mx251cb0043a0240779103aa7c210f638f887699f8"
nonce = client.nonce(address: address)
#=> 14

Block

Returns block data at given height.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.block(height: 1)
response.status
#=> 200
response.body
#=> {"hash"=>"8e2534065f3fb281b3834ae79383cd75cb06245b33bd96a0d87370340039f7bc", "height"=>"1", "time"=>"1970-01-01T00:00:00Z", "transaction_count"=>"0", "transactions"=>[], "block_reward"=>"333000000000000000000", "size"=>"270", "proposer"=>"Mpd83e627510eea6aefa46d9914b0715dabf4a561ced78d34267b31d41d5f700b5", "validators"=>[{"public_key"=>"Mpd83e627510eea6aefa46d9914b0715dabf4a561ced78d34267b31d41d5f700b5", "signed"=>false}], "evidence"=>{"evidence"=>[]}, "missed"=>[]} 


Candidate

Returns candidate’s info by provided public_key. It will respond with 404 code if candidate is not found.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

public_key = "Mpd83e627510eea6aefa46d9914b0715dabf4a561ced78d34267b31d41d5f700b5"
response = client.candidate(public_key: public_key)
response.status
#=> 200
response.body
#=> {"reward_address"=>"Mxa83d8ebbe688b853775a698683b77afa305a661e", "owner_address"=>"Mxa83d8ebbe688b853775a698683b77afa305a661e", "control_address"=>"Mxa83d8ebbe688b853775a698683b77afa305a661e", "total_stake"=>"2444011225306401876946221", "public_key"=>"Mpd83e627510eea6aefa46d9914b0715dabf4a561ced78d34267b31d41d5f700b5", "commission"=>"5", "used_slots"=>"10", "uniq_users"=>"6", "min_stake"=>"0", "stakes"=>[{"owner"=>"Mxa83d8ebbe688b853775a698683b77afa305a661e", "coin"=>{"id"=>"0", "symbol"=>"MNT"}, "value"=>"1000000000000000000000000", "bip_value"=>"1000000000000000000000000"}, {"owner"=>"Mx69ebd94f75444b22953c7a439f7ccef6d9e9be5a", "coin"=>{"id"=>"0", "symbol"=>"MNT"}, "value"=>"10000000000000000000", "bip_value"=>"10000000000000000000"}, {"owner"=>"Mx3e3b5d6087f58f2592623a62da9618a2ee020d2d", "coin"=>{"id"=>"0", "symbol"=>"MNT"}, "value"=>"824272819147233530716891", "bip_value"=>"824272819147233530716891"}, {"owner"=>"Mxeb92ae39b84012968f63b2dd260a94d791fe79bd", "coin"=>{"id"=>"0", "symbol"=>"MNT"}, "value"=>"609007403767000000000000", "bip_value"=>"609007403767000000000000"}, {"owner"=>"Mxeb92ae39b84012968f63b2dd260a94d791fe79bd", "coin"=>{"id"=>"5", "symbol"=>"SMALCOIN-1"}, "value"=>"27704575686000000000000", "bip_value"=>"163214040105490477218"}, {"owner"=>"Mxeb92ae39b84012968f63b2dd260a94d791fe79bd", "coin"=>{"id"=>"6", "symbol"=>"SMALCOIN"}, "value"=>"23500946264000000000000", "bip_value"=>"5258446493070597814637"}, {"owner"=>"Mxeb92ae39b84012968f63b2dd260a94d791fe79bd", "coin"=>{"id"=>"1", "symbol"=>"CUSTOM"}, "value"=>"7648158824000000000000", "bip_value"=>"1530873792242471521"}, {"owner"=>"Mxeb92ae39b84012968f63b2dd260a94d791fe79bd", "coin"=>{"id"=>"4", "symbol"=>"BIGCOIN"}, "value"=>"22993066314000000000000", "bip_value"=>"5286810985200015465954"}, {"owner"=>"Mxeeda61bbe9929bf883af6b22f5796e4b92563ba4", "coin"=>{"id"=>"0", "symbol"=>"MNT"}, "value"=>"5000000000000000000", "bip_value"=>"5000000000000000000"}, {"owner"=>"Mx0004ae43810ac75200a0c681487d1748a4f1e0b3", "coin"=>{"id"=>"0", "symbol"=>"MNT"}, "value"=>"6000000000000000000", "bip_value"=>"6000000000000000000"}], "status"=>"2"} 

Candidates

Returns list of candidates.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.candidates
response.status
#=> 200
response.body
{
    "candidates" => [{
        "reward_address" => "Mxa83d8ebbe688b853775a698683b77afa305a661e",
        "owner_address" => "Mxa83d8ebbe688b853775a698683b77afa305a661e",
        "control_address" => "Mxa83d8ebbe688b853775a698683b77afa305a661e",
        "total_stake" => "1000000000000000000000000",
        "public_key" => "Mpd83e627510eea6aefa46d9914b0715dabf4a561ced78d34267b31d41d5f700b5",
        "commission" => "5",
        "used_slots" => nil,
        "uniq_users" => nil,
        "min_stake" => nil,
        "stakes" => [],
        "status" => "2"
    }]
}

CoinInfo

Returns information about coin. Note: this method does not return information about base coins (MNT and BIP).

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.coin_info("CAPITAL")
response.status
#=> 200
response.body
#=> {"jsonrpc"=>"2.0",
#  "id"=>"",
#  "result"=>
#   {"name"=>"CAPITAL",
#    "symbol"=>"CAPITAL",
#    "volume"=>"10004406818749673124164086",
#    "crr"=>"80",
#    "reserve_balance"=>"100055088268419724781795",
#    "max_supply"=>"1000000000000000000000000000000000"}}

EstimateCoinBuy

Return estimate of buy coin transaction.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.estimate_coin_buy(coinToSell: "BIP", valueToBuy: 1, coinToBuy: "MNT")
response.status
#=> 200

EstimateCoinSell

Return estimate of sell coin transaction.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.estimate_coin_sell(coinToSell: "BIP", valueToSell: 1, coinToBuy: "MNT")
response.status
#=> 200

EstimateTxCommission

Return estimate of transaction.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.estimate_tx_comission(transaction: "0xf88522020a8a4d4e540000000000000001abea8a4d4e540000000000000094e7812ab98ac5ac37e2ab20da3136ad91bb22d49789014d1120d7b1600000808001b845f8431ba07424d88d612132c847c1c92c1f471471fa8034914260223cb547f097e2bd7587a0201fa4d869ba564538996a71e6aa1e2b069d746b8fa0a563e023989986ae91a7")

Events

Returns events at given height.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.events(height: 1)

MaxGas

Returns current max gas.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.max_gas
response.status
#=>200
response.body
#=> {"max_gas_price"=>"100000"}

MinGasPrice

Returns current min gas price.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.min_gas_price
response.status
#=>200
response.body
#=> {"min_gas_price"=>"1"}

MissedBlocks

Returns missed blocks by validator public key.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.missed_block(public_key: public_key)

Send

Returns the result of sending signed tx.

signed_transaction = transaction.sign(privateKey)
response = signed_transaction.send
# or 
response = client.send_transaction(transaction: signed_transaction.tx_hash)
response.status 
#=> 200
response.body
#=>
{"code"=>"0", "log"=>"", "hash"=>"Mt0cfac66950c621db243fcdd68530b455f2c579dda7a7c602822355a80e9815d2"}  

Status

Returns node status info.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.status
response.status
#=>200
response.body
#=>
 {
   "version" => "1.2.0-a7c02e42-testnet",
   "network" => "minter-1-2-testnet",
   "latest_block_hash" => "553F412E3BDD05932F96AFC79C750ACCB6C6D65D253D627A9D8A88D5C893CD1A",
   "latest_app_hash" => "4337152D2F002F604CF338C29BC4AA1AF1729A93228E074153FDFF722CE33324",
   "latest_block_height" => "281797",
   "latest_block_time" => "2020-11-05T06:05:39.586760081Z",
   "keep_last_states" => "1000000",
   "total_slashed" => "433000000000000015854",
   "catching_up" => false,
   "public_key" => "Mpd83e627510eea6aefa46d9914b0715dabf4a561ced78d34267b31d41d5f700b5",
   "node_id" => "95fa41d84670bc98691101406d62aed9d64459f4"
 }

Transaction

Returns transaction info.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

transaction_hash = "Mt0cfac66950c621db243fcdd68530b455f2c579dda7a7c602822355a80e9815d2"

response = client.transaction_info(transaction_hash: transaction_hash)
response.status
#=>200
response.body
#=>
 {
   "hash" => "Mt0cfac66950c621db243fcdd68530b455f2c579dda7a7c602822355a80e9815d2", "raw_tx" => "f86f0e020180019fde8094eeee1973381ab793719fff497b9a516719fcd5a287038d7ea4c68000808001b845f8431ba0b4f6ef634625c12a7cb08ca568dca87fec2ca696bde99f2669c4e297748ce7a2a00ba8fab69667b0d849054ac8d21c3194f1dfcfca01ddafacd19d0e7f708933bd", "height" => "281792", "index" => "0", "from" => "Mx251cb0043a0240779103aa7c210f638f887699f8", "nonce" => "14", "gas" => "10", "gas_price" => "1", "gas_coin" => {
     "id" => "0", "symbol" => "MNT"
   },
   "type" => "1", "data" => {
     "@type" => "type.googleapis.com/api_pb.SendData", "coin" => {
       "id" => "0", "symbol" => "MNT"
     }, "to" => "Mxeeee1973381ab793719fff497b9a516719fcd5a2", "value" => "1000000000000000"
   },
   "payload" => nil, "tags" => {
     "tx.coin_id" => "0", "tx.from" => "251cb0043a0240779103aa7c210f638f887699f8", "tx.to" => "eeee1973381ab793719fff497b9a516719fcd5a2", "tx.type" => "01"
   },
   "code" => "0",
   "log" => ""
 }

Transactions

Return transactions by query.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

query = "tags.tx.coin='0'" 
page = 1
per_page = 1
response = client.transactions(query: query, per_page: per_page, page: page)
response.status
#=> 200

Unconfirmed Transactions

Returns unconfirmed transactions.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

query = "tags.tx.coin='MNT'" 
page = 1
per_page = 1
response = client.unconfirmed_transactions
response.status
#=> 200

Validators

Returns list of active validators.

client = Minter::Api::Client.new
client.node_url = "https://node-api.testnet.minter.network/v2"

response = client.validators
response.status
#=>200
response.body
#=>
{"validators"=>[{"public_key"=>"Mpd83e627510eea6aefa46d9914b0715dabf4a561ced78d34267b31d41d5f700b5", "voting_power"=>"100000000"}]} 

Using Minter SDK

Sign transaction

Returns a signed tx.

Single signature

mnemonic = "oppose gym crucial devote skin robust exile antique split clean bright move"
sender_address = Minter::Key.address_from_mnemonic(mnemonic)
sender_private_key = Minter::Key.private_key_from_mnemonic(mnemonic)
nonce = client.nonce(address: sender_address)

receiver_address = "Mxeeee1973381ab793719fff497b9a516719fcd5a2"

transaction = Minter::SendCoinTx.new(
    address_to: receiver_address,
    value: 1_000_000_000_000_000,
    coin: 0,
    nonce: nonce,
    chain_id: 2,
    gas_coin: 0,
    gas_price: 1
)

signed_tx = transaction.sign(sender_private_key)
signed_tx.tx_hash
#=> "0xf86f0f020180019fde8094eeee1973381ab793719fff497b9a516719fcd5a287038d7ea4c68000808001b845f8431ca029870ea74e51ca5f89749860875ce69d7afd8b9bff6debebf127d14a27a83043a044f8b98aaa128f8cf41f5556d7b8fddd224021ac7d28024daafed2362d4144b6" 

Multi signatures

multisig_address = "Mxeda4bb5456f5eb8a19f57c8c6ec844d05feae879"
private_key1 = "4de029ca7b95c163f88c66e6351f2a986a48834b4681ec1e43eed5d120227103"
private_key2 = "49e48cd0f81e7aabfc840301c66f00318f50b25c79664c3f337d7ad4f919638e"
transaction = Minter::SendCoinTx.new(
    address_to: "Mxe7812ab98ac5ac37e2ab20da3136ad91bb22d497",
    value: 4_000_000_000_000_000_000,
    coin: 0,
    nonce: 2,
    chain_id: 2,
    gas_coin: 0,
    gas_price: 10
)
signed_tx = transaction.multisign(multisig_address, private_key1, private_key2)
#=> #<Minter::SignedTx:0x00007f97f0249ca0 @tx_hash="0xf8ce02020a8001a0df8094e7812ab98ac5ac37e2ab20da3136ad91bb22d497883782dace9d900000808002b8a3f8a194eda4bb5456f5eb8a19f57c8c6ec844d05feae879f88af8431ca04613dae08d6d729a2cb55cd1ef508fcabbd516c219cca15cff61bd5cff0dca2fa06dd29d4fa41517b1701520412f2892b82a10b0fd9b7ddf00060105d418e78f3bf8431ba0d13870020138ae7d6bc14dff8a720c97767af19b648facddb997a8c7baa771c2a01879cee21cd8e315752eae1190981541418fe49ff3def116fd123a2fd066ba84", @transaction=#<Minter::SendCoinTx:0x00007f97f11b2a48 @address_to="Mxe7812ab98ac5ac37e2ab20da3136ad91bb22d497", @value=4000000000000000000, @coin=0, @nonce=2, @chain_id=2, @gas_coin=0, @gas_price=10>> 

Create transaction

Send transaction

Transaction for sending arbitrary coin.

coin - Symbol of a coin. address_to - Recipient address in Minter Network. value - Amount of Coin to send.

Example
transaction = Minter::SendCoinTx.new(
        address_to: "Mx1b685a7c1e78726c48f619c497a07ed75fe00483",
        value: 1_000_000_000_000_000_000,
        coin: 1,
        nonce: 1,
        chain_id: 2,
        gas_coin: 1,
        gas_price: 1
      )

Sell coin transaction

Transaction for selling one coin (owned by sender) in favour of another coin in a system.

coin_to_sell - Symbol of a coin to give. value_to_sell - Amount of CoinToSell to give. coin_to_buy - Symbol of a coin to get. minimum_value_to_buy - Minimum value of coins to get.

Example
Minter::SellCoinTx.new(
      coin_to_sell: 1,
      value_to_sell: 1_000_000_000_000_000_000,
      coin_to_buy: 2,
      minimum_value_to_buy: 1_000_000_000_000_000_000,
      nonce: 1,
      chain_id: 2,
      gas_coin: 1,
      gas_price: 1
    )

Sell all coin transaction

Transaction for selling one coin (owned by sender) in favour of another coin in a system.

coin_to_sell - Symbol of a coin to give. coin_to_buy - Symbol of a coin to get. minimum_value_to_buy - Minimum value of coins to get.

Example
Minter::SellAllCoinTx.new(
  coin_to_sell: 1,
  coin_to_buy: 2,
  minimum_value_to_buy: 1_000_000_000_000_000_000,
  nonce: 1,
  chain_id: 2,
  gas_coin: 1,
  gas_price: 1
)

Buy coin transaction

Transaction for buy a coin paying another coin (owned by sender).

coin_to_buy - Symbol of a coin to get. value_to_buy - Amount of CoinToBuy to get. coin_to_sell - Symbol of a coin to give. maximum_value_to_sell - Maximum value of coins to sell.

Example
Minter::BuyCoinTx.new(
  coin_to_buy: 2,
  value_to_buy: 1_000_000_000_000_000_000,
  coin_to_sell: 1,
  maximum_value_to_sell: 1_000_000_000_000_000_000,
  nonce: 1,
  chain_id: 2,
  gas_coin: 1,
  gas_price: 1
)

Create coin transaction

Transaction for creating new coin in a system.

name - Name of a coin. Arbitrary string up to 64 letters length. symbol - Symbol of a coin. Must be unique, alphabetic, uppercase, 3 to 10 symbols length. initial_amount - Amount of coins to issue. Issued coins will be available to sender account. initial_reserve - Initial reserve in BIP's. ConstantReserveRatio - CRR, uint, should be from 10 to 100.

Example
Minter::CreateCoinTx.new(
  name: "SUPER TEST",
  symbol: "SPRTEST",
  initial_amount: 100_000_000_000_000_000_000,
  initial_reserve: 20_000_000_000_000_000_000_000,
  reserve_ratio: 10,
  max_supply: 1_000_000_000_000_000_000_000,
  nonce: 1,
  chain_id: 2,
  gas_coin: 1,
  gas_price: 1
)

Declare candidacy transaction

Transaction for declaring new validator candidacy.

address - Address of candidate in Minter Network. This address would be able to control candidate. Also all rewards will be sent to this address. pubkey - Public key of a validator. commission - Commission (from 0 to 100) from rewards which delegators will pay to validator. coin - Symbol of coin to stake. Stake - Amount of coins to stake.

Example
Minter::DeclareCandidacyTx.new(
  address: "Mx9f7fd953c2c69044b901426831ed03ee0bd0597a",
  pubkey: "Mp0eb98ea04ae466d8d38f490db3c99b3996a90e24243952ce9822c6dc1e2c1a43",
  commission: 10,
  coin: 1,
  stake: 5_000_000_000_000_000_000,
  nonce: 1,
  chain_id: 2,
  gas_coin: 1,
  gas_price: 1
)

Delegate transaction

Transaction for delegating funds to validator.

pubkey - Public key of a validator. coin - Symbol of coin to stake. value - Amount of coins to stake.

Example
Minter::DelegateTx.new(
  pubkey: "Mp0eb98ea04ae466d8d38f490db3c99b3996a90e24243952ce9822c6dc1e2c1a43",
  coin: 1,
  value: 10_000_000_000_000_000_000,
  nonce: 1,
  chain_id: 2,
  gas_coin: 1,
  gas_price: 1
)

Unbond transaction

Transaction for unbonding funds from validator's stake.

pubkey - Public key of a validator. coin - Symbol of coin to stake. value - Amount of coins to stake.

Example
Minter::UnbondTx.new(
    pubkey: "Mp0eb98ea04ae466d8d38f490db3c99b3996a90e24243952ce9822c6dc1e2c1a43",
    coin: 1,
    value: 10_000_000_000_000_000_000,
    nonce: 1,
    chain_id: 2,
    gas_coin: 1,
    gas_price: 1
)

Redeem check transaction

Transaction for redeeming a check.

RawCheck - Raw check received from sender. Proof - Proof of owning a check.

Note that maximum GasPrice is limited to 1 to prevent fraud, because GasPrice is set by redeem tx sender but commission is charded from check issuer.

Example
Minter::RedeemCheckTx.new(
      check: check,
      proof: proof,
      nonce: 1,
      chain_id: 2,
      gas_coin: 1,
      gas_price: 1
    )

Set candidate online transaction

Transaction for turning candidate on. This transaction should be sent from address which is set in the "Declare candidacy transaction".

PubKey - Public key of a validator.

Example
Minter::SetCandidateOnTx.new(
      pubkey: "Mp0eb98ea04ae466d8d38f490db3c99b3996a90e24243952ce9822c6dc1e2c1a43",
      nonce: 1,
      chain_id: 2,
      gas_coin: 1,
      gas_price: 1
    )

Set candidate offline transaction

Transaction for turning candidate off. This transaction should be sent from address which is set in the "Declare candidacy transaction".

PubKey - Public key of a validator.

Example
Minter::SetCandidateOffTx.new(
      pubkey: "Mp0eb98ea04ae466d8d38f490db3c99b3996a90e24243952ce9822c6dc1e2c1a43",
      nonce: 1,
      chain_id: 2,
      gas_coin: 1,
      gas_price: 1
    )

Edit candidate transaction

Transaction for editing existing candidate.

Example
Minter::EditCandidateTx.new(
      pubkey: "Mp4ae1ee73e6136c85b0ca933a9a1347758a334885f10b3238398a67ac2eb153b8",
      reward_address: "Mx89e5dc185e6bab772ac8e00cf3fb3f4cb0931c47",
      owner_address: "Mxe731fcddd37bb6e72286597d22516c8ba3ddffa0",
      control_address: "Mx1b685a7c1e78726c48f619c497a07ed75fe00483",
      nonce: 1,
      chain_id: 2,
      gas_coin: 1,
      gas_price: 1
    )

Multisend transaction

Transaction for sending coins to multiple addresses.

transaction = Minter::MultiSendTx.new(
    nonce: 1,
    chain_id: 2,
    gas_coin: 1,
    gas_price: 1
)

transaction.add_item(
    coin_id: 1,
    address_to: "Mxfe60014a6e9ac91618f5d1cab3fd58cded61ee99",
    value: 100_000_000_000_000_000
)

transaction.add_item(
    coin_id: 1,
    address_to: "Mxddab6281766ad86497741ff91b6b48fe85012e3c",
    value: 200_000_000_000_000_000
)

signed_tx = transaction.sign(private_key)

Get fee of transaction

transaction = Minter::SendCoinTx.new(
  address_to: "Mxe7812ab98ac5ac37e2ab20da3136ad91bb22d497",
  value: 24_000_000_000_000_000_000,
  coin: "MNT",
  nonce: 65,
  chain_id: 2,
  gas_coin: "MNT",
  gas_price: 10
)

transaction.fee
#=> ""

More info about Minter Link Protocol

Minter Wallet

Create wallet

  • This method returns generated seed, private key, public key, mnemonic and Minter address.
wallet = Minter::Wallet.new
# => #<Minter::Wallet:0x00007fa168c31f48
#  @address="Mx02b065d31b57511279f5b4d6ddb4c35a5ab0ebff",
#  @mnemonic=
#   "you random jacket limit ship vacuum mango various penalty imitate swallow second",
#  @private_key=
#   "7ced83b93186ff8d4c20f6b8b6f4a610eafd64d12024105f68796120dd3e7bce",
#  @public_key=
#   "Mp961589ae817659c6bb323587faa9a92a91b5e8481dd3b73ad0dc680464dac5adbc2d498064598bc36e158436fb1861245ef909a1776e5cb50221db718c82a483">

Build wallet from mnemonic

mnemonic = "hurt orient quarter item can into zebra west either ship team pattern"
wallet = Minter::Wallet.new(mnemonic) 
=> #<Minter::Wallet:0x00007fb7019cdaf0
@address="Mx3f865a277ef9e901280d0e607294be9a654860ea",
@mnemonic="hurt orient quarter item can into zebra west either ship team pattern",
@private_key="0ce363580a20351d995dbafc8942f61c0094f38d0d4f837d1f0c37a9f3c3c7ca",
@public_key="Mp7084eec27577ffd4151b54bf7d8ed500a514629fea4e5992bb94a704011d89225be0543fd0a27069b7855c0d260aa21011380843d03d18aabc2bb1e4d4c80e15">

Minter Key

Generate mnemonic.

mnemonic = Minter::Key.new_mnemonic
#=> "rice joy gift diamond wisdom scout junk keen math page firm regular"

Get private key from mnemonic.

private_key = Minter::Key.private_key_from_mnemonic(mnemonic)
# => "4f9706c0fa8f63a9481379579b4e6ab2d1e41ae8adab0885f58dc6a4859451be"

Get public key from private key.

public_key = Minter::Key.public_key_from_private_key(private_key)
#=> "Mp4357760042c69a3414b9f66236e0cf0cc583c2bb49dff7c3cf68968df1e131bfa54483d0da3291dcba8980cf86ebe8c4d38186efe7322d5d7a3d5501149e6fb0"

Get Minter address from public key.

address  = Minter::Key.address_from_public_key(public_key)
#=> "Mx703323dfeabdffc976c62fb156c58ea41606831e"

Get Minter address from private key.

address  = Minter::Key.address_from_private_key(private_key)
#=> "Mx703323dfeabdffc976c62fb156c58ea41606831e"

Get Minter address from mnemonic.

address  = Minter::Key.address_from_mnemonic(mnemonic)
#=> "Mx703323dfeabdffc976c62fb156c58ea41606831e"

Tests

To run tests:

```shell script bundle install rspec


## Development

After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/minter-ruby-sdk. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/minter-ruby-sdk/blob/master/CODE_OF_CONDUCT.md).


## License

The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).

## Code of Conduct

Everyone interacting in the Minter::Ruby::Sdk project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/minter-ruby-sdk/blob/master/CODE_OF_CONDUCT.md).