검수요청.png검수요청.png

"튜링불완전"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
(새 문서: '''튜링불완전'''(Turing Incomplete)은 반복 명령어를 쓸 수 없는 비트코인 스크립트의 특성이다. ==개요== 비트코인의 스크립트 언어...)
 
(개요)
9번째 줄: 9번째 줄:
  
 
* '''이더리움의 스마트 계약 플랫폼'''
 
* '''이더리움의 스마트 계약 플랫폼'''
: [[이더리움]](Ethereum)은 비트코인 스크립트 시스템의 [[튜링 불완전성]]이라는 한계를 극복하고자 나온 스마트 컨트랙트 플랫폼(smart contract platform)이다. '''[[비탈릭 부테린]]'''(Vitalik Buterin)이 창시한 이더리움 블록체인의 경우, [[블록]]에 [[데이터]]뿐만 아니라  비트코인 스크립트 시스템의 한계인 [[조건문]](if), [[반복구문]](loop) 등의 실행 코드를 포함시켜 로직의 실행을 자동화할 수 있다.
+
: [[이더리움]](Ethereum)은 비트코인 스크립트 시스템의 [[튜링 불완전성]]이라는 한계를 극복하고자 나온 스마트 컨트랙트 플랫폼(smart contract platform)이다. '''[[비탈릭 부테린]]'''(Vitalik Buterin)이 창시한 이더리움 블록체인의 경우, [[블록]]에 [[데이터]]뿐만 아니라  비트코인 스크립트 시스템의 한계인 [[조건문]](if), [[반복구문]](loop) 등의 실행 코드를 포함시켜 로직의 실행을 자동화할 수 있다. 스마트 컨트랙트를 구현하기 위한 컨트랙트 코드(contract code)는 '''[[이더리움 가상머신]]'''(EVM; Ethereum Virtual Machine)이라는 독립된 실행 환경에서 실행된다. 여기에 스마트 컨트랙트를 실행할 때마다 [[수수료]]인 '''[[가스]]'''(gas)를 발생시키고 네트워크상에 수수료의 한계를 설정하여 무한루프를 막았다. 무한히 반복되는 조건을 만들어 스마트 컨트랙트를 실행시키면 중간에 수수료 한계점에 도달하게 되는데, 이때 중단된다.
  
: 스마트 컨트랙트를 구현하기 위한 컨트랙트 코드(contract code)는 '''[[이더리움 가상머신]]'''(EVM; Ethereum Virtual Machine)이라는 독립된 실행 환경에서 실행된다. 여기에 스마트 컨트랙트를 실행할 때마다 [[수수료]]인 '''[[가스]]'''(gas)를 발생시키고 네트워크상에 수수료의 한계를 설정하여 무한루프를 막았다. 무한히 반복되는 조건을 만들어 스마트 컨트랙트를 실행시키면 중간에 수수료 한계점에 도달하게 되는데, 이때 중단된다.
+
: 이더리움에서 스마트 컨트랙트는 '''[[솔리디티]]'''(Solidity) 언어로 프로그래밍된다. 솔리디티 언어로 프로그래밍된 스마트 컨트랙트는 [[컴파일러]](solc)에 의해 [[바이트코드]](bytecode)로 [[컴파일]]되고, 컴파일된 바이트코드는 블록에 포함되어, 이더리움 가상머신(EVM)에 의해 실행된다. 이더리움 가상머신(EVM)은 이더리움 스마트 컨트랙트의 바이트코드를 실행하는 32 바이트 [[스택]] 기반의 실행환경이다. 이더리움이 제공하려는 것은 [[튜링 완전]](turing-complete) 프로그래밍 언어가 심어진 블록체인이다. 이 프로그래밍 언어는 코딩된 규칙에 따라 '어떤 상태'를 '다른 상태'로 변환시키는 기능(arbitrary state transition functions)이 포함된 [[계약]]을 사용자들이 직접 작성할 수 있게 함으로써, 인간이 상상할 수 있는 모든 종류의 계약을 스마트 컨트랙트로 만들 수 있다. 이를 통해 모든 계약이 자동으로 실행할 수 있고, 이를 위한 다양한 분산형 애플리케이션인 '''[[디앱]]'''(DApp)도 만들 수 있다.<ref name="이더리움 백서">Vitalik Buterin, "[https://github.com/ethereum/wiki/wiki/White-Paper A Next-Generation Smart Contract and Decentralized Application Platform]", 2013.</ref> 누구든지 솔리디티 언어를 사용해 스마트 컨트랙트와 디앱을 작성하고 소유권에 대한 임의의 규칙, 트랜잭션 형식(transaction format), 상태변환함수(state transition function) 등을 생성할 수 있다. {{자세히|이더리움}}
 
 
: 이더리움에서 스마트 컨트랙트는 '''[[솔리디티]]'''(Solidity) 언어로 프로그래밍된다. 솔리디티 언어로 프로그래밍된 스마트 컨트랙트는 [[컴파일러]](solc)에 의해 [[바이트코드]](bytecode)로 [[컴파일]]되고, 컴파일된 바이트코드는 블록에 포함되어, 이더리움 가상머신(EVM)에 의해 실행된다. 이더리움 가상머신(EVM)은 이더리움 스마트 컨트랙트의 바이트코드를 실행하는 32 바이트 [[스택]] 기반의 실행환경이다.
 
 
 
: 이더리움이 제공하려는 것은 [[튜링 완전]](turing-complete) 프로그래밍 언어가 심어진 블록체인이다. 이 프로그래밍 언어는 코딩된 규칙에 따라 '어떤 상태'를 '다른 상태'로 변환시키는 기능(arbitrary state transition functions)이 포함된 [[계약]]을 사용자들이 직접 작성할 수 있게 함으로써, 인간이 상상할 수 있는 모든 종류의 계약을 스마트 컨트랙트로 만들 수 있다. 이를 통해 모든 계약이 자동으로 실행할 수 있고, 이를 위한 다양한 분산형 애플리케이션인 '''[[디앱]]'''(DApp)도 만들 수 있다.<ref name="이더리움 백서"></ref> 누구든지 솔리디티 언어를 사용해 스마트 컨트랙트와 디앱을 작성하고 소유권에 대한 임의의 규칙, 트랜잭션 형식(transaction format), 상태변환함수(state transition function) 등을 생성할 수 있다. {{자세히|이더리움}}
 
  
 
{{각주}}
 
{{각주}}

2019년 6월 7일 (금) 14:44 판

튜링불완전(Turing Incomplete)은 반복 명령어를 쓸 수 없는 비트코인 스크립트의 특성이다.

개요

비트코인의 스크립트 언어는 비교적으로 단순해서 비트코인이 화폐로서의 역할만 수행하게끔 한다. 예를 들어, 현재 다양한 언어가 전 세계적으로 사용되고 있지만 비트코인의 스크립트 언어는 원시시대의 인류가 처음 등장했을 때 사용했던 매우 단순하고 표현방법이 많지 않은 언어라고 비유를 들 수 있다.[1] 이를 비트코인의 튜링불완전성이라고 한다.

물론 비트코인 스크립트 언어로도 할 수 있는 작업이 많지만, 모든 경우의 프로그래밍을 다 지원하지는 못한다.[2] 특히 while 이나 for과 같이 순환(loop) 명령 카테고리가 빠져있다. 이는 비트코인의 결함이기도 하지만 의도된 것인데, 비트코인은 무한 반복 공격을 방지하기 위해 순환 명령어를 없앴다. 이론적으로 튜링불완전성은 스크립트 프로그래머가 극복할 수 있는 장애물이기는 하다.[3] 어떤 순환 명령이든 단순히 하위 코드를 여러 차례 if 구문과 함께 반복하여 구현하는 것이 가능하기 때문이다.[4] 하지만 이는 매우 공간 비효율적인 프로그램이 된다. 예를 들어 타원곡선 서명 알고리즘을 실행하기 위해서 코드 안에 있는 곱셈을 모두 개별적으로 256번 반복하는 과정이 필요하기 때문이다.[5]

비트코인이 튜링불완전한 스크립트를 사용하는 반면에 이더리움튜링완전한 언어인 솔리디티(Solidity)와 서펜트(Serpent)를 사용한다. 이는 복잡한 다중계약인 스마트 계약을 가능하게 하며 분산 어플리케이션을 구현한다. 튜링불완전성을 갖는 프로그램도 튜링 완전성을 갖는 프로그램과 동일한 계약을 생성할 수는 있지만, 만약 튜링완전성이 없을 경우 다루기가 매우 어려우며, 이러한 한계로 인해 계약의 활용도가 매우 제한적일 수밖에 없다.[6]

  • 이더리움의 스마트 계약 플랫폼
이더리움(Ethereum)은 비트코인 스크립트 시스템의 튜링 불완전성이라는 한계를 극복하고자 나온 스마트 컨트랙트 플랫폼(smart contract platform)이다. 비탈릭 부테린(Vitalik Buterin)이 창시한 이더리움 블록체인의 경우, 블록데이터뿐만 아니라 비트코인 스크립트 시스템의 한계인 조건문(if), 반복구문(loop) 등의 실행 코드를 포함시켜 로직의 실행을 자동화할 수 있다. 스마트 컨트랙트를 구현하기 위한 컨트랙트 코드(contract code)는 이더리움 가상머신(EVM; Ethereum Virtual Machine)이라는 독립된 실행 환경에서 실행된다. 여기에 스마트 컨트랙트를 실행할 때마다 수수료가스(gas)를 발생시키고 네트워크상에 수수료의 한계를 설정하여 무한루프를 막았다. 무한히 반복되는 조건을 만들어 스마트 컨트랙트를 실행시키면 중간에 수수료 한계점에 도달하게 되는데, 이때 중단된다.
이더리움에서 스마트 컨트랙트는 솔리디티(Solidity) 언어로 프로그래밍된다. 솔리디티 언어로 프로그래밍된 스마트 컨트랙트는 컴파일러(solc)에 의해 바이트코드(bytecode)로 컴파일되고, 컴파일된 바이트코드는 블록에 포함되어, 이더리움 가상머신(EVM)에 의해 실행된다. 이더리움 가상머신(EVM)은 이더리움 스마트 컨트랙트의 바이트코드를 실행하는 32 바이트 스택 기반의 실행환경이다. 이더리움이 제공하려는 것은 튜링 완전(turing-complete) 프로그래밍 언어가 심어진 블록체인이다. 이 프로그래밍 언어는 코딩된 규칙에 따라 '어떤 상태'를 '다른 상태'로 변환시키는 기능(arbitrary state transition functions)이 포함된 계약을 사용자들이 직접 작성할 수 있게 함으로써, 인간이 상상할 수 있는 모든 종류의 계약을 스마트 컨트랙트로 만들 수 있다. 이를 통해 모든 계약이 자동으로 실행할 수 있고, 이를 위한 다양한 분산형 애플리케이션인 디앱(DApp)도 만들 수 있다.[7] 누구든지 솔리디티 언어를 사용해 스마트 컨트랙트와 디앱을 작성하고 소유권에 대한 임의의 규칙, 트랜잭션 형식(transaction format), 상태변환함수(state transition function) 등을 생성할 수 있다. 가기.png 이더리움에 대해 자세히 보기

각주

  1. easyblockchain, 〈쉽게 설명하는 블록체인 : 이더리움이란?〉, 《뱅크샐러드》, 2018-05-19
  2. yahweh87, 〈# 35 – 이더리움 백서(4편)〉, 《스팀잇》
  3. 람보짱, 〈이더리움 한글 백서〉, 《네이버 블로그》, 2018-01-14
  4. 야옹메롱, 〈(이더리움) White Paper 백서 풀이 및 해석〉, 《네이버 블로그》, 2018-10-12
  5. Vitalik Buterin, 〈차세데 스마트 컨트랙트와 탈중앙화된 어플리케이션 플랫폼(A Next-Generation Smart Contract and Decentralized Application Platform〉, 《이더리움 코리아》
  6. 어미새, 〈이더리움 백서(11편)〉, 《네이버 블로그》, 2018-04-20
  7. Vitalik Buterin, "A Next-Generation Smart Contract and Decentralized Application Platform", 2013.

참고자료

같이 보기


  검수요청.png검수요청.png 이 튜링불완전 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.