universa 3.9.14.5 → 3.9.14.7

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: 6ae1a913ccceca74c1765be44a6a50bfbd7ff87b2d2a7d211a6524dce04de3f7
4
- data.tar.gz: 98bb8fc5bfeb2aebee862444eb0b0993467a1fd94e4024b997779940bd663de8
3
+ metadata.gz: fa4b8c59d86810948f6b69236fcb0ec642c88c7281a6994935ffed57d7e9c6e6
4
+ data.tar.gz: b547a7d4fd353a29c01aafa6ac8d4c7e4a74f284cffb570294878f85fdfa3fdb
5
5
  SHA512:
6
- metadata.gz: aa9b9f139f4982742f3ef894edaac98ebe07c2a39be49d8e86d1e4f0bbc51a21b67217dfee2163cce916dada313b6e9b7cef3027109764e1c2acebb64940f850
7
- data.tar.gz: bcd99facf5c9ee84a4a2382825b3af65718966d880d1d19be17966cb8ca261eb4e503ff5a37018283f93f99e8d94e8d573a345de5624b0450f0f92b30cff0946
6
+ metadata.gz: 9f5f308c6b089b97635dd2eeb3f9136efccbd40077d19084e49a0b7ae71348e4b767cdcd3e915096df9a816d88a1d8c068958205d9a947fc20d7d3c7761d67b1
7
+ data.tar.gz: 4fb19404da64e8e87d3215207c2c38c29a3c66d14479ecf89ea958170ff6fab59ce14ab7685368c489d0635de388ba0e71979b596a8fa2fbbe81c23641c33228
@@ -67,14 +67,37 @@ module Universa
67
67
  (0...size).to_a.sample(number).map {|n| self[n]}
68
68
  end
69
69
 
70
- # Perform fast consensus state check with a given trust level, as the fraction of the whole network size.
71
- # It checks the network nodes randomly until get enough positive or negative states. The lover the required
72
- # trust level is, the faster the answer will be found.
70
+ # Perform fast consensus state check with a given trust level, determining whether the item is approved or not.
71
+ # Blocks for 1 minute or until the network solution will be collected for a given trust level.
73
72
  #
74
- # @param [Contract | HashId] obj contract to check
73
+ # @param [Contract | HashId | String | Binary] obj contract to check
75
74
  # @param [Object] trust level, should be between 0.1 (10% of network) and 0.9 (90% of the network)
76
- # @return [ContractState] of some final node check It does not calculates average time (yet)
77
- def get_state obj, trust: 0.3
75
+ # @return true if the contract state is approved by the network with a given trust level, false otherwise.
76
+ def is_approved? obj, trust: 0.3
77
+ hash_id = case obj
78
+ when HashId
79
+ obj
80
+ when Contract
81
+ obj.hash_id
82
+ when String
83
+ if obj.encoding == Encoding::ASCII_8BIT
84
+ HashId.from_digest(obj)
85
+ else
86
+ HashId.from_string(obj)
87
+ end
88
+ else
89
+ raise ArgumentError "wrong type of object to check approval"
90
+ end
91
+ @client.isApprovedByNetwork(hash_id, trust.to_f, 60000)
92
+ end
93
+ # Perform fast consensus state check with a given trust level, as the fraction of the whole network size.
94
+ # It checks the network nodes randomly until get enough positive or negative states. The lover the required
95
+ # trust level is, the faster the answer will be found.
96
+ #
97
+ # @param [Contract | HashId] obj contract to check
98
+ # @param [Object] trust level, should be between 0.1 (10% of network) and 0.9 (90% of the network)
99
+ # @return [ContractState] of some final node check It does not calculates average time (yet)
100
+ def get_state obj, trust: 0.3
78
101
  raise ArgumentError, "trusst must be in 0.1..0.9 range" if trust < 0.1 || trust > 0.9
79
102
  result = Concurrent::IVar.new
80
103
  negative_votes = Concurrent::AtomicFixnum.new((size * 0.1).round + 1)
@@ -11,7 +11,7 @@ module Universa::FSStore
11
11
  # @!method amount
12
12
  # @return [BigDecimal] +contract.state.data.amount+ or nil. See {Contract#amount} for more.
13
13
  #
14
- class Entry < Universa::StoredContract
14
+ class Entry < Universa::StoredContractBase
15
15
 
16
16
  extend Forwardable
17
17
 
@@ -1,5 +1,7 @@
1
1
  module Universa
2
2
 
3
+ # under construction, pls on not use yet
4
+ #
3
5
  # this is a base class for a contract stored in some contract chain. The implementation
4
6
  # must inherit and implement its {#load} and {#save} methods at least. To do it,
5
7
  # inherit and implement {ChainStore} to work with it.
@@ -9,7 +11,7 @@ module Universa
9
11
  # - contract could be assigned only once, no matter how, so its fields could be cached.
10
12
  # - origin, hash_id and parent are cached. So other contract parameters should be.
11
13
  #
12
- class StoredContract
14
+ class StoredContractBase
13
15
 
14
16
  # {ChainStore} instance to which it is connected
15
17
  attr :chain_store
@@ -1,4 +1,4 @@
1
1
  module Universa
2
2
  # Current gem version
3
- VERSION = "3.9.14.5"
3
+ VERSION = "3.9.14.7"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: universa
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.14.5
4
+ version: 3.9.14.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - sergeych
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-27 00:00:00.000000000 Z
11
+ date: 2019-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: farcall