2019. 12. 17. 00:10ㆍTutorial & Training/Libra
Libra 공식문서를 참고하여 작성하였습니다.
Libra 구성 요구사항
- Linux(Red Hat 또는 Debian기반)또는 MacOS
- 안정적인 인터넷 연결 환경
- git
- Linux는 yum 또는 apt / MacOS는 homebrew
본 컨텐츠를 작성할 때 사용된 구성환경
ㆍ Linux host 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
ㆍ Description: Ubuntu 18.04.3 LTS
ㆍ Codename: bionic
Libra 구성요소 설치 및 두 사용자(Alice, Bob) 간의 트랜잭션을 진행
Libra Core(리브라 코어) 다운로드 및 구축
git clone https://github.com/libra/libra.git
Github Libra Core Source를 Clone하여 다운로드합니다.
cd libra
git checkout testnet
복제된 libra 폴더로 이동하여 브랜치를 'testnet' (테스트 넷)으로 변경합니다.
./scripts/dev_setup.sh
Libra Core에 필요한 의존성을 설치합니다.
sudo apt-get install -y build-essential # g++ 의존성이 없으면 error가 발생하니 미리 설치
sudo ./scripts/cli/start_cli_testnet.sh # 관리자권한이 있어야 cmake 컴파일시 에러가 안남
Libra CLI Client를 빌드(설정)하고 Testnet에 연결합니다.
# 컴파일 완료 화면
usage: <command> <args>
Use the following commands:
account | a
Account operations
query | q
Query operations
transfer | transferb | t | tb
<sender_account_address>|<sender_account_ref_id> <receiver_account_address>|<receiver_account_ref_id> <number_of_coins> [gas_unit_price_in_micro_libras (default=0)] [max_gas_amount_in_micro_libras (default 140000)] Suffix 'b' is for blocking.
Transfer coins (in libra) from account to another.
help | h
Prints this help
quit | q!
Exit this client
Please, input commands:
libra%
컴파일이 완료되면 위 와 같은 출력 장면을 볼 수 있습니다.
mysql > # mysql의 인터페이스
username@hostname:~ $ # Linux shell의 인터페이스
libra% # Libra의 인터페이스
명령어 알아보기
libra% help
help를 입력하여 명령어(command)를 살펴봅니다.
Connected to validator at: ac.testnet.libra.org:8000
usage: <command> <args>
Use the following commands:
account | a
Account operations
query | q
Query operations
transfer | transferb | t | tb
<sender_account_address>|<sender_account_ref_id> <receiver_account_address>|<receiver_account_ref_id> <number_of_coins> [gas_unit_price_in_micro_libras (default=0)] [max_gas_amount_in_micro_libras (default 140000)] Suffix 'b' is for blocking.
Transfer coins (in libra) from account to another.
help | h
Prints this help
quit | q!
Exit this client
libra%
help를 입력하면 위 와 같은 출력 화면을 볼 수 있습니다.
ac.testnet.libra.org:8000으로 연결되어 있는 것을 볼 수 있네요.
libra% account
account 또는 a를 입력해서 계정 관련 명령어를 살펴봅시다.
usage: account <arg>
Use the following args for this command:
create | c
Create an account. Returns reference ID to use in other operations
list | la
Print all accounts that were created or loaded
recover | r <file_path>
Recover Libra wallet from the file path
write | w <file_path>
Save Libra wallet mnemonic recovery seed to disk
mint | mintb | m | mb <receiver_account_ref_id>|<receiver_account_address> <number_of_coins>
Mint coins to the account. Suffix 'b' is for blocking
account 또는 a를 입력하면 위 와 같은 출력이 나옵니다.
크게 계정 생성과, 목록, 복구, 백업이 있고, mint라는 게 눈에 띄는데
여기서 mint 또는 minting 혹은 mint coin이라고 불리는 이것은 타 코인의 테스트 넷에서 제공되는
faucet(수도꼭지)라는 것인데 테스트넷에서 거래를 테스트해보려면 돈이 필요하죠?
이때, 테스트를 원활하게 진행할 수 있도록 돈을 지급해주는 방식을 말합니다.
계정 생성
libra% account create
account create를 입력해서 계정을 생성해봅니다.
>> Creating/retrieving next account from wallet
Created/retrieved account #0 address 48338048e3148bda3e3abeb7b2286e36462db60ed0e3304991472741fe978f18
위처럼 지갑에서 계정 생성 반환을 출력하고
생성된 계정 인덱스와 16진수(hex)로 이루어진 주소 값을 출력합니다.
* 출력된 계정 주소가 달라도 걱정 마세요! 같은 게 이상한 겁니다!
우리는 #0번째 생성된 이 주소를 Alice(앨리스)라고 지칭하겠습니다.
같은 방법으로 계정을 한 번 더 생성해줍니다.
>> Creating/retrieving next account from wallet
Created/retrieved account #1 address cc5af1e63e584b96c57dc3499458de7aeed7b96a94a9609b6dc5aefa2a54e323
이번에는 출력된 내용을 보면 Created/retrieved account #0이 아니고 #1로 출력된 것을 볼 수 있습니다.
이처럼 순차적 인덱싱을 하고 있죠. 이 인덱스 번호는 blockchain과는 관련이 없습니다!
여기서 생성된 #1 번째 주소를 Bob(밥)이라고 지칭하겠습니다.
이 긴 계정을 매번 외울 수 없으니 지갑이 대신 계정을 기억하고 있어요!
계정 조회
libra% account list
account list를 입력하여 계정을 조회해봅시다.
User account index: 0, address: 48338048e3148bda3e3abeb7b2286e36462db60ed0e3304991472741fe978f18, sequence number: 0, status: Local
User account index: 1, address: cc5af1e63e584b96c57dc3499458de7aeed7b96a94a9609b6dc5aefa2a54e323, sequence number: 0, status: Local
방금 생성했던 계정들과 index번호와 함께 보여주고 있습니다.
그 외에도 sequence number(순서 번호)라는 게 있는데 이 순서 번호는 전송된 트랜잭션의 수를 의미합니다.
트랜잭션이 실행되고 블록체인에 저장될 때마다 이 순서 번호가 증가합니다!
관련 내용은 https://developers.libra.org/docs/reference/glossary#sequence-number
구걸하기
libra% account mint 0 222
아까 언급했던 faucet(수도꼭지)를 통해서 테스트 넷에선 코인을 획득(구걸) 할 수 있습니다.
account mint <#인덱스> <코인 금액>
위 명령을 입력해보면
>> Minting coins
Mint request submitted
위 와 같은 출력 문구가 보입니다. mint 요청을 제출!
이렇게 보내게 되면 테스트 넷에 존재하는 유효성 검사 노드의 mempool에 성공적으로 추가됐다고 합니다.
Alice(앨리스)가 222원을 획득했다...!
마찬가지로 Bob도 돈을 구걸해보죠
libra% account mint 1 111
Bob(밥)이 111원을 획득했다...!
그래도 나름 지갑이니 비속어로 센터깐다 라고 하죠
지갑에 얼마 들었는지 검사해봅시다.
금액 조회
query balance 0
query balance <인덱스 또는 주소>를 입력하여 Alice의 지갑을 검사하면
Balance is: 0.000000
? 0원이네요. 이유를 찾고자 검색을 해본 결과
많은 사람들의 말로는 오류도 많고 테스트 넷이 불안정하다고 합니다.
테스트넷이 아닌 로컬 환경으로 구축하는 방법이 나오거나 삽질을 하게 된다면
다시 진행하도록 하죠. 여기서 더 진행이 안 되겠네요...
혹시라도 진행이 되시는 분들은
공식문서를 참고해서 해보시면 될 것 같습니다!
'Tutorial & Training > Libra' 카테고리의 다른 글
Libra Move 언어 크립토좀비! (0) | 2019.12.16 |
---|