뉴비에욤

이더리움 롭스텐(Ropsten) 테스트넷 채굴하기 with RTX3090 GPU 본문

블록체인

이더리움 롭스텐(Ropsten) 테스트넷 채굴하기 with RTX3090 GPU

초보에욤 2022. 3. 22. 21:10

https://bob3rdnewbie.tistory.com/351 <- 이 포스팅에서 언급한 테스트넷 채굴 필요성

 

2022.03.22 작동 확인

 

 

결국 채굴 환경 구성에 성공해서 진행중이다.

 

출처: https://www.linkedin.com/pulse/how-mine-ropsten-testnet-ether-keir-finlow-bates

 

How to mine Ropsten testnet Ether

Update: due to the London upgrade you'll probably end up on the chain that isn't tracked by Etherscan and Metamask. To ensure you only retrieve blocks from peers on that chain, include the following string in your geth start command: --whitelist 10920274=0

www.linkedin.com

 

 

 

잡담을 좀 섞어서 과정을 설명하자면....

 

이더리움 메인넷은 현재 PoW 방식으로 채굴이 진행되며 이는 개인의 능력으로 비빌만한게 아닌지라 보통 마이닝 풀이라는걸 이용한다.

마이닝 풀에 자신의 해시레이트를 제공하고 기여도에 따라 n빵하여 이더를 받는 그런 공정한(?) 방식이라 할 수 있다.

 

문제는 테스트 네트워크는 내 검색 능력의 한계인지 마이닝 풀을 찾을 수 없다는것... 결국 풀노드(메인넷과 완전히 싱크 된)를 스스로 구축해야 했다.

 

풀노드 구축 + 마이닝 환경은 동일한 서버 1대를 가지고 사용하였으며 스펙은 다음과 같다.

os: ubuntu 18.04

cpu: i9-10900X

ram: samsung ddr4 64G

hdd: wd 10tb (데이터용 디스크, easystore 적출)

gpu: 3090 (싸펑용으로 모셔놨지만 거의 지뢰찾기용으로 사용함)

lan: KT 1기가

 

ssd를 사용했으면 싱크 속도가 좀 더 빠를 수도 있겠지만 용량이 부족하여 hdd로 대체

* 2022년 03월 22일 기준 풀노드 싱크에는 약 150gb의 여유 용량이 필요함

 

 

 

1) 풀노드 구축을 시작한다. 참고로 IP 주소 입력 부분에 공인 IP를 입력하면 admin를 노출한 상태이기 때문에 누군가가 접속하여 코인베이스 주소를 바꾼다거나 할 수 있다. 고로 무조건 사설 IP를 사용해야하며 공인이 불가피할경우 방화벽 등을 통한 접근 제어가 필요하다.

# geth --ropsten --http --http.api eth,net,web3,personal,miner,admin,txpool,debug --http.corsdomain '*' --http.addr <IP Address> --http.port 8545 --datadir ./

 

2) 터미널 하나 더 열고 geth 콘솔을 열고

# geth attach http://<IP Address>:8545

 

3) 출력되는 로그를 봤을 때 싱크를 위해 다른 피어를 찾는 속도가 너무 느리다 싶으면 아래 명령어 실행

> ["enode://b161c7cc87e095a09bd5b3205404b10540eac606d26fc7386fee4a15bbd41c5d9e80eeab70f3080117a5276a3450008d88c9dae1602cbca2a0ff859ba6aebb72@51.158.182.111:30303", "enode://8daa5d9d594c5ed0b2623053a4c55abe1a04a9c5c9732169b0ab95c07db811bf1cffad6002f5c2f46c511afc9c5e1873a3840435e54f5ff1e2c16094c5673677@136.244.109.203:30303", "enode://6eee355ac7c814d9b18965bd59b94d9c591c1c6a772620304bb74fe6b2362202d0ce843d9bbb9436cdf46816cdaf65f71d8ddd63a396db84c3a8694add85ddea@3.227.252.150:30303", "enode://8c5131f577ee602ccaad5e5f600011c024d43d33e6af6f8a89ed26cbfadd7efe903a8e426dde4071b857e0838a2efa29ae3b268f8b55acd59e72d4a919673cbc@13.251.47.174:30303", "enode://8f0ac4efca13336f36baf146f0ea47e4c8bb96d1cfd206d588f5625b6ac351f2db85b2fbe15656faaf9ccf494143893333970f36267d4ca34021fd9e90619ef8@54.165.235.170:30303", "enode://6cf5d022594cf239233ebcfa16692a745b3da300b7ab38beb7f72ae0a3075dfd68f5bb37549aa7afdc1cd0a798c94cbd40a65ae39e73b736076d14160fbdf194@3.238.135.127:30303", "enode://31a3698e19f42fb3e4cf1212a4d04ec3b1e69d8d75bd31cd139addb33bb65aecdd863a5dbe50a25f6dee3d664a7384543b8cd803028caa2c531e3b031f6cc4d7@209.97.162.85:30303", "enode://530065e4efcc84ff4576eeb2a42a074629e20c6976123618c3a6419456f4d5241a6629d7b0fa7422584a51235b7017dde2a6b68567acbb5b7351814c33d3d27d@161.35.13.66:30303", "enode://5d45d0c343e42913469bf54a8d5bbc76329992bb31f0326aa70085182f529277563edb425f973bef5e3ce894aef66c0685a5eb3092ca91d9e2b6deb64bd6933e@47.108.88.50:30304", "enode://1997410f3654600b3313a66a3b4b5e3dac6073558ff0d3c6728216a3a2e86a0d395deecae0e86d8687647330d5dfb85875e1170f97e06ae57c585c2ef41e85e1@128.230.208.73:30296", "enode://8f1bb59be0c15779000e7488c30f3111e629550312881337dc3742fe44a0fa64f1e485ffa9d21cabf1769cd8566f828a6f9573b113a4fd9b50b910f5024d0d9b@103.124.74.185:30303", "enode://004594b42a84a794ad5c26fae3ab2dcc35f070f1e810369813553c1abda1ea37d82eb3ba732828de69197d9f9a0c462a41bf41bb1b4d478bcd739ccf824d5d15@185.18.212.134:30303", "enode://599600e94ec47d8567e304e494352291fee0d405031cee5935b548695602c865c8912fac9a491452745578e8fff4c5691ff3184e11ed9dd8aa098766b32f2cde@54.196.32.59:30303"].forEach(function(value){admin.addPeer(value)});

 

4) eth.syncing 명령어를 통하여 싱크 상태를 확인 (아래 사진은 출처 사이트의 사진임)

* 2022년 03월 22일, 약 오후 9시 기준으로 하면 최신 블록은 "12118371"번이 되시겠다.

 

> 본인 환경에서는 풀노드 싱크에 소요 되는 시간은 약 8시간정도였다. 

> 싱크가 완료되었는지 확인하는 방법은 아래와 같다.

    - 싱크 중간중간에 geth 명령어 로그를 보면 싱크에 남은 예상 시간이 나타나는데(들쭉날쭉거리니 크게 의미는 없음) 해당 메시지가 더이상 출력되지 않고

    - geth 콘솔에서 eth.syncing 명령어 실행 결과 'false'를 리턴하고

    - geth 콘솔에서 eth.blockNumber 명령어 실행 결과 나타나는 블록번호가 https://ropsten.etherscan.io/blocks <- 이 사이트에서 보여지는 최신 블록번호랑 일치(최대 -5 오차)

 

아무튼 풀노드 싱크가 끝나면

 

5) 채굴 보상을 받을 주소를 입력한다. geth  콘솔에서 만들어도 되고 메타마스크 롭스튼 네트워크 연결해서 만들어도 된다.

> miner.setEtherbase("채굴보상 받을 롭스튼 네트워크 지갑 주소, 0x로 시작")

 

6) 이제 채굴을 시작할 수 있는데, 괄호 안 숫자는 마이닝에 사용할 cpu 코어 숫자를 입력하면 된다.

참고로 0 입력 시 코어를 사용하지 않겠다는 뜻이기 때문에 마이닝 기능 자체만 활성화 되고 채굴은 되지 않는다.

채굴 종료는 miner.stop()을 입력하면 된다.

> miner.start(0)

 

cpu는 채굴은 효율이 영 아니라는걸 알기 때문에 본인은 애초에 시도조차 하지 않았다.

사펑용으로 모셔놓은(이라 쓰지만 사실 지뢰찾기용이던) rtx3090으로 이용할 것이다.

 

7) 아래 명령어의 -U는 그래픽을 이용하여 채굴하겠다는 의미이고, -P은 마이닝 풀의 주소인데 풀노드를 구축했을 때 입력한 IP:Port를 입력하면 된다. 

ethminer -U -P http://127.0.0.1:8545

 

 

 

*** 한번에 마이닝이 성공적으로 실행되면 좋겠지만 "no mining work available yet" 메시지가 뜨는 경우
  1) 풀노드가 아직 완전히 싱크 되지 않았다. 싱크 상태를 확인해보길...

  2) 출처의 내용과 달리 내 환경에서는 gpu 채굴을 할려고 해도 miner.start(1)을 했어야 한다.

      >> 마이닝 기능만 활성화할꺼라 miner.stop(0)을 했는데 안되길래 숫자 증가시키니 됨 (컨트롤 할 전체 마이닝 worker 수량 의미일까...)

 

 

어쨋든 이렇게 마이닝이 시작되면 3090 기준 아래 사진처럼 2-3분에 한번꼴로 2~3 이더씩 들어오게 된다.

Comments