From 656434cce2be37096b8861594171a6b3ee9d1adc Mon Sep 17 00:00:00 2001 From: Gusarich Date: Tue, 3 Sep 2024 08:16:41 +0300 Subject: [PATCH] feat: add `SendOnlyEstimateFee` and fix comment in stdlib --- src/imports/stdlib.ts | 53 ++++++++++++++++++++++--------------------- stdlib/std/send.tact | 1 + stdlib/stdlib.fc | 2 +- 3 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/imports/stdlib.ts b/src/imports/stdlib.ts index 448609239..ba1510dfa 100644 --- a/src/imports/stdlib.ts +++ b/src/imports/stdlib.ts @@ -224,31 +224,32 @@ files['std/send.tact'] = 'YXNtIGZ1biBuYXRpdmVTZW5kTWVzc2FnZShjZWxsOiBDZWxsLCBtb2RlOiBJbnQpIHsgU0VORFJBV01TRyB9CgpAbmFtZShzZW5kX21lc3NhZ2UpCm5hdGl2ZSBuYXRp' + 'dmVTZW5kTWVzc2FnZVJldHVybkZvcndhcmRGZWUoY2VsbDogQ2VsbCwgbW9kZTogSW50KTogSW50OwoKY29uc3QgU2VuZFJlbWFpbmluZ0JhbGFuY2U6IEludCA9IDEy' + 'ODsKY29uc3QgU2VuZFJlbWFpbmluZ1ZhbHVlOiBJbnQgPSA2NDsKY29uc3QgU2VuZElnbm9yZUVycm9yczogSW50ID0gMjsKY29uc3QgU2VuZFBheUdhc1NlcGFyYXRl' + - 'bHk6IEludCA9IDE7CmNvbnN0IFNlbmREZXN0cm95SWZaZXJvOiBJbnQgPSAzMjsKY29uc3QgU2VuZEJvdW5jZUlmQWN0aW9uRmFpbDogSW50ID0gMTY7CgpzdHJ1Y3Qg' + - 'U2VuZFBhcmFtZXRlcnMgewogICAgYm91bmNlOiBCb29sID0gdHJ1ZTsKICAgIHRvOiBBZGRyZXNzOwogICAgdmFsdWU6IEludDsKICAgIG1vZGU6IEludCA9IDA7CiAg' + - 'ICBib2R5OiBDZWxsPyA9IG51bGw7CiAgICBjb2RlOiBDZWxsPyA9IG51bGw7CiAgICBkYXRhOiBDZWxsPyA9IG51bGw7Cn0KCmZ1biBzZW5kKHBhcmFtczogU2VuZFBh' + - 'cmFtZXRlcnMpOiBJbnQgewogICAgbGV0IGI6IEJ1aWxkZXIgPSBiZWdpbkNlbGwoKTsKICAgIGIgPSBiLnN0b3JlSW50KDEsIDIpOyAvLyBpbnRlcm5hbF9tZXNzYWdl' + - 'ICsgaWhkX2Rpc2FibGVkCiAgICBiID0gYi5zdG9yZUJvb2wocGFyYW1zLmJvdW5jZSk7IC8vIGJvdW5jZQogICAgYiA9IGIuc3RvcmVJbnQoMCwgMyk7IC8vIGJvdW5j' + - 'ZWQgKyBmcm9tCiAgICBiID0gYi5zdG9yZUFkZHJlc3MocGFyYW1zLnRvKTsgLy8gVG8KICAgIGIgPSBiLnN0b3JlQ29pbnMocGFyYW1zLnZhbHVlKTsgLy8gVmFsdWUK' + - 'ICAgIGIgPSBiLnN0b3JlSW50KDAsIDEgKyA0ICsgNCArIDY0ICsgMzIpOyAvLyBjdXJyZW5jeV9jb2xsZWN0aW9uICsgSUhSIGZlZXMgKyBGd2QgZmVlcyArIENyZWF0' + - 'ZWRMVCArIENyZWF0ZWRBdAoKICAgIC8vIFN0YXRlaW5pdAogICAgaWYgKHBhcmFtcy5jb2RlICE9IG51bGwgfHwgcGFyYW1zLmRhdGEgIT0gbnVsbCkgewogICAgICAg' + - 'IGIgPSBiLnN0b3JlQm9vbCh0cnVlKTsgLy8gU3RhdGUgaW5pdAoKICAgICAgICAvLyBBc3NlbWJsZSBzdGF0ZSBpbml0IGNlbGwKICAgICAgICBsZXQgYmM6IEJ1aWxk' + - 'ZXIgPSBiZWdpbkNlbGwoKTsKICAgICAgICBiYyA9IGJjLnN0b3JlQm9vbChmYWxzZSk7IC8vIFNwbGl0RGVwdGgKICAgICAgICBiYyA9IGJjLnN0b3JlQm9vbChmYWxz' + - 'ZSk7IC8vIFRpY2tUb2NrCiAgICAgICAgaWYgKHBhcmFtcy5jb2RlICE9IG51bGwpIHsKICAgICAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2wodHJ1ZSk7IC8vIENvZGUg' + - 'cHJlc2VuY2UKICAgICAgICAgICAgYmMgPSBiYy5zdG9yZVJlZihwYXJhbXMuY29kZSEhKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBiYyA9IGJjLnN0b3Jl' + - 'Qm9vbChmYWxzZSk7IC8vIENvZGUgcHJlc2VuY2UKICAgICAgICB9CiAgICAgICAgaWYgKHBhcmFtcy5kYXRhICE9IG51bGwpIHsKICAgICAgICAgICAgYmMgPSBiYy5z' + - 'dG9yZUJvb2wodHJ1ZSk7IC8vIERhdGEgcHJlc2VuY2UKICAgICAgICAgICAgYmMgPSBiYy5zdG9yZVJlZihwYXJhbXMuZGF0YSEhKTsKICAgICAgICB9IGVsc2Ugewog' + - 'ICAgICAgICAgICBiYyA9IGJjLnN0b3JlQm9vbChmYWxzZSk7IC8vIERhdGEgcHJlc2VuY2UKICAgICAgICB9CiAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2Up' + - 'OyAvLyBMaWJyYXJ5CgogICAgICAgIGIgPSBiLnN0b3JlQm9vbCh0cnVlKTsgLy8gU3RvcmUgYXMgcmVmCiAgICAgICAgYiA9IGIuc3RvcmVSZWYoYmMuZW5kQ2VsbCgp' + - 'KTsKICAgIH0gZWxzZSB7CiAgICAgICAgYiA9IGIuc3RvcmVCb29sKGZhbHNlKTsgLy8gTm8gc3RhdGUgaW5pdAogICAgfQoKICAgIC8vIEJvZHkKICAgIGxldCBib2R5' + - 'OiBDZWxsPyA9IHBhcmFtcy5ib2R5OwogICAgaWYgKGJvZHkgIT0gbnVsbCkgewogICAgICAgIGIgPSBiLnN0b3JlQm9vbCh0cnVlKTsKICAgICAgICBiID0gYi5zdG9y' + - 'ZVJlZihib2R5ISEpOwogICAgfSBlbHNlIHsKICAgICAgICBiID0gYi5zdG9yZUJvb2woZmFsc2UpOyAvLyBObyBib2R5CiAgICB9CgogICAgLy8gU2VuZAogICAgbGV0' + - 'IGM6IENlbGwgPSBiLmVuZENlbGwoKTsKICAgIHJldHVybiBuYXRpdmVTZW5kTWVzc2FnZVJldHVybkZvcndhcmRGZWUoYywgcGFyYW1zLm1vZGUpOwp9CgppbmxpbmUg' + - 'ZnVuIGVtaXQoYm9keTogQ2VsbCkgewogICAgLy8gZXh0X291dF9tc2dfaW5mbyQxMSBzcmM6TXNnQWRkcmVzc0ludCBkZXN0Ok1zZ0FkZHJlc3NFeHQgY3JlYXRlZF9s' + - 'dDp1aW50NjQgY3JlYXRlZF9hdDp1aW50MzIKICAgIC8vICAgICAgICAgICAgICAgICAgICAgbWF5YmU6IHN0YXRlSW5pdCAoZmFsc2UpIGJvZHlSZWY6IGJvb2wgKHRy' + - 'dWUpCiAgICBsZXQgYzogQ2VsbCA9IGJlZ2luQ2VsbCgpCiAgICAgICAgLnN0b3JlVWludCgxNTIxMTgwNzIwMjczODc1MjgxNzk2MDQzODQ2NDUxMywgMTA0KQogICAg' + - 'ICAgIC5zdG9yZVJlZihib2R5KQogICAgICAgIC5lbmRDZWxsKCk7CiAgICBuYXRpdmVTZW5kTWVzc2FnZShjLCAwKTsKfQoKYXNtIGZ1biBhY2NlcHRNZXNzYWdlKCkg' + - 'eyBBQ0NFUFQgfQoKYXNtIGZ1biBjb21taXQoKSB7IENPTU1JVCB9Cg=='; + 'bHk6IEludCA9IDE7CmNvbnN0IFNlbmREZXN0cm95SWZaZXJvOiBJbnQgPSAzMjsKY29uc3QgU2VuZEJvdW5jZUlmQWN0aW9uRmFpbDogSW50ID0gMTY7CmNvbnN0IFNl' + + 'bmRPbmx5RXN0aW1hdGVGZWU6IEludCA9IDEwMjQ7CgpzdHJ1Y3QgU2VuZFBhcmFtZXRlcnMgewogICAgYm91bmNlOiBCb29sID0gdHJ1ZTsKICAgIHRvOiBBZGRyZXNz' + + 'OwogICAgdmFsdWU6IEludDsKICAgIG1vZGU6IEludCA9IDA7CiAgICBib2R5OiBDZWxsPyA9IG51bGw7CiAgICBjb2RlOiBDZWxsPyA9IG51bGw7CiAgICBkYXRhOiBD' + + 'ZWxsPyA9IG51bGw7Cn0KCmZ1biBzZW5kKHBhcmFtczogU2VuZFBhcmFtZXRlcnMpOiBJbnQgeyAvLyByZXR1cm5zIGZvcndhcmQgZmVlCiAgICBsZXQgYjogQnVpbGRl' + + 'ciA9IGJlZ2luQ2VsbCgpOwogICAgYiA9IGIuc3RvcmVJbnQoMSwgMik7IC8vIGludGVybmFsX21lc3NhZ2UgKyBpaGRfZGlzYWJsZWQKICAgIGIgPSBiLnN0b3JlQm9v' + + 'bChwYXJhbXMuYm91bmNlKTsgLy8gYm91bmNlCiAgICBiID0gYi5zdG9yZUludCgwLCAzKTsgLy8gYm91bmNlZCArIGZyb20KICAgIGIgPSBiLnN0b3JlQWRkcmVzcyhw' + + 'YXJhbXMudG8pOyAvLyBUbwogICAgYiA9IGIuc3RvcmVDb2lucyhwYXJhbXMudmFsdWUpOyAvLyBWYWx1ZQogICAgYiA9IGIuc3RvcmVJbnQoMCwgMSArIDQgKyA0ICsg' + + 'NjQgKyAzMik7IC8vIGN1cnJlbmN5X2NvbGxlY3Rpb24gKyBJSFIgZmVlcyArIEZ3ZCBmZWVzICsgQ3JlYXRlZExUICsgQ3JlYXRlZEF0CgogICAgLy8gU3RhdGVpbml0' + + 'CiAgICBpZiAocGFyYW1zLmNvZGUgIT0gbnVsbCB8fCBwYXJhbXMuZGF0YSAhPSBudWxsKSB7CiAgICAgICAgYiA9IGIuc3RvcmVCb29sKHRydWUpOyAvLyBTdGF0ZSBp' + + 'bml0CgogICAgICAgIC8vIEFzc2VtYmxlIHN0YXRlIGluaXQgY2VsbAogICAgICAgIGxldCBiYzogQnVpbGRlciA9IGJlZ2luQ2VsbCgpOwogICAgICAgIGJjID0gYmMu' + + 'c3RvcmVCb29sKGZhbHNlKTsgLy8gU3BsaXREZXB0aAogICAgICAgIGJjID0gYmMuc3RvcmVCb29sKGZhbHNlKTsgLy8gVGlja1RvY2sKICAgICAgICBpZiAocGFyYW1z' + + 'LmNvZGUgIT0gbnVsbCkgewogICAgICAgICAgICBiYyA9IGJjLnN0b3JlQm9vbCh0cnVlKTsgLy8gQ29kZSBwcmVzZW5jZQogICAgICAgICAgICBiYyA9IGJjLnN0b3Jl' + + 'UmVmKHBhcmFtcy5jb2RlISEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKGZhbHNlKTsgLy8gQ29kZSBwcmVzZW5jZQogICAg' + + 'ICAgIH0KICAgICAgICBpZiAocGFyYW1zLmRhdGEgIT0gbnVsbCkgewogICAgICAgICAgICBiYyA9IGJjLnN0b3JlQm9vbCh0cnVlKTsgLy8gRGF0YSBwcmVzZW5jZQog' + + 'ICAgICAgICAgICBiYyA9IGJjLnN0b3JlUmVmKHBhcmFtcy5kYXRhISEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKGZhbHNl' + + 'KTsgLy8gRGF0YSBwcmVzZW5jZQogICAgICAgIH0KICAgICAgICBiYyA9IGJjLnN0b3JlQm9vbChmYWxzZSk7IC8vIExpYnJhcnkKCiAgICAgICAgYiA9IGIuc3RvcmVC' + + 'b29sKHRydWUpOyAvLyBTdG9yZSBhcyByZWYKICAgICAgICBiID0gYi5zdG9yZVJlZihiYy5lbmRDZWxsKCkpOwogICAgfSBlbHNlIHsKICAgICAgICBiID0gYi5zdG9y' + + 'ZUJvb2woZmFsc2UpOyAvLyBObyBzdGF0ZSBpbml0CiAgICB9CgogICAgLy8gQm9keQogICAgbGV0IGJvZHk6IENlbGw/ID0gcGFyYW1zLmJvZHk7CiAgICBpZiAoYm9k' + + 'eSAhPSBudWxsKSB7CiAgICAgICAgYiA9IGIuc3RvcmVCb29sKHRydWUpOwogICAgICAgIGIgPSBiLnN0b3JlUmVmKGJvZHkhISk7CiAgICB9IGVsc2UgewogICAgICAg' + + 'IGIgPSBiLnN0b3JlQm9vbChmYWxzZSk7IC8vIE5vIGJvZHkKICAgIH0KCiAgICAvLyBTZW5kCiAgICBsZXQgYzogQ2VsbCA9IGIuZW5kQ2VsbCgpOwogICAgcmV0dXJu' + + 'IG5hdGl2ZVNlbmRNZXNzYWdlUmV0dXJuRm9yd2FyZEZlZShjLCBwYXJhbXMubW9kZSk7Cn0KCmlubGluZSBmdW4gZW1pdChib2R5OiBDZWxsKSB7CiAgICAvLyBleHRf' + + 'b3V0X21zZ19pbmZvJDExIHNyYzpNc2dBZGRyZXNzSW50IGRlc3Q6TXNnQWRkcmVzc0V4dCBjcmVhdGVkX2x0OnVpbnQ2NCBjcmVhdGVkX2F0OnVpbnQzMgogICAgLy8g' + + 'ICAgICAgICAgICAgICAgICAgICBtYXliZTogc3RhdGVJbml0IChmYWxzZSkgYm9keVJlZjogYm9vbCAodHJ1ZSkKICAgIGxldCBjOiBDZWxsID0gYmVnaW5DZWxsKCkK' + + 'ICAgICAgICAuc3RvcmVVaW50KDE1MjExODA3MjAyNzM4NzUyODE3OTYwNDM4NDY0NTEzLCAxMDQpCiAgICAgICAgLnN0b3JlUmVmKGJvZHkpCiAgICAgICAgLmVuZENl' + + 'bGwoKTsKICAgIG5hdGl2ZVNlbmRNZXNzYWdlKGMsIDApOwp9Cgphc20gZnVuIGFjY2VwdE1lc3NhZ2UoKSB7IEFDQ0VQVCB9Cgphc20gZnVuIGNvbW1pdCgpIHsgQ09N' + + 'TUlUIH0K'; files['std/text.tact'] = 'Ly8KLy8gU3RyaW5nIGJ1aWxkZXIKLy8KCkBuYW1lKF9fdGFjdF9zdHJpbmdfYnVpbGRlcl9zdGFydF9zdHJpbmcpCm5hdGl2ZSBiZWdpblN0cmluZygpOiBTdHJpbmdC' + 'dWlsZGVyOwoKQG5hbWUoX190YWN0X3N0cmluZ19idWlsZGVyX3N0YXJ0X2NvbW1lbnQpCm5hdGl2ZSBiZWdpbkNvbW1lbnQoKTogU3RyaW5nQnVpbGRlcjsKCkBuYW1l' + @@ -479,7 +480,7 @@ files['stdlib.fc'] = 'KHggYiBsZW4pICJTVFVYIjsKCjs7OyBTdG9yZXMgYSBzaWduZWQgW2xlbl0tYml0IGludGVnZXIgYHhgIGludG8gYGJgIGZvcmAgMCDiiaQgbGVuIOKJpCAyNTdgLgo7' + 'OyBidWlsZGVyIHN0b3JlX2ludChidWlsZGVyIGIsIGludCB4LCBpbnQgbGVuKSBhc20oeCBiIGxlbikgIlNUSVgiOwoKCjs7OyBTdG9yZXMgYHNsaWNlYCBbc10gaW50' + 'byBgYnVpbGRlcmAgW2JdCmJ1aWxkZXIgc3RvcmVfc2xpY2UoYnVpbGRlciBiLCBzbGljZSBzKSBhc20gIlNUU0xJQ0VSIjsKCjs7OyBTdG9yZXMgKHNlcmlhbGl6ZXMp' + - 'IGFuIGludGVnZXIgW3hdIGluIHRoZSByYW5nZSBgMC4uMl4xMjgg4oiSIDFgIGludG8gYGJ1aWxkZXJgIFtiXS4KOzs7IFRoZSBzZXJpYWxpemF0aW9uIG9mIFt4XSBj' + + 'IGFuIGludGVnZXIgW3hdIGluIHRoZSByYW5nZSBgMC4uMl4xMjAg4oiSIDFgIGludG8gYGJ1aWxkZXJgIFtiXS4KOzs7IFRoZSBzZXJpYWxpemF0aW9uIG9mIFt4XSBj' + 'b25zaXN0cyBvZiBhIDQtYml0IHVuc2lnbmVkIGJpZy1lbmRpYW4gaW50ZWdlciBgbGAsCjs7OyB3aGljaCBpcyB0aGUgc21hbGxlc3QgaW50ZWdlciBgbCDiiaUgMGAs' + 'IHN1Y2ggdGhhdCBgeCA8IDJeOGxgLAo7OzsgZm9sbG93ZWQgYnkgYW4gYDhsYC1iaXQgdW5zaWduZWQgYmlnLWVuZGlhbiByZXByZXNlbnRhdGlvbiBvZiBbeF0uCjs7' + 'OyBJZiBbeF0gZG9lcyBub3QgYmVsb25nIHRvIHRoZSBzdXBwb3J0ZWQgcmFuZ2UsIGEgcmFuZ2UgY2hlY2sgZXhjZXB0aW9uIGlzIHRocm93bi4KOzs7Cjs7OyBTdG9y' + diff --git a/stdlib/std/send.tact b/stdlib/std/send.tact index dd4fa5bf6..b1b495658 100644 --- a/stdlib/std/send.tact +++ b/stdlib/std/send.tact @@ -9,6 +9,7 @@ const SendIgnoreErrors: Int = 2; const SendPayGasSeparately: Int = 1; const SendDestroyIfZero: Int = 32; const SendBounceIfActionFail: Int = 16; +const SendOnlyEstimateFee: Int = 1024; struct SendParameters { bounce: Bool = true; diff --git a/stdlib/stdlib.fc b/stdlib/stdlib.fc index 9bb15fc64..a680b9066 100644 --- a/stdlib/stdlib.fc +++ b/stdlib/stdlib.fc @@ -440,7 +440,7 @@ builder store_ref(builder b, cell c) asm(c b) "STREF"; ;;; Stores `slice` [s] into `builder` [b] builder store_slice(builder b, slice s) asm "STSLICER"; -;;; Stores (serializes) an integer [x] in the range `0..2^128 − 1` into `builder` [b]. +;;; Stores (serializes) an integer [x] in the range `0..2^120 − 1` into `builder` [b]. ;;; The serialization of [x] consists of a 4-bit unsigned big-endian integer `l`, ;;; which is the smallest integer `l ≥ 0`, such that `x < 2^8l`, ;;; followed by an `8l`-bit unsigned big-endian representation of [x].