Solana 지갑 생성: ed25519 키와 주소 가이드
목차
Solana는 DeFi와 소비자 애플리케이션 모두에서 가장 널리 사용되는 블록체인 중 하나이지만, 지갑 생성 과정은 Bitcoin과 Ethereum과 의미 있게 다릅니다. 다른 타원 곡선, 다른 파생 경로, 다른 주소 인코딩, 키 관리에 대한 다른 가정. Bitcoin이나 Ethereum 세계에서 오는 분이라면 이러한 차이점이 중요하며 -- 잘못 이해하면 자금 손실이나 보안 침해로 이어질 수 있습니다.
이 가이드는 전체 Solana 지갑 생성 과정을 다룹니다: ed25519 타원 곡선, Solana 전용 파생 경로, Base58 주소 인코딩, 그리고 Solana 생태계 고유의 보안 고려사항.
Solana가 Bitcoin 및 Ethereum과 다른 점¶
가장 높은 수준에서 차이점은 타원 곡선입니다. Bitcoin과 Ethereum은 모두 효율적 암호 표준 그룹(SECG)의 곡선인 secp256k1을 사용합니다. Solana는 Daniel J. Bernstein과 동료들이 설계한 Edwards 형태의 곡선인 ed25519를 사용합니다. 곡선의 선택은 스택의 모든 계층에 영향을 미칩니다.
| 속성 | Bitcoin / Ethereum | Solana |
|---|---|---|
| 타원 곡선 | secp256k1 | ed25519 |
| 서명 방식 | ECDSA | EdDSA (Ed25519) |
| 개인키 크기 | 32바이트 | 64바이트 (확장) |
| 공개키 크기 | 33바이트 (압축) | 32바이트 |
| 주소 인코딩 | Bech32 / Hex | Base58 |
| 파생 경로 | m/44'/0'/0' 또는 m/44'/60'/0'/0 | m/44'/501'/0'/0' |
Solana의 설계 선택은 높은 처리량과 빠른 서명 검증이라는 우선순위를 반영합니다. Ed25519 서명은 secp256k1에서의 ECDSA 서명보다 검증이 약 2배 빠르며, 이는 초당 수천 건의 트랜잭션을 처리할 때 중요합니다. 두 곡선의 더 깊은 기술적 비교는 secp256k1 vs ed25519를 참고하세요.
ed25519 곡선¶
Ed25519는 Curve25519에서 작동하는 Edwards-curve Digital Signature Algorithm (EdDSA)의 특정 인스턴스입니다. 이 곡선은 소수체 2^255 - 19(이름의 유래)에 정의되며 꼬인 Edwards 형태를 사용합니다:
-x^2 + y^2 = 1 + d*x^2*y^2
여기서 d는 특정 상수입니다. 보안 수준은 약 128비트로 -- secp256k1에 비교할 만하지만 -- 구현 특성은 상당히 다릅니다.
키 생성¶
Solana 개인키는 ed25519 용어에서 "시드"라고 불리는 32바이트 랜덤 스칼라로 시작합니다(BIP39 시드 구문과 혼동하지 마세요). 이 32바이트 값은 SHA-512로 해시되어 64바이트의 확장 키를 생성합니다. 하위 32바이트(비트 클램핑 후)가 서명에 사용되는 스칼라가 됩니다. 상위 32바이트는 서명 과정에서 추가 무작위성으로 사용됩니다.
공개키는 클램핑된 스칼라로 곡선의 기본점 B를 곱하여 파생됩니다. 결과는 압축된 Edwards 형태의 32바이트 포인트입니다. 이 32바이트 공개키가 곧 Solana 주소입니다 -- Ethereum의 Keccak-256과 같은 추가 해싱 단계가 없습니다.
랜덤 32바이트 → SHA-512 → 64바이트 확장 키
→ 하위 32바이트 (클램핑) × 기본점 B → 32바이트 공개키 = Solana 주소
결정론적 서명¶
ed25519의 ECDSA 대비 장점 중 하나는 서명이 결정론적이라는 것입니다. ECDSA는 각 서명마다 랜덤 논스가 필요하며, 결함이 있는 난수 생성기는 개인키를 치명적으로 유출할 수 있습니다(이는 Bitcoin과 Ethereum의 역사에서 여러 번 발생했습니다). Ed25519는 메시지와 개인키에서 논스를 파생하여 이 전체 취약점 클래스를 제거합니다.
성능¶
Ed25519 서명 검증은 빠릅니다 -- 단일 최신 CPU 코어에서 초당 약 70,000회의 검증이 가능합니다. 이는 secp256k1에서의 ECDSA 검증 속도의 약 2배입니다. 400밀리초 블록 시간과 높은 트랜잭션 처리량을 목표로 하는 Solana의 아키텍처에 이 속도 이점은 중요합니다.
Solana 파생 경로¶
Bitcoin과 Ethereum처럼 Solana 지갑도 단일 시드 구문에서 여러 키를 생성하기 위해 HD 지갑 파생을 사용합니다. 니모닉 생성에는 BIP39, 계층적 파생에는 BIP32가 표준이지만, Solana 전용 경로를 사용합니다.
표준 경로: m/44'/501'/0'/0'¶
정식 Solana 파생 경로는:
m/44'/501'/0'/0'
BIP44에 따른 분석:
44'--- 목적: BIP44 다중 계정 계층.501'--- 코인 유형: 501은 Solana의 SLIP44 등록 인덱스.0'--- 계정: 첫 번째 계정.0'--- "잔돈" 레벨이지만, Solana의 관례에서는 주소 인덱스.
네 레벨 모두 경화 파생(아포스트로피로 표시)을 사용합니다. 이는 마지막 두 레벨에 비경화 파생을 사용하는 Ethereum의 m/44'/60'/0'/0/0과 다릅니다. Solana의 전체 경화 경로 선택은 파생된 키 간 더 강한 격리를 제공합니다: 하나의 파생 키가 손상되어도 형제 키의 손상으로 이어질 수 없습니다.
다중 계정¶
추가 계정의 경우, 계정 인덱스를 증가시킵니다:
- 첫 번째 계정:
m/44'/501'/0'/0' - 두 번째 계정:
m/44'/501'/1'/0' - 세 번째 계정:
m/44'/501'/2'/0'
일부 지갑(Phantom 등)은 마지막 인덱스 증가도 지원할 수 있습니다:
m/44'/501'/0'/0'm/44'/501'/0'/1'm/44'/501'/0'/2'
호환성 고려사항¶
모든 Solana 지갑이 정확히 같은 파생 경로를 사용하는 것은 아닙니다. 역사적으로 Solana CLI는 m/44'/501'(단 두 레벨)을 사용했고, 대부분의 GUI 지갑은 m/44'/501'/0'/0'을 사용합니다. 이 불일치는 같은 시드 구문이 다른 지갑에서 다른 주소를 생성할 수 있음을 의미합니다. 지갑을 복구할 때는 항상 해당 지갑이 기대하는 파생 경로를 확인하세요.
SafeSeed의 Solana 시드 구문 생성기는 사용된 정확한 파생 경로를 표시하므로, 어떤 경로가 어떤 주소에 매핑되는지 정확히 알 수 있습니다.
단계별 지갑 생성¶
BIP39 시드 구문에서 Solana 지갑을 생성하는 전체 과정을 개별 단계로 분해합니다.
1단계: 엔트로피 생성¶
암호학적으로 안전한 난수 생성기를 사용하여 128비트(12단어 구문용) 또는 256비트(24단어 구문용)의 엔트로피를 생성합니다. SafeSeed에서는 crypto.getRandomValues()를 통해 브라우저의 Web Crypto API를 사용합니다.
2단계: 니모닉 생성¶
엔트로피에 SHA-256 체크섬 비트를 추가하고, 11비트 세그먼트로 분할한 후, 각 세그먼트를 BIP39 단어 목록의 단어에 매핑합니다. 결과는 12개 또는 24개의 영단어입니다. 이 과정은 Bitcoin과 Ethereum과 동일합니다 -- BIP39는 블록체인에 구애받지 않습니다. 전체 분석은 BIP39 설명을 참고하세요.
3단계: 마스터 시드 파생¶
2,048번의 반복으로 니모닉 문자열(선택적 패스프레이즈 솔트 포함)에 PBKDF2-HMAC-SHA512를 적용하여 512비트 마스터 시드를 생성합니다.
4단계: Solana 키 파생¶
파생 경로 m/44'/501'/0'/0'를 따라 각 레벨에서 HMAC-SHA512 자식 키 파생을 수행합니다. Solana는 secp256k1 대신 ed25519를 사용하므로, 자식 키 파생은 BIP32가 아닌 SLIP-0010 표준을 사용합니다. 이 표준은 ed25519 키를 계층적으로 파생하는 방법을 지정합니다.
경로 끝의 출력은 32바이트 ed25519 시드입니다.
5단계: 키쌍 생성¶
32바이트 시드를 ed25519 키 생성에 입력합니다:
- 시드의 SHA-512를 계산하여 64바이트를 얻습니다.
- 하위 32바이트에 비트 클램핑을 적용합니다(최하위 3비트 제거, 최상위 비트 제거, 두 번째 최상위 비트 설정).
- 클램핑된 스칼라로 기본점 B를 곱하여 32바이트 공개키를 얻습니다.
키쌍은 64바이트 확장 개인키(시드 + 공개키)와 32바이트 공개키로 구성됩니다.
6단계: 주소 인코딩¶
32바이트 공개키를 Base58로 인코딩하여 사람이 읽을 수 있는 Solana 주소를 생성합니다. 추가 해싱도 없고, 접두사 바이트도 없습니다 -- 공개키 바이트의 순수한 Base58 인코딩입니다.
SafeSeed의 Solana 개인키 생성기에서 이 전체 흐름을 생성하고 검사할 수 있으며, 시드 구문, 파생 경로, 개인키, 공개키, 최종 주소를 보여줍니다.
Base58 주소 형식¶
Solana 주소는 Base58 인코딩을 사용합니다 -- Bitcoin의 레거시 주소에서 사용되는 동일한 Base58 알파벳으로, 시각적으로 혼동될 수 있는 문자를 제외합니다: 0(영), O(대문자 o), I(대문자 i), l(소문자 L).
일반적인 Solana 주소의 모습:
7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV
특성¶
- 길이: 32--44자(가장 일반적으로 43--44). Base58 인코딩이 고정 너비가 아니기 때문에 길이가 다양합니다. 앞에 오는 제로 바이트는 앞에 오는
1문자를 생성합니다. - 문자 집합:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz - 접두사 없음: Bitcoin(
1,3, 또는bc1으로 시작)이나 Ethereum(0x로 시작)과 달리 Solana 주소는 고정 접두사가 없습니다. 시각적 식별이 더 어렵지만 주소가 짧게 유지됩니다. - 내장 체크섬 없음: Base58Check(Bitcoin 레거시 주소에서 사용)와 달리 Solana의 Base58 인코딩에는 체크섬이 포함되지 않습니다. 오기 오류로 다른 사람의 주소이거나 아무에게도 속하지 않는 유효해 보이는 주소가 생성될 수 있습니다.
체크섬이 없기 때문에 신중한 취급이 필수적입니다. 수기 전사 대신 항상 복사-붙여넣기를 사용하세요. 가능하면 QR 코드를 사용하세요. 그리고 자금을 전송하기 전에 Solana 주소 검증기로 주소 형식을 검증하세요. 블록체인 간 주소 형식의 더 넓은 비교는 암호화폐 주소 형식 설명을 참고하세요.
Solana의 보안 고려사항¶
키 보안의 일반적인 원칙은 다른 블록체인과 마찬가지로 Solana에도 적용되지만, Solana 특유의 몇 가지 요소는 주의가 필요합니다.
오프라인 생성이 중요¶
Solana 주소에는 내장 체크섬이 없으므로 생성 중 실수를 감지하기가 더 어렵습니다. 네트워크 연결이 없는 머신에서 오프라인으로 지갑을 생성하면 유출 위험을 제거하고 출력을 신중하게 확인할 수 있는 통제된 환경을 제공합니다. SafeSeed의 도구는 이를 위해 설계되었습니다: 페이지를 로드하고, 연결을 끊고, 생성하고, 기록하세요. 일반적인 오프라인 생성 원칙은 온라인 시드 생성기 안전성을 참고하세요.
키쌍 파일¶
Solana CLI는 개인키를 일반적으로 id.json이라는 이름의 파일에 64바이트(ed25519 키쌍)의 JSON 배열로 저장합니다. GUI에서 지갑을 내보내고 CLI로 가져올 때(또는 그 반대) 이 형식을 접할 수 있습니다. 키쌍 파일은 시드 구문과 동일한 엄격함으로 보호하세요: 암호화하고, 에어갭 미디어에 저장하고, 네트워크에 연결된 머신에 절대 남기지 마세요.
토큰 계정¶
ETH와 동일한 주소에서 ERC-20 토큰을 보유하는 Ethereum과 달리, Solana는 관련 토큰 계정(ATA) -- 각 토큰 유형에 대한 별도의 온체인 계정을 사용합니다. 이것은 키 보안 문제가 아닌 구현 세부사항이지만, Solana 주소만으로는 보유 자산의 전체 모습을 알 수 없다는 것을 의미합니다. 주어진 지갑 주소에서 파생된 모든 ATA는 같은 개인키로 제어되므로, 시드 구문 백업은 여전히 충분합니다.
프로그램 파생 주소(PDA)¶
Solana의 프로그래밍 모델은 프로그램 파생 주소를 사용합니다 -- 프로그램 ID와 시드 세트에서 결정론적으로 생성되며, 의도적으로 대응하는 개인키가 없는 주소입니다. PDA는 스마트 컨트랙트(프로그램)가 온체인 상태를 관리하는 데 사용됩니다. PDA를 생성하거나 백업할 필요가 없습니다. 사용자 제어 지갑이 아닙니다.
내구 논스와 트랜잭션 서명¶
Solana 트랜잭션은 재전송 방지를 위해 최근 블록해시를 포함하며, 이는 트랜잭션이 약 60--90초 후에 만료됨을 의미합니다. 이는 오프라인 서명 워크플로우에 중요합니다: 온라인 머신에서 최근 블록해시(또는 내구 논스를 사용)를 가져오고, 서명을 위해 오프라인 머신으로 전달한 다음, 블록해시가 만료되기 전에 서명된 트랜잭션을 브로드캐스트해야 합니다. 하드웨어 지갑은 이를 자동으로 처리하지만, 커스텀 오프라인 서명 파이프라인을 구축하는 경우 타이밍 제약은 중요한 설계 고려사항입니다.
개인키 보안 모범 사례¶
체인에 관계없이 기본은 동일합니다: 시드 구문을 절대 공유하지 말고, 네트워크에 연결된 기기에 디지털로 저장하지 말고, 상당한 보유 자산에는 콜드 스토리지를 사용하세요. 포괄적인 내용은 개인키 보안 모범 사례를 참고하세요.
Solana의 지갑 생성 과정은 Bitcoin과 Ethereum과 개념적으로 유사합니다 -- 엔트로피가 시드 구문이 되고, 시드 구문이 마스터 키가 되고, 파생 경로가 개별 계정을 생성합니다. 그러나 기반이 되는 곡선(ed25519), 파생 표준(SLIP-0010), 주소 형식(체크섬 없는 원시 Base58)이 상호 운용성, 복구, 보안에 중요한 구현 세부사항의 고유한 집합을 만듭니다. 이러한 차이점을 이해하는 것은 학문적인 것이 아니라, Solana 보유 자산을 보호하는 기반입니다.