hdac 코인 풀소스의 오리지널 소스코드는? (수정 #2)
hdac코인의 메인넷이 드디어 공개(?)되었습니다.
현대라는 이름에 걸맞게 좀 더 그럴듯할 줄 알았는데, 아니... 이런.. 메인넷이 시작이 된 것이, 8만블록이 선채굴된채로 공개되었습니다. 이미 채굴이 되고 있는 채로...
더군다나, 소스코드는 전혀 공개되지 않은 채로 바이너리 실행파일만 공개된 상태이며, 블록체인 익스플로러 등등 상당히 필수 공개 소스들이 전혀 공개되지 않은 상태입니다.
그나마 공개된 풀 소스코드를 살펴보아도 실망스럽습니다.
소스코드의 히스토리를 날려버린 상태여서 무슨 소스코드가 오리지널 소스코드인지 알아내기 어렵습니다.
궁금하기도 해서 오리지널 소스코드를 제가 직접 찾아봤습니다.
hdac 풀 소스코드는 nomp
공개된 풀 소스 코드의 레포지터리 이름에서도 추측할 수 있지만, hdac 소스코드의 오리지널 소스는 nomp입니다. (https://github.com/Hdactech/nomp)
nomp는 node-open-mining-portal의 약자로서, 매우 유명한 풀 소스이며, 다양한 코인을 지원하는 멀티 풀 소스입니다. 유명한 풀 소스답게 여러 변형이 존재하는데
오리지널의 오리지널 - https://github.com/zone117x/node-open-mining-portal - node로 만들어진 풀 소스의 할아버지뻘 소스코드입니다. 처음 공개된 이후로 많은 개선이 이루어지지 않은 상태라서 여러 포크들이 탄생하게 됩니다. 최근까지도 드문드문 개선되고 있습니다.
https://github.com/foxer666/node-open-mining-portal - 포크중에 가장 개발이 활발한 포크.
그래서 1번과 2번을 각각 hdac와 비교를 해보았습니다. 1번은 아닌것이 곧바로 판명이 되었고, 2번을 비교해보니 다행스럽게도(?) 이것이 hdac 소스코드의 기반 소스라는 것을 알 수 있었습니다.
hdac의 오리지널 소스코드
hdac nomp 풀의 오리지널 소스는
https://github.com/foxer666/node-open-mining-portal 풀소스의
버전 https://github.com/foxer666/node-open-mining-portal/tree/d207194cdf44 였습니다.
$ git diff d207194cdf44 | diffstat # git diffstat로 해도 되나, 이게 더 간단한 요약 보여 줌
b/.gitignore | 4
b/.project | 11
b/README.md | 529 +++++++++---
b/coins/hdac.json | 11
b/config.json | 121 ++
b/install_nvm.sh | 269 ++++++
b/package-lock.json | 1595 +++++++++++++++++++++++++++++++++++++
b/package.json | 8
b/pool_configs/h-dac.json | 78 +
pool_configs/litecoin_example.json | 79 -
pool_configs/vertcoin_example.json | 77 -
11 files changed, 2499 insertions(+), 283 deletions(-)
이에 의하면 hdac의 nomp는 ePoW 지원 여부와 상관 없이 풀 소스코드는 100% 일치합니다. 나머지 변경된 부분은 hdac 코인을 위한 설정파일 및 불친절한 README를 고쳐서 풀을 설치하기 편리하게 한 것과 nvm 설치 스크립트 등입니다.
ePoW 변경 관련 소스는
※ 추가됨: 그렇다면 ePoW관련 소스는 어디에 있을 까요? 첫번째 글을 포스팅했을때 면밀히 살펴보지 않았었는데, 소스를 정리해서 공개하는 과정에서 제 실수를 발견하였습니다.
ePoW는 hdac에서 공개한 stratum-pool 소스였습니다. https://github.com/Hdactech/stratum-pool
hdac에서 공개한 stratum-pool 소스는 node-stratum-pool 소스를 기반으로 고쳐진 것입니다.
- README에는 나오길 https://github.com/foxer666/node-stratum-pool 소스가 그 출처라고 밝히고 있습니다.
foxer666의 소스코드와 비교하면 다음과 같이 개략적 수정파일을 볼 수 있습니다.
(5/22 ※추가: 정확한 브랜치 포인트를 면밀히 찾아보았으며 어렵지 않게 찾을 수 있었습니다.
정확한 브랜치 포인트 커밋은 foxer666 node-stratum-pool 소스의 1339e08d0 커밋입니다.)
$ git diff 1339e08d0 hdac/master | filterdiff -x "*/package-lock.json" |diffstat # package-lock.json 제외시킴.
.project | 11 ++
README.md | 271 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
lib/dataObject.js | 51 ++++++++++
lib/jobManager.js | 19 +++
lib/pool.js | 168 ++++++++++++++++++++++++++++++---
lib/stratum.js | 154 ++++++++++++++++++++++++++++++
package.json | 10 +
7 files changed, 662 insertions(+), 22 deletions(-)
ePoW에 관련된 수정은 nomp 풀 소스 본체 프로그램이 아닌 node-stratum-pool
소스코드에 들어있었습니다.
이상으로 오랜만에 포스팅한 글을 마칩니다~
추천 및 덧글은 제게 힘이됩니다^^
※ 변경사항
몇몇 분의 요청으로, 약간 정리해서 hdac 코인에 적용된 설정만 살짝 추가한 소스입니다. https://github.com/OpenCommunityCoin/node-open-mining-portal/commits/hdac + 이것과 hdac에서 공개한 stratum-pool을 같이 사용해야만 실제로 작동합니다~
ePoW에 관련된 수정은 풀 소스 본체 프로그램이 아닌
stratum-pool
소스에 포함되어 있었습니다.5/22 - node-stratum-pool 소스의 정확한 브랜치 포인트 추가하고 잘못된 부분 수정.