0G Labs라고 하는 AI기반의 프로젝트가 있습니다.
어떠한 녀석들인지 0G의 블로그를 살펴보면 이렇게 나와있네요.
0G는 AI 시대에 데이터를 처리할 수 있는 블록체인의 용량을 근본적으로 향상시키는 것을 목표로 하는 전략인 최초의 모듈형 AI 체인을 생성한다는 명확한 비전을 가지고 출발했습니다.
라고 말이죠.
뭐 그런걸 떠나서 무엇을 하는 녀석이냐면 모듈형 아키텍쳐로 구성되어 블록체인 생태계에서 모놀리식 구조로 돌아가는 방식을 채택했고, 그런 모듈형 방식에 AI를 접목한 체인이다. 라고 하는 것이죠.
그래서 빠른 속도의 네트워크와 합의 레이어 처리 등등을 통해 빠른 트랜잭션 속도를 처리할 수 있고, 모듈방식을 활용하기 때문에 다양한 dAPP에서 적합한 합의 매커니즘을 활용하는 방식으로 간다고 합니다.
그래서 요즘 당연히 화두인 DA를 기반으로 돌아가는 방식도 채택했다고 합니다.
그러다보니, 0G는 프로그래밍이 가능한 DA솔루션을 제공하고, 이를 통해 무한한 확장성을 지니게 된다고 하네요.
뭐 이런 자세한 부분은 얘네의 블로그를 살펴보시면 나와있으니 확인하시면 되겠습니다.
https://blog.0g.ai/blog/introduction
아무튼 이 0G는 시드로도 35M 규모의 시드투자를 받기도 했기 때문에 눈여겨봐 좋은 AI기반의 온체인 모듈러 네트워크라고 보시면 되겠구요.
테스트넷도 이제 운영하게 되면서, 테스트넷을 위한 노드도 마찬가지로 운영하게 되었기 때문에 노드를 돌리기 위해 제가 이렇게 작성하게 되었다고 보시면 되겠습니다.
아직까지는 확실히 이렇다할 에어드랍 내용은 없지만
이렇게 나와있는 이상 한 번쯤은 돌려도 챙겨볼 수 있지 않을까 싶네요!
아, 참고로 노드는 이렇게
두 가지가 존재하는데요.
두 개 각각 돌리기 위한 최소 요구사항은 이러하니 참고하세요!
그럼 저는 콘타보로 한 서버에 두 가지 노드를 모두 돌려보겠습니다.
0. Contabo 셋팅하기
권장사양이 500GB이기 때문에 VPS 2로 가줍시다.
일단 위 사이트를 통해 Contabo 접속해주시구요.
가입해주신 뒤에
이 두번째껄 Select해줍니다.
기간은 대충 3개월이나 6개월정도, 지역은 무료인 독일로 설정하고(어차피 기간지나면 자동 결제됩니다.)
☞저는 언제까지 테스트넷이 돌아갈지 몰라서 6개월로 했습니다.
일반 VPS와 다른 점은 저장공간을 선택하는 부분이 없습니다.
이미지는 우분투 22.04를 선택해줍니다.(제일 최신꺼니깐)
Root의 비밀번호 설정한 뒤 우측의 Next를 눌러줍니다. 72유로네요.
결제까지 완료되셨다면, 시간이 좀 지나면
이런 메일이 오니까 거기에 있는 IP주소를 이용해서 cmd를 통해 로그인해줍시다.
☞cmd로 접속하는 방법은 아래 명령어대로 입력하신다음 비밀번호 입력하시면 됩니다.
ssh root@서버IP주소
그리고 비밀번호 입력하시면 되는데, 입력해도 아무것도 안나오는건 먹통된게 아니라 비밀번호는 원래 안보입니다.
제대로 입력하시고 엔터누르시면 아래 화면처럼 접속될거에요!
1. 0G를 위한 기본 세팅하기
이제 0G를 위해 기본 환경설정을 설치해줘야겠죠?
sudo apt-get update
sudo apt update
sudo apt -qy install wget curl git jq lz4 build-essential nano unzip screen clang cmake cargo
☞마지막줄은 sudo apt -qy install wget 부터 cargo까지입니다.
위 명령어 입력해주시고
sudo apt upgrade
설치 완료되면 기본적인 설치는 끝났고, Go언어를 설치해줍시다.
Go 언어 컴파일러 설치
이번엔 Go 언어 컴파일러 설치하기부터 해봅시다.
sudo rm -rf /usr/local/go
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
그 다음
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
export PATH=$PATH:/usr/local/go/bin
위 명령어도 한 줄씩 입력해주세요.
go version
그 다음 go version을 입력하면
이렇게 나옵니다.
혹시
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
위 명령어를 입력해도 아무런 반응이 없다면 새로운 Go lang을 설치해줘야 돼요.
위 사이트에 들어오셔서
네모친 부분을 마우스 오른쪽을 눌러 "링크 주소 복사"를 눌러줍시다.
그 다음
wget 복사한 링크 주소
위 내용처럼 입력해주시면 됩니다.
마지막으로
source ~/.profile
위 명령어를 입력해주시면 전부 끝납니다.
이제 0G를 위한 셋팅을 하러 가봅시다.
2. 0G Validator Node 구성하기
먼저 Validator Node부터 구성해서 돌려볼게요!
timedatectl
위 명령어를 입력해서 시간대 구성이 UTC기반인지 확인해줍시다.
아마 아무것도 안건드렸다며 위에 보이듯이 UTC일거에요.
☞시간대 구성이 UTC가 아니라 KST, EST 등등 다른 구성이면 LastResultHash 불일치 오류가 발생할 수도 있다고 하니 참고하세요!
cd $HOME
이제 위 명령어로 홈으로 돌아가고
git clone -b v0.1.0 https://github.com/0glabs/0g-chain.git
./0g-chain/networks/testnet/install.sh
이제 위 명령어를 입력해서 노드를 위한 파일을 다운받아주신 다음
source .profile
초기화 한 번 해주시고
0gchaind version
버전도 확인해줍시다.
echo 'export MONIKER="My_Node"' >> ~/.bash_profile
echo 'export CHAIN_ID="zgtendermint_16600-1"' >> ~/.bash_profile
echo 'export WALLET_NAME="wallet"' >> ~/.bash_profile
echo 'export RPC_PORT="26657"' >> ~/.bash_profile
source $HOME/.bash_profile
위 명령어를 입력해주시면 되는데,
MONIKER 뒤에는 "My_node"대신 본인이 원하는 대로 입력하셔도 됩니다.
WALLET_NAME 뒤에는 "wallet"대신 본인이 원하는 대로 입력하셔도 됩니다.
cd $HOME
0gchaind init $MONIKER --chain-id $CHAIN_ID
0gchaind config chain-id $CHAIN_ID
0gchaind config node tcp://localhost:$RPC_PORT
0gchaind config keyring-backend os
이제 위 명령어를 순차적으로 입력해서 초기화 한 번 해주시고
여기까지 완료되었으면 json파일을 다운받아서 이동시켜줍니다.
wget https://github.com/0glabs/0g-chain/releases/download/v0.1.0/genesis.json -O $HOME/.0gchain/config/genesis.json
위 명령어를 입력해주세요.
여기까지 되었으면 이제 genesis파일의 설정을 변경해줘야됩니다.
PEERS="c4d619f6088cb0b24b4ab43a0510bf9251ab5d7f@54.241.167.190:26656,44d11d4ba92a01b520923f51632d2450984d5886@54.176.175.48:26656,f2693dd86766b5bf8fd6ab87e2e970d564d20aff@54.193.250.204:26656,f878d40c538c8c23653a5b70f615f8dccec6fb9f@54.215.187.94:26656, 41143f378016a05e1fa4fa8aa028035a82761b48@154.12.235.67:46656" && \
SEEDS="c4d619f6088cb0b24b4ab43a0510bf9251ab5d7f@54.241.167.190:26656,44d11d4ba92a01b520923f51632d2450984d5886@54.176.175.48:26656,f2693dd86766b5bf8fd6ab87e2e970d564d20aff@54.193.250.204:26656,f878d40c538c8c23653a5b70f615f8dccec6fb9f@54.215.187.94:26656, 41143f378016a05e1fa4fa8aa028035a82761b48@154.12.235.67:46656" && \
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.0gchain/config/config.toml
위 내용을 전부 다 복사해서 붙여넣어 주세요. 붙여넣기는 마우스 오른쪽을 누르시면 됩니다.
이렇게까지 다 되셨다면 이제 아래의 내용들을 하나씩 복사해서 붙여넣어줍시다.
sed -i \
-e "s/\(proxy_app = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$PROXY_APP_PORT\"/" \
-e "s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$RPC_PORT\"/" \
-e "s/\(pprof_laddr = \"\)\([^:]*\):\([0-9]*\).*/\1localhost:$PPROF_PORT\"/" \
-e "/\[p2p\]/,/^\[/{s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$P2P_PORT\"/}" \
-e "/\[p2p\]/,/^\[/{s/\(external_address = \"\)\([^:]*\):\([0-9]*\).*/\1${EXTERNAL_IP}:$P2P_PORT\"/; t; s/\(external_address = \"\).*/\1${EXTERNAL_IP}:$P2P_PORT\"/}" \
$HOME/.0gchain/config/config.toml
위 내용 그대로 복붙해주시고
sed -i \
-e "/\[api\]/,/^\[/{s/\(address = \"tcp:\/\/\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$API_PORT\4/}" \
-e "/\[grpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$GRPC_PORT\4/}" \
-e "/\[grpc-web\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$GRPC_WEB_PORT\4/}" $HOME/.0gchain/config/app.toml
그 다음은 위 내용
sed -i.bak -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.0gchain/config/app.toml
sed -i.bak -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.0gchain/config/app.toml
sed -i.bak -e "s/^pruning-interval *=.*/pruning-interval = \"10\"/" $HOME/.0gchain/config/app.toml
그 다음은 위 내용
sed -i "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0ua0gi\"/" $HOME/.0gchain/config/app.toml
그 다음 내용
sed -i "s/^indexer *=.*/indexer = \"kv\"/" $HOME/.0gchain/config/config.toml
마지막 위 부분도 그대로 복사 붙여넣기 해주세요.
여기까지 되셨으면 이제
sudo tee /etc/systemd/system/ogd.service > /dev/null <<EOF
[Unit]
Description=OG Node
After=network.target
[Service]
User=$USER
Type=simple
ExecStart=$(which 0gchaind) start --home $HOME/.0gchain
Restart=on-failure
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
위 명령어 그대로 복사해서 붙여넣기!
screen -S 0gVali
그 다음 위 이름처럼 스크린을 생성해주고
sudo systemctl daemon-reload && \
sudo systemctl enable ogd && \
sudo systemctl restart ogd && sudo journalctl -u ogd -f -o cat
위 명령어를 입력해서 노드를 동기화시켜줍시다.
이렇게 뜨든 에러뜨든 어쨌든 떴다는게 중요합니다.
이제 Ctrl+C를 눌러서 종료해주시고
curl -Ls https://snapshots.liveraven.net/snapshots/testnet/zero-gravity/addrbook.json > $HOME/.0gchain/config/addrbook.json
그리고 위 명령어를 입력해주시고
PEERS=$(curl -s --max-time 3 --retry 2 --retry-connrefused "https://snapshots.liveraven.net/snapshots/testnet/zero-gravity/peers.txt")
if [ -z "$PEERS" ]; then
echo "No peers were retrieved from the URL."
else
echo -e "\nPEERS: "$PEERS""
sed -i "s/^persistent_peers *=.*/persistent_peers = "$PEERS"/" "$HOME/.0gchain/config/config.toml"
echo -e "\nConfiguration file updated successfully.\n"
fi
Peer를 업데이트 해줍니다.
cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
rm -rf $HOME/.0gchain/data
curl -L http://snapshots.liveraven.net/snapshots/testnet/zero-gravity/zgtendermint_16600-1_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.0gchain
mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
sudo systemctl restart ogd && sudo journalctl -u ogd -f -o cat
그래서 새로운 버전으로 다운받아줍니다. 최신버전으로 업데이트해준다고 보시면 됩니다.
☞그래서 에러떠도 상관없다고 한 것!!
여기까지 완료되셨으면 이제
0gchaind status | jq .sync_info
위 명령어 입력해서 현재 상태 확인해줍시다.
5분정도 조금만 기다려주면 false로 바뀝니다.
바뀐게 확인되었으면 이제 지갑을 등록하러 갑시다.
만약 동기화 중 에러가 발생한다면
rm -rf .evmosd 0g-evmos
스크린을 빠져나와(Ctrl+A+D) 위 명령어를 입력한 후
2. 0G Validator Node 구성하기
부터 다시 진행해주시면 됩니다.
2-Sub-1. 검증인 생성하기
cmd창을 통해 새로 0G를 위해 구매했던 VPS를 다시 열어주시거나 Ctrl+A+D를 눌러서 Screen을 빠져나와 줍시다.
0gchaind keys add <key_name>
그리고 위 명령어를 입력해서 새로 지갑을 생성해주실 수 있습니다.
이렇게 나오는데 비밀번호도 입력해주시면
본인 계정의 0gchain 지갑주소와 key가 나오니 따로 저장해주시면 되구요.
만약 이미 본인이 쓰고 있는 0gchain 지갑(ex. Keplr 지갑)이 있다면
0gchaind keys add <key_name> --recover
key_name에는 아까 바꿔 입력했던 그 지갑명칭을 입력하면 됩니다.
암튼 위 명령어를 입력하면
이렇게 진짜로 덮어쓸거냐고 묻고요. y를 입력하면
이렇게 니모닉구문을 입력하라고 나옵니다.
0gchain(ex.케플러)지갑의 니모닉구문을 복사해서 붙여넣기 해주시면
이렇게 본인 케플러지갑의 0gchain주소가 나타납니다.
지갑 관리를 이전에 쓰던거로 하고 싶으시다면 이렇게 하시면 됩니다!
이제 이 지갑을 기반으로 0x로 시작하는 EVM기반의 주소를 획득해야되는데요.
0gchaind keys unsafe-export-eth-key <key_name>
key_name에는 아까 바꿔 입력했던 그 지갑명칭을 입력해주시면 됩니다.
☞근데 저는 이렇게 했는데 EVM기반 지갑주소가 안뜨길래 그냥 신규지갑 생성해서 가져왔습니다.
여기서 y를 입력해주시면
비밀번호를 입력하면 private key가 나옵니다.
이걸 이제 메타마스크에서
계정 가져오기를 눌러서
이렇게 아까 복사한 private_key(비공개키)를 붙여넣어서 가져오기를 눌러주시면 지갑주소가 나옵니다.
그럼 이렇게 지갑이 추가되고 EVM주소 확인가능합니다!
이제
위 사이트에 접속하셔서 Faucet을 받아주시면 되는데요.
가운데의 Enter your wallet address에
아까 복사한 지갑주소를 입력해서 받아주세요.
☞서버에 faucet이 몰리면 실패할 수도 있으니 나중에 다시 시도해보세요!
제대로 들어왔는지 메타마스크에서 확인하시려면
네트워크 이름: 0G Testnet
새 RPC URL: https://rpc-testnet.0g.ai
체인 ID: 9000
통화 기호: A0GI
블록 탐색기 URL: https://scan-testnet.0g.ai/
다음과 같이 RPC 네트워크를 입력해서 추가해주시면 됩니다.
0gchaind q bank balances $(0gchaind keys show $WALLET_NAME -a)
그리고 위 명령어를 입력하면 잔액이 나오는걸 확인할 수 있습니다.
2-Sub-2. Validator 등록하기
여기서부턴 동기화가 완료된 상태부터만 진행됩니다. 동기화가 완료되었는지 확인해주세요!
☞아니면 에러나요.
이제 다시 VPS에 아래와 같은 명령어를 입력해주셔야 되는데요.
0gchaind tx staking create-validator \
--amount=1000000ua0gi \
--pubkey=$(0gchaind tendermint show-validator) \
--moniker="$MONIKER" \
--chain-id=zgtendermint_16600-1 \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--details="Nodebrand_DAO" \
--min-self-delegation="1" \
--from=$WALLET_NAME \
--gas=auto \
--gas-adjustment=1.4
입력해주신 뒤
비밀번호 입력해주시고
이렇게 떴으면 y를 입력해주시고
이렇게 트랜잭션까지 떴으면 끝납니다.
그리고 제대로 등록이 됐나 확인하고 싶으시다면
0gchaind q staking validator $(0gchaind keys show $WALLET_NAME --bech val -a)
위 명령어를 입력해주시면
이렇게 등록이 언제 됐는지와 동시에 본인의 Validator 고유 주소까지 확인이 가능합니다.
그럼 Validator 노드 등록 끝!!
※Validator Node 번외편
이제 마지막으로 디스코드 접속하셔서
Testnet Validator 롤을 얻은 후
node-status 채널에서 "!val 밸리데이터 주소"를 입력하면 돌아가는 상태를 사이트를 가지 않아도 확인할 수 있습니다.
3. Storage Node 구성하기
자 이번엔 Storage Node입니다.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
위 명령어를 입력해주시구요.
이런게 뜰텐데 1을 입력하고 엔터를 눌러주세요.
그럼 이렇게 계속 진행이 됩니다.
이렇게 완료가 됐다면 Storage Node 파일을 다운받아줍시다.
git clone https://github.com/0glabs/0g-storage-node.git
위 명령어를 입력해주시구요.
cd 0g-storage-node
git submodule update --init
# Build in release mode
cargo build --release
위 명령어를 한 줄씩 순서대로 입력해주세요.
마지막 줄을 입력하면 상당히 오래걸리니까 한 3~40분정도 천천히 볼일 보시고 와주세요.
최종적으로 이렇게 뜨면 끝입니다.
자 이제
ls
입력해서
동그라미친 run이라는 폴더가 있는지 확인되면 되구요.
cd ~/0g-storage-node/run
을 입력해주셔서 run 폴더로 이동해주세요.
그리고
echo -n "원하는 노드명" | sha256sum
위 명령어를 입력해주시면 되고, "원하는 노드명"에는 원하시는 이름을 적어주시면 됩니다.
위 명령어를 입력해서 나온 문자열(- 제외)를 복사해서 잠시 메모장에 저장해주신 다음
nano config.toml
위 명령어를 입력해주세요.
그럼 이렇게 나오는데
위에 보이는 miner_id와 miner_key를 각각 입력해주시면 되는데
- miner_id에는 아까 메모장에 복사해뒀던 sha256sum을 입력하시고
- miner_key에는 노드 돌리는 지갑의 프라이빗 주소를 입력해주시면 됩니다.(앞에 0x안붙여도 됩니다.)
☞해당 지갑은 가급적이면 새로 만든 지갑을 이용해주시는게 좋습니다.
입력이 완료되었다면 Ctrl+X, Y, 엔터를 눌러서 저장해주세요.
screen -S 0gStorage
이제 스토리지노드용 스크린 하나 생성해주시구요.
../target/release/zgs_node --config config.toml
위 명령어를 그대로 입력해주세요.
그럼 이렇게 아무런 반응이 없는데 정상이구요. Ctrl+A+D를 눌러서 빠져나와 줍시다.
이제 로그가 제대로 생성되는지 확인만 해주시면 되는데
cd log
위 명령어를 입력해주시고
ls
입력해주세요.
그럼 저렇게 보이는 파일이 하나 있는데요.
tail -f 50 z입력 후 탭
위 명령어대로 입력하시면(z입력 후 탭을 입력하면 파일명이 자동완성됩니다)
이렇게 나오는데 그 뒤 Ctrl+Z로 빠져나오고 1분뒤에 다시 입력했을 때
동그라미친 부분이 시간인데 이게 바뀌었으면 성공입니다.
여기까지가 스토리지 노드 구동하기였습니다!
여기가지가 0G Labs의 노드 작업방법이었습니다!
상당히 간단하지만 꽤나 높은 하잎도 있는 녀석이기 때문에 Faucet도 꾸준히 받아두시면 좋을 것 같습니다
아무튼 작업하다 막히거나 모르시는 부분이 발생한다면 댓글이나 텔레그램을 통해 질문주시면 알려드릴게요!
소식과 내용을 빠르고 다양하게 접하고 싶으시다면 아래 그림(텔레그램)을 클릭해주세요!!
'크립토 에어드랍 작업 > 노드 운용하기' 카테고리의 다른 글
MASA Bittensor 테스트넷 돌려서 보상받아보기!(Validator 등록하기) (0) | 2024.07.21 |
---|---|
(긴급!) 휴리스트 업데이트하기!! (해야만 채굴가능!) (0) | 2024.05.14 |
Vast.ai를 활용한 GPU서버 임대하는 방법!! Feat.AI Node (22) | 2024.04.02 |
휴리스트(Heurist) AI Incentivized Testnet(인센티브 테스트넷) 작업 시작! (29) | 2024.04.01 |
바이낸스가 투자한 Nimble, 노드 돌려보기! Feat. Vast.ai (4) | 2024.03.28 |