tezos_client 1.0.1 → 1.1.1

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: 014c9a05ae3cd9274cb1c05389dc09ba2b392d4696f473e2f46cc9f4937a28ee
4
- data.tar.gz: a9b296c7d4e3eda79f7a4aabbea8754aa598a668b257a06ee883295c0697effb
3
+ metadata.gz: 6de17ecf9250b846d61ac7c09163ae7d724bbf2cef921accfb363c17642d09bd
4
+ data.tar.gz: eceb944bc3de48585b37adb47d9004193b3b96b6803071ccb543c969d8d11888
5
5
  SHA512:
6
- metadata.gz: 983b7ab275287b10d6f049e8ef70590c6379ff487da32a7edea2f7f7e775fac922028fba84b76174d393e976a13d56cd15be7521e6fd8bac7096b4408aac8f6f
7
- data.tar.gz: 494b2b66f0f4e99ea176d01d526365841f17a27b156e03b98c5d76b441c4461cdc657db9843cb3fa84b605812d253ea3f3d166c06eb350a709e06de10ce77c7a
6
+ metadata.gz: af341ffed833a6f8683653b96f8a3cbc0b9397e7b5d56e734a6a528f96904c2ec45d252bd05be6ea8f009a54b55cc7d758784006c99c393ac3d4871913aeede9
7
+ data.tar.gz: 4a0ae7f0d075caace39047dcc9a012811484a0569a86223a508e8bb8fbbad578456bea5852c3243ff1b99ec4fdbc847abefd8dddaa24d3dd5e6490fb1e44323a
data/.travis.yml CHANGED
@@ -13,10 +13,6 @@ rvm:
13
13
  before_install:
14
14
  - sh travis-scripts/prepare-ubuntu.sh
15
15
  - mkdir -p $HOME/bin
16
- - docker pull moneytrack/liquidity:babylonnet
17
- - id=$(docker create moneytrack/liquidity:babylonnet)
18
- - docker cp $id:/home/opam/.opam/4.07/bin/liquidity - > $HOME/bin/liquidity
19
- - chmod +x $HOME/bin/liquidity
20
16
  - curl -s https://SmartPy.io/SmartPyBasic/SmartPy.sh > SmartPy.sh
21
17
  - chmod +x ./SmartPy.sh
22
18
  - ./SmartPy.sh local-install $HOME/bin/smartpy
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tezos_client (1.0.1)
4
+ tezos_client (1.1.1)
5
5
  active_interaction (~> 3.7)
6
6
  activesupport (~> 6.0.0)
7
7
  base58 (~> 0.2.3)
@@ -75,7 +75,7 @@ GEM
75
75
  ffi
76
76
  multi_xml (0.6.0)
77
77
  netrc (0.11.0)
78
- nokogiri (1.10.5)
78
+ nokogiri (1.10.8)
79
79
  mini_portile2 (~> 2.4.0)
80
80
  parallel (1.18.0)
81
81
  parser (2.6.5.0)
data/README.md CHANGED
@@ -120,11 +120,11 @@ client.transfer(
120
120
  ### Originate a contract written in liquidity
121
121
 
122
122
  ```ruby
123
- script = File.expand_path("./spec/fixtures/demo.liq")
123
+ script = File.expand_path("./spec/fixtures/demo.py")
124
124
  source = "tz1ZWiiPXowuhN1UqNGVTrgNyf5tdxp4XUUq"
125
125
  secret_key = "edsk4EcqupPmaebat5mP57ZQ3zo8NDkwv8vQmafdYZyeXxrSc72pjN"
126
126
  amount = 0
127
- init_params = '"test"'
127
+ init_params= "MyContract()"
128
128
  client = TezosClient.new
129
129
 
130
130
  res = client.originate_contract(
@@ -139,20 +139,6 @@ puts "Origination operation: #{res[:operation_id]}"
139
139
  puts "Contract address: #{res[:originated_contract]}"
140
140
  ```
141
141
 
142
- ### Call a contract written in liquidity
143
- ```ruby
144
- TezosClient.new.call_contract(
145
- from: "tz1ZWiiPXowuhN1UqNGVTrgNyf5tdxp4XUUq",
146
- amount: 0,
147
- script: File.expand_path("./spec/fixtures/demo.liq"),
148
- secret_key: "edsk4EcqupPmaebat5mP57ZQ3zo8NDkwv8vQmafdYZyeXxrSc72pjN",
149
- to: "KT1STzq9p2tfW3K4RdoM9iYd1htJ4QcJ8Njs",
150
- entrypoint: "manage",
151
- params: "(Some { destination = tz1YLtLqD1fWHthSVHPD116oYvsd4PTAHUoc; amount = 1tz })" ,
152
- params_type: :caml
153
- )
154
- ```
155
-
156
142
  ### Originate a contract written in SmartPy
157
143
 
158
144
  ```ruby
@@ -191,15 +177,6 @@ TezosClient.new.call_contract(
191
177
 
192
178
  ## Options
193
179
 
194
- ### Liquidity options
195
-
196
- `TezosClient.new(..., liquidity_options: { options... })`
197
-
198
- Available options :
199
-
200
- * verbose (boolean) : enable verbose mode of Liquidity commands.
201
-
202
-
203
180
  ## Development
204
181
 
205
182
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -23,9 +23,5 @@ class TezosClient
23
23
  :pack_data,
24
24
  :big_map_value,
25
25
  :list_big_map_by_contract
26
-
27
- def_delegators :liquidity_interface,
28
- :get_storage,
29
- :liquidity_pack_data
30
26
  end
31
27
  end
@@ -2,7 +2,6 @@
2
2
 
3
3
  class TezosClient
4
4
  class RpcRequestFailure < StandardError
5
-
6
5
  attr_reader :status_code
7
6
  attr_reader :error
8
7
 
@@ -21,9 +20,6 @@ class TezosClient
21
20
  class SysCallError < RuntimeError
22
21
  end
23
22
 
24
- class LiquidityError < SysCallError
25
- end
26
-
27
23
  class SmartPyError < SysCallError
28
24
  end
29
25
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "active_support/concern"
3
4
 
4
5
  class TezosClient
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "tezos_client/compute_operation_args_counters"
2
4
 
3
5
  class TezosClient
@@ -199,38 +201,37 @@ class TezosClient
199
201
  end
200
202
 
201
203
  private
204
+ def ensure_applied!(rpc_responses)
205
+ metadatas = rpc_responses.map { |response| response[:metadata] }
206
+ operation_results = metadatas.map { |metadata| metadata[:operation_result] }
202
207
 
203
- def ensure_applied!(rpc_responses)
204
- metadatas = rpc_responses.map { |response| response[:metadata] }
205
- operation_results = metadatas.map { |metadata| metadata[:operation_result] }
208
+ failed = operation_results.detect do |operation_result|
209
+ operation_result != nil && operation_result[:status] != "applied"
210
+ end
206
211
 
207
- failed = operation_results.detect do |operation_result|
208
- operation_result != nil && operation_result[:status] != "applied"
209
- end
212
+ return metadatas if failed.nil?
210
213
 
211
- return metadatas if failed.nil?
214
+ failed_operation_result = operation_results.detect do |operation_result|
215
+ operation_result[:status] == "failed"
216
+ end
212
217
 
213
- failed_operation_result = operation_results.detect do |operation_result|
214
- operation_result[:status] == "failed"
218
+ failed!("failed", failed_operation_result[:errors], operation_results)
215
219
  end
216
220
 
217
- failed!("failed", failed_operation_result[:errors], operation_results)
218
- end
219
-
220
- def exception_klass(errors)
221
- error = errors[0]
222
- case error[:id]
223
- when TezBalanceTooLow::FIRST_ERROR_REGEXP
224
- TezBalanceTooLow
225
- when ScriptRuntimeError::FIRST_ERROR_REGEXP
226
- ScriptRuntimeError
227
- else
228
- OperationFailure
221
+ def exception_klass(errors)
222
+ error = errors[0]
223
+ case error[:id]
224
+ when TezBalanceTooLow::FIRST_ERROR_REGEXP
225
+ TezBalanceTooLow
226
+ when ScriptRuntimeError::FIRST_ERROR_REGEXP
227
+ ScriptRuntimeError
228
+ else
229
+ OperationFailure
230
+ end
229
231
  end
230
- end
231
232
 
232
- def failed!(status, errors, metadata)
233
- raise exception_klass(errors).new(metadata: metadata, errors: errors, status: status)
234
- end
233
+ def failed!(status, errors, metadata)
234
+ raise exception_klass(errors).new(metadata: metadata, errors: errors, status: status)
235
+ end
235
236
  end
236
237
  end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  class ActivateAccountOperation < Operation
3
-
4
5
  def rpc_operation_args
5
6
  @rpc_operation_args ||= rpc_interface.activate_account_operation(
6
7
  operation_args
@@ -14,4 +15,4 @@ class TezosClient
14
15
  }
15
16
  end
16
17
  end
17
- end
18
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  class Operation
3
5
  delegate :run, :preapply, :test_and_broadcast, :broadcast, :simulate, :signed_hex, to: :operation_mgr
@@ -9,25 +11,24 @@ class TezosClient
9
11
  end
10
12
 
11
13
  protected
14
+ attr_reader :rpc_interface
12
15
 
13
- attr_reader :rpc_interface, :liquidity_interface
14
-
15
- def rpc_operation_args
16
- raise NotImplementedError, "#{__method__} is a virtual method"
17
- end
16
+ def rpc_operation_args
17
+ raise NotImplementedError, "#{__method__} is a virtual method"
18
+ end
18
19
 
19
- def post_initialize(*_args)
20
- end
20
+ def post_initialize(*_args)
21
+ end
21
22
 
22
- def operation_mgr
23
- @operation_mgr ||= OperationMgr.new(
24
- rpc_interface: rpc_interface,
25
- rpc_operation_args: rpc_operation_args,
26
- **operation_options)
27
- end
23
+ def operation_mgr
24
+ @operation_mgr ||= OperationMgr.new(
25
+ rpc_interface: rpc_interface,
26
+ rpc_operation_args: rpc_operation_args,
27
+ **operation_options)
28
+ end
28
29
 
29
- def operation_options
30
- @args.slice(:secret_key, :protocol, :branch, :ignore_counter_error)
31
- end
30
+ def operation_options
31
+ @args.slice(:secret_key, :protocol, :branch, :ignore_counter_error)
32
+ end
32
33
  end
33
34
  end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  class OperationArray < RawOperationArray
3
-
4
5
  def post_initialize(operations:, **args)
5
6
  @raw_operations = operations.map do |operation|
6
7
  operation_kind = operation.delete(:kind)
@@ -15,10 +16,8 @@ class TezosClient
15
16
  end
16
17
 
17
18
  private
18
-
19
-
20
- def operation_klass(operation_name)
21
- "tezos_client/#{operation_name}_operation".camelize.constantize
22
- end
19
+ def operation_klass(operation_name)
20
+ "tezos_client/#{operation_name}_operation".camelize.constantize
21
+ end
23
22
  end
24
- end
23
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  class OriginationOperation < Operation
3
5
  def rpc_operation_args
@@ -16,4 +18,4 @@ class TezosClient
16
18
  )
17
19
  end
18
20
  end
19
- end
21
+ end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  class RawOperationArray < Operation
3
-
4
5
  def post_initialize(raw_operations:, **args)
5
6
  @raw_operations = raw_operations.clone
6
7
  end
@@ -19,6 +20,6 @@ class TezosClient
19
20
  end
20
21
 
21
22
  private
22
- attr_reader :raw_operations
23
+ attr_reader :raw_operations
23
24
  end
24
- end
25
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  class RevealOperation < Operation
3
5
  def rpc_operation_args
@@ -6,4 +8,4 @@ class TezosClient
6
8
  )
7
9
  end
8
10
  end
9
- end
11
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  class TransactionOperation < Operation
3
5
  include EncodeUtils
@@ -11,36 +13,35 @@ class TezosClient
11
13
  end
12
14
 
13
15
  private
16
+ def operation_args
17
+ operation_args = @args.slice(
18
+ :amount,
19
+ :from,
20
+ :to,
21
+ :gas_limit,
22
+ :storage_limit,
23
+ :fee,
24
+ :counter
25
+ )
26
+ operation_args[:parameters] = parameters if has_parameters?
14
27
 
15
- def operation_args
16
- operation_args = @args.slice(
17
- :amount,
18
- :from,
19
- :to,
20
- :gas_limit,
21
- :storage_limit,
22
- :fee,
23
- :counter
24
- )
25
- operation_args[:parameters] = parameters if has_parameters?
26
-
27
- operation_args
28
- end
28
+ operation_args
29
+ end
29
30
 
30
- def has_parameters?
31
- @args.key? :parameters
32
- end
31
+ def has_parameters?
32
+ @args.key? :parameters
33
+ end
33
34
 
34
- def parameters
35
- parameters = @args[:parameters].clone
36
- if parameters.is_a? String
37
- {
38
- entrypoint: "default",
39
- value: encode_args(@args[:parameters])
40
- }
41
- else
42
- parameters
35
+ def parameters
36
+ parameters = @args[:parameters].clone
37
+ if parameters.is_a? String
38
+ {
39
+ entrypoint: "default",
40
+ value: encode_args(@args[:parameters])
41
+ }
42
+ else
43
+ parameters
44
+ end
43
45
  end
44
- end
45
46
  end
46
- end
47
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  class TransactionsOperation < Operation
3
5
  def rpc_operation_args
@@ -6,8 +8,7 @@ class TezosClient
6
8
  operations: operations,
7
9
  secret_key: @args.fetch(:secret_key),
8
10
  from: @args.fetch(:from),
9
- rpc_interface: rpc_interface,
10
- liquidity_interface: liquidity_interface
11
+ rpc_interface: rpc_interface
11
12
  ).rpc_operation_args
12
13
  end
13
14
  end
@@ -28,4 +29,4 @@ class TezosClient
28
29
  end
29
30
  end
30
31
  end
31
- end
32
+ end
@@ -32,8 +32,8 @@ class TezosClient
32
32
  get "#{contract_link(contract_id)}/storage"
33
33
  end
34
34
 
35
- def big_map_value(big_map_id:, key:, type_key:)
36
- expr_key = encode_script_expr(data: key, type: type_key)
35
+ def big_map_value(big_map_id:, key:, key_type:)
36
+ expr_key = encode_script_expr(data: key, type: key_type)
37
37
 
38
38
  get "/chains/main/blocks/head/context/big_maps/#{big_map_id}/#{expr_key}"
39
39
  end
@@ -12,7 +12,7 @@ class TezosClient
12
12
  formatted_response = format_response(response.parsed_response)
13
13
 
14
14
  log("-------")
15
- log(">>> GET #{response.request.uri.to_s} \n")
15
+ log(">>> GET #{response.request.uri} \n")
16
16
  log("<<< code: #{response.code} \n exec time: #{exec_time}\n #{tezos_contents_log(formatted_response)}")
17
17
  log("-------")
18
18
  unless response.success?
@@ -68,54 +68,53 @@ class TezosClient
68
68
  end
69
69
 
70
70
  private
71
+ def get_error_id(error)
72
+ error[:id]
73
+ rescue TypeError, NoMethodError
74
+ nil
75
+ end
71
76
 
72
- def get_error_id(error)
73
- error[:id]
74
- rescue TypeError, NoMethodError
75
- nil
76
- end
77
-
78
- def exception_klass(error)
79
- case get_error_id(error)
80
- when /proto\.[^.]*\.operation\.invalid_activation/
81
- TezosClient::InvalidActivation
82
- when /proto\.[^.]*\.contract\.previously_revealed_key/
83
- TezosClient::PreviouslyRevealedKey
84
- else
85
- TezosClient::RpcRequestFailure
77
+ def exception_klass(error)
78
+ case get_error_id(error)
79
+ when /proto\.[^.]*\.operation\.invalid_activation/
80
+ TezosClient::InvalidActivation
81
+ when /proto\.[^.]*\.contract\.previously_revealed_key/
82
+ TezosClient::PreviouslyRevealedKey
83
+ else
84
+ TezosClient::RpcRequestFailure
85
+ end
86
86
  end
87
- end
88
87
 
89
- def failed!(url:, code:, responses:)
90
- error = responses.is_a?(Array) ? responses[0] : responses
91
- raise exception_klass(error).new(
92
- error: error,
93
- url: url,
94
- status_code: code
95
- )
96
- end
88
+ def failed!(url:, code:, responses:)
89
+ error = responses.is_a?(Array) ? responses[0] : responses
90
+ raise exception_klass(error).new(
91
+ error: error,
92
+ url: url,
93
+ status_code: code
94
+ )
95
+ end
97
96
 
98
- def monitor_event_reader(uuid, event_handler)
99
- proc do |event_response|
100
- event_response.read_body do |event_json|
101
- event = format_response(JSON.parse(event_json))
102
- log("Monitor #{uuid}: received chunk #{event.pretty_inspect}")
103
- event_handler.call(event)
97
+ def monitor_event_reader(uuid, event_handler)
98
+ proc do |event_response|
99
+ event_response.read_body do |event_json|
100
+ event = format_response(JSON.parse(event_json))
101
+ log("Monitor #{uuid}: received chunk #{event.pretty_inspect}")
102
+ event_handler.call(event)
103
+ end
104
104
  end
105
105
  end
106
- end
107
106
 
108
- def format_response(response)
109
- if response.is_a? Array
110
- response.map do |el|
111
- (el.is_a? Hash) ? el.with_indifferent_access : el
107
+ def format_response(response)
108
+ if response.is_a? Array
109
+ response.map do |el|
110
+ (el.is_a? Hash) ? el.with_indifferent_access : el
111
+ end
112
+ elsif response.is_a? Hash
113
+ response.with_indifferent_access
114
+ else
115
+ response
112
116
  end
113
- elsif response.is_a? Hash
114
- response.with_indifferent_access
115
- else
116
- response
117
117
  end
118
- end
119
118
  end
120
119
  end
121
- end
120
+ end
@@ -14,4 +14,4 @@ class TezosClient
14
14
  end
15
15
  end
16
16
  end
17
- end
17
+ end
@@ -30,17 +30,16 @@ class TezosClient
30
30
  end
31
31
 
32
32
  private
33
-
34
- def compile_to_michelson(args)
35
- Tools::TemporaryFile.with_file_copy(args[:script]) do |script_copy_path|
36
- script_basename = script_copy_path.split("/").last.sub(/.py$/, "")
37
- script_path = "/tmp/#{script_basename}/"
38
- init_script_filename = "contractStorage.tz"
39
- contract_script_filename = "contractCode.tz.json"
40
- call_smartpy ["local-compile", script_copy_path, args[:init_params], script_path]
41
-
42
- yield(script_path + contract_script_filename, script_path + init_script_filename)
33
+ def compile_to_michelson(args)
34
+ Tools::TemporaryFile.with_file_copy(args[:script]) do |script_copy_path|
35
+ script_basename = script_copy_path.split("/").last.sub(/.py$/, "")
36
+ script_path = "/tmp/#{script_basename}/"
37
+ init_script_filename = "contractStorage.tz"
38
+ contract_script_filename = "contractCode.tz.json"
39
+ call_smartpy ["local-compile", script_copy_path, args[:init_params], script_path]
40
+
41
+ yield(script_path + contract_script_filename, script_path + init_script_filename)
42
+ end
43
43
  end
44
- end
45
44
  end
46
45
  end
@@ -5,7 +5,6 @@ class TezosClient::Tools::ConvertToHash < ActiveInteraction::Base
5
5
  interface :type
6
6
 
7
7
  def execute
8
-
9
8
  case type[:prim]
10
9
  when "pair"
11
10
  pair_type(data: data, type: type)
@@ -29,61 +28,60 @@ class TezosClient::Tools::ConvertToHash < ActiveInteraction::Base
29
28
  end
30
29
 
31
30
  private
31
+ def pair_type(data:, type:)
32
+ raise "Not a 'Pair' type" unless data[:prim] == "Pair"
33
+ raise "Difference detected between data and type \nDATA: #{data} \nTYPE:#{type} " unless data[:args].size == type[:args].size
34
+
35
+ result = {}
36
+ data[:args].size.times do |iter|
37
+ result.merge!(
38
+ compose(
39
+ TezosClient::Tools::ConvertToHash,
40
+ data: data[:args][iter],
41
+ type: type[:args][iter]
42
+ )
43
+ )
44
+ end
45
+ result
46
+ end
32
47
 
33
- def pair_type(data:, type:)
34
- raise "Not a 'Pair' type" unless data[:prim] == "Pair"
35
- raise "Difference detected between data and type \nDATA: #{data} \nTYPE:#{type} " unless data[:args].size == type[:args].size
48
+ def list_type(data:, type:)
49
+ {
50
+ var_name(type) => convert_list_element(data: data, element_type: type[:args].first)
51
+ }
52
+ end
36
53
 
37
- result = {}
38
- data[:args].size.times do |iter|
39
- result.merge!(
54
+ def convert_list_element(data:, element_type:)
55
+ data.map do |elem|
40
56
  compose(
41
57
  TezosClient::Tools::ConvertToHash,
42
- data: data[:args][iter],
43
- type: type[:args][iter]
58
+ data: elem,
59
+ type: element_type
44
60
  )
45
- )
61
+ end
46
62
  end
47
- result
48
- end
49
63
 
50
- def list_type(data:, type:)
51
- {
52
- var_name(type) => convert_list_element(data: data, element_type: type[:args].first)
53
- }
54
- end
55
-
56
- def convert_list_element(data:, element_type:)
57
- data.map do |elem|
58
- compose(
59
- TezosClient::Tools::ConvertToHash,
60
- data: elem,
61
- type: element_type
62
- )
64
+ def int_type(data:, type:)
65
+ { var_name(type) => data[:int].to_i }
63
66
  end
64
- end
65
-
66
- def int_type(data:, type:)
67
- { var_name(type) => data[:int].to_i }
68
- end
69
67
 
70
- def key_type(data:, type:)
71
- { var_name(type) => data[:bytes] || data[:string] }
72
- end
68
+ def key_type(data:, type:)
69
+ { var_name(type) => data[:bytes] || data[:string] }
70
+ end
73
71
 
74
- def timestamp_type(data:, type:)
75
- { var_name(type) => Time.zone.at(data[:int].to_i) }
76
- end
72
+ def timestamp_type(data:, type:)
73
+ { var_name(type) => Time.zone.at(data[:int].to_i) }
74
+ end
77
75
 
78
- def string_type(data:, type:)
79
- { var_name(type) => data[:string] }
80
- end
76
+ def string_type(data:, type:)
77
+ { var_name(type) => data[:string] }
78
+ end
81
79
 
82
- def address_type(data:, type:)
83
- { var_name(type) => data[:bytes] || data[:string] }
84
- end
80
+ def address_type(data:, type:)
81
+ { var_name(type) => data[:bytes] || data[:string] }
82
+ end
85
83
 
86
- def var_name(type)
87
- "#{type[:annots].first[1..-1]}".to_sym
88
- end
84
+ def var_name(type)
85
+ "#{type[:annots].first[1..-1]}".to_sym
86
+ end
89
87
  end
@@ -45,12 +45,12 @@ class TezosClient::Tools::FindBigMapsInStorage < ActiveInteraction::Base
45
45
  {
46
46
  name: var_name(type),
47
47
  id: data[:int],
48
- type_value: type[:args].second,
49
- type_key: type[:args].first
48
+ value_type: type[:args].second,
49
+ key_type: type[:args].first
50
50
  }.with_indifferent_access
51
51
  end
52
52
 
53
53
  def var_name(type)
54
54
  "#{type[:annots].first[1..-1]}".to_sym
55
55
  end
56
- end
56
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  module Tools
3
5
  module SystemCall
@@ -21,4 +23,4 @@ class TezosClient
21
23
  end
22
24
  end
23
25
  end
24
- end
26
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class TezosClient
2
4
  module Tools
3
5
  module TemporaryFile
@@ -16,7 +18,7 @@ class TezosClient
16
18
 
17
19
  res
18
20
  ensure
19
- File.delete(file_copy_path) if File.exists? file_copy_path
21
+ File.delete(file_copy_path) if File.exist? file_copy_path
20
22
  end
21
23
 
22
24
  def self.with_tempfile(extension)
@@ -27,4 +29,4 @@ class TezosClient
27
29
  end
28
30
  end
29
31
  end
30
- end
32
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class TezosClient
4
- VERSION = "1.0.1"
4
+ VERSION = "1.1.1"
5
5
  end
data/lib/tezos_client.rb CHANGED
@@ -32,7 +32,6 @@ require "tezos_client/tools/system_call"
32
32
  require "tezos_client/tools/temporary_file"
33
33
 
34
34
  require "tezos_client/rpc_interface"
35
- require "tezos_client/liquidity_interface"
36
35
  require "tezos_client/smartpy_interface"
37
36
 
38
37
  require "tezos_client/tools/convert_to_hash"
@@ -48,7 +47,6 @@ class TezosClient
48
47
  include Crypto
49
48
 
50
49
  attr_accessor :rpc_interface
51
- attr_accessor :liquidity_interface
52
50
  attr_accessor :smartpy_interface
53
51
 
54
52
  RANDOM_SIGNATURE = "edsigu165B7VFf3Dpw2QABVzEtCxJY2gsNBNcE3Ti7rRxtDUjqTFRpg67EdAQmY6YWPE5tKJDMnSTJDFu65gic8uLjbW2YwGvAZ"
@@ -56,7 +54,6 @@ class TezosClient
56
54
  def initialize(rpc_node_address: "127.0.0.1", rpc_node_port: 8732, liquidity_options: {})
57
55
  @rpc_node_address = rpc_node_address
58
56
  @rpc_node_port = rpc_node_port
59
- @liquidity_options = liquidity_options
60
57
 
61
58
  @client_config_file = ENV["TEZOS_CLIENT_CONFIG_FILE"]
62
59
 
@@ -66,12 +63,6 @@ class TezosClient
66
63
  )
67
64
 
68
65
  @smartpy_interface = SmartpyInterface.new
69
-
70
- @liquidity_interface = LiquidityInterface.new(
71
- rpc_node_address: @rpc_node_address,
72
- rpc_node_port: @rpc_node_port,
73
- options: @liquidity_options
74
- )
75
66
  end
76
67
 
77
68
  # Originates a contract on the tezos blockchain
@@ -161,7 +152,6 @@ class TezosClient
161
152
  from = public_key_to_address(public_key)
162
153
 
163
154
  operation = RevealOperation.new(
164
- liquidity_interface: liquidity_interface,
165
155
  rpc_interface: rpc_interface,
166
156
  public_key: public_key,
167
157
  from: from,
@@ -172,11 +162,10 @@ class TezosClient
172
162
  broadcast_operation(operation: operation, dry_run: dry_run)
173
163
  end
174
164
 
175
- def call_contract(dry_run: false, entrypoint:, params:, script: nil, params_type:, **args)
165
+ def call_contract(dry_run: false, entrypoint:, params:, params_type:, **args)
176
166
  json_params = micheline_params(
177
167
  params: params,
178
168
  entrypoint: entrypoint,
179
- script: script,
180
169
  params_type: params_type
181
170
  )
182
171
 
@@ -194,7 +183,6 @@ class TezosClient
194
183
  from = public_key_to_address(public_key)
195
184
 
196
185
  operation = RawOperationArray.new(
197
- liquidity_interface: liquidity_interface,
198
186
  rpc_interface: rpc_interface,
199
187
  public_key: public_key,
200
188
  from: from,
@@ -257,63 +245,46 @@ class TezosClient
257
245
  end
258
246
 
259
247
  private
248
+ def broadcast_operation(operation:, dry_run:)
249
+ res = if dry_run
250
+ operation.simulate
251
+ else
252
+ operation.test_and_broadcast
253
+ end
260
254
 
261
- def broadcast_operation(operation:, dry_run:)
262
- res = if dry_run
263
- operation.simulate
264
- else
265
- operation.test_and_broadcast
255
+ res.merge(
256
+ rpc_operation_args: operation.rpc_operation_args
257
+ )
266
258
  end
267
259
 
268
- res.merge(
269
- rpc_operation_args: operation.rpc_operation_args
270
- )
271
- end
272
-
273
- def liquidity_contract? filename
274
- filename&.to_s&.end_with?(".liq")
275
- end
276
-
277
- def micheline_params(params:, entrypoint:, script: nil, params_type:)
278
- {
279
- entrypoint: entrypoint,
280
- value: convert_params(
281
- params: params,
260
+ def micheline_params(params:, entrypoint:, params_type:)
261
+ {
282
262
  entrypoint: entrypoint,
283
- script: script,
284
- params_type: params_type
285
- )
286
- }
287
- end
288
-
289
- def convert_params(params:, entrypoint:, script: nil, params_type:)
290
- case params_type.to_sym
291
- when :micheline
292
- params
293
- when :caml
294
- raise ::ArgumentError, "need liquidity script path with camel type" if script.nil?
263
+ value: convert_params(
264
+ params: params,
265
+ params_type: params_type
266
+ )
267
+ }
268
+ end
295
269
 
296
- liquidity_interface.call_parameters(
297
- script: script,
298
- entrypoint: entrypoint,
299
- parameters: params
300
- )
301
- else
302
- raise ::ArgumentError, "params type must be equal to [ :micheline, :caml ]"
270
+ def convert_params(params:, params_type:)
271
+ case params_type.to_sym
272
+ when :micheline
273
+ params
274
+ else
275
+ raise ::ArgumentError, "params type must be equal to [ :micheline ]"
276
+ end
303
277
  end
304
- end
305
278
 
306
279
 
307
- def contract_interface(script)
308
- case script.to_s
309
- when /[A-Za-z_\/\-]*.liq/
310
- liquidity_interface
311
- when /[A-Za-z_\/\-]*.py/
312
- smartpy_interface
313
- when nil
314
- raise "script var unset"
315
- else
316
- raise "unknown contract type"
280
+ def contract_interface(script)
281
+ case script.to_s
282
+ when /[A-Za-z_\/\-]*.py/
283
+ smartpy_interface
284
+ when nil
285
+ raise "script var unset"
286
+ else
287
+ raise "unknown contract type"
288
+ end
317
289
  end
318
- end
319
290
  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: 1.0.1
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre Michard
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-12 00:00:00.000000000 Z
11
+ date: 2020-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -252,8 +252,6 @@ files:
252
252
  - lib/tezos_client/currency_utils.rb
253
253
  - lib/tezos_client/encode_utils.rb
254
254
  - lib/tezos_client/exceptions.rb
255
- - lib/tezos_client/liquidity_inteface/liquidity_wrapper.rb
256
- - lib/tezos_client/liquidity_interface.rb
257
255
  - lib/tezos_client/logger.rb
258
256
  - lib/tezos_client/operation_mgr.rb
259
257
  - lib/tezos_client/operations/activate_account_operation.rb
@@ -303,7 +301,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
303
301
  - !ruby/object:Gem::Version
304
302
  version: '0'
305
303
  requirements: []
306
- rubygems_version: 3.0.6
304
+ rubyforge_project:
305
+ rubygems_version: 2.7.6
307
306
  signing_key:
308
307
  specification_version: 4
309
308
  summary: Wrapper to the tezos client.
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class TezosClient
4
- class LiquidityInterface
5
- # Wrapper used to call the tezos-client binary
6
- module LiquidityWrapper
7
- def call_liquidity(command, verbose: false)
8
- cmd = liquidity_cmd(verbose: verbose).concat command
9
-
10
- Tools::SystemCall.execute(cmd)
11
- rescue SysCallError => e
12
- raise LiquidityError, e.message
13
- end
14
-
15
- def liquidity_cmd(verbose:)
16
- liquidity_request = ["liquidity"]
17
- liquidity_request << "--verbose" if verbose
18
- liquidity_request << "--tezos-node"
19
- liquidity_request << tezos_node.to_s
20
- liquidity_request
21
- end
22
- end
23
- end
24
- end
@@ -1,120 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "liquidity_inteface/liquidity_wrapper"
4
-
5
- class TezosClient
6
- class LiquidityInterface
7
- include Logger
8
- include LiquidityWrapper
9
-
10
- attr_reader :options
11
-
12
- def initialize(rpc_node_address: "127.0.0.1", rpc_node_port: 8732, options: {})
13
- @rpc_node_address = rpc_node_address
14
- @rpc_node_port = rpc_node_port
15
- @options = options
16
- end
17
-
18
- def format_params(params)
19
- return [] if params.nil?
20
- return [params] if params.is_a? String
21
-
22
- params.map(&:to_s)
23
- end
24
-
25
- def initial_storage(args)
26
- from = args.fetch :from
27
- script = args.fetch :script
28
- init_params = args.fetch :init_params
29
- init_params = format_params(init_params)
30
-
31
- Tools::TemporaryFile.with_tempfile(".json") do |json_file|
32
- cmd_opt = ["--source", from.to_s,"--json", script.to_s, "-o", json_file.path.to_s, "--init-storage"] + init_params
33
-
34
- call_liquidity cmd_opt, verbose: options[:verbose]
35
- JSON.parse json_file.read.strip
36
- end
37
- end
38
-
39
- def json_scripts(script:)
40
- Tools::TemporaryFile.with_file_copy(script) do |script_copy_path|
41
- script_basename = script_copy_path.sub(/.liq$/, "")
42
-
43
- json_init_script_path = "#{script_basename}.initializer.tz.json"
44
- json_contract_script_path = "#{script_basename}.tz.json"
45
-
46
- call_liquidity ["--json", "#{script_copy_path}"]
47
-
48
- json_contract_script_file = File.open(json_contract_script_path)
49
- json_contract_script = JSON.parse(json_contract_script_file.read)
50
- json_contract_script_file.close
51
-
52
- if File.exists? json_init_script_path
53
- json_init_script_file = File.open(json_init_script_path)
54
- json_init_script = JSON.parse(json_init_script_file.read)
55
- json_init_script_file.close
56
- end
57
-
58
- if block_given?
59
- yield(json_init_script, json_contract_script)
60
- else
61
- return json_init_script, json_contract_script
62
- end
63
-
64
- ensure
65
- [json_init_script_path, json_contract_script_path].each do |file_path|
66
- File.delete file_path if File.exists? file_path
67
- end
68
- end
69
- end
70
-
71
- def origination_script(args)
72
- storage = initial_storage(args)
73
- _json_init_script, json_contract_script = json_scripts(script: args[:script])
74
-
75
- {
76
- code: json_contract_script,
77
- storage: storage
78
- }
79
- end
80
-
81
- def forge_deploy(args)
82
- amount = args.fetch(:amount, 0)
83
- spendable = args.fetch(:spendable, false)
84
- delegatable = args.fetch(:delegatable, false)
85
- source = args.fetch :from
86
- script = args.fetch :script
87
- init_params = args.fetch :init_params
88
-
89
- cmd_opt = ["--source", "#{source}"]
90
- cmd_opt << "--spendable" if spendable
91
- cmd_opt << "--delegatable" if delegatable
92
- cmd_opt += ["--amount", "#{amount}tz", "#{script}", "--forge-deploy", init_params]
93
- res = call_liquidity cmd_opt
94
- res.strip
95
- end
96
-
97
- def tezos_node
98
- "#{@rpc_node_address}:#{@rpc_node_port}"
99
- end
100
-
101
- def get_storage(script:, contract_address:)
102
- res = call_liquidity ["#{script}", "--get-storage", "#{contract_address}"]
103
- res.strip
104
- end
105
-
106
- def call_parameters(script:, entrypoint:, parameters:)
107
- params = format_params parameters
108
- Tools::TemporaryFile.with_tempfile(".json") do |json_file|
109
- params = [ entrypoint ] + params
110
- res = call_liquidity ["--json", "-o", "#{json_file.path}", "#{script}", "--data"] + params
111
- JSON.parse res
112
- end
113
- end
114
-
115
- def liquidity_pack_data(data:, type:)
116
- res = call_liquidity ["--pack", "#{data}", "#{type}"]
117
- res.strip
118
- end
119
- end
120
- end