3 분 소요

저 또한 공부하고 있어 틀린 정보가 있을 수도 있고 글이 불편할 수도 있습니다. 문제가 될 시 즉시 삭제 조치하도록 하겠습니다. 댓글이나 메일 주세요.

솔리디티(Solidity)란?

솔리디티(Solidity)는 이더리움 블록체인에서 사용되는 스마트 컨트랙트를 작성하기 위한 정적타입(statically-typed)의 프로그래밍 언어이다. 솔리디티는 2014년 8월에 Gavin Wood 에 의해 처음으로 제안되었으며 제안 이후 이더리움 프로젝트의 Christian Reitwiessner 가 이끄는 솔리디티팀이 개발했다.

스마트 컨트랙트는 블록체인에서 실행되는 프로그램으로 계약을 자동으로 수행하고 이를 블록체인에 기록한다. 솔리티디를 사용하여 스마트 컨트랙트를 작성하게 되면 이더리움 가상 머신인 (Ethereum Virtual Machine, EVM) 에서 실행된다. 필자는 Remix VM에서 실행했다.

솔리디티는 Gavin Wood의 설계대로 ECMAScript 문법을 기반이며 이는 기존 웹 개발자는 친숙하다. 솔리디티는 IDE(통합 개발 환경)인 Remix를 제공하며, Remix를 사용하면 브라우저상에서 솔리디티 코드를 작성하고, 컴파일하여 스마트 컨트랙트를 배포할 수 있다.

솔리디티는 이더리움 블록체인에서 스마트 컨트랙트를 작성하는 데 필수적인 언어이며, 이더리움 블록체인 생태계에서 매우 중요한 역할을 한다. 따라서 솔리디티에 대한 이해는 이더리움 생태계에 대한 이해를 높이는 데 큰 도움이 된다.

Solidity라는 스마트 컨트랙트용 프로그래밍 언어와 Remix라는 웹 기반 IDE(Integrated Development Environment)를 이용하여 스마트 컨트랙트를 작성하고, Truffle이나 Hardhat과 같은 프레임워크를 이용하여 DApp을 개발할 수 있다. 이러한 개발 도구와 프레임워크를 통해 누구나 쉽게 이더리움 네트워크상에서 스마트 컨트랙트와 DApp을 개발할 수 있다.

실습 시작

그림 1

우선 Remix - Ethereum IDE 메인 페이지 모습이다. 접속하게 되면 다른 IDE에 비해 복잡하며 입문자가 처음 맞닥뜨리면 당황 할 수도 있을 거 같다. 그런데 vscode를 사용하는 것처럼 크게 다를 게 없다.

그림 2

그림 2에서 빨간 박스 기준 위에서부터 file explorer : 폴더와 스마트 컨트랙트 파일 생성 및 조회할 수 있는 버튼이다. Search in Files : 리믹스에 저장된 파일에 있는 키워드 검색이 가능하다. solidity compiler : 스마트 컨트팩트를 솔리디티 컴파일 버전별로 컴파일이 가능하다. Deploy & run transactions : 컴파일을 완성한 파일을 스마트 컨트랙트 블록체인 네트워크에 배포가 가능하다.

그림 3

그림 3 기준 빨간 박스를 보게 되면 파일을 생성할 수 있는 버튼과 폴더를 만들 수 있는 버튼 깃허브와 연동 할 수 있고 내 파일을 들을 불러올 수 있는 버튼들이 있다.

그림 4

다음은 Hello World 파일을 만든 뒤 Hello World 출력 코드를 작성해 봤다. 확장자(file extension) sol이다. 이렇게 코드를 작성한 뒤 Run 버튼을 누르면 실행이 된다.

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

contract HelloWorld {
    function sayHello() public pure returns (string memory) {
        return "Hello World!";
    }
}

Hello World 출력 코드이며 위에 코드에서 보이는 // SPDX-License-Identifier: MIT를 작성해 줘야 한다.

그림 5

왜 // SPDX-License-Identifier: MIT를 작성해 줘야 하냐면 그림 5를 보면 실행을 한 뒤 2번을 보면 경고창이 띄어져 있다. 3번을 보게 되면 SPDX 라이센어 뭐라고 뜨는 게 쉽게 말해 배포 전에 라이센스를 표기하라는 소리다. SPDX(Software Package Data Exchange) 공동데이터 형식으로 스마트 컨트랙트의 투명성은 소스 코드가 공개되었을 때 완성된다고 한다. 내가 찾는 라이센스가 없다면 다음 주소를 확인해 보는 것도 좋다. -> SPDX IDs

그림 6

그림 7

정확하게 라이센스를 달아주니 초록색으로 변하면서 오류 없이 컴파일되는 것을 볼 수 있다.

그림 8

또한 솔리디티에서 중요한 건 버전(Version Pragma)을 작성해 줘야 한다. 왜 버전을 선언해야 하냐면 새로운 컴파일러 버전이 나와도 기존 코드가 깨지는 것을 방지해야 하며 다른 버전에서 호환되지 않는 불상사를 차단하는 것이며 솔리디티는 꾸준하게 계속 발전 중이기 때문에 버전마다 좀 다르다고 한다.

그림 9

가상 머신 세팅을 완료해 주고 Account에서 계정 주소를 확인한다. 나중에는 다른 코드를 작성하면 생성자 코드에 붙여 넣어야 하는 날도 오기 때문이다. 마지막으로 Deploy를 부르면 배포가 된다.

그림 10

이렇게 되면 이더리움이 줄어든 것을 확인할 수 있고 배포도 된 것을 확인할 수 있다.

그림 11

또한 밑에 뜨는 것을 보면 내가 가스를 얼마나 사용했고 누구한테 보냈는지부터 많은 정보가 나오게 된다.

그림 12

그림 13

마지막으로 string: Hello, World!가 출력된 것을 볼 수 있다. 다음에는 송금 결과를 하는 방법까지 알아보려고 한다.

참고 자료

맨 위로 올라가기

저의 글을 읽어 주셔서 감사합니다. 문제가 있으면 저의 메일로 연락 주시면 감사하겠습니다. 댓글과 피드백 또한 감사합니다.
Thank you for visiting my blog. If you have any problems, please contact me by e-mail. Thanks also for the comments and feedback.

태그: , , ,

카테고리:

업데이트:

댓글남기기