Skip to content

Minimal Substrate node configured for smart contracts via pallet-contracts.

License

Notifications You must be signed in to change notification settings

ragi96/substrate-contracts-node

 
 

Repository files navigation

substrate-contracts-node

This repository contains Substrate's node-template configured to include Substrate's pallet-contracts ‒ a smart contract module.

This repository is tracking Substrate's master.

It contains a couple of modifications that make it unsuitable for a production deployment, but a great fit for development and testing:

  • The unstable features of the pallet-contracts are enabled by default (see the runtime/Cargo.toml).
  • The consensus algorithm has been switched to manual-seal in #42. Hereby blocks are authored immediately at every transaction, so there is none of the typical six seconds block time associated with grandpa or aura.
  • If no CLI arguments are passed the node is started in development mode by default.
  • With each start of the node process the chain starts from genesis ‒ so no chain state is retained, all contracts will be lost! If you want to retain chain state you have to supply a --base-path.
  • For pallet_contracts::Config we increased the allowed contract sizes. This avoids running into CodeTooLarge when uploading contracts during development. See the comment in runtime/src/lib.rs for more details.

If you are looking for a node suitable for production see these configurations:

Installation

Download Binary

The easiest way is to download a binary release from our releases page and just execute ./substrate-contracts-node --dev.

Build Locally

Follow the official installation steps to set up all Substrate prerequisites.

Afterwards you can install this node via

cargo install contracts-node --git https://github.com/paritytech/substrate-contracts-node.git --force --locked

The --locked flag makes the installation use the same versions as the Cargo.lock in those repositories ‒ ensuring that the last known-to-work version of the dependencies are used.

The latest confirmed working Substrate commit which will then be used is b0777b4.

Usage

To run a local dev node execute

substrate-contracts-node --dev

A new chain in temporary directory will be created each time the command is executed. This is the default for --dev chain specs. If you want to persist chain state across runs you need to specify a directory with --base-path.

Show only Errors and Contract Debug Output

To have only errors and contract debug output show up on the console you can supply -lerror,runtime::contracts=debug when starting the node.

Important: Debug output is only printed for RPC calls or off-chain tests ‒ not for transactions!

See our FAQ for more details: How do I print something to the console from the runtime?.

Connect with frontend

Once the node template is running locally, you can connect to it with frontends like Contracts UI or Polkadot-JS Apps and interact with your chain.

About

Minimal Substrate node configured for smart contracts via pallet-contracts.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 95.6%
  • Dockerfile 2.5%
  • Shell 1.9%