Block Chain Development

이더리움 기반 Dapp 개발 연습 #2 (컴파일)

PON_Z 2022. 1. 23. 16:52

- 이번에는 솔리디티로 간단한 프로그램을 짜 볼것이다.

 

 

 

- 이후 파워쉘(관리자)에서 임시로 디렉토리를 생성한 뒤, truffle init 한다.

 

 

- intelij에서 해당 디렉토리를 open 해주고 contract 디렉토리에 동일한 이름으로 sol 파일을 만든다.

 

 

- 컴파일 테스트를 위해 아래 코드를 입력한다.

pragma solidity ^0.5.4;    // 버전 프라그마 (해당 버전 아래에서는 컴파일링 안된다는 뜻)

contract HelloWorld {
    string public greeting;

    // 생성자
    constructor(string _greeting) public {
        greeting = _greeting;
    }

    function setGreeting(string _greeting) public {
        greeting = _greeting;
    }

    function say() public view returns(string) {
        return greeting;
    }
}

- 파워쉘에서 truffle compile로 컴파일을 하려 했는데 에러가 발생했다.

 

- 아무래도 솔리디티 버전이 바뀌며넛 constant가 view 또는 pure로 바뀐듯 하다. 이 외에도 인자에 memory를 추가해      줘야 한다고 해서 그것도 추가하였는데도 에러가 또 떴다 -_- 원인을 찾아보니 버전 명시 문제여서 버전 프라그마를      수정해 주었다.

 

pragma solidity >=0.4.24 <=0.5.4;   // 버전 프라그마 (해당 버전 사이에 있어야 컴파일 된다는 뜻)

contract HelloWorld {
    string public greeting;

    // 생성자
    constructor(string memory _greeting) public {
        greeting = _greeting;
    }

    function setGreeting(string memory _greeting) public {
        greeting = _greeting;
    }

    function say() public view returns(string memory) {
        return greeting;
    }
}

 

- 드디어 컴파일이 되었다!

 

- 결과물은 bulid/contract에 json 파일로 생성된다. abi과 bin에 해당되는 bytecode가 생성되었다.

  truffle을 사용하면 개발자가 abi와 bin을 손데지 않고도 잘 개발할수 있다고 한다.

 

- 여기서 abi는 application binary interface로 어플에서 스마트 컨트랙트의 메소드를 호출하기 위한 명세의 역할이고

  bytecode는 이더리움에 배포가 된다. 

 

 

 

 

ref) https://www.inflearn.com/course/dapp/dashboard

 

728x90