Skip to content

Commit e3132d5

Browse files
authored
feat(docs): explain that contracts return excess funds upon deployments with Deployable trait (#3398)
1 parent 71ce6af commit e3132d5

File tree

3 files changed

+27
-16
lines changed

3 files changed

+27
-16
lines changed

docs/src/content/docs/ref/stdlib-deploy.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ The trait `Deployable{:tact}` provides a unified mechanism for deployments by im
6161

6262
All contracts are deployed by sending them a message. While any message can be used for this purpose, you can use the special [`Deploy{:tact}`](#deploy) message.
6363

64-
This message has a single field, `queryId`, provided by the deployer (usually set to zero). If the deployment succeeds, the contract will reply with a [`DeployOk{:tact}`](#deployok) message and echo the same `queryId` in the response.
64+
This message has a single field, `queryId`, provided by the deployer and is usually set to zero. If the deployment succeeds, the contract will reply with a [`DeployOk{:tact}`](#deployok) message and echo the same `queryId` in the response.
65+
66+
Beware that the receiver handling the `Deploy{:tact}` message sends the `DeployOk{:tact}` reply using the [`self.reply(){:tact}`](/ref/core-base#self-reply) function, which returns all excessive funds from the incoming message back to the sender. That is, contracts deployed using the `Deployable{:tact}` trait have a balance of 0 Toncoin after the deployment is completed.
6567

6668
Source code:
6769

src/stdlib/stdlib.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,23 @@ files["libs/deploy.tact"] =
2828
"bWVjaGFuaXNtIGZvciBkZXBsb3ltZW50cyBieSBpbXBsZW1lbnRpbmcgYQovLy8gc2ltcGxlIHJlY2VpdmVyIGZvciB0aGUgYERlcGxveWAgbWVzc2FnZS4KLy8vCi8v" +
2929
"LyBBbGwgY29udHJhY3RzIGFyZSBkZXBsb3llZCBieSBzZW5kaW5nIHRoZW0gYSBtZXNzYWdlLiBXaGlsZSBhbnkgbWVzc2FnZQovLy8gY2FuIGJlIHVzZWQgZm9yIHRo" +
3030
"aXMgcHVycG9zZSwgdGhlIGJlc3QgcHJhY3RpY2UgaXMgdG8gdXNlIHRoZSBzcGVjaWFsCi8vLyBgRGVwbG95YCBtZXNzYWdlLgovLy8KLy8vIFRoaXMgbWVzc2FnZSBo" +
31-
"YXMgYSBzaW5nbGUgZmllbGQsIGBxdWVyeUlkYCwgcHJvdmlkZWQgYnkgdGhlIGRlcGxveWVyCi8vLyAodXN1YWxseSBzZXQgdG8gemVybykuIElmIHRoZSBkZXBsb3lt" +
32-
"ZW50IHN1Y2NlZWRzLCB0aGUgY29udHJhY3Qgd2lsbAovLy8gcmVwbHkgd2l0aCBhIGBEZXBsb3lPa2AgbWVzc2FnZSBhbmQgZWNobyB0aGUgc2FtZSBgcXVlcnlJZGAg" +
33-
"aW4gdGhlIHJlc3BvbnNlLgovLy8KLy8vIGBgYHRhY3QKLy8vIGltcG9ydCAiQHN0ZGxpYi9kZXBsb3kiOwovLy8KLy8vIGNvbnRyYWN0IEV4YW1wbGVDb250cmFjdCB3" +
34-
"aXRoIERlcGxveWFibGUgewovLy8gICAgIC8vIE5vdywgdGhpcyBjb250cmFjdCBoYXMgYSByZWNlaXZlciBmb3IgdGhlIERlcGxveSBtZXNzYWdlCi8vLyB9Ci8vLyBg" +
35-
"YGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9zdGRsaWItZGVwbG95I2RlcGxveWFibGUKLy8vCnRyYWl0IERlcGxveWFibGUgd2l0" +
36-
"aCBCYXNlVHJhaXQgewogICAgcmVjZWl2ZShkZXBsb3k6IERlcGxveSkgewogICAgICAgIHNlbGYubm90aWZ5KERlcGxveU9rIHsgcXVlcnlJZDogZGVwbG95LnF1ZXJ5" +
37-
"SWQgfS50b0NlbGwoKSk7CiAgICB9Cn0KCi8vLyAqKkRlcHJlY2F0ZWQqKiBzaW5jZSBUYWN0IDEuNi4wLiBVbmxlc3MgeW91IG5lZWQgdGhlIGBxdWVyeUlkYCwKLy8v" +
38-
"IHVzZSBhIGBudWxsYCBtZXNzYWdlIGJvZHkgcmVjZWl2ZXIgaW5zdGVhZCBvZiB0aGlzIHRyYWl0LgovLy8KLy8vIFByb3ZpZGVzIGEgY29udmVuaWVudCB1bmlmaWVk" +
39-
"IG1lY2hhbmlzbSBmb3IgY2hhaW5lZCBkZXBsb3ltZW50cy4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBpbXBvcnQgIkBzdGRsaWIvZGVwbG95IjsKLy8vCi8vLyBjb250cmFj" +
40-
"dCBFeGFtcGxlQ29udHJhY3Qgd2l0aCBGYWN0b3J5RGVwbG95YWJsZSB7Ci8vLyAgICAgLy8gTm93LCB0aGlzIGNvbnRyYWN0IGhhcyBhIHJlY2VpdmVyIGZvciB0aGUg" +
41-
"RmFjdG9yeURlcGxveSBtZXNzYWdlCi8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9zdGRsaWItZGVwbG95I2Zh" +
42-
"Y3RvcnlkZXBsb3lhYmxlCi8vLwp0cmFpdCBGYWN0b3J5RGVwbG95YWJsZSB3aXRoIEJhc2VUcmFpdCB7CiAgICByZWNlaXZlKGRlcGxveTogRmFjdG9yeURlcGxveSkg" +
43-
"ewogICAgICAgIHNlbGYuZm9yd2FyZChkZXBsb3kuY2FzaGJhY2ssIERlcGxveU9rIHsgcXVlcnlJZDogZGVwbG95LnF1ZXJ5SWQgfS50b0NlbGwoKSwgZmFsc2UsIG51" +
44-
"bGwpOwogICAgfQp9Cg==";
31+
"YXMgYSBzaW5nbGUgZmllbGQsIGBxdWVyeUlkYCwgcHJvdmlkZWQgYnkgdGhlIGRlcGxveWVyCi8vLyBhbmQgaXMgdXN1YWxseSBzZXQgdG8gemVyby4gSWYgdGhlIGRl" +
32+
"cGxveW1lbnQgc3VjY2VlZHMsIHRoZSBjb250cmFjdCB3aWxsCi8vLyByZXBseSB3aXRoIGEgYERlcGxveU9rYCBtZXNzYWdlIGFuZCBlY2hvIHRoZSBzYW1lIGBxdWVy" +
33+
"eUlkYCBpbiB0aGUgcmVzcG9uc2UuCi8vLwovLy8gQmV3YXJlIHRoYXQgdGhlIHJlY2VpdmVyIGhhbmRsaW5nIHRoZSBgRGVwbG95YCBtZXNzYWdlIHNlbmRzIHRoZSBg" +
34+
"RGVwbG95T2tgIHJlcGx5Ci8vLyB1c2luZyB0aGUgYHNlbGYucmVwbHkoKWAgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgYWxsIGV4Y2Vzc2l2ZSBmdW5kcwovLy8gZnJv" +
35+
"bSB0aGUgaW5jb21pbmcgbWVzc2FnZSBiYWNrIHRvIHRoZSBzZW5kZXIuIFRoYXQgaXMsIGNvbnRyYWN0cyBkZXBsb3llZAovLy8gdXNpbmcgdGhlIGBEZXBsb3lhYmxl" +
36+
"YCB0cmFpdCBoYXZlIGEgYmFsYW5jZSBvZiAwIFRvbmNvaW4KLy8vIGFmdGVyIHRoZSBkZXBsb3ltZW50IGlzIGNvbXBsZXRlZC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBp" +
37+
"bXBvcnQgIkBzdGRsaWIvZGVwbG95IjsKLy8vCi8vLyBjb250cmFjdCBFeGFtcGxlQ29udHJhY3Qgd2l0aCBEZXBsb3lhYmxlIHsKLy8vICAgICAvLyBOb3csIHRoaXMg" +
38+
"Y29udHJhY3QgaGFzIGEgcmVjZWl2ZXIgZm9yIHRoZSBEZXBsb3kgbWVzc2FnZQovLy8gfQovLy8gYGBgCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5n" +
39+
"Lm9yZy9yZWYvc3RkbGliLWRlcGxveSNkZXBsb3lhYmxlCi8vLwp0cmFpdCBEZXBsb3lhYmxlIHdpdGggQmFzZVRyYWl0IHsKICAgIHJlY2VpdmUoZGVwbG95OiBEZXBs" +
40+
"b3kpIHsKICAgICAgICBzZWxmLm5vdGlmeShEZXBsb3lPayB7IHF1ZXJ5SWQ6IGRlcGxveS5xdWVyeUlkIH0udG9DZWxsKCkpOwogICAgfQp9CgovLy8gKipEZXByZWNh" +
41+
"dGVkKiogc2luY2UgVGFjdCAxLjYuMC4gVW5sZXNzIHlvdSBuZWVkIHRoZSBgcXVlcnlJZGAsCi8vLyB1c2UgYSBgbnVsbGAgbWVzc2FnZSBib2R5IHJlY2VpdmVyIGlu" +
42+
"c3RlYWQgb2YgdGhpcyB0cmFpdC4KLy8vCi8vLyBQcm92aWRlcyBhIGNvbnZlbmllbnQgdW5pZmllZCBtZWNoYW5pc20gZm9yIGNoYWluZWQgZGVwbG95bWVudHMuCi8v" +
43+
"LwovLy8gYGBgdGFjdAovLy8gaW1wb3J0ICJAc3RkbGliL2RlcGxveSI7Ci8vLwovLy8gY29udHJhY3QgRXhhbXBsZUNvbnRyYWN0IHdpdGggRmFjdG9yeURlcGxveWFi" +
44+
"bGUgewovLy8gICAgIC8vIE5vdywgdGhpcyBjb250cmFjdCBoYXMgYSByZWNlaXZlciBmb3IgdGhlIEZhY3RvcnlEZXBsb3kgbWVzc2FnZQovLy8gfQovLy8gYGBgCi8v" +
45+
"LwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvc3RkbGliLWRlcGxveSNmYWN0b3J5ZGVwbG95YWJsZQovLy8KdHJhaXQgRmFjdG9yeURlcGxv" +
46+
"eWFibGUgd2l0aCBCYXNlVHJhaXQgewogICAgcmVjZWl2ZShkZXBsb3k6IEZhY3RvcnlEZXBsb3kpIHsKICAgICAgICBzZWxmLmZvcndhcmQoZGVwbG95LmNhc2hiYWNr" +
47+
"LCBEZXBsb3lPayB7IHF1ZXJ5SWQ6IGRlcGxveS5xdWVyeUlkIH0udG9DZWxsKCksIGZhbHNlLCBudWxsKTsKICAgIH0KfQo=";
4548
files["libs/dns.fc"] =
4649
"c2xpY2UgZG5zX3N0cmluZ190b19pbnRlcm5hbChzbGljZSBkb21haW4pIGlubGluZV9yZWYgewoKICAgIDs7IFNwZWNpYWwgY2FzZSBmb3Igcm9vdCBkb21haW4KICAg" +
4750
"IGlmICgoZG9tYWluLnNsaWNlX2JpdHMoKSA9PSA4KSAmIChkb21haW4uc2xpY2VfcmVmcygpID09IDApKSB7CiAgICAgICAgaWYgKGRvbWFpbi5wcmVsb2FkX3VpbnQo" +

src/stdlib/stdlib/libs/deploy.tact

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,15 @@ message(0x6d0ff13b) FactoryDeploy {
4040
/// `Deploy` message.
4141
///
4242
/// This message has a single field, `queryId`, provided by the deployer
43-
/// (usually set to zero). If the deployment succeeds, the contract will
43+
/// and is usually set to zero. If the deployment succeeds, the contract will
4444
/// reply with a `DeployOk` message and echo the same `queryId` in the response.
4545
///
46+
/// Beware that the receiver handling the `Deploy` message sends the `DeployOk` reply
47+
/// using the `self.reply()` function, which returns all excessive funds
48+
/// from the incoming message back to the sender. That is, contracts deployed
49+
/// using the `Deployable` trait have a balance of 0 Toncoin
50+
/// after the deployment is completed.
51+
///
4652
/// ```tact
4753
/// import "@stdlib/deploy";
4854
///

0 commit comments

Comments
 (0)