이댕댕 avatar

[블록체인 스터디] 이더리움 작동원리의 이해 - 땡글 블록체인 강의(2)

dangdang

Published: 04 Jun 2018 › Updated: 04 Jun 2018[블록체인 스터디] 이더리움 작동원리의 이해 - 땡글 블록체인 강의(2)

[블록체인 스터디] 이더리움 작동원리의 이해 - 땡글 블록체인 강의(2)

안녕하세요! 이댕댕입니다. 원래 전의 포스팅에 이어서 바로 강의를 보고 포스팅하려고 했는데, 어쩌다보니 4일이나 늦게 되었네요ㅠㅠ 좀 더 부지런하게 활동하겠습니다.

Gas

가스의 세부적인 내용입니다. 전에 트렌젝션을 실행시킬 때, 저장되는 데에도 수수료가 발생하는 것을 확인할 수 있습니다. 다만 위 그림처럼, 트렌젝션에 저장을 지우는 단계가 포함되어 있으면 수수료를 환불받을 수 있습니다. 이더리움의 수수료가 비싸므로 Dapp을 구현할 때, 저장을 지우는 단계를 고려해봐야겠네요.

Block Gas limit이 있습니다. 전체 한 블록에 저장될 수 있는 gas의 한도입니다. 강의 찍을 때 기준으로 대략 319개의 트렌젝션을 한 블록에 담을 수 있네요. 트렌젝션을 만들때 gas limit을 너무 크게 잡으면 튕기는 경우가 있다고 했는데, block gas limit이 있어서 해당 트렌젝션의 gas limit이 너무 크면 채굴자가 다음 블록으로 해당 트렌젝션을 넘길 수 있기 때문입니다. 또한, gas limit이 너무 크더라도 실제 사용되는 gas가 큰 차이로 적으면 채굴자에게 선택을 받지 못할 수 있습니다.

Message

메세지를 서명이 들어간 signed message와 서명이 안 들어간 unsigned message로 구분할 수 있습니다. 외부 소유 계정(EOA)는 사람의 서명이 있어야 한다고 했죠? EOA에서 CA(계약 계정)이나 다른 EOA로 메세지를 보내는 것이 signed message 입니다.
CA는 EOA의 메세지를 받아야 메세지를 보내든 트렌젝션을 만들 수 있습니다. 외부 message를 받아 CA가 보내는 메세지가 있을 때, 이 메세지를 unsigned message라 합니다. 다른 말로는 internal transaction이라고도 합니다. 외부 계정에서 보내는 트렌젝션을 일반적으로 단순히 transaction이라고 부릅니다.

Transaction

트렌젝션 과정입니다. 트렌젝션을 코드로 본 거는 저도 처음이네요ㅎㅎRaw 트렌젝션을 해시화하고, 개인키로 서명을 하면 Signed 트렌젝션이 생성됩니다. 이 트렌젝션을 다시 해시화하면 트렌젝션 ID가 생성됩니다.

Block 구조

다음과 같이 크게 블록은 헤더와 콘텐츠(바디)로 구성되어있습니다. Prev Hash는 앞 블록의 바디가 아닌 헤더의 해시를 담습니다. Uncles Hash도 uncle들 list의 해시를 담고 있습니다. Beneficiary는 마이너가 보상을 받는 구조이고, Extra Data는 추가로 data를 쓸 수 있는데 보통 마이너가 무슨 풀에서 채굴했다고 적는다고 합니다.
Nonce는 마이너가 논스값을 임의로 변경시켜가며 채굴을 할 때 사용합니다.

채굴과정(PoW)

여기서 다시보니, Prev Hash에 블록 헤더의 모든 정보를 담아 해시하는 것이 아닌 헤더의 타임스탬프, prev Hash, Nonce, Merkle Root 4가지 정보를 담아 해시를 만드네요. 이 prev hash와 트렌젝션의 머클루트를 넣고, 논스값을 임의로 조절하여 해시했을 때, 해시값이 2^256/난이도 이하이면 채굴에 성공한 것입니다. 난이도가 올라갈수록 기준점이 낮아지니깐 더 어려워지게 되는 것이죠ㅎㅎ

정리

어떤 트렌젝션을 보낸다고 생각합시다. 우선 계정을 살펴보면 랜덤으로 개인키가 생성되고 이를 바탕으로 공개키와 계정 주소가 생성됩니다. 이 개인키로 raw 트렌젝션에 서명을 함으로써 signed 트렌젝션이 만들어집니다. 이러한 트렌젝션들은 트렌젝션 풀이라는 임의의 공간에 담깁니다.

마이너는 이런 트렌젝션 풀에서 트렌젝션들을 가져와 수수료에 따라서 State DB에 정리합니다. 그리고, Pow로 블록을 생성하고, 이 블록을 모든 노드에 전파하게 되서 블록 생성이 완성됩니다.

마치며

좋은 강의를 만들어주신 땡글 민빠님에게 감사합니다. 저도 애매한 개념들을 정리하고, 잘 몰랐던 머클 패트리샤 구조나 계정 사이의 구분, State 개념에 대해서 공부를 할 수 있었습니다. 제가 정리한 것 외에도 많은 좋은 의견, 정보 등이 강의에 담겨있으니 강의를 들어보시는 것을 추천합니다!
`

EOS이 곧 출시된다고 하죠? 그렇지만 이더리움도 지속적인 업데이트를 거치며 앞으로도 중요한 블록체인 플랫폼으로 남아있을 거라고 생각합니다. 이렇게 이더리움의 작동 원리에 대해서 정리해보는 시간을 가져보았습니다.


그럼 이댕댕으로 놀러왕~!

사본 -7fed16dd8192c5b969afcbc9999b05c7 (1).gif

Leave [블록체인 스터디] 이더리움 작동원리의 이해 - 땡글 블록체인 강의(2) to:

Written by

블록체인/웹쪽 공부/리뷰를 할 예정입니다.

Read more #kr posts


Best Posts From 이댕댕

We have not curated any of dangdang's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From 이댕댕