새로운 Truffle 프로젝트를 위해 새 디렉터리를 생성합니다. 예제에서는 key/value storage를 구현하는 스마트 컨트랙트를 만들어보기로 합니다. 이를 위해 KVStore라는 디렉터리를 생성합니다.
Truffle 프로젝트를 초기화 합니다.
다음과 같은 디랙터리와 파일이 생성되니다.
다음 명령으로 KVStore 컨트랙트를 생성합니다.
아래와 같이 KVStore.sol 파일이 생성됩니다.
스마트 컨트랙트 작성
Key/Value를 저장하는 set 함수와 Key를 이용하여 저장된 값을 읽어오는 get 함수를 다음과 같이 작성합니다.
설정
컴파일 및 배포를 위해서 truffle-config.js 파일을 수정합니다.
첫 번째로 지갑 설정이 필요합니다. 코드 상에 개인키를 노출하지 않기 위해 dotenv를 사용하고 PRIVATE_KEY는 .env에 다음과 같이 저장합니다. dotenv를 사용할 경우 npm i dotenv 명령을 사용하여 설치를 해주어야 컴파일 시 에러가 발생하지 않습니다.
두 번째로 네트워크 설정을 진행합니다. Metadium Testnet를 사용하기 위해서는 다음과 같이 네트워크 설정을 추가합니다.
마지막으로 컴파일러 설정을 진행합니다. 예제에서는 0.8.21을 사용하였으며, optimizer를 설정하였습니다.
스마트 컨트랙트 컴파일
스마트 컨트랙트 배포
스마트 컨트랙트를 배포하기 전 migrations 디렉토리에 1_deploy_contracts.js 스크립트 파일을 다음과 같이 작성한다.