From af428699972fe93db300b8af78dcea76857db5d9 Mon Sep 17 00:00:00 2001 From: ennucore Date: Sat, 11 Feb 2023 18:45:37 +0100 Subject: [PATCH] Displaying the event logs --- sources/constants.tact | 2 +- sources/jetton.tact | 1 + sources/jetton_trait.tact | 6 +- sources/output/jetton_TONB.code.boc | Bin 3785 -> 3825 bytes sources/output/jetton_TONB.code.fc | 12 ++- sources/output/jetton_TONB.code.fif | 49 +++++---- sources/output/jetton_TONB.code.rev.fif | 76 ++++++++++---- sources/output/jetton_TONB.md | 2 +- sources/output/jetton_TONB.pkg | 2 +- sources/output/jetton_TONB.ts | 4 +- sources/staking.tact | 18 +++- .../tests/__snapshots__/jetton.spec.ts.snap | 36 +++---- sources/tests/jetton.spec.ts | 37 +++++-- sources/utils/helpers.ts | 93 +++++++++++++++++- 14 files changed, 263 insertions(+), 75 deletions(-) diff --git a/sources/constants.tact b/sources/constants.tact index 1971b4b..5090f91 100644 --- a/sources/constants.tact +++ b/sources/constants.tact @@ -1,6 +1,6 @@ const gas_consumption: Int = ton("0.01"); -const withdraw_gas_consumption: Int = ton("0.1"); +const withdraw_gas_consumption: Int = ton("0.15"); 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 wallet_credit: Int = ton("0.065"); // TON to send to the wallet for the fees diff --git a/sources/jetton.tact b/sources/jetton.tact index addcb58..d348170 100644 --- a/sources/jetton.tact +++ b/sources/jetton.tact @@ -29,6 +29,7 @@ contract TONB with TONBTrait { staking_pool: Address?; in_the_pool: Int = 0; withdrawal_requests: WithdrawalRequests; + requested_withdrawal: Int = 0; init(owner: Address, content: Cell?, staking_pool: Address?) { self.totalSupply = 0; diff --git a/sources/jetton_trait.tact b/sources/jetton_trait.tact index 027a4db..63e83e3 100644 --- a/sources/jetton_trait.tact +++ b/sources/jetton_trait.tact @@ -23,6 +23,7 @@ trait TONBTrait with Ownable, StakingTrait { staking_pool: Address?; in_the_pool: Int = 0; withdrawal_requests: WithdrawalRequests; + requested_withdrawal: Int = 0; // @@ -72,14 +73,15 @@ trait TONBTrait with Ownable, StakingTrait { mode: SendRemainingValue, body: body }); - self.requestWithdrawal(msg.owner, diff); + let ctx: Context = context(); + self.requestWithdrawal(ctx.sender, diff); return; } // Withdraw send(SendParameters{ to: msg.owner, - value: msg.amount, + value: msg.amount - withdraw_gas_consumption, bounce: false }); } diff --git a/sources/output/jetton_TONB.code.boc b/sources/output/jetton_TONB.code.boc index 376fe031de137d3d8e7a4e757ca4523216f782a5..f44d90efaabf5a7c33f40e9b4091b3f51f2600cc 100644 GIT binary patch delta 542 zcmX>p`%#vA>$^Ecj7;u~417;Fa%VHLYB9cCFE*Kxv0(CRMt(-~$-f!nnB)~EM>D-( zGy{?)lXoyTF-yzHPPS$72a5EvC@`B_SWMo)lE7@`Vm(=yRfW-hvIVOrFUNxo3SQBZ&p>~Jol$xpbfm`u$k zD{vb!I!+GaHUqlc!g6vC_fZyLDB4U8h0MxGO)1-ETZ zI!xZcb11@zc}c!l7x65)xdqNHu9FY4s&C%I%gYD=g5a`O delta 484 zcmew;ds3Er>$^Ecj7;u~419Yxa%VHLYBRoEFE*Kxv0(CRMt(+%$-f!nm=qKzv6W0d z&s4%_4r1(JZeo^^m78qK;?HP4xtB$O*}~Ft@&=X!W@{Il$-=BEj1H46SUq`JzdmHx zC-mt{+HD(2^T~az`YaZfQqq(6@~Tfh#A*vRi%XvAk3y3`_1)?BCO2}FGpVUh{?2B} zV`$FAsGy__Bve!<+pr&IyfcX-Oa^4$!eHK=eLV&R4sQ!`b8~Oogi1W-)o{@?pIpUJ z$E2q}`4@*A&=!`A$ugX3F15QtYCtIXbeMRUl#7jn7PH%Jn*yeS28RfcW`VN;YXoKs zbO}@nWC(-{xCxlL7zo|A(RR^c;<;^;bLh5>h2`YwoDPh-lW%akG8vdpmgi~^H!)?A z3*B(rM(4H-&@iA`f&zvXmPV7eaVanwPrlA&#bjnaS(w|9(P^?Pw;9kimR6JNxsS2{ z1IKo<2ah6?o&Dr&9yK8c7Y3FSCmEP7F!G!TEx2uS(sA-)o= 100000000)); + throw_unless(6384, ($ctx'value >= 150000000)); ($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'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); } @@ -586,17 +586,18 @@ _ $__gen_get_owner() method_id(83229) { 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'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); - int $available = ((__tact_my_balance() - 500000000) - 100000000); + int $available = ((__tact_my_balance() - 500000000) - 150000000); if (($available < $msg'amount)) { int $diff = ($msg'amount - $available); $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())); 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())); - ($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); + var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); + ($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($ctx'sender, $diff); 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 - 150000000), 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'in_the_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); } @@ -631,7 +632,8 @@ _ $__gen_get_owner() method_id(83229) { 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; 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())); + slice $addr = __tact_not_null(__tact_dict_get_int_slice($self'withdrawal_requests'addresses, 257, $i)); + $send((false, $addr, 80000000, 0, __gen_writecell_TokenBurn((0, __tact_not_null(__tact_dict_get_int_int($self'withdrawal_requests'amounts, 257, $i, 257)), $addr, my_address())), null(), null())); $i = ($i + 1); } ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests) = (null(), null(), 0); diff --git a/sources/output/jetton_TONB.code.fif b/sources/output/jetton_TONB.code.fif index a07daf9..ca88c4d 100644 --- a/sources/output/jetton_TONB.code.fif +++ b/sources/output/jetton_TONB.code.fif @@ -986,7 +986,7 @@ PROGRAM{ DROP 6384 PUSHINT s3 POP - 100000000 PUSHINT + 150000000 PUSHINT GEQ s1 s2 XCHG THROWANYIFNOT @@ -1015,7 +1015,7 @@ PROGRAM{ __tact_my_balance INLINECALLDICT 500000000 PUSHINT SUB - 100000000 PUSHINT + 150000000 PUSHINT SUB s0 s13 PUSH2 LESS @@ -1042,21 +1042,28 @@ PROGRAM{ PUSHNULL PUSHNULL __gen_writecell_TokenTransferInternal INLINECALLDICT - s13 s11 s10 PUSH3 - s12 s11 s10 PUSH3 - s12 s11 s10 PUSH3 - s12 s11 PUSH2 + s13 s11 s(-2) PU2XC + s12 s11 s(-2) PU2XC + s12 s11 s(-2) PU2XC + s12 s11 s(-2) PU2XC + s12 s11 s(-2) PU2XC + s12 s(-1) PUXC 23 s() PUSH - 26 s() PUSH + SWAP + s0 26 s() XCHG $__gen_TONB_get_wallet_address INLINECALLDICT FALSE s0 s2 XCHG 0 PUSHINT 64 PUSHINT ROT + s0 17 s() XCHG PUSHNULL PUSHNULL $send INLINECALLDICT + __tact_context_get INLINECALLDICT + s2 s3 XCHG + 3 BLKDROP s12 s13 XCHG s10 s12 XCHG s9 s11 XCHG @@ -1066,13 +1073,16 @@ PROGRAM{ s5 s7 XCHG s4 s6 XCHG s3 s5 XCHG - s4 s3 s0 XCHG3 - s1 s2 XCHG + s4 s0 s3 XCHG3 + s0 s2 XCHG $__gen_TONB_requestWithdrawal INLINECALLDICT }>ELSE<{ DROP FALSE - s0 s14 s13 XCHG3 + s0 s13 XCHG + 150000000 PUSHINT + SUB + s13 s14 s0 XCHG3 0 PUSHINT PUSHNULL PUSHNULL @@ -1170,19 +1180,24 @@ PROGRAM{ s0 s1 PUSH2 LESS }>DO<{ - TRUE - s4 PUSH - 257 PUSHINT s3 PUSH + 257 PUSHINT + s2 PUSH __tact_dict_get_int_slice INLINECALLDICT __tact_not_null INLINECALLDICT + FALSE + 80000000 PUSHINT + 0 PUSHINT + DUP 257 PUSHINT - s5 s(-1) s(-1) PUXCPU - s5 s(-1) PUXC + s8 s(-1) s(-1) PUXCPU + s8 s(-1) PUXC __tact_dict_get_int_int INLINECALLDICT __tact_not_null INLINECALLDICT - 0 PUSHINT - PUSHNULL + MYADDR + s6 s(-1) PUXC + __gen_writecell_TokenBurn INLINECALLDICT + s3 s4 XCHG PUSHNULL PUSHNULL $send INLINECALLDICT diff --git a/sources/output/jetton_TONB.code.rev.fif b/sources/output/jetton_TONB.code.rev.fif index 3be0adf..38aeb51 100644 --- a/sources/output/jetton_TONB.code.rev.fif +++ b/sources/output/jetton_TONB.code.rev.fif @@ -1187,7 +1187,7 @@ SETCP0 s0 POP 6384 PUSHINT s3 POP - 100000000 PUSHINT + 150000000 PUSHINT GEQ s1 s2 XCHG THROWANYIFNOT @@ -2125,14 +2125,17 @@ SETCP0 0 INDEX 500000000 PUSHINT SUB - 100000000 PUSHINT + 150000000 PUSHINT SUB s0 s13 PUSH2 LESS <{ s0 POP 0 PUSHINT - s0 s14 s13 XCHG3 + s0 s13 XCHG + 150000000 PUSHINT + SUB + s13 s14 s0 XCHG3 0 PUSHINT PUSHNULL PUSHNULL @@ -2489,12 +2492,15 @@ SETCP0 }> CALLREF ENDC }> CALLREF - 13 11 10 PUSH3 - 12 11 10 PUSH3 - 12 11 10 PUSH3 - s12 s11 PUSH2 + 13 11 -2 PU2XC + 12 11 -2 PU2XC + 12 11 -2 PU2XC + 12 11 -2 PU2XC + 12 11 -2 PU2XC + s12 s-1 PUXC s23 PUSH - s26 PUSH + s0 s1 XCHG + s0 s26 XCHG <{ <{ 2 GETGLOBVAR @@ -2540,6 +2546,7 @@ SETCP0 0 PUSHINT 64 PUSHINT ROT + s0 s17 XCHG PUSHNULL PUSHNULL <{ @@ -2668,6 +2675,10 @@ SETCP0 s0 s1 XCHG SENDRAWMSG }> CALLREF + 1 GETGLOBVAR + 4 UNTUPLE + s2 s3 XCHG + 3 BLKDROP s12 s13 XCHG s10 s12 XCHG s9 s11 XCHG @@ -2677,8 +2688,8 @@ SETCP0 s5 s7 XCHG s4 s6 XCHG s3 s5 XCHG - s4 s3 s0 XCHG3 - s1 s2 XCHG + s4 s0 s3 XCHG3 + s0 s2 XCHG <{ s1 s4 XCHG 257 PUSHINT @@ -4128,10 +4139,9 @@ SETCP0 LESS }> PUSHCONT <{ - -1 PUSHINT - s4 PUSH - 257 PUSHINT s3 PUSH + 257 PUSHINT + s2 PUSH ROTREV DICTIGET NULLSWAPIFNOT @@ -4143,9 +4153,13 @@ SETCP0 s0 PUSH ISNULL 128 THROWIF + 0 PUSHINT + 80000000 PUSHINT + 0 PUSHINT + s0 PUSH 257 PUSHINT - 5 -1 -1 PUXCPU - s5 s-1 PUXC + 8 -1 -1 PUXCPU + s8 s-1 PUXC s1 s3 s3 XCHG3 DICTIGET NULLSWAPIFNOT @@ -4162,8 +4176,36 @@ SETCP0 s0 PUSH ISNULL 128 THROWIF - 0 PUSHINT - PUSHNULL + MYADDR + s6 s-1 PUXC + <{ + NEWC + 4 1 BLKSWAP + 1499400124 PUSHINT + s0 s5 XCHG2 + 32 STU + s1 s3 XCHG + 64 STU + s0 s1 XCHG + STGRAMS + s0 s1 XCHG + STSLICER + s0 s1 XCHG + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + s0 s1 XCHG + 2 STU + }> PUSHCONT + <{ + STSLICER + }> PUSHCONT + IFELSE + ENDC + }> CALLREF + s3 s4 XCHG PUSHNULL PUSHNULL <{ diff --git a/sources/output/jetton_TONB.md b/sources/output/jetton_TONB.md index d69743b..6bd1266 100644 --- a/sources/output/jetton_TONB.md +++ b/sources/output/jetton_TONB.md @@ -1,6 +1,6 @@ # TACT Compilation Report Contract: TONB -BOC Size: 3785 bytes +BOC Size: 3825 bytes # Types Total Types: 30 diff --git a/sources/output/jetton_TONB.pkg b/sources/output/jetton_TONB.pkg index bf8649d..4e8b8a3 100644 --- a/sources/output/jetton_TONB.pkg +++ b/sources/output/jetton_TONB.pkg @@ -1 +1 @@ -{"name":"TONB","code":"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","abi":"{\"name\":\"TONB\",\"types\":[{\"name\":\"StateInit\",\"header\":null,\"fields\":[{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"Context\",\"header\":null,\"fields\":[{\"name\":\"bounced\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"sender\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"raw\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false}}]},{\"name\":\"SendParameters\",\"header\":null,\"fields\":[{\"name\":\"bounce\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"to\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mode\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]},{\"name\":\"TokenTransfer\",\"header\":260734629,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"destination\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseDestination\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"customPayload\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"forwardTonAmount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"forwardPayload\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false,\"format\":\"remainder\"}}]},{\"name\":\"TokenTransferInternal\",\"header\":395134233,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"from\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"forwardTonAmount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"forwardPayload\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false,\"format\":\"remainder\"}},{\"name\":\"setLinker\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"setLinkerAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"TokenNotification\",\"header\":1935855772,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"from\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"forwardPayload\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false,\"format\":\"remainder\"}}]},{\"name\":\"TokenBurn\",\"header\":1499400124,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"TokenBurnNotification\",\"header\":2078119902,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"TokenExcesses\",\"header\":3576854235,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}}]},{\"name\":\"TokenUpdateContent\",\"header\":201882270,\"fields\":[{\"name\":\"content\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]},{\"name\":\"StakingWithdraw\",\"header\":3665837821,\"fields\":[{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}}]},{\"name\":\"JettonData\",\"header\":null,\"fields\":[{\"name\":\"totalSupply\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mintable\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"content\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"walletCode\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"JettonWalletData\",\"header\":null,\"fields\":[{\"name\":\"balance\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"master\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"walletCode\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"SetLinkerNeighbor\",\"header\":3019699393,\"fields\":[{\"name\":\"neighbor\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"InitLinker\",\"header\":1740669268,\"fields\":[{\"name\":\"neighbor\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"walletAmount\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"walletCode\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"walletData\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"walletAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"ForwardToWallet\",\"header\":1562223291,\"fields\":[{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"BlacklistWallet\",\"header\":43811734,\"fields\":[{\"name\":\"wallet\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}]},{\"name\":\"InitiateBlacklistVote\",\"header\":3909090059,\"fields\":[{\"name\":\"adminIndex\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"wallet\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"quorum_percent\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"vote_time\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"InitiateLiquidationVote\",\"header\":301696559,\"fields\":[{\"name\":\"adminIndex\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"quorum_percent\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"vote_time\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"FinishVote\",\"header\":710362179,\"fields\":[{\"name\":\"voteId\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"Vote\",\"header\":3060856014,\"fields\":[{\"name\":\"voteId\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"adminIndex\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"vote\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"AddressList\",\"header\":null,\"fields\":[{\"name\":\"addresses\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"address\"}},{\"name\":\"length\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"Distribution\",\"header\":null,\"fields\":[{\"name\":\"addresses\",\"type\":{\"kind\":\"simple\",\"type\":\"AddressList\",\"optional\":false}},{\"name\":\"percents\",\"type\":{\"kind\":\"dict\",\"key\":\"address\",\"value\":\"int\"}}]},{\"name\":\"InitiateDistributionVote\",\"header\":276353205,\"fields\":[{\"name\":\"adminIndex\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"quorum_percent\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"vote_time\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"distribution\",\"type\":{\"kind\":\"simple\",\"type\":\"Distribution\",\"optional\":false}}]},{\"name\":\"SetStakingPool\",\"header\":124047688,\"fields\":[{\"name\":\"staking_pool\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"RequestLinker\",\"header\":1512653598,\"fields\":[{\"name\":\"client\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}]},{\"name\":\"WithdrawalRequests\",\"header\":null,\"fields\":[{\"name\":\"addresses\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"address\"}},{\"name\":\"amounts\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}},{\"name\":\"n_requests\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"ChangeOwner\",\"header\":256331011,\"fields\":[{\"name\":\"newOwner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}]},{\"name\":\"Deposit\",\"header\":569292295,\"fields\":[{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}}]},{\"name\":\"Withdraw\",\"header\":1616450832,\"fields\":[{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]}],\"receivers\":[{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"Deposit\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"empty\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"Withdraw\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"SetStakingPool\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenUpdateContent\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenBurnNotification\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"BlacklistWallet\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"RequestLinker\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"text\",\"text\":\"Withdraw completed\"}}],\"getters\":[{\"name\":\"get_wallet_address\",\"arguments\":[{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"get_jetton_data\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"JettonData\",\"optional\":false}},{\"name\":\"owner\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"errors\":{\"2\":{\"message\":\"Stack undeflow\"},\"3\":{\"message\":\"Stack overflow\"},\"4\":{\"message\":\"Integer overflow\"},\"5\":{\"message\":\"Integer out of expected range\"},\"6\":{\"message\":\"Invalid opcode\"},\"7\":{\"message\":\"Type check error\"},\"8\":{\"message\":\"Cell overflow\"},\"9\":{\"message\":\"Cell underflow\"},\"10\":{\"message\":\"Dictionary error\"},\"13\":{\"message\":\"Out of gas error\"},\"32\":{\"message\":\"Method ID not found\"},\"34\":{\"message\":\"Action is invalid or not supported\"},\"37\":{\"message\":\"Not enough TON\"},\"38\":{\"message\":\"Not enough extra-currencies\"},\"128\":{\"message\":\"Null reference exception\"},\"129\":{\"message\":\"Invalid serialization prefix\"},\"130\":{\"message\":\"Invalid incoming message\"},\"131\":{\"message\":\"Constraints error\"},\"132\":{\"message\":\"Access denied\"},\"133\":{\"message\":\"Contract stopped\"},\"134\":{\"message\":\"Invalid argument\"},\"135\":{\"message\":\"Code of a contract was not found\"},\"136\":{\"message\":\"Invalid address\"},\"4429\":{\"message\":\"Invalid sender\"},\"6384\":{\"message\":\"not enough money for withdraw\"},\"13650\":{\"message\":\"Invalid bounced message\"},\"16059\":{\"message\":\"Invalid value\"},\"32366\":{\"message\":\"not enough money for deposit\"},\"41207\":{\"message\":\"invalid sender\"},\"44816\":{\"message\":\"Wallet is blacklisted\"},\"62972\":{\"message\":\"Invalid balance\"}}}","init":{"code":"te6ccgEBBwEAqwABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4A0AAdQBN2m1tcFMAf21tIwzIzAwQSxBKEEkQOBA3EDYQNYGANJQy/oCUAnPFidus5Z/AcoAF8yWN3BQB8oA4hXKAFADIG6VMHABywGSzxbiASBulTBwAcsBks8W4gHIgQEBzwBYIG6VMHABywGSzxbiEoEBAc8AyEMTUFRQI/QA9ACBAQHPAMlYzMkBzMk=","args":[{"name":"owner","type":{"kind":"simple","type":"address","optional":false}},{"name":"content","type":{"kind":"simple","type":"cell","optional":true}},{"name":"staking_pool","type":{"kind":"simple","type":"address","optional":true}}],"deployment":{"kind":"system-cell","system":"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"}},"compiler":{"name":"tact","version":"0.9.2"}} \ No newline at end of file +{"name":"TONB","code":"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","abi":"{\"name\":\"TONB\",\"types\":[{\"name\":\"StateInit\",\"header\":null,\"fields\":[{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"Context\",\"header\":null,\"fields\":[{\"name\":\"bounced\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"sender\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"raw\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false}}]},{\"name\":\"SendParameters\",\"header\":null,\"fields\":[{\"name\":\"bounce\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"to\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mode\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"code\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"data\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]},{\"name\":\"TokenTransfer\",\"header\":260734629,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"destination\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseDestination\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"customPayload\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"forwardTonAmount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"forwardPayload\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false,\"format\":\"remainder\"}}]},{\"name\":\"TokenTransferInternal\",\"header\":395134233,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"from\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"forwardTonAmount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"forwardPayload\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false,\"format\":\"remainder\"}},{\"name\":\"setLinker\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":true,\"format\":257}},{\"name\":\"setLinkerAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"TokenNotification\",\"header\":1935855772,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"from\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"forwardPayload\",\"type\":{\"kind\":\"simple\",\"type\":\"slice\",\"optional\":false,\"format\":\"remainder\"}}]},{\"name\":\"TokenBurn\",\"header\":1499400124,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"TokenBurnNotification\",\"header\":2078119902,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}},{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}},{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"TokenExcesses\",\"header\":3576854235,\"fields\":[{\"name\":\"queryId\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":64}}]},{\"name\":\"TokenUpdateContent\",\"header\":201882270,\"fields\":[{\"name\":\"content\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}}]},{\"name\":\"StakingWithdraw\",\"header\":3665837821,\"fields\":[{\"name\":\"value\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}}]},{\"name\":\"JettonData\",\"header\":null,\"fields\":[{\"name\":\"totalSupply\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"mintable\",\"type\":{\"kind\":\"simple\",\"type\":\"bool\",\"optional\":false}},{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"content\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":true}},{\"name\":\"walletCode\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"JettonWalletData\",\"header\":null,\"fields\":[{\"name\":\"balance\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"master\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"walletCode\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"SetLinkerNeighbor\",\"header\":3019699393,\"fields\":[{\"name\":\"neighbor\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"InitLinker\",\"header\":1740669268,\"fields\":[{\"name\":\"neighbor\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"walletAmount\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"walletCode\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"walletData\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}},{\"name\":\"walletAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"responseAddress\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"ForwardToWallet\",\"header\":1562223291,\"fields\":[{\"name\":\"body\",\"type\":{\"kind\":\"simple\",\"type\":\"cell\",\"optional\":false}}]},{\"name\":\"BlacklistWallet\",\"header\":43811734,\"fields\":[{\"name\":\"wallet\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}]},{\"name\":\"InitiateBlacklistVote\",\"header\":3909090059,\"fields\":[{\"name\":\"adminIndex\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"wallet\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"quorum_percent\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"vote_time\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"InitiateLiquidationVote\",\"header\":301696559,\"fields\":[{\"name\":\"adminIndex\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"quorum_percent\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"vote_time\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"FinishVote\",\"header\":710362179,\"fields\":[{\"name\":\"voteId\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"Vote\",\"header\":3060856014,\"fields\":[{\"name\":\"voteId\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"adminIndex\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"vote\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"AddressList\",\"header\":null,\"fields\":[{\"name\":\"addresses\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"address\"}},{\"name\":\"length\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"Distribution\",\"header\":null,\"fields\":[{\"name\":\"addresses\",\"type\":{\"kind\":\"simple\",\"type\":\"AddressList\",\"optional\":false}},{\"name\":\"percents\",\"type\":{\"kind\":\"dict\",\"key\":\"address\",\"value\":\"int\"}}]},{\"name\":\"InitiateDistributionVote\",\"header\":276353205,\"fields\":[{\"name\":\"adminIndex\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"quorum_percent\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"vote_time\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}},{\"name\":\"distribution\",\"type\":{\"kind\":\"simple\",\"type\":\"Distribution\",\"optional\":false}}]},{\"name\":\"SetStakingPool\",\"header\":124047688,\"fields\":[{\"name\":\"staking_pool\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}}]},{\"name\":\"RequestLinker\",\"header\":1512653598,\"fields\":[{\"name\":\"client\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}]},{\"name\":\"WithdrawalRequests\",\"header\":null,\"fields\":[{\"name\":\"addresses\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"address\"}},{\"name\":\"amounts\",\"type\":{\"kind\":\"dict\",\"key\":\"int\",\"value\":\"int\"}},{\"name\":\"n_requests\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]},{\"name\":\"ChangeOwner\",\"header\":256331011,\"fields\":[{\"name\":\"newOwner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}]},{\"name\":\"Deposit\",\"header\":569292295,\"fields\":[{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"uint\",\"optional\":false,\"format\":\"coins\"}}]},{\"name\":\"Withdraw\",\"header\":1616450832,\"fields\":[{\"name\":\"amount\",\"type\":{\"kind\":\"simple\",\"type\":\"int\",\"optional\":false,\"format\":257}}]}],\"receivers\":[{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"Deposit\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"empty\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"Withdraw\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"SetStakingPool\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenUpdateContent\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenBurnNotification\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"BlacklistWallet\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"RequestLinker\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"text\",\"text\":\"Withdraw completed\"}}],\"getters\":[{\"name\":\"get_wallet_address\",\"arguments\":[{\"name\":\"owner\",\"type\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"returnType\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}},{\"name\":\"get_jetton_data\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"JettonData\",\"optional\":false}},{\"name\":\"owner\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":false}}],\"errors\":{\"2\":{\"message\":\"Stack undeflow\"},\"3\":{\"message\":\"Stack overflow\"},\"4\":{\"message\":\"Integer overflow\"},\"5\":{\"message\":\"Integer out of expected range\"},\"6\":{\"message\":\"Invalid opcode\"},\"7\":{\"message\":\"Type check error\"},\"8\":{\"message\":\"Cell overflow\"},\"9\":{\"message\":\"Cell underflow\"},\"10\":{\"message\":\"Dictionary error\"},\"13\":{\"message\":\"Out of gas error\"},\"32\":{\"message\":\"Method ID not found\"},\"34\":{\"message\":\"Action is invalid or not supported\"},\"37\":{\"message\":\"Not enough TON\"},\"38\":{\"message\":\"Not enough extra-currencies\"},\"128\":{\"message\":\"Null reference exception\"},\"129\":{\"message\":\"Invalid serialization prefix\"},\"130\":{\"message\":\"Invalid incoming message\"},\"131\":{\"message\":\"Constraints error\"},\"132\":{\"message\":\"Access denied\"},\"133\":{\"message\":\"Contract stopped\"},\"134\":{\"message\":\"Invalid argument\"},\"135\":{\"message\":\"Code of a contract was not found\"},\"136\":{\"message\":\"Invalid address\"},\"4429\":{\"message\":\"Invalid sender\"},\"6384\":{\"message\":\"not enough money for withdraw\"},\"13650\":{\"message\":\"Invalid bounced message\"},\"16059\":{\"message\":\"Invalid value\"},\"32366\":{\"message\":\"not enough money for deposit\"},\"41207\":{\"message\":\"invalid sender\"},\"44816\":{\"message\":\"Wallet is blacklisted\"},\"62972\":{\"message\":\"Invalid balance\"}}}","init":{"code":"te6ccgEBBwEAqwABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4A0AAdQBN2m1tcFMAf21tIwzIzAwQSxBKEEkQOBA3EDYQNYGANJQy/oCUAnPFidus5Z/AcoAF8yWN3BQB8oA4hXKAFADIG6VMHABywGSzxbiASBulTBwAcsBks8W4gHIgQEBzwBYIG6VMHABywGSzxbiEoEBAc8AyEMTUFRQI/QA9ACBAQHPAMlYzMkBzMk=","args":[{"name":"owner","type":{"kind":"simple","type":"address","optional":false}},{"name":"content","type":{"kind":"simple","type":"cell","optional":true}},{"name":"staking_pool","type":{"kind":"simple","type":"address","optional":true}}],"deployment":{"kind":"system-cell","system":"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"}},"compiler":{"name":"tact","version":"0.9.2"}} \ No newline at end of file diff --git a/sources/output/jetton_TONB.ts b/sources/output/jetton_TONB.ts index ec15662..3ab0b8a 100644 --- a/sources/output/jetton_TONB.ts +++ b/sources/output/jetton_TONB.ts @@ -1519,8 +1519,8 @@ function dictValueParserWithdraw(): DictionaryValue { } async function TONB_init(owner: Address, content: Cell | null, staking_pool: Address | null) { const __init = 'te6ccgEBBwEAqwABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4A0AAdQBN2m1tcFMAf21tIwzIzAwQSxBKEEkQOBA3EDYQNYGANJQy/oCUAnPFidus5Z/AcoAF8yWN3BQB8oA4hXKAFADIG6VMHABywGSzxbiASBulTBwAcsBks8W4gHIgQEBzwBYIG6VMHABywGSzxbiEoEBAc8AyEMTUFRQI/QA9ACBAQHPAMlYzMkBzMk='; - const __code = 'te6ccgECRwEADr0AART/APSkE/S88sgLAQIBYgIDAgLKDA0CASAEBQHpvijvaiaGoA/DF9AH0gAIDpAADI6kk2gPFpAH0gEOuFgOGASIDJGLbxAP0gEOuFgOGASIDJGLbxAOoA6ECAgOuAfSAQ64WA4YBIgMkYtvEAwICA64BqGGh6AnoCQICA64AqkBmINgg1iDUINIg0CDOsNg5tnkBgIBSAcIAAgQq18LAgFYCQoAlbd6ME4LnYerpZXPY9CdhzrJUKNs0E4TusalpWyPlmRadeW/vixHME4YTIikya+3yRcvbDO06rpAsE4IGc6tPOK/OkoWA6wtxMj2UAHtrbz2omhqAPwxfQB9IACA6QAAyOpJNoDxaQB9IBDrhYDhgEiAyRi28QD9IBDrhYDhgEiAyRi28QDqAOhAgIDrgH0gEOuFgOGASIDJGLbxAMCAgOuAahhoegJ6AkCAgOuAKpAZiDYINYg1CDSINAgzrDYOKoXtnkArAemvFvaiaGoA/DF9AH0gAIDpAADI6kk2gPFpAH0gEOuFgOGASIDJGLbxAP0gEOuFgOGASIDJGLbxAOoA6ECAgOuAfSAQ64WA4YBIgMkYtvEAwICA64BqGGh6AnoCQICA64AqkBmINgg1iDUINIg0CDOsNg5tnkALARL4KNs8bIIwQzA4BKnXtou37cCHXScIflTAg1wsf3gLQ0wMBcbDAAZF/kXDiAfpAIlBmbwT4YQKRW+AgghAh7rYHuuMCIMAAItdJwSGw4wIgghBgWRUQuuMCIIIQB2TRSLqDg8QEQICdSAhAeQw7UTQ1AH4YvoA+kABAdIAAZHUkm0B4tIA+kAh1wsBwwCRAZIxbeIB+kAh1wsBwwCRAZIxbeIB1AHQgQEB1wD6QCHXCwHDAJEBkjFt4gGBAQHXANQw0PQE9ASBAQHXAFUgMxBsEGsQahBpEGgQZ1hsHAwSAeJb7UTQ1AH4YvoA+kABAdIAAZHUkm0B4tIA+kAh1wsBwwCRAZIxbeIB+kAh1wsBwwCRAZIxbeIB1AHQgQEB1wD6QCHXCwHDAJEBkjFt4gGBAQHXANQw0PQE9ASBAQHXAFUgMxBsEGsQahBpEGgQZ1hsHDcB5DDtRNDUAfhi+gD6QAEB0gABkdSSbQHi0gD6QCHXCwHDAJEBkjFt4gH6QCHXCwHDAJEBkjFt4gHUAdCBAQHXAPpAIdcLAcMAkQGSMW3iAYEBAdcA1DDQ9AT0BIEBAdcAVSAzEGwQaxBqEGkQaBBnWGwcDBgD/o7yMO1E0NQB+GL6APpAAQHSAAGR1JJtAeLSAPpAIdcLAcMAkQGSMW3iAfpAIdcLAcMAkQGSMW3iAdQB0IEBAdcA+kAh1wsBwwCRAZIxbeIBgQEB1wDUMND0BPQEgQEB1wBVIDMQbBBrEGoQaRBoEGdYbBwM4CCCEAwIep664wIcHR4DltMfAYIQIe62B7ry4IH6AAExELwQqxCaEIkQeBBnEFYQRRA0QTD4QW8kMDKBfm6CCJiWgCSgggkxLQCgggvf0kCgE74S8vRm2zzbPBMUNwQ8UeGgVbHbPFzbPPhC+ChUajDwN1zbPHCCCTEtAHAPODk5FQJaJG7c+CdvEIIQHc1lAKGCEBHhowChIIIK+vCAuZEw4FFEoCUgbvLQgBXbPNs8F0QEWNs8IxA2RBUDERADEgEREAHbPCkJpHD4KCHbPCSlEEcGERUGEDUEERYEVQIPO0Q8FgJC2zxwBBA/ggvf0kADcEMTERLbPBCbEIoQeRBoEFdeI1USQEQAIn9wyIIQe80f7wHLH8kQJG1tAnzTHwGCEGBZFRC68uCBgQEB1wABMRC8EKsQmhCJEHgQZxBWEEUQNEEw+EFvJDCBGPAzghAF9eEAvhLy9GbbPBk3BFpVsi7bPFzbPHBwgEBUQRMCERQCAREVARET2zwGERAGFQQREQQDERIDAgEREgE4ORobAEjIVTCCEFlfB7xQBcsfE8s/AfoCAc8WASBulTBwAcsBks8W4skBENs8EIsQelUmRAFi0x8BghAHZNFIuvLggfpAIdcLAcMAkQGSMW3iMRC8EKsQmhCJEHgQZxBWEEUQNEEwNTcB5DDtRNDUAfhi+gD6QAEB0gABkdSSbQHi0gD6QCHXCwHDAJEBkjFt4gH6QCHXCwHDAJEBkjFt4gHUAdCBAQHXAPpAIdcLAcMAkQGSMW3iAYEBAdcA1DDQ9AT0BIEBAdcAVSAzEGwQaxBqEGkQaBBnWGwcDB8C/CCCEHvdl966jvIw7UTQ1AH4YvoA+kABAdIAAZHUkm0B4tIA+kAh1wsBwwCRAZIxbeIB+kAh1wsBwwCRAZIxbeIB1AHQgQEB1wD6QCHXCwHDAJEBkjFt4gGBAQHXANQw0PQE9ASBAQHXAFUgMxBsEGsQahBpEGgQZ1hsHAzgICYnAm7THwGCEAwIep668uCB0gABkdSSbQHiATEQvBCrEJoQiRB4EGcQVhBFEDRBMFWw2zw5EKsQmlUHMTcCASAiIwIBICQlAIUcG1tcAbIzAYFVSBQVoEBAc8AUAPPFgHPFsoAyCJus5p/AcoAEoEBAc8AlTJwWMoA4lggbpUwcAHLAZLPFuLJAczJgAE0AtD0BDBtAYFghAGAEPQPb6Hy4IcBgWCEIgKAEPQXyPQAyUAD8DSAASxtBMjMUCRQNIEBAc8AAc8WAc8WyFggbpUwcAHLAZLPFuLJAczJgAFMA9D0BDBtAYIA6ksBgBD0D2+h8uCHAYIA6ksiAoAQ9BfI9ADJVSAE8DaAE3NMfAYIQe92X3rry4IHTP/oA+kABAfpAIdcLAcMAkQGSMW3iFEMwNBDvEN4QzRC8EKsQmhCJEHgQZxBWEEVVAjAyVbEt2zxRvKH4J28QghAdzWUAoYIQBfXhAKFTDbmOjDBwQO1wbW1t2zxVGOMNKEQpNwL4ggqcg5a6jvIw7UTQ1AH4YvoA+kABAdIAAZHUkm0B4tIA+kAh1wsBwwCRAZIxbeIB+kAh1wsBwwCRAZIxbeIB1AHQgQEB1wD6QCHXCwHDAJEBkjFt4gGBAQHXANQw0PQE9ASBAQHXAFUgMxBsEGsQahBpEGgQZ1hsHAzgIC4vAjj4QW8kECNfA1XA2zwBgRFNAts8UA7HBR3y9FUKODkEaB2hcPgnbxCCEB3NZQChUvBwbW1t2zxw+Cj4KCLbPCVVMG1t2zxUfbpUfLpUfLpTy1YXVhpEPEAqA0bbPHACcIBAWG1t2zwQzRCsEJsQihB5EGgQVxBGEDVEMBLbPCtELAIM2zxswts8ODkCfBSBAQFUIDYgbpUwWfRaMJRBM/QU4oEBAVQTAFRjYCFulVtZ9FowmMgBzwBBM/RC4gGkJSBu8tCAFNs82zxYLUQANH+CCvrwgHDIghDagD79AcsfUAX6AslBQG1tAkzTHwGCCpyDlrry4IH6QAExELwQqxCaEIkQeBBnEFYQRRA0QTDbPDA3AvyCEFopQx66jvIw7UTQ1AH4YvoA+kABAdIAAZHUkm0B4tIA+kAh1wsBwwCRAZIxbeIB+kAh1wsBwwCRAZIxbeIB1AHQgQEB1wD6QCHXCwHDAJEBkjFt4gGBAQHXANQw0PQE9ASBAQHXAFUgMxBsEGsQahBpEGgQZ1hsHAzgwAA0NQQeVbDbPCzbPNs8cHCAQBEQMTg5MgAc+EFvJBAjXwMrxwXy4IQCHNs8QUABERABbW3bPFUKM0QAHMgBggqcg5ZYyx8BzxbJAk7THwGCEFopQx668uCB+kABMRC8EKsQmhCJEHgQZxBWEEUQNEEw2zw2NwFejqf5AYLw97GrYHeUWzc3ChVQV0Z1GAz4ffTLBHyGl0aBKoNmfUy64wKRMOLywIJCBGj4QW8kECNfA1XA2zxc2zwgggCg9xERxwUBERAB8vT4QvgoUpBWEQHwN1zbPHCCCTEtAHAOODk5OgDkyPhCAcxVsFDL+gJQCc8WJ26zln8BygAXzJY3cFAHygDiFcoAUAMgbpUwcAHLAZLPFuIBIG6VMHABywGSzxbiAciBAQHPAFggbpUwcAHLAZLPFuISgQEBzwDIQxNQVFAj9AD0AIEBAc8AyVjMyQHMye1UAA74QvgoWPA1AEpwWchwAcsBcwHLAXABywASzMzJ+QDIcgHLAXABywASygfL/8nQBD7bPCMQNkQVED9B8Ns8KAikcCD4KPgoIts8JqVVBhEQO0Q8PQAyyAGCELP89MFYyx8BIG6VMHABywGSzxbiyQII2zzbPD4/AkjbPHAEAxEQA4IL39JAA3BDExESAds8EKsQmhCJEHgQZxBGVQNARAAEyMkAAtABDMhVcNs8yUEAnIIQF41FGVAJyx8Xyz9QBfoCUAPPFgEgbpUwcAHLAZLPFuIB+gIBzxbIIm6zmn8BygASgQEBzwCVMnBYygDiWCBulTBwAcsBks8W4skBzAHg7UTQ1AH4YvoA+kABAdIAAZHUkm0B4tIA+kAh1wsBwwCRAZIxbeIB+kAh1wsBwwCRAZIxbeIB1AHQgQEB1wD6QCHXCwHDAJEBkjFt4gGBAQHXANQw0PQE9ASBAQHXAFUgMxBsEGsQahBpEGgQZ1hsHEMCiHCTUwG5jrd/JIEBASNZ9AxvoZIwbd8gbvLQgIEBAVRVAFJQQTP0DG+hlAHXADCSW23iIG7y0IBwbW1t2zyk6F8EbW1wREUB9shxAcoBUAcBygBwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY5MfwHKAMhwAcoAcAHKACRus51/AcoABCBu8tCAUATMljQDcAHKAOIkbrOdfwHKAAQgbvLQgFAEzJY0A3ABygDicAHKAAJ/AcoAAslYzJczMwFwAcoA4iFus0YA6Mj4QgHMVbBQy/oCUAnPFidus5Z/AcoAF8yWN3BQB8oA4hXKAFADIG6VMHABywGSzxbiASBulTBwAcsBks8W4gHIgQEBzwBYIG6VMHABywGSzxbiEoEBAc8AyEMTUFRQI/QA9ACBAQHPAMlYzMkBzMntVNsxADCcfwHKAAEgbvLQgAHMlTFwAcoA4skB+wA='; - const __system = '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'; + const __code = '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'; + const __system = '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'; let systemCell = Cell.fromBase64(__system); let builder = new TupleBuilder(); builder.writeCell(systemCell); diff --git a/sources/staking.tact b/sources/staking.tact index 3415e1f..6414a8d 100644 --- a/sources/staking.tact +++ b/sources/staking.tact @@ -38,6 +38,7 @@ trait StakingTrait { withdrawal_requests: WithdrawalRequests; owner: Address; in_the_pool: Int = 0; + requested_withdrawal: Int = 0; fun sendStake() { if(self.staking_pool == null) { @@ -62,12 +63,25 @@ trait StakingTrait { receive("Withdraw completed") { let i: Int = 0; while(i < self.withdrawal_requests.n_requests) { + let addr: Address = self.withdrawal_requests.addresses.get(i)!!; send(SendParameters{ - to: self.withdrawal_requests.addresses.get(i)!!, - value: self.withdrawal_requests.amounts.get(i)!! + to: addr, + value: ton("0.08"), + bounce: false, + body: TokenBurn{ + amount: self.withdrawal_requests.amounts.get(i)!!, + queryId: 0, + responseAddress: myAddress(), + owner: addr + }.toCell() }); i = i + 1; } + let ctx: Context = context(); + let val: Int = ctx.value; + self.in_the_pool = self.in_the_pool - val; + self.requested_withdrawal = self.requested_withdrawal - val; + let profit: Int = self.in_the_pool - self.requested_withdrawal; // todo: send profit to the foundation (owner) self.withdrawal_requests = WithdrawalRequests{ addresses: emptyMap(), diff --git a/sources/tests/__snapshots__/jetton.spec.ts.snap b/sources/tests/__snapshots__/jetton.spec.ts.snap index d940071..8a59ca3 100644 --- a/sources/tests/__snapshots__/jetton.spec.ts.snap +++ b/sources/tests/__snapshots__/jetton.spec.ts.snap @@ -8,14 +8,14 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon { "message": { "body": { - "cell": "x{21EEB60743B9ACA00}", + "cell": "x{21EEB6075174876E800}", "type": "cell", }, "bounce": true, "from": "kQAI-3FJVc_ywSuY4vq0bYrzR7S4Och4y7bTU_i5yLOB3A6P", - "to": "kQDN21ZUuydn_R7jdQECoGikDdJkC5lERbPzQ8-F4wkV3B1S", + "to": "kQDqdXWdE6QCwdIav5vKbWisgRNKQ1foZIJEUAP4WR9CNPfy", "type": "internal", - "value": 1200000000n, + "value": 100200000000n, }, "type": "received", }, @@ -31,8 +31,8 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon "type": "cell", }, "bounce": false, - "from": "kQDN21ZUuydn_R7jdQECoGikDdJkC5lERbPzQ8-F4wkV3B1S", - "to": "kQCD0xDqEk8PMauelTY9tsV1vLLY_ZKxdKkX65ZI2UWtHyp0", + "from": "kQDqdXWdE6QCwdIav5vKbWisgRNKQ1foZIJEUAP4WR9CNPfy", + "to": "kQCFWdZkHt68RZzf5yLYgur4jRtW4Ns8l6N2S1t8g0MDPRv7", "type": "internal", "value": 11365000n, }, @@ -43,15 +43,15 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon "messages": [ { "body": { - "cell": "x{178D4519000000000000000043B9ACA008019BB6ACA9764ECFFA3DC6EA020540D1481BA4C81732888B67E6879F0BC6122BB900023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_} - x{800000000000000000000000000000000000000000000000000000000000000020041E9887509278798D5CF4A9B1EDB62BADE596C7EC958BA548BF5CB246CA2D68FC_}", + "cell": "x{178D451900000000000000005174876E800801D4EAEB3A27480583A4357F3794DAD15902269486AFD0C90488A007F0B23E846900023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_} + x{800000000000000000000000000000000000000000000000000000000000000020042ACEB320F6F5E22CE6FF3916C41757C468DAB706D9E4BD1BB25ADBE41A1819EC_}", "type": "cell", }, "bounce": false, - "from": "kQDN21ZUuydn_R7jdQECoGikDdJkC5lERbPzQ8-F4wkV3B1S", - "to": "kQCW8uN7SGXO3Ev7zU3ufBOBwpfqwb6QByAZqYWUs_cmSweE", + "from": "kQDqdXWdE6QCwdIav5vKbWisgRNKQ1foZIJEUAP4WR9CNPfy", + "to": "kQDx8Kg9QTHxou3cHUjl5yisUuHcdW3SO_r2k2KOX9WImtuB", "type": "internal", - "value": 41723000n, + "value": 41715000n, }, ], "type": "sent", @@ -69,7 +69,7 @@ exports[`jetton should work correctly with the staking 1`] = ` }, "bounce": true, "from": "kQAI-3FJVc_ywSuY4vq0bYrzR7S4Och4y7bTU_i5yLOB3A6P", - "to": "kQABS2GwT2RO_ayCOq1syTehl_0YJs6awEj1KGZidNqtt7wR", + "to": "kQC4vZPVA2qqBA7kJfq6yPGv9VBb7MJOvNfJlDxWkagnBO9K", "type": "internal", "value": 100200000000n, }, @@ -87,8 +87,8 @@ exports[`jetton should work correctly with the staking 1`] = ` "type": "cell", }, "bounce": false, - "from": "kQABS2GwT2RO_ayCOq1syTehl_0YJs6awEj1KGZidNqtt7wR", - "to": "kQDXemLuELhIqpFvUfQjvfbkWV9Xd8h4_e2ejxaVkSDM6zJM", + "from": "kQC4vZPVA2qqBA7kJfq6yPGv9VBb7MJOvNfJlDxWkagnBO9K", + "to": "kQDTmzk2GN2cZRr-uIAU5a489Ziwu2Y4dAhQJQizU27oGL-G", "type": "internal", "value": 11365000n, }, @@ -99,13 +99,13 @@ exports[`jetton should work correctly with the staking 1`] = ` "messages": [ { "body": { - "cell": "x{178D451900000000000000005174876E8008000296C3609EC89DFB5904755AD9926F432FFA304D9D358091EA50CCC4E9B55B6F00023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_} - x{80000000000000000000000000000000000000000000000000000000000000002006BBD3177085C245548B7A8FA11DEFB722CAFABBBE43C7EF6CF478B4AC8906675C_}", + "cell": "x{178D451900000000000000005174876E800801717B27AA06D554081DC84BF57591E35FEAA0B7D9849D79AF932878AD23504E0900023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_} + x{800000000000000000000000000000000000000000000000000000000000000020069CD9C9B0C6ECE328D7F5C400A72D71E7ACC585DB31C3A0428128459A9B7740C4_}", "type": "cell", }, "bounce": false, - "from": "kQABS2GwT2RO_ayCOq1syTehl_0YJs6awEj1KGZidNqtt7wR", - "to": "kQB-9Tm-Ms2IjYzp3kNadOgg6-b1SOP8HvOzjvGbmSmaHo12", + "from": "kQC4vZPVA2qqBA7kJfq6yPGv9VBb7MJOvNfJlDxWkagnBO9K", + "to": "kQC1V2Z4YfN7Y2o-d8DsuDYH2YKYJ2fJpLzmN_yMFf-Efy9L", "type": "internal", "value": 41715000n, }, @@ -120,7 +120,7 @@ exports[`jetton should work correctly with the staking 1`] = ` "type": "cell", }, "bounce": true, - "from": "kQABS2GwT2RO_ayCOq1syTehl_0YJs6awEj1KGZidNqtt7wR", + "from": "kQC4vZPVA2qqBA7kJfq6yPGv9VBb7MJOvNfJlDxWkagnBO9K", "to": "kQB6IAwD4Haze61PlYJmyim_0AB0bs-PNhn8XOUwnkMnEcnp", "type": "internal", "value": 99491421000n, diff --git a/sources/tests/jetton.spec.ts b/sources/tests/jetton.spec.ts index 1a168ac..b9b6756 100644 --- a/sources/tests/jetton.spec.ts +++ b/sources/tests/jetton.spec.ts @@ -5,6 +5,7 @@ import { default_content } from '../utils/config'; import { TONBWallet } from '../output/jetton_TONBWallet'; import { beginCell } from 'ton-core'; import { PseudoStaking } from '../output/jetton_PseudoStaking'; +import { logEvents } from "../utils/helpers"; @@ -18,7 +19,7 @@ describe('jetton', () => { let tracker = system.track(contract.address); // Mint - await contract.send(owner, { value: toNano('1.2') }, { $$type: 'Deposit', amount: toNano('1') }); + await contract.send(owner, { value: toNano('100.2') }, { $$type: 'Deposit', amount: toNano('100') }); let log = await system.run(); let events = tracker.events(); expect(events).toMatchSnapshot(); @@ -26,7 +27,7 @@ describe('jetton', () => { let addr = Address.parse((events[4] as any).messages[0].to); let wallet_contract = system.contract(addr); let wdata = ((await wallet_contract.get(97026, [])) as any).stack.items; - expect(wdata[0].value).toEqual(1000000000n); + expect(wdata[0].value).toEqual(100000000000n); let linker_contract = system.contract(Address.parse((events[3] as any).messages[0].to)); let linker_owner = ((await linker_contract.get('owner', [])) as any).stack.items[0]; @@ -36,10 +37,10 @@ describe('jetton', () => { expect((await contract.getOwner()).toString()).toEqual(owner.address.toString()); // Withdraw - await contract.send(owner, { value: toNano('0.15') }, { $$type: 'Withdraw', amount: toNano('0.3') }); + await contract.send(owner, { value: toNano('0.15') }, { $$type: 'Withdraw', amount: toNano('20') }); log = await system.run(); events = tracker.events(); - expect((events[5] as any).messages[0].value).toBeGreaterThan(toNano('0.29')); + expect((events[5] as any).messages[0].value).toBeGreaterThan(toNano('19')); }); @@ -55,7 +56,7 @@ describe('jetton', () => { let tracker = system.track(contract.address); // Mint - The contract should stake the money await contract.send(owner, { value: toNano('100.2') }, { $$type: 'Deposit', amount: toNano('100') }); - let log = await system.run(); + await system.run(); let events = tracker.events(); // console.log(events) expect(events).toMatchSnapshot(); @@ -63,10 +64,30 @@ describe('jetton', () => { // Try to withdraw await contract.send(owner, { value: toNano('0.15') }, { $$type: 'Withdraw', amount: toNano('50') }); - await system.run(); + let log = await system.run(); events = tracker.events(); - // console.log(events); - expect((events[events.length - 1] as any).messages[0].value).toBeGreaterThan(49000000000n); + // console.log(log) + // console.log((events[7] as any).messages[0]) + let addressBook_rev = {'wallet': (events[6] as any).messages[0].to, + 'staking': (events[7] as any).messages[0].to, 'tonb': (events[0] as any).message.to, 'owner': (events[0] as any).message.from}; + // reverse keys and values + let addressBook = Object.fromEntries(Object.entries(addressBook_rev).map(([key, value]) => [value, key])); + // console.log("wallet:", (events[6] as any).messages[0].to) + // console.log("staking:", (events[7] as any).messages[0].to) + logEvents(events, addressBook); + let found_transaction = false; + for (let i = 0; i < events.length; i++) { + if (events[i].type == 'sent') { + if ((events[i] as any).messages[0].to == addressBook_rev['owner']) { + if ((events[i] as any).messages[0].value>49000000000n) { + found_transaction = true; + } + } + } + } + expect(found_transaction).toBeTruthy(); + + // expect((events[events.length - 1] as any).messages[0].value).toBeGreaterThan(49000000000n); }); it('should correctly work with transfers', async () => { diff --git a/sources/utils/helpers.ts b/sources/utils/helpers.ts index 4101d9d..c99e7d7 100644 --- a/sources/utils/helpers.ts +++ b/sources/utils/helpers.ts @@ -1,7 +1,10 @@ import { Sha256 } from "@aws-crypto/sha256-js"; import { beginCell, Cell, Address } from "ton"; -import { Dictionary } from "ton-core"; +import { BitString, Dictionary } from "ton-core"; import Prando from "prando"; +import { TrackedMessage } from "ton-emulator/dist/events/message"; +import { TrackedBody } from "ton-emulator/dist/events/message"; +import { types } from '../output/types.json'; const ONCHAIN_CONTENT_PREFIX = 0x00; @@ -75,3 +78,91 @@ export function randomAddress(seed: string, workchain?: number) { } return new Address(workchain ?? 0, hash); } + +export function fmtMessage(message: TrackedMessage, addressBook: any) { + let from = (message as any).from; + let to = message.to; + let value_bi: BigInt = (message as any).value; + let value = 0; + if (value_bi) { + // convert to number + value = Number(value_bi) / TON(); + } + let body_t: TrackedBody | undefined | null = (message as any).body; + if (body_t === undefined) { + body_t = null; + } + let body = ""; + if (body_t?.type == 'cell') { + // let c = Cell.fromBoc(Buffer.from(body_t.cell, 'base64'))[0]; + // body_t.cell is like x{} ... + // we need to get everything up to } and after { + let boc = body_t.cell.slice(2, body_t.cell.indexOf('}')).slice(0, 120); + let c = new Cell({bits: new BitString(Buffer.from(boc, 'base64'), 0, boc.length * 8)}); + // let c = new Cell({bits: BitString(boc)}); + let op = c.beginParse().loadUint(32); + let msg_type = 'unknown'; + for (let t of types) { + if (t.header == op) { + msg_type = t.name; + break; + } + } + body = msg_type; + } + if (body.length % 2 == 1) { + body += ' '; + } + while (body.length < 30) { + body = ' ' + body + ' '; + } + if (addressBook[from]) { + from = addressBook[from]; + // add spaces so that length is 11 + while (from.length < 11) { + from += ' '; + } + } else { + // slice first 4 symbols, ..., and last 4 symbols + from = from.slice(0, 4) + '...' + from.slice(-4); + } + if (to && addressBook[to]) { + to = addressBook[to]; + // add spaces so that length is 11 + while (to?.length as number < 11) { + to += ' '; + } + } else { + // slice first 4 symbols, ..., and last 4 symbols + to = to?.slice(0, 4) + '...' + to?.slice(-4); + } + return `${from} --> ${to} ${value.toFixed(3)} ${body}`; +} + +export function fmtEvent(ev: any, addressBook: any) { + if (ev.type == 'received') { + return fmtMessage(ev.message, addressBook); + } + if (ev.type == 'sent-bounced') { + return `Bounced ${fmtMessage(ev.message, addressBook)}`; + } + if (ev.type == 'sent') { + let res = ''; + for (let m of ev.messages) { + res += fmtMessage(m, addressBook) + '\n'; + } + return res.trim(); + } + if (ev.type == 'failed') { + return `Failed ${ev.errorCode}`; + } + return ''; +} + +export function logEvents(events: any[], addressBook: any) { + let res = ''; + for (let ev of events) { + res += fmtEvent(ev, addressBook) + '\n'; + } + console.log(res) +}