NearApi
Near Protocol API ruby library
Installation
Add this line to your application's Gemfile:
gem 'near_api'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install near_api
Configuration
Via ENV variables:
NEAR_NODE_URL
RPC node url (for ex.https://rpc.mainnet.near.org
)NEAR_SIGNER_ID
account name for transactions andview_access_key
requests (account_id
in.near-credentials
)NEAR_KEYPAIR
base58 encoded private + public keys (ed25519:4556s...
in.near-credentials
named asprivate_key
) if no private key is available public key can be specified asNEAR_PUBLIC_KEY
for view requests
Via explicit params: example:
key = NearApi::Key.new('account_id.testnet', key_pair: 'ed25519:4556s...')
config = NearApi::Config.new(node_url: 'https://rpc.testnet.near.org')
NearApi::Transaction.new(..., key: key, config: config)
Usage
Operations:
View
NearApi::Api instance view methods:
example:
NearApi::Api.new.view_access_key('account_id.testnet')
Response: hash as described in NEAR Protocol JS API
Other methods can be called as:
NearApi::Api.new.json_rpc('EXPERIMENTAL_changes', {
"changes_type": "single_access_key_changes",
"keys": [
{
"account_id": "example-acct.testnet",
"public_key": "ed25519:25KEc7t7MQohAJ4EDThd2vkksKkwangnuJFzcoiXj9oM"
}
],
"finality": "final"
}
)
Smart contract view function
NearApi::Query.new.call(
'account_id.testnet',
'get_num',
{}
)
Transaction
NearApi::Transaction.new(
'account_id.testnet', # Transaction call receiver
[NearApi::Actions::FunctionCall.new('increment', {})], # Array of Actions
key: key, # Optional key
config: config # Optional config
).call
The example above is waiting for transaction complete
To send transaction async:
NearApi::Transaction.new(...).async
Transaction has one or many actions Actions:
- Create Account
- Deploy Contract
- Function Call
- Transfer
- Stake
- Add Key
- Delete Key
- Delete Account
Transaction status
NearApi::Status.new.transaction_status(transaction_hash)
Transaction Status with Receipts
NearApi::Status.new.final_transaction_status(transaction_hash)
External Signing
To sign transaction with external signing service (dedicated secure service or hardware ledger)
transaction = NearApi::Transaction.new(...)
digest = transaction.message.digest
# sign with external service
signature = Ed25519::SigningKey.from_keypair(bytestring).sign(digest)
transaction.call_api('broadcast_tx_commit', transaction.message.message, signature)
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/near-rails-guide/near_api
License
The gem is available as open source under the terms of the MIT License.