nanook 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -3
- data/README.md +11 -7
- data/lib/nanook/account.rb +1 -1
- data/lib/nanook/version.rb +1 -1
- data/lib/nanook/wallet.rb +92 -1
- data/lib/nanook/wallet_account.rb +3 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4453793303eb12685b219bed3586cfe92f09909f
|
4
|
+
data.tar.gz: 0b4a3a21470ba6b7916a8fe7304234be89fd6234
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dc885c8cf50d2773de155e3b970cdf3f400641d9cc5a378996cc544ba18b96eab0a97dfc01592a33bf027fac2df6fa3f29bdf886e8c7fecaf827f4bcc848968
|
7
|
+
data.tar.gz: ff5a87c994fa30e96730336a9ea5ee6c14939302ee2dd329dd83faa01a4479cbd0dfcd79dc0374a44d9c7562813e6799038d532b0c0f05c75fd30aa5c3214ebc
|
data/CHANGELOG.md
CHANGED
@@ -4,16 +4,21 @@ 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.3.0
|
8
|
+
|
9
|
+
### Added
|
10
|
+
|
11
|
+
- New `Nanook::Wallet#default_representative` method.
|
12
|
+
- New `Nanook::Wallet#change_default_representative` method.
|
13
|
+
- New `Nanook::Wallet#info` method.
|
14
|
+
|
7
15
|
## 2.2.0
|
8
16
|
|
9
17
|
### Added
|
10
18
|
|
11
19
|
- New `Nanook::Account#block_count` method returns number of blocks in ledger for an account.
|
12
|
-
- `Account#delegators` now takes `unit` argument.
|
13
|
-
- `Account#ledger` now takes `unit` and `modified_since` arguments.
|
14
20
|
- `Nanook::Node#block_count_type` is now an alias to the preferred `#block_count_by_type`
|
15
21
|
method.
|
16
|
-
- `Nanook::Node#representatives` now takes `unit` argument.
|
17
22
|
- new `Nanook::Node#representatives_online` method.
|
18
23
|
- `Nanook::Node#synchronizing_blocks` aliased by `#unchecked`, for people familiar with
|
19
24
|
what the RPC calls it.
|
@@ -28,6 +33,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
28
33
|
|
29
34
|
### Changed
|
30
35
|
|
36
|
+
- `Nanook::Account#delegators` now takes `unit` argument.
|
37
|
+
- `Nanook::Account#ledger` now takes `unit` and `modified_since` arguments.
|
38
|
+
- `Nanook::Node#representatives` now takes `unit` argument.
|
31
39
|
- `Nanook::Node#synced?` is deprecated with a `warn`. Nodes never seem to reach 100%
|
32
40
|
synchronized, so this method is useless.
|
33
41
|
- `Nanook::Rpc::DEFAULT_TIMEOUT` reduced from 500 to 60.
|
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', "~> 2.
|
14
|
+
gem 'nanook', "~> 2.3"
|
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.3.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.3.0/Nanook/Wallet.html) for a detailed description of each method and example responses.
|
128
128
|
|
129
129
|
#### Create wallet:
|
130
130
|
|
@@ -162,6 +162,10 @@ wallet.account.create
|
|
162
162
|
wallet.accounts
|
163
163
|
wallet.contains?(account_id)
|
164
164
|
|
165
|
+
wallet.default_representative
|
166
|
+
wallet.change_default_representative(new_representative)
|
167
|
+
wallet.info
|
168
|
+
wallet.info(unit: :raw)
|
165
169
|
wallet.export
|
166
170
|
wallet.locked?
|
167
171
|
wallet.unlock(password)
|
@@ -185,7 +189,7 @@ Nanook.new.wallet(wallet_id).account.create(5)
|
|
185
189
|
|
186
190
|
#### Working with a single account:
|
187
191
|
|
188
|
-
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.3.0/Nanook/WalletAccount.html) for a detailed description of each method and example responses.
|
189
193
|
|
190
194
|
```ruby
|
191
195
|
account = Nanook.new.wallet(wallet_id).account(account_id)
|
@@ -225,7 +229,7 @@ account.destroy
|
|
225
229
|
|
226
230
|
#### Working with any account (not necessarily in your wallet):
|
227
231
|
|
228
|
-
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.3.0/Nanook/Account.html) for a detailed description of each method and example responses.
|
229
233
|
|
230
234
|
```ruby
|
231
235
|
account = Nanook.new.account(account_id)
|
@@ -258,7 +262,7 @@ account.weight
|
|
258
262
|
|
259
263
|
### Blocks
|
260
264
|
|
261
|
-
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.3.0/Nanook/Block.html) for a detailed description of each method and example responses.
|
262
266
|
|
263
267
|
```ruby
|
264
268
|
block = Nanook.new.block(block_id)
|
@@ -285,7 +289,7 @@ block.is_valid_work?(work_id)
|
|
285
289
|
|
286
290
|
### Managing your nano node
|
287
291
|
|
288
|
-
See the [full documentation for Nanook::Node](https://lukes.github.io/nanook/2.
|
292
|
+
See the [full documentation for Nanook::Node](https://lukes.github.io/nanook/2.3.0/Nanook/Node.html) for a detailed description of each method and example responses.
|
289
293
|
|
290
294
|
```ruby
|
291
295
|
node = Nanook.new.node
|
data/lib/nanook/account.rb
CHANGED
@@ -141,7 +141,7 @@ class Nanook
|
|
141
141
|
end
|
142
142
|
|
143
143
|
# The representative account id for the account.
|
144
|
-
# Representatives are accounts
|
144
|
+
# Representatives are accounts that cast votes in the case of a
|
145
145
|
# fork in the network.
|
146
146
|
#
|
147
147
|
# ==== Example:
|
data/lib/nanook/version.rb
CHANGED
data/lib/nanook/wallet.rb
CHANGED
@@ -18,7 +18,7 @@ class Nanook
|
|
18
18
|
# person needs to know your wallet id as well as have access to run
|
19
19
|
# RPC commands against your nano node to be able to control your accounts.
|
20
20
|
#
|
21
|
-
# A _seed_ on the
|
21
|
+
# A _seed_ on the other hand can be used to link any wallet to another
|
22
22
|
# wallet's accounts, from anywhere in the nano network. This happens
|
23
23
|
# by setting a wallet's seed to be the same as a previous wallet's seed.
|
24
24
|
# When a wallet has the same seed as another wallet, any accounts
|
@@ -387,6 +387,50 @@ class Nanook
|
|
387
387
|
account(into).receive(block)
|
388
388
|
end
|
389
389
|
|
390
|
+
# The default representative account id for the wallet. This is the
|
391
|
+
# representative that all new accounts created in this wallet will have.
|
392
|
+
#
|
393
|
+
# Changing the default representative for a wallet does not change
|
394
|
+
# the representatives for any accounts that have been created.
|
395
|
+
#
|
396
|
+
# ==== Example:
|
397
|
+
#
|
398
|
+
# wallet.default_representative # => "xrb_3pc..."
|
399
|
+
#
|
400
|
+
# @return [String] Representative account of the account
|
401
|
+
def default_representative
|
402
|
+
rpc(:wallet_representative)[:representative]
|
403
|
+
end
|
404
|
+
alias_method :representative, :default_representative
|
405
|
+
|
406
|
+
# Sets the default representative for the wallet. A wallet's default
|
407
|
+
# representative is the representative all new accounts created in
|
408
|
+
# the wallet will have. Changing the default representative for a
|
409
|
+
# wallet does not change the representatives for existing accounts
|
410
|
+
# in the wallet.
|
411
|
+
#
|
412
|
+
# ==== Example:
|
413
|
+
#
|
414
|
+
# wallet.change_default_representative("xrb_...") # => "xrb_..."
|
415
|
+
#
|
416
|
+
# @param [String] representative the id of the representative account
|
417
|
+
# to set as this account's representative
|
418
|
+
# @return [String] the representative account id
|
419
|
+
# @raise [ArgumentError] if the representative account does not exist
|
420
|
+
# @raise [Nanook::Error] if setting the representative fails
|
421
|
+
def change_default_representative(representative)
|
422
|
+
unless Nanook::Account.new(@rpc, representative).exists?
|
423
|
+
raise ArgumentError.new("Representative account does not exist: #{representative}")
|
424
|
+
end
|
425
|
+
|
426
|
+
if rpc(:wallet_representative_set, representative: representative)[:set] == 1
|
427
|
+
representative
|
428
|
+
else
|
429
|
+
raise Nanook::Error.new("Setting the representative failed")
|
430
|
+
end
|
431
|
+
end
|
432
|
+
alias_method :change_representative, :change_default_representative
|
433
|
+
|
390
434
|
# Restores a previously created wallet by its seed.
|
391
435
|
# A new wallet will be created on your node (with a new wallet id)
|
392
436
|
# and will have its seed set to the given seed.
|
@@ -414,6 +458,53 @@ class Nanook
|
|
414
458
|
self
|
415
459
|
end
|
416
460
|
|
461
|
+
# Information about this wallet and all of its accounts.
|
462
|
+
#
|
463
|
+
# ==== Examples:
|
464
|
+
#
|
465
|
+
# wallet.info
|
466
|
+
#
|
467
|
+
# Example response:
|
468
|
+
#
|
469
|
+
# {
|
470
|
+
# id: "2C3C570EA8898443C0FD04A1C385A3E3A8C985AD792635FCDCEBB30ADF6A0570",
|
471
|
+
# accounts: [
|
472
|
+
# {
|
473
|
+
# id: "xrb_11119gbh8hb4hj1duf7fdtfyf5s75okzxdgupgpgm1bj78ex3kgy7frt3s9n"
|
474
|
+
# frontier: "E71AF3E9DD86BBD8B4620EFA63E065B34D358CFC091ACB4E103B965F95783321",
|
475
|
+
# open_block: "643B77F1ECEFBDBE1CC909872964C1DBBE23A6149BD3CEF2B50B76044659B60F",
|
476
|
+
# representative_block: "643B77F1ECEFBDBE1CC909872964C1DBBE23A6149BD3CEF2B50B76044659B60F",
|
477
|
+
# balance: 1.45,
|
478
|
+
# modified_timestamp: 1511476234,
|
479
|
+
# block_count: 2
|
480
|
+
# },
|
481
|
+
# { ... }
|
482
|
+
# ]
|
483
|
+
# }
|
484
|
+
#
|
485
|
+
# @param unit (see #balance)
|
486
|
+
# @return [Hash{Symbol=>String|Array<Hash{Symbol=>String|Integer|Float}>}] information about the wallet.
|
487
|
+
# See {Nanook::Account#info} for details of what is returned for each account.
|
488
|
+
def info(unit: Nanook.default_unit)
|
489
|
+
unless Nanook::UNITS.include?(unit)
|
490
|
+
raise ArgumentError.new("Unsupported unit: #{unit}")
|
491
|
+
end
|
492
|
+
|
493
|
+
wallet_required!
|
494
|
+
accounts = rpc(:wallet_ledger)[:accounts].map do |account_id, payload|
|
495
|
+
payload[:id] = account_id
|
496
|
+
if unit == :nano
|
497
|
+
payload[:balance] = Nanook::Util.raw_to_NANO(payload[:balance])
|
498
|
+
end
|
499
|
+
payload
|
500
|
+
end
|
501
|
+
|
502
|
+
{
|
503
|
+
id: @wallet,
|
504
|
+
accounts: accounts
|
505
|
+
}.to_symbolized_hash
|
506
|
+
end
|
507
|
+
|
417
508
|
# Returns +true+ if the wallet is locked.
|
418
509
|
#
|
419
510
|
# ==== Example:
|
@@ -206,6 +206,9 @@ class Nanook
|
|
206
206
|
# broadcast to the nano network. The block contains the information
|
207
207
|
# about the representative change for your account.
|
208
208
|
#
|
209
|
+
# Also see {Nanook::Wallet#change_default_representative} for how to set a default
|
210
|
+
# representative for all new accounts created in a wallet.
|
211
|
+
#
|
209
212
|
# ==== Example:
|
210
213
|
#
|
211
214
|
# account.change_representative("xrb_...") # => "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F"
|
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.3.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-04-
|
11
|
+
date: 2018-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -126,18 +126,18 @@ dependencies:
|
|
126
126
|
name: symbolized
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - '='
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: 0.0.1
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - '='
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 0.0.1
|
139
|
-
description:
|
140
|
-
|
139
|
+
description: Library for managing a nano currency node, including making and receiving
|
140
|
+
payments, using the nano RPC protocol
|
141
141
|
email:
|
142
142
|
- lduncalfe@eml.cc
|
143
143
|
executables: []
|