nanook 2.4.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +139 -0
- data/README.md +158 -99
- data/bin/console +4 -3
- data/lib/nanook.rb +77 -21
- data/lib/nanook/account.rb +238 -168
- data/lib/nanook/block.rb +380 -149
- data/lib/nanook/errors.rb +10 -0
- data/lib/nanook/node.rb +218 -83
- data/lib/nanook/private_key.rb +115 -0
- data/lib/nanook/public_key.rb +55 -0
- data/lib/nanook/rpc.rb +104 -44
- data/lib/nanook/util.rb +68 -19
- data/lib/nanook/version.rb +3 -1
- data/lib/nanook/wallet.rb +369 -167
- data/lib/nanook/wallet_account.rb +151 -91
- data/lib/nanook/work_peer.rb +14 -7
- metadata +28 -27
- data/lib/nanook/error.rb +0 -5
- data/lib/nanook/key.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd2278329714fcd1e6778b5cbc85791f67e4fc835a7e6210abedc698f677645f
|
4
|
+
data.tar.gz: 074e3d14d1692038016973492c6d7475815e2b67f670ddba8d0e118e6fcbedfa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2fb9465657aa458639093281da94821ce9b07731c4b44309fa3372416ec2fa928a77e3d1c8260f4013a21cd51335c92d1cf58aa48cdbb0f5629796b46977c814
|
7
|
+
data.tar.gz: 3d518590b7433bdce1696ccc5d23fa2fc93d60101649ccb954de813493e51f2535f6d85bc91d841bdb7f54539c6f7f20444daaea877562b240191354bd37d3d9
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,145 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## 3.1.0
|
8
|
+
|
9
|
+
### Added
|
10
|
+
|
11
|
+
- `Block#next`.
|
12
|
+
- `Block#descendants` aliases `Block#successors`
|
13
|
+
|
14
|
+
### Changed
|
15
|
+
|
16
|
+
- `Block.chain` and `Block.successors` no longer return the Block itself in the response.
|
17
|
+
|
18
|
+
## 3.0.1
|
19
|
+
|
20
|
+
### Fixed
|
21
|
+
|
22
|
+
- Fix `Block#type` being `nil` when RPC doesn't return a `subtype`.
|
23
|
+
|
24
|
+
## 3.0.0
|
25
|
+
|
26
|
+
### Removed
|
27
|
+
|
28
|
+
- `Nanook::Block#block_count_by_type` Removed, as the RPC no longer supports this command.
|
29
|
+
- `Nanook::Block#history` Removed, as the RPC command is deprecated.
|
30
|
+
- `Nanook::Block#publish` Removed, as the RPC command expects more data than what we instantiate within `Nanook::Block`.
|
31
|
+
- Removed all RPC calls that are not recommended for production:
|
32
|
+
- `Nanook::Node#bootstrap_status`.
|
33
|
+
- `Nanook::Node#confirmation_history`.
|
34
|
+
- `Nanook::Node#confirmed_recently?`.
|
35
|
+
- `Nanook::Key` Replaced by `Nanook::PrivateKey`.
|
36
|
+
- `Nanook::Account#info` No longer accepts `detailed:` argument.
|
37
|
+
- `Nanook::Node#synced?` As this was deprecated for removal in v3.0.
|
38
|
+
|
39
|
+
### Added
|
40
|
+
|
41
|
+
- Added missing `Nanook::WalletAccount#block_count` delegate.
|
42
|
+
- Added `Nanook#network_telemetry`.
|
43
|
+
- Added `Nanook::Rpc#test`.
|
44
|
+
- Added `Nanook::WalletAccount#work`.
|
45
|
+
- Added `Nanook::WalletAccount#set_work`.
|
46
|
+
- Added `Nanook::Account#blocks`.
|
47
|
+
- Added `Nanook::Account#delegators_count`.
|
48
|
+
- Added `Nanook::Account#open_block`.
|
49
|
+
- Added `Nanook::Node#change_receive_minimum`.
|
50
|
+
- Added `Nanook::Node#confirmation_quorum`.
|
51
|
+
- Added `Nanook::Node#keepalive`.
|
52
|
+
- Added `Nanook::Node#receive_minimum`.
|
53
|
+
- Added `Nanook::Node#search_pending`.
|
54
|
+
- Added `Nanook::Wallet#history`.
|
55
|
+
- Added `Nanook::Wallet#exists?`.
|
56
|
+
- Added `Nanook::Wallet#ledger`.
|
57
|
+
- Added `Nanook::Wallet#move_accounts`.
|
58
|
+
- Added `Nanook::Wallet#remove_account`.
|
59
|
+
- Added `Nanook::Wallet#republish_blocks`.
|
60
|
+
- Added `Nanook::Wallet#search_pending`.
|
61
|
+
- Added `Nanook::Wallet#work`.
|
62
|
+
- Added `Nanook::Block#account`.
|
63
|
+
- Added `Nanook::Block#amount`.
|
64
|
+
- Added `Nanook::Block#balance`.
|
65
|
+
- Added `Nanook::Block#change?`.
|
66
|
+
- Added `Nanook::Block#confirmed?`.
|
67
|
+
- Added `Nanook::Block#epoch?`.
|
68
|
+
- Added `Nanook::Block#exists?`.
|
69
|
+
- Added `Nanook::Block#height`.
|
70
|
+
- Added `Nanook::Block#open?`.
|
71
|
+
- Added `Nanook::Block#previous`.
|
72
|
+
- Added `Nanook::Block#receive?`.
|
73
|
+
- Added `Nanook::Block#representative`.
|
74
|
+
- Added `Nanook::Block#send?`.
|
75
|
+
- Added `Nanook::Block#signature`.
|
76
|
+
- Added `Nanook::Block#timestamp`.
|
77
|
+
- Added `Nanook::Block#type`.
|
78
|
+
- Added `Nanook::Block#unconfirmed?`.
|
79
|
+
- Added `Nanook::Block#work`.
|
80
|
+
- Added `Nanook::PrivateKey` with methods `#create`, `#account` and `#public_key`.
|
81
|
+
- Added `Nanook::PublicKey` with method `#account`.
|
82
|
+
- Added equality testing methods `#==`, `#eql?` and `#hash` for:
|
83
|
+
- `Nanook::Account`
|
84
|
+
- `Nanook::Block`
|
85
|
+
- `Nanook::PrivateKey`
|
86
|
+
- `Nanook::PublicKey`
|
87
|
+
- `Nanook::Wallet`
|
88
|
+
- `Nanook::WalletAccount`
|
89
|
+
|
90
|
+
### Changed
|
91
|
+
|
92
|
+
- New error classes: `Nanook::ConnectionError`, `NanoUnitError`, `NodeRpcError` and `NodeRpcConfigurationError`.
|
93
|
+
- `Nanook::Wallet#default_representative` returns a `Nanook::Account`.
|
94
|
+
- `Nanook::Wallet#change_representative` returns a `Nanook::Account`.
|
95
|
+
- `Nanook::Wallet#unlock` can be passed no argument (`password` will be `nil`).
|
96
|
+
- `Nanook::Wallet#info` returns data from `wallet_info` RPC.
|
97
|
+
- `Nanook::Block#is_valid_work?` renamed to `#valid_work?`.
|
98
|
+
- `Nanook::Block#republish` returns an Array of `Nanook::Block`s.
|
99
|
+
- `Nanook::Block#chain` returns an Array of `Nanook::Block`s.
|
100
|
+
- `Nanook::Block#successors` returns an Array of `Nanook::Block`s.
|
101
|
+
- `Nanook::Block#info`:
|
102
|
+
- returns balances in nano, and can optionally be passed `unit: :raw` argument.
|
103
|
+
- returns account values as `Nanook::Account` and block values as `Nanook::Block`.
|
104
|
+
- `Nanook::Node#peers` returns details as a `Hash` keyed by `Nanook::Account`.
|
105
|
+
- `Nanook::Account#pending` returns source as `Nanook::Account` and block as `Nanook::Block` when `detailed: true`.
|
106
|
+
- `Nanook::Account#representative` returns a `Nanook::Account`.
|
107
|
+
- `Nanook::Account#delegators` returns accounts as `Nanook::Account`s.
|
108
|
+
- `Nanook::Account#history` returns accounts as `Nanook::Account` and blocks as `Nanook::Block`.
|
109
|
+
- `Nanook::Account#ledger` returns accounts as `Nanook::Account` and blocks as `Nanook::Block`.
|
110
|
+
- `Nanook::Account#public_key` returns a `Nanook::PublicKey`.
|
111
|
+
- `Nanook::Account#weight` accepts an optional `unit:` argment.
|
112
|
+
- `Nanook::Account#info`:
|
113
|
+
- returns the `frontier`, `open_block`, `representative_block` values as `Nanook::Block`s.
|
114
|
+
- returns the `representative` as a `Nanook::Account`.
|
115
|
+
- `modified_timestamp` key renamed to `last_modified_at` and value is a `Time` in UTC.
|
116
|
+
- `Nanook::Key` has become `Nanook::PrivateKey`, `#generate` has been renamed `#create` and returns a `Nanook::PrivateKey`.
|
117
|
+
|
118
|
+
### Fixed
|
119
|
+
|
120
|
+
- A number of errors when node is still bootstrapping and is missing accounts from the ledger.
|
121
|
+
- `Nanook::Node#representatives_online` accessing representative list as a `Hash` after RPC change.
|
122
|
+
|
123
|
+
## 2.5.1
|
124
|
+
|
125
|
+
### Fixed
|
126
|
+
|
127
|
+
- undefined method 'new' for `BigDecimal:Class` (thank you @MihaiVoinea)
|
128
|
+
|
129
|
+
## 2.5.0
|
130
|
+
|
131
|
+
### Added
|
132
|
+
|
133
|
+
- New `Nanook::Node#bootstrap_lazy` method.
|
134
|
+
- New `Nanook::Node#bootstrap_status` method.
|
135
|
+
- New `Nanook::Node#difficulty` method.
|
136
|
+
- New `Nanook::Node#uptime` method.
|
137
|
+
- New `Nanook::Wallet#lock` method.
|
138
|
+
|
139
|
+
### Changed
|
140
|
+
|
141
|
+
- `Nanook::Node#chain` now takes optional `offset` argument.
|
142
|
+
- `Nanook::Node#successors` now takes optional `offset` argument.
|
143
|
+
- `Nanook::Node#successors` now aliased as `Nanook::Node#ancestors`
|
144
|
+
- Updated docs to use `nano_` prefixed addresses.
|
145
|
+
|
7
146
|
## 2.4.0
|
8
147
|
|
9
148
|
### Added
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Nanook
|
2
2
|
|
3
|
-
This is a Ruby library for managing a [nano currency](https://nano.org/) node, including making and receiving payments, using the [nano RPC protocol](https://
|
3
|
+
This is a Ruby library for managing a [nano currency](https://nano.org/) node, including making and receiving payments, using the [nano RPC protocol](https://docs.nano.org/commands/rpc-protocol). Nano is a fee-less, fast, environmentally-friendly cryptocurrency. It's awesome. See [https://nano.org](https://nano.org/).
|
4
4
|
|
5
5
|
[](https://badge.fury.io/rb/nanook)
|
6
6
|
[](https://circleci.com/gh/lukes/nanook/tree/master)
|
@@ -26,7 +26,7 @@ Or install it yourself as:
|
|
26
26
|
|
27
27
|
## Initializing
|
28
28
|
|
29
|
-
Nanook will by default connect to `http://
|
29
|
+
Nanook will by default connect to `http://[::1]:7076`.
|
30
30
|
|
31
31
|
```ruby
|
32
32
|
nanook = Nanook.new
|
@@ -35,7 +35,7 @@ nanook = Nanook.new
|
|
35
35
|
To connect to another host instead:
|
36
36
|
|
37
37
|
```ruby
|
38
|
-
nanook = Nanook.new("http://
|
38
|
+
nanook = Nanook.new("http://localhost:7076")
|
39
39
|
```
|
40
40
|
|
41
41
|
## Basics
|
@@ -45,19 +45,19 @@ nanook = Nanook.new("http://ip6-localhost:7076")
|
|
45
45
|
Create a wallet:
|
46
46
|
|
47
47
|
```ruby
|
48
|
-
|
48
|
+
wallet = nanook.wallet.create
|
49
49
|
```
|
50
50
|
|
51
51
|
Create an account within a wallet:
|
52
52
|
|
53
53
|
```ruby
|
54
|
-
|
54
|
+
account = wallet.account.create
|
55
55
|
```
|
56
56
|
|
57
57
|
List accounts within a wallet:
|
58
58
|
|
59
59
|
```ruby
|
60
|
-
|
60
|
+
accounts = wallet.accounts
|
61
61
|
```
|
62
62
|
|
63
63
|
### Sending a payment
|
@@ -65,28 +65,28 @@ Nanook.new.wallet(wallet_id).accounts
|
|
65
65
|
To send a payment from an account in a wallet:
|
66
66
|
|
67
67
|
```ruby
|
68
|
-
account =
|
68
|
+
account = nanook.wallet(wallet_id).account(account_id)
|
69
69
|
account.pay(to: recipient_account_id, amount: 0.2, id: unique_id)
|
70
70
|
```
|
71
71
|
|
72
72
|
Or, a wallet:
|
73
73
|
|
74
74
|
```ruby
|
75
|
-
wallet =
|
75
|
+
wallet = nanook.wallet(wallet_id)
|
76
76
|
wallet.pay(from: your_account_id, to: recipient_account_id, amount: 0.2, id: unique_id)
|
77
77
|
```
|
78
78
|
|
79
|
-
The `id` can be any string and needs to be unique per payment. It serves an important purpose; it allows you to make this call multiple times with the same `id` and be reassured that you will only ever send that nano payment once. From the [Nano RPC](https://
|
79
|
+
The `id` can be any string and needs to be unique per payment. It serves an important purpose; it allows you to make this call multiple times with the same `id` and be reassured that you will only ever send that nano payment once. From the [Nano RPC](https://docs.nano.org/commands/rpc-protocol/#send):
|
80
80
|
|
81
81
|
> You can (and should) specify a unique id for each spend to provide idempotency. That means that if you [make the payment call] two times with the same id, the second request won't send any additional Nano.
|
82
82
|
|
83
|
-
The unit of the `amount` is NANO (which is currently technically Mnano — see [What are Nano's Units](https://nano.org/
|
83
|
+
The unit of the `amount` is NANO (which is currently technically Mnano — see [What are Nano's Units](https://docs.nano.org/protocol-design/distribution-and-units/#unit-dividers)). You can pass an amount of raw instead by adding the `unit: :raw` argument:
|
84
84
|
|
85
85
|
```ruby
|
86
86
|
account.pay(to: recipient_account_id, amount: 999, unit: :raw, id: unique_id)
|
87
87
|
```
|
88
88
|
|
89
|
-
Note, there may be a delay in receiving a response due to Proof of Work being done. From the [Nano RPC](https://
|
89
|
+
Note, there may be a delay in receiving a response due to Proof of Work being done. From the [Nano RPC](https://docs.nano.org/commands/rpc-protocol/#send):
|
90
90
|
|
91
91
|
> Proof of Work is precomputed for one transaction in the background. If it has been a while since your last transaction it will send instantly, the next one will need to wait for Proof of Work to be generated.
|
92
92
|
|
@@ -95,12 +95,12 @@ Note, there may be a delay in receiving a response due to Proof of Work being do
|
|
95
95
|
The simplest way to receive a payment is:
|
96
96
|
|
97
97
|
```ruby
|
98
|
-
account =
|
98
|
+
account = nanook.wallet(wallet_id).account(account_id)
|
99
99
|
account.receive
|
100
100
|
|
101
101
|
# or:
|
102
102
|
|
103
|
-
wallet =
|
103
|
+
wallet = nanook.wallet(wallet_id)
|
104
104
|
wallet.receive(into: account_id)
|
105
105
|
```
|
106
106
|
|
@@ -109,42 +109,46 @@ The `receive` method when called as above will receive the latest pending paymen
|
|
109
109
|
You can also receive a specific pending block if you know it (you may have discovered it through calling `account.pending` for example):
|
110
110
|
|
111
111
|
```ruby
|
112
|
-
account =
|
112
|
+
account = nanook.wallet(wallet_id).account(account_id)
|
113
113
|
account.receive(block_id)
|
114
114
|
|
115
115
|
# or:
|
116
116
|
|
117
|
-
wallet =
|
117
|
+
wallet = nanook.wallet(wallet_id)
|
118
118
|
wallet.receive(block_id, into: account_id)
|
119
119
|
```
|
120
120
|
|
121
|
+
## Exploring further
|
122
|
+
|
123
|
+
Read the [Using Nanook](https://github.com/lukes/nanook/wiki/Using-nanook) page for some example uses of Nanook to query the network.
|
124
|
+
|
121
125
|
## All commands
|
122
126
|
|
123
|
-
Below is a quick reference list of commands. See the [full Nanook documentation](https://lukes.github.io/nanook/
|
127
|
+
Below is a quick reference list of commands. See the [full Nanook documentation](https://lukes.github.io/nanook/3.1.0/) for a searchable detailed description of every class and method, what the arguments mean, and example responses.
|
124
128
|
|
125
129
|
### Wallets
|
126
130
|
|
127
|
-
See the [full documentation for Nanook::Wallet](https://lukes.github.io/nanook/
|
131
|
+
See the [full documentation for Nanook::Wallet](https://lukes.github.io/nanook/3.1.0/Nanook/Wallet.html) for a detailed description of each method and example responses.
|
128
132
|
|
129
133
|
#### Create wallet:
|
130
134
|
|
131
135
|
```ruby
|
132
|
-
|
136
|
+
nanook.wallet.create
|
133
137
|
```
|
134
138
|
#### Restoring a wallet from a seed
|
135
139
|
|
136
140
|
```ruby
|
137
|
-
|
141
|
+
nanook.wallet.restore(seed)
|
138
142
|
```
|
139
143
|
Optionally also restore the wallet's accounts:
|
140
144
|
```ruby
|
141
|
-
|
145
|
+
nanook.wallet.restore(seed, accounts: 2)
|
142
146
|
```
|
143
147
|
|
144
|
-
#### Working with a
|
148
|
+
#### Working with a wallet:
|
145
149
|
|
146
150
|
```ruby
|
147
|
-
wallet =
|
151
|
+
wallet = nanook.wallet(wallet_id)
|
148
152
|
|
149
153
|
wallet.balance
|
150
154
|
wallet.balance(account_break_down: true)
|
@@ -157,19 +161,32 @@ wallet.pending(detailed: true)
|
|
157
161
|
wallet.pending(unit: :raw)
|
158
162
|
wallet.receive(into: account_id)
|
159
163
|
wallet.receive(pending_block_id, into: account_id)
|
164
|
+
wallet.search_pending
|
160
165
|
|
161
166
|
wallet.account.create
|
167
|
+
wallet.account.create(5)
|
162
168
|
wallet.accounts
|
163
169
|
wallet.contains?(account_id)
|
170
|
+
wallet.move_accounts(from_wallet_id, [account_1_id, account_2_id])
|
171
|
+
wallet.remove_account(account_id)
|
164
172
|
|
165
173
|
wallet.default_representative
|
166
|
-
wallet.change_default_representative(
|
174
|
+
wallet.change_default_representative(representative_account_id)
|
175
|
+
wallet.change_password(password)
|
176
|
+
wallet.exists?
|
177
|
+
wallet.history
|
178
|
+
wallet.history(unit: :raw)
|
167
179
|
wallet.info
|
168
180
|
wallet.info(unit: :raw)
|
169
181
|
wallet.export
|
182
|
+
wallet.ledger
|
183
|
+
wallet.ledger(unit: :raw)
|
184
|
+
wallet.lock
|
170
185
|
wallet.locked?
|
186
|
+
wallet.republish_blocks
|
187
|
+
wallet.republish_blocks(limit: 5)
|
171
188
|
wallet.unlock(password)
|
172
|
-
wallet.
|
189
|
+
wallet.work
|
173
190
|
|
174
191
|
wallet.destroy
|
175
192
|
```
|
@@ -178,135 +195,159 @@ wallet.destroy
|
|
178
195
|
#### Create account:
|
179
196
|
|
180
197
|
```ruby
|
181
|
-
|
198
|
+
nanook.wallet(wallet_id).account.create
|
182
199
|
```
|
183
200
|
|
184
201
|
#### Create multiple accounts:
|
185
202
|
|
186
203
|
```ruby
|
187
|
-
|
204
|
+
nanook.wallet(wallet_id).account.create(5)
|
188
205
|
```
|
189
206
|
|
190
|
-
#### Working with
|
207
|
+
#### Working with an account:
|
191
208
|
|
192
|
-
|
209
|
+
Any account on the Nano network that is known by your node can be initialized through `Nanook#account`:
|
193
210
|
|
194
211
|
```ruby
|
195
|
-
account =
|
212
|
+
account = nanook.account(account_id)
|
213
|
+
```
|
196
214
|
|
215
|
+
See the [full documentation for Nanook::Account](https://lukes.github.io/nanook/3.1.0/Nanook/Account.html) for a detailed description of each method and example responses.
|
216
|
+
|
217
|
+
```ruby
|
197
218
|
account.balance
|
198
219
|
account.balance(unit: :raw)
|
199
|
-
account.pay(to: recipient_account_id, amount: 2, id: unique_id)
|
200
|
-
account.pay(to: recipient_account_id, amount: 2, id: unique_id, unit: :raw)
|
201
220
|
account.pending
|
202
221
|
account.pending(limit: 1)
|
203
222
|
account.pending(detailed: true)
|
204
223
|
account.pending(unit: :raw)
|
205
|
-
account.receive
|
206
|
-
account.receive(pending_block_id)
|
207
224
|
|
225
|
+
account.blocks
|
226
|
+
account.blocks(limit: 1)
|
227
|
+
account.blocks(sort: :desc)
|
228
|
+
account.delegators
|
229
|
+
account.delegators(unit: :raw)
|
230
|
+
account.delegators_count
|
208
231
|
account.exists?
|
232
|
+
account.history
|
233
|
+
account.history(limit: 1)
|
234
|
+
account.history(unit: :raw)
|
235
|
+
account.history(sort: :desc)
|
209
236
|
account.info
|
210
|
-
account.info(detailed: true)
|
211
237
|
account.info(unit: :raw)
|
212
238
|
account.last_modified_at
|
213
239
|
account.ledger
|
214
240
|
account.ledger(limit: 10)
|
215
241
|
account.ledger(modified_since: Time.now)
|
216
242
|
account.ledger(unit: :raw)
|
217
|
-
account.
|
218
|
-
account.
|
219
|
-
account.history(unit: :raw)
|
243
|
+
account.ledger(sort: :desc)
|
244
|
+
account.open_block
|
220
245
|
account.public_key
|
221
|
-
account.delegators
|
222
|
-
account.delegators(unit: :raw)
|
223
246
|
account.representative
|
224
|
-
account.change_representative(new_representative)
|
225
247
|
account.weight
|
226
|
-
|
227
|
-
account.destroy
|
248
|
+
account.weight(unit: :raw)
|
228
249
|
```
|
229
250
|
|
230
|
-
#### Working with
|
251
|
+
#### Working with an account created on the node:
|
231
252
|
|
232
|
-
|
253
|
+
Accounts that have been created on your node can have
|
254
|
+
additional methods when initialized through `Nanook::Wallet#account`:
|
233
255
|
|
234
256
|
```ruby
|
235
|
-
|
257
|
+
wallet = nanook.wallet(wallet_id)
|
258
|
+
account = wallet.account(account_id)
|
259
|
+
```
|
236
260
|
|
237
|
-
account.
|
238
|
-
account.balance(unit: :raw)
|
239
|
-
account.pending
|
240
|
-
account.pending(limit: 1)
|
241
|
-
account.pending(detailed: true)
|
242
|
-
account.pending(unit: :raw)
|
261
|
+
As well as the following methods, all methods of [regular accounts](#working-with-any-account) can also be called.
|
243
262
|
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
account.
|
248
|
-
account.
|
249
|
-
account.
|
250
|
-
account.
|
251
|
-
account.
|
252
|
-
account.
|
253
|
-
account.
|
254
|
-
account.
|
255
|
-
account.history(unit: :raw)
|
256
|
-
account.public_key
|
257
|
-
account.delegators
|
258
|
-
account.delegators(unit: :raw)
|
259
|
-
account.representative
|
260
|
-
account.weight
|
263
|
+
See the [full documentation for Nanook::WalletAccount](https://lukes.github.io/nanook/3.1.0/Nanook/WalletAccount.html) for a detailed description of each method and example responses.
|
264
|
+
|
265
|
+
```ruby
|
266
|
+
account.pay(to: recipient_account_id, amount: 2, id: unique_id)
|
267
|
+
account.pay(to: recipient_account_id, amount: 2, id: unique_id, unit: :raw)
|
268
|
+
account.receive
|
269
|
+
account.receive(pending_block_id)
|
270
|
+
account.change_representative(new_representative)
|
271
|
+
account.set_work(work)
|
272
|
+
account.work
|
273
|
+
account.destroy
|
261
274
|
```
|
262
275
|
|
263
276
|
### Blocks
|
264
277
|
|
265
|
-
See the [full documentation for Nanook::Block](https://lukes.github.io/nanook/
|
278
|
+
See the [full documentation for Nanook::Block](https://lukes.github.io/nanook/3.1.0/Nanook/Block.html) for a detailed description of each method and example responses.
|
266
279
|
|
267
280
|
```ruby
|
268
|
-
block =
|
281
|
+
block = nanook.block(block_id)
|
269
282
|
|
270
|
-
block.info # Verified blocks in the ledger
|
271
|
-
block.info(allow_unchecked: true) # Verified blocks AND unchecked synchronizing blocks
|
272
283
|
block.account
|
273
|
-
block.
|
274
|
-
block.
|
284
|
+
block.amount
|
285
|
+
block.amount(unit: :raw)
|
286
|
+
block.ancestors
|
287
|
+
block.ancestors(limit: 10)
|
288
|
+
block.ancestors(offset: 10)
|
289
|
+
block.balance
|
290
|
+
block.change?
|
291
|
+
block.checked?
|
275
292
|
block.confirm
|
276
|
-
block.
|
277
|
-
block.
|
278
|
-
block.
|
293
|
+
block.descendants
|
294
|
+
block.descendants(limit: 10)
|
295
|
+
block.descendants(offset: 10)
|
296
|
+
block.epoch?
|
297
|
+
block.exists?
|
298
|
+
block.exists?(allow_unchecked: true)
|
299
|
+
block.height
|
300
|
+
block.info # Verified blocks in the ledger
|
301
|
+
block.info(allow_unchecked: true) # Verified blocks AND unchecked synchronizing blocks
|
302
|
+
block.info(unit: :raw)
|
303
|
+
block.next
|
304
|
+
block.open?
|
305
|
+
block.pending?
|
306
|
+
block.previous
|
307
|
+
block.receive?
|
308
|
+
block.representative
|
279
309
|
block.republish
|
280
310
|
block.republish(sources: 2)
|
281
311
|
block.republish(destinations: 2)
|
282
|
-
block.
|
283
|
-
block.
|
284
|
-
block.
|
285
|
-
block.
|
312
|
+
block.send?
|
313
|
+
block.signature
|
314
|
+
block.timestamp
|
315
|
+
block.type
|
316
|
+
block.unchecked?
|
317
|
+
block.work
|
286
318
|
|
287
319
|
block.generate_work
|
288
320
|
block.generate_work(use_peers: true)
|
289
321
|
block.cancel_work
|
290
|
-
block.
|
322
|
+
block.valid_work?(work)
|
291
323
|
```
|
292
324
|
|
293
325
|
### Managing your nano node
|
294
326
|
|
295
|
-
See the [full documentation for Nanook::Node](https://lukes.github.io/nanook/
|
327
|
+
See the [full documentation for Nanook::Node](https://lukes.github.io/nanook/3.1.0/Nanook/Node.html) for a detailed description of each method and example responses.
|
296
328
|
|
297
329
|
```ruby
|
298
|
-
node =
|
330
|
+
node = nanook.node
|
299
331
|
|
300
332
|
node.account_count
|
301
333
|
node.block_count
|
302
|
-
node.block_count_by_type
|
303
|
-
node.bootstrap_any
|
304
334
|
node.bootstrap(address: "::ffff:138.201.94.249", port: 7075)
|
305
|
-
node.
|
335
|
+
node.bootstrap_any
|
336
|
+
node.bootstrap_lazy(block_id)
|
337
|
+
node.bootstrap_lazy(block_id, force: true)
|
338
|
+
node.confirmation_quorum
|
339
|
+
node.difficulty
|
340
|
+
node.difficulty(include_trend: true)
|
341
|
+
node.keepalive(address: "::ffff:138.201.94.249", port: 7075)
|
306
342
|
node.peers
|
343
|
+
node.receive_minimum
|
344
|
+
node.receive_minimum(unit: :raw)
|
345
|
+
node.change_receive_minimum(amount)
|
346
|
+
node.change_receive_minimum(amount, unit: :raw)
|
307
347
|
node.representatives
|
308
348
|
node.representatives(unit: :raw)
|
309
349
|
node.representatives_online
|
350
|
+
node.search_pending
|
310
351
|
node.synchronizing_blocks
|
311
352
|
node.synchronizing_blocks(limit: 1)
|
312
353
|
node.sync_progress
|
@@ -318,7 +359,7 @@ node.stop
|
|
318
359
|
### Work peers
|
319
360
|
|
320
361
|
```ruby
|
321
|
-
work_peers =
|
362
|
+
work_peers = nanook.work_peers
|
322
363
|
|
323
364
|
work_peers.add(address: "::ffff:172.17.0.1:7076", port: 7076)
|
324
365
|
work_peers.clear
|
@@ -330,26 +371,44 @@ work_peers.list
|
|
330
371
|
#### Create private public key pair:
|
331
372
|
|
332
373
|
```ruby
|
333
|
-
|
334
|
-
|
374
|
+
private_key = nanook.private_key.create
|
375
|
+
private_key = nanook.private_key.create(seed: seed, index: 0)
|
376
|
+
private_key.public_key # => Nanook::PublicKey
|
377
|
+
```
|
378
|
+
|
379
|
+
#### Working with a private key
|
380
|
+
|
381
|
+
```ruby
|
382
|
+
key = nanook.private_key(private_key)
|
383
|
+
|
384
|
+
key.account
|
385
|
+
key.public_key
|
335
386
|
```
|
336
387
|
|
337
|
-
#### Working with a
|
388
|
+
#### Working with a public key
|
338
389
|
|
339
390
|
```ruby
|
340
|
-
key =
|
391
|
+
key = nanook.public_key(public_key)
|
341
392
|
|
342
|
-
key.
|
393
|
+
key.account
|
394
|
+
```
|
395
|
+
|
396
|
+
### Network
|
397
|
+
|
398
|
+
A summarized overview of the Nano network:
|
399
|
+
|
400
|
+
```ruby
|
401
|
+
nanook.network_telemetry
|
343
402
|
```
|
344
403
|
|
345
404
|
## Nanook Metal
|
346
405
|
|
347
|
-
You can do any call listed in the [Nano RPC](https://
|
406
|
+
You can do any call listed in the [Nano RPC](https://docs.nano.org/commands/rpc-protocol) directly through the `rpc` method. The first argument should match the `action` of the RPC call, and then all remaining parameters are passed in as arguments.
|
348
407
|
|
349
|
-
E.g., the [accounts_create command](https://
|
408
|
+
E.g., the [accounts_create command](https://docs.nano.org/commands/rpc-protocol/#accounts_create) can be called like this:
|
350
409
|
|
351
410
|
```ruby
|
352
|
-
|
411
|
+
nanook.rpc.call(:accounts_create, wallet: wallet_id, count: 2)
|
353
412
|
```
|
354
413
|
|
355
414
|
## Contributing
|
@@ -370,11 +429,11 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
370
429
|
|
371
430
|
## Buy me a nano coffee
|
372
431
|
|
373
|
-
This library is
|
432
|
+
This library is always free to use, but feel free to send some nano [my way](https://www.nanode.co/account/nano_3c3ek3k8135f6e8qtfy8eruk9q3yzmpebes7btzncccdest8ymzhjmnr196j) if you'd like to!
|
374
433
|
|
375
|
-
|
434
|
+
nano_3c3ek3k8135f6e8qtfy8eruk9q3yzmpebes7btzncccdest8ymzhjmnr196j
|
376
435
|
|
377
|
-

|
378
437
|
|
379
438
|
|
380
439
|
|