Browse Source

Staking on deposit

master
Lev 2 years ago
parent
commit
c5ccf7d6a2
  1. 3
      sources/constants.tact
  2. 6
      sources/jetton.tact
  3. 1
      sources/jetton_trait.tact
  4. 4
      sources/messages.tact
  5. 2
      sources/output/jetton_Linker.abi
  6. 2
      sources/output/jetton_Linker.code.fc
  7. 2
      sources/output/jetton_Linker.code.fif
  8. 6
      sources/output/jetton_Linker.md
  9. 2
      sources/output/jetton_Linker.pkg
  10. 41
      sources/output/jetton_Linker.ts
  11. 2
      sources/output/jetton_PseudoStaking.abi
  12. BIN
      sources/output/jetton_PseudoStaking.code.boc
  13. 22
      sources/output/jetton_PseudoStaking.code.fc
  14. 41
      sources/output/jetton_PseudoStaking.code.fif
  15. 70
      sources/output/jetton_PseudoStaking.code.rev.fif
  16. 8
      sources/output/jetton_PseudoStaking.md
  17. 2
      sources/output/jetton_PseudoStaking.pkg
  18. 50
      sources/output/jetton_PseudoStaking.ts
  19. 2
      sources/output/jetton_TONB.abi
  20. BIN
      sources/output/jetton_TONB.code.boc
  21. 189
      sources/output/jetton_TONB.code.fc
  22. 243
      sources/output/jetton_TONB.code.fif
  23. 854
      sources/output/jetton_TONB.code.rev.fif
  24. BIN
      sources/output/jetton_TONB.init.boc
  25. 21
      sources/output/jetton_TONB.init.fc
  26. 39
      sources/output/jetton_TONB.init.fif
  27. 39
      sources/output/jetton_TONB.init.rev.fif
  28. 8
      sources/output/jetton_TONB.md
  29. 2
      sources/output/jetton_TONB.pkg
  30. 63
      sources/output/jetton_TONB.ts
  31. 2
      sources/output/jetton_TONBWallet.abi
  32. 2
      sources/output/jetton_TONBWallet.code.fc
  33. 2
      sources/output/jetton_TONBWallet.code.fif
  34. 6
      sources/output/jetton_TONBWallet.md
  35. 2
      sources/output/jetton_TONBWallet.pkg
  36. 41
      sources/output/jetton_TONBWallet.ts
  37. 13
      sources/pseudostaking.tact
  38. 4
      sources/staking.tact
  39. 88
      sources/tests/__snapshots__/jetton.spec.ts.snap
  40. 15
      sources/tests/jetton.spec.ts
  41. 3
      sources/tests/voting.spec.ts

3
sources/constants.tact

@ -4,5 +4,6 @@ const withdraw_gas_consumption: Int = ton("0.1");
const deposit_gas_consumption: Int = ton("0.01"); // Gas consumption during processing const deposit_gas_consumption: Int = ton("0.01"); // Gas consumption during processing
const linker_credit: Int = ton("0.02"); // TON to send to the linker for the fees const linker_credit: Int = ton("0.02"); // TON to send to the linker for the fees
const wallet_credit: Int = ton("0.065"); // TON to send to the wallet for the fees const wallet_credit: Int = ton("0.065"); // TON to send to the wallet for the fees
const tonb_floor: Int = ton("0.1"); // Minimum amount of TON to keep on TONB const tonb_floor: Int = ton("0.5"); // Minimum amount of TON to keep on TONB
const transfer_gas_consumption: Int = ton("0.05"); // Gas consumption during transfer processing const transfer_gas_consumption: Int = ton("0.05"); // Gas consumption during transfer processing
const staking_gas: Int = ton("0.3");

6
sources/jetton.tact

@ -30,11 +30,12 @@ contract TONB with TONBTrait {
in_the_pool: Int = 0; in_the_pool: Int = 0;
withdrawal_requests: WithdrawalRequests; withdrawal_requests: WithdrawalRequests;
init(owner: Address, content: Cell?) { init(owner: Address, content: Cell?, staking_pool: Address?) {
self.totalSupply = 0; self.totalSupply = 0;
self.owner = owner; self.owner = owner;
self.mintable = true; self.mintable = true;
self.content = content; self.content = content;
self.staking_pool = staking_pool;
self.withdrawal_requests = WithdrawalRequests { self.withdrawal_requests = WithdrawalRequests {
addresses: emptyMap(), addresses: emptyMap(),
amounts: emptyMap() amounts: emptyMap()
@ -56,4 +57,7 @@ contract TONB with TONBTrait {
self.burn(ctx.sender, msg.amount, ctx.sender); self.burn(ctx.sender, msg.amount, ctx.sender);
} }
receive(msg: SetStakingPool) {
self.staking_pool = msg.staking_pool;
}
} }

1
sources/jetton_trait.tact

@ -21,6 +21,7 @@ trait TONBTrait with Ownable, StakingTrait {
last_linker: Address?; last_linker: Address?;
n_linkers: Int = 0; n_linkers: Int = 0;
staking_pool: Address?; staking_pool: Address?;
in_the_pool: Int = 0;
withdrawal_requests: WithdrawalRequests; withdrawal_requests: WithdrawalRequests;

4
sources/messages.tact

@ -126,3 +126,7 @@ message InitiateDistributionVote {
vote_time: Int; vote_time: Int;
distribution: Distribution; distribution: Distribution;
} }
message SetStakingPool {
staking_pool: Address?;
}

2
sources/output/jetton_Linker.abi

File diff suppressed because one or more lines are too long

2
sources/output/jetton_Linker.code.fc

@ -229,5 +229,5 @@ _ supported_interfaces() method_id {
} }
_ get_abi_ipfs() { _ get_abi_ipfs() {
return "ipfs://QmcaNamVs7qjMiic6ATCSqKuXsaffQQmXU43UPgK6t2sGc"; return "ipfs://QmWkjXBm4uV3FSCQFo4XgZ4C4ZZdKD7TWpVno86LVkSrRS";
} }

2
sources/output/jetton_Linker.code.fif

@ -354,6 +354,6 @@ PROGRAM{
209801025412363888721030803524359905849 PUSHINT 209801025412363888721030803524359905849 PUSHINT
}> }>
get_abi_ipfs PROC:<{ get_abi_ipfs PROC:<{
x{697066733a2f2f516d63614e616d567337716a4d6969633641544353714b75587361666651516d585534335550674b367432734763} PUSHSLICE x{697066733a2f2f516d576b6a58426d3475563346534351466f3458675a3443345a5a644b4437545770566e6f38364c566b53725253} PUSHSLICE
}> }>
}END>c }END>c

6
sources/output/jetton_Linker.md

@ -3,7 +3,7 @@ Contract: Linker
BOC Size: 645 bytes BOC Size: 645 bytes
# Types # Types
Total Types: 28 Total Types: 29
## StateInit ## StateInit
TLB: `_ code:^cell data:^cell = StateInit` TLB: `_ code:^cell data:^cell = StateInit`
@ -101,6 +101,10 @@ Signature: `Distribution{addresses:AddressList{addresses:dict<int, address>,leng
TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>} = InitiateDistributionVote` TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>} = InitiateDistributionVote`
Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>}}` Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>}}`
## SetStakingPool
TLB: `set_staking_pool#0764d148 staking_pool:Maybe address = SetStakingPool`
Signature: `SetStakingPool{staking_pool:Maybe address}`
## WithdrawalRequests ## WithdrawalRequests
TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests` TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests`
Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}` Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}`

2
sources/output/jetton_Linker.pkg

File diff suppressed because one or more lines are too long

41
sources/output/jetton_Linker.ts

@ -1263,6 +1263,47 @@ function dictValueParserInitiateDistributionVote(): DictionaryValue<InitiateDist
} }
} }
} }
export type SetStakingPool = {
$$type: 'SetStakingPool';
staking_pool: Address | null;
}
export function storeSetStakingPool(src: SetStakingPool) {
return (builder: Builder) => {
let b_0 = builder;
b_0.storeUint(124047688, 32);
b_0.storeAddress(src.staking_pool);
};
}
export function loadSetStakingPool(slice: Slice) {
let sc_0 = slice;
if (sc_0.loadUint(32) !== 124047688) { throw Error('Invalid prefix'); }
let _staking_pool = sc_0.loadMaybeAddress();
return { $$type: 'SetStakingPool' as const, staking_pool: _staking_pool };
}
function loadTupleSetStakingPool(source: TupleReader) {
let _staking_pool = source.readAddressOpt();
return { $$type: 'SetStakingPool' as const, staking_pool: _staking_pool };
}
function storeTupleSetStakingPool(source: SetStakingPool) {
let builder = new TupleBuilder();
builder.writeAddress(source.staking_pool);
return builder.build();
}
function dictValueParserSetStakingPool(): DictionaryValue<SetStakingPool> {
return {
serialize: (src, buidler) => {
buidler.storeRef(beginCell().store(storeSetStakingPool(src)).endCell());
},
parse: (src) => {
return loadSetStakingPool(src.loadRef().beginParse());
}
}
}
export type WithdrawalRequests = { export type WithdrawalRequests = {
$$type: 'WithdrawalRequests'; $$type: 'WithdrawalRequests';
addresses: Dictionary<bigint, Address>; addresses: Dictionary<bigint, Address>;

2
sources/output/jetton_PseudoStaking.abi

File diff suppressed because one or more lines are too long

BIN
sources/output/jetton_PseudoStaking.code.boc

Binary file not shown.

22
sources/output/jetton_PseudoStaking.code.fc

@ -139,6 +139,21 @@ builder __gen_write_PseudoStaking(builder build_0, (cell) v) inline {
return (($self'stakes), ()); return (($self'stakes), ());
} }
((cell), ()) $__gen_PseudoStaking_receive_fallback((cell) $self, slice $msg) impure inline {
var ($self'stakes) = $self;
int $op = $msg~load_uint(32);
if (($op == 2077040623)) {
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get();
slice $sender = $ctx'sender;
int $ex_stake = __tact_dict_get_slice_int($self'stakes, 267, $sender, 257);
if (null?($ex_stake)) {
$ex_stake = 0;
}
$self'stakes~__tact_dict_set_slice_int(267, $sender, (__tact_not_null($ex_stake) + $ctx'value), 257);
}
return (($self'stakes), ());
}
() recv_internal(int msg_value, cell in_msg_cell, slice in_msg) impure { () recv_internal(int msg_value, cell in_msg_cell, slice in_msg) impure {
@ -180,7 +195,10 @@ builder __gen_write_PseudoStaking(builder build_0, (cell) v) inline {
} }
} }
throw(130); ;; Receiver fallback
var self = __gen_load_PseudoStaking();
self~$__gen_PseudoStaking_receive_fallback(in_msg);
__gen_store_PseudoStaking(self);
} }
_ supported_interfaces() method_id { _ supported_interfaces() method_id {
@ -191,5 +209,5 @@ _ supported_interfaces() method_id {
} }
_ get_abi_ipfs() { _ get_abi_ipfs() {
return "ipfs://QmWUgDgfWMDJUh9Ga3MPmqtyhuJnxvzjwT6b4Ka3UuutJg"; return "ipfs://QmYKdgrRXE254hAvD7qktcXju6QEyfjCpU1nZegvJD7C9K";
} }

41
sources/output/jetton_PseudoStaking.code.fif

@ -14,6 +14,7 @@ PROGRAM{
DECLPROC $send DECLPROC $send
DECLPROC $__gen_PseudoStaking_receive_comment_2dcb19a5b89db9d3377fc651c6f9b6b92db9be624060c62a50572cdc97968638 DECLPROC $__gen_PseudoStaking_receive_comment_2dcb19a5b89db9d3377fc651c6f9b6b92db9be624060c62a50572cdc97968638
DECLPROC $__gen_PseudoStaking_receive_StakingWithdraw DECLPROC $__gen_PseudoStaking_receive_StakingWithdraw
DECLPROC $__gen_PseudoStaking_receive_fallback
DECLPROC recv_internal DECLPROC recv_internal
113617 DECLMETHOD supported_interfaces 113617 DECLMETHOD supported_interfaces
DECLPROC get_abi_ipfs DECLPROC get_abi_ipfs
@ -239,6 +240,35 @@ PROGRAM{
PUSHNULL PUSHNULL
$send INLINECALLDICT $send INLINECALLDICT
}> }>
$__gen_PseudoStaking_receive_fallback PROCINLINE:<{
32 LDU
DROP
2077040623 PUSHINT
EQUAL
IF:<{
__tact_context_get INLINECALLDICT
DROP
s2 POP
s2 PUSH
267 PUSHINT
s2 PUSH
257 PUSHINT
__tact_dict_get_slice_int INLINECALLDICT
DUP
ISNULL
IF:<{
DROP
0 PUSHINT
}>
267 PUSHINT
SWAP
__tact_not_null INLINECALLDICT
s0 s3 XCHG2
ADD
257 PUSHINT
__tact_dict_set_slice_int CALLDICT
}>
}>
recv_internal PROC:<{ recv_internal PROC:<{
c2 SAVE c2 SAVE
SAMEALTSAVE SAMEALTSAVE
@ -287,25 +317,28 @@ PROGRAM{
}> }>
0 EQINT 0 EQINT
IF:<{ IF:<{
DUP
HASHSU HASHSU
20712925151889215669912116818955575927875783670988084319049521716100301489720 PUSHINT 20712925151889215669912116818955575927875783670988084319049521716100301489720 PUSHINT
EQUAL EQUAL
IFJMP:<{ IFJMP:<{
DROP
__gen_load_PseudoStaking INLINECALLDICT __gen_load_PseudoStaking INLINECALLDICT
$__gen_PseudoStaking_receive_comment_2dcb19a5b89db9d3377fc651c6f9b6b92db9be624060c62a50572cdc97968638 INLINECALLDICT $__gen_PseudoStaking_receive_comment_2dcb19a5b89db9d3377fc651c6f9b6b92db9be624060c62a50572cdc97968638 INLINECALLDICT
__gen_store_PseudoStaking INLINECALLDICT __gen_store_PseudoStaking INLINECALLDICT
RETALT RETALT
}> }>
}>ELSE<{
DROP
}> }>
130 THROW __gen_load_PseudoStaking INLINECALLDICT
SWAP
$__gen_PseudoStaking_receive_fallback INLINECALLDICT
__gen_store_PseudoStaking INLINECALLDICT
}> }>
supported_interfaces PROC:<{ supported_interfaces PROC:<{
123515602279859691144772641439386770278 PUSHINT 123515602279859691144772641439386770278 PUSHINT
209801025412363888721030803524359905849 PUSHINT 209801025412363888721030803524359905849 PUSHINT
}> }>
get_abi_ipfs PROC:<{ get_abi_ipfs PROC:<{
x{697066733a2f2f516d575567446766574d444a5568394761334d506d71747968754a6e78767a6a77543662344b6133557575744a67} PUSHSLICE x{697066733a2f2f516d594b6467725258453235346841764437716b7463586a7536514579666a437055316e5a6567764a443743394b} PUSHSLICE
}> }>
}END>c }END>c

70
sources/output/jetton_PseudoStaking.code.rev.fif

@ -209,13 +209,12 @@ SETCP0
IFJMP IFJMP
0 EQINT 0 EQINT
<{ <{
s0 POP s0 PUSH
}> PUSHCONT
<{
HASHSU HASHSU
20712925151889215669912116818955575927875783670988084319049521716100301489720 PUSHINT 20712925151889215669912116818955575927875783670988084319049521716100301489720 PUSHINT
EQUAL EQUAL
<{ <{
s0 POP
c4 PUSH c4 PUSH
CTOS CTOS
LDREF LDREF
@ -273,8 +272,69 @@ SETCP0
RETALT RETALT
}> PUSHCONT }> PUSHCONT
IFJMP IFJMP
}> IFREFELSE }> IFREF
130 THROW c4 PUSH
CTOS
LDREF
s0 s1 XCHG
2 SETGLOBVAR
LDDICT
s0 s1 XCHG
s1 POP
s0 s1 XCHG
32 LDU
s0 POP
2077040623 PUSHINT
EQUAL
<{
1 GETGLOBVAR
4 UNTUPLE
s0 POP
s2 POP
s2 PUSH
267 PUSHINT
s2 PUSH
257 PUSHINT
s1 s3 s3 XCHG3
DICTGET
NULLSWAPIFNOT
<{
s0 s1 XCHG
LDI
s0 POP
}> PUSHCONT
<{
2DROP
PUSHNULL
}> PUSHCONT
IFELSE
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
}> PUSHCONT
IF
267 PUSHINT
s0 s1 XCHG
s0 PUSH
ISNULL
128 THROWIF
s0 s3 XCHG2
ADD
257 PUSHINT
6 CALLDICT
}> PUSHCONT
IF
NEWC
2 GETGLOBVAR
s0 s1 XCHG
STREF
s0 s1 XCHG
s0 s1 XCHG
STDICT
ENDC
c4 POP
6: 6:
s1 PUSH s1 PUSH

8
sources/output/jetton_PseudoStaking.md

@ -1,9 +1,9 @@
# TACT Compilation Report # TACT Compilation Report
Contract: PseudoStaking Contract: PseudoStaking
BOC Size: 495 bytes BOC Size: 584 bytes
# Types # Types
Total Types: 28 Total Types: 29
## StateInit ## StateInit
TLB: `_ code:^cell data:^cell = StateInit` TLB: `_ code:^cell data:^cell = StateInit`
@ -101,6 +101,10 @@ Signature: `Distribution{addresses:AddressList{addresses:dict<int, address>,leng
TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>} = InitiateDistributionVote` TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>} = InitiateDistributionVote`
Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>}}` Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>}}`
## SetStakingPool
TLB: `set_staking_pool#0764d148 staking_pool:Maybe address = SetStakingPool`
Signature: `SetStakingPool{staking_pool:Maybe address}`
## WithdrawalRequests ## WithdrawalRequests
TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests` TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests`
Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}` Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}`

2
sources/output/jetton_PseudoStaking.pkg

File diff suppressed because one or more lines are too long

50
sources/output/jetton_PseudoStaking.ts

@ -1263,6 +1263,47 @@ function dictValueParserInitiateDistributionVote(): DictionaryValue<InitiateDist
} }
} }
} }
export type SetStakingPool = {
$$type: 'SetStakingPool';
staking_pool: Address | null;
}
export function storeSetStakingPool(src: SetStakingPool) {
return (builder: Builder) => {
let b_0 = builder;
b_0.storeUint(124047688, 32);
b_0.storeAddress(src.staking_pool);
};
}
export function loadSetStakingPool(slice: Slice) {
let sc_0 = slice;
if (sc_0.loadUint(32) !== 124047688) { throw Error('Invalid prefix'); }
let _staking_pool = sc_0.loadMaybeAddress();
return { $$type: 'SetStakingPool' as const, staking_pool: _staking_pool };
}
function loadTupleSetStakingPool(source: TupleReader) {
let _staking_pool = source.readAddressOpt();
return { $$type: 'SetStakingPool' as const, staking_pool: _staking_pool };
}
function storeTupleSetStakingPool(source: SetStakingPool) {
let builder = new TupleBuilder();
builder.writeAddress(source.staking_pool);
return builder.build();
}
function dictValueParserSetStakingPool(): DictionaryValue<SetStakingPool> {
return {
serialize: (src, buidler) => {
buidler.storeRef(beginCell().store(storeSetStakingPool(src)).endCell());
},
parse: (src) => {
return loadSetStakingPool(src.loadRef().beginParse());
}
}
}
export type WithdrawalRequests = { export type WithdrawalRequests = {
$$type: 'WithdrawalRequests'; $$type: 'WithdrawalRequests';
addresses: Dictionary<bigint, Address>; addresses: Dictionary<bigint, Address>;
@ -1437,8 +1478,8 @@ function dictValueParserWithdraw(): DictionaryValue<Withdraw> {
} }
async function PseudoStaking_init() { async function PseudoStaking_init() {
const __init = 'te6ccgEBBgEALQABFP8A9KQT9LzyyAsBAgFiAgMCAs4EBQAJoUrd4AUAAUgAE0bQHIzAEB9ADJg='; const __init = 'te6ccgEBBgEALQABFP8A9KQT9LzyyAsBAgFiAgMCAs4EBQAJoUrd4AUAAUgAE0bQHIzAEB9ADJg=';
const __code = 'te6ccgECCQEAAeMAART/APSkE/S88sgLAQIBYgIDAgLNBAUATaF3owTgudh6ullc9j0J2HOslQo2zQThO6xqWlbI+WZFp15b++LEcwL3120Xb9uBDrpOEPypgQa4WP7wFoaYGAuNhgAMi/yLhxAP0gESgzN4J8MIFIrfAQQQhtQB9+3UddGHaiaGoA/DF6AgCYgOmPgMEIbUAfft15cED9AACY/CC3kggRr4G/gTg2trbtnmR8IQDmAID6AGT2qnBgAEiYcYb5YEFAYHACNohbpVbWfRZMODIAc8AQTP0QYB9shxAcoBUAcBygBwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY5MfwHKAMhwAcoAcAHKACRus51/AcoABCBu8tCAUATMljQDcAHKAOIkbrOdfwHKAAQgbvLQgFAEzJY0A3ABygDicAHKAAJ/AcoAAslYzJczMwFwAcoA4iFuswgA6vkBgvAtyxmluJ250zd/xlHG+ba5Lbm+YkBgxipQVyzcl5aGOLqOTe1E0NQB+GL0BAEx+EFvJDAyIoEBCyKBAQFBM/QKb6GUAdcAMJJbbeIgbpIwcN6BAQsBIG7y0IBQA6CBAQHwBsj4QgHMAQH0AMntVNsx4AAwnH8BygABIG7y0IABzJUxcAHKAOLJAfsA'; const __code = 'te6ccgECCgEAAjwAART/APSkE/S88sgLAQIBYgIDAgLNBAUATaF3owTgudh6ullc9j0J2HOslQo2zQThO6xqWlbI+WZFp15b++LEcwPt120Xb9uBDrpOEPypgQa4WP7wFoaYGAuNhgAMi/yLhxAP0gESgzN4J8MIFIrfAQQQhtQB9+3UddGHaiaGoA/DF6AgCYgOmPgMEIbUAfft15cED9AACY/CC3kggRr4G/gTg2trbtnmR8IQDmAID6AGT2qnBgAHGAQGBwgAI2iFulVtZ9Fkw4MgBzwBBM/RBgH2yHEBygFQBwHKAHABygJQBc8WUAP6AnABymgjbrMlbrOxjkx/AcoAyHABygBwAcoAJG6znX8BygAEIG7y0IBQBMyWNANwAcoA4iRus51/AcoABCBu8tCAUATMljQDcAHKAOJwAcoAAn8BygACyVjMlzMzAXABygDiIW6zCQDuIPkBgvAtyxmluJ250zd/xlHG+ba5Lbm+YkBgxipQVyzcl5aGOLqOTjDtRNDUAfhi9AQBMfhBbyQwMiKBAQsigQEBQTP0Cm+hlAHXADCSW23iIG6SMHDegQELASBu8tCAUAOggQEB8AbI+EIBzAEB9ADJ7VTbMeAAsu1E0NQB+GL0BAExAdMfMIIQe80f77qONPhBbyQwMiKBAQsigQEBQTP0Cm+hlAHXADCSW23iIG6SMHDegQELASBu8tCAUAOggQEB8AbeyPhCAcwBAfQAye1UADCcfwHKAAEgbvLQgAHMlTFwAcoA4skB+wA=';
const __system = 'te6cckECCwEAAe0AAQHAAQEFoGa7AgEU/wD0pBP0vPLICwMCAWIFBABNoXejBOC52Hq6WVz2PQnYc6yVCjbNBOE7rGpaVsj5ZkWnXlv74sRzAgLNBwYAI2iFulVtZ9Fkw4MgBzwBBM/RBgL3120Xb9uBDrpOEPypgQa4WP7wFoaYGAuNhgAMi/yLhxAP0gESgzN4J8MIFIrfAQQQhtQB9+3UddGHaiaGoA/DF6AgCYgOmPgMEIbUAfft15cED9AACY/CC3kggRr4G/gTg2trbtnmR8IQDmAID6AGT2qnBgAEiYcYb5YEFAkIAOr5AYLwLcsZpbidudM3f8ZRxvm2uS25vmJAYMYqUFcs3JeWhji6jk3tRNDUAfhi9AQBMfhBbyQwMiKBAQsigQEBQTP0Cm+hlAHXADCSW23iIG6SMHDegQELASBu8tCAUAOggQEB8AbI+EIBzAEB9ADJ7VTbMeAB9shxAcoBUAcBygBwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY5MfwHKAMhwAcoAcAHKACRus51/AcoABCBu8tCAUATMljQDcAHKAOIkbrOdfwHKAAQgbvLQgFAEzJY0A3ABygDicAHKAAJ/AcoAAslYzJczMwFwAcoA4iFuswoAMJx/AcoAASBu8tCAAcyVMXABygDiyQH7AACvC4k='; const __system = 'te6cckECDAEAAkYAAQHAAQEFoGa7AgEU/wD0pBP0vPLICwMCAWIFBABNoXejBOC52Hq6WVz2PQnYc6yVCjbNBOE7rGpaVsj5ZkWnXlv74sRzAgLNBwYAI2iFulVtZ9Fkw4MgBzwBBM/RBgPt120Xb9uBDrpOEPypgQa4WP7wFoaYGAuNhgAMi/yLhxAP0gESgzN4J8MIFIrfAQQQhtQB9+3UddGHaiaGoA/DF6AgCYgOmPgMEIbUAfft15cED9AACY/CC3kggRr4G/gTg2trbtnmR8IQDmAID6AGT2qnBgAHGAQKCQgAsu1E0NQB+GL0BAExAdMfMIIQe80f77qONPhBbyQwMiKBAQsigQEBQTP0Cm+hlAHXADCSW23iIG6SMHDegQELASBu8tCAUAOggQEB8AbeyPhCAcwBAfQAye1UAO4g+QGC8C3LGaW4nbnTN3/GUcb5trktub5iQGDGKlBXLNyXloY4uo5OMO1E0NQB+GL0BAEx+EFvJDAyIoEBCyKBAQFBM/QKb6GUAdcAMJJbbeIgbpIwcN6BAQsBIG7y0IBQA6CBAQHwBsj4QgHMAQH0AMntVNsx4AH2yHEBygFQBwHKAHABygJQBc8WUAP6AnABymgjbrMlbrOxjkx/AcoAyHABygBwAcoAJG6znX8BygAEIG7y0IBQBMyWNANwAcoA4iRus51/AcoABCBu8tCAUATMljQDcAHKAOJwAcoAAn8BygACyVjMlzMzAXABygDiIW6zCwAwnH8BygABIG7y0IABzJUxcAHKAOLJAfsAN0iFUQ==';
let systemCell = Cell.fromBase64(__system); let systemCell = Cell.fromBase64(__system);
let builder = new TupleBuilder(); let builder = new TupleBuilder();
builder.writeCell(systemCell); builder.writeCell(systemCell);
@ -1521,7 +1562,7 @@ export class PseudoStaking implements Contract {
this.init = init; this.init = init;
} }
async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: 'Deposit' | StakingWithdraw) { async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: 'Deposit' | StakingWithdraw | Slice) {
let body: Cell | null = null; let body: Cell | null = null;
if (message === 'Deposit') { if (message === 'Deposit') {
@ -1530,6 +1571,9 @@ export class PseudoStaking implements Contract {
if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'StakingWithdraw') { if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'StakingWithdraw') {
body = beginCell().store(storeStakingWithdraw(message)).endCell(); body = beginCell().store(storeStakingWithdraw(message)).endCell();
} }
if (message && typeof message === 'object' && message instanceof Slice) {
body = message.asCell();
}
if (body === null) { throw new Error('Invalid message type'); } if (body === null) { throw new Error('Invalid message type'); }
await provider.internal(via, { ...args, body: body }); await provider.internal(via, { ...args, body: body });

2
sources/output/jetton_TONB.abi

File diff suppressed because one or more lines are too long

BIN
sources/output/jetton_TONB.code.boc

Binary file not shown.

189
sources/output/jetton_TONB.code.fc

@ -2,8 +2,6 @@
#pragma allow-post-modification; #pragma allow-post-modification;
#pragma compute-asm-ltr; #pragma compute-asm-ltr;
slice __tact_str_to_slice(slice s) asm "NOP";
int __tact_my_balance() inline { int __tact_my_balance() inline {
return pair_first(get_balance()); return pair_first(get_balance());
} }
@ -202,6 +200,12 @@ cell __gen_writecell_BlacklistWallet((slice) v) inline_ref {
return (sc_0, (v'wallet)); return (sc_0, (v'wallet));
} }
(slice, ((slice))) __gen_read_SetStakingPool(slice sc_0) inline {
throw_unless(129, sc_0~load_uint(32) == 124047688);
var v'staking_pool = sc_0~__tact_load_address_opt();
return (sc_0, (v'staking_pool));
}
builder __gen_write_WithdrawalRequests(builder build_0, (cell, cell, int) v) inline { builder __gen_write_WithdrawalRequests(builder build_0, (cell, cell, int) v) inline {
var (v'addresses, v'amounts, v'n_requests) = v; var (v'addresses, v'amounts, v'n_requests) = v;
build_0 = build_0.store_dict(v'addresses); build_0 = build_0.store_dict(v'addresses);
@ -253,8 +257,8 @@ builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline
return build_0; return build_0;
} }
builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) v) inline { builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) v) inline {
var (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)) = v; var (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool, v'in_the_pool, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)) = v;
build_0 = build_0.store_coins(v'totalSupply); build_0 = build_0.store_coins(v'totalSupply);
build_0 = __tact_store_address(build_0, v'owner); build_0 = __tact_store_address(build_0, v'owner);
build_0 = ~ null?(v'content) ? build_0.store_int(true, 1).store_ref(v'content) : build_0.store_int(false, 1); build_0 = ~ null?(v'content) ? build_0.store_int(true, 1).store_ref(v'content) : build_0.store_int(false, 1);
@ -264,12 +268,15 @@ builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice,
var build_1 = begin_cell(); var build_1 = begin_cell();
build_1 = build_1.store_int(v'n_linkers, 257); build_1 = build_1.store_int(v'n_linkers, 257);
build_1 = __tact_store_address_opt(build_1, v'staking_pool); build_1 = __tact_store_address_opt(build_1, v'staking_pool);
build_1 = __gen_write_WithdrawalRequests(build_1, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)); build_1 = build_1.store_int(v'in_the_pool, 257);
var build_2 = begin_cell();
build_2 = __gen_write_WithdrawalRequests(build_2, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests));
build_1 = store_ref(build_1, build_2.end_cell());
build_0 = store_ref(build_0, build_1.end_cell()); build_0 = store_ref(build_0, build_1.end_cell());
return build_0; return build_0;
} }
(slice, ((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)))) __gen_read_TONB(slice sc_0) inline { (slice, ((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)))) __gen_read_TONB(slice sc_0) inline {
var v'totalSupply = sc_0~load_coins(); var v'totalSupply = sc_0~load_coins();
var v'owner = sc_0~__tact_load_address(); var v'owner = sc_0~__tact_load_address();
var v'content = sc_0~load_int(1) ? sc_0~load_ref() : null(); var v'content = sc_0~load_int(1) ? sc_0~load_ref() : null();
@ -279,8 +286,10 @@ builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice,
slice sc_1 = sc_0~load_ref().begin_parse(); slice sc_1 = sc_0~load_ref().begin_parse();
var v'n_linkers = sc_1~load_int(257); var v'n_linkers = sc_1~load_int(257);
var v'staking_pool = sc_1~__tact_load_address_opt(); var v'staking_pool = sc_1~__tact_load_address_opt();
var v'withdrawal_requests = sc_1~__gen_read_WithdrawalRequests(); var v'in_the_pool = sc_1~load_int(257);
return (sc_0, (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool, v'withdrawal_requests)); slice sc_2 = sc_1~load_ref().begin_parse();
var v'withdrawal_requests = sc_2~__gen_read_WithdrawalRequests();
return (sc_0, (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool, v'in_the_pool, v'withdrawal_requests));
} }
_ __gen_StateInit_get_code((cell, cell) v) inline { _ __gen_StateInit_get_code((cell, cell) v) inline {
@ -298,22 +307,19 @@ _ __gen_Context_get_sender((int, slice, int, slice) v) inline {
return (v'totalSupply, v'mintable, v'owner, v'content, v'walletCode); return (v'totalSupply, v'mintable, v'owner, v'content, v'walletCode);
} }
(int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) __gen_load_TONB() inline { (int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) __gen_load_TONB() inline {
slice sc = get_data().begin_parse(); slice sc = get_data().begin_parse();
__tact_context_sys = sc~load_ref(); __tact_context_sys = sc~load_ref();
return sc~__gen_read_TONB(); return sc~__gen_read_TONB();
} }
() __gen_store_TONB((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) v) impure inline { () __gen_store_TONB((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) v) impure inline {
builder b = begin_cell(); builder b = begin_cell();
b = b.store_ref(__tact_context_sys); b = b.store_ref(__tact_context_sys);
b = __gen_write_TONB(b, v); b = __gen_write_TONB(b, v);
set_data(b.end_cell()); set_data(b.end_cell());
} }
;; String "Deposit"
slice __gen_str_228592480() asm "B{b5ee9c7241010101000900000e4465706f7369749721d513} B>boc <s PUSHSLICE";
cell $emptyCell() impure inline_ref { cell $emptyCell() impure inline_ref {
return end_cell(begin_cell()); return end_cell(begin_cell());
} }
@ -376,7 +382,7 @@ slice $contractAddress((cell, cell) $s) impure inline_ref {
} }
(int, slice, int, int, cell, cell, cell) $stakingDepositMessage(int $value, slice $pool) impure inline_ref { (int, slice, int, int, cell, cell, cell) $stakingDepositMessage(int $value, slice $pool) impure inline_ref {
return (true, $pool, $value, 0, end_cell(store_slice(begin_cell(), __tact_str_to_slice(__gen_str_228592480()))), null(), null()); return (true, $pool, $value, 0, end_cell(store_uint(begin_cell(), 2077040623, 32)), null(), null());
} }
cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) { cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) {
@ -425,14 +431,14 @@ cell $__gen_Linker_init(cell sys', int $index, slice $owner, slice $master) {
return (mine, $__gen_Linker_init(sys, $index, $owner, $master)); return (mine, $__gen_Linker_init(sys, $index, $owner, $master));
} }
((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), (cell, cell)) $__gen_TONB_getJettonWalletInit((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $address) impure inline_ref { ((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)), (cell, cell)) $__gen_TONB_getJettonWalletInit((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, slice $address) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), $__gen_TONBWallet_init_child(__tact_context_sys, my_address(), $address)); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), $__gen_TONBWallet_init_child(__tact_context_sys, my_address(), $address));
} }
slice $__gen_TONB_get_wallet_address((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $owner) impure inline_ref { slice $__gen_TONB_get_wallet_address((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, slice $owner) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($owner); var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($owner);
return $contractAddress(($winit'code, $winit'data)); return $contractAddress(($winit'code, $winit'data));
} }
@ -443,9 +449,9 @@ _ $__gen_get_get_wallet_address(slice $$owner) method_id(103289) {
return res; return res;
} }
(int, int, slice, cell, cell) $__gen_TONB_get_jetton_data((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self) impure inline_ref { (int, int, slice, cell, cell) $__gen_TONB_get_jetton_data((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
cell $code = __gen_StateInit_get_code(($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit(my_address())); cell $code = __gen_StateInit_get_code(($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit(my_address()));
return ($self'totalSupply, $self'mintable, $self'owner, $self'content, $code); return ($self'totalSupply, $self'mintable, $self'owner, $self'content, $code);
} }
@ -455,10 +461,10 @@ _ $__gen_get_get_jetton_data() method_id(106029) {
return __gen_JettonData_to_external(res); return __gen_JettonData_to_external(res);
} }
((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_mint((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $to, int $amount, slice $responseAddress) impure inline_ref { ((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)), ()) $__gen_TONB_mint((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, slice $to, int $amount, slice $responseAddress) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
$self'totalSupply = ($self'totalSupply + $amount); $self'totalSupply = ($self'totalSupply + $amount);
var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($to); var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($to);
slice $walletAddress = $contractAddress(($winit'code, $winit'data)); slice $walletAddress = $contractAddress(($winit'code, $winit'data));
var ($linker_init'code, $linker_init'data) = $__gen_Linker_init_child(__tact_context_sys, $self'n_linkers, $walletAddress, my_address()); var ($linker_init'code, $linker_init'data) = $__gen_Linker_init_child(__tact_context_sys, $self'n_linkers, $walletAddress, my_address());
slice $linker_address = $contractAddress(($linker_init'code, $linker_init'data)); slice $linker_address = $contractAddress(($linker_init'code, $linker_init'data));
@ -467,33 +473,33 @@ _ $__gen_get_get_jetton_data() method_id(106029) {
$self'n_linkers = ($self'n_linkers + 1); $self'n_linkers = ($self'n_linkers + 1);
cell $wallet_msg_body = __gen_writecell_TokenTransferInternal((0, $amount, my_address(), $responseAddress, 0, $emptySlice(), ($self'n_linkers - 1), $linker_address)); cell $wallet_msg_body = __gen_writecell_TokenTransferInternal((0, $amount, my_address(), $responseAddress, 0, $emptySlice(), ($self'n_linkers - 1), $linker_address));
$send((false, $walletAddress, 65000000, 0, $wallet_msg_body, $winit'code, $winit'data)); $send((false, $walletAddress, 65000000, 0, $wallet_msg_body, $winit'code, $winit'data));
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_burn((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $from, int $amount, slice $responseAddress) impure inline_ref { ((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)), ()) $__gen_TONB_burn((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, slice $from, int $amount, slice $responseAddress) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($from); var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($from);
slice $walletAddress = $contractAddress(($winit'code, $winit'data)); slice $walletAddress = $contractAddress(($winit'code, $winit'data));
$send((false, $walletAddress, 0, 64, __gen_writecell_TokenBurn((0, $amount, $from, $responseAddress)), $winit'code, $winit'data)); $send((false, $walletAddress, 0, 64, __gen_writecell_TokenBurn((0, $amount, $from, $responseAddress)), $winit'code, $winit'data));
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_requireWallet((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $owner) impure inline_ref { ((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)), ()) $__gen_TONB_requireWallet((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, slice $owner) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get();
var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($owner); var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($owner);
throw_unless(4429, __tact_address_eq($contractAddress(($winit'code, $winit'data)), $ctx'sender)); throw_unless(4429, __tact_address_eq($contractAddress(($winit'code, $winit'data)), $ctx'sender));
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_requireOwner((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self) impure inline_ref { ((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)), ()) $__gen_TONB_requireOwner((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
throw_unless(132, __tact_address_eq(__gen_Context_get_sender(__tact_context_get()), $self'owner)); throw_unless(132, __tact_address_eq(__gen_Context_get_sender(__tact_context_get()), $self'owner));
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
slice $__gen_TONB_owner((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self) impure inline_ref { slice $__gen_TONB_owner((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
return $self'owner; return $self'owner;
} }
@ -503,97 +509,105 @@ _ $__gen_get_owner() method_id(83229) {
return res; return res;
} }
((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_sendStake((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self) impure inline_ref { ((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)), ()) $__gen_TONB_sendStake((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
if (null?($self'staking_pool)) { if (null?($self'staking_pool)) {
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
int $value = (__tact_my_balance() - 100000000); int $value = ((__tact_my_balance() - 500000000) - 300000000);
if (($value < 50000000)) { if (($value < 50000000)) {
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
$self'in_the_pool = ($self'in_the_pool + $value);
$send($stakingDepositMessage($value, __tact_not_null($self'staking_pool))); $send($stakingDepositMessage($value, __tact_not_null($self'staking_pool)));
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_requestWithdrawal((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $address, int $value) impure inline_ref { ((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)), ()) $__gen_TONB_requestWithdrawal((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, slice $address, int $value) impure inline_ref {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self; var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = $self;
$self'withdrawal_requests'addresses~__tact_dict_set_int_slice(257, $self'withdrawal_requests'n_requests, $address); $self'withdrawal_requests'addresses~__tact_dict_set_int_slice(257, $self'withdrawal_requests'n_requests, $address);
$self'withdrawal_requests'amounts~__tact_dict_set_int_int(257, $self'withdrawal_requests'n_requests, $value, 257); $self'withdrawal_requests'amounts~__tact_dict_set_int_int(257, $self'withdrawal_requests'n_requests, $value, 257);
$self'withdrawal_requests'n_requests = ($self'withdrawal_requests'n_requests + 1); $self'withdrawal_requests'n_requests = ($self'withdrawal_requests'n_requests + 1);
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive_Deposit((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, (int) $msg) impure inline { (((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int))), ()) $__gen_TONB_receive_Deposit((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, (int) $msg) impure inline {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self; var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self;
var ($msg'amount) = $msg; var ($msg'amount) = $msg;
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get();
throw_unless(32366, ($ctx'value >= (((10000000 + $msg'amount) + 20000000) + 65000000))); throw_unless(32366, ($ctx'value >= (((10000000 + $msg'amount) + 20000000) + 65000000)));
($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_mint($ctx'sender, $msg'amount, $ctx'sender); ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_mint($ctx'sender, $msg'amount, $ctx'sender);
($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_sendStake(); ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_sendStake();
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self) impure inline { (((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int))), ()) $__gen_TONB_receive((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self) impure inline {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self; var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self;
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive_Withdraw((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, (int) $msg) impure inline { (((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int))), ()) $__gen_TONB_receive_Withdraw((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, (int) $msg) impure inline {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self; var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self;
var ($msg'amount) = $msg; var ($msg'amount) = $msg;
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get();
throw_unless(6384, ($ctx'value >= 100000000)); throw_unless(6384, ($ctx'value >= 100000000));
($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_burn($ctx'sender, $msg'amount, $ctx'sender); ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_burn($ctx'sender, $msg'amount, $ctx'sender);
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
}
(((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int))), ()) $__gen_TONB_receive_SetStakingPool((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, (slice) $msg) impure inline {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self;
var ($msg'staking_pool) = $msg;
$self'staking_pool = $msg'staking_pool;
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive_TokenUpdateContent((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, (cell) $msg) impure inline { (((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int))), ()) $__gen_TONB_receive_TokenUpdateContent((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, (cell) $msg) impure inline {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self; var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self;
var ($msg'content) = $msg; var ($msg'content) = $msg;
($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requireOwner(); ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requireOwner();
$self'content = $msg'content; $self'content = $msg'content;
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive_TokenBurnNotification((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, (int, int, slice, slice) $msg) impure inline { (((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int))), ()) $__gen_TONB_receive_TokenBurnNotification((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, (int, int, slice, slice) $msg) impure inline {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self; var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self;
var ($msg'queryId, $msg'amount, $msg'owner, $msg'responseAddress) = $msg; var ($msg'queryId, $msg'amount, $msg'owner, $msg'responseAddress) = $msg;
($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requireWallet($msg'owner); ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requireWallet($msg'owner);
$self'totalSupply = ($self'totalSupply - $msg'amount); $self'totalSupply = ($self'totalSupply - $msg'amount);
int $available = ((__tact_my_balance() - 100000000) - 100000000); int $available = ((__tact_my_balance() - 500000000) - 100000000);
if (($available < $msg'amount)) { if (($available < $msg'amount)) {
int $diff = ($msg'amount - $available); int $diff = ($msg'amount - $available);
$send((false, $msg'owner, (__tact_my_balance() - 100000000), 0, null(), null(), null())); $send((false, $msg'owner, (__tact_my_balance() - 500000000), 0, null(), null(), null()));
cell $body = __gen_writecell_TokenTransferInternal((0, $diff, my_address(), my_address(), 0, $emptySlice(), null(), null())); cell $body = __gen_writecell_TokenTransferInternal((0, $diff, my_address(), my_address(), 0, $emptySlice(), null(), null()));
slice $walletAddress = $__gen_TONB_get_wallet_address(($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), $msg'owner); slice $walletAddress = $__gen_TONB_get_wallet_address(($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), $msg'owner);
$send((false, $walletAddress, 0, 64, $body, null(), null())); $send((false, $walletAddress, 0, 64, $body, null(), null()));
($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requestWithdrawal($msg'owner, $diff); ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requestWithdrawal($msg'owner, $diff);
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
$send((false, $msg'owner, $msg'amount, 0, null(), null(), null())); $send((false, $msg'owner, $msg'amount, 0, null(), null(), null()));
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive_BlacklistWallet((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, (slice) $msg) impure inline { (((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int))), ()) $__gen_TONB_receive_BlacklistWallet((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self, (slice) $msg) impure inline {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self; var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self;
var ($msg'wallet) = $msg; var ($msg'wallet) = $msg;
($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requireOwner(); ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requireOwner();
var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($msg'wallet); var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($msg'wallet);
slice $walletAddress = $contractAddress(($winit'code, $winit'data)); slice $walletAddress = $contractAddress(($winit'code, $winit'data));
$send((false, $walletAddress, 0, 64, __gen_writecell_BlacklistWallet(($msg'wallet)), null(), null())); $send((false, $walletAddress, 0, 64, __gen_writecell_BlacklistWallet(($msg'wallet)), null(), null()));
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_receive_comment_f7b1ab6077945b37370a1550574675180cf87df4cb047c869746812a83667d4c((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self) impure inline { ((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)), ()) $__gen_TONB_receive_comment_f7b1ab6077945b37370a1550574675180cf87df4cb047c869746812a83667d4c((int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) $self) impure inline {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self; var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self;
int $i = 0; int $i = 0;
while (($i < $self'withdrawal_requests'n_requests)) { while (($i < $self'withdrawal_requests'n_requests)) {
$send((true, __tact_not_null(__tact_dict_get_int_slice($self'withdrawal_requests'addresses, 257, $i)), __tact_not_null(__tact_dict_get_int_int($self'withdrawal_requests'amounts, 257, $i, 257)), 0, null(), null(), null())); $send((true, __tact_not_null(__tact_dict_get_int_slice($self'withdrawal_requests'addresses, 257, $i)), __tact_not_null(__tact_dict_get_int_int($self'withdrawal_requests'amounts, 257, $i, 257)), 0, null(), null(), null()));
$i = ($i + 1); $i = ($i + 1);
} }
($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests) = (null(), null(), 0); ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests) = (null(), null(), 0);
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ());
} }
@ -641,6 +655,15 @@ _ $__gen_get_owner() method_id(83229) {
return (); return ();
} }
;; Receive SetStakingPool message
if (op == 124047688) {
var self = __gen_load_TONB();
var msg = in_msg~__gen_read_SetStakingPool();
self~$__gen_TONB_receive_SetStakingPool(msg);
__gen_store_TONB(self);
return ();
}
;; Receive TokenUpdateContent message ;; Receive TokenUpdateContent message
if (op == 201882270) { if (op == 201882270) {
var self = __gen_load_TONB(); var self = __gen_load_TONB();
@ -694,5 +717,5 @@ _ supported_interfaces() method_id {
} }
_ get_abi_ipfs() { _ get_abi_ipfs() {
return "ipfs://QmS8xdbR6Ba79t2bLFssxSLGyPcHmTcGF5v9qMFJyN2nrb"; return "ipfs://QmT3asZBJxdjojRfpy7LPafCD4rqJn3fQzFqeWGuf8rLCC";
} }

243
sources/output/jetton_TONB.code.fif

@ -28,6 +28,7 @@ PROGRAM{
DECLPROC __gen_write_BlacklistWallet DECLPROC __gen_write_BlacklistWallet
DECLPROC __gen_writecell_BlacklistWallet DECLPROC __gen_writecell_BlacklistWallet
DECLPROC __gen_read_BlacklistWallet DECLPROC __gen_read_BlacklistWallet
DECLPROC __gen_read_SetStakingPool
DECLPROC __gen_write_WithdrawalRequests DECLPROC __gen_write_WithdrawalRequests
DECLPROC __gen_read_WithdrawalRequests DECLPROC __gen_read_WithdrawalRequests
DECLPROC __gen_read_Deposit DECLPROC __gen_read_Deposit
@ -67,6 +68,7 @@ PROGRAM{
DECLPROC $__gen_TONB_receive_Deposit DECLPROC $__gen_TONB_receive_Deposit
DECLPROC $__gen_TONB_receive DECLPROC $__gen_TONB_receive
DECLPROC $__gen_TONB_receive_Withdraw DECLPROC $__gen_TONB_receive_Withdraw
DECLPROC $__gen_TONB_receive_SetStakingPool
DECLPROC $__gen_TONB_receive_TokenUpdateContent DECLPROC $__gen_TONB_receive_TokenUpdateContent
DECLPROC $__gen_TONB_receive_TokenBurnNotification DECLPROC $__gen_TONB_receive_TokenBurnNotification
DECLPROC $__gen_TONB_receive_BlacklistWallet DECLPROC $__gen_TONB_receive_BlacklistWallet
@ -357,6 +359,14 @@ PROGRAM{
129 THROWIFNOT 129 THROWIFNOT
__tact_load_address INLINECALLDICT __tact_load_address INLINECALLDICT
}> }>
__gen_read_SetStakingPool PROCINLINE:<{
32 LDU
SWAP
124047688 PUSHINT
EQUAL
129 THROWIFNOT
__tact_load_address_opt INLINECALLDICT
}>
__gen_write_WithdrawalRequests PROCINLINE:<{ __gen_write_WithdrawalRequests PROCINLINE:<{
s2 s3 XCHG2 s2 s3 XCHG2
STDICT STDICT
@ -438,28 +448,28 @@ PROGRAM{
STREF STREF
}> }>
__gen_write_TONB PROCINLINE:<{ __gen_write_TONB PROCINLINE:<{
s11 s10 XCHG2 s12 s11 XCHG2
STGRAMS STGRAMS
s0 s8 XCHG2 s0 s9 XCHG2
__tact_store_address INLINECALLDICT __tact_store_address INLINECALLDICT
s6 PUSH s7 PUSH
ISNULL ISNULL
NOT NOT
IF:<{ IF:<{
TRUE TRUE
SWAP SWAP
1 STI 1 STI
s1 s6 XCHG s1 s7 XCHG
STREF STREF
}>ELSE<{ }>ELSE<{
s6 POP s7 POP
FALSE FALSE
s0 s6 XCHG2 s0 s7 XCHG2
1 STI 1 STI
}> }>
s1 s4 XCHG s1 s5 XCHG
1 STI 1 STI
ROT s0 s3 XCHG2
__tact_store_address_opt INLINECALLDICT __tact_store_address_opt INLINECALLDICT
SWAP SWAP
__tact_store_address_opt INLINECALLDICT __tact_store_address_opt INLINECALLDICT
@ -469,9 +479,17 @@ PROGRAM{
STIX STIX
ROT ROT
__tact_store_address_opt INLINECALLDICT __tact_store_address_opt INLINECALLDICT
s4 s3 XCHG2 s1 s2 XCHG
257 PUSHINT
STIX
NEWC
s3 s1 s3 XCHG3
s5 s4 XCHG2
__gen_write_WithdrawalRequests INLINECALLDICT __gen_write_WithdrawalRequests INLINECALLDICT
ENDC ENDC
ROT
STREF
ENDC
SWAP SWAP
STREF STREF
}> }>
@ -499,14 +517,19 @@ PROGRAM{
LDIX LDIX
__tact_load_address_opt INLINECALLDICT __tact_load_address_opt INLINECALLDICT
SWAP SWAP
257 PUSHINT
LDIX
LDREF
DROP
CTOS
__gen_read_WithdrawalRequests INLINECALLDICT __gen_read_WithdrawalRequests INLINECALLDICT
s3 POP s3 POP
s5 s11 XCHG s6 s12 XCHG
s5 s10 XCHG s6 s11 XCHG
s5 s9 XCHG s6 s10 XCHG
s5 s8 XCHG s6 s9 XCHG
s5 s7 XCHG s6 s8 XCHG
s5 s6 XCHG s6 s7 XCHG
ROT ROT
}> }>
__gen_StateInit_get_code PROCINLINE:<{ __gen_StateInit_get_code PROCINLINE:<{
@ -525,14 +548,14 @@ PROGRAM{
SWAP SWAP
__tact_context_sys SETGLOB __tact_context_sys SETGLOB
__gen_read_TONB INLINECALLDICT __gen_read_TONB INLINECALLDICT
1 11 BLKDROP2 1 12 BLKDROP2
}> }>
__gen_store_TONB PROCINLINE:<{ __gen_store_TONB PROCINLINE:<{
NEWC NEWC
__tact_context_sys GETGLOB __tact_context_sys GETGLOB
SWAP SWAP
STREF STREF
11 -ROLL 12 -ROLL
__gen_write_TONB INLINECALLDICT __gen_write_TONB INLINECALLDICT
ENDC ENDC
c4 POP c4 POP
@ -656,8 +679,9 @@ PROGRAM{
TRUE TRUE
0 PUSHINT 0 PUSHINT
NEWC NEWC
B{b5ee9c7241010101000900000e4465706f7369749721d513} B>boc <s PUSHSLICE 2077040623 PUSHINT
STSLICER SWAP
32 STU
ENDC ENDC
s2 s4 XCHG s2 s4 XCHG
PUSHNULL PUSHNULL
@ -733,18 +757,18 @@ PROGRAM{
}> }>
$__gen_TONB_get_wallet_address PROCREF:<{ $__gen_TONB_get_wallet_address PROCREF:<{
$__gen_TONB_getJettonWalletInit INLINECALLDICT $__gen_TONB_getJettonWalletInit INLINECALLDICT
11 2 BLKDROP2 12 2 BLKDROP2
$contractAddress INLINECALLDICT $contractAddress INLINECALLDICT
}> }>
$__gen_get_get_wallet_address PROC:<{ $__gen_get_get_wallet_address PROC:<{
__gen_load_TONB INLINECALLDICT __gen_load_TONB INLINECALLDICT
11 ROLL 12 ROLL
$__gen_TONB_get_wallet_address INLINECALLDICT $__gen_TONB_get_wallet_address INLINECALLDICT
}> }>
$__gen_TONB_get_jetton_data PROCREF:<{ $__gen_TONB_get_jetton_data PROCREF:<{
MYADDR MYADDR
$__gen_TONB_getJettonWalletInit INLINECALLDICT $__gen_TONB_getJettonWalletInit INLINECALLDICT
7 2 BLKDROP2 8 2 BLKDROP2
__gen_StateInit_get_code INLINECALLDICT __gen_StateInit_get_code INLINECALLDICT
s3 s3 s0 XCHG3 s3 s3 s0 XCHG3
}> }>
@ -754,31 +778,32 @@ PROGRAM{
__gen_JettonData_to_external INLINECALLDICT __gen_JettonData_to_external INLINECALLDICT
}> }>
$__gen_TONB_mint PROCREF:<{ $__gen_TONB_mint PROCREF:<{
s13 s1 XCPU s14 s1 XCPU
ADD ADD
11 2 BLKSWAP 12 2 BLKSWAP
$__gen_TONB_getJettonWalletInit INLINECALLDICT $__gen_TONB_getJettonWalletInit INLINECALLDICT
2DUP 2DUP
$contractAddress INLINECALLDICT $contractAddress INLINECALLDICT
__tact_context_sys GETGLOB __tact_context_sys GETGLOB
MYADDR MYADDR
s9 s2 s(-2) PU2XC s10 s2 s(-2) PU2XC
$__gen_Linker_init_child CALLDICT $__gen_Linker_init_child CALLDICT
2DUP 2DUP
$contractAddress INLINECALLDICT $contractAddress INLINECALLDICT
FALSE FALSE
20000000 PUSHINT 20000000 PUSHINT
0 PUSHINT 0 PUSHINT
s0 s14 XCHG s0 s15 XCHG
__gen_writecell_SetLinkerNeighbor INLINECALLDICT __gen_writecell_SetLinkerNeighbor INLINECALLDICT
s3 PUSH s3 PUSH
s3 s6 XCHG s3 s6 XCHG
s4 s1 s5 XCHG3 s4 s1 s5 XCHG3
s3 s15 XCHG s3 16 s() XCHG
s1 s15 s0 XCHG3 s1 s2 XCHG
s1 16 s() XCHG
$send INLINECALLDICT $send INLINECALLDICT
s8 PUSH s9 PUSH
s0 s8 XCHG s0 s9 XCHG
INC INC
0 PUSHINT 0 PUSHINT
MYADDR MYADDR
@ -787,40 +812,32 @@ PROGRAM{
s4 PUSH s4 PUSH
DEC DEC
s4 s7 XCHG s4 s7 XCHG
s6 20 s() XCHG s6 21 s() XCHG
s3 s5 XCHG s3 s5 XCHG
s4 21 s() XCHG s4 22 s() XCHG
3 ROLL 3 ROLL
s0 s14 XCHG s0 s15 XCHG
__gen_writecell_TokenTransferInternal INLINECALLDICT __gen_writecell_TokenTransferInternal INLINECALLDICT
FALSE FALSE
s0 s4 XCHG s0 s4 XCHG
s3 s14 XCHG s3 s15 XCHG
65000000 PUSHINT 65000000 PUSHINT
s0 s3 XCHG s0 s3 XCHG
0 PUSHINT 0 PUSHINT
s3 s1 s3 XCHG3 s3 s1 s3 XCHG3
s0 17 s() XCHG s0 18 s() XCHG
$send INLINECALLDICT $send INLINECALLDICT
s9 s11 XCHG
s8 s10 XCHG s8 s10 XCHG
s7 s9 XCHG s7 s9 XCHG
s6 s8 XCHG s6 s8 XCHG
s5 s7 XCHG s5 s7 XCHG
s4 s6 XCHG 4 3 REVERSE
s0 s3 s5 XCHG3 2 3 BLKSWAP
s1 s4 XCHG
}> }>
$__gen_TONB_burn PROCREF:<{ $__gen_TONB_burn PROCREF:<{
s10 s13 XCHG 12 3 BLKSWAP
s9 s12 XCHG s14 PUSH
s8 s11 XCHG
s7 s13 XCHG
s6 s12 XCHG
s5 s11 XCHG
s4 s13 XCHG
s3 s12 XCHG
s11 s13 s12 XCHG3
s11 PUSH
$__gen_TONB_getJettonWalletInit INLINECALLDICT $__gen_TONB_getJettonWalletInit INLINECALLDICT
2DUP 2DUP
$contractAddress INLINECALLDICT $contractAddress INLINECALLDICT
@ -829,15 +846,17 @@ PROGRAM{
64 PUSHINT 64 PUSHINT
s1 s0 s2 PUXC2 s1 s0 s2 PUXC2
s2 20 s() XCHG s2 20 s() XCHG
s1 18 s() XCHG s1 21 s() XCHG
s0 19 s() XCHG s0 19 s() XCHG
__gen_writecell_TokenBurn INLINECALLDICT __gen_writecell_TokenBurn INLINECALLDICT
s6 16 s() XCHG s6 16 s() XCHG
s1 s5 XCHG s1 s5 XCHG
s4 17 s() XCHG s4 17 s() XCHG
s3 s15 XCHG s3 18 s() XCHG
s15 s2 XCHG2 s0 s2 XCHG
s1 18 s() XCHG
$send INLINECALLDICT $send INLINECALLDICT
s8 s11 XCHG
s7 s10 XCHG s7 s10 XCHG
3 7 BLKSWAP 3 7 BLKSWAP
}> }>
@ -845,40 +864,42 @@ PROGRAM{
__tact_context_get INLINECALLDICT __tact_context_get INLINECALLDICT
s2 s3 XCHG s2 s3 XCHG
3 BLKDROP 3 BLKDROP
12 -ROLL 13 -ROLL
$__gen_TONB_getJettonWalletInit INLINECALLDICT $__gen_TONB_getJettonWalletInit INLINECALLDICT
SWAP SWAP
4429 PUSHINT 4429 PUSHINT
s0 s2 XCHG s0 s2 XCHG
$contractAddress INLINECALLDICT $contractAddress INLINECALLDICT
s0 s13 XCHG2 s0 s14 XCHG2
__tact_address_eq INLINECALLDICT __tact_address_eq INLINECALLDICT
s1 s12 XCHG s1 s13 XCHG
THROWANYIFNOT THROWANYIFNOT
10 ROLL 11 ROLL
}> }>
$__gen_TONB_requireOwner PROCREF:<{ $__gen_TONB_requireOwner PROCREF:<{
__tact_context_get INLINECALLDICT __tact_context_get INLINECALLDICT
__gen_Context_get_sender INLINECALLDICT __gen_Context_get_sender INLINECALLDICT
s10 PUSH s11 PUSH
__tact_address_eq INLINECALLDICT __tact_address_eq INLINECALLDICT
132 THROWIFNOT 132 THROWIFNOT
}> }>
$__gen_TONB_owner PROCREF:<{ $__gen_TONB_owner PROCREF:<{
s9 s10 XCHG s10 s11 XCHG
10 BLKDROP 11 BLKDROP
}> }>
$__gen_get_owner PROC:<{ $__gen_get_owner PROC:<{
__gen_load_TONB INLINECALLDICT __gen_load_TONB INLINECALLDICT
$__gen_TONB_owner INLINECALLDICT $__gen_TONB_owner INLINECALLDICT
}> }>
$__gen_TONB_sendStake PROCREF:<{ $__gen_TONB_sendStake PROCREF:<{
s3 PUSH s4 PUSH
ISNULL ISNULL
IFJMP:<{ IFJMP:<{
}> }>
__tact_my_balance INLINECALLDICT __tact_my_balance INLINECALLDICT
100000000 PUSHINT 500000000 PUSHINT
SUB
300000000 PUSHINT
SUB SUB
DUP DUP
50000000 PUSHINT 50000000 PUSHINT
@ -886,8 +907,11 @@ PROGRAM{
IFJMP:<{ IFJMP:<{
DROP DROP
}> }>
s4 PUSH s4 s4 XCPU
ADD
s5 PUSH
__tact_not_null INLINECALLDICT __tact_not_null INLINECALLDICT
s1 s5 XCHG
$stakingDepositMessage INLINECALLDICT $stakingDepositMessage INLINECALLDICT
$send INLINECALLDICT $send INLINECALLDICT
}> }>
@ -939,31 +963,27 @@ PROGRAM{
TUCK TUCK
$__gen_TONB_burn INLINECALLDICT $__gen_TONB_burn INLINECALLDICT
}> }>
$__gen_TONB_receive_SetStakingPool PROCINLINE:<{
s5 POP
}>
$__gen_TONB_receive_TokenUpdateContent PROCINLINE:<{ $__gen_TONB_receive_TokenUpdateContent PROCINLINE:<{
11 -ROLL 12 -ROLL
$__gen_TONB_requireOwner INLINECALLDICT $__gen_TONB_requireOwner INLINECALLDICT
s8 POP s9 POP
s10 s11 XCHG
s9 s10 XCHG s9 s10 XCHG
s8 s9 XCHG 8 ROLL
7 ROLL
}> }>
$__gen_TONB_receive_TokenBurnNotification PROCINLINE:<{ $__gen_TONB_receive_TokenBurnNotification PROCINLINE:<{
DROP DROP
s2 POP s2 POP
s10 s12 XCHG 12 2 BLKSWAP
5 8 REVERSE s13 PUSH
s7 s11 XCHG
s6 s12 XCHG
s5 s11 XCHG
s4 s12 XCHG
s3 s11 XCHG
s12 s11 s12 XCHG3
s11 PUSH
$__gen_TONB_requireWallet INLINECALLDICT $__gen_TONB_requireWallet INLINECALLDICT
s10 s12 XCPU s11 s12 XCPU
SUB SUB
__tact_my_balance INLINECALLDICT __tact_my_balance INLINECALLDICT
100000000 PUSHINT 500000000 PUSHINT
SUB SUB
100000000 PUSHINT 100000000 PUSHINT
SUB SUB
@ -974,9 +994,9 @@ PROGRAM{
SUB SUB
FALSE FALSE
__tact_my_balance INLINECALLDICT __tact_my_balance INLINECALLDICT
100000000 PUSHINT 500000000 PUSHINT
SUB SUB
s13 s(-1) PUXC s15 s(-1) PUXC
0 PUSHINT 0 PUSHINT
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
@ -992,12 +1012,12 @@ PROGRAM{
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
__gen_writecell_TokenTransferInternal INLINECALLDICT __gen_writecell_TokenTransferInternal INLINECALLDICT
s13 s10 s9 PUSH3 s13 s11 s10 PUSH3
s11 s10 s9 PUSH3 s12 s11 s10 PUSH3
s11 s10 s9 PUSH3 s12 s11 s10 PUSH3
s11 PUSH s12 s11 PUSH2
21 s() PUSH
23 s() PUSH 23 s() PUSH
26 s() PUSH
$__gen_TONB_get_wallet_address INLINECALLDICT $__gen_TONB_get_wallet_address INLINECALLDICT
FALSE FALSE
s0 s2 XCHG s0 s2 XCHG
@ -1007,6 +1027,8 @@ PROGRAM{
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
$send INLINECALLDICT $send INLINECALLDICT
s12 s13 XCHG
s10 s12 XCHG
s9 s11 XCHG s9 s11 XCHG
s8 s10 XCHG s8 s10 XCHG
s7 s9 XCHG s7 s9 XCHG
@ -1015,37 +1037,37 @@ PROGRAM{
s4 s6 XCHG s4 s6 XCHG
s3 s5 XCHG s3 s5 XCHG
s4 s3 s0 XCHG3 s4 s3 s0 XCHG3
s1 s2 XCHG
$__gen_TONB_requestWithdrawal INLINECALLDICT $__gen_TONB_requestWithdrawal INLINECALLDICT
}>ELSE<{ }>ELSE<{
DROP DROP
FALSE FALSE
s0 s12 s13 XCHG3 s0 s14 s13 XCHG3
0 PUSHINT 0 PUSHINT
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
$send INLINECALLDICT $send INLINECALLDICT
s9 s10 XCHG 2 9 BLKSWAP
2 8 BLKSWAP
}> }>
}> }>
$__gen_TONB_receive_BlacklistWallet PROCINLINE:<{ $__gen_TONB_receive_BlacklistWallet PROCINLINE:<{
11 -ROLL 12 -ROLL
$__gen_TONB_requireOwner INLINECALLDICT $__gen_TONB_requireOwner INLINECALLDICT
s11 PUSH s12 PUSH
$__gen_TONB_getJettonWalletInit INLINECALLDICT $__gen_TONB_getJettonWalletInit INLINECALLDICT
$contractAddress INLINECALLDICT $contractAddress INLINECALLDICT
FALSE FALSE
0 PUSHINT 0 PUSHINT
64 PUSHINT 64 PUSHINT
s0 s15 XCHG s0 16 s() XCHG
__gen_writecell_BlacklistWallet INLINECALLDICT __gen_writecell_BlacklistWallet INLINECALLDICT
s1 s4 s0 XCHG3 s1 s4 s0 XCHG3
s1 s15 XCHG s1 16 s() XCHG
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
$send INLINECALLDICT $send INLINECALLDICT
10 ROLL 11 ROLL
}> }>
$__gen_TONB_receive_comment_f7b1ab6077945b37370a1550574675180cf87df4cb047c869746812a83667d4c PROCINLINE:<{ $__gen_TONB_receive_comment_f7b1ab6077945b37370a1550574675180cf87df4cb047c869746812a83667d4c PROCINLINE:<{
0 PUSHINT 0 PUSHINT
@ -1116,9 +1138,10 @@ PROGRAM{
IFJMP:<{ IFJMP:<{
DROP DROP
__gen_load_TONB INLINECALLDICT __gen_load_TONB INLINECALLDICT
s0 s11 XCHG s0 s12 XCHG
__gen_read_Deposit INLINECALLDICT __gen_read_Deposit INLINECALLDICT
NIP NIP
s11 s12 XCHG
s10 s11 XCHG s10 s11 XCHG
s9 s10 XCHG s9 s10 XCHG
s8 s9 XCHG s8 s9 XCHG
@ -1149,9 +1172,10 @@ PROGRAM{
IFJMP:<{ IFJMP:<{
DROP DROP
__gen_load_TONB INLINECALLDICT __gen_load_TONB INLINECALLDICT
s0 s11 XCHG s0 s12 XCHG
__gen_read_Withdraw INLINECALLDICT __gen_read_Withdraw INLINECALLDICT
NIP NIP
s11 s12 XCHG
s10 s11 XCHG s10 s11 XCHG
s9 s10 XCHG s9 s10 XCHG
s8 s9 XCHG s8 s9 XCHG
@ -1165,14 +1189,37 @@ PROGRAM{
__gen_store_TONB INLINECALLDICT __gen_store_TONB INLINECALLDICT
}> }>
DUP DUP
124047688 PUSHINT
EQUAL
IFJMP:<{
DROP
__gen_load_TONB INLINECALLDICT
s0 s12 XCHG
__gen_read_SetStakingPool INLINECALLDICT
NIP
s11 s12 XCHG
s10 s11 XCHG
s9 s10 XCHG
s8 s9 XCHG
s7 s8 XCHG
s6 s7 XCHG
s5 s6 XCHG
s4 s5 XCHG
s3 s4 XCHG
s1 s3 s0 XCHG3
$__gen_TONB_receive_SetStakingPool INLINECALLDICT
__gen_store_TONB INLINECALLDICT
}>
DUP
201882270 PUSHINT 201882270 PUSHINT
EQUAL EQUAL
IFJMP:<{ IFJMP:<{
DROP DROP
__gen_load_TONB INLINECALLDICT __gen_load_TONB INLINECALLDICT
s0 s11 XCHG s0 s12 XCHG
__gen_read_TokenUpdateContent INLINECALLDICT __gen_read_TokenUpdateContent INLINECALLDICT
NIP NIP
s11 s12 XCHG
s10 s11 XCHG s10 s11 XCHG
s9 s10 XCHG s9 s10 XCHG
s8 s9 XCHG s8 s9 XCHG
@ -1191,9 +1238,10 @@ PROGRAM{
IFJMP:<{ IFJMP:<{
DROP DROP
__gen_load_TONB INLINECALLDICT __gen_load_TONB INLINECALLDICT
s0 s11 XCHG s0 s12 XCHG
__gen_read_TokenBurnNotification INLINECALLDICT __gen_read_TokenBurnNotification INLINECALLDICT
s4 POP s4 POP
s14 s15 XCHG
s13 s14 XCHG s13 s14 XCHG
s12 s13 XCHG s12 s13 XCHG
s11 s12 XCHG s11 s12 XCHG
@ -1214,9 +1262,10 @@ PROGRAM{
IFJMP:<{ IFJMP:<{
DROP DROP
__gen_load_TONB INLINECALLDICT __gen_load_TONB INLINECALLDICT
s0 s11 XCHG s0 s12 XCHG
__gen_read_BlacklistWallet INLINECALLDICT __gen_read_BlacklistWallet INLINECALLDICT
NIP NIP
s11 s12 XCHG
s10 s11 XCHG s10 s11 XCHG
s9 s10 XCHG s9 s10 XCHG
s8 s9 XCHG s8 s9 XCHG
@ -1252,6 +1301,6 @@ PROGRAM{
86142586315491086060343270784266291122 PUSHINT 86142586315491086060343270784266291122 PUSHINT
}> }>
get_abi_ipfs PROC:<{ get_abi_ipfs PROC:<{
x{697066733a2f2f516d53387864625236426137397432624c46737378534c47795063486d54634746357639714d464a794e326e7262} PUSHSLICE x{697066733a2f2f516d543361735a424a78646a6f6a52667079374c50616643443472714a6e3366517a4671655747756638724c4343} PUSHSLICE
}> }>
}END>c }END>c

854
sources/output/jetton_TONB.code.rev.fif

File diff suppressed because it is too large Load Diff

BIN
sources/output/jetton_TONB.init.boc

Binary file not shown.

21
sources/output/jetton_TONB.init.fc

@ -29,8 +29,8 @@ builder __gen_write_WithdrawalRequests(builder build_0, (cell, cell, int) v) inl
return build_0; return build_0;
} }
builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) v) inline { builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, int, slice, int, (cell, cell, int)) v) inline {
var (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)) = v; var (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool, v'in_the_pool, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)) = v;
build_0 = build_0.store_coins(v'totalSupply); build_0 = build_0.store_coins(v'totalSupply);
build_0 = __tact_store_address(build_0, v'owner); build_0 = __tact_store_address(build_0, v'owner);
build_0 = ~ null?(v'content) ? build_0.store_int(true, 1).store_ref(v'content) : build_0.store_int(false, 1); build_0 = ~ null?(v'content) ? build_0.store_int(true, 1).store_ref(v'content) : build_0.store_int(false, 1);
@ -40,28 +40,33 @@ builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice,
var build_1 = begin_cell(); var build_1 = begin_cell();
build_1 = build_1.store_int(v'n_linkers, 257); build_1 = build_1.store_int(v'n_linkers, 257);
build_1 = __tact_store_address_opt(build_1, v'staking_pool); build_1 = __tact_store_address_opt(build_1, v'staking_pool);
build_1 = __gen_write_WithdrawalRequests(build_1, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)); build_1 = build_1.store_int(v'in_the_pool, 257);
var build_2 = begin_cell();
build_2 = __gen_write_WithdrawalRequests(build_2, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests));
build_1 = store_ref(build_1, build_2.end_cell());
build_0 = store_ref(build_0, build_1.end_cell()); build_0 = store_ref(build_0, build_1.end_cell());
return build_0; return build_0;
} }
cell $__gen_TONB_init(cell sys', slice $owner, cell $content) { cell $__gen_TONB_init(cell sys', slice $owner, cell $content, slice $staking_pool) {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = (null(), null(), null(), null(), null(), null(), 0, null(), null()); var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = (null(), null(), null(), null(), null(), null(), 0, null(), 0, null());
$self'totalSupply = 0; $self'totalSupply = 0;
$self'owner = $owner; $self'owner = $owner;
$self'mintable = true; $self'mintable = true;
$self'content = $content; $self'content = $content;
$self'staking_pool = $staking_pool;
($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests) = (null(), null(), 0); ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests) = (null(), null(), 0);
var b' = begin_cell(); var b' = begin_cell();
b' = b'.store_ref(sys'); b' = b'.store_ref(sys');
b' = __gen_write_TONB(b', ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))); b' = __gen_write_TONB(b', ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, $self'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)));
return b'.end_cell(); return b'.end_cell();
} }
cell init(cell sys', slice $$owner, cell $$content) method_id { cell init(cell sys', slice $$owner, cell $$content, slice $$staking_pool) method_id {
slice $owner = $$owner; slice $owner = $$owner;
cell $content = $$content; cell $content = $$content;
return $__gen_TONB_init(sys', $owner, $content); slice $staking_pool = $$staking_pool;
return $__gen_TONB_init(sys', $owner, $content, $staking_pool);
} }
() main() { () main() {

39
sources/output/jetton_TONB.init.fif

@ -36,28 +36,28 @@ PROGRAM{
STIX STIX
}> }>
__gen_write_TONB PROCINLINE:<{ __gen_write_TONB PROCINLINE:<{
s11 s10 XCHG2 s12 s11 XCHG2
STGRAMS STGRAMS
s0 s8 XCHG2 s0 s9 XCHG2
__tact_store_address INLINECALLDICT __tact_store_address INLINECALLDICT
s6 PUSH s7 PUSH
ISNULL ISNULL
NOT NOT
IF:<{ IF:<{
TRUE TRUE
SWAP SWAP
1 STI 1 STI
s1 s6 XCHG s1 s7 XCHG
STREF STREF
}>ELSE<{ }>ELSE<{
s6 POP s7 POP
FALSE FALSE
s0 s6 XCHG2 s0 s7 XCHG2
1 STI 1 STI
}> }>
s1 s4 XCHG s1 s5 XCHG
1 STI 1 STI
ROT s0 s3 XCHG2
__tact_store_address_opt INLINECALLDICT __tact_store_address_opt INLINECALLDICT
SWAP SWAP
__tact_store_address_opt INLINECALLDICT __tact_store_address_opt INLINECALLDICT
@ -67,9 +67,17 @@ PROGRAM{
STIX STIX
ROT ROT
__tact_store_address_opt INLINECALLDICT __tact_store_address_opt INLINECALLDICT
s4 s3 XCHG2 s1 s2 XCHG
257 PUSHINT
STIX
NEWC
s3 s1 s3 XCHG3
s5 s4 XCHG2
__gen_write_WithdrawalRequests INLINECALLDICT __gen_write_WithdrawalRequests INLINECALLDICT
ENDC ENDC
ROT
STREF
ENDC
SWAP SWAP
STREF STREF
}> }>
@ -77,20 +85,21 @@ PROGRAM{
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
0 PUSHINT 0 PUSHINT
PUSHNULL s0 s0 PUSH2
OVER
TRUE TRUE
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
s3 PUSH s3 PUSH
s0 s11 XCHG s0 s12 XCHG
NEWC NEWC
STREF STREF
s0 s11 XCHG s0 s12 XCHG
s4 s11 XCHG
s4 s10 XCHG s4 s10 XCHG
s4 s9 XCHG s4 s9 XCHG
s4 s8 XCHG s3 s8 XCHG
5 3 REVERSE s3 s7 XCHG
s3 s6 XCHG
s3 s5 XCHG s3 s5 XCHG
__gen_write_TONB INLINECALLDICT __gen_write_TONB INLINECALLDICT
ENDC ENDC

39
sources/output/jetton_TONB.init.rev.fif

@ -6,45 +6,46 @@ SETCP0
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
0 PUSHINT 0 PUSHINT
PUSHNULL s0 s0 PUSH2
s1 PUSH
-1 PUSHINT -1 PUSHINT
PUSHNULL PUSHNULL
PUSHNULL PUSHNULL
s3 PUSH s3 PUSH
s0 s11 XCHG s0 s12 XCHG
NEWC NEWC
STREF STREF
s0 s11 XCHG s0 s12 XCHG
s4 s11 XCHG
s4 s10 XCHG s4 s10 XCHG
s4 s9 XCHG s4 s9 XCHG
s4 s8 XCHG s3 s8 XCHG
5 3 REVERSE s3 s7 XCHG
s3 s6 XCHG
s3 s5 XCHG s3 s5 XCHG
s11 s10 XCHG2 s12 s11 XCHG2
STGRAMS STGRAMS
s0 s8 XCHG2 s0 s9 XCHG2
STSLICER STSLICER
s6 PUSH s7 PUSH
ISNULL ISNULL
NOT NOT
<{ <{
-1 PUSHINT -1 PUSHINT
s0 s1 XCHG s0 s1 XCHG
1 STI 1 STI
s1 s6 XCHG s1 s7 XCHG
STREF STREF
}> PUSHCONT }> PUSHCONT
<{ <{
s6 POP s7 POP
0 PUSHINT 0 PUSHINT
s0 s6 XCHG2 s0 s7 XCHG2
1 STI 1 STI
}> PUSHCONT }> PUSHCONT
IFELSE IFELSE
s1 s4 XCHG s1 s5 XCHG
1 STI 1 STI
ROT s0 s3 XCHG2
s0 PUSH s0 PUSH
ISNULL ISNULL
<{ <{
@ -87,13 +88,21 @@ SETCP0
STSLICER STSLICER
}> PUSHCONT }> PUSHCONT
IFELSE IFELSE
s4 s3 XCHG2 s1 s2 XCHG
257 PUSHINT
STIX
NEWC
s3 s1 s3 XCHG3
s5 s4 XCHG2
s2 s3 XCHG2 s2 s3 XCHG2
STDICT STDICT
STDICT STDICT
257 PUSHINT 257 PUSHINT
STIX STIX
ENDC ENDC
ROT
STREF
ENDC
s0 s1 XCHG s0 s1 XCHG
STREF STREF
ENDC ENDC

8
sources/output/jetton_TONB.md

@ -1,9 +1,9 @@
# TACT Compilation Report # TACT Compilation Report
Contract: TONB Contract: TONB
BOC Size: 3240 bytes BOC Size: 3438 bytes
# Types # Types
Total Types: 28 Total Types: 29
## StateInit ## StateInit
TLB: `_ code:^cell data:^cell = StateInit` TLB: `_ code:^cell data:^cell = StateInit`
@ -101,6 +101,10 @@ Signature: `Distribution{addresses:AddressList{addresses:dict<int, address>,leng
TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>} = InitiateDistributionVote` TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>} = InitiateDistributionVote`
Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>}}` Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>}}`
## SetStakingPool
TLB: `set_staking_pool#0764d148 staking_pool:Maybe address = SetStakingPool`
Signature: `SetStakingPool{staking_pool:Maybe address}`
## WithdrawalRequests ## WithdrawalRequests
TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests` TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests`
Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}` Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}`

2
sources/output/jetton_TONB.pkg

File diff suppressed because one or more lines are too long

63
sources/output/jetton_TONB.ts

File diff suppressed because one or more lines are too long

2
sources/output/jetton_TONBWallet.abi

File diff suppressed because one or more lines are too long

2
sources/output/jetton_TONBWallet.code.fc

@ -491,5 +491,5 @@ _ supported_interfaces() method_id {
} }
_ get_abi_ipfs() { _ get_abi_ipfs() {
return "ipfs://QmcxTwUyhdWnVtTQofwhidFsnnH8J6cMrdWwQR5o9oNWav"; return "ipfs://QmWmwq8kiCPdxDUjPz2DSrahAGvYmYK56xg35uBGLkKibZ";
} }

2
sources/output/jetton_TONBWallet.code.fif

@ -962,6 +962,6 @@ PROGRAM{
209778528950190195973528115415557644819 PUSHINT 209778528950190195973528115415557644819 PUSHINT
}> }>
get_abi_ipfs PROC:<{ get_abi_ipfs PROC:<{
x{697066733a2f2f516d6378547755796864576e567454516f667768696446736e6e48384a36634d726457775152356f396f4e576176} PUSHSLICE x{697066733a2f2f516d576d7771386b694350647844556a507a324453726168414776596d594b3536786733357542474c6b4b69625a} PUSHSLICE
}> }>
}END>c }END>c

6
sources/output/jetton_TONBWallet.md

@ -3,7 +3,7 @@ Contract: TONBWallet
BOC Size: 2048 bytes BOC Size: 2048 bytes
# Types # Types
Total Types: 28 Total Types: 29
## StateInit ## StateInit
TLB: `_ code:^cell data:^cell = StateInit` TLB: `_ code:^cell data:^cell = StateInit`
@ -101,6 +101,10 @@ Signature: `Distribution{addresses:AddressList{addresses:dict<int, address>,leng
TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>} = InitiateDistributionVote` TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>} = InitiateDistributionVote`
Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>}}` Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict<int, address>,length:int257},percents:dict<address, int>}}`
## SetStakingPool
TLB: `set_staking_pool#0764d148 staking_pool:Maybe address = SetStakingPool`
Signature: `SetStakingPool{staking_pool:Maybe address}`
## WithdrawalRequests ## WithdrawalRequests
TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests` TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests`
Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}` Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}`

2
sources/output/jetton_TONBWallet.pkg

File diff suppressed because one or more lines are too long

41
sources/output/jetton_TONBWallet.ts

@ -1263,6 +1263,47 @@ function dictValueParserInitiateDistributionVote(): DictionaryValue<InitiateDist
} }
} }
} }
export type SetStakingPool = {
$$type: 'SetStakingPool';
staking_pool: Address | null;
}
export function storeSetStakingPool(src: SetStakingPool) {
return (builder: Builder) => {
let b_0 = builder;
b_0.storeUint(124047688, 32);
b_0.storeAddress(src.staking_pool);
};
}
export function loadSetStakingPool(slice: Slice) {
let sc_0 = slice;
if (sc_0.loadUint(32) !== 124047688) { throw Error('Invalid prefix'); }
let _staking_pool = sc_0.loadMaybeAddress();
return { $$type: 'SetStakingPool' as const, staking_pool: _staking_pool };
}
function loadTupleSetStakingPool(source: TupleReader) {
let _staking_pool = source.readAddressOpt();
return { $$type: 'SetStakingPool' as const, staking_pool: _staking_pool };
}
function storeTupleSetStakingPool(source: SetStakingPool) {
let builder = new TupleBuilder();
builder.writeAddress(source.staking_pool);
return builder.build();
}
function dictValueParserSetStakingPool(): DictionaryValue<SetStakingPool> {
return {
serialize: (src, buidler) => {
buidler.storeRef(beginCell().store(storeSetStakingPool(src)).endCell());
},
parse: (src) => {
return loadSetStakingPool(src.loadRef().beginParse());
}
}
}
export type WithdrawalRequests = { export type WithdrawalRequests = {
$$type: 'WithdrawalRequests'; $$type: 'WithdrawalRequests';
addresses: Dictionary<bigint, Address>; addresses: Dictionary<bigint, Address>;

13
sources/pseudostaking.tact

@ -22,4 +22,17 @@ contract PseudoStaking {
to: ctx.sender to: ctx.sender
}); });
} }
receive(msg: Slice) {
let op: Int = msg.loadUint(32);
if (op == 0x7bcd1fef) {
let ctx: Context = context();
let sender: Address = ctx.sender;
let ex_stake: Int? = self.stakes.get(sender);
if (ex_stake == null) {
ex_stake = 0;
}
self.stakes.set(sender, ex_stake!! + ctx.value);
}
}
} }

4
sources/staking.tact

@ -5,7 +5,7 @@ fun stakingDepositMessage(value: Int, pool: Address): SendParameters {
return SendParameters{ return SendParameters{
to: pool, to: pool,
value: value, value: value,
body: beginCell().storeSlice("Deposit".asSlice()).endCell() body: beginCell().storeUint(0x7bcd1fef, 32)/*.storeSlice("Deposit".asSlice())*/.endCell()
}; };
} }
@ -43,7 +43,7 @@ trait StakingTrait {
if(self.staking_pool == null) { if(self.staking_pool == null) {
return; return;
} }
let value: Int = myBalance() - tonb_floor; let value: Int = myBalance() - tonb_floor - staking_gas;
if(value < ton("0.05")) { if(value < ton("0.05")) {
return; return;
} }

88
sources/tests/__snapshots__/jetton.spec.ts.snap

@ -13,14 +13,14 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon
}, },
"bounce": true, "bounce": true,
"from": "kQAI-3FJVc_ywSuY4vq0bYrzR7S4Och4y7bTU_i5yLOB3A6P", "from": "kQAI-3FJVc_ywSuY4vq0bYrzR7S4Och4y7bTU_i5yLOB3A6P",
"to": "kQAvIKE3SXqBVFVm7n-B_dWCiJEMzGsZubdM6KSjmKUjfdqx", "to": "kQARvF2GzXY8kGo8EO2AxHCdVSVMqmP0pod9Q_GW1C8Vdi26",
"type": "internal", "type": "internal",
"value": 1200000000n, "value": 1200000000n,
}, },
"type": "received", "type": "received",
}, },
{ {
"gasUsed": 31793n, "gasUsed": 32790n,
"type": "processed", "type": "processed",
}, },
{ {
@ -31,8 +31,8 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon
"type": "cell", "type": "cell",
}, },
"bounce": false, "bounce": false,
"from": "kQAvIKE3SXqBVFVm7n-B_dWCiJEMzGsZubdM6KSjmKUjfdqx", "from": "kQARvF2GzXY8kGo8EO2AxHCdVSVMqmP0pod9Q_GW1C8Vdi26",
"to": "kQDZZaNqE7XxaQofxheKTzH3r_5VsKq0v-AacCBfKJpVnhV6", "to": "kQAgW4rD7L7jO9_YMVn-LKJH1Z5Ng4s_G8LfeTG6aYuA58xu",
"type": "internal", "type": "internal",
"value": 11365000n, "value": 11365000n,
}, },
@ -43,13 +43,13 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon
"messages": [ "messages": [
{ {
"body": { "body": {
"cell": "x{178D4519000000000000000043B9ACA008005E41426E92F502A8AACDDCFF03FBAB0511221998D633736E99D14947314A46FB00023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_} "cell": "x{178D4519000000000000000043B9ACA008002378BB0D9AEC7920D47821DB0188E13AAA4A9954C7E94D0EFA87E32DA85E2AED00023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_}
x{80000000000000000000000000000000000000000000000000000000000000002006CB2D1B509DAF8B4850FE30BC52798FBD7FF2AD8555A5FF00D38102F944D2ACF4_}", x{8000000000000000000000000000000000000000000000000000000000000000200102DC561F65F719DEFEC18ACFF165123EACF26C1C59F8DE16FBC98DD34C5C073C_}",
"type": "cell", "type": "cell",
}, },
"bounce": false, "bounce": false,
"from": "kQAvIKE3SXqBVFVm7n-B_dWCiJEMzGsZubdM6KSjmKUjfdqx", "from": "kQARvF2GzXY8kGo8EO2AxHCdVSVMqmP0pod9Q_GW1C8Vdi26",
"to": "kQCYHPl_7VmiHpjZoVX0zEce5MDyg6VkYw-1HxUVzAFjOKZZ", "to": "kQDw_1r97a4JZHQhzXS1TNtQoCM7KzhazVMoGfbme_ASRl9L",
"type": "internal", "type": "internal",
"value": 42293000n, "value": 42293000n,
}, },
@ -58,3 +58,75 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon
}, },
] ]
`; `;
exports[`jetton should work correctly with the staking 1`] = `
[
{
"message": {
"body": {
"cell": "x{21EEB6075174876E800}",
"type": "cell",
},
"bounce": true,
"from": "kQAI-3FJVc_ywSuY4vq0bYrzR7S4Och4y7bTU_i5yLOB3A6P",
"to": "kQCUp9iwvsCkm4HlN2V-yoIL2_lmaOUhJSVeIwqsTfuGOkLp",
"type": "internal",
"value": 100200000000n,
},
"type": "received",
},
{
"gasUsed": 36073n,
"type": "processed",
},
{
"messages": [
{
"body": {
"cell": "x{B3FCF4C12_}",
"type": "cell",
},
"bounce": false,
"from": "kQCUp9iwvsCkm4HlN2V-yoIL2_lmaOUhJSVeIwqsTfuGOkLp",
"to": "kQDaE50R-IOeyYvl7P7cnbkEjDQMUYps7YugwTKWJoqwqOH6",
"type": "internal",
"value": 11365000n,
},
],
"type": "sent",
},
{
"messages": [
{
"body": {
"cell": "x{178D451900000000000000005174876E800801294FB1617D81493703CA6ECAFD950417B7F2CCD1CA424A4ABC4615589BF70C7500023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_}
x{80000000000000000000000000000000000000000000000000000000000000002006D09CE88FC41CF64C5F2F67F6E4EDC82461A0628C53676C5D060994B134558544_}",
"type": "cell",
},
"bounce": false,
"from": "kQCUp9iwvsCkm4HlN2V-yoIL2_lmaOUhJSVeIwqsTfuGOkLp",
"to": "kQAhe-C5pZaLYVtsvlprNC53th6GxI2qyS81QDuC2f3RZ2pl",
"type": "internal",
"value": 42285000n,
},
],
"type": "sent",
},
{
"messages": [
{
"body": {
"cell": "x{7BCD1FEF}",
"type": "cell",
},
"bounce": true,
"from": "kQCUp9iwvsCkm4HlN2V-yoIL2_lmaOUhJSVeIwqsTfuGOkLp",
"to": "kQAQUSIm_zYC9VxtmVfOeKhmjxmGLXoU3PR_y7RQR9lxXtJM",
"type": "internal",
"value": 99491421000n,
},
],
"type": "sent",
},
]
`;

15
sources/tests/jetton.spec.ts

@ -14,7 +14,7 @@ describe('jetton', () => {
// Create jetton // Create jetton
let system = await ContractSystem.create(); let system = await ContractSystem.create();
let owner = system.treasure('owner'); let owner = system.treasure('owner');
let contract = system.open(await TONB.fromInit(owner.address, default_content)); let contract = system.open(await TONB.fromInit(owner.address, default_content, null));
let tracker = system.track(contract.address); let tracker = system.track(contract.address);
// Mint // Mint
@ -47,11 +47,20 @@ describe('jetton', () => {
// Create jetton // Create jetton
let system = await ContractSystem.create(); let system = await ContractSystem.create();
let owner = system.treasure('owner'); let owner = system.treasure('owner');
let contract = system.open(await TONB.fromInit(owner.address, default_content));
let tracker = system.track(contract.address);
let pseudostaking_contract = system.open(await PseudoStaking.fromInit()); let pseudostaking_contract = system.open(await PseudoStaking.fromInit());
let contract = system.open(await TONB.fromInit(owner.address, default_content, pseudostaking_contract.address));
await pseudostaking_contract.send(owner, { value: toNano('10000')}, "Deposit"); await pseudostaking_contract.send(owner, { value: toNano('10000')}, "Deposit");
await contract.send(owner, {value: toNano('0.1')}, { $$type: "SetStakingPool", staking_pool: pseudostaking_contract.address });
await system.run(); await system.run();
let tracker = system.track(contract.address);
// Mint
await contract.send(owner, { value: toNano('100.2') }, { $$type: 'Deposit', amount: toNano('100') });
let log = await system.run();
let events = tracker.events();
// console.log(events)
expect(events).toMatchSnapshot();
expect((events[4] as any).messages[0].value).toBeGreaterThan(99000000000n);
}); });
}); });

3
sources/tests/voting.spec.ts

@ -10,11 +10,10 @@ import { PseudoStaking } from '../output/jetton_PseudoStaking';
describe('jetton', () => { describe('jetton', () => {
it('should be able to create a vote', async () => { it('should be able to create a vote', async () => {
// Create jetton // Create jetton
let system = await ContractSystem.create(); let system = await ContractSystem.create();
let owner = system.treasure('owner'); let owner = system.treasure('owner');
let contract = system.open(await TONB.fromInit(owner.address, default_content)); let contract = system.open(await TONB.fromInit(owner.address, default_content, null));
let tracker = system.track(contract.address); let tracker = system.track(contract.address);
}); });
}); });
Loading…
Cancel
Save