From 58e9d7c8e305b97ec9f8a83f72872800623bfe37 Mon Sep 17 00:00:00 2001 From: ennucore Date: Fri, 3 Feb 2023 21:38:12 +0100 Subject: [PATCH] Voting in the foundation --- sources/foundation.tact | 167 ++++- sources/jetton.tact | 4 +- sources/linker.tact | 11 + sources/messages.tact | 47 ++ sources/output/jetton_Linker.abi | 2 +- sources/output/jetton_Linker.code.boc | Bin 348 -> 594 bytes sources/output/jetton_Linker.code.fc | 76 ++- sources/output/jetton_Linker.code.fif | 156 ++++- sources/output/jetton_Linker.code.rev.fif | 245 ++++++- sources/output/jetton_Linker.md | 40 +- sources/output/jetton_Linker.pkg | 2 +- sources/output/jetton_Linker.ts | 441 ++++++++++++- sources/output/jetton_TONB.abi | 2 +- sources/output/jetton_TONB.code.boc | Bin 1708 -> 1822 bytes sources/output/jetton_TONB.code.fc | 132 ++-- sources/output/jetton_TONB.code.fif | 217 +++--- sources/output/jetton_TONB.code.rev.fif | 622 +++++++++++------- sources/output/jetton_TONB.init.boc | Bin 145 -> 170 bytes sources/output/jetton_TONB.init.fc | 17 +- sources/output/jetton_TONB.init.fif | 46 +- sources/output/jetton_TONB.init.rev.fif | 48 +- sources/output/jetton_TONB.md | 40 +- sources/output/jetton_TONB.pkg | 2 +- sources/output/jetton_TONB.ts | 438 +++++++++++- sources/output/jetton_TONBWallet.abi | 2 +- sources/output/jetton_TONBWallet.code.boc | Bin 1514 -> 1650 bytes sources/output/jetton_TONBWallet.code.fc | 76 ++- sources/output/jetton_TONBWallet.code.fif | 147 +++-- sources/output/jetton_TONBWallet.code.rev.fif | 377 ++++++++--- sources/output/jetton_TONBWallet.init.boc | Bin 113 -> 118 bytes sources/output/jetton_TONBWallet.init.fc | 9 +- sources/output/jetton_TONBWallet.init.fif | 11 +- sources/output/jetton_TONBWallet.init.rev.fif | 11 +- sources/output/jetton_TONBWallet.md | 40 +- sources/output/jetton_TONBWallet.pkg | 2 +- sources/output/jetton_TONBWallet.ts | 443 ++++++++++++- sources/staking.tact | 2 +- .../tests/__snapshots__/jetton.spec.ts.snap | 16 +- sources/wallet.tact | 28 +- 39 files changed, 3304 insertions(+), 615 deletions(-) diff --git a/sources/foundation.tact b/sources/foundation.tact index 11c80c5..c6a3960 100644 --- a/sources/foundation.tact +++ b/sources/foundation.tact @@ -1,22 +1,169 @@ import "./messages"; -struct AddressList { - addresses: map[Int]Address; - length: Int; + + +struct Proposal { + type: Int; // 0 - Blacklist, 1 - Full liquidation, 2 - Change percents + data: Cell; // Address for blacklist, Distribution for percents +} + +struct Vote { + id: Int; + votes: map[Int]Int; // -1 - no vote, 0 - abstain, 1 - yes, 2 - no + vote_end: Int; + proposal: Proposal; + quorum_percent: Int; + ended: Bool = false; + result: Bool?; // None - no result, True - passed, False - failed +} + +fun get_message(prop: Proposal): Cell { + if (prop.type == 0) { + return BlacklistWallet { + wallet: prop.data.readAddress() + }.asCell(); + } } contract Foundation { - admins: AddressList; - founders: AddressList; - percents: map[Address]Int; - vote_time: Int; + founders: AddressList; // aka superadmins + admins: Distribution/* Distribution is defined in messages.tact */; tonb: Address; + votes: map[Int]Vote; + n_votes: Int; - init(admins: AddressList, founders: AddressList, percents: map[Address]Int, vote_time: Int, tonb: Address) { + init(admins: Distribution, founders: AddressList, tonb: Address) { self.admins = admins; self.founders = founders; - self.percents = percents; - self.vote_time = vote_time; self.tonb = tonb; } + + receive(msg: FinishVote) { + require(msg.vote_id < self.n_votes, "Invalid vote id"); + let vote: Vote = self.votes.get(msg.vote_id)!!; + require(vote.ended == false, "Vote already ended"); + require(vote.vote_end < now(), "Vote is not finished yet"); + let n_yes: Int = 0; + let n_no: Int = 0; + let n_abstain: Int = 0; + let i: Int = 0; + while (i < self.admins.addresses.length) { + let vote_: Int = vote.votes.get(i)!!; + if (vote_i == 1) { + n_yes = n_yes + 1; + } else if (vote_i == 2) { + n_no = n_no + 1; + } else if (vote_i == 0) { + n_abstain = n_abstain + 1; + } + i = i + 1; + } + let n_total: Int = n_yes + n_no + n_abstain; + let present: Int = n_total * 100 / self.admins.addresses.length; + if (present < vote.quorum_percent) { + vote.result = false; + } else if (n_yes > n_no) { + vote.result = true; + } else { + vote.result = false; + } + vote.ended = true; + self.votes.set(msg.vote_id, vote); + + if (vote.result == true) { + let msg: Cell = get_message(vote.proposal); + send(SendParameters{ + to: self.tonb, + value: 0, + mode: SendRemainingValue, + body: msg + }); + } + + } + + receive(msg: Vote) { + require(msg.adminIndex < self.admins.addresses.length, "Invalid admin index") + let ctx: Context = context(); + require(ctx.sender == self.admins.addresses.addresses.get(msg.adminIndex), "Only an admin can vote"); + require(msg.vote_id < self.n_votes, "Invalid vote id"); + let vote: Vote = self.votes.get(msg.vote_id)!!; + require(vote.ended == false, "Vote already ended"); + require(vote.vote_end > now(), "Vote is finished"); + require(msg.vote >= 0 && msg.vote <= 2, "Invalid vote"); + vote.votes.set(msg.adminIndex, msg.vote); + self.votes.set(msg.vote_id, vote); + } + + receive(msg: InitiateBlacklistVote) { + let ctx: Context = context(); + require(ctx.sender == self.admins.addresses.addresses.get(msg.adminIndex), "Only an admin can initiate a vote"); + require(ctx.value >= ton("1.0"), "Voting requires at least 1 ton for the fees") + require(msg.quorum_percent > 20 && msg.quorum_percent <= 100, "Invalid quorum percent"); + require(msg.vote_time > 0 && msg.vote_time < 3 * 24 * 3600, "Invalid vote time"); + let vote = Vote { + id: self.n_votes, + vote_end: now() + msg.vote_time, + proposal: Proposal { + type: 0, + data: msg.address + }, + quorum_percent: msg.quorum_percent + }; + let i: Int = 0; + while (i < self.admins.addresses.length) { + vote.votes.set(i, -1); + i = i + 1; + } + self.votes.set(self.n_votes, vote); + self.n_votes = self.n_votes + 1; + } + + receive(msg: InitiateDistributionVote) { + let ctx: Context = context(); + require(ctx.sender == self.admins.addresses.addresses.get(msg.adminIndex), "Only an admin can initiate a vote"); + require(ctx.value >= ton("1.0"), "Voting requires at least 1 ton for the fees") + require(msg.quorum_percent > 20 && msg.quorum_percent <= 100, "Invalid quorum percent"); + require(msg.vote_time > 0 && msg.vote_time < 3 * 24 * 3600, "Invalid vote time"); + let vote = Vote { + id: self.n_votes, + vote_end: now() + msg.vote_time, + proposal: Proposal { + type: 2, + data: msg.distribution + }, + quorum_percent: msg.quorum_percent + }; + let i: Int = 0; + while (i < self.admins.addresses.length) { + vote.votes.set(i, -1); + i = i + 1; + } + self.votes.set(self.n_votes, vote); + self.n_votes = self.n_votes + 1; + } + + receive(msg: InitiateFullLiquidationVote) { + let ctx: Context = context(); + require(ctx.sender == self.admins.addresses.addresses.get(msg.adminIndex), "Only an admin can initiate a vote"); + require(ctx.value >= ton("1.0"), "Voting requires at least 1 ton for the fees") + require(msg.quorum_percent > 85 && msg.quorum_percent <= 100, "Invalid quorum percent"); + require(msg.vote_time > 0 && msg.vote_time < 3 * 24 * 3600, "Invalid vote time"); + let vote = Vote { + id: self.n_votes, + vote_end: now() + msg.vote_time, + proposal: Proposal { + type: 1, + data: beginCell().endCell() + }, + quorum_percent: msg.quorum_percent + }; + let i: Int = 0; + while (i < self.admins.addresses.length) { + vote.votes.set(i, -1); + i = i + 1; + } + self.votes.set(self.n_votes, vote); + self.n_votes = self.n_votes + 1; + } } \ No newline at end of file diff --git a/sources/jetton.tact b/sources/jetton.tact index 964b8e9..8f5e64c 100644 --- a/sources/jetton.tact +++ b/sources/jetton.tact @@ -26,6 +26,7 @@ contract TONB with TONBTrait { last_linker: Address?; n_linkers: Int = 0; staking_pool: Address?; + withdrawal_requests: WithdrawalRequests; init(owner: Address, content: Cell?) { self.totalSupply = 0; @@ -36,8 +37,7 @@ contract TONB with TONBTrait { receive(msg: Deposit) { let ctx: Context = context(); - require(ctx.value >= deposit_gas_consumption, "not enough money for deposit"); - // require(ctx.value >= deposit_gas_consumption + msg.amount + linker_credit + wallet_credit, "not enough money for deposit"); + 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); } diff --git a/sources/linker.tact b/sources/linker.tact index e100a13..d09497d 100644 --- a/sources/linker.tact +++ b/sources/linker.tact @@ -21,6 +21,17 @@ contract Linker { self.neighbor = msg.neighbor; } + receive(msg: ForwardToWallet) { + let ctx: Context = context(); + require(ctx.sender == self.master, "Invalid sender"); + send(SendParameters{ + to: self.owner, + value: 0, + mode: SendRemainingValue, + body: msg.body + }); + } + get fun owner(): Address? { return self.owner; } diff --git a/sources/messages.tact b/sources/messages.tact index b81d3d7..ca2dd56 100644 --- a/sources/messages.tact +++ b/sources/messages.tact @@ -75,3 +75,50 @@ message InitLinker { walletAddress: Address; responseAddress: Address?; } + +message ForwardToWallet { + body: Cell; +} + +message BlacklistWallet { + wallet: Address; +} + +message InitiateBlacklistVote { + adminIndex: Int; + wallet: Address; + quorum_percent: Int; + vote_time: Int; +} + +message InitiateLiquidationVote { + adminIndex: Int; + quorum_percent: Int; + vote_time: Int; +} + +message FinishVote { + voteId: Int; +} + +message Vote { + voteId: Int; + adminIndex: Int; + vote: Int; // 0 - abstain, 1 - yes, 2 - no +} + +struct AddressList { + addresses: map[Int]Address; + length: Int; +} + +struct Distribution { + addresses: AddressList; + percents: map[Address]Int; +} +message InitiateDistributionVote { + adminIndex: Int; + quorum_percent: Int; + vote_time: Int; + distribution: Distribution; +} \ No newline at end of file diff --git a/sources/output/jetton_Linker.abi b/sources/output/jetton_Linker.abi index e929d8d..ff1a46e 100644 --- a/sources/output/jetton_Linker.abi +++ b/sources/output/jetton_Linker.abi @@ -1 +1 @@ -{"name":"Linker","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":"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":"SetLinkerNeighbor"}}],"getters":[{"name":"owner","arguments":[],"returnType":{"kind":"simple","type":"address","optional":true}},{"name":"master","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"},"62972":{"message":"Invalid balance"}}} \ No newline at end of file +{"name":"Linker","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":"SetLinkerNeighbor"}},{"receiver":"internal","message":{"kind":"typed","type":"ForwardToWallet"}}],"getters":[{"name":"owner","arguments":[],"returnType":{"kind":"simple","type":"address","optional":true}},{"name":"master","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_Linker.code.boc b/sources/output/jetton_Linker.code.boc index a1454b0578dfba2ea9ac18e59f1e79b25aff98cd..471d5e7477b9535dbbff163119ca4e050fc38e6b 100644 GIT binary patch delta 443 zcmcb^bcv;Y>$^Ecj7+kO3`}kej3WOTzAO>`vggwYZbl}?BqnAirqe8}OpFTR5=@Ne z*w~pEJ$U(8rpj=XUMgsR>ce4r==k@BEhYyJ#N-$-q{Kgov1q89z%fN~_CY%dhb3V@ zI22lR{@WVlEq;8)>^!5{c^(&D0UsNdZ|5x(TEyKm*1cQ6BhA6h$-vDay=RMp!o&($ zD`u_!zS}k|w`~jsOdJh9h}^b$VDRZclQb7MgWP3##wLMS*+si|eR|M%g^^L>#1ALN zGoc2zZBD)o;hDHZp&sZ|egOvK>xZ~2mF{qKWlq$y(4W5e2X_k-qlR>LeglwJ5EKFu zqGC+njbt2(8bTNk6g9{&6g5m?EIvAg;a|fXhN4*ngn`C1Fo0AuYzi}0J#*$j3`lWD^qL=sKRMJLP!JYj zU}w30-~oeBJ>w|`#t)2)XBfB)3xMp2=M~v|q=9afl$!Y6KoIC~MzOap7p^e=NV;v4 LBO)`|f>8wk&QhKO delta 232 zcmVV42%4WhY%0a0TP2VcqhXM6pG&j5QU%TrVZ45 zcG=)2+2M$Rq6vq9e%a>%hn55s5e5eW0aytN05;Pf0fG>bk`_7v7|8fS0nAk}+dRqb zR0se(P&9!70nY#d&lUmC7RXp2Zj~@_0m}iB&lcjz0n7jgQ8n;50s$Zk43otHAqQ*` i0s$Zo5R>fzFcARg5djwMM9|a$_+r~UY!nicE&?RBCs5k} diff --git a/sources/output/jetton_Linker.code.fc b/sources/output/jetton_Linker.code.fc index a9e9856..b35933a 100644 --- a/sources/output/jetton_Linker.code.fc +++ b/sources/output/jetton_Linker.code.fc @@ -1,3 +1,5 @@ +forall X -> X __tact_not_null(X x) { throw_if(128, null?(x)); return x; } + global (int, slice, int, slice) __tact_context; global cell __tact_context_sys; @@ -7,6 +9,11 @@ global cell __tact_context_sys; throw_unless(136, address.slice_bits() != 267); } +builder __tact_store_bool(builder b, int v) inline { + b = b.store_int(v, 1); + return b; +} + (slice, slice) __tact_load_address(slice cs) inline { slice raw = cs~load_msg_addr(); __tact_verify_address(raw); @@ -48,6 +55,12 @@ int __tact_address_eq(slice a, slice b) inline { return (sc_0, (v'neighbor)); } +(slice, ((cell))) __gen_read_ForwardToWallet(slice sc_0) inline_ref { + throw_unless(129, sc_0~load_uint(32) == 1562223291); + var v'body = sc_0~load_ref(); + return (sc_0, (v'body)); +} + builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline_ref { var (v'index, v'master, v'owner, v'neighbor) = v; build_0 = build_0.store_int(v'index, 257); @@ -81,6 +94,49 @@ builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline set_data(b.end_cell()); } +() $send((int, slice, int, int, cell, cell, cell) $params) impure { + var (($params'bounce, $params'to, $params'value, $params'mode, $params'body, $params'code, $params'data)) = $params; + builder $b = begin_cell(); + $b = store_int($b, 1, 2); + $b = __tact_store_bool($b, $params'bounce); + $b = store_int($b, 0, 3); + $b = __tact_store_address($b, $params'to); + $b = store_coins($b, $params'value); + $b = store_int($b, 0, ((((1 + 4) + 4) + 64) + 32)); + if (((~ null?($params'code)) | (~ null?($params'data)))) { + $b = __tact_store_bool($b, true); + builder $bc = begin_cell(); + $bc = __tact_store_bool($bc, false); + $bc = __tact_store_bool($bc, false); + if ((~ null?($params'code))) { + $bc = __tact_store_bool($bc, true); + $bc = store_ref($bc, __tact_not_null($params'code)); + } else { + $bc = __tact_store_bool($bc, false); + } + if ((~ null?($params'data))) { + $bc = __tact_store_bool($bc, true); + $bc = store_ref($bc, __tact_not_null($params'data)); + } else { + $bc = __tact_store_bool($bc, false); + } + $bc = __tact_store_bool($bc, false); + $b = __tact_store_bool($b, true); + $b = store_ref($b, end_cell($bc)); + } else { + $b = __tact_store_bool($b, false); + } + cell $body = $params'body; + if ((~ null?($body))) { + $b = __tact_store_bool($b, true); + $b = store_ref($b, __tact_not_null($body)); + } else { + $b = __tact_store_bool($b, false); + } + cell $c = end_cell($b); + send_raw_message($c, $params'mode); +} + slice $__gen_Linker_owner((int, slice, slice, slice) $self) impure { var (($self'index, $self'master, $self'owner, $self'neighbor)) = $self; return $self'owner; @@ -112,6 +168,15 @@ _ $__gen_get_master() method_id(120253) { return (($self'index, $self'master, $self'owner, $self'neighbor), ()); } +(((int, slice, slice, slice)), ()) $__gen_Linker_receive_ForwardToWallet((int, slice, slice, slice) $self, (cell) $msg) impure { + var ($self'index, $self'master, $self'owner, $self'neighbor) = $self; + var ($msg'body) = $msg; + var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); + throw_unless(4429, __tact_address_eq($ctx'sender, $self'master)); + $send((true, $self'owner, 0, 64, $msg'body, null(), null())); + return (($self'index, $self'master, $self'owner, $self'neighbor), ()); +} + () recv_internal(int msg_value, cell in_msg_cell, slice in_msg) impure { @@ -140,6 +205,15 @@ _ $__gen_get_master() method_id(120253) { return (); } + ;; Receive ForwardToWallet message + if (op == 1562223291) { + var self = __gen_load_Linker(); + var msg = in_msg~__gen_read_ForwardToWallet(); + self~$__gen_Linker_receive_ForwardToWallet(msg); + __gen_store_Linker(self); + return (); + } + throw(130); } @@ -151,5 +225,5 @@ _ supported_interfaces() method_id { } _ get_abi_ipfs() { - return "ipfs://QmP8qFn4KBRoGwXGpZzK8E7torCEscLLo8Ror4EcyYkigW"; + return "ipfs://Qmd4VoPiDkKcRnC2NE9UhqMyeg5rwYtt115YFSjLfcoLrb"; } \ No newline at end of file diff --git a/sources/output/jetton_Linker.code.fif b/sources/output/jetton_Linker.code.fif index 9a18195..2fc50de 100644 --- a/sources/output/jetton_Linker.code.fif +++ b/sources/output/jetton_Linker.code.fif @@ -1,26 +1,36 @@ PROGRAM{ + DECLPROC __tact_not_null DECLPROC __tact_context_get DECLPROC __tact_verify_address + DECLPROC __tact_store_bool DECLPROC __tact_load_address DECLPROC __tact_load_address_opt DECLPROC __tact_store_address DECLPROC __tact_store_address_opt DECLPROC __tact_address_eq DECLPROC __gen_read_SetLinkerNeighbor + DECLPROC __gen_read_ForwardToWallet DECLPROC __gen_write_Linker DECLPROC __gen_read_Linker DECLPROC __gen_load_Linker DECLPROC __gen_store_Linker + DECLPROC $send DECLPROC $__gen_Linker_owner 83229 DECLMETHOD $__gen_get_owner DECLPROC $__gen_Linker_master 120253 DECLMETHOD $__gen_get_master DECLPROC $__gen_Linker_receive_SetLinkerNeighbor + DECLPROC $__gen_Linker_receive_ForwardToWallet DECLPROC recv_internal 113617 DECLMETHOD supported_interfaces DECLPROC get_abi_ipfs DECLGLOBVAR __tact_context DECLGLOBVAR __tact_context_sys + __tact_not_null PROC:<{ + DUP + ISNULL + 128 THROWIF + }> __tact_context_get PROCINLINE:<{ __tact_context GETGLOB 4 UNTUPLE @@ -31,6 +41,10 @@ PROGRAM{ NEQ 136 THROWIFNOT }> + __tact_store_bool PROCINLINE:<{ + SWAP + 1 STI + }> __tact_load_address PROCINLINE:<{ LDMSGADDR SWAP @@ -73,6 +87,15 @@ PROGRAM{ 129 THROWIFNOT __tact_load_address_opt INLINECALLDICT }> + __gen_read_ForwardToWallet PROCREF:<{ + 32 LDU + SWAP + 1562223291 PUSHINT + EQUAL + 129 THROWIFNOT + LDREF + SWAP + }> __gen_write_Linker PROCREF:<{ s3 s4 XCHG2 257 PUSHINT @@ -122,6 +145,105 @@ PROGRAM{ ENDC c4 POP }> + $send PROC:<{ + NEWC + 1 PUSHINT + SWAP + 2 STI + s0 s7 XCHG2 + __tact_store_bool INLINECALLDICT + 0 PUSHINT + SWAP + 3 STI + s0 s5 XCHG2 + __tact_store_address INLINECALLDICT + s0 s3 XCHG2 + STGRAMS + 0 PUSHINT + SWAP + 105 STI + s3 PUSH + ISNULL + NOT + s5 PUSH + ISNULL + NOT + OR + IF:<{ + TRUE + __tact_store_bool INLINECALLDICT + NEWC + FALSE + __tact_store_bool INLINECALLDICT + FALSE + __tact_store_bool INLINECALLDICT + s4 PUSH + ISNULL + NOT + IF:<{ + TRUE + __tact_store_bool INLINECALLDICT + s0 s4 XCHG + __tact_not_null CALLDICT + s0 s4 XCHG2 + STREF + }>ELSE<{ + s4 POP + s0 s3 XCHG + FALSE + __tact_store_bool INLINECALLDICT + }> + s4 PUSH + ISNULL + NOT + IF:<{ + TRUE + __tact_store_bool INLINECALLDICT + s0 s4 XCHG + __tact_not_null CALLDICT + s0 s4 XCHG2 + STREF + }>ELSE<{ + s4 POP + s0 s3 XCHG + FALSE + __tact_store_bool INLINECALLDICT + }> + FALSE + __tact_store_bool INLINECALLDICT + s0 s2 XCHG + TRUE + __tact_store_bool INLINECALLDICT + s0 s2 XCHG + ENDC + ROT + STREF + }>ELSE<{ + s3 POP + s3 POP + SWAP + FALSE + __tact_store_bool INLINECALLDICT + }> + OVER + ISNULL + NOT + IF:<{ + TRUE + __tact_store_bool INLINECALLDICT + SWAP + __tact_not_null CALLDICT + SWAP + STREF + }>ELSE<{ + NIP + FALSE + __tact_store_bool INLINECALLDICT + }> + ENDC + SWAP + SENDRAWMSG + }> $__gen_Linker_owner PROC:<{ s1 s3 XCHG 3 BLKDROP @@ -148,6 +270,24 @@ PROGRAM{ __tact_address_eq INLINECALLDICT THROWANYIFNOT }> + $__gen_Linker_receive_ForwardToWallet PROC:<{ + __tact_context_get INLINECALLDICT + 2DROP + 4429 PUSHINT + s2 POP + s5 PUSH + __tact_address_eq INLINECALLDICT + THROWANYIFNOT + TRUE + SWAP + 0 PUSHINT + 64 PUSHINT + s5 PUSH + s0 s3 XCHG + PUSHNULL + PUSHNULL + $send CALLDICT + }> recv_internal PROC:<{ 0 PUSHINT OVER @@ -180,9 +320,11 @@ PROGRAM{ IFJMP:<{ 2DROP }> + DUP 3019699393 PUSHINT EQUAL IFJMP:<{ + DROP __gen_load_Linker INLINECALLDICT s0 s4 XCHG __gen_read_SetLinkerNeighbor INLINECALLDICT @@ -192,6 +334,18 @@ PROGRAM{ $__gen_Linker_receive_SetLinkerNeighbor CALLDICT __gen_store_Linker INLINECALLDICT }> + 1562223291 PUSHINT + EQUAL + IFJMP:<{ + __gen_load_Linker INLINECALLDICT + s0 s4 XCHG + __gen_read_ForwardToWallet INLINECALLDICT + NIP + s3 s4 XCHG + s1 s3 s0 XCHG3 + $__gen_Linker_receive_ForwardToWallet CALLDICT + __gen_store_Linker INLINECALLDICT + }> DROP 130 THROW }> @@ -200,6 +354,6 @@ PROGRAM{ 209801025412363888721030803524359905849 PUSHINT }> get_abi_ipfs PROC:<{ - x{697066733a2f2f516d503871466e344b42526f47775847705a7a4b384537746f72434573634c4c6f38526f7234456379596b696757} PUSHSLICE + x{697066733a2f2f516d6434566f5069446b4b63526e43324e45395568714d7965673572775974743131355946536a4c66636f4c7262} PUSHSLICE }> }END>c diff --git a/sources/output/jetton_Linker.code.rev.fif b/sources/output/jetton_Linker.code.rev.fif index eb0a123..cdc0ab0 100644 --- a/sources/output/jetton_Linker.code.rev.fif +++ b/sources/output/jetton_Linker.code.rev.fif @@ -36,9 +36,11 @@ SETCP0 2DROP }> PUSHCONT IFJMP + s0 PUSH 3019699393 PUSHINT EQUAL <{ + s0 POP <{ c4 PUSH CTOS @@ -98,7 +100,97 @@ SETCP0 s1 POP s3 s4 XCHG s1 s3 s0 XCHG3 - 15 CALLDICT + 19 CALLDICT + <{ + NEWC + 2 GETGLOBVAR + s0 s1 XCHG + STREF + 4 1 BLKSWAP + <{ + s3 s4 XCHG2 + 257 PUSHINT + STIX + s0 s1 XCHG + STSLICER + s0 s1 XCHG + STSLICER + NEWC + ROT + s0 PUSH + ISNULL + <{ + s0 POP + 0 PUSHINT + s0 s1 XCHG + 2 STU + }> PUSHCONT + <{ + STSLICER + }> PUSHCONT + IFELSE + ENDC + s0 s1 XCHG + STREF + }> CALLREF + ENDC + c4 POP + }> CALLREF + }> PUSHCONT + IFJMP + 1562223291 PUSHINT + EQUAL + <{ + <{ + c4 PUSH + CTOS + LDREF + s0 s1 XCHG + 2 SETGLOBVAR + <{ + 257 PUSHINT + LDI + LDMSGADDR + s0 s1 XCHG + s0 s1 XCHG + LDMSGADDR + s0 s1 XCHG + s0 s1 XCHG + LDREF + s0 s1 XCHG + CTOS + LDMSGADDR + s1 PUSH + 2 PLDU + 0 NEQINT + <{ + s0 s1 XCHG + }> PUSHCONT + <{ + s1 POP + PUSHNULL + }> PUSHCONT + IFELSE + s1 POP + s1 s4 XCHG + s3 s3 s0 XCHG3 + }> CALLREF + 1 4 BLKDROP2 + }> CALLREF + s0 s4 XCHG + <{ + 32 LDU + s0 s1 XCHG + 1562223291 PUSHINT + EQUAL + 129 THROWIFNOT + LDREF + s0 s1 XCHG + }> CALLREF + s1 POP + s3 s4 XCHG + s1 s3 s0 XCHG3 + 20 CALLDICT <{ NEWC 2 GETGLOBVAR @@ -139,15 +231,137 @@ SETCP0 s0 POP 130 THROW - 13: + 1: + s0 PUSH + ISNULL + 128 THROWIF + + 16: + NEWC + 1 PUSHINT + s0 s1 XCHG + 2 STI + s0 s7 XCHG2 + s0 s1 XCHG + 1 STI + 0 PUSHINT + s0 s1 XCHG + 3 STI + s0 s5 XCHG2 + STSLICER + s0 s3 XCHG2 + STGRAMS + 0 PUSHINT + s0 s1 XCHG + 105 STI + s3 PUSH + ISNULL + NOT + s5 PUSH + ISNULL + NOT + OR + <{ + -1 PUSHINT + s0 s1 XCHG + 1 STI + NEWC + 0 PUSHINT + s0 s1 XCHG + 1 STI + 0 PUSHINT + s0 s1 XCHG + 1 STI + s4 PUSH + ISNULL + NOT + <{ + -1 PUSHINT + s0 s1 XCHG + 1 STI + s0 s4 XCHG + 1 CALLDICT + s0 s4 XCHG2 + STREF + }> PUSHCONT + <{ + s4 POP + s0 s3 XCHG + 0 PUSHINT + s0 s1 XCHG + 1 STI + }> PUSHCONT + IFELSE + s4 PUSH + ISNULL + NOT + <{ + -1 PUSHINT + s0 s1 XCHG + 1 STI + s0 s4 XCHG + 1 CALLDICT + s0 s4 XCHG2 + STREF + }> PUSHCONT + <{ + s4 POP + s0 s3 XCHG + 0 PUSHINT + s0 s1 XCHG + 1 STI + }> PUSHCONT + IFELSE + 0 PUSHINT + s0 s1 XCHG + 1 STI + s0 s2 XCHG + -1 PUSHINT + s0 s1 XCHG + 1 STI + s0 s2 XCHG + ENDC + ROT + STREF + }> PUSHCONT + <{ + s3 POP + s3 POP + s0 s1 XCHG + 0 PUSHINT + s0 s1 XCHG + 1 STI + }> PUSHCONT + IFELSE + s1 PUSH + ISNULL + NOT + <{ + -1 PUSHINT + s0 s1 XCHG + 1 STI + s0 s1 XCHG + 1 CALLDICT + s0 s1 XCHG + STREF + }> IFREFELSEREF + ENDC + s0 s1 XCHG + SENDRAWMSG + s1 POP + 0 PUSHINT + s0 s1 XCHG + 1 STI + + 17: s1 s3 XCHG 3 BLKDROP - 14: + 18: s2 s3 XCHG 3 BLKDROP - 15: + 19: s1 POP 1 GETGLOBVAR 4 UNTUPLE @@ -158,6 +372,25 @@ SETCP0 SDEQ THROWANYIFNOT + 20: + 1 GETGLOBVAR + 4 UNTUPLE + 2DROP + 4429 PUSHINT + s2 POP + s5 PUSH + SDEQ + THROWANYIFNOT + -1 PUSHINT + s0 s1 XCHG + 0 PUSHINT + 64 PUSHINT + s5 PUSH + s0 s3 XCHG + PUSHNULL + PUSHNULL + 16 CALLDICT + owner: <{ c4 PUSH @@ -195,7 +428,7 @@ SETCP0 }> CALLREF 1 4 BLKDROP2 }> CALLREF - 13 CALLDICT + 17 CALLDICT 113617: 123515602279859691144772641439386770278 PUSHINT @@ -238,7 +471,7 @@ SETCP0 }> CALLREF 1 4 BLKDROP2 }> CALLREF - 14 CALLDICT + 18 CALLDICT ) 19 DICTPUSHCONST DICTIGETJMPZ 11 THROWARG diff --git a/sources/output/jetton_Linker.md b/sources/output/jetton_Linker.md index fe3fafe..a69adaf 100644 --- a/sources/output/jetton_Linker.md +++ b/sources/output/jetton_Linker.md @@ -1,9 +1,9 @@ # TACT Compilation Report Contract: Linker -BOC Size: 348 bytes +BOC Size: 594 bytes # Types -Total Types: 18 +Total Types: 27 ## StateInit TLB: `_ code:^cell data:^cell = StateInit` @@ -61,6 +61,42 @@ Signature: `SetLinkerNeighbor{neighbor:Maybe address}` TLB: `init_linker#67c08154 neighbor:Maybe address walletAmount:int257 walletCode:^cell walletData:^cell walletAddress:address responseAddress:Maybe address = InitLinker` Signature: `InitLinker{neighbor:Maybe address,walletAmount:int257,walletCode:^cell,walletData:^cell,walletAddress:address,responseAddress:Maybe address}` +## ForwardToWallet +TLB: `forward_to_wallet#5d1da2bb body:^cell = ForwardToWallet` +Signature: `ForwardToWallet{body:^cell}` + +## BlacklistWallet +TLB: `blacklist_wallet#029c8396 wallet:address = BlacklistWallet` +Signature: `BlacklistWallet{wallet:address}` + +## InitiateBlacklistVote +TLB: `initiate_blacklist_vote#e8fffb0b adminIndex:int257 wallet:address quorum_percent:int257 vote_time:int257 = InitiateBlacklistVote` +Signature: `InitiateBlacklistVote{adminIndex:int257,wallet:address,quorum_percent:int257,vote_time:int257}` + +## InitiateLiquidationVote +TLB: `initiate_liquidation_vote#11fb862f adminIndex:int257 quorum_percent:int257 vote_time:int257 = InitiateLiquidationVote` +Signature: `InitiateLiquidationVote{adminIndex:int257,quorum_percent:int257,vote_time:int257}` + +## FinishVote +TLB: `finish_vote#2a574443 voteId:int257 = FinishVote` +Signature: `FinishVote{voteId:int257}` + +## Vote +TLB: `vote#b670f4ce voteId:int257 adminIndex:int257 vote:int257 = Vote` +Signature: `Vote{voteId:int257,adminIndex:int257,vote:int257}` + +## AddressList +TLB: `_ addresses:dict length:int257 = AddressList` +Signature: `AddressList{addresses:dict,length:int257}` + +## Distribution +TLB: `_ addresses:AddressList{addresses:dict,length:int257} percents:dict = Distribution` +Signature: `Distribution{addresses:AddressList{addresses:dict,length:int257},percents:dict}` + +## InitiateDistributionVote +TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict,length:int257},percents:dict} = InitiateDistributionVote` +Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict,length:int257},percents:dict}}` + ## WithdrawalRequests TLB: `_ addresses:dict amounts:dict n_requests:int257 = WithdrawalRequests` Signature: `WithdrawalRequests{addresses:dict,amounts:dict,n_requests:int257}` diff --git a/sources/output/jetton_Linker.pkg b/sources/output/jetton_Linker.pkg index 697f437..cdbf013 100644 --- a/sources/output/jetton_Linker.pkg +++ b/sources/output/jetton_Linker.pkg @@ -1 +1 @@ -{"name":"Linker","code":"te6ccgECEwEAAVAAART/APSkE/S88sgLAQIBYgIDAgLMBAUCASANDgOL24EOuk4Q/KmBBrhY/vAWhpgYC42GAAyL/IuHEA/SARKDM3gnwwgUit8EEIWf56YN1Hx22eAm2eGIgaIJh4B+2ecBh5YEFBEGBwIBWAkKADbTHwGCELP89MG68uCB+kAh1wsBwwCRAZIxbeIBGMj4QgHMVTDbPMntVAgAPFA0gQEBzwABzxYBzxbIWCBulTBwAcsBks8W4skBzAAHUTXwOAIBIAsMAAkECNfA4AAfDH4QW8kW4ERTTIkxwXy9IAENviju2eeAbBECASAPEABNu70YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYAQ25W92zzwDoEQEW7UTQ1AH4Yts8bBQSAESBAQHXAPpAAQH6QAEB1AHQ+kAh1wsBwwCRAZIxbeIxFEMw","abi":"{\"name\":\"Linker\",\"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\":\"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\":\"SetLinkerNeighbor\"}}],\"getters\":[{\"name\":\"owner\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"master\",\"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\"},\"62972\":{\"message\":\"Invalid balance\"}}}","init":{"code":"te6ccgEBBwEATgABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBE2W0EyMxQJNs8yYGADxQNIEBAc8AAc8WAc8WyFggbpUwcAHLAZLPFuLJAcw=","args":[{"name":"index","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}}],"deployment":{"kind":"system-cell","system":"te6cckECFQEAAVoAAQHAAQEFodSXAgEU/wD0pBP0vPLICwMCAWIJBAIBIAgFAgEgBwYBDblb3bPPAOgTAE27vRgnBc7D1dLK57HoTsOdZKhRtmgnCd1jUtK2R8syLTry398WI5gBDb4o7tnngGwTAgLMDwoCAVgOCwIBIA0MAB8MfhBbyRbgRFNMiTHBfL0gAAkECNfA4AAHUTXwOAOL24EOuk4Q/KmBBrhY/vAWhpgYC42GAAyL/IuHEA/SARKDM3gnwwgUit8EEIWf56YN1Hx22eAm2eGIgaIJh4B+2ecBh5YEFBMSEAEYyPhCAcxVMNs8ye1UEQA8UDSBAQHPAAHPFgHPFshYIG6VMHABywGSzxbiyQHMADbTHwGCELP89MG68uCB+kAh1wsBwwCRAZIxbeIBFu1E0NQB+GLbPGwUFABEgQEB1wD6QAEB+kABAdQB0PpAIdcLAcMAkQGSMW3iMRRDMEhMYDc="}},"compiler":{"name":"tact","version":"0.8.11"}} \ No newline at end of file +{"name":"Linker","code":"te6ccgECHQEAAkYAART/APSkE/S88sgLAQIBYgIDAgLLBAUCASAXGAIBzgYHAgFIDQ4ElRwIddJwh+VMCDXCx/eAtDTAwFxsMABkX+RcOIB+kAiUGZvBPhhApFb4CCCELP89MG6j48w2zwE2zwxEDRBMPAT2zzgghBdHaK7uoBsICwkACwgbvLQgIAA20x8BghCz/PTBuvLggfpAIdcLAcMAkQGSMW3iAyqPjts8BNs8MRA0QTDwFNs84DDywIIbCgsAHtMfAYIQXR2iu7ry4IHUAQEYyPhCAcxVMNs8ye1UDAA8UDSBAQHPAAHPFgHPFshYIG6VMHABywGSzxbiyQHMAgEgDxAAM9fCC3ki3AiKaZEuOC+Xo/gLhAIBKBtrb4CEAgEgERICASAVFgL3MhxAcoBUAcBygBwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY5GfwHKAMhwAcoAcAHKACRus5p/AcoABPABUATMljQDcAHKAOIkbrOafwHKAATwAVAEzJY0A3ABygDicAHKAAJ/AcoAAslYzJczMwFwAcoA4iFus+MPyQH7AIBMUAAcE18DgABJ/AcoAAfABAcwACjFwAcoAAAkECNfA4AAfDH4QW8kW4ERTTIkxwXy9IAENviju2eeAjBsCASAZGgBNu70YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYAQ25W92zzwEoGwEW7UTQ1AH4Yts8bBQcAESBAQHXAPpAAQH6QAEB1AHQ+kAh1wsBwwCRAZIxbeIxFEMw","abi":"{\"name\":\"Linker\",\"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\":\"SetLinkerNeighbor\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"ForwardToWallet\"}}],\"getters\":[{\"name\":\"owner\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"address\",\"optional\":true}},{\"name\":\"master\",\"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":"te6ccgEBBwEATgABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBE2W0EyMxQJNs8yYGADxQNIEBAc8AAc8WAc8WyFggbpUwcAHLAZLPFuLJAcw=","args":[{"name":"index","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}}],"deployment":{"kind":"system-cell","system":"te6cckECHwEAAlAAAQHAAQEFodSXAgEU/wD0pBP0vPLICwMCAWIJBAIBIAgFAgEgBwYBDblb3bPPASgdAE27vRgnBc7D1dLK57HoTsOdZKhRtmgnCd1jUtK2R8syLTry398WI5gBDb4o7tnngIwdAgLLFQoCAUgMCwAz18ILeSLcCIppkS44L5ej+AuEAgEoG2tvgIQCASAQDQIBIA8OAB8MfhBbyRbgRFNMiTHBfL0gAAkECNfA4AIBIBIRAAcE18DgAvcyHEBygFQBwHKAHABygJQBc8WUAP6AnABymgjbrMlbrOxjkZ/AcoAyHABygBwAcoAJG6zmn8BygAE8AFQBMyWNANwAcoA4iRus5p/AcoABPABUATMljQDcAHKAOJwAcoAAn8BygACyVjMlzMzAXABygDiIW6z4w/JAfsAgFBMACjFwAcoAABJ/AcoAAfABAcwCAc4XFgALCBu8tCAgBJUcCHXScIflTAg1wsf3gLQ0wMBcbDAAZF/kXDiAfpAIlBmbwT4YQKRW+AgghCz/PTBuo+PMNs8BNs8MRA0QTDwE9s84IIQXR2iu7qAdHBoYAyqPjts8BNs8MRA0QTDwFNs84DDywIIdGRoAHtMfAYIQXR2iu7ry4IHUAQEYyPhCAcxVMNs8ye1UGwA8UDSBAQHPAAHPFgHPFshYIG6VMHABywGSzxbiyQHMADbTHwGCELP89MG68uCB+kAh1wsBwwCRAZIxbeIBFu1E0NQB+GLbPGwUHgBEgQEB1wD6QAEB+kABAdQB0PpAIdcLAcMAkQGSMW3iMRRDMODigOY="}},"compiler":{"name":"tact","version":"0.8.11"}} \ No newline at end of file diff --git a/sources/output/jetton_Linker.ts b/sources/output/jetton_Linker.ts index 39bcea5..b1b0343 100644 --- a/sources/output/jetton_Linker.ts +++ b/sources/output/jetton_Linker.ts @@ -791,6 +791,437 @@ function dictValueParserInitLinker(): DictionaryValue { } } } +export type ForwardToWallet = { + $$type: 'ForwardToWallet'; + body: Cell; +} + +export function storeForwardToWallet(src: ForwardToWallet) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(1562223291, 32); + b_0.storeRef(src.body); + }; +} + +export function loadForwardToWallet(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 1562223291) { throw Error('Invalid prefix'); } + let _body = sc_0.loadRef(); + return { $$type: 'ForwardToWallet' as const, body: _body }; +} + +function loadTupleForwardToWallet(source: TupleReader) { + let _body = source.readCell(); + return { $$type: 'ForwardToWallet' as const, body: _body }; +} + +function storeTupleForwardToWallet(source: ForwardToWallet) { + let builder = new TupleBuilder(); + builder.writeCell(source.body); + return builder.build(); +} + +function dictValueParserForwardToWallet(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeForwardToWallet(src)).endCell()); + }, + parse: (src) => { + return loadForwardToWallet(src.loadRef().beginParse()); + } + } +} +export type BlacklistWallet = { + $$type: 'BlacklistWallet'; + wallet: Address; +} + +export function storeBlacklistWallet(src: BlacklistWallet) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(43811734, 32); + b_0.storeAddress(src.wallet); + }; +} + +export function loadBlacklistWallet(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 43811734) { throw Error('Invalid prefix'); } + let _wallet = sc_0.loadAddress(); + return { $$type: 'BlacklistWallet' as const, wallet: _wallet }; +} + +function loadTupleBlacklistWallet(source: TupleReader) { + let _wallet = source.readAddress(); + return { $$type: 'BlacklistWallet' as const, wallet: _wallet }; +} + +function storeTupleBlacklistWallet(source: BlacklistWallet) { + let builder = new TupleBuilder(); + builder.writeAddress(source.wallet); + return builder.build(); +} + +function dictValueParserBlacklistWallet(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeBlacklistWallet(src)).endCell()); + }, + parse: (src) => { + return loadBlacklistWallet(src.loadRef().beginParse()); + } + } +} +export type InitiateBlacklistVote = { + $$type: 'InitiateBlacklistVote'; + adminIndex: bigint; + wallet: Address; + quorum_percent: bigint; + vote_time: bigint; +} + +export function storeInitiateBlacklistVote(src: InitiateBlacklistVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3909090059, 32); + b_0.storeInt(src.adminIndex, 257); + b_0.storeAddress(src.wallet); + b_0.storeInt(src.quorum_percent, 257); + let b_1 = new Builder(); + b_1.storeInt(src.vote_time, 257); + b_0.storeRef(b_1.endCell()); + }; +} + +export function loadInitiateBlacklistVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3909090059) { throw Error('Invalid prefix'); } + let _adminIndex = sc_0.loadIntBig(257); + let _wallet = sc_0.loadAddress(); + let _quorum_percent = sc_0.loadIntBig(257); + let sc_1 = sc_0.loadRef().beginParse(); + let _vote_time = sc_1.loadIntBig(257); + return { $$type: 'InitiateBlacklistVote' as const, adminIndex: _adminIndex, wallet: _wallet, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function loadTupleInitiateBlacklistVote(source: TupleReader) { + let _adminIndex = source.readBigNumber(); + let _wallet = source.readAddress(); + let _quorum_percent = source.readBigNumber(); + let _vote_time = source.readBigNumber(); + return { $$type: 'InitiateBlacklistVote' as const, adminIndex: _adminIndex, wallet: _wallet, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function storeTupleInitiateBlacklistVote(source: InitiateBlacklistVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.adminIndex); + builder.writeAddress(source.wallet); + builder.writeNumber(source.quorum_percent); + builder.writeNumber(source.vote_time); + return builder.build(); +} + +function dictValueParserInitiateBlacklistVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeInitiateBlacklistVote(src)).endCell()); + }, + parse: (src) => { + return loadInitiateBlacklistVote(src.loadRef().beginParse()); + } + } +} +export type InitiateLiquidationVote = { + $$type: 'InitiateLiquidationVote'; + adminIndex: bigint; + quorum_percent: bigint; + vote_time: bigint; +} + +export function storeInitiateLiquidationVote(src: InitiateLiquidationVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(301696559, 32); + b_0.storeInt(src.adminIndex, 257); + b_0.storeInt(src.quorum_percent, 257); + b_0.storeInt(src.vote_time, 257); + }; +} + +export function loadInitiateLiquidationVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 301696559) { throw Error('Invalid prefix'); } + let _adminIndex = sc_0.loadIntBig(257); + let _quorum_percent = sc_0.loadIntBig(257); + let _vote_time = sc_0.loadIntBig(257); + return { $$type: 'InitiateLiquidationVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function loadTupleInitiateLiquidationVote(source: TupleReader) { + let _adminIndex = source.readBigNumber(); + let _quorum_percent = source.readBigNumber(); + let _vote_time = source.readBigNumber(); + return { $$type: 'InitiateLiquidationVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function storeTupleInitiateLiquidationVote(source: InitiateLiquidationVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.adminIndex); + builder.writeNumber(source.quorum_percent); + builder.writeNumber(source.vote_time); + return builder.build(); +} + +function dictValueParserInitiateLiquidationVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeInitiateLiquidationVote(src)).endCell()); + }, + parse: (src) => { + return loadInitiateLiquidationVote(src.loadRef().beginParse()); + } + } +} +export type FinishVote = { + $$type: 'FinishVote'; + voteId: bigint; +} + +export function storeFinishVote(src: FinishVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(710362179, 32); + b_0.storeInt(src.voteId, 257); + }; +} + +export function loadFinishVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 710362179) { throw Error('Invalid prefix'); } + let _voteId = sc_0.loadIntBig(257); + return { $$type: 'FinishVote' as const, voteId: _voteId }; +} + +function loadTupleFinishVote(source: TupleReader) { + let _voteId = source.readBigNumber(); + return { $$type: 'FinishVote' as const, voteId: _voteId }; +} + +function storeTupleFinishVote(source: FinishVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.voteId); + return builder.build(); +} + +function dictValueParserFinishVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeFinishVote(src)).endCell()); + }, + parse: (src) => { + return loadFinishVote(src.loadRef().beginParse()); + } + } +} +export type Vote = { + $$type: 'Vote'; + voteId: bigint; + adminIndex: bigint; + vote: bigint; +} + +export function storeVote(src: Vote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3060856014, 32); + b_0.storeInt(src.voteId, 257); + b_0.storeInt(src.adminIndex, 257); + b_0.storeInt(src.vote, 257); + }; +} + +export function loadVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3060856014) { throw Error('Invalid prefix'); } + let _voteId = sc_0.loadIntBig(257); + let _adminIndex = sc_0.loadIntBig(257); + let _vote = sc_0.loadIntBig(257); + return { $$type: 'Vote' as const, voteId: _voteId, adminIndex: _adminIndex, vote: _vote }; +} + +function loadTupleVote(source: TupleReader) { + let _voteId = source.readBigNumber(); + let _adminIndex = source.readBigNumber(); + let _vote = source.readBigNumber(); + return { $$type: 'Vote' as const, voteId: _voteId, adminIndex: _adminIndex, vote: _vote }; +} + +function storeTupleVote(source: Vote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.voteId); + builder.writeNumber(source.adminIndex); + builder.writeNumber(source.vote); + return builder.build(); +} + +function dictValueParserVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeVote(src)).endCell()); + }, + parse: (src) => { + return loadVote(src.loadRef().beginParse()); + } + } +} +export type AddressList = { + $$type: 'AddressList'; + addresses: Dictionary; + length: bigint; +} + +export function storeAddressList(src: AddressList) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeDict(src.addresses, Dictionary.Keys.BigInt(257), Dictionary.Values.Address()); + b_0.storeInt(src.length, 257); + }; +} + +export function loadAddressList(slice: Slice) { + let sc_0 = slice; + let _addresses = Dictionary.load(Dictionary.Keys.BigInt(257), Dictionary.Values.Address(), sc_0); + let _length = sc_0.loadIntBig(257); + return { $$type: 'AddressList' as const, addresses: _addresses, length: _length }; +} + +function loadTupleAddressList(source: TupleReader) { + let _addresses = Dictionary.loadDirect(Dictionary.Keys.BigInt(257), Dictionary.Values.Address(), source.readCellOpt()); + let _length = source.readBigNumber(); + return { $$type: 'AddressList' as const, addresses: _addresses, length: _length }; +} + +function storeTupleAddressList(source: AddressList) { + let builder = new TupleBuilder(); + builder.writeCell(source.addresses.size > 0 ? beginCell().storeDictDirect(source.addresses, Dictionary.Keys.BigInt(257), Dictionary.Values.Address()).endCell() : null); + builder.writeNumber(source.length); + return builder.build(); +} + +function dictValueParserAddressList(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeAddressList(src)).endCell()); + }, + parse: (src) => { + return loadAddressList(src.loadRef().beginParse()); + } + } +} +export type Distribution = { + $$type: 'Distribution'; + addresses: AddressList; + percents: Dictionary; +} + +export function storeDistribution(src: Distribution) { + return (builder: Builder) => { + let b_0 = builder; + b_0.store(storeAddressList(src.addresses)); + b_0.storeDict(src.percents, Dictionary.Keys.Address(), Dictionary.Values.BigInt(257)); + }; +} + +export function loadDistribution(slice: Slice) { + let sc_0 = slice; + let _addresses = loadAddressList(sc_0); + let _percents = Dictionary.load(Dictionary.Keys.Address(), Dictionary.Values.BigInt(257), sc_0); + return { $$type: 'Distribution' as const, addresses: _addresses, percents: _percents }; +} + +function loadTupleDistribution(source: TupleReader) { + const _addresses = loadTupleAddressList(source.readTuple()); + let _percents = Dictionary.loadDirect(Dictionary.Keys.Address(), Dictionary.Values.BigInt(257), source.readCellOpt()); + return { $$type: 'Distribution' as const, addresses: _addresses, percents: _percents }; +} + +function storeTupleDistribution(source: Distribution) { + let builder = new TupleBuilder(); + builder.writeTuple(storeTupleAddressList(source.addresses)); + builder.writeCell(source.percents.size > 0 ? beginCell().storeDictDirect(source.percents, Dictionary.Keys.Address(), Dictionary.Values.BigInt(257)).endCell() : null); + return builder.build(); +} + +function dictValueParserDistribution(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeDistribution(src)).endCell()); + }, + parse: (src) => { + return loadDistribution(src.loadRef().beginParse()); + } + } +} +export type InitiateDistributionVote = { + $$type: 'InitiateDistributionVote'; + adminIndex: bigint; + quorum_percent: bigint; + vote_time: bigint; + distribution: Distribution; +} + +export function storeInitiateDistributionVote(src: InitiateDistributionVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(276353205, 32); + b_0.storeInt(src.adminIndex, 257); + b_0.storeInt(src.quorum_percent, 257); + b_0.storeInt(src.vote_time, 257); + let b_1 = new Builder(); + b_1.store(storeDistribution(src.distribution)); + b_0.storeRef(b_1.endCell()); + }; +} + +export function loadInitiateDistributionVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 276353205) { throw Error('Invalid prefix'); } + let _adminIndex = sc_0.loadIntBig(257); + let _quorum_percent = sc_0.loadIntBig(257); + let _vote_time = sc_0.loadIntBig(257); + let sc_1 = sc_0.loadRef().beginParse(); + let _distribution = loadDistribution(sc_1); + return { $$type: 'InitiateDistributionVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time, distribution: _distribution }; +} + +function loadTupleInitiateDistributionVote(source: TupleReader) { + let _adminIndex = source.readBigNumber(); + let _quorum_percent = source.readBigNumber(); + let _vote_time = source.readBigNumber(); + const _distribution = loadTupleDistribution(source.readTuple()); + return { $$type: 'InitiateDistributionVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time, distribution: _distribution }; +} + +function storeTupleInitiateDistributionVote(source: InitiateDistributionVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.adminIndex); + builder.writeNumber(source.quorum_percent); + builder.writeNumber(source.vote_time); + builder.writeTuple(storeTupleDistribution(source.distribution)); + return builder.build(); +} + +function dictValueParserInitiateDistributionVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeInitiateDistributionVote(src)).endCell()); + }, + parse: (src) => { + return loadInitiateDistributionVote(src.loadRef().beginParse()); + } + } +} export type WithdrawalRequests = { $$type: 'WithdrawalRequests'; addresses: Dictionary; @@ -965,8 +1396,8 @@ function dictValueParserWithdraw(): DictionaryValue { } async function Linker_init(index: bigint, owner: Address, master: Address) { const __init = 'te6ccgEBBwEATgABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBE2W0EyMxQJNs8yYGADxQNIEBAc8AAc8WAc8WyFggbpUwcAHLAZLPFuLJAcw='; - const __code = 'te6ccgECEwEAAVAAART/APSkE/S88sgLAQIBYgIDAgLMBAUCASANDgOL24EOuk4Q/KmBBrhY/vAWhpgYC42GAAyL/IuHEA/SARKDM3gnwwgUit8EEIWf56YN1Hx22eAm2eGIgaIJh4B+2ecBh5YEFBEGBwIBWAkKADbTHwGCELP89MG68uCB+kAh1wsBwwCRAZIxbeIBGMj4QgHMVTDbPMntVAgAPFA0gQEBzwABzxYBzxbIWCBulTBwAcsBks8W4skBzAAHUTXwOAIBIAsMAAkECNfA4AAfDH4QW8kW4ERTTIkxwXy9IAENviju2eeAbBECASAPEABNu70YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYAQ25W92zzwDoEQEW7UTQ1AH4Yts8bBQSAESBAQHXAPpAAQH6QAEB1AHQ+kAh1wsBwwCRAZIxbeIxFEMw'; - const __system = 'te6cckECFQEAAVoAAQHAAQEFodSXAgEU/wD0pBP0vPLICwMCAWIJBAIBIAgFAgEgBwYBDblb3bPPAOgTAE27vRgnBc7D1dLK57HoTsOdZKhRtmgnCd1jUtK2R8syLTry398WI5gBDb4o7tnngGwTAgLMDwoCAVgOCwIBIA0MAB8MfhBbyRbgRFNMiTHBfL0gAAkECNfA4AAHUTXwOAOL24EOuk4Q/KmBBrhY/vAWhpgYC42GAAyL/IuHEA/SARKDM3gnwwgUit8EEIWf56YN1Hx22eAm2eGIgaIJh4B+2ecBh5YEFBMSEAEYyPhCAcxVMNs8ye1UEQA8UDSBAQHPAAHPFgHPFshYIG6VMHABywGSzxbiyQHMADbTHwGCELP89MG68uCB+kAh1wsBwwCRAZIxbeIBFu1E0NQB+GLbPGwUFABEgQEB1wD6QAEB+kABAdQB0PpAIdcLAcMAkQGSMW3iMRRDMEhMYDc='; + const __code = 'te6ccgECHQEAAkYAART/APSkE/S88sgLAQIBYgIDAgLLBAUCASAXGAIBzgYHAgFIDQ4ElRwIddJwh+VMCDXCx/eAtDTAwFxsMABkX+RcOIB+kAiUGZvBPhhApFb4CCCELP89MG6j48w2zwE2zwxEDRBMPAT2zzgghBdHaK7uoBsICwkACwgbvLQgIAA20x8BghCz/PTBuvLggfpAIdcLAcMAkQGSMW3iAyqPjts8BNs8MRA0QTDwFNs84DDywIIbCgsAHtMfAYIQXR2iu7ry4IHUAQEYyPhCAcxVMNs8ye1UDAA8UDSBAQHPAAHPFgHPFshYIG6VMHABywGSzxbiyQHMAgEgDxAAM9fCC3ki3AiKaZEuOC+Xo/gLhAIBKBtrb4CEAgEgERICASAVFgL3MhxAcoBUAcBygBwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY5GfwHKAMhwAcoAcAHKACRus5p/AcoABPABUATMljQDcAHKAOIkbrOafwHKAATwAVAEzJY0A3ABygDicAHKAAJ/AcoAAslYzJczMwFwAcoA4iFus+MPyQH7AIBMUAAcE18DgABJ/AcoAAfABAcwACjFwAcoAAAkECNfA4AAfDH4QW8kW4ERTTIkxwXy9IAENviju2eeAjBsCASAZGgBNu70YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYAQ25W92zzwEoGwEW7UTQ1AH4Yts8bBQcAESBAQHXAPpAAQH6QAEB1AHQ+kAh1wsBwwCRAZIxbeIxFEMw'; + const __system = 'te6cckECHwEAAlAAAQHAAQEFodSXAgEU/wD0pBP0vPLICwMCAWIJBAIBIAgFAgEgBwYBDblb3bPPASgdAE27vRgnBc7D1dLK57HoTsOdZKhRtmgnCd1jUtK2R8syLTry398WI5gBDb4o7tnngIwdAgLLFQoCAUgMCwAz18ILeSLcCIppkS44L5ej+AuEAgEoG2tvgIQCASAQDQIBIA8OAB8MfhBbyRbgRFNMiTHBfL0gAAkECNfA4AIBIBIRAAcE18DgAvcyHEBygFQBwHKAHABygJQBc8WUAP6AnABymgjbrMlbrOxjkZ/AcoAyHABygBwAcoAJG6zmn8BygAE8AFQBMyWNANwAcoA4iRus5p/AcoABPABUATMljQDcAHKAOJwAcoAAn8BygACyVjMlzMzAXABygDiIW6z4w/JAfsAgFBMACjFwAcoAABJ/AcoAAfABAcwCAc4XFgALCBu8tCAgBJUcCHXScIflTAg1wsf3gLQ0wMBcbDAAZF/kXDiAfpAIlBmbwT4YQKRW+AgghCz/PTBuo+PMNs8BNs8MRA0QTDwE9s84IIQXR2iu7qAdHBoYAyqPjts8BNs8MRA0QTDwFNs84DDywIIdGRoAHtMfAYIQXR2iu7ry4IHUAQEYyPhCAcxVMNs8ye1UGwA8UDSBAQHPAAHPFgHPFshYIG6VMHABywGSzxbiyQHMADbTHwGCELP89MG68uCB+kAh1wsBwwCRAZIxbeIBFu1E0NQB+GLbPGwUHgBEgQEB1wD6QAEB+kABAdQB0PpAIdcLAcMAkQGSMW3iMRRDMODigOY='; let systemCell = Cell.fromBase64(__system); let builder = new TupleBuilder(); builder.writeCell(systemCell); @@ -1021,6 +1452,7 @@ const Linker_errors: { [key: number]: { message: string } } = { 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` }, } @@ -1051,12 +1483,15 @@ export class Linker implements Contract { this.init = init; } - async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: SetLinkerNeighbor) { + async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: SetLinkerNeighbor | ForwardToWallet) { let body: Cell | null = null; if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'SetLinkerNeighbor') { body = beginCell().store(storeSetLinkerNeighbor(message)).endCell(); } + if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'ForwardToWallet') { + body = beginCell().store(storeForwardToWallet(message)).endCell(); + } if (body === null) { throw new Error('Invalid message type'); } await provider.internal(via, { ...args, body: body }); diff --git a/sources/output/jetton_TONB.abi b/sources/output/jetton_TONB.abi index f5f38ff..a525dd7 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":"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"},"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"}}],"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 002a43a0cb2a0d38f920f0c862e02c72d383ad60..9ef9d539b580751013fd5596bbc0bb4001ab0393 100644 GIT binary patch delta 1014 zcmZ{jT})F~9Kg@HJz#I!YflUJcF+RXs-;XE6<7gxMp`{pkjlD`G8{%56EhZwV`dLz z*05eK4_lmycj~e+av%1vWG2hDKul9fS?+^Wmg|TMx^9N)gHJfN5VtHo?9gNnJS;i+ z<$V19|MSoJxF$?*wa+}BIt{s3AlTxbwAZ z>uYIsdek$DBO;oaoNeCyC>}PsC#HiwYXnq3twmLasJf_t<3tFX?bZ;m&Mb{|4a?$I zk5h9(|69)&$%?Gt)DaP9A9Aecu)a5)6+PHx*&8Yndy(wHU*S*j2Y3{}iTiL2w?;#2 z;UW>;9@Kl`^Z$3+SY`#E`St4ktXScx)Xu}Ej@}D;DQ7FbkAJ|q&6$(jT04sg{h3!p z$pfWTdixIi`$Ulpd!NzPV2Ee23#+eH!)sat7aM~`(t-!@8~6zB$FJkQ{wg4?qji*l za2X_J_(dZ750|i-QsC5gSH@rgNQ+m(BZ=|?cu-jY{qm{Hp%HisUNWTzaMR!>%V2I6 z68qWKaM25-#P)Tt4w&(x3D~{V)-gn)4DvRH#@!75?F>710@wx0j-LC34FdHH!3JPy zl>twzPkC9}V#x;Bm(nua-;q4s^dtU&~PCRFmh%E&KV)r)YcpX%9+E~|j4ll~w zt;%-?#lf`QL-;u+iq&yqTPFOJti*dFKFh3WHH67B>b#vMe1U85b=s_HzPo|C=G7Qf zg(!+e#mM-q>4V6rD|0y+{DKX)LDRh9S8HiC5)IcyAtr0VvNIcH?b{D}?qx1cocJR@ zes?^j+*MMUpHKdFJoDj4C+$l4(D=~M+nIKC>B}6GX^bI$nBl-dhC@B@EZRluk>9AJ zUL+Y6)am}q_H?88DW8l*O!I0CyiX}>PfVy%I1xoOikx>yjyGx>FL&!*praEHEFkN0 z{-z^>6#!+ht7OUth+}2LY$`1|WZ)48 NiQ_zCe>54@{{>eXHJShb delta 886 zcmZvbZAep57{|}KyR&=e?slf$d%ZgCrukBtPPdlUK{mUyRaUdIf~=&X7YG@Ck{p=p zLL>vRi!L;5AA*RAh)^PyY~%-L(v3(X*2@T@Peuhv^reo45Yd+(&w0-IKQHGwXUuY& z%O3x9wF^=K2(n^>*(-BoGe<$$UIe+x%1^I8_C>@&e8hg?JD(7t?XIve)-7~fJt764 zTCBiu!$aR3yi-^4Vb-lvZr!XD)6x{L+7u48VDp4t&o}@x{ygYED~m|7X=Ydgomvg# zw~A6uuA$nI#!MR5qHc5w?MFW3@;W}d(pb!s=%#__|8_T|aVCs<-bCL%6nRO|qOiu< zG%)fzjtkvFBk0m{v^MIqo1AuhO@zgK2?`6!vlsCDu{1uLU!eVj4mOy^sfB%o;JQ{% z`KoGBC8|K>s0^(}rC=m*@dp(!>OyJf{o!6X19E4Foxy-%2E3mEP>WO2K5DuTLLET4 zbI1{dPvB);c%Oo^rX8{#2$5P#2~T{!<{ZHlj(BfY}V-uxV6|vocX{+Dzc_g4{+EaiR#Cm8oRj z>C=3B$P~rwl7yEc*mMB1b~)U#!(*owb!LhiG%8jU#OyZj8GECN2~{(xHHs~%DqfZI z(n=ri2`}n)NLw=D$+!$&qp8PnR^g{?D%T1UG3|u0=P*1@7pnz|K#j`ueq=|0VZm@2Pq3l4;HR_w#FVd!H*8KcCs;$+(tZT;RzjZMn^4aa! M%qiq+40$rY09@t-F8}}l diff --git a/sources/output/jetton_TONB.code.fc b/sources/output/jetton_TONB.code.fc index 436beeb..a5365c5 100644 --- a/sources/output/jetton_TONB.code.fc +++ b/sources/output/jetton_TONB.code.fc @@ -139,6 +139,21 @@ cell __gen_writecell_SetLinkerNeighbor((slice) v) inline_ref { return __gen_write_SetLinkerNeighbor(begin_cell(), v).end_cell(); } +builder __gen_write_WithdrawalRequests(builder build_0, (cell, cell, int) v) inline_ref { + var (v'addresses, v'amounts, v'n_requests) = v; + build_0 = build_0.store_dict(v'addresses); + build_0 = build_0.store_dict(v'amounts); + build_0 = build_0.store_int(v'n_requests, 257); + return build_0; +} + +(slice, ((cell, cell, int))) __gen_read_WithdrawalRequests(slice sc_0) inline_ref { + var v'addresses = sc_0~load_dict(); + var v'amounts = sc_0~load_dict(); + var v'n_requests = sc_0~load_int(257); + return (sc_0, (v'addresses, v'amounts, v'n_requests)); +} + (slice, ((int))) __gen_read_Deposit(slice sc_0) inline_ref { throw_unless(129, sc_0~load_uint(32) == 569292295); var v'amount = sc_0~load_coins(); @@ -151,11 +166,12 @@ cell __gen_writecell_SetLinkerNeighbor((slice) v) inline_ref { return (sc_0, (v'amount)); } -builder __gen_write_TONBWallet(builder build_0, (int, slice, slice, int, slice) v) inline_ref { - var (v'balance, v'owner, v'master, v'linker, v'linker_address) = v; +builder __gen_write_TONBWallet(builder build_0, (int, slice, slice, int, int, slice) v) inline_ref { + var (v'balance, v'owner, v'master, v'blacklisted, v'linker, v'linker_address) = v; build_0 = build_0.store_int(v'balance, 257); build_0 = __tact_store_address(build_0, v'owner); build_0 = __tact_store_address(build_0, v'master); + build_0 = build_0.store_int(v'blacklisted, 1); var build_1 = begin_cell(); build_1 = ~ null?(v'linker) ? build_1.store_int(true, 1).store_int(v'linker, 257) : build_1.store_int(false, 1); build_1 = __tact_store_address_opt(build_1, v'linker_address); @@ -174,8 +190,8 @@ builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline return build_0; } -builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, int, slice) v) inline_ref { - var (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool) = v; +builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) v) inline_ref { + var (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)) = v; build_0 = build_0.store_coins(v'totalSupply); build_0 = __tact_store_address(build_0, v'owner); build_0 = ~ null?(v'content) ? build_0.store_int(true, 1).store_ref(v'content) : build_0.store_int(false, 1); @@ -185,11 +201,12 @@ builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, var build_1 = begin_cell(); build_1 = build_1.store_int(v'n_linkers, 257); build_1 = __tact_store_address_opt(build_1, v'staking_pool); + build_1 = __gen_write_WithdrawalRequests(build_1, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)); build_0 = store_ref(build_0, build_1.end_cell()); return build_0; } -(slice, ((int, slice, cell, int, slice, slice, int, slice))) __gen_read_TONB(slice sc_0) inline_ref { +(slice, ((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)))) __gen_read_TONB(slice sc_0) inline_ref { var v'totalSupply = sc_0~load_coins(); var v'owner = sc_0~__tact_load_address(); var v'content = sc_0~load_int(1) ? sc_0~load_ref() : null(); @@ -199,7 +216,8 @@ builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, slice sc_1 = sc_0~load_ref().begin_parse(); var v'n_linkers = sc_1~load_int(257); var v'staking_pool = sc_1~__tact_load_address_opt(); - return (sc_0, (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool)); + var v'withdrawal_requests = sc_1~__gen_read_WithdrawalRequests(); + return (sc_0, (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool, v'withdrawal_requests)); } _ __gen_StateInit_get_code((cell, cell) v) inline { @@ -217,13 +235,13 @@ _ __gen_Context_get_sender((int, slice, int, slice) v) inline { return (v'totalSupply, v'mintable, v'owner, v'content, v'walletCode); } -(int, slice, cell, int, slice, slice, int, slice) __gen_load_TONB() inline_ref { +(int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) __gen_load_TONB() inline_ref { slice sc = get_data().begin_parse(); __tact_context_sys = sc~load_ref(); return sc~__gen_read_TONB(); } -() __gen_store_TONB((int, slice, cell, int, slice, slice, int, slice) v) impure inline_ref { +() __gen_store_TONB((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) v) impure inline_ref { builder b = begin_cell(); b = b.store_ref(__tact_context_sys); b = __gen_write_TONB(b, v); @@ -292,13 +310,13 @@ slice $contractAddress((cell, cell) $s) impure { } cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) { - var (($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address)) = (null(), null(), null(), null(), null()); + var (($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address)) = (null(), null(), null(), false, null(), null()); $self'balance = 0; $self'owner = $owner; $self'master = $master; var b' = begin_cell(); b' = b'.store_ref(sys'); - b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address)); + b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address)); return b'.end_cell(); } @@ -337,14 +355,14 @@ cell $__gen_Linker_init(cell sys', int $index, slice $owner, slice $master) { return (mine, $__gen_Linker_init(sys, $index, $owner, $master)); } -((int, slice, cell, int, slice, slice, int, slice), (cell, cell)) $__gen_TONB_getJettonWalletInit((int, slice, cell, int, slice, slice, int, slice) $self, slice $address) impure { - var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = $self; - return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), $__gen_TONBWallet_init_child(__tact_context_sys, my_address(), $address)); +((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), (cell, cell)) $__gen_TONB_getJettonWalletInit((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $address) impure { + 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; + return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), $__gen_TONBWallet_init_child(__tact_context_sys, my_address(), $address)); } -slice $__gen_TONB_get_wallet_address((int, slice, cell, int, slice, slice, int, slice) $self, slice $owner) impure { - var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = $self; - var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_getJettonWalletInit($owner); +slice $__gen_TONB_get_wallet_address((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $owner) 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; + var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($owner); return $contractAddress(($winit'code, $winit'data)); } @@ -355,9 +373,9 @@ _ $__gen_get_get_wallet_address(slice $$owner) method_id(103289) { return res; } -(int, int, slice, cell, cell) $__gen_TONB_get_jetton_data((int, slice, cell, int, slice, slice, int, slice) $self) impure { - var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = $self; - cell $code = __gen_StateInit_get_code(($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_getJettonWalletInit(my_address())); +(int, int, slice, cell, cell) $__gen_TONB_get_jetton_data((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; + cell $code = __gen_StateInit_get_code(($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit(my_address())); return ($self'totalSupply, $self'mintable, $self'owner, $self'content, $code); } @@ -367,10 +385,10 @@ _ $__gen_get_get_jetton_data() method_id(106029) { return __gen_JettonData_to_external(res); } -((int, slice, cell, int, slice, slice, int, slice), ()) $__gen_TONB_mint((int, slice, cell, int, slice, slice, int, slice) $self, slice $to, int $amount, slice $responseAddress) impure { - var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = $self; +((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_mint((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $to, int $amount, slice $responseAddress) impure { + 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; $self'totalSupply = ($self'totalSupply + $amount); - var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_getJettonWalletInit($to); + var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($to); slice $walletAddress = $contractAddress(($winit'code, $winit'data)); var ($linker_init'code, $linker_init'data) = $__gen_Linker_init_child(__tact_context_sys, $self'n_linkers, $walletAddress, my_address()); slice $linker_address = $contractAddress(($linker_init'code, $linker_init'data)); @@ -379,33 +397,33 @@ _ $__gen_get_get_jetton_data() method_id(106029) { $self'n_linkers = ($self'n_linkers + 1); cell $wallet_msg_body = __gen_writecell_TokenTransferInternal((0, $amount, my_address(), $responseAddress, 0, $emptySlice(), ($self'n_linkers - 1), $linker_address)); $send((false, $walletAddress, 50000000, 0, $wallet_msg_body, $winit'code, $winit'data)); - return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), ()); + 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), ()) $__gen_TONB_burn((int, slice, cell, int, slice, slice, int, slice) $self, slice $from, int $amount, slice $responseAddress) impure { - var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = $self; - var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_getJettonWalletInit($from); +((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_burn((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $from, int $amount, slice $responseAddress) impure { + 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 ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($from); slice $walletAddress = $contractAddress(($winit'code, $winit'data)); $send((false, $walletAddress, 0, 64, __gen_writecell_TokenBurn((0, $amount, $from, $responseAddress)), $winit'code, $winit'data)); - return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), ()); + 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), ()) $__gen_TONB_requireWallet((int, slice, cell, int, slice, slice, int, slice) $self, slice $owner) impure { - var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = $self; +((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_requireWallet((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, slice $owner) impure { + 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 ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); - var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_getJettonWalletInit($owner); + var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_getJettonWalletInit($owner); throw_unless(4429, __tact_address_eq($contractAddress(($winit'code, $winit'data)), $ctx'sender)); - return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), ()); + return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); } -((int, slice, cell, int, slice, slice, int, slice), ()) $__gen_TONB_requireOwner((int, slice, cell, int, slice, slice, int, slice) $self) impure { - var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = $self; +((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)), ()) $__gen_TONB_requireOwner((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self) impure { + 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; throw_unless(132, __tact_address_eq(__gen_Context_get_sender(__tact_context_get()), $self'owner)); - return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), ()); + 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)), ()); } -slice $__gen_TONB_owner((int, slice, cell, int, slice, slice, int, slice) $self) impure { - var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = $self; +slice $__gen_TONB_owner((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; return $self'owner; } @@ -415,44 +433,44 @@ _ $__gen_get_owner() method_id(83229) { return res; } -(((int, slice, cell, int, slice, slice, int, slice)), ()) $__gen_TONB_receive_Deposit((int, slice, cell, int, slice, slice, int, slice) $self, (int) $msg) impure { - var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool) = $self; +(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive_Deposit((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, (int) $msg) impure { + 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(32366, ($ctx'value >= 10000000)); - ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_mint($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), ()); + throw_unless(32366, ($ctx'value >= (((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); + 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)), ()) $__gen_TONB_receive((int, slice, cell, int, slice, slice, int, slice) $self) impure { - var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool) = $self; - return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), ()); +(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self) impure { + 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; + 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)), ()) $__gen_TONB_receive_Withdraw((int, slice, cell, int, slice, slice, int, slice) $self, (int) $msg) impure { - var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool) = $self; +(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive_Withdraw((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, (int) $msg) impure { + 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)); - ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__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'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)), ()); } -(((int, slice, cell, int, slice, slice, int, slice)), ()) $__gen_TONB_receive_TokenUpdateContent((int, slice, cell, int, slice, slice, int, slice) $self, (cell) $msg) impure { - var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool) = $self; +(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive_TokenUpdateContent((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, (cell) $msg) impure { + 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'content) = $msg; - ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_requireOwner(); + ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requireOwner(); $self'content = $msg'content; - return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), ()); + return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests)), ()); } -(((int, slice, cell, int, slice, slice, int, slice)), ()) $__gen_TONB_receive_TokenBurnNotification((int, slice, cell, int, slice, slice, int, slice) $self, (int, int, slice, slice) $msg) impure { - var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool) = $self; +(((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int))), ()) $__gen_TONB_receive_TokenBurnNotification((int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) $self, (int, int, slice, slice) $msg) impure { + 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'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)~$__gen_TONB_requireWallet($msg'owner); + ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))~$__gen_TONB_requireWallet($msg'owner); $self'totalSupply = ($self'totalSupply - $msg'amount); $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), ()); + 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)), ()); } @@ -531,5 +549,5 @@ _ supported_interfaces() method_id { } _ get_abi_ipfs() { - return "ipfs://QmRq7Ws4rcHn99Mv8T1S9fKrCFxp46UnQyae1gPiBrqj5M"; + return "ipfs://QmYVigftHMYXo1zGVnMx2hxo4jEsJqWmjJJq9AaWYe9gfp"; } \ No newline at end of file diff --git a/sources/output/jetton_TONB.code.fif b/sources/output/jetton_TONB.code.fif index ce75f3a..7c43aba 100644 --- a/sources/output/jetton_TONB.code.fif +++ b/sources/output/jetton_TONB.code.fif @@ -20,6 +20,8 @@ PROGRAM{ DECLPROC __gen_read_TokenUpdateContent DECLPROC __gen_write_SetLinkerNeighbor DECLPROC __gen_writecell_SetLinkerNeighbor + DECLPROC __gen_write_WithdrawalRequests + DECLPROC __gen_read_WithdrawalRequests DECLPROC __gen_read_Deposit DECLPROC __gen_read_Withdraw DECLPROC __gen_write_TONBWallet @@ -265,6 +267,20 @@ PROGRAM{ __gen_write_SetLinkerNeighbor INLINECALLDICT ENDC }> + __gen_write_WithdrawalRequests PROCREF:<{ + s2 s3 XCHG2 + STDICT + STDICT + 257 PUSHINT + STIX + }> + __gen_read_WithdrawalRequests PROCREF:<{ + LDDICT + LDDICT + 257 PUSHINT + LDIX + 3 -ROLL + }> __gen_read_Deposit PROCREF:<{ 32 LDU SWAP @@ -285,13 +301,14 @@ PROGRAM{ SWAP }> __gen_write_TONBWallet PROCREF:<{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX - ROT + s0 s3 XCHG2 __tact_store_address INLINECALLDICT SWAP __tact_store_address INLINECALLDICT + 1 STI NEWC s2 PUSH ISNULL @@ -331,36 +348,39 @@ PROGRAM{ STREF }> __gen_write_TONB PROCREF:<{ - s8 s7 XCHG2 + s11 s10 XCHG2 STGRAMS - s0 s5 XCHG2 + s0 s8 XCHG2 __tact_store_address INLINECALLDICT - s3 PUSH + s6 PUSH ISNULL NOT IF:<{ TRUE SWAP 1 STI - s1 s3 XCHG + s1 s6 XCHG STREF }>ELSE<{ - s3 POP + s6 POP FALSE - s0 s3 XCHG2 + s0 s6 XCHG2 1 STI }> + s1 s4 XCHG 1 STI - SWAP + ROT __tact_store_address_opt INLINECALLDICT SWAP __tact_store_address_opt INLINECALLDICT - s0 s2 XCHG + SWAP NEWC 257 PUSHINT STIX - SWAP + ROT __tact_store_address_opt INLINECALLDICT + s4 s3 XCHG2 + __gen_write_WithdrawalRequests INLINECALLDICT ENDC SWAP STREF @@ -388,13 +408,16 @@ PROGRAM{ 257 PUSHINT LDIX __tact_load_address_opt INLINECALLDICT - NIP - s2 s8 XCHG - s2 s7 XCHG - s2 s6 XCHG - s2 s5 XCHG - s2 s4 XCHG - s2 s3 XCHG + SWAP + __gen_read_WithdrawalRequests INLINECALLDICT + s3 POP + s5 s11 XCHG + s5 s10 XCHG + s5 s9 XCHG + s5 s8 XCHG + s5 s7 XCHG + s5 s6 XCHG + ROT }> __gen_StateInit_get_code PROCINLINE:<{ DROP @@ -412,14 +435,14 @@ PROGRAM{ SWAP __tact_context_sys SETGLOB __gen_read_TONB INLINECALLDICT - 1 8 BLKDROP2 + 1 11 BLKDROP2 }> __gen_store_TONB PROCREF:<{ NEWC __tact_context_sys GETGLOB SWAP STREF - 8 -ROLL + 11 -ROLL __gen_write_TONB INLINECALLDICT ENDC c4 POP @@ -540,14 +563,16 @@ PROGRAM{ SENDRAWMSG }> $__gen_TONBWallet_init PROC:<{ + FALSE PUSHNULL PUSHNULL 0 PUSHINT - s0 s5 XCHG + s0 s6 XCHG NEWC STREF + s0 s6 XCHG s0 s5 XCHG - s4 s4 s4 XCHG3 + 3 -ROLL __gen_write_TONBWallet INLINECALLDICT ENDC }> @@ -607,18 +632,18 @@ PROGRAM{ }> $__gen_TONB_get_wallet_address PROC:<{ $__gen_TONB_getJettonWalletInit CALLDICT - 8 2 BLKDROP2 + 11 2 BLKDROP2 $contractAddress CALLDICT }> $__gen_get_get_wallet_address PROC:<{ __gen_load_TONB INLINECALLDICT - 8 ROLL + 11 ROLL $__gen_TONB_get_wallet_address CALLDICT }> $__gen_TONB_get_jetton_data PROC:<{ MYADDR $__gen_TONB_getJettonWalletInit CALLDICT - 4 2 BLKDROP2 + 7 2 BLKDROP2 __gen_StateInit_get_code INLINECALLDICT s3 s3 s0 XCHG3 }> @@ -628,31 +653,31 @@ PROGRAM{ __gen_JettonData_to_external CALLDICT }> $__gen_TONB_mint PROC:<{ - s10 s1 XCPU + s13 s1 XCPU ADD - 8 2 BLKSWAP + 11 2 BLKSWAP $__gen_TONB_getJettonWalletInit CALLDICT 2DUP $contractAddress CALLDICT __tact_context_sys GETGLOB MYADDR - s6 s2 s(-2) PU2XC + s9 s2 s(-2) PU2XC $__gen_Linker_init_child CALLDICT 2DUP $contractAddress CALLDICT FALSE 20000000 PUSHINT 0 PUSHINT - s0 s11 XCHG + s0 s14 XCHG __gen_writecell_SetLinkerNeighbor INLINECALLDICT s3 PUSH s3 s6 XCHG s4 s1 s5 XCHG3 - s3 s12 XCHG - s1 s12 s0 XCHG3 + s3 s15 XCHG + s1 s15 s0 XCHG3 $send CALLDICT - s5 PUSH - s0 s5 XCHG + s8 PUSH + s0 s8 XCHG INC 0 PUSHINT MYADDR @@ -661,35 +686,40 @@ PROGRAM{ s4 PUSH DEC s4 s7 XCHG - s6 17 s() XCHG + s6 20 s() XCHG s3 s5 XCHG - s4 18 s() XCHG + s4 21 s() XCHG 3 ROLL - s0 s11 XCHG + s0 s14 XCHG __gen_writecell_TokenTransferInternal INLINECALLDICT FALSE s0 s4 XCHG - s3 s11 XCHG + s3 s14 XCHG 50000000 PUSHINT s0 s3 XCHG 0 PUSHINT s3 s1 s3 XCHG3 - s0 s14 XCHG + s0 17 s() XCHG $send CALLDICT + s8 s10 XCHG + s7 s9 XCHG + s6 s8 XCHG s5 s7 XCHG s4 s6 XCHG - s3 s5 XCHG - s4 s0 s3 XCHG3 - s0 s2 XCHG + s0 s3 s5 XCHG3 + s1 s4 XCHG }> $__gen_TONB_burn PROC:<{ - s7 s10 XCHG - s6 s9 XCHG - s5 s8 XCHG - s4 s10 XCHG - s3 s9 XCHG - s8 s10 s9 XCHG3 - s8 PUSH + s10 s13 XCHG + s9 s12 XCHG + s8 s11 XCHG + s7 s13 XCHG + s6 s12 XCHG + s5 s11 XCHG + s4 s13 XCHG + s3 s12 XCHG + s11 s13 s12 XCHG3 + s11 PUSH $__gen_TONB_getJettonWalletInit CALLDICT 2DUP $contractAddress CALLDICT @@ -697,45 +727,45 @@ PROGRAM{ 0 PUSHINT 64 PUSHINT s1 s0 s2 PUXC2 - s2 17 s() XCHG - s0 16 s() XCHG - s1 s15 XCHG + s2 20 s() XCHG + s1 18 s() XCHG + s0 19 s() XCHG __gen_writecell_TokenBurn INLINECALLDICT - s6 s13 XCHG + s6 16 s() XCHG s1 s5 XCHG - s4 s14 XCHG - s3 s12 XCHG - s12 s2 XCHG2 + s4 17 s() XCHG + s3 s15 XCHG + s15 s2 XCHG2 $send CALLDICT - s4 s7 XCHG - 3 4 BLKSWAP + s7 s10 XCHG + 3 7 BLKSWAP }> $__gen_TONB_requireWallet PROC:<{ __tact_context_get INLINECALLDICT s2 s3 XCHG 3 BLKDROP - 9 -ROLL + 12 -ROLL $__gen_TONB_getJettonWalletInit CALLDICT SWAP 4429 PUSHINT s0 s2 XCHG $contractAddress CALLDICT - s0 s10 XCHG2 + s0 s13 XCHG2 __tact_address_eq INLINECALLDICT - s1 s9 XCHG + s1 s12 XCHG THROWANYIFNOT - 7 ROLL + 10 ROLL }> $__gen_TONB_requireOwner PROC:<{ __tact_context_get INLINECALLDICT __gen_Context_get_sender INLINECALLDICT - s7 PUSH + s10 PUSH __tact_address_eq INLINECALLDICT 132 THROWIFNOT }> $__gen_TONB_owner PROC:<{ - s6 s7 XCHG - 7 BLKDROP + s9 s10 XCHG + 10 BLKDROP }> $__gen_get_owner PROC:<{ __gen_load_TONB INLINECALLDICT @@ -744,9 +774,16 @@ PROGRAM{ $__gen_TONB_receive_Deposit PROC:<{ __tact_context_get INLINECALLDICT DROP + s2 POP 32366 PUSHINT - s3 POP 10000000 PUSHINT + s4 PUSH + ADD + 20000000 PUSHINT + ADD + 50000000 PUSHINT + ADD + s1 s3 XCHG GEQ s1 s2 XCHG THROWANYIFNOT @@ -768,29 +805,37 @@ PROGRAM{ $__gen_TONB_burn CALLDICT }> $__gen_TONB_receive_TokenUpdateContent PROC:<{ - 8 -ROLL + 11 -ROLL $__gen_TONB_requireOwner CALLDICT - s5 POP - s6 s7 XCHG - s5 s6 XCHG - 4 ROLL + s8 POP + s9 s10 XCHG + s8 s9 XCHG + 7 ROLL }> $__gen_TONB_receive_TokenBurnNotification PROC:<{ DROP s2 POP - 8 2 BLKSWAP - s9 PUSH + s10 s12 XCHG + 5 8 REVERSE + s7 s11 XCHG + s6 s12 XCHG + s5 s11 XCHG + s4 s12 XCHG + s3 s11 XCHG + s12 s11 s12 XCHG3 + s11 PUSH $__gen_TONB_requireWallet CALLDICT - s7 s8 XCPU + s10 s12 XCPU SUB FALSE - s0 s10 s9 XCHG3 + s0 s12 s13 XCHG3 0 PUSHINT PUSHNULL PUSHNULL PUSHNULL $send CALLDICT - 2 5 BLKSWAP + s9 s10 XCHG + 2 8 BLKSWAP }> recv_internal PROC:<{ 0 PUSHINT @@ -830,9 +875,12 @@ PROGRAM{ IFJMP:<{ DROP __gen_load_TONB INLINECALLDICT - s0 s8 XCHG + s0 s11 XCHG __gen_read_Deposit INLINECALLDICT NIP + s10 s11 XCHG + s9 s10 XCHG + s8 s9 XCHG s7 s8 XCHG s6 s7 XCHG s5 s6 XCHG @@ -860,9 +908,12 @@ PROGRAM{ IFJMP:<{ DROP __gen_load_TONB INLINECALLDICT - s0 s8 XCHG + s0 s11 XCHG __gen_read_Withdraw INLINECALLDICT NIP + s10 s11 XCHG + s9 s10 XCHG + s8 s9 XCHG s7 s8 XCHG s6 s7 XCHG s5 s6 XCHG @@ -878,9 +929,12 @@ PROGRAM{ IFJMP:<{ DROP __gen_load_TONB INLINECALLDICT - s0 s8 XCHG + s0 s11 XCHG __gen_read_TokenUpdateContent INLINECALLDICT NIP + s10 s11 XCHG + s9 s10 XCHG + s8 s9 XCHG s7 s8 XCHG s6 s7 XCHG s5 s6 XCHG @@ -894,9 +948,12 @@ PROGRAM{ EQUAL IFJMP:<{ __gen_load_TONB INLINECALLDICT - s0 s8 XCHG + s0 s11 XCHG __gen_read_TokenBurnNotification INLINECALLDICT s4 POP + s13 s14 XCHG + s12 s13 XCHG + s11 s12 XCHG s10 s11 XCHG s9 s10 XCHG s8 s9 XCHG @@ -918,6 +975,6 @@ PROGRAM{ 86142586315491086060343270784266291122 PUSHINT }> get_abi_ipfs PROC:<{ - x{697066733a2f2f516d5271375773347263486e39394d763854315339664b72434678703436556e51796165316750694272716a354d} PUSHSLICE + x{697066733a2f2f516d595669676674484d59586f317a47566e4d783268786f346a45734a71576d6a4a4a7139416157596539676670} PUSHSLICE }> }END>c diff --git a/sources/output/jetton_TONB.code.rev.fif b/sources/output/jetton_TONB.code.rev.fif index 7c4f12f..74b0844 100644 --- a/sources/output/jetton_TONB.code.rev.fif +++ b/sources/output/jetton_TONB.code.rev.fif @@ -106,17 +106,26 @@ SETCP0 PUSHNULL }> PUSHCONT IFELSE - s1 POP - s2 s8 XCHG - s2 s7 XCHG - s2 s6 XCHG - s2 s5 XCHG - s2 s4 XCHG - s2 s3 XCHG + 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 8 BLKDROP2 + 1 11 BLKDROP2 }> CALLREF - s0 s8 XCHG + s0 s11 XCHG <{ 32 LDU s0 s1 XCHG @@ -127,43 +136,47 @@ SETCP0 s0 s1 XCHG }> CALLREF s1 POP + s10 s11 XCHG + s9 s10 XCHG + s8 s9 XCHG s7 s8 XCHG s6 s7 XCHG s5 s6 XCHG s4 s5 XCHG s3 s4 XCHG s1 s3 s0 XCHG3 - 50 CALLDICT + 52 CALLDICT <{ NEWC 2 GETGLOBVAR s0 s1 XCHG STREF - 8 1 BLKSWAP + 11 1 BLKSWAP <{ - s8 s7 XCHG2 + s11 s10 XCHG2 STGRAMS - s0 s5 XCHG2 + s0 s8 XCHG2 STSLICER - s3 PUSH + s6 PUSH ISNULL NOT <{ -1 PUSHINT s0 s1 XCHG 1 STI - s1 s3 XCHG + s1 s6 XCHG STREF }> PUSHCONT <{ - s3 POP + s6 POP 0 PUSHINT - s0 s3 XCHG2 + s0 s6 XCHG2 1 STI }> PUSHCONT IFELSE + s1 s4 XCHG 1 STI - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -189,11 +202,11 @@ SETCP0 STSLICER }> PUSHCONT IFELSE - s0 s2 XCHG + s0 s1 XCHG NEWC 257 PUSHINT STIX - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -206,6 +219,14 @@ SETCP0 STSLICER }> PUSHCONT IFELSE + s4 s3 XCHG2 + <{ + s2 s3 XCHG2 + STDICT + STDICT + 257 PUSHINT + STIX + }> CALLREF ENDC s0 s1 XCHG STREF @@ -288,47 +309,57 @@ SETCP0 PUSHNULL }> PUSHCONT IFELSE - s1 POP - s2 s8 XCHG - s2 s7 XCHG - s2 s6 XCHG - s2 s5 XCHG - s2 s4 XCHG - s2 s3 XCHG + 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 8 BLKDROP2 + 1 11 BLKDROP2 }> CALLREF - 51 CALLDICT + 53 CALLDICT <{ NEWC 2 GETGLOBVAR s0 s1 XCHG STREF - 8 1 BLKSWAP + 11 1 BLKSWAP <{ - s8 s7 XCHG2 + s11 s10 XCHG2 STGRAMS - s0 s5 XCHG2 + s0 s8 XCHG2 STSLICER - s3 PUSH + s6 PUSH ISNULL NOT <{ -1 PUSHINT s0 s1 XCHG 1 STI - s1 s3 XCHG + s1 s6 XCHG STREF }> PUSHCONT <{ - s3 POP + s6 POP 0 PUSHINT - s0 s3 XCHG2 + s0 s6 XCHG2 1 STI }> PUSHCONT IFELSE + s1 s4 XCHG 1 STI - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -354,11 +385,11 @@ SETCP0 STSLICER }> PUSHCONT IFELSE - s0 s2 XCHG + s0 s1 XCHG NEWC 257 PUSHINT STIX - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -371,6 +402,14 @@ SETCP0 STSLICER }> PUSHCONT IFELSE + s4 s3 XCHG2 + <{ + s2 s3 XCHG2 + STDICT + STDICT + 257 PUSHINT + STIX + }> CALLREF ENDC s0 s1 XCHG STREF @@ -450,17 +489,26 @@ SETCP0 PUSHNULL }> PUSHCONT IFELSE - s1 POP - s2 s8 XCHG - s2 s7 XCHG - s2 s6 XCHG - s2 s5 XCHG - s2 s4 XCHG - s2 s3 XCHG + 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 8 BLKDROP2 + 1 11 BLKDROP2 }> CALLREF - s0 s8 XCHG + s0 s11 XCHG <{ 32 LDU s0 s1 XCHG @@ -472,43 +520,47 @@ SETCP0 s0 s1 XCHG }> CALLREF s1 POP + s10 s11 XCHG + s9 s10 XCHG + s8 s9 XCHG s7 s8 XCHG s6 s7 XCHG s5 s6 XCHG s4 s5 XCHG s3 s4 XCHG s1 s3 s0 XCHG3 - 52 CALLDICT + 54 CALLDICT <{ NEWC 2 GETGLOBVAR s0 s1 XCHG STREF - 8 1 BLKSWAP + 11 1 BLKSWAP <{ - s8 s7 XCHG2 + s11 s10 XCHG2 STGRAMS - s0 s5 XCHG2 + s0 s8 XCHG2 STSLICER - s3 PUSH + s6 PUSH ISNULL NOT <{ -1 PUSHINT s0 s1 XCHG 1 STI - s1 s3 XCHG + s1 s6 XCHG STREF }> PUSHCONT <{ - s3 POP + s6 POP 0 PUSHINT - s0 s3 XCHG2 + s0 s6 XCHG2 1 STI }> PUSHCONT IFELSE + s1 s4 XCHG 1 STI - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -534,11 +586,11 @@ SETCP0 STSLICER }> PUSHCONT IFELSE - s0 s2 XCHG + s0 s1 XCHG NEWC 257 PUSHINT STIX - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -551,6 +603,14 @@ SETCP0 STSLICER }> PUSHCONT IFELSE + s4 s3 XCHG2 + <{ + s2 s3 XCHG2 + STDICT + STDICT + 257 PUSHINT + STIX + }> CALLREF ENDC s0 s1 XCHG STREF @@ -629,17 +689,26 @@ SETCP0 PUSHNULL }> PUSHCONT IFELSE - s1 POP - s2 s8 XCHG - s2 s7 XCHG - s2 s6 XCHG - s2 s5 XCHG - s2 s4 XCHG - s2 s3 XCHG + 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 8 BLKDROP2 + 1 11 BLKDROP2 }> CALLREF - s0 s8 XCHG + s0 s11 XCHG <{ 32 LDU s0 s1 XCHG @@ -659,43 +728,47 @@ SETCP0 s0 s1 XCHG }> CALLREF s1 POP + s10 s11 XCHG + s9 s10 XCHG + s8 s9 XCHG s7 s8 XCHG s6 s7 XCHG s5 s6 XCHG s4 s5 XCHG s3 s4 XCHG s1 s3 s0 XCHG3 - 53 CALLDICT + 55 CALLDICT <{ NEWC 2 GETGLOBVAR s0 s1 XCHG STREF - 8 1 BLKSWAP + 11 1 BLKSWAP <{ - s8 s7 XCHG2 + s11 s10 XCHG2 STGRAMS - s0 s5 XCHG2 + s0 s8 XCHG2 STSLICER - s3 PUSH + s6 PUSH ISNULL NOT <{ -1 PUSHINT s0 s1 XCHG 1 STI - s1 s3 XCHG + s1 s6 XCHG STREF }> PUSHCONT <{ - s3 POP + s6 POP 0 PUSHINT - s0 s3 XCHG2 + s0 s6 XCHG2 1 STI }> PUSHCONT IFELSE + s1 s4 XCHG 1 STI - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -721,11 +794,11 @@ SETCP0 STSLICER }> PUSHCONT IFELSE - s0 s2 XCHG + s0 s1 XCHG NEWC 257 PUSHINT STIX - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -738,6 +811,14 @@ SETCP0 STSLICER }> PUSHCONT IFELSE + s4 s3 XCHG2 + <{ + s2 s3 XCHG2 + STDICT + STDICT + 257 PUSHINT + STIX + }> CALLREF ENDC s0 s1 XCHG STREF @@ -815,17 +896,26 @@ SETCP0 PUSHNULL }> PUSHCONT IFELSE - s1 POP - s2 s8 XCHG - s2 s7 XCHG - s2 s6 XCHG - s2 s5 XCHG - s2 s4 XCHG - s2 s3 XCHG + 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 8 BLKDROP2 + 1 11 BLKDROP2 }> CALLREF - s0 s8 XCHG + s0 s11 XCHG <{ 32 LDU s0 s1 XCHG @@ -853,6 +943,9 @@ SETCP0 s3 s3 s0 XCHG3 }> CALLREF s4 POP + s13 s14 XCHG + s12 s13 XCHG + s11 s12 XCHG s10 s11 XCHG s9 s10 XCHG s8 s9 XCHG @@ -861,37 +954,38 @@ SETCP0 s5 s6 XCHG s4 s5 XCHG 1 3 BLKSWAP - 54 CALLDICT + 56 CALLDICT <{ NEWC 2 GETGLOBVAR s0 s1 XCHG STREF - 8 1 BLKSWAP + 11 1 BLKSWAP <{ - s8 s7 XCHG2 + s11 s10 XCHG2 STGRAMS - s0 s5 XCHG2 + s0 s8 XCHG2 STSLICER - s3 PUSH + s6 PUSH ISNULL NOT <{ -1 PUSHINT s0 s1 XCHG 1 STI - s1 s3 XCHG + s1 s6 XCHG STREF }> PUSHCONT <{ - s3 POP + s6 POP 0 PUSHINT - s0 s3 XCHG2 + s0 s6 XCHG2 1 STI }> PUSHCONT IFELSE + s1 s4 XCHG 1 STI - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -917,11 +1011,11 @@ SETCP0 STSLICER }> PUSHCONT IFELSE - s0 s2 XCHG + s0 s1 XCHG NEWC 257 PUSHINT STIX - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -934,6 +1028,14 @@ SETCP0 STSLICER }> PUSHCONT IFELSE + s4 s3 XCHG2 + <{ + s2 s3 XCHG2 + STDICT + STDICT + 257 PUSHINT + STIX + }> CALLREF ENDC s0 s1 XCHG STREF @@ -951,20 +1053,20 @@ SETCP0 ISNULL 128 THROWIF - 30: + 32: - 33: + 35: NEWC ENDC - 34: + 36: CTOS - 35: - 33 CALLDICT - 34 CALLDICT + 37: + 35 CALLDICT + 36 CALLDICT - 36: + 38: 0 PUSHINT ROTREV NEWC @@ -995,7 +1097,7 @@ SETCP0 ENDC CTOS - 37: + 39: NEWC 1 PUSHINT s0 s1 XCHG @@ -1112,23 +1214,26 @@ SETCP0 s0 s1 XCHG 1 STI - 38: + 40: + 0 PUSHINT PUSHNULL PUSHNULL 0 PUSHINT - s0 s5 XCHG + s0 s6 XCHG NEWC STREF + s0 s6 XCHG s0 s5 XCHG - s4 s4 s4 XCHG3 + 3 1 BLKSWAP <{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX - ROT + s0 s3 XCHG2 STSLICER s0 s1 XCHG STSLICER + 1 STI NEWC s2 PUSH ISNULL @@ -1167,7 +1272,7 @@ SETCP0 }> CALLREF ENDC - 39: + 41: s0 s2 XCHG CTOS LDDICT @@ -1190,9 +1295,9 @@ SETCP0 STDICT ENDC s0 s0 s3 XCHG3 - 38 CALLDICT + 40 CALLDICT - 40: + 42: PUSHNULL s0 s4 XCHG NEWC @@ -1226,7 +1331,7 @@ SETCP0 }> CALLREF ENDC - 41: + 43: s0 s3 XCHG CTOS LDDICT @@ -1250,43 +1355,43 @@ SETCP0 ENDC 3 1 BLKSWAP s0 s4 XCHG - 40 CALLDICT + 42 CALLDICT - 42: + 44: 2 GETGLOBVAR MYADDR ROT - 39 CALLDICT + 41 CALLDICT - 43: - 42 CALLDICT - 8 2 BLKDROP2 - 36 CALLDICT + 45: + 44 CALLDICT + 11 2 BLKDROP2 + 38 CALLDICT - 44: + 46: MYADDR - 42 CALLDICT - 4 2 BLKDROP2 + 44 CALLDICT + 7 2 BLKDROP2 s0 POP s3 s3 s0 XCHG3 - 45: - s10 s1 XCPU + 47: + s13 s1 XCPU ADD - 8 2 BLKSWAP - 42 CALLDICT + 11 2 BLKSWAP + 44 CALLDICT 2DUP - 36 CALLDICT + 38 CALLDICT 2 GETGLOBVAR MYADDR - 6 2 -2 PU2XC - 41 CALLDICT + 9 2 -2 PU2XC + 43 CALLDICT 2DUP - 36 CALLDICT + 38 CALLDICT 0 PUSHINT 20000000 PUSHINT 0 PUSHINT - s0 s11 XCHG + s0 s14 XCHG <{ NEWC s0 s1 XCHG @@ -1313,28 +1418,28 @@ SETCP0 s3 PUSH s3 s6 XCHG s4 s1 s5 XCHG3 - s3 s12 XCHG - s1 s12 s0 XCHG3 - 37 CALLDICT - s5 PUSH - s0 s5 XCHG + s3 s15 XCHG + s1 s15 s0 XCHG3 + 39 CALLDICT + s8 PUSH + s0 s8 XCHG INC 0 PUSHINT MYADDR s1 PUSH - 35 CALLDICT + 37 CALLDICT s4 PUSH DEC s4 s7 XCHG s0 s6 XCHG - s0 s17 XCHG + s0 s20 XCHG s0 s6 XCHG s3 s5 XCHG s0 s4 XCHG - s0 s18 XCHG + s0 s21 XCHG s0 s4 XCHG 1 3 BLKSWAP - s0 s11 XCHG + s0 s14 XCHG <{ NEWC 8 1 BLKSWAP @@ -1405,39 +1510,46 @@ SETCP0 }> CALLREF 0 PUSHINT s0 s4 XCHG - s3 s11 XCHG + s3 s14 XCHG 50000000 PUSHINT s0 s3 XCHG 0 PUSHINT s3 s1 s3 XCHG3 - s0 s14 XCHG - 37 CALLDICT + s0 s17 XCHG + 39 CALLDICT + s8 s10 XCHG + s7 s9 XCHG + s6 s8 XCHG s5 s7 XCHG s4 s6 XCHG - s3 s5 XCHG - s4 s0 s3 XCHG3 - s0 s2 XCHG + s0 s3 s5 XCHG3 + s1 s4 XCHG - 46: - s7 s10 XCHG - s6 s9 XCHG - s5 s8 XCHG - s4 s10 XCHG - s3 s9 XCHG - s8 s10 s9 XCHG3 - s8 PUSH - 42 CALLDICT + 48: + s10 s13 XCHG + s9 s12 XCHG + s8 s11 XCHG + s7 s13 XCHG + s6 s12 XCHG + s5 s11 XCHG + s4 s13 XCHG + s3 s12 XCHG + s11 s13 s12 XCHG3 + s11 PUSH + 44 CALLDICT 2DUP - 36 CALLDICT + 38 CALLDICT 0 PUSHINT 0 PUSHINT 64 PUSHINT 1 0 2 PUXC2 s0 s2 XCHG - s0 s17 XCHG + s0 s20 XCHG s0 s2 XCHG - s0 s16 XCHG - s1 s15 XCHG + s0 s1 XCHG + s0 s18 XCHG + s0 s1 XCHG + s0 s19 XCHG <{ NEWC 4 1 BLKSWAP @@ -1467,61 +1579,72 @@ SETCP0 }> CALLREF ENDC }> CALLREF - s6 s13 XCHG + s0 s6 XCHG + s0 s16 XCHG + s0 s6 XCHG s1 s5 XCHG - s4 s14 XCHG - s3 s12 XCHG - s12 s2 XCHG2 - 37 CALLDICT - s4 s7 XCHG - 3 4 BLKSWAP + s0 s4 XCHG + s0 s17 XCHG + s0 s4 XCHG + s3 s15 XCHG + s15 s2 XCHG2 + 39 CALLDICT + s7 s10 XCHG + 3 7 BLKSWAP - 47: + 49: 1 GETGLOBVAR 4 UNTUPLE s2 s3 XCHG 3 BLKDROP - 9 1 BLKSWAP - 42 CALLDICT + 12 1 BLKSWAP + 44 CALLDICT s0 s1 XCHG 4429 PUSHINT s0 s2 XCHG - 36 CALLDICT - s0 s10 XCHG2 + 38 CALLDICT + s0 s13 XCHG2 SDEQ - s1 s9 XCHG + s1 s12 XCHG THROWANYIFNOT - 1 7 BLKSWAP + 1 10 BLKSWAP - 48: + 50: 1 GETGLOBVAR 4 UNTUPLE s2 s3 XCHG 3 BLKDROP - s7 PUSH + s10 PUSH SDEQ 132 THROWIFNOT - 49: - s6 s7 XCHG - 7 BLKDROP + 51: + s9 s10 XCHG + 10 BLKDROP - 50: + 52: 1 GETGLOBVAR 4 UNTUPLE s0 POP + s2 POP 32366 PUSHINT - s3 POP 10000000 PUSHINT + s4 PUSH + ADD + 20000000 PUSHINT + ADD + 50000000 PUSHINT + ADD + s1 s3 XCHG GEQ s1 s2 XCHG THROWANYIFNOT TUCK - 45 CALLDICT + 47 CALLDICT - 51: + 53: - 52: + 54: 1 GETGLOBVAR 4 UNTUPLE s0 POP @@ -1532,32 +1655,40 @@ SETCP0 s1 s2 XCHG THROWANYIFNOT TUCK - 46 CALLDICT - - 53: - 8 1 BLKSWAP 48 CALLDICT - s5 POP - s6 s7 XCHG - s5 s6 XCHG - 1 4 BLKSWAP - 54: + 55: + 11 1 BLKSWAP + 50 CALLDICT + s8 POP + s9 s10 XCHG + s8 s9 XCHG + 1 7 BLKSWAP + + 56: s0 POP s2 POP - 8 2 BLKSWAP - s9 PUSH - 47 CALLDICT - s7 s8 XCPU + s10 s12 XCHG + 5 8 REVERSE + s7 s11 XCHG + s6 s12 XCHG + s5 s11 XCHG + s4 s12 XCHG + s3 s11 XCHG + s12 s11 s12 XCHG3 + s11 PUSH + 49 CALLDICT + s10 s12 XCPU SUB 0 PUSHINT - s0 s10 s9 XCHG3 + s0 s12 s13 XCHG3 0 PUSHINT PUSHNULL PUSHNULL PUSHNULL - 37 CALLDICT - 2 5 BLKSWAP + 39 CALLDICT + s9 s10 XCHG + 2 8 BLKSWAP owner: <{ @@ -1625,17 +1756,26 @@ SETCP0 PUSHNULL }> PUSHCONT IFELSE - s1 POP - s2 s8 XCHG - s2 s7 XCHG - s2 s6 XCHG - s2 s5 XCHG - s2 s4 XCHG - s2 s3 XCHG + 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 8 BLKDROP2 + 1 11 BLKDROP2 }> CALLREF - 49 CALLDICT + 51 CALLDICT get_wallet_address: <{ @@ -1703,18 +1843,27 @@ SETCP0 PUSHNULL }> PUSHCONT IFELSE - s1 POP - s2 s8 XCHG - s2 s7 XCHG - s2 s6 XCHG - s2 s5 XCHG - s2 s4 XCHG - s2 s3 XCHG + 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 8 BLKDROP2 + 1 11 BLKDROP2 }> CALLREF - 1 8 BLKSWAP - 43 CALLDICT + 1 11 BLKSWAP + 45 CALLDICT get_jetton_data: <{ @@ -1782,18 +1931,27 @@ SETCP0 PUSHNULL }> PUSHCONT IFELSE - s1 POP - s2 s8 XCHG - s2 s7 XCHG - s2 s6 XCHG - s2 s5 XCHG - s2 s4 XCHG - s2 s3 XCHG + 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 8 BLKDROP2 + 1 11 BLKDROP2 }> CALLREF - 44 CALLDICT - 30 CALLDICT + 46 CALLDICT + 32 CALLDICT 113617: 123515602279859691144772641439386770278 PUSHINT diff --git a/sources/output/jetton_TONB.init.boc b/sources/output/jetton_TONB.init.boc index 765b1ac6b89aef5c19f3e7e964f874e58242aa58..c96f9cf7d25b58c760b99fdd2d3cc750978b4a78 100644 GIT binary patch delta 128 zcmV-`0Du3H0jdECweFm90RadB0H2Wx9zYEM0n`C8X|=V%wX~7^FC#E49YU2tO+X+S z5L0aPCI$hdP`dg8PzcW!CT_Eqe*ww>7R;75a8L%y0OAzN09cV>87TqCfdK)}09YVy il`wDt%K?(l7UEDt+dRnu%m)A#P$TpJ^Z$^EcjEwAz3~dv+w|`;WN{W3j&x=F+4iOz^ITn)u4d!G~=Z6VvkTbOeY!{8PB6C IILUYh0JiEakN^Mx diff --git a/sources/output/jetton_TONB.init.fc b/sources/output/jetton_TONB.init.fc index 5e3b4a7..66ea57e 100644 --- a/sources/output/jetton_TONB.init.fc +++ b/sources/output/jetton_TONB.init.fc @@ -17,8 +17,16 @@ builder __tact_store_address_opt(builder b, slice address) inline { } } -builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, int, slice) v) inline_ref { - var (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool) = v; +builder __gen_write_WithdrawalRequests(builder build_0, (cell, cell, int) v) inline_ref { + var (v'addresses, v'amounts, v'n_requests) = v; + build_0 = build_0.store_dict(v'addresses); + build_0 = build_0.store_dict(v'amounts); + build_0 = build_0.store_int(v'n_requests, 257); + return build_0; +} + +builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, int, slice, (cell, cell, int)) v) inline_ref { + var (v'totalSupply, v'owner, v'content, v'mintable, v'first_linker, v'last_linker, v'n_linkers, v'staking_pool, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)) = v; build_0 = build_0.store_coins(v'totalSupply); build_0 = __tact_store_address(build_0, v'owner); build_0 = ~ null?(v'content) ? build_0.store_int(true, 1).store_ref(v'content) : build_0.store_int(false, 1); @@ -28,19 +36,20 @@ builder __gen_write_TONB(builder build_0, (int, slice, cell, int, slice, slice, var build_1 = begin_cell(); build_1 = build_1.store_int(v'n_linkers, 257); build_1 = __tact_store_address_opt(build_1, v'staking_pool); + build_1 = __gen_write_WithdrawalRequests(build_1, (v'withdrawal_requests'addresses, v'withdrawal_requests'amounts, v'withdrawal_requests'n_requests)); build_0 = store_ref(build_0, build_1.end_cell()); return build_0; } cell $__gen_TONB_init(cell sys', slice $owner, cell $content) { - var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = (null(), null(), null(), null(), null(), null(), 0, null()); + var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))) = (null(), null(), null(), null(), null(), null(), 0, null(), null()); $self'totalSupply = 0; $self'owner = $owner; $self'mintable = true; $self'content = $content; var b' = begin_cell(); b' = b'.store_ref(sys'); - b' = __gen_write_TONB(b', ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)); + b' = __gen_write_TONB(b', ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool, ($self'withdrawal_requests'addresses, $self'withdrawal_requests'amounts, $self'withdrawal_requests'n_requests))); return b'.end_cell(); } diff --git a/sources/output/jetton_TONB.init.fif b/sources/output/jetton_TONB.init.fif index a758673..37b2487 100644 --- a/sources/output/jetton_TONB.init.fif +++ b/sources/output/jetton_TONB.init.fif @@ -2,6 +2,7 @@ PROGRAM{ DECLPROC __tact_verify_address DECLPROC __tact_store_address DECLPROC __tact_store_address_opt + DECLPROC __gen_write_WithdrawalRequests DECLPROC __gen_write_TONB DECLPROC $__gen_TONB_init 107886 DECLMETHOD init @@ -27,37 +28,47 @@ PROGRAM{ __tact_store_address INLINECALLDICT }> }> + __gen_write_WithdrawalRequests PROCREF:<{ + s2 s3 XCHG2 + STDICT + STDICT + 257 PUSHINT + STIX + }> __gen_write_TONB PROCREF:<{ - s8 s7 XCHG2 + s11 s10 XCHG2 STGRAMS - s0 s5 XCHG2 + s0 s8 XCHG2 __tact_store_address INLINECALLDICT - s3 PUSH + s6 PUSH ISNULL NOT IF:<{ TRUE SWAP 1 STI - s1 s3 XCHG + s1 s6 XCHG STREF }>ELSE<{ - s3 POP + s6 POP FALSE - s0 s3 XCHG2 + s0 s6 XCHG2 1 STI }> + s1 s4 XCHG 1 STI - SWAP + ROT __tact_store_address_opt INLINECALLDICT SWAP __tact_store_address_opt INLINECALLDICT - s0 s2 XCHG + SWAP NEWC 257 PUSHINT STIX - SWAP + ROT __tact_store_address_opt INLINECALLDICT + s4 s3 XCHG2 + __gen_write_WithdrawalRequests INLINECALLDICT ENDC SWAP STREF @@ -67,16 +78,19 @@ PROGRAM{ PUSHNULL 0 PUSHINT PUSHNULL - OVER + PUSHNULL + s4 PUSH TRUE - s0 s8 XCHG + s0 s11 XCHG NEWC STREF - s0 s8 XCHG - s4 s7 s4 XCHG3 - s1 s6 XCHG - s1 s5 XCHG - s1 s3 XCHG + s0 s11 XCHG + s0 s7 XCHG + s10 s5 XCHG2 + s9 s3 XCHG2 + s0 s8 XCHG2 + s0 s6 XCHG + s4 s1 s4 XCHG3 __gen_write_TONB INLINECALLDICT ENDC }> diff --git a/sources/output/jetton_TONB.init.rev.fif b/sources/output/jetton_TONB.init.rev.fif index 048a6ff..d8fe2dd 100644 --- a/sources/output/jetton_TONB.init.rev.fif +++ b/sources/output/jetton_TONB.init.rev.fif @@ -2,45 +2,49 @@ SETCP0 (:methods recv_internal: - 5: + 6: PUSHNULL PUSHNULL 0 PUSHINT PUSHNULL - s1 PUSH + PUSHNULL + s4 PUSH -1 PUSHINT - s0 s8 XCHG + s0 s11 XCHG NEWC STREF - s0 s8 XCHG - s4 s7 s4 XCHG3 - s1 s6 XCHG - s1 s5 XCHG - s1 s3 XCHG + s0 s11 XCHG + s0 s7 XCHG + s10 s5 XCHG2 + s9 s3 XCHG2 + s0 s8 XCHG2 + s0 s6 XCHG + s4 s1 s4 XCHG3 <{ - s8 s7 XCHG2 + s11 s10 XCHG2 STGRAMS - s0 s5 XCHG2 + s0 s8 XCHG2 STSLICER - s3 PUSH + s6 PUSH ISNULL NOT <{ -1 PUSHINT s0 s1 XCHG 1 STI - s1 s3 XCHG + s1 s6 XCHG STREF }> PUSHCONT <{ - s3 POP + s6 POP 0 PUSHINT - s0 s3 XCHG2 + s0 s6 XCHG2 1 STI }> PUSHCONT IFELSE + s1 s4 XCHG 1 STI - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -66,11 +70,11 @@ SETCP0 STSLICER }> PUSHCONT IFELSE - s0 s2 XCHG + s0 s1 XCHG NEWC 257 PUSHINT STIX - s0 s1 XCHG + ROT s0 PUSH ISNULL <{ @@ -83,6 +87,14 @@ SETCP0 STSLICER }> PUSHCONT IFELSE + s4 s3 XCHG2 + <{ + s2 s3 XCHG2 + STDICT + STDICT + 257 PUSHINT + STIX + }> CALLREF ENDC s0 s1 XCHG STREF @@ -90,7 +102,7 @@ SETCP0 ENDC 107886: - 5 CALLDICT + 6 CALLDICT ) 19 DICTPUSHCONST DICTIGETJMPZ 11 THROWARG diff --git a/sources/output/jetton_TONB.md b/sources/output/jetton_TONB.md index 9e86721..4254417 100644 --- a/sources/output/jetton_TONB.md +++ b/sources/output/jetton_TONB.md @@ -1,9 +1,9 @@ # TACT Compilation Report Contract: TONB -BOC Size: 1708 bytes +BOC Size: 1822 bytes # Types -Total Types: 18 +Total Types: 27 ## StateInit TLB: `_ code:^cell data:^cell = StateInit` @@ -61,6 +61,42 @@ Signature: `SetLinkerNeighbor{neighbor:Maybe address}` TLB: `init_linker#67c08154 neighbor:Maybe address walletAmount:int257 walletCode:^cell walletData:^cell walletAddress:address responseAddress:Maybe address = InitLinker` Signature: `InitLinker{neighbor:Maybe address,walletAmount:int257,walletCode:^cell,walletData:^cell,walletAddress:address,responseAddress:Maybe address}` +## ForwardToWallet +TLB: `forward_to_wallet#5d1da2bb body:^cell = ForwardToWallet` +Signature: `ForwardToWallet{body:^cell}` + +## BlacklistWallet +TLB: `blacklist_wallet#029c8396 wallet:address = BlacklistWallet` +Signature: `BlacklistWallet{wallet:address}` + +## InitiateBlacklistVote +TLB: `initiate_blacklist_vote#e8fffb0b adminIndex:int257 wallet:address quorum_percent:int257 vote_time:int257 = InitiateBlacklistVote` +Signature: `InitiateBlacklistVote{adminIndex:int257,wallet:address,quorum_percent:int257,vote_time:int257}` + +## InitiateLiquidationVote +TLB: `initiate_liquidation_vote#11fb862f adminIndex:int257 quorum_percent:int257 vote_time:int257 = InitiateLiquidationVote` +Signature: `InitiateLiquidationVote{adminIndex:int257,quorum_percent:int257,vote_time:int257}` + +## FinishVote +TLB: `finish_vote#2a574443 voteId:int257 = FinishVote` +Signature: `FinishVote{voteId:int257}` + +## Vote +TLB: `vote#b670f4ce voteId:int257 adminIndex:int257 vote:int257 = Vote` +Signature: `Vote{voteId:int257,adminIndex:int257,vote:int257}` + +## AddressList +TLB: `_ addresses:dict length:int257 = AddressList` +Signature: `AddressList{addresses:dict,length:int257}` + +## Distribution +TLB: `_ addresses:AddressList{addresses:dict,length:int257} percents:dict = Distribution` +Signature: `Distribution{addresses:AddressList{addresses:dict,length:int257},percents:dict}` + +## InitiateDistributionVote +TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict,length:int257},percents:dict} = InitiateDistributionVote` +Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict,length:int257},percents:dict}}` + ## WithdrawalRequests TLB: `_ addresses:dict amounts:dict n_requests:int257 = WithdrawalRequests` Signature: `WithdrawalRequests{addresses:dict,amounts:dict,n_requests:int257}` diff --git a/sources/output/jetton_TONB.pkg b/sources/output/jetton_TONB.pkg index a393164..e6ead64 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\":\"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\"},\"62972\":{\"message\":\"Invalid balance\"}}}","init":{"code":"te6ccgEBBwEAhgABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBJWW1tcG0hfwjIzAhEdBYVE9s8yYGAJpQh/oCUAXPFiNus5Z/AcoAE8yWM3BQA8oA4soAASBulTBwAcsBks8W4gEgbpUwcAHLAZLPFuICyIEBAc8AASBulTBwAcsBks8W4skBzA==","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 +{"name":"TONB","code":"te6ccgECUgEABxIAART/APSkE/S88sgLAQIBYgIDAgLKBAUCASAGBwIB0gwNAgEgHB0BDb4o7tnngZwVAgFICAkCAVgKCwCVt3owTgudh6ullc9j0J2HOslQo2zQThO6xqWlbI+WZFp15b++LEcwThhMiKTJr7fJFy9sM7TqukCwTggZzq084r86ShYDrC3EyPZQARGtvO2eKoV4FsAVARGvFu2eeBd4EEAVBLUcCHXScIflTAg1wsf3gLQ0wMBcbDAAZF/kXDiAfpAIlBmbwT4YQKRW+AgghAh7rYHuo+dMNs8C9s8MRCrEJoQiRB4EGcQVhBFEDRBMPA02zzgIMAAItdJwSGwgFQ4XDwALCBu8tCAgACDTHwGCECHutge68uCB+gABBDiPB1vbPPA12zzgIIIQYFkVELrjAiCCEAwIep66FRcQEQM6MNs8C9s8MRCrEJoQiRB4EGcQVhBFEDRBMPA22zwVEhcETo+dMNs8C9s8MRCrEJoQiRB4EGcQVhBFEDRBMPA32zzgghB73ZfeuhUTFxQAJtMfAYIQYFkVELry4IGBAQHXAAEALtMfAYIQDAh6nrry4IHSAAGR1JJtAeIBA06PoNs8C9s8NBDeEM0QvBCrEJoQiRB4EGcQVhBFVQLwONs84DDywIIVFhcBFu1E0NQB+GLbPGwbGABM0x8BghB73ZfeuvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeIUQzABGMj4QgHMVaDbPMntVBoBrPoA+kABAdIAAZHUkm0B4tIA+kAh1wsBwwCRAZIxbeIB+kAh1wsBwwCRAZIxbeIB1AHQgQEB1wD6QCHXCwHDAJEBkjFt4gHbPDMQWxBaEFkQWBBXEFZYGQAW9AT0BIEBAdcAVSABpFC6+gJQCM8WJm6zln8BygAWzJY2cFAGygDiFMoAWCBulTBwAcsBks8W4gEgbpUwcAHLAZLPFuIByIEBAc8AWCBulTBwAcsBks8W4lBD2zzJAcwbABZQI/QA9ACBAQHPAAIBIB4fAgEgQEECASAgIQIBICwtAgEgIiMCASAkJQABSAAFXIyYAgEgJicCASAoKQADNCAACTwI/AkgAEscFnIcAHLAXMBywFwAcsAEszMyfkAyHIBywFwAcsAEsoHy//J0IAL3MhxAcoBUAcBygBwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY5GfwHKAMhwAcoAcAHKACRus5p/AcoABPABUATMljQDcAHKAOIkbrOafwHKAATwAVAEzJY0A3ABygDicAHKAAJ/AcoAAslYzJczMwFwAcoA4iFus+MPyQH7AICorABJ/AcoAAfABAcwACjFwAcoAAgEgLi8CASA2NwIBIDAxAgEgMzQBHRwbW1wBsjMBgVVINs8yYDIATQC0PQEMG0BgWCEAYAQ9A9vofLghwGBYIQiAoAQ9BfI9ADJQAPwKIABsUFaBAQHPAFADzxYBzxbKAMgibrOafwHKABKBAQHPAJUycFjKAOJYIG6VMHABywGSzxbiyQHMARMbQTIzFAk2zzJgNQBTAPQ9AQwbQGCAOpLAYAQ9A9vofLghwGCAOpLIgKAEPQXyPQAyVUgBPAqgADxQNIEBAc8AAc8WAc8WyFggbpUwcAHLAZLPFuLJAcwCASA4OQIBIDo7AA8+EL4KFjwKYAANPAsbLLwJoAATPgo8CxscjBDMIALLFHRoFWh8Cxc8Cb4QvgoVGkw8Ctc8CZwggkxLQBwDts8IxA2RBUQP0Hw8CcoCKRw+Cgh8CUkpRBHBhEUBhA1BBEVBFUCDts8cAQQPoIK+vCAA3BDExER8CcQihB5EGgQVxBGQDUUgPD0BCsgB2zzJPgEMyFVw2zzJPwAsghCz/PTBWMsfASBulTBwAcsBks8W4gCcghAXjUUZUAnLHxfLP1AF+gJQA88WASBulTBwAcsBks8W4gH6AgHPFsgibrOafwHKABKBAQHPAJUycFjKAOJYIG6VMHABywGSzxbiyQHMAgEgQkMAS9mBkIVi8cCD2INggtiCYIHaZeFfgYqNZQuCBmuDa2tvgTiE0qi8AgEgREUCASBMTQIBIEZHAgEgSksBfQQrRCcEIsQfRBsEFsQTRA8S9wr8Cxc8CZwcIBAVEETAhEUAgEREgERE9s8BhEQBhUEEREEED9Q8vAnEHpVJoEgAOT4QW8kECNfA1Ww8CwBgRFNAvAmUA3HBRzy9FUJgAQzIVTDbPMlJAECCEFlfB7xQBcsfE8s/AfoCAc8WASBulTBwAcsBks8W4gAdPhBbyQQI18DKscF8uCEgAAkEJpfCoAIBIE5PAgEgUFEAST4QW8kMDKBfm6CCJiWgCSgggkxLQCgggr68ICgE74S8vRm8C+AAASAAKz4QW8kMIEY8DOCCJiWgL4S8vRm8DCAAFxVoPAyOBCaEIlVBoA==","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":"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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 562cb59..419cb45 100644 --- a/sources/output/jetton_TONB.ts +++ b/sources/output/jetton_TONB.ts @@ -791,6 +791,437 @@ function dictValueParserInitLinker(): DictionaryValue { } } } +export type ForwardToWallet = { + $$type: 'ForwardToWallet'; + body: Cell; +} + +export function storeForwardToWallet(src: ForwardToWallet) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(1562223291, 32); + b_0.storeRef(src.body); + }; +} + +export function loadForwardToWallet(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 1562223291) { throw Error('Invalid prefix'); } + let _body = sc_0.loadRef(); + return { $$type: 'ForwardToWallet' as const, body: _body }; +} + +function loadTupleForwardToWallet(source: TupleReader) { + let _body = source.readCell(); + return { $$type: 'ForwardToWallet' as const, body: _body }; +} + +function storeTupleForwardToWallet(source: ForwardToWallet) { + let builder = new TupleBuilder(); + builder.writeCell(source.body); + return builder.build(); +} + +function dictValueParserForwardToWallet(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeForwardToWallet(src)).endCell()); + }, + parse: (src) => { + return loadForwardToWallet(src.loadRef().beginParse()); + } + } +} +export type BlacklistWallet = { + $$type: 'BlacklistWallet'; + wallet: Address; +} + +export function storeBlacklistWallet(src: BlacklistWallet) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(43811734, 32); + b_0.storeAddress(src.wallet); + }; +} + +export function loadBlacklistWallet(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 43811734) { throw Error('Invalid prefix'); } + let _wallet = sc_0.loadAddress(); + return { $$type: 'BlacklistWallet' as const, wallet: _wallet }; +} + +function loadTupleBlacklistWallet(source: TupleReader) { + let _wallet = source.readAddress(); + return { $$type: 'BlacklistWallet' as const, wallet: _wallet }; +} + +function storeTupleBlacklistWallet(source: BlacklistWallet) { + let builder = new TupleBuilder(); + builder.writeAddress(source.wallet); + return builder.build(); +} + +function dictValueParserBlacklistWallet(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeBlacklistWallet(src)).endCell()); + }, + parse: (src) => { + return loadBlacklistWallet(src.loadRef().beginParse()); + } + } +} +export type InitiateBlacklistVote = { + $$type: 'InitiateBlacklistVote'; + adminIndex: bigint; + wallet: Address; + quorum_percent: bigint; + vote_time: bigint; +} + +export function storeInitiateBlacklistVote(src: InitiateBlacklistVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3909090059, 32); + b_0.storeInt(src.adminIndex, 257); + b_0.storeAddress(src.wallet); + b_0.storeInt(src.quorum_percent, 257); + let b_1 = new Builder(); + b_1.storeInt(src.vote_time, 257); + b_0.storeRef(b_1.endCell()); + }; +} + +export function loadInitiateBlacklistVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3909090059) { throw Error('Invalid prefix'); } + let _adminIndex = sc_0.loadIntBig(257); + let _wallet = sc_0.loadAddress(); + let _quorum_percent = sc_0.loadIntBig(257); + let sc_1 = sc_0.loadRef().beginParse(); + let _vote_time = sc_1.loadIntBig(257); + return { $$type: 'InitiateBlacklistVote' as const, adminIndex: _adminIndex, wallet: _wallet, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function loadTupleInitiateBlacklistVote(source: TupleReader) { + let _adminIndex = source.readBigNumber(); + let _wallet = source.readAddress(); + let _quorum_percent = source.readBigNumber(); + let _vote_time = source.readBigNumber(); + return { $$type: 'InitiateBlacklistVote' as const, adminIndex: _adminIndex, wallet: _wallet, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function storeTupleInitiateBlacklistVote(source: InitiateBlacklistVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.adminIndex); + builder.writeAddress(source.wallet); + builder.writeNumber(source.quorum_percent); + builder.writeNumber(source.vote_time); + return builder.build(); +} + +function dictValueParserInitiateBlacklistVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeInitiateBlacklistVote(src)).endCell()); + }, + parse: (src) => { + return loadInitiateBlacklistVote(src.loadRef().beginParse()); + } + } +} +export type InitiateLiquidationVote = { + $$type: 'InitiateLiquidationVote'; + adminIndex: bigint; + quorum_percent: bigint; + vote_time: bigint; +} + +export function storeInitiateLiquidationVote(src: InitiateLiquidationVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(301696559, 32); + b_0.storeInt(src.adminIndex, 257); + b_0.storeInt(src.quorum_percent, 257); + b_0.storeInt(src.vote_time, 257); + }; +} + +export function loadInitiateLiquidationVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 301696559) { throw Error('Invalid prefix'); } + let _adminIndex = sc_0.loadIntBig(257); + let _quorum_percent = sc_0.loadIntBig(257); + let _vote_time = sc_0.loadIntBig(257); + return { $$type: 'InitiateLiquidationVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function loadTupleInitiateLiquidationVote(source: TupleReader) { + let _adminIndex = source.readBigNumber(); + let _quorum_percent = source.readBigNumber(); + let _vote_time = source.readBigNumber(); + return { $$type: 'InitiateLiquidationVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function storeTupleInitiateLiquidationVote(source: InitiateLiquidationVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.adminIndex); + builder.writeNumber(source.quorum_percent); + builder.writeNumber(source.vote_time); + return builder.build(); +} + +function dictValueParserInitiateLiquidationVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeInitiateLiquidationVote(src)).endCell()); + }, + parse: (src) => { + return loadInitiateLiquidationVote(src.loadRef().beginParse()); + } + } +} +export type FinishVote = { + $$type: 'FinishVote'; + voteId: bigint; +} + +export function storeFinishVote(src: FinishVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(710362179, 32); + b_0.storeInt(src.voteId, 257); + }; +} + +export function loadFinishVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 710362179) { throw Error('Invalid prefix'); } + let _voteId = sc_0.loadIntBig(257); + return { $$type: 'FinishVote' as const, voteId: _voteId }; +} + +function loadTupleFinishVote(source: TupleReader) { + let _voteId = source.readBigNumber(); + return { $$type: 'FinishVote' as const, voteId: _voteId }; +} + +function storeTupleFinishVote(source: FinishVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.voteId); + return builder.build(); +} + +function dictValueParserFinishVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeFinishVote(src)).endCell()); + }, + parse: (src) => { + return loadFinishVote(src.loadRef().beginParse()); + } + } +} +export type Vote = { + $$type: 'Vote'; + voteId: bigint; + adminIndex: bigint; + vote: bigint; +} + +export function storeVote(src: Vote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3060856014, 32); + b_0.storeInt(src.voteId, 257); + b_0.storeInt(src.adminIndex, 257); + b_0.storeInt(src.vote, 257); + }; +} + +export function loadVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3060856014) { throw Error('Invalid prefix'); } + let _voteId = sc_0.loadIntBig(257); + let _adminIndex = sc_0.loadIntBig(257); + let _vote = sc_0.loadIntBig(257); + return { $$type: 'Vote' as const, voteId: _voteId, adminIndex: _adminIndex, vote: _vote }; +} + +function loadTupleVote(source: TupleReader) { + let _voteId = source.readBigNumber(); + let _adminIndex = source.readBigNumber(); + let _vote = source.readBigNumber(); + return { $$type: 'Vote' as const, voteId: _voteId, adminIndex: _adminIndex, vote: _vote }; +} + +function storeTupleVote(source: Vote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.voteId); + builder.writeNumber(source.adminIndex); + builder.writeNumber(source.vote); + return builder.build(); +} + +function dictValueParserVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeVote(src)).endCell()); + }, + parse: (src) => { + return loadVote(src.loadRef().beginParse()); + } + } +} +export type AddressList = { + $$type: 'AddressList'; + addresses: Dictionary; + length: bigint; +} + +export function storeAddressList(src: AddressList) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeDict(src.addresses, Dictionary.Keys.BigInt(257), Dictionary.Values.Address()); + b_0.storeInt(src.length, 257); + }; +} + +export function loadAddressList(slice: Slice) { + let sc_0 = slice; + let _addresses = Dictionary.load(Dictionary.Keys.BigInt(257), Dictionary.Values.Address(), sc_0); + let _length = sc_0.loadIntBig(257); + return { $$type: 'AddressList' as const, addresses: _addresses, length: _length }; +} + +function loadTupleAddressList(source: TupleReader) { + let _addresses = Dictionary.loadDirect(Dictionary.Keys.BigInt(257), Dictionary.Values.Address(), source.readCellOpt()); + let _length = source.readBigNumber(); + return { $$type: 'AddressList' as const, addresses: _addresses, length: _length }; +} + +function storeTupleAddressList(source: AddressList) { + let builder = new TupleBuilder(); + builder.writeCell(source.addresses.size > 0 ? beginCell().storeDictDirect(source.addresses, Dictionary.Keys.BigInt(257), Dictionary.Values.Address()).endCell() : null); + builder.writeNumber(source.length); + return builder.build(); +} + +function dictValueParserAddressList(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeAddressList(src)).endCell()); + }, + parse: (src) => { + return loadAddressList(src.loadRef().beginParse()); + } + } +} +export type Distribution = { + $$type: 'Distribution'; + addresses: AddressList; + percents: Dictionary; +} + +export function storeDistribution(src: Distribution) { + return (builder: Builder) => { + let b_0 = builder; + b_0.store(storeAddressList(src.addresses)); + b_0.storeDict(src.percents, Dictionary.Keys.Address(), Dictionary.Values.BigInt(257)); + }; +} + +export function loadDistribution(slice: Slice) { + let sc_0 = slice; + let _addresses = loadAddressList(sc_0); + let _percents = Dictionary.load(Dictionary.Keys.Address(), Dictionary.Values.BigInt(257), sc_0); + return { $$type: 'Distribution' as const, addresses: _addresses, percents: _percents }; +} + +function loadTupleDistribution(source: TupleReader) { + const _addresses = loadTupleAddressList(source.readTuple()); + let _percents = Dictionary.loadDirect(Dictionary.Keys.Address(), Dictionary.Values.BigInt(257), source.readCellOpt()); + return { $$type: 'Distribution' as const, addresses: _addresses, percents: _percents }; +} + +function storeTupleDistribution(source: Distribution) { + let builder = new TupleBuilder(); + builder.writeTuple(storeTupleAddressList(source.addresses)); + builder.writeCell(source.percents.size > 0 ? beginCell().storeDictDirect(source.percents, Dictionary.Keys.Address(), Dictionary.Values.BigInt(257)).endCell() : null); + return builder.build(); +} + +function dictValueParserDistribution(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeDistribution(src)).endCell()); + }, + parse: (src) => { + return loadDistribution(src.loadRef().beginParse()); + } + } +} +export type InitiateDistributionVote = { + $$type: 'InitiateDistributionVote'; + adminIndex: bigint; + quorum_percent: bigint; + vote_time: bigint; + distribution: Distribution; +} + +export function storeInitiateDistributionVote(src: InitiateDistributionVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(276353205, 32); + b_0.storeInt(src.adminIndex, 257); + b_0.storeInt(src.quorum_percent, 257); + b_0.storeInt(src.vote_time, 257); + let b_1 = new Builder(); + b_1.store(storeDistribution(src.distribution)); + b_0.storeRef(b_1.endCell()); + }; +} + +export function loadInitiateDistributionVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 276353205) { throw Error('Invalid prefix'); } + let _adminIndex = sc_0.loadIntBig(257); + let _quorum_percent = sc_0.loadIntBig(257); + let _vote_time = sc_0.loadIntBig(257); + let sc_1 = sc_0.loadRef().beginParse(); + let _distribution = loadDistribution(sc_1); + return { $$type: 'InitiateDistributionVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time, distribution: _distribution }; +} + +function loadTupleInitiateDistributionVote(source: TupleReader) { + let _adminIndex = source.readBigNumber(); + let _quorum_percent = source.readBigNumber(); + let _vote_time = source.readBigNumber(); + const _distribution = loadTupleDistribution(source.readTuple()); + return { $$type: 'InitiateDistributionVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time, distribution: _distribution }; +} + +function storeTupleInitiateDistributionVote(source: InitiateDistributionVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.adminIndex); + builder.writeNumber(source.quorum_percent); + builder.writeNumber(source.vote_time); + builder.writeTuple(storeTupleDistribution(source.distribution)); + return builder.build(); +} + +function dictValueParserInitiateDistributionVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeInitiateDistributionVote(src)).endCell()); + }, + parse: (src) => { + return loadInitiateDistributionVote(src.loadRef().beginParse()); + } + } +} export type WithdrawalRequests = { $$type: 'WithdrawalRequests'; addresses: Dictionary; @@ -964,9 +1395,9 @@ function dictValueParserWithdraw(): DictionaryValue { } } async function TONB_init(owner: Address, content: Cell | null) { - const __init = 'te6ccgEBBwEAhgABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBJWW1tcG0hfwjIzAhEdBYVE9s8yYGAJpQh/oCUAXPFiNus5Z/AcoAE8yWM3BQA8oA4soAASBulTBwAcsBks8W4gEgbpUwcAHLAZLPFuICyIEBAc8AASBulTBwAcsBks8W4skBzA=='; - const __code = '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'; - const __system = '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'; + const __init = 'te6ccgEBCAEAnwABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4A0AAdQBMWm1tcG1tJH8LyMwLB1ClUJNQCAZEFNs8yYGAaRQuvoCUAjPFiZus5Z/AcoAFsyWNnBQBsoA4hTKAFggbpUwcAHLAZLPFuIBIG6VMHABywGSzxbiAciBAQHPAFggbpUwcAHLAZLPFuJQQ9s8yQHMBwAWUCP0APQAgQEBzwA='; + const __code = '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'; + const __system = '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'; let systemCell = Cell.fromBase64(__system); let builder = new TupleBuilder(); builder.writeCell(systemCell); @@ -1020,6 +1451,7 @@ const TONB_errors: { [key: number]: { message: string } } = { 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` }, } diff --git a/sources/output/jetton_TONBWallet.abi b/sources/output/jetton_TONBWallet.abi index b204e44..7167eec 100644 --- a/sources/output/jetton_TONBWallet.abi +++ b/sources/output/jetton_TONBWallet.abi @@ -1 +1 @@ -{"name":"TONBWallet","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":"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":"TokenTransfer"}},{"receiver":"internal","message":{"kind":"typed","type":"TokenTransferInternal"}},{"receiver":"internal","message":{"kind":"typed","type":"TokenBurn"}}],"getters":[{"name":"get_wallet_data","arguments":[],"returnType":{"kind":"simple","type":"JettonWalletData","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"},"62972":{"message":"Invalid balance"}}} \ No newline at end of file +{"name":"TONBWallet","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":"TokenTransfer"}},{"receiver":"internal","message":{"kind":"typed","type":"TokenTransferInternal"}},{"receiver":"internal","message":{"kind":"typed","type":"TokenBurn"}},{"receiver":"internal","message":{"kind":"typed","type":"BlacklistWallet"}}],"getters":[{"name":"get_wallet_data","arguments":[],"returnType":{"kind":"simple","type":"JettonWalletData","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_TONBWallet.code.boc b/sources/output/jetton_TONBWallet.code.boc index 3852956de96575bcd6d5a34cded716c661cebbc2..77a3904078239f04abc729ea9441bfdd2c1cb2d7 100644 GIT binary patch delta 1020 zcmY*XZA@EL7(VCr(%pVg4&L@|u4TQWr54(awjf}1_@Rj@NyR~? zA@pPYG0n7L7eyV$nrzd|Wzj8*krdWS)iOTXur6q>n*LHlHtm{ekPzm%IDVL%^PZ3A zJq`W+7p#4{>bq*IrS`&8g=f!yMr)Ln zK+!4vb00-X_S*zbDsZhRi9SakqBqegZ$-&0aI{K8y5bZ6p>1e!8}~{}^#WI9qv(ac z9my%WN`pY)wjM@N)mx(%r^?01?T&S@?u3xHz#$Xq+~#N&xzWq$1Ulp;N)4DJDxW<4 z-V|M}d5m9z<`*T7__-}Db}cC*CH-$SM$?HvyQKv%}ezd$6DL*WqWcfFU2#+M%r$C)nIT}{>4rOt~tv+6Nrnqb7+-I8!`t{%a;r0*}yty%r7S!<#neK=!Y&@&`Dsk*;>N3mUkaMuuG=-0PGGOaCeK2QHvuM!?l^{po_Re+ z-(@x*Ikj{@?FlX8i+Gmp=>Rru!2CbcIGK{gZuz5w!D1sft^WxWkw*FJa85&}3rfL< z4QhdXO63gZBdL{C5xf7bJ?%MSPrI&+;Cy`{<3}3RrQw_`l~y;L$0t&WmTldwz!^pS ILdBkc0hY&d`~Uy| delta 838 zcmYjPZAep57(VCjZeHD{=Q=mFX}jAr=jY}JDs;8wR}%wgy0j)ZM2bLRNrr^w2ZHp& z%U>2b#c~{ zFN4jH$bvxl4#0@tU~5>m<=XU!Apz?N0YNN?f(XcvLP$@)RjhpI%<0&o`}6Z?h6*O2 zNv^=O5HS#p82dZ*_2tCq<0XPpgPoCe>zF}9sbQ0MG2A&JS*hc z9P|L)LRV3%MHoonSvpik=JyTkW4Xw+k6J_l9nY?Hp;L81uBUXEjEjW5X@cxN$KM`V zs1=<>CsDD52qa>jVRNR74wpg2M$t<@+^Of;MtKCc0CfjplxL>^dM!qto!_X^f`(2A z-+&)R2={_3Czz6W6o<6fYh)BQrc14)%bU@kj#>yu%c)_wIE`5A*Nn zY@6P_Lt(NqhI>SG8sn9cD;<*B77xyNCC;qRFd)1gE&v!HpcjOs+i{KgY7I_t@i1Cx zt%c2*u!7F^W!SXbs6Z!Wz!`HfmgxgEJ_VO5OwBCDDhbAcq|E=NN8@rdXkbsxrvZA$EN?x{H}5eD49j0+kZ)Ct~zLPM{L-BZZ1%?2B7MU_SuWtzZ3a~zkr zX)>-ozFXzjR6om|E#)72#ye8tdSCC%+EP;C05-XAY-z$>wLIZ&tXjq$vBh(`|1DnI zrMyh}*o>{K*}kS{CsnIp4ap_%vwd>X?U3+RY%T*96spVx0qqHcGiJzc*O_GI3p|^I zN_2%Xv!$sipfLxfL5-aX5O$JhQE8zedhgb-Hx>LD=k?r8p(-*RD7w(AjEj8DqH6KT LKP;0oi!^@#E}|XA diff --git a/sources/output/jetton_TONBWallet.code.fc b/sources/output/jetton_TONBWallet.code.fc index 450cbf4..d88dd93 100644 --- a/sources/output/jetton_TONBWallet.code.fc +++ b/sources/output/jetton_TONBWallet.code.fc @@ -181,11 +181,18 @@ cell __gen_writecell_TokenExcesses((int) v) inline_ref { return __gen_write_TokenExcesses(begin_cell(), v).end_cell(); } -builder __gen_write_TONBWallet(builder build_0, (int, slice, slice, int, slice) v) inline_ref { - var (v'balance, v'owner, v'master, v'linker, v'linker_address) = v; +(slice, ((slice))) __gen_read_BlacklistWallet(slice sc_0) inline_ref { + throw_unless(129, sc_0~load_uint(32) == 43811734); + var v'wallet = sc_0~__tact_load_address(); + return (sc_0, (v'wallet)); +} + +builder __gen_write_TONBWallet(builder build_0, (int, slice, slice, int, int, slice) v) inline_ref { + var (v'balance, v'owner, v'master, v'blacklisted, v'linker, v'linker_address) = v; build_0 = build_0.store_int(v'balance, 257); build_0 = __tact_store_address(build_0, v'owner); build_0 = __tact_store_address(build_0, v'master); + build_0 = build_0.store_int(v'blacklisted, 1); var build_1 = begin_cell(); build_1 = ~ null?(v'linker) ? build_1.store_int(true, 1).store_int(v'linker, 257) : build_1.store_int(false, 1); build_1 = __tact_store_address_opt(build_1, v'linker_address); @@ -193,14 +200,15 @@ builder __gen_write_TONBWallet(builder build_0, (int, slice, slice, int, slice) return build_0; } -(slice, ((int, slice, slice, int, slice))) __gen_read_TONBWallet(slice sc_0) inline_ref { +(slice, ((int, slice, slice, int, int, slice))) __gen_read_TONBWallet(slice sc_0) inline_ref { var v'balance = sc_0~load_int(257); var v'owner = sc_0~__tact_load_address(); var v'master = sc_0~__tact_load_address(); + var v'blacklisted = sc_0~load_int(1); slice sc_1 = sc_0~load_ref().begin_parse(); var v'linker = sc_1~load_int(1) ? sc_1~load_int(257) : null(); var v'linker_address = sc_1~__tact_load_address_opt(); - return (sc_0, (v'balance, v'owner, v'master, v'linker, v'linker_address)); + return (sc_0, (v'balance, v'owner, v'master, v'blacklisted, v'linker, v'linker_address)); } _ __gen_StateInit_get_code((cell, cell) v) inline { @@ -213,13 +221,13 @@ _ __gen_StateInit_get_code((cell, cell) v) inline { return (v'balance, v'owner, v'master, v'walletCode); } -(int, slice, slice, int, slice) __gen_load_TONBWallet() inline_ref { +(int, slice, slice, int, int, slice) __gen_load_TONBWallet() inline_ref { slice sc = get_data().begin_parse(); __tact_context_sys = sc~load_ref(); return sc~__gen_read_TONBWallet(); } -() __gen_store_TONBWallet((int, slice, slice, int, slice) v) impure inline_ref { +() __gen_store_TONBWallet((int, slice, slice, int, int, slice) v) impure inline_ref { builder b = begin_cell(); b = b.store_ref(__tact_context_sys); b = __gen_write_TONBWallet(b, v); @@ -285,13 +293,13 @@ int $__gen_Context_readForwardFee((int, slice, int, slice) $self) impure { } cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) { - var (($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address)) = (null(), null(), null(), null(), null()); + var (($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address)) = (null(), null(), null(), false, null(), null()); $self'balance = 0; $self'owner = $owner; $self'master = $master; var b' = begin_cell(); b' = b'.store_ref(sys'); - b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address)); + b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address)); return b'.end_cell(); } @@ -307,8 +315,8 @@ cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) { return (mine, $__gen_TONBWallet_init(sys, $master, $owner)); } -(int, slice, slice, cell) $__gen_TONBWallet_get_wallet_data((int, slice, slice, int, slice) $self) impure { - var (($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address)) = $self; +(int, slice, slice, cell) $__gen_TONBWallet_get_wallet_data((int, slice, slice, int, int, slice) $self) impure { + var (($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address)) = $self; return ($self'balance, $self'owner, $self'master, __gen_StateInit_get_code($__gen_TONBWallet_init_child(__tact_context_sys, $self'master, $self'owner))); } @@ -318,9 +326,10 @@ _ $__gen_get_get_wallet_data() method_id(97026) { return __gen_JettonWalletData_to_external(res); } -(((int, slice, slice, int, slice)), ()) $__gen_TONBWallet_receive_TokenTransfer((int, slice, slice, int, slice) $self, (int, int, slice, slice, cell, int, slice) $msg) impure { - var ($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address) = $self; +(((int, slice, slice, int, int, slice)), ()) $__gen_TONBWallet_receive_TokenTransfer((int, slice, slice, int, int, slice) $self, (int, int, slice, slice, cell, int, slice) $msg) impure { + var ($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address) = $self; var ($msg'queryId, $msg'amount, $msg'destination, $msg'responseDestination, $msg'customPayload, $msg'forwardTonAmount, $msg'forwardPayload) = $msg; + throw_unless(44816, (~ $self'blacklisted)); var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); throw_unless(4429, __tact_address_eq($ctx'sender, $self'owner)); $self'balance = ($self'balance - $msg'amount); @@ -334,11 +343,11 @@ _ $__gen_get_get_wallet_data() method_id(97026) { var ($init'code, $init'data) = $__gen_TONBWallet_init_child(__tact_context_sys, $self'master, $msg'destination); slice $walletAddress = $contractAddress(($init'code, $init'data)); $send((true, $walletAddress, 0, 64, __gen_writecell_TokenTransferInternal(($msg'queryId, $msg'amount, $self'owner, $self'owner, $msg'forwardTonAmount, $msg'forwardPayload, null(), null())), $init'code, $init'data)); - return (($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address), ()); + return (($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address), ()); } -(((int, slice, slice, int, slice)), ()) $__gen_TONBWallet_receive_TokenTransferInternal((int, slice, slice, int, slice) $self, (int, int, slice, slice, int, slice, int, slice) $msg) impure { - var ($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address) = $self; +(((int, slice, slice, int, int, slice)), ()) $__gen_TONBWallet_receive_TokenTransferInternal((int, slice, slice, int, int, slice) $self, (int, int, slice, slice, int, slice, int, slice) $msg) impure { + var ($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address) = $self; var ($msg'queryId, $msg'amount, $msg'from, $msg'responseAddress, $msg'forwardTonAmount, $msg'forwardPayload, $msg'setLinker, $msg'setLinkerAddress) = $msg; var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); if (null?($self'linker)) { @@ -363,11 +372,11 @@ _ $__gen_get_get_wallet_data() method_id(97026) { if (((~ null?($msg'responseAddress)) & ($msgValue > 0))) { $send((false, __tact_not_null($msg'responseAddress), $msgValue, 0, __gen_writecell_TokenExcesses(($msg'queryId)), null(), null())); } - return (($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address), ()); + return (($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address), ()); } -(((int, slice, slice, int, slice)), ()) $__gen_TONBWallet_receive_TokenBurn((int, slice, slice, int, slice) $self, (int, int, slice, slice) $msg) impure { - var ($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address) = $self; +(((int, slice, slice, int, int, slice)), ()) $__gen_TONBWallet_receive_TokenBurn((int, slice, slice, int, int, slice) $self, (int, int, slice, slice) $msg) impure { + var ($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address) = $self; var ($msg'queryId, $msg'amount, $msg'owner, $msg'responseAddress) = $msg; var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); throw_unless(4429, ((__tact_address_eq($ctx'sender, $self'owner) | __tact_address_eq($ctx'sender, $self'master)) | __tact_address_eq($ctx'sender, $self'linker_address))); @@ -376,18 +385,30 @@ _ $__gen_get_get_wallet_data() method_id(97026) { int $fwdFee = $__gen_Context_readForwardFee(($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw)); throw_unless(16059, ($ctx'value > ((2 * 10000000) + 10000000))); $send((true, $self'master, 0, 64, __gen_writecell_TokenBurnNotification(($msg'queryId, $msg'amount, $self'owner, $self'owner)), null(), null())); - return (($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address), ()); + return (($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address), ()); +} + +(((int, slice, slice, int, int, slice)), ()) $__gen_TONBWallet_receive_BlacklistWallet((int, slice, slice, int, int, slice) $self, (slice) $_msg) impure { + var ($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address) = $self; + var ($_msg'wallet) = $_msg; + var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); + throw_unless(4429, (__tact_address_eq($ctx'sender, $self'master) | __tact_address_eq($ctx'sender, $self'linker_address))); + $self'blacklisted = true; + int $amount = $self'balance; + $self'balance = 0; + $send((true, $self'master, 0, 64, __gen_writecell_TokenBurnNotification((0, $amount, $self'owner, $self'owner)), null(), null())); + return (($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address), ()); } -((int, slice, slice, int, slice), ()) $__gen_TONBWallet_receive_bounced((int, slice, slice, int, slice) $self, slice $msg) impure { - var ($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address) = $self; +((int, slice, slice, int, int, slice), ()) $__gen_TONBWallet_receive_bounced((int, slice, slice, int, int, slice) $self, slice $msg) impure { + var ($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address) = $self; $msg~skip_bits(32); int $op = $msg~load_uint(32); int $queryId = $msg~load_uint(64); int $jettonAmount = $msg~load_coins(); throw_unless(13650, (($op == 395134233) | ($op == 2078119902))); $self'balance = ($self'balance + $jettonAmount); - return (($self'balance, $self'owner, $self'master, $self'linker, $self'linker_address), ()); + return (($self'balance, $self'owner, $self'master, $self'blacklisted, $self'linker, $self'linker_address), ()); } @@ -439,6 +460,15 @@ _ $__gen_get_get_wallet_data() method_id(97026) { return (); } + ;; Receive BlacklistWallet message + if (op == 43811734) { + var self = __gen_load_TONBWallet(); + var msg = in_msg~__gen_read_BlacklistWallet(); + self~$__gen_TONBWallet_receive_BlacklistWallet(msg); + __gen_store_TONBWallet(self); + return (); + } + throw(130); } @@ -451,5 +481,5 @@ _ supported_interfaces() method_id { } _ get_abi_ipfs() { - return "ipfs://QmNcnMjCZjwpaP9xLwcPNt8ziw2bt7pGUNu1PCVFvkfGtv"; + return "ipfs://QmPUAFaC5zcamYhWHG5KeLoZhES1TbT25fgkJq3JKn4sEV"; } \ No newline at end of file diff --git a/sources/output/jetton_TONBWallet.code.fif b/sources/output/jetton_TONBWallet.code.fif index 85694b9..e4043a1 100644 --- a/sources/output/jetton_TONBWallet.code.fif +++ b/sources/output/jetton_TONBWallet.code.fif @@ -25,6 +25,7 @@ PROGRAM{ DECLPROC __gen_writecell_TokenBurnNotification DECLPROC __gen_write_TokenExcesses DECLPROC __gen_writecell_TokenExcesses + DECLPROC __gen_read_BlacklistWallet DECLPROC __gen_write_TONBWallet DECLPROC __gen_read_TONBWallet DECLPROC __gen_StateInit_get_code @@ -41,6 +42,7 @@ PROGRAM{ DECLPROC $__gen_TONBWallet_receive_TokenTransfer DECLPROC $__gen_TONBWallet_receive_TokenTransferInternal DECLPROC $__gen_TONBWallet_receive_TokenBurn + DECLPROC $__gen_TONBWallet_receive_BlacklistWallet DECLPROC $__gen_TONBWallet_receive_bounced DECLPROC recv_internal 113617 DECLMETHOD supported_interfaces @@ -323,14 +325,23 @@ PROGRAM{ __gen_write_TokenExcesses INLINECALLDICT ENDC }> + __gen_read_BlacklistWallet PROCREF:<{ + 32 LDU + SWAP + 43811734 PUSHINT + EQUAL + 129 THROWIFNOT + __tact_load_address INLINECALLDICT + }> __gen_write_TONBWallet PROCREF:<{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX - ROT + s0 s3 XCHG2 __tact_store_address INLINECALLDICT SWAP __tact_store_address INLINECALLDICT + 1 STI NEWC s2 PUSH ISNULL @@ -361,6 +372,7 @@ PROGRAM{ SWAP __tact_load_address INLINECALLDICT SWAP + 1 LDI LDREF SWAP CTOS @@ -375,6 +387,7 @@ PROGRAM{ }> __tact_load_address_opt INLINECALLDICT NIP + s2 s6 XCHG s2 s5 XCHG s2 s4 XCHG s2 s3 XCHG @@ -391,14 +404,14 @@ PROGRAM{ SWAP __tact_context_sys SETGLOB __gen_read_TONBWallet INLINECALLDICT - 1 5 BLKDROP2 + 1 6 BLKDROP2 }> __gen_store_TONBWallet PROCREF:<{ NEWC __tact_context_sys GETGLOB SWAP STREF - 5 -ROLL + 6 -ROLL __gen_write_TONBWallet INLINECALLDICT ENDC c4 POP @@ -521,14 +534,16 @@ PROGRAM{ 1 RSHIFT# }> $__gen_TONBWallet_init PROC:<{ + FALSE PUSHNULL PUSHNULL 0 PUSHINT - s0 s5 XCHG + s0 s6 XCHG NEWC STREF + s0 s6 XCHG s0 s5 XCHG - s4 s4 s4 XCHG3 + 3 -ROLL __gen_write_TONBWallet INLINECALLDICT ENDC }> @@ -552,7 +567,7 @@ PROGRAM{ $__gen_TONBWallet_init CALLDICT }> $__gen_TONBWallet_get_wallet_data PROC:<{ - 2DROP + 3 BLKDROP __tact_context_sys GETGLOB s1 s2 PUSH2 $__gen_TONBWallet_init_child CALLDICT @@ -565,19 +580,23 @@ PROGRAM{ }> $__gen_TONBWallet_receive_TokenTransfer PROC:<{ 2 2 BLKDROP2 + 44816 PUSHINT + s8 PUSH + NOT + THROWANYIFNOT __tact_context_get INLINECALLDICT 4429 PUSHINT - s3 s13 PUSH2 + s3 s14 PUSH2 __tact_address_eq INLINECALLDICT THROWANYIFNOT - s13 s7 XCPU + s14 s7 XCPU SUB 62972 PUSHINT OVER -1 GTINT THROWANYIFNOT s3 s3 s0 XCHG3 - s3 s13 PUXC + s3 s14 PUXC $__gen_Context_readForwardFee CALLDICT 1 PUSHINT s4 PUSH @@ -597,7 +616,7 @@ PROGRAM{ GREATER THROWANYIFNOT __tact_context_sys GETGLOB - s0 s8 s3 XCPUXC + s0 s9 s3 XCPUXC $__gen_TONBWallet_init_child CALLDICT 2DUP $contractAddress CALLDICT @@ -607,10 +626,10 @@ PROGRAM{ 64 PUSHINT PUSHNULL PUSHNULL - s15 PUSH - s0 s4 XCHG 16 s() PUSH s0 s4 XCHG + 17 s() PUSH + s0 s4 XCHG s3 s10 XCHG s11 s10 s11 XCHG3 __gen_writecell_TokenTransferInternal INLINECALLDICT @@ -632,14 +651,14 @@ PROGRAM{ s4 POP s4 POP }> - s0 s12 PUSH2 + s0 s13 PUSH2 __tact_address_neq INLINECALLDICT s1 s11 PUSH2 __tact_address_neq INLINECALLDICT AND IF:<{ __tact_context_sys GETGLOB - s13 s8 PUSH2 + s14 s8 PUSH2 $__gen_TONBWallet_init_child CALLDICT SWAP 4429 PUSHINT @@ -649,7 +668,7 @@ PROGRAM{ __tact_address_eq INLINECALLDICT THROWANYIFNOT }> - s14 s8 XCPU + s15 s8 XCPU ADD 62972 PUSHINT OVER @@ -669,12 +688,13 @@ PROGRAM{ s6 PUSH 0 GTINT IF:<{ - s3 s1 s15 XCHG3 + s2 s3 XCHG + s0 16 s() XCHG s4 s2 XCHG2 $__gen_Context_readForwardFee CALLDICT s3 s(-1) PUXC ADD - s1 s12 XCHG + s1 s13 XCHG SUB FALSE 0 PUSHINT @@ -682,20 +702,20 @@ PROGRAM{ s8 s1 s3 XCHG3 s7 s4 XCHG2 __gen_writecell_TokenNotification INLINECALLDICT - s10 PUSH + s11 PUSH s4 s6 XCHG s3 s1 s3 XCHG3 s5 s5 XCHG2 PUSHNULL PUSHNULL $send CALLDICT - s0 s7 XCHG2 + s0 s8 XCHG2 }>ELSE<{ - s7 s15 XCHG + s7 16 s() XCHG s8 s9 XCHG2 8 BLKDROP }> - s7 PUSH + s8 PUSH ISNULL NOT s2 PUSH @@ -703,19 +723,19 @@ PROGRAM{ AND IF:<{ FALSE - s0 s8 XCHG + s0 s9 XCHG __tact_not_null CALLDICT 0 PUSHINT s0 s4 XCHG __gen_writecell_TokenExcesses INLINECALLDICT - s4 s9 XCHG + s4 s10 XCHG s3 s3 s0 XCHG3 - s1 s9 XCHG + s1 s10 XCHG PUSHNULL PUSHNULL $send CALLDICT }>ELSE<{ - s7 POP + s8 POP 2DROP }> }> @@ -723,23 +743,23 @@ PROGRAM{ 2DROP __tact_context_get INLINECALLDICT 4429 PUSHINT - s3 s10 PUSH2 + s3 s11 PUSH2 __tact_address_eq INLINECALLDICT - s4 s10 PUSH2 + s4 s11 PUSH2 __tact_address_eq INLINECALLDICT OR s4 s8 PUSH2 __tact_address_eq INLINECALLDICT OR THROWANYIFNOT - s10 s4 XCPU + s11 s4 XCPU SUB 62972 PUSHINT OVER -1 GTINT THROWANYIFNOT s3 s3 s0 XCHG3 - s3 s10 PUXC + s3 s11 PUXC $__gen_Context_readForwardFee CALLDICT DROP 16059 PUSHINT @@ -751,14 +771,44 @@ PROGRAM{ 0 PUSHINT s0 s3 XCHG 64 PUSHINT - s3 s8 s8 XCPU2 + s3 s9 s9 XCPU2 __gen_writecell_TokenBurnNotification INLINECALLDICT - s3 s0 s6 XC2PU + s3 s0 s7 XC2PU s3 s3 XCHG2 PUSHNULL PUSHNULL $send CALLDICT }> + $__gen_TONBWallet_receive_BlacklistWallet PROC:<{ + DROP + s2 POP + __tact_context_get INLINECALLDICT + s2 s3 XCHG + 3 BLKDROP + 4429 PUSHINT + s1 s4 PUSH2 + __tact_address_eq INLINECALLDICT + s2 s4 XCPU + __tact_address_eq INLINECALLDICT + s1 s2 XCHG + OR + THROWANYIFNOT + TRUE + 0 PUSHINT + TRUE + s1 s1 PUSH2 + 64 PUSHINT + s10 s9 s9 XCPU2 + __gen_writecell_TokenBurnNotification INLINECALLDICT + s7 PUSH + s0 s3 XCHG + s0 s4 XCHG + s10 s10 XCHG2 + PUSHNULL + PUSHNULL + $send CALLDICT + s0 s2 XCHG + }> $__gen_TONBWallet_receive_bounced PROC:<{ 32 PUSHINT SDSKIPFIRST @@ -778,9 +828,9 @@ PROGRAM{ OR s1 s2 XCHG THROWANYIFNOT - s1 s5 XCHG + s1 s6 XCHG ADD - s0 s4 XCHG + s0 s5 XCHG }> recv_internal PROC:<{ 0 PUSHINT @@ -814,7 +864,7 @@ PROGRAM{ IFJMP:<{ DROP __gen_load_TONBWallet INLINECALLDICT - 5 ROLL + 6 ROLL $__gen_TONBWallet_receive_bounced CALLDICT __gen_store_TONBWallet INLINECALLDICT }> @@ -824,9 +874,10 @@ PROGRAM{ IFJMP:<{ DROP __gen_load_TONBWallet INLINECALLDICT - s0 s5 XCHG + s0 s6 XCHG __gen_read_TokenTransfer INLINECALLDICT s7 POP + s11 s12 XCHG s10 s11 XCHG s9 s10 XCHG s8 s9 XCHG @@ -841,9 +892,10 @@ PROGRAM{ IFJMP:<{ DROP __gen_load_TONBWallet INLINECALLDICT - s0 s5 XCHG + s0 s6 XCHG __gen_read_TokenTransferInternal INLINECALLDICT s8 POP + s12 s13 XCHG s11 s12 XCHG s10 s11 XCHG s9 s10 XCHG @@ -852,13 +904,16 @@ PROGRAM{ $__gen_TONBWallet_receive_TokenTransferInternal CALLDICT __gen_store_TONBWallet INLINECALLDICT }> + DUP 1499400124 PUSHINT EQUAL IFJMP:<{ + DROP __gen_load_TONBWallet INLINECALLDICT - s0 s5 XCHG + s0 s6 XCHG __gen_read_TokenBurn INLINECALLDICT s4 POP + s8 s9 XCHG s7 s8 XCHG s6 s7 XCHG s5 s6 XCHG @@ -867,6 +922,20 @@ PROGRAM{ $__gen_TONBWallet_receive_TokenBurn CALLDICT __gen_store_TONBWallet INLINECALLDICT }> + 43811734 PUSHINT + EQUAL + IFJMP:<{ + __gen_load_TONBWallet INLINECALLDICT + s0 s6 XCHG + __gen_read_BlacklistWallet INLINECALLDICT + NIP + s5 s6 XCHG + s4 s5 XCHG + s3 s4 XCHG + s1 s3 s0 XCHG3 + $__gen_TONBWallet_receive_BlacklistWallet CALLDICT + __gen_store_TONBWallet INLINECALLDICT + }> DROP 130 THROW }> @@ -876,6 +945,6 @@ PROGRAM{ 209778528950190195973528115415557644819 PUSHINT }> get_abi_ipfs PROC:<{ - x{697066733a2f2f516d4e636e4d6a435a6a7770615039784c7763504e74387a6977326274377047554e753150435646766b66477476} PUSHSLICE + x{697066733a2f2f516d505541466143357a63616d5968574847354b654c6f5a68455331546254323566676b4a71334a4b6e34734556} PUSHSLICE }> }END>c diff --git a/sources/output/jetton_TONBWallet.code.rev.fif b/sources/output/jetton_TONBWallet.code.rev.fif index 1daee51..de6843e 100644 --- a/sources/output/jetton_TONBWallet.code.rev.fif +++ b/sources/output/jetton_TONBWallet.code.rev.fif @@ -49,6 +49,7 @@ SETCP0 LDMSGADDR s0 s1 XCHG s0 s1 XCHG + 1 LDI LDREF s0 s1 XCHG CTOS @@ -76,28 +77,30 @@ SETCP0 }> PUSHCONT IFELSE s1 POP + s2 s6 XCHG s2 s5 XCHG s2 s4 XCHG s2 s3 XCHG }> CALLREF - 1 5 BLKDROP2 + 1 6 BLKDROP2 }> CALLREF - 1 5 BLKSWAP - 42 CALLDICT + 1 6 BLKSWAP + 44 CALLDICT <{ NEWC 2 GETGLOBVAR s0 s1 XCHG STREF - 5 1 BLKSWAP + 6 1 BLKSWAP <{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX - ROT + s0 s3 XCHG2 STSLICER s0 s1 XCHG STSLICER + 1 STI NEWC s2 PUSH ISNULL @@ -159,6 +162,7 @@ SETCP0 LDMSGADDR s0 s1 XCHG s0 s1 XCHG + 1 LDI LDREF s0 s1 XCHG CTOS @@ -186,13 +190,14 @@ SETCP0 }> PUSHCONT IFELSE s1 POP + s2 s6 XCHG s2 s5 XCHG s2 s4 XCHG s2 s3 XCHG }> CALLREF - 1 5 BLKDROP2 + 1 6 BLKDROP2 }> CALLREF - s0 s5 XCHG + s0 s6 XCHG <{ 32 LDU s0 s1 XCHG @@ -235,26 +240,28 @@ SETCP0 s3 s3 s0 XCHG3 }> CALLREF s7 POP + s11 s12 XCHG s10 s11 XCHG s9 s10 XCHG s8 s9 XCHG s7 s8 XCHG 1 6 BLKSWAP - 39 CALLDICT + 40 CALLDICT <{ NEWC 2 GETGLOBVAR s0 s1 XCHG STREF - 5 1 BLKSWAP + 6 1 BLKSWAP <{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX - ROT + s0 s3 XCHG2 STSLICER s0 s1 XCHG STSLICER + 1 STI NEWC s2 PUSH ISNULL @@ -315,6 +322,7 @@ SETCP0 LDMSGADDR s0 s1 XCHG s0 s1 XCHG + 1 LDI LDREF s0 s1 XCHG CTOS @@ -342,13 +350,14 @@ SETCP0 }> PUSHCONT IFELSE s1 POP + s2 s6 XCHG s2 s5 XCHG s2 s4 XCHG s2 s3 XCHG }> CALLREF - 1 5 BLKDROP2 + 1 6 BLKDROP2 }> CALLREF - s0 s5 XCHG + s0 s6 XCHG <{ 32 LDU s0 s1 XCHG @@ -410,26 +419,28 @@ SETCP0 s2 s3 XCHG }> CALLREF s8 POP + s12 s13 XCHG s11 s12 XCHG s10 s11 XCHG s9 s10 XCHG s8 s9 XCHG 1 7 BLKSWAP - 40 CALLDICT + 41 CALLDICT <{ NEWC 2 GETGLOBVAR s0 s1 XCHG STREF - 5 1 BLKSWAP + 6 1 BLKSWAP <{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX - ROT + s0 s3 XCHG2 STSLICER s0 s1 XCHG STSLICER + 1 STI NEWC s2 PUSH ISNULL @@ -471,9 +482,11 @@ SETCP0 }> CALLREF }> PUSHCONT IFJMP + s0 PUSH 1499400124 PUSHINT EQUAL <{ + s0 POP <{ c4 PUSH CTOS @@ -489,6 +502,7 @@ SETCP0 LDMSGADDR s0 s1 XCHG s0 s1 XCHG + 1 LDI LDREF s0 s1 XCHG CTOS @@ -516,13 +530,14 @@ SETCP0 }> PUSHCONT IFELSE s1 POP + s2 s6 XCHG s2 s5 XCHG s2 s4 XCHG s2 s3 XCHG }> CALLREF - 1 5 BLKDROP2 + 1 6 BLKDROP2 }> CALLREF - s0 s5 XCHG + s0 s6 XCHG <{ 32 LDU s0 s1 XCHG @@ -550,26 +565,153 @@ SETCP0 s3 s3 s0 XCHG3 }> CALLREF s4 POP + s8 s9 XCHG s7 s8 XCHG s6 s7 XCHG s5 s6 XCHG s4 s5 XCHG 1 3 BLKSWAP - 41 CALLDICT + 42 CALLDICT <{ NEWC 2 GETGLOBVAR s0 s1 XCHG STREF - 5 1 BLKSWAP + 6 1 BLKSWAP <{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX + s0 s3 XCHG2 + STSLICER + s0 s1 XCHG + STSLICER + 1 STI + 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 + c4 POP + }> CALLREF + }> PUSHCONT + IFJMP + 43811734 PUSHINT + EQUAL + <{ + <{ + c4 PUSH + CTOS + LDREF + s0 s1 XCHG + 2 SETGLOBVAR + <{ + 257 PUSHINT + LDI + LDMSGADDR + s0 s1 XCHG + s0 s1 XCHG + LDMSGADDR + s0 s1 XCHG + s0 s1 XCHG + 1 LDI + LDREF + s0 s1 XCHG + CTOS + 1 LDI + s0 s1 XCHG + <{ + 257 PUSHINT + LDI + }> PUSHCONT + <{ + PUSHNULL + s0 s1 XCHG + }> PUSHCONT + IFELSE + LDMSGADDR + s1 PUSH + 2 PLDU + 0 NEQINT + <{ + s0 s1 XCHG + }> PUSHCONT + <{ + s1 POP + PUSHNULL + }> PUSHCONT + IFELSE + s1 POP + s2 s6 XCHG + s2 s5 XCHG + s2 s4 XCHG + s2 s3 XCHG + }> CALLREF + 1 6 BLKDROP2 + }> CALLREF + s0 s6 XCHG + <{ + 32 LDU + s0 s1 XCHG + 43811734 PUSHINT + EQUAL + 129 THROWIFNOT + LDMSGADDR + s0 s1 XCHG + }> CALLREF + s1 POP + s5 s6 XCHG + s4 s5 XCHG + s3 s4 XCHG + s1 s3 s0 XCHG3 + 43 CALLDICT + <{ + NEWC + 2 GETGLOBVAR + s0 s1 XCHG + STREF + 6 1 BLKSWAP + <{ + s5 s6 XCHG2 + 257 PUSHINT + STIX + s0 s3 XCHG2 STSLICER s0 s1 XCHG STSLICER + 1 STI NEWC s2 PUSH ISNULL @@ -619,9 +761,9 @@ SETCP0 ISNULL 128 THROWIF - 30: + 31: - 33: + 34: 0 PUSHINT ROTREV NEWC @@ -652,7 +794,7 @@ SETCP0 ENDC CTOS - 34: + 35: NEWC 1 PUSHINT s0 s1 XCHG @@ -769,7 +911,7 @@ SETCP0 s0 s1 XCHG 1 STI - 35: + 36: 3 1 BLKDROP2 LDGRAMS s1 POP @@ -782,23 +924,26 @@ SETCP0 3 MULCONST 1 RSHIFT - 36: + 37: + 0 PUSHINT PUSHNULL PUSHNULL 0 PUSHINT - s0 s5 XCHG + s0 s6 XCHG NEWC STREF + s0 s6 XCHG s0 s5 XCHG - s4 s4 s4 XCHG3 + 3 1 BLKSWAP <{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX - ROT + s0 s3 XCHG2 STSLICER s0 s1 XCHG STSLICER + 1 STI NEWC s2 PUSH ISNULL @@ -837,7 +982,7 @@ SETCP0 }> CALLREF ENDC - 37: + 38: s0 s2 XCHG CTOS LDDICT @@ -860,32 +1005,36 @@ SETCP0 STDICT ENDC s0 s0 s3 XCHG3 - 36 CALLDICT + 37 CALLDICT - 38: - 2DROP + 39: + 3 BLKDROP 2 GETGLOBVAR s1 s2 PUSH2 - 37 CALLDICT + 38 CALLDICT s0 POP - 39: + 40: 2 2 BLKDROP2 + 44816 PUSHINT + s8 PUSH + NOT + THROWANYIFNOT 1 GETGLOBVAR 4 UNTUPLE 4429 PUSHINT - s3 s13 PUSH2 + s3 s14 PUSH2 SDEQ THROWANYIFNOT - s13 s7 XCPU + s14 s7 XCPU SUB 62972 PUSHINT s1 PUSH -1 GTINT THROWANYIFNOT s3 s3 s0 XCHG3 - s3 s13 PUXC - 35 CALLDICT + s3 s14 PUXC + 36 CALLDICT 1 PUSHINT s4 PUSH 0 GTINT @@ -905,20 +1054,20 @@ SETCP0 GREATER THROWANYIFNOT 2 GETGLOBVAR - 0 8 3 XCPUXC - 37 CALLDICT + 0 9 3 XCPUXC + 38 CALLDICT 2DUP - 33 CALLDICT + 34 CALLDICT -1 PUSHINT s7 s6 XCHG2 0 PUSHINT 64 PUSHINT PUSHNULL PUSHNULL - s15 PUSH - s0 s4 XCHG s16 PUSH s0 s4 XCHG + s17 PUSH + s0 s4 XCHG s3 s10 XCHG s11 s10 s11 XCHG3 <{ @@ -992,9 +1141,9 @@ SETCP0 s5 s6 XCHG s3 s4 XCHG ROTREV - 34 CALLDICT + 35 CALLDICT - 40: + 41: 1 GETGLOBVAR 4 UNTUPLE s13 PUSH @@ -1010,7 +1159,7 @@ SETCP0 s4 POP }> PUSHCONT IFELSE - s0 s12 PUSH2 + s0 s13 PUSH2 SDEQ NOT s1 s11 PUSH2 @@ -1019,18 +1168,18 @@ SETCP0 AND <{ 2 GETGLOBVAR - s13 s8 PUSH2 - 37 CALLDICT + s14 s8 PUSH2 + 38 CALLDICT s0 s1 XCHG 4429 PUSHINT s0 s2 XCHG - 33 CALLDICT + 34 CALLDICT s2 PUSH SDEQ THROWANYIFNOT }> PUSHCONT IF - s14 s8 XCPU + s15 s8 XCPU ADD 62972 PUSHINT s1 PUSH @@ -1051,17 +1200,20 @@ SETCP0 s6 PUSH 0 GTINT <{ - s7 s15 XCHG + s0 s7 XCHG + s0 s16 XCHG + s0 s7 XCHG s8 s9 XCHG2 8 BLKDROP }> PUSHCONT <{ - s3 s1 s15 XCHG3 + s2 s3 XCHG + s0 s16 XCHG s4 s2 XCHG2 - 35 CALLDICT + 36 CALLDICT s3 s-1 PUXC ADD - s1 s12 XCHG + s1 s13 XCHG SUB 0 PUSHINT 0 PUSHINT @@ -1086,28 +1238,28 @@ SETCP0 }> CALLREF ENDC }> CALLREF - s10 PUSH + s11 PUSH s4 s6 XCHG s3 s1 s3 XCHG3 s5 s5 XCHG2 PUSHNULL PUSHNULL - 34 CALLDICT - s0 s7 XCHG2 + 35 CALLDICT + s0 s8 XCHG2 }> IFREFELSE - s7 PUSH + s8 PUSH ISNULL NOT s2 PUSH 0 GTINT AND <{ - s7 POP + s8 POP 2DROP }> PUSHCONT <{ 0 PUSHINT - s0 s8 XCHG + s0 s9 XCHG 2 CALLDICT 0 PUSHINT s0 s4 XCHG @@ -1122,37 +1274,37 @@ SETCP0 }> CALLREF ENDC }> CALLREF - s4 s9 XCHG + s4 s10 XCHG s3 s3 s0 XCHG3 - s1 s9 XCHG + s1 s10 XCHG PUSHNULL PUSHNULL - 34 CALLDICT + 35 CALLDICT }> IFREFELSE - 41: + 42: 2DROP 1 GETGLOBVAR 4 UNTUPLE 4429 PUSHINT - s3 s10 PUSH2 + s3 s11 PUSH2 SDEQ - s4 s10 PUSH2 + s4 s11 PUSH2 SDEQ OR s4 s8 PUSH2 SDEQ OR THROWANYIFNOT - s10 s4 XCPU + s11 s4 XCPU SUB 62972 PUSHINT s1 PUSH -1 GTINT THROWANYIFNOT s3 s3 s0 XCHG3 - s3 s10 PUXC - 35 CALLDICT + s3 s11 PUXC + 36 CALLDICT s0 POP 16059 PUSHINT s0 s1 XCHG @@ -1163,7 +1315,7 @@ SETCP0 0 PUSHINT s0 s3 XCHG 64 PUSHINT - 3 8 8 XCPU2 + 3 9 9 XCPU2 <{ NEWC 4 1 BLKSWAP @@ -1193,13 +1345,72 @@ SETCP0 }> CALLREF ENDC }> CALLREF - 3 0 6 XC2PU + 3 0 7 XC2PU s3 s3 XCHG2 PUSHNULL PUSHNULL - 34 CALLDICT + 35 CALLDICT - 42: + 43: + s0 POP + s2 POP + 1 GETGLOBVAR + 4 UNTUPLE + s2 s3 XCHG + 3 BLKDROP + 4429 PUSHINT + s1 s4 PUSH2 + SDEQ + s2 s4 XCPU + SDEQ + s1 s2 XCHG + OR + THROWANYIFNOT + -1 PUSHINT + 0 PUSHINT + -1 PUSHINT + s1 s1 PUSH2 + 64 PUSHINT + 10 9 9 XCPU2 + <{ + NEWC + 4 1 BLKSWAP + <{ + 2078119902 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 + }> CALLREF + ENDC + }> CALLREF + s7 PUSH + s0 s3 XCHG + s0 s4 XCHG + s10 s10 XCHG2 + PUSHNULL + PUSHNULL + 35 CALLDICT + s0 s2 XCHG + + 44: 32 PUSHINT SDSKIPFIRST 32 LDU @@ -1218,9 +1429,9 @@ SETCP0 OR s1 s2 XCHG THROWANYIFNOT - s1 s5 XCHG + s1 s6 XCHG ADD - s0 s4 XCHG + s0 s5 XCHG get_wallet_data: <{ @@ -1238,6 +1449,7 @@ SETCP0 LDMSGADDR s0 s1 XCHG s0 s1 XCHG + 1 LDI LDREF s0 s1 XCHG CTOS @@ -1265,14 +1477,15 @@ SETCP0 }> PUSHCONT IFELSE s1 POP + s2 s6 XCHG s2 s5 XCHG s2 s4 XCHG s2 s3 XCHG }> CALLREF - 1 5 BLKDROP2 + 1 6 BLKDROP2 }> CALLREF - 38 CALLDICT - 30 CALLDICT + 39 CALLDICT + 31 CALLDICT 113617: 123515602279859691144772641439386770278 PUSHINT diff --git a/sources/output/jetton_TONBWallet.init.boc b/sources/output/jetton_TONBWallet.init.boc index ec72283c60f489bc15ed8fbbcbc0b2863d2c13f2..5c4fa758b12c3ffe56b73db06f287f52afd604f1 100644 GIT binary patch delta 55 zcmXRcS8n5Z1`Zc%C7E`Men8 Ld9hOr6TQ^{`t=d9 delta 50 zcmXRb }> __gen_write_TONBWallet PROCREF:<{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX - ROT + s0 s3 XCHG2 __tact_store_address INLINECALLDICT SWAP __tact_store_address INLINECALLDICT + 1 STI NEWC s2 PUSH ISNULL @@ -59,14 +60,16 @@ PROGRAM{ STREF }> $__gen_TONBWallet_init PROC:<{ + FALSE PUSHNULL PUSHNULL 0 PUSHINT - s0 s5 XCHG + s0 s6 XCHG NEWC STREF + s0 s6 XCHG s0 s5 XCHG - s4 s4 s4 XCHG3 + 3 -ROLL __gen_write_TONBWallet INLINECALLDICT ENDC }> diff --git a/sources/output/jetton_TONBWallet.init.rev.fif b/sources/output/jetton_TONBWallet.init.rev.fif index c40d504..a0106dc 100644 --- a/sources/output/jetton_TONBWallet.init.rev.fif +++ b/sources/output/jetton_TONBWallet.init.rev.fif @@ -3,22 +3,25 @@ SETCP0 recv_internal: 5: + 0 PUSHINT PUSHNULL PUSHNULL 0 PUSHINT - s0 s5 XCHG + s0 s6 XCHG NEWC STREF + s0 s6 XCHG s0 s5 XCHG - s4 s4 s4 XCHG3 + 3 1 BLKSWAP <{ - s4 s5 XCHG2 + s5 s6 XCHG2 257 PUSHINT STIX - ROT + s0 s3 XCHG2 STSLICER s0 s1 XCHG STSLICER + 1 STI NEWC s2 PUSH ISNULL diff --git a/sources/output/jetton_TONBWallet.md b/sources/output/jetton_TONBWallet.md index 595edb8..5c4744f 100644 --- a/sources/output/jetton_TONBWallet.md +++ b/sources/output/jetton_TONBWallet.md @@ -1,9 +1,9 @@ # TACT Compilation Report Contract: TONBWallet -BOC Size: 1514 bytes +BOC Size: 1650 bytes # Types -Total Types: 18 +Total Types: 27 ## StateInit TLB: `_ code:^cell data:^cell = StateInit` @@ -61,6 +61,42 @@ Signature: `SetLinkerNeighbor{neighbor:Maybe address}` TLB: `init_linker#67c08154 neighbor:Maybe address walletAmount:int257 walletCode:^cell walletData:^cell walletAddress:address responseAddress:Maybe address = InitLinker` Signature: `InitLinker{neighbor:Maybe address,walletAmount:int257,walletCode:^cell,walletData:^cell,walletAddress:address,responseAddress:Maybe address}` +## ForwardToWallet +TLB: `forward_to_wallet#5d1da2bb body:^cell = ForwardToWallet` +Signature: `ForwardToWallet{body:^cell}` + +## BlacklistWallet +TLB: `blacklist_wallet#029c8396 wallet:address = BlacklistWallet` +Signature: `BlacklistWallet{wallet:address}` + +## InitiateBlacklistVote +TLB: `initiate_blacklist_vote#e8fffb0b adminIndex:int257 wallet:address quorum_percent:int257 vote_time:int257 = InitiateBlacklistVote` +Signature: `InitiateBlacklistVote{adminIndex:int257,wallet:address,quorum_percent:int257,vote_time:int257}` + +## InitiateLiquidationVote +TLB: `initiate_liquidation_vote#11fb862f adminIndex:int257 quorum_percent:int257 vote_time:int257 = InitiateLiquidationVote` +Signature: `InitiateLiquidationVote{adminIndex:int257,quorum_percent:int257,vote_time:int257}` + +## FinishVote +TLB: `finish_vote#2a574443 voteId:int257 = FinishVote` +Signature: `FinishVote{voteId:int257}` + +## Vote +TLB: `vote#b670f4ce voteId:int257 adminIndex:int257 vote:int257 = Vote` +Signature: `Vote{voteId:int257,adminIndex:int257,vote:int257}` + +## AddressList +TLB: `_ addresses:dict length:int257 = AddressList` +Signature: `AddressList{addresses:dict,length:int257}` + +## Distribution +TLB: `_ addresses:AddressList{addresses:dict,length:int257} percents:dict = Distribution` +Signature: `Distribution{addresses:AddressList{addresses:dict,length:int257},percents:dict}` + +## InitiateDistributionVote +TLB: `initiate_distribution_vote#1078d0b5 adminIndex:int257 quorum_percent:int257 vote_time:int257 distribution:Distribution{addresses:AddressList{addresses:dict,length:int257},percents:dict} = InitiateDistributionVote` +Signature: `InitiateDistributionVote{adminIndex:int257,quorum_percent:int257,vote_time:int257,distribution:Distribution{addresses:AddressList{addresses:dict,length:int257},percents:dict}}` + ## WithdrawalRequests TLB: `_ addresses:dict amounts:dict n_requests:int257 = WithdrawalRequests` Signature: `WithdrawalRequests{addresses:dict,amounts:dict,n_requests:int257}` diff --git a/sources/output/jetton_TONBWallet.pkg b/sources/output/jetton_TONBWallet.pkg index 25e1728..1cc711c 100644 --- a/sources/output/jetton_TONBWallet.pkg +++ b/sources/output/jetton_TONBWallet.pkg @@ -1 +1 @@ -{"name":"TONBWallet","code":"te6ccgECNAEABd4AART/APSkE/S88sgLAQIBYgIDAgLKBgcCASAEBQERv9gW2eeBN4D0EQBxvd6ME4LnYerpZXPY9CdhzrJUKNs0E4TusalpWyPlmRadeW/vixHME4TujwAfLZsB5P5B1ZLNZRCcAgEgCAkCAUgVFgIBYgoLAAOnQASJRwIddJwh+VMCDXCx/eAtDTAwFxsMABkX+RcOIB+kAiUGZvBPhhAo8JMNs8VQTwKts84CCCEA+KfqW64wIgghAXjUUZuoERMMDQALQgbvLQgIAyow2zwF2zw3EKsQmhCJEHhVBfAn2zwRDhMEPo+VMNs8Bds8OBC8EKsQmhCJVQbwKNs84IIQWV8HvLoRDxMQAGzTHwGCEA+KfqW68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4gHSAAGR1JJtAeL6AFFmFhUUQzAApNMfAYIQF41FGbry4IHTP/oA+kABAfpAIdcLAcMAkQGSMW3iAfoAINQB0NIAAZWBAQHXAJJtAeL6QCHXCwHDAJEBkjFt4jEQKBAnECYQJRAkECMDNo+U2zwF2zw0EHgQZxBWEEVVAvAp2zzgMPLAghESEwEW7UTQ1AH4Yts8bBUUAEzTHwGCEFlfB7y68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4hRDMAEYyPhCAcxVQNs8ye1UIwBkgQEB1wD6QAEB+kABAdQB0NIAAZWBAQHXAJJtAeL6QCHXCwHDAJEBkjFt4jEQJRAkECMCASAXGAIBSCgpAgEgGRoCASAfIABLVwWchwAcsBcwHLAXABywASzMzJ+QDIcgHLAXABywASygfL/8nQgCASAbHAL3MhxAcoBUAcBygBwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY5GfwHKAMhwAcoAcAHKACRus5p/AcoABPACUATMljQDcAHKAOIkbrOafwHKAATwAlAEzJY0A3ABygDicAHKAAJ/AcoAAslYzJczMwFwAcoA4iFus+MPyQH7AIB0eACUbDH6ADFx1yH6ADH6ADCnA6sAgABJ/AcoAAfACAcwACjFwAcoAAgEgISICASAkJQEZG1tcAXIzAVERNs8yYCMATQC0PQEMG0BgWCEAYAQ9A9vofLghwGBYIQiAoAQ9BfI9ADJQAPwJIABmUEWBAQHPAFjPFgHPFsgibrOafwHKABKBAQHPAJUycFjKAOJYIG6VMHABywGSzxbiyQHMABEW/hCUxLwJTCABxRsIvhBbySBEU1TPccF8vRR16GCAPX8IcL/8vRDMFI+8CNxJMIAkjBy3oE+uwKoggkxLQCgggiYloCgErzy9PhCVCCE8CVc8CF/UHZwgEBtbS8EVhAEEDpLq9s8EFYQNFnwIoCYBDMhVcNs8yScAnIIQF41FGVAJyx8Xyz9QBfoCUAPPFgEgbpUwcAHLAZLPFuIB+gIBzxbIIm6zmn8BygASgQEBzwCVMnBYygDiWCBulTBwAcsBks8W4skBzAIBICorAE9IAg1yHTH9M/MfoAMIE1UiKCEBeNRRm6A4IQe92X3roTsRLy9BWgBIAtk+EFvJC1uljw8EDsQKpI0NOJTDMcFs1MbxwWzsI4S+EJT2PAlAYERTQLwISLHBfL03lHooIIA9fwhwv/y9CP4J28QIaGCCJiWgGa2CKGCCJiWgKChJsIAlhB/UIlfCOMNJ26zIsIAsJI3W+MNgLC0BlRb+EFvJIERTVM6xwVTSscFsVNIxwWx8vRRpKGCAPX8IcL/8vRDMFI78CMwgT67AYIJycOAvPL0f3ADgEBUM4jbPFQTBlAzbW3wIoDIBQkMfUELwI1IwoByhcHAoSBNQdNs8KhBGQxNQVW1t8CJQBy4BInAI8AJwBNs8EElDMBltbfAiMAEMyFUw2zzJLwAsghBzYtCcUAXLHxPLPwH6AgHPFgHPFgEKyAHbPMkxABaCENUydttYyx/LPwEMyFUw2zzJMwBAghB73ZfeUAXLHxPLPwH6AgHPFgEgbpUwcAHLAZLPFuI=","abi":"{\"name\":\"TONBWallet\",\"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\":\"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\":\"TokenTransfer\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenTransferInternal\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenBurn\"}}],\"getters\":[{\"name\":\"get_wallet_data\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"JettonWalletData\",\"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\"},\"62972\":{\"message\":\"Invalid balance\"}}}","init":{"code":"te6ccgEBBwEAZgABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBGWW1tcAXIzAVERNs8yYGAGZQRYEBAc8AWM8WAc8WyCJus5p/AcoAEoEBAc8AlTJwWMoA4lggbpUwcAHLAZLPFuLJAcw=","args":[{"name":"master","type":{"kind":"simple","type":"address","optional":false}},{"name":"owner","type":{"kind":"simple","type":"address","optional":false}}],"deployment":{"kind":"system-cell","system":"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"}},"compiler":{"name":"tact","version":"0.8.11"}} \ No newline at end of file +{"name":"TONBWallet","code":"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","abi":"{\"name\":\"TONBWallet\",\"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\":\"TokenTransfer\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenTransferInternal\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"TokenBurn\"}},{\"receiver\":\"internal\",\"message\":{\"kind\":\"typed\",\"type\":\"BlacklistWallet\"}}],\"getters\":[{\"name\":\"get_wallet_data\",\"arguments\":[],\"returnType\":{\"kind\":\"simple\",\"type\":\"JettonWalletData\",\"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":"te6ccgEBBwEAawABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBHWXBtbXAGyMwGBVUg2zzJgYAbFBWgQEBzwBQA88WAc8WygDIIm6zmn8BygASgQEBzwCVMnBYygDiWCBulTBwAcsBks8W4skBzA==","args":[{"name":"master","type":{"kind":"simple","type":"address","optional":false}},{"name":"owner","type":{"kind":"simple","type":"address","optional":false}}],"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_TONBWallet.ts b/sources/output/jetton_TONBWallet.ts index 79d9f38..2ebb6d5 100644 --- a/sources/output/jetton_TONBWallet.ts +++ b/sources/output/jetton_TONBWallet.ts @@ -791,6 +791,437 @@ function dictValueParserInitLinker(): DictionaryValue { } } } +export type ForwardToWallet = { + $$type: 'ForwardToWallet'; + body: Cell; +} + +export function storeForwardToWallet(src: ForwardToWallet) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(1562223291, 32); + b_0.storeRef(src.body); + }; +} + +export function loadForwardToWallet(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 1562223291) { throw Error('Invalid prefix'); } + let _body = sc_0.loadRef(); + return { $$type: 'ForwardToWallet' as const, body: _body }; +} + +function loadTupleForwardToWallet(source: TupleReader) { + let _body = source.readCell(); + return { $$type: 'ForwardToWallet' as const, body: _body }; +} + +function storeTupleForwardToWallet(source: ForwardToWallet) { + let builder = new TupleBuilder(); + builder.writeCell(source.body); + return builder.build(); +} + +function dictValueParserForwardToWallet(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeForwardToWallet(src)).endCell()); + }, + parse: (src) => { + return loadForwardToWallet(src.loadRef().beginParse()); + } + } +} +export type BlacklistWallet = { + $$type: 'BlacklistWallet'; + wallet: Address; +} + +export function storeBlacklistWallet(src: BlacklistWallet) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(43811734, 32); + b_0.storeAddress(src.wallet); + }; +} + +export function loadBlacklistWallet(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 43811734) { throw Error('Invalid prefix'); } + let _wallet = sc_0.loadAddress(); + return { $$type: 'BlacklistWallet' as const, wallet: _wallet }; +} + +function loadTupleBlacklistWallet(source: TupleReader) { + let _wallet = source.readAddress(); + return { $$type: 'BlacklistWallet' as const, wallet: _wallet }; +} + +function storeTupleBlacklistWallet(source: BlacklistWallet) { + let builder = new TupleBuilder(); + builder.writeAddress(source.wallet); + return builder.build(); +} + +function dictValueParserBlacklistWallet(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeBlacklistWallet(src)).endCell()); + }, + parse: (src) => { + return loadBlacklistWallet(src.loadRef().beginParse()); + } + } +} +export type InitiateBlacklistVote = { + $$type: 'InitiateBlacklistVote'; + adminIndex: bigint; + wallet: Address; + quorum_percent: bigint; + vote_time: bigint; +} + +export function storeInitiateBlacklistVote(src: InitiateBlacklistVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3909090059, 32); + b_0.storeInt(src.adminIndex, 257); + b_0.storeAddress(src.wallet); + b_0.storeInt(src.quorum_percent, 257); + let b_1 = new Builder(); + b_1.storeInt(src.vote_time, 257); + b_0.storeRef(b_1.endCell()); + }; +} + +export function loadInitiateBlacklistVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3909090059) { throw Error('Invalid prefix'); } + let _adminIndex = sc_0.loadIntBig(257); + let _wallet = sc_0.loadAddress(); + let _quorum_percent = sc_0.loadIntBig(257); + let sc_1 = sc_0.loadRef().beginParse(); + let _vote_time = sc_1.loadIntBig(257); + return { $$type: 'InitiateBlacklistVote' as const, adminIndex: _adminIndex, wallet: _wallet, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function loadTupleInitiateBlacklistVote(source: TupleReader) { + let _adminIndex = source.readBigNumber(); + let _wallet = source.readAddress(); + let _quorum_percent = source.readBigNumber(); + let _vote_time = source.readBigNumber(); + return { $$type: 'InitiateBlacklistVote' as const, adminIndex: _adminIndex, wallet: _wallet, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function storeTupleInitiateBlacklistVote(source: InitiateBlacklistVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.adminIndex); + builder.writeAddress(source.wallet); + builder.writeNumber(source.quorum_percent); + builder.writeNumber(source.vote_time); + return builder.build(); +} + +function dictValueParserInitiateBlacklistVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeInitiateBlacklistVote(src)).endCell()); + }, + parse: (src) => { + return loadInitiateBlacklistVote(src.loadRef().beginParse()); + } + } +} +export type InitiateLiquidationVote = { + $$type: 'InitiateLiquidationVote'; + adminIndex: bigint; + quorum_percent: bigint; + vote_time: bigint; +} + +export function storeInitiateLiquidationVote(src: InitiateLiquidationVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(301696559, 32); + b_0.storeInt(src.adminIndex, 257); + b_0.storeInt(src.quorum_percent, 257); + b_0.storeInt(src.vote_time, 257); + }; +} + +export function loadInitiateLiquidationVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 301696559) { throw Error('Invalid prefix'); } + let _adminIndex = sc_0.loadIntBig(257); + let _quorum_percent = sc_0.loadIntBig(257); + let _vote_time = sc_0.loadIntBig(257); + return { $$type: 'InitiateLiquidationVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function loadTupleInitiateLiquidationVote(source: TupleReader) { + let _adminIndex = source.readBigNumber(); + let _quorum_percent = source.readBigNumber(); + let _vote_time = source.readBigNumber(); + return { $$type: 'InitiateLiquidationVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time }; +} + +function storeTupleInitiateLiquidationVote(source: InitiateLiquidationVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.adminIndex); + builder.writeNumber(source.quorum_percent); + builder.writeNumber(source.vote_time); + return builder.build(); +} + +function dictValueParserInitiateLiquidationVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeInitiateLiquidationVote(src)).endCell()); + }, + parse: (src) => { + return loadInitiateLiquidationVote(src.loadRef().beginParse()); + } + } +} +export type FinishVote = { + $$type: 'FinishVote'; + voteId: bigint; +} + +export function storeFinishVote(src: FinishVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(710362179, 32); + b_0.storeInt(src.voteId, 257); + }; +} + +export function loadFinishVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 710362179) { throw Error('Invalid prefix'); } + let _voteId = sc_0.loadIntBig(257); + return { $$type: 'FinishVote' as const, voteId: _voteId }; +} + +function loadTupleFinishVote(source: TupleReader) { + let _voteId = source.readBigNumber(); + return { $$type: 'FinishVote' as const, voteId: _voteId }; +} + +function storeTupleFinishVote(source: FinishVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.voteId); + return builder.build(); +} + +function dictValueParserFinishVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeFinishVote(src)).endCell()); + }, + parse: (src) => { + return loadFinishVote(src.loadRef().beginParse()); + } + } +} +export type Vote = { + $$type: 'Vote'; + voteId: bigint; + adminIndex: bigint; + vote: bigint; +} + +export function storeVote(src: Vote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3060856014, 32); + b_0.storeInt(src.voteId, 257); + b_0.storeInt(src.adminIndex, 257); + b_0.storeInt(src.vote, 257); + }; +} + +export function loadVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3060856014) { throw Error('Invalid prefix'); } + let _voteId = sc_0.loadIntBig(257); + let _adminIndex = sc_0.loadIntBig(257); + let _vote = sc_0.loadIntBig(257); + return { $$type: 'Vote' as const, voteId: _voteId, adminIndex: _adminIndex, vote: _vote }; +} + +function loadTupleVote(source: TupleReader) { + let _voteId = source.readBigNumber(); + let _adminIndex = source.readBigNumber(); + let _vote = source.readBigNumber(); + return { $$type: 'Vote' as const, voteId: _voteId, adminIndex: _adminIndex, vote: _vote }; +} + +function storeTupleVote(source: Vote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.voteId); + builder.writeNumber(source.adminIndex); + builder.writeNumber(source.vote); + return builder.build(); +} + +function dictValueParserVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeVote(src)).endCell()); + }, + parse: (src) => { + return loadVote(src.loadRef().beginParse()); + } + } +} +export type AddressList = { + $$type: 'AddressList'; + addresses: Dictionary; + length: bigint; +} + +export function storeAddressList(src: AddressList) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeDict(src.addresses, Dictionary.Keys.BigInt(257), Dictionary.Values.Address()); + b_0.storeInt(src.length, 257); + }; +} + +export function loadAddressList(slice: Slice) { + let sc_0 = slice; + let _addresses = Dictionary.load(Dictionary.Keys.BigInt(257), Dictionary.Values.Address(), sc_0); + let _length = sc_0.loadIntBig(257); + return { $$type: 'AddressList' as const, addresses: _addresses, length: _length }; +} + +function loadTupleAddressList(source: TupleReader) { + let _addresses = Dictionary.loadDirect(Dictionary.Keys.BigInt(257), Dictionary.Values.Address(), source.readCellOpt()); + let _length = source.readBigNumber(); + return { $$type: 'AddressList' as const, addresses: _addresses, length: _length }; +} + +function storeTupleAddressList(source: AddressList) { + let builder = new TupleBuilder(); + builder.writeCell(source.addresses.size > 0 ? beginCell().storeDictDirect(source.addresses, Dictionary.Keys.BigInt(257), Dictionary.Values.Address()).endCell() : null); + builder.writeNumber(source.length); + return builder.build(); +} + +function dictValueParserAddressList(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeAddressList(src)).endCell()); + }, + parse: (src) => { + return loadAddressList(src.loadRef().beginParse()); + } + } +} +export type Distribution = { + $$type: 'Distribution'; + addresses: AddressList; + percents: Dictionary; +} + +export function storeDistribution(src: Distribution) { + return (builder: Builder) => { + let b_0 = builder; + b_0.store(storeAddressList(src.addresses)); + b_0.storeDict(src.percents, Dictionary.Keys.Address(), Dictionary.Values.BigInt(257)); + }; +} + +export function loadDistribution(slice: Slice) { + let sc_0 = slice; + let _addresses = loadAddressList(sc_0); + let _percents = Dictionary.load(Dictionary.Keys.Address(), Dictionary.Values.BigInt(257), sc_0); + return { $$type: 'Distribution' as const, addresses: _addresses, percents: _percents }; +} + +function loadTupleDistribution(source: TupleReader) { + const _addresses = loadTupleAddressList(source.readTuple()); + let _percents = Dictionary.loadDirect(Dictionary.Keys.Address(), Dictionary.Values.BigInt(257), source.readCellOpt()); + return { $$type: 'Distribution' as const, addresses: _addresses, percents: _percents }; +} + +function storeTupleDistribution(source: Distribution) { + let builder = new TupleBuilder(); + builder.writeTuple(storeTupleAddressList(source.addresses)); + builder.writeCell(source.percents.size > 0 ? beginCell().storeDictDirect(source.percents, Dictionary.Keys.Address(), Dictionary.Values.BigInt(257)).endCell() : null); + return builder.build(); +} + +function dictValueParserDistribution(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeDistribution(src)).endCell()); + }, + parse: (src) => { + return loadDistribution(src.loadRef().beginParse()); + } + } +} +export type InitiateDistributionVote = { + $$type: 'InitiateDistributionVote'; + adminIndex: bigint; + quorum_percent: bigint; + vote_time: bigint; + distribution: Distribution; +} + +export function storeInitiateDistributionVote(src: InitiateDistributionVote) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(276353205, 32); + b_0.storeInt(src.adminIndex, 257); + b_0.storeInt(src.quorum_percent, 257); + b_0.storeInt(src.vote_time, 257); + let b_1 = new Builder(); + b_1.store(storeDistribution(src.distribution)); + b_0.storeRef(b_1.endCell()); + }; +} + +export function loadInitiateDistributionVote(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 276353205) { throw Error('Invalid prefix'); } + let _adminIndex = sc_0.loadIntBig(257); + let _quorum_percent = sc_0.loadIntBig(257); + let _vote_time = sc_0.loadIntBig(257); + let sc_1 = sc_0.loadRef().beginParse(); + let _distribution = loadDistribution(sc_1); + return { $$type: 'InitiateDistributionVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time, distribution: _distribution }; +} + +function loadTupleInitiateDistributionVote(source: TupleReader) { + let _adminIndex = source.readBigNumber(); + let _quorum_percent = source.readBigNumber(); + let _vote_time = source.readBigNumber(); + const _distribution = loadTupleDistribution(source.readTuple()); + return { $$type: 'InitiateDistributionVote' as const, adminIndex: _adminIndex, quorum_percent: _quorum_percent, vote_time: _vote_time, distribution: _distribution }; +} + +function storeTupleInitiateDistributionVote(source: InitiateDistributionVote) { + let builder = new TupleBuilder(); + builder.writeNumber(source.adminIndex); + builder.writeNumber(source.quorum_percent); + builder.writeNumber(source.vote_time); + builder.writeTuple(storeTupleDistribution(source.distribution)); + return builder.build(); +} + +function dictValueParserInitiateDistributionVote(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeInitiateDistributionVote(src)).endCell()); + }, + parse: (src) => { + return loadInitiateDistributionVote(src.loadRef().beginParse()); + } + } +} export type WithdrawalRequests = { $$type: 'WithdrawalRequests'; addresses: Dictionary; @@ -964,9 +1395,9 @@ function dictValueParserWithdraw(): DictionaryValue { } } async function TONBWallet_init(master: Address, owner: Address) { - const __init = 'te6ccgEBBwEAZgABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBGWW1tcAXIzAVERNs8yYGAGZQRYEBAc8AWM8WAc8WyCJus5p/AcoAEoEBAc8AlTJwWMoA4lggbpUwcAHLAZLPFuLJAcw='; - const __code = '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'; - const __system = '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'; + const __init = 'te6ccgEBBwEAawABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBHWXBtbXAGyMwGBVUg2zzJgYAbFBWgQEBzwBQA88WAc8WygDIIm6zmn8BygASgQEBzwCVMnBYygDiWCBulTBwAcsBks8W4skBzA=='; + const __code = 'te6ccgECOAEABmYAART/APSkE/S88sgLAQIBYgIDAgLKBAUCASAGBwIBIAgJAgFIFxgBEb/YFtnngT+A/BMAcb3ejBOC52Hq6WVz2PQnYc6yVCjbNBOE7rGpaVsj5ZkWnXlv74sRzBOE7o8AHy2bAeT+QdWSzWUQnAIBYgoLAAHyBIlHAh10nCH5UwINcLH94C0NMDAXGwwAGRf5Fw4gH6QCJQZm8E+GECjwkw2zxVBfAs2zzgIIIQD4p+pbrjAiCCEBeNRRm6gTFQwNAAtCBu8tCAgDLjDbPAbbPDcQvBCrEJoQiRB4VQXwKNs8Ew4VBESPlzDbPAbbPDgQzRC8EKsQmhCJVQbwKds84CCCEFlfB7y6Ew8VEABs0x8BghAPin6luvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeIB0gABkdSSbQHi+gBRZhYVFEMwAKTTHwGCEBeNRRm68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4gH6ACDUAdDSAAGVgQEB1wCSbQHi+kAh1wsBwwCRAZIxbeIxECgQJxAmECUQJBAjBECPlzDbPAbbPDQQiRB4EGcQVhBFVQLwKts84IIKnIOWuhMRFRIATNMfAYIQWV8HvLry4IHTP/oA+kABAfpAIdcLAcMAkQGSMW3iFEMwAzKPkts8Bts8MRBWEEUQNEEw8CvbPOAw8sCCExQVARbtRNDUAfhi2zxsFhYAHtMfAYIKnIOWuvLggfpAAQEYyPhCAcxVUNs8ye1UIwBsgQEB1wD6QAEB+kABAdIA1AHQ0gABlYEBAdcAkm0B4vpAIdcLAcMAkQGSMW3iMRAmECUQJBAjAgEgGRoCASAmJwIBWBscAgEgHyAASxwWchwAcsBcwHLAXABywASzMzJ+QDIcgHLAXABywASygfL/8nQgAvcyHEBygFQBwHKAHABygJQBc8WUAP6AnABymgjbrMlbrOxjkZ/AcoAyHABygBwAcoAJG6zmn8BygAE8AJQBMyWNANwAcoA4iRus5p/AcoABPACUATMljQDcAHKAOJwAcoAAn8BygACyVjMlzMzAXABygDiIW6z4w/JAfsAgHR4AEn8BygAB8AIBzAAKMXABygACASAhIgIBICQlACUbDH6ADFx1yH6ADH6ADCnA6sAgAR0cG1tcAbIzAYFVSDbPMmAjAGxQVoEBAc8AUAPPFgHPFsoAyCJus5p/AcoAEoEBAc8AlTJwWMoA4lggbpUwcAHLAZLPFuLJAcwATQC0PQEMG0BgWCEAYAQ9A9vofLghwGBYIQiAoAQ9BfI9ADJQAPwJYAATF8D+EJTEvAmMIAIBICgpAE/UAQa5Dpj+mfmP0AGECaqRFBCAvGoozdAcEIPe7L710J2Il5egtQAsAgEgKisCASA0NQHXGwiggCvECiz8vT4QW8kgRFNUz7HBfL0UeehggD1/CHC//L0QzBSP/AkcSTCAJIwct6BPrsCqIIJMS0AoIIImJaAoBK88vT4QlQglPAmXPAif1B2cIBAbW1WEARWEQQQOkur2zwQVhA0WfAjgLALdPhBbyQtbpY8PBA7ECqSNDTiUw3HBbNTG8cFs7COEvhCU+jwJgGBEU0C8CIixwXy9N5R+KCCAPX8IcL/8vQj+CdvECGhggiYloBmtgihggiYloCgoSbCAJgHERAHUIlfCOMNKG6zIsIAsJI4W+MNgLi8BDMhVcNs8yS0AnIIQF41FGVAJyx8Xyz9QBfoCUAPPFgEgbpUwcAHLAZLPFuIB+gIBzxbIIm6zmn8BygASgQEBzwCVMnBYygDiWCBulTBwAcsBks8W4skBzAFGECMREFBC8CRSMKAdoXBwKEgTUHTbPCsQRkMTUFVtbfAjUAgwASJwCfACcATbPBBKQzAabW3wIzIBDMhVMNs8yTEALIIQc2LQnFAFyx8Tyz8B+gIBzxYBzxYBCsgB2zzJMwAWghDVMnbbWMsfyz8BlRb+EFvJIERTVM7xwVTS8cFsVNIxwWx8vRRtKGCAPX8IcL/8vRDMFI88CQwgT67AYIJycOAvPL0f3ADgEBUM5nbPFQTB1AzbW3wI4DYBXwwMvhBbyQQI18DgRFNUxTHBVEkxwUSsfL0f3B/UxGAQFQ6mds8JwMEUKptbfAjAoDYBDMhVMNs8yTcAQIIQe92X3lAFyx8Tyz8B+gIBzxYBIG6VMHABywGSzxbi'; + const __system = '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'; let systemCell = Cell.fromBase64(__system); let builder = new TupleBuilder(); builder.writeCell(systemCell); @@ -1020,6 +1451,7 @@ const TONBWallet_errors: { [key: number]: { message: string } } = { 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` }, } @@ -1050,7 +1482,7 @@ export class TONBWallet implements Contract { this.init = init; } - async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: TokenTransfer | TokenTransferInternal | TokenBurn) { + async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: TokenTransfer | TokenTransferInternal | TokenBurn | BlacklistWallet) { let body: Cell | null = null; if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenTransfer') { @@ -1062,6 +1494,9 @@ export class TONBWallet implements Contract { if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenBurn') { body = beginCell().store(storeTokenBurn(message)).endCell(); } + if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'BlacklistWallet') { + body = beginCell().store(storeBlacklistWallet(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 49d0031..2549a1a 100644 --- a/sources/staking.tact +++ b/sources/staking.tact @@ -17,7 +17,7 @@ fun stakingWithdrawMessage(value: Int, pool: Address): SendParameters { struct WithdrawalRequests { addresses: map[Int]Address; amounts: map[Int]Int; - n_requests: Int; + n_requests: Int = 0; } fun withdrawalSum(requests: WithdrawalRequests): Int { diff --git a/sources/tests/__snapshots__/jetton.spec.ts.snap b/sources/tests/__snapshots__/jetton.spec.ts.snap index f1e9eca..232edbb 100644 --- a/sources/tests/__snapshots__/jetton.spec.ts.snap +++ b/sources/tests/__snapshots__/jetton.spec.ts.snap @@ -13,14 +13,14 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon }, "bounce": true, "from": "kQAI-3FJVc_ywSuY4vq0bYrzR7S4Och4y7bTU_i5yLOB3A6P", - "to": "kQBvLWbJmRxsnDuBrGvOkN_QmzLpgeyyQf0XbfnIeM7XYTwh", + "to": "kQC21U5V6OpVNUMgmbDF89Gv4-nNbCQraGZW6CyNxjZ54mIG", "type": "internal", "value": 1200000000n, }, "type": "received", }, { - "gasUsed": 37054n, + "gasUsed": 37309n, "type": "processed", }, { @@ -31,8 +31,8 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon "type": "cell", }, "bounce": false, - "from": "kQBvLWbJmRxsnDuBrGvOkN_QmzLpgeyyQf0XbfnIeM7XYTwh", - "to": "kQDvdSDFqvr41l4MwWjbjCSwTka3iYJTlTEjj5rVuePsXsSa", + "from": "kQC21U5V6OpVNUMgmbDF89Gv4-nNbCQraGZW6CyNxjZ54mIG", + "to": "kQBX5jl-CCnwNVNcNfQEr5mWWfNCD7wLX88zZLoP6HgwGPXa", "type": "internal", "value": 13474000n, }, @@ -43,13 +43,13 @@ exports[`jetton should deploy and deposit the wallet with the correct sum of mon "messages": [ { "body": { - "cell": "x{178D4519000000000000000043B9ACA00800DE5ACD933238D938770358D79D21BFA13665D303D96483FA2EDBF390F19DAEC300023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_} - x{800000000000000000000000000000000000000000000000000000000000000020077BA9062D57D7C6B2F0660B46DC6125827235BC4C129CA9891C7CD6ADCF1F62F4_}", + "cell": "x{178D4519000000000000000043B9ACA008016DAA9CABD1D4AA6A864133618BE7A35FC7D39AD84856D0CCADD0591B8C6CF3C500023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_} + x{80000000000000000000000000000000000000000000000000000000000000002002BF31CBF0414F81AA9AE1AFA0257CCCB2CF9A107DE05AFE799B25D07F43C180C4_}", "type": "cell", }, "bounce": false, - "from": "kQBvLWbJmRxsnDuBrGvOkN_QmzLpgeyyQf0XbfnIeM7XYTwh", - "to": "kQATwu07DUC3EW02Ouf3rQA9zbePcr9Z3bGajEVnEsilpexg", + "from": "kQC21U5V6OpVNUMgmbDF89Gv4-nNbCQraGZW6CyNxjZ54mIG", + "to": "kQCIAtWss1aC4r_RS9uo0BqWrfh2tc-AhjmJAY_eXbQ5ALyd", "type": "internal", "value": 30513000n, }, diff --git a/sources/wallet.tact b/sources/wallet.tact index d248f44..18c9ab2 100644 --- a/sources/wallet.tact +++ b/sources/wallet.tact @@ -12,7 +12,8 @@ contract TONBWallet { balance: Int; owner: Address; - master: Address; + master: Address; + blacklisted: Bool = false; linker: Int?; linker_address: Address?; @@ -23,6 +24,7 @@ contract TONBWallet { } receive(msg: TokenTransfer) { + require(!self.blacklisted, "Wallet is blacklisted"); // Check sender let ctx: Context = context(); @@ -145,6 +147,30 @@ contract TONBWallet { }); } + receive(_msg: BlacklistWallet) { + // Check sender + let ctx: Context = context(); + require(ctx.sender == self.master || ctx.sender == self.linker_address, "Invalid sender"); + + // Blacklist wallet + self.blacklisted = true; + let amount: Int = self.balance; + self.balance = 0; + + send(SendParameters{ + to: self.master, + value: 0, + mode: SendRemainingValue, + bounce: true, + body: TokenBurnNotification{ + queryId: 0, + amount: amount, + owner: self.owner, + responseAddress: self.owner + }.toCell() + }); + } + bounced(msg: Slice) { // Parse bounced message