Skip to content

hacktor/Crypto-NanoRPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto::NanoRPC

Some Object Oriented perl classes for interacting with a Nano (rai) node

These classes do not need to be installed; you can just use them like this:

use Crypto::NanoRPC;

Dependencies

The module uses these other modules, which you need to install by CPAN or your favourite package manager

  • HTTP::Request;
  • LWP::UserAgent;
  • JSON;

After meeting these dependencies you can

use Data::Dumper;
my $rpc = Crypto::NanoRPC->new();
my $count = $rpc->block_count();
my $newkey = $rpc->key_create();
print Dumper($count);
print Dumper($newkey);

Result:

$VAR1 = {
          'count' => '14452072',
          'unchecked' => '629'
        };
$VAR1 = {
          'public' => '51C9F72ED415331B6F5DDC6E4620EEFB8E87C7EC4011EC697B98D59D57C7C022',
          'account' => 'xrb_1ngbywqfa7bm5fqouq5garigxywgiz5yri1jxjnqq88omodwhi34c9wxgtwf',
          'private' => '5DA0774339494A1FEDC371C4680ACA47036CED78B9757FF6B69B6E5F56443348'
        };

Most rpc calls require arguments, see for example https://docs.nano.org/commands/rpc-protocol/#account\_create. Implemented RPC calls are defined in the array rpc_calls in NanoRPC.pm. The required arguments can be set using the set_params() method. The most common arguments, "wallet" and "account", have their own set_ methods.

Other example uses:

ny $url = 'http://[::1]:7076';
my $wallet_id = '0000000000000000000000000000000000000000000000000000000000000000'; ## replace with real wallet id
my $account = 'xrb_111111111111111111111111111111111111111111111111111111111111';   ## replace with real account number

my $rpc = NanoRPC->new($url);

my $amount = $rpc->mrai_to_raw(amount => 2)->{amount}; ## 2 Nano, converted to raw

$rpc->set_wallet($wallet_id);

$rpc->set_params(
                    destination => 'xrb_333333333333333333333333333333333333333333333333333333333333'
                    amount => $amount,
                );

my $result = $rpc->send();

if (defined $result->{error}) {
    print "Send $amount raw failed\nError message:" . $result->{error};
} else {
    print "Send $amount succes!\n";
}

Return values

All rpc calls return hashes of key => value pairs. When an error occurs, a hash with 'error' as a single key 'error' will be returned and the value will be a description of the error.

About

CPAN module Crypto::NanoRPC

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages