zold 0.7 → 0.8
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/README.md +19 -0
- data/lib/zold/commands/list.rb +4 -1
- data/lib/zold/commands/propagate.rb +5 -1
- data/lib/zold/commands/show.rb +4 -1
- data/lib/zold/node/emission.rb +58 -0
- data/lib/zold/node/entrance.rb +18 -4
- data/lib/zold/tax.rb +1 -2
- data/lib/zold/version.rb +1 -1
- data/lib/zold/wallet.rb +10 -0
- data/test/node/test_emission.rb +46 -0
- data/test/node/test_entrance.rb +29 -0
- data/test/test__helper.rb +1 -0
- data/test/test_zold.rb +3 -4
- data/wp/wp.tex +52 -5
- metadata +6 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ea54309f6fdd147d4338a76415d536e802ffa00
|
4
|
+
data.tar.gz: 2cc82cfbe9c204480db65348cc551abad0817d92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64bfd2b5f86befba60e4f976cef6e4e17d3233c5a8d7d48b214dc4e4bbe787afe351a4e783355baa63f844410d1ef923feac211d6186db45215512c79fc79c8e
|
7
|
+
data.tar.gz: f648ceffd6b1b5c2d34fd88816cc77dc8705bf3382ae2b6a22397894fd3d1d010168736c38ce2e934196c20b50deabb41d507d6992b1c9531fc8e01a4374136a
|
data/README.md
CHANGED
@@ -93,3 +93,22 @@ $ zold node --invoice=5f96e731e48ae21f
|
|
93
93
|
|
94
94
|
Grateful users of the system will pay "taxes" to your wallet for processing
|
95
95
|
of their transactions.
|
96
|
+
|
97
|
+
## How to Contribute
|
98
|
+
|
99
|
+
It is a Ruby command line gem. First, install
|
100
|
+
[Ruby](https://www.ruby-lang.org/en/documentation/installation/) 2.3+,
|
101
|
+
[Rubygems](https://rubygems.org/pages/download),
|
102
|
+
and
|
103
|
+
[Bundler](https://bundler.io/).
|
104
|
+
Then:
|
105
|
+
|
106
|
+
```bash
|
107
|
+
$ bundle update
|
108
|
+
$ rake
|
109
|
+
```
|
110
|
+
|
111
|
+
The build has to be clean. If it's not, [submit an issue](https://github.com/zerocracy/zold/issues).
|
112
|
+
|
113
|
+
Then, make your changes, make sure the build is still clean,
|
114
|
+
and [submit a pull request](https://www.yegor256.com/2014/04/15/github-guidelines.html).
|
data/lib/zold/commands/list.rb
CHANGED
@@ -19,6 +19,7 @@
|
|
19
19
|
# SOFTWARE.
|
20
20
|
|
21
21
|
require_relative '../log'
|
22
|
+
require_relative '../wallet'
|
22
23
|
|
23
24
|
# LIST command.
|
24
25
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
@@ -35,7 +36,9 @@ module Zold
|
|
35
36
|
def run(_ = [])
|
36
37
|
@wallets.all.each do |id|
|
37
38
|
wallet = Wallet.new(File.join(@wallets.path, id))
|
38
|
-
|
39
|
+
msg = "#{id}: #{wallet.balance}"
|
40
|
+
msg += " (net:#{wallet.network})" if wallet.network != Wallet::MAIN_NETWORK
|
41
|
+
@log.info(msg)
|
39
42
|
end
|
40
43
|
end
|
41
44
|
end
|
@@ -64,9 +64,13 @@ Available options:"
|
|
64
64
|
@log.debug("#{t.amount * -1} to #{t.bnf}: wallet is absent")
|
65
65
|
next
|
66
66
|
end
|
67
|
+
unless target.network == wallet.network
|
68
|
+
@log.error("#{t.amount * -1} to #{t.bnf}: network mismatch, '#{target.network}'!='#{wallet.network}'")
|
69
|
+
next
|
70
|
+
end
|
67
71
|
next if target.has?(t.id, me)
|
68
72
|
unless Prefixes.new(target).valid?(t.prefix)
|
69
|
-
@log.
|
73
|
+
@log.error("#{t.amount * -1} to #{t.bnf}: wrong prefix")
|
70
74
|
next
|
71
75
|
end
|
72
76
|
target.add(t.inverse(me))
|
data/lib/zold/commands/show.rb
CHANGED
@@ -24,6 +24,7 @@ require_relative 'args'
|
|
24
24
|
require_relative '../log'
|
25
25
|
require_relative '../id'
|
26
26
|
require_relative '../amount'
|
27
|
+
require_relative '../wallet'
|
27
28
|
|
28
29
|
# SHOW command.
|
29
30
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
@@ -61,7 +62,9 @@ Available options:"
|
|
61
62
|
wallet.txns.each do |t|
|
62
63
|
@log.info(t.to_text)
|
63
64
|
end
|
64
|
-
|
65
|
+
msg = "The balance of #{wallet}: #{balance}"
|
66
|
+
msg += " (net:#{wallet.network})" if wallet.network != Wallet::MAIN_NETWORK
|
67
|
+
@log.info(msg)
|
65
68
|
balance
|
66
69
|
end
|
67
70
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# Copyright (c) 2018 Yegor Bugayenko
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the 'Software'), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in all
|
11
|
+
# copies or substantial portions of the Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
+
# SOFTWARE.
|
20
|
+
|
21
|
+
require 'concurrent'
|
22
|
+
require 'tempfile'
|
23
|
+
require_relative '../log'
|
24
|
+
require_relative '../remotes'
|
25
|
+
require_relative '../copies'
|
26
|
+
require_relative '../tax'
|
27
|
+
require_relative '../commands/merge'
|
28
|
+
require_relative '../commands/fetch'
|
29
|
+
require_relative '../commands/push'
|
30
|
+
|
31
|
+
# The emission control point.
|
32
|
+
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
33
|
+
# Copyright:: Copyright (c) 2018 Yegor Bugayenko
|
34
|
+
# License:: MIT
|
35
|
+
module Zold
|
36
|
+
# The emission control poine
|
37
|
+
class Emission
|
38
|
+
def initialize(root)
|
39
|
+
@root = root
|
40
|
+
end
|
41
|
+
|
42
|
+
def quota
|
43
|
+
2**(-2048 / @root.age)
|
44
|
+
end
|
45
|
+
|
46
|
+
def limit
|
47
|
+
max = 2**63
|
48
|
+
Amount.new(coins: (max * quota).to_i)
|
49
|
+
end
|
50
|
+
|
51
|
+
def check
|
52
|
+
return unless @root.root?
|
53
|
+
allowed = limit
|
54
|
+
balance = @root.balance
|
55
|
+
raise "The balance #{balance} of the root wallet is too low (max allowed: #{allowed})" if balance < allowed
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/zold/node/entrance.rb
CHANGED
@@ -19,6 +19,8 @@
|
|
19
19
|
# SOFTWARE.
|
20
20
|
|
21
21
|
require 'concurrent'
|
22
|
+
require 'tempfile'
|
23
|
+
require_relative 'emission'
|
22
24
|
require_relative '../log'
|
23
25
|
require_relative '../remotes'
|
24
26
|
require_relative '../copies'
|
@@ -44,12 +46,28 @@ module Zold
|
|
44
46
|
end
|
45
47
|
|
46
48
|
def push(id, body)
|
49
|
+
check(body)
|
47
50
|
@semaphores.put_if_absent(id, Mutex.new)
|
48
51
|
@semaphores.get(id).synchronize do
|
49
52
|
push_unsafe(id, body)
|
50
53
|
end
|
51
54
|
end
|
52
55
|
|
56
|
+
def check(body)
|
57
|
+
Tempfile.open do |f|
|
58
|
+
File.write(f.path, body)
|
59
|
+
wallet = Wallet.new(f)
|
60
|
+
break unless wallet.network == Wallet::MAIN_NETWORK
|
61
|
+
balance = wallet.balance
|
62
|
+
raise "The balance #{balance} is negative and it's not a root wallet" if balance.negative? && !wallet.root?
|
63
|
+
Emission.new(wallet).check
|
64
|
+
debt = Tax.new(wallet).debt
|
65
|
+
if debt > Tax::TRIAL
|
66
|
+
raise "Taxes are not paid, the debt is #{debt} (#{debt.to_i} zents), won't promote the wallet"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
53
71
|
def push_unsafe(id, body)
|
54
72
|
copies = Copies.new(File.join(@copies, id.to_s))
|
55
73
|
copies.add(body, 'remote', Remotes::PORT, 0)
|
@@ -59,10 +77,6 @@ module Zold
|
|
59
77
|
modified = Merge.new(
|
60
78
|
wallets: @wallets, copies: copies.root, log: @log
|
61
79
|
).run(['merge', id.to_s])
|
62
|
-
debt = Tax.new(@wallets.find(id)).debt
|
63
|
-
if debt > Tax::TRIAL
|
64
|
-
raise "Taxes are not paid, the debt is #{debt} (#{debt.to_i} zents), won't promote the wallet"
|
65
|
-
end
|
66
80
|
copies.remove('remote', Remotes::PORT)
|
67
81
|
modified.each do |m|
|
68
82
|
Push.new(
|
data/lib/zold/tax.rb
CHANGED
@@ -69,8 +69,7 @@ module Zold
|
|
69
69
|
score
|
70
70
|
end.reject(&:nil?).uniq(&:hash)
|
71
71
|
paid = scores.empty? ? Amount::ZERO : scores.map(&:amount).inject(&:+) * -1
|
72
|
-
|
73
|
-
owned = Tax::FEE_TXN_HOUR * txns.count * age_hours
|
72
|
+
owned = Tax::FEE_TXN_HOUR * txns.count * @wallet.age
|
74
73
|
owned - paid
|
75
74
|
end
|
76
75
|
end
|
data/lib/zold/version.rb
CHANGED
data/lib/zold/wallet.rb
CHANGED
@@ -38,6 +38,10 @@ require_relative 'signature'
|
|
38
38
|
module Zold
|
39
39
|
# A single wallet
|
40
40
|
class Wallet
|
41
|
+
# The name of the main production network. All other networks
|
42
|
+
# must have different names.
|
43
|
+
MAIN_NETWORK = 'zold'.freeze
|
44
|
+
|
41
45
|
def initialize(file)
|
42
46
|
@file = file
|
43
47
|
end
|
@@ -127,6 +131,12 @@ module Zold
|
|
127
131
|
end
|
128
132
|
end
|
129
133
|
|
134
|
+
# Age of wallet in hours
|
135
|
+
def age
|
136
|
+
list = txns
|
137
|
+
list.empty? ? 0 : (Time.now - list.sort_by(&:date)[0].date) / 60
|
138
|
+
end
|
139
|
+
|
130
140
|
def txns
|
131
141
|
lines.drop(5)
|
132
142
|
.each_with_index
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (c) 2018 Yegor Bugayenko
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the 'Software'), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in all
|
11
|
+
# copies or substantial portions of the Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
+
# SOFTWARE.
|
20
|
+
|
21
|
+
require 'minitest/autorun'
|
22
|
+
require 'tmpdir'
|
23
|
+
require_relative '../test__helper'
|
24
|
+
require_relative '../../lib/zold/node/emission'
|
25
|
+
require_relative '../../lib/zold/amount'
|
26
|
+
|
27
|
+
class EmissionTest < Minitest::Test
|
28
|
+
def test_emission
|
29
|
+
(1..10).each do |year|
|
30
|
+
Dir.mktmpdir 'test' do |dir|
|
31
|
+
id = Zold::Id.new
|
32
|
+
wallet = Zold::Wallet.new(File.join(dir, id.to_s))
|
33
|
+
wallet.init(id, Zold::Key.new(file: 'fixtures/id_rsa.pub'))
|
34
|
+
wallet.add(
|
35
|
+
Zold::Txn.new(
|
36
|
+
1, Time.now - 24 * 365 * year,
|
37
|
+
Zold::Amount.new(zld: 39.99),
|
38
|
+
'NOPREFIX', Zold::Id::ROOT, '-'
|
39
|
+
)
|
40
|
+
)
|
41
|
+
$log.info("Year: #{year}, Quota: #{(Zold::Emission.new(wallet).quota * 100).round(2)}%, \
|
42
|
+
Limit: #{Zold::Emission.new(wallet).limit}")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Copyright (c) 2018 Yegor Bugayenko
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the 'Software'), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in all
|
11
|
+
# copies or substantial portions of the Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
+
# SOFTWARE.
|
20
|
+
|
21
|
+
require 'minitest/autorun'
|
22
|
+
require_relative '../../lib/zold/node/entrance'
|
23
|
+
require_relative '../../lib/zold/amount'
|
24
|
+
|
25
|
+
class EntranceTest < Minitest::Test
|
26
|
+
def test_something
|
27
|
+
# tbd...
|
28
|
+
end
|
29
|
+
end
|
data/test/test__helper.rb
CHANGED
data/test/test_zold.rb
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
require 'minitest/autorun'
|
22
22
|
require 'tmpdir'
|
23
23
|
require 'English'
|
24
|
+
require_relative 'test__helper'
|
24
25
|
|
25
26
|
# Zold main module test.
|
26
27
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
@@ -37,10 +38,8 @@ class TestZold < Minitest::Test
|
|
37
38
|
bin = File.join(Dir.pwd, 'bin/zold')
|
38
39
|
Dir.chdir(dir) do
|
39
40
|
stdout = `/bin/bash #{f} #{bin} 2>&1`
|
40
|
-
|
41
|
-
|
42
|
-
assert_equal($CHILD_STATUS.exitstatus, 0)
|
43
|
-
end
|
41
|
+
$log.info(stdout)
|
42
|
+
assert_equal(0, $CHILD_STATUS.exitstatus)
|
44
43
|
end
|
45
44
|
end
|
46
45
|
end
|
data/wp/wp.tex
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
\usepackage{microtype}
|
6
6
|
\usepackage{mathpazo} % Palantino font
|
7
7
|
\usepackage{mdframed}
|
8
|
+
\usepackage{pgfplots}
|
8
9
|
\usepackage{minted}
|
9
10
|
\setminted{fontsize=\small}
|
10
11
|
\setminted{breaklines}
|
@@ -92,11 +93,12 @@ One ZLD by convention equals to $2^{24}$ \emph{zents} (16,777,216).
|
|
92
93
|
All amounts are stored as signed 64-bit integers.
|
93
94
|
Thus, the technical capacity of the currency is 549,755,813,888 ZLD (half a trillion).
|
94
95
|
|
95
|
-
\textbf{
|
96
|
-
|
97
|
-
The
|
98
|
-
issuer and may have a negative balance
|
99
|
-
|
96
|
+
\textbf{Root Wallet}.
|
97
|
+
Zold is a pre-mined currency.
|
98
|
+
The only way to get ZLD is to receive it from someone else.
|
99
|
+
The root wallet belongs to the issuer and may have a negative balance,
|
100
|
+
which can grow according to a pre-defined restrictive formula.
|
101
|
+
All other wallets may only have positive balances.
|
100
102
|
|
101
103
|
\colorbox{yellow}{Let's compare each of these principles with other currencies and highlight similarities.}
|
102
104
|
|
@@ -268,6 +270,51 @@ Each transaction takes 900 symbols at most.
|
|
268
270
|
The maximum amount of transactions in one wallet is 65536.
|
269
271
|
Thus, a single wallet may be as big as a 59Mb text file, at most.
|
270
272
|
|
273
|
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
274
|
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
275
|
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
276
|
+
\section{Mining Formula}
|
277
|
+
|
278
|
+
The only way to get ZLD is to receive it from the \emph{root} wallet \dd{0000000000000000}.
|
279
|
+
This wallet is the only one that may have a negative ballance.
|
280
|
+
However, to prevent an uncontrolled emission of ZLD, the balance
|
281
|
+
of this wallet must satisfy the formula:
|
282
|
+
|
283
|
+
$$x = \frac{2048}{h};\quad z = 2^{63 - x}.$$
|
284
|
+
|
285
|
+
Here $h$ is the age of the root wallet in hours and $z$ is the maximum
|
286
|
+
amount of zents it can issue at that moment. The first
|
287
|
+
six years will look like this:
|
288
|
+
|
289
|
+
\vspace{\parskip}\begin{center}\begin{tabular}{lrr}
|
290
|
+
\hline
|
291
|
+
Year & ZLD & Share \\
|
292
|
+
\hline
|
293
|
+
1st & 32m & 0.01\% \\
|
294
|
+
2nd & 4b & 0.77\% \\
|
295
|
+
3rd & 21b & 4\%\\
|
296
|
+
4th & 48b & 9\% \\
|
297
|
+
5th & 78b & 14\% \\
|
298
|
+
6th & 108b & 20\% \\
|
299
|
+
\hline
|
300
|
+
\end{tabular}\end{center}
|
301
|
+
|
302
|
+
On a large perspective of 25 years total emission of ZLD will look
|
303
|
+
like this:
|
304
|
+
|
305
|
+
\vspace{\parskip}\begin{center}\begin{tikzpicture}
|
306
|
+
\begin{axis}[
|
307
|
+
axis lines=middle,
|
308
|
+
width=12cm,height=5cm,
|
309
|
+
xlabel={Age, in years},
|
310
|
+
ylabel={Billions of ZLD},
|
311
|
+
]
|
312
|
+
\addplot[domain=-0:25, samples=25]{2^(39-2048/(x*24*365)) / 1000000000};
|
313
|
+
\end{axis}
|
314
|
+
\end{tikzpicture}\end{center}
|
315
|
+
|
316
|
+
The limitation is hardwired in Zold software and can't be eliminated.
|
317
|
+
|
271
318
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
272
319
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
273
320
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
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.
|
4
|
+
version: '0.8'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
@@ -298,6 +298,7 @@ files:
|
|
298
298
|
- lib/zold/id.rb
|
299
299
|
- lib/zold/key.rb
|
300
300
|
- lib/zold/log.rb
|
301
|
+
- lib/zold/node/emission.rb
|
301
302
|
- lib/zold/node/entrance.rb
|
302
303
|
- lib/zold/node/farm.rb
|
303
304
|
- lib/zold/node/front.rb
|
@@ -327,6 +328,8 @@ files:
|
|
327
328
|
- test/commands/test_show.rb
|
328
329
|
- test/commands/test_taxes.rb
|
329
330
|
- test/node/fake_node.rb
|
331
|
+
- test/node/test_emission.rb
|
332
|
+
- test/node/test_entrance.rb
|
330
333
|
- test/node/test_farm.rb
|
331
334
|
- test/node/test_front.rb
|
332
335
|
- test/test__helper.rb
|
@@ -396,6 +399,8 @@ test_files:
|
|
396
399
|
- test/commands/test_show.rb
|
397
400
|
- test/commands/test_taxes.rb
|
398
401
|
- test/node/fake_node.rb
|
402
|
+
- test/node/test_emission.rb
|
403
|
+
- test/node/test_entrance.rb
|
399
404
|
- test/node/test_farm.rb
|
400
405
|
- test/node/test_front.rb
|
401
406
|
- test/test__helper.rb
|