수업을 듣고 배운 내용과 연습한 내용을 정리하였습니다
개인 공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
잘못된 부분이 있거나 질문사항은 댓글로 남겨주시면 성심성의껏 답변해드리겠습니다. 감사합니다!
요즘 핫한 비트코인을 주제로 도커를 이용해 가상 비트코인을 생성하고 거래까지 하는 실습을 진행해보겠습니다!
실습환경은 Ubuntu에 Docker가 설치되어 있다는 가정하에 진행하도록 하겠습니다!
* 실습요약
1. 도커허브에서 비트코인 도커이미지 가져오기
2. 컨테이너 실행
3. 환경 설정
4. 비트코인 노드 실행
5. 계좌번호 생성
6. 블록 생성
7. 계좌 조회 및 이체
1. 도커허브에서 비트코인 도커이미지 가져오기
root 권한으로 실행하며 bitcoin 이라는 이름으로 디렉토리를 생성하고 시작합니다.
$sudo -s
#mkdir bitcoin
#cd bitcoin
도커허브에서 pjt3591oo님의 비트코인 도커 이미지를 가져옵니다.
파일용량이 크다보니 5~10분정도 소요됩니다.
#docker pull pjt3591oo/bitcoin:0.17.01
2. 컨테이너 실행
도커 이미지로 bitcoin.mingyu 라는 이름의 컨테이너를 생성합니다.
#docker run -it --name bitcoin.mingyu pjt3591oo/bitcoin:0.17.01
3. 환경 설정
비트코인 노드 실행을 위해 설정을 진행합니다.
시작 쉘 스크립트를 수정해보도록 하겠습니다.
#cd $HOME
$ls
start.sh
#vi start.sh를 실행해 노란박스와 같이 아래 내용을 삽입하고 저장합니다.
-deprecatedrpc=accounts
시작 쉘 스크립트에는 아래와 같이 기본적으로 ./bitcoin에 블록이 저장되도록 설정되어 있습니다.
시작 쉘 스크립트로 노드를 실행하면 ./bitcoin 디렉토리 안에 "blocks" 디렉토리에 블록이 보관됩니다.
#./start.sh
블록이 저장되는 위치를 변경하려면 /.bitcoin 부분에 블록을 저장할 새 디렉토리 위치로 수정하면 됩니다.
블록 데이터를 저장할 새 디렉토리를 생성해보도록 하겠습니다.
#mkdir test1 test2
#cd test1
4. 비트코인 노드 실행
시작 쉘 스크립트 안의 내용을 통해 노드를 실행시킵니다.
bitcoind -regtest -rpcuser=test -rpcpassword=test -server -rpcport=12345 \
> --datadir="$PWD/.bitoin" -deprecatedrpc=accounts
5. 계좌번호 생성
새로운 터미널에서 이어서 진행합니다.
#docker exec -it <비트코인 컨테이너ID> bin/bash
다음의 명령어를 입력해 계좌번호를 출력합니다.
bitcoin-cli -regtest -rpcuser=test -rpcpassword=test -rpcport=12345 \
-rpcconnect="127.0.0.1" -datadir="$PWD/test1" getnewaddress <계좌명>
6. 블록 생성
100개의 블록을 생성할 경우, [ ] 안에 총 101개의 암호화된 문장이 출력됩니다.
암호문 1개당 1개의 블록으로, 블록을 생성할 때 100개까지는 보상이 없고 101개째 블록부터 1개로 인정이 됩니다.
따라서, 계좌를 조회하면 50개의 비트코인이 있을 것입니다. (1블록 = 50비트코인))
bitcoin-cli -regtest -rpcuser=test -rpcpassword=test -rpcport=12345 \
-datadir=/bitcoin/test1 generate 101
7. 계좌 조회 및 이체
아래 명령어를 통해 계좌에 50개의 비트코인이 생성된 것을 확인할 수 있습니다.
bitcoin-cli -regtest -rpcuser=test -rpcpassword=test -rpcport=12345 \
-rpcconnect=127.0.0.1 -datadir=/bitcoin/test1 listaccounts
그렇다면 이제 이체를 하기위해 새로운 계좌를 생성해보도록 하겠습니다.
마찬가지로 새로운 터미널을 실행합니다. (현재까지 3개의 터미널이 실행되고 있어야 합니다.)
#docker exec -it bitcoin.mingyu /bin/bash
아래 명령어를 통해 /bitcoin/test2 에 새로운 계좌를 생성합니다.
bitcoin-cli -regtest -rpcuser=test -rpcpassword=test -rpcport=12345 \
-rpcconnect=127.0.0.1 -datadir=/bitcoin/test2 getnewaddress <계좌명>
2번째 터미널(test1)(50비트코인 소유)로 돌아와서 3번째 터미널(test2)에서 만든 새로운 계좌로 비트코인을 이체합니다.
bitcoin-cli -regtest -rpcuser=test -rpcpassword=test -rpcport=12345 -rpcconnect=127.0.0.1 \
> -datadir=/bitcoin/test1 sendtoaddress <새로운 계좌번호> <보낼 비트코인 수>
3번째 터미널로 돌아와 비트코인이 정상적으로 이체됐는지 확인합니다.
bitcoin-cli -regtest -rpcuser=test -rpcpassword=test -rpcport=12345 \
-rpcconnect=127.0.0.1 -datadir=/bitcoin/test1 listaccounts
이상하게도 비트코인을 받지 못했습니다.
WHY???
1. 이체 수수료 발생
2. 이체의 공식 거래를 증명하는 과정이 필요(블록 생성)
1개의 블록을 생성한 뒤,
bitcoin-cli -regtest -rpcuser=test -rpcpassword=test -rpcport=12345 \
-datadir=/bitcoin/test1 generate 1
다시 조회합니다.
bitcoin-cli -regtest -rpcuser=test -rpcpassword=test -rpcport=12345 \
-rpcconnect=127.0.0.1 -datadir=/bitcoin/test1 listaccounts
1개의 블록(50비트코인)의 수수료가 발생되고 정상적으로 이체된 것을 확인할 수 있습니다.
여기서 잠깐!
move 명령어를 통해 수수료와 블록을 통한 증명 과정을 생략하고 비트코인을 이체할 수 있습니다.
bitcoin-cli -regtest -rpcuser=test -rpcpassword=test -rpcport=12345 -rpcconnect=127.0.0.1 \
> -datadir=/bitcoin/<블록데이터 저장을 위해 생성한 디렉터리> move [보낼주소] [받는주소] <보낼 비트코인 수>
지금까지 도커를 이용해 비트코인 계좌 생성 및 거래를 해봤습니다~!
언제까지나 가상의 비트코인입니다 ㅎㅎ
'서버 > Docker&Kubernetes' 카테고리의 다른 글
[Docker] Docker 활용하여 Zabbix 구축하기 (0) | 2023.09.08 |
---|---|
[Kubernetes] Kubespray 로 kubernetes 구축하기 (0) | 2023.07.27 |
AWS에서 kubeadm으로 Kubernetes 시작하기 (0) | 2021.05.04 |
kops로 AWS에서 Kubernetes 설치 (0) | 2021.04.28 |
Docker Compose (0) | 2021.04.22 |
댓글