{"id":13734529,"url":"https://github.com/tact-lang/tact","last_synced_at":"2025-05-14T06:12:34.353Z","repository":{"id":65971714,"uuid":"602987603","full_name":"tact-lang/tact","owner":"tact-lang","description":"⚡ Tact compiler for TON blockchain—build secure, efficient smart contracts with powerful tooling and seamless integration","archived":false,"fork":false,"pushed_at":"2025-04-09T16:34:23.000Z","size":40732,"stargazers_count":562,"open_issues_count":667,"forks_count":166,"subscribers_count":32,"default_branch":"main","last_synced_at":"2025-04-09T16:51:42.536Z","etag":null,"topics":["compiler","smart-contracts","tact","tact-lang","ton"],"latest_commit_sha":null,"homepage":"https://tact-lang.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tact-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-17T11:28:13.000Z","updated_at":"2025-04-09T12:45:22.000Z","dependencies_parsed_at":"2023-06-28T14:30:51.687Z","dependency_job_id":"cd3387ff-a74b-4c76-96bc-a89035f7f1f4","html_url":"https://github.com/tact-lang/tact","commit_stats":{"total_commits":470,"total_committers":10,"mean_commits":47.0,"dds":0.03191489361702127,"last_synced_commit":"8c709c44ab27498f53ba21b9621370dd6d568edd"},"previous_names":[],"tags_count":98,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tact-lang%2Ftact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tact-lang%2Ftact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tact-lang%2Ftact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tact-lang%2Ftact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tact-lang","download_url":"https://codeload.github.com/tact-lang/tact/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248741144,"owners_count":21154249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compiler","smart-contracts","tact","tact-lang","ton"],"created_at":"2024-08-03T03:00:57.073Z","updated_at":"2025-05-14T06:12:34.342Z","avatar_url":"https://github.com/tact-lang.png","language":"TypeScript","readme":"# Tact Language Compiler\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://raw.githubusercontent.com/tact-lang/tact-docs/main/public/banner.jpeg\" alt=\"\" /\u003e\n\nA next-gen smart contract programming language for TON Blockchain focused on efficiency and ease of development.\nTact is a good fit for complex smart contracts, quick onboarding, and rapid prototyping.\n\nDeveloped by [TON Studio](https://tonstudio.io), powered by the community — as of the beginning of 2025, the number of _unique code_[^1] contracts deployed on the mainnet reached almost 28 thousand, of which about 33% were written in Tact. You can view some selected projects here: [Tact in production](#tact-in-production).\n\nTact has undergone a comprehensive security audit by [Trail of Bits](https://www.trailofbits.com), a leading Web3 security firm.\n\n**[Try online!] • [Features] • [Security] • [Key resources] • [Installation] • [Community] • [Contributing]**\n\n[Try online!]: https://ide.ton.org\n[Features]: #features\n[Security]: #security\n[Key resources]: #key-resources\n[Installation]: #installation\n[Community]: #community\n[Contributing]: #contributing\n\n[![Website](https://img.shields.io/badge/Website-blue?style=flat)](https://tact-lang.org)\n[![Documentation](https://img.shields.io/badge/Documentation-blue?style=flat)](https://docs.tact-lang.org)\n[![Audited by Trail of Bits](https://img.shields.io/badge/Audited%20by-Trail%20of%20Bits-blue?style=flat-square)](https://github.com/trailofbits/publications/blob/master/reviews/2025-01-ton-studio-tact-compiler-securityreview.pdf)\n[![Twitter](https://img.shields.io/badge/X%2FTwitter-white?logo=x\u0026style=flat\u0026logoColor=gray)](https://x.com/tact_language)\n[![Telegram](https://img.shields.io/badge/Community_Chat-white?logo=telegram\u0026style=flat)](https://t.me/tactlang)\n[![Telegram](https://img.shields.io/badge/Tact_Kitchen_🥣-white?logo=telegram\u0026style=flat)](https://t.me/tact_kitchen)\n\n\u003c/div\u003e\n\n## Features\n\nThe most prominent and distinctive features of Tact are:\n\n- Familiar and user-friendly TypeScript-like syntax.\n- Strong static type system with built-in [Structs], [Messages], and [maps], among others.\n- First-class [maps] support, with many methods and a convenient [`foreach` statement][foreach] for traversing.\n- Automatic (de)serialization of incoming messages and data structures.\n- Automatic routing of [internal, external, and bounced messages][recvfun].\n- Automatic handling of message types, including [binary, text, and fallback slices][recv].\n- No boilerplate functions for [sending messages] and deploying child contracts.\n- Reusable behaviors through [traits].\n- Support for low-level programming with [`asm` functions][asmfun].\n- Generation of [single-file TypeScript wrappers] for convenient interactions with compiled contracts, which include:\n  - Type definitions for [Structs] and [Messages] observable in the [compilation report].\n  - Corresponding `storeStructureName()` and `loadStructureName()` functions for (de)serialization.\n  - All global and contract-level constants.\n  - Bi-directional records of exit codes: from their names to numbers and vice versa.\n  - Opcodes of all [Messages].\n  - A contract wrapper class with various helper functions for initialization, deployment, and message exchange.\n- Rich [standard library][stdlib].\n- Extensive [documentation].\n- Robust [tooling](#tooling).\n- ...and there's much more to come!\n\n[Structs]: https://docs.tact-lang.org/book/structs-and-messages#structs\n[Messages]: https://docs.tact-lang.org/book/structs-and-messages#messages\n[maps]: https://docs.tact-lang.org/book/maps\n[foreach]: https://docs.tact-lang.org/book/statements#foreach-loop\n[recv]: https://docs.tact-lang.org/book/receive/\n[recvfun]: https://docs.tact-lang.org/book/contracts/#receiver-functions\n[sending messages]: https://docs.tact-lang.org/book/send/#message-sending-functions\n[traits]: https://docs.tact-lang.org/book/types/#traits\n[asmfun]: https://docs.tact-lang.org/book/assembly-functions/\n[single-file TypeScript wrappers]: https://docs.tact-lang.org/book/compile/#wrap\n[compilation report]: https://docs.tact-lang.org/book/compile/#report\n[stdlib]: https://docs.tact-lang.org/ref/\n[documentation]: https://docs.tact-lang.org/\n\n## Security\n\n- [Security audit of Tact by the Trail of Bits (2025, PDF)](https://github.com/trailofbits/publications/blob/master/reviews/2025-01-ton-studio-tact-compiler-securityreview.pdf)\n  - Backup link: [PDF Report](https://github.com/tact-lang/website/blob/416073ed4056034639de257cb1e2815227f497cb/pdfs/2025-01-ton-studio-tact-compiler-securityreview.pdf)\n\n## Tact in production\n\nSome selected software and applications based on contracts written in Tact, deployed in production, and consumed by end users:\n\n###### Open source or source available\n\n- [Proof of Capital](https://github.com/proof-of-capital/TON) - [Proof of Capital](https://proofofcapital.org/) is a market-making smart contract that protects interests of all holders.\n  - See the [security audit report](https://raw.githubusercontent.com/nowarp/public-reports/master/2025-01-proof-of-capital.pdf) by [Nowarp](https://nowarp.io).\n\n###### Closed source\n\n- [Tradoor](https://tradoor.io) - Fast and social DEX on TON.\n  - See the [security audit report](https://www.tonbit.xyz/reports/Tradoor-Smart-Contract-Audit-Report-Summary.pdf) by TonBit.\n- [PixelSwap](https://www.pixelswap.io) - First modular and upgradeable DEX on TON.\n  - See the [security audit report](https://github.com/trailofbits/publications/blob/master/reviews/2024-12-pixelswap-dex-securityreview.pdf) by Trail of Bits.\n- [GasPump](https://gaspump.tg) - TON memecoin launchpad and trading platform.\n\nSee [Tact in production](https://github.com/tact-lang/awesome-tact#tact-in-production-) on the Awesome Tact list.\n\n## Key resources\n\n- [Awesome Tact](https://github.com/tact-lang/awesome-tact)\n- [Tact By Example](https://tact-by-example.org/00-hello-world)\n- [DeFi Cookbook](https://github.com/tact-lang/defi-cookbook)\n- [Documentation](https://docs.tact-lang.org)\n- [Changelog](./dev-docs/CHANGELOG.md)\n\n## Installation\n\n### Compiler\n\nThe Tact compiler is distributed as an [NPM package](https://www.npmjs.com/package/@tact-lang/compiler) bundled with the [Tact standard library](https://docs.tact-lang.org/ref/).\n\nThe recommended Node.js version is 22 or higher, while the minimum version is 18.\n\nUse your favorite package manager to install it into a Node.js project:\n\n```shell\n# yarn is recommended, but not required\nyarn add @tact-lang/compiler\n\n# you can also use npm\nnpm i @tact-lang/compiler@latest\n\n# or pnpm\npnpm add @tact-lang/compiler\n\n# or bun\nbun add @tact-lang/compiler\n```\n\nAlternatively, you can install it globally as such:\n\n```shell\nnpm i -g @tact-lang/compiler\n```\n\nIt will make the `tact` compiler available on your PATH, as well as:\n\n- a convenient `unboc` disassembler of a contract's code compiled into a [Bag of Cells](https://docs.tact-lang.org/book/cells/#cells-boc) `.boc` format.\n- a formatter `tact-fmt`, which can format or check the formatting of individual Tact files and directories.\n\n### Tooling\n\n###### Extensions and plugins\n\n- [VS Code extension](https://marketplace.visualstudio.com/items?itemName=tonstudio.vscode-tact) - Powerful and feature-rich extension for Visual Studio Code (VSCode) and VSCode-based editors like VSCodium, Cursor, Windsurf, and others.\n  - Get it on the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=tonstudio.vscode-tact).\n  - Get it on the [Open VSX Registry](https://open-vsx.org/extension/tonstudio/vscode-tact).\n  - Or install from the [`.vsix` files in nightly releases](https://github.com/tact-lang/tact-language-server/releases).\n- [Language Server (LSP Server)](https://github.com/tact-lang/tact-language-server) - Supports Sublime Text, (Neo)Vim, Helix, and other editors with LSP support.\n- [Intelli Tact](https://plugins.jetbrains.com/plugin/27290-tact) - Powerful and feature-rich plugin for JetBrains IDEs like WebStorm, IntelliJ IDEA, and others.\n- [tact.vim](https://github.com/tact-lang/tact.vim) - Vim 8+ plugin.\n- [tact-sublime](https://github.com/tact-lang/tact-sublime) - Sublime Text 4 package.\n  - Get it on the [Package Control](https://packagecontrol.io/packages/Tact).\n\n###### Security\n\n- [Misti](https://github.com/nowarp/misti) - Static smart contract analyzer.\n- [TON Symbolic Analyzer (TSA)](https://github.com/espritoxyz/tsa) - Static smart contract analysis tool based on symbolic execution.\n\n###### Utility\n\n- Formatter (`tact-fmt`) — The official formatter. It ships with the Tact Language Server, VS Code extension, and as a standalone binary with the compiler. You can invoke it by running `npx tact-fmt` in your Tact projects.\n- BoC Disassembler (`unboc`) — Disassembler for [`.boc`](https://docs.tact-lang.org/book/cells/#cells-boc) files. Ships as a standalone binary with the compiler. You can invoke it by running `npx unboc` in your Tact projects.\n\n### Getting started\n\nFor a quick start, read the [\"Let's start!\"](https://docs.tact-lang.org/#start) mini-guide in the Tact documentation. It uses the [Blueprint](https://github.com/ton-community/blueprint) development environment for writing, testing, and deploying smart contracts on TON Blockchain.\n\nIf you want more manual control, use [tact-template](https://github.com/tact-lang/tact-template). It's a ready-to-use template with the development environment set up, including the Tact compiler with TypeScript + Jest, a local TON emulator, AI-based editor support, and examples of how to run tests.\n\n```shell\ngit clone --depth 1 https://github.com/tact-lang/tact-template\n```\n\n## Community\n\nIf you can’t find the answer in the [docs](https://docs.tact-lang.org), or you’ve tried to do some local testing and it still didn’t help — don’t hesitate to reach out to Tact’s flourishing community:\n\n- [`@tactlang` on Telegram](https://t.me/tactlang) - Main community chat and discussion group.\n- [`@tactlang_ru` on Telegram](https://t.me/tactlang_ru) _(Russian)_\n- [`@tact_kitchen` on Telegram](https://t.me/tact_kitchen) - Channel with updates from the team.\n- [`@tact_language` on X/Twitter](https://x.com/tact_language)\n- [`tact-lang` organization on GitHub](https://github.com/tact-lang)\n- [`@ton_studio` on Telegram](https://t.me/ton_studio)\n- [`@thetonstudio` on X/Twitter](https://x.com/thetonstudio)\n\n## Contributing\n\nContributions are welcome! To help develop the compiler, see the [contributing guide](./dev-docs/CONTRIBUTING.md).\n\nIn addition, we invite you to create new educational materials in any form, help foster the [community](#community), and build new [Tact contracts and projects](#tact-in-production). The best creations will be featured in [awesome-tact](https://github.com/tact-lang/awesome-tact) and on social media.\n\nGood luck on your coding adventure with ⚡ Tact!\n\n## License\n\nMIT © The Tact Authors: Steve Korshakov; [TON Studio](https://tonstudio.io).\n\n[^1]: The \"unique code\" means that each contract in the data sample has at least one TVM instruction that differs from the other contracts, excluding many preprocessed wallets with everything inlined — even seqno and a public key for signature verification!\n","funding_links":[],"categories":["📚 Official Resources"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftact-lang%2Ftact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftact-lang%2Ftact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftact-lang%2Ftact/lists"}