|
|
2025-10-17 09:01:55에 게시됨
|
|
|
|

Base58, Base58Check, Bech32, Bech32m은 블록체인 기술에서 주로 사용되는 인코딩 형식으로, 가독성 향상, 오류 감소, 데이터 무결성 확보에 사용됩니다. 이 네 가지 코드는 보안, 호환성, 오류 수정 기능을 보장하는 데 있어 고유한 장점을 지니고 있으며, 현대 블록체인 주소 시스템의 중요한 초석입니다.
베이스58
"Base58"은 나카모토 사토시가 발명한 인코딩 방식으로, 잘 알려진 인코딩 방식인 "Base64"를 기반으로 한 것입니다. Base64 문자 집합에는 모든 숫자와 대문자, 소문자, 그리고 두 개의 기호("+"와 "/")가 포함되어 있습니다; 총 64명의 문자입니다. 사토시 나카모토는 숫자 0, 대문자 I와 O, 소문자 l, 그리고 기호를 제거하여 Base58이 되었습니다.
문자 집합: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58Check
Base58과 비교할 때, Base58Check 인코딩은 체크섬 계산이 한 번 더 많습니다. 아래에 나와 있습니다:
Base58Check는 전통적인 코딩 방식에서 오류가 발생하기 쉽고 인식하기 어렵고 검증되지 않는 문제를 해결하여, 주소와 개인 키 같은 블록체인 내 핵심 데이터에 대해 안전하고 컴팩트하며 인간 친화적이며 오류 감지 가능한 표현 방식을 제공합니다. 현재는 점차 더 발전된 Bech32/Bech32m(SegWit 주소용)으로 대체되고 있지만, 초기 비트코인 생태계에서 중요한 역할을 했습니다.
베크32
"Bech32"는 Pieter Wuille와 Greg Maxwell이 작성한 BIP 0173에 의해 정의된 인코딩 방법입니다. 하지만 이 부호화는 기원도 있습니다: "Bech"는 1959년과 1960년에 각각 세 명의 수학자가 발명한 순환 오류 수정 알고리즘인 "BCH"를 의미합니다(BCH라는 이름은 이 세 명의 수학자 이름에서 유래했습니다). "32"는 인코딩 방법의 문자 집합이 32자만 포함된다는 의미입니다: 소문자와 숫자, 숫자 "1", "b", "i", "o"를 제외한 숫자입니다.
BIP 0173의 서두에서 저자들은 Base58의 바람직하지 않은 측면을 지적합니다:
- Base58은 대문자와 소문자 영어 글자를 모두 사용하여, 데이터가 QR 코드로 그려지도록 합니다. 이는 작은 '숫자 알파벳' 모드가 아니라 더 큰 '바이트 데이터' 모드에서만 사용됩니다.
- 케이스와 케이스를 모두 사용하다 보니 휴대폰 키보드로 전사, 타이핑, 읽기가 어렵습니다.
- 체크섬은 두 번의 연속된 SHA256 작업이 필요했는데, 느리고 잘못된 위치를 찾을 수 없었습니다.
- 대부분의 국소화 가능한 오류 인코딩 방법은 문자 집합 크기가 소수 거듭제곱일 때만 작동하며, 58은 소수 거듭제곱이 아닙니다.
- Base58은 디코딩이 더 복잡하고 디코딩이 느립니다.
그 결과 Bech32의 새로운 접근법은 소문자 문자와 숫자만 사용하며; 필요할 때, 예를 들어 QR 코드를 그릴 때는 이 글자들을 모두 대문자로 대체하여 더 간결하게 표현할 수 있습니다. 작은 QR 코드는 Bech32 주소가 단수이므로 영숫자 모드로 QR 코드로 인코딩할 수 있습니다. 즉, Base58은 대문자와 소문자를 요구하기 때문에 더 간결한 QR 코드를 만들 수 있습니다(즉, 영숫자 모드를 사용할 수 없지만, Bech32는 그렇지 않습니다). 아래에 나와 있습니다:
보시다시피, Bech32 주소에도 불구하고더 많은 문자를 포함하지만, 영숫자 패턴을 사용할 수 있어 QR 코드가 전체 데이터를 덜 사용합니다。
동시에 Bech32는 오류를 찾아내는 능력도 있습니다: 복사 오류를 발견할 뿐만 아니라 잘못 복사한 비트도 지적할 수 있습니다(이 오류 발견 능력은 Base58보다 훨씬 우수합니다).
실제로 BCH 알고리즘에는 '오류 수정' 기능도 있는데, 잘못 복사한 비트뿐만 아니라 어떤 문자여야 하는지도 알려줍니다. 그러나 BIP 0173의 저자들은 본질적인 위험성을 발견했습니다: 한편으로는 오류 수정 강화가 오류 위치 파악 능력을 약화시키고; 반면, 사용자가 소프트웨어의 오류 수정 기능에 지나치게 신뢰하면, 소프트웨어가 사용자가 입력한 잘못된 데이터를 "유효하지만 쓸모없는" 데이터 조각으로 수정할 수 있습니다. 이는 BCH 인코딩 데이터로서는 유효하지만; 하지만 복원된 비트코인 스크립트가 수신자나 누구의 통제 하에 있지 않을 가능성도 있습니다. 이건 매우 위험해. 따라서 BIP 0173은 "사용자가 잘못 복사되었을 수 있는 비트를 상기시키는 것 외에도, 오류 수정 기능을 구현하지 말아야 합니다(수정 제안 제공)." ”
또한 Bech32는 Base58 인코딩에서 발견되는 패턴을 따릅니다:
1. Bech32 데이터는 Base58의 접두사와 유사한 "의미 있는 데이터 (hrp)"라는 단락으로 시작하며, 이는 어떤 종류의 데이터인지 나타낼 수 있습니다. HRP는 32자 이상을 사용할 수 있습니다; Bech32는 또한 HRP와 실제로 디코딩할 데이터를 구분하는 구분자로 숫자 "1"을 사용합니다. 비트코인 외에도 Bech32를 채택한 많은 프로젝트들이 있습니다; HRP는 서로 다른 항목과 데이터를 구분하는 데 사용됩니다. 여기 등록된 HRP 목록이 있는데, 매우 흥미롭지만 (단지 흥미로울 뿐입니다). 2. Bech32는 인코딩된 데이터의 마지막 6자 부분을 차지하는 체크섬도 설계했습니다.
베크32m
"Bech32m"은 BIP 0350에서 정의한 인코딩 방법입니다. 링크:하이퍼링크 로그인이 보입니다.이 방법은 개발자들이 Bech32 코딩에서 취약점을 발견하면서 제안되었습니다:
마지막 문자가 "p"일 때, 그 문자 앞에 "q"를 임의로 삽입하거나 제거해도 체크섬 오류가 발생하지 않습니다(데이터는 여전히 유효한 것으로 간주됩니다).체크섬 메커니즘은 완전히 기능을 잃게 됩니다끝내다.
표준화된 비트코인 스크립트를 추가하지 않는다면, 이 문제는 쉽게 해결할 수 있습니다: P2WPKH 주소와 P2WSH 주소 모두 일정한 길이가 있으니, 길이 검사만 더하면 됩니다. 하지만 앞으로 새로운 표준화된 스크립트도 추가할 예정이므로 주소 길이가 변경될 수 있으므로 이 문제를 반드시 해결해야 합니다.
Bech32m은 Bech32 체크섬 생성기의 매개변수를 변경하여 이 문제를 해결합니다.
현재 Bech32m은 "Taproot" 업그레이드로 추가된 "P2TR" 스크립트의 주소 인코딩에만 사용됩니다. 앞으로 다른 표준화된 문자의 주소 인코딩에도 사용될 수 있습니다.
참조:
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다.
하이퍼링크 로그인이 보입니다. |
이전의:틱톡, Douyin은 패키지를 캡처하고 Frida 스크립트를 종료하는데, 이 스크립트는 SO 파일 패치의 위치를 찾을 수 있습니다다음:비트코인 주소 유형 소개: 레거시, 네스티드 SegWit, 네이티브 SegWit, 그리고 Taproot
|