1. 터미널에서 솔라나 커맨드라인 툴 설치
솔라나 커맨드라인을 사용해보기 위해 솔라나 커맨드라인 툴 설치 페이지를 참고해봤다.
우선 터미널을 열어서(command + F)
sh -c "$(curl -sSfL https://release.solana.com/v1.8.0/install)"
을 입력하면 윈도우 우분투에서는 문제 없이 솔라나 1.8.0 이 설치되었는데,
Please update your PATH environment variable to include the solana programs:
맥북 프로에서는 위처럼 path 환경 변수를 업데이트 하라고 떠서 구글링 해서 업데이트 하고 진행했다.
path 환경 변수 업데이트 방법은 밑에 접어놓겠다.
path 환경변수 업데이트 하라는 메시지 밑 줄의 PATH="경로" 복사해놓기
터미널에 다음 명령어 입력해서 bash_profile 파일 열기
vi ~/.bash_profile
파일 생성되거나 열렸으면 i 눌러서 밑에 --INSERT-- 뜨게 하기
export <복사해놨던 path 변수 붙이기>
esc 누르고 :wq 친 후 엔터쳐서 파일 저장 및 나가기
잘 입력됐는지 확인하고 싶으면 터미널에서 vi ~/.bash_profile로 다시 들어가서 확인해보거나
cat ~/.bash_profile 입력해서 조회 가능
(vi로 들어갔을 때 저장 안하고 나오고 싶으면 :q 로 나오면 됨)
다음의 source문 쳐야 반영됨
source ~/.bash_profile
솔라나 설치 재시도
----------------
나는 터미널을 열면 bash가 아닌 zsh가 열려서 터미널을 다시 열 때마다 source ~/.bash_profile을 다시 해줬어야 했다.
이렇게 안하려면 zshrc에서 환경변수를 지정하면 된다.
vi ~/.zshrc
# i 누르고 다음 추가
export PATH="/Users/<User명>/.local/share/solana/install/active_release/bin:$PATH"
# esc 누르고 :wq 해서 저장 & 나가기
윈도우에서는 환경변수 적용하려면 터미널 닫았다가 다시 열라고 나온다. 터미널만 껐다 키면 된다.
설치가 됐다면 다음을 입력하자.
solana --version
# solana-cli 1.8.0 이 나오면 정상적으로 설치된 것
solana-install update
# 최신 버전으로 업데이트. 2021.11.02. 현재 1.8.2로 업데이트 된다.
설치 완료~
2. Paper 지갑 생성
solana-keygen은 솔라나 커맨드라인 툴을 설치하면 자동으로 설치되는 것 같다. 다음 명령어로 설치 여부를 확인해보고 시작하자.
solana-keygen --version
시드 구문 생성
solana-keygen new --no-outfile # 파일 안 생김
solana-keygen new # json 파일 생김
json 파일이 생기는 것은 파일 시스템 지갑의 결과로, 보안이 좀 떨어질 수 있으니 --no-outfile을 권장한다.
두 명령어 중 하나를 입력하면 bip39 암호를 입력하라고 한다(입력하지 않으려면 엔터를 쳐도 된다). 이 암호는 보안되지 않는 일반 텍스트로 저장되는 키페어 파일 자체가 아닌 복구 시드 구문의 보안을 향상시킨다고 한다.
일단 bip39 표준 단어 목록 이용해서 생성하는 방법을 몰라서(...) 12~24개의 단어를 임의로 입력해봤다. 입력해도 터미널에서는 보이지 않으므로 따로 작성해서 어딘가에 잘 저장한 후 붙여넣자.
그러면 터미널에서 pubkey(=지갑 주소)와 시드 구문을 뱉어준다. 생성 후 pubkey, 시드구문, bip39 암호를 따로 적어놓고 잘 보관하자.
보안을 강화하려면 --word-count <NUMBER> 를 입력해서 시드 구문 단어 수를 조정할 수도 있다고 한다.
만약 json 파일을 생성했다면 키페어가 어디에 생겼는지 경로를 함께 준다.
이 경로 외에도 cat ~/.config/solana/id.json 를 입력하면 숫자들이 나열되어 있는 것을 볼 수 있다. 255이하의 수로 이루어진 것으로 보이는데, 이게 바로 private key 다.
solana-keygen new --help # 사용 세부 정보 확인 가능
공개키 파생
시드 구문과 bip39(선택)를 이용해 유효한 공개키를 유도할 수 있다.
solana-keygen pubkey prompt://
위 명령어를 입력하면 [pubkey recovery]라면서 시드 구문을 입력하라는 메세지가 나오고, 엔터를 치면 bip39가 있으면 입력하라는 메세지가 나온다.
해봤더니 종이지갑을 생성할 때 keypair로 나왔던 pubkey와 다른 pubkey를 생성해줬다. prompt uri 체계를 사용해서 그런 듯 하다.
우선 위의 명령어를 치고 시드구문을 입력하면 base-58 문자열이 표시된다. 이게 내 시드구문과 연결된 bip44 지갑주소가 파생된거라고 한다. 잘 저장해놓자. 문서에서는 USB에 복사해놓길 권하고 있다.
- - - -
* solana-keygen을 사용해서 생성되는 시드 구문은 bip39 표준 영어 단어 목록을 사용한다. 만약 다른 단어 목록을 사용하는 다른 도구로 시드 구문을 생성한 경우 solana-keygen을 사용하려면 --skip-seed-phrase-validation을 인수로 전달해 이 validation을 통과해야 하는 듯 하다.
solana-keygen pubkey prompt:// --skip-seed-phrase-validation
- - - -
기존 raw keypair의 pubkey에 액세스하려면 prompt:// 대신 ASK 키워드를 대신 전달하면 된다 :
solana-keygen pubkey ASK
계층적 파생(Hierachical Derivation)
solana-cli는 ?key= 쿼리스트링이나 ?full-path= 쿼리스트링을 추가해 시드 구문 및 암호에서 개인키의 BIP32 및 BIP44 계층적 파생을 할 수 있도록 지원한다.
기본적으로 prompt: 는 솔라나의 기본 파생 경로로 m/44'/501' 을 파생시킬 것이다.
자식키를 파생하려면, ?key=<ACCOUNT>/<CHANGE> 쿼리 스트링을 제공하자.
예시)
solana-key pubkey prompt://?key=0/1
솔라나 표준인 BIP44 외의 다른 파생경로를 쓰고 싶으면 ?full-path-m/<PURPOSE><COIN_TYPE>/<CHANGE> 쿼리스트링을 제공하자.
solana-keygen pubkey prompt://?full-path=m/44/2017/0/1
keypair 확인
내가 종이 지갑의 개인키를 제어하는지 확인하려면 solana-keygen verify를 해보자.
solana-keygen verify <PUBKEY> prompt://
# Return
Verification for public key: <PUBKEY> : Success
공개키와 키페어인 시드 구문(=개인키)과 bip39 암호를 입력하면 Success, 다른 계정의 시드 구문을 입력하면 Failed 가 뜬다.
계정 잔고 확인
공개키만 있으면 계정 잔액을 확인할 수 있다. 더 안전하게 검색하고 싶으면 에어갭 컴퓨터에서 공개키 파생 지침을 따르고 공개키를 수동으로 입력하거나 USB에서 네트워크로 연결된 시스템에 전송하는 방법이 있다고 하는데 자세한 내용은 문서를 참고하자.
특정 클러스터에 연결하도록 솔라나 CLI 도구를 구성하자. 클러스터에는 mainnet-beta, devnet, testnet 중 하나를 입력하면 된다.
정상적으로 연결됐으면 잔고를 확인하자.
solana config set --url <CLUSTER URL> # (i.e. https://api.devnet.solana.com)
solana balance <PUBKEY>
여러 종이 지갑 주소 만들기
지갑 주소는 원하는 만큼 생성할 수 있다. 시드 구문 생성이나 공개키 파생 단계를 다시 실행해 생성하면 된다.
다양한 목적으로 본인 계정 간에 토큰을 전송하려면 여러 지갑 주소를 만드는게 유용할 수 있다.
일단 테스트를 위해서라도 2개 이상의 주소는 생성해두자.
'Solana > Documentation' 카테고리의 다른 글
[Solana] 3. 솔라나 데브넷 토큰 에어드랍 받아서 전송, 스테이킹 (0) | 2021.10.18 |
---|---|
[Solana] 2. 팬텀, 솔플레어 지갑 만들기 (0) | 2021.10.14 |
[Solana] 솔라나 CLI 사용법 메모 (0) | 2021.10.13 |
[Solana] 스테이킹 계정 구조 + 워밍업 예제 (0) | 2021.10.13 |
[Solana] 스테이킹하기 위한 지갑과 validator 선택 (0) | 2021.10.12 |