zold 0.14.44 → 0.14.45

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15f35aaff14857e15ecdb5e4c702711250f214f92eb1328e02a574ec9b8bd553
4
- data.tar.gz: d7e082ffa042e988a17c57e41ff491070c0660a488fe5996daf8aca1d7b1aec0
3
+ metadata.gz: 3dc091e61d283ef577ce87d8820b39688a07c57f628992f566ed3fd73845c536
4
+ data.tar.gz: b521a547e508f4b3d562ab0c166baf686cfca29879c25366bf46325e91e156c0
5
5
  SHA512:
6
- metadata.gz: 989f7648468a8288a5429b059c4b7015c332c00f056230030ecc8b41ed1691053660bbf1714e16cd4def078e6102fb6775d5dd28c44a15e7ae3d71c7ec5f2986
7
- data.tar.gz: 59e60d9116b5695ec7b8bc41b43f8cd1fc6621aba6dd53af2a82f139974d788bfc2e6bf22d39653c477c41ad65bef26fdcd27eea19d7959929ea4fd00b12e515
6
+ metadata.gz: c54c68946531a91b6087f7cfaf311dc0b11f7e20fcf0b6e053792c7d525bb608759f18cbbac16811ae35aa6d0ba79add1ba66848c3b070937d24356370d47437
7
+ data.tar.gz: ce085d811af804213af2efbd8ced6bec1afa62127fdd3d83c5d0d4463b515bcaad0687037109a6a1770ff7c8c8f4e9c4745a01cf57a6ff628d45963e803d7aaf
data/lib/zold/age.rb CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  require 'time'
24
24
 
25
- # Age
25
+ # Age in seconds.
26
26
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
27
27
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
28
28
  # License:: MIT
@@ -30,8 +30,7 @@ module Zold
30
30
  # Age
31
31
  class Age
32
32
  def initialize(time)
33
- @time = time
34
- @time = Time.parse(@time) unless time.is_a?(Time)
33
+ @time = time.nil? || time.is_a?(Time) ? time : Time.parse(time)
35
34
  end
36
35
 
37
36
  def to_s
data/lib/zold/amount.rb CHANGED
@@ -69,7 +69,7 @@ module Zold
69
69
  end
70
70
 
71
71
  def ==(other)
72
- raise '== may only work with Amount' unless other.is_a?(Amount)
72
+ raise "== may only work with Amount: #{other}" unless other.is_a?(Amount)
73
73
  @coins == other.to_i
74
74
  end
75
75
 
@@ -27,6 +27,7 @@ require 'slop'
27
27
  require 'rainbow'
28
28
  require_relative 'args'
29
29
  require_relative '../age'
30
+ require_relative '../size'
30
31
  require_relative '../log'
31
32
  require_relative '../http'
32
33
  require_relative '../score'
@@ -64,7 +65,7 @@ Available options:"
64
65
  cps.all.each do |c|
65
66
  wallet = Wallet.new(c[:path])
66
67
  @log.debug(" #{c[:name]}: #{c[:score]} #{wallet.balance}/#{wallet.txns.count}t/\
67
- #{wallet.digest[0, 6]}/#{File.size(c[:path])}b/#{Age.new(File.mtime(c[:path]))}")
68
+ #{wallet.digest[0, 6]}/#{Size.new(File.size(c[:path]))}/#{Age.new(File.mtime(c[:path]))}")
68
69
  end
69
70
  end
70
71
  end
@@ -31,6 +31,7 @@ require_relative 'args'
31
31
  require_relative '../log'
32
32
  require_relative '../age'
33
33
  require_relative '../http'
34
+ require_relative '../size'
34
35
  require_relative '../score'
35
36
  require_relative '../json_page'
36
37
  require_relative '../copies'
@@ -94,7 +95,7 @@ Available options:"
94
95
  cps.all.each do |c|
95
96
  wallet = Wallet.new(c[:path])
96
97
  @log.debug(" #{c[:name]}: #{c[:score]} #{wallet.balance}/#{wallet.txns.count}t/\
97
- #{wallet.digest[0, 6]}/#{File.size(c[:path])}b/#{Age.new(File.mtime(c[:path]))}")
98
+ #{wallet.digest[0, 6]}/#{Size.new(File.size(c[:path]))}/#{Age.new(File.mtime(c[:path]))}")
98
99
  end
99
100
  end
100
101
 
@@ -128,7 +129,7 @@ Available options:"
128
129
  raise "The balance of #{id} is #{wallet.balance} and it's not a root wallet"
129
130
  end
130
131
  copy = cps.add(File.read(f), score.host, score.port, score.value)
131
- @log.info("#{r} returned #{body.length}b/#{wallet.balance}/#{wallet.txns.count}t/\
132
+ @log.info("#{r} returned #{Size.new(body.length)}/#{wallet.balance}/#{wallet.txns.count}t/\
132
133
  #{digest(json)}/#{Age.new(json['mtime'])}/#{json['copies']}c \
133
134
  as copy #{copy} of #{id} in #{Age.new(start)}: #{Rainbow(score.value).green} (#{json['version']})")
134
135
  end
@@ -26,6 +26,7 @@ require 'json'
26
26
  require 'net/http'
27
27
  require_relative 'args'
28
28
  require_relative '../age'
29
+ require_relative '../size'
29
30
  require_relative '../log'
30
31
  require_relative '../id'
31
32
  require_relative '../http'
@@ -96,7 +97,7 @@ total score for #{id} is #{total}")
96
97
  response = r.http(uri).put(content)
97
98
  @wallets.find(id) do |wallet|
98
99
  if response.code == '304'
99
- @log.info("#{r}: same version #{content.length}b/#{wallet.txns.count}t \
100
+ @log.info("#{r}: same version #{Size.new(content.length)}/#{wallet.txns.count}t \
100
101
  of #{wallet.id} there, in #{Age.new(start)}")
101
102
  return 0
102
103
  end
@@ -106,8 +107,8 @@ of #{wallet.id} there, in #{Age.new(start)}")
106
107
  r.assert_valid_score(score)
107
108
  r.assert_score_ownership(score)
108
109
  r.assert_score_strength(score) unless opts['ignore-score-weakness']
109
- @log.info("#{r} accepted #{content.length}b/#{wallet.digest[0, 6]}/#{wallet.txns.count}t of #{wallet.id} \
110
- in #{Age.new(start)}: #{Rainbow(score.value).green} (#{json['version']})")
110
+ @log.info("#{r} accepted #{Size.new(content.length)}/#{wallet.digest[0, 6]}/#{wallet.txns.count}t \
111
+ of #{wallet.id} in #{Age.new(start)}: #{Rainbow(score.value).green} (#{json['version']})")
111
112
  score.value
112
113
  end
113
114
  end
@@ -72,6 +72,9 @@ Available options:"
72
72
  'The location of RSA private key (default: ~/.ssh/id_rsa)',
73
73
  require: true,
74
74
  default: '~/.ssh/id_rsa'
75
+ o.bool '--ignore-score-weakness',
76
+ 'Don\'t complain when their score is too weak',
77
+ default: false
75
78
  o.bool '--help', 'Print instructions'
76
79
  end
77
80
  mine = Args.new(opts, @log).take || return
@@ -114,13 +117,12 @@ Available options:"
114
117
  @log.debug("No need to pay taxes yet, until the debt is less than #{Tax::TRIAL} (#{Tax::TRIAL.to_i} zents)")
115
118
  return
116
119
  end
117
- top = top_scores
118
- while debt > Amount::ZERO
120
+ top = top_scores(opts)
121
+ while debt > Tax::TRIAL
119
122
  raise 'No acceptable remote nodes, try later' if top.empty?
120
123
  best = top.shift
121
124
  txn = tax.pay(Zold::Key.new(file: opts['private-key']), best)
122
- wallet.add(txn)
123
- debt -= txn.amount
125
+ debt += txn.amount
124
126
  @log.info("#{txn.amount} of taxes paid to #{txn.bnf}, #{debt} left to pay")
125
127
  end
126
128
  @log.info('The wallet is in good standing, all taxes paid')
@@ -136,7 +138,7 @@ Available options:"
136
138
  raise 'Not implemented yet'
137
139
  end
138
140
 
139
- def top_scores
141
+ def top_scores(opts)
140
142
  best = []
141
143
  @remotes.iterate(@log) do |r|
142
144
  uri = '/'
@@ -145,7 +147,7 @@ Available options:"
145
147
  json = JsonPage.new(res.body, uri).to_hash
146
148
  score = Score.parse_json(json['score'])
147
149
  r.assert_valid_score(score)
148
- r.assert_score_strength(score)
150
+ r.assert_score_strength(score) unless opts['ignore-score-weakness']
149
151
  r.assert_score_value(score, Tax::EXACT_SCORE)
150
152
  @log.info("#{r}: #{Rainbow(score.value).green}")
151
153
  best << score
data/lib/zold/copies.rb CHANGED
@@ -24,6 +24,7 @@ require 'time'
24
24
  require 'csv'
25
25
  require_relative 'atomic_file'
26
26
  require_relative 'log'
27
+ require_relative 'size'
27
28
  require_relative 'wallet'
28
29
  require_relative 'backtrace'
29
30
 
@@ -64,7 +65,7 @@ module Zold
64
65
  file = File.join(@dir, f)
65
66
  size = File.size(file)
66
67
  File.delete(file)
67
- @log.debug("Copy at #{f} deleted: #{size}b")
68
+ @log.debug("Copy at #{f} deleted: #{Size.new(size)}")
68
69
  deleted += 1
69
70
  end
70
71
  files.each do |f|
@@ -23,6 +23,7 @@
23
23
  require 'concurrent'
24
24
  require_relative '../log'
25
25
  require_relative '../age'
26
+ require_relative '../size'
26
27
  require_relative '../id'
27
28
  require_relative '../verbose_thread'
28
29
 
@@ -118,7 +119,7 @@ module Zold
118
119
  return if id.empty? || body.empty?
119
120
  start = Time.now
120
121
  @entrance.push(Id.new(id), body)
121
- @log.debug("Pushed #{id}/#{body.length}b to #{@entrance.class.name} in #{Age.new(start)}")
122
+ @log.debug("Pushed #{id}/#{Size.new(body.length)} to #{@entrance.class.name} in #{Age.new(start)}")
122
123
  end
123
124
 
124
125
  def queue
@@ -33,6 +33,7 @@ require 'usagewatch_ext'
33
33
  require 'concurrent'
34
34
  require_relative '../backtrace'
35
35
  require_relative '../version'
36
+ require_relative '../size'
36
37
  require_relative '../wallet'
37
38
  require_relative '../copies'
38
39
  require_relative '../log'
@@ -314,7 +315,7 @@ while #{settings.address} is in '#{settings.network}'"
314
315
  copies.all.map do |c|
315
316
  w = Wallet.new(c[:path])
316
317
  "#{c[:name]}: #{c[:score]} #{w.balance}/#{w.txns.count}t/\
317
- #{w.digest[0, 6]}/#{File.size(c[:path])}b/#{Age.new(File.mtime(c[:path]))}"
318
+ #{w.digest[0, 6]}/#{Size.new(File.size(c[:path]))}/#{Age.new(File.mtime(c[:path]))}"
318
319
  end.join("\n")
319
320
  end
320
321
  end
@@ -22,6 +22,7 @@
22
22
 
23
23
  require 'tempfile'
24
24
  require_relative '../log'
25
+ require_relative '../size'
25
26
  require_relative '../wallet'
26
27
  require_relative '../atomic_file'
27
28
 
@@ -63,10 +64,14 @@ module Zold
63
64
  w.exists? ? AtomicFile.new(w.path).read.to_s : ''
64
65
  end
65
66
  if before == after
66
- @log.info("Duplicate of #{id}/#{wallet.digest[0, 6]}/#{after.length}b/#{wallet.txns.count}t ignored")
67
+ @log.info(
68
+ "Duplicate of #{id}/#{wallet.digest[0, 6]}/#{Size.new(after.length)}/#{wallet.txns.count}t ignored"
69
+ )
67
70
  return []
68
71
  end
69
- @log.info("New content for #{id} arrived, #{before.length}b before and #{after.length}b after")
72
+ @log.info(
73
+ "New content for #{id} arrived, #{Size.new(before.length)} before and #{Size.new(after.length)} after"
74
+ )
70
75
  @entrance.push(id, body)
71
76
  end
72
77
  end
data/lib/zold/score.rb CHANGED
@@ -34,7 +34,7 @@ module Zold
34
34
  # Default strength for the entire system, in production mode.
35
35
  STRENGTH = 6
36
36
 
37
- attribute :time, Types::Strict::Time
37
+ attribute :time, Types::Strict::Time.optional.default(Time.now)
38
38
  attribute :host, Types::Strict::String.constrained(
39
39
  format: /^[a-z0-9\.-]+$/
40
40
  )
data/lib/zold/size.rb ADDED
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2018 Yegor Bugayenko
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the 'Software'), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ require 'time'
24
+
25
+ # Size in bytes.
26
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
27
+ # Copyright:: Copyright (c) 2018 Yegor Bugayenko
28
+ # License:: MIT
29
+ module Zold
30
+ # Size
31
+ class Size
32
+ def initialize(bytes)
33
+ @bytes = bytes
34
+ end
35
+
36
+ def to_s
37
+ return '?' if @bytes.nil?
38
+ if @bytes < 1024
39
+ "#{@bytes}b"
40
+ elsif @bytes < 1024 * 1024
41
+ "#{(@bytes / 1024).round}Kb"
42
+ elsif @bytes < 1024 * 1024 * 1024
43
+ "#{(@bytes / (1024 * 1024)).round}Mb"
44
+ else
45
+ "#{(@bytes / (1024 * 1024 * 1024)).round}Gb"
46
+ end
47
+ end
48
+ end
49
+ end
data/lib/zold/tax.rb CHANGED
@@ -67,8 +67,7 @@ module Zold
67
67
  end
68
68
 
69
69
  def pay(pvt, best)
70
- fee = Tax::FEE_TXN_HOUR * @wallet.txns.count * Tax::DAYS_INCREMENT * 24
71
- @wallet.sub(fee, best.invoice, pvt, details(best))
70
+ @wallet.sub(Tax::MAX_PAYMENT, best.invoice, pvt, details(best))
72
71
  end
73
72
 
74
73
  def in_debt?
data/lib/zold/version.rb CHANGED
@@ -25,6 +25,6 @@
25
25
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
26
26
  # License:: MIT
27
27
  module Zold
28
- VERSION = '0.14.44'
28
+ VERSION = '0.14.45'
29
29
  PROTOCOL = 2
30
30
  end
data/lib/zold/wallet.rb CHANGED
@@ -132,8 +132,8 @@ module Zold
132
132
  raise 'The txn has to be of type Txn' unless txn.is_a?(Txn)
133
133
  dup = txns.find { |t| t.bnf == txn.bnf && t.id == txn.id }
134
134
  raise "Wallet #{id} can't pay itself: #{txn}" if txn.bnf == id
135
- raise "The transaction with the same ID and BNF already exists: #{dup}" unless dup.nil?
136
- raise "The tax payment already exists: #{txn}" if Tax.new(self).exists?(txn)
135
+ raise "The transaction with the same ID and BNF already exists in #{id}: #{dup}" unless dup.nil?
136
+ raise "The tax payment already exists in #{id}: #{txn}" if Tax.new(self).exists?(txn)
137
137
  File.open(@file, 'a') { |f| f.print "#{txn}\n" }
138
138
  @txns.flush
139
139
  end
@@ -44,24 +44,25 @@ class TestTaxes < Minitest::Test
44
44
  wallet.add(
45
45
  Zold::Txn.new(
46
46
  1,
47
- Time.now - 24 * 60 * 60 * 365 * 20,
47
+ Time.now - 24 * 60 * 60 * 365 * 300,
48
48
  Zold::Amount.new(zld: 19.99),
49
49
  'NOPREFIX', Zold::Id.new, '-'
50
50
  )
51
51
  )
52
52
  remotes = home.remotes
53
- zero = Zold::Score::ZERO
54
- remotes.add(zero.host, zero.port)
55
- stub_request(:get, "http://#{zero.host}:#{zero.port}/").to_return(
53
+ score = Zold::Score.new(host: 'localhost', port: 80, strength: 1, invoice: 'NOPREFIX@0000000000000000')
54
+ Zold::Tax::EXACT_SCORE.times { score = score.next }
55
+ remotes.add(score.host, score.port)
56
+ stub_request(:get, "http://#{score.host}:#{score.port}/").to_return(
56
57
  status: 200,
57
58
  body: {
58
- score: zero.to_h
59
+ score: score.to_h
59
60
  }.to_json
60
61
  )
61
- Zold::Taxes.new(
62
- wallets: wallets, remotes: remotes, log: test_log
63
- ).run(['taxes', '--private-key=fixtures/id_rsa', wallet.id.to_s])
64
- assert_equal(Zold::Amount.new(coins: 85_856_396_247), wallet.balance)
62
+ Zold::Taxes.new(wallets: wallets, remotes: remotes, log: test_log).run(
63
+ ['taxes', '--private-key=fixtures/id_rsa', '--ignore-score-weakness', 'pay', wallet.id.to_s]
64
+ )
65
+ assert_equal(Zold::Amount.new(coins: 81_561_428_951), wallet.balance)
65
66
  end
66
67
  end
67
68
  end
data/test/test_age.rb ADDED
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2018 Yegor Bugayenko
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the 'Software'), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ require 'minitest/autorun'
24
+ require_relative '../lib/zold/age'
25
+
26
+ # Age test.
27
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
28
+ # Copyright:: Copyright (c) 2018 Yegor Bugayenko
29
+ # License:: MIT
30
+ class TestAge < Minitest::Test
31
+ def test_prints_age
32
+ assert_equal('10m', Zold::Age.new(Time.now - 10 * 60).to_s)
33
+ assert_equal('5.5s', Zold::Age.new(Time.now - 5.5).to_s)
34
+ assert_equal('?', Zold::Age.new(nil).to_s)
35
+ assert(!Zold::Age.new(Time.now.utc.iso8601).to_s.nil?)
36
+ end
37
+ end
data/test/test_size.rb ADDED
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2018 Yegor Bugayenko
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the 'Software'), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ # SOFTWARE.
22
+
23
+ require 'minitest/autorun'
24
+ require_relative '../lib/zold/size'
25
+
26
+ # Size test.
27
+ # Author:: Yegor Bugayenko (yegor256@gmail.com)
28
+ # Copyright:: Copyright (c) 2018 Yegor Bugayenko
29
+ # License:: MIT
30
+ class TestSize < Minitest::Test
31
+ def test_prints_size
32
+ assert_equal('?', Zold::Size.new(nil).to_s)
33
+ assert_equal('10b', Zold::Size.new(10).to_s)
34
+ assert_equal('2Kb', Zold::Size.new(2 * 1024).to_s)
35
+ assert_equal('9Mb', Zold::Size.new(9 * 1024 * 1024).to_s)
36
+ assert_equal('7Gb', Zold::Size.new(7 * 1024 * 1024 * 1024).to_s)
37
+ end
38
+ end
data/test/test_tax.rb CHANGED
@@ -78,7 +78,7 @@ class TestTax < Minitest::Test
78
78
  )
79
79
  tax = Zold::Tax.new(wallet)
80
80
  txn = tax.pay(Zold::Key.new(file: 'fixtures/id_rsa'), score)
81
- assert_equal(-88_243_200, txn.amount.to_i)
81
+ assert_equal(Zold::Tax::MAX_PAYMENT * -1, txn.amount)
82
82
  end
83
83
  end
84
84
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.44
4
+ version: 0.14.45
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -525,6 +525,7 @@ files:
525
525
  - lib/zold/remotes.rb
526
526
  - lib/zold/score.rb
527
527
  - lib/zold/signature.rb
528
+ - lib/zold/size.rb
528
529
  - lib/zold/sync_wallets.rb
529
530
  - lib/zold/tax.rb
530
531
  - lib/zold/tree_wallets.rb
@@ -571,6 +572,7 @@ files:
571
572
  - test/node/test_sync_entrance.rb
572
573
  - test/node/test_trace.rb
573
574
  - test/test__helper.rb
575
+ - test/test_age.rb
574
576
  - test/test_amount.rb
575
577
  - test/test_atomic_file.rb
576
578
  - test/test_backtrace.rb
@@ -587,6 +589,7 @@ files:
587
589
  - test/test_remotes.rb
588
590
  - test/test_score.rb
589
591
  - test/test_signature.rb
592
+ - test/test_size.rb
590
593
  - test/test_sync_wallets.rb
591
594
  - test/test_tax.rb
592
595
  - test/test_tree_wallets.rb
@@ -667,6 +670,7 @@ test_files:
667
670
  - test/node/test_sync_entrance.rb
668
671
  - test/node/test_trace.rb
669
672
  - test/test__helper.rb
673
+ - test/test_age.rb
670
674
  - test/test_amount.rb
671
675
  - test/test_atomic_file.rb
672
676
  - test/test_backtrace.rb
@@ -683,6 +687,7 @@ test_files:
683
687
  - test/test_remotes.rb
684
688
  - test/test_score.rb
685
689
  - test/test_signature.rb
690
+ - test/test_size.rb
686
691
  - test/test_sync_wallets.rb
687
692
  - test/test_tax.rb
688
693
  - test/test_tree_wallets.rb