nanook 2.3.0 → 2.4.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 +5 -5
- data/CHANGELOG.md +12 -0
- data/README.md +11 -7
- data/lib/nanook/block.rb +42 -2
- data/lib/nanook/node.rb +29 -1
- data/lib/nanook/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 632d341b2aa122d7c5049077fbebf1fd67097abb9bc0a4814ae938d2a5d70356
|
4
|
+
data.tar.gz: 9e640aadc4074e46b95e2ceafff4a67808aeca2f181dd95d530fb1d52fb5be30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a697f30061015b19d30075698e7d08fb4c868d886abfb8c420367e929dbf94b800b49f735785f1c6a72cda9ae8287704a90532b553c37c1ac0e8130118197b53
|
7
|
+
data.tar.gz: 79ecfa816e0c6d2b7b2c671ac99a28bc8840dfff71a5c6e5608a5700a80c3dcf18632141b91d76d9d31219cb111395d220bb05b9ca744513415238cc6003ab1a
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,18 @@ 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
|
+
## 2.4.0
|
8
|
+
|
9
|
+
### Added
|
10
|
+
|
11
|
+
- New `Nanook::Node#confirmation_history` method.
|
12
|
+
- New `Nanook::Block#confirm` method.
|
13
|
+
- New `Nanook::Block#confirmed_recently?` method.
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
|
17
|
+
- `Nanook::Block#generate_work` now can take optional `use_peers` argument.
|
18
|
+
|
7
19
|
## 2.3.0
|
8
20
|
|
9
21
|
### Added
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ This is a Ruby library for managing a [nano currency](https://nano.org/) node, i
|
|
11
11
|
Add this line to your application's Gemfile:
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem 'nanook'
|
14
|
+
gem 'nanook'
|
15
15
|
```
|
16
16
|
|
17
17
|
And then execute:
|
@@ -120,11 +120,11 @@ wallet.receive(block_id, into: account_id)
|
|
120
120
|
|
121
121
|
## All commands
|
122
122
|
|
123
|
-
Below is a quick reference list of commands. See the [full Nanook documentation](https://lukes.github.io/nanook/2.
|
123
|
+
Below is a quick reference list of commands. See the [full Nanook documentation](https://lukes.github.io/nanook/2.4.0/) for a searchable detailed description of every class and method, what the arguments mean, and example responses (Tip: the classes are listed under the "**Nanook** < Object" item in the sidebar).
|
124
124
|
|
125
125
|
### Wallets
|
126
126
|
|
127
|
-
See the [full documentation for Nanook::Wallet](https://lukes.github.io/nanook/2.
|
127
|
+
See the [full documentation for Nanook::Wallet](https://lukes.github.io/nanook/2.4.0/Nanook/Wallet.html) for a detailed description of each method and example responses.
|
128
128
|
|
129
129
|
#### Create wallet:
|
130
130
|
|
@@ -189,7 +189,7 @@ Nanook.new.wallet(wallet_id).account.create(5)
|
|
189
189
|
|
190
190
|
#### Working with a single account:
|
191
191
|
|
192
|
-
See the [full documentation for Nanook::WalletAccount](https://lukes.github.io/nanook/2.
|
192
|
+
See the [full documentation for Nanook::WalletAccount](https://lukes.github.io/nanook/2.4.0/Nanook/WalletAccount.html) for a detailed description of each method and example responses.
|
193
193
|
|
194
194
|
```ruby
|
195
195
|
account = Nanook.new.wallet(wallet_id).account(account_id)
|
@@ -229,7 +229,7 @@ account.destroy
|
|
229
229
|
|
230
230
|
#### Working with any account (not necessarily in your wallet):
|
231
231
|
|
232
|
-
See the [full documentation for Nanook::Account](https://lukes.github.io/nanook/2.
|
232
|
+
See the [full documentation for Nanook::Account](https://lukes.github.io/nanook/2.4.0/Nanook/Account.html) for a detailed description of each method and example responses.
|
233
233
|
|
234
234
|
```ruby
|
235
235
|
account = Nanook.new.account(account_id)
|
@@ -262,7 +262,7 @@ account.weight
|
|
262
262
|
|
263
263
|
### Blocks
|
264
264
|
|
265
|
-
See the [full documentation for Nanook::Block](https://lukes.github.io/nanook/2.
|
265
|
+
See the [full documentation for Nanook::Block](https://lukes.github.io/nanook/2.4.0/Nanook/Block.html) for a detailed description of each method and example responses.
|
266
266
|
|
267
267
|
```ruby
|
268
268
|
block = Nanook.new.block(block_id)
|
@@ -272,6 +272,8 @@ block.info(allow_unchecked: true) # Verified blocks AND unchecked synchronizing
|
|
272
272
|
block.account
|
273
273
|
block.chain
|
274
274
|
block.chain(limit: 10)
|
275
|
+
block.confirm
|
276
|
+
block.confirmed_recently?
|
275
277
|
block.history
|
276
278
|
block.history(limit: 10)
|
277
279
|
block.republish
|
@@ -283,13 +285,14 @@ block.successors
|
|
283
285
|
block.successors(limit: 10)
|
284
286
|
|
285
287
|
block.generate_work
|
288
|
+
block.generate_work(use_peers: true)
|
286
289
|
block.cancel_work
|
287
290
|
block.is_valid_work?(work_id)
|
288
291
|
```
|
289
292
|
|
290
293
|
### Managing your nano node
|
291
294
|
|
292
|
-
See the [full documentation for Nanook::Node](https://lukes.github.io/nanook/2.
|
295
|
+
See the [full documentation for Nanook::Node](https://lukes.github.io/nanook/2.4.0/Nanook/Node.html) for a detailed description of each method and example responses.
|
293
296
|
|
294
297
|
```ruby
|
295
298
|
node = Nanook.new.node
|
@@ -299,6 +302,7 @@ node.block_count
|
|
299
302
|
node.block_count_by_type
|
300
303
|
node.bootstrap_any
|
301
304
|
node.bootstrap(address: "::ffff:138.201.94.249", port: 7075)
|
305
|
+
node.confirmation_history
|
302
306
|
node.peers
|
303
307
|
node.representatives
|
304
308
|
node.representatives(unit: :raw)
|
data/lib/nanook/block.rb
CHANGED
@@ -66,14 +66,54 @@ class Nanook
|
|
66
66
|
Nanook::Util.coerce_empty_string_to_type(response, Array)
|
67
67
|
end
|
68
68
|
|
69
|
+
# Request confirmation for a block from online representative nodes.
|
70
|
+
# Will return immediately with a boolean to indicate if the request for
|
71
|
+
# confirmation was successful. Note that this boolean does not indicate
|
72
|
+
# the confirmation status of the block. If confirmed, your block should
|
73
|
+
# appear in {Nanook::Node#confirmation_history} within a short amount of
|
74
|
+
# time, or you can use the convenience method {Nanook::Block#confirmed_recently?}
|
75
|
+
#
|
76
|
+
# ==== Example:
|
77
|
+
# block.confirm # => true
|
78
|
+
#
|
79
|
+
# @return [Boolean] if the confirmation request was sent successful
|
80
|
+
def confirm
|
81
|
+
rpc(:block_confirm, :hash)[:started] == 1
|
82
|
+
end
|
83
|
+
|
84
|
+
# Check if the block appears in the list of recently confirmed blocks by
|
85
|
+
# online representatives. The full list of blocks can be queried for with {Nanook::Node#confirmation_history}.
|
86
|
+
#
|
87
|
+
# This method can work in conjunction with {Nanook::Block#confirm},
|
88
|
+
# whereby you can send any block (old or new) out to online representatives to
|
89
|
+
# confirm. The confirmation process can take up to a couple of minutes.
|
90
|
+
#
|
91
|
+
# The method returning +false+ can indicate that the block is still in the process of being
|
92
|
+
# confirmed and that you should call the method again soon, or that it
|
93
|
+
# was confirmed earlier than the list available in {Nanook::Node#confirmation_history},
|
94
|
+
# or that it was not confirmed.
|
95
|
+
#
|
96
|
+
# ==== Example:
|
97
|
+
# block.confirmed_recently? # => true
|
98
|
+
#
|
99
|
+
# @return [Boolean] +true+ if the block has been recently confirmed by
|
100
|
+
# online representatives.
|
101
|
+
def confirmed_recently?
|
102
|
+
@rpc.call(:confirmation_history)[:confirmations].map{|h| h[:hash]}.include?(@block)
|
103
|
+
end
|
104
|
+
alias_method :recently_confirmed?, :confirmed_recently?
|
105
|
+
|
69
106
|
# Generate work for a block.
|
70
107
|
#
|
71
108
|
# ==== Example:
|
72
109
|
# block.generate_work # => "2bf29ef00786a6bc"
|
73
110
|
#
|
111
|
+
# @param use_peers [Boolean] if set to +true+, then the node will query
|
112
|
+
# its work peers (if it has any, see {Nanook::WorkPeer#list}).
|
113
|
+
# When +false+, the node will only generate work locally (default is +false+)
|
74
114
|
# @return [String] the work id of the work completed.
|
75
|
-
def generate_work
|
76
|
-
rpc(:work_generate, :hash)[:work]
|
115
|
+
def generate_work(use_peers: false)
|
116
|
+
rpc(:work_generate, :hash, use_peers: use_peers)[:work]
|
77
117
|
end
|
78
118
|
|
79
119
|
# Returns Array of Hashes containing information about a chain of
|
data/lib/nanook/node.rb
CHANGED
@@ -90,6 +90,34 @@ class Nanook
|
|
90
90
|
rpc(:bootstrap_any).has_key?(:success)
|
91
91
|
end
|
92
92
|
|
93
|
+
# Returns block and tally weight (in raw) for recent elections winners
|
94
|
+
#
|
95
|
+
# ==== Example:
|
96
|
+
#
|
97
|
+
# node.confirmation_history
|
98
|
+
#
|
99
|
+
# Example response:
|
100
|
+
#
|
101
|
+
# [
|
102
|
+
# {
|
103
|
+
# block: "EA70B32C55C193345D625F766EEA2FCA52D3F2CCE0B3A30838CC543026BB0FEA",
|
104
|
+
# tally: 80394786589602980996311817874549318248
|
105
|
+
# },
|
106
|
+
# {
|
107
|
+
# block: "F2F8DA6D2CA0A4D78EB043A7A29E12BDE5B4CE7DE1B99A93A5210428EE5B8667",
|
108
|
+
# tally: 68921714529890443063672782079965877749
|
109
|
+
# }
|
110
|
+
# ]
|
111
|
+
#
|
112
|
+
# @return [Hash{Symbol=>String|Integer}]
|
113
|
+
def confirmation_history
|
114
|
+
rpc(:confirmation_history)[:confirmations].map do |history|
|
115
|
+
# Rename hash key to block
|
116
|
+
block = history.delete(:hash)
|
117
|
+
{block: block}.merge(history)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
93
121
|
# @return [String]
|
94
122
|
def inspect
|
95
123
|
"#{self.class.name}(object_id: \"#{"0x00%x" % (object_id << 1)}\")"
|
@@ -141,7 +169,7 @@ class Nanook
|
|
141
169
|
#
|
142
170
|
# @return [Array<String>] array of representative account ids
|
143
171
|
def representatives_online
|
144
|
-
|
172
|
+
rpc(:representatives_online)[:representatives].keys.map(&:to_s)
|
145
173
|
end
|
146
174
|
|
147
175
|
# Safely shuts down the node.
|
data/lib/nanook/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nanook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Duncalfe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
182
|
version: '0'
|
183
183
|
requirements: []
|
184
184
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.7.7
|
186
186
|
signing_key:
|
187
187
|
specification_version: 4
|
188
188
|
summary: Library for managing a nano currency node, including making and receiving
|