별 내용이 아니고 특별히 자랑할 내용도 아닙니다만,
제가 지금까지 이더리움 소스코드에 제출한 PR이 총 8개인데, 이중에 받아들여진것만 6개, 그중에 3개가 지난주에 받아들여졌습니다.
https://github.com/ethereum/go-ethereum/pulls?q=is%3Apr+author%3Ahackmod+is%3Aclosed
총 8개 중에 6개 받아들여졌고, 받아들여진 것중에 2개가 오탈자 수정이고 나머지도 그다지 실속은 없습니다만,
몇가지만 설명해 드리자면,
- 주석내 오탈자(typo) 수정 - 이더리움 개발자는 오탈자 수정의 PR에 대해서 상당히 관대하더군요. 제가 제출한 것은 지금까지 2개
- JSON-RPC 수정 - 지갑의 잔액을 확인하는 getBalance() rpc method를 이용해서 1만 계정의 잔액을 확인하려면, 1만회의 json-rpc 요청을 할 것이 아니라 json rpc 배치요청을 만들어 단 1회의 요청으로 1만개의 계정 잔액을 한번에 가져오면 성능이 획기적으로 향상됩니다.
그런데 이더리움 소스코드는 DDoS를 막는다는 이유로 제한이 걸려있어서, 1만회의 getBalance()를 하나의 batch request로 만들면 그 사이즈가 커지는데, 이 사이즈에 대한 제한이 걸려있어서 실행 자체가 안되고 있더군요.
이것은 세준풀 @컴빠 님과 톱마이닝의 @쌩광부 님과 제가 geth/gesn json-rpc 성능 문제에 대해서 디스코드에서 토론하다가 발견한 문제이고, 비록 이 문제는 json-rpc 요청(request) 사이즈를 늘리는 간단한 패치이기는 하나, 이 간단한 패치를 통해서 계정 잔액을 가져오는 기능을 개선할 수 있게 되었습니다.
(https://github.com/ethereum/go-ethereum/pull/17595 참조)
- eth_chainId() - 이것은 이더리움 클래식 포크 이후에 chainId를 도입하여 리플레이 프로텍션을 지원하면서, 네트워크의 chainId값을 가져오는 json-rpc 입니다. 이 문제는 꽤 오래전에 이더리움 클래식 개발자 @whilei씨에 의해 https://github.com/ethereum/go-ethereum/pull/15002 제안되어졌지만, 제대로 반영되어있지 않고 있었는데, 이 오래된 PR을 발굴(?)해서 살짝 고쳐서 최신 이더리움 소스에 적용시킨 패치입니다. 이로써 이더리움 클라이언트 parity를 비롯해서, geth도 chainId()를 손쉽게(?) 가져올 수 있게 되어, 메타마스크 등의 지갑에서 다른 이더리움 소스기반 코인을 보다 쉽게 지원할 수 있는 가능성이 열렸습니다~ (chainId 관련 문제는 이미 @천재성곤 님이 메타마스크 문제를 해결하기 위해 도입한 방식에서 이미 지적하신 문제이기도 하죠. )
이렇듯 ESN을 직접 운용하면서 여러가지 서비스를 실제로 운용하다가 보니, 이더리움 소스코드 그 자체가 저희 수준에서 개선할 수 있는 부분이 분명히 있다는 사실을 다시 한번 알게 되었으며, ESN팀과 저희 커뮤니티 개발자는 앞으로도 ESN최적화를 위해서 꾸준히 이더리움 소스코드에 기여하도록 노력할 것을 강조해서 말씀드립니다~
참고 스샷 (https://github.com/ethereum/go-ethereum/pulse ) 저의 깃허브 개발자 계정이 hackmod입니다~