안녕하세요 모릭풀입니다.
자동 페이아웃 마무리 작업을 하느라 여전히 야근중이었는데,
hdacpool.com 에서 공지가 올라왔다는걸 보다보니 저희가 언급되어서 부득이 설명을 드리는게 맞겠다 싶어서 다시 올립니다.
특히나, 모두 소실되실되었다라는 부분만 명기되어 있고 어떻게 해결해나갔다라는 부분이 없기에 이에 반박을 합니다.
- 원천적인 해결방법으로 원 버전으로 패치 적용을 실행 하였고 그 과정중에 일부 정상적인 출금이 되었으나
- DB가 모두 소실되는 결과로 이어 졌으며 , 동일한 현상을 모릭풀 운영자도 경험하였습니다.
- hdacpoo.com 공지중 일부 발췌
때는 화요일인 22일 오후 10시경 모릭풀이 페이아웃과 관련되어 ethminer 님과 열띤 토론끝에 최신 nomp 소스에 반영되어 있는
else if (tx.error || !tx.result) {
logger.error(logSystem, logComponent, 'Odd error with gettransaction ' + round.txHash + ' ' + JSON.stringify(tx));
round.category = 'kicked';
return;
}
위 내용은 gettransaction 에서 txid 를 가져와 없는경우 (직접 수행한 내용이 아는경우)
무효 블록으로 처리하는 것으로 현재 풀 소스에서 자동지급이 되지 않는 결정적인 이유입니다.
따라서, 위 소스 부분에서 round.category = 'kicked' 를주석해제 하고 풀을 재가동 하였습니다.
현대코인풀은 각 라운드 (다음 블록을 찾을때)까지 기여한 쉐어를 current DB에 기록을 하다가 블록을 발견하면 round#블록번호로 테이블을 복사하고, 해당 테이블에 있는 쉐어의 기여별로 획득한 코인 (1블럭 = 5000) 을 차등 지급을 진행합니다.
이 과정에서 txid를 검사하는 과정을 거치는데, 코어 데몬에서 이를 오류로 인식하는 경우가 자주 발생을 합니다.
( blockPendings에 기록된 txid 와 block번호가 현재의 블록번호가 아닌 -1, -2 블록을 참조하는게 대부분입니다. 또 어떨때는 제대로 들어있습니다. 그래서 일부는 자동출금 일부는 수동출금이 된 이유입니다)
따라서, 고아가 된 블럭에 오류를 내는 과정을 없애면 자동출금이 이루어질 수 있겠다는 의견 조율을 거쳐, 모릭풀에 최초 반영하였고,
반영 후, round#블록 다수 테이블이 삭제되었었습니다.
당연히, 모든 개발자들이 당황할 수 밖에 없었고, 그 순간 저도 너무나 놀랐었습니다. (더이상 풀 개발하지말자라고 생각도...)
정신을 못차리고 있는 저를 대신해 @ethminer 님이 아래의 코드를 발견하셔서 roundCurrent 테이블에 해시가 합산되어 있다는것을 알게 되었습니다.
var moveSharesToCurrent = function (r) {
var workerShares = r.workerShares; Object.keys(workerShares).forEach(function (worker) {
orphanMergeCommands.push(['hincrby', coin + ':shares:roundCurrent', worker, workerShares[worker]]);
});
};
- 해당 소스
위 소스는 미지급(Pending)된 마이너의 해시를 현재 해시에 합산하여 저장하라는 소스코드로
결국 미지급된 전체 지갑금액 만큼 기여도가 합산이 되어진 상황입니다.
당시 모릭풀은 첫번째 수동 출금 상황이었기 때문에 오히려 이 방식이 더 공정한 방식이 되어 기쁘게
이 결과를 받아들이고, 페이아웃을 진행하였습니다.
모든 대화의 내용은 ESN 디스코드의 > mining 채널에서 공개적으로 이루어졌습니다.
따라서, 당시 round 테이블이 삭제가 된것은 맞습니다만, 해당 데이터는 roundCurrent 에 합산이 되어
저희는 당시 이 합산된 데이터를 근거하여 정확하게 코인을 지급할 수 있었습니다.
그 후로는 해당 기능을 다시 주석처리하고, (매번 모아서 할 수 없기에 배치 출금을 기획) 어제 날짜로
출금 프로세스를 수행할 수 있는 배치프로그램을 제작/공개 하였습니다.
금일 작업내용과 향후 계획은 다른 글에 요약을 하겠지만, 해당내용은 악의적인 편집으로 오인할 소지가 있다고 판단하여
적극적으로 해당 내용에 대해 반박합니다.
-------------------------------------
꼬리말
* 게시글 내용 삭제시 레벨 강등
* 질문은 각 주제별 게시판에.
비트코인 암호화화폐 커뮤니티 땡글~ 땡글~
-------------------------------------