본문 바로가기

Programing/Solidity10

[Solidity] 트러플(Truffle) 설치 및 컨트렉트(Contract) 배포 이번 포스트에서는 트러플(Truffle) 설치 및 트러플 콘솔을 이용한 스마트 컨트렉트 배포에 대해서 다루고자 한다. 트러플의 개념과 설치법, DApp 프로젝트에서 트러플 설정에 대해 알아본 뒤, 터미널에서 트러플 콘솔을 통해 컨트렉트 컴파일과 배포 과정을 공유한다. 트러플(Truffle)이란? 트러플(Truffle)은 이더리움 기반 DApp 개발에 유틸리티 기능을 제공받을 수 있는 일종의 블록체인 프레임워크이다. 작성된 스마트 컨트렉트 코드에 대한 컴파일(Compile), 배포(Deploy), 테스트(Test) 기능을 지원받을 수 있다. 해당 서비스에 대해 공식 문서에서는 "이더리움 가상머신(EVM)을 사용하여 블록체인 개발에 다양한 개발 환경, 테스트, 자산 파이프 라인 기능을 제공한다."고 명시되어.. 2022. 3. 16.
[Solidity] Storage와 Memory 솔리디티로 스마트 컨트렉스 작성 시, 변수는 Storage 혹은 Memory 영역에 저장된다. 컴퓨터로 비유를 하면, 데이터가 하드디스크(Disk)에 저장되는 것과 메모리(Ram)에 저장되는 것과 비슷하다. Storage 스마트 컨트렉트에서 스토리지(Storage)라고 하면, 블록체인 네트워크의 블록을 의미한다. 스토리지에 저장되는 데이터는 곧 블록체인에 저장되는 것과 같다. 컨트렉트가 실제로 블록체인 네트워크에 배포되면 해당 데이터는 영구적으로 블록체인 안에 저장된다. 대표적으로 상태 변수(State Variable)의 데이터들이 스토리지 영역을 사용한다. 컨트렉트에 선언된 전역 변수들은 storage로 선언되어 있지 않더라도 스토리지에 저장된다. 만약, 상태 변수가 아닌 변수, 예를 들어 지역 변수(.. 2022. 3. 15.
[Solidity] payable 옵션 컨트렉트 코드에는 일반적으로 코인에 대한 전송(transfer) 및 받기(receive)에 대한 코드가 포함되어 있다. 이더(Ether) 혹은 이더 계열 토큰이 주소(address)에서 주소(address)로 이동된다. 그렇지 않을 코드도 있지만 만약 특정 주소에 토큰을 전달하고 싶거나 저장하고 싶다면 payable 옵션이 추가되어야 한다. 바꿔 말하면, payable로 선언되어야만 토큰을 주고 받을 수 있다. payable 사용 예시 아래 예제코드에서는 payable 옵션이 주소(address) 리스트를 선언할 때, 생성자(contructor)를 정의할 때, 함수 파라미터로 address를 지정할 때 사용된다. address 리스트 경우 해당 컨트렉트에서 이 리스트가 모두 토큰을 주고 받는 주소가 되어.. 2022. 3. 15.
[Solidity] receive 함수 이전 포스트에서 fallback 함수에 대해 알아보았다. 이번 포스트에서는 fallback 함수와 관련된 receive 함수를 알아보자. Receive 함수 솔리디티 0.6.0 버전 이후 fallback 함수는 fallback과 receive로 나뉘어졌다. 본래 하나였던 기능이 세분화되어 두개로 분리되었다고 이해하면 된다. 해당 버전 이후 fallback 함수는 컨트렉트의 호출 함수가 확인되지 않을 때, 함수에서 이더를 보낼 때(transfer) 디폴트 함수로 동작한다. 그리고 receive 함수는 오직 이더를 받을 때 디폴트 함수로 실행된다. Receive 함수의 특징 receive() external payable { // ... } 해당 함수의 구성은 위와 같으며 특징은 다음과 같다. externa.. 2022. 3. 12.