ton_sdk_client 1.20.0 → 1.24.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +2 -2
- data/lib/ton_sdk_client/abi.rb +201 -69
- data/lib/ton_sdk_client/boc.rb +200 -50
- data/lib/ton_sdk_client/client.rb +12 -15
- data/lib/ton_sdk_client/client_context.rb +2 -1
- data/lib/ton_sdk_client/config.rb +7 -9
- data/lib/ton_sdk_client/crypto.rb +174 -184
- data/lib/ton_sdk_client/debot.rb +13 -14
- data/lib/ton_sdk_client/interop.rb +2 -2
- data/lib/ton_sdk_client/kw_struct.rb +7 -0
- data/lib/ton_sdk_client/net.rb +44 -46
- data/lib/ton_sdk_client/processing.rb +7 -7
- data/lib/ton_sdk_client/tvm.rb +10 -12
- data/lib/ton_sdk_client/types.rb +2 -1
- data/lib/ton_sdk_client/utils.rb +18 -18
- data/lib/ton_sdk_client/version.rb +2 -2
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7aa3942dcf8295136874ebced4c8e69b0bd5d5bf15537aa401a3fd362bc84adc
|
4
|
+
data.tar.gz: 592b046b0cb812b15573fcec3e63eb12c2006611a7a094e4194e3cb0290c5841
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '023446187045b70c7d1afb984c58bf12ec550a631c1b1fa2ec44d2ad10661fce5e8aaa20bfb0d4d04a3b910d075663a543e98b680dbca65f921ed4b25263dff5'
|
7
|
+
data.tar.gz: 2debab81288b9ebbf77af113c7483420f6420ca4de721d317ce486b3b2e439f73008a918c5b89a8119904312fe3778f62f6f6f97e47e995ab271d894b6050237
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
all the changes are always according to the ones of the main TON SDK library; and on top on that, there may be additional ones
|
4
4
|
|
5
|
+
1.24.0
|
6
|
+
-----
|
7
|
+
* Binaries updated to `1.24.0`;
|
8
|
+
* Changes `1.24.0` (https://github.com/tonlabs/TON-SDK/blob/master/CHANGELOG.md#1240--2021-10-18);
|
9
|
+
* **BREAKING CHANGE** All Params now require keyword arguments
|
10
|
+
|
5
11
|
1.20.x
|
6
12
|
-----
|
7
13
|
* NetworkConfig and AbiContract have been changed (not mentioned explicitly in Changelog of TON SDK )
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# TON SDK client in Ruby and for Ruby
|
2
2
|
|
3
|
-
[![Gem Version](https://badge.fury.io/rb/ton_sdk_client.
|
4
|
-
[![TON SDK version](https://img.shields.io/badge/TON%20SDK%20version-1.
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/ton_sdk_client.svg)](https://rubygems.org/gems/ton_sdk_client)
|
4
|
+
[![TON SDK version](https://img.shields.io/badge/TON%20SDK%20version-1.24.0-green)](https://github.com/tonlabs/TON-SDK/tree/1.24.0)
|
5
5
|
|
6
6
|
Ruby gem-client bindings for [TON SDK](https://github.com/tonlabs/TON-SDK) which allows one to communicate with [FreeTON](https://freeton.org) blockchain in Ruby.
|
7
7
|
|
data/lib/ton_sdk_client/abi.rb
CHANGED
@@ -39,15 +39,23 @@ module TonSdk
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
FunctionHeader =
|
42
|
+
FunctionHeader = KwStruct.new(:expire, :time, :pubkey)
|
43
43
|
|
44
|
-
CallSet =
|
44
|
+
CallSet = KwStruct.new(:function_name, :header, :input) do
|
45
45
|
def initialize(function_name:, header: nil, input: nil)
|
46
46
|
super
|
47
47
|
end
|
48
|
+
|
49
|
+
def to_h
|
50
|
+
{
|
51
|
+
function_name: function_name,
|
52
|
+
header: header.to_h,
|
53
|
+
input: input
|
54
|
+
}
|
55
|
+
end
|
48
56
|
end
|
49
57
|
|
50
|
-
DeploySet =
|
58
|
+
DeploySet = KwStruct.new(:tvc, :workchain_id, :initial_data, :initial_pubkey) do
|
51
59
|
def initialize(tvc:, workchain_id: nil, initial_data: nil, initial_pubkey: nil)
|
52
60
|
super
|
53
61
|
end
|
@@ -95,19 +103,19 @@ module TonSdk
|
|
95
103
|
end
|
96
104
|
|
97
105
|
STATIC_INIT_SOURCE_TYPES = [:message, :state_init, :tvc]
|
98
|
-
|
99
|
-
|
106
|
+
# TODO: Refactor with subclasses?
|
107
|
+
StateInitSource = KwStruct.new(
|
108
|
+
:type,
|
100
109
|
:source,
|
101
110
|
:code,
|
102
111
|
:data,
|
103
112
|
:library,
|
104
113
|
:tvc,
|
105
114
|
:public_key,
|
106
|
-
:init_params
|
107
|
-
keyword_init: true
|
115
|
+
:init_params
|
108
116
|
) do
|
109
117
|
def initialize(
|
110
|
-
|
118
|
+
type:,
|
111
119
|
source: nil,
|
112
120
|
code: nil,
|
113
121
|
data: nil,
|
@@ -116,42 +124,42 @@ module TonSdk
|
|
116
124
|
public_key: nil,
|
117
125
|
init_params: nil
|
118
126
|
)
|
119
|
-
unless STATIC_INIT_SOURCE_TYPES.include?(
|
120
|
-
raise ArgumentError.new("unknown type: #{
|
127
|
+
unless STATIC_INIT_SOURCE_TYPES.include?(type)
|
128
|
+
raise ArgumentError.new("unknown type: #{type}; known types: #{STATIC_INIT_SOURCE_TYPES}")
|
121
129
|
end
|
122
130
|
super
|
123
131
|
end
|
124
132
|
|
125
133
|
def to_h
|
126
134
|
h1 = {
|
127
|
-
type: Helper.sym_to_capitalized_case_str(
|
135
|
+
type: Helper.sym_to_capitalized_case_str(type)
|
128
136
|
}
|
129
137
|
|
130
|
-
h2 = case
|
138
|
+
h2 = case type
|
131
139
|
when :message
|
132
140
|
{
|
133
|
-
source:
|
141
|
+
source: source.to_h
|
134
142
|
}
|
135
143
|
when :state_init
|
136
144
|
{
|
137
|
-
code:
|
138
|
-
data:
|
139
|
-
library:
|
145
|
+
code: code,
|
146
|
+
data: data,
|
147
|
+
library: library
|
140
148
|
}
|
141
149
|
when :tvc
|
142
150
|
{
|
143
|
-
public_key:
|
144
|
-
init_params:
|
151
|
+
public_key: public_key,
|
152
|
+
init_params: init_params.to_h
|
145
153
|
}
|
146
154
|
else
|
147
|
-
raise ArgumentError.new("unknown type: #{
|
155
|
+
raise ArgumentError.new("unknown type: #{type}; known types: #{STATIC_INIT_SOURCE_TYPES}")
|
148
156
|
end
|
149
157
|
|
150
158
|
h1.merge(h2)
|
151
159
|
end
|
152
160
|
end
|
153
161
|
|
154
|
-
StateInitParams =
|
162
|
+
StateInitParams = KwStruct.new(:abi, :value) do
|
155
163
|
def initialize(abi:, value:)
|
156
164
|
super
|
157
165
|
end
|
@@ -159,19 +167,18 @@ module TonSdk
|
|
159
167
|
|
160
168
|
|
161
169
|
MESSAGE_SOURCE_TYPES = [:encoded, :encoding_params]
|
162
|
-
MessageSource =
|
163
|
-
:
|
170
|
+
MessageSource = KwStruct.new(
|
171
|
+
:type,
|
164
172
|
:message,
|
165
173
|
:abi,
|
166
174
|
:address,
|
167
175
|
:deploy_set,
|
168
176
|
:call_set,
|
169
177
|
:signer,
|
170
|
-
:processing_try_index
|
171
|
-
keyword_init: true
|
178
|
+
:processing_try_index
|
172
179
|
) do
|
173
180
|
def initialize(
|
174
|
-
|
181
|
+
type:,
|
175
182
|
message: nil,
|
176
183
|
abi: nil,
|
177
184
|
address: nil,
|
@@ -180,8 +187,8 @@ module TonSdk
|
|
180
187
|
signer: nil,
|
181
188
|
processing_try_index: 0
|
182
189
|
)
|
183
|
-
unless MESSAGE_SOURCE_TYPES.include?(
|
184
|
-
raise ArgumentError.new("unknown type: #{
|
190
|
+
unless MESSAGE_SOURCE_TYPES.include?(type)
|
191
|
+
raise ArgumentError.new("unknown type: #{type}; known types: #{MESSAGE_SOURCE_TYPES}")
|
185
192
|
end
|
186
193
|
|
187
194
|
super
|
@@ -189,23 +196,23 @@ module TonSdk
|
|
189
196
|
|
190
197
|
def to_h
|
191
198
|
h1 = {
|
192
|
-
type: Helper.sym_to_capitalized_case_str(
|
199
|
+
type: Helper.sym_to_capitalized_case_str(type)
|
193
200
|
}
|
194
201
|
|
195
|
-
h2 = case
|
202
|
+
h2 = case type
|
196
203
|
when :encoded
|
197
204
|
{
|
198
|
-
message:
|
199
|
-
abi:
|
205
|
+
message: message,
|
206
|
+
abi: abi&.to_h
|
200
207
|
}
|
201
208
|
when :encoding_params
|
202
209
|
{
|
203
|
-
abi:
|
204
|
-
address:
|
205
|
-
deploy_set:
|
206
|
-
call_set:
|
207
|
-
signer:
|
208
|
-
processing_try_index:
|
210
|
+
abi: abi.to_h,
|
211
|
+
address: address,
|
212
|
+
deploy_set: deploy_set&.to_h,
|
213
|
+
call_set: call_set&.to_h,
|
214
|
+
signer: signer&.to_h,
|
215
|
+
processing_try_index: processing_try_index
|
209
216
|
}
|
210
217
|
end
|
211
218
|
|
@@ -213,34 +220,50 @@ module TonSdk
|
|
213
220
|
end
|
214
221
|
end
|
215
222
|
|
216
|
-
ParamsOfEncodeMessageBody =
|
217
|
-
|
218
|
-
|
223
|
+
ParamsOfEncodeMessageBody = KwStruct.new(
|
224
|
+
:abi,
|
225
|
+
:call_set,
|
226
|
+
:is_internal,
|
227
|
+
:signer,
|
228
|
+
:processing_try_index
|
229
|
+
) do
|
230
|
+
def to_h
|
231
|
+
{
|
232
|
+
abi: abi.to_h,
|
233
|
+
call_set: call_set.to_h,
|
234
|
+
is_internal: is_internal,
|
235
|
+
signer: signer.to_h,
|
236
|
+
processing_try_index: processing_try_index
|
237
|
+
}
|
219
238
|
end
|
220
239
|
end
|
221
240
|
|
222
|
-
ResultOfEncodeMessageBody =
|
241
|
+
ResultOfEncodeMessageBody = KwStruct.new(:body, :data_to_sign) do
|
223
242
|
def initialize(body:, data_to_sign: nil)
|
224
243
|
super
|
225
244
|
end
|
226
245
|
end
|
227
246
|
|
228
|
-
ParamsOfAttachSignatureToMessageBody =
|
229
|
-
def
|
230
|
-
|
247
|
+
ParamsOfAttachSignatureToMessageBody = KwStruct.new(:abi, :public_key, :message, :signature) do
|
248
|
+
def to_h
|
249
|
+
{
|
250
|
+
abi: abi.to_h,
|
251
|
+
public_key: public_key,
|
252
|
+
message: message,
|
253
|
+
signature: signature
|
254
|
+
}
|
231
255
|
end
|
232
256
|
end
|
233
257
|
|
234
|
-
ResultOfAttachSignatureToMessageBody =
|
258
|
+
ResultOfAttachSignatureToMessageBody = KwStruct.new(:body)
|
235
259
|
|
236
|
-
ParamsOfEncodeMessage =
|
260
|
+
ParamsOfEncodeMessage = KwStruct.new(
|
237
261
|
:abi,
|
238
262
|
:address,
|
239
263
|
:deploy_set,
|
240
264
|
:call_set,
|
241
265
|
:signer,
|
242
|
-
:processing_try_index
|
243
|
-
keyword_init: true
|
266
|
+
:processing_try_index
|
244
267
|
) do
|
245
268
|
def initialize(
|
246
269
|
abi:,
|
@@ -252,30 +275,57 @@ module TonSdk
|
|
252
275
|
)
|
253
276
|
super
|
254
277
|
end
|
278
|
+
|
279
|
+
def to_h
|
280
|
+
{
|
281
|
+
abi: abi.to_h,
|
282
|
+
address: address,
|
283
|
+
deploy_set: deploy_set&.to_h,
|
284
|
+
call_set: call_set&.to_h,
|
285
|
+
signer: signer.to_h,
|
286
|
+
processing_try_index: processing_try_index
|
287
|
+
}
|
288
|
+
end
|
255
289
|
end
|
256
290
|
|
257
|
-
ResultOfEncodeMessage =
|
291
|
+
ResultOfEncodeMessage = KwStruct.new(:message, :data_to_sign, :address, :message_id) do
|
258
292
|
def initialize(message:, data_to_sign: nil, address:, message_id:)
|
259
293
|
super
|
260
294
|
end
|
261
295
|
end
|
262
296
|
|
263
|
-
ParamsOfAttachSignature =
|
297
|
+
ParamsOfAttachSignature = KwStruct.new(:abi, :public_key, :message, :signature) do
|
264
298
|
def initialize(abi:, public_key:, message:, signature:)
|
265
299
|
super
|
266
300
|
end
|
301
|
+
|
302
|
+
def to_h
|
303
|
+
{
|
304
|
+
abi: abi&.to_h,
|
305
|
+
public_key: public_key,
|
306
|
+
message: message,
|
307
|
+
signature: signature
|
308
|
+
}
|
309
|
+
end
|
267
310
|
end
|
268
311
|
|
269
|
-
ResultOfAttachSignature =
|
312
|
+
ResultOfAttachSignature = KwStruct.new(:message, :message_id) do
|
270
313
|
def initialize(message:, message_id:)
|
271
314
|
super
|
272
315
|
end
|
273
316
|
end
|
274
317
|
|
275
|
-
ParamsOfDecodeMessage =
|
318
|
+
ParamsOfDecodeMessage = KwStruct.new(:abi, :message) do
|
276
319
|
def initialize(abi:, message:)
|
277
320
|
super
|
278
321
|
end
|
322
|
+
|
323
|
+
def to_h
|
324
|
+
{
|
325
|
+
abi: abi&.to_h,
|
326
|
+
message: message
|
327
|
+
}
|
328
|
+
end
|
279
329
|
end
|
280
330
|
|
281
331
|
class DecodedMessageBody
|
@@ -341,19 +391,39 @@ module TonSdk
|
|
341
391
|
end
|
342
392
|
end
|
343
393
|
|
344
|
-
ParamsOfDecodeMessageBody =
|
394
|
+
ParamsOfDecodeMessageBody = KwStruct.new(:abi, :body, :is_internal) do
|
345
395
|
def initialize(abi:, body:, is_internal:)
|
346
396
|
super
|
347
397
|
end
|
398
|
+
|
399
|
+
def to_h
|
400
|
+
{
|
401
|
+
abi: abi&.to_h,
|
402
|
+
body: body,
|
403
|
+
is_internal: is_internal
|
404
|
+
}
|
405
|
+
end
|
348
406
|
end
|
349
407
|
|
350
|
-
ParamsOfEncodeAccount =
|
351
|
-
|
352
|
-
|
408
|
+
ParamsOfEncodeAccount = KwStruct.new(
|
409
|
+
:state_init,
|
410
|
+
:balance,
|
411
|
+
:last_trans_lt,
|
412
|
+
:last_paid,
|
413
|
+
:boc_cache
|
414
|
+
) do
|
415
|
+
def to_h
|
416
|
+
{
|
417
|
+
state_init: state_init.to_h,
|
418
|
+
balance: balance,
|
419
|
+
last_trans_lt: last_trans_lt,
|
420
|
+
last_paid: last_paid,
|
421
|
+
boc_cache: boc_cache&.to_h
|
422
|
+
}
|
353
423
|
end
|
354
424
|
end
|
355
425
|
|
356
|
-
ResultOfEncodeAccount =
|
426
|
+
ResultOfEncodeAccount = KwStruct.new(:account, :id_) do
|
357
427
|
def initialize(account:, id_:)
|
358
428
|
super
|
359
429
|
end
|
@@ -621,7 +691,7 @@ module TonSdk
|
|
621
691
|
end
|
622
692
|
end
|
623
693
|
|
624
|
-
ParamsOfEncodeInternalMessage =
|
694
|
+
ParamsOfEncodeInternalMessage = KwStruct.new(
|
625
695
|
:abi,
|
626
696
|
:address,
|
627
697
|
:src_address,
|
@@ -629,8 +699,7 @@ module TonSdk
|
|
629
699
|
:call_set,
|
630
700
|
:value,
|
631
701
|
:bounce,
|
632
|
-
:enable_ihr
|
633
|
-
keyword_init: true
|
702
|
+
:enable_ihr
|
634
703
|
) do
|
635
704
|
def initialize(
|
636
705
|
abi: nil,
|
@@ -646,20 +715,57 @@ module TonSdk
|
|
646
715
|
end
|
647
716
|
end
|
648
717
|
|
649
|
-
ResultOfEncodeInternalMessage =
|
718
|
+
ResultOfEncodeInternalMessage = KwStruct.new(
|
650
719
|
:message,
|
651
720
|
:address,
|
652
|
-
:message_id
|
653
|
-
keyword_init: true
|
721
|
+
:message_id
|
654
722
|
) do
|
655
723
|
def initialize(message:, address:, message_id:)
|
656
724
|
super
|
657
725
|
end
|
658
726
|
end
|
659
727
|
|
660
|
-
ParamsOfDecodeAccountData =
|
661
|
-
|
728
|
+
ParamsOfDecodeAccountData = KwStruct.new(:abi, :data) do
|
729
|
+
def to_h
|
730
|
+
{
|
731
|
+
abi: abi&.to_h,
|
732
|
+
data: data
|
733
|
+
}
|
734
|
+
end
|
735
|
+
end
|
736
|
+
|
737
|
+
ResultOfDecodeData = KwStruct.new(:data)
|
738
|
+
|
739
|
+
ParamsOfUpdateInitialData = KwStruct.new(
|
740
|
+
:data,
|
741
|
+
:abi,
|
742
|
+
:initial_data,
|
743
|
+
:initial_pubkey,
|
744
|
+
:boc_cache
|
745
|
+
) do
|
746
|
+
def to_h
|
747
|
+
{
|
748
|
+
data: data,
|
749
|
+
abi: abi&.to_h,
|
750
|
+
initial_data: initial_data,
|
751
|
+
initial_pubkey: initial_pubkey,
|
752
|
+
boc_cache: boc_cache&.to_h
|
753
|
+
}
|
754
|
+
end
|
755
|
+
end
|
756
|
+
|
757
|
+
ResultOfUpdateInitialData = KwStruct.new(:data)
|
758
|
+
|
759
|
+
ParamsOfDecodeInitialData = KwStruct.new(:data, :abi) do
|
760
|
+
def to_h
|
761
|
+
{
|
762
|
+
data: data,
|
763
|
+
abi: abi&.to_h
|
764
|
+
}
|
765
|
+
end
|
766
|
+
end
|
662
767
|
|
768
|
+
ResultOfDecodeInitialData = KwStruct.new(:initial_pubkey, :initial_data)
|
663
769
|
|
664
770
|
#
|
665
771
|
# functions
|
@@ -683,7 +789,7 @@ module TonSdk
|
|
683
789
|
Interop::request_to_native_lib(ctx, "abi.attach_signature_to_message_body", params) do |resp|
|
684
790
|
if resp.success?
|
685
791
|
yield NativeLibResponsetResult.new(
|
686
|
-
result: ResultOfAttachSignatureToMessageBody.new(resp.result["body"])
|
792
|
+
result: ResultOfAttachSignatureToMessageBody.new(body: resp.result["body"])
|
687
793
|
)
|
688
794
|
else
|
689
795
|
yield resp
|
@@ -782,7 +888,7 @@ module TonSdk
|
|
782
888
|
if resp.success?
|
783
889
|
yield NativeLibResponsetResult.new(
|
784
890
|
result: ResultOfDecodeData.new(
|
785
|
-
resp.result["data"]
|
891
|
+
data: resp.result["data"]
|
786
892
|
)
|
787
893
|
)
|
788
894
|
else
|
@@ -791,7 +897,33 @@ module TonSdk
|
|
791
897
|
end
|
792
898
|
end
|
793
899
|
|
900
|
+
def self.update_initial_data(ctx, params)
|
901
|
+
Interop::request_to_native_lib(ctx, "abi.update_initial_data", params) do |resp|
|
902
|
+
if resp.success?
|
903
|
+
yield NativeLibResponsetResult.new(
|
904
|
+
result: ResultOfUpdateInitialData.new(
|
905
|
+
data: resp.result["data"]
|
906
|
+
)
|
907
|
+
)
|
908
|
+
else
|
909
|
+
yield resp
|
910
|
+
end
|
911
|
+
end
|
912
|
+
end
|
794
913
|
|
795
|
-
|
914
|
+
def self.decode_initial_data(ctx, params)
|
915
|
+
Interop::request_to_native_lib(ctx, "abi.decode_initial_data", params) do |resp|
|
916
|
+
if resp.success?
|
917
|
+
yield NativeLibResponsetResult.new(
|
918
|
+
result: ResultOfDecodeInitialData.new(
|
919
|
+
initial_pubkey: resp.result["initial_pubkey"],
|
920
|
+
initial_data: resp.result["initial_data"]
|
921
|
+
)
|
922
|
+
)
|
923
|
+
else
|
924
|
+
yield resp
|
925
|
+
end
|
926
|
+
end
|
927
|
+
end
|
796
928
|
end
|
797
|
-
end
|
929
|
+
end
|