Blockchain/Testnet

Aleo 테스트넷3 참여 가이드

lowsec 2022. 12. 9. 01:59

Intro

 

사진. aleo-main

 

프라이빗 어플리케이션을 위한 분산형 플랫폼인 Aleo는 2021년 4월에 $28M, 2022년 2월에는 $200의 투자금을 확보하였습니다. 투자사도 타이거글로벌, a16z, 소프트뱅크, 삼성넥스트(직접 투자는 아니라고 합니다.), 투자금도 굉장히 크고 폴리체인 캐피탈 등 실적이 높은 투자사들이 많이 포진되어 있는 것을 볼 수 있습니다.

 

사진. aleo-fundraising

 

얼마전 테스트넷2를 종료하고 테스트넷3를 런칭하였고 Prover 노드를 운영하는 사용자를 대상으로 보상 지급이 확정되었습니다.

 

aleo 공식 블로그에 포스팅된 테스트넷3 운영 및 업데이트 내용 중 핵심은 아래와 같습니다.

  • 새로운 합의 알고리즘 AleoBFT 도입
  • Prover는 블록을 생성하지 않지만 코인베이스 보상 (블록 생성 보상)의 일부를 얻을 수 있음

 

여기서 Prover는 영지식 증명에서 ZK proof를 생성하는 대상을 의미합니다. 테스트넷3 인센티브에는 전체 2,500만 Aleo 크레딧이 할당 되었고, 그 중 Prover가 30% (750만 Aleo 크레딧)의 인센티브를 가져갈 수 있다고 합니다. 획득한 Aleo 크레딧은 메인넷 출시 시 토큰과 5:1 비율로 교환 가능 테스트넷3 기간은 2022/12/2~2023/1/26입니다. Prover가 예상보다 많아 Prover에게 할당된 750만 크레딧을 인센티브로 사용하면 1/26 전에도 테스트넷3가 종료될 수 있습니다.

 

참고. 저는 노드 실행 환경 상 GPU 마이닝이 불가능하여 CPU 마이닝 방법을 사용하였지만, GPU 마이닝을 지원합니다. 개인 채굴이 아닌 Pool 형태의 채굴도 물론 가능합니다. 본 포스팅에서는 다루지 않았지만 GPU 마이닝을 위해 공식 디스코드의 #testnet3-support나 #proving pool 채널에 문의하시면 이미 채굴 중인 사용자들의 도움을 받으실 수 있습니다.

 

Build

 

본 가이드는 aleo 공식 github을 참고하였습니다.

 

GitHub - AleoHQ/snarkOS: A Decentralized Operating System for ZK Applications

A Decentralized Operating System for ZK Applications - GitHub - AleoHQ/snarkOS: A Decentralized Operating System for ZK Applications

github.com

 

Requirements

 

Aleo node를 운영하기 위한 최소 사양은 아래와 같습니다. 사양이 꽤 높은데 제가 현재 실행 중인 노드가 4-core에 RAM 16GB인데도 동작에는 전혀 무리가 없음을 확인하였습니다.

 

  • CPU: 16-cores (32-cores preferred)
  • RAM: 16GB of memory (32GB preferred)
  • Storage: 128GB of disk space
  • Network: 10 Mbps of upload and download bandwidth

 

최소 사양이 이렇게 높은 것은 블록을 생성할 때 CPU나 GPU 마이닝을 통한 채굴 방식을 사용하기 때문인 것 같습니다. 고 스펙의 하드웨어를 사용할 수록 블록 생성에 더 큰 영향력을 행사할 수 있고 이는 곧 보상으로 이어집니다.

 

그래서 공식 가이드에는 “Please note to run an Aleo Prover that is competitive, the machine will require more than these requirements.” 라고 표현하고 있네요.

 

Prerequisties (참고 사항. 필수가 아닙니다.)

 

aleo에서는 build 단계에서 Rust 및 기타 개발용 소프트웨어 설치와 네트워크 정책 설정까지 포함하고 있어 본 단계는 스킵하셔도 무방합니다.

 

aleo 노드는 Rust 언어로 개발되었으며 빌드를 위해 1.65+ 이상의 버전을 권장합니다.

# install
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# check version
rustc --version
rustc 1.65.0 (897e37553 2022-11-02)

# update
rustup update

 

외부와의 통신을 위해 4133/tcp와 3033/tcp를 사용합니다. 아래와 같이 포트 정책 설정을 할 수 있습니다.

 

# check status 
sudo ufw status

# allow 4133, 3033
sudo ufw allow 4133
sudo ufw allow 3033

# check
sudo ufw status

4133                       ALLOW       Anywhere
3033                       ALLOW       Anywhere

 

Build (ubuntu)

 

ubuntu 20.0.4 환경을 기준으로 아래와 같이 aleo 노드를 빌드하였습니다.

 

# clone the aleo repo
git clone https://github.com/AleoHQ/snarkOS.git --depth 1

# change directory
cd snarkOS

# build aleo node
# included Rust installation and setting the network policy, etc
sudo ./build_ubuntu.sh

 

Run Prover

 

빌드가 성공적으로 완료되면 target/release 디렉토리에 snarkos 파일이 생성됩니다. Prover 노드를 실행하기 전에 snarkos CLI 어플리케이션으로 aleo 계정을 생성합니다. 터미널에 출력되는 Key와 Address 정보를 잘 저장하세요.

 

cd target/release 

./snarkos account new

Attention - Remember to store this account private key and view key.

  Private Key  APrivateKey1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  <-- Save Me And Use In The Next Step
     View Key  AViewKey1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  <-- Save Me
      Address  aleo1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  <-- Save Me

 

chown 명령어로 ./target/release 하위 파일의 소유자를 현재 사용자로 변경해야 ./run-prover.sh 실행 시 발생할 수 있는 permission denied 에러를 방지할 수 있습니다.

  • ${whoami}: 현재 ubuntu 사용자 이름
cd ../../

# example: sudo chown -R bhlee ./target/release/
sudo chown -R ${whoami} ./target/release/

# run prover
./run-prover.sh

 

run-prover.sh를 실행하고 계정 생성을 통해 얻은 Private Key를 prompt에 입력합니다. 정상적으로 실행되면 아래와 같은 로그를 확인할 수 있습니다. Building 이후에 prover는 외부 네트워크의 피어에 접속하여 블록 정보를 가져오고 proof를 만듭니다. 이러한 과정 중 수많은 로그가 발생합니다.

 

Running an Aleo Prover node...
Checking for updates...
Saved working directory and index state WIP on testnet3: 27ee539 Merge pull request #2156 from ljedrz/update_deps
    Updating crates.io index
   Compiling snarkos v2.0.2 (/home/bhlee/snarkOS)
    Building [=======================> ] 480/481: snarkos(bin)

 

그러나 특정 mining pool에 속하지 않고 개인 하드웨어 스펙만으로 채굴을 하는 것은 쉽지 않습니다. (제가 24시간 동안 개인 채굴을 해보았으나 보상이 0이었습니다.)

공식 디스코드에서 지원하는 HAMP, Aleo Pool, ZK.WORK 3개의 pool 중 원하는 mining pool에 가입하면 조금 더 효율적인 방법으로 채굴에 참여할 수 있습니다. HAMP mining pool에 접속하여 크레딧을 채굴하는 방법을 알아봅시다.

 

아래와 같이 HAMP mining pool에 제공하는 aleo-prover 소스코드를 빌드하여 실행합니다.

  • ${YOUR_ALEO_ADDRESS}: 생성한 aleo 주소를 입력

 

# clone source code in aleo-prover repo 
git clone https://github.com/HarukaMa/aleo-prover -b testnet3-new

# change directory
cd aleo-prover

# build
cargo build --release

# run
cargo run --release -- -a ${YOUR_ALEO_ADDRESS} -p pool.hamp.app:4444

 

정상적으로 prover 노드가 실행되면 아래와 같은 로그를 확인할 수 있습니다.

 

2022-12-08T15:06:52.646831Z  INFO aleo_prover: Starting prover
2022-12-08T15:06:52.647290Z  INFO aleo_prover::prover: Created 1 prover thread pools with 4 threads in each pool
2022-12-08T15:06:52.647403Z  INFO aleo_prover::prover: Initializing universal SRS
2022-12-08T15:06:52.647495Z  INFO aleo_prover::prover: Universal SRS initialized
2022-12-08T15:06:52.647507Z  INFO aleo_prover::prover: Initializing coinbase proving key
2022-12-08T15:07:06.503487Z  INFO aleo_prover::prover: Coinbase proving key initialized
2022-12-08T15:07:06.504190Z  INFO aleo_prover::client: Connecting to server...
2022-12-08T15:07:06.730346Z  INFO aleo_prover::client: Connected to pool.hamp.app:4444
2022-12-08T15:07:06.891386Z  INFO aleo_prover::client: Handshake success

 

HAMP 사이트에서 주소를 입력하거나 아래와 같이 ‘address=’ 뒤에 자신의 aleo주소를 입력하여 채굴 보상을 확인할 수 있습니다. 숫자가 크지는 않은데 0이 아니라는 것에 일단은 만족하고 있습니다.

https://hamp.app/address?address=aleo1cd6ezkv0y8gr4sv0ygwk778v4uf8n8rxyktauvv990njlyzep5zqwp5vtc

추가. 혹시나 해서 공식 Aleo Explorer에서는 제 노드 주소를 입력해 보았는데 아무것도 안나오네요;; 마이닝 풀의 대표자만 표시되지 않을까 하는 추측을 조심스럽게 해봅니다.

 

사진. no-result

 

지금까지 제 포스팅을 읽어주셔서 감사합니다. 궁금한 점이 있으시면 언제든지 https://t.me/getmoneywithbrother 로 오셔서 질문해주시면 감사하겠습니다.