[스마트 컨트랙트1] 1. 스마트 컨트랙트

adc0612·2022년 10월 21일
0

스마트 컨트랙트

목록 보기
1/4

스마트 컨트랙트

  • 스마트 컨트랙트는 블록체인 네트워크에 호스팅되고 실행되는 프로그램이다.
  • 조건을 지정해두고, 해당 조건이 충족되면 미리 정해둔 계약을 이행하는 방식으로 코드를 작성한다.
  • 탈중앙화된 블록체인에서 실행하기 때문에, 계약 조건이나 이행 내용을 변조하기 어려우므로 해킹 위험이 낮고, 보안비용과 수수료가 절감되며, 계약의 투명성을 보장한다.
  • 블록체인에 올라간 컨트랙트는 네트워크에 참여한 누구라도 확인할 수 있기 때문에 그 거래 내역이 투명하게 공개된다.
  • 코드에 따라 계약이 실행됨을 보장하는 결정론적인 상태(Deterministic State)인 다자간 디지털 계약이다.

스마트 컨트랙트 역사

  • 스마트 컨트랙트의 개념은 1994년 닉 사보(Nick Szabo)에 의해 만들어졌다.

    닉 사보의 스마트 컨트랙트 정의
    "계약 조건을 실행하는 전산화된 트랜잭션 프로토콜"은 "일반적인 계약 조건을 만족하고, 악의적이거나 우발적인 예외를 최소화 하며, 신뢰할만한 중개자의 필요성을 최소화하는 것"을 목표로 한다.

  • 스마트 컨트랙트를 실제로 지원하기 시작한 화폐는 2009년 출시된 비트코인이다.
    • 비트코인의 핵심 기술인 블록체인이 디지털이며, 위조를 방지할 수 있고, 제 3자가 필요하지 않기 때문에 스마트 컨트랙트를 지원할 수 있었다.
    • 비트코인은 Opcode를 사용해 화폐 거래를 위한 제한적인 스크립트만을 작성할 수 있었기 때문에 프로그램 구현시 제약이 많았다.
  • 2015년에 프로그래밍이 가능하고 스마트 컨트랙트를 위한 이더리움이 등장했다.
    • Solidity언어를 통해 스마트 컨트랙트를 위한 코드를 작성하고, EVM(Ethereum Virtual Machine)을 통해 이더리움 블록체인 위에서 코드를 실행시킬 수 있다.
    • 이더리움은 여러 개의 독립적인 스마트 컨트랙트를 동시에 실행할 수 있어서 월드 컴퓨터(World Computer)라고 부른다.

스마트 컨트랙트 동작방식

  • 코드가 블록체인 네트워크에 올라가면, 네트워크는 미리 결정된 조건이 충족되고, 검등된 경우 조건에 따른 액션을 실행한다.
  • 액션은 트랜잭션에 기록되며, 완료된 트랜잭션은 블록체인에 올라간다.
  • 스마트 컨트랙트는 액션이 수행되면 되돌리거나 수정할 수 없다.

스마트 컨트랙트 장점

  • 보안
    스마트 컨트랙트는 분산형 블록체인 인프라 위에서 실행되므로, 한번 스마트 컨트랙트 코드가 블록체인 네트워크에 올라가면 모든 노드가 스마트 컨트랙트 내용과 이행 결과를 가진다. 이로 인해 계약에 대한 중앙화된 공격 지점이 없고, 계약 내용이나 결과를 변조할 위험이 없다.
  • 신뢰성
    스마트 컨트랙트 로직이 조건에 부합해 계약이 이행되면 블록체인 네트워크에 있는 노드들에 의해 여러 번 수행되고 검증되기 때문에, 위변조가 매우 어렵고 정확도가 높다.
  • 공평함
    계약 조건을 공유하고 강제하기 위해 분산화된 블록체인 네트워크를 사용하기 때문에, 수수료를 가져가는 등 영리적 목적의 중개자가 필요하지 않는다.
  • 효율성
    계약 이행을 자동화하기 때문에 계약 당사자들은 수동으로 데이터를 입력하거나, 상대방의 계약 의무 이행 여부 검증하거나, 중개자가 계약을 집행하는지 확인할 필요가 없다.

스마트 컨트랙트 한계점

  • 컨트랙트 배포 이후엔 작동 수정이 불가
    내용을 수정할 수 없다는 것은 장점이 될 수 있고, 반대로 한계점이 될 수 있다.
    만약, 배포한 컨트랙트에 보안 측면에서 허점이 발견될 경우 해킹에 취약할 수 있다.
  • 블록체인 외의 정보를 스스로 취득하지 못한다
    블록체인 내부에 있는 정보 외의 정보는 스스로 취득할 수 없기에, 외부 데이터의 조건 충족을 확인할 때 문제가 발생한다.
    이러면, 제 3자에 의해 직접 데이터를 입력하여야 한다.
    외부 데이터를 가지고 온다고 하더라도, 전달 과정에서 오류가 나거나 악성 코드를 의도해서 입력하는 경우에도 문제가 발생할 수 있다.

스마트 컨트랙트의 실행 비용 (Gas)

이더리움에서 트랜잭션의 결과로 발생하는 모든 연산은 수수료를 요구한다. 이 수수료를 가스(gas)라고 한다.
가스는 트랜잭션 코드에 있는 모든 opcode를 실행하는데 필요한 수수료를 측정하는 데 사용하는 단위다.
Gas price은 가스 당 지불하려고 하는 이더의 양을 의미하며, Gwei라는 단위를 사용한다.

1 ETH = 10^18 wei
1 Gwei= 10^9 wei

Gas limit은 송신자가 지불하고자 하는 가스의 최대값이다.

  • CA에 가스 최대치를 지불하고도 남을 충분한 이더가 들어있는 경우
    트랜잭션은 문제없이 실행된다.
    송신자는 트랜잭션이 완료된 후, 사용되지 않은 가스를 기존 비율로 환불 받는다.

  • 송신자가 트랜잭션을 실행할만한 충분한 가스를 제공하지 않은 경우
    트랜잭션은 OOG 상태가 되며, 실행이 중지된다.
    상태가 변경되었다면, 트랜잭션이 실행되기 이전의 상태로 돌아간다.
    실패한 트랜잭션에 대한 기록이 남으며, 이 기록에서 어떤 트랜잭션이 시도되었고 어디에서 실패했는지 남게 된다.
    EVM은 트랜잭션 실행이 중지되기 전까지 연산을 수행했기 때문에, 연산에 사용된 가스는 환불되지 않는다.

스토리지 수수료

  • 연산을 할 때 뿐만 아니라, 스토리지를 사용할 때도 수수료를 내야 한다.
  • 스토리지의 최종 수수료는 32 바이트 단위에 비례한다.
  • 스토리지가 증가하면 모든 노드에서 이더리움 상태 데이터베이스의 크기가 커지기 때문에 저장되는 데이터의 양을 최대한 적게 유지할 수록 인센티브를 부여한다. 이러한 이유 때문에 만약 트랜잭션이 스토리지에 있는 특정 요소를 지우는 연산을 수행하면, 해당 연산을 수행하는 데에 대한 수수료는 면제하고, 저장 공간을 확보했기 때문에 기존에 요소를 스토리지에 추가했을 때 지불했던 가스를 환불 받는다.

수수료를 지불하는 이유

이더리움은 비트코인과는 달리, 스마트 컨트랙트에서 수행되는 모든 연산에 대해 가스라는 수수료를 부과한다.
수수료를 부과하는 이유는 이더리움 네트워크 위에서 동작하는 스마트 컨트랙트 작업들이 전체 노드에 영향을 미치기 때문이다.

이더리움은 튜링 완전 언어이기 때문에, 튜링 불완전한 비트코인 스크립트와는 달리 반복문을 지원한다.
반복문의 가장 큰 단점은 무한 루프 문제가 일어날 수 있다는 것이다.
만약 악의적인 사용자가 큰 자원을 소모하는 무한 루프 코드가 들어있는 트랜잭션을 실행시킨다면, 트랜잭션은 이더리움 네트워크의 엄청난 양의 자원을 소모하게 될 것이고, 심각하게는 이더리움 네트워크 전체가 멈출 수도 있다.

수수료는 이러한 악의적인 공격으로부터 네트워크를 보호한다.
연산마다 수수료를 부과하면 악의적인 사용자라도 수수료를 지불해야 하므로 쉽게 무한 루프 코드를 실행시킬 수 없다.
의도치 않게 무한 루프를 만든 코드를 실행시키더라도 Gas Limit을 설정해두면 지정해둔 가스를 다 소모하기 전에 실행을 멈출 수 있다.

스마트 컨트랙트를 활용한 새로운 서비스들

금융 상품(DeFi)

  • 탈중앙화 금융(Decentralized Finance)는 스마트 컨트랙트를 활용해 금융 시장, 옵션, 스테이블 코인, 거래소, 자산 관리 등 전통적인 금융 상품과 서비스를 재창조하고, 여러 서비스를 결합하여 새로운 금융 원형을 만들어내는 어플리케이션이다.
  • 스마트 컨트랙트는 사용자의 자금을 에스크로에 보관하고 미리 정해진 조건에 따라 사용자 간에 분배할 수 있도록 한다.
  • Ex. Aave는 스마트 컨트랙트를 사용하여 무허가 및 탈중앙화된 방식으로 대출과 차입을 용이하게 한다.

게임과 NFT

블록체인 기반 게임은 게임 내 액션의 변조 방지를 위해 스마트 컨트랙트를 사용한다.

예시

  • 사용자가 유동성 풀에 자금을 투자한 다음, 이자가 발생하면 금융 시장으로 이동하는 PoolTogether이라는 게임이 있다. 미리 정해진 기간이 지나면 게임이 종료되고 승자에게는 모든 이자가 무작위로 지급되며, 다른 사용자는 예치금을 인출할 수 있다.
  • NFT는 공정한 배포 모델을 가질 수 있으며, RPG 게임은 무작위성을 사용하여 예측할 수 없는 전리품 드롭을 할 수 있어, 모든 사용자가 희귀한 디지털 자산을 얻을 수 있는 공정한 기회를 가질 수 있다.

DAO(Decentralized Autonomous Organization)

  • DAO는 컴퓨터 프로그램으로 인코딩 되고, 조직 구성원들이 통제하며, 중앙 정부의 영향을 받지 않는 규칙들로 구성된 탈중앙화 자율조직으로, 영리 및 비영리 기업을 조직하기 위한 새로운 분산형 비즈니스 모델을 제공한다.
  • 규칙은 코드에 내장되어 있기 때문에 관리자가 필요하지 않으며, 따라서 관료제나 계층적 구조가 없다.

ICO(Initial Coin Offering)

  • ICO는 기업 공개(IPO)와 비슷한 개념으로, 새로운 암호화폐를 만들기 위해 투자자들에게 투자금을 받고, 그 댓가로 코인을 나눠주는 것을 의미한다.
  • 투자자들은 기업이 성공하여 코인에 대한 수요가 증가하여 코인 시세가 오를 것을 기대하고 ICO에 참여하며, 기업은 ICO로 초기 개발 자금을 모아 사업을 성장시켜 코인의 수요를 높이기 위해 노력한다.

브릿지(Bridge)

  • 브릿지는 토큰이나 임의의 데이터 또는 암호화폐를 하나의 체인에서 다른 체인으로 전송할 수 있게 해주는 서비스이다.
  • 두 체인은 서로 다른 프로토콜, 규칙, 거버넌스 모델을 가질 수도 있지만, 브릿지는 양 쪽에서 안전하게 상호 운용할 수 있는 호환가능한 방법을 제공한다.

0개의 댓글