Skip to content

Tezos support in Truffle is experimental. Give it a spin, and help us out by filing issues on Github.

Writing External Scripts

Often you may want to run external scripts that interact with your deployed contracts, or in some cases deploy new contracts! Truffle provides an easy way to do this, bootstrapping your contracts based on your desired network and connecting to your Tezos client automatically per your project configuration.

Command

To run an external script, perform the following:

$ truffle exec <path/to/file.js>

Refer to Truffle Commands Reference for more information about this command, such as what options it accepts.

File structure

In order for external scripts to be run correctly, Truffle expects them to export a function that takes a single parameter as a callback:

module.exports = function(callback) {
  // perform actions
}

You can do anything you'd like within this script, so long as the callback is called when the script finishes. The callback accepts an error as its first and only parameter. If an error is provided, execution will halt and the process will return a non-zero exit code.

artifacts.require()

Note that the artifacts.require() function available in migrations is also available to you within external scripts. Here's an example of how you might use it to deploy a new contract outside of Truffle's migration system:

Filename: ./script.js

const SimpleStorage = artifacts.require("SimpleStorage");

module.exports = callback => {
  SimpleStorage.new(3).then((instance) => {
    console.log("New address:", instance.address);
    callback();
  }).catch(callback);
};

The output would look like this:

$ truffle exec ./script.js
Using network 'development'.

New address: KT1JZ8JQ4ziGCsQJcTegNcByYGW32ZhXD217