tealrb 0.8.0 → 0.9.0
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 +4 -4
- data/lib/tealrb/contract.rb +25 -4
- data/lib/tealrb/opcode_modules.rb +298 -183
- data/lib/tealrb/opcodes.rb +478 -476
- data/lib/tealrb/rewriters.rb +16 -3
- data/lib/tealrb/scratch.rb +0 -16
- data/lib/tealrb.rb +2 -2
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d027d915afa0ccb6383791a694d6ca747bd07c14a2803d6ecaa8119b3277ffe9
|
4
|
+
data.tar.gz: e09162d147464ba6a7c0ada5c18bc9884832f164bb43f02a87d6d3f733093ce4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9b80748e7716e45b0bb87efcd0e70560bbb46fde5f6907ca6beaac59cd77ba4518acb41337df2fb5bb0aa6c9c8c86a6cfb28042ae95736028f4bcbdffc30c96
|
7
|
+
data.tar.gz: 791cb92688f986e2807770797c4ba5f61cd20e675c2887169126eb34bbbc40196e9a52ac64ecc79a4a9338ddb37632d20b5e08828a3d5b7cce9a2aa122ee2c57
|
data/lib/tealrb/contract.rb
CHANGED
@@ -4,9 +4,9 @@ module TEALrb
|
|
4
4
|
class Contract
|
5
5
|
include TEALrb
|
6
6
|
include Opcodes
|
7
|
+
include Opcodes::AllOpcodes
|
7
8
|
include ABI
|
8
9
|
include Rewriters
|
9
|
-
include MaybeOps
|
10
10
|
|
11
11
|
attr_reader :teal
|
12
12
|
|
@@ -90,6 +90,25 @@ module TEALrb
|
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
+
def teal_source
|
94
|
+
teal_lines = []
|
95
|
+
|
96
|
+
@teal.each do |line|
|
97
|
+
ln = line.strip
|
98
|
+
|
99
|
+
if (ln[%r{\S+:($| //)}] && !ln[/^if\d+/]) || ln == 'b main' || ln[/^#/]
|
100
|
+
teal_lines << ln
|
101
|
+
elsif ln == 'retsub'
|
102
|
+
teal_lines << " #{ln}"
|
103
|
+
teal_lines << ''
|
104
|
+
else
|
105
|
+
teal_lines << " #{ln}"
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
teal_lines.join("\n")
|
110
|
+
end
|
111
|
+
|
93
112
|
# return the input without transpiling to TEAL
|
94
113
|
def rb(input)
|
95
114
|
input
|
@@ -143,6 +162,7 @@ module TEALrb
|
|
143
162
|
last_line = TEAL.instance.pop
|
144
163
|
TEAL.instance << "#{last_line} //#{content}"
|
145
164
|
else
|
165
|
+
TEAL.instance << '' unless TEAL.instance.last[%r{^//}]
|
146
166
|
TEAL.instance << "//#{content}"
|
147
167
|
end
|
148
168
|
end
|
@@ -178,7 +198,7 @@ module TEALrb
|
|
178
198
|
|
179
199
|
def route_abi_methods
|
180
200
|
self.class.abi_description.methods.each do |meth|
|
181
|
-
signature = "#{meth[:name]}(#{meth[:args].map{ _1[:type]}.join(',')})#{meth[:returns][:type]}"
|
201
|
+
signature = "#{meth[:name]}(#{meth[:args].map { _1[:type] }.join(',')})#{meth[:returns][:type]}"
|
182
202
|
selector = OpenSSL::Digest.new('SHA512-256').hexdigest(signature)[..7]
|
183
203
|
|
184
204
|
IfBlock.new(AppArgs[0] == byte(selector)) do
|
@@ -223,7 +243,8 @@ module TEALrb
|
|
223
243
|
puts ''
|
224
244
|
end
|
225
245
|
|
226
|
-
[CommentRewriter, ComparisonRewriter, WhileRewriter, IfRewriter, OpRewriter,
|
246
|
+
[CommentRewriter, ComparisonRewriter, WhileRewriter, InlineIfRewriter, IfRewriter, OpRewriter,
|
247
|
+
AssignRewriter].each do |rw|
|
227
248
|
string = rewrite_with_rewriter(string, rw)
|
228
249
|
end
|
229
250
|
|
@@ -257,7 +278,7 @@ module TEALrb
|
|
257
278
|
rescue SyntaxError, StandardError => e
|
258
279
|
@eval_tealrb_rescue_count ||= 0
|
259
280
|
|
260
|
-
eval_locations = e.backtrace.select {_1[/\(eval\)/]}
|
281
|
+
eval_locations = e.backtrace.select { _1[/\(eval\)/] }
|
261
282
|
error_line = eval_locations[@eval_tealrb_rescue_count].split(':')[1].to_i
|
262
283
|
|
263
284
|
warn "'#{e}' when evaluating transpiled TEALrb source" if @eval_tealrb_rescue_count.zero?
|
@@ -1,24 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module TEALrb
|
4
|
-
module ExtendedOpcodes
|
5
|
-
extend Opcodes
|
6
|
-
end
|
7
|
-
|
8
4
|
module Opcodes
|
9
5
|
class AccountLocal
|
10
|
-
include TEALrb::Opcodes
|
11
|
-
|
12
6
|
def initialize(account)
|
13
7
|
@account = account
|
14
8
|
end
|
15
9
|
|
16
10
|
def [](key)
|
17
|
-
app_local_get @account, key
|
11
|
+
ExtendedOpcodes.app_local_get @account, key
|
18
12
|
end
|
19
13
|
|
20
14
|
def []=(key, value)
|
21
|
-
app_local_put @account, key, value
|
15
|
+
ExtendedOpcodes.app_local_put @account, key, value
|
22
16
|
end
|
23
17
|
end
|
24
18
|
|
@@ -393,132 +387,6 @@ module TEALrb
|
|
393
387
|
end
|
394
388
|
end
|
395
389
|
|
396
|
-
module AppFields
|
397
|
-
# @return [[]byte] Bytecode of Approval Program
|
398
|
-
def app_approval_program(*args)
|
399
|
-
opcode('AppApprovalProgram', *args)
|
400
|
-
end
|
401
|
-
|
402
|
-
# @return [[]byte] Bytecode of Clear State Program
|
403
|
-
def app_clear_state_program(*args)
|
404
|
-
opcode('AppClearStateProgram', *args)
|
405
|
-
end
|
406
|
-
|
407
|
-
# @return [uint64] Number of uint64 values allowed in Global State
|
408
|
-
def app_global_num_uint(*args)
|
409
|
-
opcode('AppGlobalNumUint', *args)
|
410
|
-
end
|
411
|
-
|
412
|
-
# @return [uint64] Number of byte array values allowed in Global State
|
413
|
-
def app_global_num_byte_slice(*args)
|
414
|
-
opcode('AppGlobalNumByteSlice', *args)
|
415
|
-
end
|
416
|
-
|
417
|
-
# @return [uint64] Number of uint64 values allowed in Local State
|
418
|
-
def app_local_num_uint(*args)
|
419
|
-
opcode('AppLocalNumUint', *args)
|
420
|
-
end
|
421
|
-
|
422
|
-
# @return [uint64] Number of byte array values allowed in Local State
|
423
|
-
def app_local_num_byte_slice(*args)
|
424
|
-
opcode('AppLocalNumByteSlice', *args)
|
425
|
-
end
|
426
|
-
|
427
|
-
# @return [uint64] Number of Extra Program Pages of code space
|
428
|
-
def app_extra_program_pages(*args)
|
429
|
-
opcode('AppExtraProgramPages', *args)
|
430
|
-
end
|
431
|
-
|
432
|
-
# @return [[]byte] Creator address
|
433
|
-
def app_creator(*args)
|
434
|
-
opcode('AppCreator', *args)
|
435
|
-
end
|
436
|
-
|
437
|
-
# @return [[]byte] Address for which this application has authority
|
438
|
-
def app_address(*args)
|
439
|
-
opcode('AppAddress', *args)
|
440
|
-
end
|
441
|
-
end
|
442
|
-
|
443
|
-
module AssetFields
|
444
|
-
# @return [uint64] Total number of units of this asset (v1)
|
445
|
-
def asset_total(*args)
|
446
|
-
opcode('AssetTotal', *args)
|
447
|
-
end
|
448
|
-
|
449
|
-
# @return [uint64] See AssetParams.Decimals (v1)
|
450
|
-
def asset_decimals(*args)
|
451
|
-
opcode('AssetDecimals', *args)
|
452
|
-
end
|
453
|
-
|
454
|
-
# @return [uint64] Frozen by default or not (v1)
|
455
|
-
def asset_default_frozen(*args)
|
456
|
-
opcode('AssetDefaultFrozen', *args)
|
457
|
-
end
|
458
|
-
|
459
|
-
# @return [[]byte] Asset unit name (v1)
|
460
|
-
def asset_unit_name(*args)
|
461
|
-
opcode('AssetUnitName', *args)
|
462
|
-
end
|
463
|
-
|
464
|
-
# @return [[]byte] Asset name (v1)
|
465
|
-
def asset_name(*args)
|
466
|
-
opcode('AssetName', *args)
|
467
|
-
end
|
468
|
-
|
469
|
-
# @return [[]byte] URL with additional info about the asset (v1)
|
470
|
-
def asset_url(*args)
|
471
|
-
opcode('AssetURL', *args)
|
472
|
-
end
|
473
|
-
|
474
|
-
# @return [[]byte] Arbitrary commitment (v1)
|
475
|
-
def asset_metadata_hash(*args)
|
476
|
-
opcode('AssetMetadataHash', *args)
|
477
|
-
end
|
478
|
-
|
479
|
-
# @return [[]byte] Manager commitment (v1)
|
480
|
-
def asset_manager(*args)
|
481
|
-
opcode('AssetManager', *args)
|
482
|
-
end
|
483
|
-
|
484
|
-
# @return [[]byte] Reserve address (v1)
|
485
|
-
def asset_reserve(*args)
|
486
|
-
opcode('AssetReserve', *args)
|
487
|
-
end
|
488
|
-
|
489
|
-
# @return [[]byte] Freeze address (v1)
|
490
|
-
def asset_freeze(*args)
|
491
|
-
opcode('AssetFreeze', *args)
|
492
|
-
end
|
493
|
-
|
494
|
-
# @return [[]byte] Clawback address (v1)
|
495
|
-
def asset_clawback(*args)
|
496
|
-
opcode('AssetClawback', *args)
|
497
|
-
end
|
498
|
-
|
499
|
-
# @return [[]byte] Creator address (v5)
|
500
|
-
def asset_creator(*args)
|
501
|
-
opcode('AssetCreator', *args)
|
502
|
-
end
|
503
|
-
end
|
504
|
-
|
505
|
-
module AccountFields
|
506
|
-
# @return [uint64] Account balance in microalgos
|
507
|
-
def acct_balance(*args)
|
508
|
-
opcode('AcctBalance', *args)
|
509
|
-
end
|
510
|
-
|
511
|
-
# @return [uint64] in microalgos (Minimum required blance for account)
|
512
|
-
def acct_min_balance(*args)
|
513
|
-
opcode('AcctMinBalance', *args)
|
514
|
-
end
|
515
|
-
|
516
|
-
# @return [[]byte] Address the account is rekeyed to.
|
517
|
-
def acct_auth_addr(*args)
|
518
|
-
opcode('AcctAuthAddr', *args)
|
519
|
-
end
|
520
|
-
end
|
521
|
-
|
522
390
|
module GlobalFields
|
523
391
|
# @return [uint64] microalgos (v1)
|
524
392
|
def min_txn_fee(*args)
|
@@ -598,48 +466,19 @@ module TEALrb
|
|
598
466
|
end
|
599
467
|
end
|
600
468
|
|
601
|
-
module App
|
602
|
-
extend Opcodes
|
603
|
-
extend AppFields
|
604
|
-
|
605
|
-
def self.opcode(field, app_id = nil)
|
606
|
-
app_params_get field, app_id
|
607
|
-
end
|
608
|
-
end
|
609
|
-
|
610
|
-
module Asset
|
611
|
-
extend Opcodes
|
612
|
-
extend AssetFields
|
613
|
-
|
614
|
-
def self.opcode(field, asset = nil)
|
615
|
-
asset_params_get field, asset
|
616
|
-
end
|
617
|
-
end
|
618
|
-
|
619
|
-
module Account
|
620
|
-
extend Opcodes
|
621
|
-
extend AccountFields
|
622
|
-
|
623
|
-
def self.opcode(field, account = nil)
|
624
|
-
acct_params_get field, account
|
625
|
-
end
|
626
|
-
end
|
627
|
-
|
628
469
|
module Txn
|
629
|
-
extend Opcodes
|
630
470
|
extend TxnFields
|
631
471
|
|
632
472
|
def self.opcode(field)
|
633
|
-
txn field
|
473
|
+
ExtendedOpcodes.txn field
|
634
474
|
end
|
635
475
|
end
|
636
476
|
|
637
477
|
module Gtxn
|
638
478
|
extend TxnFields
|
639
|
-
extend Opcodes
|
640
479
|
|
641
480
|
def self.opcode(field, index)
|
642
|
-
gtxn index, field
|
481
|
+
ExtendedOpcodes.gtxn index, field
|
643
482
|
end
|
644
483
|
|
645
484
|
def self.[](index)
|
@@ -647,67 +486,325 @@ module TEALrb
|
|
647
486
|
end
|
648
487
|
end
|
649
488
|
|
489
|
+
module Gtxns
|
490
|
+
extend TxnFields
|
491
|
+
|
492
|
+
def self.opcode(field)
|
493
|
+
ExtendedOpcodes.gtxns field
|
494
|
+
end
|
495
|
+
|
496
|
+
def self.[](_index)
|
497
|
+
self
|
498
|
+
end
|
499
|
+
end
|
500
|
+
|
650
501
|
class GroupTransaction
|
651
502
|
include TxnFields
|
652
|
-
include Opcodes
|
653
503
|
|
654
504
|
def initialize(index)
|
655
505
|
@index = index
|
656
506
|
end
|
657
507
|
|
658
508
|
def opcode(field)
|
659
|
-
gtxn @index, field
|
509
|
+
ExtendedOpcodes.gtxn @index, field
|
660
510
|
end
|
661
511
|
end
|
662
512
|
|
663
|
-
class
|
664
|
-
|
513
|
+
class TxnArray
|
514
|
+
TEALrb::Opcodes::BINARY_OPCODE_METHOD_MAPPING.each do |meth, opcode|
|
515
|
+
define_method(meth) do |other|
|
516
|
+
ExtendedOpcodes.send(opcode, self, other)
|
517
|
+
end
|
518
|
+
end
|
519
|
+
|
520
|
+
TEALrb::Opcodes::UNARY_OPCODE_METHOD_MAPPING.each do |meth, opcode|
|
521
|
+
define_method(meth) do
|
522
|
+
ExtendedOpcodes.send(opcode, self)
|
523
|
+
end
|
524
|
+
end
|
665
525
|
|
666
|
-
def
|
667
|
-
|
526
|
+
def self.[](index)
|
527
|
+
new[index]
|
668
528
|
end
|
669
529
|
|
670
530
|
def [](index)
|
671
|
-
txna @field, index
|
531
|
+
ExtendedOpcodes.txna @field, index
|
532
|
+
self
|
533
|
+
end
|
534
|
+
end
|
535
|
+
|
536
|
+
class ApplicationArgs < TxnArray
|
537
|
+
def initialize
|
538
|
+
super
|
539
|
+
@field = 'ApplicationArgs'
|
540
|
+
end
|
541
|
+
end
|
542
|
+
|
543
|
+
class Logs < TxnArray
|
544
|
+
def initialize
|
545
|
+
super
|
546
|
+
@field = 'Logs'
|
547
|
+
end
|
548
|
+
end
|
549
|
+
|
550
|
+
class Accounts < TxnArray
|
551
|
+
def initialize
|
552
|
+
super
|
553
|
+
@field = 'Accounts'
|
554
|
+
end
|
555
|
+
|
556
|
+
def min_balance
|
557
|
+
ExtendedOpcodes.acct_param_value 'AcctMinBalance'
|
558
|
+
end
|
559
|
+
|
560
|
+
def balance
|
561
|
+
ExtendedOpcodes.acct_param_value 'AcctBalance'
|
562
|
+
end
|
563
|
+
|
564
|
+
def auth_addr
|
565
|
+
ExtendedOpcodes.acct_param_value 'AcctAuthAddr'
|
566
|
+
end
|
567
|
+
|
568
|
+
def balance?
|
569
|
+
ExtendedOpcodes.acct_has_balance?
|
570
|
+
end
|
571
|
+
end
|
572
|
+
|
573
|
+
class Apps < TxnArray
|
574
|
+
def initialize
|
575
|
+
super
|
576
|
+
@field = 'Applications'
|
577
|
+
end
|
578
|
+
|
579
|
+
# @return [[]byte] Bytecode of Approval Program
|
580
|
+
def approval_program(*_args)
|
581
|
+
ExtendedOpcodes.app_param_value 'AppApprovalProgram'
|
582
|
+
end
|
583
|
+
|
584
|
+
# @return [[]byte] Bytecode of Clear State Program
|
585
|
+
def clear_state_program(*_args)
|
586
|
+
ExtendedOpcodes.app_param_value 'AppClearStateProgram'
|
587
|
+
end
|
588
|
+
|
589
|
+
# @return [uint64] Number of uint64 values allowed in Global State
|
590
|
+
def global_num_uint(*_args)
|
591
|
+
ExtendedOpcodes.app_param_value 'AppGlobalNumUint'
|
592
|
+
end
|
593
|
+
|
594
|
+
# @return [uint64] Number of byte array values allowed in Global State
|
595
|
+
def global_num_byte_slice(*_args)
|
596
|
+
ExtendedOpcodes.app_param_value 'AppGlobalNumByteSlice'
|
597
|
+
end
|
598
|
+
|
599
|
+
# @return [uint64] Number of uint64 values allowed in Local State
|
600
|
+
def local_num_uint(*_args)
|
601
|
+
ExtendedOpcodes.app_param_value 'AppLocalNumUint'
|
602
|
+
end
|
603
|
+
|
604
|
+
# @return [uint64] Number of byte array values allowed in Local State
|
605
|
+
def local_num_byte_slice(*_args)
|
606
|
+
ExtendedOpcodes.app_param_value 'AppLocalNumByteSlice'
|
607
|
+
end
|
608
|
+
|
609
|
+
# @return [uint64] Number of Extra Program Pages of code space
|
610
|
+
def extra_program_pages(*_args)
|
611
|
+
ExtendedOpcodes.app_param_value 'AppExtraProgramPages'
|
612
|
+
end
|
613
|
+
|
614
|
+
# @return [[]byte] Creator address
|
615
|
+
def creator(*_args)
|
616
|
+
ExtendedOpcodes.app_param_value 'AppCreator'
|
617
|
+
end
|
618
|
+
|
619
|
+
# @return [[]byte] Address for which this application has authority
|
620
|
+
def address(*_args)
|
621
|
+
ExtendedOpcodes.app_param_value 'AppAddress'
|
622
|
+
end
|
623
|
+
|
624
|
+
# @return [[]byte] Bytecode of Approval Program
|
625
|
+
def approval_program?(*_args)
|
626
|
+
ExtendedOpcodes.app_param_exists? 'AppApprovalProgram'
|
627
|
+
end
|
628
|
+
|
629
|
+
# @return [[]byte] Bytecode of Clear State Program
|
630
|
+
def clear_state_program?(*_args)
|
631
|
+
ExtendedOpcodes.app_param_exists? 'AppClearStateProgram'
|
632
|
+
end
|
633
|
+
|
634
|
+
# @return [uint64] Number of uint64 values allowed in Global State
|
635
|
+
def global_num_uint?(*_args)
|
636
|
+
ExtendedOpcodes.app_param_exists? 'AppGlobalNumUint'
|
637
|
+
end
|
638
|
+
|
639
|
+
# @return [uint64] Number of byte array values allowed in Global State
|
640
|
+
def global_num_byte_slice?(*_args)
|
641
|
+
ExtendedOpcodes.app_param_exists? 'AppGlobalNumByteSlice'
|
642
|
+
end
|
643
|
+
|
644
|
+
# @return [uint64] Number of uint64 values allowed in Local State
|
645
|
+
def local_num_uint?(*_args)
|
646
|
+
ExtendedOpcodes.app_param_exists? 'AppLocalNumUint'
|
647
|
+
end
|
648
|
+
|
649
|
+
# @return [uint64] Number of byte array values allowed in Local State
|
650
|
+
def local_num_byte_slice?(*_args)
|
651
|
+
ExtendedOpcodes.app_param_exists? 'AppLocalNumByteSlice'
|
652
|
+
end
|
653
|
+
|
654
|
+
# @return [uint64] Number of Extra Program Pages of code space
|
655
|
+
def extra_program_pages?(*_args)
|
656
|
+
ExtendedOpcodes.app_param_exists? 'AppExtraProgramPages'
|
657
|
+
end
|
658
|
+
|
659
|
+
# @return [[]byte] Creator address
|
660
|
+
def creator?(*_args)
|
661
|
+
ExtendedOpcodes.app_param_exists? 'AppCreator'
|
662
|
+
end
|
663
|
+
|
664
|
+
# @return [[]byte] Address for which this application has authority
|
665
|
+
def address?(*_args)
|
666
|
+
ExtendedOpcodes.app_param_exists? 'AppAddress'
|
667
|
+
end
|
668
|
+
end
|
669
|
+
|
670
|
+
class Assets < TxnArray
|
671
|
+
def initialize
|
672
|
+
super
|
673
|
+
@field = 'Assets'
|
674
|
+
end
|
675
|
+
|
676
|
+
def total
|
677
|
+
ExtendedOpcodes.asset_param_value 'AssetTotal'
|
678
|
+
end
|
679
|
+
|
680
|
+
def decimals
|
681
|
+
ExtendedOpcodes.asset_param_value 'AssetDecimals'
|
682
|
+
end
|
683
|
+
|
684
|
+
def default_frozen
|
685
|
+
ExtendedOpcodes.asset_param_value 'AssetDefaultFrozen'
|
686
|
+
end
|
687
|
+
|
688
|
+
def name
|
689
|
+
ExtendedOpcodes.asset_param_value 'AssetName'
|
690
|
+
end
|
691
|
+
|
692
|
+
def unit_name
|
693
|
+
ExtendedOpcodes.asset_param_value 'AssetUnitName'
|
694
|
+
end
|
695
|
+
|
696
|
+
def url
|
697
|
+
ExtendedOpcodes.asset_param_value 'AssetURL'
|
698
|
+
end
|
699
|
+
|
700
|
+
def metadata_hash
|
701
|
+
ExtendedOpcodes.asset_param_value 'AssetMetadataHash'
|
702
|
+
end
|
703
|
+
|
704
|
+
def manager
|
705
|
+
ExtendedOpcodes.asset_param_value 'AssetManager'
|
706
|
+
end
|
707
|
+
|
708
|
+
def reserve
|
709
|
+
ExtendedOpcodes.asset_param_value 'AssetReserve'
|
710
|
+
end
|
711
|
+
|
712
|
+
def freeze
|
713
|
+
ExtendedOpcodes.asset_param_value 'AssetFreeze'
|
714
|
+
end
|
715
|
+
|
716
|
+
def clawback
|
717
|
+
ExtendedOpcodes.asset_param_value 'AssetClawback'
|
718
|
+
end
|
719
|
+
|
720
|
+
def creator
|
721
|
+
ExtendedOpcodes.asset_param_value 'AssetCreator'
|
722
|
+
end
|
723
|
+
|
724
|
+
def total?
|
725
|
+
ExtendedOpcodes.asset_param_exists? 'AssetTotal'
|
726
|
+
end
|
727
|
+
|
728
|
+
def decimals?
|
729
|
+
ExtendedOpcodes.asset_param_exists? 'AssetDecimals'
|
730
|
+
end
|
731
|
+
|
732
|
+
def default_frozen?
|
733
|
+
ExtendedOpcodes.asset_param_exists? 'AssetDefaultFrozen'
|
734
|
+
end
|
735
|
+
|
736
|
+
def name?
|
737
|
+
ExtendedOpcodes.asset_param_exists? 'AssetName'
|
738
|
+
end
|
739
|
+
|
740
|
+
def unit_name?
|
741
|
+
ExtendedOpcodes.asset_param_exists? 'AssetUnitName'
|
742
|
+
end
|
743
|
+
|
744
|
+
def url?
|
745
|
+
ExtendedOpcodes.asset_param_exists? 'AssetURL'
|
746
|
+
end
|
747
|
+
|
748
|
+
def metadata_hash?
|
749
|
+
ExtendedOpcodes.asset_param_exists? 'AssetMetadataHash'
|
750
|
+
end
|
751
|
+
|
752
|
+
def manager?
|
753
|
+
ExtendedOpcodes.asset_param_exists? 'AssetManager'
|
754
|
+
end
|
755
|
+
|
756
|
+
def reserve?
|
757
|
+
ExtendedOpcodes.asset_param_exists? 'AssetReserve'
|
758
|
+
end
|
759
|
+
|
760
|
+
def freeze?
|
761
|
+
ExtendedOpcodes.asset_param_exists? 'AssetFreeze'
|
762
|
+
end
|
763
|
+
|
764
|
+
def clawback?
|
765
|
+
ExtendedOpcodes.asset_param_exists? 'AssetClawback'
|
766
|
+
end
|
767
|
+
|
768
|
+
def creator?
|
769
|
+
ExtendedOpcodes.asset_param_exists? 'AssetCreator'
|
672
770
|
end
|
673
771
|
end
|
674
772
|
|
675
773
|
module Txna
|
676
774
|
def self.application_args
|
677
|
-
|
775
|
+
ApplicationArgs.new
|
678
776
|
end
|
679
777
|
|
680
778
|
def self.accounts
|
681
|
-
|
779
|
+
Accounts.new
|
682
780
|
end
|
683
781
|
|
684
782
|
def self.assets
|
685
|
-
|
783
|
+
Assets.new
|
686
784
|
end
|
687
785
|
|
688
786
|
def self.applications
|
689
|
-
|
787
|
+
Apps.new
|
690
788
|
end
|
691
789
|
|
692
790
|
def self.logs
|
693
|
-
|
791
|
+
Logs.new
|
694
792
|
end
|
695
793
|
end
|
696
794
|
|
697
795
|
module Global
|
698
|
-
extend Opcodes
|
699
796
|
extend GlobalFields
|
700
797
|
|
701
798
|
def self.opcode(field)
|
702
|
-
global field
|
799
|
+
ExtendedOpcodes.global field
|
703
800
|
end
|
704
801
|
|
705
802
|
def self.[](key)
|
706
|
-
app_global_get key
|
803
|
+
ExtendedOpcodes.app_global_get key
|
707
804
|
end
|
708
805
|
|
709
806
|
def self.[]=(key, value)
|
710
|
-
app_global_put key, value
|
807
|
+
ExtendedOpcodes.app_global_put key, value
|
711
808
|
end
|
712
809
|
end
|
713
810
|
|
@@ -718,8 +815,6 @@ module TEALrb
|
|
718
815
|
end
|
719
816
|
|
720
817
|
module MaybeOps
|
721
|
-
include Opcodes
|
722
|
-
|
723
818
|
def app_param_exists?(field, _app_id = nil)
|
724
819
|
app_params_get field
|
725
820
|
swap
|
@@ -742,6 +837,17 @@ module TEALrb
|
|
742
837
|
pop
|
743
838
|
end
|
744
839
|
|
840
|
+
def acct_has_balance?(_asset_id = nil)
|
841
|
+
acct_params_get 'AcctBalance'
|
842
|
+
swap
|
843
|
+
pop
|
844
|
+
end
|
845
|
+
|
846
|
+
def acct_param_value(field, _asset_id = nil)
|
847
|
+
acct_params_get field
|
848
|
+
pop
|
849
|
+
end
|
850
|
+
|
745
851
|
def app_local_ex_exists?(_account = nil, _applicaiton = nil, _key = nil)
|
746
852
|
app_local_get_ex
|
747
853
|
swap
|
@@ -764,5 +870,14 @@ module TEALrb
|
|
764
870
|
pop
|
765
871
|
end
|
766
872
|
end
|
873
|
+
|
874
|
+
module AllOpcodes
|
875
|
+
include TEALOpcodes
|
876
|
+
include MaybeOps
|
877
|
+
end
|
878
|
+
|
879
|
+
module ExtendedOpcodes
|
880
|
+
extend AllOpcodes
|
881
|
+
end
|
767
882
|
end
|
768
883
|
end
|