From 04a1245e25cf25502c8e23e6ee5d5a03e680290e Mon Sep 17 00:00:00 2001 From: ennucore Date: Sat, 4 Feb 2023 21:10:15 +0100 Subject: [PATCH] Staking --- sources/constants.tact | 3 +- sources/jetton.tact | 1 + sources/jetton_trait.tact | 36 +- sources/output/jetton_TONB.abi | 2 +- sources/output/jetton_TONB.code.boc | Bin 1822 -> 2191 bytes sources/output/jetton_TONB.code.fc | 108 ++++- sources/output/jetton_TONB.code.fif | 215 ++++++++- sources/output/jetton_TONB.code.rev.fif | 561 +++++++++++++++++++++--- sources/output/jetton_TONB.md | 2 +- sources/output/jetton_TONB.pkg | 2 +- sources/output/jetton_TONB.ts | 9 +- sources/staking.tact | 49 +++ 12 files changed, 911 insertions(+), 77 deletions(-) diff --git a/sources/constants.tact b/sources/constants.tact index 52fb76d..1988c81 100644 --- a/sources/constants.tact +++ b/sources/constants.tact @@ -1,6 +1,7 @@ const gas_consumption: Int = ton("0.01"); -const withdraw_gas_consumption: Int = ton("0.01"); +const withdraw_gas_consumption: Int = ton("0.1"); 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.05"); // TON to send to the wallet for the fees +const tonb_floor: Int = ton("0.1"); // Minimum amount of TON to keep on TONB diff --git a/sources/jetton.tact b/sources/jetton.tact index 8f5e64c..39fa58d 100644 --- a/sources/jetton.tact +++ b/sources/jetton.tact @@ -39,6 +39,7 @@ contract TONB with TONBTrait { let ctx: Context = context(); require(ctx.value >= deposit_gas_consumption + msg.amount + linker_credit + wallet_credit, "not enough money for deposit"); self.mint(ctx.sender, msg.amount, ctx.sender); + self.sendStake(); } receive() {} diff --git a/sources/jetton_trait.tact b/sources/jetton_trait.tact index fcb2d64..8acd1ac 100644 --- a/sources/jetton_trait.tact +++ b/sources/jetton_trait.tact @@ -3,10 +3,11 @@ import "@stdlib/ownable"; import "./wallet"; import "./linker"; import "./constants"; +import "./staking"; @interface("org.ton.jetton.master") -trait TONBTrait with Ownable { +trait TONBTrait with Ownable, StakingTrait { // // Storage @@ -19,6 +20,8 @@ trait TONBTrait with Ownable { first_linker: Address?; last_linker: Address?; n_linkers: Int = 0; + staking_pool: Address?; + withdrawal_requests: WithdrawalRequests; // @@ -41,7 +44,36 @@ trait TONBTrait with Ownable { // Update supply self.totalSupply = self.totalSupply - msg.amount; - /* todo: if not enough tokens, withdraw what we have, send some tokens to the owner, add a withdrawal request */ + let available: Int = myBalance() - tonb_floor - withdraw_gas_consumption; + if (available < msg.amount) { + /* if not enough tokens, withdraw what we have, send some tokens to the owner, add a withdrawal request (-withdrawal_gas) */ + let diff: Int = msg.amount - available; + send(SendParameters{ + to: msg.owner, + value: myBalance() - tonb_floor, + bounce: false + }); + let body: Cell = TokenTransferInternal{ + amount: diff, + queryId: 0, + from: myAddress(), + responseAddress: myAddress(), + forwardTonAmount: 0, + forwardPayload: emptySlice(), + setLinker: null, + setLinkerAddress: null + }.toCell(); + let walletAddress: Address = self.get_wallet_address(msg.owner); + send(SendParameters{ + to: walletAddress, + value: 0, + bounce: false, + mode: SendRemainingValue, + body: body + }); + self.requestWithdrawal(msg.owner, diff); + return; + } // Withdraw send(SendParameters{ diff --git a/sources/output/jetton_TONB.abi b/sources/output/jetton_TONB.abi index a525dd7..fd9f660 100644 --- a/sources/output/jetton_TONB.abi +++ b/sources/output/jetton_TONB.abi @@ -1 +1 @@ -{"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":"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":"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":"TokenUpdateContent"}},{"receiver":"internal","message":{"kind":"typed","type":"TokenBurnNotification"}}],"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"},"44816":{"message":"Wallet is blacklisted"},"62972":{"message":"Invalid balance"}}} \ No newline at end of file +{"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":"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":"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":"TokenUpdateContent"}},{"receiver":"internal","message":{"kind":"typed","type":"TokenBurnNotification"}},{"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"},"44816":{"message":"Wallet is blacklisted"},"62972":{"message":"Invalid balance"}}} \ No newline at end of file diff --git a/sources/output/jetton_TONB.code.boc b/sources/output/jetton_TONB.code.boc index 9ef9d539b580751013fd5596bbc0bb4001ab0393..079c20190a91b56fd346dfdea65cae956f017f70 100644 GIT binary patch delta 1265 zcmYL}eN0nV6u|Gj@3p+XzE@s>*8+WoNBJt>we%O(P3s zNG0kF8Dmez9}-s4QHQ%pu^$j9Vu5h*E6g;2F`?; zoDU=IAu#m9zhE09!jFx^zP0=}xB#d4^A|9DXu;Ro+8QhNt(n)%rdVOF+tS(^k?J}> zt?P)7qI$kwAG7(8@0_DCzLC4i#8+{fnVJ#NDfdOgyb-hN+ zypD2}$72UBa0UD%qOwrN@7|72))(2a@Wj|%Ej_9lruq}Qm8TTVvNY=hAr|8G|~=i4g(?GXpo;n z^I_!cv#i5F?61+!yl1a?wrrvKnue+~smxmE>MZHMFj&=Hc>Z{&YrK!bnJXevWJ9#y z^6*JGAQ++Uk#k`Qt{sU;Ck+`eb$YE5&bfmTY35O#C~roMFjMYB&CV>KtI1vktDqag zd4OM0PA&8uT zGqD3+kv}4M%$r1^WVM0(%oVHYfp*}|#J!PkZC~GTstg`4Na}*$02o7X4$vEXaoH#s zJWcS14R*V$H_uzWo8>ezAE|?KC0QQNy>%PL{sS1>C5+0KFm~8692GFxP+_&DsN!xr z<%?ut7b60xX5))9HOH*mU9=z z%X>kxoyJO`mzxvOY|7~tzQxZBO7uV2g->@$OoK$PhymALhd|t#r>59`g)?!%FR5u% zAlPY&@YCxZTEGl)1c>EQ4 zyHYGulNkehf-bPt&Ut1?>ih6_Cne^b*IDZb(M!asJG-R`zS0|yV8Idg$(NO;6kK-A zL5%taj6<~;b#D1{W$H1olZxE7|NjM4i-F0ISbEe|u984V?N^K7gaY@wn_@2+MqIj1 zU2iV#b459B`f8Hpwd7LTCC^CxGB)H{!CPT$z>% delta 867 zcmWmCeP~lx6aeshZeEi2UJ{eEc}dfx^)}Vo54Eu$F?QE1t+6IHR-LvKS}>L=g%<3_ zgo0)I(uknWR<1)~MFR5=VH06kVI?i;2&}DzNK~o|8x)#6GwiwyMUpC9LPJ~$li zxb^Oq_NleWuK|AnNMD4&_7QE|E8a-0&l>p_ zlM05gC}HT44a@`G7wu^UtPkz0cSjr}mY^a`xyAFj;VXYf#pd6Be}CywQ##!@^zDRr%lX4xpd@&&ds8F{@xlXj?Z>xKUl#wDHHK<4RS8e1TySQTgf(QcM5)P_ z^^0C4PUVKfLqyr)Fe8KLNWZn0IYJ=RaJuc#jo2>x+>Z=SwuW@fDD6ol+16o!BST;PZw5Cma-F?9&oasHK!vkWItB9fi{o|kVX7r zQ2$HDyzeLz^p@t;{3Mbi|pm3Lk z+LqcnRCEy*5xfIfLh_zr9`nZC^&H<`j&~2Iu?foDuHHWQr4iJwurJ#XYhe4eJFraH zS*_m$#je(dMw?VfG_wV5EtZq)UoDC8UjIH$%V)?Ou*}MKD#wtC8eBV5QW6yhWFES& zTb2lZV*6%585lJyC?Eva{rA}P#|0g~6ax4~q z8IP%doOyjpz53l5LtHmFHaK`r^(S)oQ@l8IkP|(^X+Oj{+`%gJc5Pw7Nk;XgUdohz zA4!JMzJR57K@gYIFNUZA#X={7De0ExtGPpTMrn%`cJT5YBJ7&p!{+oQMn0?aDCgL5 t6k!3evd*xAfS|g<7$a$?#+7*0_GEn`HRDVf334a{)ObVS-?ytZ`3dvf``iEk diff --git a/sources/output/jetton_TONB.code.fc b/sources/output/jetton_TONB.code.fc index a5365c5..60f6283 100644 --- a/sources/output/jetton_TONB.code.fc +++ b/sources/output/jetton_TONB.code.fc @@ -1,3 +1,9 @@ +slice __tact_str_to_slice(slice s) asm "NOP"; + +int __tact_my_balance() inline { + return pair_first(get_balance()); +} + forall X -> X __tact_not_null(X x) { throw_if(128, null?(x)); return x; } global (int, slice, int, slice) __tact_context; @@ -65,6 +71,42 @@ slice __tact_compute_contract_address(int chain, cell code, cell data) inline { return __tact_create_address(chain, hash); } +(cell, ()) __tact_dict_set_int_int(cell d, int kl, int k, int v, int vl) inline { + if (null?(v)) { + var (r, ok) = idict_delete?(d, kl, k); + return (r, ()); + } else { + return (idict_set_builder(d, kl, k, begin_cell().store_int(v, vl)), ()); + } +} + +int __tact_dict_get_int_int(cell d, int kl, int k, int vl) inline { + var (r, ok) = idict_get?(d, kl, k); + if (ok) { + return r~load_int(vl); + } else { + return null(); + } +} + +(cell, ()) __tact_dict_set_int_slice(cell d, int kl, int k, slice v) inline { + if (null?(v)) { + var (r, ok) = idict_delete?(d, kl, k); + return (r, ()); + } else { + return (idict_set(d, kl, k, v), ()); + } +} + +slice __tact_dict_get_int_slice(cell d, int kl, int k) inline { + var (r, ok) = idict_get?(d, kl, k); + if (ok) { + return r; + } else { + return null(); + } +} + int __tact_address_eq(slice a, slice b) inline { return equal_slice_bits(a, b); } @@ -248,6 +290,9 @@ _ __gen_Context_get_sender((int, slice, int, slice) v) inline { set_data(b.end_cell()); } +;; String "Deposit" +slice __gen_str_228592480() asm "B{b5ee9c7241010101000900000e4465706f7369749721d513} B>boc = (((10000000 + $msg'amount) + 20000000) + 50000000))); ($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'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)), ()); } @@ -451,7 +522,7 @@ _ $__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'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)) = $self; var ($msg'amount) = $msg; var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); - throw_unless(6384, ($ctx'value >= 10000000)); + 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); 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)), ()); } @@ -469,10 +540,30 @@ _ $__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'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() - 100000000) - 100000000); + if (($available < $msg'amount)) { + int $diff = ($msg'amount - $available); + $send((false, $msg'owner, (__tact_my_balance() - 100000000), 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'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'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)), ()); + } $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)), ()); } +((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 { + 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; + 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())); + $i = ($i + 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)), ()); +} + () recv_internal(int msg_value, cell in_msg_cell, slice in_msg) impure { @@ -536,6 +627,19 @@ _ $__gen_get_owner() method_id(83229) { return (); } + ;; Text Receivers + if (op == 0) { + var text_op = slice_hash(in_msg); + + ;; Receive "Withdraw completed" message + if (text_op == 0xf7b1ab6077945b37370a1550574675180cf87df4cb047c869746812a83667d4c) { + var self = __gen_load_TONB(); + self~$__gen_TONB_receive_comment_f7b1ab6077945b37370a1550574675180cf87df4cb047c869746812a83667d4c(); + __gen_store_TONB(self); + return (); + } + } + throw(130); } @@ -549,5 +653,5 @@ _ supported_interfaces() method_id { } _ get_abi_ipfs() { - return "ipfs://QmYVigftHMYXo1zGVnMx2hxo4jEsJqWmjJJq9AaWYe9gfp"; + return "ipfs://QmUMBKY4L4n4GyTq3MSncGQ8X3nLYqomdtcYYcg1dzU2iS"; } \ No newline at end of file diff --git a/sources/output/jetton_TONB.code.fif b/sources/output/jetton_TONB.code.fif index 7c43aba..f1ab8f4 100644 --- a/sources/output/jetton_TONB.code.fif +++ b/sources/output/jetton_TONB.code.fif @@ -1,4 +1,5 @@ PROGRAM{ + DECLPROC __tact_my_balance DECLPROC __tact_not_null DECLPROC __tact_context_get DECLPROC __tact_verify_address @@ -9,6 +10,10 @@ PROGRAM{ DECLPROC __tact_store_address_opt DECLPROC __tact_create_address DECLPROC __tact_compute_contract_address + DECLPROC __tact_dict_set_int_int + DECLPROC __tact_dict_get_int_int + DECLPROC __tact_dict_set_int_slice + DECLPROC __tact_dict_get_int_slice DECLPROC __tact_address_eq DECLPROC __tact_dict_set_code DECLPROC __tact_dict_get_code @@ -38,6 +43,7 @@ PROGRAM{ DECLPROC $emptySlice DECLPROC $contractAddress DECLPROC $send + DECLPROC $stakingDepositMessage DECLPROC $__gen_TONBWallet_init DECLPROC $__gen_TONBWallet_init_child DECLPROC $__gen_Linker_init @@ -53,16 +59,23 @@ PROGRAM{ DECLPROC $__gen_TONB_requireOwner DECLPROC $__gen_TONB_owner 83229 DECLMETHOD $__gen_get_owner + DECLPROC $__gen_TONB_sendStake + DECLPROC $__gen_TONB_requestWithdrawal DECLPROC $__gen_TONB_receive_Deposit DECLPROC $__gen_TONB_receive DECLPROC $__gen_TONB_receive_Withdraw DECLPROC $__gen_TONB_receive_TokenUpdateContent DECLPROC $__gen_TONB_receive_TokenBurnNotification + DECLPROC $__gen_TONB_receive_comment_f7b1ab6077945b37370a1550574675180cf87df4cb047c869746812a83667d4c DECLPROC recv_internal 113617 DECLMETHOD supported_interfaces DECLPROC get_abi_ipfs DECLGLOBVAR __tact_context DECLGLOBVAR __tact_context_sys + __tact_my_balance PROCINLINE:<{ + BALANCE + FIRST + }> __tact_not_null PROC:<{ DUP ISNULL @@ -145,6 +158,58 @@ PROGRAM{ HASHCU __tact_create_address INLINECALLDICT }> + __tact_dict_set_int_int PROCINLINE:<{ + OVER + ISNULL + IF:<{ + 2DROP + -ROT + DICTIDEL + DROP + }>ELSE<{ + NEWC + SWAP + STIX + s1 s3 s3 XCHG3 + DICTISETB + }> + }> + __tact_dict_get_int_int PROCINLINE:<{ + s1 s3 s3 XCHG3 + DICTIGET + NULLSWAPIFNOT + IF:<{ + SWAP + LDIX + DROP + }>ELSE<{ + 2DROP + PUSHNULL + }> + }> + __tact_dict_set_int_slice PROCINLINE:<{ + DUP + ISNULL + IF:<{ + DROP + -ROT + DICTIDEL + DROP + }>ELSE<{ + s1 s3 s3 XCHG3 + DICTISET + }> + }> + __tact_dict_get_int_slice PROCINLINE:<{ + -ROT + DICTIGET + NULLSWAPIFNOT + IF:<{ + }>ELSE<{ + DROP + PUSHNULL + }> + }> __tact_address_eq PROCINLINE:<{ SDEQ }> @@ -562,6 +627,17 @@ PROGRAM{ SWAP SENDRAWMSG }> + $stakingDepositMessage PROC:<{ + TRUE + 0 PUSHINT + NEWC + B{b5ee9c7241010101000900000e4465706f7369749721d513} B>boc $__gen_TONBWallet_init PROC:<{ FALSE PUSHNULL @@ -771,6 +847,39 @@ PROGRAM{ __gen_load_TONB INLINECALLDICT $__gen_TONB_owner CALLDICT }> + $__gen_TONB_sendStake PROC:<{ + s3 PUSH + ISNULL + IFJMP:<{ + }> + __tact_my_balance INLINECALLDICT + 100000000 PUSHINT + SUB + DUP + 50000000 PUSHINT + LESS + IFJMP:<{ + DROP + }> + s4 PUSH + __tact_not_null CALLDICT + $stakingDepositMessage CALLDICT + $send CALLDICT + }> + $__gen_TONB_requestWithdrawal PROC:<{ + s1 s4 XCHG + 257 PUSHINT + s0 s3 s5 XCPUXC + __tact_dict_set_int_slice INLINECALLDICT + 257 PUSHINT + DUP + s3 s4 XCHG + s4 s0 s2 PUXC2 + s6 s6 XCHG2 + __tact_dict_set_int_int INLINECALLDICT + SWAP + INC + }> $__gen_TONB_receive_Deposit PROC:<{ __tact_context_get INLINECALLDICT DROP @@ -789,6 +898,7 @@ PROGRAM{ THROWANYIFNOT TUCK $__gen_TONB_mint CALLDICT + $__gen_TONB_sendStake CALLDICT }> $__gen_TONB_receive PROC:<{ }> @@ -797,7 +907,7 @@ PROGRAM{ DROP 6384 PUSHINT s3 POP - 10000000 PUSHINT + 100000000 PUSHINT GEQ s1 s2 XCHG THROWANYIFNOT @@ -827,6 +937,62 @@ PROGRAM{ $__gen_TONB_requireWallet CALLDICT s10 s12 XCPU SUB + __tact_my_balance INLINECALLDICT + 100000000 PUSHINT + SUB + 100000000 PUSHINT + SUB + s0 s13 PUSH2 + LESS + IFJMP:<{ + s1 s13 XCHG + SUB + FALSE + __tact_my_balance INLINECALLDICT + 100000000 PUSHINT + SUB + s13 s(-1) PUXC + 0 PUSHINT + PUSHNULL + PUSHNULL + PUSHNULL + $send CALLDICT + 0 PUSHINT + MYADDR + MYADDR + s2 PUSH + $emptySlice CALLDICT + s5 PUSH + 4 -ROLL + PUSHNULL + PUSHNULL + __gen_writecell_TokenTransferInternal INLINECALLDICT + s13 s10 s9 PUSH3 + s11 s10 s9 PUSH3 + s11 s10 s9 PUSH3 + s11 PUSH + 21 s() PUSH + 23 s() PUSH + $__gen_TONB_get_wallet_address CALLDICT + FALSE + s0 s2 XCHG + 0 PUSHINT + 64 PUSHINT + ROT + PUSHNULL + PUSHNULL + $send CALLDICT + s9 s11 XCHG + s8 s10 XCHG + s7 s9 XCHG + s6 s8 XCHG + s5 s7 XCHG + s4 s6 XCHG + s3 s5 XCHG + s4 s3 s0 XCHG3 + $__gen_TONB_requestWithdrawal CALLDICT + }> + DROP FALSE s0 s12 s13 XCHG3 0 PUSHINT @@ -837,7 +1003,35 @@ PROGRAM{ s9 s10 XCHG 2 8 BLKSWAP }> + $__gen_TONB_receive_comment_f7b1ab6077945b37370a1550574675180cf87df4cb047c869746812a83667d4c PROC:<{ + 0 PUSHINT + WHILE:<{ + s0 s1 PUSH2 + LESS + }>DO<{ + TRUE + s4 PUSH + 257 PUSHINT + s3 PUSH + __tact_dict_get_int_slice INLINECALLDICT + __tact_not_null CALLDICT + 257 PUSHINT + s5 s(-1) s(-1) PUXCPU + s5 s(-1) PUXC + __tact_dict_get_int_int INLINECALLDICT + __tact_not_null CALLDICT + 0 PUSHINT + PUSHNULL + PUSHNULL + PUSHNULL + $send CALLDICT + INC + }> + DROP + }> recv_internal PROC:<{ + c2 SAVE + SAMEALTSAVE 0 PUSHINT OVER SBITS @@ -944,9 +1138,11 @@ PROGRAM{ $__gen_TONB_receive_TokenUpdateContent CALLDICT __gen_store_TONB INLINECALLDICT }> + DUP 2078119902 PUSHINT EQUAL IFJMP:<{ + DROP __gen_load_TONB INLINECALLDICT s0 s11 XCHG __gen_read_TokenBurnNotification INLINECALLDICT @@ -965,7 +1161,20 @@ PROGRAM{ $__gen_TONB_receive_TokenBurnNotification CALLDICT __gen_store_TONB INLINECALLDICT }> - DROP + 0 EQINT + IF:<{ + HASHSU + 112035188329905946142547757571014323481817249017271886940372980664113557830988 PUSHINT + EQUAL + IFJMP:<{ + __gen_load_TONB INLINECALLDICT + $__gen_TONB_receive_comment_f7b1ab6077945b37370a1550574675180cf87df4cb047c869746812a83667d4c CALLDICT + __gen_store_TONB INLINECALLDICT + RETALT + }> + }>ELSE<{ + DROP + }> 130 THROW }> supported_interfaces PROC:<{ @@ -975,6 +1184,6 @@ PROGRAM{ 86142586315491086060343270784266291122 PUSHINT }> get_abi_ipfs PROC:<{ - x{697066733a2f2f516d595669676674484d59586f317a47566e4d783268786f346a45734a71576d6a4a4a7139416157596539676670} PUSHSLICE + x{697066733a2f2f516d554d424b59344c346e3447795471334d536e6347513858336e4c59716f6d6474635959636731647a55326953} PUSHSLICE }> }END>c diff --git a/sources/output/jetton_TONB.code.rev.fif b/sources/output/jetton_TONB.code.rev.fif index 74b0844..67bcc8f 100644 --- a/sources/output/jetton_TONB.code.rev.fif +++ b/sources/output/jetton_TONB.code.rev.fif @@ -1,6 +1,8 @@ SETCP0 (:methods recv_internal: + c2 SAVE + SAMEALTSAVE 0 PUSHINT s1 PUSH SBITS @@ -145,7 +147,7 @@ SETCP0 s4 s5 XCHG s3 s4 XCHG s1 s3 s0 XCHG3 - 52 CALLDICT + 60 CALLDICT <{ NEWC 2 GETGLOBVAR @@ -328,7 +330,7 @@ SETCP0 }> CALLREF 1 11 BLKDROP2 }> CALLREF - 53 CALLDICT + 61 CALLDICT <{ NEWC 2 GETGLOBVAR @@ -529,7 +531,7 @@ SETCP0 s4 s5 XCHG s3 s4 XCHG s1 s3 s0 XCHG3 - 54 CALLDICT + 62 CALLDICT <{ NEWC 2 GETGLOBVAR @@ -737,7 +739,7 @@ SETCP0 s4 s5 XCHG s3 s4 XCHG s1 s3 s0 XCHG3 - 55 CALLDICT + 63 CALLDICT <{ NEWC 2 GETGLOBVAR @@ -828,9 +830,11 @@ SETCP0 }> CALLREF }> PUSHCONT IFJMP + s0 PUSH 2078119902 PUSHINT EQUAL <{ + s0 POP <{ c4 PUSH CTOS @@ -954,7 +958,7 @@ SETCP0 s5 s6 XCHG s4 s5 XCHG 1 3 BLKSWAP - 56 CALLDICT + 64 CALLDICT <{ NEWC 2 GETGLOBVAR @@ -1045,28 +1049,214 @@ SETCP0 }> CALLREF }> PUSHCONT IFJMP - s0 POP + 0 EQINT + <{ + HASHSU + 112035188329905946142547757571014323481817249017271886940372980664113557830988 PUSHINT + EQUAL + <{ + <{ + c4 PUSH + CTOS + LDREF + s0 s1 XCHG + 2 SETGLOBVAR + <{ + LDGRAMS + LDMSGADDR + s0 s1 XCHG + s0 s1 XCHG + 1 LDI + s0 s1 XCHG + <{ + LDREF + }> PUSHCONT + <{ + PUSHNULL + s0 s1 XCHG + }> PUSHCONT + IFELSE + 1 LDI + LDMSGADDR + s1 PUSH + 2 PLDU + 0 NEQINT + <{ + s0 s1 XCHG + }> PUSHCONT + <{ + s1 POP + PUSHNULL + }> PUSHCONT + IFELSE + s0 s1 XCHG + LDMSGADDR + s1 PUSH + 2 PLDU + 0 NEQINT + <{ + s0 s1 XCHG + }> PUSHCONT + <{ + s1 POP + PUSHNULL + }> PUSHCONT + IFELSE + s0 s1 XCHG + LDREF + s0 s1 XCHG + CTOS + 257 PUSHINT + LDI + LDMSGADDR + s1 PUSH + 2 PLDU + 0 NEQINT + <{ + s0 s1 XCHG + }> PUSHCONT + <{ + s1 POP + PUSHNULL + }> PUSHCONT + IFELSE + s0 s1 XCHG + <{ + LDDICT + LDDICT + 257 PUSHINT + LDI + 3 1 BLKSWAP + }> CALLREF + s3 POP + s5 s11 XCHG + s5 s10 XCHG + s5 s9 XCHG + s5 s8 XCHG + s5 s7 XCHG + s5 s6 XCHG + ROT + }> CALLREF + 1 11 BLKDROP2 + }> CALLREF + 65 CALLDICT + <{ + NEWC + 2 GETGLOBVAR + s0 s1 XCHG + STREF + 11 1 BLKSWAP + <{ + s11 s10 XCHG2 + STGRAMS + s0 s8 XCHG2 + STSLICER + s6 PUSH + ISNULL + NOT + <{ + -1 PUSHINT + s0 s1 XCHG + 1 STI + s1 s6 XCHG + STREF + }> PUSHCONT + <{ + s6 POP + 0 PUSHINT + s0 s6 XCHG2 + 1 STI + }> PUSHCONT + IFELSE + s1 s4 XCHG + 1 STI + ROT + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + s0 s1 XCHG + 2 STU + }> PUSHCONT + <{ + STSLICER + }> PUSHCONT + IFELSE + s0 s1 XCHG + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + s0 s1 XCHG + 2 STU + }> PUSHCONT + <{ + STSLICER + }> PUSHCONT + IFELSE + s0 s1 XCHG + NEWC + 257 PUSHINT + STIX + ROT + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + s0 s1 XCHG + 2 STU + }> PUSHCONT + <{ + STSLICER + }> PUSHCONT + IFELSE + s4 s3 XCHG2 + <{ + s2 s3 XCHG2 + STDICT + STDICT + 257 PUSHINT + STIX + }> CALLREF + ENDC + s0 s1 XCHG + STREF + }> CALLREF + ENDC + c4 POP + }> CALLREF + RETALT + }> PUSHCONT + IFJMP + }> PUSHCONT + <{ + s0 POP + }> PUSHCONT + IFELSE 130 THROW - 1: + 2: s0 PUSH ISNULL 128 THROWIF - 32: + 37: - 35: + 40: NEWC ENDC - 36: + 41: CTOS - 37: - 35 CALLDICT - 36 CALLDICT + 42: + 40 CALLDICT + 41 CALLDICT - 38: + 43: 0 PUSHINT ROTREV NEWC @@ -1097,7 +1287,7 @@ SETCP0 ENDC CTOS - 39: + 44: NEWC 1 PUSHINT s0 s1 XCHG @@ -1141,7 +1331,7 @@ SETCP0 s0 s1 XCHG 1 STI s0 s4 XCHG - 1 CALLDICT + 2 CALLDICT s0 s4 XCHG2 STREF }> PUSHCONT @@ -1161,7 +1351,7 @@ SETCP0 s0 s1 XCHG 1 STI s0 s4 XCHG - 1 CALLDICT + 2 CALLDICT s0 s4 XCHG2 STREF }> PUSHCONT @@ -1202,7 +1392,7 @@ SETCP0 s0 s1 XCHG 1 STI s0 s1 XCHG - 1 CALLDICT + 2 CALLDICT s0 s1 XCHG STREF }> IFREFELSEREF @@ -1214,7 +1404,18 @@ SETCP0 s0 s1 XCHG 1 STI - 40: + 45: + -1 PUSHINT + 0 PUSHINT + NEWC + PUSHSLICE + STSLICER + ENDC + s2 s4 XCHG + PUSHNULL + PUSHNULL + + 46: 0 PUSHINT PUSHNULL PUSHNULL @@ -1272,7 +1473,7 @@ SETCP0 }> CALLREF ENDC - 41: + 47: s0 s2 XCHG CTOS LDDICT @@ -1295,9 +1496,9 @@ SETCP0 STDICT ENDC s0 s0 s3 XCHG3 - 40 CALLDICT + 46 CALLDICT - 42: + 48: PUSHNULL s0 s4 XCHG NEWC @@ -1331,7 +1532,7 @@ SETCP0 }> CALLREF ENDC - 43: + 49: s0 s3 XCHG CTOS LDDICT @@ -1355,39 +1556,39 @@ SETCP0 ENDC 3 1 BLKSWAP s0 s4 XCHG - 42 CALLDICT + 48 CALLDICT - 44: + 50: 2 GETGLOBVAR MYADDR ROT - 41 CALLDICT + 47 CALLDICT - 45: - 44 CALLDICT + 51: + 50 CALLDICT 11 2 BLKDROP2 - 38 CALLDICT + 43 CALLDICT - 46: + 52: MYADDR - 44 CALLDICT + 50 CALLDICT 7 2 BLKDROP2 s0 POP s3 s3 s0 XCHG3 - 47: + 53: s13 s1 XCPU ADD 11 2 BLKSWAP - 44 CALLDICT + 50 CALLDICT 2DUP - 38 CALLDICT + 43 CALLDICT 2 GETGLOBVAR MYADDR 9 2 -2 PU2XC - 43 CALLDICT + 49 CALLDICT 2DUP - 38 CALLDICT + 43 CALLDICT 0 PUSHINT 20000000 PUSHINT 0 PUSHINT @@ -1420,14 +1621,14 @@ SETCP0 s4 s1 s5 XCHG3 s3 s15 XCHG s1 s15 s0 XCHG3 - 39 CALLDICT + 44 CALLDICT s8 PUSH s0 s8 XCHG INC 0 PUSHINT MYADDR s1 PUSH - 37 CALLDICT + 42 CALLDICT s4 PUSH DEC s4 s7 XCHG @@ -1516,7 +1717,7 @@ SETCP0 0 PUSHINT s3 s1 s3 XCHG3 s0 s17 XCHG - 39 CALLDICT + 44 CALLDICT s8 s10 XCHG s7 s9 XCHG s6 s8 XCHG @@ -1525,7 +1726,7 @@ SETCP0 s0 s3 s5 XCHG3 s1 s4 XCHG - 48: + 54: s10 s13 XCHG s9 s12 XCHG s8 s11 XCHG @@ -1536,9 +1737,9 @@ SETCP0 s3 s12 XCHG s11 s13 s12 XCHG3 s11 PUSH - 44 CALLDICT + 50 CALLDICT 2DUP - 38 CALLDICT + 43 CALLDICT 0 PUSHINT 0 PUSHINT 64 PUSHINT @@ -1588,28 +1789,28 @@ SETCP0 s0 s4 XCHG s3 s15 XCHG s15 s2 XCHG2 - 39 CALLDICT + 44 CALLDICT s7 s10 XCHG 3 7 BLKSWAP - 49: + 55: 1 GETGLOBVAR 4 UNTUPLE s2 s3 XCHG 3 BLKDROP 12 1 BLKSWAP - 44 CALLDICT + 50 CALLDICT s0 s1 XCHG 4429 PUSHINT s0 s2 XCHG - 38 CALLDICT + 43 CALLDICT s0 s13 XCHG2 SDEQ s1 s12 XCHG THROWANYIFNOT 1 10 BLKSWAP - 50: + 56: 1 GETGLOBVAR 4 UNTUPLE s2 s3 XCHG @@ -1618,11 +1819,72 @@ SETCP0 SDEQ 132 THROWIFNOT - 51: + 57: s9 s10 XCHG 10 BLKDROP - 52: + 58: + s3 PUSH + ISNULL + IFRET + BALANCE + 0 INDEX + 100000000 PUSHINT + SUB + s0 PUSH + 50000000 PUSHINT + LESS + <{ + s0 POP + }> PUSHCONT + IFJMP + s4 PUSH + 2 CALLDICT + 45 CALLDICT + 44 CALLDICT + + 59: + s1 s4 XCHG + 257 PUSHINT + 0 3 5 XCPUXC + s0 PUSH + ISNULL + <{ + s0 POP + ROTREV + DICTIDEL + s0 POP + }> PUSHCONT + <{ + s1 s3 s3 XCHG3 + DICTISET + }> PUSHCONT + IFELSE + 257 PUSHINT + s0 PUSH + s3 s4 XCHG + 4 0 2 PUXC2 + s6 s6 XCHG2 + s1 PUSH + ISNULL + <{ + 2DROP + ROTREV + DICTIDEL + s0 POP + }> PUSHCONT + <{ + NEWC + s0 s1 XCHG + STIX + s1 s3 s3 XCHG3 + DICTISETB + }> PUSHCONT + IFELSE + s0 s1 XCHG + INC + + 60: 1 GETGLOBVAR 4 UNTUPLE s0 POP @@ -1640,32 +1902,33 @@ SETCP0 s1 s2 XCHG THROWANYIFNOT TUCK - 47 CALLDICT + 53 CALLDICT + 58 CALLDICT - 53: + 61: - 54: + 62: 1 GETGLOBVAR 4 UNTUPLE s0 POP 6384 PUSHINT s3 POP - 10000000 PUSHINT + 100000000 PUSHINT GEQ s1 s2 XCHG THROWANYIFNOT TUCK - 48 CALLDICT + 54 CALLDICT - 55: + 63: 11 1 BLKSWAP - 50 CALLDICT + 56 CALLDICT s8 POP s9 s10 XCHG s8 s9 XCHG 1 7 BLKSWAP - 56: + 64: s0 POP s2 POP s10 s12 XCHG @@ -1677,19 +1940,191 @@ SETCP0 s3 s11 XCHG s12 s11 s12 XCHG3 s11 PUSH - 49 CALLDICT + 55 CALLDICT s10 s12 XCPU SUB + BALANCE + 0 INDEX + 100000000 PUSHINT + SUB + 100000000 PUSHINT + SUB + s0 s13 PUSH2 + LESS + <{ + s1 s13 XCHG + SUB + 0 PUSHINT + BALANCE + 0 INDEX + 100000000 PUSHINT + SUB + s13 s-1 PUXC + 0 PUSHINT + PUSHNULL + PUSHNULL + PUSHNULL + 44 CALLDICT + 0 PUSHINT + MYADDR + MYADDR + s2 PUSH + 42 CALLDICT + s5 PUSH + 4 1 BLKSWAP + PUSHNULL + PUSHNULL + <{ + NEWC + 8 1 BLKSWAP + <{ + 395134233 PUSHINT + s0 s9 XCHG2 + 32 STU + s1 s7 XCHG + 64 STU + s0 s5 XCHG2 + STGRAMS + s0 s3 XCHG2 + STSLICER + s0 s1 XCHG + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + s0 s1 XCHG + 2 STU + }> PUSHCONT + <{ + STSLICER + }> PUSHCONT + IFELSE + s0 s1 XCHG + STGRAMS + s0 s1 XCHG + STSLICER + NEWC + s2 PUSH + ISNULL + NOT + <{ + -1 PUSHINT + s0 s1 XCHG + 1 STI + s1 s2 XCHG + 257 PUSHINT + STIX + }> PUSHCONT + <{ + s2 POP + 0 PUSHINT + ROT + 1 STI + }> PUSHCONT + IFELSE + ROT + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + s0 s1 XCHG + 2 STU + }> PUSHCONT + <{ + STSLICER + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + STREF + }> CALLREF + ENDC + }> CALLREF + 13 10 9 PUSH3 + 11 10 9 PUSH3 + 11 10 9 PUSH3 + s11 PUSH + s21 PUSH + s23 PUSH + 51 CALLDICT + 0 PUSHINT + s0 s2 XCHG + 0 PUSHINT + 64 PUSHINT + ROT + PUSHNULL + PUSHNULL + 44 CALLDICT + s9 s11 XCHG + s8 s10 XCHG + s7 s9 XCHG + s6 s8 XCHG + s5 s7 XCHG + s4 s6 XCHG + s3 s5 XCHG + s4 s3 s0 XCHG3 + 59 CALLDICT + }> IFJMPREF + s0 POP 0 PUSHINT s0 s12 s13 XCHG3 0 PUSHINT PUSHNULL PUSHNULL PUSHNULL - 39 CALLDICT + 44 CALLDICT s9 s10 XCHG 2 8 BLKSWAP + 65: + 0 PUSHINT + <{ + s0 s1 PUSH2 + LESS + }> PUSHCONT + <{ + -1 PUSHINT + s4 PUSH + 257 PUSHINT + s3 PUSH + ROTREV + DICTIGET + NULLSWAPIFNOT + <{ + s0 POP + PUSHNULL + }> PUSHCONT + IFNOT + 2 CALLDICT + 257 PUSHINT + 5 -1 -1 PUXCPU + s5 s-1 PUXC + s1 s3 s3 XCHG3 + DICTIGET + NULLSWAPIFNOT + <{ + s0 s1 XCHG + LDI + s0 POP + }> PUSHCONT + <{ + 2DROP + PUSHNULL + }> PUSHCONT + IFELSE + 2 CALLDICT + 0 PUSHINT + PUSHNULL + PUSHNULL + PUSHNULL + 44 CALLDICT + INC + }> PUSHCONT + WHILE + s0 POP + owner: <{ c4 PUSH @@ -1775,7 +2210,7 @@ SETCP0 }> CALLREF 1 11 BLKDROP2 }> CALLREF - 51 CALLDICT + 57 CALLDICT get_wallet_address: <{ @@ -1863,7 +2298,7 @@ SETCP0 1 11 BLKDROP2 }> CALLREF 1 11 BLKSWAP - 45 CALLDICT + 51 CALLDICT get_jetton_data: <{ @@ -1950,8 +2385,8 @@ SETCP0 }> CALLREF 1 11 BLKDROP2 }> CALLREF - 46 CALLDICT - 32 CALLDICT + 52 CALLDICT + 37 CALLDICT 113617: 123515602279859691144772641439386770278 PUSHINT diff --git a/sources/output/jetton_TONB.md b/sources/output/jetton_TONB.md index 4254417..0239704 100644 --- a/sources/output/jetton_TONB.md +++ b/sources/output/jetton_TONB.md @@ -1,6 +1,6 @@ # TACT Compilation Report Contract: TONB -BOC Size: 1822 bytes +BOC Size: 2191 bytes # Types Total Types: 27 diff --git a/sources/output/jetton_TONB.pkg b/sources/output/jetton_TONB.pkg index e6ead64..4056168 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\":\"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\":\"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\":\"TokenUpdateContent\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenBurnNotification\"}}],\"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\"},\"44816\":{\"message\":\"Wallet is blacklisted\"},\"62972\":{\"message\":\"Invalid balance\"}}}","init":{"code":"te6ccgEBCAEAnwABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4A0AAdQBMWm1tcG1tJH8LyMwLB1ClUJNQCAZEFNs8yYGAaRQuvoCUAjPFiZus5Z/AcoAFsyWNnBQBsoA4hTKAFggbpUwcAHLAZLPFuIBIG6VMHABywGSzxbiAciBAQHPAFggbpUwcAHLAZLPFuJQQ9s8yQHMBwAWUCP0APQAgQEBzwA=","args":[{"name":"owner","type":{"kind":"simple","type":"address","optional":false}},{"name":"content","type":{"kind":"simple","type":"cell","optional":true}}],"deployment":{"kind":"system-cell","system":"te6cckECogEADlIAAQHAAQIBIGkCAgFYHAMBBbVJcAQBFP8A9KQT9LzyyAsFAgFiCwYCASAKBwIBIAkIAQ25W92zzwEoGgBNu70YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYAQ2+KO7Z54CMGgICyxQMAgFIDg0AM9fCC3ki3AiKaZEuOC+Xo/gLhAIBKBtrb4CEAgEgEg8CASAREAAfDH4QW8kW4ERTTIkxwXy9IAAJBAjXwOACASBQEwAHBNfA4AIBzhVZBJUcCHXScIflTAg1wsf3gLQ0wMBcbDAAZF/kXDiAfpAIlBmbwT4YQKRW+AgghCz/PTBuo+PMNs8BNs8MRA0QTDwE9s84IIQXR2iu7qAaGRgWAyqPjts8BNs8MRA0QTDwFNs84DDywIIaFxgAHtMfAYIQXR2iu7ry4IHUAQEYyPhCAcxVMNs8ye1USgA20x8BghCz/PTBuvLggfpAIdcLAcMAkQGSMW3iARbtRNDUAfhi2zxsFBsARIEBAdcA+kABAfpAAQHUAdD6QCHXCwHDAJEBkjFt4jEUQzABBbUCcB0BFP8A9KQT9LzyyAseAgFiJh8CASAlIAIBSCIhAJW3ejBOC52Hq6WVz2PQnYc6yVCjbNBOE7rGpaVsj5ZkWnXlv74sRzBOGEyIpMmvt8kXL2wztOq6QLBOCBnOrTzivzpKFgOsLcTI9lACAVgkIwERrxbtnngXeBBAZgERrbztniqFeBbAZgENviju2eeBnGYCAspYJwIBIDsoAgEgKikAS9mBkIVi8cCD2INggtiCYIHaZeFfgYqNZQuCBmuDa2tvgTiE0qi8AgEgMisCASAvLAIBIC4tABcVaDwMjgQmhCJVQaAAKz4QW8kMIEY8DOCCJiWgL4S8vRm8DCACASAxMAABIABJPhBbyQwMoF+boIImJaAJKCCCTEtAKCCCvrwgKATvhLy9GbwL4AIBIDYzAgEgNTQACQQml8KgAB0+EFvJBAjXwMqxwXy4ISACASA4NwA5PhBbyQQI18DVbDwLAGBEU0C8CZQDccFHPL0VQmABfQQrRCcEIsQfRBsEFsQTRA8S9wr8Cxc8CZwcIBAVEETAhEUAgEREgERE9s8BhEQBhUEEREEED9Q8vAnEHpVJoDkBDMhVMNs8yToAQIIQWV8HvFAFyx8Tyz8B+gIBzxYBIG6VMHABywGSzxbiAgEgTTwCASBGPQIBIEM+AgEgQj8CyxR0aBVofAsXPAm+EL4KFRpMPArXPAmcIIJMS0AcA7bPCMQNkQVED9B8PAnKAikcPgoIfAlJKUQRwYRFAYQNQQRFQRVAg7bPHAEED6CCvrwgANwQxMREfAnEIoQeRBoEFcQRkA1FIECCAQrIAds8yUEALIIQs/z0wVjLHwEgbpUwcAHLAZLPFuIAEz4KPAsbHIwQzCACASBFRAANPAsbLLwJoAAPPhC+ChY8CmACASBLRwIBIElIAFMA9D0BDBtAYIA6ksBgBD0D2+h8uCHAYIA6ksiAoAQ9BfI9ADJVSAE8CqABExtBMjMUCTbPMmBKADxQNIEBAc8AAc8WAc8WyFggbpUwcAHLAZLPFuLJAcwCASCKTABNALQ9AQwbQGBYIQBgBD0D2+h8uCHAYFghCICgBD0F8j0AMlAA/AogAgEgVU4CASBSTwIBIJBQAvcyHEBygFQBwHKAHABygJQBc8WUAP6AnABymgjbrMlbrOxjkZ/AcoAyHABygBwAcoAJG6zmn8BygAE8AFQBMyWNANwAcoA4iRus5p/AcoABPABUATMljQDcAHKAOJwAcoAAn8BygACyVjMlzMzAXABygDiIW6z4w/JAfsAgUY4AEn8BygAB8AEBzAIBIFRTAAk8CPwJIAADNCACASBXVgAFXIyYAAFIAgHSWlkACwgbvLQgIAS1HAh10nCH5UwINcLH94C0NMDAXGwwAGRf5Fw4gH6QCJQZm8E+GECkVvgIIIQIe62B7qPnTDbPAvbPDEQqxCaEIkQeBBnEFYQRRA0QTDwNNs84CDAACLXScEhsIGZlYlsEOI8HW9s88DXbPOAgghBgWRUQuuMCIIIQDAh6nrpmYmBcBE6PnTDbPAvbPDEQqxCaEIkQeBBnEFYQRRA0QTDwN9s84IIQe92X3rpmX2JdA06PoNs8C9s8NBDeEM0QvBCrEJoQiRB4EGcQVhBFVQLwONs84DDywIJmXmIATNMfAYIQe92X3rry4IHTP/oA+kABAfpAIdcLAcMAkQGSMW3iFEMwAC7THwGCEAwIep668uCB0gABkdSSbQHiAQM6MNs8C9s8MRCrEJoQiRB4EGcQVhBFEDRBMPA22zxmYWIAJtMfAYIQYFkVELry4IGBAQHXAAEBGMj4QgHMVaDbPMntVGMBpFC6+gJQCM8WJm6zln8BygAWzJY2cFAGygDiFMoAWCBulTBwAcsBks8W4gEgbpUwcAHLAZLPFuIByIEBAc8AWCBulTBwAcsBks8W4lBD2zzJAcxkABZQI/QA9ACBAQHPAAAg0x8BghAh7rYHuvLggfoAAQEW7UTQ1AH4Yts8bBtnAaz6APpAAQHSAAGR1JJtAeLSAPpAIdcLAcMAkQGSMW3iAfpAIdcLAcMAkQGSMW3iAdQB0IEBAdcA+kAh1wsBwwCRAZIxbeIB2zwzEFsQWhBZEFgQVxBWWGgAFvQE9ASBAQHXAFUgAQW/BCRqART/APSkE/S88sgLawIBYm9sAgEgbm0Acb3ejBOC52Hq6WVz2PQnYc6yVCjbNBOE7rGpaVsj5ZkWnXlv74sRzBOE7o8AHy2bAeT+QdWSzWUQnAERv9gW2eeBP4D8oAICypFwAgFIhHECASBzcgBP1AEGuQ6Y/pn5j9ABhAmqkRQQgLxqKM3QHBCD3uy+9dCdiJeXoLUALAIBIHl0AgEgdnUBXwwMvhBbyQQI18DgRFNUxTHBVEkxwUSsfL0f3B/UxGAQFQ6mds8JwMEUKptbfAjAoHcBlRb+EFvJIERTVM7xwVTS8cFsVNIxwWx8vRRtKGCAPX8IcL/8vRDMFI88CQwgT67AYIJycOAvPL0f3ADgEBUM5nbPFQTB1AzbW3wI4HcBDMhVMNs8yXgAQIIQe92X3lAFyx8Tyz8B+gIBzxYBIG6VMHABywGSzxbiAgEggXoC3T4QW8kLW6WPDwQOxAqkjQ04lMNxwWzUxvHBbOwjhL4QlPo8CYBgRFNAvAiIscF8vTeUfigggD1/CHC//L0I/gnbxAhoYIImJaAZrYIoYIImJaAoKEmwgCYBxEQB1CJXwjjDShusyLCALCSOFvjDYH57ASJwCfACcATbPBBKQzAabW3wI3wBCsgB2zzJfQAWghDVMnbbWMsfyz8BRhAjERBQQvAkUjCgHaFwcChIE1B02zwrEEZDE1BVbW3wI1AIfwEMyFUw2zzJgAAsghBzYtCcUAXLHxPLPwH6AgHPFgHPFgHXGwiggCvECiz8vT4QW8kgRFNUz7HBfL0UeehggD1/CHC//L0QzBSP/AkcSTCAJIwct6BPrsCqIIJMS0AoIIImJaAoBK88vT4QlQglPAmXPAif1B2cIBAbW1WEARWEQQQOkur2zwQVhA0WfAjgggEMyFVw2zzJgwCcghAXjUUZUAnLHxfLP1AF+gJQA88WASBulTBwAcsBks8W4gH6AgHPFsgibrOafwHKABKBAQHPAJUycFjKAOJYIG6VMHABywGSzxbiyQHMAgEgjIUCASCJhgIBIIiHABMXwP4QlMS8CYwgAE0AtD0BDBtAYFghAGAEPQPb6Hy4IcBgWCEIgKAEPQXyPQAyUAD8CWACASCLigEdHBtbXAGyMwGBVUg2zzJgnwAlGwx+gAxcdch+gAx+gAwpwOrAIAIBWJCNAvcyHEBygFQBwHKAHABygJQBc8WUAP6AnABymgjbrMlbrOxjkZ/AcoAyHABygBwAcoAJG6zmn8BygAE8AJQBMyWNANwAcoA4iRus5p/AcoABPACUATMljQDcAHKAOJwAcoAAn8BygACyVjMlzMzAXABygDiIW6z4w/JAfsAgj44ACjFwAcoAABJ/AcoAAfACAcwASxwWchwAcsBcwHLAXABywASzMzJ+QDIcgHLAXABywASygfL/8nQgAgEgk5IAAfICAWKVlAALQgbvLQgIBIlHAh10nCH5UwINcLH94C0NMDAXGwwAGRf5Fw4gH6QCJQZm8E+GECjwkw2zxVBfAs2zzgIIIQD4p+pbrjAiCCEBeNRRm6ignpyWBESPlzDbPAbbPDgQzRC8EKsQmhCJVQbwKds84CCCEFlfB7y6oJuelwRAj5cw2zwG2zw0EIkQeBBnEFYQRVUC8CrbPOCCCpyDlrqgmp6YAzKPkts8Bts8MRBWEEUQNEEw8CvbPOAw8sCCoJmeAB7THwGCCpyDlrry4IH6QAEATNMfAYIQWV8HvLry4IHTP/oA+kABAfpAIdcLAcMAkQGSMW3iFEMwAKTTHwGCEBeNRRm68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4gH6ACDUAdDSAAGVgQEB1wCSbQHi+kAh1wsBwwCRAZIxbeIxECgQJxAmECUQJBAjAy4w2zwG2zw3ELwQqxCaEIkQeFUF8CjbPKCdngBs0x8BghAPin6luvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeIB0gABkdSSbQHi+gBRZhYVFEMwARjI+EIBzFVQ2zzJ7VSfAGxQVoEBAc8AUAPPFgHPFsoAyCJus5p/AcoAEoEBAc8AlTJwWMoA4lggbpUwcAHLAZLPFuLJAcwBFu1E0NQB+GLbPGwWoQBsgQEB1wD6QAEB+kABAdIA1AHQ0gABlYEBAdcAkm0B4vpAIdcLAcMAkQGSMW3iMRAmECUQJBAjrIrdPA=="}},"compiler":{"name":"tact","version":"0.8.11"}} \ 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\":\"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\":\"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\":\"TokenUpdateContent\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenBurnNotification\"}},{\"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\"},\"44816\":{\"message\":\"Wallet is blacklisted\"},\"62972\":{\"message\":\"Invalid balance\"}}}","init":{"code":"te6ccgEBCAEAnwABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4A0AAdQBMWm1tcG1tJH8LyMwLB1ClUJNQCAZEFNs8yYGAaRQuvoCUAjPFiZus5Z/AcoAFsyWNnBQBsoA4hTKAFggbpUwcAHLAZLPFuIBIG6VMHABywGSzxbiAciBAQHPAFggbpUwcAHLAZLPFuJQQ9s8yQHMBwAWUCP0APQAgQEBzwA=","args":[{"name":"owner","type":{"kind":"simple","type":"address","optional":false}},{"name":"content","type":{"kind":"simple","type":"cell","optional":true}}],"deployment":{"kind":"system-cell","system":"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"}},"compiler":{"name":"tact","version":"0.8.11"}} \ No newline at end of file diff --git a/sources/output/jetton_TONB.ts b/sources/output/jetton_TONB.ts index 419cb45..24a5d0d 100644 --- a/sources/output/jetton_TONB.ts +++ b/sources/output/jetton_TONB.ts @@ -1396,8 +1396,8 @@ function dictValueParserWithdraw(): DictionaryValue { } async function TONB_init(owner: Address, content: Cell | null) { const __init = 'te6ccgEBCAEAnwABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4A0AAdQBMWm1tcG1tJH8LyMwLB1ClUJNQCAZEFNs8yYGAaRQuvoCUAjPFiZus5Z/AcoAFsyWNnBQBsoA4hTKAFggbpUwcAHLAZLPFuIBIG6VMHABywGSzxbiAciBAQHPAFggbpUwcAHLAZLPFuJQQ9s8yQHMBwAWUCP0APQAgQEBzwA='; - const __code = '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'; - 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); @@ -1482,7 +1482,7 @@ export class TONB implements Contract { this.init = init; } - async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: Deposit | null | Withdraw | TokenUpdateContent | TokenBurnNotification) { + async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: Deposit | null | Withdraw | TokenUpdateContent | TokenBurnNotification | 'Withdraw completed') { let body: Cell | null = null; if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'Deposit') { @@ -1500,6 +1500,9 @@ export class TONB implements Contract { if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenBurnNotification') { body = beginCell().store(storeTokenBurnNotification(message)).endCell(); } + if (message === 'Withdraw completed') { + body = beginCell().storeUint(0, 32).storeStringTail(message).endCell(); + } if (body === null) { throw new Error('Invalid message type'); } await provider.internal(via, { ...args, body: body }); diff --git a/sources/staking.tact b/sources/staking.tact index 2549a1a..0c1720f 100644 --- a/sources/staking.tact +++ b/sources/staking.tact @@ -1,3 +1,6 @@ +import "constants"; +import "messages"; + fun stakingDepositMessage(value: Int, pool: Address): SendParameters { return SendParameters{ to: pool, @@ -28,4 +31,50 @@ fun withdrawalSum(requests: WithdrawalRequests): Int { i = i + 1; } return sum; +} + +trait StakingTrait { + staking_pool: Address?; + withdrawal_requests: WithdrawalRequests; + + fun sendStake() { + if(self.staking_pool == null) { + return; + } + let value: Int = myBalance() - tonb_floor; + if(value < ton("0.05")) { + return; + } + send(stakingDepositMessage(value, self.staking_pool!!)); + } + + fun sendWithdrawal() { + if(self.staking_pool == null) { + return; + } + let value: Int = withdrawalSum(self.withdrawal_requests); + send(stakingWithdrawMessage(value, self.staking_pool!!)); + } + + receive("Withdraw completed") { + let i: Int = 0; + while(i < self.withdrawal_requests.n_requests) { + send(SendParameters{ + to: self.withdrawal_requests.addresses.get(i)!!, + value: self.withdrawal_requests.amounts.get(i)!! + }); + i = i + 1; + } + // self.withdrawal_requests = WithdrawalRequests{ + // addresses: addresses, + // amounts: amounts + // }; + // todo: initialize withdrawal_requests + } + + fun requestWithdrawal(address: Address, value: Int) { + self.withdrawal_requests.addresses.set(self.withdrawal_requests.n_requests, address); + self.withdrawal_requests.amounts.set(self.withdrawal_requests.n_requests, value); + self.withdrawal_requests.n_requests = self.withdrawal_requests.n_requests + 1; + } } \ No newline at end of file