A Smart Way to Operate Smart Contracts on EVM Based Blockchains like Ethereum
vvisp
Korean version: README-ko.md
The easiest smart contract development framework and command line interface on EVM based blockchain.
Simple and fast smart contract deployment and execution with a single command line
![]()
VVISP is sponsored by the EF(Ethereum Foundation).EF gave the grants to HAECHI LABS at ethcon korea 2019.

Key Benefits
- Improving Environment of Blockchain Service Development - Reducing Operation Time of Blockchain Service Development - Shortening the Learning Curve of Developers Who Are Not Familiar with BlockchainTable of Contents
Description
CLI tool easy to use for developers who are not familiar with blockchain.: Smart contracts in the blockchain are uncommon development areas. There are many things that developers are unfamiliar with DApp development. Even if you create a contract by referring to several references, there is an entry barrier to learn how to deploy and how to use smart contracts. vvisp is a command line interface (CLI) tool designed to reduce the learning curve.
(1) Deploying a contract with a single line of command
: Deploying smart contracts to a blockchain is very complex. In order to deploy a contract, you must write your smart contract deployment codes as well as create smart contracts. A developer needs to consider deploying multiple smart contracts in order for DApp. vvisp defines deployment target as a simple configuration file and then deploys smart contracts by considering the dependencies automatically with a single line of command instead of hundreds lines of code.
(2) Executing the contract function with one command line
: Developers had to study the library, call the function, and manually write the function call code to execute the function of a contract. This is a big entry barrier for developers who are unfamiliar with smart contract development. However, vvisp is designed to execute a specific function of a contract with a single command line and to receive results without complex processes.
| Contributors: Please see the Contributing section of this README. | | --- |
Install
Install Node.js first. Then, install npm and
$ npm install -g @haechi-labs/vvisp or install yarn and $ yarn global add @haechi-labs/vvisp
Usage
If you want to see sample repository, see here.
1. Start your project
$ vvisp init my-project $ cd my-project
$ npm install #or yarn install
You don't have to do ` $ npm init or $ truffle init. We supports environment for truffle and it will make package.json automatically.
See details_ for
$ vvisp init.
2. Make your Contracts at
contracts/
Now, you can use
gen-script, compile and flatten commands.
3. Set
vvisp-config.js file
Please set environment variables in
vvisp-config.js file.
Example <pre><code class="lang-javascript">const MNEMONIC = 'YOUR_MNEMONIC';
module.exports = { networks: { development: { url: 'URLTOETHEREUM_NODE', gasLimit: 6721975, } }, compilers: { solc: { version: '0.5.8' } }, from: { // or from: 'YOURPRIVATEKEY' mnemonic: MNEMONIC, index: 0 }, };</code></pre>
See more information at here for more information about
vvisp-config.js. Now you can use deploy-contract command.
4. Set
service.vvisp.json file
Please set information about your DApp service in
service.vvisp.json.
Example <pre><code class="lang-json">{ "serviceName": "Haechi", "variables" : { "exampleVarName": 123 }, "contracts": { "ContractKeyName1": { "path": "./contracts/Contract1.sol", "name": "Contract1", "constructorArguments": [ "${contracts.ContractKeyName1.address}", "${variables.exampleVarName}" ], "initialize": { "functionName": "initialize", "arguments": ["argument1", "argument2"] } }, "ContractKeyName2": { "path": "./contracts/Contract2.sol", "name": "Contract2", "initialize": { "functionName": "initialize", "arguments": ["argument1", "argument2"] } } } }</code></pre> See more information at here for more information about
service.vvisp.json. Now you can use deploy-service command.
Please see CONFIGURATION.md to configure your project.
Run
$ vvisp --help for more details about functions of vvisp.
Commands
Please see linked documentation below:
- init: Start your project
- compile: Compile solidity contract files
- deploy-contract: Deploy contract
- deploy-service: Deploy service of your contracts
- gen-script: Generate javascript APIs interacting with smart contract on blockchain
- console: Provides a console environment that can invoke contracts interactively
- flatten: Flatten several contract files in one file
Architecture
<p align="center"><img src="./images/[vvisp]logical-view.png" width="550px" height="300px"></p>
vvisp communicates with main-net, test-net through rpc, and helps to develop, upgrade, test, compile and control the user’s current version of the DApp service. vvisp supports truffle test framework.
<p align="center"><img src="./images/[vvisp]module-view.png" width="630px" height="450px"></p>
- vvisp
vvisp consists of vvisp-utils and vvisp.
- vvisp-utils
vvisp-utils provides several useful functions for use with vvisp or vvisp-sample.
- vvisp
vvisp performs the core logic of vvisp.
- vvisp-sample
vvisp-sample is the boilerplate package generated by vvisp init command.
- contractApis
It is generated automatically by the
vvisp gen-script command and provides a javascript library that allows you to easily execute deployed projects.
- configuration
These are the configuration files needed for vvisp to work and test such as
vvisp-config.js, service.vvisp.json, state.vvisp.json
- test
These are test cases of user-written contracts.
- contracts
The contracts that the user write himself.
Contributing
Thank you for considering to join this project! We always welcome contributors :)
Notes on project main branches:
master: Stable, released version dev`: Work targeting stable release To contribute, please see CONTRIBUTING.md.
Contact
License
MIT