> For the complete documentation index, see [llms.txt](https://docs.bosagora.org/kr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bosagora.org/kr/validator-start/running-an-agora-node-and-validator/agora-mainnet.md).

# Agora Mainnet

## 도커엔진 설치

아고라 노드를 실행하기 위해서는 도커엔진을 먼저 설치하고 실행 하고 있어야 합니다. \
도크엔진의 설치방법은 [이 곳](https://docs.docker.com/engine/install/)을 참조해 주세요.\
<https://docs.docker.com/engine/install/>

## 리눅스 및 맥 사용자용

### Mainnet 설치 (리눅스 및 맥 사용자용)

자세한 내용은 [이 곳](https://github.com/bosagora/agora-chain/blob/v0.x.x/README-kr.md#%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%B0%8F-%EB%A7%A5-%EC%82%AC%EC%9A%A9%EC%9E%90%EC%9A%A9)을 참조해주세요.

* 설치

  ```
  mkdir agora-chain
  cd agora-chain
  /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/bosagora/agora-chain/v0.x.x/agora.sh)"
  ```

  설치후에는 반드시 네트워크를 선택하여야 합니다. 네트워크를 선택하지 않으면 기본값이 메인넷이 적용됩니다.
* 메인 네트워크로 전환하기 (기본값)

  ```
  ./agora.sh network mainnet
  ```
* 스크립트 agora.sh 에서 사용가능한 명령어들

  ```
  ./agora.sh 
  agora.sh version 2.0.0
  Usage: ./agora.sh PROCESS FLAGS.
  PROCESS can be el-node, cl-node, validator, docker-compose, docker-compose-monitoring, start, stop, upgrade

  ./agora.sh network <network to change>
         - <network to change> 는 mainnet, testnet, devnet 중 하나이며 기본값은 mainnet 입니다.
         - <network to change> 를 지정하지 않으면 현재 설정된 네트워크가 표시됩니다.

  ./agora.sh el-node ( init, run )
      el-node init
         - 실행계층의 블록데이타를 초기화합니다. 이 시점에서 기존의 모든 블록 데이터가 삭제됩니다.
      el-node run
         - 실행계층의 클라이언트를 실행합니다.

  ./agora.sh cl-node ( run )
      cl-node run
         - 합의계층의 클라이언트를 실행합니다.

  ./agora.sh validator ( accounts, exit, withdraw, slashing-protection-history )

  ./agora.sh validator accounts ( import, list, backup )
      validator accounts import <validator keys folder>
         - 로컬 월렛에 검증자키를 추가합니다.
      validator accounts list
         - 로컬 월렛에 저장된 검증자키를 보여줍니다.
      validator accounts delete
         - 로컬 월렛에서 선택한 검증자키를 제거합니다.
      validator accounts backup <validator keys folder>
         - 로컬 월렛에 저장된 검증자키를 백업합니다.

      validator exit
         - 검증자 기능을 자발적으로 종료하는 데 사용됩니다. 이렇게 하면 검증자의 키를 선택하는 화면이 나타납니다.
      validator withdraw <data folder>
         - 미리 생성된 인출 주소 등록 데이터를 네트워크로 전송합니다.
         - 현재 devnet만 지원됩니다. 다른 네트워크는 나중에 지원됩니다.

  ./agora.sh validator slashing-protection-history ( export, import ) 
      validator slashing-protection-history export <data folder>
         - 검증자가 작업한 정보를 파일로 저장합니다. 이 시점에서 현재 서버의 유효성 검사기를 중지해야 합니다.
         - 검증자 한 명은 블록당 한 번만 검증해야 합니다. 그렇지 않으면 검사기가 슬래싱될 수 있습니다.
             - 하나의 검증자가 여러 서버에서 실행되는 경우, 해당 검증자는 위의 조건을 위반할 수 있습니다.
             - 검증자의 서버가 다른 서버로 변경되면 검증자가 위의 조건을 위반할 수 있습니다.
             - 이를 방지하려면 검증자가 지금까지 수행한 블록 확인 정보를 옮겨가야 합니다. 
             - 이 때 필요한 기능이 이 명령어입니다.
      validator slashing-protection-history import <data folder>
         - 검증자가 수행한 블록 검증 정보를 등록합니다.

  ./agora.sh deposit-cli ( new-mnemonic, existing-mnemonic, generate-bls-to-execution-change )
      deposit-cli new-mnemonic
         - 새로운 니모닉과 함께 검증자키를 생성하기를 원할 때 사용되는 명령어입니다.
      deposit-cli existing-mnemonic
         - 이미 가지고 있는 니모닉을 이용해서 새로운 검증자키를 생성하기를 원할 때 사용되는 명령어입니다.
      deposit-cli generate-bls-to-execution-change <data folder>
         - 검증자의 금액이 인출될 주소를 등록하는 데 필요한 데이터를 생성합니다.
         - 현재 devnet만 지원됩니다. 다른 네트워크는 나중에 지원됩니다.

  ./agora.sh docker-compose ( up, down )
      docker-compose up
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자를 실행합니다.
      docker-compose down
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자를 중지합니다.

  ./agora.sh docker-compose-monitoring ( up, down )
      docker-compose-monitoring up
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자 와 모니터링에 필요한 컨테이너들를 실행합니다.
      docker-compose-monitoring down
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자 와 모니터링에 필요한 컨테이너들를 중지합니다.

  ./agora.sh start
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자 와 모니터링에 필요한 컨테이너들를 실행합니다.
         - 이것은 './agora.sh docker-compose-monitoring up' 와 동일합니다.

  ./agora.sh stop
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자 와 모니터링에 필요한 컨테이너들를 중지합니다.
         - 이것은  './agora.sh docker-compose-monitoring down' 와 동일합니다.

  ./agora.sh upgrade
         - 가장 최신의 버전이 설치됩니다. 이때 데이타는 보존됩니다.
  ```

#### 업그레이드 (리눅스 및 맥 사용자용)

```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/bosagora/agora-chain/v0.x.x/upgrade.sh)"
```

#### 실행 계층 (리눅스 및 맥 사용자용)

* 실행 계층의 블록데이타를 초기화

  ```
  ./agora.sh el-node init
  ```
* 실행 계층의 클라이언트 실행

  ```
  ./agora.sh el-node run
  ```

#### 합의 계층 (리눅스 및 맥 사용자용)

* 합의 계층의 클라이언트 실행

  ```
  ./agora.sh cl-node run
  ```

#### 검증자의 계정 (리눅스 및 맥 사용자용)

* 니모닉을 가지고 있지 않을 때 검증자키를 생성하기

  ```
  ./agora.sh deposit-cli new-mnemonic
  ```
* 니모닉을 가지고 있을 때 검증자키를 생성하기

  ```
  ./agora.sh deposit-cli existing-mnemonic
  ```
* 검증자 키를 월렛에 추가하기

  ```
  ./agora.sh validator import <your key stores folder>
  ```

  또는

  ```
  ./agora.sh validator accounts import <your key stores folder>
  ```

  `<your key stores folder>` 는 검증자키가 존재하는 폴더입니다. 입력하지 않으면 기본 폴더 `./validator_keys` 로 처리됩니다.
* 로컬 월렛에 저장된 검증자 계정 출력하기

  ```
  ./agora.sh validator accounts list
  ```
* 로컬 월렛에 저장된 검증자 계정을 파일로 백업하기

  ```
  ./agora.sh validator accounts backup <folder>
  ```

  `<folder>` 는 백업데이타를 저장할 폴더명입니다. 입력하지 않으면 `./backup-wallet` 로 처리됩니다.

#### 검증자 실행 (리눅스 및 맥 사용자용)

* 검증자 클라이언트 실행하기

  ```
  ./agora.sh validator run
  ```

#### 검증자의 역활 수행을 종료 (리눅스 및 맥 사용자용)

* 검증자의 역활 수행을 자발적으로 종료하기

  ```
  ./agora.sh validator exit
  ```

#### 검증자의 리워드와 예치금을 인출 (리눅스 및 맥 사용자용)

* 인출이 가능하도록 하기 위해 출금주소가 포함된 서명된 데이타를 생성하기

  ```
  ./agora.sh deposit-cli generate-bls-to-execution-change <folder>
  ```

  `<folder>` 는 서명된 데이타가 저장된 폴더입니다. 입력하지 않으면 `./bls_to_execution_changes` 로 처리됩니다.
* 출금주소가 포함된 서명된 데이타를 네트워크로 전송하기

  ```
  ./agora.sh validator withdraw <folder>
  ```

  `<folder>` 는 서명된 데이타가 저장된 폴더입니다. 입력하지 않으면 `./bls_to_execution_changes` 로 처리됩니다.

#### 슬래싱 방지 (리눅스 및 맥 사용자용)

검증자 한 명은 블록당 한 번만 검증해야 합니다. 그렇지 않으면 검사기가 슬래싱될 수 있습니다.\
하나의 검증자가 여러 서버에서 실행되는 경우, 해당 검증자는 위의 조건을 위반할 수 있습니다.\
검증자의 서버가 다른 서버로 변경되면 검증자가 위의 조건을 위반할 수 있습니다. 이를 방지하려면 검증자가 지금까지 수행한 블록 확인 정보를 옮겨가야 합니다. 이 때 필요한 기능이 이 명령어입니다.

* export

  ```
  ./agora.sh validator slashing-protection-history export <folder>
  ```

  `<folder>` 는 슬래싱 방지를 위한 데이타가 저장될 폴더입니다. 입력하지 않으면 `./slashing-protection-export` 로 처리됩니다.
* import

  ```
  ./agora.sh validator slashing-protection-history import <folder>
  ```

  `<folder>` 는 슬래싱 방지를 위한 데이타가 저장된 폴더입니다. 입력하지 않으면 `./slashing-protection-export` 로 처리됩니다.

#### 도커-컴포우즈-사용 (리눅스 및 맥 사용자용)

1. 실행 계층의 블록데이타를 초기화하기

```
./agora.sh el-node init
```

2. 검증자 키를 임포트하기

```
./agora.sh validator accounts import <your key stores folder>
```

`<your key stores folder>` 는 검증자키가 존재하는 폴더입니다. 입력하지 않으면 `./validator_keys` 로 처리됩니다.

3. 프로세스 자동실행을 위해 월렛의 비밀번호를 기록하기

```
nano ./root/config/cl/password.txt
```

4. 트랜잭션 수수료를 받을 주소를 등록하기

```
nano ./root/config/cl/proposer_config.json
```

5. 도커 컴포우즈를 실행하기

```
./agora.sh docker-compose up
```

6. 도커 컴포우즈를 종료하기

```
./agora.sh docker-compose down
```

#### 모니터링을 위한 도커 컴포우즈 사용 (리눅스 및 맥 사용자용)

1. 실행 계층의 블록데이타를 초기화하기

```
./agora.sh el-node init
```

2. 검증자 키를 임포트하기

```
./agora.sh validator import <your key stores folder>
```

또는

```
./agora.sh validator accounts import <your key stores folder>
```

3. 프로세스 자동실행을 위해 월렛의 비밀번호를 기록하기

```
nano ./root/config/cl/password.txt
```

4. 트랜잭션 수수료를 받을 주소를 등록하기

```
nano ./root/config/cl/proposer_config.json
```

5. 도커 컴포우즈를 실행

```
./agora.sh docker-compose-monitoring up
```

또는

```
./agora.sh start
```

6. 도커 컴포우즈를 종료

```
./agora.sh docker-compose-monitoring down
```

또는

```
./agora.sh stop
```

## 윈도우즈 사용자용

### 설치 (윈도우즈 사용자용)

* 설치

  ```
  mkdir agora-chain
  cd agora-chain
  curl -S -L -o agora.bat https://raw.githubusercontent.com/bosagora/agora-chain/v0.x.x/agora.bat
  call agora.bat
  ```

  설치후에는 반드시 네트워크를 선택하여야 합니다. 네트워크를 선택하지 않으면 기본값이 메인넷이 적용됩니다.
* 메인 네트워크로 전환하기 (기본값)

  ```
  agora.bat network mainnet
  ```
* 스크립트 agora.sh 에서 사용가능한 명령어들

  ```
  agora.bat
  agora.bat version 2.0.0
  Usage: agora.bat PROCESS FLAGS.
  PROCESS can be el-node, cl-node, validator, docker-compose, docker-compose-monitoring, start, stop, upgrade

  agora.bat network <network to change>
         - <network to change> 는 mainnet, testnet, devnet 중 하나이며 기본값은 mainnet 입니다.
         - <network to change> 를 지정하지 않으면 현재 설정된 네트워크가 표시됩니다.

  agora.bat el-node ( init, run )
      el-node init
         - 실행계층의 블록데이타를 초기화합니다. 이 시점에서 기존의 모든 블록 데이터가 삭제됩니다.
      el-node run
         - 실행계층의 클라이언트를 실행합니다.

  agora.bat cl-node ( run )
      cl-node run
         - 합의계층의 클라이언트를 실행합니다.

  agora.bat validator ( accounts, exit, withdraw, slashing-protection-history )

  agora.bat validator accounts ( import, list, backup )
      validator accounts import <validator keys folder>
         - 로컬 월렛에 검증자키를 추가합니다.
      validator accounts list
         - 로컬 월렛에 저장된 검증자키를 보여줍니다.
      validator accounts delete
         - 로컬 월렛에서 선택한 검증자키를 제거합니다.
      validator accounts backup <validator keys folder>
         - 로컬 월렛에 저장된 검증자키를 백업합니다.

      validator exit
         - 검증자 기능을 자발적으로 종료하는 데 사용됩니다. 이렇게 하면 검증자의 키를 선택하는 화면이 나타납니다.
      validator withdraw <data folder>
         - 미리 생성된 인출 주소 등록 데이터를 네트워크로 전송합니다.
         - 현재 devnet만 지원됩니다. 다른 네트워크는 나중에 지원됩니다.

  agora.bat validator slashing-protection-history ( export, import ) 
      validator slashing-protection-history export <data folder>
         - 검증자가 작업한 정보를 파일로 저장합니다. 이 시점에서 현재 서버의 유효성 검사기를 중지해야 합니다.
         - 검증자 한 명은 블록당 한 번만 검증해야 합니다. 그렇지 않으면 검사기가 슬래싱될 수 있습니다.
             - 하나의 검증자가 여러 서버에서 실행되는 경우, 해당 검증자는 위의 조건을 위반할 수 있습니다.
             - 검증자의 서버가 다른 서버로 변경되면 검증자가 위의 조건을 위반할 수 있습니다.
             - 이를 방지하려면 검증자가 지금까지 수행한 블록 확인 정보를 옮겨가야 합니다. 
             - 이 때 필요한 기능이 이 명령어입니다.
      validator slashing-protection-history import <data folder>
         - 검증자가 수행한 블록 검증 정보를 등록합니다.

  agora.bat deposit-cli ( new-mnemonic, existing-mnemonic, generate-bls-to-execution-change )
      deposit-cli new-mnemonic
         - 새로운 니모닉과 함께 검증자키를 생성하기를 원할 때 사용되는 명령어입니다.
      deposit-cli existing-mnemonic
         - 이미 가지고 있는 니모닉을 이용해서 새로운 검증자키를 생성하기를 원할 때 사용되는 명령어입니다.
      deposit-cli generate-bls-to-execution-change <data folder>
         - 검증자의 금액이 인출될 주소를 등록하는 데 필요한 데이터를 생성합니다.
         - 현재 devnet만 지원됩니다. 다른 네트워크는 나중에 지원됩니다.

  agora.bat docker-compose ( up, down )
      docker-compose up
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자를 실행합니다.
      docker-compose down
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자를 중지합니다.

  agora.bat docker-compose-monitoring ( up, down )
      docker-compose-monitoring up
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자 와 모니터링에 필요한 컨테이너들를 실행합니다.
      docker-compose-monitoring down
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자 와 모니터링에 필요한 컨테이너들를 중지합니다.

  agora.bat start
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자 와 모니터링에 필요한 컨테이너들를 실행합니다.
         - 이것은 './agora.sh docker-compose-monitoring up' 와 동일합니다.

  agora.bat stop
         - 실행 계층 클라이언트, 합의 계층 클라이언트, 검증자 와 모니터링에 필요한 컨테이너들를 중지합니다.
         - 이것은  './agora.sh docker-compose-monitoring down' 와 동일합니다.

  agora.bat upgrade
         - 가장 최신의 버전이 설치됩니다. 이때 데이타는 보존됩니다.
  ```

#### 업그레이드 (윈도우즈 사용자용)

```
curl -S -L -o upgrade.bat https://raw.githubusercontent.com/bosagora/agora-chain/v0.x.x/upgrade.bat
upgrade.bat
```

#### 실행 계층 (윈도우즈 사용자용)

* 실행 계층의 블록데이타를 초기화

  ```
  agora.bat el-node init
  ```
* 실행 계층의 클라이언트 실행

  ```
  agora.bat el-node run
  ```

#### 합의 계층 (윈도우즈 사용자용)

* 합의 계층의 클라이언트 실행

  ```
  agora.bat cl-node run
  ```

#### 검증자의 계정 (윈도우즈 사용자용)

* 니모닉을 가지고 있지 않을 때 검증자키를 생성하기

  ```
  agora.bat deposit-cli new-mnemonic
  ```
* 니모닉을 가지고 있을 때 검증자키를 생성하기

  ```
  agora.bat deposit-cli existing-mnemonic
  ```
* 검증자 키를 월렛에 추가하기

  ```
  agora.bat validator import <your key stores folder>
  ```

  또는

  ```
  agora.bat validator accounts import <your key stores folder>
  ```

  `<your key stores folder>` 는 검증자키가 존재하는 폴더입니다. 입력하지 않으면 `./validator_keys` 로 처리됩니다.
* 로컬 월렛에 저장된 검증자 계정 출력하기

  ```
  agora.bat validator accounts list
  ```
* 로컬 월렛에 저장된 검증자 계정을 파일로 백업하기

  ```
  agora.bat validator accounts backup <folder>
  ```

  `<folder>` 는 백업데이터를 저장할 폴더입니다. 입력하지 않으면 `./backup-wallet` 로 처리됩니다.

#### 검증자 실행 (윈도우즈 사용자용)

* 검증자 클라이언트 실행하기

  ```
  agora.bat validator run
  ```

#### 검증자의 역활 수행을 종료 (윈도우즈 사용자용)

* 검증자의 역활 수행을 자발적으로 종료하기

  ```
  agora.bat validator exit
  ```

#### 검증자의 리워드와 예치금을 인출 (윈도우즈 사용자용)

* 인출이 가능하도록 하기 위해 출금주소가 포함된 서명된 데이타를 생성하기

  ```
  agora.bat deposit-cli generate-bls-to-execution-change <folder>
  ```

  `<folder>` 는 서명된 데이타가 저장될 폴더입니다. 입력하지 않으면 `./bls_to_execution_changes` 로 처리됩니다.
* 출금주소가 포함된 서명된 데이타를 네트워크로 전송하기

  ```
  agora.bat validator withdraw <folder>
  ```

  `<folder>` 는 서명된 데이타가 저장된 폴더입니다. 입력하지 않으면 `./bls_to_execution_changes`로 처리됩니다.

#### 슬래싱 방지 (윈도우즈 사용자용)

* export

  ```
  ./agora.bat validator slashing-protection-history export <folder>
  ```

  `<folder>` 는 슬래싱 방지를 위한 데이타가 저장될 폴더입니다. 입력하지 않으면 `./slashing-protection-export` 로 처리됩니다.
* import

  ```
  ./agora.bat validator slashing-protection-history import <folder>
  ```

  `<folder>` 는 슬래싱 방지를 위한 데이타가 저장된 폴더입니다. 입력하지 않으면 `./slashing-protection-export` 로 처리됩니다.

#### 도커 컴포우즈 사용 (윈도우즈 사용자용)

1. 실행 계층의 블록데이타를 초기화하기

```
agora.bat el-node init
```

2. 검증자 키를 임포트하기

```
agora.bat validator import <your key stores folder>
```

또는

```
agora.bat validator accounts import <your key stores folder>
```

3. 프로세스 자동실행을 위해 월렛의 비밀번호를 기록하기

```
notepad ./root/config/cl/password.txt
```

4. 트랜잭션 수수료를 받을 주소를 등록하기

```
notepad ./root/config/cl/proposer_config.json
```

5. 도커 컴포우즈를 실행

```
agora.bat docker-compose up
```

6. 도커 컴포우즈를 종료

```
agora.bat docker-compose down
```

#### 모니터링을 위한 도커 컴포우즈 사용 (윈도우즈 사용자용)

1. 실행 계층의 블록데이타를 초기화하기

```
agora.bat el-node init
```

2. 검증자 키를 임포트하기

```
agora.bat validator import <your key stores folder>
```

또는

```
agora.bat validator accounts import <your key stores folder>
```

3. 프로세스 자동실행을 위해 월렛의 비밀번호를 기록하기

```
notepad ./root/config/cl/password.txt
```

4. 트랜잭션 수수료를 받을 주소를 등록하기

```
notepad ./root/config/cl/proposer_config.json
```

5. 도커 컴포우즈를 실행

```
agora.bat docker-compose-monitoring up
```

또는

```
agora.bat start
```

6. 도커 컴포우즈를 종료

```
agora.bat docker-compose-monitoring down
```

또는

```
agora.bat stop
```

## 추가 정보

[AWS에서 Ubuntu에 BOSagora 노드 설치](https://github.com/bosagora/agora-chain/blob/v0.x.x/docs/INSTALL-NODE-UBUNTU-KR.md)

[NHN 클라우드의 Ubuntu 에 BOSagora 노드 설치하기](https://github.com/bosagora/agora-chain/blob/v0.x.x/docs/INSTALL-NODE-UBUNTU-NHNCLOUD-KR.md)<br>

### Agora-cl 의 문서

Go to website <https://agora-cl-docs.bosagora.org/>

### 검증자의 상태와 리워드를 체크하기

Go to website <https://www.agorascan.io/>
