Waves Smart Contracts에 대해 간략히 알아보자!. Part 1

in #kr-newbie6 years ago (edited)

2018년 9월 10일 Waves Platform은 Smart Contracts를 지원하는 노드의 새 버전을 출시했습니다.
이 글에서는 WhitePaper v1.2를 참고하여 Smart Contract의 정의에 대한 간략한 소개부터 시작하여 Waves Smart Accounts의 개념과 다른 기존 솔루션과 차이점, 해당 솔루션을 사용하여 사용사례에 관해 작성하였습니다.

Smart Contract 정의>
1996년, computer scientist이자 cryptographer인 Nick Szabo가 정의한 Smart Contract의 개념은 “계약을 통해 당사자들이 수행하는 프로토콜을 포함하여 디지털 형식으로 지정된 일련의 약속” “일반적인 계약 조건을 충족하고 악의적이고 우발적인 예외를 최소화하고, 중개자의 필요성을 최소화 하는 것”입니다.

이 개념은 여전히 Smart Contract의 핵심을 차지합니다. 일반적으로 이 개념을 떠올리면 Ethereum을 떠올리지만 Smart Contract를 구현한 여러 가지 블록체인 플렛폼들이 존재합니다.

Smart Contract는 블록체인에서 실행되며 합의 프로토콜에 의해 구동되는 올바른 실행 프로그램을 말합니다.
Contract는 프로그래밍 언어로 표현된 모든 규칙 집합을 인코딩 할 수 있어 Smart Contract는 금융상품, autonomous governance application을 포함한 광범위한 application을 구현할 수 있습니다.

Existing Approaches>

  • Bitcoin
    Bitcoin에는 Turing-incomplete zero-knowledge proof-based language를 사용하여 이해하기 어렵고 표현력이 부족한 scripting system이 포함되어 있습니다.
    이러한 표현력 제한 때문에, 이 시스템의 재사용 시도는 이론적으로 많은 비용과 시간이 소요됩니다.
    예를 들어, Bitcoin scripts를 사용하여 풀 수 있는 많은 작업들은 이해하기 쉽고 덜 기본적인 언어로 프로그래밍 된 경우 좀 더 쉽고 효율적으로 해결할 수 있습니다.

  • Ethereum
    Ethereum의 Solidity와 같은 완전한 Turing-complete language는 몇가지 단점이 있습니다.
    Ethereum은 miner들에게 smart contract에 필요한 계산 비용에 비례하는 특정 수수료를 지불하며, 사용자들은 계약을 체결하기 위해 transaction을 보내면 각 gas unit의 gas limit과 price를 지정해야 합니다.
    블록에 거래를 포함하는 miner는 실행에 필요한 가스의 양에 해당하는 거래 수수료를 받습니다.
    Turing-complete 언어로 작성된 계약의 실행 시간은 항상 결정할 수는 없으므로 transaction에 대해 지불해야하는 gas의 양을 결정할 수 없습니다.
    그로 인해 , 계약 실행 시 미리 정한 gas limit보다 많은 gas가 필요한 경우, 실행은 예외로 종료되고 상태는 초기 상태로 돌아가지만 gas는 반환되지 않습니다.
    이러한 단점은 계약에 예측할 수 없는 복잡성이 있어 사용자에게 적합하지 않고, “gas” 시스템의 한계를 기반으로한 Ethereum에서 smart contract를 통해 가능한 공격의 분석은 이미 구체화되어 있습니다.
    smart contract는 자산을 이전할 수 있기 때문에 정확한 실행 외에 사용자의 자금을 훔치는 것을 목표로 하는 공격에도 안전해야 합니다.

Waves Approach>

  • About Waves Blockchain
    현재 Waves Blockchain에는 12가지 유형의 트랜잭션이 있습니다.

Waves Smart Contract Blockchain.PNG

  1. 비트코인처럼 input과 output은 없으나, 모든 transaction은 하나의 account에 의해 수행됩니다.
  2. 기본적으로, transaction 정확도는 현재 블록체인 상태와 서명의 유효성에 따라 결정됩니다. JSON의 거래 표현은 다음 그림과 같이 간단합니다.

Waves Smart Contract JSON.PNG

Smart contracts에 다음과 같은 두 가지 유형의 작업을 다루는 것을 주된 목표로 하였습니다.

  1. multi-signature와 atomic swap과 같은 간단하고 잘 정의된 작업
  2. custom logic과 거의 무한한 가능성을 가진 Dapps

Smart contracts의 일반적인 사용사례로는 Ethereum 네트워크에서 계약의 대부분은 ERC20 표준 토큰입니다.
그러나 Waves의 경우 핵심은 lightweight 토큰을 사용하기 때문에 관련이 없으며, 토큰을 발행하는 contract를 작성할 필요가 없고, 사전 정의된 유형의 transaction 하나만 보내면 됩니다.

Smart contracts를 구현함에 따라 Multi-signatures, atomic swaps, escrows 등의 작업 유형을 다루기로 결정했고, 이것은 coin에 대한 보호와 Waves의 data transaction을 좀더 정교하게 구현하는 기능을 제공할 것이며, Oracle data를 블록체인에 게시하는 방법이 될 것입니다.

Waves Smart contract는 다음 두 가지를 실현했습니다 :

  1. Smart account language 구현
  2. Turing-complete programming language가 내장된 블록체인에서 다양한 decentralized applications과 smart contract 개발을 위한 foundational layer

Smart Accounts>
Waves는 Turing-complete languages로 수행될 수 있는 대부분의 사용사례를 처리할 수 있는 Turing-incomplete language인 Bitcoin script을 보다 일반화하여 개발하였습니다.
Waves 노드의 최신 버전에서는 smart account를 사용하도록 활성화합니다.
기본적으로 smart account는 연결된 transaction checking script가 있는 account입니다.
즉, account가 모든 transaction 확인하기 전에 유효성을 확인할 수 있도록 account에 첨부된 script입니다.

  • Facts
  1. Waves의 기존 account는 블록체인으로 전송하기 전에만 transaction에 서명할 수 있었으나, smart account는 transaction을 다음 블록에 포함시키기 위해 제출하기 전에 script에 정의된 특정 요구 사항을 충족시키는지 확인할 수 있습니다.
    즉, account가 모든 transaction을 확인하기 전에 유효성을 검사할 수 있습니다.
  2. 그것은 사용자가 자신의 account에서 script를 사용하여 모든 발신 transaction을 제어할 수 있게 하여 2FA, multi-signature, escrow, oracles를 포함한 다른 상황에서 smart accounts의 이점을 얻을 수 있게 할 것입니다.
  3. transaction 유효성 검사 절차에 대해 다른 규칙을 설정할 수 있습니다. 예를 들어, 사용자는 블록 높이가 N보다 크거나 사용자가 서명 유효성 검사 없이 해당 주소의 모든 transaction이 유효하다는 규칙을 설정 할 수 있습니다.
  4. Smart accounts는 transaction type 및 field, 높이 또는 타임스탬프, 블록체인의 데이터(Data transaction 및 Oracles)를 기준으로 예측되어 집니다.
  5. Smart accounts는 추가 gas나 기타 비용 없이 미리 정의된 수수료로 일반 거래의 가격에 실행할 수 있다는 것입니다.
    Waves는 사전에 복잡성을 미리 예측할 수 없고 정해진 단계로 실행할 수 없는 구조를 피하기 위해, 사용자에게 재귀 및 무한대의 중첩 루프 함수를 작성하는 기능을 제공하지 않습니다. 이로 인해 정적으로 실행 시간을 예측할 수 있어 가능하게 됩니다.

Use-cases>

  • 보안 사용 사례
    multi-signature accounts가 있습니다. multi-signature account는 공동 소유 또는 공유해야하는 계약이나 여러 당사자간의 계약을 체결 등 모든 계약에 유용합니다. 서로를 신뢰하지 않는 상대방은 필요한 수의 참가자 서명을 받을 때까지 블록체인에서 일정량의 토큰을 동결할 수 있습니다.

  • Oracles와 같은 통합 사례
    Oracle은 특정 데이터 소스에 대한 연결을 담당하는 application입니다. 외부 공급된 데이터를 일련의 transaction으로 블록체인에 배치할 수 있지만 블록체인의 데이터를 변경할 수는 없습니다. 만약 이 자료가 적절한 조건을 충족한다면 다른 사람들은 주어진 계좌로부터 돈을 받을 수 있습니다.

  • Crowdfunding 사례
    거래소에서 토큰을 판매하는 것과 같은 대량 판매 프로세스는 smart contract 없이 Waves DEX에서 신뢰 없이 실행될 수 있습니다. 그러나 ICO 이후 smart accounts는 투자자들에게 도움을 줄 수 있습니다. 예를 들면, 그들은 escrow, token holder voting 등을 통해 자금 사용을 통제하는 사용될 수 있습니다.

reference>


Waves Smart Contracts의 첫번째 글입니다.
다음(Waves Smart Contracts에 대해 간략히 알아보자!. Part 2)에는 Waves Smart Contracts의 gas와 fees와 implementation에 대한 글을 작성할 예정입니다.
읽어주셔서 감사합니다.

!보팅은 항상 맞보팅입니다!

Sort:  

Congratulations @sbpark! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made your First Vote
You made your First Comment
You got a First Reply

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

SteemitBoard Ranking update - Steem Power, Followers and Following added

Support SteemitBoard's project! Vote for its witness and get one more award!

수고 많으셨습니다~~
좋은 정보 공유 감사해요.
보팅하고 갈게요!

감사합니다.
아직 Waves의 완벽한 이해가 안되다보니 글도 많이 딱딱해서 읽기 불편하셨을 것 같네요.
더 공부해서 지속적 수정과 새로운 글 업뎃이 있을테니 자주 놀러와주세요ㅎㅎ