비트코인과 같은 암호화폐와 관련된 거래에서는 거래가 입력으로 간주되어 보안 해싱 알고리즘("SHA")을 통해 실행됩니다. SHA는 SHA-0, SHA-1, SHA-2, SHA-3의 4가지 SHA 알고리즘으로 구성됩니다.
SHA-1은 현재 SHA 해시 기능 중 가장 널리 사용되며 SSL(Secure Socket Layer) 보안을 비롯한 많은 애플리케이션과 프로토콜에서 활용됩니다.
SHA-2는 해시 값의 비트 수에 따라 SHA-224, SHA-256, SHA-384 및 SHA-512로 구성된 가장 일반적인 다른 유형입니다.
예를 들어 비트코인은 고정 길이의 해시 값을 제공하는 SHA-256을 사용합니다. 입력의 크기나 길이에 관계없이 출력의 길이는 항상 256비트로 고정됩니다. 이렇게 하면 입력 데이터가 엄청날 수 있으므로 기억할 필요가 없습니다. 해시를 기억하고 추적하기만 하면 됩니다. SHA 기능에 대한 자세한 내용을 보려면 여기를 클릭하십시오.
암호화 특성에 따라 해시 함수는 비밀번호 저장과 데이터 무결성이라는 두 가지 방법으로 적용될 수 있습니다.
암호를 공개적으로 저장하는 대신 모든 로그온 프로세스는 암호의 해시 값을 파일 자체에 저장합니다. 비밀번호 파일은 (사용자 ID, h(P)) 형식의 쌍 테이블로 구성됩니다.
프로세스는 아래 그래픽에 설명되어 있습니다.
침입자가 파일을 발견하는 경우 비밀번호 자체에 액세스했더라도 비밀번호 해시만 볼 수 있습니다. 해시 함수는 사전 이미지 저항 특성을 갖고 있으므로 해시를 사용하여 로그인할 수 없으며 해시 값에서 비밀번호를 파생할 수도 없습니다.
이것은 해시 함수의 가장 일반적인 적용입니다. 이는 데이터 파일에 대한 체크섬을 생성하여 사용자에게 데이터가 정확하다는 확신을 제공하는 데 사용됩니다.

위 그래픽에서는 사용자가 원본 파일에 대한 변경 사항을 감지하는 데 도움이 되는 무결성 검사를 볼 수 있습니다.
데이터 무결성 검사 시 주의할 점은 해당 파일이 실제로 원본 파일이라고 생각하는 경우에만 가치가 있다는 것입니다.
예:침입자가 들어와 파일 데이터를 수정하는 대신 전체 파일을 변경하고 완전히 새로운 해시를 계산한 다음 이를 수신자에게 보냅니다. 어떻게 알 수 있나요? 당신은 그렇지 않을 것입니다.
따라서 무결성 검사는 사용자가 파일의 독창성을 확신하는 경우에만 유용합니다.
해시 함수가 "안전"하고 효과적인 암호화 도구로 간주되려면 특정 특성이나 속성이 있어야 합니다.
이 속성에서는 개인이 해시 함수를 통해 특정 입력을 몇 번이나 수행하더라도 항상 동일한 결과를 얻게 됩니다. 이는 특정 입력을 쉽게 추적할 수 있도록 하기 위한 것입니다.
이 속성에서 모든 해시 함수는 입력의 해시를 빠르게 반환해야 합니다.
"사전 이미지 저항" 속성은 해시 함수를 역전시키는 것이 계산상 어려워야 함을 의미합니다.
예:해시 함수(h)가 해시 값(z)을 생성한 경우 (z)로 해시되는 입력 값(x)을 찾는 것은 어려운 프로세스입니다. 체인의 링크를 찾기가 매우 어렵습니다. 이는 해시 값만 갖고 입력(체인의 링크)을 찾으려는 잠재적인 해커로부터 보호합니다.
이 속성은 동일한 해시를 사용하여 다른 입력을 찾기가 어렵다는 것을 의미합니다.
예:입력(x)에 대한 해시 함수(h)가 해시 값 h(x)를 생성하는 경우 h(y) =h(x)가 되도록 다른 입력 값(y)을 찾는 것이 어려워야 합니다.
이는 입력 값과 해시가 있고 원래 입력 값 대신 다른 값 h(x)를 합법적인 값으로 대체하려는 모든 위협으로부터 보호합니다.
이 속성을 사용하면 동일한 해시에서 발생하는 길이에 상관없이 서로 다른 두 입력을 찾기가 어렵습니다.
예:해시 함수 h의 경우 해커가 h(x) =h(y)를 합칠 수 있는 두 개의 서로 다른 출력 x와 y를 찾는 것이 어려워야 합니다.
해시 함수는 본질적으로 고정된 해시 길이로 함수를 압축하지만 해시 함수가 충돌하지 않는 것은 불가능합니다. "충돌 없음" 속성을 가짐으로써 공격자가 동일한 해시를 가진 두 개의 입력 값을 찾는 것이 더욱 어려워집니다.
모든 출력 "y"에 대해 "최소 엔트로피가 높은" 분포에서 "K"를 선택하면 H(k|x) =Y가 되는 입력 "x"를 찾는 것이 매우 어렵습니다.
"높은 최소 엔트로피"는 선택되는 값이 값 범위에 너무 광범위하게 분산되어 있어 올바른 값을 선택할 확률이 매우 낮다는 것을 의미합니다.
"1에서 100 사이의 숫자를 선택하세요"라는 게임을 기억하시나요? 그것은 높은 최소 엔트로피입니다.
| 즉, k|x는 kx를 의미합니다.
데이터 구조 속성에 대해 이야기할 때 포인터와 연결 목록을 참조합니다.
포인터는 프로그래밍에서 다른 변수의 주소를 저장하고 다른 변수의 위치를 가리키는 변수입니다.
연결된 목록은 각각 포인터를 통해 다음 블록에 연결된 데이터 집합을 포함하는 일련의 블록입니다.

각 블록 내부에는 다음 블록에 대한 주소가 포함된 포인터가 표시됩니다. 포인터가 보이는 첫 번째 블록을 Genesis 블록이라고 합니다.

데이터 구조 속성에 대해 이야기할 때 포인터와 연결 목록을 참조합니다.
포인터는 프로그래밍에서 다른 변수의 주소를 저장하고 다른 변수의 위치를 가리키는 변수입니다.
연결된 목록은 각각 포인터를 통해 다음 블록에 연결된 데이터 집합을 포함하는 일련의 블록입니다.

머클 트리를 볼 때마다 리프 노드(L1, L2, L3, L4)부터 맨 아래부터 시작하는 것이 가장 좋습니다. 위로 이동하면 하위 노드(해시 0-0, 0-1, 1-0, 1-1)의 값(해시(L1)), (해시(L2)), (해시(L3)) 및 (해시(L4))의 해시 역할을 하는 리프가 아닌 노드가 표시됩니다.
"하위 노드"는 해시에 공급되는 노드입니다. 해시 0의 경우 하위 노드는 해시 0-0 및 해시 0-1입니다. 해시 1의 경우 하위 노드는 해시 1-0 및 해시 1-1입니다.

차트를 "상위 해시"라고 표시된 가장 높은 계층으로 이동하면 이것이 루트 노드입니다.
그렇다면 머클 트리의 목적이 무엇인지 궁금하시죠? 특정 블록을 정렬하는 것은 쉬운 작업이 아니지만 Merkle 트리를 사용하면 특정 거래가 해당 블록에 속하는지 여부를 확인하기 위해 찾는 시간을 절약할 수 있습니다.
거래를 볼 때 포함된 데이터가 적절한 블록에 속하는지 확인하고 싶을 것입니다. 머클 트리를 사용하면 해시의 흔적을 따라가며 데이터를 빠르게 추적할 수 있습니다.

새 블록이 도착하면 해당 블록의 전체 내용이 해시됩니다. 해시가 난이도 목표보다 낮으면 커뮤니티가 인정할 수 있도록 블록체인에 추가됩니다.
그런 식으로 체인에 추가할 새 블록을 준비하는 경우는 거의 없습니다. 이것이 임의의 데이터 문자열인 nonce가 블록의 해시에 추가되는 이유입니다. 추가되면 문자열이 다시 해시되어 난이도와 비교됩니다.
난이도보다 높으면 nonce가 변경되고 난이도 요구 사항이 충족될 때까지 계속해서 반복됩니다. 이러한 요구 사항이 충족될 때만 블록이 최종적으로 블록체인에 추가됩니다.
해시율은 채굴 과정에서 해싱 작업이 얼마나 빨리 진행되는지를 나타냅니다.
해시율이 높다는 것은 채굴 과정에 더 많은 참여자가 참여하여 원활한 운영이 가능하다는 것을 의미합니다. 그러나 해시레이트가 너무 빠르면 난이도가 높아집니다.
해시레이트가 너무 느려지면 난이도가 낮아집니다. 아이디어는 항상 시스템이 원활하게 실행되도록 하는 것이므로 정확한 해싱 작업을 위한 모든 수단을 제공하는 것이 필수적입니다.
요약하자면:
데이터 블록을 받으면 해당 블록 내용의 해시가 nonce 또는 임의의 데이터 문자열과 결합됩니다.
그런 다음 새로운 데이터 문자열(해시 + nonce)이 난이도 수준과 비교하여 다시 해시됩니다. 요구 사항을 충족하는지 여부에 따라 새 문자열이 다시 해시되거나 블록체인에 추가됩니다.
블록체인에 추가되면 커뮤니티에 통보됩니다
이 프로세스를 담당하는 채굴자는 비트코인으로 보상을 받습니다.