MEVerse Dev Docs
MEVerse Dev Docs (KR)
MEVerse Dev Docs (KR)
  • Welcome
  • MEVerse 개요
    • MEVerse Core Design
    • Proof of Formulation
    • Customizable Multi Chain
    • Level Tree
    • Block Redesign
  • 시작하기
    • 노드 실행
    • 계정에 MEV 추가하기
    • 개발 도구 설치하기
    • 스마트 컨트랙트 배포
    • 배포 확인
  • MEVerse Network Structure
    • 제너레이터 노드 (Generator Node)
    • 옵저버 노드 (Observer Node)
    • 시드 노드 (Seed Node)
    • 퍼블릭 노드 (Public Node)
    • 브릿지 노드 (Bridge Node)
  • 스마트 컨트랙트
    • Solidity - Smart Contract Language
    • IDE and Tools
      • Remix
      • Truffle
      • Hardhat
      • MEVerse Scan(Explorer)
      • Connecting MetaMask
    • Sample Contracts
    • Testing Guide
  • 미버스 채굴 생태계
  • 미버스 공식 링크
    • 미버스 웹사이트
    • 미버스 백서
    • 미버스 미디움 블로그
    • 미버스 공시 및 업데이트(쟁글)
    • 미버스 코인마켓캡
Powered by GitBook
On this page
  • 프로젝트 디렉토리 생성
  • 트러플 초기화
  • 간단한 솔리디티 스마트 컨트랙트 작성
  • 마이그레이션(Migration) 스크립트 수정
  • 트러플을 사용하여 스마트 컨트랙트 배포
  1. 시작하기

스마트 컨트랙트 배포

이제 MEVerse에 스마트 컨트랙트를 개발하고 배포할 준비가 되었습니다. Solidity를 컴파일하고 배포할수 있는 가장 대중적인 Truffle Framework 기준으로 작성합니다.

프로젝트 디렉토리 생성

우선, 소스 코드가 위치할 디렉토리를 생성하세요.

$ mkdir meverse-test
$ cd meverse-test

트러플 초기화

컨트랙트 배포를 위해 트러플을 초기화하세요.

$ truffle init

간단한 솔리디티 스마트 컨트랙트 작성

meverse-test/contracts 디렉토리에 MEVerseGreeter.sol을 생성합니다.

$ cd contracts
$ touch MEVerseGreeter.sol
$ vi MEVerseGreeter.sol

MEVerseGreeter.sol에 다음 코드를 작성하세요.

// SPDX-License-Identifier: MIT
pragma solidity ^0.5.6;
contract Mortal {
    /* 주소 타입의 소유자(owner) 변수 정의 */
    address payable owner;
    /* 이 함수는 초기화 시점에 실행되어 컨트랙트 소유자를 설정합니다 */
    constructor () public { owner = msg.sender; }
    /* 컨트랙트에서 자금을 회수하는 함수 */
    function kill() public payable { if (msg.sender == owner) selfdestruct(owner); }
}

contract MEVerseGreeter is Mortal {
    /* 문자열 타입의 변수 greeting 정의 */
    string greeting;
    /* 이 함수는 컨트랙트가 실행될 때 작동합니다 */
    constructor (string memory _greeting) public {
        greeting = _greeting;
    }
    /* 주(Main) 함수 */
    function greet() public view returns (string memory) {
        return greeting;
    }
}

마이그레이션(Migration) 스크립트 수정

hdwallet-provider를 활용하여 컨트랙트를 배포합니다. 배포를 하기 위해 library를 설치합니다.

$ npm install @truffle/hdwallet-provider
  • truffle의 Dashboard를 활용하여 작성한 컨트랙트도 배포가 가능합니다. Dashboard의 자세한 내용은 하기 사이트를 참고하세요.

truffle-config.js에 MEVerse Testnet network 정보를 수정합니다.

// truffle-config.js
const HDWalletProvider = require("@truffle/hdwallet-provider");
...
networks: {
    MEVerseTestnet: {
      provider: () =>
        new HDWalletProvider({
          privateKeys: [
            "adf...583a9", // 컨트랙트를 배포할 계정 private key
          ],
          providerOrUrl: "https://rpc.meversetestnet.io",
        }),
      network_id: 4759, // MEVerse testnet chain id
    }
}

트러플을 사용하여 스마트 컨트랙트 배포

$ truffle migrate --network MEVerseTestnet
Compiling your contracts...
===========================
> Compiling ./contracts/MEVerseGreeter.sol
> Artifacts written to /truffle_sample/build/contracts
> Compiled successfully using:
   - solc: 0.5.16+commit.9c3226ce.Emscripten.clang



Starting migrations...
======================
> Network name:    'MEVerseTestnet'
> Network id:      4759
> Block gas limit: 30000000 (0x1c9c380)


1_initial_migration.js
======================

   Deploying 'MEVerseGreeter'
   --------------------------
   > transaction hash:    0xe1f6fad3f5121cb1448750113f25e20228c4b9e800d0a7cda8ca04ff464257f2
   > Blocks: 0            Seconds: 0
   > contract address:    0xeb7A1483E3408Af19231262643672719CcFc6E17
   > block number:        27778152
   > block timestamp:     1668760128889501
   > account:             0x19368fCd2F0EE8d2C788b754F6504FD49de449E7
   > balance:             191907.1
   > gas used:            223381 (0x36895)
   > gas price:           1000 gwei
   > value sent:          0 ETH
   > total cost:          0.223381 ETH


   > Saving migration to chain.
   > Saving artifacts
   -------------------------------------
   > Total cost:            0.414624 ETH


Summary
=======
> Total deployments:   1
> Final cost:          0.414624 ETH

Previous개발 도구 설치하기Next배포 확인

Last updated 2 years ago

Use Truffle Dashboard :

https://trufflesuite.com/docs/truffle/how-to/use-the-truffle-dashboard/