캔디데이트 세팅하기
해당 문서는 Tokamak DAO Governance의 후보자가 되기 위한 스마트 컨트랙트 배포 및 설정 방법에 대한 내용을 담고 있다.
Candidate로 등록이 되어 있어야 Tokamak DAO Governance 위원회의 멤버가 될 수 있다. 따라서, 위원회의 멤버가 되고자 한다면 해당 문서에서 안내하는 방법을 통해 Candidate 등록을 해야 한다.
Candidate가 되는 방법은 두 가지가 있다. 첫 번째 방법은 EOA를 이용한 방법이고, 두 번째 방법은 Tokamak Network의 Layer2 컨트랙트를 이용한 방법이다.
해당 가이드는 Mac OS와 Linux 16.04에서 수행되었다.
준비
소스코드 다운로드 및 패키지 설치
우선, github을 통해서 Tokamak DAO Contract를 다운로드 받고 패키치 설치를 해야 한다.
$ git clone https://github.com/Onther-Tech/tokamak-dao-contracts.git
$ cd tokamak-dao-contracts
$ git submodule update --init --recursive
$ npm install
패키지 설치가 완료되었다면 다음 단계를 진행하면 된다.
컨트랙트 컴파일 및 배포에는 truffle을 사용한다. truffle이 설치되지 않았다면 아래 명령어를 통해 설치해 준다.
$ npm install -g truffle
해당 스크립트에서 사용한 Truffle, Node.js, Web3.js의 버전은 다음과 같다.
Truffle v5.1.42 (core: 5.1.42)
Solidity - 0.5.12 (solc-js)
Node v13.8.0
Web3.js v1.2.1
이더리움 메인넷 접속 주소
Candidate가 되기위해 컨트랙트를 배포하기 위해서는 이더리움 메인넷 접속 주소가 필요하다. 여러 방법이 있지만, Infura를 통해 제공되는 노드 주소를 사용하는것이 간편하다. Infura를 통해 접속 가능한 주소를 확보한다.
만약, Infura 계정이 없다면 infura.io 회원가입을 통해 접속 주소(URL)를 얻을 수 있다.
사이트 가입이 완료된 경우, Dashboard의 "CREATE NEW PROJECT" 를 클릭하여 프로젝트를 생성한다.
그 다음, 아래와 같이 PROJECT ID가 조합된 ENDPOINTS 주소를 사용한다.
https://mainnet.infura.io/v3/[ProjectID]

예) https://mainnet.infura.io/ws/v3/07b1363d79a94e30af61da848ecfa194
만약 자신이 운영하고 있는 이더리움 노드가 있다면, 해당 노드의 접속 주소를 Infura 주소 대신 사용할 수 있다.
EOA를 이용한 Candidate 생성
배포하기 전에 Eth Gas Station을 통해 가스비를 확인하는 것이 좋다. 가스비를 확인하고 그에 맞게 truffle-config.js 에서 가스비를 조정해주면 된다.
46  mainnet: {
47    provider: () => new PrivateKeyProvider(process.env.MAINNET_PRIVATE_KEY, process.env.MAINNET_PROVIDER_URL),
48    network_id: 1, // eslint-disable-line camelcase
49    gasPrice: <adjust gas price>,
50    skipDryRun: true,
51  },
이제 이더리움 개인키와 이더리움 메인넷 접속 주소가 준비되면 Candidate를 생성할 수 있다.
tokamak-dao-contracts $ bash deploy/deploy.sh <mainnet-provider-url> <private-key> deploy-candidate <candidate-name>
<candidate-name> 은 다른 Candidate와 구분을 쉽게 하기위해 입력하는 Candidate의 이름을 의미한다.
Layer2를 이용한 Candidate 등록
Candidate를 등록하는 두 번째 방법은 기존에 배포된 Layer2 컨트랙트를 Candidate로 등록하는 것이다. 방법은 아래와 같다.
tokamak-dao-contracts $ bash deploy/deploy.sh <mainnet-provider-url> <private-key> register-layer2 <candidate-name> <layer2-contract>
Layer2를 Candidate로 등록하기 위해서는 인자로 배포된 Layer2 컨트랙트의 주소가 추가로 필요하다.
결과
모든 과정이 성공적으로 완료되면 Tokamak DAO에 접속하여 등록한 Candidate를 확인할 수 있다.
