tezos_client 0.3.1 → 0.3.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08bbdf51d7191828d58ffc58f47a673d082fbe240915b9a48babd15a680c5aa5'
4
- data.tar.gz: 376ec710ad40bc25f524a11e523ba0ea261a730981da163ce7d8925363823e6a
3
+ metadata.gz: 4aa1db24bd40a81a56e7ae68975a143518c0cf57c336b2730af4d594b4ac1b37
4
+ data.tar.gz: d405e80590bdbbef3008ce472ce56f903af70fdd18b00eb58280c8689c6ae545
5
5
  SHA512:
6
- metadata.gz: 5dba62c13df318054653dbc0276e4119cef5c15575846a3c5e491571083a8da9247e21065320a3074abcf8156aa925a537c09ac400e09ccbde6b63fe47823c4a
7
- data.tar.gz: edf55f07f79de4f903fecf338ebed0c771243d703fdc8c022d5c0cf357159d489b510b9b0f3fe89d5ce74f3abb34ea4341b33ea17eb6a3fd6bb5db4f66b140ec
6
+ metadata.gz: 234b4f946357dc3bb5f8c55b6b4ac93b2e62d4fa40505fe67a5585cbd8025d814bffafdf74bb0a1f0630b46c0edd3ac6263a75228156618e535020d26ae98ac8
7
+ data.tar.gz: 464c118dc38b4a2686c90c5b2fe4d693e5c9ceb7222b8500e162fa7d641dea81544ea044b6e97279824bc7be8f7074d9a2730fcd4c73e2505076ed1077617ec6
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tezos_client (0.3.1)
4
+ tezos_client (0.3.3)
5
5
  activesupport (~> 5.2.0)
6
6
  base58 (~> 0.2.3)
7
7
  bip_mnemonic (~> 0.0.2)
data/lib/tezos_client.rb CHANGED
@@ -15,6 +15,7 @@ require "tezos_client/encode_utils"
15
15
  require "tezos_client/operation"
16
16
  require "tezos_client/operations/origination_operation"
17
17
  require "tezos_client/operations/transaction_operation"
18
+ require "tezos_client/operations/transactions_operation"
18
19
 
19
20
  require "tezos_client/client_interface"
20
21
  require "tezos_client/rpc_interface"
@@ -104,6 +105,17 @@ class TezosClient
104
105
  ).test_and_broadcast
105
106
  end
106
107
 
108
+ def transfer_to_many(from:, amounts:, secret_key:, **args)
109
+ TransactionsOperation.new(
110
+ liquidity_interface: liquidity_interface,
111
+ rpc_interface: rpc_interface,
112
+ from: from,
113
+ amounts: amounts,
114
+ secret_key: secret_key,
115
+ **args
116
+ ).test_and_broadcast
117
+ end
118
+
107
119
  def call_contract(args)
108
120
  parameters = args.fetch(:parameters)
109
121
 
@@ -123,6 +135,7 @@ class TezosClient
123
135
  monitoring_thread = rpc_interface.monitor_block do |block_header|
124
136
  log "recently received block: #{block_header.pretty_inspect}"
125
137
  hash = block_header["hash"]
138
+
126
139
  if block_include_operation?(operation_id, hash)
127
140
  log "operations #{operation_id} found in block #{hash}"
128
141
  including_block = hash
@@ -132,11 +145,18 @@ class TezosClient
132
145
  Timeout.timeout(timeout) do
133
146
  loop do
134
147
  sleep(0.1)
148
+ break unless monitoring_thread.alive?
135
149
  break unless including_block.nil?
136
150
  end
137
151
  end
138
152
 
139
- monitoring_thread.terminate
153
+ if monitoring_thread.status.nil?
154
+ # when thread raise an Exception, reraise it
155
+ log "monitoring thread raised an exception"
156
+ monitoring_thread.value
157
+ else
158
+ monitoring_thread.terminate
159
+ end
140
160
 
141
161
  including_block
142
162
  end
@@ -0,0 +1,29 @@
1
+ class TezosClient
2
+ class TransactionsOperation < Operation
3
+ include EncodeUtils
4
+
5
+ def initialize_operation_args
6
+ @operation_args = default_args.merge(
7
+ **@init_args,
8
+ operation_kind: operation_kind,
9
+ branch: branch,
10
+ counter: counter
11
+ )
12
+ end
13
+
14
+
15
+ def operation_kind
16
+ :transactions
17
+ end
18
+
19
+ private
20
+
21
+ def default_args
22
+ {
23
+ gas_limit: 0.1,
24
+ storage_limit: 0.006,
25
+ fee: 0.05
26
+ }
27
+ end
28
+ end
29
+ end
@@ -20,6 +20,21 @@ class TezosClient
20
20
  operation
21
21
  end
22
22
 
23
+ def transactions_operation(args)
24
+ args[:amounts].map.with_index do |(destination, amount), index|
25
+ {
26
+ kind: "transaction",
27
+ amount: amount.to_satoshi.to_s,
28
+ source: args.fetch(:from),
29
+ destination: destination,
30
+ gas_limit: args.fetch(:gas_limit).to_satoshi.to_s,
31
+ storage_limit: args.fetch(:storage_limit).to_satoshi.to_s,
32
+ counter: (args.fetch(:counter) + index).to_s,
33
+ fee: args.fetch(:fee).to_satoshi.to_s
34
+ }
35
+ end
36
+ end
37
+
23
38
  def origination_operation(args)
24
39
  operation = {
25
40
  kind: "origination",
@@ -65,7 +80,7 @@ class TezosClient
65
80
  content = {
66
81
  protocol: args.fetch(:protocol),
67
82
  branch: args.fetch(:branch),
68
- contents: [operation(args)],
83
+ contents: contents(args),
69
84
  signature: args.fetch(:signature)
70
85
  }
71
86
 
@@ -77,7 +92,7 @@ class TezosClient
77
92
  def run_operation(args)
78
93
  content = {
79
94
  branch: args.fetch(:branch),
80
- contents: [operation(args)],
95
+ contents: contents(args),
81
96
  signature: args.fetch(:signature)
82
97
  }
83
98
  res = post("chains/main/blocks/head/helpers/scripts/run_operation", content)
@@ -87,7 +102,7 @@ class TezosClient
87
102
  def forge_operation(args)
88
103
  content = {
89
104
  branch: args.fetch(:branch),
90
- contents: [operation(args)]
105
+ contents: contents(args)
91
106
  }
92
107
  post("chains/main/blocks/head/helpers/forge/operations", content)
93
108
  end
@@ -95,6 +110,11 @@ class TezosClient
95
110
  def broadcast_operation(data)
96
111
  post("injection/operation?chain=main", data)
97
112
  end
113
+
114
+ def contents(args)
115
+ operation = operation(args)
116
+ (operation.is_a?(Array)) ? operation : [operation]
117
+ end
98
118
  end
99
119
  end
100
120
  end
@@ -57,6 +57,7 @@ class TezosClient
57
57
  accept: :json)
58
58
  rescue => e
59
59
  log "#{uuid}: failed with error #{e}"
60
+ raise
60
61
  end
61
62
  end
62
63
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class TezosClient
4
- VERSION = "0.3.1"
4
+ VERSION = "0.3.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tezos_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre Michard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-11 00:00:00.000000000 Z
11
+ date: 2019-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -229,6 +229,7 @@ files:
229
229
  - lib/tezos_client/operation.rb
230
230
  - lib/tezos_client/operations/origination_operation.rb
231
231
  - lib/tezos_client/operations/transaction_operation.rb
232
+ - lib/tezos_client/operations/transactions_operation.rb
232
233
  - lib/tezos_client/rpc_interface.rb
233
234
  - lib/tezos_client/rpc_interface/blocks.rb
234
235
  - lib/tezos_client/rpc_interface/context.rb