dukDukz

[블록체인] 데몬 서버와 클라이언트 연결 본문

웹 개발/블록체인

[블록체인] 데몬 서버와 클라이언트 연결

헤일리_HJ 2021. 9. 17. 16:42

# 비트코인 rpc

http => rpc
http 의 역할을 rpc로 구축한게 비트코인이다.

그러면 rpc 는 뭐냐? 웹소켓/http 랑 굉장히 비슷

클라와 서버간에 소통을 하게 해주는 녀석
http 요청으로 내용전달을 해줬었는데
비트코인 기준으로 보자면

 

                      http (이전에)
                      rpc (이제는)
네트워크(웹소켓) -------------> 클라이언트


네트워크
: 비트코인을 빌드한 사람들끼리 연결해주는 역할

mineBlock 하면 클라가 http 요청하고 네트워크에 전달(함수 호출됨)
네트워크가 마이닝 할거야.. 이렇게 해서 블럭생성해서 결과를 내뱉어줌
그걸 화면에 뿌림

블럭을 생성해줘 라는 명령어가 qt에도 존재한다.
-> Generate 숫자
숫자는 그만큼 마이닝한다는뜻

그럼 네트워크가 처리해줄게 해서
결과물을 리턴해줌

그래서 http 요청과 비슷하다고 하는것

클라가 요청 네트워크가 받고 내용가공해서 응답을 주는 형식 (rpc)
그럼 클라가 받았다. 라고 대답을 해줄거임

 


오늘 까지의 실습은 내 컴퓨터 안에서만 돌아가는 
노드가 하나밖에 없는 상황인 것이다.


서버와 클라가 존재하는데
우리가 설치한것도 서버가 있고 클라가 있다.


그리고 우리는 qt 라는걸 실행해줬는데 따지고 보면 클라에 가깝긴하다
qt는 서버랑 클라를 돌려주는걸 대신해주는 gui 라고 보면된다.

 

# 서버 구동시키기 (데몬 실행)


1. 서버를 구동시켜 보자


윈도우 터미널로 와서 (wsl 안들어가고)
 C:\Users\USER\ingcoin\bin>
여기까지 들어간다

ingcoind.exe
얘가 서버 역할을 해주는 녀석이다
이제는 서버가 아니라 데몬이라고 부르자.

얘만 돌아가고 있으면 하나의 노드가 완성되는 것이다.
그러면 얘를 켜봐야 한다,
얘를 실행시키는 방법
C:\Users\USER\ingcoin 이 위치에 data 라는 폴더를 만든다.(여기에 할거라는 뜻)

$ ./ingcoind.exe -mainnet -printtoconsole -datadir="C:\Users\USER\ingcoin\data"


[옵션]
-mainnet
메인넷과 테스트넷이 있는데
우리가 데몬을 실행할건데 메인넷으로 구동 or 테스트넷으로 구동되는걸 할거냐?
이걸 이제 실행시킬때 옵션으로 줘야함

-printtoconsole
console 에 내용을 보여주겠다.

-datadir="c:\Users\USER\ingcoin\data"
절대 경로로 작성


이렇게 하면 실행이됨

데몬과 소통할 수 있도록 클라가 요청을 보내면
데몬이 응답을 줄 수 있도록 해줘야함


# 클라이언트와 연결시키기

 

다른 윈도우 창에서

C:\Users\USER\ingcoin\bin>
여기까지 들어온다,
여기에 클라가 있다,
뭘까???

ingcoin-cli.exe
이 녀석이다.

실행시켜보자

$ .\ingcoin-cli.exe -mainnet getbalance


mainnet 뒤에 부터는
uri 라고 생각하자
데몬이 갖고있는 함수 매서드를 실행시켜주는 것. (옵션들)


error: Could not locate RPC credentials. No authentication cookie could be found, and no rpcpassword is set in the configuration file (C:\Users\USER\AppData\Roaming\INGcoin\ingcoin.conf)

그러면 이러한 오류가 나온다.

서버와 클라가
http 와는 사뭇 다른 (http 는 누구나 요청 누구나 응답받을 수 있음)
하지만 rpc 는 인증된 사람만 요청을 보낼 수 있는..

그래서 클라 설정할때 설정파일이 필요하다.
config 파일을 작성해야한다는 뜻이다.


qt.exe를 실행해서

탭 중에 설정 - 옵션을 클릭해서
"Open Configuration File" 버튼을 클릭한다.

 

server=1
rpcuser=ingoo
rpcpassword=1234
rpctimeout=600
rpcport=9233 #rpc port
rpcconnect=127.0.0.1

이렇게 작성하고 저장해준다.

 

이대로 바로 실행시키면 반영이 안되서 오류가 나니까

 

1. 이 실행파일도 닫았다가 다시 켜주고,


2. 윈도우 터미널로 돌아와서 데몬을 껐다가 다시 킨다. 

$ .\ingcoind.exe -mainnet -printtoconsole -datadir="C:\Users\USER\ingcoin\data"

 

컨트롤 c로 껐다가 다시 켜면 됨

3. 클라를 다시 실행해보자

$ .\ingcoin-cli.exe -mainnet -rpcpassword=1234 getbalance

or

$ .\ingcoin-cli.exe -mainnet -rpcpassword=1234 -conf=C:\Users\USER\ingcoin\bin\ingcoind.conf getbalance

 

그러면
0.00000000
이렇게 나온다.
사용가능한 코인이라는 뜻이다.


# 코인 생성하기


C:\Users\USER\ingcoin\bin>
-> 이 위치에서 

$ .\ingcoin-cli.exe -mainnet -rpcpassword=1234 generate 1


[
"fffb4aa806e9e32839cf11ca05743d4f18ac932362f8be4743c29254c7114a18"
]

 

이렇게 결과물이 나온다.

$ .\ingcoin-cli.exe -mainnet -rpcpassword=1234 generate 100

 

100개 정도 해보자
(시간 좀 걸림)

그러면 빈 배열이 나온다.

 

완료되면 이런식으로 뜨는듯 하다.