채굴과 마찬가지로 비트 코인 채굴자가 실제로 해결하는 것은 무엇입니까? 나는 그들이 해시를 풀고 있다는 것을 읽었지만 그것이 실제로 무엇을 의미합니까? 그들이 무엇을 해결하고 있는지 볼 수 있습니까? 누군가 비트 코인 채굴 기가 해결하기 위해 보는 것에 대한 예를 들어 줄 수 있습니까?
댓글
- 관련 : bitcoin.stackexchange.com/q/148/153
- 좋습니다.하지만 우리는 어떤 데이터를 채굴하고 있습니까! 아무도 모르는 것 같습니다. 나는 ‘ 작동 방식에 신경 쓰지 않습니다. 비트 마이닝에서 데이터가 어디에서 오는지 알고 싶습니다.
Answer
그들은 블록에 들어가서 블록에 (이진 형식의) 해시를 갖도록 만드는 임의의 임시 값 (약간의 임의 데이터)을 찾으려고합니다. )는 특정 양의 0 “으로 시작합니다. 0이 많을수록 해시가 더 드뭅니다. 좋은 해시”결과는 예측할 수 없으므로 좋은 임시 값을 찾기 위해 여러 번 시도해야합니다.
0의 양은 블록을 찾는 것이 얼마나 어려운지에 따라 결정됩니다. 비트 코인에서는 10 분마다 새로운 블록을 갖도록 조정합니다 (평균적으로 이전 블록이 발견되는 속도를 고려할 때).
흥미로운 : 해시가 예측할 수 없기 때문에 임시 값이 어떻게 변경되는지는 중요하지 않습니다. ! 대부분의 경우 0에서 위쪽으로 세는 숫자 일뿐입니다.
답변
여기에 매우 문제를 간략히 설명했지만 문제가 무엇인지 꽤 잘 알 수 있습니다.
데이터 :
가장 마지막 블록의 해시 (30 자로 단축) :
00000000000001adf44c7d69767585
다음 포함 (단축)을 기다리는 몇 가지 유효한 거래의 해시입니다.
5572eca4dd4 db7d0c0b845
그리고 이것은 방금 만든 특별한 거래의 해시로 25BTC를 제공합니다. (현재 보상) 자신에게 :
916d849af76
다음 블록 만들기 :
이제 새 블록이 어떻게 생겼는지에 대한 대략적인 근사치를 사용하겠습니다 (실제 블록은 이진 형식을 사용합니다). 여기에는 이전 블록의 해시와 해당 3 개 트랜잭션의 해시가 포함됩니다.
00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--
이제 손으로 채굴을 해봅시다! 우리의 목표는이 작업을 완료하는 것입니다. 새 블록의 해시가 13 개의 0으로 시작되도록 nonce (쓰레기 조각)로 차단합니다 (이전 해시를 고려하면 13 개의 0이 현재 난이도 인 것 같습니다!).
마이닝 (이 블록 완성 시도) :
nonce = 1로 시도하고 해시를 계산합니다. 블록의 (저는 md5 해시 알고리즘을 사용하고 있지만 비트 코인은 double sha256을 사용합니다) :
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 8b9b994dcf57f8f90194d82e234b72ac
행운이 없습니다. 해시는 0으로 시작하지 않습니다. … nonce = 2
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 5b7ce5bcc07a2822f227fcae7792fd90
불행…
…
nonce = 16이면 첫 번째 선행 0을 얻습니다.
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 03b80c7a34b060b33dd8fbbece79cee3
nonce = 208의 경우 선행 0 두 개를 얻습니다!
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 0055e55df5758517c9bed0981b52ce4a
다음과 같이 계속합니다… 마침내 13 개의 선행 0이있는 해시를 찾은 경우… 당신은 승자입니다! 이제 다른 채굴 자들이 귀하의 블록을 구축 할 것입니다. 귀하는 “25BTC를 얻었습니다.
하지만”빠르게해야합니다!
1 단계로 돌아 가기…
누군가 블록을 만들기 전에 관리하면 “새 블록으로 처음부터 다시 시작해야합니다. “의 해시 (우승자 중 하나).
댓글
- 또한 귀하의 예는 개념적으로 올바른 방향으로 나아가고 있지만 실제 성공은 헤더의 sha256 해시가 대상보다 작을 때. 예제 대상 :
00000000000001ae00000000000000
가00000000000001adf44c7d69767585
<보다 큼-유효한 해시입니다. . - @Reonarudo, 정확히는 아니지만 이것은 실제로 수행 된 작업에 대한 매우 간단한 스케치입니다. 거래는 종종 주소로 만들어진 스크립트로 이루어지며 비트 코인 위키에서 더 많은 정보를 찾을 수 있습니다.
- 이것은 기본적으로 멋진 (간단한) 요약처럼 들리지만, 비트 코인 네트워크는 어느 시점에서 이것을 받아들입니까? 다음 유효한 블록으로 , 두 명의 다른 채굴자가 유효한 블록을 거의 동시에 제출 한 (가능성이 낮음) 이벤트에서는 어떻게됩니까?
- 와, 좋은 대답입니다! ‘ 아직도 ‘ 내가 생각할 수 없었던 몇 가지가 있습니다. ‘ s는 귀하가 ‘ 6 분 동안 솔루션을 찾고 있었는데 새로운 거래가 발생했다고 말합니다. 1) 이제 어떻게 되나요? 다시 시작해야한다면 모두가 다시 시작해야하는 것처럼 들립니다. 그렇다면 블록 체인은 어떻게 ~ 10 분 안에 블록을 찾을 수 있을까요? 2) 어쨌든 그 거래는 어떻게 나에게 올까요?3)이 블록에 대한 해결책을 찾은 다음 방금 닫은 블록에 대해 수락 한 다른 노드에서 새 트랜잭션이 나에게 오면 어떻게합니까?
- 1) 예, 빌드하면 모두 다시 시작합니다. 오래된 블록 위에는 ‘ 블록이 더 긴 체인의 일부가 될 가능성이 적고 나머지 네트워크에서 무시됩니다. 블록이 10 분 이내에 발견된다는 보장은 없으며 ‘ 단지 평균 통계 결과입니다. 2) 어떤 거래? 블록은 채굴 한 사람이 브로드 캐스트하고 다른 노드에 의해 중계됩니다. 3) 대기중인 모든 거래를 포함하도록 강요하는 것은 없지만 더 많은 거래를 포함할수록 더 많은 수수료를 징수 할 수 있습니다.
답변
다음은 약 10 분마다 진행되는 글로벌 통계 도박에 대한 설명입니다. 게임 간격은 간격 당 필요한 “해시”수를 나타내는 난이도 에 의해 제어됩니다.
즉, difficulty
및 target
는 획득 가능성에 대한 “집의 확률”을 정의합니다. 우승 SHA 해시. nonce
는 “스크래치 오프”영역입니다.
각 해시는 전기를 소비하고 열을 방출하므로 추가 냉각이 필요합니다.
다음은 각 해시로 수행되는 작업입니다.
1 단계
높은 수준에서 광부 소프트웨어는 활성 트랜잭션 목록을 가져온 다음 “블록”이라고하는 것으로 그룹화합니다.
또는 더 정확하게 설명 : 광부 소프트웨어는 모든 거래를 “머클 루트”라고하는 요약보기로 변환하고 해시하여 거래를 나타냅니다. p>
2 단계
그런 다음 채굴 소프트웨어는이를 a라는 바이너리 형식으로 변환합니다. 블록 헤더 는 이전 블록 (체인이라고도 함)도 참조합니다.
Field Purpose Updated when... Size (Bytes) Version Block version number You upgrade the software and 4 it specifies a new version hashPrevBlock 256-bit hash of the previous A new block comes in 32 block header hashMerkleRoot 256-bit hash based on all A transaction is accepted 32 the transactions in the block Time Current timestamp as seconds Every few seconds 4 since 1970-01-01T00:00 UTC Bits Current target in compact format The difficulty is adjusted 4 Nonce 32-bit number (starts at 0) A hash is tried (increments) 4
3 단계 :
광부 하드웨어는 “nonce”라고하는이 블록의 작은 부분을 변경합니다. .
4 단계 :
블록 헤더 해시 되고 대상과 비교 됩니다. 마치 10,000,000> 7,000,000 (실수 훨씬 더 크고 16 진수). 대상은 압축되어 각 블록의 비트라는 필드에 저장됩니다.
확장 대상은 다음과 같습니다.
Target 0000000000000083ef00000000000000000000000000000000000000000000000
그리고 목표는 블록의 SHA256 해시 가이 값보다 작은 지 확인하는 것입니다. 아래 예에서 “83ee
“는 “83ef
“
보다 작습니다.
이 개념을 단순화하기 위해 앞의 0을 세어 목표를 설정하십시오 (여기에 다른 답변이 설명하는 것처럼). 다음은 예입니다.
여기 BlockChain.info에서 볼 수있는 트랜잭션이있는 샘플 블록이 있습니다. 오른쪽 상단 모서리를보십시오. 이 해시에 대한 웹 페이지의 :
Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
이전 해시는 오늘의 것이며 14 개의 앞에 0이 있습니다. 8 개의 선행 0이있는 블록 100 을 사용하여 3 년 전에 필요했던 것과 비교해 보겠습니다.
Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
요약
하루가 끝나면 광부 모두가 is :
- 블록 헤더를 입력으로 사용
- Nonce 변경
- 블록 헤더가 있는지 테스트 hash 가 Target보다 작습니다. 맞으면 승리합니다.
- 2 단계로 이동 (또는 다른 사람이 블록을 이기면 1 단계로 이동)
Bitcoin-QT가 블록을 찾았을 때 무엇을하는지 알고 싶으십니까? … 여기에 게시했습니다. .이 게시물의 정보는 다음과 같습니다. 무슨 일이 일어 났는지 이해하는 데 도움이됩니다.
댓글
- n ‘ 넌스 (32 비트) 14 개의 선행 0 (14×4 = 56 비트)으로 시작해야하는 해시를 찾기에는 너무 작습니다. 이러한 해시를 찾으려면 평균 2 ^ 56 / 2 번 시도하고 32 비트는 필요하지 않습니다. 따라서 가능한 모든 nonce 값이 소진되기 전에 2 ^ 32 번의 시도 만 가능합니다. 편집 : 매초마다 시간이 변경됨에 따라 해시 속도가 4GH / 초를 초과하는 경우에만 적용되는 것 같습니다 (내 생각에는 …)
- 예, 당신은 ‘ 맞습니다. … 차단 헤더의 URL에서 :
Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.
Answer
채굴은 거래 원장이 어떻게 생겼는지에 대한 합의에 도달하고 아무도 부정 행위를하지 않는다는 것을 알 수있는 방법을 제공합니다.
이것이 채굴의 비 기술적 정의입니다. .
이중 지출의 “권한”은 블록 체인입니다. 블록 체인은 블록 체인에있는 모든 블록의 기록과 다음 트랜잭션 블록으로 구성됩니다. 보상 보조금은 현재 다음 블록을 제출하는 당사자에게 25 BTC입니다. 그러나 저기 … 당신은 다른 사람들과 마찬가지로 25 BTC (현재 약 $ 825 가치)를 원합니다. 그럼 내가 “내가 스스로 블록을 속이고 주장 할 수 없도록 어떻게 만들 수 있니?”
글쎄, 당신은 당신과 내가 경쟁해야하는 시스템을 설치했습니다. 그것이 바로 작업 증명이하는 일입니다. -보상을 청구 할 때 내가 실제로 관련된 작업을 수행했음을 쉽게 증명할 수 있도록합니다. 그래서 2 %의 확률로 블록을 풀려면 채굴 작업의 2 %를 투입해야합니다. 모든 작업의 2 % 미만을 투입하고 여전히 최소 2 %의 시간 (평균) 블록을 해결할 방법이 없습니다.
결과적으로 트랜잭션 블록 제출되면 모든 동료는 이중 지출이 없었는지, 적절한 금액의 보조금이 청구되었는지, 제출자가 해당 솔루션에 필요한 작업을 진정으로 지출했는지 확인합니다.이 세 가지 규칙을 사용하면 프로세스를 관리하거나 결과를 제어 할 수있는 중앙 기관