【Libra】 Testnet 설치 구성하고 테스트 해보기

2019. 12. 17. 00:10Tutorial & Training/Libra

Libra 공식문서를 참고하여 작성하였습니다.

 

Libra · Libra’s mission is to enable a simple global currency and financial infrastructure that empowers billions of people.

Libra’s mission is to enable a simple global currency and financial infrastructure that empowers billions of people.

developers.libra.org

 

 

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하여 다운로드합니다.

 

libra/libra

Libra’s mission is to enable a simple global currency and financial infrastructure that empowers billions of people. - libra/libra

github.com

 

 

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 · Libra’s mission is to enable a simple global currency and financial infrastructure that empowers billions of people.

Libra’s mission is to enable a simple global currency and financial infrastructure that empowers billions of people.

developers.libra.org

 

 

 

 

 

 

구걸하기

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원이네요. 이유를 찾고자 검색을 해본 결과

많은 사람들의 말로는 오류도 많고 테스트 넷이 불안정하다고 합니다.

 

테스트넷이 아닌 로컬 환경으로 구축하는 방법이 나오거나 삽질을 하게 된다면

다시 진행하도록 하죠.  여기서 더 진행이 안 되겠네요...

혹시라도 진행이 되시는 분들은

 

공식문서를 참고해서 해보시면 될 것 같습니다!

1 2