Solidity
이 장에서는 Solidity 언어와 개발환경에 대해서 설명합니다.
Solidity는 이더리움 상태 내에서 계정의 동작을 제어하는 프로그램인 스마트 컨트랙트를 구현하기 위한 객체 지향 고급 언어입니다. Solidity는 EVM(Ethereum Virtual Machine)에서 동작하도록 설계된 C++, Python 및 JavaScript의 영향을 받은 중괄호 타입의 언어입니다. Solidity는 정적으로 유형이 지정되며 다른 기능 중에서 상속, 라이브러리 및 복잡한 사용자 정의 유형을 지원합니다.
Solidity를 사용하면 투표, 크라우드 펀딩, 블라인드 경매 및 다중 서명 지갑과 같은 용도의 계약을 생성할 수 있습니다.
개발환경 (IDE)
Solidity를 지원하는 환경은 다양합니다. 브라우저 기반의 Remix부터 많이 사용되는 IDE 도구인 IntelliJ, Visual Studio 등에서 Solidity Plugin을 설치하면 사용이 가능합니다.
Remix 사용법
https://remix.ethereum.org 로 접속하면 다음과 같습니다. contracts 디렉터리에 Storage.sol, Owner.sol, Ballot.sol 세가지의 예제 스마트 컨트랙트가 보여지게 되며, 새로 작성하려면 이를 선택하여 지우고 새 파일을 생성하면 됩니다.
다음과 같은 예제 스마트 컨트랙트를 작성할 수 있습니다. 예제 스마트 컨트랙트는 get()
함수를 통해 count 값을 읽어올 수 있고, inc()
, dec()
함수를 통해 count 값을 올리거나 내리는 기능을 제공합니다.
코드가 작성되면 솔리디티 컴파일러 화면에서 맞는 컴파일러 버전을 선택한 후 컴파일을 할 수 있습니다.
Deploy & Run Transactions 화면에서 배포하려고 하는 환경을 선택하고 스마트 컨트랙트를 배포하여 테스트를 해볼 수 있습니다. 아래 그림은 Remix에서 제공하는 "Injected Provider - Metamask"를 사용하여 WEMIX3.0 테스트넷에 배포하는 예입니다.
MetaMask를 사용하는 경우 다음과 같이 WEMIX3.0 테스트넷을 추가하여야 합니다. WEMIX3.0 테스트넷의 Gas fee가 이더리움과 다르므로 전송할 때 변경해주어야 합니다. Max fee를 100 GWEI로 Max priority fee를 100.000000001 GWEI로 변경해주면 됩니다.
네트워크 추가와 가스비 설정과 관련한 자세한 내용은 Use MetaMask를 참고하십시오.