mssmt 0.3.0 → 0.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 +4 -4
- data/lib/mssmt/branch_node.rb +8 -2
- data/lib/mssmt/computed_node.rb +5 -2
- data/lib/mssmt/leaf_node.rb +5 -2
- data/lib/mssmt/tree.rb +2 -0
- data/lib/mssmt/version.rb +1 -1
- data/lib/mssmt.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d07e68431e9d8539727c514f6bbe42006709b980214d6fdeaca0cb6fb0613d5d
|
4
|
+
data.tar.gz: 76da8e23b8b45119ab20fc875657688dd26dd2b24a8dc82f7704162c6ae61a24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3dc973a5f83f8399af0b617a34db243464d15878e27fe1b748ba576622c7a7d7e28e5ac736efef4d0e4a4e53231525aad6a8d4e99d3b1b6f732948dc72a8dc3c
|
7
|
+
data.tar.gz: 482b24550810aa7c070b0b51845088094d17d4afca4a1ae60677c58be3fecf89eaf88651b3795eca268a05f08b7d265602ee6fb6c699a06a1bf80d8bb450c659
|
data/lib/mssmt/branch_node.rb
CHANGED
@@ -5,6 +5,10 @@ module MSSMT
|
|
5
5
|
class BranchNode
|
6
6
|
attr_reader :left, :right, :node_hash, :sum
|
7
7
|
|
8
|
+
# Constructor
|
9
|
+
# @param [MSSMT::LeafNode|MSSMT::BranchNode] left
|
10
|
+
# @param [MSSMT::LeafNode|MSSMT::BranchNode] right
|
11
|
+
# @raise [MSSMT::OverflowError]
|
8
12
|
def initialize(left, right)
|
9
13
|
if !left.is_a?(BranchNode) && !left.is_a?(LeafNode)
|
10
14
|
raise ArgumentError, "left must be a branch or leaf node"
|
@@ -16,8 +20,10 @@ module MSSMT
|
|
16
20
|
@left = left
|
17
21
|
@right = right
|
18
22
|
@sum = left.sum + right.sum
|
19
|
-
|
20
|
-
|
23
|
+
if @sum > Tree::MAX_SUM_VALUE
|
24
|
+
raise OverflowError, "sum: #{sum} is overflow"
|
25
|
+
end
|
26
|
+
|
21
27
|
@node_hash =
|
22
28
|
Digest::SHA256.digest(
|
23
29
|
"#{left.node_hash}#{right.node_hash}#{[@sum].pack("Q>")}"
|
data/lib/mssmt/computed_node.rb
CHANGED
@@ -6,11 +6,14 @@ module MSSMT
|
|
6
6
|
attr_reader :node_hash, :sum
|
7
7
|
|
8
8
|
# Constructor
|
9
|
-
# @param [String] node_hash node hash with binary
|
9
|
+
# @param [String] node_hash node hash with binary format.
|
10
10
|
# @param [Integer] sum
|
11
|
+
# @raise [MSSMT::OverflowError]
|
11
12
|
def initialize(node_hash, sum)
|
12
13
|
@node_hash = node_hash
|
13
|
-
|
14
|
+
if sum > Tree::MAX_SUM_VALUE
|
15
|
+
raise OverflowError, "sum: #{sum} is overflow"
|
16
|
+
end
|
14
17
|
@sum = sum
|
15
18
|
end
|
16
19
|
|
data/lib/mssmt/leaf_node.rb
CHANGED
@@ -8,10 +8,13 @@ module MSSMT
|
|
8
8
|
# Constructor
|
9
9
|
# @param [String] value node value with binary format.
|
10
10
|
# @param [Integer] sum integer value associated with the value
|
11
|
+
# @raise [MSSMT::OverflowError]
|
11
12
|
def initialize(value, sum)
|
12
13
|
@value = value
|
13
|
-
|
14
|
-
|
14
|
+
if sum > Tree::MAX_SUM_VALUE
|
15
|
+
raise OverflowError, "sum: #{sum} is overflow"
|
16
|
+
end
|
17
|
+
@sum = sum
|
15
18
|
end
|
16
19
|
|
17
20
|
# Generate empty leaf node.
|
data/lib/mssmt/tree.rb
CHANGED
data/lib/mssmt/version.rb
CHANGED
data/lib/mssmt.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mssmt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- azuchi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby implementation of Merkle Sum Sparse Merkle Tree
|
14
14
|
email:
|