無知

갈 길이 먼 공부 일기

기술 공부/블록체인

이더리움의 작동방식 (3) | 가스, 수수료, Wei, 튜링완전, 정지 문제

moozii 2022. 1. 5. 20:15

* 이 글은 How does Ethereum work, anyway? 라는 글을 읽어가며 이해한 바를 한국어로 번역하여 정리하는 글입니다. 시리즈의 형태로 끊어가며 업로드되었으니, 참고 부탁드립니다.

 

이더리움 블록체인의 구성 요소

 

이더리움 블록체인은, 

계정 / 상태 / 가스 및 수수료 / 상호작용 / 블록 / 상호작용의 집행 / 채굴 / 작업 증명 

등으로 구성된다. 

 

지난 글에 이어서 계속 설명한다.

 

3. 가스와 수수료

이더리움 네트워크 상의 트랜잭션의 결과로서 발생하는 모든 계산은 수수료를 요구한다.

그리고 그 수수료는 가스라는 단위로 계산된다.

 

 

가스는, 일정량의 계산에 대해 요구되는 수수료의 단위이다.
가스 가격이란, gwei로 측정되는 가스의 단위마다 지불하고자 하는 이더리움의 양이다.
Wei는 이더리움의 최소 단위로 10^18 wei가 1 이더리움이다.
1 gwei는 10^9wei 이다.

 

모든 트랜잭션(상호작용)마다, 전송자는 가스 한계량과 가스 가격을 설정한다.

해당 프로덕트의 가스 가격과 가스량은 전송자가 상호작용을 집행하는 데에 있어서, 

지불할 의사가 있는 wei의 최대량을 정의한 것과 같다. 

즉, 계정에 가스 한계량 * 가스 가격 만큼 충분한 이더리움이 있으면 문제 없이 상호작용이 실행된다.

상호작용이 실행되어 사용한 컴퓨팅 양이, 가스 한계량보다 적으면, 사용하지 않은만큼 환불해준다.

만약 상호작용을 실행하는 데에 필요한만큼 가스를 제공하지 않는 경우,

<Out of Gas>, 가스 부족 상태가 되어, 유효하지 않은 것으로 간주한다.

이 경우에는 상호작용이 집행되기 이전의 상태로 모두 복원하며, 상호작용 실패에 대한 기록은 남는다.

 

https://preethikasireddy.medium.com/how-does-ethereum-work-anyway-22d1df506369

 

그러면, 사용된 가스 수수료는 어디로 이동하는가?

가스 수수료는 수혜자 계정으로 이동하는데, 일반적으로는 채굴자의 계정을 의미한다.

채굴자가 상호작용의 유효성을 검증한 계산량에 대한 보상이자 인센티브 차원에서 지급된다.

(비트코인이 거래될 때 일부 수수료를 채굴자에게 제공하는 것과 비슷한 듯하다)

 

스토리지의 비용도 발생한다. 

32바이트 단위로 측정한 스토리지 용량에 비례하여 스토리지 비용이 발생한다. 

스토리지의 증가가 모든 노드의 이더리움 상태 데이터베이스의 크기를 증가시키기 때문에, 

사용자들은 데이터 저장 용량을 최소화하고자 하는 동기를 얻는다. 

따라서 트랜잭션에 스토리지 항목을 삭제하는 경우, 해당 작업을 실행하는 비용이 면제되고, 

스토리지 공간 확보에 대하여 환불이 제공된다.

 

수수료의 목적은, 

이더리움은 네트워크 상의 모든 작업 하나 하나가 동시 다발적으로 전체 노드에 영향을 주게 하는 데에 있다. 

이더리움 가상 머신의 컴퓨팅은 굉장히 비싸기 때문에, 이더리움 스마트계약은 복잡하고 무겁게 사용하기보다, 

간단한 작업이나 서명 정도를 실행하도록 독려하기 위해서, 

네트워크를 과도하게 사용하지 않도록 수수료를 부여하는 것이다. 

 

이더리움은 튜링완전한 언어이다.

튜링완전(Turing-Complete)는 어떤 프로그래밍 언어나 추상 머신이 튜링머신과 동일한 계산 능력으로 문제를 풀 수 있다는 의미이다. 이것은 튜링 머신으로 풀 수 있는 문제, 즉 계산적인 문제를 그 프로그래밍 언어나 추상 머신으로 풀 수 있다는 것이다. 튜링은 수학자 앨런 튜링(Alan Turing)이 1936년에 제시한 개념으로 계산하는 기계의 일반적인 개념을 설명하기 위한 가상의 기계를 뜻한다. 앨런튜링 사후에 이름을 떠서 튜링 머신이라고 불리우게 되었다.

http://wiki.hash.kr/index.php/%ED%8A%9C%EB%A7%81%EC%99%84%EC%A0%84

튜링 머신을 간단히 논하자면, 어떤 컴퓨터 알고리즘이든 시뮬레이션을 돌릴 수 있는 머신을 의미한다.

수학 또는 이론 전산학에서, 튜링 기계(영어: Turing machine)는 긴 테이프에 쓰여있는 여러 가지 기호들을 일정한 규칙에 따라 바꾸는 기계이다. 상당히 간단해 보이지만 이 기계는 적당한 규칙과 기호를 입력한다면 일반적인 컴퓨터의 알고리즘을 수행할 수 있으며 컴퓨터 CPU의 기능을 설명하는데 상당히 유용하다. 

https://ko.wikipedia.org/wiki/%ED%8A%9C%EB%A7%81_%EA%B8%B0%EA%B3%84
A Turing machine is a theoretical computing machine invented by Alan Turing (1937) to serve as an idealized model for mathematical calculation. A Turing machine consists of a line of cells known as a "tape" that can be moved back and forth, an active element known as the "head" that possesses a property known as "state" and that can change the property known as "color" of the active cell underneath it, and a set of instructions for how the head should modify the active cell and move the tape (Wolfram 2002, pp. 78-81). At each step, the machine may modify the color of the active cell and change the state of the head. After this, it moves the tape one unit to the left or right.

https://mathworld.wolfram.com/TuringMachine.html

 

 

이더리움이 튜링 완전하다는 것은, 

<루프를 통한 반복 연산>이 가능하다는 것이며, 

이더리움이 <Halting Problem, 정지 문제>에 취약하다는 뜻이기도 하다.

정지 문제란, 프로그램이 영원히 작동할 것인지 아니면 중도에 정지할 것인지를 결정하는 문제이다.

수수료가 없었다면, 악성 사용자는 무한히 반복되는 트랜잭션을 네트워크에서 작동시킴으로써 네트워크를 공격할 수 있었을 것이다.

컴퓨팅에 대한 수수료를 통해 악성 반복을 저지하고, 스토리지에 대한 수수료를 통해 네트워크 부담을 경감하는 것이

스토리지의 전반적인 목적이다.

프로그램을 설명한 것과 처음 입력값이 주어졌을 때, 이 프로그램에 입력값을 넣고 실행한다면 이 프로그램이 계산을 끝내고 멈출지 아니면 영원히 계속 계산할지 판정하라.

1936년에 앨런 튜링이 모든 가능한 입력값에 대해 정지문제를 풀 수 있는 일반적인 알고리즘은 존재하지 않는다는 것을 증명했다. 그러므로 '정지문제는 튜링 기계에서 판정할 수 없다'고 한다.

https://ko.wikipedia.org/wiki/%EC%A0%95%EC%A7%80_%EB%AC%B8%EC%A0%9C