2022년 12월 1일 목요일

truffle, solidity, 이더리움을 활용한 스마트 계약 개발환경 설치 및 구현 방법

이 글은 truffle, solidity를 활용한 스마트 계약 개발환경 구축 및 구현 방법을 간략히 설명한다.

머리말
일반적으로 계약은 다자간 요구사항들을 만족하는 컨센서스(합의) 절차와 가치 교환 알고리즘이 포함된 프로그램이다. 다음 그림은 이를 잘 보여준다.
일반적인 계약 구조

솔리디티는 계약을 디지털화하기 위한 유명한 스마트 계약 언어 중 하나이다.
스마트 계약 개발 언어들

여기서는 솔리디티 언어를 사용해 간단한 스마트 계약 프로그램을 개발하고, 이를 배포해 본다.

개발환경 설치
다음과 같이 개발환경을 설치한다.
sudo npm install -g truffle
truffle init

스마트 계약 개발
다음과 같이 솔리디티 언어로 코딩한다. 자세한 내용은 여기를 참고한다. 
// SPDX-License-Identifier: UNLICENSED
pragma solidity >=0.7.0 <0.9.0;

contract Hero{
    address owner;
    string hero;
    constructor(string memory _hero)
    {
        owner=msg.sender;
        hero=_hero;
    }
    
    function setHero(string memory _hero)public
    {
        require(msg.sender==owner,"Not the owner");
        hero =_hero;
    }
    function getHero() public view returns(string memory)
    {
        return hero;
    }
}

truffle-config.json 파일을 다음과 같이 생성한다.
module.exports = {
  compilers: {
    solc: {
      version: "0.8.1",   
    }
  },
};

다음과 같이 컴파일한다.
truffle compile


다음과 같이 컴파일된 결과를 build폴더에서 확인할 수 있다. 

배포를 위해 이더리움 시뮬레이터인 Ganache를 다운로드한다.


다음과 같이 실행 권한으로 파일을 수정한다.
chmod +x ganache-2.5.4-linux-x86_64.AppImage 

해당 파일을 실행하고, 퀵스타트 버튼을 클릭한다. 10개의 월렛이 리스트될 것이다.

배포를 위해, truffle-config.js 파일을 다음과 같이 업데이트한다.
module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*"
    }
  },
  compilers: {
    solc: {
      version: "0.8.1",   
    }
  },
};

레퍼런스

댓글 없음:

댓글 쓰기