비트코인 스크립트는 무엇일까?

Smart Contract

  • 비트코인이 전송되는데 있어 어떠한 계약을 걸 수 있다. 그걸 스마트 컨트랙트이라고 한다.
  • 그리고 그 계약을 서술하는 프로그래밍 언어가 스크립트이다.
  • 스크립트는 스택 기반의 스크립트 언어이다.
  • “의도적으로” 몇몇 기능을 배제하고 만들어졌다.

비트코인이 튜링 완전하지 않은 이유

  • 왜 루프를 뺐을까?
  • 런타임에 무한 루프가 돌아가 노드가 멈추는 것을 막기 위해서.
    • 만약 다른 노드로 스크립트를 전파할 때, 스크립트에 무한 루프가 돌아가는 코드를 넣는다면 네트워크 공격이 가능하다.
    • 이는 굉장한 보안 위협이다.
  • 튜링 완전한 스마트 계약은 분석하기가 어렵기 때문에.
    • 이건 “돈”이 연관된 문제다.
    • 컨트랙트의 조건이 어렵다면, “의도치 않은 실행”이 발생할 가능성도 높아진다.
    • DAO에서 해당 문제가 발생했고, 이더리움 클래식의 하드포크가 발생했다.
  • 이와 반대로 튜링 완전한 스마트 계약 언어를 사용하기도 한다. 이더리움이다.
    • Solidity라는 언어를 사용한다.
    • 이더리움은 이 문제에 대해 Gas라는 비용을 지불하도록 하여 해결한다.
    • 스마트 컨트랙트를 위해서는 Gas를 지불해야 하고, 스크립트 실행 동안 Gas가 소진되도록 한다.
    • Gas가 없다면 스크립트 실행이 중단된다.

Reference