

12.04.202512:49
🎉 Welcome Challenge: A Tact Developers Competition!
DivaTech is launching TON Contests — a platform for hosting competitions for TON smart contract developers.
To celebrate the launch, we’re kicking off our first contest — Welcome Challenge with a $1000 prize pool!
You’ll face 5 easy-to-medium-level tasks in Tact smart contract development, with 6 hours to solve them.
📅 When: April 13, 3:00 PM – 9:00 PM (GMT+3)
🌍 Where: Online at toncontests.com
🏆 Prizes:
🥇 Top 5: $100 each
🥈 Next10: $35 each
🥉 Next 15: $10 each
Registration for the Welcome Challenge is now open
DivaTech is launching TON Contests — a platform for hosting competitions for TON smart contract developers.
To celebrate the launch, we’re kicking off our first contest — Welcome Challenge with a $1000 prize pool!
You’ll face 5 easy-to-medium-level tasks in Tact smart contract development, with 6 hours to solve them.
📅 When: April 13, 3:00 PM – 9:00 PM (GMT+3)
🌍 Where: Online at toncontests.com
🏆 Prizes:
🥇 Top 5: $100 each
🥈 Next10: $35 each
🥉 Next 15: $10 each
Registration for the Welcome Challenge is now open
से पुनः पोस्ट किया:
Toncenter API

31.03.202517:46
Toncenter API supported hash of a normalized external message
API V3 (Index):
-
- All methods with
API V2:
-
API V3 (Index):
-
hash_norm
field added to the Message
structure. If the field is not present, it means this message not an external message, or the normalized hash_norm
is equal to the regular hash
.- All methods with
msg_hash
parameter search also by normalized hash.API V2:
-
api/v2/sendBocReturnHash
returns the normalized hash in addition to the normal hash.से पुनः पोस्ट किया:
📀 TON Data Hub

21.03.202511:38
Build a Dashboard for DeDust
——————> Win up to $3000
Welcome to our first data contest where we reward for making TON data more transparent.
Build a Dune dashboard for DeDust and win:
📅 Deadline: Mar, 24
Read more:
👉 [ Rules & Guidelines ] 👈
(bonus task for onchain detectives inside)
Got questions? Ask in our chat: @tondatachat
——————> Win up to $3000
Welcome to our first data contest where we reward for making TON data more transparent.
Build a Dune dashboard for DeDust and win:
🥇 1st place: $3000
🥈 2nd place: $2000
🥉 3rd place: $1000
📅 Deadline: Mar, 24
Read more:
👉 [ Rules & Guidelines ] 👈
(bonus task for onchain detectives inside)
Got questions? Ask in our chat: @tondatachat
13.03.202513:19
During the last year all dTON services were running on kubernetes cluster without HA build. Sometimes when we lost servers, we faced complex problems.
To improve the stability and availability of the service we developed high availability dTON cluster that will continue to work even if some of the servers are unavailable. Additionally, we've got setup complex monitoring and alerting system on services and data consistency.
Today we managed to switch all our services to HA cluster.
In our article we want to share our experience of HA cluster on top of bare-metal servers in three parts:
- dTON Kubernetes High Availability Transition
- dTON LiteServers High Availability Transition
- dTON GraphQL High Availability Transition
Second and third part will be posted exclusively on @dtontech with promo codes on dTON API usage.
https://blog.dton.io/dton-kubernetes-high-availability-transition-part-1/
To improve the stability and availability of the service we developed high availability dTON cluster that will continue to work even if some of the servers are unavailable. Additionally, we've got setup complex monitoring and alerting system on services and data consistency.
Today we managed to switch all our services to HA cluster.
In our article we want to share our experience of HA cluster on top of bare-metal servers in three parts:
- dTON Kubernetes High Availability Transition
- dTON LiteServers High Availability Transition
- dTON GraphQL High Availability Transition
Second and third part will be posted exclusively on @dtontech with promo codes on dTON API usage.
https://blog.dton.io/dton-kubernetes-high-availability-transition-part-1/


01.03.202505:04
🎉 Tact v1.6.0 is released!
🏆 This is the biggest update of Tact since its creation, bigger than all previous milestones combined. There were so many improvements that we've even won over FunC in terms of gas usage on many standard contracts, such as Jettons.
🤔 Don't believe me?
🥳 Let's unpack Tact v1.6.0 together and see these improvements for ourselves!
We'll start with the number one achievement of this release:
⛽️ Gas optimization victory over FunC
Gas has long been a major pain point for Tact. Prior to v1.6.0, Tact's gas usage on many common contracts, such as Jettons, was far from ideal, requiring about 2.5 times gas of the FunC reference implementation.
But with Tact 1.6.0, those old gas-expensive days are long gone.
🤯 For example, a Tact rewrite of the reference FunC Jetton code consumes less gas for transfer, burn and discovery messages!
😎 So, expect to receive easy-to-use idiomatic Tact implementations of common contracts in the near future
Some of the things we did to achieve this:
▪️ Removed "system" cell — parent contract code is no longer stored in the system cell with all the child contract codes
▪️ Removed redundant address checks
▪️ Deprecated
▪️ Introduced contract parameters as an alternative to
And optimized compiler internals, many old and new functions in the stdlib:
🧰 Some of the standard library additions and changes
• Added specialized
• Many math functions, such as
• More advanced functions, such as
• Handy
• Optimized
•
•
Added many functions for
• Variable integer serialization types and the corresponding
• Functions
• Functions for working with addresses:
• ...and more!
🧳 More auxiliary things
• Basic
• Compile-time method ID expressions for getters and Message opcodes
• The
• More map improvements and new methods, like
• New augmented assignment operators
• Better error reporting for many cases
• Generation of constants in TypeScript wrappers
• The
• CLI for the Tact's TVM disassembler —
• Fixes of the compilation report
• Fixes of the compiler's third-party API
• Fixes of the internal infrastructure and code generation
• Lots of other miscellaneous bug fixes and smaller enhancements
• ...and documentation for all of that and beyond!
Besides, check out the updated Awesome Tact list and add your awesome projects, especially those using Tact in production!
⚠️ Breaking changes
There are only two, and they're both pretty minor:
• Tact 1.6.0 replaces
• The
♥️ Special thanks goes to all the contributors and community members — without you there would be nothing. Let's keep building the future of smart contracts with ⚡️ Tact!
📜 See full release notes for Tact v1.6.0
📥 And upgrade Tact in your projects
🍲 we're beating the gas allegations with this one 🗣🗣🗣
♨️ @tact_kitchen
🏆 This is the biggest update of Tact since its creation, bigger than all previous milestones combined. There were so many improvements that we've even won over FunC in terms of gas usage on many standard contracts, such as Jettons.
🤔 Don't believe me?
🥳 Let's unpack Tact v1.6.0 together and see these improvements for ourselves!
We'll start with the number one achievement of this release:
⛽️ Gas optimization victory over FunC
Gas has long been a major pain point for Tact. Prior to v1.6.0, Tact's gas usage on many common contracts, such as Jettons, was far from ideal, requiring about 2.5 times gas of the FunC reference implementation.
But with Tact 1.6.0, those old gas-expensive days are long gone.
🤯 For example, a Tact rewrite of the reference FunC Jetton code consumes less gas for transfer, burn and discovery messages!
😎 So, expect to receive easy-to-use idiomatic Tact implementations of common contracts in the near future
Some of the things we did to achieve this:
▪️ Removed "system" cell — parent contract code is no longer stored in the system cell with all the child contract codes
▪️ Removed redundant address checks
▪️ Deprecated
Deployable
trait in favor of receive(){}
▪️ Introduced contract parameters as an alternative to
init()
functionAnd optimized compiler internals, many old and new functions in the stdlib:
🧰 Some of the standard library additions and changes
• Added specialized
deploy
and message
functions for efficient on-chain deployments and non-deployment messages respectively• Many math functions, such as
divc
, mulShiftRightCeil
, and others• More advanced functions, such as
setGasLimit
, setSeed
, myCode
, and others• Handy
throwIf
and throwUnless
functions, which deprecated their "native" prefixed counterparts• Optimized
emptyCell
and emptySlice
functions•
Int.toString
function now consumes up to 64% less gas•
Int.toFloatString
function now consumes up to 62% less gasAdded many functions for
Cell
, Slice
and Builder
types:• Variable integer serialization types and the corresponding
.load
and .store
functions of Slice
and Builder
types• Functions
Slice.hashData
and String.hashData
for efficient hashes of data only• Functions for working with addresses:
Slice.asAddress
, Slice.asAddressUnsafe
, contractHash
, and a new BasechainAddress
type its helper functions• ...and more!
🧳 More auxiliary things
• Basic
let
-destructuring of structs and Messages• Compile-time method ID expressions for getters and Message opcodes
• The
codeOf
expression to get the code of child contracts• More map improvements and new methods, like
replace
and replaceGet
• New augmented assignment operators
&&=
, ||=
, >>=
and <<=
• Better error reporting for many cases
• Generation of constants in TypeScript wrappers
• The
-w
, --watch
CLI flags for watching for changes and automatic recompilations• CLI for the Tact's TVM disassembler —
unboc
• Fixes of the compilation report
• Fixes of the compiler's third-party API
• Fixes of the internal infrastructure and code generation
• Lots of other miscellaneous bug fixes and smaller enhancements
• ...and documentation for all of that and beyond!
Besides, check out the updated Awesome Tact list and add your awesome projects, especially those using Tact in production!
⚠️ Breaking changes
There are only two, and they're both pretty minor:
• Tact 1.6.0 replaces
Context.bounced
field with Context.bounceable
, which tells whether the received message can bounce back or not. Previously, the bounced
was useless since any bounced messages would be handled in a separate bounced()
receiver.• The
enabledMasterchain
option was removed from tact.config.json
. Going forward, support of masterchain addresses is always enabled in Tact contracts.♥️ Special thanks goes to all the contributors and community members — without you there would be nothing. Let's keep building the future of smart contracts with ⚡️ Tact!
📜 See full release notes for Tact v1.6.0
📥 And upgrade Tact in your projects
🍲 we're beating the gas allegations with this one 🗣🗣🗣
♨️ @tact_kitchen
19.02.202512:07
🚀 Bring TON to ElizaOS – Join the Bounty Program!
TON Blockchain is launching a bounty program to develop the TON Plugin within ElizaOS! This is your chance to contribute to a cutting-edge AI framework and integrate TON into autonomous AI agents.
$20,000 in prizes is up for grabs! Contribute by implementing key features and earn rewards for successfully merged pull requests.
💡 How to participate: take on one of the open issues:
👉 List of open TON Plugin bounties
⚡ Act fast! Don’t miss out on this opportunity to bring TON and AI together!
TON Blockchain is launching a bounty program to develop the TON Plugin within ElizaOS! This is your chance to contribute to a cutting-edge AI framework and integrate TON into autonomous AI agents.
$20,000 in prizes is up for grabs! Contribute by implementing key features and earn rewards for successfully merged pull requests.
💡 How to participate: take on one of the open issues:
👉 List of open TON Plugin bounties
⚡ Act fast! Don’t miss out on this opportunity to bring TON and AI together!
से पुनः पोस्ट किया:
BotNews

11.04.202515:37
Bot API 9.0
Announcing the largest Bot API update of 2025 (so far 😈)
🏪 Telegram Business 2.0
• Bots can now fully customize the branding of Business Accounts – managing their name, username, bio and profile pictures.
• Introduced support for managing Paid Gifts 🎁, including conversions, transfers and upgrades.
• Bots can now check ⭐️ Telegram Star balances and transfer Stars from managed businesses.
• Bots can now easily mark Business messages as read or delete them.
• Added extensive support for managing stories on Business accounts – featuring photos, videos and interactive elements like links, locations, reactions, weather info and even Gifts.
• All stories posted by bots can also be edited or deleted.
• Introduced granular Business permissions, giving users even finer control over connected bots.
🗃️ Mini App Storage
• Mini Apps can now store data locally on the user's device.
• Sensitive tokens can be safely persisted in a specialized secure storage.
🎁 Telegram Gifts
• Introduced support for unique Gifts – with detailed model, symbol and backdrop info.
• Bots can also check which Gift types are accepted by users and chats.
⭐️ Paid Messages
• Bots can now track how many Stars users paid to send a message.
• This includes out-of-the-box support for paid messages in both groups and business accounts.
⭐️ Telegram Premium
• Bots can now gift a Telegram Premium subscription paid in Stars.
• And more, see the full changelog for details:
https://core.telegram.org/bots/api-changelog#april-11-2025
Announcing the largest Bot API update of 2025 (so far 😈)
🏪 Telegram Business 2.0
• Bots can now fully customize the branding of Business Accounts – managing their name, username, bio and profile pictures.
• Introduced support for managing Paid Gifts 🎁, including conversions, transfers and upgrades.
• Bots can now check ⭐️ Telegram Star balances and transfer Stars from managed businesses.
• Bots can now easily mark Business messages as read or delete them.
• Added extensive support for managing stories on Business accounts – featuring photos, videos and interactive elements like links, locations, reactions, weather info and even Gifts.
• All stories posted by bots can also be edited or deleted.
• Introduced granular Business permissions, giving users even finer control over connected bots.
🗃️ Mini App Storage
• Mini Apps can now store data locally on the user's device.
• Sensitive tokens can be safely persisted in a specialized secure storage.
🎁 Telegram Gifts
• Introduced support for unique Gifts – with detailed model, symbol and backdrop info.
• Bots can also check which Gift types are accepted by users and chats.
⭐️ Paid Messages
• Bots can now track how many Stars users paid to send a message.
• This includes out-of-the-box support for paid messages in both groups and business accounts.
⭐️ Telegram Premium
• Bots can now gift a Telegram Premium subscription paid in Stars.
• And more, see the full changelog for details:
https://core.telegram.org/bots/api-changelog#april-11-2025
से पुनः पोस्ट किया:
Ton Console

31.03.202517:46
Tracking Transactions on TON Just Got Easier! 🎉
Tracking external transactions (
Now TonAPI solves this with the normalized hash. With this method, tracking transactions is simple and reliable.
We've prepared clear examples to get you started:
- Tracking transactions from TonConnect for dApps
- Tracking manually constructed external messages
See code examples →
We’re excited to share this improvement, and soon more ecosystem tools will support it too!
Tracking external transactions (
external-in
) on the TON blockchain was challenging for all of us due to minor metadata differences.Now TonAPI solves this with the normalized hash. With this method, tracking transactions is simple and reliable.
We've prepared clear examples to get you started:
- Tracking transactions from TonConnect for dApps
- Tracking manually constructed external messages
See code examples →
We’re excited to share this improvement, and soon more ecosystem tools will support it too!
से पुनः पोस्ट किया:TOLK lang
TL
20.03.202509:20
🫧 Tolk v0.10: preparing for serialization — intN, bytesN, coins
This update lays the foundation of future auto-packing to/from cells by solving one critical question:
How should fields be serialized?
✅ Notable changes in Tolk v0.10:
1. Fixed-size integer types:
2. Type
3. Types
4. Replace
5. Trailing comma support
PR on GitHub with detailed info.
❓ Fixed-size integers? In TVM? What?
Imagine Tolk already has structures, and we define an incoming message:
A client sends this message following the TL/B schema:
But how do we tell the compiler that counter_id is int32 and inc_by is int64? This information is missing in the struct definition.
✖ Rejected approaches: why they fail
Several syntax ideas were considered:
Each of these quickly breaks down when handling more complex cases.
For example, how would we handle TL-B
And what about TL/B
With every new case, the syntax becomes more complex, ambiguous, and error-prone.
✔ The solution: `int32` as a first-class type
No annotations. No confusing
This scales perfectly:
These are distinct types. A variable can be
This makes serialization predictable, structured, and error-free.
✔ What about overflow?
A reasonable question: what happens if a value exceeds the limit?
Answer: no runtime overflow or clamping! It's just int at TVM.
* arithmetic works normally – v becomes 256
* no extra gas cost – no runtime bounds checks
* overflow will only happen at serialization
✔ Why is this the best approach?
Think of smart contracts as a black box:
- inputs are encoded (int32, uint64, etc.)
- inside the contract, arithmetic uses full 257-bit precision
- outputs are serialized again — overflow happens only at this stage
This is similar to how mulDivFloor(x,y,z) uses 513-bit precision internally. Your contract keeps precision internally and only enforces constraints at the border with an outside world.
🌳 Tolk will follow a type-based philosophy
This post covered the foundation of automatic serialization. The right way is to have a rich type system. Having nested types, having generics, having aliases — will allow to describe every practical TL/B case, but at a language level.
In v0.10, we introduce
How will
Stay tuned for the next update...
This update lays the foundation of future auto-packing to/from cells by solving one critical question:
How should fields be serialized?
✅ Notable changes in Tolk v0.10:
1. Fixed-size integer types:
int32
, uint64
, etc.2. Type
coins
and function ton("0.05")
3. Types
bytesN
and bitsN
(backed by slices at TVM)4. Replace
"..."c
postfixes with stringCrc32("...")
functions5. Trailing comma support
PR on GitHub with detailed info.
❓ Fixed-size integers? In TVM? What?
Imagine Tolk already has structures, and we define an incoming message:
A client sends this message following the TL/B schema:
counterIncrement
counter_id:int32
inc_by:int64
= CounterIncrement;
But how do we tell the compiler that counter_id is int32 and inc_by is int64? This information is missing in the struct definition.
✖ Rejected approaches: why they fail
Several syntax ideas were considered:
Each of these quickly breaks down when handling more complex cases.
For example, how would we handle TL-B
Maybe int32
? Would we write:
And what about TL/B
Both (Maybe int32) int64
?
With every new case, the syntax becomes more complex, ambiguous, and error-prone.
✔ The solution: `int32` as a first-class type
No annotations. No confusing
as
syntax. No ambiguity.This scales perfectly:
These are distinct types. A variable can be
int32
and similar:
This makes serialization predictable, structured, and error-free.
✔ What about overflow?
A reasonable question: what happens if a value exceeds the limit?
Answer: no runtime overflow or clamping! It's just int at TVM.
* arithmetic works normally – v becomes 256
* no extra gas cost – no runtime bounds checks
* overflow will only happen at serialization
✔ Why is this the best approach?
Think of smart contracts as a black box:
- inputs are encoded (int32, uint64, etc.)
- inside the contract, arithmetic uses full 257-bit precision
- outputs are serialized again — overflow happens only at this stage
This is similar to how mulDivFloor(x,y,z) uses 513-bit precision internally. Your contract keeps precision internally and only enforces constraints at the border with an outside world.
🌳 Tolk will follow a type-based philosophy
This post covered the foundation of automatic serialization. The right way is to have a rich type system. Having nested types, having generics, having aliases — will allow to describe every practical TL/B case, but at a language level.
In v0.10, we introduce
intN
(fixed integers), bytesN
(definite slices), coins
(variadic integers), and some more additions. Read the details in the PR.How will
Either L R
and even more complex TL/B structures be expressed? Stay tuned for the next update...
से पुनः पोस्ट किया:
Ton Console



10.03.202511:50
Get high TONAPI limits in your dApps for free
You already know our @ton-api/client library — a client for building advanced TON dApps. Now, we're happy to announce a new feature that grants high TONAPI limits for free.
This upgrade enables cost-free TON API usage within dApps running in the Tonkeeper built-in browser (mobile) and standard browsers with the Tonkeeper extension installed.
To check if this feature is available, verify that the
How it works →
You already know our @ton-api/client library — a client for building advanced TON dApps. Now, we're happy to announce a new feature that grants high TONAPI limits for free.
This upgrade enables cost-free TON API usage within dApps running in the Tonkeeper built-in browser (mobile) and standard browsers with the Tonkeeper extension installed.
To check if this feature is available, verify that the
window.tonapi
object exists in your browser.How it works →
से पुनः पोस्ट किया:
Toncenter API

26.02.202515:27
Improved Metadata API
Last month we started providing metadata for Jettons and NFTs in the V3 API.
We are pleased to report a number of improvements:
— The metadata now enters the API in advance as soon as the token appears on the network. In the previous implementation, the metadata was indexed the first time the token was requested.
— Images and JSON are now proxied via toncenter.com. 3 image sizes are available, as well as original non-proxied urls for JSON and images. IPFS is supported.
Using a proxy increases security (you don't make requests to third-party hosting) and speed of downloading resources.
Last month we started providing metadata for Jettons and NFTs in the V3 API.
We are pleased to report a number of improvements:
— The metadata now enters the API in advance as soon as the token appears on the network. In the previous implementation, the metadata was indexed the first time the token was requested.
— Images and JSON are now proxied via toncenter.com. 3 image sizes are available, as well as original non-proxied urls for JSON and images. IPFS is supported.
Using a proxy increases security (you don't make requests to third-party hosting) and speed of downloading resources.
से पुनः पोस्ट किया:
BotNews

12.02.202513:37
Bot API 8.3
Video Improvements
• Introduced support for custom covers and start timestamps for videos.
• Out of the box, bots can specify a cover and start timestamp when sending, editing and forwarding videos — including in albums and paid media.
Gifts and Reactions
• Bots can now send gifts 🎁 to channels, in addition to regular users.
• Added support for transactions with chats.
• Bots can now add reactions to most service messages.
Similar Bots
• A list of similar bots will now appear in bot profiles, helping users discover other bots they may find interesting.
• And more, see the full changelog for details:
https://core.telegram.org/bots/api-changelog#february-12-2025
Video Improvements
• Introduced support for custom covers and start timestamps for videos.
• Out of the box, bots can specify a cover and start timestamp when sending, editing and forwarding videos — including in albums and paid media.
Gifts and Reactions
• Bots can now send gifts 🎁 to channels, in addition to regular users.
• Added support for transactions with chats.
• Bots can now add reactions to most service messages.
Similar Bots
• A list of similar bots will now appear in bot profiles, helping users discover other bots they may find interesting.
• And more, see the full changelog for details:
https://core.telegram.org/bots/api-changelog#february-12-2025
से पुनः पोस्ट किया:
Ton Console



11.04.202514:33
📝 Sign Arbitrary Data with TON Connect
The latest update to our TON Connect implementation introduces a powerful new feature: the ability to sign arbitrary data — from plain text and binary blobs to BOC (cell) format.
This unlocks new use cases in the TON ecosystem: secure off-chain flows, verifiable signatures, and advanced on-chain logic — all through the familiar TON Connect interface.
Now supported in the latest versions of Tonkeeper on iOS and Android.
Explore the guide and start building →
The latest update to our TON Connect implementation introduces a powerful new feature: the ability to sign arbitrary data — from plain text and binary blobs to BOC (cell) format.
This unlocks new use cases in the TON ecosystem: secure off-chain flows, verifiable signatures, and advanced on-chain logic — all through the familiar TON Connect interface.
Now supported in the latest versions of Tonkeeper on iOS and Android.
Explore the guide and start building →


29.03.202514:16
🎉 Tact v1.6.5 is released!
Back with another round of refinements! While we're working on many exciting things in the background, we're committed to fixing every bug that the community might discover so that Tact can provide a flawless developer experience.
Furthermore, we now actively employ AI and large language model (LLM) fuzzing techniques, such as documentation-driven approaches where LLMs are given only the Tact language documentation and access to the compiler. Then, LLM agents generate potentially problematic code snippets, compile them, and analyze results. They further iterate and provide new, interesting bug reports — resolving those makes both Tact compiler and Tact documentation better at the same time!
Check out this awesome article from one of the team members to learn more: Documentation-Driven Compiler Fuzzing with Large Language Models.
And now, let's see what's new in Tact v1.6.5, starting with the most prominent part of this patch release:
🛠 Bug fixes
• Ternary operator
• New parser now properly handles the code that wasn't completed at the end of the file
• The error for assembly functions and the
• Now, when you call the
• Improper whitespace between the operator and the equals sign is no longer allowed
• The
• Get methods now can return an optional contract state
• The
• The wildcard symbol
• The contract's state is now properly saved on early
🧳 Miscellaneous improvements
• Whenever you access
• The
• The
• The
📜 See the full release notes for Tact v1.6.5
📥 And upgrade Tact in your projects
LLMs are great, but we value our community no less. It's great being around a bunch of talented, passionate, and bright engineers who make a future of safe and scalable ⚡️ Tact smart contracts on TON possible for everyone. Thank you for everything you do and for the feedback you give!
A special shoutout goes to the RSquad team @rsquadlife for their early adoption of Tact features, thoughtful suggestions, and bug reports. If punk were code, they'd be its maintainers 🤘
🍲 ghibli deez bugs
♨️ @tact_kitchen from the @ton_studio
Back with another round of refinements! While we're working on many exciting things in the background, we're committed to fixing every bug that the community might discover so that Tact can provide a flawless developer experience.
Furthermore, we now actively employ AI and large language model (LLM) fuzzing techniques, such as documentation-driven approaches where LLMs are given only the Tact language documentation and access to the compiler. Then, LLM agents generate potentially problematic code snippets, compile them, and analyze results. They further iterate and provide new, interesting bug reports — resolving those makes both Tact compiler and Tact documentation better at the same time!
Check out this awesome article from one of the team members to learn more: Documentation-Driven Compiler Fuzzing with Large Language Models.
And now, let's see what's new in Tact v1.6.5, starting with the most prominent part of this patch release:
🛠 Bug fixes
• Ternary operator
?:
now correctly works with structs and null
values• New parser now properly handles the code that wasn't completed at the end of the file
• The error for assembly functions and the
get
attribute is now correctly shown• Now, when you call the
dump()
function with an argument of the unsupported StringBuilder
type, the error will always be shown even if the debug mode is disabled• Improper whitespace between the operator and the equals sign is no longer allowed
• The
&&=
and ||=
augmented assignment operators are now properly short-circuited• Get methods now can return an optional contract state
• The
Struct.fromSlice()
, Message.fromSlice()
, and similar functions now work properly if the slice has been parsed entirely and the last field of the struct had the serialization annotation as remaining
• The wildcard symbol
_
is prohibited for struct and message struct fields, function names, contract, and trait names• The contract's state is now properly saved on early
return
statements in the receiver functions🧳 Miscellaneous improvements
• Whenever you access
context().sender
, it now calls the sender()
function instead to optimize the gas usage• The
internalExternalReceiversOutsideMethodsMap
option and its respective receiver order optimization were reworked to ensure compatibility with explorers and user wallets• The
SendPayGasSeparately
constant was deprecated in favor of SendPayFwdFeesSeparately
— they're functionally identical, but the latter better expresses the intent and action that this optional flag makes when sending messages• The
Stoppable
trait now throws the exit code 133 instead of the exit code generated by the require()
function from the "Contract stopped" message📜 See the full release notes for Tact v1.6.5
📥 And upgrade Tact in your projects
LLMs are great, but we value our community no less. It's great being around a bunch of talented, passionate, and bright engineers who make a future of safe and scalable ⚡️ Tact smart contracts on TON possible for everyone. Thank you for everything you do and for the feedback you give!
A special shoutout goes to the RSquad team @rsquadlife for their early adoption of Tact features, thoughtful suggestions, and bug reports. If punk were code, they'd be its maintainers 🤘
🍲 ghibli deez bugs
♨️ @tact_kitchen from the @ton_studio
15.03.202513:20
🖥 Help Improve the Developer Experience in TON!
We're conducting a focused study on TON API providers to identify key challenges and unlock new opportunities for innovation. Our mission is to make the TON ecosystem more powerful, seamless, and developer-friendly.
💡 Your insights matter! Help us enhance the tools you use by sharing your experience in this short survey:
👉 Survey link
Your feedback drives real improvements—let’s build the best developer experience together! 💙
We're conducting a focused study on TON API providers to identify key challenges and unlock new opportunities for innovation. Our mission is to make the TON ecosystem more powerful, seamless, and developer-friendly.
💡 Your insights matter! Help us enhance the tools you use by sharing your experience in this short survey:
👉 Survey link
Your feedback drives real improvements—let’s build the best developer experience together! 💙
से पुनः पोस्ट किया:TOLK lang
TL
07.03.202510:01
𒀟 Tolk v0.9: nullable types, null safefy, control flow, smart casts
Tolk v0.9 introduces nullable types:
✅ Notable changes in Tolk v0.9:
1. Nullable types
2. Standard library updated to reflect nullability
3. Smart casts, like in TypeScript in Kotlin
4. Operator
5. Code after
6. The
PR on GitHub with detailed info.
✔ Nullable types and null safety
In FunC,
Tolk now forces you to explicitly mark nullable values. This aligns with TypeScript
* any type can be nullable:
* no more unexpected TVM exceptions due to null
* at runtime,
✔ Smart casts (via control flow graph)
Once a nullable value is checked, the compiler automatically refines its type:
or:
or:
Smart casts ensure code is safe while remaining gas-efficient (compile-time only).
✔ Operator `!` (non-null assertion)
If you know a value can't be null, use the
It's useful for low-level TVM functions (dicts, particularly), when you have guarantees outside the code. Use with care!
✔ The `never` type
Now, you can declare "always-throwing functions":
... this is just the beginning! Nullable tensors, tricky smart casts, and low-level null safety details — all explained in the PR.
🌳 Null safety is smooth, intuitive, and enforced at compile time — no runtime cost, no extra gas, just safer code.
Tolk v0.9 introduces nullable types:
int?
, cell?
, and T?
, bringing null safety to your code. The compiler prevents using nullable values without checks, but thanks to smart casts, this feels smooth and natural.✅ Notable changes in Tolk v0.9:
1. Nullable types
int?
, cell?
, etc.; null safety2. Standard library updated to reflect nullability
3. Smart casts, like in TypeScript in Kotlin
4. Operator
!
(non-null assertion)5. Code after
throw
is treated unreachable6. The
never
typePR on GitHub with detailed info.
✔ Nullable types and null safety
In FunC,
null
was implicitly assignable to any primitive type — too permissive. A variable declared as int
could still hold null
at runtime, leading to TVM exceptions if used incorrectly.Tolk now forces you to explicitly mark nullable values. This aligns with TypeScript
T | null
and Kotlin, preventing unintended null usage.
* any type can be nullable:
cell?
, [int, slice]?
, (int, cell)?
* no more unexpected TVM exceptions due to null
* at runtime,
int?
and cell?
occupy just one stack slot — zero overhead✔ Smart casts (via control flow graph)
Once a nullable value is checked, the compiler automatically refines its type:
or:
or:
Smart casts ensure code is safe while remaining gas-efficient (compile-time only).
✔ Operator `!` (non-null assertion)
If you know a value can't be null, use the
!
operator to bypass nullability checks:
// this key 100% exists, make it `cell`, not `cell?`
validators = getBlockchainConfigParam(16)!;
It's useful for low-level TVM functions (dicts, particularly), when you have guarantees outside the code. Use with care!
✔ The `never` type
Now, you can declare "always-throwing functions":
never
also occurs implicitly when a condition is impossible:
... this is just the beginning! Nullable tensors, tricky smart casts, and low-level null safety details — all explained in the PR.
🌳 Null safety is smooth, intuitive, and enforced at compile time — no runtime cost, no extra gas, just safer code.
से पुनः पोस्ट किया:
Toncenter API

26.02.202515:26
Support for extra-currencies in local ton-http-api
In ton-http-api v2.0.53, which you can install by yourself on your server, support for extra-currencies and a number of other improvements have been made.
Recall that earlier support for extra-currencies was made in the public Toncenter V2 and Toncenter V3 APIs.
https://github.com/toncenter/ton-http-api/releases/tag/v2.0.53
In ton-http-api v2.0.53, which you can install by yourself on your server, support for extra-currencies and a number of other improvements have been made.
Recall that earlier support for extra-currencies was made in the public Toncenter V2 and Toncenter V3 APIs.
https://github.com/toncenter/ton-http-api/releases/tag/v2.0.53
से पुनः पोस्ट किया:TOLK lang
TL
11.02.202509:18
Tolk v0.8: preparation for structures
A new version of Tolk was released several days ago. We're starting a way to eventually implement structures with auto packing to/from cells. This will take several steps (each publicly released), it's the first one.
✅ Notable changes in Tolk v0.8:
1. Syntax
2. Allow
PR on GitHub with detailed info.
Using syntax `tensorVar.{i}` and `tupleVar.{i}`, you can access tensors/tuples by indices without unpacking them.
It works for tensors:
It works for tuples (does asm INDEX/SETINDEX under the hood):
It works for nesting
Why is this essential?
In the future, we'll have structures, declared like this:
Structures will be stored like tensors on a stack:
It means, that `obj.{field}` is exactly the same as `tensorVar.{i}`:
Same goes for nested objects:
So, implementing indexed access for tensors/tuples covering all scenarios is a direct step towards structures.
A new version of Tolk was released several days ago. We're starting a way to eventually implement structures with auto packing to/from cells. This will take several steps (each publicly released), it's the first one.
✅ Notable changes in Tolk v0.8:
1. Syntax
tensorVar.0
and tupleVar.0
, both for reading and writing2. Allow
cell
, slice
, etc. to be valid identifiersPR on GitHub with detailed info.
Using syntax `tensorVar.{i}` and `tupleVar.{i}`, you can access tensors/tuples by indices without unpacking them.
It works for tensors:
It works for tuples (does asm INDEX/SETINDEX under the hood):
It works for nesting
var.{i}.{j}
. It works for nested tensors, nested tuples, tuples nested into tensors. It works for mutate
. It works for globals.Why is this essential?
In the future, we'll have structures, declared like this:
struct User {
id: int;
name: slice;
}
Structures will be stored like tensors on a stack:
It means, that `obj.{field}` is exactly the same as `tensorVar.{i}`:
Same goes for nested objects:
struct Storage {
lastUpdated: int;
owner: User;
}
s.lastUpdated // s.0
s.owner.id // s.1.0
So, implementing indexed access for tensors/tuples covering all scenarios is a direct step towards structures.
से पुनः पोस्ट किया:TOLK lang
TL
08.04.202509:35
🫧 Tolk v0.11: type aliases, union types, and pattern matching
This update might confuse you at first. You may wonder: "Why do we need this? How will it be useful?". But in the end, you'll see how everything comes together bringing seamless and generalized message handling.
✅ Notable changes in Tolk v0.11:
1. Type aliases
2. Union types
3. Pattern matching for types
4. Operators
5. Pattern matching for expressions
6. Semicolon for the last statement in a block can be omitted
PR on GitHub with detailed info.
✔ Type aliases
Tolk now supports type aliases, similar to TypeScript and Rust.
An alias creates a new name for an existing type but remains interchangeable with it. No performance overhead — a compile-time feature.
✔ Union types `T1 | T2 | ...`
They now allow a variable to hold multiple possible types.
Nullable types
At the TVM level, union types work as tagged unions — similar to Rust enums but more flexible.
✔ Pattern matching
The only way to work with union types is matching them:
Matching is based on smart casts — inside each branch, the variable is automatically narrowed to the matched type.
It can also be used as an expression:
So, `match` + smart casts are our way for union types. You may notice that it's close to enums in Rust. But we don't have enum. Union types are more general and powerful.
✔ `match` for expressions
As you see, match also works for constant expressions, similar to switch in other languages.
✔ Union types and TL/B `Either`
Look how clean this is:
No need to manually handle bits from the slice — it's naturally expressed in the type system!
✔ Union types and TL/B constructors
Moreover — handling incoming messages is beautifully expressed with union types.
✔ Union types and future structures
The ultimate goal? You'll describe each incoming message as a struct, create a union type for them, parse a slice, and just match over variants:
🌳 So, union types (that perfectly work with tensors) will seamlessly work with structures. With union types, you will declare both Either and different kinds of messages. Combined with intN and other types, they will allow to express (almost) any practical TL/B construction. They are not limited to message routing — in other words, message routing does not differ from handling any field, any storage, or any cell in general.
This update might confuse you at first. You may wonder: "Why do we need this? How will it be useful?". But in the end, you'll see how everything comes together bringing seamless and generalized message handling.
✅ Notable changes in Tolk v0.11:
1. Type aliases
type NewName =
2. Union types
T1 | T2 | ...
3. Pattern matching for types
4. Operators
is
and !is
5. Pattern matching for expressions
6. Semicolon for the last statement in a block can be omitted
PR on GitHub with detailed info.
✔ Type aliases
Tolk now supports type aliases, similar to TypeScript and Rust.
An alias creates a new name for an existing type but remains interchangeable with it. No performance overhead — a compile-time feature.
✔ Union types `T1 | T2 | ...`
They now allow a variable to hold multiple possible types.
Nullable types
T?
are now formally T | null
. At the TVM level, union types work as tagged unions — similar to Rust enums but more flexible.
✔ Pattern matching
The only way to work with union types is matching them:
Matching is based on smart casts — inside each branch, the variable is automatically narrowed to the matched type.
It can also be used as an expression:
So, `match` + smart casts are our way for union types. You may notice that it's close to enums in Rust. But we don't have enum. Union types are more general and powerful.
✔ `match` for expressions
As you see, match also works for constant expressions, similar to switch in other languages.
✔ Union types and TL/B `Either`
T1 | T2
will be directly mapped to TL-B (Either T1 T2)
. Look how clean this is:
(Either SmallPayload LargePayload)
becomes
No need to manually handle bits from the slice — it's naturally expressed in the type system!
✔ Union types and TL/B constructors
T1 | T2 | ...
is a typed way to describe multiple constructors from TL/B. Generally, they can be used anywhere inside a storage or a message. Moreover — handling incoming messages is beautifully expressed with union types.
✔ Union types and future structures
The ultimate goal? You'll describe each incoming message as a struct, create a union type for them, parse a slice, and just match over variants:
🌳 So, union types (that perfectly work with tensors) will seamlessly work with structures. With union types, you will declare both Either and different kinds of messages. Combined with intN and other types, they will allow to express (almost) any practical TL/B construction. They are not limited to message routing — in other words, message routing does not differ from handling any field, any storage, or any cell in general.
से पुनः पोस्ट किया:
TonTech

25.03.202511:35
🔨 TON Connect SDK Update
We're excited to announce a new release of the TON Connect SDK with significant enhancements for dApp developers.
We kindly request all dapp developers to update to the latest version to ensure optimal performance and user experience.
👥 @tonconnect/{sdk,ui,ui-react}
• New wallet feature requirements API
• Extra currencies in transactions
• React 19 compatibility
📁 New package versions
• @tonconnect/protocol 2.2.7
• @tonconnect/sdk 3.1.0
• @tonconnect/ui 2.1.0
• @tonconnect/ui-react 2.1.0
⬇️ To update, run
💡 To learn more, visit the GitHub page at https://github.com/ton-connect/sdk.
💬 Encountered issues? Please report them on GitHub at https://github.com/ton-connect/sdk/issues.
⭐️ Special thanks to the Tonkeeper team for their contribution to this release!
🎁 Your feedback and usage examples are crucial. Share your experiences to help us evolve the SDK!
We're excited to announce a new release of the TON Connect SDK with significant enhancements for dApp developers.
We kindly request all dapp developers to update to the latest version to ensure optimal performance and user experience.
👥 @tonconnect/{sdk,ui,ui-react}
• New wallet feature requirements API
• Extra currencies in transactions
• React 19 compatibility
📁 New package versions
• @tonconnect/protocol 2.2.7
• @tonconnect/sdk 3.1.0
• @tonconnect/ui 2.1.0
• @tonconnect/ui-react 2.1.0
⬇️ To update, run
npm install @tonconnect/ui-react@latest
or npm install @tonconnect/ui@latest
💡 To learn more, visit the GitHub page at https://github.com/ton-connect/sdk.
💬 Encountered issues? Please report them on GitHub at https://github.com/ton-connect/sdk/issues.
⭐️ Special thanks to the Tonkeeper team for their contribution to this release!
🎁 Your feedback and usage examples are crucial. Share your experiences to help us evolve the SDK!
14.03.202515:47
✈️ The First AI Developer Community in TON is Here! 🚀
A new developer community TON AI Narrative has been launched in TON! This is a place where we explore the synergy of AI + Web3 + Telegram and build the future of AI agents in TON.
💡What’s in TON AI Narrative?
📌 AI tutorials for TON
📌 Technologies and tools for AI agents
📌 Events and challenges for developers
🔥 TON AI Plugin – The First Step Toward TON AI SDK
Our community has built the first AI tool for TON – TON AI Plugin in the ElizaOS framework.
The goal is simple: any developer should be able to create an AI agent on TON in just 15 minutes.
💡 AI agents can’t get bank accounts, but they can get crypto wallets.
Now, AI can hold and manage crypto, make transactions, and interact with smart contracts – unlocking.
Example:
💬 “I have $5000 and want to invest in DeFi”
👉 Agent builds the transaction for you, distributing funds across Dedust, Storm, Eva, and other DeFi protocols on TON. All you need to do is review and sign the transaction.
But this is just the beginning! TON AI Plugin is the first step toward a full TON AI SDK, which will provide tools for AI agent development, Web3 integration, and Telegram interaction.
🐞 Join the Bug Bounty – Test the TON AI Plugin!
We are looking for enthusiasts who want to explore AI’s potential in Web3 and help improve this tool.
💵 The top 3 bug reporters will receive a cash reward!
🔗 Full details and participation rules:
👉 BUG-BOUNTY.md
📣 Join TON AI Narrative and help build the future of AI on TON!
🗣 Chat: TON AI Narrative Chat
📢 Channel: TON AI Narrative
A new developer community TON AI Narrative has been launched in TON! This is a place where we explore the synergy of AI + Web3 + Telegram and build the future of AI agents in TON.
💡What’s in TON AI Narrative?
📌 AI tutorials for TON
📌 Technologies and tools for AI agents
📌 Events and challenges for developers
🔥 TON AI Plugin – The First Step Toward TON AI SDK
Our community has built the first AI tool for TON – TON AI Plugin in the ElizaOS framework.
The goal is simple: any developer should be able to create an AI agent on TON in just 15 minutes.
💡 AI agents can’t get bank accounts, but they can get crypto wallets.
Now, AI can hold and manage crypto, make transactions, and interact with smart contracts – unlocking.
Example:
💬 “I have $5000 and want to invest in DeFi”
👉 Agent builds the transaction for you, distributing funds across Dedust, Storm, Eva, and other DeFi protocols on TON. All you need to do is review and sign the transaction.
But this is just the beginning! TON AI Plugin is the first step toward a full TON AI SDK, which will provide tools for AI agent development, Web3 integration, and Telegram interaction.
🐞 Join the Bug Bounty – Test the TON AI Plugin!
We are looking for enthusiasts who want to explore AI’s potential in Web3 and help improve this tool.
💵 The top 3 bug reporters will receive a cash reward!
🔗 Full details and participation rules:
👉 BUG-BOUNTY.md
📣 Join TON AI Narrative and help build the future of AI on TON!
🗣 Chat: TON AI Narrative Chat
📢 Channel: TON AI Narrative


05.03.202508:17
🎉 Tact v1.6.1 is released!
👀 "Long" time no see — many tools have been updated to support the latest Tact versions, and we've prepared some quality-of-life additions and minor fixes.
A big release cannot exist without a follow-up patch. This patch mainly focused on polishing things in the internal infrastructure, standard library, and public APIs.
🛠 Bug fixes
▪️ The multiple wildcard function parameters are now supported.
That is, the following works in v1.6.1:
▪️ Made calls to the .toCell() function on struct as a contract field handled correctly.
🧰 Standard library additions and changes
• Added the StateInit.hasSameBasechainAddress() function, which is a gas-efficient way to check whether the given initial package corresponds to a specified address.
• Added the cashback() function to efficiently forward excess funds from an incoming message to the target address.
• All entities in Core libraries received documentation comments. Next time, we'll add missing doc comments for the standard libraries, i.e., everything imported using the import "@stdlib/..." syntax.
🧳 Some other changes:
• We've inlined the contract load functions, so the gas consumption of the benchmarked Jetton implementation in Tact is even smaller than that of its reference implementation in FunC.
• The TypeScript wrappers now produce bi-directional mappings of exit codes from their numbers to string descriptions and vice versa. Plus, the message opcodes are exported too.
• The .code infix is no longer added to the file names of the generated FunC, Fift, and disassembled Fift outputs. It was annoying to see it everywhere, so now it's only present on the compiled .boc files.
📜 See the full release notes for Tact v1.6.1
📥 And upgrade Tact in your projects
Besides, the tact.vim plugin for Vim 8+ and tact-sublime package for Sublime Text 3+ have been updated to support Tact v1.6.0 (and v1.6.1 too).
The Misti static analyzer has been updated to v0.7.0 and now supports Tact v1.6.0 and v1.6.1. See its full release notes.
Speaking of plugins and tools, we have another announcement to make — we're starting an alpha test of the tact-language-server: an official language server for Tact that can be used standalone or within a dedicated extension for VSCode and VSCode-based editors, such as VSCodium, Cursor, Windsurf, and others.
Join the alpha squad and gain early access to great tooling: tact-language-server. If things are good, please give it a star and write a positive review. If they're not — open an issue, and we'll take a look!
🍲 cue the Tact type beat (sped up)
♨️ @tact_kitchen from the @ton_studio
👀 "Long" time no see — many tools have been updated to support the latest Tact versions, and we've prepared some quality-of-life additions and minor fixes.
A big release cannot exist without a follow-up patch. This patch mainly focused on polishing things in the internal infrastructure, standard library, and public APIs.
🛠 Bug fixes
▪️ The multiple wildcard function parameters are now supported.
That is, the following works in v1.6.1:
▪️ Made calls to the .toCell() function on struct as a contract field handled correctly.
🧰 Standard library additions and changes
• Added the StateInit.hasSameBasechainAddress() function, which is a gas-efficient way to check whether the given initial package corresponds to a specified address.
• Added the cashback() function to efficiently forward excess funds from an incoming message to the target address.
• All entities in Core libraries received documentation comments. Next time, we'll add missing doc comments for the standard libraries, i.e., everything imported using the import "@stdlib/..." syntax.
🧳 Some other changes:
• We've inlined the contract load functions, so the gas consumption of the benchmarked Jetton implementation in Tact is even smaller than that of its reference implementation in FunC.
• The TypeScript wrappers now produce bi-directional mappings of exit codes from their numbers to string descriptions and vice versa. Plus, the message opcodes are exported too.
• The .code infix is no longer added to the file names of the generated FunC, Fift, and disassembled Fift outputs. It was annoying to see it everywhere, so now it's only present on the compiled .boc files.
📜 See the full release notes for Tact v1.6.1
📥 And upgrade Tact in your projects
Besides, the tact.vim plugin for Vim 8+ and tact-sublime package for Sublime Text 3+ have been updated to support Tact v1.6.0 (and v1.6.1 too).
The Misti static analyzer has been updated to v0.7.0 and now supports Tact v1.6.0 and v1.6.1. See its full release notes.
Speaking of plugins and tools, we have another announcement to make — we're starting an alpha test of the tact-language-server: an official language server for Tact that can be used standalone or within a dedicated extension for VSCode and VSCode-based editors, such as VSCodium, Cursor, Windsurf, and others.
Join the alpha squad and gain early access to great tooling: tact-language-server. If things are good, please give it a star and write a positive review. If they're not — open an issue, and we'll take a look!
🍲 cue the Tact type beat (sped up)
♨️ @tact_kitchen from the @ton_studio
से पुनः पोस्ट किया:
Society Builders



21.02.202509:59
📝 TON devs — we need your feedback!
Building on TON? Tell us what works (and what doesn’t) in a quick survey on:
• Developing on TON, tooling, programming languages (FunC, Tact, Tolk), TMAs, guides
Fill it out, drop your wallet & claim an exclusive reputation SBT!
Make your voice count.
Building on TON? Tell us what works (and what doesn’t) in a quick survey on:
• Developing on TON, tooling, programming languages (FunC, Tact, Tolk), TMAs, guides
Fill it out, drop your wallet & claim an exclusive reputation SBT!
Make your voice count.
से पुनः पोस्ट किया:
TON Core

06.02.202508:54
TON Core: Report for December-January
48 updates, from small to huge. Moving along the roadmap: first part of the Accelerator, new tools for validators, TVM sidechains, new versions of TOLK and API, support for extra currencies and BTC Teleport, and other.
https://telegra.ph/TON-Core-Dec-Jan-2025-Updates-02-02
48 updates, from small to huge. Moving along the roadmap: first part of the Accelerator, new tools for validators, TVM sidechains, new versions of TOLK and API, support for extra currencies and BTC Teleport, and other.
https://telegra.ph/TON-Core-Dec-Jan-2025-Updates-02-02
दिखाया गया 1 - 24 का 59
अधिक कार्यक्षमता अनलॉक करने के लिए लॉगिन करें।