우선 이더리움은 비트코인과 유사한 방식을 갖고 있다.
이더리움에서는 Ghost Protocol을 적용해서 네트워크 분기를 방지할 수 있다.
이더리움으로 들어가기 전에
다시 비트코인을 떠올리면 Proof of Work(PoW) : 작업증명을 사용한다.
블록을 채굴할 때 본인이 얼마나 노력을 들였나 증명하는 과정이다.
이더리움 작업증명 절차로는,
새로운 블록(a)이 생성됨을 알림을 받으면,
-> 블록 생성을 위해 Tx pool이라는 Mempool에서 pending중인
(아직 블록에 포함되지 못한 트랜잭션) Tx들을 포함을 시킨다.
-> 이전 블록(a)과 Tx들을 포함한 임시의 Block구조(b)를 만든다.
-> 새로운 블록(b)의 Header Hash값이 나올 때까지 brute force 방식으로 nonce를 찾는다.
여기서 중요한 점은,,
비트코인의 경우 target값보다 작은 결과값에 대한 nonce 찾기가 목적이었지만,
이더리움은 정답을 구할 때 연산을 하는 결과값이 타겟값보다 작은 값을 구하게된다.
(아래에 과정 있음)
Block Header Hash와 1씩 계속 증가하는 Nonce를 계산하며 타겟값보다 작은 값을 찾아 nonce를 header에 넣는 과정인 Brute Force은 동일하다.
이더리움은 Ethash라는 PoW 알고리즘을 사용한다.
DAG를 이용하고 메모리 저항을 갖고 있어, 단순 SHA 연산만을 하는 비트코인과 달라 ASIC(Application-Specific Integrated Circuit, 주문형 반도체) 제작이 어렵기 때문에
거의 그래픽카드를 통해 이더리움 블록을 채굴한다.
이더리움의 경우, 메모리 상에 DAG라는 데이터가 있어야지만 작업증명을 진행할 수가 있다. 만약 ASIC 제작 과정에서 DAG를 포함하면 비용을 높여 제작을 어렵게한다.
그렇다고 아예 불가한 것은 아니고, 실제로 이더리움 용으로 제작된 ASIC도 있지만
비용적인 측면에서 일반 그래픽 카드의 채굴보다 크게 이점이 있지않아
대부분은 그래픽 카드를 통해 채굴을 한다.
이더리움은 그럼 왜 어렵게 하나?
비트코인은 중앙화된 기관에서의 채굴 능력치가 너무 높아 개인 채굴이 어렵게 됐다.
이더리움은 개인이 집에서도 채굴할 수 있는 환경을 제공한다.
<동작과정>

Seed Hash라는 값을 통해 DAG라는 파일을 생성한다.
이 파일을 생성해야지 Ethash에 참여할 수 있다.
DAG는 30,000블록마다 업데이트가 되므로 네트워크에 참여하려면 업뎃이 필요함.
과정은 nonce와 header값을 해시해 mixHash를 계산한다.
이 값을 통해 DAG에 일정한 데이터를 요청한다.
그 후 제공받은 데이터와 mixHash를 계산하면 또 mixHash 값이 나오고
그 후 계속 DAG에 데이터 요청을 해 mixHash를 계산하는 과정을 64번을 거친다.
그 후 최종 mixHash를 또 다른 계산을 통해 ethHash값으로 변환하고,
이 값이 Target과 비교를 했을 때 작은 값이 나오면 채굴에 성공을 하는 것이고,
더 큰 값이 나오게되면 비트코인과 동일하게 Nonce를 증가해 반복과정을 거친다.
결론은, 기본적으로 비트코인과 동일한 계산을 거치지만 DAG를 통해서 메모리 저항을 추가했다는 점이다.
이더리움은 mixHash와 Nonce를 블록헤더에 저장한다.
비트코인의 경우, 10분마다 채굴을 지키기 위해 난이도를 조절하는데
2016개의 블록마다 난이도를 재연산한다
이더리움의 경우, 매 블록마다 재계산을 통해 13초의 블록 생성 주기를 유지한다.
ETH, 난이도 계산 방식은 frontier버전에서 ( 간단히 -1 혹은 +1 ) Homestead 으로 바뀜.
이 과정도 비트코인과 유사하다.
이 부분 부터는 비트코인와 다름
-> 기본적인 흐름은 동일하다.
비트코인의 경우,
Longest Chain의 방식을 기용한다.
비트코인 네트워크에서 fork가 발생했을 때 하나의 블록체인을 유지하기 위한 방법이다.
실제 룰은 전체 블록체인 fork 中 가장 많은 컴퓨팅 파워가 사용된 체인이다.
Ghost Protocol을 사용한다.
Greedy Heaviest Object SubTree의 약자로
가장 많은 SubTree를 가진 체인을 선택하는 방식이다.
-> 이를 통해 uncle block에 대한 보상이 생긴다.
왜 SubTree라는 것이 생길까?
이더리움에서는 사이드 chain이라는 uncle block을 기본적으로 인정을 해준다.
그래서 많을 수록 메인 체인이 된다.
네트워크 관점에서 봤을 때, Uncle Block이 많을수록 보안성이 높아서 그렇다.

이 자료의 경우,
비트코인과 이더리움의 각각 다른 기준에서 봤을 때
선택되는 메인 체인이 다르다는 것을 보여준다.
길이로 봤을 때는 5B가 길지만 개수로 봤을 때는 4B가 많다.
공격자의 입장에서,
비트코인 네트워크는 longest chain보다 더 길게 만들면 되지만,
이더리움 네트워크에서는 side chain까지 포함해 더 많이 만들어야 한다.
따라서 이더리움이 조금더 안전한 방식을 갖고 있다.
Ghost Procotol에 따라 Uncle Block을 버리지 않고 헤더에 포함시켜 보상을 제공한다.
채굴자가 Uncle Block을 포함해 블록을 생성한 경우 0.0625ETH를 보상받음.
한 블록에 최대 2개까지 uncle block 포함이 가능하다.
채굴자 : 2ETH + 0.0625ETH * (0,1,2) + 거래 수수료
비트코인에서 Hard Fork, Soft Fork를 구분하고 있다.
이더리움도 Ghost Protocol을 이용해 어느정도 fork를 허용하지만,
전체 체인 자체가 두 개로 분리될 수도 있기 때문에
네트워크에서 Ghost Protocol 체인이 아닌 경우에 메인에 맞춰 재구성할 필요가 있다.
만약 한 노드가 따라가던 메인 체인이 있다가 더 사이드가 많은 체인을 발견했을 때 바로 그 체인으로 변경해 재구성해 나가야 한다.
재구성 과정 속에서 Tx를 비교해 메인의 Tx 中 없는 거래는 LevelDB을 통해 삭제 및 등록을 한다.
한 사례로, 2016년 The Dao라는 서비스가 약 3.6M ETH 탈취 당하는 사건이 발생했다.
이는 저 당시 전체 ETH의 10% 비율을 차지했다.
Smart Contract의 취약점을 공격한 사례다.
이에 따라 거래 롤백(비탈릭 부테린이 제안함)에 따라 Hard Fork가 발생했고,
이에 반대하는 사람들에 의해 네트워크 분리도 발생했다.
기본적인 사람들의 생각은, 블록체인을 쓰는 이유는 거래 삭제가 불가능하기 때문인데 단순하게 해킹이 발생해 거래를 롤백시키면 진정한 블록체인이 맞나? 라는 사람들이 대거 등장했다.
이 사람들이 Ethereum Classic을 사용하게 됐고 롤백 데이터는 Ethereum을 사용했다.
그래서 Ethereum Classicd에는 해킹 자금이 아직 남아있다.
이더리움도 블록체인이기 때문에 사람들의 마음이 맞지 않는 탈중앙화성의 문제인데,
이더리움은 롤백을 진행해서 그 뿐만 아니라 그 전 쓸모없는 account가 생성되며 storageDB가 너무 커져서 그런 account제거하며 해 나가겠다고 보면 된다.
출처)) 자료 및 내용 : 패스트캠퍼스