Tncli
TON smart contract command line interface
State
Not working, in active development
Installation and Configuration
- Compile
fift
,func
,lite-client
from ton and add them toPATH
env or move to/usr/bin
, docs can be founded here- For Arch Linux we have AUR package of ton
pip install tncli
Now you can access CLI
tool by typing in terminal tncli
Usage example
tncli start wallet -n my-wallet
cd my-wallet
tncli deploy
Contributor Guide
Interested in contributing? Feel free to create issues and pull requests.
There is two main tasks and many TODOs.
Main tasks are - not to use lite-client / fift / func. All can be done with python.
There is many TODOs in code - feel free to fix them and create PRs
Features and status
Feature | Status |
---|---|
fift / func / lite-server usage |
|
Easy bootstrap project samples wallet |
|
Deploy-wallet for auto send TON to contracts and tests | |
Add more project samples with advanced usage | |
Compile func to build/ from func/ with files.yaml |
|
Get contract address by tncli address |
|
Auto send TON to init contract address | |
Deploy to mainnet / testnet | |
Project interact after deploy: easily send messages, run getmethods | |
Gas auto calculation for store & deploy | |
Load from hard project structure (example: src/projects/wallet ) |
|
Project tests with runvmcode |
|
Project debug | |
Library support | |
Init Message support (with signature) | |
Run remote contracts locally (get cells from chain and run locally to get error / debug / etc.) | |
Docs for contract creation for beginners | |
Advanced user-friendly docs on fift , func |
|
Commands
All commands could be fined in docs/commands.md
Configuration
Config folder will create on first deploy, all fift / func libs will copy to it, also deploy wallet contract will be created
Deploy process (how it's actually work)
- Check network (testnet, mainnet) configuration locally (in config user folder)
- If no config found - download from URL in config.ini
- Check deploy wallet locally (in config user folder)
- If it's first time - simple wallet will be created in config folder
- Message with wallet address and tips will be displayed (user need to send some TON coin on it)
- If there is no TON in deploy contract - script will exit and notify user to update deployer balance
- Will run tests on
fift/data.fif
/fift/message.fif
(if exist) /fift/lib.fif
(if exist) before creating deploy message- This will check all files are correct
- Also, you can run custom logic - for example create keys in build/
- Will calculate address of contract and display it to user
- Will send money from deploy wallet
- Will deploy your contract
- External message will be created
- Boc will generated
- Will invoke sendfile in lite-client (TODO: use native python lib, not lite-client)
Development
git clone [email protected]:disintar/tncli.git
cd tncli && pip install -e .