Skip to content

Latest commit

 

History

History
245 lines (173 loc) · 9.21 KB

README-ko.md

File metadata and controls

245 lines (173 loc) · 9.21 KB

vvisp

English version: README.md

CircleCI NPM Coverage Status standard-readme compliant Conventional Commits lerna

vvisp은 EVM 기반 블록체인에서 가장 사용하기 쉬운 스마트 컨트랙트 개발 CLI 도구이자 프레임워크입니다.

단 한 줄의 명령어로 쉽고 빠른 스마트 컨트랙트 배포와 실행

VVISP is sponsored by the EF(Ethereum Foundation). EF gave the grants to HAECHI LABS at ethcon korea 2019.

Key Benefits

  • 블록체인 서비스 개발 환경 개선
  • 블록체인 서비스 개발 및 운영 시간 단축
  • 블록체인이 익숙하지 않은 전세계 개발자들의 러닝커브 단축

Table of Contents

Description

블록체인이 익숙하지 않은 개발자들도 쉽게 사용할 수 있는 CLI 도구

: 블록체인의 스마트 컨트랙트는 기존에 없던 생소한 개발 분야입니다. 그만큼 개발자에게 DApp 개발은 익숙하지 않은 부분이 많습니다. 여러 레퍼런스를 참고하여 컨트랙트를 작성하였다해도 이를 어떻게 배포하는지, 어떻게 사용해야하는지에 대한 장벽이 존재합니다. vvisp은 이러한 불편함을 줄이고자 만든 CLI(Command Line Interface) 도구입니다.

(1) 명령어 한줄로 컨트랙트 배포하기

: 스마트 컨트랙트를 블록체인에 배포하는 것은 개발자들에게 낯선 과정입니다. 컨트랙트를 배포하기 위해서는 스마트 컨트랙트를 작성하는 것 뿐만 아니라 스마트 컨트랙트 배포 코드를 직접 작성해야만 합니다. 또한 DApp을 구성하는 여러 개의 스마트 컨트랙트를 배포하기 위해 개발자는 배포 순서 역시 고려해야 했습니다. vvisp은 단순한 설정 파일 형태로 배포 대상들을 간단히 정의하고, 명령어 한줄로 코드 작성 없이 배포 순서를 고려하여 컨트랙트를 배포합니다.

(2) 명령어 한줄로 컨트랙트 기능 실행하기

: 기존에는 어떤 컨트랙트의 기능을 실행하기 위해서 라이브러리를 공부하고, 함수를 호출하고, 함수 호출 코드를 수동으로 작성해야 했습니다. 이는 스마트 컨트랙트 개발에 익숙하지 않은 개발자들에게 큰 진입장벽으로 작용합니다. 그러나 vvisp은 일련의 작업들 없이 명령어 한줄을 통해 컨트랙트의 특정 기능을 실행하고, 결과를 받아올 수 있도록 설계되었습니다.

Contributors: Please see the Contributing section of this README.

Install

Node.js가 설치되어야 합니다. 이후, npm를 설치하신 후

$ npm install -g @haechi-labs/vvisp

을 실행하거나 yarn을 설치 후

$ yarn global add @haechi-labs/vvisp

을 실행하여 주세요.

Usage

vvisp을 사용한 예제 프로젝트를 참고하시려면 이곳을 참고해주세요.

1. 프로젝트 생성

$ vvisp init my-project
$ cd my-project

$ npm install #or yarn install

$ npm init 혹은 $ truffle init을 실행하지 않아도 됩니다. vvisptruffle을 지원하는 환경을 설정해주며 package.json을 자동 생성합니다.

$ vvisp init에 대한 자세한 정보는 이곳 을 참고하시기 바랍니다.

2. contracts/ 폴더에 컨트랙트를 생성 및 작성

이제, gen-script, compile 그리고 flatten 명령어를 사용할 수 있습니다.

3. vvisp-config.js 설정

vvisp-config.js에 환경 변수들을 설정해 주세요.

Example

const MNEMONIC = 'YOUR_MNEMONIC';

module.exports = {
  networks: {
    development: {
      url: 'URL_TO_ETHEREUM_NODE',
      gasLimit: 6721975,
    }
  },
  compilers: {
    solc: {
      version: '0.5.8'
    }
  },
  from: { // or from: 'YOUR_PRIVATE_KEY'
    mnemonic: MNEMONIC,
    index: 0
  },
};

vvisp-config.js에 대한 자세한 정보는 이곳을 참고해 주세요. 이제 deploy-contract 명령어를 사용할 수 있습니다.

4. service.vvisp.json 작성

배포할 DApp 서비스의 컨트랙트에 대한 정보를 service.vvisp.json에 작성해주세요.

Example

{
  "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"]
      }
    }
  }
}

service.vvisp.json에 대한 자세한 정보는 이곳을 참고해 주세요. 이제 deploy-service 명령어를 사용할 수 있습니다.

CONFIGURATION-ko.md에서 환경 설정에 대한 자세한 내용을 참고하세요.

$ vvisp --help을 실행하여 vvisp에서 사용되는 기능들을 참고해주세요.

Commands

명령어와 연결된 문서를 참고바랍니다:

  • init: 프로젝트를 생성합니다.
  • compile: 컨트랙트 파일들을 컴파일합니다.
  • deploy-contract: 컨트랙트를 배포합니다.
  • deploy-service: 컨트랙트로 이루어진 서비스를 배포합니다.
  • gen-script: 스마트 컨트랙트와 통신할 수 있는 자바스크립트 api들을 생성합니다.
  • console: 컨트랙트와 상호작용할 수 있는 콘솔 환경을 제공합니다.
  • flatten: 여러 컨트랙트 파일을 하나로 합칩니다.

Architecture

vvisp은 rpc를 통해 main-net, test-net과 통신하며, 유저의 현 버전 DApp 서비스를 배포, 업그레이드, 테스트, 컴파일 등을 돕습니다. vvisp은 truffle test framework를 지원합니다.

  • vvisp

    vvisp은 크게 vvisp-utils 와 vvisp으로 이루어져 있습니다.

    • vvisp-utils

      vvisp-utils 은 vvisp 과 vvisp-sample에서 사용하는 유용한 기능들을 제공합니다.

    • vvisp

      vvisp의 핵심 로직입니다.

  • vvisp-sample

    vvisp-sample은 vvisp init 명령어로 생성된 boilerplate 패키지입니다.

    • contractApis

      vvisp gen-script 명령어를 통해 자동 생성된 자바스크립트 라이브러리로 배포된 프로젝트를 쉽게 사용하게 돕습니다.

    • configuration

      vvsip의 프로젝트에는 vvisp-config.js, service.vvisp.json, state.vvisp.json와 같은 설정파일들입니다.

    • test

      유저가 작성한 컨트랙트 테스트 코드들이 존재할 디렉토리입니다.

    • contracts

      이곳에서 컨트랙트들이 작성됩니다.

Contributing

프로젝트 참여를 고려해주셔서 감사합니다! 해당 프로젝트는 모든 분들께 열려있습니다 :)

프로젝트에서 사용되는 큰 브랜치입니다:

  • master: 배포된 안정적인 버전
  • dev: 안정적인 버전을 위해 작업할 브랜치

기여를 위해 CONTRIBUTING-ko.md를 참고해 주시면 감사하겠습니다.

Contact

License

MIT