- 이번에는 솔리디티로 간단한 프로그램을 짜 볼것이다.
- 이후 파워쉘(관리자)에서 임시로 디렉토리를 생성한 뒤, 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
'Block Chain Development' 카테고리의 다른 글
이더리움 기반 Dapp 개발 연습 #6 (로직) (0) | 2022.02.05 |
---|---|
이더리움 기반 Dapp 개발 연습 #5 (Truffle React Unboxing) (0) | 2022.01.31 |
이더리움 기반 Dapp 개발 연습 #4 (단위 테스트) (0) | 2022.01.27 |
이더리움 기반 Dapp 개발 연습 #3 (배포) (0) | 2022.01.25 |
이더리움 기반 Dapp 개발 연습 #1 (개발환경 셋팅) (0) | 2022.01.21 |