TON Dev News
43.2K subscribers
66 photos
9 videos
238 links
Short announces with new services, tools, libraries and their features. Request a post: https://tg-me.sbs/tondev_news/33
Download Telegram
Forwarded from πŸ“€ TON Data Hub (Dan)
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:
πŸ₯‡ 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
πŸ‘5❀3
Forwarded from TON Tech
πŸ”¨ 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 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!
Please open Telegram to view this post
VIEW IN TELEGRAM
❀9πŸ‘2πŸ”₯2πŸ‘Ž1
πŸŽ‰ 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 ?: 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πŸ‘9
Forwarded from Ton Console
Tracking Transactions on TON Just Got Easier! πŸŽ‰

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!
πŸ”₯7πŸ‘Œ5❀3πŸ‘1
Forwarded from Toncenter API
Toncenter API supported hash of a normalized external message

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.
πŸ”₯12❀8πŸ‘1
Forwarded from TOLK lang
🫧 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 type NewName = <existing type>
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.


type UserId = int32;
type MaybeOwnerHash = bytes32?;


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.


fun whatFor(a: bits8 | bits256): slice | UserId { ... }

var result = whatFor(...); // slice | UserId


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:


match (result) {
slice => { /* result is slice here */ }
UserId => { /* result is UserId here */ }
}


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:


type Pair2 = (int, int);
type Pair3 = (int, int, int);

fun getLast(tensor: Pair2 | Pair3) {
return match (tensor) {
Pair2 => tensor.1,
Pair3 => tensor.2,
}
}


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


val nextValue = match (curValue) {
1 => 0,
0 => 1,
else => -1
};


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


struct StoragePart {
data: SmallPayload | LargePayload;
// (de)serialized as '0' + ... or '1' + ...
}

match (s.data) {
SmallPayload => ...
LargePayload => ...
}


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:


// don't mind about opcodes yet
struct CounterIncBy { byValue: int32 }
struct CounterReset {}
struct ... other messages

type IncomingMessage = CounterIncBy | CounterReset | ...;

// ... after parsing a message
match (msg) {
CounterIncBy => {
newCounter = curCounter + msg.byValue
}
CounterReset => {
newCounter = 0
}
...
}


🌳 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.
πŸ”₯17πŸ‘6πŸ‘€3
Forwarded from Ton Console (Denis Subbotin [Ρ…ΠΎΡ‡Π΅Ρ‚ ваши дСньги])
πŸ“ 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 β†’
πŸ”₯7πŸ‘4❀‍πŸ”₯1
Forwarded from BotNews
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://torg.tg-me.sbs/bots/api-changelog#april-11-2025
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯11πŸ‘1πŸ‘1
πŸŽ‰ 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
⚑7πŸ”₯5πŸ‘4❀‍πŸ”₯3
Forwarded from TON Contests
Media is too big
VIEW IN TELEGRAM
🧠 Tact Smart Battle 🀜

Join the ultimate smart contract challenge powered by Tact, organized by TON Studio & Codeforces

πŸ… Prize Pool β€” $20,000 in Toncoin!

🎯 Challenge Tasks:
1. Simple Voting β€” basic voting system.
2. Serial Voting β€” multiple proposals via a master contract.
3. Scalable Voting β€” support up to 4 billion voters.
4. Voting with Refunds β€” refunds to voters.
5. Gas-Managed Voting β€” fully optimized contracts.

πŸ† Rewards:
- Top 128 participants share the prize pool and receive exclusive Soulbound Tokens (SBTs).
- All participants with valid solutions also receive a Participant SBT.
- SBTs include embedded on-chain developer reputation.

⭐️ Additional Perks:
- Top participants will be invited for job interviews at TON Studio.

⏰ Duration: 7 days

πŸ—“οΈ Start Date: April 21, 12:00 (UTC+3)
πŸ›‘ Deadline: April 28, 12:00 (UTC+3)

Registration:
πŸ‘‰ Challenge Link (Codeforces)

Registration guide:
πŸ‘‰ Notion link

Community & Support:
πŸ‘‰ Telegram Challenge Chat

Good luck and may your contracts be efficient and bug-free! πŸš€πŸ”₯
Please open Telegram to view this post
VIEW IN TELEGRAM
⚑8πŸ”₯5πŸ‘3🀩3πŸ—Ώ2🌚1
This media is not supported in your browser
VIEW IN TELEGRAM
πŸŽ‰ Tact v1.6.6 is released!

The final patch release of this v1.6 series is upon us, and it brings a significant tooling improvement, amongst other things. Meet the official Tact formatter β€” a new tool that ensures consistent code style across your Tact projects. It ships with Tact v1.6.6, and you can run it in your projects via npx tact-fmt or by invoking a format command in your editor. You'd need to install the Tact's language server or the VSCode extension for that β€” see the tact-language-server repo for details.

The v1.6.* series of patches has been a journey of refinement and polish, setting the stage for what's coming next. As we close this chapter, we're already working hard on exciting new features for the future.

For now, let's explore the Tact v1.6.6 release:

🧰 Standard library additions and changes

β€’ Added compute phase exit code constants reserved by the Tact compiler, such as TactExitCodeNullReferenceException (128) and many others.

β€’ Added the SignedBundle struct and the corresponding verifySignature method.

β€’ Added sendRawMessage and sendRawMessageReturnForwardFee functions as replacements for their deprecated counterparts.

β€’ Optimized the sha256() function to about ~270 less gas used per call and added the keccak256() function that works with arbitrarily long slices.

πŸ›  Bug fixes

There were a lot of those. Remember that last time we started fuzzing the compiler with LLMs to root out bugs? Well, we found many bugs that way and fixed even more β€” many error messages got way more informative and useful. Some bug fixes allowed for seemingly unrelated UX improvements too.

One nice example of a second-order fix would be that the require() function now supports constants as its second parameter. You no longer need to provide identical string literals everywhere β€” define a string constant somewhere and reuse it!

See the full release notes for a long list of bugs squished and error messages improved.

✍️ Documentation updates

β€’ Added a "Learn Tact in Y minutes" page, which gives a whirlwind code-first tour of the Tact language.

β€’ Any AI vibe coders out there? The docs now generate llms.txt, llms-full.txt and llms-small.txt files for you to use with your AIs. The small version is particularly interesting as it fits in the 200k context.

β€’ The "gas best practices" page got updated with new recommendations, such as specialized math functions or the BasechainAddress struct and related functions.

β€’ Lots of examples fixed, with more fixes to arrive as we speak.

🧳 Formatter!

You can run it via npx tact-fmt in your projects β€” it supports checking the formatting via the --check flag, applying fixes via the --write flag, and can check both individual files and directories of files.

Furthermore, it also ships with our official language server and VSCode extensions. See the tact-language-server's README.md for installation details.

πŸ“œ See the full release notes for Tact v1.6.6
πŸ“₯ And upgrade Tact in your projects

In about 4 days from now, on April 21 at 12:00 (UTC+3), the Tact Smart Battle will begin! It is the ultimate smart contract challenge powered by Tact and organized by TON Studio & Codeforces. The prize pool is $20,000 in Toncoin, and the top 128 participants will receive exclusive Soulbound Tokens (SBTs). Moreover, the best battlers will be invited for job interviews at TON Studio.

And all participants with valid solutions would also receive a Participant SBT.

πŸ‘‰ Register, if not already: Codeforces
β€’ Here's the registration guide, just in case: Notion
β€’ Hop in the community chat to ask questions, receive support and have fun learning and using Tact: @tact_smart_battle

🍲 flint and tact
♨️ @tact_kitchen from the @ton_studio
πŸ”₯15❀11πŸ‘7πŸŽ‰5⚑2πŸ•Š1
πŸš€ Tact Smart Battle has officially started! 🀜

All tasks are now live.
The GitHub repo with setup, templates, and participation guide is here:

🐱 tact-smart-battle

Dive in, build, and push your skills to the limit
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯9πŸ‘4❀1
For you all, JetBrains IDEs lovers: intelli-tact plugin release πŸ“Έ

🍲 got IDEA?
♨️ @tact_kitchen from the @ton_studio
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯18πŸ‘15❀2
Forwarded from TOLK lang
🫧 Tolk v0.12: structures, generics, and methods

Finally! Or maybe not yet?

This update brings Tolk one step closer to its final form by introducing:

βœ… Notable changes in Tolk v0.12:

1. Structures
2. Generics
3. Methods
4. Stdlib with short naming
5. Fift output enhancements

PR on GitHub with detailed info.

βœ” Structures

Looks like TypeScript β€” but works in TVM!


struct Point {
x: int;
y: int;
}

fun calcMaxCoord(p: Point) {
return p.x > p.y ? p.x : p.y;
}

// declared like a JS object
var p: Point = { x: 10, y: 20 };

// called like a JS object
calcMaxCoord({ x: 10, y: 20 });


Point a just named tensor β€” identical to (int, int) at the TVM level.

Key features:
- Compiler guesses what you mean β€” automatically:

fun loadData(): StoredInfo {
return {
counterValue: ...,
ownerAddress: ...,
}
}


- Works with shorthand syntax { x, y }
- Default values for fields are supported
- Nested objects are supported
- No overhead for single-field structs over a plain value
- Nullability, smart casts, union types, all language features β€” everything works

βœ” Generics

They exist only at the type level (no runtime cost):

struct Nullable<T> {
item: T? = null;
}


The type system becomes powerful enough to express complex scenarios:

struct Ok<TResult> { result: TResult }
struct Err<TError> { err: TError }

type Response<R, E> = Ok<R> | Err<E>;

match (r) {
Ok => { r.result }
Err => { r.err }
}


βœ” Methods β€” for any types

For structures:

fun Point.getX(self) {
return self.x
}

fun Point.create(x: int, y: int): Point {
return { x, y }
}


Or extend built-in types:

fun slice.load32(mutate self): int32 {
return self.loadInt(32);
}


Or β€” tensors, unions, generics, even "any receiver". A method is just an extension function with predictable resolution rules.

βœ” stdlib β€” with short methods naming


// before
someCell.cellHash();
someTuple.tupleSize();
someBuilder.getBuilderBitsCount();

// now
someCell.hash();
someTuple.size();
someBuilder.bitsCount();


Even more β€” some global functions are now static methods:

// before
getMyAddress();
setContractData(c);
getLogicalTime();

// now
contract.getAddress();
contract.setData(c);
blockchain.logicalTime();


It looks pretty, and since IDE suggest only available methods after dot, it's extremely useful. For a full list of renamings, consider documentation.

βœ” A long-awaited bonus for Fift ninja

Look at the PR and enjoy how readable Fift assembler output is. Yes, it contains original .tolk lines as comments! And yes, it works perfectly.

🌳 You now see how Tolk's features are aligning together towards automatic serialization, fully described by the type system. Cell references, constructor prefixes, message sending, and other use cases will be expressed with the features above.
πŸ‘29πŸ”₯13❀‍πŸ”₯8❀5πŸ₯°3
Forwarded from TOLK lang
🫧 Tolk v0.13 (Release candidate): Auto-packing to/from cells

We've finally reached the point we've been working toward for the past six months: automatic (de)serialization of anything into cells. From simple structs to unions, generics, and even nested references β€” it just works.

The goal? To replace TL/B entirely with declarative, type-safe definitions. The compiler takes care of packing, loading, estimating, error handling, and more.

βœ… Notable changes in Tolk v0.13:

1. Auto-packing to/from cells/slices/builders
2. Type address
3. Lateinit variables, default parameters, and other minor features

PR on GitHub with detailed info.

βœ” Auto-serialization: short demo


struct Point {
x: int8;
y: int8;
}

var value: Point = { x: 10, y: 20 };

// makes a cell containing "0A14"
var c = value.toCell();
// back to { x: 10, y: 20 }
var p = Point.fromCell(c);


Key features:

* supports all types: unions, tensors, nullables, generics, atomics, ...
* allows to specify prefixes (particularly, opcodes)
* allows to manage cell references and when to load them
* lets you control error codes and other behavior
* unpacks data from a cell or a slice, mutate it or not
* packs data to a cell or a builder
* warns if data potentially exceeds 1023 bits
* more efficient than manual serialization
* will seamlessly integrate with message sending/receiving in Tolk v1.0

βœ” Pack or unpack β€” anywhere

T.fromCell, T.fromSlice, slice.loadAny<T>, builder.storeAny<T>, and other methods give both high-level and low-level API.


// low-level is allowed:
beginCell()
.storeUint(1, 32) // mix manual
.storeAny(myStruct) // with auto


βœ” Serialization prefixes and opcodes


struct (0x7362d09c) TransferNotification {
queryId: uint64;
...
}


They are not limited to 32 bits β€” you can describe any TL/B constructors:

struct (0b001) AssetSimple { ... }
struct (0b100) AssetBooking { ... }
type Asset = AssetSimple | AssetBooking | ...;


βœ” Typed cells


struct A {
    ref1: cell;         // untyped ref
    ref2: Cell<Inner>;  // typed ref
    ref3: Cell<int256>?; // maybe ref
}


Typed cells give you full control over when content is unpacked β€” nothing is loaded unless you call .load() manually:

a.ref2.field // error
a.ref2.load().field // ok


// Yes, point.toCell() really gives you Cell<Point>

βœ” Granular options

Accurately adjust serialization behaviour (for example, error codes):


Point.fromSlice(s, {
assertEndAfterReading: false
})


βœ” Built-in type `address`


struct Wallet {
owner: address;
}


* integrated with auto-serialization, while still a slice under the hood
* comparable: if (senderAddress == wallet.owner)
* introspectable: isInternal(), getWorkchain(), etc.

βœ” Some other features

Described in detail in the full changelog and mirrored in the documentation.

🌳 We're just a couple of steps away from Tolk v1.0 β€” with message sending and handling, gas optimizations, and one secret feature. There is still a lot of work ahead, but today we're closer to the release than ever before.
❀9πŸ”₯6πŸ₯°3πŸ‘1
πŸŽ‰ Tact Language Server & VS Code Extension v0.8.0 are live!

Smarter code insight, TL-B support, fresh UI touches and a faster, quieter indexer β€” all wrapped into v0.8.0 release!

πŸš€ Headline features

Flexible toolchain picker – point the extension at any local Tact toolchain and switch them on the fly.
TL-B first-class citizen – syntax highlighting, completions, document symbols, go-to-references and inline highlighting inside Tact comments.
Next level navigation – search for functions by type, easily navigate with code lenses with go-to places where messages were sent and received
Fresh inspections – CanBeInline (with quickfix), DeprecatedSymbolUsage, MissedMembersInContract (with quickfix), NamingConvention, OptimalMathFunctions.

πŸ“œ And that's not all 😎, check out our changelog to find all the improvements and fixes in the new release!
Also check out X/Twitter thread with announcement.

πŸ“₯ Upgrade now

Via VS Code marketplace
or Open VSX

Happy hacking! πŸ› οΈβœ¨

🍲 intelli-tact, you're next
♨️ @tact_kitchen from the @ton_studio
πŸ”₯9πŸ‘7❀6😁4⚑1
Forwarded from TOLK lang
🫧 Tolk v0.99: universal message composition

This update introduces a high-level, type-safe way to compose and send messages to other contracts.

No more manual beginCell().storeUint(...).storeRef(...) boilerplate. Just describe the message in a literal, and let the compiler do the rest.

βœ… Notable changes in Tolk v0.99:

1. Universal createMessage – control body, extra currency, stateInit, and more
2. Universal createExternalLogMessage β€” emit logs efficiently
3. Sharding β€” calculate addresses "close to another contract"

PR on GitHub with detailed info.

βœ” createMessage: short demo


val reply = createMessage({
bounce: false,
value: ton("0.05"),
dest: senderAddress,
body: RequestedInfo { ... }
});
reply.send(SEND_MODE_REGULAR);


Key features:

1. Supports extra currencies
2. Supports stateInit with automatic address computation
3. Supports different workchains
4. Supports sharding (formerly splitDepth)
5. Integrated with auto-serialization of body
6. Automatically detects "body ref or not"

βœ” Union types as the foundation

Almost every field is a union β€” flexible API while staying strictly typed:


// value: either tons, or tons + extra currencies
value: ton("1.5")
value: (ton("1.5"), extraDict)

// destination: various forms
dest: someAddress
dest: (workchain, hash)


βœ” Body: inline or ref?

Don't think about refs β€” the compiler does:
- small structs are inlined
- large ones are wrapped in a ref
- detected at compile-time β€” no runtime checks


// any serializable struct β€” no toCell!
body: RequestedInfo { ... }


Don't need body? Just leave it out.

βœ” Deployment: a variant of "destination"


dest: {
    workchain: BASECHAIN,
    stateInit: { code, data },
}


The beauty of TON is that it doesn't have a dedicated deployment mechanism. You just send a message to some void β€” and if this void doesn't exist, but you've attached a way to initialize it β€” it's initialized immediately, and accepts your message.

βœ” Sharding!

Built-in features to calculate an address "in the shard of contract B."


dest: {
...
toShard: {
fixedPrefixLength: 8,
closeTo: ownerAddress,
}
}


Perfect for optimized sharded jettons. All the hashing, StateInit packing, and bit-level work is done automatically.

βš™οΈ What about gas costs?

Even with all this flexibility, createMessage is not bloated. The compiler unfolds all union branches and constant conditions at compile time, producing flat, minimal code β€” often more optimal than hand-crafted cell composition.

❓ v0.99? So, what's next?

Yes, it's the last version before the final release. Tolk now covers the entire initial roadmap and is ready for real-world use. On top of that, we'll add several compiler optimizations and rewrite standard contracts from FunC to Tolk β€” to demonstrate how exactly everything ties together.
πŸ‘16❀7πŸ”₯3⚑2πŸ₯°1πŸ’―1πŸ‘¨β€πŸ’»1
Forwarded from TON Tech
πŸ”¨ Dev Tools Updates

Fresh updates are out for TON development tools! These releases bring enhanced reliability, a smoother developer experience, and stronger tooling performance. Make sure to upgrade and enjoy the latest improvements!

πŸ“ @ton/blueprint v0.36.0 – 2025-06-16
πŸ“ @ton/sandbox v0.33.0 – 2025-06-16
πŸ“ @ton/test-utils v0.8.0 – 2025-06-16

πŸ‘₯ Noticeable changes
β€’ New Jest matcher: toThrowExitCode for validating exitCode in tests.
β€’ New Chai assertion: throwExitCode for similar exit code validation.
β€’ ExitCode enum: Introduced for standardizing exit codes
β€’ Added fetchConfig and setGlobalVersion utility functions
β€’ Added blockchain.randomSeed property to update random seed in transactions or get methods
β€’ Added support for updating blockchain config via loadConfig and updateConfig functions
β€’ Blockchain.now not updating in blockchain.sendMessageIter is resolved
β€’ Immutability fix: Blockchain.snapshot now returns copy, not reference
β€’ Switched to Dirent.parentPath from deprecated .path
β€’ Network Provider Enhancements. Added getConfig, getContractState and waitForLastTransaction methods
β€’ Added utility getNormalizedExtMessageHash functions

⬇ To update, run npm install @ton/blueprint@latest @ton/sandbox@latest @ton/test-utils@latest.

πŸ’‘To learn more, visit GitHub pages: https://github.com/ton-org/blueprint, https://github.com/ton-org/sandbox and https://github.com/ton-org/test-utils.

πŸ’¬ Encountered issues? Please report them on GitHub at https://github.com/ton-org/blueprint/issues.

🎁 Your feedback and usage examples are crucial. Share your experiences to help us evolve the SDK!
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘4❀1
πŸ’¬ Infrastructure Time

What Infrastructure do you need to ship faster on TON?

We’re gathering feedback from the community about what’s missing, what’s needed, and what could unlock more building in the TON ecosystem! Fill out the short form:

https://forms.gle/9MMMXDxWha1R6qxN6

Please, take this survey seriously
: your input will shape TON Foundation infrastructure strategy priorities for this year.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘6🀣2😁1
Forwarded from Tonkeeper News
This media is not supported in your browser
VIEW IN TELEGRAM
πŸ’»Build with TONAPI β€” YouTube Contest

We’re inviting developers to create technical YouTube content that demonstrates how TONAPI, our powerful SaaS tools for building dApps, integrating smart contracts, and crafting custom blockchain solutions, enables real-world use cases.

TONAPI service allows developers to build decentralized applications on top of the TON blockchain without having to deal with the complexity of the underlying technology. Over 80% of projects in the TON ecosystem use TONAPI.

Submissions can include:

- Live coding or walkthroughs
- Deep-dive tutorials
- Project demos
- Comparisons with other tooling

πŸ† Top 5 videos will be selected. Total prize pool of 5,000 USDT (Bitrefill Gift Card).

Winning entries will also receive visibility on Tonkeeper social channels, TONAPI discount codes, potential dApp Browser integrations, and invitations to our exclusive mentorship program.

πŸ‘‰ Submit by emailing contest@tonkeeper.com with subject β€œTONAPI Contest”

πŸ“† Deadline: July 18
Submission guidelines
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘15❀8πŸ‘Ž1πŸ”₯1😁1