class AppChain::RPC

Constants

METHOD_NAMES

CITA v0.18 RPC list

Attributes

http[R]
url[R]

Public Class Methods

new(url) click to toggle source
# File lib/appchain/rpc.rb, line 34
def initialize(url)
  @url = url
  @http = Http.new(@url)
end

Public Instance Methods

call_rpc(method, jsonrpc: Http::DEFAULT_JSONRPC, params: Http::DEFAULT_PARAMS, id: Http::DEFAULT_ID) click to toggle source

@return [Hash] response body

# File lib/appchain/rpc.rb, line 51
def call_rpc(method, jsonrpc: Http::DEFAULT_JSONRPC, params: Http::DEFAULT_PARAMS, id: Http::DEFAULT_ID)
  resp = http.call_rpc(method, params: params, jsonrpc: jsonrpc, id: id)
  JSON.parse(resp.body)
end
send_transaction(transaction, private_key) click to toggle source

@param transaction [AppChain::Transaction] @return [Hash]

# File lib/appchain/rpc.rb, line 58
def send_transaction(transaction, private_key)
  content = TransactionSigner.encode(transaction, private_key)
  send_raw_transaction(content)
end
transfer(to:, private_key:, value:, quota: 30_000) click to toggle source

easy to transfer tokens

@param to [String] to address @param private_key [String] @param value [String | Integer] hex string or decimal integer @param quota [Integer] default to 30_000

@return [Hash]

# File lib/appchain/rpc.rb, line 71
def transfer(to:, private_key:, value:, quota: 30_000)
  valid_until_block = block_number["result"].hex + 88
  meta_data = get_meta_data("latest")["result"]
  version = meta_data["version"]
  chain_id = if version.zero?
               meta_data["chainId"]
             elsif version == 1
               meta_data["chainIdV1"]
             end
  transaction = Transaction.new(nonce: Utils.nonce, valid_until_block: valid_until_block, chain_id: chain_id, to: to, value: value, quota: quota, version: version)
  send_transaction(transaction, private_key)
end