[블록체인 스터디] 이더리움 작동원리의 이해 - 땡글 블록체인 강의(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](https://steemitimages.com/0x0/https://cdn.steemitimages.com/DQmSWFqHbWMJhoaceti1F1qUSYvUjC7zLPUnchX8DLRRAph/%EC%82%AC%EB%B3%B8%20-7fed16dd8192c5b969afcbc9999b05c7%20(1).gif)
잘읽고 갑니다 즐거운 하루되세요🤗
넵 감사합니다^^
짱짱맨 호출에 출동했습니다!!