Status.im ICO 때 이더리움 채굴자들은 왜 블럭에 거래를 포함하지 않았나!

loum(59)
Published in
#kr
Words
387
Reading
2 min
Listen
Play
9y

Status.im 의 ICO 때 거래가 동시에 발생해서 거래 불능 사태가 벌어졌다.

이것의 근본 원인은 이더리움이 개스의 총량을 제한하는 네트워크 보안 정책 때문이었다.

하지만, 이것 외의 다른 원인은 일부 채굴자들이 블럭에 거래를 전혀 포함시키지 않은이기적 채굴(selfish mining)을 했기 때문이었다.

즉, Status.im ICO 때 블럭에 거래를 포함하지 않는 블럭이 간혹 있었다.

이와 같은 현상이 일어난 원인을 알아보자.


아래 그림1은 status.im ICO가 진행될 때 이더리움 블럭의 목록을 보여준다.

1.png

이 그림 1에서 주목할 것은 txn 이 zero인 블럭, 즉 거래를 전혀 포함하지 않은 블럭이 두개가 있다는 것이다.

이 그림 1에서 또 하나 주목할 것은 보상(reward)이 약 5.2 이더이고, 이때 5이더는 블럭 보상이고, 0.2 이더가 거래 수수료 보상이라는 것이다.

그러므로 이더리움의 거래수수료는 블럭 보상 대비 0.2/5*100 = 4% 정도이다.

아래의 그림 2는 3,904,573 블럭의 거래를 보여준다. 이 거래는 그림 1의 두번째 블럭의 거래 목록이다.

2.png

그림 2에서 주목할 것은 이 거래는 모두 StatusClowdsale, 즉 ICO에 참여한 거래라는 것이다.

아래 그림 3은 Status.im의 스마트 컨트랙트 소스 코드를 보여준다.

4.png

그림 3의 소스 코드의 길이는 총 1,843 줄인 것을 볼 수 있다.

위의 그림에서 본인이 유추한 것은 채굴자는 자신에게 더 많은 보상이 주어지는 채굴 방법을 선택할 것이라는 것이다.

만일 채굴자가 거래를 포함하여 블럭을 생성하면, 블럭 보상 5 이더에 거래 수수료로 약 0.2 이더가 더 주어진다.

하지만, 이와 반대로, 만일 채굴자가 블럭에 거래를 포함시키지 않고 블럭을 생성하면, 보상은 5 이더이다.

그렇지만, 이 경우 거래에 포함된 컨트랙트를 실행할 필요가 없이 블럭을 생성할 수 있기 때문에 더 빨리 블럭을 만들 수 있다.

따라서 만일 거래를 포함하지 않은 블럭이 거래를 포함한 블럭보다 확률적으로 보상이 더 많다면, 채굴자는 거래를 포함하지 않은 블럭을 만들려고 노력할 것이다.

즉, 이것이 이기적 마이닝(selfish mining)인 것이다.

이더리움 블럭에 거래를 포함하지 않은 이유는 아마도 채굴자가 거래를 포함하지 않고 블럭을 만드는 것이 채굴자에게 더 이익이 되는 것으로 판단했을 가능성이 있다.

이것이 작업증명(PoW)의 함정이다.

즉, 작업 증명은 블럭을 빨리 찾는 것이 목적이므로, 계산량이 많은 거래는 블럭에 포함하지 않고 블럭을 만들면 블럭을 찾을 확률이 더 높아질 가능성이 있는 것이다.

이런 측면에서 컨트랙트가 포함된 거래는 기본적인 이체 거래에 비해서 더 많은 계산을 해야 하므로, 채굴자들이 이런 거래를 싫어할 가능성이 있다.

즉, 이더리움에서 거래에 컨트랙트가 포함된 경우, 채굴자가 추가적으로 컨트랙트를 실행해야 하기 때문에 이것이 계산량을 증가시키고 블럭을 찾을 확률을 낮추는 것으로 생각할 수 있다.

아마도, 이런 이유 때문에 채굴자들이 거래가 없는 블럭을 생성하였을 것이다.

이와 비교하기 위해서, 아래 그림 4는 비트코인의 블럭 크기를 보여준다.

이더리움과 달리, 그림 4에서 비트코인 블럭은 모두 블럭의 최대 크기인 1MB의 크기를 가진다.

즉 거래를 모두 채워서 블럭을 만들고 있다.

5.png

아래 그림 5는 비트코인 블럭에 포함된 보상을 보여준다.

6.png

그림에서 블럭 보상은 12.5 비트코인이고, 거래 수수료 보상은 약 3.6 비트코인이다.

거래 수수료 보상은 블럭 보상 대비 3.6/12.5 = 28.8% 에 해당한다.

비트코인 거래의 경우 평균적인 거래 수수료는 일반적으로 약 1.5~3 비코 사이이다.

따라서 거래수수료와 블럭보상의 비율이 상당히 높아서 비트코인의 경우 거래를 최대한 포함하고 블럭을 만드는 것이 채굴자에게 유리할 수 있다.

또한 비트코인은 이더리움과 같이 컨트랙트를 추가적으로 실행할 필요도 없다.

이 때문에 비트코인 블럭은 최대로 많은 거래를 포함하고 있는 것이다.