이더리움의 '수수료' 는 되려 "장점" 이다??? Episode #11

여러분 안녕하세요. 참새입니다.

이번 에피소드에서는 이더리움이 어떤 프로그램 언어를 사용하고, 어떤 장점이 있으며, 이더 (ether)를 주고 받을 때 생기는 수수료가 왜 장점이 될 수 있는지 살펴보도록 하겠습니다

우선, 이더리움은 탈중앙화된 어플리케이션 (decentralized application)을 만들 수 있게 해주는 플렛폼 (platform)입니다.
탈중앙화된 어플리케이션을 만드려면 스마트 계약라는 전자 계약기능 (smart contract) 을 형성시켜야하고, 스마트 계약을 형성시키려면 솔리디티 (Solidity)라는 프로그램 언어로 작성해야합니다.

다시 말해서, 독일어 책을 발행하고 싶다면 독일어를 먼저 배우고 독일어로 책을 써야되는 것처럼, 이더리움을 통한 탈중앙화된 어플리케이션을 만드려면 솔리디티라는 프로그램 언어로 작성해야합니다!

이더리움은 기존 비트코인 블락체인에 스타트 계약 기능을 추가시킨 확장형 블락체인인만큼 다른 프로그램 언어를 사용하는데요, 그 이유는 무엇일까요? (아주 중요한 포인트!!)

그것은 바로… 솔리디티의 튜링 완전함 (Turing-Completeness) 때문입니다!!!

솔리디티는 컴퓨터 공학적으로 “튜링 완전하다”라고 표현하는데요, 이것부터 무엇인지 알아보도록 하겠습니다!

20세기의 천재 수학자인 엘런 튜링 (Alan Turing)은 어떠한 프로그램이나 다른 종류의 계산식을 풀 수 있는 기계를 발명했습니다 (물리적 기계는 아니고 이론적으로 가능한 기계를요… 천재니까요...). 이것이 바로, 튜링 기계 (Turing Machine)입니다!

엘런 튜링의 이론에 따르면, 이 기계는 어떠한 프로그램도 돌릴 수 있고 어떠한 계산식 문제들도 풀 수 있는 ‘컴퓨터’와 같은 기계였습니다. (물론! ‘어떠한’ 프로그램이나 계산식도 돌리거나 풀 수는 있지만 ‘얼마나 걸릴지’는 아무도 모르는게 함정이죠, 1분이 걸릴 수도 있고, 500년이 걸릴 수도 있고…)

이와 같은 개념으로, 어떤 특정한 프로그램 언어가 ‘튜링 완전하다’라고 한다면, 이 프로그램을 이용하면 어떠한 어플리케이션도 개발할 수 있고, 어떠한 계산식 문제도 해결할 수 있습니다. 반대로, 어떤 특정한 프로그램 언어가 “튜링 완전하지않다’라고 한다면, 이 프로그램을 이용해서 어플리케이션을 개발하는데 한계가 생깁니다.

솔리디티와 같이 튜링 완전한 프로그램 언어에는 한 가지 특징이 있는데요,

그것은 바로 루프 (loop)입니다!

프로그램을 작성되는 프로그램 언어에 루프 기능이 있다면 프로그램한테
“야! 너 이거 이거 이거 계속 반복해서 해!”라고 같은 것을 반복적으로 명령 또는 실행할 수 있게됩니다.
예를 들어서, 저희 어머니께서 “야! 너 내가 집에 들어올 때까지 계속 바닥 청소하고 있어!”라고 말씀하신다면 제가 어머니가 돌아오실 때까지 끊임없이 바닥을 청소하고 있어야하는 것처럼요^^..

솔리디티는 루프 기능이 있기 때문에 같은 명령을 손쉽게 반복해서 할 수 있는데요, 이와 다르게 비트코인에 씌여진 프로그램 언어인 경우 같은 명령이라도 명령을 할 때마다 코드를 복사하고 붙이고 복사하고 붙이고 하면서 명령을 해야합니다

그렇다면 왜 이렇게 좋아보이기만 하는 루프 기능이 문제점이 될 수가 있을까요?

루프 기능은 너무나 편리하지만, 어떤 굉장히 무거운(?) 컴퓨터 코드가 이더리움의 블락체인 안에서 루프 기능으로 100만번, 또는 1000만번씩 반복 실행되었을 때 블락체인 네트워크를 마비시키거나 비슷할 정도로 네트워크의 기능을 지체시킬 수도 있습니다.
이더리움은 어플리케이션을 만들 수 있게 해주는 플렛폼이기 때문에 루프 기능을 포함시키는 것이 어플리케이션 개발자들에게 훨씬 유용할 수도 있어서 솔리디티라는 프로그램 언어를 사용하고 루프 기능을 포함시켰겠지만, 루프 기능이 잘못 이용되는 경우에는 이더리움 블락체인 네트워크를 통째로 마비시킬 수도 있을겁니다 (한 명이 이더리움을 망가뜨리려고 무한정 루프를 돌리는 경우도 있을 수 있겠죠?^^;;).

이러한 최악의 상황을 방지하기 위해서 이더리움은 무엇을 하였을까요???

각 컴퓨터 코드 작업 (operation)마다 수수료를 부과하는 시스템을 도입합니다.

컴퓨터 코드가 실행되는 작업마다 수수료를 내야하니까 한 개인이 무한정으로 계속 루프 기능을 사용해서 네트워크를 마비시킬 수 있는 일은 없겠죠??? (쓸 때마다 돈 나가는데 계속 루프 기능 쓰는 바보가 있을리가…)

이더리움은 플렛폼으로써 최대한 활용될 수 있게되기 위해서 솔리디티라는 튜링 완전한 프로그램 언어를 사용하여 탈중앙화 어플리케이션을 작성하고 구동합니다.
튜링 완전한 프로그램 언어의 장점인 루프 기능이 단점으로 작용하여서 이더리움 블락체인 네트워크를 마비시킬 수도 있으니 그에 따른 해결책으로

‘작업당 수수료 (fee for each operation)’을 부과합니다.

결국, 수수료는 저희의 보안을 책임져주는 최소한의 안전선이니,

무.조.건

나쁘다고 하는것은 타당하진 않겠죠??

이상으로 에피소드 11을 마칩니다!!!


이데리움 공략단 시리즈

Episode #1 비트코인 너는 누구냐???

@kim066/6lc8h2-1

Episode #2 이데리움 너는 누구냐???

@kim066/episode-2

Episode #3 이데리움 미래의 가치

@kim066/episode-3

Episode #4 이데리움의 탈중앙화

@kim066/episode-4

Episode #5 이데리움은 미래에 "상용화" 될 것이다 1편 POS

@kim066/pos-episode-5

Episode. #06 비탈릭이 꿈꾸고있는 캐스퍼 (CASPER) 시스템에 대해 알아보자

@kim066/casper-episode-06

Episode. #07 이더리움 투자자라면 무조건 알아야할 이더리움의 문제점과 대처 방법 - 1편

@kim066/1-episode-6-1

Episode #8 이더리움 투자자라면 무조건 알아야할 이더리움의 문제점과 대처 방법 - 2편

@kim066/2-episode-8

Episode #9 인터넷의 발전 과정과 이더리움을 단기 투자해서는 안되는 이유 - 1탄

@kim066/1-episode-9

Episode #10 인터넷의 발전 과정과 이더리움을 단기 투자해서는 안되는 이유 - 2탄

@kim066/2-episode-10

H2
H3
H4
3 columns
2 columns
1 column
39 Comments