[ETH] 이더리움(Ethereum)에 대한 소소한 이야기 1. 튜링완전(Turing-Complete)언어steemCreated with Sketch.

in #kr6 years ago

들어가며

안녕하세요. Jumsun입니다.
근래 월요일마다 우울한 시장흐름이 이어지고 있네요.
개인적으로 제 멘탈은 그렇게 좋지 못하기에, 특별히 줍지 않는 이상 거래소를 들어가지 않는 편입니다
(한편으론 오히려 이런 시기가 공부를 할 수 있는 좋은 기회라고 생각합니다.)
많은 분들께 너무 우울한 하루가 아니길 빕니다.
이런 시기가 지나면 다시 빛날 날이 오겠죠^^

어떤 글을 먼저 써야할까 고민을 하는 중에, 그래도 스팀잇인데 암호화화폐에 관련된 내용을 적고 싶었습니다.
문득 책상 한 쪽에 출력해놓은(이젠 너덜너덜한...) 이더리움(Ethereum) Whitepaper를 보았습니다.
입문 10개월차지만, 저는 여전히 이더리움 백서를 들여다 보는 편입니다.
이 바닥에 들어온 계기도 이더리움이었고, 그렇게 자주 봐도 사실 아직 전체가 이해됐다고 생각이 안 듭니다^^;
처음 이 백서를 봤을 땐... 정말이지 이 세상 얘기가 아니었습니다...ㅎㅎ
주변을 보면 저 뿐만 아니라 많은 분들께서 백서를 읽어보려다 포기하시더군요.

그래서 써보려고 합니다!
초보 입문자(필자)가 이더리움 백서를 보며 이해가 안 되서 찾아봤던 것들을 공유하고자 합니다.
제목 그대로 정말 초보이신 분들이 조금이라도 이해하시는데 도움이 되고자 하는 글입니다.
제가 이해했던 방식으로 설명드리기에 틀린 부분이 많이 있을 수 있습니다.
(스팀잇은 나중에 수정도 불가능하다는데...)
혹시 틀린게 보인다면 댓글에서 꼭 지적해주시기 바랍니다.

1. 이더리움(Ethereum)

처음 이 시장에 들어오고 나서, Blockchain에 관심이 생긴 많은 분들이 Ethereum Whitepaper를 다운 받게 됩니다.
하지만 이 백서 내용 자체를 완전 흡수하신 분은 흔치 않을겁니다.
그리고 끝까지 다 읽지 않았다면, 하지만 여러번 읽으려고 시도를 하셨다면, 적어도 1페이지를 여러번 보신 분들은 많으실 겁니다.
번역서 기준으로 1페이지는 총 3문단 입니다.
그리고 이더리움의 설명은 마지막 단락에서 시작하며, 그 첫 문장은 이렇습니다.

이더리움이 제공하려는 것은 완벽한 튜링완전(Turing-Complete) 프로그래밍 언어가 심어진 블록체인이다.

어쩌면 이더리움을 설명할 가장 중요한 두 단어의 등장입니다.

'튜링완전 프로그래밍 언어', '블록체인'

그리고 오늘 제가 말씀드리려는 건 이 둘 중 '튜링완전언어'입니다.

2. 앨런 튜링(Alan Turing)과 튜링완전(Turing-Complete)언어

'튜링완전언어'를 보기 전에 앨런 튜링(Alan Turing)과 그가 고안한 튜링머신(Turing Machine)에 대해서 정말 간략하게 설명드리겠습니다.

20세기 영국 출신의 수학자인 앨런 튜링은 수학 공식을 이용하여 퍼즐, 암호 등을 푸는데에 가히 천재적인 능력을 가졌던 사람입니다.
그리고 그는 적절한 기억장소와 알고리즘이 주어진다면 어떠한 계산이라도 풀 수 있는 기계를 고안합니다.
물리적 기계가 아닌 이론적 기계였으며, 이를 튜링 머신이라고 부릅니다.
앨런튜링의 이론에 따르면 이 기계는 어떠한 함수식도 풀 수 있다고 하였습니다.
컴퓨터의 발전에 지대한 영향을 미친 이 이론은 향후 프로그래밍 쪽으로도 활용됩니다.

결국 튜링완전한 언어라 함은 해당 프로그래밍 언어가 어떠한 프로그램 혹은 어플리케이션도 만들어 낼 수 있음을 의미합니다.

다시 말해, 프로그래밍으로 모든 것을 구현할 수 있음을 의미하겠죠.

그리고 어떤 계산이라도 풀어내려는 튜링완전언어의 특성상 또 하나의 필수 불가결한 특징이 있습니다.

바로 루프(Loop)입니다.

3. 루프(Loop)

튜링머신은 문제가 완전히 풀릴 때까지 반복하고 돌아갑니다.
반복해서 돌아가는 특징을 우린 루프(Loop)라고 합니다.

튜링머신의 이론에선 끊임없이 시도하는 루프기능은 상당히 유용하고 필수입니다.
하지만 이 특징이 양날의 검이 되기도 하는데요.

루프는 시간 제한이 없습니다.

내려오는 동안 너무 글이 딱딱했으니 한 가지 예시를 들겠습니다.

백화점이나 대형 마트에 들어가는 '자동 출입문'을 생각해볼게요.
백화점 입구의 자동 출입문이 닫히려고 하면, 그 앞에 살짝 다가서서 문이 다시 열리게끔 장난을 치는 아이들을 보신 적 있을겁니다.
자동 출입문은 앞에 사람이 없다고 인식될 때 문이 닫히게끔 되어있으니, 어떤 사람이 앞에 있다고 인식되면 다시 열리게 되어있습니다.
아이들의 의도가 출입이 아닌 단순 장난에 있는데도 자동 출입문은 그 점은 인식하지 못합니다.

'튜링완전언어'는 결국 어떤 문제가 생겨도 이에 대한 의도는 생각치 않고 끝까지 해결하기 위해 돌아갑니다.

누군가 악의적으로 이러한 코드를 대입하여 루프기능을 악용한다면 이는 결국 메인 네트워크에 과부하를 불러일으키고, 더 나아가선 마비가 될 수 있습니다.

4. 수수료(Gas)

이러한 최악의 상황을 피하고자, 이더리움은 각 컴퓨터 코드 작업마다 수수료(gas)를 부과하는 시스템을 도입합니다.
컴퓨터 코드가 실행될 때마다 수수료를 내야 한다면 어떤 개인이 악의적으로 무한루프를 일으킬 코드를 입력할 순 없겠죠.
(그가 아무리 돈이 많다고 하더라도 굉장히 비효율적인 공격입니다.)

즉, 플랫폼으로서 튜링완전프로그래밍 언어를 사용한 이더리움이 양날의 검이 될 수 있는 루프의 악의적인 사용을 방지하고자 각 코드 작업마다 수수료를 부과했다고 보시면 됩니다.

수수료(Gas)에 대해선 다음 글에서 다시 진행하겠습니다^^.

5. 마치며

정확히 말씀드리면 이더리움이 사용하는 프로그래밍 이름은 솔리디티(Solidity)입니다.
너무 깊이 들어갈까봐 딱히 이름을 거론하지 않았지만, 좀 더 전문적으로 공부하고 싶다면 리믹스에서 간단한 코드 작업도 경험할 수 있습니다.
요즘은 워낙 능력자 분들이 많으셔서 스팀잇에도 솔리디티를 어떻게 사용하는지에 대한 글이 올라오더군요.
저 역시도 틈틈히 살펴보며 조금이나마 따라해보려 하고 있습니다.

코인판에 들어오면서 제 모든 여가까지도 코인과 관련되어 사용하는 느낌인데요^^; 공부하다가 쉬실 때 볼만한 영화 한편 추천드립니다.

베네딕트 컴버배치가 앨런 튜링을 맡았던 '이미테이션게임(The Imitation Game)입니다.
영화 자체도 엄청 호평을 받았고, 보시면 앨런 튜링이란 사람에 대해서도 조금은 아실 수 있습니다.
그는 천재적인 수학자였으나, 독이 든 사과를 베어물고 자살하는데요.
애플(Apple)사의 한 입 베어문 사과의 로고가 바로 앨런 튜링을 상징하는 것입니다.
이왕 쉬시는 거 조금은 암호화화폐와 관련있는 걸로 쉬시는게 좋겠죠? :D

최대한 간단히 그리고 가볍게 쓴다는게 내용이 좀 길어졌네요.
부족함이 많은 글이지만 많은 분들께 도움이 됐으면 합니다.
위에서도 말씀드렸지만 틀린 부분은 언제든 지적 부탁드립니다^^;

그럼 오늘 하루도 다들 성투하시길 바라며 이만 물러갑니다^^

*모든 이미지 출처는 네이버입니다.

Sort:  

이래서 가스가 필요한 거군요. 새로운 거 하나 배워갑니다!

ㅎㅎ 도움이 되셨다니 감사합니다!^^

유익한 글 감사합니다
팔로우했어요~ 앞으로도 좋은 글 부탁드립니다!

ㅎㅎ맞팔했습니다^^ 항상 좋을 글 올릴수 있도록 노력하겠습니다~ㅎㅎ

글 잘 봤어요- 힘든시기에 글쓰기가 도움되는것 같다고 개인적으로 생각합니다

Congratulations @jumsun! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @jumsun! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.28
TRX 0.12
JST 0.032
BTC 61672.72
ETH 2996.85
USDT 1.00
SBD 3.78