Setting Up The Venom Smart Contract Development Environment
The first thing to do before starting the smart contracts development
If you are using macOS on Apple M1, follow these commands before starting tutorial
//InstallRosseta2softwareupdate--install-rosetta//StartashellunderRosetta2arch-x86_64zsh//Ifyoualreadyhaveinstallednodejs,//reinstallthex64versionofNode.jsnvmusesystemnvmcacheclearnvmuninstall16# or the version you need, but not less than 14nvminstall16# or the version you need, but not less than 14nvmuse16# or the version you need, but not less than 14
All locklift commands must be performed from under the Rosetta2 shell
To improve your development experience, you may need some tools and utils to compile, deploy and test your Venom contracts. Locklift is a development environment like Hardhat or Truffle.
The configuration file is called locklift.config.js. Here's the basic layout for Venom blockchain networks:
import { LockliftConfig } from"locklift";import { FactorySource } from"./build/factorySource";import { SimpleGiver, GiverWallet } from"./giverSettings";declare global {constlocklift:import("locklift").Locklift<FactorySource>;}constLOCAL_NETWORK_ENDPOINT="http://localhost/graphql";constconfig:LockliftConfig= { compiler: { version:"0.61.2", }, linker: { version:"0.15.48", }, networks: {// Configuration of 'local' network can be left unchanged local: { connection: { group:"localnet", type:"graphql", data: { endpoints: [LOCAL_NETWORK_ENDPOINT], latencyDetectionInterval:1000, local:true, }, },// This giver is default local-node giverV2 giver: {// Check if you need provide custom givergiverFactory: (ever, keyPair, address) =>newSimpleGiver(ever, keyPair, address), address:"0:ece57bcc6c530283becbbd8a3b24d3c5987cdddc3c8b7b33be6e4a6312490415", key:"172af540e43a524763dd53b26a066d472a97c4de37d5498170564510608250c3", }, tracing: { endpoint:LOCAL_NETWORK_ENDPOINT, }, keys: {// Use everdev to generate your phrase// !!! Never commit it in your repos !!! phrase:"action inject penalty envelope rabbit element slim tornado dinner pizza off blood", amount:20, }, }, }, mocha: { timeout:2000000 }};exportdefault config;
Let's go through each parameter
compiler.version The version of the solidity compiler binary
linker.version The version of the TVM-linker binary
networks Specifies which networks are available for deployment and testing
networks.[NETWORK_NAME].keys.phrase If you leave this field value empty - a new random seed will be generated each time you're running locklift. Or specify it explicitly - fill the phrase field with a mnemonic phrase.
Run The Local Node
You need to have a docker runtime to continue with this guide
If Locklift is like a Hardhat development environment tool, then local-node is Ganache-like a local blockchain that is designed for dapp debugging and testing.