스마트 컨트랙트(Smart Contract)

워뇽쿤·2022년 9월 16일
1

블록체인(BlockChain)

목록 보기
11/13
post-thumbnail

1. 스마트 컨트랙트(Smart Contract)

  • 정의 : 블록체인 기술을 활용해 제3의 인증기관 없이 개인 간 계약이 이루어질 수 있도록 하는 기술
  • 장점
    • 보안
    • 신뢰성
    • 공평함
    • 효율성

2. 비트코인 스마트 컨트랙트

2.1. UTXO (Unspent Transaction Outputs)

  • 정의 : UTXO는 미사용 트랜잭션 출력값 이라는 뜻으로 미지출 거래 출력 이라고도 한다. 사용하지 않은 코인이 담겨있는 각각의 봉투 라고 생각하면 된다. (지갑이랑은 다른 개념)
    • 만약, 내가 다른사람들에게 각각 5BTC, 2BTC, 3BTC 받았다면, 나에게는 10BTC로 한번에 표시 되지만 내부에서는 5BTC 따로 2BTC 따로 3BTC 따로 있으며 누군가에게 다시 전송해야할 시 각각 불러와서 전송하게 된다.
    • 여기서 만약 내가 다른사람에게 5BTC를 전송하게 될 때
      • A : 5BTC 전송 (1개의 UTXO)
      • B : 2BTC + 3BTC (2개의 UTXO)
    • 두개의 방법중 B 방법은 트랜잭션에 더 많은 용량을 소비하므로 더 많은 수수료와, 처리 시간이 좀더 걸린다.
  • 예시
    • 엘리스는 현제 10 BTC를 가지고 있음 (하나의 UTXO에 가지고 있음 (10만원짜리 수표라고 생각하면됨)
    • 밥에게 6BTC짜리 차를 산다고 할 때 (트랜잭션 시)
    • A(6BTC 짜리 UTXO) 와 B(4BTC 짜리 UTXO)로 나누어서 A는 밥에게 B는 엘리스에게 각각 돌아간다.

2.2. 스크립트(Script)

  • 정의 : 비트코인에서 스마트 컨트랙트를 구현하는 언어
    • 역폴란드 표기법으로 작성된 스택 기반 튜링 불완전 언어
  • 스크립트 동장원리
    • 스크립트는 Opcode 와 data 두가지 객체를 가지고 있음
    • Opcode : 덧셈, 뺼셈, 곱셈 등 연산 작업을 함
    • data : Opcode 가 아닌 모든 데이터는 원시 데이터로 해석되며 스택에 들어감
    • Opcode 랑 data 랑 하나씩 스택에 들어가면서 연산 수행

(비트코인) 스크립트 : Opcode 와 Data를 일렬로 늘어놓은것
(이더리움) 바이트 코드 : Opcode를 효율적으로 저장하기위해 변환
(이더리움)
1. 솔리디티(사용자 작성)
2. 이더리움 컴파일러(솔리디티 -> 바이트 코드 변환)
3. EVM(바이트코드 -> Opcode 변환)
4. 이더리움 네트워크
(이더리움) EVM : 이더리움 가상 머신 -> 사용자 환경을 고려하지않고 모든 환경에서 동일하게 사용할 수 있게 하기위해 가상머신에서 이더리움 실행

2.3. 비트코인 스크립트

  • P2PK (Pay TO PubKey)
    • 두 개의 데이터와 하나의 Opcode를 사용하는 가장 간단한 스크립트 퍼블릭 키에 직접 코인을 송금하는데 사용, 수신자의 공개키를 노출하기 때문에 보안에 취약하며 오늘날 사용 안함.
  • P2PKH (PayToPubKeyHash)
    • P2PK과 거의 동일하며 ScriptPubkey가 공개키의 해시값을 가지고 있음

3. 이더리움 스마트 컨트랙트

3.1. EVM

  • 정의 : EVM(Ethereum Virtual Machine)의 약자이며, 사용자 환경을 고려하지않고 모든 환경에서 동일하게 사용할 수 있게 하기위해 가상머신에서 이더리움 실행
  • EVM은 솔리디티를 읽을 수 없기 때문에 솔리디티 코드를 컴파일하여 EVM이 읽을 수 있는 바이트코드 형태로 변환함
  • 이후 EVM은 바이트 코드를 Opcode로 변환하여 실행함

3.2. 솔리디티

  • 정의 : 솔리디티(Solidity)는 이더리움 스마트 컨트랙를 실행하는 객체지향, 정적타입, 고급 스크립트 언어로 EVM에서 실행됨

3.3. 이더리움 수수료

  • 이더리움에서 트랜잭션의 결과로 발생하는 모든 연산은 수수료를 요구하며 이름은 가스(Gas) (Gas코인아님)
  • 가스는 트랜잭션 코드에 있는 모든 Opcode를 실행하는데 필요한 수수료를 측청하는데 사용
  • 채굴자는 연산을 수행하고 트랜잭션을 검증하는데 자원을 소모하기 때문에 이에 대한 보상으로 가스 수수료를 받음
  • 수수료 지불 이유
    • 이더리움은 튜링 완전 언어 이기 때문에 반목문을 지원 한다 (비트코인은 반복문 지원 안함)
    • 반복문 지원은 무한 루프 문제가 일어날 수 있기 때문에 수수료는 악의적인 공격으로부터 네트워크를 보호한다. 잘못 공격했다간 지갑이 거덜날 수 있다..

4. 스마트 컨트랙트 활용

4.1. 금융 상품(DeFi)

  • 탈중앙화 금융이라는 뜻으로 전통적인 중앙화 금융과는 다르게 개인간 금융 거래가 가능해짐

4.2. 게임 및 NFT

  • 블록체인 게임은 게임내 아이템의 위변조 방지를 위하여 스마트 컨트랙트를 사용함
  • NFT를 게임에 도입하면 한정판 아이템?!을 만들 수 있어 희소성을 가지게 됨

4.3. DAO

  • 탈중앙화 조직이라는 뜻으로 조직의 규칙은 코드에 내장되어 있기 때문에 관리자가 필요하지 않으며 관료제나 계층적 구조가 없다.

4.4. ICO

  • 공개 기업(IPO)와 비슷한 개념으로 새로운 암호화폐를 만들기 위해 투자자들에게 투자금을 받고 그 댓가로 코인을 나눠주는것을 의미

4.5. 브릿지(Bridge)

  • 토큰이나 임의의 데이터를 하나의 체인에서 다른 체인으로 전송할 수 있게 하는 연결을 의미함
profile
취미로 개발하기 @wonyongkoon

0개의 댓글