Sha256: d0a5dac7827d3cd9fbffc42f1ef53154627b4c9762e015bbff8114ba952ff88a
Contents?: true
Size: 1.07 KB
Versions: 3
Compression:
Stored size: 1.07 KB
Contents
# frozen_string_literal: true module MSSMT # Leaf node within a MS-SMT that commit to a value and some integer value (the sum) associated with the value. class LeafNode attr_reader :value, :sum # Constructor # @param [String] value node value with binary format. # @param [Integer] sum integer value associated with the value # @raise [MSSMT::OverflowError] def initialize(value, sum) @value = value if sum > Tree::MAX_SUM_VALUE raise OverflowError, "sum: #{sum} is overflow" end @sum = sum end # Generate empty leaf node. # @return [MSSMT::LeafNode] def self.empty_leaf LeafNode.new(nil, 0) end # Calculate node hash. # @return [String] hash value. def node_hash Digest::SHA256.digest("#{value}#{[sum].pack("Q>")}") end # Check whether value and sum is empty. # @return [Boolean] def empty? (value.nil? or value.empty?) && sum.zero? end def ==(other) return false unless other.is_a?(LeafNode) node_hash == other.node_hash end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mssmt-0.4.2 | lib/mssmt/leaf_node.rb |
mssmt-0.4.1 | lib/mssmt/leaf_node.rb |
mssmt-0.4.0 | lib/mssmt/leaf_node.rb |