sequence-sdk 1.5.2 → 2.pre.rc.1
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 +5 -5
- data/README.md +2 -2
- data/lib/sequence/account.rb +31 -104
- data/lib/sequence/action.rb +15 -80
- data/lib/sequence/client.rb +24 -34
- data/lib/sequence/client_module.rb +0 -4
- data/lib/sequence/errors.rb +0 -4
- data/lib/sequence/feed.rb +28 -31
- data/lib/sequence/flavor.rb +29 -55
- data/lib/sequence/http_wrapper.rb +10 -13
- data/lib/sequence/key.rb +6 -36
- data/lib/sequence/page.rb +0 -6
- data/lib/sequence/query.rb +7 -20
- data/lib/sequence/session.rb +6 -45
- data/lib/sequence/stats.rb +9 -10
- data/lib/sequence/token.rb +24 -23
- data/lib/sequence/transaction.rb +84 -230
- data/lib/sequence/version.rb +1 -1
- metadata +131 -11
- data/lib/sequence/asset.rb +0 -119
- data/lib/sequence/balance.rb +0 -59
- data/lib/sequence/contract.rb +0 -104
- data/lib/sequence/validations.rb +0 -32
data/lib/sequence/stats.rb
CHANGED
@@ -9,28 +9,27 @@ module Sequence
|
|
9
9
|
# @private
|
10
10
|
class Stats < ResponseObject
|
11
11
|
# @!attribute [r] flavor_count
|
12
|
-
#
|
12
|
+
# The number of flavors in the ledger.
|
13
13
|
# @return [Integer]
|
14
14
|
attrib :flavor_count
|
15
15
|
|
16
|
-
# @!attribute [r] asset_count
|
17
|
-
# Deprecated. Use {#flavor_count} instead.
|
18
|
-
# The number of assets in the ledger.
|
19
|
-
# @return [Integer]
|
20
|
-
attrib :asset_count
|
21
|
-
|
22
16
|
# @!attribute [r] account_count
|
23
|
-
#
|
17
|
+
# The number of accounts in the ledger.
|
24
18
|
# @return [Integer]
|
25
19
|
attrib :account_count
|
26
20
|
|
27
21
|
# @!attribute [r] tx_count
|
28
|
-
#
|
22
|
+
# The number of transactions in the ledger.
|
29
23
|
# @return [Integer]
|
30
24
|
attrib :tx_count
|
31
25
|
|
26
|
+
# @!attribute [r] ledger_type
|
27
|
+
# The ledger type. Value can be 'dev' or 'prod'.
|
28
|
+
# @return [Integer]
|
29
|
+
attrib :ledger_type
|
30
|
+
|
32
31
|
class ClientModule < Sequence::ClientModule
|
33
|
-
#
|
32
|
+
# Get stats from the ledger.
|
34
33
|
# @return [Stats]
|
35
34
|
def get
|
36
35
|
Stats.new(client.session.request('stats'))
|
data/lib/sequence/token.rb
CHANGED
@@ -8,39 +8,40 @@ module Sequence
|
|
8
8
|
# More info: {https://dashboard.seq.com/docs/tokens}
|
9
9
|
module Token
|
10
10
|
class ClientModule < Sequence::ClientModule
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# @option opts [String] filter
|
11
|
+
# Execute a query, returning an enumerable over tokens.
|
12
|
+
# @param filter [String]
|
14
13
|
# A filter expression.
|
15
|
-
# @
|
14
|
+
# @param filter_params [Array<String|Integer>]
|
16
15
|
# A list of values that will be interpolated into the filter expression.
|
17
16
|
# @return [Query]
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
17
|
+
# @example List all tokens after a certain time
|
18
|
+
# ledger.tokens.list(
|
19
|
+
# filter: 'timestamp > $1',
|
20
|
+
# filter_params: ['1985-10-26T01:21:00Z']
|
21
|
+
# ).each do |token|
|
22
|
+
# puts 'amount: ' + token.amount
|
23
|
+
# puts 'flavor_id: ' + token.flavor_id
|
24
|
+
# puts 'account_id: ' + token.account_id
|
25
|
+
# end
|
26
|
+
def list(filter: nil, filter_params: nil)
|
27
|
+
GroupQuery.new(client, filter: filter, filter_params: filter_params)
|
25
28
|
end
|
26
29
|
|
27
|
-
#
|
28
|
-
#
|
29
|
-
# @option opts [String] filter
|
30
|
+
# Execute a query, returning an enumerable over sums of tokens.
|
31
|
+
# @param filter [String]
|
30
32
|
# A filter expression.
|
31
|
-
# @
|
33
|
+
# @param filter_params [Array<String|Integer>]
|
32
34
|
# A list of values that will be interpolated into the filter expression.
|
33
|
-
# @
|
35
|
+
# @param group_by [Array<String>]
|
34
36
|
# A list of token fields to be summed.
|
35
37
|
# @return [Query]
|
36
|
-
def sum(
|
37
|
-
|
38
|
-
|
39
|
-
:filter,
|
40
|
-
:filter_params,
|
41
|
-
:group_by,
|
38
|
+
def sum(filter: nil, filter_params: nil, group_by: nil)
|
39
|
+
SumQuery.new(
|
40
|
+
client,
|
41
|
+
filter: filter,
|
42
|
+
filter_params: filter_params,
|
43
|
+
group_by: group_by,
|
42
44
|
)
|
43
|
-
SumQuery.new(client, opts)
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
data/lib/sequence/transaction.rb
CHANGED
@@ -5,7 +5,6 @@ require 'securerandom'
|
|
5
5
|
require_relative './client_module'
|
6
6
|
require_relative './query'
|
7
7
|
require_relative './response_object'
|
8
|
-
require_relative './validations'
|
9
8
|
|
10
9
|
module Sequence
|
11
10
|
# A transaction is an atomic update to the state of the ledger. Transactions
|
@@ -27,25 +26,13 @@ module Sequence
|
|
27
26
|
# @return [Integer]
|
28
27
|
attrib :sequence_number
|
29
28
|
|
30
|
-
# @!attribute [r] reference_data
|
31
|
-
# Deprecated. Use {Sequence::Action#tags} instead.
|
32
|
-
# User-specified key-value data embedded into the transaction.
|
33
|
-
# @return [Hash]
|
34
|
-
attrib :reference_data
|
35
|
-
|
36
29
|
# @!attribute [r] actions
|
37
30
|
# List of actions taken by the transaction.
|
38
31
|
# @return [Array<Action>]
|
39
32
|
attrib(:actions) { |raw| raw.map { |v| Action.new(v) } }
|
40
33
|
|
41
|
-
# @!attribute [r] contracts
|
42
|
-
# Deprecated. Use {Token::ClientModule#list} instead.
|
43
|
-
# List of contracts created by the transaction.
|
44
|
-
# @return [Array<Contract>]
|
45
|
-
attrib(:contracts) { |raw| raw.map { |v| Contract.new(v) } }
|
46
|
-
|
47
34
|
class ClientModule < Sequence::ClientModule
|
48
|
-
#
|
35
|
+
# Build, sign, and submit a transaction.
|
49
36
|
# @param [Builder] builder
|
50
37
|
# Builder object with actions defined. If provided, overrides block
|
51
38
|
# parameter.
|
@@ -62,41 +49,14 @@ module Sequence
|
|
62
49
|
)
|
63
50
|
end
|
64
51
|
|
65
|
-
#
|
66
|
-
#
|
67
|
-
# @param [Hash] opts Options hash
|
68
|
-
# @option opts [String] filter
|
69
|
-
# A filter expression.
|
70
|
-
# @option opts [Array<String|Integer>] filter_params
|
71
|
-
# A list of values that will be interpolated into the filter expression.
|
72
|
-
# @option opts [Integer] start_time
|
73
|
-
# A Unix timestamp in milliseconds of the earliest transaction timestamp
|
74
|
-
# to include in the query results.
|
75
|
-
# @option opts [Integer] end_time
|
76
|
-
# A Unix timestamp in milliseconds of the most recent transaction
|
77
|
-
# timestamp to include in the query results.
|
78
|
-
# @option opts [Integer>] page_size
|
79
|
-
# Deprecated. Use list.page(size: size) instead.
|
80
|
-
# The number of items to return in the result set.
|
81
|
-
# @return [Query]
|
82
|
-
def query(opts = {})
|
83
|
-
Query.new(client, opts)
|
84
|
-
end
|
85
|
-
|
86
|
-
# Executes a query, returning an enumerable over individual transactions.
|
87
|
-
# @param [Hash] opts Options hash
|
88
|
-
# @option opts [String] filter
|
52
|
+
# Execute a query, returning an enumerable over individual transactions.
|
53
|
+
# @param filter [String]
|
89
54
|
# A filter expression.
|
90
|
-
# @
|
55
|
+
# @param filter_params [Array<String|Integer>]
|
91
56
|
# A list of values that will be interpolated into the filter expression.
|
92
57
|
# @return [Query]
|
93
|
-
def list(
|
94
|
-
|
95
|
-
opts,
|
96
|
-
:filter,
|
97
|
-
:filter_params,
|
98
|
-
)
|
99
|
-
Query.new(client, opts)
|
58
|
+
def list(filter: nil, filter_params: nil)
|
59
|
+
Query.new(client, filter: filter, filter_params: filter_params)
|
100
60
|
end
|
101
61
|
end
|
102
62
|
|
@@ -112,11 +72,6 @@ module Sequence
|
|
112
72
|
|
113
73
|
# A configuration object for creating and submitting transactions.
|
114
74
|
class Builder
|
115
|
-
include Sequence::Validations
|
116
|
-
|
117
|
-
# @deprecated Use {Sequence::Action#tags} instead.
|
118
|
-
attr_accessor :reference_data
|
119
|
-
|
120
75
|
def initialize(&block)
|
121
76
|
yield(self) if block
|
122
77
|
end
|
@@ -126,17 +81,14 @@ module Sequence
|
|
126
81
|
end
|
127
82
|
|
128
83
|
def to_h
|
129
|
-
{
|
130
|
-
actions: actions,
|
131
|
-
reference_data: reference_data,
|
132
|
-
}
|
84
|
+
{ actions: actions }
|
133
85
|
end
|
134
86
|
|
135
87
|
def to_json(opts = nil)
|
136
88
|
to_h.to_json(opts)
|
137
89
|
end
|
138
90
|
|
139
|
-
#
|
91
|
+
# Add an action to a transaction builder.
|
140
92
|
# @param [Hash] opts
|
141
93
|
# Action parameters.
|
142
94
|
# @return [Builder]
|
@@ -148,205 +100,107 @@ module Sequence
|
|
148
100
|
self
|
149
101
|
end
|
150
102
|
|
151
|
-
#
|
152
|
-
#
|
153
|
-
# @param [Hash] opts
|
154
|
-
# Options hash
|
155
|
-
# @option opts [Integer] :amount
|
103
|
+
# Issue new tokens to a destination account.
|
104
|
+
# @param amount [Integer]
|
156
105
|
# Amount of the flavor to be issued.
|
157
|
-
# @
|
106
|
+
# @param flavor_id [String]
|
158
107
|
# ID of the flavor to be issued.
|
159
|
-
# @
|
160
|
-
#
|
161
|
-
#
|
162
|
-
# alias.
|
163
|
-
# @option opts [String] :asset_alias
|
164
|
-
# Deprecated. Use :flavor_id instead.
|
165
|
-
# Asset alias of the asset to be issued. You must specify either an ID
|
166
|
-
# or an alias.
|
167
|
-
# @option opts [String] :destination_account_id
|
168
|
-
# ID of the account receiving the flavor units. You must specify a
|
169
|
-
# destination account ID or alias.
|
170
|
-
# @option opts [String] :destination_account_alias
|
171
|
-
# Deprecated. Use :destination_account_id instead.
|
172
|
-
# Alias of the account receiving the asset units. You must specify a
|
173
|
-
# destination account ID or alias.
|
174
|
-
# @option opts [Hash] :token_tags
|
108
|
+
# @param destination_account_id [String]
|
109
|
+
# ID of the account receiving the flavor units.
|
110
|
+
# @param token_tags [Hash]
|
175
111
|
# Tags to add to the receiving tokens.
|
176
|
-
# @
|
112
|
+
# @param action_tags [Hash]
|
177
113
|
# Tags to add to the action.
|
178
|
-
# @option opts [Hash] :reference_data
|
179
|
-
# Deprecated. Use :token_tags or :action_tags instead.
|
180
|
-
# Reference data for the action.
|
181
114
|
# @return [Builder]
|
182
|
-
def issue(
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
:
|
191
|
-
:
|
192
|
-
:
|
193
|
-
:
|
194
|
-
|
195
|
-
|
196
|
-
validate_either!(
|
197
|
-
opts,
|
198
|
-
:destination_account_id,
|
199
|
-
:destination_account_alias,
|
115
|
+
def issue(
|
116
|
+
amount:,
|
117
|
+
flavor_id:,
|
118
|
+
destination_account_id:,
|
119
|
+
token_tags: {},
|
120
|
+
action_tags: {}
|
121
|
+
)
|
122
|
+
add_action(
|
123
|
+
type: :issue,
|
124
|
+
amount: amount,
|
125
|
+
flavor_id: flavor_id,
|
126
|
+
destination_account_id: destination_account_id,
|
127
|
+
token_tags: token_tags,
|
128
|
+
action_tags: action_tags,
|
200
129
|
)
|
201
|
-
add_action(opts.merge(type: :issue))
|
202
130
|
end
|
203
131
|
|
204
|
-
#
|
205
|
-
#
|
206
|
-
#
|
207
|
-
# @param [Hash] opts
|
208
|
-
# Options hash
|
209
|
-
# @option opts [Integer] :amount
|
132
|
+
# Move tokens from a source account to a destination account.
|
133
|
+
# @param amount [Integer]
|
210
134
|
# Amount of the flavor to be transferred.
|
211
|
-
# @
|
135
|
+
# @param flavor_id [String]
|
212
136
|
# ID of the flavor to be transferred.
|
213
|
-
# @
|
214
|
-
#
|
215
|
-
#
|
216
|
-
#
|
217
|
-
# @
|
137
|
+
# @param source_account_id [String]
|
138
|
+
# ID of the account serving as the source of flavor units.
|
139
|
+
# @param destination_account_id [String]
|
140
|
+
# ID of the account receiving the flavor units.
|
141
|
+
# @param filter [String]
|
218
142
|
# Token filter string. See {https://dashboard.seq.com/docs/filters}.
|
219
|
-
# @
|
143
|
+
# @param filter_params [Array<String|Integer>]
|
220
144
|
# A list of parameter values for filter string (if needed).
|
221
|
-
# @
|
222
|
-
# Deprecated. Use :flavor_id instead.
|
223
|
-
# Asset alias of the asset to be transferred. You must specify either an
|
224
|
-
# ID or an alias.
|
225
|
-
# @option opts [String] :source_account_id
|
226
|
-
# ID of the account serving as the source of flavor units. You must
|
227
|
-
# specify a source account ID, account alias, or contract ID.
|
228
|
-
# @option opts [String] :source_account_alias
|
229
|
-
# Deprecated. Use :source_account_id instead.
|
230
|
-
# Alias of the account serving as the source of asset units You must
|
231
|
-
# specify a source account ID, account alias, or contract ID.
|
232
|
-
# @option opts [String] :source_contract_id
|
233
|
-
# ID of the contract serving as the source of flavor units. You must
|
234
|
-
# specify a source account ID, account alias, or contract ID.
|
235
|
-
# @option opts [String] :destination_account_id
|
236
|
-
# ID of the account receiving the flavor units. You must specify a
|
237
|
-
# destination account ID or alias.
|
238
|
-
# @option opts [String] :destination_account_alias
|
239
|
-
# Deprecated. Use :destination_account_id instead.
|
240
|
-
# Alias of the account receiving the asset units. You must specify a
|
241
|
-
# destination account ID or alias.
|
242
|
-
# @option opts [Hash] :token_tags
|
145
|
+
# @param token_tags [Hash]
|
243
146
|
# Tags to add to the receiving tokens.
|
244
|
-
# @
|
147
|
+
# @param action_tags [Hash]
|
245
148
|
# Tags to add to the action.
|
246
|
-
# @option opts [Hash] :reference_data
|
247
|
-
# Deprecated. Use :token_tags or :action_tags instead.
|
248
|
-
# reference data for the action.
|
249
|
-
# @option opts [Hash] :change_reference_data
|
250
|
-
# Deprecated. This happens automatically when using token tags.
|
251
|
-
# reference data for the change contract.
|
252
149
|
# @return [Builder]
|
253
|
-
def transfer(
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
:
|
265
|
-
:
|
266
|
-
:
|
267
|
-
:
|
268
|
-
:
|
269
|
-
:
|
270
|
-
:
|
271
|
-
|
272
|
-
|
273
|
-
validate_either!(
|
274
|
-
opts,
|
275
|
-
:source_account_id,
|
276
|
-
:source_account_alias,
|
277
|
-
:source_contract_id,
|
150
|
+
def transfer(
|
151
|
+
amount:,
|
152
|
+
flavor_id:,
|
153
|
+
source_account_id:,
|
154
|
+
destination_account_id:,
|
155
|
+
filter: nil,
|
156
|
+
filter_params: nil,
|
157
|
+
token_tags: {},
|
158
|
+
action_tags: {}
|
159
|
+
)
|
160
|
+
add_action(
|
161
|
+
type: :transfer,
|
162
|
+
amount: amount,
|
163
|
+
flavor_id: flavor_id,
|
164
|
+
source_account_id: source_account_id,
|
165
|
+
destination_account_id: destination_account_id,
|
166
|
+
filter: filter,
|
167
|
+
filter_params: filter_params,
|
168
|
+
token_tags: token_tags,
|
169
|
+
action_tags: action_tags,
|
278
170
|
)
|
279
|
-
validate_either!(
|
280
|
-
opts,
|
281
|
-
:destination_account_id,
|
282
|
-
:destination_account_alias,
|
283
|
-
)
|
284
|
-
add_action(opts.merge(type: :transfer))
|
285
171
|
end
|
286
172
|
|
287
|
-
#
|
288
|
-
#
|
289
|
-
#
|
290
|
-
# @param [Hash] opts Options hash
|
291
|
-
# @option opts [Integer] :amount
|
173
|
+
# Take tokens from a source account and retire them.
|
174
|
+
# @param amount [Integer]
|
292
175
|
# Amount of the flavor to be retired.
|
293
|
-
# @
|
176
|
+
# @param flavor_id [String]
|
294
177
|
# ID of the flavor to be retired.
|
295
|
-
# @
|
178
|
+
# @param source_account_id [String]
|
179
|
+
# ID of the account serving as the source of flavor units.
|
180
|
+
# @param filter [String]
|
296
181
|
# Token filter string. See {https://dashboard.seq.com/docs/filters}.
|
297
|
-
# @
|
182
|
+
# @param filter_params [Array<String|Integer>]
|
298
183
|
# A list of parameter values for filter string (if needed).
|
299
|
-
# @
|
300
|
-
# Deprecated. Use :flavor_id instead.
|
301
|
-
# ID of the asset to be retired. You must specify either an ID or an
|
302
|
-
# alias.
|
303
|
-
# @option opts [String] :asset_alias
|
304
|
-
# Deprecated. Use :flavor_id instead.
|
305
|
-
# Asset alias of the asset to be retired. You must specify either an ID
|
306
|
-
# or an alias.
|
307
|
-
# @option opts [String] :source_account_id
|
308
|
-
# ID of the account serving as the source of flavor units. You must
|
309
|
-
# specify a source account ID, account alias, or contract ID.
|
310
|
-
# @option opts [String] :source_account_alias
|
311
|
-
# Deprecated. Use :source_account_id instead.
|
312
|
-
# Alias of the account serving as the source of asset units You must
|
313
|
-
# specify a source account ID, account alias, or contract ID.
|
314
|
-
# @option opts [String] :source_contract_id
|
315
|
-
# ID of the contract serving as the source of flavor units. You must
|
316
|
-
# specify a source account ID, account alias, or contract ID.
|
317
|
-
# @option opts [Hash] :action_tags
|
184
|
+
# @param action_tags [Hash]
|
318
185
|
# Tags to add to the action.
|
319
|
-
# @option opts [Hash] :reference_data
|
320
|
-
# Deprecated. Use :token_tags or :action_tags instead.
|
321
|
-
# Reference data for the action.
|
322
|
-
# @option opts [Hash] :change_reference_data
|
323
|
-
# Deprecated. This happens automatically when using token tags.
|
324
|
-
# Reference data for the change contract.
|
325
186
|
# @return [Builder]
|
326
|
-
def retire(
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
:
|
336
|
-
:
|
337
|
-
:
|
338
|
-
:
|
339
|
-
:
|
340
|
-
:
|
341
|
-
|
342
|
-
validate_either!(opts, :flavor_id, :asset_id, :asset_alias)
|
343
|
-
validate_either!(
|
344
|
-
opts,
|
345
|
-
:source_account_id,
|
346
|
-
:source_account_alias,
|
347
|
-
:source_contract_id,
|
187
|
+
def retire(
|
188
|
+
amount:,
|
189
|
+
flavor_id:,
|
190
|
+
source_account_id:,
|
191
|
+
filter: nil,
|
192
|
+
filter_params: nil,
|
193
|
+
action_tags: {}
|
194
|
+
)
|
195
|
+
add_action(
|
196
|
+
type: :retire,
|
197
|
+
amount: amount,
|
198
|
+
flavor_id: flavor_id,
|
199
|
+
source_account_id: source_account_id,
|
200
|
+
filter: filter,
|
201
|
+
filter_params: filter_params,
|
202
|
+
action_tags: action_tags,
|
348
203
|
)
|
349
|
-
add_action(opts.merge(type: :retire))
|
350
204
|
end
|
351
205
|
end
|
352
206
|
end
|