본문 바로가기

개발 학습74

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.
Node.js에서 Puppeteer로 동적웹 크롤링하기 문제점 클레이튼 스코프 웹에서 내 계정을 검색하고 나온 결과에서 KIP17 Balanace 같은 버튼을 누른뒤 바뀌는 HTML 소스를 크롤링 하고 싶었다. 하지만 이는 내가 해당하는 버튼을 누른뒤에 HTML이 동적으로 바뀌게 되고 우리가 자주쓰는 Axios나 Cheerio, Postman은 정적인 웹의 소스만 가져올 수 있어 원하는 것을 크롤링 할 수 없었다. 이렇게 body나 원하는 html소스를 얻을 수 없어 크롤링을 할 수가 없으므로 우선 동적으로 내가 눌러서 접근한 버튼에서까지 보이는 전체 html소스를 받아 올 수 있어야 했다. 해결 서버단에서 puppeteer를 사용했다. 이상하게 클라이언트 단에서 npm하여 import하면 오류가 계속났다. Cannot read properties of un.. 2022. 2. 8.
Express와 몽고DB 연결 / DB 테이블 컬럼 생성 / CRUD 1. mongoDB 아틀라스라는 클라우드를 가입한다. 2. 데이터 베이스를 생성한다. 3. AWS든 Google Cloud든 아무거나 상관없이 선택 후 지역을 선택한다. 클러스터를 생성한다. 4. 유저를 생성한다. 입력한 아이디 비밀번호는 이후에 DB연결이나 mongo compass에서 사용된다. 5. DB에 접근가능한 IP를 지정할 수 있으며 0.0.0.0/0 으로 지정시 모든 포트와 IP가 접속가능하다. 6. 클러스터 0에 연결하기위해 Connect 7. 내 코드를 사용해 MongoDB Compass나 node.js에서 접근할 수있다. 몽고DB 컴패스는 DB에 저장된 데이터들을 GUI로 보기 쉽게 해준다. 몽고DB 아틀라스에서 발급받은 본인 코드를 ID,PW,DB명을 입력하면 접속된다. const m.. 2022. 1. 14.