여러분 안녕하세요. 참새입니다.
이번 에피소드에서는 이더리움이 어떤 프로그램 언어를 사용하고, 어떤 장점이 있으며, 이더 (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탄
꾸준한 좋은 글 감사합니다^^
@issaclab 꾸준히 구독해주셔서 감사드립니다 ^^
오늘도 좋은글 감사합니다^^
@sjchoi 이더리움 '수수료' 에대한 궁금증이 어느정도 해소되었길 바랍니다 ^^
재밌게 잘 읽었습니다!
@oncecoin 감사드립니다 ^^
이더리움 공략단!
새롭게 또 배우고 갑니다.
앞으로도 지속적인 관심과 사랑 부탁드립니다 ^^
이더리움의 수수료가 오히려 보안을 지켜준다니...
저처럼 가상화폐 뉴비에게는 너무 재밌는 이야기 였습니다 ㅎㅎ
감사드립니다. girina79님처럼 모든분들께서 즐기면서 공략단을 읽어주셨으면합니다 ^^
좋은 글 잘봤습니다~^^
감사합니다^^
이더리움에 수수료가 왜 있는지 알게 되었습니다. 감사합니다^^
옳바른 이해가 되었길 진심으로 바랍니다. 앞으로도 꾸준히 읽어주신다면 더 많은 지식과 정보를 제공할수있도록 더 열심히 적겠습니다.^^
아 네 그런거군요, 최악의 상황을 막기위해서는 필요한 조치이긴 합니다. 항상 좋은 글 감사드립니다^^
다양한 이유가 존재한다고 생각하지만, 위에서 말씀드린데로 무.조.건 나쁜건 아니라고 봅니다 ^^
네 그렇죠.. 저도 공감합니다~~ 감사합니다^^
참새님 늘 좋은 글 감사드립니다. ^^ 수수료가 없는 EOS에서는 위 리스크가 어떻게 헷지되는지 궁금하군요..
그분야는 아마도 제가 EOS의 정확한 기술적인 이해가 뒷바침되어야 드릴수있는 답변이라 생각되네요 ^^, 아마도 저보단 @clayop 님께 여쭤보는것이 더 옳다고 봅니다^^
몰랐던 사실을 하나씩 알아가게해주셔셔 감사합니다.
앞으로도 좋은 내용 알려드릴수있도록 최선을 다하겠습니다.^^
좋은 글 감사합니다.
저는 개발자이다 보니 이 부분에 대해 볼 때마다 나중에 이런 뉴스들을 많이 접하게 될까 두려운 마음이 있습니다.
아무리 테스트를 해도 완벽할 수가 없는데 실수로 잘못 올리고 나서 돌이킬 수 없는 상황은 어떻게 되는건지도 궁금합니다. 블록체인 상이라 한번 올리면 돌이킬수 없이 영영 빠이빠이인지 아니면 어떤 방법이 있는지 진짜로 궁금하더라구요. 취소하거나 수정할 방법이 있다고 해도 블록체인의 근간인 영속성을 헤치게 되는거니 그건 그대로 또 문제가 있을거구요.
예전에 NASA에서도 개발자의 아주아주 사소한 실수로 인해 다음과 같은 상황이 벌어진 사례도 있어서 실제로 충분히 있을수 있는 경우입니다.
@segyepark, 좋은 의견 감사드립니다. 아마도 제가 방금전에 올린, ETH 와 ETC 그리고 몇년전에 생긴 DAO 사태에 관한 포스팅을 읽어보신다면 segyepark 님께서 궁금해하시고 계신 질문이 어느정도 해결되시리라 봅니다. #11 episode 포스팅 하였으니 한번 읽어봐주세요 ^^
답변 감사드립니다 참새님^^ 정말 부지런하시네요. 상당한 페이스로 이런 양질의 글들을 계속 남기시는게 정말 대단하십니다. 덕분에 궁금증이 많이 풀렸습니다. 앞으로도 좋은 글들 부탁드립니다^^
스티밋 시작할때 하루에 한개씩 포스팅 올리자고 다짐했는데 스스로의 약속지키기 상당히 힘드네요 ㅜ 요즘 글쓰느라 늦게자고 일찍일어나는게 일상이라서 오늘 빈혈까지 왔습니다 ㅜ
아 그러심 안되용 ㅜㅜ 한개씩 꼭 안올리셔도 되니 건강먼저 챙기시기 바랍니다. 말짱한 정신으로 더 좋은글 천천히 부탁드려요^^
수수료(가스비)의 필요성을 이제야 알았네요. 감사하니다.
저야말로 감사드립니다. 지속적인 서포팅 해주셔서 대단히 감사드립니다 ^^
좋은글 감사합니다 ㅎㅎ 댓글은 처음 다는거 같은데 자주 올게요~~
앞으로도 좋은내용, 좋은 글 제공할수있도록 최선을 다하겠습니다. 많은관심 부탁드리겠습니다 ^^
역시 수수료는 가스비겠지요, 좋은글 감사합니다.
스마트계약에 관해서 현실세계의 법적 문제가 요즘 한참 이슈가 되더군요.
법적효력을 코드 문법 자체에서 봐야 하나 실행된 결론을 가지고 봐야 하냐에 대한 논의도 있고요.
근데 튜링을 보니 '이미테이션 게임'이란 영화가 생각나네요. 2차대전에 숨겨진 영웅이지만 참 불행한 사람이였는데.
'이미테이션 게임' 오래전에 저도 한번 본적이 있던걸로 기억합니다.. 항상 천재들의 삶이 행복할수없다는것을 잘 보여준 영화라고 기억합니다 ^^..
매일 방문해서 정독하고 있읍니다. 6월4일 스팀잇 가입후 너무 아는 것이 없어서 글쓰기보다 공부을 해야겠다고 생각해서 좋은 글 읽은 데 치중하고 있읍니다.
제글을 읽고 공부 하신다니 더 좋은 내용작성을 위해 노력 해야겠네요.. ^^ 감사드립니다. 더 좋은 글 올릴수있도록 최선을 다하겠습니다!
아... 수수료의 개념이 이런거였군요. 그럼 그 지불 된 수수료는 어디로 가는 건가요?
그부분이 궁금하시리라 생각됩니다...episode 13을 읽어봐주세요 ^^ (저를 이제 꿰뚫는거 아니신가요 @skuld2000님ㅋㅋㅋ)
엄청 기대하고 있습니다. 궁금한 부분을 너무 재밌게 써주셔서 머리에 쏙쏙 들어오네요.
연재 하시는거 정리해서 추후 책 한권 내시는 게 어떠세요!
일단 저는 무조건 사겠습니다~ㅎㅎ
kim066의 시리즈 항상 나중에 몰아서 다 읽어야지 읽어야지 생각만하다가 아직까지 못 읽었는데 오늘 시간이 좀 남아서 오늘 다읽기 도전해보려구요^^
읽다가 궁금점은 언제든지 여쭤봐주세요. 모르는부분을 알려고 노력하는 자세야말로 투자자로서의 기본 이라고 생각합니다 ^^