튜링불완전 편집하기
최신판 | 당신의 편집 | ||
14번째 줄: | 14번째 줄: | ||
물론 비트코인 스크립트 언어로도 할 수 있는 작업이 많지만, 모든 경우의 [[프로그래밍]]을 다 지원하지는 못한다.<ref>yahweh87, 〈[https://steemit.com/kr/@yahweh87/35-4 # 35 – 이더리움 백서(4편)]〉, 《스팀잇》</ref> 특히 while 이나 for과 같이 순환(loop) 명령 카테고리가 빠져있다. 이는 비트코인의 결함이기도 하지만 의도된 것인데, 비트코인은 무한 반복 공격을 방지하기 위해 순환 명령어를 없앴다. 이론적으로 튜링불완전성은 스크립트 프로그래머가 극복할 수 있는 장애물이기는 하다.<ref>람보짱, 〈[https://blog.naver.com/irambo/221192494361 이더리움 한글 백서]〉, 《네이버 블로그》, 2018-01-14</ref> 어떤 순환 명령이든 단순히 하위 코드를 여러 차례 if 구문과 함께 반복하여 구현하는 것이 가능하기 때문이다.<ref>야옹메롱, 〈[https://blog.naver.com/mage7th/221376090743 (이더리움) White Paper 백서 풀이 및 해석]〉, 《네이버 블로그》, 2018-10-12</ref> 하지만 이는 매우 공간 비효율적인 프로그램이 된다. 예를 들어 [[타원곡선]] [[서명 알고리즘]]을 실행하기 위해서 코드 안에 있는 곱셈을 모두 개별적으로 256번 반복하는 과정이 필요하기 때문이다.<ref>Vitalik Buterin, 〈[https://files.meetup.com/18113822/Etherenum_whitepaper%20v1.2.pdf 차세데 스마트 컨트랙트와 탈중앙화된 어플리케이션 플랫폼(A Next-Generation Smart Contract and Decentralized Application Platform]〉, 《이더리움 코리아》</ref> | 물론 비트코인 스크립트 언어로도 할 수 있는 작업이 많지만, 모든 경우의 [[프로그래밍]]을 다 지원하지는 못한다.<ref>yahweh87, 〈[https://steemit.com/kr/@yahweh87/35-4 # 35 – 이더리움 백서(4편)]〉, 《스팀잇》</ref> 특히 while 이나 for과 같이 순환(loop) 명령 카테고리가 빠져있다. 이는 비트코인의 결함이기도 하지만 의도된 것인데, 비트코인은 무한 반복 공격을 방지하기 위해 순환 명령어를 없앴다. 이론적으로 튜링불완전성은 스크립트 프로그래머가 극복할 수 있는 장애물이기는 하다.<ref>람보짱, 〈[https://blog.naver.com/irambo/221192494361 이더리움 한글 백서]〉, 《네이버 블로그》, 2018-01-14</ref> 어떤 순환 명령이든 단순히 하위 코드를 여러 차례 if 구문과 함께 반복하여 구현하는 것이 가능하기 때문이다.<ref>야옹메롱, 〈[https://blog.naver.com/mage7th/221376090743 (이더리움) White Paper 백서 풀이 및 해석]〉, 《네이버 블로그》, 2018-10-12</ref> 하지만 이는 매우 공간 비효율적인 프로그램이 된다. 예를 들어 [[타원곡선]] [[서명 알고리즘]]을 실행하기 위해서 코드 안에 있는 곱셈을 모두 개별적으로 256번 반복하는 과정이 필요하기 때문이다.<ref>Vitalik Buterin, 〈[https://files.meetup.com/18113822/Etherenum_whitepaper%20v1.2.pdf 차세데 스마트 컨트랙트와 탈중앙화된 어플리케이션 플랫폼(A Next-Generation Smart Contract and Decentralized Application Platform]〉, 《이더리움 코리아》</ref> | ||
− | 비트코인이 튜링불완전한 스크립트를 사용하는 반면에 [[이더리움]]은 [[튜링완전]]한 언어인 [[솔리디티]](Solidity)와 [[ | + | 비트코인이 튜링불완전한 스크립트를 사용하는 반면에 [[이더리움]]은 [[튜링완전]]한 언어인 [[솔리디티]](Solidity)와 [[서펜트]](Serpent)를 사용한다. 이는 복잡한 다중계약인 [[스마트 계약]]을 가능하게 하며 [[분산 어플리케이션]]을 구현한다. 튜링불완전성을 갖는 프로그램도 튜링 완전성을 갖는 프로그램과 동일한 계약을 생성할 수는 있지만, 만약 튜링완전성이 없을 경우 다루기가 매우 어려우며, 이러한 한계로 인해 계약의 활용도가 매우 제한적일 수밖에 없다.<ref>어미새, 〈[https://blog.naver.com/yahweh87/221257278677 이더리움 백서(11편)]〉, 《네이버 블로그》, 2018-04-20</ref> |
* '''이더리움의 스마트 계약 플랫폼''' | * '''이더리움의 스마트 계약 플랫폼''' |