From 026ee000f973052710ee6c1a8057c5c420ccca4e Mon Sep 17 00:00:00 2001 From: ennucore Date: Sun, 29 Jan 2023 19:16:49 +0100 Subject: [PATCH] Deploying with the linker --- sources/jetton.tact | 114 ++---------------------------------------- sources/messages.tact | 2 +- 2 files changed, 5 insertions(+), 111 deletions(-) diff --git a/sources/jetton.tact b/sources/jetton.tact index 4ae3f03..18e4a98 100644 --- a/sources/jetton.tact +++ b/sources/jetton.tact @@ -1,129 +1,23 @@ // import "@stdlib/jetton"; -import "@stdlib/ownable"; import "./messages"; import "./wallet"; import "./linker"; +import "./jetton_trait"; message Mint { amount: Int; } -@interface("org.ton.jetton.master") -trait Jetton with Ownable { - - // - // Storage - // - - totalSupply: Int; - mintable: Bool; - owner: Address; - content: Cell?; - - // - // Receivers - // - - receive(msg: TokenUpdateContent) { - - // Allow changing content only by owner - self.requireOwner(); - - // Update content - self.content = msg.content; - } - - receive(msg: TokenBurnNotification) { - - // Check wallet - self.requireWallet(msg.owner); - - // Update supply - self.totalSupply = self.totalSupply - msg.amount; - - // Cashback - if (msg.responseAddress != null) { - send(SendParameters{ - to: msg.responseAddress!!, - value: 0, - bounce: false, - mode: SendRemainingValue + SendIgnoreErrors, - body: TokenExcesses{ - queryId: msg.queryId - }.toCell() - }); - } - } - - - // - // Get Methods - // - - get fun get_wallet_address(owner: Address): Address { - let winit: StateInit = self.getJettonWalletInit(owner); - return contractAddress(winit); - } - - get fun get_jetton_data(): JettonData { - let code: Cell = self.getJettonWalletInit(myAddress()).code; - return JettonData{ - totalSupply: self.totalSupply, - mintable: self.mintable, - owner: self.owner, - content: self.content, - walletCode: code - }; - } - - // - // Private Methods - // - - fun mint(to: Address, amount: Int, responseAddress: Address?) { - - // Update total supply - self.totalSupply = self.totalSupply + amount; - - // Create message - let winit: StateInit = self.getJettonWalletInit(to); - let walletAddress: Address = contractAddress(winit); - send(SendParameters{ - to: walletAddress, - value: 0, - bounce: false, - mode: SendRemainingValue, - body: TokenTransferInternal{ - amount: amount, - queryId: 0, - from: myAddress(), - responseAddress: responseAddress, - forwardTonAmount: 0, - forwardPayload: emptySlice() - }.toCell(), - code: winit.code, - data: winit.data - }); - } - - fun requireWallet(owner: Address) { - let ctx: Context = context(); - let winit: StateInit = self.getJettonWalletInit(owner); - require(contractAddress(winit) == ctx.sender, "Invalid sender"); - } - - virtual fun getJettonWalletInit(address: Address): StateInit { - return initOf TONBWallet(myAddress(), address); - } -} - contract TONB with Jetton { totalSupply: Int as coins; owner: Address; content: Cell?; mintable: Bool; + first_linker: Address?; + last_linker: Address?; + n_linkers: Int = 0; init(owner: Address, content: Cell?) { self.totalSupply = 0; diff --git a/sources/messages.tact b/sources/messages.tact index 75f422d..a88f1d9 100644 --- a/sources/messages.tact +++ b/sources/messages.tact @@ -66,5 +66,5 @@ message InitLinker { } message SetLinkerNeighbor { - neighbor: Address; + neighbor: Address?; }