이더리움의 '수수료' 는 되려 "장점" 이다??? 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 비트코인 너는 누구냐???
https://steemit.com/kr/@kim066/6lc8h2-1
Episode #2 이데리움 너는 누구냐???
https://steemit.com/kr/@kim066/episode-2
Episode #3 이데리움 미래의 가치
https://steemit.com/kr/@kim066/episode-3
Episode #4 이데리움의 탈중앙화
https://steemit.com/kr/@kim066/episode-4
Episode #5 이데리움은 미래에 "상용화" 될 것이다 1편 POS
https://steemit.com/kr/@kim066/pos-episode-5
Episode. #06 비탈릭이 꿈꾸고있는 캐스퍼 (CASPER) 시스템에 대해 알아보자
https://steemit.com/kr/@kim066/casper-episode-06
Episode. #07 이더리움 투자자라면 무조건 알아야할 이더리움의 문제점과 대처 방법 - 1편
https://steemit.com/kr/@kim066/1-episode-6-1
Episode #8 이더리움 투자자라면 무조건 알아야할 이더리움의 문제점과 대처 방법 - 2편
https://steemit.com/kr/@kim066/2-episode-8
Episode #9 인터넷의 발전 과정과 이더리움을 단기 투자해서는 안되는 이유 - 1탄
https://steemit.com/kr/@kim066/1-episode-9
Episode #10 인터넷의 발전 과정과 이더리움을 단기 투자해서는 안되는 이유 - 2탄
참새님 늘 좋은 글 감사드립니다. ^^ 수수료가 없는 EOS에서는 위 리스크가 어떻게 헷지되는지 궁금하군요..
그분야는 아마도 제가 EOS의 정확한 기술적인 이해가 뒷바침되어야 드릴수있는 답변이라 생각되네요 ^^, 아마도 저보단 @clayop 님께 여쭤보는것이 더 옳다고 봅니다^^
꾸준한 좋은 글 감사합니다^^
@issaclab 꾸준히 구독해주셔서 감사드립니다 ^^
재밌게 잘 읽었습니다!
@oncecoin 감사드립니다 ^^
이더리움 공략단!
새롭게 또 배우고 갑니다.
앞으로도 지속적인 관심과 사랑 부탁드립니다 ^^
이더리움의 수수료가 오히려 보안을 지켜준다니...
저처럼 가상화폐 뉴비에게는 너무 재밌는 이야기 였습니다 ㅎㅎ
감사드립니다. girina79님처럼 모든분들께서 즐기면서 공략단을 읽어주셨으면합니다 ^^
좋은 글 잘봤습니다~^^
감사합니다^^
이더리움에 수수료가 왜 있는지 알게 되었습니다. 감사합니다^^
옳바른 이해가 되었길 진심으로 바랍니다. 앞으로도 꾸준히 읽어주신다면 더 많은 지식과 정보를 제공할수있도록 더 열심히 적겠습니다.^^
아 네 그런거군요, 최악의 상황을 막기위해서는 필요한 조치이긴 합니다. 항상 좋은 글 감사드립니다^^
다양한 이유가 존재한다고 생각하지만, 위에서 말씀드린데로 무.조.건 나쁜건 아니라고 봅니다 ^^
네 그렇죠.. 저도 공감합니다~~ 감사합니다^^
오늘도 좋은글 감사합니다^^
@sjchoi 이더리움 '수수료' 에대한 궁금증이 어느정도 해소되었길 바랍니다 ^^
몰랐던 사실을 하나씩 알아가게해주셔셔 감사합니다.
앞으로도 좋은 내용 알려드릴수있도록 최선을 다하겠습니다.^^