Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

everdev

tonlabs147Apache-2.01.7.0TypeScript support: included

Everscale Dev Environment

Free, TON, Ever, EverScale, Freeton, Dev, Development, TONOS, EVEROS

readme

EverDev

Everdev is a Node.js package with CLI interface that allows to set up developer environment and develop on TVM compatible blockchains (Everscale, Venom, TON, Gosh, etc).

Quick Start

Get quick help in our telegram channel: Channel on Telegram

<figure><figcaption></figcaption></figure> <figure><figcaption></figcaption></figure>

NPM package

Use-cases

  • Easily manage(install, update) all the core tools, such as Solidity/C++ Compilers, Evernode-SE, tonos-cli
  • Configure networks (including Local Blockchain, Developer Network, Everscale (main) network): add, configure giver contract;
  • Manage keys: add, remove
  • Work with blockchain from CLI

Content table

Installation

Prerequisites

Using NPM

npm i -g everdev

If you see an EACCESS error when you try to install a package globally on Mac or Linux, please see this instruction

Using pre-compiled binaries

You can download precompiled binaries for your platform from the latest release. After download you need to create directory if it does not exists.

For linux/macos:

mkdir -p ~/.everdev/bin

Then unpack everdev from archive into this folder.

For windows:

md $env:HOMEDRIVE$env:HOMEPATH\.everdev\bin

Then move downloaded binary as everdev.exe into this folder.

To make it possible to run everdev from any folder, you need to update the system PATH environment variable.

For linux/macos:

echo 'export PATH=~/.everdev/bin:$PATH' >> ~/.profile && source ~/.profile

For windows run PowerShell and execute this line:

[System.Environment]::SetEnvironmentVariable("PATH", "$env:HOMEDRIVE$env:HOMEPATH\.everdev\bin;$([System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::User))", [System.EnvironmentVariableTarget]::User)

After trying to run everdev on macos you can see the error: "everdev" cannot be opened because the developer cannot be verified. Open your computer System Preferences > Security & Privacy > Privacy. Here, you should see an option to click "Allow Anyway" next to the "everdev" application in question.

Using docker

Select a base image that provides GLIBC ver. 2.29 or higher if you want to use the Evedev Solidity compiler like ubuntu:20.04:

docker run -it --rm ubuntu:20.04
# apt update &&  apt upgrade -y && apt install -y curl
# curl -L https://github.com/tonlabs/everdev/releases/download/1.3.1/everdev-linux.tgz  --output everdev-linux.tgz
# tar xvf everdev-linux.tgz
# mv everdev /usr/local/bin/

Update

npm r -g everdev
npm i -g everdev

Command Line Interface

Components are downloaded and installed automatically for the target platform upon the first request.

General command syntax

everdev <tool> <command> ...args

Some tools (network, signer, contract, js) and commands have short aliases. For example instead of using everdev network list you can use everdev n l and even shorter everdev nl.

Solidity Compiler

Controller for Everscale Solidity compiler.

Solidity Compiler Driver

Controller for sold - Everscale Solidity compiler driver

C/C++ Compiler

Controller for Everscale Clang Compiler.

Network Tool

Controller for network management.

Signer Tool

Controller for keys management.

Contract Management Tool

Controller for working with smart contracts.

Evernode Simple Emulator (local blockchain)

Controller for Local Node emulator.

Debot Browser

Controller for DeBot browser.

TestSuite4

Controller for TestSuite4 testing framework.

tonos-cli

Controller for tonos-cli tool management.

EverDev can be extended with other tools following the instructions of integration.

Cookbook

Quick Start

Get started with essential Everscale Development Tools with Quick Start guide.

Work with contracts

Learn how to deploy and call your smart contracts with EverDev: Work with contracts.

Work with DevNet

Read how to deploy and configure your own Giver in DevNet in a separated guide: Working with DevNet.

Create controller

Find out how to create your own controller for EverDev: Create controller.

View controller info

Learn how to view all available controllers information: View controller info.

Troubleshooting

If you encountered any problem try to seek the solution in Troubleshooting Notes. If it didn't help - please, ask in our telegram channel.

EverDev Extensibility

TON Dev Environment is an integration point for development tools related to Everscale Blockchain.

There are two kind of software connected to EverDev:

  • Development tools such as a compilers, networks, debuggers and so on.
  • User Interaction services such as an IDE plugins, CLI, GUI applications etc.

Learn more about creating your own controller: Creating Controller

changelog

Release Notes

All notable changes to this project will be documented in this file.

[1.7.0] - 2023-05-04

New

  • Added new type of giver - MsigV2

Fixed

  • The sold install command did not list the installed version in the registry.

[1.6.1] - 2023-03-28

New

  • Added new option --base-path <path> for solidity compile command (required solc 0.67.0 or later).

    Use the given path as the root of the source tree instead of the root of the filesystem.

Updated

  • As of solc 0.67.0, the use of the "now" keyword is deprecated. The "block.timestamp" keyword should be used instead.
  • The contracts/HelloWallet.sol contract has been updated to require solc 0.67.0 or later to compile.
  • The sample contract created with everdev sol create now requires solc 0.67.0 or later to compile.

[1.6.0] - 2023-02-13

New

  • Added support of Signature ID on the networks with CapSignatureWithId capability enabled.
  • Added new option everdev contract deploy --workchain to specify in which workchain to deploy a contract.
  • everdev contract decode-tvc command renamed to everdev contract decode-stateinit.
  • Add a reference to stable solc and sold versions to the output of the everdev sold version and everdev sol version commands.

Fixed

  • Double error messages generated by everdev sol compile command.
  • Error: unrecognized option '-i which occurred when using a solidity compiler version below 0.57.0
  • The "constructor" function excluded from the list of callable functions
  • Incorrect GiverV1.abi.json file has been replaced with the correct one.
  • Set the se network as the default network if there is no default network.
  • Set the seGiver giver as the default signer if there is no default signer.

[1.5.1] - 2022-12-23

New

  • Include network giver account details in network info <network> command.
  • Giver's signer must be specified explicitly (default network signer will not be used).
  • Include EverNode SE Default Giver Keys to signers repository.
  • Solidity compiler accepts file name without extension.
  • network giver parameters signer and type are mandatory.

Fixed

  • Some contract commands failed with Wait for operation failed message in case when account does not exist.
  • Changing SE GraphQL port did not affect network endpoints related to this SE container.
  • Contract commands that expects contract file name as an arg will report more detailed error message in case when contract file does not exist.

[1.5.0] - 2022-12-23

New

  • Support for *.tsol extension in Solidity compiler.
  • Ability to specify contract arguments from json files in form of @file or @file@field.

[1.4.1] - 2022-11-16

Fixed

  • Versions of dependency packages have been increased: @eversdk/core and @eversdk/appkit.\ The old ones caused unclear error messages.

  • Added an error message if the network/registry.json configuration file is corrupted.

[1.4.0] - 2022-10-19

New

  • sold - Solidity Compiler Driver - version management added. Try it with everdev sold install.

  • Added a new everdev sol compile option -i [ --include-path ] path/to/dir to make an additional source directory available to the default import callback.\ Use this option if you want to import contracts, whose location is not fixed in relation to your main source tree, e.g. third-party libraries installed using a package manager. Separate different paths with a comma, no space allowed.

    Example: everdev sol compile Contract.sol -i path1/folder1,path2/folder2

  • Added new command evedev update.\ This command updates everdev to the latest version and is technically an alias for npm update -g everdev.

Fixed

  • Fixed incorrect error message when "deploy contract" and "execute contract" commands are executed for a non-existing (acc_type = nonExist) account.

  • Fixed incorrect error message when a user added a new signer with the name of an existing one.

[1.3.1] - 2022-09-21

New

  • Build with new version sdk 1.37.2

[1.3.0] - 2022-08-31

New

  • Added command everdev network credentials, to set credentials for network authentication, with options:
    --project, -p     Your project ID
    --access-key, -k  Your secret or JWT token
    --clear           Clear saved credentials (mutually exclusive with other options)

Fixed

  • Fixed everdev contract decode-tvc --help output.

[1.2.2] - 2022-07-12

Fixed

  • Fixed the address calculation error that occurred when running "everdev contract deploy" and entering initial data in dialog mode.

[1.2.1] - 2022-06-30

Fixed

  • Fixed an uninformative error message when it occurred in a spawned process.

[1.2.0] - 2022-05-27

New

  • Add new option --type to the everdev network giver command.

    If you compiled your own giver, everdev may refuse to use it because it doesn't know what interface it implements.

    You can specify which interface your giver implements by specifying the --type = GiverV1 | GiverV2 | GiverV3 | SecureMultiSigWallet | SetcodeMultisigWallet

  • Add new sub command "everdev contract decode-data file [options]". This command decodes data from a contract deployed on the network. For example:

    $ everdev contract decode-data HelloWallet.abi.json  -a 0:783abd8b2cbcc578397d8d15ae8293688a87da15a052a993cfb51cbd3e6452a3
    Decoded account data: {
        "data": {
            "_pubkey": "0x95c06aa743d1f9000dd64b75498f106af4b7e7444234d7de67ea26988f6181df",
            "_timestamp": "1653482490973",
            "_constructorFlag": true,
            "timestamp": "1653482492"
        }
    }
  • Add new sub command "everdev contract decode-tvc file". This command decodes TVC into code, data, libraries and special options. For example:

    $ everdev contract decode-tvc HelloWallet.tvc
    Decoded TVC: {
      "code": "te6ccPKo3tM/AfhDIbnytCD4I4ED6KiCCBt3QKC58rT4Y9MfAfgjvPK50x8B2zzyPAYDA0rtRNDXScMB+GYi0NcLA6k4ANwhxwDjAiHXDR/yvC==',
      "code_hash": "7a588d25395138fa12f9fd358b2383922b80a2dcbc973cd437723b4d96c9ae13",
      "data": "te6ccgEBAgEAKAABAcABAEPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg",
      "data_hash": "55a703465a160dce20481375de2e5b830c841c2787303835eb5821d62d65ca9d",
      ----%<------------------------
      "compiler_version": "sol 0.61.0"
    }

Improved

  • For "everdev sol compile" and "everdev clang compile" commands, you can specify a variable number of input files, for example:
      $ everdev sol compile Contract1.sol Contract2.sol Contract3.sol  # It works
      $ everdev sol compile *.sol  # It works too

[1.1.2] - 2022-05-12

Fixed

  • Updated Ever OS Cloud endpoints.
  • Updated the C++ contract example for use with the latest (7.7.35) clang compiler.

[1.1.1] - 2022-02-11

Fixed

  • An error "TON Client binary bridge is not set" that occurred when using js wrap command as a module

Improved

  • Command parameter parsing when using tondev as a module. Now, when some unrecognized option is found, an error occurs. Previously unrecognized option was silently skipped.

[1.1.0] - 2022-02-09

New

  • If a new version of everdev is available, then the user who executes any everdev command will be informed about it (no more than once a day)

New

  • sol info command shows the file path for installed components

Fixed

  • sol compile command no longer suppresses warnings

[1.0.0] - 2021-12-24

New

The utility has a new name everdev!

Install it with npm i -g everdev

If you already have tondev installed and want to clone its configuration, copy $HOME/.tondev into the $HOME/.everdev directory.

[0.11.2] - 2021-12-15

Fixed

  • sol ast command options

[0.11.1] - 2021-12-07

NEW

  • sol ast command that parses a ton-solidity file and creates an abstract syntax tree (AST) to the output directory

Fixed

  • ssh2 transitive dependency on dockerode

[0.11.0] - 2021-12-03

NEW

  • Structure can be passed as an argument of a function call, for example:
    tondev contract run shapes.tvc \
      --address 0:540c1837656674d548c934258ddec9b5fd11b543da977b0016c14b5650bc7eb5 \
      --input '{ "point": { "color": "red", "center": { "x": 1, "y": 2 } } }'

Improved

  • Information about the installed version of stdlib has been removed from the output of the tondev sol version command. Now its version is always equal to the compiler's version.
  • Remove checking of .sol extension in compile command. Any extension can be used now.

[0.10.5] - 2021-11-11

NEW

  • Added the ability to compile SafeMultisigWallet for Linux platform. The size of the compiled contract will be different from the original due to a different linker, but the compiler is the same

Install the appropriate compiler, linker, and stdlib versions:

tondev sol set -c 0.21.0
tondev sol set -s 0.21.0
tondev sol set -l 0.1.21

Now you can compile SafeMultisigWallet contract:

tondev sol compile SafeMultisigWallet.sol
ls -l SafeMultisigWallet.tvc
-rw-rw-r--. 1 4430 Nov 11 22:16 SafeMultisigWallet.tvc

[0.10.4] - 2021-09-27

  • tondev contract run-local now checks the contract state before execution and generates user friendly error, if contract does not exist or is in uninit or frozen state.

Improved

  • Dependabot cannot update ssh2 to a non-vulnerable version

[0.10.3] - 2021-09-27

Fixed

  • Dependabot cannot update ssh2 to a non-vulnerable version

  • tondev sol set can now install any existing binaries by version number, not just one of the last ten

[0.10.2] - 2021-09-24

Fixed

  • tondev signed add <seed-phase> didn't store seed phrase in signer registry.

[0.10.1] - 2021-09-17

Fixed

  • Build with new typescript version
  • lib-node's bridge crashed on client.close()

[0.10.0] - 2021-09-10

New

  • Added new option --code, -c for solidity compiler to save *.code file. Example: tondev sol compile --code hello.sol

[0.9.0] - 2021-08-20

New

  • Extraton Debot Browser supported! Now you can test your debots in web with ease - even offline. Just run SE and Extraton Debot Browser together. They perfectly fit!

Improved

  • We changed the prepay logic of deploy operation. Account is not prepaid automatically from the giver any more. Now you need to specify -v <VALUE> explicitly. Get predictible behaviour and results!
  • Error messages in case of insufficiant balance were improved.

Fixed

  • An error that occurred when a contract was deployed to an account with a positive balance less than the default (10 tokens) and Giver was not set properly.

[0.8.1] - 2021-07-26

Fixed

  • problem with contracts/ folder

[0.8.0] - 2021-07-26

New

  • value option of the contract commands can accept values with "t" suffix. Such values will be properly converted to nano tokens.
  • run-signer option of the the contract commands allows to sign messages with alternative keys different from signer meanwhile address is still calculated from signer parameter (or from default signer). It should be useful for run-local (with None value) so that it is not needed to specify address explicitly any more.
  • tondev commands that produce files (e.g. sol create) create output folders if required.
  • tondev signer add command's secret option can accept a path to the keys file.
  • tondev se set options image and container allow use existing docker images and containers to register SE instances.
  • tondev se delete deletes registered SE instance from tondev SE registry.
  • --version or -v or -V global option prints current tondev version.

Fixed

  • "tondev clang set --compiler" didn't change installed compiler version https://github.com/tonlabs/tondev/issues/42
  • tondev did not not fill the command args with default values when user ran commands programmatically.
  • tondev info stopped if one of the tools failed.

Improved

  • In case of errors with giver tondev prints new detailed errors describing that there is a giver problem (not in users contract).
  • Component version table prints "not installed" text if some component is missing. Footnote about on demand installation is added.
  • Account balance check is added before deploy.
  • All commands that require abi file (e.g. js wrap) now accepts any input file name.
  • tondev se version now prints version from the latest to the eldest order.
  • tondev sol compile now hides linker output in case of success.

[0.7.4] - 2021-06-25

New

  • Column used was added to signer list with reference to the giver that uses this signer;
  • Column giver was added to network list with information about giver's contract and signer.
  • Printed tables now supports multiline cell values.

Fixed

  • "Error: Signer not found:" in case when the default signer has upper letters in name.
  • Giver didn't use default signer. From now the giver uses default signer when User calls the network giver command without --signer option.

[0.7.3] - 2021-06-03

Fixed

  • Incorrect parsing initial data params with options --data, -d.

[0.7.2] - 2021-06-02

Fixed

  • Update README with information about how to install tondev after download binaries

[0.7.1] - 2021-06-01

Fixed

  • GitHub Action

[0.7.0] - 2021-05-26

New

  • Added new option --output-dir, -o for solidity compiler to store *.abi.json and *.tvc files in a separate directory. Example: tondev sol compile hello.sol -o ~/assets
  • Created standalone portable binaries for windows, macos, linux

[0.6.0] - 2021-04-28

New

  • ts4 TestSuite4 framework for contract testing is supported: install, manage versions, create test template, run tests.

[0.5.0] - 2021-04-23

New

  • clang controller for C++ compiler:
    install, compile with 1 command, manage versions, etc.
  • signer controller for signer registry management:
    generate keys, import keys and mnemonics, specify default signer, etc.
  • network controller for network registry management:
    add networks, configure network giver, specify default network, etc.
  • contract controller for contract management:
  • get contract info summary, top up balance, deploy, run, run-local, run-executor
  • tondev js wrap generates code and codeHash fields in addition to tvc.
  • tondev contract info prints code hash.
  • tondev info command prints a summary information from all controllers.
  • short aliases for controllers, commands and options.
    For example instead of using tondev network list
    you can use tondev n l and even shorter tondev nl.

Fixed

  • tvm_linker downloads always even if it's up to date.

[0.4.0] - 2021-03-25

New

  • --force option for sol update and sol set commands. If set then components will be reinstalled event if their version hasn't changed.
  • js wrap command generates JS wrapper file from ABI file and optional TVC file.
  • help command prints documentation about variants of command options, like here

[0.3.3] - 2021-03-16

Fixed

  • Solidity stdlib didn't update.

[0.3.2] - 2021-03-12

Fixed

  • Support versioning at solidity components

[0.3.0] - 2021-03-11

New

[0.2.0] - 2021-02-26

New

New

  • Solidity functionality added:
    • Create a hello world contract in one click
    • Install compiler in the background upon the first request
    • Compile and link a contract in one click
    • Get solidity compiler version
    • Download the latest compiler
  • SDK functionality added:
    • Create an empty Node.js project with the latest SDK dependencies and index.js script with main client object creation