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