본문 바로가기
암호화폐

이더리움(Ethereum, ETH)의 알고리즘

by Windy 2021. 6. 30.
반응형

"생각없이 읽다보면 재미있는 금융지식!"

 

이번 포스팅에서는 이더리움(Ethereum, ETH)

알고리즘에 대해 알아보고자 합니다.

 

이더리움(Ethereum, ETH)은

비트코인에 이어 2세대 암호화폐로 알려져 있는데요!

이유는 스마트 컨트랙트(Smart Contract)를 가능하게 했기 때문입니다.

이더리움(Ethereum, ETH)은 튜링 완전성(Turing Completeness)을 갖고 있다고 할 수있죠.!

 

 

 

비트코인 알고리즘과의 차이점 중 대표적인 것은

1. 스마트 컨트랙트(Smart Contract)

2. 잔액 증명방식

3. 작업증명(PoW)과정

4. 노드 선택알고리즘 입니다.

 

 

 

우선, 가장 중요한

1. 스마트 컨트랙트(Smart Contract) 부터 알아봅시다.

 

 

스마트 컨트랙트(Smart Contract)

이더리움 위에서 코드로 설계가 가능하도록 만든 것입니다.

 

 

예를들어

 

 

비트코인과 다르게

이더리움 위에서는

1부터 100까지를 더하라! 라는 코드를 짤 수 있습니다.

 

 

 

좀 더 쉽게 설명하면

(실제와는 다른 이야기지만)

사과를 주면 이더리움을 줄게!

라는 거래를 자동적으로 설계 할 수 있다는 얘기 입니다.!

 

 

 

 

이 스마트 컨트랙트가 엄청난 이유가 무엇이냐면!

 

이는 이더리움을 기반으로하는 수많은 DAPP(Decentralized Application)들을 만들 수 있도록 했습니다.!

이를 통해 이더리움을 기반으로한 NFT(Non-fungible Token)이나,

Defi(Decentralized Finance, 탈중앙화 금융)이 태동되도록 만들었습니다.!

 

 

이 코드에서 중요한 것은 바로

무한 루프(Loop)를 금지 시켜야한다는 점인데요...!

(혹은, 원할 때 멈추어야한다)

 

왜냐하면 이 무한루프를 통해 악의적인 공격을 할 수 있기 때문입니다.!

무한 루프문이 가능하다면 DOS공격(Denial-of-Service attack)이 가능하기 때문이죠!

(그래서 비트코인은 DOS공격 방지를 위해 스마트 컨트랙트가 없습니다.!)

 

 

따라서 이더리움은 가스비!(Gas Fee)라는 것을 도입하게 되었습니다.!

이더리움위에서 특정 연산을 하려면 가스비(Gas Fee)가 들도록 설계하여

무한 루프를 방지한 것이죠.!

 

이렇게 코드를 통해 여러 문제들을 해결할 수 있음을

튜링 완전성(Turing Completeness)이라고 합니다.

(스스로 문제를 풀수 있다는 뜻. 그냥.. 쉽게말해 코딩으로 자동화 가능하다는 뜻.)

 

 

따라서, 코드를 비효율적으로 짜면,

가스비가 늘어나기 때문에

자연스레 이더리움 코드들은 효율적으로 짜게 유도하도록 만들었습니다.!

 

 

 

아래는 이더리움 가스비를 조회 할 수 있는 사이트입니다.!

https://etherscan.io/gastracker

 

Ethereum Gas Tracker | Etherscan

Gas Snapshot Price at 6/29/2021 6:55:29 AM UTC - Low: 4 gwei | Avg: 10 gwei | High: 12 gwei

etherscan.io

 

가스비의 단위는 Gwei로

1Gwei = 0.000000001 ETH 입니다.

wei의 기가G라는 의미입니다.

 

 

또한, 가스비를 많이 낼 수록 트랜잭션을 먼저 처리해 주는데요.!

 

 

이러한 가스비(Gas Fee)는

이더리움(Ethereum)에서 수 많은

DAPP(Decentralized Application)들이 작동하도록 만들었지만

새로운 문제점들을 낳기 시작 했습니다.

 

 

도지코인이나 시바이누코인 등 밈(Meme)토큰 들이 난무할때

이 거래들을 처리하기위해 크나큰 가스비들이 필요했다는 것이고,

다른 DAPP(DecentralizedApplication)들을 작동할 때도

엄청난 가스비를 소모하게 된 것이죠

 

 

아래의 6월 28일 처럼 가상화폐 등락이 심할 때도 가스비가 많이 올라갑니다!

6월 마지막주 가스비 추이 (출처: ethereumprice.org)

 

 

이를 해결하기 위해 여러 새로운 코인들

ADA(Cardano), DOT(Polkadot) 같은 새로운 메인넷들이 등장하기도 하였고

혹은, 이더리움 위에 새로운 층(Layer 2) 을 도입하여 해결하고자 하였습니다.

(자세한 이야기들은 다음시간에 만나요.!)

 

 

이러한 문제에도 불구하고 스마트 컨트랙트 도입으로

가장 탈 중앙화 된 암호화폐로 남아 있는 이더리움(Ethereum, ETH) 입니다!

 

 

 

 

 

2. 잔액증명 방식

 

비트코인은 UTXO라는 개념을 통해 잔액을 검증하고 전달했습니다.!

이해가 안가신다면!

2021.05.15 - [암호화폐] - 비트코인의 이중지불 방지 알고리즘

을 읽고 와주세요.!

 

 

반면, 이더리움은 새로운 방식의 잔액증명을 도입했는데요.!

 

크게 두가지입니다.

EOA(Externally Owned Accounts)

CA(Conctract Accounts)

 

 

EOA는 은행 계좌 같은 역할

각각의 합산이 아닌

10원을 소유하고 있다면 10원으로 표기하게됩니다.

(반면, 비트코인의 UTXO는 UTXO잔액의 합으로 표기)

 

 

CA는 스마트 컨트랙트를 실행하기 위한 계좌

예를 들어

 

"내일 비가온다면, Windy에게 100 ETH를 송금해라!"

라는 메세지를 작성하면

 

Windy의 CA에 이러한 정보가 담겨있게 되고 

비가와서 이 계약이 실행 되는 순간

100 ETH가 Windy의 EOA로 이동됩니다.

 

 

 

 

3. 작업증명(PoW)

 

이더리움은 비트코인 처럼 작업증명(Proof of Work, PoW)을 사용합니다.

비트코인과 다른게 있다면

비트코인이 중앙화되는 것을 보며 이를 방지하고자 

ASIC(Application-Specific Integrated Circuit)채굴에 저항을 가지는

메모리 채굴방식을 사용합니다!

즉, 쉽게말해서 그래픽 카드로 채굴하는 GPU 채굴방식을 사용합니다.

 

Ethash 라는 알고리즘을 사용하는데요!

 

DAG(Diretec Acyclic Graph)를 메모리에 형성하여 

비트코인처럼 해시함수를 풀게 됩니다.

이더리움 등의 2세대 암호화폐들은

블록높이가 높게 형성될수록 이 DAG가 커지게끔 설계되어 있습니다.

즉, 지금 사용하고있는 GPU의 메모리가 작다면 곧 이더리움 채굴이 불가하다는 뜻입니다.

 

 

DAG사이즈와 예상 시점을 확인 할 수 있는 사이트입니다.

현재 이더는 4.3GB로  4.3GB이하의 메모리를 가진 GPU로는 채굴이 불가합니다.!

https://minerstat.com/dag-size-calculator

 

DAG size calculator and calendar | minerstat

Calculate your DAG size and navigate through DAG calendar and learn about epoch and DAG sizes of 25 coins.

minerstat.com

 

 

그리고 곧, 이더리움은 PoW에서

PoS(Proof of Stake, 지분증명)으로 전환될 예정인데요.!

 

 

PoS(Proof of Stake, 지분증명)은 기존에 가지고 있던 코인들을 증명에 사용하는 방식입니다.

지분증명에 코인을 사용하는것을 스테이킹(Staking)이라고 하는데요.!

 

 

예를 들어, 내가 100DOT를 스테이킹했다고 하면 이중에서 

랜덤하게 몇개의 DOT를 골라

DOT블록체인의 검증에 사용하고

이를 보상해주는 시스템입니다.

 

 

물론 100DOT을 스테이킹한 사람이 가짜블록을 생성한 후

스테이킹한 DOT을 검증에 사용하여

DOT블록체인을 해킹할 가능성이 존재하지만,

이는 맡겨둔 100DOT의 값어치를 떨어뜨리기 때문에 해킹을 할 유인이 줄어듭니다.

 

이러한 알고리즘을 통해 블록을 검증하는 방식을 PoS라고합니다.

 

 

 

 

 

4. 노드선택 알고리즘

 

 

비트코인이 사용했던 Long노드 선택과는 달리 이더리움은

GHOST(Greedy Heaviest Object SubTree) 방식의 노드선택을 합니다.

 

 

가장 긴 블럭이 아닌 Uncle 블록이 가장 많이 딸린 노드를 선택합니다.

이외에도 엉클블록에 제한이 있습니다.

 

 

왜 이러한 노드선택을 하느냐고 하면

 

비트코인과 다르게 이더리움은 블록생성속도가 엄청 빠릅니다.

(평균 15초 정도, 비트코인은 10분) 

 

그렇게 되면 1B에서 나온 것 처럼

여러 자손들이 등장할 가능성이 존재하고

이중에 나머지 블록들은 버려지게 되는데

 

나머지 블록들에 대한 검증을 하는데 들어간 PoW 전력 낭비가 있고,

또 블록생성이 쉬우므로 해킹을 당할 가능성이 매우 크게 존재합니다.

 

 

따라서, 이를 해결하고자 나온것이 GHOST(Greedy Heaviest Object SubTree) 프로토콜 입니다.

 

 

즉 아래 사진에서 비트코인은 공격당할경우 아래 빨간색의 노드를 채택하게 되는데 반해

이더리움은 가운데 4B가 포함된 노드를 선택하게 됩니다.

이는 다른 사람들이 참여해서 검증했을 확률이 높기 때문이죠.!

출처: https://eprint.iacr.org/2013/881.pdf

 

이더리움은 Uncle 블록에도 보상을 해줍니다.

하지만, Uncle 블록에 딸린 트랜잭션은 모두 취소됩니다.

 

 

 

 

이상으로 이번 글에서는 이더리움(Ethereum, ETH)에 대해 알아보았습니다.

반응형

댓글