A development environment for TON blockchain for writing, testing, and deploying smart contracts.
Run the command in terminal to create a new project and follow the on-screen instructions:
npm create ton@latest
Blueprint is an all-in-one development environment designed to enhance the process of creating, testing, and deploying smart contracts on TON blockchain using FunC and Tact languages
npm create ton@latest
ton://
deeplinknode -v
npm create ton@latest
or npx create-ton@latest
npm/yarn install
to install dependenciescontracts/
- Source code in FunC or Tact for all smart contracts and their importswrappers/
- TypeScript interface classes for all contracts (implementing Contract
from @ton/core)
compilables/
- Compilations scripts for contractstests/
- TypeScript test suite for all contracts (relying on Sandbox for in-process tests)scripts/
- Deployment scripts to mainnet/testnet and other scripts interacting with live contractsbuild/
- Compilation artifacts created here after running a build commandcompilables/<CONTRACT>.compile.ts
- examplenpx blueprint build
or yarn blueprint build
npx/yarn blueprint build <CONTRACT>
OR build all contracts yarn blueprint build --all
yarn blueprint build counter
build/<CONTRACT>.compiled.json
build/<CONTRACT>
directorynpx blueprint test
or yarn blueprint test
npm test
or yarn test
npm/yarn test <CONTRACT>
yarn test counter
Learn more about writing tests from the Sandbox's documentation - here.
scripts/deploy<CONTRACT>.ts
- examplenpx blueprint run
or yarn blueprint run
npx/yarn blueprint run deploy<CONTRACT> --<NETWORK> --<DEPLOY_METHOD>
yarn blueprint run deployCounter --mainnet --tonconnect
scripts
folderrun
export async function run(provider: NetworkProvider) {
//
}
npx/yarn blueprint run <SCRIPT>
commandFunC version can be updated using npx/yarn blueprint set func
command
Run in terminal: npx blueprint help
or yarn blueprint help
Before developing, make sure that your current working directory is located in the root of the project created using npm create ton@latest
npx blueprint create
or yarn blueprint create
npx/yarn blueprint create <CONTRACT> --type <TYPE>
(type can be func-empty
, func-counter
, tact-empty
, tact-counter
)
yarn blueprint create MyNewContract --type func-empty
contracts/<CONTRACT>.fc
contracts/imports/*.fc
wrappers/<CONTRACT>.ts
to encode messages and decode getterscontracts/<CONTRACT>.tact
build/<CONTRACT>/tact_<CONTRACT>.ts
tests/<CONTRACT>.spec.ts
wrappers/<CONTRACT>.ts
to interact with the contractLearn more about writing tests from the Sandbox's documentation - here.
A config may be created in order to control some of blueprint's features. If a config is needed, create a blueprint.config.ts
file in the root of your project with something like this:
import { Config } from '@ton/blueprint';
export const config: Config = {
// config contents
};
It is important that the config is exported, is named config
, and is not default
exported.
Config's features are explained below.
Blueprint has a plugin system to allow the community to develop their own additions for the ecosystem without the need to change blueprint's code.
In order to use plugins, add a plugins
array to your config:
import { Config } from '@ton/blueprint';
import { ScaffoldPlugin } from 'blueprint-scaffold';
export const config: Config = {
plugins: [new ScaffoldPlugin()],
};
(This example shows how to add the scaffold plugin)
Here are some of the plugins developed by the community:
A custom network may be specified by using the --custom
flags, which you can read about by running blueprint help run
, but it can be tiresome to use these at all times. Instead, to specify a custom network to always be used (unless --custom
flags are present), add a network
object to your config:
import { Config } from '@ton/blueprint';
export const config: Config = {
network: {
endpoint: 'https://toncenter.com/api/v2/jsonRPC',
type: 'mainnet',
version: 'v2',
key: 'YOUR_API_KEY',
},
};
The above config parameters are equivalent to the arguments in the following command:
npx blueprint run --custom https://toncenter.com/api/v2/jsonRPC --custom-version v2 --custom-type mainnet --custom-key YOUR_API_KEY
Properties of the network
object have the same semantics as the --custom
flags with respective names (see blueprint help run
).
You can also use custom network to verify contracts, like so:
npx blueprint verify --custom https://toncenter.com/api/v2/jsonRPC --custom-version v2 --custom-type mainnet --custom-key YOUR_API_KEY
(or similarly using the config), however custom type MUST be specified as either mainnet
or testnet
when verifying.
Special thanks to @qdevstudio for their logo for blueprint.
MIT
TON - EQAQR1d1Q4NaE5EefwUMdrr1QvXg-8mDB0XI2-fwDBD0nYxC