QBFT 네트워크 기반 하이퍼레저 비수 구축
작업영역 생성
1
mkdir besu && cd besu && mkdir info
도커(컨테이너 -> 로컬)파일 가져오기
1
docker cp {containerID}:/QBFT-Network ./
도커 이미지 업데이트
1
docker stop {containerID} && docker commit {containerID} ms_peer:hoya
도커 환경변수 설정
1
vi .env
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# common settins
HOYA_NODE_IMAGE="ms_peer:hoya"
HOYA_COMMAND="/entrypoint.sh"
HOYA_LOGGING="INFO"
HOYA_BESU_COLOR_ENABLED=true
# node1 settings
NODE1_HOYA_PEER_NAME="node1"
NODE1_HOYA_NODE="Node-1"
NODE1_HOYA_HTTP_PORT=8545
NODE1_HOYA_P2P_PORT=30303
# node2 settings
NODE2_HOYA_PEER_NAME="node2"
NODE2_HOYA_NODE="Node-2"
NODE2_HOYA_HTTP_PORT=8546
NODE2_HOYA_P2P_PORT=30304
# node3 settings
NODE3_HOYA_PEER_NAME="node3"
NODE3_HOYA_NODE="Node-3"
NODE3_HOYA_HTTP_PORT=8547
NODE3_HOYA_P2P_PORT=30305
# node4 settings
NODE4_HOYA_PEER_NAME="node4"
NODE4_HOYA_NODE="Node-4"
NODE4_HOYA_HTTP_PORT=8548
NODE4_HOYA_P2P_PORT=30306
docker-compose.yml 구성
1
vi docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
version: "3"
services:
node1:
container_name: ${NODE1_HOYA_PEER_NAME}
image: ${HOYA_NODE_IMAGE}
environment:
HOYA_PEER_NAME: ${NODE1_HOYA_PEER_NAME}
HOYA_LOGGING: ${HOYA_LOGGING}
HOYA_BESU_COLOR_ENABLED: ${HOYA_BESU_COLOR_ENABLED}
HOYA_NODE: ${NODE1_HOYA_NODE}
HOYA_HTTP_PORT: ${NODE1_HOYA_HTTP_PORT}
HOYA_P2P_PORT: ${NODE1_HOYA_P2P_PORT}
entrypoint: ${HOYA_COMMAND}
ports:
- "${NODE1_HOYA_HTTP_PORT}:${NODE1_HOYA_HTTP_PORT}"
networks:
- hoya_net
volumes: ['./QBFT-Network/${NODE1_HOYA_NODE}/data:/QBFT-Network/${NODE1_HOYA_NODE}/data']
restart: always
node2:
container_name: ${NODE2_HOYA_PEER_NAME}
image: ${HOYA_NODE_IMAGE}
environment:
HOYA_PEER_NAME: ${NODE2_HOYA_PEER_NAME}
HOYA_LOGGING: ${HOYA_LOGGING}
HOYA_BESU_COLOR_ENABLED: ${HOYA_BESU_COLOR_ENABLED}
HOYA_NODE: ${NODE2_HOYA_NODE}
HOYA_HTTP_PORT: ${NODE2_HOYA_HTTP_PORT}
HOYA_P2P_PORT: ${NODE2_HOYA_P2P_PORT}
entrypoint: ${HOYA_COMMAND}
ports:
- "${NODE2_HOYA_HTTP_PORT}:${NODE2_HOYA_HTTP_PORT}"
networks:
- hoya_net
volumes: ['./QBFT-Network/${NODE1_HOYA_NODE}/data:/QBFT-Network/${NODE1_HOYA_NODE}/data']
restart: always
node3:
container_name: ${NODE3_HOYA_PEER_NAME}
image: ${HOYA_NODE_IMAGE}
environment:
HOYA_PEER_NAME: ${NODE3_HOYA_PEER_NAME}
HOYA_LOGGING: ${HOYA_LOGGING}
HOYA_BESU_COLOR_ENABLED: ${HOYA_BESU_COLOR_ENABLED}
HOYA_NODE: ${NODE3_HOYA_NODE}
HOYA_HTTP_PORT: ${NODE3_HOYA_HTTP_PORT}
HOYA_P2P_PORT: ${NODE3_HOYA_P2P_PORT}
entrypoint: ${HOYA_COMMAND}
ports:
- "${NODE3_HOYA_HTTP_PORT}:${NODE3_HOYA_HTTP_PORT}"
networks:
- hoya_net
volumes: ['./QBFT-Network/${NODE1_HOYA_NODE}/data:/QBFT-Network/${NODE1_HOYA_NODE}/data']
restart: always
node4:
container_name: ${NODE4_HOYA_PEER_NAME}
image: ${HOYA_NODE_IMAGE}
environment:
HOYA_PEER_NAME: ${NODE4_HOYA_PEER_NAME}
HOYA_LOGGING: ${HOYA_LOGGING}
HOYA_BESU_COLOR_ENABLED: ${HOYA_BESU_COLOR_ENABLED}
HOYA_NODE: ${NODE4_HOYA_NODE}
HOYA_HTTP_PORT: ${NODE4_HOYA_HTTP_PORT}
HOYA_P2P_PORT: ${NODE4_HOYA_P2P_PORT}
entrypoint: ${HOYA_COMMAND}
ports:
- "${NODE4_HOYA_HTTP_PORT}:${NODE4_HOYA_HTTP_PORT}"
networks:
- hoya_net
volumes: ['./QBFT-Network/${NODE1_HOYA_NODE}/data:/QBFT-Network/${NODE1_HOYA_NODE}/data']
restart: always
networks:
hoya_net:
driver: bridge
docker-compose 구동
1
2
3
docker-compose up -d
docker logs -f {node1~node4}
정상적으로 블록체인 구성되었는지 요청해보기
1
curl -X POST --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"], "id":1}' localhost:8545
참고자료
호야 블로그 Hyperledger Besu 샘플 저장소.
Hyperledger Besu Ethereum Client 공식 사이트.