Ruby SDK for Platon & Alaya

platon ruby SDK

Gem "platon" helps to make interacting with platon&alaya blockchain from ruby .


Add this line to your application's Gemfile:

gem 'platon'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install platon

Quick Start

## generate new key 
key =  

## print bech32 address 
puts key.bech32_address(hrp: "atp") 

client ="",:alayadev)

## see current block number

## transfer 0.01 ATP to others
client.transfer key,"atpxxxxxxxxxxxxxxx",10**16



Create a new public/private key and get its address

key =
key.private_hex ## private key
=> "08bb093d6184cb06a3f80507953ba6768c03d8114a429b0ec7875bb6b6e1a8a6"

key.public_hex ## public key
=> "04641129e66399310ce4a41098d3b3fc4d722edf423dfdc0a76eba5d6e2155bbe611ee2a5c06011ab76040ca53b9ead4c5061d8cc8a89afa3f45af5830661d4b34"

key.bech32_address  ## bech32 address ,default "lat"
=> "lat1ls87d3mqfhxadjsmn0ns844tj8ljlsq8uqnv8u" 

key.bech32_address(hrp: "atp") 
=> "atp1ls87d3mqfhxadjsmn0ns844tj8ljlsq89k95cn"

key.address ## EIP55 checksummed address
=> "0xFc0Fe6c7604dcDd6ca1B9be703D6AB91fF2fC007"

Encrypt keys to json file

## default address hrp:"lat"
encrypted_key_info = Platon::Key.encrypt key,"your_password"

## set address hrp

encrypted_key_info = Platon::Key.encrypt key,"your_password",{hrp:"atp"}

## or save to location

Platon::Key.encrypt_and_save key,"your_password",{hrp:"atp",keypath:'./some/path.json'}

## or default keypath: "~/.platon/keystore" ,and use default hrp:"lat"

Platon::Key.encrypt_and_save key,"your_password" 

Decrypt keys from json file

decrypted_key = Platon::Key.decrypt encrypted_key_info,"your_password"


decrypted_key = Platon::Key.decrypt'./some/path.json'), 'your_password'


Build a transcation :

args = { 
    from: key.address,
    to: key2.address,
    value: 1_000_000_000_000,
    data: hex_data,  
    nonce: 1,
    gas_limit: 21_000,
    gas_price: 10_000_000_000,
    chain_id: chain_id
tx = args

Or decode from an encoded raw transaction

tx = Platon::Tx.decode hex

You can sign the transaction:

tx.sign key

Get the raw transaction with tx.hex, and broadcast it through any PlatON node with platon_send_raw_transaction . Or just get the TXID with tx.hash


By default methods interactiong with contracts&PPOS will use default JSON RPC Client that will handle connection to platon node.

client ="",:alayadev)

Default setting:

    platondev: {hrp: "lat", chain_id: 210309}
    alayadev:{hrp:"atp",chain_id: 201030}

You can use client.update_setting to change chain configs:

client.update_setting(hrp:"atx",chain_id: 1234)


You can get contract from blockchain. To do so you need a contract name ,contract address and ABI definition:

contract = Platon::Contract.create(client: client ,name: "MyContract", address: "atpxxxx_your_bench32_address", abi: abi)

Alternatively you can obtain abi definition and name from contract source file:

contract = Platon::Contract.create(client: client , file: "MyContract.sol", address: "atpxxxx_your_bench32_address")

Interacting with contracts:

You can call contract read-only method , no transaction will be sent to the network. If method changes contract state ,transact method can be used .[function_name](params)




All PPOS methods have been implemented. See Docs


=> true

Platon::Utils.decode_bech32_address "atp1tfm3e44jwdjmelcc9yacus700wcts0zhgw6425"
=> "0x5a771cd6b27365bcff18293b8e43cf7bb0b83c57"

=> 500000000000000000
=> 10000000000
=> "0.5"


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.


Bug reports and pull requests are welcome on GitHub at


The gem is available as open source under the terms of the MIT License.