Blockchain/Testnet

Masa Finance 테스트넷 노드 설치

lowsec 2022. 7. 2. 00:10

Intro

Coinlist 시드 프로젝트에서 선정되었던 Masa Finance는 런칭 전 테스트넷을 운영하고 있습니다. 테스트넷 노드를 설치하면 $CORN 토큰으로 인센티브 보상을 해주는데요. Testnet 2.0의 Phase 1은 종료되었고(노드 운영을 잘하면 Masa에서 토큰 보상 안내 메일을 줍니다.) 이제 Phase 2 신청을 받고 있으니 같이 노드 설치 후 등록해보세요.

레퍼런스: GitHub - masa-finance/masa-node-v1.0

설치 환경

Ubuntu 20.04.4 LTS
go1.17.5 linux/amd64

Prerequites

# 패키지 업데이트 확인
sudo apt-get update && sudo apt-get upgrade -y

# 필요 소프트웨어 설치
sudo apt install apt-transport-https net-tools git mc sysstat atop curl tar wget clang pkg-config libssl-dev jq build-essential make ncdu -y

# go 설치
export ver="1.17.5"
cd ~
wget --inet4-only "<https://golang.org/dl/go$ver.linux-amd64.tar.gz>"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.profile
source ~/.profile

build

# 소스코드 빌드
cd ~
git clone <https://github.com/masa-finance/masa-node-v1.0>
cd masa-node-v1.0/src
make all
exit

# 바이너리 복사
sudo cp /home/$USER/masa-node-v1.0/src/build/bin/* /usr/local/bin

masa-node 초기화

cd $HOME/masa-node-v1.0
geth --datadir data init ./network/testnet/genesis.json

# 환경변수 설정 (사용자가 원하는 이름으로 지정)
export NODE_NAME="bhlee"

# 설정 확인
export | grep NODE_NAME
declare -x NODE_NAME="bhlee"

데몬 등록

sudo tee /etc/systemd/system/masad.service > /dev/null <<EOF

[Unit]
Description=MASA
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=/usr/local/bin/geth \\\\
--identity ${NODE_NAME} \\\\
--datadir /home/$USER/masa-node-v1.0/data \\\\
--bootnodes enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@54.146.254.245:21000,enode://91a3c3d5e76b0acf05d9abddee959f1bcbc7c91537d2629288a9edd7a3df90acaa46ffba0e0e5d49a20598e0960ac458d76eb8fa92a1d64938c0a3a3d60f8be4@54.158.188.182:21000,enode://d87c03855093a39dced2af54d39b827e4e841fd0ca98673b2e94681d9d52d2f1b6a6d42754da86fa8f53d8105896fda44f3012be0ceb6342e114b0f01456924c@34.225.220.240:21000,enode://fcb5a1a8d65eb167cd3030ca9ae35aa8e290b9add3eb46481d0fbd1eb10065aeea40059f48314c88816aab2af9303e193becc511b1035c9fd8dbe97d21f913b9@52.1.125.71:21000 \\\\
--emitcheckpoints \\\\
--istanbul.blockperiod 10 \\\\
--mine \\\\
--miner.threads 1 \\\\
--syncmode full \\\\
--verbosity 5 \\\\
--networkid 190260 \\\\
--rpc \\\\
--rpccorsdomain "*" \\\\
--rpcvhosts "*" \\\\
--rpcaddr 127.0.0.1 \\\\
--rpcport 8545 \\\\
--rpcapi admin,db,eth,debug,miner,net,shh,txpool,personal,web3,quorum,istanbul \\\\
--port 30300
Restart=on-failure
RestartSec=10
LimitNOFILE=4096
Environment="PRIVATE_CONFIG=ignore"
[Install]
WantedBy=multi-user.target
EOF

노드 추가

# 노드 추가 스크립트 실행
. <(wget -qO- <https://raw.githubusercontent.com/usrbad/masa-node-v1.0/main/addbootnode.sh>)

1) input your node name

2) input enode://136ae18de4e57e15e7dc70b03d59db11e77ae45de8ba89a243734b911b94477a3fa515d8a494c1ea79b97e134a17f04db9ff4e90e09e1c2bdba3e9aa061bf6ae@185.167.120.159:30300 or any other bootnode

데몬 실행

sudo systemctl daemon-reload
sudo systemctl enable masad
sudo systemctl restart masad

# 데몬 상태 확인
sudo systemctl status masad
# 정상이라면 Active: active 라고 표시됨
● masad.service - MASA
     Loaded: loaded (/etc/systemd/system/masad.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-06-20 23:43:18 KST; 1 weeks 4 days ago
   Main PID: 683 (geth)
      Tasks: 11 (limit: 9458)
     Memory: 726.7M
     CGroup: /system.slice/masad.service
             └─683 /usr/local/bin/geth --identity bhlee --datadir /home/bhlee/masa-node-v1.0/data --bootnodes enode:>


# 데몬 중지
sudo systemctl stop masad

# 로그 확인
sudo journalctl -f -u masad

데몬 접속

geth attach ipc:/home/$USER/masa-node-v1.0/data/geth.ipc

geth 명령어

# 네트워크 연결 여부 확인
net.listening

# 연결된 피어 수 
net.peerCount

# 동기화 상태 확인
# 노드의 상태를 확인하기 위해 difficulty 변수값을 확인 -> 0보다 크고 블록 수에 가까워야 함
eth.syncing

# 노드 정보 확인
admin.nodeInfo
{
  enode: "enode://aaf136ec1d53d0980294c838deb4492414e220f0cc60bb62b54bdb6eade1d314afbcbd7257d88e73135e63c07413e8fb538f64e047bea9e9b8ae394d84fc345d@49.161.210.223:30300",
  enr: "enr:-J24QM_--DPVllzb6ZB77FCUoiIH_PVwmmjLCKkxfgczT1HhOg8pDThVtBlX3gpr_zP0wbgACDRDcLt7TkBk-M8eNTwMg2V0aMfGhHxO0qmAgmlkgnY0gmlwhDGh0t-Jc2VjcDI1NmsxoQOq8TbsHVPQmAKUyDjetEkkFOIg8Mxgu2K1S9tureHTFIRzbmFwwIN0Y3CCdlyDdWRwgnZc",
  id: "ea8ea8eaf70e426d0d12f371b92377d7d12edd33f2bc8e7bae42b523971cf4f2",
  ip: "49.161.210.223",
  listenAddr: "[::]:30300",
  name: "Geth/bhlee/v1.10.0-stable(quorum-v22.1.0)/linux-amd64/go1.17.5",
  plugins: {},
  ports: {
    discovery: 30300,
    listener: 30300
  },
  protocols: {
    eth: {
      config: {
        byzantiumBlock: 0,
        chainId: 190260,
        constantinopleBlock: 0,
        eip150Block: 0,
        eip150Hash: "0x0000000000000000000000000000000000000000000000000000000000000000",
        eip155Block: 0,
        eip158Block: 0,
        homesteadBlock: 0,
        isMPS: false,
        isQuorum: true,
        istanbul: {...},
        istanbulBlock: 0,
        maxCodeSize: 64,
        maxCodeSizeConfig: [...],
        petersburgBlock: 0,
        privacyPrecompileBlock: 0,
        qip714Block: 50,
        txnSizeLimit: 64
      },
      difficulty: 1,
      genesis: "0x64e6bbbf3eeb9b6d8295172b985c79f372b65e8f0c19b08d601cd59605287eaa",
      head: "0x64e6bbbf3eeb9b6d8295172b985c79f372b65e8f0c19b08d601cd59605287eaa",
      network: 190260
    },
    istanbul: {
      config: {
        byzantiumBlock: 0,
        chainId: 190260,
        constantinopleBlock: 0,
        eip150Block: 0,
        eip150Hash: "0x0000000000000000000000000000000000000000000000000000000000000000",
        eip155Block: 0,
        eip158Block: 0,
        homesteadBlock: 0,
        isMPS: false,
        isQuorum: true,
        istanbul: {...},
        istanbulBlock: 0,
        maxCodeSize: 64,
        maxCodeSizeConfig: [...],
        petersburgBlock: 0,
        privacyPrecompileBlock: 0,
        qip714Block: 50,
        txnSizeLimit: 64
      },
      consensus: "istanbul",
      difficulty: 1,
      genesis: "0x64e6bbbf3eeb9b6d8295172b985c79f372b65e8f0c19b08d601cd59605287eaa",
      head: "0x64e6bbbf3eeb9b6d8295172b985c79f372b65e8f0c19b08d601cd59605287eaa",
      network: 190260
    },
    snap: {}
  }
}
# enode만 확인
admin.nodeInfo.enode
enode://aaf136ec1d53d0980294c838deb4492414e220f0cc60bb62b54bdb6eade1d314afbcbd7257d88e73135e63c07413e8fb538f64e047bea9e9b8ae394d84fc345d@49.161.210.223:30300

# 노드 추가
# net.peerCount 결과가 0으로 나올 경우 노드를 수동으로 추가할 것
admin.addPeer("enode://dbd0cf5e9630e2b1fa08b208d9fd4959027a73c65fe40822dd1cf4fb07158328a82e8fd107107b5f109b59337e0d0f8533d07ac3b70bd2e12c02ced6844a97e1@127.0.0.1:21000")
admin.addPeer("enode://bafa353e8e8c7d11fa659bbf9fc168319e572f6d338874e214d25bfef82b2c0779bae338fcc8d6ca98a37f019176f5c02deaa13c1a5481c9600b6200f0370c36@127.0.0.1:21000")
admin.addPeer("enode://34ec7b2427494928b53e9f1a9bc8fbc62ebbafc1a465a888514569d8c022c8a6f4724c32991a11abd81bb9bf8573131ebf86c023da680389ddccd26b292746ca@127.0.0.1:21000")

Testnet 2.0 Phase 2: Validator Node 등록 페이지

https://docs.google.com/forms/d/1G9mvhzzerEs_FArQVY78SO95dYVD7qZJ7mP0ZoquH0w/viewform?_hsmi=217486363&_hsenc=p2ANqtz--ZoSETbbQtF-dREfYj8CQCn4H1S3HQ-UopBSaLdP6zl5KlOyoMFV2c1hhm0fVef_bbPsuuUL5CDL_pNQ6U4Pzqy_5vaw&edit_requested=true