tact-docs icon indicating copy to clipboard operation
tact-docs copied to clipboard

Fix counter example on landing page to return excess TONs to contract deployer

Open anton-trunov opened this issue 1 year ago • 2 comments

Let's say the deployer sends 0.05 TONs during contract deployment. They should get the excess back

anton-trunov avatar May 23 '24 14:05 anton-trunov

This would also have to be updated in ton-org/blueprint, as this example is taken from there and it is what users get when they run npm create ton -- simple-counter --type tact-counter --contractName SimpleCounter.

novusnota avatar May 23 '24 14:05 novusnota

We may change its receiver function from this:

receive(msg: Add) {
    self.counter += msg.amount;
}

To this:

receive(msg: Add) {
    self.counter += msg.amount;
    self.reply(null); // reply with excessive amount of Toncoin
    // or
    self.notify(null); // does the same, but would not bounce
                       // it is used in Deployable trait to send `DeployOk` with excessive funds back
}

But other than that, the deploy seems to be giving the excess back already — with DeployOk message provided by the @stdlib/deploy library and Deployable trait. It's just that they're using self.notify() function under the hood, which isn't bounceable and, thus, won't return funds in case of failed deployments.

Oh, and if users aren't using Deployable trait for deployments, then it won't be giving any excess values unless explicitly made to. But as we're using Deployable nearly everywhere that shouldn't be a frequent issue, if issue at all.

novusnota avatar May 23 '24 15:05 novusnota