RSK: 비트코인 병합 채굴, 앞으로도 건재할 예정
RSK 수석 괴학자 Sergio Demian Lerner 작성
비트코인 채굴에 대한 소개
비트코인 채굴은 비트코인이 시빌 공격 저항을 달성하기 위해 사용하는 절차로 나카모토 컨센서스의 기반을 구성한다. 이 절차는 레저에 적용될 유효한 거래의 모임을 선택하는 동시에 전산적으로 어려운 퍼즐을 해결하는 작업을 포함한다. 오늘날 대부분의 비트코인 채굴을 채굴 풀이 실행한다. 채굴 풀은 채굴자에게 가는 페이아웃 변동을 줄이기 위해 존재하지만, 유지 비용과 대역폭 요건을 줄이기 위해서도 존재한다. 채굴 풀은 채굴자나 “작업자”(클라이언트)가 풀 서버(서버)에 연결하는 클라이언트-서버 구조를 따른다. 풀서버는 채굴 풀 서버 소프트웨어 중 하나를 실행한다. 흔한 소프트웨어 일부에는 Ckpool, Btcpool 및 Eloipool이 있다.
풀서버는 일반적으로 암호화되지 않은 TCP/IP 위의 RPC 채널을 통해 bitcoind 인스턴스로 소통한다. 이 채널은 현재의 최고 가지와 채굴될 블록의 부모 블록 해시에 대한 정보를 획득하는 데 사용된다. 그리고 풀서버는 사전 선택된 거래의 유효한 모임을 획득한다. 이는 bitcoind RPC 명령인 getblocktemplate를 사용해 수행된다. 풀서버는 이 거래의 하위 모임을 선택해 이를 새로운 블록에 포함시킨다. 추가로 풀서버는 일반적으로 몇 초마다 bitcoind을 조사해 부모 블록의 변화를 감지한다. 일부 풀서버 구현은 새로운 블록 감지의 지연을 줄이기 위해 p2p 프로토콜을 통해 bitcoind에 연결하거나 블록이 도착하자마자 최대한 빨리 알림을 받기 위해 bitcoind blocknotify 명령 라인 옵션을 사용한다. 풀서버는 새롭게 생성된 블록을 제출하기 위해 비트코인 네트워크의 표준 p2p 연결 중 하나 또는 그 이상을 활용할 수 있으며, 이는 FALCON이나 FIBRE와 같은 빠른 블록 전송 백본과 소통할 수 있다.
병합 채굴
병합 채굴은 주요 블록체인을 확보하는 것과 동일한 채굴 해시율을 사용해 2차 블록체인을 확보하는 기술이다. 네임코인은 비트코인과의 병합 채굴을 달성한 첫 번째 암호화폐이다. 병합 채굴은 2차 블록체인의 블록 id(최근 구성된 새로운 블록의 암호 해시)를 채굴되는 주요 블록체인의 블록 어딘가에 삽입하여 수행된다. 짧은 설명 텍스트나 매직 바이트 부호가 붙은 이 2차 해시는 병합 채굴 “태그”라고 불린다. 이 부호는 2차 블록체인이 태그를 찾게 한다. 그러나 이때 반드시 태그의 위치에 대한 모호함이 전혀 없어야 한다. 주요 블록체인의 블록이 2차 블록의 블록 중 최대 하나, 또는 0개와 연관지어져야 한다는 뜻이다. 연결의 암호 해싱 사용은 부정 행위를 방지하나, 연결 보안 요건은 전통적인 암호 방식에서 요구되는 것보다 훨씬 기준이 낮다. 비공식적으로 병합 채굴의 유일한 보안 요건은 2차 블록체인의 난이도에서 두 가지(각 연관블록마다 한 개씩)의 서로 다른 주요 블록체인 블록을 채굴하는 것보다 동일한 2차 블록체인에서의 블록 2개와 연관지어질 수 있는 주요 블록체인 블록을 생성하는 것이 더 어려워야 한다는 것이다. RSK의 경우 그 주요 블록체인은 물론 비트코인이며 2차는 RSK이다. RSK 블록 난이도는 현재 70비트 보안에 비교할 수 있으며 비트코인 난이도는 74비트와 비교할 수 있다.
작업 증명 프록시
병합 채굴에서 비트코인 헤더는 작업 증명 프록시로만 작용한다. RSK Blockchain은 블록체인 블록 헤더의 PoW를 해석하고 RSK 블록 헤더와의 관계를 유니크하게 설정하는 태그를 블록체인 블록에서 찾아야 한다. 따라서 이는 타동적으로 비트코인 블록 PoW를 RSK 블록 PoW로 해석한다. 아까 말했듯이 RSK Blockchain의 난이도는 비트코인 블록체인의 난이도보다 낮으므로, 비트코인 PoW 퍼즐을 해결하지 못하는 많은 비트코인 블록 헤더는 RSK PoW 퍼즐의 유효한 솔루션이 된다. 그럼 이 차이에 대해 조금 더 알아 보도록 하자. 각 블록체인은 각 블록마다 예상 난이도를 계산한다. 이 난이도는 블록 간의 평균 시간을 대략적으로 일정하게 유지하고자 모든 이전 블록에 따라 정의된다. 내부적으로 이 난이도는 “타깃”으로 해석되며, 이는 난이도에 반비례한다. 타깃은 256비트 비서명 정수이다.
블록체인 | 타깃 |
---|---|
비트코인 | 000000000000000000165exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
RSK | 00000000000000000db5a4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
네임코인 | 00000000000000000019xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
같은 날의 병합 채굴된 블록체인의 대략적 타깃. RSK는 블록이 20배 더 잦으므로 타깃이 더 높음.
암호 해시 다이제스트의 불확실성 때문에 블록 헤더 컨텐츠의 암호 해시 다이제스트인 블록 헤더 id가 획일화된 무작위 변수를 대표하기 위해 가정된다. 이는 이론적으로는 사실이 아닐 수 있으나, 비트코인(더블 SHA256)이나 RSK(Keccak)에서 사용되는 해시 기능을 뒤바꿀 수 있는 실용적인 방법 중 알려져 있는 것이 없기 때문에 실제로는 가능하다. 비서명 번호로 해석되었을 때 해시 다이제스트는 블록이 PoW 퍼즐에 대한 솔루션을 대표하기 위해 타깃보다 반드시 낮아야 한다. 따라서 타깃이 낮을수록 PoW 퍼즐을 해결하기가 더 어렵다.
SPV 증명
2차 블록체인은 비트코인 헤더 PoW를 검증하고 이를 RSK 헤더와 연관 짓는 데 전체 비트코인 블록이 필요하지 않다. 이 연상은 SPV 증명(주로 머클 트리 회원 증명을 구성하는)을 통해 증명이 가능하다. 다음 도표는 증명의 여러 가지 부분 간의 관계를 나타낸다. 파란 박스는 SPV 증명에 포함되어 있으며 RSK 블록과 함께 전파되어야 하는 정보를 대표한다.
병합 채굴된 PoW 증명 압축을 가능하게 하는 비트코인 SPV 증명
타깃 체계
RSK 타깃은 일반적으로 비트코인 타깃보다 높은데, 이는 RSK 블록이 비트코인 블록보다 주기가 잦으며 그에 따라 RSK 퍼즐이 더 풀기 쉽기 때문이다. 따라서 비트코인 네트워크는 RSK PoW 퍼즐을 해결하는 비트코인 블록 헤더를 수락하지 않을 수도 있다. 이때 두 퍼즐 모두가 비트코인 헤더와의 작업을 포함하며 실제 이를 해결하는 것이 동일한 시도와 오류 절차를 거친다는 점을 참고하도록 하자. 그럼 풀은 채굴자들이 더 어려운 비트코인 퍼즐을 해결하고자 하는 동안 어떻게 더 자주 해결되는 RSK 퍼즐을 감지하고 이에 대한 정보를 알릴 수 있을까? 정답은 바로 채굴자들이 이미 비트코인이 요구하는 것보다 더 낮은 난이도에서 블록을 해결하고자 한다는 것이다. 이 중개 블록은 “쉐어”라고 불리며, 풀 서버는 이를 전산을 위해 필수로 요구한다. 사실 채굴자들이 더 간단한 퍼즐(더 높은 타깃을 특정화하는)을 해결하게 명령하는 것은 풀서버 소프트웨어이다. 그러면 이때 쉐어가 실제 비트코인 퍼즐을 해결하게 돕는 일종의 중개 솔루션이라고 생각할 수 있을지 모르겠지만, 그렇지 않다. 쉐어는 실제 블록 솔루션을 달성하기 위해 연장될 수 없다. 그러나 채굴자가 더 강력할 수록 해당 채굴자가 실제 솔루션 간의 풀에 생성하는 쉐어가 더 많아진다. 따라서 쉐어는 채굴자의 기여를 계산하는 데 더 높은 입상도를 제공한다. 쉐어는 풀서버에 정기적으로 전송되므로 서버는 참여하는 클라이언트 모두의 해시 기여도 가중치를 계산해 이들 간에 미래 수익을 공정하게 나눌 수 있다. 그러나 쉐어는 그 중 하나가 (우연히) 현 비트코인 PoW 퍼즐의 솔루션이 될 수 있기에 전송되기도 한다. 따라서 채굴자는 풀서버에서 실제 비트코인 PoW 퍼즐 난이도 (또는 타깃)를 받을 필요가 없으며, 일반적으로 풀이 이를 다시 알려주기 전까지는 자신이 비트코인 블록을 해결했는지를 알 수 없다. 풀서버는 제공받은 각 쉐어를 확인하고, 블록 헤더를 재구성하며, 헤더 더블 SHA256 해시 다이제스트가 현 비트코인 난이도와 연관된 타깃보다 수적으로 낮으면 블록을 bitcoind 데몬에게 넘겨주고, 데몬은 이를 네트워크에 걸쳐 전파한다. 각 2차 블록체인의 난이도가 서로 다를 수 있으므로, 병합 채굴이 가능한 풀서버는 서버가 다루는 2차 블록체인마다 이러한 확인을 해야 한다. 비트코인 헤더가 RSK Blockchain PoW 퍼즐에 대한 유효한 솔루션을 대표하는 경우, 이는 rskj에 비트코인 블록 헤더를 전송하고, 이는 연관 RSK 블록을 첨부해 RSK 네트워크에 이를 유효한 것으로 전달한다.
이때 풀서버인 RSK는 대역폭 요건을 줄이기 위해 rskj에 비트코인에 삽입된 태그의 SPV 증명만을 전송할 수 있는 옵션을 갖게 됨을 참고하자(이는 나중에 더 설명하도록 하겠다).
다음 테이블은 비트코인, RSK 및 쉐어의 대략적인 난이도를 나타낸다(2019년 6월 기준 퍼즐 솔루션을 찾을 때까지 임시값이 반복되는 평균 수로).
솔루션 목적지 | 블록 간격 | 솔루션을 찾을 때까지 임시값이 반복되는 평균 수 | 가정 |
---|---|---|---|
비트코인 | 10분 | 274 | 100% 비트코인 해시율 |
RSK | 30초 | 269 | 50% 병합 채굴 |
채굴 풀 쉐어 | 클라이언트당 3.3초 | 252 | 20% 해시 파워, 4000 클라이언트 Ckpool 소프트웨어 |
RSK 태그 포매
RSK 태그는 채굴되는 RSK 블록 헤더의 해시 다이제스트를 포함하는 2진 데이터 청크와 연결된 ASCII 식별자 “RSKBLOCK:”을 포함한다. 이전에 말했듯이 이 태그는 모호함 없이 식별이 가능해야 한다(두 가지의 서로 다른 RSK 블록과 연결지어질 수 있는 비트코인 블록을 생성할 방법이 없어야 함). 네임코인은 서로 다른 병합 채굴 블록체인을 위한 패킹 태그의 체계를 정의하기는 했으나, 해당 제안 체계는 표준화된 적이 없다. 따라서 RSK 태그는 미래의 호환성을 개선하고 채굴 풀 소프트웨어의 다양성을 더 많이 허용하기 위해서 생성 거래 어디에나 놓일 수 있다(때로 코인베이스라고 불리기도 하는 블록의 첫 번째 거래). RSK 태그는 생성 거래의 코인베이스 필드에 위치하거나 생성 거래 출력 중 어디에나 위치할 수 있다(일반적으로 OP_RETURN 페이로드로). 다음 도표는 두 가지 가능성을 보여준다.
코인베이스 필드 내 저장된 RSK 태그
생성 거래의 출력 하나에 저장된 RSK 태그
현재 RSK 태그 포맷
RSK 태그의 현재 포맷은 다음과 같다. RSKBLOCK:RskBlockHeaderHash
“RSKBLOCK:”은 다음 바이트로 구성된 ASCII 스트링이다. 52 53 4b 42 4c 4f 43 4b 3a.
RskBlockHeaderHash는 PoW가 해결된 후 채워지는 병합 채굴 필드가 없는 RSK 블록 헤더의 2진 형식 Keccak 해시 다이제스트이다.
출력 스크립트에 RSK 태그가 포함될 때, 이는 비트코인 UTXO를 스패밍하는 것을 방지하기 위해 OP_RETURN OP_PUSHDATA1 연산 코드 다음에 포함되어야 하나, 이는 컨센서스에서 반드시 요구하는 사항은 아니다.
다음 추가 제한이 적용된다.
- 코인베이스 거래 끝까지에 달하는, RskBlockHeaderHash 바로 다음에 따르는 바이트 수는 반드시 128 바이트 이하여야 한다.
- 그 뒤를 따르는 raw 바이트는 2진 스트링 “RSKBLOCK:”(52 53 4b 42 4c 4f 43 4b 3a)을 포함해서는 안 된다.
- 마지막이 아닌 출력 스크립트에 RSK 태그가 위치하는 경우, 다음 출력 바이트에 RSK 태그가 우연히 나타날 아주 작은 가능성이 존재한다. 풀서버 소프트웨어는 태그가 삽입된 생성 거래에 포함된 사기 비트코인 주소가 존재하며 병합 채굴 헤더의 유효성을 깨트리기 위한 공격으로 사용될 가능성을 배제하지 않아야 한다. 이는 생성 거래 자체에서 수익을 배포하는 분산화된 풀(p2pool 같은)에서 문제가 될 수 있다. 따라서 우리는 RSK 태그를 마지막 출력 스크립트로 사용하는 것을 권장한다.
- 코인베이스 필드에 RSK 태그가 존재할 경우, 스트라텀 프로토콜의 일부로 블록을 해결하는 채굴자가 컨텐츠를 제공하는 ExtraNonce2 데이터 필드에 우연히 “RSKBLOCK:”이 나타날 아주 작은 가능성이 존재한다. 또 채굴자가 불순한 의도로 ExtraNonce2에 태그를 포함시킬 수도 있다. 이는 풀서버가 RSKBLOCK: 태그를 ExtraNonce2 청크 다음에 추가하기만 하면 문제가 되지는 않는다.
표준 P2SH 출력은 34바이트를 소모하므로, 뒤에 따르는 길이 제한은 일반적으로 태그가 반드시 코인베이스 필드에 위치하거나 코인베이스 거래 마지막 4가지 출력 내에 포함되어야 한다는 뜻이다.
뒤에 따르는 바이트 제한은 RSK 풀 노드가 다음으로 구성된 압축 SPV 증명을 생성하게 한다.
- 비트코인 헤더(80 바이트)
- 코인베이스 거래의 머클 가지(약 320 바이트)
- 코인베이스 거래의 헤드를 소모하는 SHA-256 미드스테이트(32 바이트)
- 코인베이스 거래의 트레일을 포함하는 64 바이트 정렬 청크, RSK 태그 포함(최대 169 바이트) 트레일 사용은 프로토콜이 주어진 미드 스테이트부터 시작해서 트레일이 자유 시작 해시로 코인베이스 거래에 속한다는 증명을 사용할 수 있게 한다.
- 현재 SPV 병합 채굴 증명의 최대 규모는 780 바이트이다.
풀서버 소프트웨어는 rskj 데몬에게 풀 블록이나 이 SPV 증명을 보낼 수 있다. rskj는 블록을 받으면 이를 분석해 SPV 증명을 구축하는 데 필요한 필드를 추출한다.
RskBlockHeaderHash는 표준 RSK 노드(rskj 데몬)이 생성한다. Rskj는 명령어 “getwork”를 포함한 채굴 RPC-JSON 인터페이스를 공개한다. 풀서버 플러그인은 rskj 데몬을 조사해 풀서버에 제공할 최신 RskBlockHeaderHash 값을 유지한다. RSK PoW 퍼즐이 해결될 만큼 쉐어 해시가 낮으면, 풀 서버는 플러그인에게 이를 알리고, 이는 rskj 데몬에게 정보를 알린다.
다가오는 네트워크 업그레이드(Armadillo) 내 병합 채굴 개선 사항
다가오는 1.0.0 출시 버전은 병합 채굴 태그 포맷을 개선하는 네트워크 업그레이드를 포함한다. 이 새로운 포맷은 RSKIP110로 지정되어 있다. 이 변화는 RSK 병합 채굴 태그에 추가 정보를 더해 자동화된 시스템 사용자가 네트워크 건강에 대한 정보에 입각한 결정을 할 수 있게 한다. RSK 네트워크 노드는 또 태그 모니터링 도구를 사용해 자율적이고 노드를 이중 사용에서 보호하는 방식으로 비정상적인 상황에 응답할 수 있다. 또 미래의 노드는 이례적인 상태의 암호 증명 요약을 네트워크 내 다른 노드에 전파할 수도 있을 것이다.
32바이트 블록 헤더 해시는 다음 포맷의 32바이트 바이트 배열로 대체된다.
- 병합 채굴을 위한 해시의 20바이트 부호 (부호)
- 7바이트 부모 채택 벡터 (CPV)
- 1바이트 지난 블록 32개의 엉클 수 (NU). 제한 255.
- 4바이트 블록 번호 (BN)
네 가지 필드는 컨센서스에서 반드시 확인되어야 한다. 간단히 말해서 CPV, NU 및 BN 필드는 비트코인 블록체인을 모니터링하는 모든 노드가 구축되는 RSK 블록의 평행 경쟁 체인 그래프를 생성할 수 있게 한다. 이는 해당 사항이 RSK 네트워크에 전파되지 않아도 마찬가지이다. RSK 헤더의 해시는 20 바이트로 줄여져 태그가 여전히 32 바이트를 차지할 수 있게 한다. 이는 따라서 풀서버 소프트웨어와의 호환성을 유지한다.
RSK 병합 채굴 보안
작업 증명을 사용하는 나카모토 컨센서스의 이론은 암호 보안이 아니라 열역학적 및 게임 이론적 보안에 기반하고 있다. RSK 병합 채굴은 2^80 해시 작업을 30초 내에 계산할 수 있는 모든 부조리한 공격자로부터 안전하게 보호된다. 이성적인 공격자라면 다른 공격보다는 정직하게 행동한 뒤 2^69 작업만을 필요로 하고 (현 RSK 블록의 난이도) 비트코인의 완전한 보조를 받는 RSK 블록 병합 채굴을 선호할 것이다. 다른 병합 채굴 시스템과 이 공격의 결합성이라는 머나먼 가능성을 제쳐두자면, 2^80 해시 작업을 수행하고자 하는 부조리한 공격자는 이성적인 공격자보다 2000배 많은 하드웨어를 투자해야 하며, 부조리한 공격자의 전기 소비량은 보조되지 않을 것이다. 해당 공격자가 최첨단 비트코인 ASICs와 비슷한 하드웨어를 사용한다고 가정했을 때, 이 투자량은 약 5조 달러(5e12)에 달할 것이다. 그러나 부조리한 공격자의 상황은 이보다 훨씬 더 나쁘다. 동일한 RSK 블록 높이의 작업 증명을 공유하는 블록을 하나 또는 그 이상만 생성할 수 있기 때문이다. 나중에 설명하겠지만, 이는 일반적으로 공격자에게 화폐 이득을 전혀 제공하지 않는다(1). 이는 5조 달러를 낭비했다는 뜻이다. 따라서 80 비트 보안은 모든 구성 요소에 걸쳐 균형이 잘 잡혀 있으며, 공격의 대상이 될 수 있는, 보안이 훨씬 더 약한 구성 요소는 없다. 이를 정당화하기 위해 가능한 공격 타깃을 짧게 비공식적으로 검토해 보도록 하자.
먼저 RSK는 비표준 암호화 트릭을 사용해 생성 거래를 압축한다. 이때 완전한 생성 거래를 제공하는 대신 테일만을 전송한다. 이는 여전히 이 메시지의 올바른 암호 해시를 생성하기 위해 초기 상태가 아닌 Merkle–Damgård 구성의 미드 스테이트부터 해싱을 시작한다. 이 64바이트 미드스테이트는 테일과 함께 전송된다. 이 트릭을 안전하게 사용하려면 SHA256에서 더 강력한 구성을 채택해야 한다. 이는 “자유 시작 충돌” 저항이라고 알려져 있으며, 이 저항은 우리의 대상 보안 한계치인 폭력적인 80 비트만큼 안전해야 한다. SHA-1(이미 무너진 해시 기능)은 약 80 비트의 폭력적인 공격을 필요로 하는 알려진 중 최고의 자유 시작 공격을 보유하고 있다. SHA256에서 발견된 자유 시작 충돌은 없으며, 최고의 결과 (2)는 SHA256의 순회 축소 버전 내 일부 자유 시작 충돌을 찾는 것에 불과했으므로(64회 중 38회, 2^65 작업 비용) RSK 병합 채굴은 안전하다고 판단할 수 있다. 2^80 작업을 요구하는 SHA256의 자유 시작 공격을 한다고 가정하면 이는 SHA256에 엄청나게 부정적인 결과를 가져오며 보안 표준 해시 기능으로서의 힘을 완전히 잃기 때문에, 비트코인에는 일단 당연히 문제가 발생한다. 그러나 이런 공격이 발견된다고 해도 RSK 플랫폼은 쉽게 블록 규모가 약간 커지는 대신 SPV 압축해 이 암호 트릭을 사용하지 않게 하는 네트워크 업그레이드의 보호를 받을 수 있다. 그러나 아까 말했듯이 그 공격이 비트 보안에 있어서 병합 채굴보다 비용이 낮게 든다고 쳐도, 비용 효율적이지는 않다.
둘째로 새로운 체계는 다가오는 1.0.0 출시본 내의 해시 다이제스트 절단에 있어서 태그 충돌을 위한 80 비트 보안의 동일치를 제공한다. 그러나 이 공격은 이론적으로, 경제적으로, 그리고 전산적으로 비이성적이다. 전산 복잡도의 측면에서 봤을 때, 80 비트 충돌 공격은 비현실적인 양의 메모리 사용을 요구한다 (3). 또 충돌 공격의 CPU 비용은 RSK PoW 퍼즐 해결의 비용보다 2000배 이상 높다(69 vs 80 비트).
이론적인 측면에서 봤을 때, 그리고 RSK가 사용하는 DECOR+ 컨센서스에 따라, 동일한 RSK 블록 높이에서만 충돌이 일어날 수 있으므로 충돌 블록은 동일한 블록 보상을 공유하게 되며, 이전 블록 보상이 새로운 블록 보상과 대략적으로 동일할 경우 이전 블록의 형제 블록을 찾는 것에 대한 혜택은 없다. 이 공격자는 기본적으로 자기 자신과 경쟁하는 것이 된다. 같은 이유로 새로운 블록의 충돌을 찾는 것에 대한 혜택은 없다. 게다가 이를 엉클 레퍼런스에 제공되는 5분 대신 평균 30초 내에 수행해야 한다는 어려움까지 더해진다.
경제적인 측면에서 봤을 때, 정직한 병합 채굴자는 비트코인 거래 수수료를 얻으므로, 공격자가 충돌 공격의 전체 비용을 지불해야 하는 대신 비트코인은 병합 채굴에 대한 보조를 해 준다. 이는 PoW 연결 장치에 대한 거의 모든 공격을 비용 효율적이지 않게 만들어 버린다. 이는 RSK 블록 해시 내의 해시 다이제스트 충돌과 코인베이스 거래 해시의 자유 시작 충돌 둘 다에 유효하다.
따라서 우리는 해당 태그가 전산 효율성의 돌파구가 나타날 가능성을 고려해도 향후 20년간 안전하다고 본다. 그러나 전산 트렌드가 극단적으로 변화한다면 미래의 네트워크 업그레이드로 손쉽게 해시 크기를 풀 32 바이트로 확장할 수 있을 것이다.
RSK 병합 채굴 플러그인 개발
다음 그림은 RSK 병합 채굴 플러그인을 포함한 표준 풀서버 구조를 나타내고 있다.
RSK 병합 채굴 플러그인이 여러 네트워크와 연결된 상태의 풀서버
풀서버 RSK 플러그인은 다음 두 가지 JSON-RPC 방식을 이용해 rskj 데몬과 소통한다. mnr_getwork, mnr_submitBitcoinBlock. 기타 제출 방식은 대역폭 소모를 줄이기 위해 rskj 노드에 정보를 더 적게 보내는 것을 가능하게 한다. rskj 데몬의 JSON-RPC 연결 포트는 설정이 가능하며 기본값은 4242이다. 사용 방식과 데이터 교환 포맷의 설명은 여기서 찾아볼 수 있다. https://github.com/rsksmart/rskj/wiki/JSON-RPC-API 이 방식은 rskj 노드에 연결하는 표준 인터페이스인 Web3 인터페이스에 속한 여러 가지와 함께 실현된다.
RSK 팀은 CoiniumServ, CKpool, Btcpool 및 Eloipool과 같은 여러 풀 구현을 위해 완전하게 작동하는 플러그인 몇 가지를 개발하였다. 다른 풀들은 자신만의 고유 플로그인을 마련하고 있다. 우리 팀은 다른 채굴 풀 소프트웨어보다도 최적화되어 있으며 병합 채굴이 비트코인 채굴의 채굴 성능에 영향을 미치지 않는다는 것이 두루두루 검증된 바 있는 Ckpool을 추천한다.
곧 풀이 효율적이고 신뢰할 수 있는 병합 채굴 모듈을 구축할 수 있는 추가 도움말이 포함된 병합 채굴 플러그인 개발 가이드를 오픈할 예정이다.
RSK는 DECOR+ 프로토콜을 사용하므로, RSK 부모 블록이 바뀌었어도 풀서버 소프트웨어는 풀 클라이언트가 찾은 모든 RSK PoW 솔루션을 계속 처리할 수 있음을 중요하게 참고하기 바란다. 모든 경쟁 블록(엉클이라 불리는)은 보상을 받는다.
요약
비트코인 채굴자의 40%에서 51%는 현재 RSK를 병합 채굴 중이다. 이는 RSK가 “열역학적” 보안에 있어서 지구에서 가장 안전한 스마트 컨트랙트 플랫폼이라는 뜻이다 (4). RSK 병합 채굴은 쉽지만, 가장 가혹한 환경에서도 RSK 네트워크에 대한 직접 공격처럼 풀서버 포스트웨어의 일반 기능을 변경하지 않게 조심해야 한다. RSK Labs는 채굴 작업의 지속성을 검증하고자 여러 가지 실패 조건에 맞서 두루두루 검사를 마친 여러 플러그인을 개발하였다. 또 채굴 소프트웨어 효율성이 변질되지 않음을 확인하고자 채굴 풀 소프트웨어에 효율성 조치를 실행하였다. 우리는 풀 및 솔로 채굴자가 RSK를 병합 채굴하고 비트코인 스마트 컨트랙트 혁명의 일부가 되기를 장려한다. 병합 채굴 작업 설치에 대한 도움이 필요하면 RSK gitter 커뮤니티 포럼에서 RSK 팀에 연락하기 바란다.
(1) 또 다른 흥미로운 공격은 태그 충돌을 이용해 동일한 축적 난이도를 가진 평행한 여러 공격 체인을 위한 블록을 생성한 뒤, 다른 채굴자에게 서로 다른 “최고 체인”을 줘서 모두가 같은 최고 체인 내에서 일할 수 없게 하는 것이다. 이는 다른 채굴자와의 직접적인 피어 투 피어 연결을 요구한다. 이는 공격자가 남은 채굴자를 다 합친 것보다 해시 파워가 낮으나, 남은 채굴자를 따로따로 놓은 것보다는 훨씬 더 해시 파워가 강력할 경우 가능할 수 있다. 그러나 이 공격은 여전히 다른 채굴자의 블록을 무시하게 하는 51% 공격을 수행하는 것보다 훨씬 더 비싸다.
(2) https://eprint.iacr.org/2015/350.pdf
(3) 간단한 충돌 공격에 필요한 RAM 메모리는 2^80 해시 다이제스트이다(3천 2백만 엑사바이트). Oorschot/Weiner 알고리즘을 사용하고, 단일 프로세서가 30초 내에 2^40 연속 해시 작업을 수행할 수 있다고 가정했을 때, RAM 메모리 요구 사항은 32 테라바이트로 줄어들 수 있다.
(4) 블록이 한 번 거래를 확인하고 나면, 이는 누군가가 체인에 덮어쓰기를 할 최소 에너지를 사용하지 않는 한 취소할 수 없다. 이 에너지는 PoW 기반 블록체인의 “열역학적” 보안으로 알려져 있다.