본문 바로가기
Blockchain/Node

Taiko Prover 노드 구동

by GrayChoi 2024. 5. 1.
반응형

타이코... 마지막 테스트넷 Hekla에서 드디어 프루버를 활성화 할 수 있게되었다.

시간과 돈, 그리고 근성만 있다면 누구나(?) 돌릴 수 있다!

 

 

 

 

SGX2 지원 CPU

최소사양

CPU: 2cores

RAM: 8RAM

Ubunut 22.04 LTS

 

 


 

 

1. VPS 구매 또는 서버 컴퓨터 구매하기

타이코의 Prover는 전에 게시글을 올렸듯이 SGX1만 지원하는 데스크탑 CPU만으로도 할 줄 알았다...

만약 저 때문에 구매하신분이 있다면 죄송스럽게 생각하며 컴퓨터 값을 멘징해줄 CESS Consensus 노드를 돌리도록하자.

 

CESS Consensus 노드 구동하기

본 게시글은 VPS로 구동하는 것이 아닌 개인 컴퓨터로 구동하는 노드이다. VPS로도 구동할 수 있지만 비용이 많이 들어 개인컴퓨터로 진행한다. 추천 컴퓨터 사양 인텔 8~10세대 i7 또는 i9 CPU 64GB RAM

graychoi.xyz

 

여튼 Prover를 활성화 시키기 위해서는 CPU가 SGX2를 지원해야한다.

 

apt install cpuid

cpuid | grep -i sgx

SGX1, SGX2 supported 둘다 true로 나와야한다.

위 사진은 인텔의 데스크탑 CPU이며 SGX2를 지원하지 않는 것을 알 수 있다.

 

위 사진처럼 SGX2까지 true로 나와야 진행할 수 있다.

 

현재 VPS에서 SGX2를 지원하는 곳은

Tencent cloud, Alibaba cloud, Azure 세 곳에서

SGX2를 지원하는 VPS를 구매할 수 있다.

Azure에서는 최소 DC2s를 이용해야하며 월 최소 140달러 이상의 비용 지출을 해야한다.

 

Tencent의 경우 M6ce 모델을 이용해야하며 본인도 이 모델을 사용하고있다.

대략 월 60달러 이상 나가는 듯 (2Cores/16GB Ram)

근데 리눅스 접속해보니까 램 할당이 8기가 밖에 안되어있던데?

 

방금 알리바바 클라우드 찾아보니까 2코어 8기가 램 기준 50달러가 안되는 것 같다...?

하지만 본인은 아직도 KYC 인증이 안되어서 Tencent를 이용중이다.

 

구매할 때, Ubuntu 22.04 LTS 버전을 구매하면된다.

 

  Azure Tencent Cloud Alibaba Cloud
모델 Standard_DC2s M6ce g7t
성능 2 vCPU, 8GB RAM 2 vCPU, 16GB RAM 2 vCPU, 8GB RAM
가격(최소) per month $140 $60 $50

 

 

 

2. 인텔 PCS 구독

https://www.intel.com 

위 링크에서 인텔 가입 후 구독하기

 

 

 

https://api.portal.trustedservices.intel.com/provisioning-certification

위 링크로 접속

Subscribe 버튼 클릭

 

여기도 Subscribe 버튼 클릭

 

Primary Key 오른쪽의 Show 버튼 클릭 후

복사해서 따로 저장해두면된다.

 

3. Server 접속 후 기본 설정

본인은 Tencent Cloud에서 구매했으며 Tencent Cloud에서 제공하는 우분투 서버 기준으로 작성한다.

 

sudo passwd

root 계정의 비밀번호를 새로 설정한다.

 

su

cd ~

root 계정으로 접속한다.

 

ipv6 비활성화하기

nano /etc/sysctl.conf

서버 다운로드 속도가 너무 느려서 혹시나해서 ipv6를 비활성화 하는 코드이다.

굳이 안하고 넘어가도 될 것 같기도 함.

위 명령어 입력 후 위 사진과 같이 변경한다.

 

sysctl -p

shutdown -r now

shutdown -r now 명령어를 입력하게 되면 재부팅 되게 된다.

재부팅 될 동안 아래 광고 보고 오면 될듯

반응형

 

vi /etc/apt/sources.list

텐센트 클라우드는 미러서버가 텐센트로 되어있는데

왜인지 모르겠지만 가끔 다운로드가 안되는게 있다...

그래서 미러서버를 변경해주었더니 잘 되었음

혹시나 뭐하다가 막힌다면 미러서버를 변경해주도록하자.

 

ESC 누른 후

:

%s/mirrors.tencentyun.com/archive.ubuntu.com

입력 후 엔터

 

:

wq

입력 후 엔터를 치면 저장된다.

 

sudo apt update

 

4. 커널 업데이트

uname -r

6.0 버전 이상으로 나오면 다음 단계로 넘어가면된다.

 

sudo apt-cache search linux-image-6.

리눅스 커널 버전들을 확인하는 명령어

 

sudo apt-get install linux-image-6.5.0-26-generic

Y를 입력한 후 엔터를 친다.

 

shutdown -r now

설치가 완료되었다면 위 명령어를 입력 후 재부팅을 하면된다.

 

uname -r

 

업데이트 확인 완료

 

5. Docker 및 Docker-compose 설치

 

// docker 버전 확인
docker --version
 
// docker-compose 버전 확인
docker-compose --version

 

 

Docker 및 Docker-compose 설치 확인 명령어

둘 다 버전이 잘 뜬다면 다음 단계로 넘어가면 된다.

 

// docker 설치
sudo apt-get update && sudo apt-get upgrade -y
 
sudo apt install docker.io
 
docker --version

Docker 설치

 

// docker-compose 설치
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose 

sudo chmod +x /usr/local/bin/docker-compose
 
docker-compose --version

Docker compose 설치

 

6. Node.js 설치

wget http://nodejs.org/dist/v21.0.0/node-v21.0.0-linux-x64.tar.gz

아마 독스 부분에서 특정 버전으로 따로 설치해야한다해서

특정 버전 중 하나인 21버전으로 설치하였다.

 

tar -xvf node-v21.0.0-linux-x64.tar.gz

 

cd node-v21.0.0-linux-x64

sudo cp -r * /usr/local

cd ~

node --version

Node.js 설치 끝

 

7. Raiko Docker 필수 패키지 설치

sudo apt-get update && sudo apt-get install -y build-essential wget python-is-python3 debhelper zip libcurl4-openssl-dev pkgconf libboost-dev libboost-system-dev libboost-thread-dev protobuf-c-compiler libprotobuf-c-dev protobuf-compiler

이제부터 본격적인 Prover 활성화를 위한 작업들이 시작된다.

 

8. PCCS 인증서 생성

mkdir ~/.config/sgx-pccs

cd ~/.config/sgx-pccs

openssl genrsa -out private.pem 2048

chmod 644 private.pem  # Docker container needs access

openssl req -new -key private.pem -out csr.pem

openssl x509 -req -days 365 -in csr.pem -signkey private.pem -out file.crt

rm csr.pem

5번째 줄의 명령어를 입력하게 되면

여러정보들을 적어야하는데 그냥 대충 적고 넘어가도 되는 것 같다.

 

sudo apt-get install cracklib-runtime

두번 째 사진의 Do you want to configure PCCS now

부분에서 Y가 아닌 N을 눌러 넘어가도 되는 듯 하다.

Y를 누르면 위에서 했던 귀찮은 작업들의 반복이다.

 

9. Install Intel lib & copy the config file

echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/intel-sgx.list

wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add -

 

sudo apt-get update

Y 입력 후 엔터

 

sudo apt-get install sgx-dcap-pccs

 

 

cd ~/.config/sgx-pccs

cp /opt/intel/sgx-dcap-pccs/config/default.json  .

마지막 줄 명령어의 . 부분까지 입력해야된다.

 

echo -n "user_password" | sha512sum | tr -d '[:space:]-'

위 명령어 입력후 아래 나오는 해시값을 따로 저장해둔다.

 

echo -n "admin_password" | sha512sum | tr -d '[:space:]-'

위와 마찬가지로 해시값을 따로 저장해둔다.

 

nano default.json

hosts는 0.0.0.0으로 변경하고

ApiKey에는 2단계에서 진행했던 인텔의 Primary Api를 작성한다.

UserTokenHash에는 방금 위에서 받은 첫번째 해시값을 입력하고

AdminTokenHash에는 두번째로 받은 해시값을 입력한 후

 

Ctrl + X, Y, 엔터 입력 후 저장한다.

 

chmod 644 default.json

mkdir ~/.config/raiko

mkdir ~/.config/raiko/config

mkdir ~/.config/raiko/secrets

 

10. raiko git 다운로드

cd ~

git clone -b taiko/alpha-7 https://github.com/taikoxyz/raiko.git

 

cd raiko/docker

docker compose build

여기서 꽤 오랜 시간이 소요된다.

만약 중간에 오류가 떠서 중지된다면 근성을 가지고 계속 시도해보자.

Tencent Cloud 기준 다운로드 속도가 너무 느려서 며칠을 고생했다...

 

docker image ls

위 명령어 입력 후 위 사진처럼

"gcr.io/evmchain/raiko", "gcr.io/evmchain/pccs" 두 개의 이미지를 확인할 수 있어야한다.

 

docker compose up init

만약 안된다면 docker compose 대신 docker-compose로 입력해보자.

버전 차이 때문에 사용 방식이 다를 수 있다.

 

cat ~/.config/raiko/config/bootstrap.json

엄청 길게 나오는데 위 사진처럼

public_key, new_instance, quote 세 가지를 따로 분리해서 저장해두면된다.

 

11. Taiko-Mono

git clone https://github.com/taikoxyz/taiko-mono.git

 

cd taiko-mono/packages/protocol

 

curl -fsSL https://get.pnpm.io/install.sh | sh -

curl -L https://foundry.paradigm.xyz | bash

source ~/.bashrc

여기 부분도 오래 걸릴 수 있는데 근성을 가지고 진행하면된다.

 

foundryup

특히 foundry 설정 부분에서도 매우 오래 걸릴 수 있고 진행 중 오류로 중지될 수 있지만

근성을 가지고 계속 시도하면 된다.

 

pnpm install

 

pnpm compile

 

export PRIVATE_KEY={PROVER_PRIVATE_KEY}

중괄호 안에는 prover로 사용할 지갑주소의 Private Key를 작성하면된다.

버너지갑사용 및 지갑안에 Holesky 이더리움 채워놓기

 

nano script/config_dcap_sgx_verifier.sh

 

V3_QUOTE_BYTES 부분에 위에서 저장하였던 엄청 긴 quote를 붙여넣기 하면된다.

 

밑으로 내려서 FORK_URL="" 본인의 RPC로 대체

Holesky RPC를 말하는 것이며

Holesky 노드를 돌리고 있지 않다면

 

Taiko 노드 준비하기 - 1편

애증의 타이코가 돌아왔다 현재 Alpha 6 katla testnet이 진행중이다. 저번 5 테스트넷에서는 타이코 노드만 돌리면 됐었는데 이번에는 좀 다르게 가야할 것 같다. 지금은 Proposer로만 타이코 노드를 돌

graychoi.xyz

위 링크를 참고하여 돌리거나 혹은 BlockPi API를 이용하도록 하자.

 

본인은 돌리고있는 Holesky 주소를 이용하였다.

 

PRIVATE_KEY={YOUR_PRIVATE_KEY} ./script/config_dcap_sgx_verifier.sh --quote "YOUR_QUOTE_STRING_HERE"

중괄호 안의 YOUR_PRIVATE_KEY는 양 옆의 중괄호를 지우고 앞에 0x를 추가한 후

아까 위에서 입력했던 Private Key를 입력해주면되며,

"YOUR_QUOTE_STRING_HERE" 부분에는 쌍따옴표를 포함하여 위에서 받았던 quote를 붙여넣기 해주면된다.

 

위 사진과 같이 진행되고

 

위 사진과 같은 화면이 나오게 되면

emit InstanceAdded 바로 옆의 id 번호를 따로 기억해두거나 저장해둔다.

 

cd ~/raiko/docker

export SGX_INSTANCE_ID={YOUR_INSTANCE_ID}

YOUR_INSTANCE_ID 부분에는 중괄호를 제외하고 바로 위에서 받았던 숫자를 입력해주면된다.

 

docker compose up raiko -d

 

docker compose logs raiko

 

 curl --location 'http://localhost:8080' \
--header 'Content-Type: application/json' \
--data '{
    "jsonrpc": "2.0",
    "method": "proof",
    "params": [
        {
            "proof_type": "sgx",
            "block_number": 31991,
            "rpc": "https://rpc.hekla.taiko.xyz/",
            "l1_rpc": "{HOLESKY_RPC_URL}",
            "beacon_rpc": "http://unstable.holesky.beacon-api.nimbus.team/",
            "prover": "0x7b399987d24fc5951f3e94a4cb16e87414bf2229",
            "graffiti": "0x0000000000000000000000000000000000000000000000000000000000000000",
            "sgx": {
                "setup": false,
                "bootstrap": false,
                "prove": true
            }
        }
    ],
    "id": 0
}'

중간에 l1_rpc를 돌리고있는 holesky rpc로 바꾸거나 blockpi에서 holesky http api로 변경해주면된다.

아래 becon_rpc듣 holesky rpc를 돌리고있다면 http://IP주소:5052로 하면된다.

또는 http://unstable.holesky.beacon-api.nimbus.team/ 주소를 사용한다

 

그리고 통째로 복붙하면된다.

 

위와같이 나오면 성공

 

12. 로그 확인

docker compose logs -f raiko

docker compose logs -f pccs

 

이제 다음 글로 넘어가서 실행중인 타이코 노드에

Prover를 활성화 하는 작업만하면 끝난다.

 

 

Taiko Proposer Node 구동하기

ketla에서 끝날 줄 알았던 타이코 테스트넷이hekla 테스트넷을 마지막으로 메인넷이 출시될 것으로 보인다.   System Requirements MinimumCPU: 2+ coresMemory: 4GB RAMDisk: 1TB free storage spaceBandwidth: 8mbps Recommend

graychoi.xyz

 

 

 

 

스팸 댓글이 많아서 본 게시글의 댓글 확인을 안합니다.

궁금하신 점이 있다면 아래 채팅방으로 문의 부탁드립니다.

 

퍼가실 땐 출처 명시 부탁드립니다.

 


 

 

노드 대행 및 기타 문의

graychoi0920@gmail.com


 

노드그레이 텔레그램 공지방

 

노드그레이

그레이의 50가지 노드 그림자

t.me

 

노드그레이 텔레그램 채팅방

 

노드그레이 채팅방

공지방 : https://t.me/nodegray

t.me

 

 

반응형

댓글