lib/universa/client.rb in universa-3.9.14.7 vs lib/universa/client.rb in universa-3.9.15.pre.p1
- old
+ new
@@ -65,40 +65,17 @@
# @return [Array(Connection)] array of connections to random (non repeating) nodes
def random_connections number
(0...size).to_a.sample(number).map {|n| self[n]}
end
- # Perform fast consensus state check with a given trust level, determining whether the item is approved or not.
- # Blocks for 1 minute or until the network solution will be collected for a given trust level.
+ # Perform fast consensus state check with a given trust level, as the fraction of the whole network size.
+ # It checks the network nodes randomly until get enough positive or negative states. The lover the required
+ # trust level is, the faster the answer will be found.
#
- # @param [Contract | HashId | String | Binary] obj contract to check
+ # @param [Contract | HashId] obj contract to check
# @param [Object] trust level, should be between 0.1 (10% of network) and 0.9 (90% of the network)
- # @return true if the contract state is approved by the network with a given trust level, false otherwise.
- def is_approved? obj, trust: 0.3
- hash_id = case obj
- when HashId
- obj
- when Contract
- obj.hash_id
- when String
- if obj.encoding == Encoding::ASCII_8BIT
- HashId.from_digest(obj)
- else
- HashId.from_string(obj)
- end
- else
- raise ArgumentError "wrong type of object to check approval"
- end
- @client.isApprovedByNetwork(hash_id, trust.to_f, 60000)
- end
- # Perform fast consensus state check with a given trust level, as the fraction of the whole network size.
- # It checks the network nodes randomly until get enough positive or negative states. The lover the required
- # trust level is, the faster the answer will be found.
- #
- # @param [Contract | HashId] obj contract to check
- # @param [Object] trust level, should be between 0.1 (10% of network) and 0.9 (90% of the network)
- # @return [ContractState] of some final node check It does not calculates average time (yet)
- def get_state obj, trust: 0.3
+ # @return [ContractState] of some final node check It does not calculates average time (yet)
+ def get_state obj, trust: 0.3
raise ArgumentError, "trusst must be in 0.1..0.9 range" if trust < 0.1 || trust > 0.9
result = Concurrent::IVar.new
negative_votes = Concurrent::AtomicFixnum.new((size * 0.1).round + 1)
positive_votes = Concurrent::AtomicFixnum.new((size * trust).round)