그렇다면 현재 내 부족한 실력을 늘리기 위해 어떤걸 해야 할까? 객관적인 피드백은 어렵겠지만 현재 내가 부족하다고 느끼는 것들은 다음과 같다.
내가 지금까지 읽었던 레포트의 수는 얼마 안 된다. 따라서 당연히 취약점이 어떤 게 있는지 모르는 것들이 많다. 단순히 레포트를 많이 읽는다고 해서 나중에 그 코드를 보고 취약점을 그대로 찾아낼 거라는 생각은 안 한다. 취약점 사례를 보더라도 해당 코드를 제대로 이해했는지, 다음에 코드를 봤을 때 그 취약점을 찾아낼 수 있는지가 중요하다. 따라서 앞으로 레포트를 읽을 때의 우선 순위는 다음과 같다.
- 취약점으로 이어진 코드가 어떤 역할을 하고 있는지 다른 사람에게 설명할 수 있는가?
- 취약점의 원인이 정확히 무엇인지 이해했는가? 두루뭉술하게 이해한 것 말고 진짜로 이해했다고 자신있게 말할 수 있는가?
- 다음에 비슷하게 짜여진 코드를 볼 때 취약점을 발견할 수 있는가? 그렇게 하려면 어떻게 해야 하는가?
- 취약점을 valid 하다고 판단할 수 있는 테스트코드 또는 PoC를 구현할 수 있는가?
기준이 조금 빡빡하다고 느껴질 수 있지만 정말 실력을 올리고 싶다면 최소한 이렇게 기준을 잡고 가는 것이 맞다고 생각한다. 이후 취약점 사례들을 범주화 해서 카테고리 별로 나눌 수 있는 정도까지 실력을 올리는 것이 목표다.
항상 느끼는 거지만 현재 나는 PoC를 구현하는 능력이 부족하다. 이에 대한 해답은 사실 명확하다. 많이 해보는 수 밖에 없다. 구현 해보고 막히는 부분이 있으면 수정도 해보고 계속 해봐야 한다. 테스트 코드는 foundry로 계속 하고 이전에 글을 썼던 것처럼 과거 해킹 사례들을 재구현 하는 하는 식으로 PoC를 작성해보는 것이 많이 도움이 될 것 같다. DeFiHackLabs에 올라오는 lesson들도 따라해보고 SunSec이 올려준 과거 디파이 해킹 분석 케이스를 학습해보면 좋을 것 같다. 노션으로 정리가 잘 되어있고, PoC랑 테스트 코드도 이미 구현이 되어있어서 정말 좋은 소스라고 생각한다.
이더리움만큼 프로포절이 잘 되어 있는 곳은 못 봤다. 큼지막한 변화는 이더리움에서부터 시작된다는 말이 과언이 아닐 정도로 그만큼 이더리움은 블록체인 씬에서 핵심적인 역할을 맡고 있다. EIP는 이더리움의 변화가 시작되는 곳이고 현재 우리가 사용하고 있는 틀을 만들었다. 이더리움을 사용한다면 주요 EIP의 내용은 제대로 알고 있어야 한다고 생각한다. 원래는 이런 생각이 없었는데 rkm님의 추천을 받아서 핵심적인 EIP에 대해 살펴보려 한다. 프로포절 수가 워낙 많아서 다 보는 것은 어렵고 굵직한 것들 위주로 볼 계획이다. 아마 안수빈님의 블로그를 많이 참고할 것 같다.
2018년도 또는 그 이전에 만들어진 근본 프로젝트들이 있다. 유니스왑, 컴파운드, 오픈씨 등 큰 사고 없이 현재까지 dApp 순위의 상위권을 차지하고 있는 프로젝트들이다. 많은 프로젝트들은 안전성의 이유로 위 프로젝트들을 fork 해서 출시하고 있고 앞으로도 이러한 경향이 유지될 것이다. 오딧도 여러 번 받았기 때문에 코드베이스가 탄탄한 것은 물론이고 코드들을 보면서 배우는 게 많을 것이다. 아마 오픈씨 코드는 체인의 정석님 미디엄을 많이 참고할 것 같다.
아무래도 현업을 같이 하면서 휴무일에 하는 거다 보니 모두 다 완벽하게 할 수는 없을 거다. 하지만 그렇다고 이런 저런 핑계를 대면서 나에게 면죄부를 주고 싶진 않다. 실력을 키우고 싶으면 고생도 하고 구르면서 배우는 게 당연하다. 최대한 내가 설정한 목표에 가깝게 성취를 가져가려면 어떻게 해야할까? 단순히 목표만 세운다고 해서 될 일은 아니다. 중요한 것은 시스템을 설계하는 것이다. 내 의지와 에너지에 기대지 않고 그냥 짜여진 시스템에 내 몸을 맡기면 자연스레(?) 성취를 할 수 있도록 설계해야 한다.
뜬금 없지만 Not To Do List를 작성해봤다.
- 휴무일 오전에는 스마트폰을 보지 않는다.
- 유튜브 쇼츠 절대 금지
- 11시 이후 수면 하지 않기
- 점심 먹으면서 영상 보지 않기
시관관리도 중요하지만 주의력 관리가 더 중요하다고 생각한다. 특히 스마트폰에 주의력을 뺏기기 시작하면 다시 집중하기가 굉장히 어렵다. 다소 극단적이지만 스마트폰을 상자에 넣어둘 생각이다. 오전에는 최대한 레포트를 읽으면서 취약점에 익숙해지는 것을 목표로 하고, 오후에는 DeFiHackLabs의 PoC를 재구현해보면서 테스트코드와 PoC 구현 능력을 올릴 계획이다. 저녁 이후에는 조금 릴렉스한 마음으로 안수빈님의 블로그와 체인의 정석님의 미디엄을 볼 예정이다. 하루에 레포트 몇 개 읽기, PoC 몇 개 재구현 해보기 등 이런 식으로 하면 완전히 이해하고 넘어가기 보다 갯수 채우는데 급급할 것 같아서 최대한 다른 것에 시간을 뺏기지 않으면서 1,2,3,4에 시간을 쏟는 것이 더 나을 것 같다.