하드포크를 체험하다 03

in #sct7 years ago

오늘 완전 우울합니다..ㅠㅠ


이거 못가서요
걍 ksc님의 후기나 기다리는 처량한 신세네요

숨어서 콘서트(불법)음성중계나

훔쳐듣다가 멘탈 뽀개졌습니다
차라리 듣지나 말걸-ㅅ-;;

코인 날리는건 익숙해서 '어이쿠! 반토막이구면 껄껄껄'
할 수 있는데 이건 익숙치가 않네요
담을 노려봐야겠습니다. 아직 콘서트는 많이 남았을테니까요

여튼 우울하게 포스팅이나 작성해봅니다.

아래.. 였나? 뭐 중요치도 않고
걍 언젠지 여튼 테라 하드포크하기전에 공지가 날아옵니다


내용은

서버점검이 있겠습니다
580000 블록 - 대략 6월 5일 11시 13분쯤에 체인 멈춥니다
그리고 6월 6일 오후 3시 새로운 체인으로 갈아탈겁니다

라고 적혀있습니다

이는 일반유저에게는

ㅇㅇ게임에서 서버점검으로 잠시 게임접속이 멈추고
내일 몇시에 다시 접속이 가능하겠습니다

라는 것과 체험상 차이가 없지만

적힌 내용처럼 블록체인은 새체인으로 갈아타므로
확실히 하드포크라는 차이점이 있죠

이때 전원이 갈아타지 않으면 구체인과
분리가 되는데 뱃사공이 너무 많았던 과거에는
서로의 연락, 협의, 타이밍 모든게 너무 어려웠고

심지어 파벌을 이루어 업데이트 내용에 대해 싸웠기에
체인이 쪼개질 위험이 있는
하드포크는 매번 공포의 대상이었습니다.

하지만 개발자도 엄청 많고 채굴자도 엄청 많고
전체적으로 각자의 힘이 광범위했던
비트코인이 특별했던거고

이제는 그만큼의 반목, 파벌싸움이 있는 코인은 없습니다

이는 한편으론 비트코인이 가장 탈중앙에 가까웠고
이후의 차세대 블록체인들은 그렇지 않다는걸
역설적으로 증명해주는 얘기죠.

특히 dpos에 들어와서는 이 경향이 매우 강해집니다.

합의를 이룰 사공들이 극단적으로 적어지고
평소에도 서로간에 긴밀한 연락과 이득을 공유한 결과
하드포크가 파벌싸움으로 갈라질 위험은 거의 없어졌죠

그리고 테라처럼 외부서비스를 연결해줄 강력한
기반리더가 있을 경우
그를 거부할 바보 같은 사공이 있을리가 없습니다
반드시 따르게 되어 있죠.


그러므로 테라운영, 개발측에서의
업데이트는 절대적이며 모든 사공(벨리데이터)들은
일사분란하게 따르게 됩니다.

그래서 위에서 말했듯이
일반유저의 체험상 하드포크는 일반 서버점검후 업데이트랑
다르지 않게 되는거죠.
이는 스팀의 하드포크가 20번이나 이뤄졌음에도
했는지도 모르는 유저가 다수인걸 보면 알 수 있습니다

하지만 밸리들은 자신들이 직접 하드포크 당사자이므로
유저들처럼 멍하니 있을 순 없습니다.
노를 바꾸고 지시에 따라 열심히 저어야하죠.

이제부턴 제가 체험한 하드포크의 과정입니다.

첫번째로
위의 공지처럼 580000 블록을 지나게 되면


(가장 오른쪽 %는 가동률)

하나둘 체인을 멈추고(서버를 정지시키고)
업데이트를 적용하기 시작합니다.
(당연하지만 체인돌리면서 업데이트는 안됩니다)

하지만 분산서버이므로
중앙처럼 서버를 동시에 멈추는 것은 안됩니다.
한명이라도 돌리고 있으면 그냥 돌아가죠.

그래서 일반 서버와 달리
'580000 블록' 같이 어느 블록에서 업뎃이 적용되는지
기준을 세웁니다.

이말은 580000 블록까지의 기록만을 가지고 가서
새로운 체인, 즉 새서버에 적용시킨다는 얘기입니다.
만약 580001 블록에서 A가 B에게 천만원을 전송한 기록 있고
B가 그 기록을 바탕으로 천만원짜리 물건을 건네줬다면

새로운 서버에서는 580000까지의 기록만 있으므로
A는 여전히 천만원을 가진 상태고 B는 받지 못한게 됩니다
고로 A가 오리발 내밀면 B는 망하는거죠
이것이 포크의 위험성 중 하나입니다

그래서 거래소들은 하드포크의 예고를 접수하면
해당 기간동안 입출금을 금지시킵니다.
무효거래를 이용해서 먹튀하는 것을 막기위해서죠

밸리들은 각자 서버를 멈추고 업뎃을 시작합니다.

업뎃은 업뎃을 주최하는 측이
상세한 메뉴얼을 제공하는 것이 관례입니다.

https://github.com/terra-project/launch/wiki/Columbus-2-Upgrade-Instructions

테라역시 상세한 메뉴얼을 전달했죠


메뉴얼에 따라 그대로 따라하기만 하면됩니다.
또한 제대로 따라했는지
확인법도 제공합니다

파일들은 각자의 고유한 지문을 추출할 수 있는데(hash)
0.000000001 바이트라도 틀리면
지문이 완전히 달라지게 됩니다.

그래서 업데이트한 파일의 지문을 올려놓습니다.
업데이트를 진행하는 측에선
업데이트가 제대로 진행되었는지

지문을 추출해서 메뉴얼상의 지문과 비교하면 되죠.

go.sum hash: 66dc7d804e4b546420aa507f5e7f861f0e6ed5de1ee3428276f3e5e0858f37f7

66d... 7f7 의 지문이 완벽히 일치하므로
업데이트는 제대로 된 것입니다.

그 다음엔

terrad export --for-zero-height --height=580000 > columbus-1-genesis-export.json

이 명령어로 0~580000 블록의 마지막 상태를 추출합니다
만약 내 계좌가 만원 -> 10만원 -> 5만원
이렇게 변화해왔다면

내 계좌 : 5만원

이런식으로 내 계좌의 마지막 상태를 얻을 수 있습니다

이 상태기록은 다음에 시작할 체인의 최초기록이 됩니다.
이를 Genesis (창세기록)이라고 칭합니다.

자 그럼
서버프로그램을 업데이트 하고
다음 체인의 시작 파일 genesis 도 만들었습니다

마지막으로 해줄 준비는

이전의 블록체인을 비워주는 일입니다.

terrad unsafe-reset-all

이제 새로운 기반과 새로운 기록프로그램으로
새로운 형식의 블록체인이 만들어질테니
이전의 블록체인은 필요없는 것이죠.

준비가 끝났습니다.

terrad start

남은건 약조한 시간에 모든 서버들이 일제히 런칭하는
것뿐이죠. 런칭 시간은 genensis 파일에 이미
개발측이 예정한 시간이 적혀져 있습니다.

(위는 이전 블록체인의 genesis 파일로써
4월 24일 6시로 적혀있네요)

그리고 6월 6일 오후 3시
테라의 두번째 체인은 성공적인 런칭을 했으며

현재 1만 8천개 이상의 블록을 쌓고 있는 중입니다 :)

Sort:  

제작년 비코 하드포크 대란이 떠오르는 군요.
그때에 비하면 참 많이도 변했습니다.

그땐 멸망분위기이기도 했지만 나름 재밌었는데 ㅎㅎ
지금은 재미가 없네요ㅡ,.ㅡ

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.082
BTC 60611.25
ETH 1557.26
USDT 1.00
SBD 0.50