본문 바로가기

geth6

Docker로 노드 운영 (5) : 부트노드 운용 부트노트란 지난번처럼 docker로 노드1과 노드2를 운용할때 노드2에 노드1의 enode를 직접 admin.addPair로 추가해줘야했다. 만약 노드수가 많아진다면 일일이 이렇게 추가해주는것이 힘들고 그런 경우를 위해 부트노드를 운영하여 부트노드에 모든 기존노드와 새노드를 연결하면 부트노드가 중개자 역할을 하여 기존의 노드가 가진 데이터를 부트노드에 연결한 새 노드들에게 전달하고 동기화 할 수 있게 해준다.  2. 부트노드 구성 하기apt-get install bootnode부트노드 패키지를 설치한다. 노드 1과 노드2를 각각 연결하기 위해 지난번 노드1,2 연결하기 처럼 docker의 exec를 이용해 우선 노드1부터 docker로 접근한다. # 실행중인 container list 확인docker p.. 2022. 2. 21.
내 프라이빗 블록체인에서 입출금 트랜잭션 데몬구현 우선 이전에 작성한 글에선 docker에 컨테이너를 만들때 생성단계에서 포트를 부여하지 않았다. 그래서 기존 2개의 노드를 연결해주는 방식으로 노드를 운영했더니 서버단에서 블록체인 네트워크에 접속 할 때 localhost:8545로 접속하면 아래와 같이 오류가 나왔다. 내가 만든 프라이빗 블록체인 네트워크에 접근할 수 없는 것이다. 그리하여 이미 생성된 컨테이너에 직접포트를 부여하기엔 어렵다고 생각해 기존컨테이너를 이미지화하고 그 이미지로 새로운 컨테이너를 생성하며 포트를 부여하는 방법을 사용하였다. 1. 포트를 연 새 컨테이너를 만들자 생성한 con_ubuntu를 이미지로 먼저 만들어보자. sudo docker ps 해당 명령어로 con_ubuntu 컨테이너가 작동중인지 확인하자. sudo docker.. 2022. 2. 19.
Docker로 노드 운영 (4) : 두 개의 노드 연결하기 우리는 Docker에서 한 노드를 로컬에서 운영했다. 노드를 하나 돌리면 인접 노드가 참여하게 되면 인접노드는 기존노드와 연결되어 기존의 데이터를 가져와서 서로 동기화하는 작업을 하게된다. 이것을 Docker안에서 구현해보자. 우선 터미널을 두개 작동시켜야하는데 도커CLI에서 기존의 attach를 사용하면 서로 다른 터미널로 접속하더라도 하나의 도커터미널에 연결되므로 각각 서로 다른 화면이 되도록 해야한다. 실행중인 Docker 컨테이너를 확인하고 컨테이너 이름을 체크한 뒤 exec명령어 하나의 도커에서 여러 활동을 할 수 있게 한다.1. Docker 터미널 2개 열기# 실행중인 container list 확인docker ps -a# container 실행; 여기서는 'con_ubuntu'docker s.. 2022. 2. 19.
Docker로 노드 운영 (3) : Geth로 채굴, 트랜잭션 생성 지금까지 나만의 프라이빗 블록체인을 작동시킬 준비가 끝이났다. 이제 제네시스 블록의 생성을 하고 블록체인이 돌아갈것이고 채굴과 내부에서 코인을 전송하고 트랜잭션을 날리고 조회하는 등 여러가지 작업을 해보자  1. Geth 실행$ geth --networkid 8484 --nodiscover --datadir test_data -allow-insecure-unlock --http.addr 0.0.0.0 --http --http.port 8545 --http.corsdomain "*" --http.api="db,eth,net,web3,personal,web3,miner,admin" --miner.threads 1 console 2>> test_data/geth.log명령어에서 의미하는 것들은 다음과 같다.d.. 2022. 2. 19.
Docker로 노드 운영 (2) : 계정 및 제네시스 블록 생성 1. Geth로 계정생성우선 로컬테스넷에서 나만의 프라이빗 블록체인을 만들고 거기서 첫 제네시스 블록부터 계정생성 ~ 채굴까지 해볼것이다. 로컬에서 geth를 시작하기전에 데이터디렉토리와 genesis.json파일이 필요하다 이 genesis.sjon은 제네시스 블록정보가 저장된 json형태 파일이다 데이터 디렉토리는 송수신한 블록데이터와 계정정보를 저장하게 된다. 제네시스 블록이라하면 뭔가 가슴이 웅장해진다.. 먼저 데이터디렉토리와 그 안에 genesis.json을 만든다. $ sudo mkdir test_data $ cd test_data $ vi genesus.json 자! 이제 준비가 다 됐고 geth console로 계정을 생성해보자!!! $ geth --datadir test_dat.. 2022. 2. 19.
Docker로 노드 운영 (1) : Docker와 Geth 설치 및 세팅 1. 도커와 게스란 무엇인가?도커는 컨테이너 기반 오픈 소스 가상화 플랫폼으로 개발을 하다보면 회사정책에따라 서버환경, 개발환경이 계속 바뀌는데 이전에 쓰던 환경을 계속 쓸수 있도록 도와준다. 컨테이너 생성으로 분리된 환경에 설치하여 제거도 쉽다.나는 도커안에 우분투 컨테이터를 생성하여 안에서 geth로 노드를 운영해볼것이다. 게스란 이더리움 스마트 계약을 실행할 수 있는 플랫폼입니다. go, c++, python 등 다양한 언어로 이더리움을 구동할 수 있는 클라이언트가 개발되고 있으며 현재 가장 많이 사용되는 클라이언트가 go 언어로 개발된 go-ethereum (geth)입니다. 2. 도커 설치기본 OS로 우분투를 20.04를 사용하고 있으며 이전에 Docker를 설치한적있다면 이전버전을 제거한다.$.. 2022. 2. 19.