베이스58
베이스58(Base58)은 큰 숫자를 영숫자(alphanumeric) 텍스트로 나타내기 위해 사용되는 이진 텍스트 인코딩 방식의 집합으로 사토시 나카모토가 비트코인과 함께 사용하기 위해 도입했다. 이후 다른 암호화폐와 애플리케이션에 사용되었다.
개요
베이스58(Base58)은 큰 숫자를 영숫자(alphanumeric) 텍스트로 나타내기 위해 사용되는 이진 텍스트 인코딩 방식의 집합으로 사토시 나카모토가 비트코인과 함께 사용하기 위해 도입했다. 베이스64(Base64)와 비슷하지만 영숫자가 아닌 문자와 인쇄시 모호하게 보이는 글자를 모두 피하고자 수정되었다. 이것은 데이터를 수동으로 입력하여 일부 시각적 소스에서 복사하지만, 더블클릭하면 일반적으로 전체 문자열을 선택하기 때문에 복사 및 붙여넣기가 용이하도록 설계되었다.
표준 Base64 대신 Base58을 사용하는 이유는 일부 글꼴에서는 동일하게 보이거나 시각적으로 동일한 모양의 계정, 계좌 번호를 생성하는 데 사용할 수 있는 0OIl 문자를 제외하기 위함이며 영숫자가 아닌 문자의 문자열은 계정이나 계좌에서 쉽게 받아들여지지 않는다. 이메일 사용 시 끊어야 할 구두점이 없으면 끊기지 않으며 더블클릭할 때 모두 영숫자일 경우 모든글자가 한 단어로 선택 가능하기 때문이다.
Base64와 비교하면 0(숫자 영(0)), O(대문자 오(O)), I(대문자 아이(I)), l(소문자 엘(L))과 알파벳이 아닌 문자 +(더하기, 플러스)와 /(빗금, 슬래시)가 생략된다. Base64와 대조적으로 인코딩의 자릿수는 원래 데이터의 바이트 경계와 제대로 정렬되지 않는다. 이러한 이유로, 이 방법은 큰 정수를 인코딩하기에 적합하지만, 더 긴 이진 데이터를 인코딩하도록 설계되지 않았다. 실제 알파벳 문자의 순서는 응용 프로그램에 따라 달라지는데, 이 때문에 'Base58'이라는 용어만으로는 형식을 충분히 기술할 수 없다. Base56은 Base58에 비해 1(숫자 일(1))과 o(소문자 오(o))를 제외한다.
Base58Check
Base58Check은 처음 몇 글자로 데이터 유형을 명확하게 인코딩하는 Base58의 인코딩 형식이며 마지막 몇 글자에 오류 감지 코드를 포함하고 있다.
특징
- 쉽게 구별할 수 있는 58개의 영숫자 기호 세트(숫자 영(0), 대문자 오(O), 대문자 아이(I), 소문자 엘(l) 제외)
- 임의 크기의 페이로드(Payload)
- 데이터에서 선행 0을 보존하기 위한 추가 단계가 있다.
- SHA256 기반 오류 검사 코드의 4바이트(32비트) 코드는 자동으로 타이핑 오류를 감지하고 수정할 수 있다.
- 비트코인 주소는 0x00을 사용하며 미래에는 0x05을 사용할 수 있다.
응용
응용 | 알파벳 |
---|---|
비트코인 주소 | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
|
IPFS 해시 | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
|
플리커에 대한 약식 URLs | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
|
Base58 색인표
비트코인에 사용되는 Base58 색인표는 비트코인 프로젝트에만 적용되며 외부에 사용되는 Base58과 동일하지 않다. 제외된 문자는 숫자 영(0), 대문자 오(O), 대문자 아이(I), 소문자 엘(l)이다.
값 | 문자 | 값 | 문자 | 값 | 문자 | 값 | 문자 |
---|---|---|---|---|---|---|---|
0 | 1 | 1 | 2 | 2 | 3 | 3 | 4 |
4 | 5 | 5 | 6 | 6 | 7 | 7 | 8 |
8 | 9 | 9 | A | 10 | B | 11 | C |
12 | D | 13 | E | 14 | F | 15 | G |
16 | H | 17 | J | 18 | K | 19 | L |
20 | M | 21 | N | 22 | P | 23 | Q |
24 | R | 25 | S | 26 | T | 27 | U |
28 | V | 29 | W | 30 | X | 31 | Y |
32 | Z | 33 | a | 34 | b | 35 | c |
36 | d | 37 | e | 38 | f | 39 | g |
40 | h | 41 | i | 42 | j | 43 | k |
44 | m | 45 | n | 46 | o | 47 | p |
48 | q | 49 | r | 50 | s | 51 | t |
52 | u | 53 | v | 54 | w | 55 | x |
56 | y | 57 | z |
참고자료
- 〈Base58〉, 《wikipedia》
- 〈Base58Check encoding〉, 《Bitcoin Wiki》
같이 보기