Install Guide
Block Producer Node
Build
WEMIX3.0은 이더리움을 기반으로 구현되어 빌드 방법은 go-ethereum과 동일하며 다만 geth가 gwemix로 변경되었습니다. BP의 설치방법은 EN의 설치와 동일하며 동일한 binary를 사용합니다. 따라서 동일한 절차로 build까지 진행됩니다.
첫번째, 개발자는 리눅스 머신에서 아래의 명령어를 실행하여 go-wemix 소스코드를 다운로드 받습니다.
git clone https://github.com/wemixarchive/go-wemix.git이후 해당 go-wemix 디렉토리로 이동하여 아래의 명령을 실행하면 gwemix의 빌드가 시작됩니다. USE_ROCKSDB option에 따라 Rocksdb 혹은 Leveldb로 빌드됩니다. 두 데이터베이스는 호환성이 없으니 다른 머신에서 받아놓은 chaindata를 이용할 때는 db버전을 꼭 확인해야 합니다.
본 장은 Ubuntu환경을 기준으로 설명되어있습니다. Ubuntu환경에서 직접 소스코드로부터 gwemix를 빌드하기 위해서는 다음의 과정을 따라서 진행해야 합니다.
Dependency
sudo apt-get update
sudo apt-get install -y build-essential golangRocksdb only
sudo apt-get install -y libsnappy-dev libjemalloc-dev
cd /usr/lib/x86_64-linux-gnu/
sudo ln -sf libjemalloc.so.2 libjemalloc.so.1xxDownload source code
git clone https://github.com/wemixarchive/go-wemix.git
cd go-wemixIn case of rocksdb
makeIn case of leveldb
make USE_ROCKSDB=NOCopy and untar "build" to $GWEMIX_HOME
GWEMIX_HOME='/opt/gwemix'
sudo mkdir -p $GWEMIX_HOME
sudo chown $USER:$USER $GWEMIX_HOME
cp build/gwemix.tar.gz $GWEMIX_HOME/
cd $GWEMIX_HOME
tar xvzf gwemix.tar.gzCreate .rc at $GWEMIX _HOME with the following info
PORT=8588
DISCOVER=1 # 1 for enable discovery mode, 0 for disable discovery mode
TESTNET=1 # 1 for Testnet or remove this line for Mainnet
SYNC_MODE=full
GWEMIX_OPTS="--txpool.nolocals --snapshot=false --maxpeers=100"Start gwemix
$GWEMIX_HOME/bin/gwemix.sh startCheck log
tail -F $GWEMIX_HOME/logs/logDependency
sudo apt-get update
sudo apt-get install -y build-essential Rocksdb only
sudo apt-get install -y libsnappy-dev libjemalloc-dev
cd /usr/lib/x86_64-linux-gnu/
sudo ln -sf libjemalloc.so.2 libjemalloc.so.1xxInstall go version 1.18.4
wget https://go.dev/dl/go1.18.4.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.18.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
source $HOME/.profile Download source code
git clone https://github.com/wemixarchive/go-wemix.git
cd go-wemixIn case of rocksdb
makeIn case of leveldb
make USE_ROCKSDB=NOCopy and untar "build" to $GWEMIX_HOME
GWEMIX_HOME='/opt/gwemix'
sudo mkdir -p $GWEMIX_HOME
sudo chown $USER:$USER $GWEMIX_HOME
cp build/gwemix.tar.gz $GWEMIX_HOME/
cd $GWEMIX_HOME
tar xvzf gwemix.tar.gzCreate .rc at $GWEMIX_HOME with the following info
PORT=8588
DISCOVER=1 # 1 for enable discovery mode, 0 for disable discovery mode
TESTNET=1 # 1 for Testnet or remove this line for Mainnet
SYNC_MODE=full
GWEMIX_OPTS="--txpool.nolocals --snapshot=false --maxpeers=100"Start gwemix
$GWEMIX_HOME/bin/gwemix.sh startCheck log
tail -F $GWEMIX_HOME/logs/log위와 같이 make를 실행하는 경우, 설치 편의를 위해 logrot와 gwemix.tar.gz가 한번에 빌드되어 build 디렉터리에 압축파일로 저장됩니다. 생성된 gwemix.tar.gz에는 다음과 같은 파일들이 포함됩니다.
bin/gwemix ## gwemix binary
bin/gwemix.sh ## gwemix control shell script
bin/logrot ## log rotatorDocker 이미지를 이용한 Build
WEMIX3.0은 라이브러리 의존성이 문제가 되는 경우를 해결하기 위하여 docker 이미지를 사용할 수 있습니다. Linux혹은 MacOS X에서 빌드하는 경우 다음 과정을 통하여 빌드할 수 있습니다.
make USE_ROCKSDB=YES gwemix-linuxmake USE_ROCKSDB=NO gwemix-linuxDocker를 통해서 빌드된 gwemix.tar.gz 바이너리를 Ubuntu환경으로 복사하여 설치하려면 다음의 과정을 따라야 합니다.
Rocksdb only
sudo apt-get install -y libsnappy-dev libjemalloc-dev
cd /usr/lib/x86_64-linux-gnu/
sudo ln -sf libjemalloc.so.2 libjemalloc.so.1Copy and untar "build" to $GWEMIX_HOME
GWEMIX_HOME='/opt/gwemix'
sudo mkdir -p $GWEMIX_HOME
sudo chown $USER:$USER $GWEMIX_HOME
cp build/gwemix.tar.gz $GWEMIX_HOME/
cd $GWEMIX_HOME
tar xvzf gwemix.tar.gzCreate .rc at $GWEMIX_HOME
PORT=8588
DISCOVER=1 # 1 for enable discovery mode, 0 for disable discovery mode
TESTNET=1 # 1 for Testnet or remove this line for Mainnet
SYNC_MODE=full
GWEMIX_OPTS="--txpool.nolocals --snapshot=false --maxpeers=100"Start gwemix
$GWEMIX_HOME/bin/gwemix.sh startCheck log
tail -F $GWEMIX_HOME/logs/logRocksdb only
sudo apt-get isntall libjemalloc1Copy and untar "build" to $GWEMIX_HOME
GWEMIX_HOME='/opt/gwemix'
sudo mkdir -p $GWEMIX_HOME
sudo chown $USER:$USER $GWEMIX_HOME
cp build/gwemix.tar.gz $GWEMIX_HOME/
cd $GWEMIX_HOME
tar xvzf gwemix.tar.gzCreate .rc at $GWEMIX_HOME
PORT=8588
DISCOVER=1 # 1 for enable discovery mode, 0 for disable discovery mode
TESTNET=1 # 1 for Testnet or remove this line for Mainnet
SYNC_MODE=full
GWEMIX_OPTS="--txpool.nolocals --snapshot=false --maxpeers=100"Start gwemix
$GWEMIX_HOME/bin/gwemix.sh startCheck log
tail -F $GWEMIX_HOME/logs/logLast updated