You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.2 KiB
56 lines
1.2 KiB
// import "@stdlib/jetton"; |
|
import "./messages"; |
|
import "./wallet"; |
|
import "./linker"; |
|
import "./jetton_trait"; |
|
|
|
message Deposit { |
|
amount: Int; |
|
} |
|
|
|
message Withdraw { |
|
amount: Int; |
|
} |
|
|
|
struct WithdrawalRequests { |
|
addresses: map[Int]Address; |
|
amounts: map[Int]Int; |
|
n_requests: Int; |
|
} |
|
|
|
|
|
const gas_consumption: Int = ton("0.01"); |
|
const withdraw_gas_consumption: Int = ton("0.05"); |
|
const deposit_gas_consumption: Int = ton("0.05"); |
|
|
|
|
|
|
|
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; |
|
self.owner = owner; |
|
self.mintable = true; |
|
self.content = content; |
|
} |
|
|
|
receive(msg: Deposit) { |
|
let ctx: Context = context(); |
|
require(ctx.value >= deposit_gas_consumption, "not enough money for deposit"); |
|
self.mint(ctx.sender, msg.amount, ctx.sender); |
|
} |
|
|
|
receive(msg: Withdraw) { |
|
let ctx: Context = context(); |
|
require(ctx.value >= withdraw_gas_consumption, "not enough money for withdraw"); |
|
self.burn(ctx.sender, msg.amount, ctx.sender); |
|
} |
|
} |