본문으로 바로가기

화폐기능이 중심인 비트코인에 비해서 이더리움은 프로그래밍에 의한 스마트계약 작성의 차별점이 있습니다.

스크립트 기반의 아주 제한적인 프로그래밍이 가능했던 비트코인에 비해 이더리움의 스마트 계약은 Solidity 언어를 사용하여 Turing complete 형태의 완전한 프로그래밍이 가능합니다.


Solidity는 홈페이지에서 다음과 같이 정의되어 있습니다.


"Solidity is a contract-oriented, high-level language for implementing smart contracts"


즉, Solidity 언어는 스마트계약을 구현하기 위한 계약지향의 하이레벨 프로그래밍 언어로 위에서 언급한것처럼  "Turing complete" 하기 때문에 비트코인과 같이 제한적이지 않고 생각할수 있는 모든것을 프로그래밍할수 있고 다음과 같이 다양한 개발환경을 지원합니다


 

  • Remix
    Browser-based IDE with integrated compiler and Solidity runtime environment without server-side components.
  • IntelliJ IDEA plugin
    Solidity plugin for IntelliJ IDEA (and all other JetBrains IDEs)
  • Visual Studio Extension
    Solidity plugin for Microsoft Visual Studio that includes the Solidity compiler.
  • Package for SublimeText — Solidity language syntax
    Solidity syntax highlighting for SublimeText editor.
  • Etheratom
    Plugin for the Atom editor that features syntax highlighting, compilation and a runtime environment (Backend node & VM compatible).
  • Atom Solidity Linter
    Plugin for the Atom editor that provides Solidity linting.
  • Atom Solium Linter
    Configurable Solidty linter for Atom using Solium as a base.
  • Solium
    Linter to identify and fix style and security issues in Solidity.
  • Solhint
    Solidity linter that provides security, style guide and best practice rules for smart contract validation.
  • Visual Studio Code extension
    Solidity plugin for Microsoft Visual Studio Code that includes syntax highlighting and the Solidity compiler.
  • Emacs Solidity
    Plugin for the Emacs editor providing syntax highlighting and compilation error reporting.
  • Vim Solidity
    Plugin for the Vim editor providing syntax highlighting.
  • Vim Syntastic
    Plugin for the Vim editor providing compile checking.



이번 포스팅에서는 가장 간단하게 이전에 설치한 Mist를 사용하여 간단한 스마트계약을 하나 작성해보도록 하겠습니다.

Mist의 컨트랙트 메뉴를 선택하면 다음과 같이 컨트랙트 설치화면이 나옵니다.



여기서 신규 컨트랙트 설치를 선택하면 송신처와 작성할 Solidity 코드가 나오며, 하기의 에디터 창에서 만들고자 하는 스마트계약의 코드를 작성하면 됩니다.



그럼 다음과 같이 간단한 스마트계약 코드를 작성하도록 하겠습니다.

하기 코드는 Solidity 홈페이지의 샘플코드를 참고로 하였습니다.

소스코드를 작성한후 설치할 컨트랙트에서 Simple Storate를 선택한후 설치를 선택한후, Geth의 mining 을 시작하면 작성한 컨트랙트가 이더리움 블록체인상에 실행가능상태로 올라가게 됩니다.



설치가 완료되면 컨트랙트 메뉴상에 설치한 컨트랙트가 보여지게 되고, 설치한 컨트랙트를 선택하면 다음과 같이 실행화면이 보여집니다.


Select function 에서 작성한 Set 함수를 선택한후 value 100을 입력하고 실행하면 컨트랙트가 실행되며 mining 상태라면 다음과 같이 입력한 값 100이 보여집니다.



위에서 작성한 컨트랙트는 이더리움상에서 동작되는 스마트 컨트랙트의 작성과 동작방법을 설명하기 위한 아주 간단하 코드입니다.

위 코드를 기반으로 스마트 컨트랙트의 작성방법을 알아보시기 바라고, 이후에는 Mist가 아닌 solidity 프로그래밍을 위한 IDE인 Remix를 사용하여 작성을 하도록 하겠습니다.