Created
July 17, 2023 11:25
-
-
Save shubhamkumar13/6dd491c5c4496a4f2eb5f7c1105c1d50 to your computer and use it in GitHub Desktop.
the result of tests
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Cloning into '/home/sk/nuke/test_lpm/dao-jsligo'... | |
Cloning into '/home/sk/nuke/test_lpm/dao-cameligo'... | |
Cloning into '/home/sk/nuke/test_lpm/permit-jsligo'... | |
Cloning into '/home/sk/nuke/test_lpm/permit-cameligo'... | |
{ parameter | |
(or (pair %propose (string %descriptionLink) (option %hash bytes)) | |
(or (option %cancel nat) | |
(or (nat %lock) | |
(or (nat %release) | |
(or (pair %execute (nat %outcomeKey) (bytes %packed)) (or (bool %vote) (unit %endVote))))))) ; | |
storage | |
(pair (big_map %metadata string bytes) | |
(address %governanceToken) | |
(pair %config | |
(nat %depositAmount) | |
(nat %refundThreshold) | |
(nat %quorumThreshold) | |
(nat %superMajority) | |
(nat %startDelay) | |
(nat %votingPeriod) | |
(nat %timelockDelay) | |
(nat %timelockPeriod) | |
(address %burnAddress)) | |
(big_map %vault address nat) | |
(option %proposal | |
(pair (string %descriptionLink) | |
(option %hash bytes) | |
(timestamp %startAt) | |
(timestamp %endAt) | |
(map %votes address (pair bool nat)) | |
(address %creator) | |
(option %timelock (pair (timestamp %unlock_at) (timestamp %relock_at))))) | |
(big_map %outcomes | |
nat | |
(pair (pair (string %descriptionLink) | |
(option %hash bytes) | |
(timestamp %startAt) | |
(timestamp %endAt) | |
(map %votes address (pair bool nat)) | |
(address %creator) | |
(option %timelock (pair (timestamp %unlock_at) (timestamp %relock_at)))) | |
(or (or (unit %accepted) (unit %canceled)) | |
(or (unit %executed) (or %rejected_ (unit %withRefund) (unit %withoutRefund)))))) | |
(nat %nextOutcomeId)) ; | |
code { PUSH string "VOTING_PERIOD" ; | |
PUSH string "NO_PROPOSAL" ; | |
PUSH string "NOT_CREATOR" ; | |
PUSH string "TIMELOCK_NOT_FOUND" ; | |
PUSH string "OUTCOME_NOT_FOUND" ; | |
LAMBDA | |
(pair timestamp timestamp) | |
bool | |
{ DUP ; CDR ; NOW ; COMPARE ; GE ; SWAP ; CAR ; NOW ; COMPARE ; LT ; OR } ; | |
LAMBDA | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
bool | |
{ DUP ; | |
GET 7 ; | |
NOW ; | |
COMPARE ; | |
LT ; | |
SWAP ; | |
GET 5 ; | |
NOW ; | |
COMPARE ; | |
GE ; | |
AND } ; | |
LAMBDA | |
(pair (pair (lambda | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
bool) | |
string) | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
unit | |
{ UNPAIR ; | |
UNPAIR ; | |
DUG 2 ; | |
SWAP ; | |
DIG 2 ; | |
SWAP ; | |
EXEC ; | |
NOT ; | |
IF { DROP ; UNIT } { FAILWITH } } ; | |
DUP 8 ; | |
DUP 3 ; | |
PAIR ; | |
APPLY ; | |
LAMBDA | |
(pair (lambda | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
unit) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))))) | |
unit | |
{ UNPAIR ; SWAP ; IF_NONE { DROP ; UNIT } { EXEC } } ; | |
DUP 2 ; | |
APPLY ; | |
LAMBDA | |
(pair (pair address address) address nat) | |
operation | |
{ UNPAIR ; | |
UNPAIR ; | |
DIG 2 ; | |
UNPAIR ; | |
DIG 2 ; | |
CONTRACT %transfer | |
(list (pair (address %from_) (list %txs (pair (address %to_) (nat %token_id) (nat %amount))))) ; | |
IF_NONE { PUSH string "RECEIVER_NOT_FOUND" ; FAILWITH } {} ; | |
PUSH mutez 0 ; | |
NIL (pair address (list (pair address nat nat))) ; | |
NIL (pair address nat nat) ; | |
DIG 5 ; | |
PUSH nat 0 ; | |
DIG 6 ; | |
PAIR 3 ; | |
CONS ; | |
DIG 4 ; | |
PAIR ; | |
CONS ; | |
TRANSFER_TOKENS } ; | |
LAMBDA | |
(pair (big_map address nat) address) | |
nat | |
{ UNPAIR ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} } ; | |
LAMBDA | |
(pair (lambda (pair (big_map address nat) address) nat) | |
(pair (big_map address nat) address)) | |
nat | |
{ UNPAIR ; | |
SWAP ; | |
EXEC ; | |
PUSH nat 0 ; | |
DUP 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP ; PUSH string "NO_LOCKED_TOKENS" ; FAILWITH } {} } ; | |
DUP 2 ; | |
APPLY ; | |
LAMBDA | |
(pair (pair (big_map address nat) address) nat) | |
(big_map address nat) | |
{ UNPAIR ; UNPAIR ; DIG 2 ; SOME ; DIG 2 ; UPDATE } ; | |
NIL operation ; | |
LAMBDA | |
(pair (big_map address nat) | |
(big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
(pair (big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
{ UNPAIR ; UPDATE 7 } ; | |
LAMBDA | |
(pair nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit)))) | |
(big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
(pair (big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
{ UNPAIR 3 ; | |
DUP 3 ; | |
DIG 3 ; | |
GET 11 ; | |
DIG 3 ; | |
SOME ; | |
DIG 3 ; | |
UPDATE ; | |
UPDATE 11 } ; | |
LAMBDA | |
(pair (pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit)))) | |
(big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
(pair (big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
{ UNPAIR ; | |
UNPAIR ; | |
DUP 2 ; | |
UNIT ; | |
LEFT unit ; | |
LEFT (or unit (or unit unit)) ; | |
COMPARE ; | |
EQ ; | |
IF { DUP 3 ; | |
GET 5 ; | |
GET 13 ; | |
INT ; | |
NOW ; | |
ADD ; | |
SWAP ; | |
DUP 4 ; | |
GET 5 ; | |
GET 15 ; | |
INT ; | |
DUP 3 ; | |
ADD ; | |
DIG 2 ; | |
PAIR ; | |
SOME ; | |
UPDATE 12 } | |
{} ; | |
DUP 3 ; | |
NONE (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) ; | |
UPDATE 9 ; | |
DUP 4 ; | |
GET 11 ; | |
DIG 3 ; | |
DIG 3 ; | |
PAIR ; | |
SOME ; | |
DUP 4 ; | |
GET 12 ; | |
UPDATE ; | |
UPDATE 11 ; | |
PUSH nat 1 ; | |
DIG 2 ; | |
GET 12 ; | |
ADD ; | |
UPDATE 12 } ; | |
DIG 17 ; | |
UNPAIR ; | |
PUSH string "NOT_ZERO_AMOUNT" ; | |
PUSH mutez 0 ; | |
AMOUNT ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 4 ; | |
DIG 5 ; | |
DIG 6 ; | |
DIG 7 ; | |
DIG 8 ; | |
DIG 10 ; | |
DIG 11 ; | |
DIG 12 ; | |
DIG 13 ; | |
DIG 14 ; | |
DIG 15 ; | |
DIG 16 ; | |
DIG 17 ; | |
DIG 18 ; | |
DROP 16 ; | |
DUP 2 ; | |
GET 9 ; | |
IF_NONE | |
{ DUP 2 ; | |
DUP 3 ; | |
GET 5 ; | |
GET 9 ; | |
INT ; | |
NOW ; | |
ADD ; | |
NONE (pair timestamp timestamp) ; | |
SENDER ; | |
EMPTY_MAP address (pair bool nat) ; | |
DUP 7 ; | |
GET 5 ; | |
GET 11 ; | |
INT ; | |
DUP 5 ; | |
ADD ; | |
DIG 4 ; | |
DUP 7 ; | |
CDR ; | |
DIG 7 ; | |
CAR ; | |
PAIR 7 ; | |
SOME ; | |
UPDATE 9 ; | |
NIL operation ; | |
DUP 3 ; | |
GET 5 ; | |
CAR ; | |
SELF_ADDRESS ; | |
PAIR ; | |
SENDER ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } | |
{ DROP 4 ; PUSH string "PROPOSAL_ALREADY_EXISTS" ; FAILWITH } } | |
{ IF_LEFT | |
{ DIG 4 ; | |
DIG 5 ; | |
DIG 6 ; | |
DIG 7 ; | |
DIG 8 ; | |
DIG 10 ; | |
DIG 12 ; | |
DIG 17 ; | |
DIG 18 ; | |
DROP 9 ; | |
IF_NONE | |
{ DIG 2 ; | |
DIG 5 ; | |
DIG 6 ; | |
DIG 7 ; | |
DROP 4 ; | |
DUP ; | |
GET 9 ; | |
IF_NONE | |
{ SWAP ; DIG 3 ; DIG 4 ; DROP 3 ; PUSH string "NOTHING_TO_CANCEL" ; FAILWITH } | |
{ DUP ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
DIG 4 ; | |
SENDER ; | |
DUP 3 ; | |
GET 11 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP 2 ; | |
UNIT ; | |
RIGHT unit ; | |
LEFT (or unit (or unit unit)) ; | |
DIG 2 ; | |
PAIR ; | |
PAIR ; | |
DIG 2 ; | |
SWAP ; | |
EXEC } } | |
{ DIG 2 ; | |
DIG 5 ; | |
DROP 2 ; | |
DUP 2 ; | |
GET 11 ; | |
DUP 2 ; | |
GET ; | |
IF_NONE | |
{ DIG 2 ; DIG 4 ; DIG 6 ; DIG 7 ; DROP 5 ; DIG 2 ; FAILWITH } | |
{ DIG 6 ; | |
DROP ; | |
UNPAIR ; | |
DIG 8 ; | |
SENDER ; | |
DUP 3 ; | |
GET 11 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
PUSH string "ALREADY_EXECUTED" ; | |
UNIT ; | |
LEFT (or unit unit) ; | |
RIGHT (or unit unit) ; | |
DIG 3 ; | |
COMPARE ; | |
NEQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP ; | |
GET 12 ; | |
IF_NONE | |
{ DIG 5 ; DROP ; DIG 5 ; FAILWITH } | |
{ DIG 7 ; | |
DROP ; | |
PUSH string "TIMELOCK_UNLOCKED" ; | |
SWAP ; | |
DIG 7 ; | |
SWAP ; | |
EXEC ; | |
IF { DROP } { FAILWITH } } ; | |
DUP 3 ; | |
UNIT ; | |
RIGHT unit ; | |
LEFT (or unit (or unit unit)) ; | |
DIG 2 ; | |
PAIR ; | |
DIG 2 ; | |
PAIR 3 ; | |
DIG 2 ; | |
SWAP ; | |
EXEC } } ; | |
NIL operation ; | |
DUP 3 ; | |
GET 5 ; | |
CAR ; | |
DUP 4 ; | |
GET 5 ; | |
GET 16 ; | |
PAIR ; | |
SELF_ADDRESS ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } | |
{ DIG 11 ; | |
DIG 16 ; | |
DROP 2 ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 5 ; | |
DIG 7 ; | |
DIG 11 ; | |
DIG 12 ; | |
DIG 13 ; | |
DIG 14 ; | |
DIG 15 ; | |
DIG 16 ; | |
DROP 10 ; | |
DUP 2 ; | |
GET 9 ; | |
DIG 7 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
SENDER ; | |
DUP 3 ; | |
GET 7 ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
DUP 3 ; | |
DUP 3 ; | |
DIG 2 ; | |
ADD ; | |
SENDER ; | |
DUP 5 ; | |
GET 7 ; | |
PAIR ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
NIL operation ; | |
DIG 2 ; | |
SELF_ADDRESS ; | |
PAIR ; | |
SENDER ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } | |
{ DIG 8 ; | |
DROP ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 5 ; | |
DIG 10 ; | |
DIG 11 ; | |
DIG 12 ; | |
DIG 13 ; | |
DIG 14 ; | |
DIG 15 ; | |
DROP 9 ; | |
DUP 2 ; | |
GET 9 ; | |
DIG 7 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
SENDER ; | |
DUP 3 ; | |
GET 7 ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
DUP 2 ; | |
DUP 2 ; | |
COMPARE ; | |
GE ; | |
IF {} { PUSH string "NOT_ENOUGH_BALANCE" ; FAILWITH } ; | |
DUP 3 ; | |
DUP 3 ; | |
DIG 2 ; | |
SUB ; | |
ABS ; | |
SENDER ; | |
DUP 5 ; | |
GET 7 ; | |
PAIR ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
NIL operation ; | |
DIG 2 ; | |
SENDER ; | |
PAIR ; | |
SELF_ADDRESS ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } | |
{ DIG 4 ; | |
DIG 6 ; | |
DIG 9 ; | |
DROP 3 ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 5 ; | |
DIG 6 ; | |
DIG 7 ; | |
DIG 11 ; | |
DIG 12 ; | |
DROP 6 ; | |
UNPAIR ; | |
DUP 3 ; | |
GET 11 ; | |
DUP 2 ; | |
GET ; | |
IF_NONE | |
{ DIG 6 ; FAILWITH } | |
{ DIG 7 ; | |
DROP ; | |
UNPAIR ; | |
SWAP ; | |
UNIT ; | |
LEFT unit ; | |
LEFT (or unit (or unit unit)) ; | |
COMPARE ; | |
EQ ; | |
IF {} { DROP ; PUSH string "NOT_EXECUTABLE" ; FAILWITH } } ; | |
DUP ; | |
GET 12 ; | |
IF_NONE | |
{ DIG 6 ; DROP ; DIG 6 ; FAILWITH } | |
{ DIG 8 ; | |
DROP ; | |
PUSH string "TIMELOCK_LOCKED" ; | |
SWAP ; | |
DIG 8 ; | |
SWAP ; | |
EXEC ; | |
NOT ; | |
IF { DROP } { FAILWITH } } ; | |
DUP ; | |
GET 3 ; | |
IF_NONE | |
{ DIG 2 ; DROP ; PUSH string "HASH_NOT_FOUND" ; FAILWITH } | |
{ PUSH string "HASH_NOT_MATCH" ; | |
DUP 5 ; | |
SHA256 ; | |
DIG 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DIG 2 ; | |
UNPACK | |
(or (lambda %operationList unit (list operation)) | |
(lambda %parameterChange | |
unit | |
(pair (nat %depositAmount) | |
(nat %refundThreshold) | |
(nat %quorumThreshold) | |
(nat %superMajority) | |
(nat %startDelay) | |
(nat %votingPeriod) | |
(nat %timelockDelay) | |
(nat %timelockPeriod) | |
(address %burnAddress)))) ; | |
IF_NONE { PUSH string "UNPACK_MISMATCH" ; FAILWITH } {} } ; | |
IF_LEFT | |
{ DIG 5 ; | |
DROP ; | |
DIG 3 ; | |
UNIT ; | |
LEFT (or unit unit) ; | |
RIGHT (or unit unit) ; | |
DIG 3 ; | |
PAIR ; | |
DIG 3 ; | |
PAIR 3 ; | |
DIG 2 ; | |
SWAP ; | |
EXEC ; | |
UNIT ; | |
DIG 2 ; | |
SWAP ; | |
EXEC } | |
{ DIG 3 ; | |
UNIT ; | |
DIG 2 ; | |
SWAP ; | |
EXEC ; | |
UPDATE 5 ; | |
UNIT ; | |
LEFT (or unit unit) ; | |
RIGHT (or unit unit) ; | |
DIG 2 ; | |
PAIR ; | |
DIG 2 ; | |
PAIR 3 ; | |
EXEC ; | |
SWAP } ; | |
PAIR } | |
{ DIG 3 ; | |
DIG 8 ; | |
DIG 9 ; | |
DIG 10 ; | |
DROP 4 ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 5 ; | |
DIG 8 ; | |
DROP 3 ; | |
DUP 2 ; | |
GET 9 ; | |
IF_NONE | |
{ SWAP ; DIG 3 ; DIG 4 ; DROP 4 ; SWAP ; FAILWITH } | |
{ DIG 6 ; | |
DROP ; | |
PUSH string "NOT_VOTING_PERIOD" ; | |
DUP 2 ; | |
DIG 7 ; | |
SWAP ; | |
EXEC ; | |
IF { DROP } { FAILWITH } ; | |
SENDER ; | |
DUP 4 ; | |
GET 7 ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
DUP 2 ; | |
GET 9 ; | |
SWAP ; | |
DIG 3 ; | |
PAIR ; | |
SOME ; | |
SENDER ; | |
UPDATE ; | |
UPDATE 9 ; | |
SOME ; | |
UPDATE 9 } ; | |
SWAP ; | |
PAIR } | |
{ DIG 3 ; | |
DIG 4 ; | |
DIG 6 ; | |
DROP 4 ; | |
DUP ; | |
GET 9 ; | |
IF_NONE | |
{ SWAP ; DIG 2 ; DIG 4 ; DROP 4 ; FAILWITH } | |
{ DIG 4 ; | |
DROP ; | |
DIG 4 ; | |
DUP 2 ; | |
GET 7 ; | |
NOW ; | |
COMPARE ; | |
GT ; | |
IF { DROP } { FAILWITH } ; | |
DUP 2 ; | |
GET 3 ; | |
UNIT ; | |
VIEW "total_supply" nat ; | |
IF_NONE { PUSH string "FA2_TOTAL_SUPPLY_NOT_FOUND" ; FAILWITH } {} ; | |
PUSH nat 0 ; | |
PUSH nat 0 ; | |
PAIR ; | |
DUP 3 ; | |
GET 9 ; | |
ITER { SWAP ; | |
UNPAIR ; | |
DIG 2 ; | |
CDR ; | |
UNPAIR ; | |
IF { DIG 2 ; SWAP ; DIG 2 ; ADD } { DIG 2 ; ADD ; SWAP } ; | |
PAIR } ; | |
UNPAIR ; | |
DUP 2 ; | |
DUP 2 ; | |
DIG 3 ; | |
DIG 3 ; | |
ADD ; | |
DUP 6 ; | |
GET 5 ; | |
GET 3 ; | |
PUSH nat 100 ; | |
DUP 6 ; | |
DUP 4 ; | |
EDIV ; | |
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; | |
CAR ; | |
MUL ; | |
COMPARE ; | |
LT ; | |
IF { DROP 4 ; UNIT ; RIGHT unit ; RIGHT unit ; RIGHT (or unit unit) } | |
{ DUP 6 ; | |
GET 5 ; | |
GET 5 ; | |
PUSH nat 100 ; | |
DIG 5 ; | |
DUP 4 ; | |
EDIV ; | |
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; | |
CAR ; | |
MUL ; | |
COMPARE ; | |
LT ; | |
DUP 6 ; | |
GET 5 ; | |
GET 7 ; | |
PUSH nat 100 ; | |
DIG 3 ; | |
DUP 5 ; | |
EDIV ; | |
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; | |
CAR ; | |
MUL ; | |
COMPARE ; | |
LT ; | |
OR ; | |
IF { DROP 2 ; UNIT ; LEFT unit ; RIGHT unit ; RIGHT (or unit unit) } | |
{ COMPARE ; | |
GT ; | |
IF { UNIT ; LEFT unit ; LEFT (or unit (or unit unit)) } | |
{ UNIT ; LEFT unit ; RIGHT unit ; RIGHT (or unit unit) } } } ; | |
DUP 2 ; | |
PAIR ; | |
DUP ; | |
CDR ; | |
DIG 2 ; | |
GET 11 ; | |
SWAP ; | |
UNIT ; | |
RIGHT unit ; | |
RIGHT unit ; | |
RIGHT (or unit unit) ; | |
COMPARE ; | |
EQ ; | |
IF { DROP ; DUP 2 ; GET 5 ; GET 16 } {} ; | |
DUP 3 ; | |
DIG 2 ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
NIL operation ; | |
DUP 4 ; | |
GET 5 ; | |
CAR ; | |
DIG 3 ; | |
PAIR ; | |
SELF_ADDRESS ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } } } } } } } } } | |
{ parameter | |
(or (pair %propose (string %description_link) (option %hash bytes)) | |
(or (option %cancel nat) | |
(or (nat %lock) | |
(or (nat %release) | |
(or (pair %execute (nat %outcome_key) (bytes %packed)) | |
(or (bool %vote) (unit %end_vote))))))) ; | |
storage | |
(pair (big_map %metadata string bytes) | |
(address %governance_token) | |
(pair %config | |
(nat %deposit_amount) | |
(nat %refund_threshold) | |
(nat %quorum_threshold) | |
(nat %super_majority) | |
(nat %start_delay) | |
(nat %voting_period) | |
(nat %timelock_delay) | |
(nat %timelock_period) | |
(address %burn_address)) | |
(big_map %vault address nat) | |
(option %proposal | |
(pair (string %description_link) | |
(option %hash bytes) | |
(timestamp %start_at) | |
(timestamp %end_at) | |
(map %votes address (pair bool nat)) | |
(address %creator) | |
(option %timelock (pair (timestamp %unlock_at) (timestamp %relock_at))))) | |
(big_map %outcomes | |
nat | |
(pair (pair (string %description_link) | |
(option %hash bytes) | |
(timestamp %start_at) | |
(timestamp %end_at) | |
(map %votes address (pair bool nat)) | |
(address %creator) | |
(option %timelock (pair (timestamp %unlock_at) (timestamp %relock_at)))) | |
(or (or (unit %accepted) (unit %canceled)) | |
(or (unit %executed) (or %rejected_ (unit %withRefund) (unit %withoutRefund)))))) | |
(nat %next_outcome_id)) ; | |
code { PUSH string "VOTING_PERIOD" ; | |
PUSH string "NO_PROPOSAL" ; | |
PUSH string "NOT_CREATOR" ; | |
PUSH string "TIMELOCK_NOT_FOUND" ; | |
PUSH string "OUTCOME_NOT_FOUND" ; | |
PUSH string "NOT_EXECUTABLE" ; | |
LAMBDA | |
(pair timestamp timestamp) | |
bool | |
{ DUP ; CDR ; NOW ; COMPARE ; GE ; SWAP ; CAR ; NOW ; COMPARE ; LT ; OR } ; | |
LAMBDA | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
bool | |
{ DUP ; | |
GET 7 ; | |
NOW ; | |
COMPARE ; | |
LT ; | |
SWAP ; | |
GET 5 ; | |
NOW ; | |
COMPARE ; | |
GE ; | |
AND } ; | |
LAMBDA | |
(pair (pair (lambda | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
bool) | |
string) | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
unit | |
{ UNPAIR ; | |
UNPAIR ; | |
DUG 2 ; | |
SWAP ; | |
DIG 2 ; | |
SWAP ; | |
EXEC ; | |
NOT ; | |
IF { DROP ; UNIT } { FAILWITH } } ; | |
DUP 9 ; | |
DUP 3 ; | |
PAIR ; | |
APPLY ; | |
LAMBDA | |
(pair (lambda | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
unit) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))))) | |
unit | |
{ UNPAIR ; SWAP ; IF_NONE { DROP ; UNIT } { EXEC } } ; | |
DUP 2 ; | |
APPLY ; | |
LAMBDA | |
(pair (pair address address) address nat) | |
operation | |
{ UNPAIR ; | |
UNPAIR ; | |
DIG 2 ; | |
UNPAIR ; | |
DIG 2 ; | |
CONTRACT %transfer | |
(list (pair (address %from_) (list %txs (pair (address %to_) (nat %token_id) (nat %amount))))) ; | |
IF_NONE { PUSH string "RECEIVER_NOT_FOUND" ; FAILWITH } {} ; | |
PUSH mutez 0 ; | |
NIL (pair address (list (pair address nat nat))) ; | |
NIL (pair address nat nat) ; | |
DIG 5 ; | |
PUSH nat 0 ; | |
DIG 6 ; | |
PAIR 3 ; | |
CONS ; | |
DIG 4 ; | |
PAIR ; | |
CONS ; | |
TRANSFER_TOKENS } ; | |
LAMBDA | |
(pair (big_map address nat) address) | |
nat | |
{ UNPAIR ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} } ; | |
LAMBDA | |
(pair (lambda (pair (big_map address nat) address) nat) | |
(pair (big_map address nat) address)) | |
nat | |
{ UNPAIR ; | |
SWAP ; | |
EXEC ; | |
PUSH nat 0 ; | |
DUP 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP ; PUSH string "NO_LOCKED_TOKENS" ; FAILWITH } {} } ; | |
DUP 2 ; | |
APPLY ; | |
LAMBDA | |
(pair (pair (big_map address nat) address) nat) | |
(big_map address nat) | |
{ UNPAIR ; UNPAIR ; DIG 2 ; SOME ; DIG 2 ; UPDATE } ; | |
NIL operation ; | |
LAMBDA | |
(pair (big_map address nat) | |
(big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
(pair (big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
{ UNPAIR ; UPDATE 7 } ; | |
LAMBDA | |
(pair (pair nat | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit)))) | |
(big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
(pair (big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
{ UNPAIR ; | |
UNPAIR ; | |
DUP 3 ; | |
DIG 3 ; | |
GET 11 ; | |
DIG 3 ; | |
SOME ; | |
DIG 3 ; | |
UPDATE ; | |
UPDATE 11 } ; | |
LAMBDA | |
(pair (pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit)))) | |
(big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
(pair (big_map string bytes) | |
address | |
(pair nat nat nat nat nat nat nat nat address) | |
(big_map address nat) | |
(option | |
(pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp)))) | |
(big_map | |
nat | |
(pair (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) | |
(or (or unit unit) (or unit (or unit unit))))) | |
nat) | |
{ UNPAIR ; | |
UNPAIR ; | |
DUP 2 ; | |
IF_LEFT | |
{ IF_LEFT | |
{ DROP ; | |
DUP 3 ; | |
GET 5 ; | |
GET 13 ; | |
INT ; | |
NOW ; | |
ADD ; | |
SWAP ; | |
DUP 4 ; | |
GET 5 ; | |
GET 15 ; | |
INT ; | |
DUP 3 ; | |
ADD ; | |
DIG 2 ; | |
PAIR ; | |
SOME ; | |
UPDATE 12 } | |
{ DROP } } | |
{ IF_LEFT { DROP } { DROP } } ; | |
DUP 3 ; | |
NONE (pair string | |
(option bytes) | |
timestamp | |
timestamp | |
(map address (pair bool nat)) | |
address | |
(option (pair timestamp timestamp))) ; | |
UPDATE 9 ; | |
DUP 4 ; | |
GET 11 ; | |
DIG 3 ; | |
DIG 3 ; | |
PAIR ; | |
SOME ; | |
DUP 4 ; | |
GET 12 ; | |
UPDATE ; | |
UPDATE 11 ; | |
PUSH nat 1 ; | |
DIG 2 ; | |
GET 12 ; | |
ADD ; | |
UPDATE 12 } ; | |
DIG 18 ; | |
UNPAIR ; | |
PUSH string "NOT_ZERO_AMOUNT" ; | |
PUSH mutez 0 ; | |
AMOUNT ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 4 ; | |
DIG 5 ; | |
DIG 6 ; | |
DIG 7 ; | |
DIG 8 ; | |
DIG 10 ; | |
DIG 11 ; | |
DIG 12 ; | |
DIG 13 ; | |
DIG 14 ; | |
DIG 15 ; | |
DIG 16 ; | |
DIG 17 ; | |
DIG 18 ; | |
DIG 19 ; | |
DROP 17 ; | |
DUP 2 ; | |
GET 9 ; | |
IF_NONE | |
{ DUP 2 ; | |
DUP 3 ; | |
GET 5 ; | |
GET 9 ; | |
INT ; | |
NOW ; | |
ADD ; | |
NONE (pair timestamp timestamp) ; | |
SENDER ; | |
EMPTY_MAP address (pair bool nat) ; | |
DUP 7 ; | |
GET 5 ; | |
GET 11 ; | |
INT ; | |
DUP 5 ; | |
ADD ; | |
DIG 4 ; | |
DUP 7 ; | |
CDR ; | |
DIG 7 ; | |
CAR ; | |
PAIR 7 ; | |
SOME ; | |
UPDATE 9 ; | |
NIL operation ; | |
DUP 3 ; | |
GET 5 ; | |
CAR ; | |
SELF_ADDRESS ; | |
PAIR ; | |
SENDER ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } | |
{ DROP 4 ; PUSH string "PROPOSAL_ALREADY_EXISTS" ; FAILWITH } } | |
{ IF_LEFT | |
{ DIG 4 ; | |
DIG 5 ; | |
DIG 6 ; | |
DIG 7 ; | |
DIG 8 ; | |
DIG 10 ; | |
DIG 12 ; | |
DIG 14 ; | |
DIG 18 ; | |
DIG 19 ; | |
DROP 10 ; | |
IF_NONE | |
{ DIG 2 ; | |
DIG 5 ; | |
DIG 6 ; | |
DIG 7 ; | |
DROP 4 ; | |
DUP ; | |
GET 9 ; | |
IF_NONE | |
{ SWAP ; DIG 3 ; DIG 4 ; DROP 3 ; PUSH string "NOTHING_TO_CANCEL" ; FAILWITH } | |
{ DUP ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
DIG 4 ; | |
SENDER ; | |
DUP 3 ; | |
GET 11 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP 2 ; | |
UNIT ; | |
RIGHT unit ; | |
LEFT (or unit (or unit unit)) ; | |
DIG 2 ; | |
PAIR ; | |
PAIR ; | |
DIG 2 ; | |
SWAP ; | |
EXEC } } | |
{ DIG 2 ; | |
DIG 5 ; | |
DROP 2 ; | |
DUP 2 ; | |
GET 11 ; | |
DUP 2 ; | |
GET ; | |
IF_NONE | |
{ DIG 2 ; DIG 4 ; DIG 6 ; DIG 7 ; DROP 5 ; DIG 2 ; FAILWITH } | |
{ DIG 6 ; | |
DROP ; | |
UNPAIR ; | |
DIG 8 ; | |
SENDER ; | |
DUP 3 ; | |
GET 11 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
PUSH string "ALREADY_EXECUTED" ; | |
UNIT ; | |
LEFT (or unit unit) ; | |
RIGHT (or unit unit) ; | |
DIG 3 ; | |
COMPARE ; | |
NEQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP ; | |
GET 12 ; | |
IF_NONE | |
{ DIG 5 ; DROP ; DIG 5 ; FAILWITH } | |
{ DIG 7 ; | |
DROP ; | |
PUSH string "TIMELOCK_UNLOCKED" ; | |
SWAP ; | |
DIG 7 ; | |
SWAP ; | |
EXEC ; | |
IF { DROP } { FAILWITH } } ; | |
DUP 3 ; | |
UNIT ; | |
RIGHT unit ; | |
LEFT (or unit (or unit unit)) ; | |
DIG 2 ; | |
PAIR ; | |
DIG 2 ; | |
PAIR ; | |
PAIR ; | |
DIG 2 ; | |
SWAP ; | |
EXEC } } ; | |
NIL operation ; | |
DUP 3 ; | |
GET 5 ; | |
CAR ; | |
DUP 4 ; | |
GET 5 ; | |
GET 16 ; | |
PAIR ; | |
SELF_ADDRESS ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } | |
{ DIG 11 ; | |
DIG 17 ; | |
DROP 2 ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 5 ; | |
DIG 7 ; | |
DIG 11 ; | |
DIG 12 ; | |
DIG 13 ; | |
DIG 14 ; | |
DIG 15 ; | |
DIG 16 ; | |
DIG 17 ; | |
DROP 11 ; | |
DUP 2 ; | |
GET 9 ; | |
DIG 7 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
SENDER ; | |
DUP 3 ; | |
GET 7 ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
DUP 3 ; | |
DUP 3 ; | |
DIG 2 ; | |
ADD ; | |
SENDER ; | |
DUP 5 ; | |
GET 7 ; | |
PAIR ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
NIL operation ; | |
DIG 2 ; | |
SELF_ADDRESS ; | |
PAIR ; | |
SENDER ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } | |
{ DIG 8 ; | |
DROP ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 5 ; | |
DIG 10 ; | |
DIG 11 ; | |
DIG 12 ; | |
DIG 13 ; | |
DIG 14 ; | |
DIG 15 ; | |
DIG 16 ; | |
DROP 10 ; | |
DUP 2 ; | |
GET 9 ; | |
DIG 7 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
SENDER ; | |
DUP 3 ; | |
GET 7 ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
DUP 2 ; | |
DUP 2 ; | |
COMPARE ; | |
GE ; | |
IF {} { PUSH string "NOT_ENOUGH_BALANCE" ; FAILWITH } ; | |
DUP 3 ; | |
DUP 3 ; | |
DIG 2 ; | |
SUB ; | |
ABS ; | |
SENDER ; | |
DUP 5 ; | |
GET 7 ; | |
PAIR ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
NIL operation ; | |
DIG 2 ; | |
SENDER ; | |
PAIR ; | |
SELF_ADDRESS ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } | |
{ DIG 4 ; | |
DIG 6 ; | |
DIG 9 ; | |
DROP 3 ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 5 ; | |
DIG 6 ; | |
DIG 7 ; | |
DIG 12 ; | |
DIG 13 ; | |
DROP 6 ; | |
UNPAIR ; | |
DUP 3 ; | |
GET 11 ; | |
DUP 2 ; | |
GET ; | |
IF_NONE | |
{ DIG 6 ; DROP ; DIG 6 ; FAILWITH } | |
{ DIG 8 ; | |
DROP ; | |
UNPAIR ; | |
SWAP ; | |
IF_LEFT | |
{ IF_LEFT { DIG 8 ; DROP 2 } { DROP 2 ; DIG 6 ; FAILWITH } } | |
{ SWAP ; | |
DROP ; | |
IF_LEFT { DROP ; DIG 6 ; FAILWITH } { DROP ; DIG 6 ; FAILWITH } } } ; | |
DUP ; | |
GET 12 ; | |
IF_NONE | |
{ DIG 6 ; DROP ; DIG 6 ; FAILWITH } | |
{ DIG 8 ; | |
DROP ; | |
PUSH string "TIMELOCK_LOCKED" ; | |
SWAP ; | |
DIG 8 ; | |
SWAP ; | |
EXEC ; | |
NOT ; | |
IF { DROP } { FAILWITH } } ; | |
DUP ; | |
GET 3 ; | |
IF_NONE | |
{ DIG 2 ; DROP ; PUSH string "HASH_NOT_FOUND" ; FAILWITH } | |
{ PUSH string "HASH_NOT_MATCH" ; | |
DUP 5 ; | |
SHA256 ; | |
DIG 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DIG 2 ; | |
UNPACK | |
(or (lambda %operationList unit (list operation)) | |
(lambda %parameterChange | |
unit | |
(pair (nat %deposit_amount) | |
(nat %refund_threshold) | |
(nat %quorum_threshold) | |
(nat %super_majority) | |
(nat %start_delay) | |
(nat %voting_period) | |
(nat %timelock_delay) | |
(nat %timelock_period) | |
(address %burn_address)))) ; | |
IF_NONE { PUSH string "UNPACK_MISMATCH" ; FAILWITH } {} } ; | |
IF_LEFT | |
{ DIG 5 ; | |
DROP ; | |
DIG 3 ; | |
UNIT ; | |
LEFT (or unit unit) ; | |
RIGHT (or unit unit) ; | |
DIG 3 ; | |
PAIR ; | |
DIG 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 2 ; | |
SWAP ; | |
EXEC ; | |
UNIT ; | |
DIG 2 ; | |
SWAP ; | |
EXEC } | |
{ DIG 3 ; | |
UNIT ; | |
DIG 2 ; | |
SWAP ; | |
EXEC ; | |
UPDATE 5 ; | |
UNIT ; | |
LEFT (or unit unit) ; | |
RIGHT (or unit unit) ; | |
DIG 2 ; | |
PAIR ; | |
DIG 2 ; | |
PAIR ; | |
PAIR ; | |
EXEC ; | |
SWAP } ; | |
PAIR } | |
{ DIG 3 ; | |
DIG 8 ; | |
DIG 9 ; | |
DIG 10 ; | |
DIG 11 ; | |
DROP 5 ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 5 ; | |
DIG 8 ; | |
DROP 3 ; | |
DUP 2 ; | |
GET 9 ; | |
IF_NONE | |
{ SWAP ; DIG 3 ; DIG 4 ; DROP 4 ; SWAP ; FAILWITH } | |
{ DIG 6 ; | |
DROP ; | |
PUSH string "NOT_VOTING_PERIOD" ; | |
DUP 2 ; | |
DIG 7 ; | |
SWAP ; | |
EXEC ; | |
IF { DROP } { FAILWITH } ; | |
SENDER ; | |
DUP 4 ; | |
GET 7 ; | |
PAIR ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
DUP 2 ; | |
GET 9 ; | |
SWAP ; | |
DIG 3 ; | |
PAIR ; | |
SOME ; | |
SENDER ; | |
UPDATE ; | |
UPDATE 9 ; | |
SOME ; | |
UPDATE 9 } ; | |
SWAP ; | |
PAIR } | |
{ DIG 3 ; | |
DIG 4 ; | |
DIG 6 ; | |
DROP 4 ; | |
DUP ; | |
GET 9 ; | |
IF_NONE | |
{ SWAP ; DIG 2 ; DIG 4 ; DROP 4 ; FAILWITH } | |
{ DIG 4 ; | |
DROP ; | |
DIG 4 ; | |
DUP 2 ; | |
GET 7 ; | |
NOW ; | |
COMPARE ; | |
GT ; | |
IF { DROP } { FAILWITH } ; | |
DUP 2 ; | |
GET 3 ; | |
UNIT ; | |
VIEW "total_supply" nat ; | |
IF_NONE { PUSH string "FA2_TOTAL_SUPPLY_NOT_FOUND" ; FAILWITH } {} ; | |
PUSH nat 0 ; | |
PUSH nat 0 ; | |
PAIR ; | |
DUP 3 ; | |
GET 9 ; | |
ITER { CDR ; | |
UNPAIR ; | |
DIG 2 ; | |
UNPAIR ; | |
DIG 2 ; | |
IF { SWAP ; DUG 2 ; ADD } { DUG 2 ; ADD ; SWAP } ; | |
PAIR } ; | |
UNPAIR ; | |
DUP 2 ; | |
DUP 2 ; | |
DIG 3 ; | |
DIG 3 ; | |
ADD ; | |
DUP 6 ; | |
GET 5 ; | |
GET 3 ; | |
PUSH nat 100 ; | |
DUP 6 ; | |
DUP 4 ; | |
EDIV ; | |
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; | |
CAR ; | |
MUL ; | |
COMPARE ; | |
LT ; | |
IF { DROP 4 ; UNIT ; RIGHT unit ; RIGHT unit ; RIGHT (or unit unit) } | |
{ DUP 6 ; | |
GET 5 ; | |
GET 5 ; | |
PUSH nat 100 ; | |
DIG 5 ; | |
DUP 4 ; | |
EDIV ; | |
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; | |
CAR ; | |
MUL ; | |
COMPARE ; | |
LT ; | |
DUP 6 ; | |
GET 5 ; | |
GET 7 ; | |
PUSH nat 100 ; | |
DIG 3 ; | |
DUP 5 ; | |
EDIV ; | |
IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; | |
CAR ; | |
MUL ; | |
COMPARE ; | |
LT ; | |
OR ; | |
IF { DROP 2 ; UNIT ; LEFT unit ; RIGHT unit ; RIGHT (or unit unit) } | |
{ COMPARE ; | |
GT ; | |
IF { UNIT ; LEFT unit ; LEFT (or unit (or unit unit)) } | |
{ UNIT ; LEFT unit ; RIGHT unit ; RIGHT (or unit unit) } } } ; | |
DUP 2 ; | |
PAIR ; | |
DUP ; | |
CDR ; | |
DUP 4 ; | |
DIG 2 ; | |
PAIR ; | |
DIG 4 ; | |
SWAP ; | |
EXEC ; | |
NIL operation ; | |
DUP 5 ; | |
GET 5 ; | |
CAR ; | |
DIG 3 ; | |
IF_LEFT | |
{ IF_LEFT { DROP ; DIG 3 ; GET 11 } { DROP ; DIG 3 ; GET 11 } } | |
{ IF_LEFT | |
{ DROP ; DIG 3 ; GET 11 } | |
{ IF_LEFT | |
{ DROP ; DIG 3 ; GET 11 } | |
{ DIG 4 ; DROP 2 ; DUP 4 ; GET 5 ; GET 16 } } } ; | |
PAIR ; | |
SELF_ADDRESS ; | |
DIG 4 ; | |
GET 3 ; | |
PAIR ; | |
PAIR ; | |
DIG 3 ; | |
SWAP ; | |
EXEC ; | |
CONS ; | |
PAIR } } } } } } } } } | |
{ parameter | |
(or (or (or (or (pair %balance_of | |
(list %requests (pair (address %owner) (nat %token_id))) | |
(contract %callback | |
(list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))))) | |
(list %burn_token (pair (address %owner) (nat %tokenId) (nat %amount_)))) | |
(or (pair %create_token | |
(pair (pair (nat %token_id) (map %token_info string bytes)) address) | |
nat) | |
(list %mint_token (pair (address %owner) (nat %tokenId) (nat %amount_))))) | |
(or (or (list %permit (pair key signature bytes)) (address %setAdmin)) | |
(or (pair %setExpiry address nat (option bytes)) | |
(list %transfer | |
(pair (address %from_) (list %txs (pair (address %to_) (nat %token_id) (nat %amount)))))))) | |
(list %update_operators | |
(or (pair %add_operator (address %owner) (address %operator) (nat %token_id)) | |
(pair %remove_operator (address %owner) (address %operator) (nat %token_id))))) ; | |
storage | |
(pair (pair (pair (pair %extension | |
(pair (pair (address %admin) (nat %counter)) | |
(nat %defaultExpiry) | |
(big_map %extension nat nat)) | |
(pair (nat %maxExpiry) (big_map %permitExpiries (pair address bytes) (option nat))) | |
(big_map %permits (pair address bytes) timestamp) | |
(big_map %userExpiries address (option nat))) | |
(big_map %ledger (pair address nat) nat)) | |
(big_map %metadata string bytes) | |
(big_map %operators (pair address address) (set nat))) | |
(big_map %token_metadata nat (pair (nat %token_id) (map %token_info string bytes)))) ; | |
code { PUSH string "FA2_TOKEN_UNDEFINED" ; | |
LAMBDA | |
(pair (big_map (pair address nat) nat) address nat) | |
nat | |
{ UNPAIR 3 ; DUG 2 ; PAIR ; GET ; IF_NONE { PUSH nat 0 } {} } ; | |
LAMBDA | |
(pair (big_map (pair address nat) nat) address nat nat) | |
(big_map (pair address nat) nat) | |
{ UNPAIR 4 ; DIG 3 ; SOME ; DIG 3 ; DIG 3 ; PAIR ; UPDATE } ; | |
LAMBDA | |
(pair (pair (lambda | |
(pair (big_map (pair address nat) nat) address nat nat) | |
(big_map (pair address nat) nat)) | |
(lambda (pair (big_map (pair address nat) nat) address nat) nat)) | |
(pair (big_map (pair address nat) nat) address nat nat)) | |
(big_map (pair address nat) nat) | |
{ UNPAIR ; | |
UNPAIR ; | |
DIG 2 ; | |
UNPAIR 4 ; | |
DUP 3 ; | |
DUP 3 ; | |
DUP 3 ; | |
PAIR 3 ; | |
DIG 6 ; | |
SWAP ; | |
EXEC ; | |
DUP 5 ; | |
DUP 2 ; | |
COMPARE ; | |
GE ; | |
IF {} { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } ; | |
DIG 4 ; | |
SWAP ; | |
SUB ; | |
ABS ; | |
DUG 3 ; | |
PAIR 4 ; | |
EXEC } ; | |
DUP 3 ; | |
DUP 3 ; | |
PAIR ; | |
APPLY ; | |
LAMBDA | |
(pair (pair (lambda | |
(pair (big_map (pair address nat) nat) address nat nat) | |
(big_map (pair address nat) nat)) | |
(lambda (pair (big_map (pair address nat) nat) address nat) nat)) | |
(pair (big_map (pair address nat) nat) address nat nat)) | |
(big_map (pair address nat) nat) | |
{ UNPAIR ; | |
UNPAIR ; | |
DIG 2 ; | |
UNPAIR 4 ; | |
DUP 3 ; | |
DUP 3 ; | |
DUP 3 ; | |
PAIR 3 ; | |
DIG 6 ; | |
SWAP ; | |
EXEC ; | |
DIG 4 ; | |
ADD ; | |
DUG 3 ; | |
PAIR 4 ; | |
EXEC } ; | |
DUP 4 ; | |
DUP 4 ; | |
PAIR ; | |
APPLY ; | |
DIG 2 ; | |
DROP ; | |
LAMBDA | |
address | |
unit | |
{ PUSH string "The sender can only manage operators for his own token" ; | |
SENDER ; | |
DIG 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP ; UNIT } { FAILWITH } } ; | |
PUSH string "NOT_AN_ADMIN" ; | |
LAMBDA | |
(pair string (pair (big_map nat nat) nat)) | |
nat | |
{ UNPAIR ; | |
SWAP ; | |
UNPAIR ; | |
SWAP ; | |
GET ; | |
IF_NONE { FAILWITH } { SWAP ; DROP } } ; | |
DUP 7 ; | |
APPLY ; | |
NIL operation ; | |
DIG 8 ; | |
UNPAIR ; | |
IF_LEFT | |
{ DIG 5 ; | |
DROP ; | |
IF_LEFT | |
{ IF_LEFT | |
{ DIG 5 ; | |
DROP ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 4 ; | |
DIG 5 ; | |
DROP 4 ; | |
UNPAIR ; | |
MAP { DUP ; | |
UNPAIR ; | |
DUP 5 ; | |
CDR ; | |
DUP 3 ; | |
GET ; | |
IF_NONE { DUP 7 ; FAILWITH } { DROP } ; | |
DUP 5 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR 3 ; | |
DUP 5 ; | |
SWAP ; | |
EXEC ; | |
SWAP ; | |
PAIR } ; | |
DIG 3 ; | |
DIG 4 ; | |
DROP 2 ; | |
SWAP ; | |
PUSH mutez 0 ; | |
DIG 2 ; | |
TRANSFER_TOKENS ; | |
SWAP ; | |
NIL operation ; | |
DIG 2 ; | |
CONS } | |
{ DIG 6 ; | |
DIG 7 ; | |
DROP 2 ; | |
DIG 4 ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SENDER ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CDR ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR ; | |
SWAP ; | |
ITER { SWAP ; | |
UNPAIR ; | |
DIG 2 ; | |
UNPAIR 3 ; | |
DUP 2 ; | |
DUP 6 ; | |
PAIR ; | |
DUP 9 ; | |
SWAP ; | |
EXEC ; | |
DUP 4 ; | |
SWAP ; | |
SUB ; | |
ABS ; | |
DIG 5 ; | |
SWAP ; | |
SOME ; | |
DUP 4 ; | |
UPDATE ; | |
DUG 3 ; | |
DIG 4 ; | |
PAIR 4 ; | |
DUP 6 ; | |
SWAP ; | |
EXEC ; | |
PAIR } ; | |
DIG 3 ; | |
DIG 4 ; | |
DROP 2 ; | |
UNPAIR ; | |
DUP 3 ; | |
DUP 4 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 4 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DIG 6 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
SWAP } } | |
{ DIG 6 ; | |
DIG 7 ; | |
DROP 2 ; | |
IF_LEFT | |
{ DIG 3 ; | |
DIG 6 ; | |
DROP 2 ; | |
UNPAIR ; | |
UNPAIR ; | |
DIG 5 ; | |
DUP 5 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SENDER ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP ; | |
CAR ; | |
DUP 5 ; | |
CDR ; | |
DUP ; | |
DUP 3 ; | |
MEM ; | |
NOT ; | |
IF {} { PUSH string "TOKEN_ID_ALREADY_PRESENT" ; FAILWITH } ; | |
DUP 3 ; | |
DIG 2 ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
DUP 5 ; | |
SWAP ; | |
UPDATE 2 ; | |
DUP 4 ; | |
DUP 3 ; | |
CAR ; | |
DIG 4 ; | |
DUP 7 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR 4 ; | |
DIG 6 ; | |
SWAP ; | |
EXEC ; | |
SWAP ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
DUG 2 ; | |
CAR ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CDR ; | |
DUG 2 ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
SWAP ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
DIG 4 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } | |
{ DIG 4 ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SENDER ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CDR ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR ; | |
SWAP ; | |
ITER { SWAP ; | |
UNPAIR ; | |
DIG 2 ; | |
UNPAIR 3 ; | |
DUP 6 ; | |
CDR ; | |
DUP 3 ; | |
GET ; | |
IF_NONE { DUP 10 ; FAILWITH } { DROP } ; | |
DUP 2 ; | |
DUP 6 ; | |
PAIR ; | |
DUP 9 ; | |
SWAP ; | |
EXEC ; | |
DUP 4 ; | |
ADD ; | |
DIG 5 ; | |
SWAP ; | |
SOME ; | |
DUP 4 ; | |
UPDATE ; | |
DUG 3 ; | |
DIG 4 ; | |
PAIR 4 ; | |
DUP 6 ; | |
SWAP ; | |
EXEC ; | |
PAIR } ; | |
DIG 3 ; | |
DIG 4 ; | |
DIG 5 ; | |
DROP 3 ; | |
UNPAIR ; | |
DUP 3 ; | |
DUP 4 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 4 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DIG 6 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } ; | |
SWAP } } | |
{ DIG 3 ; | |
DIG 7 ; | |
DROP 2 ; | |
IF_LEFT | |
{ DIG 4 ; | |
DIG 5 ; | |
DIG 6 ; | |
DROP 3 ; | |
IF_LEFT | |
{ DIG 3 ; | |
DROP ; | |
DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SWAP ; | |
ITER { UNPAIR ; | |
SWAP ; | |
UNPAIR ; | |
DUP 2 ; | |
DUP 5 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR ; | |
SELF_ADDRESS ; | |
CHAIN_ID ; | |
PAIR ; | |
PAIR ; | |
PACK ; | |
DUP ; | |
DIG 2 ; | |
DUP 5 ; | |
CHECK_SIGNATURE ; | |
IF { DROP ; | |
SWAP ; | |
HASH_KEY ; | |
IMPLICIT_ACCOUNT ; | |
ADDRESS ; | |
PAIR ; | |
DUP 2 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
DUP 2 ; | |
GET ; | |
IF_NONE | |
{ SWAP ; | |
DUP ; | |
DUP 2 ; | |
CDR ; | |
DUP ; | |
CDR ; | |
DUP 4 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
NOW ; | |
DIG 6 ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 1 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
PUSH nat 1 ; | |
DIG 4 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
ADD ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 } | |
{ DUP 2 ; | |
SWAP ; | |
DUP 5 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
PUSH string "DUP_PERMIT" ; | |
DUP 2 ; | |
CDR ; | |
CAR ; | |
CDR ; | |
DUP 5 ; | |
GET ; | |
IF_NONE | |
{ DUP 2 ; | |
CDR ; | |
CDR ; | |
CDR ; | |
DIG 4 ; | |
CAR ; | |
GET ; | |
IF_NONE | |
{ SWAP ; CAR ; CDR ; CAR } | |
{ IF_NONE { SWAP ; CAR ; CDR ; CAR } { DIG 2 ; DROP } } } | |
{ DIG 4 ; DROP ; IF_NONE { SWAP ; CAR ; CDR ; CAR } { DIG 2 ; DROP } } ; | |
DIG 2 ; | |
NOW ; | |
SUB ; | |
ABS ; | |
COMPARE ; | |
GE ; | |
IF { DROP } { FAILWITH } ; | |
SWAP ; | |
DUP ; | |
DUP 2 ; | |
CDR ; | |
DUP ; | |
CDR ; | |
DUP 4 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
NOW ; | |
SOME ; | |
DIG 6 ; | |
UPDATE ; | |
UPDATE 1 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
PUSH nat 1 ; | |
DIG 4 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
ADD ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 } } | |
{ SWAP ; DIG 2 ; DIG 3 ; DROP 3 ; PUSH string "MISSIGNED" ; PAIR ; FAILWITH } } ; | |
DUP 2 ; | |
DIG 2 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } | |
{ DUP 2 ; | |
DUP 3 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 4 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DIG 6 ; | |
DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SENDER ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 6 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } } | |
{ DIG 3 ; | |
DROP ; | |
IF_LEFT | |
{ DIG 3 ; | |
DIG 4 ; | |
DIG 5 ; | |
DROP 3 ; | |
UNPAIR ; | |
SWAP ; | |
UNPAIR ; | |
DUP 4 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CAR ; | |
CAR ; | |
DUP 2 ; | |
COMPARE ; | |
LE ; | |
IF {} { PUSH string "MAX_SECONDS_EXCEEDED" ; FAILWITH } ; | |
PUSH string "FORBIDDEN_EXPIRY_UPDATE" ; | |
DUP 4 ; | |
SENDER ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
SWAP ; | |
IF_NONE | |
{ DUP 3 ; | |
DUP 4 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP 6 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DUP ; | |
CDR ; | |
DIG 8 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CDR ; | |
CDR ; | |
DIG 7 ; | |
SOME ; | |
DIG 8 ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } | |
{ DUP 4 ; | |
DUP 5 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP 7 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DUP ; | |
CAR ; | |
DIG 9 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CAR ; | |
CDR ; | |
DIG 8 ; | |
SOME ; | |
DIG 8 ; | |
DIG 9 ; | |
PAIR ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } } | |
{ DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR ; | |
SWAP ; | |
ITER { SWAP ; | |
UNPAIR ; | |
DUP 3 ; | |
PACK ; | |
BLAKE2B ; | |
DUP 4 ; | |
CAR ; | |
PAIR ; | |
DIG 2 ; | |
PUSH timestamp 0 ; | |
DUP 2 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
DUP 4 ; | |
GET ; | |
IF_NONE { PUSH timestamp 0 } {} ; | |
COMPARE ; | |
EQ ; | |
IF { SWAP ; DROP ; PUSH bool False ; PAIR } | |
{ DUP ; | |
CDR ; | |
CAR ; | |
CDR ; | |
DUP 3 ; | |
GET ; | |
IF_NONE | |
{ DUP ; | |
CDR ; | |
CDR ; | |
CDR ; | |
DUP 3 ; | |
CAR ; | |
GET ; | |
IF_NONE { DUP ; CAR ; CDR ; CAR ; SOME } {} } | |
{} ; | |
IF_NONE | |
{ DROP 2 ; PUSH string "NO_EXPIRY_FOUND" ; FAILWITH } | |
{ DUP 2 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
DUP 4 ; | |
GET ; | |
IF_NONE { PUSH timestamp 0 } {} ; | |
NOW ; | |
SUB ; | |
ABS ; | |
COMPARE ; | |
LT ; | |
DUP 2 ; | |
DUP 3 ; | |
CDR ; | |
DUP ; | |
CDR ; | |
DIG 4 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
DIG 5 ; | |
NONE timestamp ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 1 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
SWAP ; | |
PAIR } } ; | |
UNPAIR ; | |
DIG 3 ; | |
UNPAIR ; | |
DIG 4 ; | |
DIG 2 ; | |
ITER { UNPAIR 3 ; | |
DUP 8 ; | |
CDR ; | |
DUP 3 ; | |
GET ; | |
IF_NONE { DUP 12 ; FAILWITH } { DROP } ; | |
DUP 6 ; | |
NOT ; | |
IF { SENDER ; | |
DUP 6 ; | |
DUP 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } | |
{ DUP 9 ; | |
CAR ; | |
CDR ; | |
CDR ; | |
SWAP ; | |
DUP 7 ; | |
PAIR ; | |
GET ; | |
IF_NONE { EMPTY_SET nat } {} ; | |
DUP 3 ; | |
MEM ; | |
IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } } ; | |
DUP 3 ; | |
DUP 3 ; | |
DUP 7 ; | |
DIG 6 ; | |
PAIR 4 ; | |
DUP 11 ; | |
SWAP ; | |
EXEC ; | |
PAIR 4 ; | |
DUP 7 ; | |
SWAP ; | |
EXEC } | |
{ DUP 3 ; | |
DUP 3 ; | |
DUP 7 ; | |
DIG 6 ; | |
PAIR 4 ; | |
DUP 11 ; | |
SWAP ; | |
EXEC ; | |
PAIR 4 ; | |
DUP 7 ; | |
SWAP ; | |
EXEC } } ; | |
SWAP ; | |
DIG 2 ; | |
DROP 2 ; | |
PAIR } ; | |
DIG 3 ; | |
DIG 4 ; | |
DIG 5 ; | |
DROP 3 ; | |
UNPAIR ; | |
DUP 3 ; | |
DIG 3 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } } ; | |
SWAP } } | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 4 ; | |
DIG 6 ; | |
DIG 7 ; | |
DIG 8 ; | |
DIG 9 ; | |
DROP 7 ; | |
DUP 2 ; | |
CAR ; | |
CDR ; | |
CDR ; | |
SWAP ; | |
ITER { IF_LEFT | |
{ UNPAIR 3 ; | |
DUP 2 ; | |
DUP 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP 3 } | |
{ DUP ; | |
DUP 7 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
DUP 4 ; | |
DIG 4 ; | |
DUP 4 ; | |
DUP 4 ; | |
PAIR ; | |
GET ; | |
IF_NONE { EMPTY_SET nat } {} ; | |
DIG 4 ; | |
PUSH bool True ; | |
SWAP ; | |
UPDATE ; | |
SOME ; | |
DIG 3 ; | |
DIG 3 ; | |
PAIR ; | |
UPDATE } } | |
{ UNPAIR 3 ; | |
DUP 2 ; | |
DUP 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP 3 } | |
{ DUP ; | |
DUP 7 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
DUP 4 ; | |
DIG 4 ; | |
DUP 4 ; | |
DUP 4 ; | |
PAIR ; | |
GET ; | |
IF_NONE | |
{ DIG 3 ; DROP ; NONE (set nat) } | |
{ DIG 4 ; | |
PUSH bool False ; | |
SWAP ; | |
UPDATE ; | |
PUSH nat 0 ; | |
DUP 2 ; | |
SIZE ; | |
COMPARE ; | |
EQ ; | |
IF { DROP ; NONE (set nat) } { SOME } } ; | |
DIG 3 ; | |
DIG 3 ; | |
PAIR ; | |
UPDATE } } } ; | |
DIG 2 ; | |
DROP ; | |
DUP 2 ; | |
DIG 2 ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
NIL operation } ; | |
PAIR } } | |
{ parameter | |
(or (or (or (or (pair %balance_of | |
(list %requests (pair (address %owner) (nat %token_id))) | |
(contract %callback | |
(list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))))) | |
(list %burn_token (pair (address %owner) (nat %token_id) (nat %amount_)))) | |
(or (pair %create_token | |
(pair (pair (nat %token_id) (map %token_info string bytes)) address) | |
nat) | |
(list %mint_token (pair (address %owner) (nat %token_id) (nat %amount_))))) | |
(or (or (list %permit (pair key signature bytes)) | |
(pair %setExpiry address nat (option bytes))) | |
(or (address %set_admin) | |
(list %transfer | |
(pair (address %from_) (list %txs (pair (address %to_) (nat %token_id) (nat %amount)))))))) | |
(list %update_operators | |
(or (pair %add_operator (address %owner) (address %operator) (nat %token_id)) | |
(pair %remove_operator (address %owner) (address %operator) (nat %token_id))))) ; | |
storage | |
(pair (pair (pair (pair %extension | |
(pair (pair (address %admin) (nat %counter)) | |
(nat %default_expiry) | |
(big_map %extension nat nat)) | |
(pair (nat %max_expiry) (big_map %permit_expiries (pair address bytes) (option nat))) | |
(big_map %permits (pair address bytes) timestamp) | |
(big_map %user_expiries address (option nat))) | |
(big_map %ledger (pair address nat) nat)) | |
(big_map %metadata string bytes) | |
(big_map %operators (pair address address) (set nat))) | |
(big_map %token_metadata nat (pair (nat %token_id) (map %token_info string bytes)))) ; | |
code { PUSH string "FA2_TOKEN_UNDEFINED" ; | |
LAMBDA | |
(pair (big_map (pair address nat) nat) address nat) | |
nat | |
{ UNPAIR 3 ; DUG 2 ; PAIR ; GET ; IF_NONE { PUSH nat 0 } {} } ; | |
LAMBDA | |
(pair (big_map (pair address nat) nat) address nat nat) | |
(big_map (pair address nat) nat) | |
{ UNPAIR 4 ; DIG 3 ; SOME ; DIG 3 ; DIG 3 ; PAIR ; UPDATE } ; | |
LAMBDA | |
(pair (pair (lambda | |
(pair (big_map (pair address nat) nat) address nat nat) | |
(big_map (pair address nat) nat)) | |
(lambda (pair (big_map (pair address nat) nat) address nat) nat)) | |
(pair (big_map (pair address nat) nat) address nat nat)) | |
(big_map (pair address nat) nat) | |
{ UNPAIR ; | |
UNPAIR ; | |
DIG 2 ; | |
UNPAIR 4 ; | |
DUP 3 ; | |
DUP 3 ; | |
DUP 3 ; | |
PAIR 3 ; | |
DIG 6 ; | |
SWAP ; | |
EXEC ; | |
DUP 5 ; | |
DUP 2 ; | |
COMPARE ; | |
GE ; | |
IF {} { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } ; | |
DIG 4 ; | |
SWAP ; | |
SUB ; | |
ABS ; | |
DUG 3 ; | |
PAIR 4 ; | |
EXEC } ; | |
DUP 3 ; | |
DUP 3 ; | |
PAIR ; | |
APPLY ; | |
LAMBDA | |
(pair (pair (lambda | |
(pair (big_map (pair address nat) nat) address nat nat) | |
(big_map (pair address nat) nat)) | |
(lambda (pair (big_map (pair address nat) nat) address nat) nat)) | |
(pair (big_map (pair address nat) nat) address nat nat)) | |
(big_map (pair address nat) nat) | |
{ UNPAIR ; | |
UNPAIR ; | |
DIG 2 ; | |
UNPAIR 4 ; | |
DUP 3 ; | |
DUP 3 ; | |
DUP 3 ; | |
PAIR 3 ; | |
DIG 6 ; | |
SWAP ; | |
EXEC ; | |
DIG 4 ; | |
ADD ; | |
DUG 3 ; | |
PAIR 4 ; | |
EXEC } ; | |
DUP 4 ; | |
DUP 4 ; | |
PAIR ; | |
APPLY ; | |
DIG 2 ; | |
DROP ; | |
LAMBDA | |
address | |
unit | |
{ PUSH string "The sender can only manage operators for his own token" ; | |
SENDER ; | |
DIG 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP ; UNIT } { FAILWITH } } ; | |
PUSH string "NOT_AN_ADMIN" ; | |
NIL operation ; | |
LAMBDA | |
(pair string (pair (big_map nat nat) nat)) | |
nat | |
{ UNPAIR ; | |
SWAP ; | |
UNPAIR ; | |
SWAP ; | |
GET ; | |
IF_NONE { FAILWITH } { SWAP ; DROP } } ; | |
DUP 8 ; | |
APPLY ; | |
DIG 8 ; | |
UNPAIR ; | |
IF_LEFT | |
{ DIG 5 ; | |
DROP ; | |
IF_LEFT | |
{ IF_LEFT | |
{ DIG 5 ; | |
DROP ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 4 ; | |
DIG 5 ; | |
DROP 4 ; | |
UNPAIR ; | |
MAP { DUP ; | |
UNPAIR ; | |
DUP 5 ; | |
CDR ; | |
DUP 3 ; | |
GET ; | |
IF_NONE { DUP 7 ; FAILWITH } { DROP } ; | |
DUP 5 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR 3 ; | |
DUP 5 ; | |
SWAP ; | |
EXEC ; | |
SWAP ; | |
PAIR } ; | |
DIG 3 ; | |
DIG 4 ; | |
DROP 2 ; | |
SWAP ; | |
PUSH mutez 0 ; | |
DIG 2 ; | |
TRANSFER_TOKENS ; | |
SWAP ; | |
NIL operation ; | |
DIG 2 ; | |
CONS } | |
{ DIG 6 ; | |
DIG 7 ; | |
DROP 2 ; | |
DIG 4 ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SENDER ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CDR ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR ; | |
SWAP ; | |
ITER { UNPAIR 3 ; | |
DIG 3 ; | |
UNPAIR ; | |
DUP 4 ; | |
DUP 3 ; | |
PAIR ; | |
DUP 8 ; | |
SWAP ; | |
EXEC ; | |
DUP 6 ; | |
SWAP ; | |
SUB ; | |
ABS ; | |
DIG 2 ; | |
SWAP ; | |
SOME ; | |
DUP 5 ; | |
UPDATE ; | |
DUG 4 ; | |
PAIR 4 ; | |
DUP 6 ; | |
SWAP ; | |
EXEC ; | |
PAIR } ; | |
DIG 2 ; | |
DIG 4 ; | |
DROP 2 ; | |
UNPAIR ; | |
DUP 3 ; | |
DIG 3 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
DUP ; | |
DUP 2 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DIG 6 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
SWAP } } | |
{ DIG 6 ; | |
DIG 7 ; | |
DROP 2 ; | |
IF_LEFT | |
{ DIG 2 ; | |
DIG 6 ; | |
DROP 2 ; | |
UNPAIR ; | |
UNPAIR ; | |
DIG 5 ; | |
DUP 5 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SENDER ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP ; | |
CAR ; | |
DUP 5 ; | |
CDR ; | |
DUP ; | |
DUP 3 ; | |
MEM ; | |
NOT ; | |
IF {} { PUSH string "TOKEN_ID_ALREADY_PRESENT" ; FAILWITH } ; | |
DIG 5 ; | |
SWAP ; | |
DUP 4 ; | |
DIG 3 ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 2 ; | |
DUP 4 ; | |
DUP 3 ; | |
CAR ; | |
DIG 4 ; | |
DUP 4 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR 4 ; | |
DIG 5 ; | |
SWAP ; | |
EXEC ; | |
DUP 2 ; | |
DIG 2 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
DUP ; | |
DUP 2 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP 4 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DIG 6 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CDR ; | |
DIG 8 ; | |
DIG 8 ; | |
CAR ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } | |
{ DIG 4 ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SENDER ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CDR ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR ; | |
SWAP ; | |
ITER { UNPAIR 3 ; | |
DIG 3 ; | |
UNPAIR ; | |
DUP 6 ; | |
CDR ; | |
DUP 5 ; | |
GET ; | |
IF_NONE { DUP 10 ; FAILWITH } { DROP } ; | |
DUP 4 ; | |
DUP 3 ; | |
PAIR ; | |
DUP 8 ; | |
SWAP ; | |
EXEC ; | |
DUP 6 ; | |
ADD ; | |
DIG 2 ; | |
SWAP ; | |
SOME ; | |
DUP 5 ; | |
UPDATE ; | |
DUG 4 ; | |
PAIR 4 ; | |
DUP 6 ; | |
SWAP ; | |
EXEC ; | |
PAIR } ; | |
DIG 2 ; | |
DIG 4 ; | |
DIG 5 ; | |
DROP 3 ; | |
UNPAIR ; | |
DUP 3 ; | |
DIG 3 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
DUP ; | |
DUP 2 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DIG 6 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } ; | |
SWAP } } | |
{ DIG 2 ; | |
DIG 7 ; | |
DROP 2 ; | |
IF_LEFT | |
{ DIG 3 ; | |
DIG 4 ; | |
DIG 5 ; | |
DIG 6 ; | |
DROP 4 ; | |
IF_LEFT | |
{ DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SWAP ; | |
ITER { UNPAIR ; | |
SWAP ; | |
UNPAIR ; | |
DUP 2 ; | |
DUP 5 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR ; | |
SELF_ADDRESS ; | |
CHAIN_ID ; | |
PAIR ; | |
PAIR ; | |
PACK ; | |
DUP ; | |
DIG 2 ; | |
DUP 5 ; | |
CHECK_SIGNATURE ; | |
IF { DROP ; | |
SWAP ; | |
HASH_KEY ; | |
IMPLICIT_ACCOUNT ; | |
ADDRESS ; | |
PAIR ; | |
DUP 2 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
DUP 2 ; | |
GET ; | |
IF_NONE | |
{ NOW ; | |
DUP 3 ; | |
DUP 4 ; | |
CDR ; | |
DUP ; | |
CDR ; | |
DUP 6 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
DIG 4 ; | |
DIG 5 ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 1 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
PUSH nat 1 ; | |
DIG 4 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
ADD ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 } | |
{ DUP 4 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP 3 ; | |
UNPAIR ; | |
DUP 3 ; | |
CDR ; | |
CAR ; | |
CDR ; | |
DIG 2 ; | |
DUP 3 ; | |
PAIR ; | |
GET ; | |
IF_NONE | |
{ DUP 2 ; | |
CDR ; | |
CDR ; | |
CDR ; | |
SWAP ; | |
GET ; | |
IF_NONE { DUP ; CAR ; CDR ; CAR ; SOME } {} ; | |
IF_NONE { CAR ; CDR ; CAR } { SWAP ; DROP } } | |
{ SWAP ; DROP ; IF_NONE { CAR ; CDR ; CAR } { SWAP ; DROP } } ; | |
SWAP ; | |
NOW ; | |
SUB ; | |
ABS ; | |
COMPARE ; | |
LT ; | |
IF { PUSH string "DUP_PERMIT" ; FAILWITH } {} ; | |
NOW ; | |
DUP 3 ; | |
DUP 4 ; | |
CDR ; | |
DUP ; | |
CDR ; | |
DUP 6 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
DIG 4 ; | |
SOME ; | |
DIG 5 ; | |
UPDATE ; | |
UPDATE 1 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
PUSH nat 1 ; | |
DIG 4 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
ADD ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 } } | |
{ SWAP ; DIG 2 ; DIG 3 ; DROP 3 ; PUSH string "MISSIGNED" ; PAIR ; FAILWITH } } ; | |
DUP 2 ; | |
DIG 2 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } | |
{ UNPAIR ; | |
SWAP ; | |
UNPAIR ; | |
DUP 4 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CAR ; | |
CAR ; | |
DUP 2 ; | |
COMPARE ; | |
GT ; | |
IF { DROP 4 ; PUSH string "MAX_SECONDS_EXCEEDED" ; FAILWITH } | |
{ DUP 3 ; | |
SENDER ; | |
COMPARE ; | |
NEQ ; | |
IF { DROP 4 ; PUSH string "FORBIDDEN_EXPIRY_UPDATE" ; FAILWITH } | |
{ SWAP ; | |
IF_NONE | |
{ DUP 3 ; | |
DUP 4 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP 6 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DUP ; | |
CDR ; | |
DIG 8 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CDR ; | |
CDR ; | |
DIG 7 ; | |
SOME ; | |
DIG 8 ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } | |
{ DUP 4 ; | |
DUP 5 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DUP 7 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DUP ; | |
CAR ; | |
DIG 9 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
CDR ; | |
CAR ; | |
CDR ; | |
DIG 8 ; | |
SOME ; | |
DIG 8 ; | |
DIG 9 ; | |
PAIR ; | |
SWAP ; | |
SOME ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } } } } } | |
{ IF_LEFT | |
{ DIG 4 ; | |
DIG 5 ; | |
DIG 6 ; | |
DROP 3 ; | |
DUP 2 ; | |
DUP 3 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 4 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DIG 6 ; | |
DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
SENDER ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } { FAILWITH } ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 6 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } | |
{ DIG 3 ; | |
DROP ; | |
DUP 2 ; | |
CAR ; | |
CAR ; | |
CAR ; | |
DUP 3 ; | |
CAR ; | |
CAR ; | |
CDR ; | |
PAIR ; | |
SWAP ; | |
ITER { SWAP ; | |
UNPAIR ; | |
DUP 3 ; | |
PACK ; | |
BLAKE2B ; | |
DUP 4 ; | |
CAR ; | |
PAIR ; | |
DUP 3 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
DUP 2 ; | |
GET ; | |
IF_NONE { PUSH timestamp 0 } {} ; | |
PUSH timestamp 0 ; | |
DUP 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP 2 ; SWAP ; PUSH bool False ; PAIR } | |
{ DUP 4 ; | |
CDR ; | |
CAR ; | |
CDR ; | |
DUP 3 ; | |
GET ; | |
IF_NONE | |
{ DUP 4 ; | |
CDR ; | |
CDR ; | |
CDR ; | |
DUP 3 ; | |
CAR ; | |
GET ; | |
IF_NONE { DUP 4 ; CAR ; CDR ; CAR ; SOME } {} } | |
{} ; | |
IF_NONE | |
{ SWAP ; DIG 3 ; DROP 3 ; PUSH string "NO_EXPIRY_FOUND" ; FAILWITH } | |
{ SWAP ; | |
NOW ; | |
SUB ; | |
ABS ; | |
COMPARE ; | |
LT ; | |
DUP 4 ; | |
DUP 5 ; | |
CDR ; | |
DUP ; | |
CDR ; | |
DIG 6 ; | |
CDR ; | |
CDR ; | |
CAR ; | |
DIG 5 ; | |
NONE timestamp ; | |
SWAP ; | |
UPDATE ; | |
UPDATE 1 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
SWAP ; | |
PAIR } } ; | |
UNPAIR ; | |
DIG 3 ; | |
UNPAIR ; | |
DIG 4 ; | |
DIG 2 ; | |
ITER { UNPAIR 3 ; | |
DUP 8 ; | |
CDR ; | |
DUP 3 ; | |
GET ; | |
IF_NONE { DUP 12 ; FAILWITH } { DROP } ; | |
DUP 6 ; | |
NOT ; | |
IF { SENDER ; | |
DUP 6 ; | |
DUP 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP } | |
{ DUP 9 ; | |
CAR ; | |
CDR ; | |
CDR ; | |
SWAP ; | |
DUP 7 ; | |
PAIR ; | |
GET ; | |
IF_NONE { EMPTY_SET nat } {} ; | |
DUP 3 ; | |
MEM ; | |
IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } } } | |
{} ; | |
DUP 3 ; | |
DUP 3 ; | |
DUP 7 ; | |
DIG 6 ; | |
PAIR 4 ; | |
DUP 11 ; | |
SWAP ; | |
EXEC ; | |
PAIR 4 ; | |
DUP 7 ; | |
SWAP ; | |
EXEC } ; | |
SWAP ; | |
DIG 2 ; | |
DROP 2 ; | |
PAIR } ; | |
DIG 3 ; | |
DIG 4 ; | |
DIG 5 ; | |
DROP 3 ; | |
UNPAIR ; | |
DUP 3 ; | |
DIG 3 ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
DUP ; | |
CAR ; | |
DUP ; | |
CAR ; | |
DIG 3 ; | |
UPDATE 1 ; | |
UPDATE 1 ; | |
UPDATE 1 } } ; | |
SWAP } } | |
{ DIG 2 ; | |
DIG 3 ; | |
DIG 4 ; | |
DIG 6 ; | |
DIG 7 ; | |
DIG 8 ; | |
DIG 9 ; | |
DROP 7 ; | |
DUP 2 ; | |
CAR ; | |
CDR ; | |
CDR ; | |
SWAP ; | |
ITER { IF_LEFT | |
{ UNPAIR 3 ; | |
DUP 2 ; | |
DUP 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP 3 } | |
{ DUP ; | |
DUP 7 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
DUP 4 ; | |
DIG 4 ; | |
DUP 4 ; | |
DUP 4 ; | |
PAIR ; | |
GET ; | |
IF_NONE { EMPTY_SET nat } {} ; | |
DIG 4 ; | |
PUSH bool True ; | |
SWAP ; | |
UPDATE ; | |
SOME ; | |
DIG 3 ; | |
DIG 3 ; | |
PAIR ; | |
UPDATE } } | |
{ UNPAIR 3 ; | |
DUP 2 ; | |
DUP 2 ; | |
COMPARE ; | |
EQ ; | |
IF { DROP 3 } | |
{ DUP ; | |
DUP 7 ; | |
SWAP ; | |
EXEC ; | |
DROP ; | |
DUP 4 ; | |
DIG 4 ; | |
DUP 4 ; | |
DUP 4 ; | |
PAIR ; | |
GET ; | |
IF_NONE | |
{ DIG 3 ; DROP ; NONE (set nat) } | |
{ DIG 4 ; | |
PUSH bool False ; | |
SWAP ; | |
UPDATE ; | |
PUSH nat 0 ; | |
DUP 2 ; | |
SIZE ; | |
COMPARE ; | |
EQ ; | |
IF { DROP ; NONE (set nat) } { SOME } } ; | |
DIG 3 ; | |
DIG 3 ; | |
PAIR ; | |
UPDATE } } } ; | |
DIG 2 ; | |
DROP ; | |
DUP 2 ; | |
DIG 2 ; | |
CAR ; | |
DUP ; | |
CDR ; | |
DIG 3 ; | |
UPDATE 2 ; | |
UPDATE 2 ; | |
UPDATE 1 ; | |
NIL operation } ; | |
PAIR } } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment