universa 3.14.2.4 → 3.14.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -0
- data/bin/umi/bin/umi +1 -1
- data/bin/umi/bin/umi.bat +1 -1
- data/bin/umi/lib/com.icodici.common_tools-3.14.5.jar +0 -0
- data/bin/umi/lib/com.icodici.crypto-3.14.5.jar +0 -0
- data/bin/umi/lib/{com.icodici.nanohttpd-2.1.0.jar → com.icodici.nanohttpd-2.1.0-20210921.jar} +0 -0
- data/bin/umi/lib/com.icodici.umi-0.8.79.jar +0 -0
- data/bin/umi/lib/com.icodici.universa_core-3.14.5.jar +0 -0
- data/lib/universa/client.rb +30 -21
- data/lib/universa/keytool/keytool.rb +2 -1
- data/lib/universa/version.rb +1 -1
- metadata +8 -8
- data/bin/umi/lib/com.icodici.common_tools-3.14.2.jar +0 -0
- data/bin/umi/lib/com.icodici.crypto-3.14.2.jar +0 -0
- data/bin/umi/lib/com.icodici.umi-0.8.72.jar +0 -0
- data/bin/umi/lib/com.icodici.universa_core-3.14.2.jar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73b364bddb0a494976ebf2cd0ebf2931cf69abfa9cb8d58479b8775c3e24b3f6
|
4
|
+
data.tar.gz: 9c4891a5a8d1a6eba04f61708edad2d449519aa6520c78cd0b19857f6e3736f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87a5e9e6b7711b7c5315cfacd98faf3bef3e45aaf6261e4daf1a6bc76befd8f0a39d3d65aa65ee146f297f9b94fa20eb5b7974bc372de0e745694e8873a9456e
|
7
|
+
data.tar.gz: e85a4b6306857ec5aef891302f645ba7973a3c963bad8b460cd25c04ebb2f9aa9de78093e848c9e57f79aa59e5a491a76f67d82a65c830f0cf1abca0d5d370f5
|
data/README.md
CHANGED
@@ -5,6 +5,15 @@ Java library using Universa UMI protocol and Universa client services.
|
|
5
5
|
|
6
6
|
## News
|
7
7
|
|
8
|
+
- fixed complex reference types integration
|
9
|
+
- upgraded to new UMI (universa core is updated)
|
10
|
+
- unikeys cli tool now show information about public keys too
|
11
|
+
- unikeys extracts public keys and export as files or unversa text objects
|
12
|
+
them as both univera binaries or universa text objects
|
13
|
+
- support to pack universa text objects, see [kb on universa text objects](https://kb.universablockchain.com/text_format_for_universa_objects/311).
|
14
|
+
|
15
|
+
## Old News :)
|
16
|
+
|
8
17
|
- production-tested in various universa projects
|
9
18
|
- rewritten Client and Connection to use new consensus-based, dns-free Universa network topology discovery protocol
|
10
19
|
- added syntax sugar for TransactionPack
|
data/bin/umi/bin/umi
CHANGED
@@ -344,7 +344,7 @@ declare -r lib_dir="$(realpath "${app_home}/../lib")"
|
|
344
344
|
declare -a app_mainclass=(com.icodici.farcallscala.Main)
|
345
345
|
|
346
346
|
declare -r script_conf_file="${app_home}/../conf/application.ini"
|
347
|
-
declare -r app_classpath="$lib_dir/com.icodici.umi-0.8.
|
347
|
+
declare -r app_classpath="$lib_dir/com.icodici.umi-0.8.79.jar:$lib_dir/org.scala-lang.scala-library-2.12.7.jar:$lib_dir/com.icodici.universa_core-3.14.5.jar:$lib_dir/org.scala-sbt.ipcsocket.ipcsocket-1.0.0.jar:$lib_dir/net.sf.jopt-simple.jopt-simple-4.9.jar:$lib_dir/org.yaml.snakeyaml-1.18.jar:$lib_dir/com.icodici.nanohttpd-2.1.0-20210921.jar:$lib_dir/com.icodici.common_tools-3.14.5.jar:$lib_dir/com.icodici.crypto-3.14.5.jar:$lib_dir/net.java.dev.jna.jna-4.5.1.jar:$lib_dir/net.java.dev.jna.jna-platform-4.5.0.jar:$lib_dir/com.eclipsesource.minimal-json.minimal-json-0.9.4.jar:$lib_dir/org.checkerframework.checker-qual-2.3.2.jar:$lib_dir/org.bouncycastle.bcprov-jdk15on-1.62.jar:$lib_dir/com.squareup.jnagmp.jnagmp-2.0.0.jar"
|
348
348
|
|
349
349
|
# java_cmd is overrode in process_args when -java-home is used
|
350
350
|
declare java_cmd=$(get_java_cmd)
|
data/bin/umi/bin/umi.bat
CHANGED
@@ -80,7 +80,7 @@ rem "-J" is stripped, "-D" is left as is, and everything is appended to JAVA_OPT
|
|
80
80
|
set _JAVA_PARAMS=
|
81
81
|
set _APP_ARGS=
|
82
82
|
|
83
|
-
set "APP_CLASSPATH=%APP_LIB_DIR%\com.icodici.umi-0.8.
|
83
|
+
set "APP_CLASSPATH=%APP_LIB_DIR%\com.icodici.umi-0.8.79.jar;%APP_LIB_DIR%\org.scala-lang.scala-library-2.12.7.jar;%APP_LIB_DIR%\com.icodici.universa_core-3.14.5.jar;%APP_LIB_DIR%\org.scala-sbt.ipcsocket.ipcsocket-1.0.0.jar;%APP_LIB_DIR%\net.sf.jopt-simple.jopt-simple-4.9.jar;%APP_LIB_DIR%\org.yaml.snakeyaml-1.18.jar;%APP_LIB_DIR%\com.icodici.nanohttpd-2.1.0-20210921.jar;%APP_LIB_DIR%\com.icodici.common_tools-3.14.5.jar;%APP_LIB_DIR%\com.icodici.crypto-3.14.5.jar;%APP_LIB_DIR%\net.java.dev.jna.jna-4.5.1.jar;%APP_LIB_DIR%\net.java.dev.jna.jna-platform-4.5.0.jar;%APP_LIB_DIR%\com.eclipsesource.minimal-json.minimal-json-0.9.4.jar;%APP_LIB_DIR%\org.checkerframework.checker-qual-2.3.2.jar;%APP_LIB_DIR%\org.bouncycastle.bcprov-jdk15on-1.62.jar;%APP_LIB_DIR%\com.squareup.jnagmp.jnagmp-2.0.0.jar"
|
84
84
|
set "APP_MAIN_CLASS=com.icodici.farcallscala.Main"
|
85
85
|
set "SCRIPT_CONF_FILE=%APP_HOME%\conf\application.ini"
|
86
86
|
|
Binary file
|
Binary file
|
data/bin/umi/lib/{com.icodici.nanohttpd-2.1.0.jar → com.icodici.nanohttpd-2.1.0-20210921.jar}
RENAMED
Binary file
|
Binary file
|
Binary file
|
data/lib/universa/client.rb
CHANGED
@@ -10,7 +10,6 @@ module Universa
|
|
10
10
|
remote_class "com.icodici.universa.node2.network.Client"
|
11
11
|
end
|
12
12
|
|
13
|
-
|
14
13
|
# The universa network client. Discover and connects to the universa network, provides consensus operations
|
15
14
|
# and all other whole-network related functions.
|
16
15
|
class Client
|
@@ -42,9 +41,9 @@ module Universa
|
|
42
41
|
# @raise if network topology could not be checked/obtained.
|
43
42
|
def initialize topology: "mainnet", private_key: PrivateKey.new(2048), cache_dir: nil
|
44
43
|
@client = UmiClient.new topology, cache_dir, private_key
|
45
|
-
@private_key =
|
44
|
+
@private_key = private_key
|
46
45
|
@size = @client.size
|
47
|
-
@connections = (0...@size).map {nil}
|
46
|
+
@connections = (0...@size).map { nil }
|
48
47
|
end
|
49
48
|
|
50
49
|
# Get the node connection by its index (0...size).
|
@@ -64,7 +63,7 @@ module Universa
|
|
64
63
|
# @param [Numeric] number of connections to get
|
65
64
|
# @return [Array(Connection)] array of connections to random (non repeating) nodes
|
66
65
|
def random_connections number
|
67
|
-
(0...size).to_a.sample(number).map {|n| self[n]}
|
66
|
+
(0...size).to_a.sample(number).map { |n| self[n] }
|
68
67
|
end
|
69
68
|
|
70
69
|
# Perform fast consensus state check with a given trust level, determining whether the item is approved or not.
|
@@ -90,33 +89,43 @@ module Universa
|
|
90
89
|
end
|
91
90
|
@client.isApprovedByNetwork(hash_id, trust.to_f, 60000)
|
92
91
|
end
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
92
|
+
|
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
|
+
# @raise Error if any of the queried nodes will cause an error.
|
101
|
+
def get_state obj, trust: 0.3
|
102
|
+
raise ArgumentError, "trust must be in 0.1..0.9 range" if trust < 0.1 || trust > 0.9
|
102
103
|
result = Concurrent::IVar.new
|
104
|
+
found_error = nil
|
103
105
|
negative_votes = Concurrent::AtomicFixnum.new((size * 0.1).round + 1)
|
104
106
|
positive_votes = Concurrent::AtomicFixnum.new((size * trust).round)
|
105
107
|
|
106
108
|
# consensus-finding conveyor: we chek connections in batches in parallel until get
|
107
109
|
# some consensus. We do not wait until all of them will answer
|
108
|
-
(0...size).to_a.shuffle.each {|index|
|
110
|
+
(0...size).to_a.shuffle.each { |index|
|
109
111
|
Thread.start {
|
110
112
|
if result.incomplete?
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
113
|
+
begin
|
114
|
+
if (state = self[index].get_state(obj)).approved?
|
115
|
+
result.try_set(state) if positive_votes.decrement < 0
|
116
|
+
else
|
117
|
+
result.try_set(state) if negative_votes.decrement < 0
|
118
|
+
end
|
119
|
+
rescue
|
120
|
+
found_error = $!
|
121
|
+
result.try_set(nil)
|
115
122
|
end
|
116
123
|
end
|
117
124
|
}
|
118
125
|
}
|
119
|
-
result.value
|
126
|
+
r = result.value
|
127
|
+
found_error != nil and raise found_error
|
128
|
+
r
|
120
129
|
end
|
121
130
|
|
122
131
|
# Register a single contract (on private network or if you have white key allowing free operations)
|
@@ -139,7 +148,7 @@ module Universa
|
|
139
148
|
# The connection to a single Universa node.
|
140
149
|
class Connection
|
141
150
|
|
142
|
-
# Do not create it
|
151
|
+
# Do not create it directly, use {Client#random_connection}, {Client#random_connections} or {Client#[]} instead
|
143
152
|
def initialize umi_client
|
144
153
|
@client = umi_client
|
145
154
|
end
|
@@ -216,7 +225,7 @@ module Universa
|
|
216
225
|
|
217
226
|
end
|
218
227
|
|
219
|
-
# The state of some contract reported by
|
228
|
+
# The state of some contract reported by the network. It is a convenience wrapper around Universa
|
220
229
|
# ItemState structure.
|
221
230
|
class ContractState
|
222
231
|
def initialize(universa_contract_state)
|
@@ -183,7 +183,8 @@ class KeyTool
|
|
183
183
|
@rounds < 100000 and error "To few rounds, use at least 100000"
|
184
184
|
}
|
185
185
|
|
186
|
-
opts.on("-p FILE", "--public FILE", "extract public key
|
186
|
+
opts.on("-p FILE", "--public FILE", "extract public key. If output file is not specified,",
|
187
|
+
"prints as universa text object to the standard output") { |name|
|
187
188
|
task {
|
188
189
|
key = load_key(name, true)
|
189
190
|
if @output_file
|
data/lib/universa/version.rb
CHANGED
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.14.
|
4
|
+
version: 3.14.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sergeych
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: farcall
|
@@ -144,11 +144,11 @@ files:
|
|
144
144
|
- bin/umi/bin/umi
|
145
145
|
- bin/umi/bin/umi.bat
|
146
146
|
- bin/umi/lib/com.eclipsesource.minimal-json.minimal-json-0.9.4.jar
|
147
|
-
- bin/umi/lib/com.icodici.common_tools-3.14.
|
148
|
-
- bin/umi/lib/com.icodici.crypto-3.14.
|
149
|
-
- bin/umi/lib/com.icodici.nanohttpd-2.1.0.jar
|
150
|
-
- bin/umi/lib/com.icodici.umi-0.8.
|
151
|
-
- bin/umi/lib/com.icodici.universa_core-3.14.
|
147
|
+
- bin/umi/lib/com.icodici.common_tools-3.14.5.jar
|
148
|
+
- bin/umi/lib/com.icodici.crypto-3.14.5.jar
|
149
|
+
- bin/umi/lib/com.icodici.nanohttpd-2.1.0-20210921.jar
|
150
|
+
- bin/umi/lib/com.icodici.umi-0.8.79.jar
|
151
|
+
- bin/umi/lib/com.icodici.universa_core-3.14.5.jar
|
152
152
|
- bin/umi/lib/com.squareup.jnagmp.jnagmp-2.0.0.jar
|
153
153
|
- bin/umi/lib/net.java.dev.jna.jna-4.5.1.jar
|
154
154
|
- bin/umi/lib/net.java.dev.jna.jna-platform-4.5.0.jar
|
@@ -205,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
205
|
- !ruby/object:Gem::Version
|
206
206
|
version: '0'
|
207
207
|
requirements: []
|
208
|
-
rubygems_version: 3.2.
|
208
|
+
rubygems_version: 3.2.15
|
209
209
|
signing_key:
|
210
210
|
specification_version: 4
|
211
211
|
summary: Expose Universa Java API to ruby
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|