타이코... 마지막 테스트넷 Hekla에서 드디어 프루버를 활성화 할 수 있게되었다.
시간과 돈, 그리고 근성만 있다면 누구나(?) 돌릴 수 있다!
SGX2 지원 CPU
최소사양
CPU: 2cores
RAM: 8RAM
Ubunut 22.04 LTS
1. VPS 구매 또는 서버 컴퓨터 구매하기
타이코의 Prover는 전에 게시글을 올렸듯이 SGX1만 지원하는 데스크탑 CPU만으로도 할 줄 알았다...
만약 저 때문에 구매하신분이 있다면 죄송스럽게 생각하며 컴퓨터 값을 멘징해줄 CESS Consensus 노드를 돌리도록하자.
여튼 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://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 노드를 돌리고 있지 않다면
위 링크를 참고하여 돌리거나 혹은 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를 활성화 하는 작업만하면 끝난다.
스팸 댓글이 많아서 본 게시글의 댓글 확인을 안합니다.
궁금하신 점이 있다면 아래 채팅방으로 문의 부탁드립니다.
퍼가실 땐 출처 명시 부탁드립니다.
노드 대행 및 기타 문의
graychoi0920@gmail.com
노드그레이 텔레그램 공지방
노드그레이 텔레그램 채팅방
'Blockchain > Node' 카테고리의 다른 글
Rivalz incentivized Testnet 가이드 (0) | 2024.07.22 |
---|---|
Taiko Node 구동 및 Proposer, Prover 활성화 (0) | 2024.05.01 |
Aethir Checker Node 구동하기 for Linux (1) | 2024.04.21 |
Aethir Checker Node 구동하기 for Windows (1) | 2024.04.21 |
0G Labs Storage 노드 구동하기 (3) | 2024.04.11 |
댓글