Swiftgram/submodules/ton/tonlib-src/crypto/smartcont/auto/restricted-wallet-code.fif
2020-03-02 02:52:41 +04:00

152 lines
4.8 KiB
Plaintext

// automatically generated from `smartcont/stdlib.fc` `smartcont/restricted-wallet-code.fc`
PROGRAM{
DECLPROC recv_internal
DECLPROC restricted?
DECLPROC check_destination
DECLPROC recv_external
85143 DECLMETHOD seqno
78748 DECLMETHOD get_public_key
104128 DECLMETHOD balance
recv_internal PROC:<{
// in_msg
DROP //
}>
restricted? PROC:<{
//
-13 PUSHINT // _1=-13
CONFIGOPTPARAM // p
DUP // p p
ISNULL // p _3
IF:<{ // p
DROP //
TRUE // _4
}>ELSE<{ // p
CTOS // _6
32 PLDU // _8
NOW // _8 _9
GREATER // _4
}>
}>
check_destination PROCREF:<{
// msg dest
SWAP // dest msg
CTOS // dest cs
4 LDU // dest flags cs
SWAP
8 PUSHINT // dest cs flags _8=8
AND // dest cs _9
IFJMP:<{ // dest cs
2DROP //
TRUE // _10
}> // dest cs
LDMSGADDR // dest _27 _26
NIP // dest cs
LDMSGADDR // dest _29 _28
DROP // dest d_addr
REWRITESTDADDR // dest dest_wc dest_addr
SWAP // dest dest_addr dest_wc
-1 EQINT // dest dest_addr _21
s0 s2 XCHG // _21 dest_addr dest
EQUAL // _21 _22
AND // _23
}>
recv_external PROC:<{
// in_msg
9 PUSHPOW2 // in_msg _3=512
LDSLICEX // signature in_msg
DUP // signature in_msg cs
32 LDU // signature in_msg _8 cs
32 LDU // signature in_msg msg_seqno valid_until cs
NOW // signature in_msg msg_seqno valid_until cs _15
s1 s2 XCHG // signature in_msg msg_seqno cs valid_until _15
LEQ // signature in_msg msg_seqno cs _16
35 THROWIF
c4 PUSH // signature in_msg msg_seqno cs _19
CTOS // signature in_msg msg_seqno cs ds
32 LDU // signature in_msg msg_seqno cs _23 ds
256 LDU // signature in_msg msg_seqno cs stored_seqno public_key ds
ENDS
s3 s1 PUSH2 // signature in_msg msg_seqno cs stored_seqno public_key msg_seqno stored_seqno
EQUAL // signature in_msg msg_seqno cs stored_seqno public_key _31
33 THROWIFNOT
s0 s3 XCHG // signature in_msg public_key cs stored_seqno msg_seqno
IFNOTJMP:<{ // signature in_msg public_key cs stored_seqno
NIP
2 2 BLKDROP2 // public_key stored_seqno
ACCEPT
INC // public_key _35
NEWC // public_key _35 _36
32 STU // public_key _38
256 STU // _40
ENDC // _41
c4 POP
}> // signature in_msg public_key cs stored_seqno
s0 s3 XCHG // signature stored_seqno public_key cs in_msg
HASHSU // signature stored_seqno public_key cs _44
s0 s4 s2 XC2PU // cs stored_seqno public_key _44 signature public_key
CHKSIGNU // cs stored_seqno public_key _45
34 THROWIFNOT
ACCEPT
restricted? INLINECALLDICT // cs stored_seqno public_key restrict
1 PUSHINT // cs stored_seqno public_key restrict _51=1
CONFIGOPTPARAM // cs stored_seqno public_key restrict _52
CTOS // cs stored_seqno public_key restrict _53
256 PLDU // cs stored_seqno public_key restrict elector
s0 s4 XCHG // elector stored_seqno public_key restrict cs
WHILE:<{
DUP // elector stored_seqno public_key restrict cs cs
SREFS // elector stored_seqno public_key restrict cs _58
}>DO<{ // elector stored_seqno public_key restrict cs
8 LDU // elector stored_seqno public_key restrict mode cs
LDREF // elector stored_seqno public_key restrict mode msg cs
TRUE // elector stored_seqno public_key restrict mode msg cs ok
s4 PUSH // elector stored_seqno public_key restrict mode msg cs ok restrict
IF:<{ // elector stored_seqno public_key restrict mode msg cs ok
DROP // elector stored_seqno public_key restrict mode msg cs
s1 s6 PUSH2 // elector stored_seqno public_key restrict mode msg cs msg elector
check_destination INLINECALLDICT // elector stored_seqno public_key restrict mode msg cs ok
}> // elector stored_seqno public_key restrict mode msg cs ok
IF:<{ // elector stored_seqno public_key restrict mode msg cs
s0 s2 XCHG // elector stored_seqno public_key restrict cs msg mode
SENDRAWMSG
}>ELSE<{
2 1 BLKDROP2 // elector stored_seqno public_key restrict cs
}>
}> // elector stored_seqno public_key restrict cs
NIP
s3 POP // cs stored_seqno public_key
s0 s2 XCHG // public_key stored_seqno cs
ENDS
INC // public_key _72
NEWC // public_key _72 _73
32 STU // public_key _75
256 STU // _77
ENDC // _78
c4 POP
}>
seqno PROC:<{
//
c4 PUSH // _0
CTOS // _1
32 PLDU // _3
}>
get_public_key PROC:<{
//
c4 PUSH // _1
CTOS // cs
32 LDU // _9 _8
NIP // cs
256 PLDU // _7
}>
balance PROC:<{
//
restricted? INLINECALLDICT // _0
IF:<{ //
0 PUSHINT // _1=0
}>ELSE<{ //
BALANCE // _3
FIRST // _1
}>
}>
}END>c