Libra 블록체인을 시작해보자 (feat. 문과생)

리브라에 대한 문과적 접근

by SKKRYPTO

최근 '페이스북 코인'이라고 불리는 Libra에 대한 관심이 뜨겁습니다. Libra는 pound와 같이 고대 로마의 무게 단위인 Libra pundo에서 유래했습니다. 얼마 전에는 청문회도 열렸으며 리브라에 대한 정보 또한 쏟아져 나오고 있습니다. 블록체인을 이해하기 위해서는 단순히 백서를 읽고 어떤 식으로 블록체 인 아키택쳐를 디자인했는지를 보는 것도 중요하지만 실제 블록체인을 사용해보고 따라 해 보면서 좀 더 깊은 이해를 할 수 있다고 생각하기에 일반적으로 말하는 문과적 관점에서의 리브라와 개발적 관점에서 리브라를 접해보고자 합니다.

총 2편으로 나눠서 연재할 예정입니다.

1) 리브라에 대한 설명

2) 리브라 테스트 넷에 접속을 해 지갑을 생성하고, 돈을 송금해보기


1. Libra?

페이스 북은 2019년 6월 리브라라는 가상화폐를 발행해 송금 및 결제 서비스를 추진한다고 발표했습니다. 이와 같은 블록체인 서비스를 출시하고자 하는 이유는 빠르게 발전하는 기술에도 불구하고 기존 금융 시스템에 접근이 어려운 금융 소외계층들을 위한 서비스입니다. 이와 같은 Libra의 목표는 홈페이지 동영상에서 확인할 수 있습니다. 다른 블록체인 프로젝트들과 다르게 기술적인 부분이 아닌 일상생활에서 스며든 블록체인과 이로 인해 편리해질 세상의 모습들을 담은 동영상이라고 생각합니다. 첫 번째 동영상은 리브라 홈페이지에 있는 동영상이며 두 번째 사진은 비트코인 홈페이지의 사진입니다.

https://www.youtube.com/watch?v=MKkJ6UzAVLM&feature=youtu.be

리브라 홈페이지 동영상
비트코인 홈페이지

뭔지 모를 친근한 느낌과 기술적인 느낌의 차이가 느껴지시나요?

기존 블록체인 산업의 전반적인 문제는 기술적인 것도 있지만 사용자의 UX/UI가 불편하고, 실제로 많은 사람들이 사용하지 않는다는 고민을 안고 있습니다. 하지만 Libra의 경우 페이스북과 인스타그랩, 왓츠앱 등 수십억 명의 이용자를 보유하고 있고, 페이스북을 통해 금융서비스를 제공해 편 리성과 가격경쟁력(낮은)을 추구합니다. 따라서 사용자가 접근하기 쉽고 확보하기 쉬울 것이라고 생각합니다.

또한 다양한 통화와 은행 예금, 국채 등 실물자산과 연동하여 가치가 보장되는 스테이블 코인이기 때문에 최근 남미 몇몇 국가들에서 일어나고 있는 초인플레이션 현상에 대한 대안 화폐의 역할을 할 수 있을 것이라 생각합니다. 페이스북과 자금력이 있는 다양한 파트너사들의 펀딩을 통해 가치 안정화와 시장점유율을 확대할 것이라는 목표를 가지고 움직이고 있습니다.

하지만 시장에서는 우려의 목소리도 나오고 있습니다. 비록 리브라가 타 블록체인 프로젝트들에 비해서 성공 가능성이 높다고 평가되고 있지만, 백서와 부정적인 의견들을 살펴본 결과 몇 가지 문제가 될 사안들을 점검해보겠습니다.

첫 번째는 가치 안정성의 문제입니다. 실제로 실물자산과 연동하여 가치를 보장하지만 구체적인 방법에 대한 부분 은 정확하게 나와 있지 않으며, 7/8일 금융위원회에서 공개한 ‘리브라의 이해 및 관련 동향’에도 가치 보장 방식과 세부적인 내용이 공개되지 않은 것에 우려를 표했습니다. 또한 토큰 이코노미에서 중요한 발행량 조정 메커니즘과 준비금과의 상관관계가 모호하기 때문에 Libra는 추후 이러한 이슈에 대한 해결이 필요합니다.

두 번째는 Libra로 인해 입게 되는 기존 금융권의 플레이어들인 은행의 반발입니다. 특히 쉬운 송금과 적은 수수 료로 인해 입게 되는 은행의 해외 송금 수수료 수익이 줄어들게 될 것이며, 이는 필연적으로 자금세탁과 테러자금 등 부정적인 방향으로 쓰이게 될 수 있다는 우려가 나올 것입니다. 만약 많은 사람들이 자국의 은행이 아닌 리브라 에 예금을 한다면 은행의 현금흐름을 방해할 수 도 있습니다. 경영학과 학부생이라면 투자론 시간에 배우는 이자율에도 영향을 끼칠 수 있습니다. 예치된 자금이 줄어든 상태에서 수요자가 몰리면 이자율이 상승할 가능성이 있습니다.

마지막으로 Libra에서 주도적인 역할을 담당하는 페이스북에 대한 우려입니다. 페이스북 구글 등은 중앙화 된 데 이터 관리를 통해 오늘날의 성장을 이루어 냈습니다. 이과정에서 페이스북의 경우 개인정보가 유출되거나 타 회 사에서 무단으로 개인정보를 수집하는 등 데이터 보안에 관련한 이슈들이 발생했으며, 이러한 현상이 리브라가 출시된 이후에도 발생할 것이라는 우려가 있습니다. 특히 리브라의 경우 페이스북보다 더 높은 레벨의 개인정보를 요구할 가능성이 높기 때문에 강도 높은 보안이 필요할 것입니다.

http://news.chosun.com/site/data/html_dir/2018/10/01/2018100100209.html

2. Libra 테스트 넷에 접속해보자!

리브라는 협회 회원사만 노드 참여가 가능한 프라이빗 블록체인입니다(permissioned blockchain). 또한 채굴을 통해 블록을 추가하는 것이 BFT(비잔틴 장애 허용) 알고리즘 방식을 통해 블록을 생성합니다. 리브라는 ‘무브’라는 새로운 언어를 통해 스마트 컨트랙트와 Dapp을 개발할 수 있습니다.

Libra 홈페이지의 개발자 영문 문서를 참고해 진행했습니다.(https://developers.libra.org/)

테스트 넷에 접속하기 전에 준비해야 할 사항들입니다.

- 리눅스 또는 Mac OS를 사용해야 합니다

- 깃이 설치되어야 합니다.

- Homebrew가 Mac OS에 설치돼야 합니다.(https://brew.sh/index_ko 설치 링크)

- yum, apt-get이 리눅스에 설치되어 있어야 합니다

위의 조건들이 만족되었다면 이제 테스트 넷을 설치할 준비가 된 것입니다.


1) 리브라 코어를 설치합니다.

"git clone https:// github.com/ libra/ libra.git" 명령어를 입력합니다.







2) Checkout testnet

"git checkout testnet" 명령어를 통해 새로운 테스트 넷 브렌치로 바꿔줍니다





3) Dependencies를 설치합니다.

"./scripts/ dev_setup. sh" 명령어를 통해 실행해줍니다

리브라 코어의 환영을 받으면서 y를 입력해줍니다.


4) CLI를 실행시킵니다.

"./scripts/cli/start_cli_testnet.sh" 명령어를 입력해 실행시켜줍니다. 참고로 시간이 꽤 오래 걸립니다.

설치가 완료되면 실행시킬 수 있는 여러 가지 명령어들이 나옵니다.





각 명령어에 대해 살펴보겠습니다.

- account: 계정 관련 명령을 실행할 수 있습니다.

- query: query 관련 명령을 실행할 수 있습니다.

- transfer: 송금하는 명령입니다. 송금자의 주소 혹은 id, 받는 사람의 주소 혹은 id, 송금할 금액, 가스비(기본값은 미니멈 0에서 맥시멈 10,000)를 통해 송금을 할 수 있겠네요.

- submit: 파일로부터 raw transaction을 받아와 네트워크에 제출을 하는 명령입니다. Signer 계정 주소 혹은 아이디와 raw transaction의 경로를 지정하여 실행할 수 있겠네요.

- help: 도움을 받을 수 있습니다.

- quite:클라이언트를 종료할 수 있습니다.


5. 계정 만들기

송금을 할 두 개의 계정을 만들어 보겠습니다. libra% 다음에 account 명령어를 입력하면

위와 같은 account에 관련한 명령어 리스트가 나옵니다.

- Create: 계정을 생성할 수 있습니다.

- list: 만들거나 불러온 계정들을 확인할 수 있습니다.

- recover: 지갑을 복원할 수 있습니다.

- write:리브라 지갑을 복원할 mnemonic을 저장할 수 있습니다.

- mint: 리브라 faucet에서 테스트 넷 Libra를 받을 수 있습니다. 수신자의 계정 id 혹은 주소, 받을 수량을 입력하면 됩니다.

송금 지갑 생성

지금은 계정을 만들어야 하니 account create를 입력하면 됩니다. #0번 지갑이 생성됐습니다. 그리고 입금 지갑을 만들어야겠죠?

입금 지갑 생성

#1 지갑이 생성됐습니다.


6) 송금하기

이제 송금할 주소에 돈을 충전해 보겠습니다. Account mint <지갑 list 번호 or 지갑 주소> 수량을 입력하면 됩니 다. 저는 지갑 주소를 사용해 송금했습니다. Mint request submitted라는 메시지가 뜨면 성공입니다!

하지만 돈이 정말 들어왔나 확인해보겠습니다. Query balance <지갑 list 번호 or 지갑 주소>를 통해 잔액을 확인할 수 있습니다.

지갑에 돈 충전하기
잔액 확인하기

100개가 제대로 들어왔네요.

이제 입금인 주소에 돈을 보내봅시다. Transfer 송금할 지갑 주소와 입금할 지갑 주소 그리고 보낼 금액을 입력해 줍니다. 100개를 전부 보내 볼게요 가스 최솟값이 0이라고 하니까 전액 송금이 되는지 궁금합니다.

명령어를 실행 후 query balance를 통해 다시 한번 확인합니다.

0원인걸 보니 송금이 됐군요. 가스비가 0이 어떻게 가능한지 궁금합니다… 이오스 같이 staking을 요구하지도 않는데 어떻게 가능할까요…?

하여간 query txn_acc_seq 명령어를 통해 트랜잭션 상태를 확인 가능합니다. 저 같은 경우 0번 지갑의 1번째 트 랜잭션(0)을 확인해야 하니 query txn_acc_seq 0 0 true를 입력해야겠죠? 만약 송금이 완료된 다음(블록체인에 트랜잭션이 기록된 다음)에 결괏값을 받고 싶다면 transfer 대신 transferb 명령어를 사용하면 됩니다.

입금 지갑에 query balance 1 명령어를 통해 돈이 들어왔는지 확인해 보시길 바랍니다.




마무리하며

처음 시작했음에도 불구하고 튜토리얼 문서를 따라 하면서 쉽게 이해하고 명령어 또한 직관적이기 때문에 이해하 는데 어려움이 없었습니다. 영어 문서로만 되어 있기 때문에 읽기 귀찮아서 따라 하지 못하는 분들은 이 글을 보고 따라 하시면 큰 어려움 없이 따라 할 수 있을 것이라 생각합니다. 본 글은 https://developers.libra.org/docs/my-first-transaction를 참고했습니다.

지금 Libra프로젝트는 많은 반발과 우려 때문에 중단 압박을 받고 있으며 진행상황이 생각보다 느리게 흘러가는 것 같습니다. 하지만 테스트 넷은 이미 나와있기에 언젠간 나올 메인 넷을 대비해 한번쯤 공부해보고 사용해보는 것은 어떨까요?

감사합니다.


keyword