[스마트 컨트랙트] 솔리더티 맛보기

in #coinkorea7 years ago (edited)

슬라이드1.PNG

안녕하세요 tmkor입니다. 스마트 컨트랙트란 무엇일까요? 그리고 어떠한 일을 할 수 있을까요? 어떻게 작성해야 될까요? 다양한 질문에 대한 기술적인 해답을 찾아가는 과정, [스마트 컨트랙트] 입니다.

오늘은 이더리움의 스마트 컨트랙트 작성 언어인 솔리더티 예제를 살짝 보도록 하겠습니다.

솔리더티(solidity)란?

솔리더티는 이더리움의 스마트 컨트랙트 작성 프로그래밍 언어입니다. 솔리더티의 특징은 다음과 같습니다.

  1. 고수준 프로그래밍 언어 (어느정도 사람이 읽을 수 있다는 뜻 입니다. 기계어보단 C언어 같은 고수준 언어와 유사합니다.)
  2. 이더리움 API 내장 (이더리움을 다루는 명령어가 탑재되어 있습니다.)
  3. 작은 크기의 바이트 코드
  4. EVM에서 구동

이 중 사용자를 위한 부분은 1번 고수준 프로그래밍 언어이며, 나머지 3가지 특징은 실제 구동과 연관되어 있습니다. 특히 작은 크기의 바이트 코드는 매우 중요한데요, 스마트 컨트랙트 코드는 블록 체인에 동기화되기 때문입니다. 전세계의 수천대의 노드에 동일한 코드가 복제되어 있는데, 그 용량이 작으면 작을 수록 좋겠지요?

가장 간단한 솔리더티 코드

백문이 불여일견 코드를 한번 보도록 하겠습니다.

슬라이드9.PNG

비트코인 스크립트에 비하면 엄청나게 읽기 쉽습니다! 아마도요.. 위 코드는 가장 간단한 솔리더티 코드를 보여주고 있습니다. 하는일은 매우 간단합니다. storedData에 숫자를 저장(set)하거나, 읽는(get) 것을 가능하게 합니다. 메모리에 저장한다는 것은 간단해보이지만, 사실 우리가 사용하는 모든 프로그램은 저장한다찾아간다 2가지 기능만 있으면 구현이 가능합니다.

"참 쉽죠?" 하고 끝나면 밥로스 선생님과 동일하겠지요? 한번 구동해 봅시다. 솔리더티는 온라인에서 바로 돌려볼 수 있습니다. 돈(이더)이 없어도 쉽게 구동 가능하니 걱정마세요!

리믹스에서 코드 구동

리믹스는 자바스크립트로 구현한 온라인 솔리더티 IDE입니다. IDE는 통합 개발 환경으로 코드 편집, 실행, 디버깅이 가능한 프로그램입니다. 어디한번 해볼까요?

https://remix.ethereum.org <- 이 사이트에 방문하시고..

1. 코드를 입력하고

pragma solidity ^0.4.0;
contract SimpleStorage {
    uint storedData;
    function set(uint x) {
        storedData = x;
    }
    function get() constant returns (uint retVal) {
        return storedData;
    }
}

2. 스마트 컨트랙트를 생성(Create)합니다.

  • 트랜잭션 비용으로 10785, 실행비용으로 42189 가스가 소비되었네요. 가스가 부족하면 멈춥니다.
  • 생성이 끝나면 스마트 컨트랙트 주소가 생성됩니다.
  • 스마트 컨트랙트의 조작은 주소 + 명령으로 수행합니다.
    • 스마트 컨트랙트 프로그램은 이더리움 블록체인에 기록되고 특정 주소에 매핑됩니다. 해당 주소에 트랜잭션을 발생시켜서 스마트 컨트랙트를 이용하는겁니다.

3. set 명령으로 값을 대입해봅시다.

  • 숫자를 입력하고 set을 클릭하면 됩니다.
  • 트랜잭션 비용으로 41686 가스, 실행 비용으로 20158 가스가 소비되었네요.
  • 이더리움 블록체인에는 스마트 컨트랙트 주소로 명령어와 인자를 가지는 트랜잭션이 기록됩니다. 수수료는 물론 가스죠.
    • 트랜잭션을 써서 블록체인으로 전달하는 과정은 http의 request와 동일하다 보시면 됩니다.

4. get 명령으로 값을 읽어봅시다.

  • get을 클릭하면 됩니다.
  • set한 값이 나오네요!
  • 트랜잭션 비용으로 21668 가스, 실행 비용으로 396 가스가 소비되었습니다.
  • (당연하지만) 쓰는 비용보단 읽는 비용이 저렴합니다.

자, 엄청 간단한 스마트 컨트랙트를 살펴 보았습니다. 이더리움 블록체인 위에는 수많은 토큰 화폐들이 올라와 있습니다. 예를 들면 EOS, QTUM, GNT, GNO, 등등 엄청 많죠. 이러한 토큰 화폐를 위한 스마트 컨트랙트는 어떻게 만들면 될까요?

Sort:  

Cheer Up!

  • from Clean STEEM activity supporter

Thanks for your comment!

좋은정보 감사합니다. 리스팀합니다^^

댓글 리스팀 감사드립니다! 팔로할께요~~

좋은 정보 가르쳐주셔서 감사합니다

댓글 감사드립니다. ^^

Congratulations @tmkor! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

블록 체인에 관심이 생겨서 스팀잇에 가입하였는데..

관련 정보를 많이 있네요^^

좋은 공부가 될 것 같습니다

감사합니다!! ㅎㅎ


근데, 댓글 먼저 달고 글을 천천히 읽어보는데.. ㅠㅠ

프로그램을 잘 모르니 어렵네요^^;;

Congratulations @tmkor! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the total payout received

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Coin Marketplace

STEEM 0.18
TRX 0.15
JST 0.028
BTC 63597.74
ETH 2476.06
USDT 1.00
SBD 2.53