1536 lines
17 KiB
Plaintext
1536 lines
17 KiB
Plaintext
#pragma version 6
|
|
intcblock 1 0 127 2 1000 86400 128 255
|
|
bytecblock 0x 0x0008 0x677561726469616e 0x63757272656e74477561726469616e536574496e646578 0x6e6f70 0x76657269667953696773 0x4d657373616765466565 0x76616c6964557064617465417070726f766548617368 0x767068617368 0x766572696679564141 0x7075626c6973684d657373616765 0x0001 0x0000000000000000000000000000000000000000000000000000000000000004 0x00000000000000000000000000000000000000000000000000000000436f7265 0x0000 0x626f6f746564 0x50726f6772616d 0x6d657461
|
|
txn ApplicationID
|
|
intc_1 // 0
|
|
==
|
|
bnz main_l75
|
|
txn OnCompletion
|
|
pushint 4 // UpdateApplication
|
|
==
|
|
bnz main_l74
|
|
txn OnCompletion
|
|
pushint 5 // DeleteApplication
|
|
==
|
|
bnz main_l73
|
|
txn OnCompletion
|
|
intc_0 // OptIn
|
|
==
|
|
bnz main_l72
|
|
txn OnCompletion
|
|
intc_1 // NoOp
|
|
==
|
|
bnz main_l6
|
|
err
|
|
main_l6:
|
|
txna ApplicationArgs 0
|
|
bytec 10 // "publishMessage"
|
|
==
|
|
bnz main_l69
|
|
txna ApplicationArgs 0
|
|
bytec 4 // "nop"
|
|
==
|
|
bnz main_l68
|
|
txna ApplicationArgs 0
|
|
pushbytes 0x696e6974 // "init"
|
|
==
|
|
bnz main_l52
|
|
txna ApplicationArgs 0
|
|
bytec 5 // "verifySigs"
|
|
==
|
|
bnz main_l51
|
|
txna ApplicationArgs 0
|
|
bytec 9 // "verifyVAA"
|
|
==
|
|
bnz main_l29
|
|
txna ApplicationArgs 0
|
|
pushbytes 0x676f7665726e616e6365 // "governance"
|
|
==
|
|
bnz main_l13
|
|
err
|
|
main_l13:
|
|
callsub checkForDuplicate_11
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxns TypeEnum
|
|
pushint 6 // appl
|
|
==
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxns ApplicationID
|
|
txn ApplicationID
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxnsa ApplicationArgs 0
|
|
bytec 9 // "verifyVAA"
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxns Sender
|
|
txn Sender
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxns RekeyTo
|
|
global ZeroAddress
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxns OnCompletion
|
|
intc_1 // NoOp
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxnsa ApplicationArgs 1
|
|
txna ApplicationArgs 1
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
gtxns RekeyTo
|
|
global ZeroAddress
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
gtxns Sender
|
|
txn Sender
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxnsa Accounts 0
|
|
txna Accounts 0
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxnsa Accounts 1
|
|
txna Accounts 1
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxnsa Accounts 2
|
|
txna Accounts 2
|
|
==
|
|
&&
|
|
assert
|
|
bytec_3 // "currentGuardianSetIndex"
|
|
app_global_get
|
|
store 26
|
|
load 26
|
|
intc_1 // 0
|
|
!=
|
|
bnz main_l28
|
|
main_l14:
|
|
txna ApplicationArgs 1
|
|
extract 5 1
|
|
btoi
|
|
pushint 66 // 66
|
|
*
|
|
pushint 14 // 14
|
|
+
|
|
store 21
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
intc_3 // 2
|
|
extract3
|
|
bytec 11 // 0x0001
|
|
==
|
|
assert
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
intc_3 // 2
|
|
+
|
|
pushint 32 // 32
|
|
extract3
|
|
bytec 12 // 0x0000000000000000000000000000000000000000000000000000000000000004
|
|
==
|
|
assert
|
|
load 21
|
|
pushint 43 // 43
|
|
+
|
|
store 21
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
pushint 32 // 32
|
|
extract3
|
|
bytec 13 // 0x00000000000000000000000000000000000000000000000000000000436f7265
|
|
==
|
|
assert
|
|
load 21
|
|
pushint 32 // 32
|
|
+
|
|
store 21
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
intc_0 // 1
|
|
+
|
|
intc_3 // 2
|
|
extract3
|
|
store 28
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
intc_0 // 1
|
|
extract3
|
|
btoi
|
|
store 22
|
|
load 22
|
|
intc_0 // 1
|
|
==
|
|
bnz main_l27
|
|
load 22
|
|
intc_3 // 2
|
|
==
|
|
bnz main_l22
|
|
load 22
|
|
pushint 3 // 3
|
|
==
|
|
bnz main_l21
|
|
load 22
|
|
pushint 4 // 4
|
|
==
|
|
bnz main_l19
|
|
err
|
|
main_l19:
|
|
load 21
|
|
intc_0 // 1
|
|
+
|
|
store 21
|
|
load 28
|
|
bytec_1 // 0x0008
|
|
==
|
|
assert
|
|
load 21
|
|
pushint 26 // 26
|
|
+
|
|
store 21
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
pushint 8 // 8
|
|
extract3
|
|
btoi
|
|
store 24
|
|
load 21
|
|
pushint 8 // 8
|
|
+
|
|
store 21
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
pushint 32 // 32
|
|
extract3
|
|
store 23
|
|
itxn_begin
|
|
intc_0 // pay
|
|
itxn_field TypeEnum
|
|
load 23
|
|
itxn_field Receiver
|
|
load 24
|
|
itxn_field Amount
|
|
intc_1 // 0
|
|
itxn_field Fee
|
|
itxn_submit
|
|
main_l20:
|
|
intc_0 // 1
|
|
return
|
|
intc_0 // 1
|
|
return
|
|
main_l21:
|
|
load 21
|
|
intc_0 // 1
|
|
+
|
|
store 21
|
|
load 28
|
|
bytec_1 // 0x0008
|
|
==
|
|
assert
|
|
load 21
|
|
intc_3 // 2
|
|
+
|
|
pushint 24 // 24
|
|
+
|
|
store 21
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
pushint 8 // 8
|
|
extract3
|
|
btoi
|
|
store 24
|
|
bytec 6 // "MessageFee"
|
|
load 24
|
|
app_global_put
|
|
b main_l20
|
|
main_l22:
|
|
load 28
|
|
bytec_1 // 0x0008
|
|
==
|
|
load 28
|
|
bytec 14 // 0x0000
|
|
==
|
|
||
|
|
assert
|
|
load 21
|
|
pushint 3 // 3
|
|
+
|
|
store 21
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
pushint 4 // 4
|
|
extract3
|
|
btoi
|
|
store 25
|
|
txna Accounts 3
|
|
load 25
|
|
bytec_2 // "guardian"
|
|
callsub getsigaddress_9
|
|
==
|
|
assert
|
|
intc_1 // 0
|
|
intc_1 // 0
|
|
==
|
|
bnz main_l26
|
|
main_l23:
|
|
bytec_3 // "currentGuardianSetIndex"
|
|
load 25
|
|
app_global_put
|
|
load 21
|
|
pushint 4 // 4
|
|
+
|
|
store 21
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
intc_0 // 1
|
|
extract3
|
|
btoi
|
|
store 27
|
|
load 27
|
|
intc_1 // 0
|
|
>
|
|
assert
|
|
pushint 3 // 3
|
|
intc_1 // 0
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
intc_0 // 1
|
|
pushint 20 // 20
|
|
load 27
|
|
*
|
|
+
|
|
extract3
|
|
callsub write_7
|
|
pop
|
|
txna Accounts 3
|
|
txna Accounts 2
|
|
!=
|
|
bnz main_l25
|
|
main_l24:
|
|
pushint 3 // 3
|
|
bytec_2 // "guardian"
|
|
callsub meta_5
|
|
b main_l20
|
|
main_l25:
|
|
intc_3 // 2
|
|
intc 4 // 1000
|
|
global LatestTimestamp
|
|
intc 5 // 86400
|
|
+
|
|
itob
|
|
callsub write_7
|
|
pop
|
|
b main_l24
|
|
main_l26:
|
|
txna Accounts 3
|
|
txna Accounts 2
|
|
!=
|
|
assert
|
|
load 25
|
|
load 26
|
|
intc_0 // 1
|
|
+
|
|
==
|
|
assert
|
|
b main_l23
|
|
main_l27:
|
|
load 28
|
|
bytec_1 // 0x0008
|
|
==
|
|
assert
|
|
load 21
|
|
pushint 3 // 3
|
|
+
|
|
store 21
|
|
bytec 7 // "validUpdateApproveHash"
|
|
txna ApplicationArgs 1
|
|
load 21
|
|
pushint 32 // 32
|
|
extract3
|
|
app_global_put
|
|
b main_l20
|
|
main_l28:
|
|
txna ApplicationArgs 1
|
|
extract 1 4
|
|
store 25
|
|
load 25
|
|
btoi
|
|
load 26
|
|
==
|
|
assert
|
|
b main_l14
|
|
main_l29:
|
|
txna Accounts 2
|
|
txna ApplicationArgs 1
|
|
extract 1 4
|
|
btoi
|
|
bytec_2 // "guardian"
|
|
callsub getsigaddress_9
|
|
==
|
|
assert
|
|
intc_3 // 2
|
|
bytec_2 // "guardian"
|
|
callsub checkMeta_6
|
|
intc_3 // 2
|
|
intc_1 // 0
|
|
callsub getbyte_2
|
|
store 12
|
|
load 12
|
|
intc_1 // 0
|
|
>
|
|
assert
|
|
intc_3 // 2
|
|
intc_0 // 1
|
|
intc_0 // 1
|
|
pushint 20 // 20
|
|
load 12
|
|
*
|
|
+
|
|
callsub read_4
|
|
store 13
|
|
intc_3 // 2
|
|
intc 4 // 1000
|
|
pushint 1008 // 1008
|
|
callsub read_4
|
|
btoi
|
|
store 18
|
|
load 18
|
|
intc_1 // 0
|
|
!=
|
|
bnz main_l50
|
|
main_l30:
|
|
pushbytes 0x00000000 // 0x00000000
|
|
store 17
|
|
txna ApplicationArgs 1
|
|
extract 5 1
|
|
btoi
|
|
store 14
|
|
pushint 6 // 6
|
|
load 14
|
|
pushint 66 // 66
|
|
*
|
|
+
|
|
store 15
|
|
txna ApplicationArgs 1
|
|
load 15
|
|
txna ApplicationArgs 1
|
|
len
|
|
load 15
|
|
-
|
|
extract3
|
|
keccak256
|
|
keccak256
|
|
store 16
|
|
load 12
|
|
intc_1 // 0
|
|
>
|
|
load 14
|
|
load 12
|
|
<=
|
|
&&
|
|
load 14
|
|
load 12
|
|
intc_3 // 2
|
|
*
|
|
pushint 3 // 3
|
|
/
|
|
>
|
|
&&
|
|
assert
|
|
pushint 6 // 6
|
|
store 15
|
|
txn GroupIndex
|
|
intc_1 // 0
|
|
>
|
|
assert
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
store 10
|
|
load 10
|
|
gtxns NumAppArgs
|
|
intc_1 // 0
|
|
>
|
|
assert
|
|
load 10
|
|
gtxnsa ApplicationArgs 0
|
|
store 11
|
|
main_l31:
|
|
load 10
|
|
intc_1 // 0
|
|
>
|
|
load 11
|
|
bytec 5 // "verifySigs"
|
|
==
|
|
load 11
|
|
bytec 4 // "nop"
|
|
==
|
|
||
|
|
&&
|
|
bnz main_l47
|
|
main_l32:
|
|
load 11
|
|
bytec 5 // "verifySigs"
|
|
!=
|
|
load 11
|
|
bytec 4 // "nop"
|
|
!=
|
|
&&
|
|
bnz main_l46
|
|
main_l33:
|
|
load 10
|
|
txn GroupIndex
|
|
<=
|
|
bnz main_l35
|
|
load 15
|
|
pushint 6 // 6
|
|
load 14
|
|
pushint 66 // 66
|
|
*
|
|
+
|
|
==
|
|
assert
|
|
intc_0 // 1
|
|
return
|
|
main_l35:
|
|
load 10
|
|
gtxns TypeEnum
|
|
pushint 6 // appl
|
|
==
|
|
load 10
|
|
gtxns RekeyTo
|
|
global ZeroAddress
|
|
==
|
|
&&
|
|
load 10
|
|
gtxns ApplicationID
|
|
txn ApplicationID
|
|
==
|
|
&&
|
|
load 10
|
|
gtxnsa Accounts 1
|
|
txna Accounts 1
|
|
==
|
|
&&
|
|
load 10
|
|
gtxnsa Accounts 2
|
|
txna Accounts 2
|
|
==
|
|
&&
|
|
assert
|
|
load 10
|
|
gtxnsa ApplicationArgs 0
|
|
store 11
|
|
load 11
|
|
bytec 5 // "verifySigs"
|
|
==
|
|
bnz main_l42
|
|
load 11
|
|
bytec 4 // "nop"
|
|
==
|
|
bnz main_l41
|
|
load 11
|
|
bytec 9 // "verifyVAA"
|
|
==
|
|
bnz main_l41
|
|
intc_0 // 1
|
|
intc_0 // 1
|
|
==
|
|
bnz main_l40
|
|
err
|
|
main_l40:
|
|
intc_1 // 0
|
|
return
|
|
main_l41:
|
|
load 10
|
|
intc_0 // 1
|
|
+
|
|
store 10
|
|
b main_l33
|
|
main_l42:
|
|
load 10
|
|
gtxnsa ApplicationArgs 1
|
|
store 18
|
|
load 18
|
|
len
|
|
intc_1 // 0
|
|
>
|
|
assert
|
|
txna ApplicationArgs 1
|
|
load 15
|
|
load 18
|
|
len
|
|
extract3
|
|
load 18
|
|
==
|
|
assert
|
|
load 15
|
|
load 18
|
|
len
|
|
+
|
|
store 19
|
|
bytec_0 // ""
|
|
store 18
|
|
main_l43:
|
|
load 15
|
|
load 19
|
|
<
|
|
bnz main_l45
|
|
load 10
|
|
gtxnsa ApplicationArgs 2
|
|
load 18
|
|
==
|
|
load 10
|
|
gtxns Sender
|
|
bytec 8 // "vphash"
|
|
app_global_get
|
|
==
|
|
&&
|
|
load 10
|
|
gtxnsa ApplicationArgs 3
|
|
load 16
|
|
==
|
|
&&
|
|
assert
|
|
b main_l41
|
|
main_l45:
|
|
txna ApplicationArgs 1
|
|
load 15
|
|
intc_0 // 1
|
|
extract3
|
|
btoi
|
|
store 20
|
|
load 17
|
|
load 20
|
|
getbit
|
|
intc_1 // 0
|
|
==
|
|
assert
|
|
load 17
|
|
load 20
|
|
intc_0 // 1
|
|
setbit
|
|
store 17
|
|
load 18
|
|
load 13
|
|
load 20
|
|
pushint 20 // 20
|
|
*
|
|
pushint 20 // 20
|
|
extract3
|
|
concat
|
|
store 18
|
|
load 15
|
|
pushint 66 // 66
|
|
+
|
|
store 15
|
|
b main_l43
|
|
main_l46:
|
|
load 10
|
|
intc_0 // 1
|
|
+
|
|
store 10
|
|
b main_l33
|
|
main_l47:
|
|
load 10
|
|
intc_0 // 1
|
|
-
|
|
store 10
|
|
load 10
|
|
gtxns NumAppArgs
|
|
intc_1 // 0
|
|
>
|
|
bnz main_l49
|
|
bytec_0 // ""
|
|
store 11
|
|
b main_l32
|
|
main_l49:
|
|
load 10
|
|
gtxnsa ApplicationArgs 0
|
|
store 11
|
|
b main_l31
|
|
main_l50:
|
|
global LatestTimestamp
|
|
load 18
|
|
<
|
|
assert
|
|
b main_l30
|
|
main_l51:
|
|
txn Sender
|
|
bytec 8 // "vphash"
|
|
app_global_get
|
|
==
|
|
return
|
|
main_l52:
|
|
bytec 8 // "vphash"
|
|
txna ApplicationArgs 2
|
|
app_global_put
|
|
txn Sender
|
|
global CreatorAddress
|
|
==
|
|
assert
|
|
bytec 15 // "booted"
|
|
app_global_get
|
|
intc_1 // 0
|
|
==
|
|
assert
|
|
bytec 15 // "booted"
|
|
pushbytes 0x74727565 // "true"
|
|
app_global_put
|
|
callsub checkForDuplicate_11
|
|
bytec_3 // "currentGuardianSetIndex"
|
|
app_global_get
|
|
store 7
|
|
load 7
|
|
intc_1 // 0
|
|
!=
|
|
bnz main_l67
|
|
main_l53:
|
|
txna ApplicationArgs 1
|
|
extract 5 1
|
|
btoi
|
|
pushint 66 // 66
|
|
*
|
|
pushint 14 // 14
|
|
+
|
|
store 2
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
intc_3 // 2
|
|
extract3
|
|
bytec 11 // 0x0001
|
|
==
|
|
assert
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
intc_3 // 2
|
|
+
|
|
pushint 32 // 32
|
|
extract3
|
|
bytec 12 // 0x0000000000000000000000000000000000000000000000000000000000000004
|
|
==
|
|
assert
|
|
load 2
|
|
pushint 43 // 43
|
|
+
|
|
store 2
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
pushint 32 // 32
|
|
extract3
|
|
bytec 13 // 0x00000000000000000000000000000000000000000000000000000000436f7265
|
|
==
|
|
assert
|
|
load 2
|
|
pushint 32 // 32
|
|
+
|
|
store 2
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
intc_0 // 1
|
|
+
|
|
intc_3 // 2
|
|
extract3
|
|
store 9
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
intc_0 // 1
|
|
extract3
|
|
btoi
|
|
store 3
|
|
load 3
|
|
intc_0 // 1
|
|
==
|
|
bnz main_l66
|
|
load 3
|
|
intc_3 // 2
|
|
==
|
|
bnz main_l61
|
|
load 3
|
|
pushint 3 // 3
|
|
==
|
|
bnz main_l60
|
|
load 3
|
|
pushint 4 // 4
|
|
==
|
|
bnz main_l58
|
|
err
|
|
main_l58:
|
|
load 2
|
|
intc_0 // 1
|
|
+
|
|
store 2
|
|
load 9
|
|
bytec_1 // 0x0008
|
|
==
|
|
assert
|
|
load 2
|
|
pushint 26 // 26
|
|
+
|
|
store 2
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
pushint 8 // 8
|
|
extract3
|
|
btoi
|
|
store 5
|
|
load 2
|
|
pushint 8 // 8
|
|
+
|
|
store 2
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
pushint 32 // 32
|
|
extract3
|
|
store 4
|
|
itxn_begin
|
|
intc_0 // pay
|
|
itxn_field TypeEnum
|
|
load 4
|
|
itxn_field Receiver
|
|
load 5
|
|
itxn_field Amount
|
|
intc_1 // 0
|
|
itxn_field Fee
|
|
itxn_submit
|
|
main_l59:
|
|
intc_0 // 1
|
|
return
|
|
main_l60:
|
|
load 2
|
|
intc_0 // 1
|
|
+
|
|
store 2
|
|
load 9
|
|
bytec_1 // 0x0008
|
|
==
|
|
assert
|
|
load 2
|
|
intc_3 // 2
|
|
+
|
|
pushint 24 // 24
|
|
+
|
|
store 2
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
pushint 8 // 8
|
|
extract3
|
|
btoi
|
|
store 5
|
|
bytec 6 // "MessageFee"
|
|
load 5
|
|
app_global_put
|
|
b main_l59
|
|
main_l61:
|
|
load 9
|
|
bytec_1 // 0x0008
|
|
==
|
|
load 9
|
|
bytec 14 // 0x0000
|
|
==
|
|
||
|
|
assert
|
|
load 2
|
|
pushint 3 // 3
|
|
+
|
|
store 2
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
pushint 4 // 4
|
|
extract3
|
|
btoi
|
|
store 6
|
|
txna Accounts 3
|
|
load 6
|
|
bytec_2 // "guardian"
|
|
callsub getsigaddress_9
|
|
==
|
|
assert
|
|
intc_0 // 1
|
|
intc_1 // 0
|
|
==
|
|
bnz main_l65
|
|
main_l62:
|
|
bytec_3 // "currentGuardianSetIndex"
|
|
load 6
|
|
app_global_put
|
|
load 2
|
|
pushint 4 // 4
|
|
+
|
|
store 2
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
intc_0 // 1
|
|
extract3
|
|
btoi
|
|
store 8
|
|
load 8
|
|
intc_1 // 0
|
|
>
|
|
assert
|
|
pushint 3 // 3
|
|
intc_1 // 0
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
intc_0 // 1
|
|
pushint 20 // 20
|
|
load 8
|
|
*
|
|
+
|
|
extract3
|
|
callsub write_7
|
|
pop
|
|
txna Accounts 3
|
|
txna Accounts 2
|
|
!=
|
|
bnz main_l64
|
|
main_l63:
|
|
pushint 3 // 3
|
|
bytec_2 // "guardian"
|
|
callsub meta_5
|
|
b main_l59
|
|
main_l64:
|
|
intc_3 // 2
|
|
intc 4 // 1000
|
|
global LatestTimestamp
|
|
intc 5 // 86400
|
|
+
|
|
itob
|
|
callsub write_7
|
|
pop
|
|
b main_l63
|
|
main_l65:
|
|
txna Accounts 3
|
|
txna Accounts 2
|
|
!=
|
|
assert
|
|
load 6
|
|
load 7
|
|
intc_0 // 1
|
|
+
|
|
==
|
|
assert
|
|
b main_l62
|
|
main_l66:
|
|
load 9
|
|
bytec_1 // 0x0008
|
|
==
|
|
assert
|
|
load 2
|
|
pushint 3 // 3
|
|
+
|
|
store 2
|
|
bytec 7 // "validUpdateApproveHash"
|
|
txna ApplicationArgs 1
|
|
load 2
|
|
pushint 32 // 32
|
|
extract3
|
|
app_global_put
|
|
b main_l59
|
|
main_l67:
|
|
txna ApplicationArgs 1
|
|
extract 1 4
|
|
store 6
|
|
load 6
|
|
btoi
|
|
load 7
|
|
==
|
|
assert
|
|
b main_l53
|
|
main_l68:
|
|
intc_0 // 1
|
|
return
|
|
main_l69:
|
|
txna Accounts 1
|
|
intc_1 // 0
|
|
txn Sender
|
|
callsub getsigaddress_9
|
|
==
|
|
assert
|
|
bytec 6 // "MessageFee"
|
|
app_global_get
|
|
store 1
|
|
load 1
|
|
intc_1 // 0
|
|
>
|
|
bnz main_l71
|
|
main_l70:
|
|
intc_0 // 1
|
|
intc_1 // 0
|
|
pushint 8 // 8
|
|
callsub read_4
|
|
btoi
|
|
intc_0 // 1
|
|
+
|
|
itob
|
|
store 0
|
|
intc_0 // 1
|
|
intc_1 // 0
|
|
load 0
|
|
callsub write_7
|
|
pop
|
|
load 0
|
|
log
|
|
intc_0 // 1
|
|
bytec 10 // "publishMessage"
|
|
callsub meta_5
|
|
intc_0 // 1
|
|
return
|
|
main_l71:
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxns TypeEnum
|
|
intc_0 // pay
|
|
==
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxns Amount
|
|
load 1
|
|
>=
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxns Receiver
|
|
global CurrentApplicationAddress
|
|
==
|
|
&&
|
|
txn GroupIndex
|
|
intc_0 // 1
|
|
-
|
|
gtxns RekeyTo
|
|
global ZeroAddress
|
|
==
|
|
&&
|
|
assert
|
|
b main_l70
|
|
main_l72:
|
|
callsub optin_10
|
|
return
|
|
main_l73:
|
|
intc_1 // 0
|
|
return
|
|
main_l74:
|
|
bytec 16 // "Program"
|
|
txn ApprovalProgram
|
|
concat
|
|
sha512_256
|
|
bytec 7 // "validUpdateApproveHash"
|
|
app_global_get
|
|
==
|
|
assert
|
|
txn ClearStateProgram
|
|
len
|
|
pushint 4 // 4
|
|
==
|
|
txn ClearStateProgram
|
|
extract 1 3
|
|
pushbytes 0x810143 // 0x810143
|
|
==
|
|
&&
|
|
assert
|
|
intc_0 // 1
|
|
return
|
|
main_l75:
|
|
bytec 6 // "MessageFee"
|
|
intc_1 // 0
|
|
app_global_put
|
|
bytec 8 // "vphash"
|
|
bytec_0 // ""
|
|
app_global_put
|
|
bytec_3 // "currentGuardianSetIndex"
|
|
intc_1 // 0
|
|
app_global_put
|
|
bytec 7 // "validUpdateApproveHash"
|
|
bytec_0 // ""
|
|
app_global_put
|
|
intc_0 // 1
|
|
return
|
|
|
|
// intkey
|
|
intkey_0:
|
|
itob
|
|
extract 7 1
|
|
retsub
|
|
|
|
// zero
|
|
zero_1:
|
|
store 51
|
|
intc_1 // 0
|
|
store 52
|
|
zero_1_l1:
|
|
load 52
|
|
pushint 15 // 15
|
|
<
|
|
bz zero_1_l3
|
|
load 51
|
|
load 52
|
|
callsub intkey_0
|
|
intc_2 // 127
|
|
bzero
|
|
app_local_put
|
|
load 52
|
|
intc_0 // 1
|
|
+
|
|
store 52
|
|
b zero_1_l1
|
|
zero_1_l3:
|
|
retsub
|
|
|
|
// get_byte
|
|
getbyte_2:
|
|
store 29
|
|
load 29
|
|
intc_2 // 127
|
|
/
|
|
callsub intkey_0
|
|
app_local_get
|
|
load 29
|
|
intc_2 // 127
|
|
%
|
|
getbyte
|
|
retsub
|
|
|
|
// set_byte
|
|
setbyte_3:
|
|
store 60
|
|
store 59
|
|
store 58
|
|
load 58
|
|
load 59
|
|
intc_2 // 127
|
|
/
|
|
callsub intkey_0
|
|
load 58
|
|
load 59
|
|
intc_2 // 127
|
|
/
|
|
callsub intkey_0
|
|
app_local_get
|
|
load 59
|
|
intc_2 // 127
|
|
%
|
|
load 60
|
|
setbyte
|
|
app_local_put
|
|
retsub
|
|
|
|
// read
|
|
read_4:
|
|
store 32
|
|
store 31
|
|
store 30
|
|
bytec_0 // ""
|
|
store 34
|
|
load 31
|
|
intc_2 // 127
|
|
/
|
|
store 33
|
|
read_4_l1:
|
|
load 33
|
|
load 32
|
|
intc_2 // 127
|
|
/
|
|
<=
|
|
bz read_4_l9
|
|
load 33
|
|
load 31
|
|
intc_2 // 127
|
|
/
|
|
==
|
|
bnz read_4_l8
|
|
intc_1 // 0
|
|
read_4_l4:
|
|
store 35
|
|
load 33
|
|
load 32
|
|
intc_2 // 127
|
|
/
|
|
==
|
|
bnz read_4_l7
|
|
intc_2 // 127
|
|
read_4_l6:
|
|
store 36
|
|
load 34
|
|
load 30
|
|
load 33
|
|
callsub intkey_0
|
|
app_local_get
|
|
load 35
|
|
load 36
|
|
substring3
|
|
concat
|
|
store 34
|
|
load 33
|
|
intc_0 // 1
|
|
+
|
|
store 33
|
|
b read_4_l1
|
|
read_4_l7:
|
|
load 32
|
|
intc_2 // 127
|
|
%
|
|
b read_4_l6
|
|
read_4_l8:
|
|
load 31
|
|
intc_2 // 127
|
|
%
|
|
b read_4_l4
|
|
read_4_l9:
|
|
load 34
|
|
retsub
|
|
|
|
// meta
|
|
meta_5:
|
|
store 37
|
|
bytec 17 // "meta"
|
|
load 37
|
|
app_local_put
|
|
retsub
|
|
|
|
// checkMeta
|
|
checkMeta_6:
|
|
store 38
|
|
bytec 17 // "meta"
|
|
app_local_get
|
|
load 38
|
|
==
|
|
pushint 145 // 145
|
|
&&
|
|
assert
|
|
retsub
|
|
|
|
// write
|
|
write_7:
|
|
store 41
|
|
store 40
|
|
store 39
|
|
intc_1 // 0
|
|
store 45
|
|
load 40
|
|
intc_2 // 127
|
|
/
|
|
store 42
|
|
write_7_l1:
|
|
load 42
|
|
load 40
|
|
load 41
|
|
len
|
|
+
|
|
intc_2 // 127
|
|
/
|
|
<=
|
|
bz write_7_l12
|
|
load 42
|
|
load 40
|
|
intc_2 // 127
|
|
/
|
|
==
|
|
bnz write_7_l11
|
|
intc_1 // 0
|
|
write_7_l4:
|
|
store 43
|
|
load 42
|
|
load 40
|
|
load 41
|
|
len
|
|
+
|
|
intc_2 // 127
|
|
/
|
|
==
|
|
bnz write_7_l10
|
|
intc_2 // 127
|
|
write_7_l6:
|
|
store 44
|
|
load 39
|
|
load 42
|
|
callsub intkey_0
|
|
load 44
|
|
intc_2 // 127
|
|
!=
|
|
load 43
|
|
intc_1 // 0
|
|
!=
|
|
||
|
|
bnz write_7_l9
|
|
intc_2 // 127
|
|
store 46
|
|
load 41
|
|
load 45
|
|
intc_2 // 127
|
|
extract3
|
|
write_7_l8:
|
|
app_local_put
|
|
load 45
|
|
load 46
|
|
+
|
|
store 45
|
|
load 42
|
|
intc_0 // 1
|
|
+
|
|
store 42
|
|
b write_7_l1
|
|
write_7_l9:
|
|
load 44
|
|
load 43
|
|
-
|
|
store 46
|
|
load 39
|
|
load 42
|
|
callsub intkey_0
|
|
app_local_get
|
|
intc_1 // 0
|
|
load 43
|
|
substring3
|
|
load 41
|
|
load 45
|
|
load 46
|
|
extract3
|
|
concat
|
|
load 39
|
|
load 42
|
|
callsub intkey_0
|
|
app_local_get
|
|
load 44
|
|
intc_2 // 127
|
|
substring3
|
|
concat
|
|
b write_7_l8
|
|
write_7_l10:
|
|
load 40
|
|
load 41
|
|
len
|
|
+
|
|
intc_2 // 127
|
|
%
|
|
b write_7_l6
|
|
write_7_l11:
|
|
load 40
|
|
intc_2 // 127
|
|
%
|
|
b write_7_l4
|
|
write_7_l12:
|
|
load 45
|
|
retsub
|
|
|
|
// encode_uvarint
|
|
encodeuvarint_8:
|
|
store 50
|
|
store 49
|
|
load 50
|
|
load 49
|
|
intc 6 // 128
|
|
>=
|
|
bnz encodeuvarint_8_l2
|
|
load 49
|
|
intc 7 // 255
|
|
&
|
|
itob
|
|
extract 7 1
|
|
b encodeuvarint_8_l3
|
|
encodeuvarint_8_l2:
|
|
load 49
|
|
pushint 7 // 7
|
|
shr
|
|
load 49
|
|
intc 7 // 255
|
|
&
|
|
intc 6 // 128
|
|
|
|
|
itob
|
|
extract 7 1
|
|
load 49
|
|
load 50
|
|
uncover 3
|
|
uncover 3
|
|
callsub encodeuvarint_8
|
|
cover 2
|
|
store 50
|
|
store 49
|
|
encodeuvarint_8_l3:
|
|
concat
|
|
retsub
|
|
|
|
// get_sig_address
|
|
getsigaddress_9:
|
|
store 48
|
|
store 47
|
|
bytec 16 // "Program"
|
|
pushbytes 0x0620010181 // 0x0620010181
|
|
concat
|
|
load 47
|
|
bytec_0 // ""
|
|
callsub encodeuvarint_8
|
|
concat
|
|
pushbytes 0x4880 // 0x4880
|
|
concat
|
|
load 48
|
|
len
|
|
bytec_0 // ""
|
|
callsub encodeuvarint_8
|
|
concat
|
|
load 48
|
|
concat
|
|
pushbytes 0x483110810612443119221244311881 // 0x483110810612443119221244311881
|
|
concat
|
|
global CurrentApplicationID
|
|
bytec_0 // ""
|
|
callsub encodeuvarint_8
|
|
concat
|
|
pushbytes 0x1244312080 // 0x1244312080
|
|
concat
|
|
global CurrentApplicationAddress
|
|
len
|
|
bytec_0 // ""
|
|
callsub encodeuvarint_8
|
|
concat
|
|
global CurrentApplicationAddress
|
|
concat
|
|
pushbytes 0x124431018100124431093203124431153203124422 // 0x124431018100124431093203124431153203124422
|
|
concat
|
|
sha512_256
|
|
retsub
|
|
|
|
// optin
|
|
optin_10:
|
|
gtxn 0 TypeEnum
|
|
intc_0 // pay
|
|
==
|
|
gtxn 0 Amount
|
|
pushint 1002000 // 1002000
|
|
==
|
|
&&
|
|
gtxn 0 Receiver
|
|
gtxn 1 Sender
|
|
==
|
|
&&
|
|
gtxn 1 TypeEnum
|
|
pushint 6 // appl
|
|
==
|
|
&&
|
|
gtxn 1 OnCompletion
|
|
intc_0 // OptIn
|
|
==
|
|
&&
|
|
gtxn 1 ApplicationID
|
|
global CurrentApplicationID
|
|
==
|
|
&&
|
|
gtxn 1 RekeyTo
|
|
global CurrentApplicationAddress
|
|
==
|
|
&&
|
|
gtxn 1 NumAppArgs
|
|
intc_1 // 0
|
|
==
|
|
&&
|
|
assert
|
|
intc_1 // 0
|
|
callsub zero_1
|
|
intc_0 // 1
|
|
retsub
|
|
|
|
// checkForDuplicate
|
|
checkForDuplicate_11:
|
|
txna ApplicationArgs 1
|
|
extract 0 1
|
|
btoi
|
|
intc_0 // 1
|
|
==
|
|
assert
|
|
txna ApplicationArgs 1
|
|
extract 5 1
|
|
btoi
|
|
pushint 66 // 66
|
|
*
|
|
pushint 14 // 14
|
|
+
|
|
store 53
|
|
txna ApplicationArgs 1
|
|
load 53
|
|
pushint 34 // 34
|
|
extract3
|
|
store 54
|
|
txna ApplicationArgs 1
|
|
load 53
|
|
pushint 34 // 34
|
|
+
|
|
pushint 8 // 8
|
|
extract3
|
|
btoi
|
|
store 55
|
|
load 55
|
|
pushint 15240 // 15240
|
|
/
|
|
store 57
|
|
txna Accounts 1
|
|
load 57
|
|
load 54
|
|
callsub getsigaddress_9
|
|
==
|
|
assert
|
|
load 55
|
|
pushint 8 // 8
|
|
/
|
|
pushint 1905 // 1905
|
|
%
|
|
store 57
|
|
intc_0 // 1
|
|
load 57
|
|
callsub getbyte_2
|
|
store 56
|
|
load 56
|
|
load 55
|
|
pushint 8 // 8
|
|
%
|
|
getbit
|
|
intc_1 // 0
|
|
==
|
|
assert
|
|
intc_0 // 1
|
|
load 57
|
|
load 56
|
|
load 55
|
|
pushint 8 // 8
|
|
%
|
|
intc_0 // 1
|
|
setbit
|
|
callsub setbyte_3
|
|
intc_0 // 1
|
|
pushbytes 0x6475706c6963617465 // "duplicate"
|
|
callsub meta_5
|
|
retsub |