Raspberry Pi 4B로 증인노드를 돌려본다? - 성공 흔적을 찾아서!
이전글 - 라즈베리파이로 증인노드를 돌려본다? - Tutorial - 일단 실패
왜 이 짓을 하는가?
이전글에서 야심차게 라즈베리파이4로 증인노드를 돌리려는 시도를 했었습니다. 왜 이걸 시도하냐? 그것은 바로 증인노드를 누구나 집에서 돌릴 수 있기 때문입니다. 아마 증인노드가 되면 풀노드, 시드노드도 돌릴 수 있을거란 생각이 들었습니다. 노드가 많아지면 네트워크은 그만큼 안정적이 됩니다!
라즈베리파이4B의 대기 전력소모는 2W이고, 증인노드 동작시 전력소모는 4W 수준입니다.
4W로 잡으면 하루 4W x 24h = 96Wh이고, 1년에 35kW정도입니다. 지금 옆에서 돌고 있는 선풍기의 제일 낮은 속도일 때 소비 전력이 30W입니다. 10시간만 돌려도 30W x 10h = 300Wh입니다.
전기세는 아래표를 참고하시면 됩니다. 1년 돌려도 전기세는 거의 없는 수준입니다.
그래서 시도 결과는 아쉽게 실패했습니다. 원인은 steem 소스코드가 arm 아키텍처를 지원하지 않기 때문입니다.
그래서 누군가 해놓지 않았을까 해서 열심히 찾아봤습니다. 그 기록을 따라가 보겠습니다.
추적
steem github에서 arm에서 빌드시도한 흔적
armhf build cannot handshake with peers #489성공한 흔적
arm에서 안되는 원인: equihash에서 arm이 지원하지 않는 명령을 사용한다.
equihash는 fc library의 일부분이다 -> fc (fast-compling c++) library를 수정해야 한다!
gtg (gandalf the grey)의 시도
https://peakd.com/witness-category/@gtg/7hw5fx-gtg-witness-log
Steemd on a low end ARM?
Yes!
… but not yet.
I was able to build and run a slightly modified steemd v0.20.10 on a 32bit ARMv7 Processor (v7l)
… at least for a while.
You can get a binary steemd-v0.20.10-armv7l here: https://gtg.steem.house/get/steem/
그러나, 자료는 남아 있지 않다.
- 스팀 소스를 수정하여 Odroid등 arm 보드에서 빌드한 EU 사례
EU Blockchain goes mobile: 2 Watts is all it needs
https://steemit.com/eftg/@sorin.cristescu/eu-blockchain-goes-mobile
그렇다면 방법은?
해결할 수 있는 방법은 실마리를 찾았습니다. steem 소스에서 arm을 지원하지 않는 명령, 설정은 없애는 것입니다. 단, 없애더라도 문제 없이 돌아가야 하구요.
자료를 찾다 찾다 나올만한데 없어서, 포기 상태였습니다.
그 날 밤. 자기전에 명상을 했습니다.
그러자 바로 생각이 떠오릅니다.
블러트
https://gitlab.com/blurt/blurt
블러트에서는 이미 수정해서 라즈베리에서 증인노드를 돌리고 있고, 그 히스토리를 따라가면 스팀도 가능하겠단 생각이 번뜩 들었습니다!
그래서 찾아봤더니 그 흔적이 고스란이 남아 있습니다.
https://gitlab.com/blurt/blurt/-/commit/17b2b0f1793accd0c01fadac638d2e19a2fb9a6f
논란이 됐던 equihash 부분을 삭제하는 부분이 포착됐습니다.
가능성을 보다. 그럼 이젠?
가능성은 보았습니다. 라즈베리파이 성능으로 증인노드 돌릴 수 있는가? 충분히 가능하다고 봅니다. 최근 증인노드의 상태를 볼 일이 있었는데, AWS에서 4G 램으로 동작하고 있었습니다. 그리고, 자료를 찾아보면 8G에서 가능하다는 몇 분 답변을 들었고, AWS와 라즈베리 파이 비교해보니 라즈베리가 더 빨랐다는 얘기도 들었습니다. 결론적으로 가능하다고 판단했습니다. 사실 증인노드는 동기화만 되면 지정된 시간에 채굴을 하는 역할이 주요 역할이라 고사양의 하드웨어가 필요없습니다. 필요한 것은 대용량 스토리지와 최근 블록 파일입니다. 이건 라즈베리에서도 충분히 가능합니다.
자, 이제 남은 것은 steem 소스를 수정하여 arm에서 빌드할 수 있게 만드는 것입니다. 좀 더 한다면 docker 이미지로 만들어서 누구나 쉽게 증인노드를 돌릴 수 있게 하는 것이구요.
커뮤니티의 참여가 필요한 부분입니다.
어떤 의견, 아이디어도 환영합니다. 많은 의견 교환이 이루어지면 좋겠습니다.
Need communities to participate in building steem source code for arm (raspberry pi's cpu). It would be awesome to run a witness or seed node in a house! Please share your ideas.
@ety001
@steemchiller
@justyy
@steemitblog
@steemcurato01
@steemitblog
I don't have much knowledge about running a Steem witness node on an RPi. From what I've learnt so far from my own witness node is that it is very much dependant on the Ram as well as the CPU. If you don't publish a block in 3 seconds, someone else would publish it before you. This is why there are so many failed to push block messages in the logs.
That being said, this seems to be an exciting venture. Count me in! Let me know if and when you start working on this in a public repo. Would be happy to contribute and help build Steem.
Vote for @starlord28 as a witness
or search for @starlord28 here https://steemit.com/~witnesses
thank you for sharing your opinions. Even after sync, cpu and rams are critical to mine a block? I found the node of top witness was running c5.large of AWS which has 4g ram.
As you might know I am running the witness fir blurt in my rpi4 8g.
That's pretty strange. Maybe I can try and get in touch with him/her to understand this better. I went in for a trial and error method to find the bare minimum to run my node. So, I jumped from 4G to 8G to 16G ram. Finally, saw one of the witnesses running on a 30G ram so settled that for my backup node.
I haven't personally checked out their code. But from a quick search, it seems like they have a much lower requirement than Steem. Need to check their post FORK changes to see what let them reach that point.
PS: The CPU usage by the container on my main node hits 65-70% regularly. So, there is definitely a lot of load on the CPU.
Just curious. Did you run your Blurt witness on an official build or a port by someone in the community?
Just curious. Did you run your Blurt witness on an official build or a port by someone in the community?
blurt community provides the docker image.I simply executed it.
Sigh! They officially support ARM architecture.
yep. and there are a few folks who successfully built steemd too.
Great. Will try it out on mine when I find some spare time.
검색하다보니...
nas용 os로 OpenMediaVault가
arm을 지원하기때문에 라즈베리파이등의 SBC를 이용하는 경우에는 nas를 구축할때 이 OS를 선택한다는 글도 있네요
arm에서 여러가지 할 수 있는거 같네요. 고맙습니다.
interesting..
yay~
멋지네요. ARM에서도 가능하다니 놀라울 따름입니다.^^
꼭 성공하시길 기도드립니다.
가능은 할텐데.. 여유가 별로 없네요. 야레바데키루님 데키루?
우와... 흥미롭네요. 스팀에서도 구현되기를 기대해봅니다. ㅎㅎ
왠지 될거 같은 느낌이 드네요. 고맙습니다~
대단한 능력자십니다. 라즈베리파이에서 구현되리라고는 생각도 못해봤습니다. 성공을 기원합니다.
아직 성공한게 아닙니다~ 커뮤니티차원에서 도전해보면 좋겠습니다~ 고맙습니다.
쓰신 글 보고 저도 조금 찾아보았는데 내용이 길어 별도로 포스팅하였습니다. 이미 아시는 내용일 수도 있는데, 제가 찾아본 바로는 equihash 부분을 전부 제거해도 아마도 문제 없을 것 같다는 생각이 듭니다.
성공을 기원합니다!
고맙습니다~ 블러트 코드를 봐도 그냥 제거한 걸로 보입니다. 일단 제거하고 빌드해보려구요.
음... 출근하면
제 라즈베리보드에다가도 한번 테스트는 해봐야겠네요
arm에서 그냥은 빌드가 안되고요, 좀 건드려줘야 합니다. 천천히 해보려고요~