이더리움의 특징 중 하나이자 핵심개념인 튜링완전에 대한 개념을 익혀보도록 하자.
어떤 프로그래밍 언어나 추상 머신이 튜링머신과 동일한 계산 능력으로 문제를 풀 수 있다는 의미
(즉, 튜링머신과 동일한 계산 능력을 가지고 문제를 풀 수 있다면 그것을 '튜링완전하다'라고 볼 수 있다.)
여기서 말하는 튜링머신은 뭔지 알아보자.
추상적인 수학 개념상의 기계
알고리즘 구현 언이인 튜링완전언어로 구현
무한한 저장공간만 있다면 이 세상의 모든 문제를 풀 수 있는 기계를 만드는 것이 가능한데, 그것을 튜링기계라고 한다.
튜링완전언어 + 무한한 저장공간 = 모든 계산 가능한 문제를 계산해내는 기계 = 튜링기계(인간의 뇌)
아직도 개념이 애매모호하기 떄문에 튜링머신의 구성요소를 통한 예시에 대해 알아보겠다.
예시) 튜링머신에는 끝없는 무한 테이프(0과 1로 이루어진)가 있으며 상태 기록기로 기록이 되고, 행동표에 따라 헤드가 이동(계산하는 행위)하면서 무한히 기록될 수 있다.
이렇게 간단한 구조만으로 모든 것을 계산할 수 있을 만큼 강력 하다는 것이 여기서 말하는 튜링머신이다.
이더리움은 튜링완전하다.
정확히는 튜링완전에 가깝다고 볼 수 있다.
(튜링완전의 무한한 저장공간을 이더리움 플랫폼에도 갖는가? 라는 물음에 대한 답은 메모리는 유한하다에 더 가깝기 때문이다.)
비트코인과 달리 이더리움은 튜링완전언어를 지원하기때문에 무한루프 공격에 노출될 수 있다.
이 부분에 대해 이더리움에서는 EVM이 스마트 컨트랙트를 실행하게 되면, 각 명령어의 비용을 gas단위로 일일이 계산하여 지불하는 방식을 가진다.
이 방식은 이더리움 플랫폼에 선순환을 가져올 수 있다.
ex) 외부 공격시 이더리움에서 발생하는 상황
공격자가 무한루프를 통해 공격 -> 수수료 투입
네트워크에 채굴 노드들이 늘어난 수수료로 수익 늘어남
수익 증가에 따라 채굴 노드들이 더 많은 컴퓨팅 파워 투입
높은 컴퓨팅 파워로 네트워크 작업처리능령 향상
네트워크 작업처리능력 향상으로 더 많은 공격 처리가 가능
이러한 방식으로 gas를 통한 과금 메커니즘을 도입함으로써 외부 공격시 보안을 더 강화시키는 선순환 시스템을 가지고 있다.
참고
http://wiki.hash.kr/index.php/%ED%8A%9C%EB%A7%81%EC%99%84%EC%A0%84
https://www.youtube.com/watch?v=RPQD7-AOjMI
https://brunch.co.kr/@ashhan/10