From 70ab46a8cbed6033e95ac175bdf7db89b2446236 Mon Sep 17 00:00:00 2001 From: yshohruh093-createj Date: Sat, 2 Aug 2025 08:10:28 +0500 Subject: [PATCH 1/8] Create alpcoin.fc Hello --- ft/ft/alpcoin.fc | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 ft/ft/alpcoin.fc diff --git a/ft/ft/alpcoin.fc b/ft/ft/alpcoin.fc new file mode 100644 index 0000000..93b7ef5 --- /dev/null +++ b/ft/ft/alpcoin.fc @@ -0,0 +1,4 @@ +;; Alpcoin Jetton Contract - boshlang'ich +() => { + throw("Alpcoin Jetton kontrakti tayyorlanmoqda."); +} From fc6cb830112be72b9b1b76ea768bf6f30e9508c7 Mon Sep 17 00:00:00 2001 From: yshohruh093-createj Date: Sat, 2 Aug 2025 08:15:51 +0500 Subject: [PATCH 2/8] Create alpcoin.fc Assalomu alaykum --- alpcoin.fc | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 alpcoin.fc diff --git a/alpcoin.fc b/alpcoin.fc new file mode 100644 index 0000000..93b7ef5 --- /dev/null +++ b/alpcoin.fc @@ -0,0 +1,4 @@ +;; Alpcoin Jetton Contract - boshlang'ich +() => { + throw("Alpcoin Jetton kontrakti tayyorlanmoqda."); +} From d375dbf474ad3e39f2ff8f79dd97173851f232e3 Mon Sep 17 00:00:00 2001 From: yshohruh093-createj Date: Sat, 2 Aug 2025 13:27:53 +0500 Subject: [PATCH 3/8] Delete ft directory --- ft/build/burn-token.fif | 10 - ft/build/jetton-discovery.fif | 172 ---------- ft/build/jetton-minter-ICO.fif | 256 --------------- ft/build/jetton-minter-discoverable.fif | 335 ------------------- ft/build/jetton-minter.fif | 252 -------------- ft/build/jetton-wallet.boc | Bin 836 -> 0 bytes ft/build/jetton-wallet.fif | 417 ------------------------ ft/build/new-wton.fif | 36 -- ft/build/print-hex.fif | 31 -- ft/build/send-token.fif | 10 - ft/build/wton.addr | Bin 36 -> 0 bytes ft/compile.sh | 8 - ft/discovery-params.fc | 10 - ft/ft/alpcoin.fc | 4 - ft/jetton-discovery.fc | 70 ---- ft/jetton-minter-ICO.fc | 121 ------- ft/jetton-minter-discoverable.fc | 150 --------- ft/jetton-minter.fc | 117 ------- ft/jetton-utils.fc | 30 -- ft/jetton-wallet.fc | 248 -------------- ft/op-codes.fc | 9 - ft/params.fc | 6 - 22 files changed, 2292 deletions(-) delete mode 100644 ft/build/burn-token.fif delete mode 100644 ft/build/jetton-discovery.fif delete mode 100644 ft/build/jetton-minter-ICO.fif delete mode 100644 ft/build/jetton-minter-discoverable.fif delete mode 100644 ft/build/jetton-minter.fif delete mode 100644 ft/build/jetton-wallet.boc delete mode 100644 ft/build/jetton-wallet.fif delete mode 100644 ft/build/new-wton.fif delete mode 100644 ft/build/print-hex.fif delete mode 100644 ft/build/send-token.fif delete mode 100644 ft/build/wton.addr delete mode 100755 ft/compile.sh delete mode 100644 ft/discovery-params.fc delete mode 100644 ft/ft/alpcoin.fc delete mode 100644 ft/jetton-discovery.fc delete mode 100644 ft/jetton-minter-ICO.fc delete mode 100644 ft/jetton-minter-discoverable.fc delete mode 100644 ft/jetton-minter.fc delete mode 100644 ft/jetton-utils.fc delete mode 100644 ft/jetton-wallet.fc delete mode 100644 ft/op-codes.fc delete mode 100644 ft/params.fc diff --git a/ft/build/burn-token.fif b/ft/build/burn-token.fif deleted file mode 100644 index 8bd61ae..0000000 --- a/ft/build/burn-token.fif +++ /dev/null @@ -1,10 +0,0 @@ -"Asm.fif" include -"TonUtil.fif" include -smca 2drop Addr, -b> -2 boc+>B - -"burn-token.boc" B>file - - diff --git a/ft/build/jetton-discovery.fif b/ft/build/jetton-discovery.fif deleted file mode 100644 index ee85b39..0000000 --- a/ft/build/jetton-discovery.fif +++ /dev/null @@ -1,172 +0,0 @@ -"Asm.fif" include -// automatically generated from `../stdlib.fc` `params.fc` `op-codes.fc` `discovery-params.fc` `jetton-utils.fc` `jetton-discovery.fc` -PROGRAM{ - DECLPROC force_chain - DECLPROC is_resolvable? - DECLPROC pack_jetton_wallet_data - DECLPROC calculate_jetton_wallet_state_init - DECLPROC calculate_jetton_wallet_address - DECLPROC calculate_user_jetton_wallet_address - DECLPROC load_data - DECLPROC recv_internal - force_chain PROC:<{ - // addr - REWRITESTDADDR // _8 _9 - DROP // wc - 0 PUSHINT // wc _5 - EQUAL // _6 - 333 THROWIFNOT - }> - is_resolvable? PROCINLINE:<{ - // addr - REWRITESTDADDR // _6 _7 - DROP // wc - 0 PUSHINT // wc _4 - EQUAL // _5 - }> - pack_jetton_wallet_data PROCINLINE:<{ - // balance owner_address jetton_master_address jetton_wallet_code - NEWC // balance owner_address jetton_master_address jetton_wallet_code _4 - s0 s4 XCHG2 // jetton_wallet_code owner_address jetton_master_address _4 balance - STVARUINT16 // jetton_wallet_code owner_address jetton_master_address _5 - ROT // jetton_wallet_code jetton_master_address _5 owner_address - STSLICER // jetton_wallet_code jetton_master_address _6 - SWAP // jetton_wallet_code _6 jetton_master_address - STSLICER // jetton_wallet_code _7 - STREF // _8 - ENDC // _9 - }> - calculate_jetton_wallet_state_init PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - 0 PUSHINT // owner_address jetton_master_address jetton_wallet_code _3=0 - s0 s1 s2 XCPUXC - s4 s0 s3 XC2PU // _3=0 jetton_wallet_code _4=0 owner_address jetton_master_address jetton_wallet_code - pack_jetton_wallet_data INLINECALLDICT // _3=0 jetton_wallet_code _5 - s2 PUSH // _3=0 jetton_wallet_code _5 _6=0 - NEWC // _3=0 jetton_wallet_code _5 _6=0 _7 - 2 STU // _3=0 jetton_wallet_code _5 _9 - s1 s2 XCHG // _3=0 _5 jetton_wallet_code _9 - STDICT // _3=0 _5 _10 - STDICT // _3=0 _11 - 1 STU // _13 - ENDC // _14 - }> - calculate_jetton_wallet_address PROCINLINE:<{ - // state_init - HASHCU // _1 - 0 PUSHINT // _1 _2 - 4 PUSHINT // _1 _2 _3=4 - NEWC // _1 _2 _3=4 _4 - 3 STU // _1 _2 _6 - 8 STI // _1 _8 - 256 STU // _10 - ENDC // _11 - CTOS // _12 - }> - calculate_user_jetton_wallet_address PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - calculate_jetton_wallet_state_init INLINECALLDICT // _3 - calculate_jetton_wallet_address INLINECALLDICT // _4 - }> - load_data PROCINLINE:<{ - // - c4 PUSH // _1 - CTOS // ds - LDMSGADDR // _3 ds - LDREF // _3 _10 _9 - DROP // _3 _5 - }> - recv_internal PROC:<{ - // msg_value in_msg_full in_msg_body - DUP // msg_value in_msg_full in_msg_body in_msg_body - SEMPTY // msg_value in_msg_full in_msg_body _3 - IFJMP:<{ // msg_value in_msg_full in_msg_body - 3 BLKDROP // - }> // msg_value in_msg_full in_msg_body - SWAP // msg_value in_msg_body in_msg_full - CTOS // msg_value in_msg_body cs - 4 LDU // msg_value in_msg_body flags cs - SWAP - 1 PUSHINT // msg_value in_msg_body cs flags _10=1 - AND // msg_value in_msg_body cs _11 - IFJMP:<{ // msg_value in_msg_body cs - 3 BLKDROP // - }> // msg_value in_msg_body cs - LDMSGADDR // msg_value in_msg_body sender_address cs - LDMSGADDR // msg_value in_msg_body sender_address _106 _105 - NIP // msg_value in_msg_body sender_address cs - LDVARUINT16 // msg_value in_msg_body sender_address _108 _107 - NIP // msg_value in_msg_body sender_address cs - 1 PUSHINT // msg_value in_msg_body sender_address cs _20=1 - SDSKIPFIRST // msg_value in_msg_body sender_address cs - LDVARUINT16 // msg_value in_msg_body sender_address _110 _109 - NIP // msg_value in_msg_body sender_address cs - LDVARUINT16 // msg_value in_msg_body sender_address _112 _111 - DROP // msg_value in_msg_body sender_address _25 - 3 PUSHINT // msg_value in_msg_body sender_address _25 _27=3 - 1 MULRSHIFT# // msg_value in_msg_body sender_address fwd_fee - s0 s2 XCHG // msg_value fwd_fee sender_address in_msg_body - 32 LDU // msg_value fwd_fee sender_address op in_msg_body - 64 LDU // msg_value fwd_fee sender_address op query_id in_msg_body - 0x2c76b973 PUSHINT // msg_value fwd_fee sender_address op query_id in_msg_body _38 - s1 s3 XCHG // msg_value fwd_fee sender_address in_msg_body query_id op _38 - EQUAL // msg_value fwd_fee sender_address in_msg_body query_id _39 - IFJMP:<{ // msg_value fwd_fee sender_address in_msg_body query_id - 10000000 PUSHINT // msg_value fwd_fee sender_address in_msg_body query_id _41 - s1 s4 XCHG // msg_value query_id sender_address in_msg_body fwd_fee _41 - ADD // msg_value query_id sender_address in_msg_body _42 - s1 s4 XCHG // in_msg_body query_id sender_address msg_value _42 - GREATER // in_msg_body query_id sender_address _43 - 75 THROWIFNOT - load_data INLINECALLDICT // in_msg_body query_id sender_address jetton_minter_address jetton_wallet_code - s0 s4 XCHG // jetton_wallet_code query_id sender_address jetton_minter_address in_msg_body - LDMSGADDR // jetton_wallet_code query_id sender_address jetton_minter_address owner_address in_msg_body - 1 LDU // jetton_wallet_code query_id sender_address jetton_minter_address owner_address _122 _121 - DROP // jetton_wallet_code query_id sender_address jetton_minter_address owner_address include_address? - IF:<{ // jetton_wallet_code query_id sender_address jetton_minter_address owner_address - NEWC // jetton_wallet_code query_id sender_address jetton_minter_address owner_address _57 - OVER // jetton_wallet_code query_id sender_address jetton_minter_address owner_address _57 owner_address - STSLICER // jetton_wallet_code query_id sender_address jetton_minter_address owner_address _58 - ENDC // jetton_wallet_code query_id sender_address jetton_minter_address owner_address _56 - }>ELSE<{ // jetton_wallet_code query_id sender_address jetton_minter_address owner_address - PUSHNULL // jetton_wallet_code query_id sender_address jetton_minter_address owner_address _56 - }> // jetton_wallet_code query_id sender_address jetton_minter_address owner_address included_address - 0xd1735400 PUSHINT // jetton_wallet_code query_id sender_address jetton_minter_address owner_address included_address _62 - 0 PUSHINT // jetton_wallet_code query_id sender_address jetton_minter_address owner_address included_address _62 _63=0 - 24 PUSHINT // jetton_wallet_code query_id sender_address jetton_minter_address owner_address included_address _62 _63=0 _64=24 - NEWC // jetton_wallet_code query_id sender_address jetton_minter_address owner_address included_address _62 _63=0 _64=24 _65 - 6 STU // jetton_wallet_code query_id sender_address jetton_minter_address owner_address included_address _62 _63=0 _67 - s0 s6 XCHG2 // jetton_wallet_code query_id _63=0 jetton_minter_address owner_address included_address _62 _67 sender_address - STSLICER // jetton_wallet_code query_id _63=0 jetton_minter_address owner_address included_address _62 _68 - s5 PUSH // jetton_wallet_code query_id _63=0 jetton_minter_address owner_address included_address _62 _68 _69=0 - STVARUINT16 // jetton_wallet_code query_id _63=0 jetton_minter_address owner_address included_address _62 _70 - s1 s5 XCHG // jetton_wallet_code query_id _62 jetton_minter_address owner_address included_address _63=0 _70 - 107 STU // jetton_wallet_code query_id _62 jetton_minter_address owner_address included_address _84 - s1 s4 XCHG // jetton_wallet_code query_id included_address jetton_minter_address owner_address _62 _84 - 32 STU // jetton_wallet_code query_id included_address jetton_minter_address owner_address _86 - s1 s4 XCHG // jetton_wallet_code owner_address included_address jetton_minter_address query_id _86 - 64 STU // jetton_wallet_code owner_address included_address jetton_minter_address msg - s3 PUSH // jetton_wallet_code owner_address included_address jetton_minter_address msg owner_address - is_resolvable? INLINECALLDICT // jetton_wallet_code owner_address included_address jetton_minter_address msg _89 - IF:<{ // jetton_wallet_code owner_address included_address jetton_minter_address msg - s3 s1 s4 XCHG3 // msg included_address owner_address jetton_minter_address jetton_wallet_code - calculate_user_jetton_wallet_address INLINECALLDICT // msg included_address _90 - s1 s2 XCHG // included_address msg _90 - STSLICER // included_address msg - }>ELSE<{ // jetton_wallet_code owner_address included_address jetton_minter_address msg - NIP - 2 2 BLKDROP2 // included_address msg - 0 PUSHINT // included_address msg _92=0 - SWAP // included_address _92=0 msg - 2 STU // included_address msg - }> - STOPTREF // _95 - ENDC // _96 - 64 PUSHINT // _96 _97=64 - SENDRAWMSG - }> // msg_value fwd_fee sender_address in_msg_body query_id - 5 BLKDROP // - 16 PUSHPOW2DEC // _99=65535 - THROWANY - }> -}END>c diff --git a/ft/build/jetton-minter-ICO.fif b/ft/build/jetton-minter-ICO.fif deleted file mode 100644 index 39fb98f..0000000 --- a/ft/build/jetton-minter-ICO.fif +++ /dev/null @@ -1,256 +0,0 @@ -"Asm.fif" include -// automatically generated from `../stdlib.fc` `params.fc` `op-codes.fc` `jetton-utils.fc` `jetton-minter-ICO.fc` -PROGRAM{ - DECLPROC force_chain - DECLPROC pack_jetton_wallet_data - DECLPROC calculate_jetton_wallet_state_init - DECLPROC calculate_jetton_wallet_address - DECLPROC calculate_user_jetton_wallet_address - DECLPROC load_data - DECLPROC save_data - DECLPROC mint_tokens - DECLPROC recv_internal - 106029 DECLMETHOD get_jetton_data - 103289 DECLMETHOD get_wallet_address - force_chain PROC:<{ - // addr - REWRITESTDADDR // _8 _9 - DROP // wc - 0 PUSHINT // wc _5 - EQUAL // _6 - 333 THROWIFNOT - }> - pack_jetton_wallet_data PROCINLINE:<{ - // balance owner_address jetton_master_address jetton_wallet_code - NEWC // balance owner_address jetton_master_address jetton_wallet_code _4 - s0 s4 XCHG2 // jetton_wallet_code owner_address jetton_master_address _4 balance - STVARUINT16 // jetton_wallet_code owner_address jetton_master_address _5 - ROT // jetton_wallet_code jetton_master_address _5 owner_address - STSLICER // jetton_wallet_code jetton_master_address _6 - SWAP // jetton_wallet_code _6 jetton_master_address - STSLICER // jetton_wallet_code _7 - STREF // _8 - ENDC // _9 - }> - calculate_jetton_wallet_state_init PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - 0 PUSHINT // owner_address jetton_master_address jetton_wallet_code _3=0 - s0 s1 s2 XCPUXC - s4 s0 s3 XC2PU // _3=0 jetton_wallet_code _4=0 owner_address jetton_master_address jetton_wallet_code - pack_jetton_wallet_data INLINECALLDICT // _3=0 jetton_wallet_code _5 - s2 PUSH // _3=0 jetton_wallet_code _5 _6=0 - NEWC // _3=0 jetton_wallet_code _5 _6=0 _7 - 2 STU // _3=0 jetton_wallet_code _5 _9 - s1 s2 XCHG // _3=0 _5 jetton_wallet_code _9 - STDICT // _3=0 _5 _10 - STDICT // _3=0 _11 - 1 STU // _13 - ENDC // _14 - }> - calculate_jetton_wallet_address PROCINLINE:<{ - // state_init - HASHCU // _1 - 0 PUSHINT // _1 _2 - 4 PUSHINT // _1 _2 _3=4 - NEWC // _1 _2 _3=4 _4 - 3 STU // _1 _2 _6 - 8 STI // _1 _8 - 256 STU // _10 - ENDC // _11 - CTOS // _12 - }> - calculate_user_jetton_wallet_address PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - calculate_jetton_wallet_state_init INLINECALLDICT // _3 - calculate_jetton_wallet_address INLINECALLDICT // _4 - }> - load_data PROCINLINE:<{ - // - c4 PUSH // _1 - CTOS // ds - LDVARUINT16 // _3 ds - LDMSGADDR // _3 _5 ds - LDREF // _3 _5 _7 ds - LDREF // _3 _5 _7 _18 _17 - DROP // _3 _5 _7 _9 - }> - save_data PROCINLINE:<{ - // total_supply admin_address content jetton_wallet_code - NEWC // total_supply admin_address content jetton_wallet_code _4 - s0 s4 XCHG2 // jetton_wallet_code admin_address content _4 total_supply - STVARUINT16 // jetton_wallet_code admin_address content _5 - ROT // jetton_wallet_code content _5 admin_address - STSLICER // jetton_wallet_code content _6 - STREF // jetton_wallet_code _7 - STREF // _8 - ENDC // _9 - c4 POP - }> - mint_tokens PROC:<{ - // to_address jetton_wallet_code amount master_msg - MYADDR // to_address jetton_wallet_code amount master_msg _5 - s4 s0 s3 XCHG3 // amount master_msg to_address _5 jetton_wallet_code - calculate_jetton_wallet_state_init INLINECALLDICT // amount master_msg state_init - DUP // amount master_msg state_init state_init - calculate_jetton_wallet_address INLINECALLDICT // amount master_msg state_init to_wallet_address - 7 PUSHINT // amount master_msg state_init to_wallet_address _14 - 24 PUSHINT // amount master_msg state_init to_wallet_address _14 _15=24 - NEWC // amount master_msg state_init to_wallet_address _14 _15=24 _16 - 6 STU // amount master_msg state_init to_wallet_address _14 _18 - ROT // amount master_msg state_init _14 _18 to_wallet_address - STSLICER // amount master_msg state_init _14 _19 - s0 s4 XCHG2 // _14 master_msg state_init _19 amount - STVARUINT16 // _14 master_msg state_init _20 - s1 s3 XCHG // state_init master_msg _14 _20 - 108 STU // state_init master_msg _36 - s1 s2 XCHG // master_msg state_init _36 - STREF // master_msg _37 - STREF // msg - ENDC // _39 - 1 PUSHINT // _39 _40=1 - SENDRAWMSG - }> - recv_internal PROC:<{ - // msg_value in_msg_full in_msg_body - SWAP // msg_value in_msg_body in_msg_full - CTOS // msg_value in_msg_body cs - 4 LDU // msg_value in_msg_body flags cs - SWAP - 1 PUSHINT // msg_value in_msg_body cs flags _9=1 - AND // msg_value in_msg_body cs _10 - IFJMP:<{ // msg_value in_msg_body cs - 3 BLKDROP // - }> // msg_value in_msg_body cs - LDMSGADDR // msg_value in_msg_body _145 _144 - DROP // msg_value in_msg_body sender_address - load_data INLINECALLDICT // msg_value in_msg_body sender_address total_supply admin_address content jetton_wallet_code - s5 PUSH // msg_value in_msg_body sender_address total_supply admin_address content jetton_wallet_code in_msg_body - SEMPTY // msg_value in_msg_body sender_address total_supply admin_address content jetton_wallet_code _19 - IFJMP:<{ // msg_value in_msg_body sender_address total_supply admin_address content jetton_wallet_code - s5 POP // msg_value jetton_wallet_code sender_address total_supply admin_address content - 10000000 PUSHINT // msg_value jetton_wallet_code sender_address total_supply admin_address content amount=10000000 - s6 s6 XCPU // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content msg_value amount=10000000 - SUB // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content buy_amount - DUP // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content buy_amount buy_amount - 0 GTINT // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content buy_amount _26 - 76 THROWIFNOT // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount - 0 PUSHINT // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 - DUP // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _31=0 - 0x178d4519 PUSHINT // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _31=0 _32 - NEWC // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _31=0 _32 _33 - 32 STU // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _31=0 _35 - 64 STU // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _37 - s2 PUSH // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _37 jetton_amount - STVARUINT16 // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _38 - MYADDR // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _38 _39 - STSLICER // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _40 - s6 PUSH // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _40 sender_address - STSLICER // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _41 - OVER // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _41 _42=0 - STVARUINT16 // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _30=0 _43 - 1 STU // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount _45 - ENDC // amount=10000000 jetton_wallet_code sender_address total_supply admin_address content jetton_amount master_msg - s6 PUSH - s3 s6 XCHG - s0 s8 s8 XCHG3 // jetton_amount jetton_wallet_code content total_supply admin_address sender_address jetton_wallet_code amount=10000000 master_msg - mint_tokens CALLDICT - s0 s4 XCHG // admin_address jetton_wallet_code content total_supply jetton_amount - ADD // admin_address jetton_wallet_code content _48 - s3 s1 s3 XCHG3 // _48 admin_address content jetton_wallet_code - save_data INLINECALLDICT - }> // msg_value in_msg_body sender_address total_supply admin_address content jetton_wallet_code - s6 POP // jetton_wallet_code in_msg_body sender_address total_supply admin_address content - s0 s4 XCHG // jetton_wallet_code content sender_address total_supply admin_address in_msg_body - 32 LDU // jetton_wallet_code content sender_address total_supply admin_address op in_msg_body - 64 LDU // jetton_wallet_code content sender_address total_supply admin_address op query_id in_msg_body - 21 PUSHINT // jetton_wallet_code content sender_address total_supply admin_address op query_id in_msg_body _58 - s3 s(-1) PUXC // jetton_wallet_code content sender_address total_supply admin_address op query_id in_msg_body op _58 - EQUAL // jetton_wallet_code content sender_address total_supply admin_address op query_id in_msg_body _59 - IFJMP:<{ // jetton_wallet_code content sender_address total_supply admin_address op query_id in_msg_body - 2 1 BLKDROP2 // jetton_wallet_code content sender_address total_supply admin_address in_msg_body - s3 s1 XCPU // jetton_wallet_code content in_msg_body total_supply admin_address sender_address admin_address - SDEQ // jetton_wallet_code content in_msg_body total_supply admin_address _61 - 73 THROWIFNOT - s0 s2 XCHG // jetton_wallet_code content admin_address total_supply in_msg_body - LDMSGADDR // jetton_wallet_code content admin_address total_supply to_address in_msg_body - LDVARUINT16 // jetton_wallet_code content admin_address total_supply to_address amount in_msg_body - LDREF // jetton_wallet_code content admin_address total_supply to_address amount _159 _158 - DROP // jetton_wallet_code content admin_address total_supply to_address amount master_msg - DUP // jetton_wallet_code content admin_address total_supply to_address amount master_msg master_msg - CTOS // jetton_wallet_code content admin_address total_supply to_address amount master_msg master_msg_cs - 96 PUSHINT // jetton_wallet_code content admin_address total_supply to_address amount master_msg master_msg_cs _77 - SDSKIPFIRST // jetton_wallet_code content admin_address total_supply to_address amount master_msg master_msg_cs - LDVARUINT16 // jetton_wallet_code content admin_address total_supply to_address amount master_msg _161 _160 - DROP // jetton_wallet_code content admin_address total_supply to_address amount master_msg jetton_amount - s7 PUSH - s3 s4 XCHG - s4 s2 XCHG2 // jetton_wallet_code content admin_address total_supply jetton_amount to_address jetton_wallet_code amount master_msg - mint_tokens CALLDICT - ADD // jetton_wallet_code content admin_address _83 - s2 s3 XCHG2 // _83 admin_address content jetton_wallet_code - save_data INLINECALLDICT - }> // jetton_wallet_code content sender_address total_supply admin_address op query_id in_msg_body - 0x7bdd97de PUSHINT // jetton_wallet_code content sender_address total_supply admin_address op query_id in_msg_body _85 - s1 s3 XCHG // jetton_wallet_code content sender_address total_supply admin_address in_msg_body query_id op _85 - EQUAL // jetton_wallet_code content sender_address total_supply admin_address in_msg_body query_id _86 - IFJMP:<{ // jetton_wallet_code content sender_address total_supply admin_address in_msg_body query_id - SWAP // jetton_wallet_code content sender_address total_supply admin_address query_id in_msg_body - LDVARUINT16 // jetton_wallet_code content sender_address total_supply admin_address query_id jetton_amount in_msg_body - LDMSGADDR // jetton_wallet_code content sender_address total_supply admin_address query_id jetton_amount from_address in_msg_body - MYADDR // jetton_wallet_code content sender_address total_supply admin_address query_id jetton_amount from_address in_msg_body _94 - s2 s0 s9 XC2PU // jetton_wallet_code content sender_address total_supply admin_address query_id jetton_amount in_msg_body from_address _94 jetton_wallet_code - calculate_user_jetton_wallet_address INLINECALLDICT // jetton_wallet_code content sender_address total_supply admin_address query_id jetton_amount in_msg_body _95 - s0 s6 XCHG2 // jetton_wallet_code content in_msg_body total_supply admin_address query_id jetton_amount _95 sender_address - SDEQ // jetton_wallet_code content in_msg_body total_supply admin_address query_id jetton_amount _96 - 74 THROWIFNOT - s1 s3 XCHG // jetton_wallet_code content in_msg_body query_id admin_address total_supply jetton_amount - SUB // jetton_wallet_code content in_msg_body query_id admin_address _98 - s0 s3 XCHG - s1 s4 s5 XCHG3 // in_msg_body query_id _98 admin_address content jetton_wallet_code - save_data INLINECALLDICT - SWAP // query_id in_msg_body - LDMSGADDR // query_id _167 _166 - DROP // query_id response_address - DUP // query_id response_address response_address - 2 PLDU // query_id response_address _104 - 0 NEQINT // query_id response_address _106 - IF:<{ // query_id response_address - 0xd53276db PUSHINT // query_id response_address _108 - 0 PUSHINT // query_id response_address _108 _109=0 - 16 PUSHINT // query_id response_address _108 _109=0 _110=16 - NEWC // query_id response_address _108 _109=0 _110=16 _111 - 6 STU // query_id response_address _108 _109=0 _113 - s0 s3 XCHG2 // query_id _109=0 _108 _113 response_address - STSLICER // query_id _109=0 _108 _114 - s2 PUSH // query_id _109=0 _108 _114 _115=0 - STVARUINT16 // query_id _109=0 _108 _116 - s1 s2 XCHG // query_id _108 _109=0 _116 - 107 STU // query_id _108 _130 - 32 STU // query_id _132 - 64 STU // msg - ENDC // _135 - 66 PUSHINT // _135 _138 - SENDRAWMSG - }>ELSE<{ - 2DROP // - }> - }> // jetton_wallet_code content sender_address total_supply admin_address in_msg_body query_id - 7 BLKDROP // - 16 PUSHPOW2DEC // _140=65535 - THROWANY - }> - get_jetton_data PROC:<{ - // - load_data INLINECALLDICT // total_supply admin_address content jetton_wallet_code - -1 PUSHINT // total_supply admin_address content jetton_wallet_code _5=-1 - 3 -ROLL // total_supply _5=-1 admin_address content jetton_wallet_code - }> - get_wallet_address PROC:<{ - // owner_address - load_data INLINECALLDICT // owner_address _8 _9 _10 _11 - 3 1 BLKDROP2 // owner_address jetton_wallet_code - MYADDR // owner_address jetton_wallet_code _6 - SWAP // owner_address _6 jetton_wallet_code - calculate_user_jetton_wallet_address INLINECALLDICT // _7 - }> -}END>c diff --git a/ft/build/jetton-minter-discoverable.fif b/ft/build/jetton-minter-discoverable.fif deleted file mode 100644 index 308eb6b..0000000 --- a/ft/build/jetton-minter-discoverable.fif +++ /dev/null @@ -1,335 +0,0 @@ -"Asm.fif" include -// automatically generated from `../stdlib.fc` `params.fc` `op-codes.fc` `discovery-params.fc` `jetton-utils.fc` `jetton-minter-discoverable.fc` -PROGRAM{ - DECLPROC force_chain - DECLPROC is_resolvable? - DECLPROC pack_jetton_wallet_data - DECLPROC calculate_jetton_wallet_state_init - DECLPROC calculate_jetton_wallet_address - DECLPROC calculate_user_jetton_wallet_address - DECLPROC load_data - DECLPROC save_data - DECLPROC mint_tokens - DECLPROC recv_internal - 106029 DECLMETHOD get_jetton_data - 103289 DECLMETHOD get_wallet_address - force_chain PROC:<{ - // addr - REWRITESTDADDR // _8 _9 - DROP // wc - 0 PUSHINT // wc _5 - EQUAL // _6 - 333 THROWIFNOT - }> - is_resolvable? PROCINLINE:<{ - // addr - REWRITESTDADDR // _6 _7 - DROP // wc - 0 PUSHINT // wc _4 - EQUAL // _5 - }> - pack_jetton_wallet_data PROCINLINE:<{ - // balance owner_address jetton_master_address jetton_wallet_code - NEWC // balance owner_address jetton_master_address jetton_wallet_code _4 - s0 s4 XCHG2 // jetton_wallet_code owner_address jetton_master_address _4 balance - STVARUINT16 // jetton_wallet_code owner_address jetton_master_address _5 - ROT // jetton_wallet_code jetton_master_address _5 owner_address - STSLICER // jetton_wallet_code jetton_master_address _6 - SWAP // jetton_wallet_code _6 jetton_master_address - STSLICER // jetton_wallet_code _7 - STREF // _8 - ENDC // _9 - }> - calculate_jetton_wallet_state_init PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - 0 PUSHINT // owner_address jetton_master_address jetton_wallet_code _3=0 - s0 s1 s2 XCPUXC - s4 s0 s3 XC2PU // _3=0 jetton_wallet_code _4=0 owner_address jetton_master_address jetton_wallet_code - pack_jetton_wallet_data INLINECALLDICT // _3=0 jetton_wallet_code _5 - s2 PUSH // _3=0 jetton_wallet_code _5 _6=0 - NEWC // _3=0 jetton_wallet_code _5 _6=0 _7 - 2 STU // _3=0 jetton_wallet_code _5 _9 - s1 s2 XCHG // _3=0 _5 jetton_wallet_code _9 - STDICT // _3=0 _5 _10 - STDICT // _3=0 _11 - 1 STU // _13 - ENDC // _14 - }> - calculate_jetton_wallet_address PROCINLINE:<{ - // state_init - HASHCU // _1 - 0 PUSHINT // _1 _2 - 4 PUSHINT // _1 _2 _3=4 - NEWC // _1 _2 _3=4 _4 - 3 STU // _1 _2 _6 - 8 STI // _1 _8 - 256 STU // _10 - ENDC // _11 - CTOS // _12 - }> - calculate_user_jetton_wallet_address PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - calculate_jetton_wallet_state_init INLINECALLDICT // _3 - calculate_jetton_wallet_address INLINECALLDICT // _4 - }> - load_data PROCINLINE:<{ - // - c4 PUSH // _1 - CTOS // ds - LDVARUINT16 // _3 ds - LDMSGADDR // _3 _5 ds - LDREF // _3 _5 _7 ds - LDREF // _3 _5 _7 _18 _17 - DROP // _3 _5 _7 _9 - }> - save_data PROCINLINE:<{ - // total_supply admin_address content jetton_wallet_code - NEWC // total_supply admin_address content jetton_wallet_code _4 - s0 s4 XCHG2 // jetton_wallet_code admin_address content _4 total_supply - STVARUINT16 // jetton_wallet_code admin_address content _5 - ROT // jetton_wallet_code content _5 admin_address - STSLICER // jetton_wallet_code content _6 - STREF // jetton_wallet_code _7 - STREF // _8 - ENDC // _9 - c4 POP - }> - mint_tokens PROC:<{ - // to_address jetton_wallet_code amount master_msg - MYADDR // to_address jetton_wallet_code amount master_msg _5 - s4 s0 s3 XCHG3 // amount master_msg to_address _5 jetton_wallet_code - calculate_jetton_wallet_state_init INLINECALLDICT // amount master_msg state_init - DUP // amount master_msg state_init state_init - calculate_jetton_wallet_address INLINECALLDICT // amount master_msg state_init to_wallet_address - 7 PUSHINT // amount master_msg state_init to_wallet_address _14 - 24 PUSHINT // amount master_msg state_init to_wallet_address _14 _15=24 - NEWC // amount master_msg state_init to_wallet_address _14 _15=24 _16 - 6 STU // amount master_msg state_init to_wallet_address _14 _18 - ROT // amount master_msg state_init _14 _18 to_wallet_address - STSLICER // amount master_msg state_init _14 _19 - s0 s4 XCHG2 // _14 master_msg state_init _19 amount - STVARUINT16 // _14 master_msg state_init _20 - s1 s3 XCHG // state_init master_msg _14 _20 - 108 STU // state_init master_msg _36 - s1 s2 XCHG // master_msg state_init _36 - STREF // master_msg _37 - STREF // msg - ENDC // _39 - 1 PUSHINT // _39 _40=1 - SENDRAWMSG - }> - recv_internal PROC:<{ - // msg_value in_msg_full in_msg_body - DUP // msg_value in_msg_full in_msg_body in_msg_body - SEMPTY // msg_value in_msg_full in_msg_body _3 - IFJMP:<{ // msg_value in_msg_full in_msg_body - 3 BLKDROP // - }> // msg_value in_msg_full in_msg_body - SWAP // msg_value in_msg_body in_msg_full - CTOS // msg_value in_msg_body cs - 4 LDU // msg_value in_msg_body flags cs - SWAP - 1 PUSHINT // msg_value in_msg_body cs flags _10=1 - AND // msg_value in_msg_body cs _11 - IFJMP:<{ // msg_value in_msg_body cs - 3 BLKDROP // - }> // msg_value in_msg_body cs - LDMSGADDR // msg_value in_msg_body sender_address cs - LDMSGADDR // msg_value in_msg_body sender_address _208 _207 - NIP // msg_value in_msg_body sender_address cs - LDVARUINT16 // msg_value in_msg_body sender_address _210 _209 - NIP // msg_value in_msg_body sender_address cs - 1 PUSHINT // msg_value in_msg_body sender_address cs _20=1 - SDSKIPFIRST // msg_value in_msg_body sender_address cs - LDVARUINT16 // msg_value in_msg_body sender_address _212 _211 - NIP // msg_value in_msg_body sender_address cs - LDVARUINT16 // msg_value in_msg_body sender_address _214 _213 - DROP // msg_value in_msg_body sender_address _25 - 3 PUSHINT // msg_value in_msg_body sender_address _25 _27=3 - 1 MULRSHIFT# // msg_value in_msg_body sender_address fwd_fee - s0 s2 XCHG // msg_value fwd_fee sender_address in_msg_body - 32 LDU // msg_value fwd_fee sender_address op in_msg_body - 64 LDU // msg_value fwd_fee sender_address op query_id in_msg_body - load_data INLINECALLDICT // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - 21 PUSHINT // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _43 - s7 s(-1) PUXC // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code op _43 - EQUAL // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _44 - IFJMP:<{ // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - s5 POP - s5 POP - s6 POP - s6 POP // total_supply admin_address sender_address content jetton_wallet_code in_msg_body - s3 s4 XCPU // total_supply admin_address in_msg_body content jetton_wallet_code sender_address admin_address - SDEQ // total_supply admin_address in_msg_body content jetton_wallet_code _46 - 73 THROWIFNOT - s0 s2 XCHG // total_supply admin_address jetton_wallet_code content in_msg_body - LDMSGADDR // total_supply admin_address jetton_wallet_code content to_address in_msg_body - LDVARUINT16 // total_supply admin_address jetton_wallet_code content to_address amount in_msg_body - LDREF // total_supply admin_address jetton_wallet_code content to_address amount _228 _227 - DROP // total_supply admin_address jetton_wallet_code content to_address amount master_msg - DUP // total_supply admin_address jetton_wallet_code content to_address amount master_msg master_msg - CTOS // total_supply admin_address jetton_wallet_code content to_address amount master_msg master_msg_cs - 96 PUSHINT // total_supply admin_address jetton_wallet_code content to_address amount master_msg master_msg_cs _62 - SDSKIPFIRST // total_supply admin_address jetton_wallet_code content to_address amount master_msg master_msg_cs - LDVARUINT16 // total_supply admin_address jetton_wallet_code content to_address amount master_msg _230 _229 - DROP // total_supply admin_address jetton_wallet_code content to_address amount master_msg jetton_amount - s5 PUSH - s3 s4 XCHG - s4 s2 XCHG2 // total_supply admin_address jetton_wallet_code content jetton_amount to_address jetton_wallet_code amount master_msg - mint_tokens CALLDICT - s1 s4 XCHG // content admin_address jetton_wallet_code total_supply jetton_amount - ADD // content admin_address jetton_wallet_code _68 - s3 s3 XCHG2 // _68 admin_address content jetton_wallet_code - save_data INLINECALLDICT - }> // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - 0x7bdd97de PUSHINT // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _70 - s7 s(-1) PUXC // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code op _70 - EQUAL // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _71 - IFJMP:<{ // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - s6 POP - s7 POP - s7 POP // admin_address content sender_address jetton_wallet_code query_id in_msg_body total_supply - SWAP // admin_address content sender_address jetton_wallet_code query_id total_supply in_msg_body - LDVARUINT16 // admin_address content sender_address jetton_wallet_code query_id total_supply jetton_amount in_msg_body - LDMSGADDR // admin_address content sender_address jetton_wallet_code query_id total_supply jetton_amount from_address in_msg_body - MYADDR // admin_address content sender_address jetton_wallet_code query_id total_supply jetton_amount from_address in_msg_body _79 - s2 s0 s6 XC2PU // admin_address content sender_address jetton_wallet_code query_id total_supply jetton_amount in_msg_body from_address _79 jetton_wallet_code - calculate_user_jetton_wallet_address INLINECALLDICT // admin_address content sender_address jetton_wallet_code query_id total_supply jetton_amount in_msg_body _80 - s0 s6 XCHG2 // admin_address content in_msg_body jetton_wallet_code query_id total_supply jetton_amount _80 sender_address - SDEQ // admin_address content in_msg_body jetton_wallet_code query_id total_supply jetton_amount _81 - 74 THROWIFNOT - SUB // admin_address content in_msg_body jetton_wallet_code query_id _83 - s0 s3 XCHG - s5 s4 s5 XCHG3 // in_msg_body query_id _83 admin_address content jetton_wallet_code - save_data INLINECALLDICT - SWAP // query_id in_msg_body - LDMSGADDR // query_id _236 _235 - DROP // query_id response_address - DUP // query_id response_address response_address - 2 PLDU // query_id response_address _89 - 0 NEQINT // query_id response_address _91 - IF:<{ // query_id response_address - 0xd53276db PUSHINT // query_id response_address _93 - 0 PUSHINT // query_id response_address _93 _94=0 - 16 PUSHINT // query_id response_address _93 _94=0 _95=16 - NEWC // query_id response_address _93 _94=0 _95=16 _96 - 6 STU // query_id response_address _93 _94=0 _98 - s0 s3 XCHG2 // query_id _94=0 _93 _98 response_address - STSLICER // query_id _94=0 _93 _99 - s2 PUSH // query_id _94=0 _93 _99 _100=0 - STVARUINT16 // query_id _94=0 _93 _101 - s1 s2 XCHG // query_id _93 _94=0 _101 - 107 STU // query_id _93 _115 - 32 STU // query_id _117 - 64 STU // msg - ENDC // _120 - 66 PUSHINT // _120 _123 - SENDRAWMSG - }>ELSE<{ - 2DROP // - }> - }> // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - 0x2c76b973 PUSHINT // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _125 - s7 s(-1) PUXC // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code op _125 - EQUAL // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _126 - IFJMP:<{ // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - s6 POP - 3 BLKDROP // msg_value fwd_fee sender_address jetton_wallet_code query_id in_msg_body - 10000000 PUSHINT // msg_value fwd_fee sender_address jetton_wallet_code query_id in_msg_body _128 - s1 s5 XCHG // msg_value in_msg_body sender_address jetton_wallet_code query_id fwd_fee _128 - ADD // msg_value in_msg_body sender_address jetton_wallet_code query_id _129 - s1 s5 XCHG // query_id in_msg_body sender_address jetton_wallet_code msg_value _129 - GREATER // query_id in_msg_body sender_address jetton_wallet_code _130 - 75 THROWIFNOT - s0 s2 XCHG // query_id jetton_wallet_code sender_address in_msg_body - LDMSGADDR // query_id jetton_wallet_code sender_address owner_address in_msg_body - 1 LDU // query_id jetton_wallet_code sender_address owner_address _240 _239 - DROP // query_id jetton_wallet_code sender_address owner_address include_address? - IF:<{ // query_id jetton_wallet_code sender_address owner_address - NEWC // query_id jetton_wallet_code sender_address owner_address _141 - OVER // query_id jetton_wallet_code sender_address owner_address _141 owner_address - STSLICER // query_id jetton_wallet_code sender_address owner_address _142 - ENDC // query_id jetton_wallet_code sender_address owner_address _140 - }>ELSE<{ // query_id jetton_wallet_code sender_address owner_address - PUSHNULL // query_id jetton_wallet_code sender_address owner_address _140 - }> // query_id jetton_wallet_code sender_address owner_address included_address - 0xd1735400 PUSHINT // query_id jetton_wallet_code sender_address owner_address included_address _146 - 0 PUSHINT // query_id jetton_wallet_code sender_address owner_address included_address _146 _147=0 - 24 PUSHINT // query_id jetton_wallet_code sender_address owner_address included_address _146 _147=0 _148=24 - NEWC // query_id jetton_wallet_code sender_address owner_address included_address _146 _147=0 _148=24 _149 - 6 STU // query_id jetton_wallet_code sender_address owner_address included_address _146 _147=0 _151 - s0 s5 XCHG2 // query_id jetton_wallet_code _147=0 owner_address included_address _146 _151 sender_address - STSLICER // query_id jetton_wallet_code _147=0 owner_address included_address _146 _152 - s4 PUSH // query_id jetton_wallet_code _147=0 owner_address included_address _146 _152 _153=0 - STVARUINT16 // query_id jetton_wallet_code _147=0 owner_address included_address _146 _154 - s1 s4 XCHG // query_id jetton_wallet_code _146 owner_address included_address _147=0 _154 - 107 STU // query_id jetton_wallet_code _146 owner_address included_address _168 - s1 s3 XCHG // query_id jetton_wallet_code included_address owner_address _146 _168 - 32 STU // query_id jetton_wallet_code included_address owner_address _170 - s1 s4 XCHG // owner_address jetton_wallet_code included_address query_id _170 - 64 STU // owner_address jetton_wallet_code included_address msg - s3 PUSH // owner_address jetton_wallet_code included_address msg owner_address - is_resolvable? INLINECALLDICT // owner_address jetton_wallet_code included_address msg _173 - IF:<{ // owner_address jetton_wallet_code included_address msg - MYADDR // owner_address jetton_wallet_code included_address msg _174 - s4 s0 s3 XCHG3 // included_address msg owner_address _174 jetton_wallet_code - calculate_user_jetton_wallet_address INLINECALLDICT // included_address msg _175 - STSLICER // included_address msg - }>ELSE<{ // owner_address jetton_wallet_code included_address msg - 2 2 BLKDROP2 // included_address msg - 0 PUSHINT // included_address msg _177=0 - SWAP // included_address _177=0 msg - 2 STU // included_address msg - }> - STOPTREF // _180 - ENDC // _181 - 64 PUSHINT // _181 _182=64 - SENDRAWMSG - }> // msg_value fwd_fee sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - s5 POP - s7 POP - s7 POP // admin_address content sender_address op jetton_wallet_code in_msg_body total_supply - s3 PUSH // admin_address content sender_address op jetton_wallet_code in_msg_body total_supply op - 3 EQINT // admin_address content sender_address op jetton_wallet_code in_msg_body total_supply _185 - IFJMP:<{ // admin_address content sender_address op jetton_wallet_code in_msg_body total_supply - s3 POP // admin_address content sender_address total_supply jetton_wallet_code in_msg_body - s3 s5 XCHG2 // in_msg_body content jetton_wallet_code total_supply sender_address admin_address - SDEQ // in_msg_body content jetton_wallet_code total_supply _187 - 73 THROWIFNOT - s0 s3 XCHG // total_supply content jetton_wallet_code in_msg_body - LDMSGADDR // total_supply content jetton_wallet_code _242 _241 - DROP // total_supply content jetton_wallet_code new_admin_address - -ROT // total_supply new_admin_address content jetton_wallet_code - save_data INLINECALLDICT - }> // admin_address content sender_address op jetton_wallet_code in_msg_body total_supply - s5 POP // admin_address total_supply sender_address op jetton_wallet_code in_msg_body - s0 s2 XCHG // admin_address total_supply sender_address in_msg_body jetton_wallet_code op - 4 EQINT // admin_address total_supply sender_address in_msg_body jetton_wallet_code _194 - IFJMP:<{ // admin_address total_supply sender_address in_msg_body jetton_wallet_code - s2 s4 XCPU // admin_address total_supply jetton_wallet_code in_msg_body sender_address admin_address - SDEQ // admin_address total_supply jetton_wallet_code in_msg_body _196 - 73 THROWIFNOT - LDREF // admin_address total_supply jetton_wallet_code _244 _243 - DROP // admin_address total_supply jetton_wallet_code _198 - s3 s0 s0 XCHG3 // total_supply admin_address _198 jetton_wallet_code - save_data INLINECALLDICT - }> // admin_address total_supply sender_address in_msg_body jetton_wallet_code - 5 BLKDROP // - 16 PUSHPOW2DEC // _201=65535 - THROWANY - }> - get_jetton_data PROC:<{ - // - load_data INLINECALLDICT // total_supply admin_address content jetton_wallet_code - -1 PUSHINT // total_supply admin_address content jetton_wallet_code _5=-1 - 3 -ROLL // total_supply _5=-1 admin_address content jetton_wallet_code - }> - get_wallet_address PROC:<{ - // owner_address - load_data INLINECALLDICT // owner_address _8 _9 _10 _11 - 3 1 BLKDROP2 // owner_address jetton_wallet_code - MYADDR // owner_address jetton_wallet_code _6 - SWAP // owner_address _6 jetton_wallet_code - calculate_user_jetton_wallet_address INLINECALLDICT // _7 - }> -}END>c diff --git a/ft/build/jetton-minter.fif b/ft/build/jetton-minter.fif deleted file mode 100644 index d739d77..0000000 --- a/ft/build/jetton-minter.fif +++ /dev/null @@ -1,252 +0,0 @@ -"Asm.fif" include -// automatically generated from `../stdlib.fc` `params.fc` `op-codes.fc` `jetton-utils.fc` `jetton-minter.fc` -PROGRAM{ - DECLPROC force_chain - DECLPROC pack_jetton_wallet_data - DECLPROC calculate_jetton_wallet_state_init - DECLPROC calculate_jetton_wallet_address - DECLPROC calculate_user_jetton_wallet_address - DECLPROC load_data - DECLPROC save_data - DECLPROC mint_tokens - DECLPROC recv_internal - 106029 DECLMETHOD get_jetton_data - 103289 DECLMETHOD get_wallet_address - force_chain PROC:<{ - // addr - REWRITESTDADDR // _8 _9 - DROP // wc - 0 PUSHINT // wc _5 - EQUAL // _6 - 333 THROWIFNOT - }> - pack_jetton_wallet_data PROCINLINE:<{ - // balance owner_address jetton_master_address jetton_wallet_code - NEWC // balance owner_address jetton_master_address jetton_wallet_code _4 - s0 s4 XCHG2 // jetton_wallet_code owner_address jetton_master_address _4 balance - STVARUINT16 // jetton_wallet_code owner_address jetton_master_address _5 - ROT // jetton_wallet_code jetton_master_address _5 owner_address - STSLICER // jetton_wallet_code jetton_master_address _6 - SWAP // jetton_wallet_code _6 jetton_master_address - STSLICER // jetton_wallet_code _7 - STREF // _8 - ENDC // _9 - }> - calculate_jetton_wallet_state_init PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - 0 PUSHINT // owner_address jetton_master_address jetton_wallet_code _3=0 - s0 s1 s2 XCPUXC - s4 s0 s3 XC2PU // _3=0 jetton_wallet_code _4=0 owner_address jetton_master_address jetton_wallet_code - pack_jetton_wallet_data INLINECALLDICT // _3=0 jetton_wallet_code _5 - s2 PUSH // _3=0 jetton_wallet_code _5 _6=0 - NEWC // _3=0 jetton_wallet_code _5 _6=0 _7 - 2 STU // _3=0 jetton_wallet_code _5 _9 - s1 s2 XCHG // _3=0 _5 jetton_wallet_code _9 - STDICT // _3=0 _5 _10 - STDICT // _3=0 _11 - 1 STU // _13 - ENDC // _14 - }> - calculate_jetton_wallet_address PROCINLINE:<{ - // state_init - HASHCU // _1 - 0 PUSHINT // _1 _2 - 4 PUSHINT // _1 _2 _3=4 - NEWC // _1 _2 _3=4 _4 - 3 STU // _1 _2 _6 - 8 STI // _1 _8 - 256 STU // _10 - ENDC // _11 - CTOS // _12 - }> - calculate_user_jetton_wallet_address PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - calculate_jetton_wallet_state_init INLINECALLDICT // _3 - calculate_jetton_wallet_address INLINECALLDICT // _4 - }> - load_data PROCINLINE:<{ - // - c4 PUSH // _1 - CTOS // ds - LDVARUINT16 // _3 ds - LDMSGADDR // _3 _5 ds - LDREF // _3 _5 _7 ds - LDREF // _3 _5 _7 _18 _17 - DROP // _3 _5 _7 _9 - }> - save_data PROCINLINE:<{ - // total_supply admin_address content jetton_wallet_code - NEWC // total_supply admin_address content jetton_wallet_code _4 - s0 s4 XCHG2 // jetton_wallet_code admin_address content _4 total_supply - STVARUINT16 // jetton_wallet_code admin_address content _5 - ROT // jetton_wallet_code content _5 admin_address - STSLICER // jetton_wallet_code content _6 - STREF // jetton_wallet_code _7 - STREF // _8 - ENDC // _9 - c4 POP - }> - mint_tokens PROC:<{ - // to_address jetton_wallet_code amount master_msg - MYADDR // to_address jetton_wallet_code amount master_msg _5 - s4 s0 s3 XCHG3 // amount master_msg to_address _5 jetton_wallet_code - calculate_jetton_wallet_state_init INLINECALLDICT // amount master_msg state_init - DUP // amount master_msg state_init state_init - calculate_jetton_wallet_address INLINECALLDICT // amount master_msg state_init to_wallet_address - 7 PUSHINT // amount master_msg state_init to_wallet_address _14 - 24 PUSHINT // amount master_msg state_init to_wallet_address _14 _15=24 - NEWC // amount master_msg state_init to_wallet_address _14 _15=24 _16 - 6 STU // amount master_msg state_init to_wallet_address _14 _18 - ROT // amount master_msg state_init _14 _18 to_wallet_address - STSLICER // amount master_msg state_init _14 _19 - s0 s4 XCHG2 // _14 master_msg state_init _19 amount - STVARUINT16 // _14 master_msg state_init _20 - s1 s3 XCHG // state_init master_msg _14 _20 - 108 STU // state_init master_msg _36 - s1 s2 XCHG // master_msg state_init _36 - STREF // master_msg _37 - STREF // msg - ENDC // _39 - 1 PUSHINT // _39 _40=1 - SENDRAWMSG - }> - recv_internal PROC:<{ - // msg_value in_msg_full in_msg_body - s2 POP // in_msg_body in_msg_full - OVER // in_msg_body in_msg_full in_msg_body - SEMPTY // in_msg_body in_msg_full _3 - IFJMP:<{ // in_msg_body in_msg_full - 2DROP // - }> // in_msg_body in_msg_full - CTOS // in_msg_body cs - 4 LDU // in_msg_body flags cs - SWAP - 1 PUSHINT // in_msg_body cs flags _10=1 - AND // in_msg_body cs _11 - IFJMP:<{ // in_msg_body cs - 2DROP // - }> // in_msg_body cs - LDMSGADDR // in_msg_body _132 _131 - DROP // in_msg_body sender_address - SWAP // sender_address in_msg_body - 32 LDU // sender_address op in_msg_body - 64 LDU // sender_address op query_id in_msg_body - load_data INLINECALLDICT // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - 21 PUSHINT // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _28 - s7 s(-1) PUXC // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code op _28 - EQUAL // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _29 - IFJMP:<{ // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - s5 POP - s5 POP // sender_address content jetton_wallet_code in_msg_body total_supply admin_address - s5 s5 XCPU // admin_address content jetton_wallet_code in_msg_body total_supply sender_address admin_address - SDEQ // admin_address content jetton_wallet_code in_msg_body total_supply _31 - 73 THROWIFNOT - SWAP // admin_address content jetton_wallet_code total_supply in_msg_body - LDMSGADDR // admin_address content jetton_wallet_code total_supply to_address in_msg_body - LDVARUINT16 // admin_address content jetton_wallet_code total_supply to_address amount in_msg_body - LDREF // admin_address content jetton_wallet_code total_supply to_address amount _146 _145 - DROP // admin_address content jetton_wallet_code total_supply to_address amount master_msg - DUP // admin_address content jetton_wallet_code total_supply to_address amount master_msg master_msg - CTOS // admin_address content jetton_wallet_code total_supply to_address amount master_msg master_msg_cs - 96 PUSHINT // admin_address content jetton_wallet_code total_supply to_address amount master_msg master_msg_cs _47 - SDSKIPFIRST // admin_address content jetton_wallet_code total_supply to_address amount master_msg master_msg_cs - LDVARUINT16 // admin_address content jetton_wallet_code total_supply to_address amount master_msg _148 _147 - DROP // admin_address content jetton_wallet_code total_supply to_address amount master_msg jetton_amount - s5 PUSH - s3 s4 XCHG - s4 s2 XCHG2 // admin_address content jetton_wallet_code total_supply jetton_amount to_address jetton_wallet_code amount master_msg - mint_tokens CALLDICT - ADD // admin_address content jetton_wallet_code _53 - 3 -ROLL // _53 admin_address content jetton_wallet_code - save_data INLINECALLDICT - }> // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - 0x7bdd97de PUSHINT // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _55 - s7 s(-1) PUXC // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code op _55 - EQUAL // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code _56 - IFJMP:<{ // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - s6 POP // sender_address jetton_wallet_code query_id in_msg_body total_supply admin_address content - s0 s3 XCHG // sender_address jetton_wallet_code query_id content total_supply admin_address in_msg_body - LDVARUINT16 // sender_address jetton_wallet_code query_id content total_supply admin_address jetton_amount in_msg_body - LDMSGADDR // sender_address jetton_wallet_code query_id content total_supply admin_address jetton_amount from_address in_msg_body - MYADDR // sender_address jetton_wallet_code query_id content total_supply admin_address jetton_amount from_address in_msg_body _64 - s2 s0 s8 XC2PU // sender_address jetton_wallet_code query_id content total_supply admin_address jetton_amount in_msg_body from_address _64 jetton_wallet_code - calculate_user_jetton_wallet_address INLINECALLDICT // sender_address jetton_wallet_code query_id content total_supply admin_address jetton_amount in_msg_body _65 - s0 s8 XCHG2 // in_msg_body jetton_wallet_code query_id content total_supply admin_address jetton_amount _65 sender_address - SDEQ // in_msg_body jetton_wallet_code query_id content total_supply admin_address jetton_amount _66 - 74 THROWIFNOT - s1 s2 XCHG // in_msg_body jetton_wallet_code query_id content admin_address total_supply jetton_amount - SUB // in_msg_body jetton_wallet_code query_id content admin_address _68 - s0 s3 XCHG - s2 s4 XCHG2 // in_msg_body query_id _68 admin_address content jetton_wallet_code - save_data INLINECALLDICT - SWAP // query_id in_msg_body - LDMSGADDR // query_id _154 _153 - DROP // query_id response_address - DUP // query_id response_address response_address - 2 PLDU // query_id response_address _74 - 0 NEQINT // query_id response_address _76 - IF:<{ // query_id response_address - 0xd53276db PUSHINT // query_id response_address _78 - 0 PUSHINT // query_id response_address _78 _79=0 - 16 PUSHINT // query_id response_address _78 _79=0 _80=16 - NEWC // query_id response_address _78 _79=0 _80=16 _81 - 6 STU // query_id response_address _78 _79=0 _83 - s0 s3 XCHG2 // query_id _79=0 _78 _83 response_address - STSLICER // query_id _79=0 _78 _84 - s2 PUSH // query_id _79=0 _78 _84 _85=0 - STVARUINT16 // query_id _79=0 _78 _86 - s1 s2 XCHG // query_id _78 _79=0 _86 - 107 STU // query_id _78 _100 - 32 STU // query_id _102 - 64 STU // msg - ENDC // _105 - 66 PUSHINT // _105 _108 - SENDRAWMSG - }>ELSE<{ - 2DROP // - }> - }> // sender_address op query_id in_msg_body total_supply admin_address content jetton_wallet_code - s5 POP // sender_address op jetton_wallet_code in_msg_body total_supply admin_address content - s5 PUSH // sender_address op jetton_wallet_code in_msg_body total_supply admin_address content op - 3 EQINT // sender_address op jetton_wallet_code in_msg_body total_supply admin_address content _111 - IFJMP:<{ // sender_address op jetton_wallet_code in_msg_body total_supply admin_address content - s5 POP // sender_address content jetton_wallet_code in_msg_body total_supply admin_address - s1 s5 XCHG // total_supply content jetton_wallet_code in_msg_body sender_address admin_address - SDEQ // total_supply content jetton_wallet_code in_msg_body _113 - 73 THROWIFNOT - LDMSGADDR // total_supply content jetton_wallet_code _156 _155 - DROP // total_supply content jetton_wallet_code new_admin_address - -ROT // total_supply new_admin_address content jetton_wallet_code - save_data INLINECALLDICT - }> // sender_address op jetton_wallet_code in_msg_body total_supply admin_address content - DROP // sender_address op jetton_wallet_code in_msg_body total_supply admin_address - s0 s4 XCHG // sender_address admin_address jetton_wallet_code in_msg_body total_supply op - 4 EQINT // sender_address admin_address jetton_wallet_code in_msg_body total_supply _120 - IFJMP:<{ // sender_address admin_address jetton_wallet_code in_msg_body total_supply - s4 s3 XCPU // total_supply admin_address jetton_wallet_code in_msg_body sender_address admin_address - SDEQ // total_supply admin_address jetton_wallet_code in_msg_body _122 - 73 THROWIFNOT - LDREF // total_supply admin_address jetton_wallet_code _158 _157 - DROP // total_supply admin_address jetton_wallet_code _124 - SWAP // total_supply admin_address _124 jetton_wallet_code - save_data INLINECALLDICT - }> // sender_address admin_address jetton_wallet_code in_msg_body total_supply - 5 BLKDROP // - 16 PUSHPOW2DEC // _127=65535 - THROWANY - }> - get_jetton_data PROC:<{ - // - load_data INLINECALLDICT // total_supply admin_address content jetton_wallet_code - -1 PUSHINT // total_supply admin_address content jetton_wallet_code _5=-1 - 3 -ROLL // total_supply _5=-1 admin_address content jetton_wallet_code - }> - get_wallet_address PROC:<{ - // owner_address - load_data INLINECALLDICT // owner_address _8 _9 _10 _11 - 3 1 BLKDROP2 // owner_address jetton_wallet_code - MYADDR // owner_address jetton_wallet_code _6 - SWAP // owner_address _6 jetton_wallet_code - calculate_user_jetton_wallet_address INLINECALLDICT // _7 - }> -}END>c diff --git a/ft/build/jetton-wallet.boc b/ft/build/jetton-wallet.boc deleted file mode 100644 index 50d2731823fb955f4a5ec15b3dc2f6d0e5a3c6e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmah{ZAep57(Vyx-g(n$SG``7X3o@*2(jx%i}Y$>bIn&|By)m85(Mkjo9rO*nOUe%x!5vD zMAmuEPFg^Ji;_bfXIIJSW|!{zgx}(IpR9hJ^1AP2Q;q@>pCdq=#yEboCct+GCfOzr zD>S|Yb$}JvCaytV%(8-KFuoD*!8m&zh7^;kcSgR}J5d~!vaDYRYXT0AzZze7^Ftw% ztQ`5v2$e_%t-F8?AOZCJvcFBfsQ(Y;z*a_DV)CCjfD})?;_1#xgLPkpQ;{zC6Dyhy ztBsY?O3mtYsCP;*3S=}pXD4`Sr3!BzD+-DwMPj`+BMJ9L7_BtIR3xER5@AAGB3w3X z9yZ0aq$}TPB|m)-9sw(PZ;sZLkb2S9jZ#_Ehsd?Wr@p zll?s5BA(TH-BH_~mGdheb|zqs%z|}(XfkcFM{h{`rrEU3voOgTC{Cd8e?rjTrT|wI nq$;>2KbR6_^iL+8o5;2$+hdD&q9+nYF~&dB - pack_jetton_wallet_data PROCINLINE:<{ - // balance owner_address jetton_master_address jetton_wallet_code - NEWC // balance owner_address jetton_master_address jetton_wallet_code _4 - s0 s4 XCHG2 // jetton_wallet_code owner_address jetton_master_address _4 balance - STVARUINT16 // jetton_wallet_code owner_address jetton_master_address _5 - ROT // jetton_wallet_code jetton_master_address _5 owner_address - STSLICER // jetton_wallet_code jetton_master_address _6 - SWAP // jetton_wallet_code _6 jetton_master_address - STSLICER // jetton_wallet_code _7 - STREF // _8 - ENDC // _9 - }> - calculate_jetton_wallet_state_init PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - 0 PUSHINT // owner_address jetton_master_address jetton_wallet_code _3=0 - s0 s1 s2 XCPUXC - s4 s0 s3 XC2PU // _3=0 jetton_wallet_code _4=0 owner_address jetton_master_address jetton_wallet_code - pack_jetton_wallet_data INLINECALLDICT // _3=0 jetton_wallet_code _5 - s2 PUSH // _3=0 jetton_wallet_code _5 _6=0 - NEWC // _3=0 jetton_wallet_code _5 _6=0 _7 - 2 STU // _3=0 jetton_wallet_code _5 _9 - s1 s2 XCHG // _3=0 _5 jetton_wallet_code _9 - STDICT // _3=0 _5 _10 - STDICT // _3=0 _11 - 1 STU // _13 - ENDC // _14 - }> - calculate_jetton_wallet_address PROCINLINE:<{ - // state_init - HASHCU // _1 - 0 PUSHINT // _1 _2 - 4 PUSHINT // _1 _2 _3=4 - NEWC // _1 _2 _3=4 _4 - 3 STU // _1 _2 _6 - 8 STI // _1 _8 - 256 STU // _10 - ENDC // _11 - CTOS // _12 - }> - calculate_user_jetton_wallet_address PROCINLINE:<{ - // owner_address jetton_master_address jetton_wallet_code - calculate_jetton_wallet_state_init INLINECALLDICT // _3 - calculate_jetton_wallet_address INLINECALLDICT // _4 - }> - load_data PROCINLINE:<{ - // - c4 PUSH // _1 - CTOS // ds - LDVARUINT16 // _3 ds - LDMSGADDR // _3 _5 ds - LDMSGADDR // _3 _5 _7 ds - LDREF // _3 _5 _7 _18 _17 - DROP // _3 _5 _7 _9 - }> - save_data PROCINLINE:<{ - // balance owner_address jetton_master_address jetton_wallet_code - pack_jetton_wallet_data INLINECALLDICT // _4 - c4 POP - }> - send_tokens PROC:<{ - // in_msg_body sender_address msg_value fwd_fee - s0 s3 XCHG // fwd_fee sender_address msg_value in_msg_body - 64 LDU // fwd_fee sender_address msg_value query_id in_msg_body - LDVARUINT16 // fwd_fee sender_address msg_value query_id jetton_amount in_msg_body - LDMSGADDR // fwd_fee sender_address msg_value query_id jetton_amount to_owner_address in_msg_body - OVER // fwd_fee sender_address msg_value query_id jetton_amount to_owner_address in_msg_body to_owner_address - force_chain CALLDICT - load_data INLINECALLDICT // fwd_fee sender_address msg_value query_id jetton_amount to_owner_address in_msg_body balance owner_address jetton_master_address jetton_wallet_code - s3 s6 XCPU // fwd_fee sender_address msg_value query_id jetton_amount to_owner_address in_msg_body jetton_wallet_code owner_address jetton_master_address balance jetton_amount - SUB // fwd_fee sender_address msg_value query_id jetton_amount to_owner_address in_msg_body jetton_wallet_code owner_address jetton_master_address balance - s2 s9 PUXC // fwd_fee balance msg_value query_id jetton_amount to_owner_address in_msg_body jetton_wallet_code owner_address jetton_master_address owner_address sender_address - SDEQ // fwd_fee balance msg_value query_id jetton_amount to_owner_address in_msg_body jetton_wallet_code owner_address jetton_master_address _22 - 705 THROWIFNOT - s8 PUSH // fwd_fee balance msg_value query_id jetton_amount to_owner_address in_msg_body jetton_wallet_code owner_address jetton_master_address balance - -1 GTINT // fwd_fee balance msg_value query_id jetton_amount to_owner_address in_msg_body jetton_wallet_code owner_address jetton_master_address _26 - 706 THROWIFNOT - s4 s4 s2 XCPU2 // fwd_fee balance msg_value query_id jetton_amount jetton_master_address in_msg_body jetton_wallet_code owner_address to_owner_address jetton_master_address jetton_wallet_code - calculate_jetton_wallet_state_init INLINECALLDICT // fwd_fee balance msg_value query_id jetton_amount jetton_master_address in_msg_body jetton_wallet_code owner_address state_init - DUP // fwd_fee balance msg_value query_id jetton_amount jetton_master_address in_msg_body jetton_wallet_code owner_address state_init state_init - calculate_jetton_wallet_address INLINECALLDICT // fwd_fee balance msg_value query_id jetton_amount jetton_master_address in_msg_body jetton_wallet_code owner_address state_init to_wallet_address - s0 s4 XCHG // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init in_msg_body - LDMSGADDR // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address in_msg_body - LDDICT // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address _123 _122 - NIP // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address in_msg_body - LDVARUINT16 // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address forward_ton_amount in_msg_body - DUP // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address forward_ton_amount in_msg_body in_msg_body - SBITS // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address forward_ton_amount in_msg_body _42 - 0 GTINT // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address forward_ton_amount in_msg_body _44 - 708 THROWIFNOT // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address forward_ton_amount either_forward_payload - 7 PUSHINT // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address forward_ton_amount either_forward_payload _52 - 24 PUSHINT // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address forward_ton_amount either_forward_payload _52 _53=24 - NEWC // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address forward_ton_amount either_forward_payload _52 _53=24 _54 - 6 STU // fwd_fee balance msg_value query_id jetton_amount jetton_master_address to_wallet_address jetton_wallet_code owner_address state_init response_address forward_ton_amount either_forward_payload _52 _56 - s0 s8 XCHG2 // fwd_fee balance msg_value query_id jetton_amount jetton_master_address _52 jetton_wallet_code owner_address state_init response_address forward_ton_amount either_forward_payload _56 to_wallet_address - STSLICER // fwd_fee balance msg_value query_id jetton_amount jetton_master_address _52 jetton_wallet_code owner_address state_init response_address forward_ton_amount either_forward_payload _57 - 0 PUSHINT // fwd_fee balance msg_value query_id jetton_amount jetton_master_address _52 jetton_wallet_code owner_address state_init response_address forward_ton_amount either_forward_payload _57 _58=0 - STVARUINT16 // fwd_fee balance msg_value query_id jetton_amount jetton_master_address _52 jetton_wallet_code owner_address state_init response_address forward_ton_amount either_forward_payload _59 - s1 s7 XCHG // fwd_fee balance msg_value query_id jetton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address state_init response_address forward_ton_amount _52 _59 - 108 STU // fwd_fee balance msg_value query_id jetton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address state_init response_address forward_ton_amount _75 - s1 s3 XCHG // fwd_fee balance msg_value query_id jetton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount response_address state_init _75 - STREF // fwd_fee balance msg_value query_id jetton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount response_address msg - 0x178d4519 PUSHINT // fwd_fee balance msg_value query_id jetton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount response_address msg _78 - NEWC // fwd_fee balance msg_value query_id jetton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount response_address msg _78 _79 - 32 STU // fwd_fee balance msg_value query_id jetton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount response_address msg _81 - s1 s9 XCHG // fwd_fee balance msg_value msg jetton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount response_address query_id _81 - 64 STU // fwd_fee balance msg_value msg jetton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount response_address _83 - s0 s7 XCHG2 // fwd_fee balance msg_value msg response_address jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount _83 jetton_amount - STVARUINT16 // fwd_fee balance msg_value msg response_address jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount _84 - s2 PUSH // fwd_fee balance msg_value msg response_address jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount _84 owner_address - STSLICER // fwd_fee balance msg_value msg response_address jetton_master_address either_forward_payload jetton_wallet_code owner_address forward_ton_amount _85 - s0 s6 XCHG2 // fwd_fee balance msg_value msg forward_ton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address _85 response_address - STSLICER // fwd_fee balance msg_value msg forward_ton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address _86 - s5 PUSH // fwd_fee balance msg_value msg forward_ton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address _86 forward_ton_amount - STVARUINT16 // fwd_fee balance msg_value msg forward_ton_amount jetton_master_address either_forward_payload jetton_wallet_code owner_address _87 - s0 s3 XCHG2 // fwd_fee balance msg_value msg forward_ton_amount jetton_master_address owner_address jetton_wallet_code _87 either_forward_payload - STSLICER // fwd_fee balance msg_value msg forward_ton_amount jetton_master_address owner_address jetton_wallet_code _88 - ENDC // fwd_fee balance msg_value msg forward_ton_amount jetton_master_address owner_address jetton_wallet_code msg_body - s0 s5 XCHG2 // fwd_fee balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address msg_body msg - STREF // fwd_fee balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address msg - s3 PUSH // fwd_fee balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address msg forward_ton_amount - IF:<{ // fwd_fee balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address msg - 2 PUSHINT // fwd_fee balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address msg _92=2 - }>ELSE<{ // fwd_fee balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address msg - 1 PUSHINT // fwd_fee balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address msg _92=1 - }> // fwd_fee balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address msg fwd_count - s0 s8 XCHG2 // msg balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address fwd_count fwd_fee - MUL // msg balance msg_value jetton_wallet_code forward_ton_amount jetton_master_address owner_address _96 - s1 s3 XCHG // msg balance msg_value jetton_wallet_code owner_address jetton_master_address forward_ton_amount _96 - ADD // msg balance msg_value jetton_wallet_code owner_address jetton_master_address _97 - 15000000 PUSHINT // msg balance msg_value jetton_wallet_code owner_address jetton_master_address _97 _99 - 1 LSHIFT# // msg balance msg_value jetton_wallet_code owner_address jetton_master_address _97 _100 - 10000000 PUSHINT // msg balance msg_value jetton_wallet_code owner_address jetton_master_address _97 _100 _101 - ADD // msg balance msg_value jetton_wallet_code owner_address jetton_master_address _97 _102 - ADD // msg balance msg_value jetton_wallet_code owner_address jetton_master_address _103 - s1 s4 XCHG // msg balance jetton_master_address jetton_wallet_code owner_address msg_value _103 - GREATER // msg balance jetton_master_address jetton_wallet_code owner_address _104 - 709 THROWIFNOT - s0 s4 XCHG // owner_address balance jetton_master_address jetton_wallet_code msg - ENDC // owner_address balance jetton_master_address jetton_wallet_code _106 - 64 PUSHINT // owner_address balance jetton_master_address jetton_wallet_code _106 _107=64 - SENDRAWMSG - s2 s3 XCHG // balance owner_address jetton_master_address jetton_wallet_code - save_data INLINECALLDICT - }> - receive_tokens PROC:<{ - // in_msg_body sender_address my_ton_balance fwd_fee msg_value - load_data INLINECALLDICT // in_msg_body sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address jetton_wallet_code - s0 s8 XCHG // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address in_msg_body - 64 LDU // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id in_msg_body - LDVARUINT16 // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount in_msg_body - s5 s1 XCPU // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value in_msg_body owner_address jetton_master_address query_id jetton_amount balance jetton_amount - ADD // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value in_msg_body owner_address jetton_master_address query_id jetton_amount balance - s0 s5 XCHG // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount in_msg_body - LDMSGADDR // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address in_msg_body - LDMSGADDR // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address response_address in_msg_body - s5 s11 PUSH2 // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address response_address in_msg_body jetton_master_address sender_address - SDEQ // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address response_address in_msg_body _25 - s3 s6 s13 PUSH3 // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address response_address in_msg_body _25 from_address jetton_master_address jetton_wallet_code - calculate_user_jetton_wallet_address INLINECALLDICT // jetton_wallet_code sender_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address response_address in_msg_body _25 _26 - s0 s13 XCHG2 // jetton_wallet_code _25 my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address response_address in_msg_body _26 sender_address - SDEQ // jetton_wallet_code _25 my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address response_address in_msg_body _27 - s1 s12 XCHG // jetton_wallet_code in_msg_body my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address response_address _25 _27 - OR // jetton_wallet_code in_msg_body my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address response_address _28 - 707 THROWIFNOT - s0 s10 XCHG // jetton_wallet_code response_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address in_msg_body - LDVARUINT16 // jetton_wallet_code response_address my_ton_balance fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount in_msg_body - s10 s8 XCPU // jetton_wallet_code response_address in_msg_body fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount my_ton_balance msg_value - SUB // jetton_wallet_code response_address in_msg_body fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount ton_balance_before_msg - 10000000 PUSHINT // jetton_wallet_code response_address in_msg_body fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount ton_balance_before_msg _36 - 10000000 PUSHINT // jetton_wallet_code response_address in_msg_body fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount ton_balance_before_msg _36 _37 - s1 s2 XCHG // jetton_wallet_code response_address in_msg_body fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount _36 ton_balance_before_msg _37 - MIN // jetton_wallet_code response_address in_msg_body fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount _36 _38 - SUB // jetton_wallet_code response_address in_msg_body fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount storage_fee - 15000000 PUSHINT // jetton_wallet_code response_address in_msg_body fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount storage_fee _40 - ADD // jetton_wallet_code response_address in_msg_body fwd_fee msg_value balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount _41 - s1 s8 XCHG // jetton_wallet_code response_address in_msg_body fwd_fee forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount from_address msg_value _41 - SUB // jetton_wallet_code response_address in_msg_body fwd_fee forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount from_address msg_value - s7 PUSH // jetton_wallet_code response_address in_msg_body fwd_fee forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount from_address msg_value forward_ton_amount - IF:<{ // jetton_wallet_code response_address in_msg_body fwd_fee forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount from_address msg_value - s7 s8 PUXC // jetton_wallet_code response_address in_msg_body msg_value forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount from_address forward_ton_amount fwd_fee - ADD // jetton_wallet_code response_address in_msg_body msg_value forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount from_address _43 - s1 s8 XCHG // jetton_wallet_code response_address in_msg_body from_address forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount msg_value _43 - SUB // jetton_wallet_code response_address either_forward_payload from_address forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount msg_value - 0x7362d09c PUSHINT // jetton_wallet_code response_address either_forward_payload from_address forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount msg_value _47 - NEWC // jetton_wallet_code response_address either_forward_payload from_address forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount msg_value _47 _48 - 32 STU // jetton_wallet_code response_address either_forward_payload from_address forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount msg_value _50 - s3 s(-1) PUXC // jetton_wallet_code response_address either_forward_payload from_address forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount msg_value query_id _50 - 64 STU // jetton_wallet_code response_address either_forward_payload from_address forward_ton_amount balance owner_address jetton_master_address query_id jetton_amount msg_value _52 - ROT // jetton_wallet_code response_address either_forward_payload from_address forward_ton_amount balance owner_address jetton_master_address query_id msg_value _52 jetton_amount - STVARUINT16 // jetton_wallet_code response_address either_forward_payload from_address forward_ton_amount balance owner_address jetton_master_address query_id msg_value _53 - s0 s7 XCHG2 // jetton_wallet_code response_address either_forward_payload msg_value forward_ton_amount balance owner_address jetton_master_address query_id _53 from_address - STSLICER // jetton_wallet_code response_address either_forward_payload msg_value forward_ton_amount balance owner_address jetton_master_address query_id _54 - s0 s7 XCHG2 // jetton_wallet_code response_address query_id msg_value forward_ton_amount balance owner_address jetton_master_address _54 either_forward_payload - STSLICER // jetton_wallet_code response_address query_id msg_value forward_ton_amount balance owner_address jetton_master_address _55 - ENDC // jetton_wallet_code response_address query_id msg_value forward_ton_amount balance owner_address jetton_master_address msg_body - 1 PUSHINT // jetton_wallet_code response_address query_id msg_value forward_ton_amount balance owner_address jetton_master_address msg_body _58=1 - 16 PUSHINT // jetton_wallet_code response_address query_id msg_value forward_ton_amount balance owner_address jetton_master_address msg_body _58=1 _59=16 - NEWC // jetton_wallet_code response_address query_id msg_value forward_ton_amount balance owner_address jetton_master_address msg_body _58=1 _59=16 _60 - 6 STU // jetton_wallet_code response_address query_id msg_value forward_ton_amount balance owner_address jetton_master_address msg_body _58=1 _62 - s4 PUSH // jetton_wallet_code response_address query_id msg_value forward_ton_amount balance owner_address jetton_master_address msg_body _58=1 _62 owner_address - STSLICER // jetton_wallet_code response_address query_id msg_value forward_ton_amount balance owner_address jetton_master_address msg_body _58=1 _63 - s0 s6 XCHG2 // jetton_wallet_code response_address query_id msg_value _58=1 balance owner_address jetton_master_address msg_body _63 forward_ton_amount - STVARUINT16 // jetton_wallet_code response_address query_id msg_value _58=1 balance owner_address jetton_master_address msg_body _64 - s1 s5 XCHG // jetton_wallet_code response_address query_id msg_value msg_body balance owner_address jetton_master_address _58=1 _64 - 107 STU // jetton_wallet_code response_address query_id msg_value msg_body balance owner_address jetton_master_address _78 - s1 s4 XCHG // jetton_wallet_code response_address query_id msg_value jetton_master_address balance owner_address msg_body _78 - STREF // jetton_wallet_code response_address query_id msg_value jetton_master_address balance owner_address msg - ENDC // jetton_wallet_code response_address query_id msg_value jetton_master_address balance owner_address _80 - 1 PUSHINT // jetton_wallet_code response_address query_id msg_value jetton_master_address balance owner_address _80 _81=1 - SENDRAWMSG - s2 s4 XCHG - s2 s3 XCHG // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address - }>ELSE<{ - s4 s9 XCHG - s3 s8 XCHG - s7 POP - 4 BLKDROP // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address - }> - s5 PUSH // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address response_address - 2 PLDU // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _84 - 0 NEQINT // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _86 - s3 PUSH // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _86 msg_value - 0 GTINT // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _86 _88 - AND // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _89 - IF:<{ // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address - 0xd53276db PUSHINT // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _91 - 0 PUSHINT // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _91 _92=0 - 16 PUSHINT // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _91 _92=0 _93=16 - NEWC // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _91 _92=0 _93=16 _94 - 6 STU // jetton_wallet_code response_address jetton_master_address query_id msg_value balance owner_address _91 _92=0 _96 - s0 s8 XCHG2 // jetton_wallet_code _92=0 jetton_master_address query_id msg_value balance owner_address _91 _96 response_address - STSLICER // jetton_wallet_code _92=0 jetton_master_address query_id msg_value balance owner_address _91 _97 - s0 s4 XCHG2 // jetton_wallet_code _92=0 jetton_master_address query_id _91 balance owner_address _97 msg_value - STVARUINT16 // jetton_wallet_code _92=0 jetton_master_address query_id _91 balance owner_address _98 - s1 s6 XCHG // jetton_wallet_code owner_address jetton_master_address query_id _91 balance _92=0 _98 - 107 STU // jetton_wallet_code owner_address jetton_master_address query_id _91 balance _112 - s1 s2 XCHG // jetton_wallet_code owner_address jetton_master_address query_id balance _91 _112 - 32 STU // jetton_wallet_code owner_address jetton_master_address query_id balance _114 - s1 s2 XCHG // jetton_wallet_code owner_address jetton_master_address balance query_id _114 - 64 STU // jetton_wallet_code owner_address jetton_master_address balance msg - ENDC // jetton_wallet_code owner_address jetton_master_address balance _117 - 2 PUSHINT // jetton_wallet_code owner_address jetton_master_address balance _117 _118=2 - SENDRAWMSG - }>ELSE<{ - s5 POP - 2 1 BLKDROP2 // jetton_wallet_code owner_address jetton_master_address balance - }> - s0 s3 XCHG // balance owner_address jetton_master_address jetton_wallet_code - save_data INLINECALLDICT - }> - burn_tokens PROC:<{ - // in_msg_body sender_address msg_value fwd_fee - load_data INLINECALLDICT // in_msg_body sender_address msg_value fwd_fee balance owner_address jetton_master_address jetton_wallet_code - s0 s7 XCHG // jetton_wallet_code sender_address msg_value fwd_fee balance owner_address jetton_master_address in_msg_body - 64 LDU // jetton_wallet_code sender_address msg_value fwd_fee balance owner_address jetton_master_address query_id in_msg_body - LDVARUINT16 // jetton_wallet_code sender_address msg_value fwd_fee balance owner_address jetton_master_address query_id jetton_amount in_msg_body - LDMSGADDR // jetton_wallet_code sender_address msg_value fwd_fee balance owner_address jetton_master_address query_id jetton_amount _82 _81 - DROP // jetton_wallet_code sender_address msg_value fwd_fee balance owner_address jetton_master_address query_id jetton_amount response_address - s5 s1 XCPU // jetton_wallet_code sender_address msg_value fwd_fee response_address owner_address jetton_master_address query_id jetton_amount balance jetton_amount - SUB // jetton_wallet_code sender_address msg_value fwd_fee response_address owner_address jetton_master_address query_id jetton_amount balance - s4 s8 PUXC // jetton_wallet_code balance msg_value fwd_fee response_address owner_address jetton_master_address query_id jetton_amount owner_address sender_address - SDEQ // jetton_wallet_code balance msg_value fwd_fee response_address owner_address jetton_master_address query_id jetton_amount _21 - 705 THROWIFNOT - s7 PUSH // jetton_wallet_code balance msg_value fwd_fee response_address owner_address jetton_master_address query_id jetton_amount balance - -1 GTINT // jetton_wallet_code balance msg_value fwd_fee response_address owner_address jetton_master_address query_id jetton_amount _25 - 706 THROWIFNOT - 15000000 PUSHINT // jetton_wallet_code balance msg_value fwd_fee response_address owner_address jetton_master_address query_id jetton_amount _29 - 1 LSHIFT# // jetton_wallet_code balance msg_value fwd_fee response_address owner_address jetton_master_address query_id jetton_amount _30 - s1 s6 XCHG // jetton_wallet_code balance msg_value jetton_amount response_address owner_address jetton_master_address query_id fwd_fee _30 - ADD // jetton_wallet_code balance msg_value jetton_amount response_address owner_address jetton_master_address query_id _31 - s1 s6 XCHG // jetton_wallet_code balance query_id jetton_amount response_address owner_address jetton_master_address msg_value _31 - GREATER // jetton_wallet_code balance query_id jetton_amount response_address owner_address jetton_master_address _32 - 707 THROWIFNOT - 0x7bdd97de PUSHINT // jetton_wallet_code balance query_id jetton_amount response_address owner_address jetton_master_address _35 - NEWC // jetton_wallet_code balance query_id jetton_amount response_address owner_address jetton_master_address _35 _36 - 32 STU // jetton_wallet_code balance query_id jetton_amount response_address owner_address jetton_master_address _38 - s1 s5 XCHG // jetton_wallet_code balance jetton_master_address jetton_amount response_address owner_address query_id _38 - 64 STU // jetton_wallet_code balance jetton_master_address jetton_amount response_address owner_address _40 - s0 s3 XCHG2 // jetton_wallet_code balance jetton_master_address owner_address response_address _40 jetton_amount - STVARUINT16 // jetton_wallet_code balance jetton_master_address owner_address response_address _41 - s2 PUSH // jetton_wallet_code balance jetton_master_address owner_address response_address _41 owner_address - STSLICER // jetton_wallet_code balance jetton_master_address owner_address response_address _42 - SWAP // jetton_wallet_code balance jetton_master_address owner_address _42 response_address - STSLICER // jetton_wallet_code balance jetton_master_address owner_address _43 - ENDC // jetton_wallet_code balance jetton_master_address owner_address msg_body - 1 PUSHINT // jetton_wallet_code balance jetton_master_address owner_address msg_body _46=1 - 24 PUSHINT // jetton_wallet_code balance jetton_master_address owner_address msg_body _46=1 _47=24 - NEWC // jetton_wallet_code balance jetton_master_address owner_address msg_body _46=1 _47=24 _48 - 6 STU // jetton_wallet_code balance jetton_master_address owner_address msg_body _46=1 _50 - s4 PUSH // jetton_wallet_code balance jetton_master_address owner_address msg_body _46=1 _50 jetton_master_address - STSLICER // jetton_wallet_code balance jetton_master_address owner_address msg_body _46=1 _51 - 0 PUSHINT // jetton_wallet_code balance jetton_master_address owner_address msg_body _46=1 _51 _52=0 - STVARUINT16 // jetton_wallet_code balance jetton_master_address owner_address msg_body _46=1 _53 - 107 STU // jetton_wallet_code balance jetton_master_address owner_address msg_body _67 - STREF // jetton_wallet_code balance jetton_master_address owner_address msg - ENDC // jetton_wallet_code balance jetton_master_address owner_address _69 - 64 PUSHINT // jetton_wallet_code balance jetton_master_address owner_address _69 _70=64 - SENDRAWMSG - s0 s1 s3 XCHG3 // balance owner_address jetton_master_address jetton_wallet_code - save_data INLINECALLDICT - }> - on_bounce PROC:<{ - // in_msg_body - 32 PUSHINT // in_msg_body _2=32 - SDSKIPFIRST // in_msg_body - load_data INLINECALLDICT // in_msg_body balance owner_address jetton_master_address jetton_wallet_code - s0 s4 XCHG // jetton_wallet_code balance owner_address jetton_master_address in_msg_body - 32 LDU // jetton_wallet_code balance owner_address jetton_master_address op in_msg_body - 0x178d4519 PUSHINT // jetton_wallet_code balance owner_address jetton_master_address op in_msg_body _14 - s2 s(-1) PUXC // jetton_wallet_code balance owner_address jetton_master_address op in_msg_body op _14 - EQUAL // jetton_wallet_code balance owner_address jetton_master_address op in_msg_body _15 - 0x7bdd97de PUSHINT // jetton_wallet_code balance owner_address jetton_master_address op in_msg_body _15 _16 - s1 s3 XCHG // jetton_wallet_code balance owner_address jetton_master_address _15 in_msg_body op _16 - EQUAL // jetton_wallet_code balance owner_address jetton_master_address _15 in_msg_body _17 - s1 s2 XCHG // jetton_wallet_code balance owner_address jetton_master_address in_msg_body _15 _17 - OR // jetton_wallet_code balance owner_address jetton_master_address in_msg_body _18 - 709 THROWIFNOT - 64 LDU // jetton_wallet_code balance owner_address jetton_master_address _36 _35 - NIP // jetton_wallet_code balance owner_address jetton_master_address in_msg_body - LDVARUINT16 // jetton_wallet_code balance owner_address jetton_master_address _38 _37 - DROP // jetton_wallet_code balance owner_address jetton_master_address jetton_amount - s1 s3 XCHG // jetton_wallet_code jetton_master_address owner_address balance jetton_amount - ADD // jetton_wallet_code jetton_master_address owner_address balance - s2 s3 XCHG2 // balance owner_address jetton_master_address jetton_wallet_code - save_data INLINECALLDICT - }> - recv_internal PROC:<{ - // my_balance msg_value in_msg_full in_msg_body - DUP // my_balance msg_value in_msg_full in_msg_body in_msg_body - SEMPTY // my_balance msg_value in_msg_full in_msg_body _4 - IFJMP:<{ // my_balance msg_value in_msg_full in_msg_body - 4 BLKDROP // - }> // my_balance msg_value in_msg_full in_msg_body - SWAP // my_balance msg_value in_msg_body in_msg_full - CTOS // my_balance msg_value in_msg_body cs - 4 LDU // my_balance msg_value in_msg_body flags cs - SWAP - 1 PUSHINT // my_balance msg_value in_msg_body cs flags _11=1 - AND // my_balance msg_value in_msg_body cs _12 - IFJMP:<{ // my_balance msg_value in_msg_body cs - s1 s3 XCHG - 3 BLKDROP // in_msg_body - on_bounce CALLDICT - }> // my_balance msg_value in_msg_body cs - LDMSGADDR // my_balance msg_value in_msg_body sender_address cs - LDMSGADDR // my_balance msg_value in_msg_body sender_address _52 _51 - NIP // my_balance msg_value in_msg_body sender_address cs - LDVARUINT16 // my_balance msg_value in_msg_body sender_address _54 _53 - NIP // my_balance msg_value in_msg_body sender_address cs - 1 PUSHINT // my_balance msg_value in_msg_body sender_address cs _22=1 - SDSKIPFIRST // my_balance msg_value in_msg_body sender_address cs - LDVARUINT16 // my_balance msg_value in_msg_body sender_address _56 _55 - NIP // my_balance msg_value in_msg_body sender_address cs - LDVARUINT16 // my_balance msg_value in_msg_body sender_address _58 _57 - DROP // my_balance msg_value in_msg_body sender_address _27 - 3 PUSHINT // my_balance msg_value in_msg_body sender_address _27 _29=3 - 1 MULRSHIFT# // my_balance msg_value in_msg_body sender_address fwd_fee - s0 s2 XCHG // my_balance msg_value fwd_fee sender_address in_msg_body - 32 LDU // my_balance msg_value fwd_fee sender_address op in_msg_body - 0xf8a7ea5 PUSHINT // my_balance msg_value fwd_fee sender_address op in_msg_body _36 - s2 s(-1) PUXC // my_balance msg_value fwd_fee sender_address op in_msg_body op _36 - EQUAL // my_balance msg_value fwd_fee sender_address op in_msg_body _37 - IFJMP:<{ // my_balance msg_value fwd_fee sender_address op in_msg_body - NIP - s4 POP // in_msg_body msg_value fwd_fee sender_address - -ROT // in_msg_body sender_address msg_value fwd_fee - send_tokens CALLDICT - }> // my_balance msg_value fwd_fee sender_address op in_msg_body - 0x178d4519 PUSHINT // my_balance msg_value fwd_fee sender_address op in_msg_body _39 - s2 s(-1) PUXC // my_balance msg_value fwd_fee sender_address op in_msg_body op _39 - EQUAL // my_balance msg_value fwd_fee sender_address op in_msg_body _40 - IFJMP:<{ // my_balance msg_value fwd_fee sender_address op in_msg_body - NIP // my_balance msg_value fwd_fee sender_address in_msg_body - s4 s4 s4 XCHG3 - s0 s3 XCHG // in_msg_body sender_address my_balance fwd_fee msg_value - receive_tokens CALLDICT - }> // my_balance msg_value fwd_fee sender_address op in_msg_body - s5 POP // in_msg_body msg_value fwd_fee sender_address op - 0x595f07bc PUSHINT // in_msg_body msg_value fwd_fee sender_address op _42 - EQUAL // in_msg_body msg_value fwd_fee sender_address _43 - IFJMP:<{ // in_msg_body msg_value fwd_fee sender_address - -ROT // in_msg_body sender_address msg_value fwd_fee - burn_tokens CALLDICT - }> // in_msg_body msg_value fwd_fee sender_address - 4 BLKDROP // - 16 PUSHPOW2DEC // _45=65535 - THROWANY - }> - get_wallet_data PROC:<{ - // - load_data INLINECALLDICT // _1 _2 _3 _4 - }> -}END>c diff --git a/ft/build/new-wton.fif b/ft/build/new-wton.fif deleted file mode 100644 index 7e93395..0000000 --- a/ft/build/new-wton.fif +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/fift -s -"TonUtil.fif" include -"Asm.fif" include - - -"jetton-wallet.boc" file>B B>boc =: ft_code - -<{ - SETCP0 ACCEPT - now PUSHINT - "jetton-minter.fif" include PUSHREF SETCODE -}>s =: contract_code - - =: contract_storage - -0 =: wc - - ref, contract_storage ref, b> -dup =: state_init -dup hashu wc swap 2constant contract_addr - -."Contract address = " contract_addr .addr cr - -contract_addr "wton.addr" save-address-verbose - -."Non-bounceable address (for init): " contract_addr 7 .Addr cr -."Bounceable address (for later access): " contract_addr 6 .Addr cr - - - =: init_message - - - -2 boc+>B -"wton-query.boc" tuck B>file -."(Saved collection contract creating query to file " type .")" cr diff --git a/ft/build/print-hex.fif b/ft/build/print-hex.fif deleted file mode 100644 index 61e8cc0..0000000 --- a/ft/build/print-hex.fif +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/fift -s -"TonUtil.fif" include -"Asm.fif" include - -."jetton-minter:" cr - -"jetton-minter.fif" include -2 boc+>B dup Bx. cr - -."jetton-wallet:" cr - -"jetton-wallet.fif" include -2 boc+>B dup Bx. cr - - -."jetton-minter-ICO:" cr - -"jetton-minter-ICO.fif" include -2 boc+>B dup Bx. cr - - -."jetton-minter-discoverable:" cr - -"jetton-minter-discoverable.fif" include -2 boc+>B dup Bx. cr - - -."jetton-discovery:" cr - -"jetton-discovery.fif" include -2 boc+>B dup Bx. cr diff --git a/ft/build/send-token.fif b/ft/build/send-token.fif deleted file mode 100644 index ce9439d..0000000 --- a/ft/build/send-token.fif +++ /dev/null @@ -1,10 +0,0 @@ -"Asm.fif" include -"TonUtil.fif" include -smca 2drop Addr, -"EQDkZIvi6fkgNVxLOgw5hzquGhxhUvhvJ4B836p-NQ-iLKCv" $>smca 2drop Addr, -0 1 u, -1 Gram, -0 1 u, -b> - diff --git a/ft/build/wton.addr b/ft/build/wton.addr deleted file mode 100644 index 9e4d0e499edc8edfd928f7f40a0c75dd25477558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36 scmaFYcT?NB "build/jetton-wallet.boc" B>file' | fift -s -func -SPA -o ./build/jetton-minter.fif ../stdlib.fc params.fc op-codes.fc jetton-utils.fc jetton-minter.fc -func -SPA -o ./build/jetton-minter-ICO.fif ../stdlib.fc params.fc op-codes.fc jetton-utils.fc jetton-minter-ICO.fc -func -SPA -o ./build/jetton-discovery.fif ../stdlib.fc params.fc op-codes.fc discovery-params.fc jetton-utils.fc jetton-discovery.fc -func -SPA -o ./build/jetton-minter-discoverable.fif ../stdlib.fc params.fc op-codes.fc discovery-params.fc jetton-utils.fc jetton-minter-discoverable.fc - -fift -s build/print-hex.fif diff --git a/ft/discovery-params.fc b/ft/discovery-params.fc deleted file mode 100644 index d4e3f8a..0000000 --- a/ft/discovery-params.fc +++ /dev/null @@ -1,10 +0,0 @@ -;; moved to the separate file to keep hex of the previous codes unchanged - -int op::provide_wallet_address() asm "0x2c76b973 PUSHINT"; -int op::take_wallet_address() asm "0xd1735400 PUSHINT"; - -int is_resolvable?(slice addr) inline { - (int wc, _) = parse_std_addr(addr); - - return wc == workchain(); -} diff --git a/ft/ft/alpcoin.fc b/ft/ft/alpcoin.fc deleted file mode 100644 index 93b7ef5..0000000 --- a/ft/ft/alpcoin.fc +++ /dev/null @@ -1,4 +0,0 @@ -;; Alpcoin Jetton Contract - boshlang'ich -() => { - throw("Alpcoin Jetton kontrakti tayyorlanmoqda."); -} diff --git a/ft/jetton-discovery.fc b/ft/jetton-discovery.fc deleted file mode 100644 index d07050a..0000000 --- a/ft/jetton-discovery.fc +++ /dev/null @@ -1,70 +0,0 @@ -;; Jettons discovery smart contract for the non-discoverable Jettons - -;; 6098(computational_gas_price) * 1000(cur_gas_price) = 6098000 -;; ceil(6098000) = 10000000 ~= 0.01 TON -int provide_address_gas_consumption() asm "10000000 PUSHINT"; - -;; storage scheme -;; storage#_ jetton_minter_address:MsgAddress jetton_wallet_code:^Cell = Storage; - -(slice, cell) load_data() inline { - slice ds = get_data().begin_parse(); - return ( - ds~load_msg_addr(), ;; jetton_minter_address - ds~load_ref() ;; jetton_wallet_code - ); -} - -() recv_internal(int msg_value, cell in_msg_full, slice in_msg_body) impure { - if (in_msg_body.slice_empty?()) { ;; ignore empty messages - return (); - } - - slice cs = in_msg_full.begin_parse(); - int flags = cs~load_uint(4); - - if (flags & 1) { ;; ignore all bounced messages - return (); - } - - slice sender_address = cs~load_msg_addr(); - cs~load_msg_addr(); ;; skip dst - cs~load_coins(); ;; skip value - cs~skip_bits(1); ;; skip extracurrency collection - cs~load_coins(); ;; skip ihr_fee - int fwd_fee = muldiv(cs~load_coins(), 3, 2); ;; we use message fwd_fee for estimation of forward_payload costs - - int op = in_msg_body~load_uint(32); - int query_id = in_msg_body~load_uint(64); - - if (op == op::provide_wallet_address()) { - throw_unless(75, msg_value > fwd_fee + provide_address_gas_consumption()); - - (slice jetton_minter_address, cell jetton_wallet_code) = load_data(); - - slice owner_address = in_msg_body~load_msg_addr(); - int include_address? = in_msg_body~load_uint(1); - - cell included_address = include_address? - ? begin_cell().store_slice(owner_address).end_cell() - : null(); - - var msg = begin_cell() - .store_uint(0x18, 6) - .store_slice(sender_address) - .store_coins(0) - .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1) - .store_uint(op::take_wallet_address(), 32) - .store_uint(query_id, 64); - - if (is_resolvable?(owner_address)) { - msg = msg.store_slice(calculate_user_jetton_wallet_address(owner_address, jetton_minter_address, jetton_wallet_code)); - } else { - msg = msg.store_uint(0, 2); ;; addr_none - } - send_raw_message(msg.store_maybe_ref(included_address).end_cell(), 64); - return (); - } - - throw(0xffff); -} \ No newline at end of file diff --git a/ft/jetton-minter-ICO.fc b/ft/jetton-minter-ICO.fc deleted file mode 100644 index 7eac70d..0000000 --- a/ft/jetton-minter-ICO.fc +++ /dev/null @@ -1,121 +0,0 @@ -;; Jettons minter smart contract - -;; storage scheme -;; storage#_ total_supply:Coins admin_address:MsgAddress content:^Cell jetton_wallet_code:^Cell = Storage; - -(int, slice, cell, cell) load_data() inline { - slice ds = get_data().begin_parse(); - return ( - ds~load_coins(), ;; total_supply - ds~load_msg_addr(), ;; admin_address - ds~load_ref(), ;; content - ds~load_ref() ;; jetton_wallet_code - ); -} - -() save_data(int total_supply, slice admin_address, cell content, cell jetton_wallet_code) impure inline { - set_data(begin_cell() - .store_coins(total_supply) - .store_slice(admin_address) - .store_ref(content) - .store_ref(jetton_wallet_code) - .end_cell() - ); -} - -() mint_tokens(slice to_address, cell jetton_wallet_code, int amount, cell master_msg) impure { - cell state_init = calculate_jetton_wallet_state_init(to_address, my_address(), jetton_wallet_code); - slice to_wallet_address = calculate_jetton_wallet_address(state_init); - var msg = begin_cell() - .store_uint(0x18, 6) - .store_slice(to_wallet_address) - .store_coins(amount) - .store_uint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) - .store_ref(state_init) - .store_ref(master_msg); - send_raw_message(msg.end_cell(), 1); ;; pay transfer fees separately, revert on errors -} - -() recv_internal(int msg_value, cell in_msg_full, slice in_msg_body) impure { - slice cs = in_msg_full.begin_parse(); - int flags = cs~load_uint(4); - - if (flags & 1) { ;; ignore all bounced messages - return (); - } - slice sender_address = cs~load_msg_addr(); - - (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data(); - - if (in_msg_body.slice_empty?()) { ;; buy jettons for Toncoin - - int amount = 10000000; ;; for mint message - int buy_amount = msg_value - amount; - throw_unless(76, buy_amount > 0); - - int jetton_amount = buy_amount; ;; rate 1 jetton = 1 toncoin; multiply to price here - - var master_msg = begin_cell() - .store_uint(op::internal_transfer(), 32) - .store_uint(0, 64) ;; quert_id - .store_coins(jetton_amount) - .store_slice(my_address()) ;; from_address - .store_slice(sender_address) ;; response_address - .store_coins(0) ;; no forward_amount - .store_uint(0, 1) ;; forward_payload in this slice, not separate cell - .end_cell(); - - mint_tokens(sender_address, jetton_wallet_code, amount, master_msg); - save_data(total_supply + jetton_amount, admin_address, content, jetton_wallet_code); - return (); - } - - int op = in_msg_body~load_uint(32); - int query_id = in_msg_body~load_uint(64); - - if (op == op::mint()) { - throw_unless(73, equal_slices(sender_address, admin_address)); - slice to_address = in_msg_body~load_msg_addr(); - int amount = in_msg_body~load_coins(); - cell master_msg = in_msg_body~load_ref(); - slice master_msg_cs = master_msg.begin_parse(); - master_msg_cs~skip_bits(32 + 64); ;; op + query_id - int jetton_amount = master_msg_cs~load_coins(); - mint_tokens(to_address, jetton_wallet_code, amount, master_msg); - save_data(total_supply + jetton_amount, admin_address, content, jetton_wallet_code); - return (); - } - - if (op == op::burn_notification()) { - int jetton_amount = in_msg_body~load_coins(); - slice from_address = in_msg_body~load_msg_addr(); - throw_unless(74, - equal_slices(calculate_user_jetton_wallet_address(from_address, my_address(), jetton_wallet_code), sender_address) - ); - save_data(total_supply - jetton_amount, admin_address, content, jetton_wallet_code); - slice response_address = in_msg_body~load_msg_addr(); - if (response_address.preload_uint(2) != 0) { - var msg = begin_cell() - .store_uint(0x10, 6) ;; nobounce - int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000 - .store_slice(response_address) - .store_coins(0) - .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1) - .store_uint(op::excesses(), 32) - .store_uint(query_id, 64); - send_raw_message(msg.end_cell(), 2 + 64); - } - return (); - } - - throw(0xffff); -} - -(int, int, slice, cell, cell) get_jetton_data() method_id { - (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data(); - return (total_supply, -1, admin_address, content, jetton_wallet_code); -} - -slice get_wallet_address(slice owner_address) method_id { - (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data(); - return calculate_user_jetton_wallet_address(owner_address, my_address(), jetton_wallet_code); -} diff --git a/ft/jetton-minter-discoverable.fc b/ft/jetton-minter-discoverable.fc deleted file mode 100644 index 422d7ad..0000000 --- a/ft/jetton-minter-discoverable.fc +++ /dev/null @@ -1,150 +0,0 @@ -;; Jettons discoverable smart contract - -;; 6905(computational_gas_price) * 1000(cur_gas_price) = 6905000 -;; ceil(6905000) = 10000000 ~= 0.01 TON -int provide_address_gas_consumption() asm "10000000 PUSHINT"; - -;; storage scheme -;; storage#_ total_supply:Coins admin_address:MsgAddress content:^Cell jetton_wallet_code:^Cell = Storage; - -(int, slice, cell, cell) load_data() inline { - slice ds = get_data().begin_parse(); - return ( - ds~load_coins(), ;; total_supply - ds~load_msg_addr(), ;; admin_address - ds~load_ref(), ;; content - ds~load_ref() ;; jetton_wallet_code - ); -} - -() save_data(int total_supply, slice admin_address, cell content, cell jetton_wallet_code) impure inline { - set_data(begin_cell() - .store_coins(total_supply) - .store_slice(admin_address) - .store_ref(content) - .store_ref(jetton_wallet_code) - .end_cell() - ); -} - -() mint_tokens(slice to_address, cell jetton_wallet_code, int amount, cell master_msg) impure { - cell state_init = calculate_jetton_wallet_state_init(to_address, my_address(), jetton_wallet_code); - slice to_wallet_address = calculate_jetton_wallet_address(state_init); - var msg = begin_cell() - .store_uint(0x18, 6) - .store_slice(to_wallet_address) - .store_coins(amount) - .store_uint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) - .store_ref(state_init) - .store_ref(master_msg); - send_raw_message(msg.end_cell(), 1); ;; pay transfer fees separately, revert on errors -} - -() recv_internal(int msg_value, cell in_msg_full, slice in_msg_body) impure { - if (in_msg_body.slice_empty?()) { ;; ignore empty messages - return (); - } - slice cs = in_msg_full.begin_parse(); - int flags = cs~load_uint(4); - - if (flags & 1) { ;; ignore all bounced messages - return (); - } - slice sender_address = cs~load_msg_addr(); - cs~load_msg_addr(); ;; skip dst - cs~load_coins(); ;; skip value - cs~skip_bits(1); ;; skip extracurrency collection - cs~load_coins(); ;; skip ihr_fee - int fwd_fee = muldiv(cs~load_coins(), 3, 2); ;; we use message fwd_fee for estimation of forward_payload costs - - int op = in_msg_body~load_uint(32); - int query_id = in_msg_body~load_uint(64); - - (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data(); - - if (op == op::mint()) { - throw_unless(73, equal_slices(sender_address, admin_address)); - slice to_address = in_msg_body~load_msg_addr(); - int amount = in_msg_body~load_coins(); - cell master_msg = in_msg_body~load_ref(); - slice master_msg_cs = master_msg.begin_parse(); - master_msg_cs~skip_bits(32 + 64); ;; op + query_id - int jetton_amount = master_msg_cs~load_coins(); - mint_tokens(to_address, jetton_wallet_code, amount, master_msg); - save_data(total_supply + jetton_amount, admin_address, content, jetton_wallet_code); - return (); - } - - if (op == op::burn_notification()) { - int jetton_amount = in_msg_body~load_coins(); - slice from_address = in_msg_body~load_msg_addr(); - throw_unless(74, - equal_slices(calculate_user_jetton_wallet_address(from_address, my_address(), jetton_wallet_code), sender_address) - ); - save_data(total_supply - jetton_amount, admin_address, content, jetton_wallet_code); - slice response_address = in_msg_body~load_msg_addr(); - if (response_address.preload_uint(2) != 0) { - var msg = begin_cell() - .store_uint(0x10, 6) ;; nobounce - int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000 - .store_slice(response_address) - .store_coins(0) - .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1) - .store_uint(op::excesses(), 32) - .store_uint(query_id, 64); - send_raw_message(msg.end_cell(), 2 + 64); - } - return (); - } - - if (op == op::provide_wallet_address()) { - throw_unless(75, msg_value > fwd_fee + provide_address_gas_consumption()); - - slice owner_address = in_msg_body~load_msg_addr(); - int include_address? = in_msg_body~load_uint(1); - - cell included_address = include_address? - ? begin_cell().store_slice(owner_address).end_cell() - : null(); - - var msg = begin_cell() - .store_uint(0x18, 6) - .store_slice(sender_address) - .store_coins(0) - .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1) - .store_uint(op::take_wallet_address(), 32) - .store_uint(query_id, 64); - - if (is_resolvable?(owner_address)) { - msg = msg.store_slice(calculate_user_jetton_wallet_address(owner_address, my_address(), jetton_wallet_code)); - } else { - msg = msg.store_uint(0, 2); ;; addr_none - } - send_raw_message(msg.store_maybe_ref(included_address).end_cell(), 64); - return (); - } - - if (op == 3) { ;; change admin - throw_unless(73, equal_slices(sender_address, admin_address)); - slice new_admin_address = in_msg_body~load_msg_addr(); - save_data(total_supply, new_admin_address, content, jetton_wallet_code); - return (); - } - - if (op == 4) { ;; change content, delete this for immutable tokens - throw_unless(73, equal_slices(sender_address, admin_address)); - save_data(total_supply, admin_address, in_msg_body~load_ref(), jetton_wallet_code); - return (); - } - - throw(0xffff); -} - -(int, int, slice, cell, cell) get_jetton_data() method_id { - (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data(); - return (total_supply, -1, admin_address, content, jetton_wallet_code); -} - -slice get_wallet_address(slice owner_address) method_id { - (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data(); - return calculate_user_jetton_wallet_address(owner_address, my_address(), jetton_wallet_code); -} diff --git a/ft/jetton-minter.fc b/ft/jetton-minter.fc deleted file mode 100644 index 97796da..0000000 --- a/ft/jetton-minter.fc +++ /dev/null @@ -1,117 +0,0 @@ -;; It is recommended to use https://github.com/ton-blockchain/token-contract/blob/main/ft/jetton-minter-discoverable.fc -;; instead of this contract, see https://github.com/ton-blockchain/TEPs/blob/master/text/0089-jetton-wallet-discovery.md - -;; Jettons minter smart contract - -;; storage scheme -;; storage#_ total_supply:Coins admin_address:MsgAddress content:^Cell jetton_wallet_code:^Cell = Storage; - -(int, slice, cell, cell) load_data() inline { - slice ds = get_data().begin_parse(); - return ( - ds~load_coins(), ;; total_supply - ds~load_msg_addr(), ;; admin_address - ds~load_ref(), ;; content - ds~load_ref() ;; jetton_wallet_code - ); -} - -() save_data(int total_supply, slice admin_address, cell content, cell jetton_wallet_code) impure inline { - set_data(begin_cell() - .store_coins(total_supply) - .store_slice(admin_address) - .store_ref(content) - .store_ref(jetton_wallet_code) - .end_cell() - ); -} - -() mint_tokens(slice to_address, cell jetton_wallet_code, int amount, cell master_msg) impure { - cell state_init = calculate_jetton_wallet_state_init(to_address, my_address(), jetton_wallet_code); - slice to_wallet_address = calculate_jetton_wallet_address(state_init); - var msg = begin_cell() - .store_uint(0x18, 6) - .store_slice(to_wallet_address) - .store_coins(amount) - .store_uint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) - .store_ref(state_init) - .store_ref(master_msg); - send_raw_message(msg.end_cell(), 1); ;; pay transfer fees separately, revert on errors -} - -() recv_internal(int msg_value, cell in_msg_full, slice in_msg_body) impure { - if (in_msg_body.slice_empty?()) { ;; ignore empty messages - return (); - } - slice cs = in_msg_full.begin_parse(); - int flags = cs~load_uint(4); - - if (flags & 1) { ;; ignore all bounced messages - return (); - } - slice sender_address = cs~load_msg_addr(); - - int op = in_msg_body~load_uint(32); - int query_id = in_msg_body~load_uint(64); - - (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data(); - - if (op == op::mint()) { - throw_unless(73, equal_slices(sender_address, admin_address)); - slice to_address = in_msg_body~load_msg_addr(); - int amount = in_msg_body~load_coins(); - cell master_msg = in_msg_body~load_ref(); - slice master_msg_cs = master_msg.begin_parse(); - master_msg_cs~skip_bits(32 + 64); ;; op + query_id - int jetton_amount = master_msg_cs~load_coins(); - mint_tokens(to_address, jetton_wallet_code, amount, master_msg); - save_data(total_supply + jetton_amount, admin_address, content, jetton_wallet_code); - return (); - } - - if (op == op::burn_notification()) { - int jetton_amount = in_msg_body~load_coins(); - slice from_address = in_msg_body~load_msg_addr(); - throw_unless(74, - equal_slices(calculate_user_jetton_wallet_address(from_address, my_address(), jetton_wallet_code), sender_address) - ); - save_data(total_supply - jetton_amount, admin_address, content, jetton_wallet_code); - slice response_address = in_msg_body~load_msg_addr(); - if (response_address.preload_uint(2) != 0) { - var msg = begin_cell() - .store_uint(0x10, 6) ;; nobounce - int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000 - .store_slice(response_address) - .store_coins(0) - .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1) - .store_uint(op::excesses(), 32) - .store_uint(query_id, 64); - send_raw_message(msg.end_cell(), 2 + 64); - } - return (); - } - - if (op == 3) { ;; change admin - throw_unless(73, equal_slices(sender_address, admin_address)); - slice new_admin_address = in_msg_body~load_msg_addr(); - save_data(total_supply, new_admin_address, content, jetton_wallet_code); - return (); - } - - if (op == 4) { ;; change content, delete this for immutable tokens - throw_unless(73, equal_slices(sender_address, admin_address)); - save_data(total_supply, admin_address, in_msg_body~load_ref(), jetton_wallet_code); - return (); - } - - throw(0xffff); -} - -(int, int, slice, cell, cell) get_jetton_data() method_id { - (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data(); - return (total_supply, -1, admin_address, content, jetton_wallet_code); -} - -slice get_wallet_address(slice owner_address) method_id { - (int total_supply, slice admin_address, cell content, cell jetton_wallet_code) = load_data(); - return calculate_user_jetton_wallet_address(owner_address, my_address(), jetton_wallet_code); -} diff --git a/ft/jetton-utils.fc b/ft/jetton-utils.fc deleted file mode 100644 index 296816a..0000000 --- a/ft/jetton-utils.fc +++ /dev/null @@ -1,30 +0,0 @@ -cell pack_jetton_wallet_data(int balance, slice owner_address, slice jetton_master_address, cell jetton_wallet_code) inline { - return begin_cell() - .store_coins(balance) - .store_slice(owner_address) - .store_slice(jetton_master_address) - .store_ref(jetton_wallet_code) - .end_cell(); -} - -cell calculate_jetton_wallet_state_init(slice owner_address, slice jetton_master_address, cell jetton_wallet_code) inline { - return begin_cell() - .store_uint(0, 2) - .store_dict(jetton_wallet_code) - .store_dict(pack_jetton_wallet_data(0, owner_address, jetton_master_address, jetton_wallet_code)) - .store_uint(0, 1) - .end_cell(); -} - -slice calculate_jetton_wallet_address(cell state_init) inline { - return begin_cell().store_uint(4, 3) - .store_int(workchain(), 8) - .store_uint(cell_hash(state_init), 256) - .end_cell() - .begin_parse(); -} - -slice calculate_user_jetton_wallet_address(slice owner_address, slice jetton_master_address, cell jetton_wallet_code) inline { - return calculate_jetton_wallet_address(calculate_jetton_wallet_state_init(owner_address, jetton_master_address, jetton_wallet_code)); -} - diff --git a/ft/jetton-wallet.fc b/ft/jetton-wallet.fc deleted file mode 100644 index 49554fa..0000000 --- a/ft/jetton-wallet.fc +++ /dev/null @@ -1,248 +0,0 @@ -;; Jetton Wallet Smart Contract - -{- - -NOTE that this tokens can be transferred within the same workchain. - -This is suitable for most tokens, if you need tokens transferable between workchains there are two solutions: - -1) use more expensive but universal function to calculate message forward fee for arbitrary destination (see `misc/forward-fee-calc.cs`) - -2) use token holder proxies in target workchain (that way even 'non-universal' token can be used from any workchain) - --} - -int min_tons_for_storage() asm "10000000 PUSHINT"; ;; 0.01 TON -;; Note that 2 * gas_consumptions is expected to be able to cover fees on both wallets (sender and receiver) -;; and also constant fees on inter-wallet interaction, in particular fwd fee on state_init transfer -;; that means that you need to reconsider this fee when: -;; a) jetton logic become more gas-heavy -;; b) jetton-wallet code (sent with inter-wallet message) become larger or smaller -;; c) global fee changes / different workchain -int gas_consumption() asm "15000000 PUSHINT"; ;; 0.015 TON - -{- - Storage - storage#_ balance:Coins owner_address:MsgAddressInt jetton_master_address:MsgAddressInt jetton_wallet_code:^Cell = Storage; --} - -(int, slice, slice, cell) load_data() inline { - slice ds = get_data().begin_parse(); - return (ds~load_coins(), ds~load_msg_addr(), ds~load_msg_addr(), ds~load_ref()); -} - -() save_data (int balance, slice owner_address, slice jetton_master_address, cell jetton_wallet_code) impure inline { - set_data(pack_jetton_wallet_data(balance, owner_address, jetton_master_address, jetton_wallet_code)); -} - -{- - transfer query_id:uint64 amount:(VarUInteger 16) destination:MsgAddress - response_destination:MsgAddress custom_payload:(Maybe ^Cell) - forward_ton_amount:(VarUInteger 16) forward_payload:(Either Cell ^Cell) - = InternalMsgBody; - internal_transfer query_id:uint64 amount:(VarUInteger 16) from:MsgAddress - response_address:MsgAddress - forward_ton_amount:(VarUInteger 16) - forward_payload:(Either Cell ^Cell) - = InternalMsgBody; --} - -() send_tokens (slice in_msg_body, slice sender_address, int msg_value, int fwd_fee) impure { - int query_id = in_msg_body~load_uint(64); - int jetton_amount = in_msg_body~load_coins(); - slice to_owner_address = in_msg_body~load_msg_addr(); - force_chain(to_owner_address); - (int balance, slice owner_address, slice jetton_master_address, cell jetton_wallet_code) = load_data(); - balance -= jetton_amount; - - throw_unless(705, equal_slices(owner_address, sender_address)); - throw_unless(706, balance >= 0); - - cell state_init = calculate_jetton_wallet_state_init(to_owner_address, jetton_master_address, jetton_wallet_code); - slice to_wallet_address = calculate_jetton_wallet_address(state_init); - slice response_address = in_msg_body~load_msg_addr(); - cell custom_payload = in_msg_body~load_dict(); - int forward_ton_amount = in_msg_body~load_coins(); - throw_unless(708, slice_bits(in_msg_body) >= 1); - slice either_forward_payload = in_msg_body; - var msg = begin_cell() - .store_uint(0x18, 6) - .store_slice(to_wallet_address) - .store_coins(0) - .store_uint(4 + 2 + 1, 1 + 4 + 4 + 64 + 32 + 1 + 1 + 1) - .store_ref(state_init); - var msg_body = begin_cell() - .store_uint(op::internal_transfer(), 32) - .store_uint(query_id, 64) - .store_coins(jetton_amount) - .store_slice(owner_address) - .store_slice(response_address) - .store_coins(forward_ton_amount) - .store_slice(either_forward_payload) - .end_cell(); - - msg = msg.store_ref(msg_body); - int fwd_count = forward_ton_amount ? 2 : 1; - throw_unless(709, msg_value > - forward_ton_amount + - ;; 3 messages: wal1->wal2, wal2->owner, wal2->response - ;; but last one is optional (it is ok if it fails) - fwd_count * fwd_fee + - (2 * gas_consumption() + min_tons_for_storage())); - ;; universal message send fee calculation may be activated here - ;; by using this instead of fwd_fee - ;; msg_fwd_fee(to_wallet, msg_body, state_init, 15) - - send_raw_message(msg.end_cell(), 64); ;; revert on errors - save_data(balance, owner_address, jetton_master_address, jetton_wallet_code); -} - -{- - internal_transfer query_id:uint64 amount:(VarUInteger 16) from:MsgAddress - response_address:MsgAddress - forward_ton_amount:(VarUInteger 16) - forward_payload:(Either Cell ^Cell) - = InternalMsgBody; --} - -() receive_tokens (slice in_msg_body, slice sender_address, int my_ton_balance, int fwd_fee, int msg_value) impure { - ;; NOTE we can not allow fails in action phase since in that case there will be - ;; no bounce. Thus check and throw in computation phase. - (int balance, slice owner_address, slice jetton_master_address, cell jetton_wallet_code) = load_data(); - int query_id = in_msg_body~load_uint(64); - int jetton_amount = in_msg_body~load_coins(); - balance += jetton_amount; - slice from_address = in_msg_body~load_msg_addr(); - slice response_address = in_msg_body~load_msg_addr(); - throw_unless(707, - equal_slices(jetton_master_address, sender_address) - | - equal_slices(calculate_user_jetton_wallet_address(from_address, jetton_master_address, jetton_wallet_code), sender_address) - ); - int forward_ton_amount = in_msg_body~load_coins(); - - int ton_balance_before_msg = my_ton_balance - msg_value; - int storage_fee = min_tons_for_storage() - min(ton_balance_before_msg, min_tons_for_storage()); - msg_value -= (storage_fee + gas_consumption()); - if(forward_ton_amount) { - msg_value -= (forward_ton_amount + fwd_fee); - slice either_forward_payload = in_msg_body; - - var msg_body = begin_cell() - .store_uint(op::transfer_notification(), 32) - .store_uint(query_id, 64) - .store_coins(jetton_amount) - .store_slice(from_address) - .store_slice(either_forward_payload) - .end_cell(); - - var msg = begin_cell() - .store_uint(0x10, 6) ;; we should not bounce here cause receiver can have uninitialized contract - .store_slice(owner_address) - .store_coins(forward_ton_amount) - .store_uint(1, 1 + 4 + 4 + 64 + 32 + 1 + 1) - .store_ref(msg_body); - - send_raw_message(msg.end_cell(), 1); - } - - if ((response_address.preload_uint(2) != 0) & (msg_value > 0)) { - var msg = begin_cell() - .store_uint(0x10, 6) ;; nobounce - int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 010000 - .store_slice(response_address) - .store_coins(msg_value) - .store_uint(0, 1 + 4 + 4 + 64 + 32 + 1 + 1) - .store_uint(op::excesses(), 32) - .store_uint(query_id, 64); - send_raw_message(msg.end_cell(), 2); - } - - save_data(balance, owner_address, jetton_master_address, jetton_wallet_code); -} - -() burn_tokens (slice in_msg_body, slice sender_address, int msg_value, int fwd_fee) impure { - ;; NOTE we can not allow fails in action phase since in that case there will be - ;; no bounce. Thus check and throw in computation phase. - (int balance, slice owner_address, slice jetton_master_address, cell jetton_wallet_code) = load_data(); - int query_id = in_msg_body~load_uint(64); - int jetton_amount = in_msg_body~load_coins(); - slice response_address = in_msg_body~load_msg_addr(); - ;; ignore custom payload - ;; slice custom_payload = in_msg_body~load_dict(); - balance -= jetton_amount; - throw_unless(705, equal_slices(owner_address, sender_address)); - throw_unless(706, balance >= 0); - throw_unless(707, msg_value > fwd_fee + 2 * gas_consumption()); - - var msg_body = begin_cell() - .store_uint(op::burn_notification(), 32) - .store_uint(query_id, 64) - .store_coins(jetton_amount) - .store_slice(owner_address) - .store_slice(response_address) - .end_cell(); - - var msg = begin_cell() - .store_uint(0x18, 6) - .store_slice(jetton_master_address) - .store_coins(0) - .store_uint(1, 1 + 4 + 4 + 64 + 32 + 1 + 1) - .store_ref(msg_body); - - send_raw_message(msg.end_cell(), 64); - - save_data(balance, owner_address, jetton_master_address, jetton_wallet_code); -} - -() on_bounce (slice in_msg_body) impure { - in_msg_body~skip_bits(32); ;; 0xFFFFFFFF - (int balance, slice owner_address, slice jetton_master_address, cell jetton_wallet_code) = load_data(); - int op = in_msg_body~load_uint(32); - throw_unless(709, (op == op::internal_transfer()) | (op == op::burn_notification())); - int query_id = in_msg_body~load_uint(64); - int jetton_amount = in_msg_body~load_coins(); - balance += jetton_amount; - save_data(balance, owner_address, jetton_master_address, jetton_wallet_code); -} - -() recv_internal(int my_balance, int msg_value, cell in_msg_full, slice in_msg_body) impure { - if (in_msg_body.slice_empty?()) { ;; ignore empty messages - return (); - } - - slice cs = in_msg_full.begin_parse(); - int flags = cs~load_uint(4); - if (flags & 1) { - on_bounce(in_msg_body); - return (); - } - slice sender_address = cs~load_msg_addr(); - cs~load_msg_addr(); ;; skip dst - cs~load_coins(); ;; skip value - cs~skip_bits(1); ;; skip extracurrency collection - cs~load_coins(); ;; skip ihr_fee - int fwd_fee = muldiv(cs~load_coins(), 3, 2); ;; we use message fwd_fee for estimation of forward_payload costs - - int op = in_msg_body~load_uint(32); - - if (op == op::transfer()) { ;; outgoing transfer - send_tokens(in_msg_body, sender_address, msg_value, fwd_fee); - return (); - } - - if (op == op::internal_transfer()) { ;; incoming transfer - receive_tokens(in_msg_body, sender_address, my_balance, fwd_fee, msg_value); - return (); - } - - if (op == op::burn()) { ;; burn - burn_tokens(in_msg_body, sender_address, msg_value, fwd_fee); - return (); - } - - throw(0xffff); -} - -(int, slice, slice, cell) get_wallet_data() method_id { - return load_data(); -} diff --git a/ft/op-codes.fc b/ft/op-codes.fc deleted file mode 100644 index 3b0df04..0000000 --- a/ft/op-codes.fc +++ /dev/null @@ -1,9 +0,0 @@ -int op::transfer() asm "0xf8a7ea5 PUSHINT"; -int op::transfer_notification() asm "0x7362d09c PUSHINT"; -int op::internal_transfer() asm "0x178d4519 PUSHINT"; -int op::excesses() asm "0xd53276db PUSHINT"; -int op::burn() asm "0x595f07bc PUSHINT"; -int op::burn_notification() asm "0x7bdd97de PUSHINT"; - -;; Minter -int op::mint() asm "21 PUSHINT"; diff --git a/ft/params.fc b/ft/params.fc deleted file mode 100644 index e28eac4..0000000 --- a/ft/params.fc +++ /dev/null @@ -1,6 +0,0 @@ -int workchain() asm "0 PUSHINT"; - -() force_chain(slice addr) impure { - (int wc, _) = parse_std_addr(addr); - throw_unless(333, wc == workchain()); -} \ No newline at end of file From 26135d642e9afe34ff939435fa118ed862de7604 Mon Sep 17 00:00:00 2001 From: yshohruh093-createj Date: Sat, 2 Aug 2025 13:40:57 +0500 Subject: [PATCH 4/8] Create alpcoin.fc Hello hello --- ft/alpcoin.fc | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 ft/alpcoin.fc diff --git a/ft/alpcoin.fc b/ft/alpcoin.fc new file mode 100644 index 0000000..93b7ef5 --- /dev/null +++ b/ft/alpcoin.fc @@ -0,0 +1,4 @@ +;; Alpcoin Jetton Contract - boshlang'ich +() => { + throw("Alpcoin Jetton kontrakti tayyorlanmoqda."); +} From 7998a36ae31bb2f0cfe55054accaaa2d46157cfb Mon Sep 17 00:00:00 2001 From: yshohruh093-createj Date: Sat, 2 Aug 2025 13:43:43 +0500 Subject: [PATCH 5/8] Create metadata.json --- ft/metadata.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 ft/metadata.json diff --git a/ft/metadata.json b/ft/metadata.json new file mode 100644 index 0000000..004f87c --- /dev/null +++ b/ft/metadata.json @@ -0,0 +1,14 @@ +{ + "name": "Alpcoin", + "symbol": "ALP", + "description": "Alpcoin is a humanitarian utility token built on TON blockchain.", + "image": "https://i.postimg.cc/RZSN0MPJ/id53b3.jpg", + "decimals": 9, + "amount_style": "suffix", + "social": { + "website": "https://yshohruh093-createj.github.io/Alpcoin", + "twitter": "https://twitter.com/AlpcoinGlobal", + "instagram": "https://www.instagram.com/alpcoinofficial", + "youtube": "https://youtube.com/@alpcoinofficial" + } +} From 787b5d3451e85d848758d7f7cce08628c15f441e Mon Sep 17 00:00:00 2001 From: yshohruh093-createj Date: Sat, 2 Aug 2025 13:52:08 +0500 Subject: [PATCH 6/8] Add ft/logo.png --- id53b3.jpg | Bin 0 -> 56158 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 id53b3.jpg diff --git a/id53b3.jpg b/id53b3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2f247f925e4975b9a4c13131f2964ebf6923993 GIT binary patch literal 56158 zcmeFZcTii&wl}J=$2npQ*u=4kBAN^$9b*F)K^TF^VK630n2gBbcx;TxV?YQ5NJEf> zB!bBq#>62TB!LmhfC&;N=lt-w_rCMJs_&~;uj-sz?~mKNcJH6MSMOe(R`*)nTc=-6 zrvU*vL2wrUz{m(74gdfy1AhJq062e!&K_spPyfWxaKO+18Ls)$o&OvEAUh*WzWh(h ze}tU-KfUKi?CDp)ZGBy^?vD)4ays))XU>U%pFDAR4mH*V8|wTc;@rI-v_C%r06aYX zeW7~VzgSvX|MDa3znr6!pZ9;^|IPF4y*tDIQ4*@u|0e$bE$GTiXFsPiqP4Tz-}fx@ zGiG0&;k&N?frEbF7yp6de_&rT=#w*=KhCh2>;HmZ{4Y4r-`oF;=C2?0PTsyh@c0>4 z_jrZ;k=GA*#y8-)vnR~->}h#+^8)+;P=Fpl`wag}-9PKoD;EGz**n#9KHQ?>&>-Z05e)NiSE@ypcg9rfJumS+sKLY?)ZT^eVf2RFs zTl^o&`pa1w-m`Lgon5YgR{&?gF90yW6W|1pK0|VVM*vxX(&-rB3E^beB%Pu}UD0Jh8Lqt33M9s{dAt~r_(k7|BvRobjI0#Rlr$$p8xsM84u?! zTs(_+xqZg{`Ex&by>RiuwVT&30e(7n{%5ue7cX7D^WX}*?BlBsP43D$`fv!o{*c4T zC8S;YNmw2_xOQJeLGgt%^0y({^gZAcCl_D8sAPOuOWQiPsM1p%vzKpEQMq}h{sC{^ z<(Hr3!+XZTx%2-|J}#fTcOM%=fpooN3{8d4(rsrwqXLvoz<}&a(lu01HR|Eb9ND z|EYohse%8gf&ahOzyYIUfaY&ho4;bf_}y$f2$tQ*fvss_Uu2=npa{!V^w8uZYGl>i zEmZ%5&A86x#y{o1xzpbQ^G<`)zfXy*^qr@d6p z$i^yZ@_Og01P@py`GIMeS#hdWQ4y+by&Y#A(XReNoYIXLtG-MQ@lZcG7m!DsWGZi0 z^yv=cuf>Iw5v>y}Rl4sO-%vOt;AqKV(niA~BFcXU-1+aTezv#5Q2pC+9t}FeX;YtH zXW3uo=T{2*>a#-Rs-fgcB=UK$%ulYGSJvcaYamV_&?;(^=g`}1RY(b3Mm%fgz!`eu zpzzgt$x1S zm}Ky}t@ewILYr!{b+~LGgTjN*p^++EXPc|@?pi)$ggoh*LR$Pw{5()!TFSp);)X&< zO_3iG30+~8lc1Frs^AjysRO5-hisM|5%|CNyz(yV5tmx4H5G{8#)Tv<)b>qAVrHhs zk0rrVo*(#tNn!~(#OC)7zlVf!McQokwH)*5=}ua|EvlZtSN@DjtQ;KS!45P?PjjPe z>q5Qb;RCK53Iy_g{H|%ZA260xzqW&yhz03f@+oAc&Y+n_P;y*torjJx=PbAXL6fsC zN@xsT{dVfszyrDITi2z7X)}p2b1Oy@`jzk6%j>G_o!_A+v)gz3Hcd&^`u@P3xD6CM zY>;&ERj@J8IV41JRK9qzFli=WimxNdzRBL~6u_Vy*blR3xkL(E)0=KyKcEWOu%{jt z%nD32yXnl!$Y?=<&mqx))TXFaVz12qi9_kg(SWWLo+pDOGKA>comIG=sW7F^TP4D_L$rvG?FjhBG$O zr|0@rT2r}cbGn5jeL0BC4TuW-m|H!gde&ol8Q!(}=)+9lHHBd4^vG>j>r;Sko^JBS zRw!L*rDBB2kR{CBhxUU=FhV&{H_!6f@XZV1t_kP~i`Q{HM)D^Eje#4slLH#vYb8a9 z$=KPTRrX=ge$gPD3gFU*Go|6b!<`pukl24vw~&dM5d76$VFl>HCvYUyxay{v0j0Wi zYj_hSONQxLq``M`v!KDu_`LhG`~fGg3q2Ej2RuEF zNQ6a}b^PqT?{yBs6qVkG;z^l#2@d(8l-fk~APdu?ln)NA`r z&O~NfYQ=;AxawnBWga9dDhhRvngjQOuo3m6#PqJ-oxa?`77G?@e;DRWeTRN^d<6mC z=`3lcC7D6@oyV58UHxNUq`yymPS}RQV1~V`buW@zz&kq{pjf$XgLUC;LVd(DRV7?W zRU}(ER~6&HiCTMQ;8ykOr;CTKq}laf=6H7x!gafB61{@$zl_iO&ehcVPNCe!sKa6s z374#D2$;cbgb#Yu^Wfw7uUUBg5`C7xgn7KRhhiU^tH!h`NT99H?`@X;XEGDBGeKLj zL=1CaJflMVyt6>LLN{I494+@LLPJ_EcH@5fi2XIe(gd&AMbBakbwv9!Sr~aetLGn|2D|Z%ML$zumxG zT{+6e4c`11pC_9|m@oQRN~C8T)TC5+d@n)oKK1Cg_W9W*8U5@WQyRk|^$Zi^z{eK;z4GpN%2KlWz1hIYbVe0)qEfc-A&wtc6B1M6aqi z=AI;uh58vsB__C1ImAqin(DHFKp06>93`B%NfHTX`I^|Fkt>$!(W0$gWejgYrZG3M z;S?~U^I(`8vjAJDL4U~-o72&9c|XTLx?qttV3d+OWS4Tpy_zzTF|-+-)H?owJEl`Y zW<#$;{$6l+)BA%H&SKo~NVV6W!7)9bQ@G=BM>rIAwEDIf^*upk`^^^)!2-QD}>%R}Cf>ZQ-W z&eLt|?;0;nBb6epH+-{0RUzO(ij1C*F2anQzrjd=r0Z5HtcNiraGr)ryBg!wtgIW2 zbyZ~}545Vk7g;l3aALAv(BL#&p_oP724P+J(j0v;1%KBsr7<92ZhB{#7NEKDxp=G3 z2HZ$-CBa8%eB#4&W?u_l{P*x_m43PS+`|qN_^#eHdN7}rrlb7Ru!%7E#w!0@+ZMdg z$?RM6r6jH1Uzd#{Lo|yb=c)x7*{QBQ0Pgzye}5;|FvWxVv{P;Iz!$QyJzk4VgzW}S zRo(0Unm+*P%M-5g^ic2CuZB$of-9>C#$9H>`ooO{qu_Mw0)sBu1CcZ^iJ zbipJY#SOoPylbEyR&@yuzYws3FWNQlv6P`l>sG4iMJ2mJ=+QIzWR zj6GVMd#6!<7Banzw=9txZUGNA(5!>~=S+grXt?fiVLuTJN>#w=VYh5~Lq{A!)mU|z z&zZ8sXXKH;A!+d4h)`^1xtu>on35niVL(4XbR<`WbdGjF;d0sDd$PhVy=pC5o) zCEGVKZ(Z(`;kXHA`hDu2oBuLa7gns?^ckrb9#0xtBH3H^O=cSjjc50%xMXpHip2(# z%*^Jew73E)3n}&PvCy|OX-+EByH*b6wB%RidL~agBZvxLv3YZcB|{5nPJ>P-hkIq%V`cbo84$ zL0HqyH^ceg+N-Y? zap}^kFH$^m-F9Hbo~sfa36+gkBBY&oSu)Wz@#n%r~mV zf4=ZgI`A;ZyCr9x}Ak1bVs796I!M6|Ybx2UJaNcUoOg57F;A#7Phcge((HM9x zhvajWrI@2`uPbL($o>Z2GAy5EFDxv+St2YdAT8Vc8DsFsc%<}Ke|zjckJO%_<^DKC zevVIY8>gtWg)Y>J-5e#JD_UL)BqY*}hf9u#Z^OUDOv{VEoynV0=~@QsEHJ+iU|6+N zz}=8dP=x2I%$M86tqhKL)SZD^mg1w70WZUsoiAJRdco4G zYwF#^Fr{a(knqfhWKj;GQ^55P)7pXQc}ey?EDl|?>tRHG1}qt_J}aR8Wj!f#<>Hz^ z+_=`)>O0Dy^5LK;Qpa$sTx?Vnur76R!q&Ae4?4rIpS;x$?qMTr?u|QrwVpl_kuov# zVr$sN-riy`Y$s>KI2zgQYz&v#8kP;c1}D?$*O3cOQru z3rZ440=oj==B`nXK0Y=}a+PdQ7buBZh%wVgNC`6&r|B)-{hD~SqABWlEE&_Yf_}wz z7Y~B*SQ!kS42oy8T5YeyNK>|3B8}VLkdJ*we5RF+vQqI;!fzW*)>J4h$FDmz@4Gi} z&Q#)U5-Mv8`LN`oSpm)8x>0K6o8W?xJm{k$qlyuj;wWKo#|{=X@jLQiqt6)2G3HHl zQnU)PV~fsX7;K;}X={7k+Q*xPK@eWNaLO`-tjjL2ckoVaB6~EC=h)M4wEh|K(0VXo zB_U{5d!9=A+;C={5VM8)t}y9&AfzBJLpK-NmYQ5e*id%~<|p+LrM+S^+4T-}kEYWy z{Q_Mfx1%#ji#`!ZIt2}f1ng0Kboq>BvuT1?Al@B`;*Y7BZ&Qra6^6MZwd)YJDeMn> zS)ayeScQS0Q$Vpn(I1sAoW*~+)nw;!Ct2K4gYh|a7tHeSO$DU_E;dd4?cX*$uk$=y zWB-=p=`kJHzi?ZjmpKMqAAP0ILDJP@zFfQSye|I#buhc1nYD)F9Jgfry2E&N2&w0 z9pR7MZ++OP>GmM+e-GNOI;aUFPB{!F$=qE_k7fd2+?OgBuy&GuXwVbW4TP$`8S^DJCn&f9+=jdU!>e zoXE+&bCaM}G5Kt5O%UTpnyL!dctiQ#m;t0agc3Cxp9N#p!!+EwKX|CSdpIQnmZOv8-a#W!jSFrjacS%oFv#o!R?MXJqX(IRQrg*0} z1&h|Heh~i$K0e&m{HTTC)QbA64pNOpTAt~Tg}$YRbs^1?StQB%q$E)dC>{BJL!*_? zqn_{KoUPB*c}Cr09qm^J(J8&5#wM)WCj|kU6Pd}rYO08tw2v(1RdzrKBu(n1U9cwz zXw=b90S=g<1A)P2VdwJ9iNVd9!Ae;zi(9x^2d(9`jqEYjTGhfZ6)SxqIJDaAZB2AV z5%c+kd08e>@tQLg@{Uk8mYLEH8lc0xGfiM$u|`x<+E7Ha>Ji!x)}*R9&!s(^*g?AA z-O>DkVrib4AoawUv@vc?Ye9E`JPkDDe8S~pm)>$OYQ4(>e>rlP?vHL?;bLvjl!g~R zTGUC6uh08Ccle8MRpr^Ebi`r5;CfUPyg;JQJNz8i!{Gbln(PaFqPxBW-~%~@4zKk% zL}Xe=1}4w!nZ4jSnOBZj)YE3l9#3;r4;61Q zZ{++7%YWDEC`G879PfKbT;X^nDUy7!@cESpjhyC(ooF=>*g4?r8JGGZ)lWZR;x4J>|{?s_S_^V7m*0D;0`kj)kP!ClO`Z2oy&y90Uj(88hjkrOxl}tRJqi;0R)K6jgWsBR54jX|5u@uNAiM4n|&&?iDhMz-hoWzK{k z<80lSar`Y2Kh~sm{S-j_8UmA@l#P6MD>7;$B@0b4-groMsx#*QA{1OKQ-3CSjeX@X z1}C_!Khqzm(o7I4TiXLWY@6ZhhhXVku%kjV=VJ@2?&J7`w@izjo|SsJzxICf%XII$ zBo&gxp}?SFm+0a>24B+X7*C5KqNrL^8qUlkcUE)VXA|)}{$sxVwPOoIs+2U+$jdzE z$La}LqNt(ILMRj#xlvKpbe1ynvT1z&)F3zS`oo1dU%&d^8!O-OYMDkkc`%Y|nS%Io z$;VNVpTuOAbmRbz^-F-c)fcW)H=`S@7FM4`UHzNz`+`KJKR zu_OJzP1<`KQ~mp%ST?-F;YVpTC8p8}q{rPxLf%M>>f??)YR0v+^4)RyD-4f#GsaGVgAwSJcwx zm=$QW|r>~f4P<7wccWEqas5`Fk z$|NT56yUQQ#oJd_KaQ4dFRLRW))wH$BI*RC^o?}mO)g4!D=7*sx^>j0`6{_*_eh&` z?9zOGbUJJ=b<}LjefQx_gbZG@jc6j{Wt{gwyhvdrN0Uts3f^|rZ0!X*N>3ig*gFk) z6<-ccb}v6FdwB8A-iWW1K|18tDS$5Dnjlyb{7OT~q5G-=Fzlc>T3?D>A`ntUa4-$> z9G&Z;Shh2ZbA2-72E1JSr}US;kKC^Dhtr-9z(6$GG*n7aOkZYI7hF@hNOc=rjSCbU zZoqEdI57T|xjkE|j2FicXa%!C?Lnm2$Vb2MIp}2GVsMZDf)~`7Tx}RMkZ-5TxmTL; zRgYqEb+%#)7wMpwxTRR=Dsa=6r>>fup3#zVsAZiL2nwrCWHXd~3h>4M{of+N1f$}s zE{#u@+*FR{-0eWMX1~d`pj9TgKF@O|TG_OcVeYUjc#A|6r>j`Ia#V(7h5x1QPN^~Z zRLD6u^>d?v3MCKn#ZlYY)~R>RDI_|4d?G|-I$awjDwAQ7V<6Q-YEW2H{YKysaDgot zyyyIAO{j*fo(*N+SfteQrZ^XR$XMgX48Brb;l#ZdpH6l81n=^n7HSr(J5Z%YvRCXI z@N0xU+jgqdI0f`Cmb}OsYI3hph7oAKqsg zQ|}zlsf$J>?rZ3leC^Mcm6oNOj*JO~wKaxoumkfnagZ`TTrXsFH1oI+Ao9O61!* z2ZPP3<*m=XLZM`^K!*59ZhvX{_n~^szAr(|l(#w9ZsI;cY76@$+F6%sdqAh3*-iYu zC$jOI{FI5kH=aJ_m3YbL4W^IjvRt82+v?Hom1E(3?7Wg+QMYNvR6e$RyiH367n6bN zX34U7D2Pqo1-)*) z5%b9t92k9J&ymg<{(IPjEWG zj9PrJ)3!rK=y4 zQJ~bRzN@JV7gG{%!ux*T?282U^9NIgc%x3Q`BvjcrI#<#?q;YZ^(LnjGYV>0{pL%8fuN%n$Ej-3J>iSh!0 z?YyooLk<03PS(gf9oE1+D}P;xR3v=4ALyj@aaGL+R>6eDc6$j}B;U;SSkTh8$jFjB z`T6c_lKo`Dhq541Px65dF!DIjW>dW=fs~n^zA7sCOscx+b|GWi<)1r(O%x z!ykm=q9zCzwkren)*BUdhqkOHZRd7_0?oIBe8kep8OyRgC$oj#-{u!$cr_*(M5i## zH>&4je2DJc{CU&|cxhtQhD^X$qIigr$^kNS+=_p2uidqYYgzoo0q32FW^FSUnlJWQZN+BN zi(aaZg6Ul<&r@Jw9}Fh1?qUiv3?E6BCUETp2m>pcY!i!7smI4%>AGDfo@#|VLEn?? z5ytok!w=l)aUN_a!;nrb=))T+cJ_Nmk#f>y4)ln(XqZl9)|=#k5rOD}F@N!*q7|^7UTh9k7@d{sr=#W6{qkDu@2?0{zVe8kx3;2JC!19o?5j{H-#f+g zT~%}yu(n|svzMvPpp3pL&i+6yao(T9RKGAPNM239SeaFqp@6~~GS58yi>1rT#rn%x zIr?CcJf4^ipR8Z{B!(%VZD;em-u$tYh~+HTA@jUgay)sm*v2R_%k*HN)-n9L+kQsY z2@AV5{q%&xVxMZf@1Gv*(e!;Ag3>Qf06kB|i@xuWkZR6V&q(G=Pl_yl zt{+vqS;eOO$#kKZ*CBVJ{y-!=7VaPKnPf+TY-`CHvs>WO`U*YRk+HqYvN>u{b%NJXl% zhL(P2f{l&h(hy7dT5R?qQCkYA?bba0=dj7#K#Zy#`i8P-N%Nk_oYUUIjsT&iv97TM zy0cSHGOyGFl}BuZPpxZ-c8=EiuD4-sYT&N#iU`aeJX|cdv~sR8A+jnyC7EY|^2XF4 zo0_B0tgy*V4ccHhQf(wA#&EzbVdi1_20`ilMzmT;im^%Y2r*l0`DJndK50mqPZR6E zemE*b-s}ru9z0^NIM&`ZXuwAjCm;z3#k))xUirSR!62c&1iXQx4Ic zsvrwcSk0I9b2}%B%Gmd$FY8zP@1}x0@w5U59qE29S)wW!e~-LY#KFP;ZWRTJ>7-8G z+g1Qh@Altp?uvediM&(ffe+7}e9Sx~>TZTOMH0DVyrt z7+zXiabu!t>v+1N(hb3_Tk5QT_>2bEW2>vAaDb4U-oq~r+Y39a;#!S3)t(?^(7pq2 z+Hu%chWKV8D&i!94%$NHE$A<#*k4eyne|c#AcPFAEErEP1S7Bau)2xHNZh~!IxBc} zY)vS*2JX6hN!_t{ez`nbbUz{F!AR87GOJ7Th4CD}lN~yT?c6J3)FP;HK1TC}gPhgX zDs!&LWzm;hI}CG@t52>c-^0W_f&;_6obKO~K95?)BYg4plexQ5`hKYn3pg`3bemW5 zvQu)z3$H50O6%%+3yWx`MoOV^eFK%OJVY1*TM&goicV3nsRWvtEzcy46*g5~E;*nX zhGjOa`0fU_*jQ+%ov8&hnvzJ4kI7^0UF%QG%0AV;IffR9a8Mb-1j>( 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≪ZZ|mWbMyM&E4XBdzIuI%M$X1E?5S|OQQg*=XOhJEup7Q zZL$_&Y;ZTm@o%25|Iz?8>Q%N}DXeQK z>s`ajZ5(YH$(raLbaRVK!y4bdd}^A?4YPFVHxs#iV=Uo@zX%vOCPxB^VfGM=dS4$W zN|g=fxbb7Wu zc3q~g&2p(Lz~#&T89c?C9Y1<}l)r5jc-cg+=Eud%T-J{0=)(NirM`86t&hAf);&7Z zpf_Fc=e_6RJyqeKs(WlMedI2GS(ml)mwI`=_T8}SE6uL#nZ0YP!mZPXGq*%{&APV~ zcod@cbib)brmPNFFjcEK`?5is^1Hu#PdUKd-ZeY$<)ObT1sG~|t;@1!rCz_C`(9)f z@P5ptRR*gyRC`KxO`P0ku(2muwi~#Q(%tg!!@W~=wUa+@K6+N`RF73=MCKgdt8X(7 z*`0K1JtGqSU_)dA>-)R+ROcyLzxJQkzZ0T{g38tE%aPI=b32UlD#)G z-+h1fasQRYYvbNo@0xxpXv$Xh$iK_-;`WA4Kd&GDTK(1e2@Ktn^X=n}^92lqn28p|Rb6>1_QfkD&7Jsz|8gmRhpp&Ub!DtAKhQMeDjE2By M2v8OR^8arF0K%}`@Bjb+ literal 0 HcmV?d00001 From c53d89a86fdce077cd8df658cf48276af9ed420e Mon Sep 17 00:00:00 2001 From: yshohruh093-createj Date: Sat, 2 Aug 2025 13:52:57 +0500 Subject: [PATCH 7/8] Delete alpcoin.fc --- alpcoin.fc | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 alpcoin.fc diff --git a/alpcoin.fc b/alpcoin.fc deleted file mode 100644 index 93b7ef5..0000000 --- a/alpcoin.fc +++ /dev/null @@ -1,4 +0,0 @@ -;; Alpcoin Jetton Contract - boshlang'ich -() => { - throw("Alpcoin Jetton kontrakti tayyorlanmoqda."); -} From b0f421f9020c3a3f5f1a1d11c5d764a1368a26e7 Mon Sep 17 00:00:00 2001 From: yshohruh093-createj Date: Sat, 2 Aug 2025 13:58:27 +0500 Subject: [PATCH 8/8] Add alpcoin logo Added official 256x256 Alpcoin logo for Jetton metadata verification. --- ft/id53b3.jpg | Bin 0 -> 56158 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 ft/id53b3.jpg diff --git a/ft/id53b3.jpg b/ft/id53b3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2f247f925e4975b9a4c13131f2964ebf6923993 GIT binary patch literal 56158 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%0AV;IffR9a8Mb-1j>( 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≪ZZ|mWbMyM&E4XBdzIuI%M$X1E?5S|OQQg*=XOhJEup7Q zZL$_&Y;ZTm@o%25|Iz?8>Q%N}DXeQK z>s`ajZ5(YH$(raLbaRVK!y4bdd}^A?4YPFVHxs#iV=Uo@zX%vOCPxB^VfGM=dS4$W zN|g=fxbb7Wu zc3q~g&2p(Lz~#&T89c?C9Y1<}l)r5jc-cg+=Eud%T-J{0=)(NirM`86t&hAf);&7Z zpf_Fc=e_6RJyqeKs(WlMedI2GS(ml)mwI`=_T8}SE6uL#nZ0YP!mZPXGq*%{&APV~ zcod@cbib)brmPNFFjcEK`?5is^1Hu#PdUKd-ZeY$<)ObT1sG~|t;@1!rCz_C`(9)f z@P5ptRR*gyRC`KxO`P0ku(2muwi~#Q(%tg!!@W~=wUa+@K6+N`RF73=MCKgdt8X(7 z*`0K1JtGqSU_)dA>-)R+ROcyLzxJQkzZ0T{g38tE%aPI=b32UlD#)G z-+h1fasQRYYvbNo@0xxpXv$Xh$iK_-;`WA4Kd&GDTK(1e2@Ktn^X=n}^92lqn28p|Rb6>1_QfkD&7Jsz|8gmRhpp&Ub!DtAKhQMeDjE2By M2v8OR^8arF0K%}`@Bjb+ literal 0 HcmV?d00001