검증자 계정 관리

시간 관련 파라미터

바이프로스트 네트워크에는 노드 운영자가 숙지해야 할 몇 가지 시간 관련 파라미터가 존재합니다. 계정 관리에 앞서 해당 파라미터들을 반드시 숙지해야 합니다.

Parameter
Value

라운드 시간

6 시간

세션 시간

15 분

부분 출금 지연

2 라운드 (Approx. 12 hours)

전체 출금 (=퇴장) 지연

2 라운드 (Approx. 12 hours)

Polkadot.js 계정 설정

검증자 노드 운영자는 노드를 운영하기 위해 스태시 (stash) 계정을 통해 자체 본딩 예치금 (self-bonds)을 예치해야 합니다. 경우에 따라 예치된 BFC가 인출되거나 추가 예치가 필요할 수 있습니다. 이러한 작업을 수행하기 위해 노드 운영자는 다음 링크를 통해 접근할 수 있는 Polkadot에서 제공하는 관리자 페이지를 활용해야 합니다.

링크에 접속하면 아래 이미지와 유사한 페이지가 나타납니다.

성공적으로 접속한 후에는 현재 검증자 노드 운영에 사용 중인 스태시 계정과 컨트롤러 계정을 해당 페이지에 등록해야 합니다. 먼저 페이지 중앙 근처에 있는 "계정 추가 (Add account)" 버튼을 클릭합니다.

만약 "계정 추가 (Add account)" 버튼이 나타나지 않거나 비활성화 되어 있다면, "설정 (Settings)" 탭에 접속하여 "브라우저 내 계정 생성 (in-browser account creation)" 옵션을 "로컬 브라우저 내 계정 저장 허용 (Allow local in-browser account storage)"으로 설정합니다. 이 옵션을 통해 계정을 로컬 웹 브라우저에 저장할 수 있게 됩니다.

버튼을 클릭하여 다음 페이지로 이동합니다. 그런 다음, 입력창에 계정의 비밀 키 또는 니모닉 시드 (mnemonic seed)를 입력하고, 하단의 체크박스를 선택한 후 "다음 (Next)" 버튼을 클릭하여 계속 진행합니다.

다음 페이지에서는 등록하려는 계정의 이름과 비밀번호를 입력해야 합니다. 계정 이름은 시스템에 아무런 영향을 주지 않고 로컬 환경에서만 보이므로, 쉽게 알아볼 수 있는 이름으로 설정합니다. 또한, Polkadot.js 앱 페이지를 통해 트랜잭션을 전송하기 전 인증을 위해 비밀번호를 한 번 입력해야 하므로, 안전하게 비밀번호를 보관해야 합니다. 모든 정보를 입력한 후 "다음" 버튼을 클릭하여 다음 단계로 진행합니다.

다음 페이지에서 등록하려는 계정의 백업 파일을 생성할 수 있습니다. 이 백업 파일은 JSON 형식이며, 계정 페이지 중앙에 있는 "JSON 복원" 버튼을 클릭하여 필요할 때 계정을 복원할 수 있습니다. "다음" 버튼을 클릭하면 창이 닫히고 백업 파일이 다운로드됩니다. 모든 과정이 완료되면 등록된 계정이 "계정" 목록에 추가된 것을 확인할 수 있습니다.

위에 명시된 모든 프로세스는 스태시 계정과 컨트롤러 계정 각각에 대해 한 번씩 수행되어야 합니다.

자체 본딩 (self-bonding) 관리

검증자 노드 운영자는 자신의 자체 본딩을 접근하고 관리할 수 있습니다. 이는 사용 중인 스태시 및 컨트롤러 계정을 완전히 소유하고 있다면, 추가 예치 또는 출금을 할 수 있습니다.

추가 예치

추가 예치를 진행하려면 스태시 계정이 polkadot.js 앱 페이지에 미리 등록되어 있어야 하며, 해당 계정은 추가로 예치하려는 BFC를 충분히 보유하고 있어야 합니다.

먼저 상단의 "개발자 (Developer)" 탭을 클릭하고 "익스트린식 (Extrinsic)" 페이지에 접근합니다.

링크로 이동하면 다음 페이지가 나타납니다. 다음 단계를 순서대로 진행합니다.

  1. 자신의 스태시 계정을 선택합니다.

  2. "bfcStaking" 팔렛 (pallet)을 선택합니다.

  3. "candidateBondMore" 익스트린식 (extrinsic)을 선택합니다.

  4. 예치하고자 하는 BFC 금액을 Wei 단위로 입력합니다. 100 BFC를 예치하려면 100 뒤에 18개의 0을 추가해야 합니다.

  5. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭합니다.

계정 비밀번호를 입력하고 하단의 "서명 및 제출 (Sign and Submit)" 버튼을 클릭하면 트랜잭션이 전송되고 추가 예치 결과가 즉시 반영됩니다.

반영된 결과는 다음 페이지에서 확인할 수 있습니다.

부분 출금

부분 출금을 진행하려면 스태시 계정과 컨트롤러 계정 모두 polkadot.js 앱 페이지에 미리 등록되어 있어야 합니다. 전체 출금 프로세스는 두 단계로 구성됩니다. 먼저 컨트롤러 계정으로 "출금 예약 (Schedule Withdrawal)" 프로세스를 수행해야 합니다. 이때 요청이 성공적으로 처리되더라도 즉시 출금이 실행될 수는 없습니다. 일정 수의 라운드("출금 지연(Bond less delay)")를 기다려야 합니다. 지연 시간이 지나면, 스태시 계정으로 "출금 실행 (Execute withdrawal)" 프로세스를 최종적으로 실행해야 실제 출금이 완료됩니다. 모든 작업은 "개발자 (Developer)" 탭 아래의 "익스트린식 (Extrinsic)" 페이지에서 수행됩니다.

출금 예약 (Schedule Bond Less)

  1. 자신의 컨트롤러 계정을 선택합니다.

  2. "bfcStaking" 팔렛 (pallet)을 선택합니다.

  3. "scheduleCandidateBondLess" 익스트린식 (extrinsic)을 선택합니다.

  4. 부분 출금할 BFC 금액을 Wei 단위로 입력합니다. 100 BFC를 출금하려면 100 뒤에 18개의 0을 추가해야 합니다.

  5. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력하여 서명함으로써 트랜잭션을 전송합니다.

출금 예약 취소 (Cancel Schedule Bond Less)

사전에 요청한 출금 요청을 취소할 수도 있습니다. 취소하는 경우, 지연 시간과 관계없이 호출할 수 있습니다.

  1. 본인의 컨트롤러 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "cancelCandidateBondLess" 익스트린식을 선택합니다.

  4. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력한 후 서명하여 트랜잭션을 전송합니다.

출금 실행 (Execute Bond Less)

  1. 본인의 스태시 (stash) 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "executeCandidateBondLess" 익스트린식을 선택합니다.

  4. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력한 후 서명하여 트랜잭션을 전송합니다.

검증자 퇴장 (Leave Validators)

검증자 활동을 중단하고 퇴장하고 싶다면, 스태시 계정과 컨트롤러 계정이 polkadot.js 앱 페이지에 미리 등록되어 있어야 합니다. 퇴장하기로 결정하면, 예치된 모든 자체 본딩 (self-bond)은 스태시 계정으로 반환되고, 모든 지명 (nomination) 또한 지명자에게 자동으로 반환됩니다.

부분 출금과 마찬가지로, 전체 종료 프로세스는 두 단계로 구성됩니다. 먼저 컨트롤러 계정으로 "퇴장 예약 (Schedule Leave)" 프로세스를 수행해야 합니다. 이때 요청이 성공적으로 처리되더라도 즉시 퇴장이 실행될 수는 없습니다. 일정 수의 라운드("퇴장 지연(Leave candidates delay)")를 기다려야 합니다. 지연 시간이 지나면, 스태시 계정으로 "퇴장 실행 (Execute Leave)" 프로세스를 최종적으로 수행해야 실제 퇴장 조치가 완료됩니다.

검증자 노드 운영이 퇴장 절차 없이 중단되면, 페널티가 적용되어 자산의 일부가 슬래싱될 수 있습니다. 따라서 자산을 안전하게 보호하기 위해 이 프로세스를 숙지하고 퇴장해야 합니다.

퇴장 예약 (Schedule Leave)

  1. 본인의 컨트롤러 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "scheduleLeaveCandidates" 익스트린식을 선택합니다.

  4. 현재 검증자 수를 입력합니다. 값이 현재 검증자 수보다 크거나 같으면 정상적으로 작동합니다.

  5. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력한 후 서명하여 트랜잭션을 전송합니다.

퇴장 예약 취소 (Cancel Schedule Leave)

사전에 요청한 퇴장 요청을 취소할 수도 있습니다. 취소하는 경우, 지연 시간과 관계없이 호출할 수 있습니다.

  1. 본인의 컨트롤러 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "cancelLeaveCandidates" 익스트린식을 선택합니다.

  4. 현재 검증자 수를 입력합니다. 값이 현재 검증자 수보다 크거나 같으면 정상적으로 작동합니다.

  5. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력한 후 서명하여 트랜잭션을 전송합니다.

퇴장 실행 (Execute Leave)

  1. 본인의 스태시 (stash) 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "executeLeaveCandidates" 익스트린식을 선택합니다.

  4. 본인을 지명한 지명자 수를 입력합니다. 값이 현재 지명자 수보다 크거나 같으면 정상적으로 작동합니다.

  5. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력한 후 서명하여 트랜잭션을 전송합니다.

퇴장 실행을 완료했다면, 운영 중이던 검증자 노드를 완전히 종료해도 됩니다.

자동 복리 (Auto-Compound) 목적지 설정

바이프로스트 네트워크는 자동 복리 기능을 제공합니다. 이 선택적 기능을 통해 검증자와 지명자 모두 라운드 보상을 지갑으로 받을지("계정(Account)") 또는 자동으로 추가 예치할지("스테이킹(Staked)") 결정할 수 있습니다.

"계정 (Account)" 옵션은 각 라운드에서 지급되는 라운드 보상을 예치한 지갑으로 받습니다. 이 경우 자체 본딩에는 변화가 없으며, 지급된 토큰은 특별한 잠금 없이 지갑에서 즉시 사용할 수 있습니다.

"스테이킹 (Staked)" 옵션은 각 라운드에서 받는 라운드 보상에 대해 즉시 자체 본딩에 자동으로 추가 예치를 합니다. 이는 모든 네트워크 참여자 (검증자 + 지명자)의 기본값으로 설정됩니다.

다음 단계를 순서대로 진행합니다.

  1. 자신의 컨트롤러 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "setCandidateRewardDst" 익스트린식을 선택합니다.

  4. "Staked" 또는 "Account" 옵션을 선택합니다.

  5. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력하여 서명함으로써 트랜잭션을 전송합니다.

수수료율 (Commission) 설정

모든 검증자는 자신의 티어 (tier)에 따라 수수료율 (commission)을 지정할 수 있습니다.

Tier
Rate Range

풀 노드

0% ~ 100% (default: 50%)

기본 노드

0% ~ 20% (default: 10%)

다음 단계를 순서대로 진행합니다.

  1. 자신의 컨트롤러 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "setValidatorCommission" 익스트린식을 선택합니다.

  4. 변경하려는 비율을 입력합니다. 예를 들어, 60%로 변경하려면 60 뒤에 7개의 0을 추가해야 합니다.

  5. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력하여 서명함으로써 트랜잭션을 전송합니다.

검증자 오프라인 설정 (Set Validator Offline)

자체 본딩을 해제하지 않고 일정 기간 동안 검증자 활동을 일시 중지하려면 노드 상태를 오프라인으로 변경할 수 있습니다. 오프라인 상태로 전환할 때 다음 사항을 숙지해야 합니다.

  • 자체 본딩 및 지명은 인출되지 않고 유지됩니다.

  • 자체 본딩 및 지명에 대한 추가 예치 및 부분 인출이 가능합니다.

  • 온라인 상태로 다시 전환한 후에만 검증자 세트를 떠날 수 있습니다.

  • 라운드 업데이트 중에는 활성 검증자로 선택될 수 없습니다.

  • 활성 검증자로 운영 중 오프라인 상태로 변경하더라도 활성 지분에 대한 보상은 계속 지급됩니다.

  • 오프라인 요청은 한 세션 후에 반영되므로, 페널티를 방지하려면 최소 한 세션 동안은 온라인 상태를 유지해야 합니다.

다음 단계를 순서대로 진행합니다.

  1. 자신의 컨트롤러 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "goOffline()" 익스트린식을 선택합니다.

  4. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력하여 서명함으로써 트랜잭션을 전송합니다.

검증자 온라인 설정 (Set Validator Online)

운영 중인 노드가 오프라인 상태로 전환되었거나, 오프라인 요청 없이 지속적인 비활성 상태로 인해 라운드에서 제외되었다면, 정상적인 검증자 활동을 진행하기 위해 노드를 온라인 상태로 다시 전환해야 합니다. 그렇지 않으면 해당 검증자는 활성 검증자로 선택되지 않습니다.

다음 단계를 순서대로 진행합니다.

  1. 자신의 컨트롤러 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "goOnline()" 익스트린식을 선택합니다.

  4. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력하여 서명함으로써 트랜잭션을 전송합니다.

검증자 티어 설정 (Set Validator Tier)

운영 중인 노드의 티어를 변경할 수 있습니다. 기본 노드에서 풀 노드로 변경할 경우, 다음 조건을 충족해야 합니다.

  • 최소 요구 자체 본딩 금액이 충족되지 않은 경우, 추가 예치를 해야 합니다.

  • 릴레이어 운영을 위한 새로운 이더리움 계정이 필요합니다.

  • 티어 변경 후 릴레이어를 추가적으로 운영해야 합니다.

다음 단계를 순서대로 진행합니다.

  1. 자신의 스태시 계정을 선택합니다.

  2. "bfcStaking" 팔렛을 선택합니다.

  3. "setValidatorTier()" 익스트린식을 선택합니다.

  4. 자체 본딩의 추가 예치가 필요한 경우, more 매개변수에 BFC 금액을 wei 단위로 입력합니다. 그렇지 않으면 0을 입력합니다.

  5. 변경하고자 하는 노드의 티어를 선택합니다. ("Full" 또는 "Basic" 선택)

  6. 풀 노드로 변경하는 경우 릴레이어 계정을 선택합니다. 그렇지 않은 경우, 오른쪽에 위치한 "옵션 포함 (include option)" 버튼을 비활성화 (disabled)로 전환합니다.

  7. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력하여 서명함으로써 트랜잭션을 전송합니다.

수정이 성공적으로 처리되면 선택한 티어로 업데이트됩니다. 하지만 현재 라운드가 끝날 때까지는 노드가 이전 티어로 계속 작동합니다.

컨트롤러 계정 재설정

각 검증자의 컨트롤러 계정은 검증 활동으로 인해 네트워크에 공개되므로, 공격자가 귀하의 계정을 악용하거나 탈취할 가능성이 있습니다. 그러나 검증자 계정이 여러 계정으로 분리되어 있기 때문에 공격자가 귀하의 자체 본딩 (self-bonds)을 인출할 수는 없습니다. 하지만 향후 안전을 위해 노출된 컨트롤러 계정을 교체할 것을 권장합니다. 이를 위해 다음 조건이 충족되어야 합니다.

  • 트랜잭션 수수료 지불을 위한 자금이 포함된 새로운 컨트롤러 계정을 준비해야 합니다. 이 새로운 계정은 나중에 이전 계정을 대체하게 됩니다.

  • 이전 계정에 남은 자금이 있는지 다시 확인합니다. 있다면 다른 안전한 계정으로 전송합니다.

이제 컨트롤러 계정을 재설정하려면 다음 단계를 순서대로 진행합니다.

  1. 먼저 검증자 노드를 설정하는 데 사용했던 도구 디렉토리에 접근합니다.

  2. set_session_keys CLI 명령어를 실행하여 새로운 온체인 세션 키 (on-chain session keys)를 등록합니다. 이때 controllerPrivate 옵션은 새로운 계정의 개인 키여야 합니다.

  3. 이제 polkadot.js 웹 페이지에 접속하여 익스트린식 (extrinsics) 탭으로 이동합니다. 이전에 새로운 계정이 polkadot.js에 등록되어 있어야 합니다.

  4. 자신의 스태시 (stash) 계정을 선택합니다.

  5. "bfcStaking" 팔렛 (pallet)을 선택합니다.

  6. "setController()" 익스트린식 (extrinsic)을 선택합니다.

  7. new 매개변수를 새로운 계정으로 설정합니다.

  8. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력하여 서명함으로써 트랜잭션을 전송합니다.

트랜잭션이 성공적으로 실행된 후, 실제 계정 교체(상태 변경)는 다음 라운드 시작 시 적용됩니다.

릴레이어 계정 재설정

풀 노드 운영자의 경우, 릴레이어 계정을 교체할 수 있습니다. 이를 위해서는 다음 조건이 충족되어야 합니다.

  • 크로스체인 액션을 위한 충분한 자금이 포함된 새로운 릴레이어 계정을 준비해야 합니다. 이 새로운 계정은 나중에 이전 계정을 대체하게 됩니다.

  • 이전 계정에 남은 자금이 있는지 다시 확인합니다. 있다면 다른 안전한 계정으로 전송합니다.

이제 릴레이어 계정을 재설정하려면 다음 단계를 순서대로 진행합니다.

  1. 먼저 polkadot.js 웹 페이지에 접속하여 익스트린식 (extrinsics) 탭으로 이동합니다. 이전에 새로운 계정이 polkadot.js에 등록되어 있어야 합니다.

  2. 자신의 컨트롤러 계정을 선택합니다.

  3. "relayManager" 팔렛 (pallet)을 선택합니다.

  4. "setRelayer()" 익스트린식 (extrinsic)을 선택합니다.

  5. new 매개변수를 새로운 계정으로 설정합니다.

  6. "트랜잭션 제출 (Submit Transaction)" 버튼을 클릭하고 비밀번호를 입력하여 서명함으로써 트랜잭션을 전송합니다.

트랜잭션이 성공적으로 실행된 후, 실제 계정 교체(상태 변경)는 즉시 적용됩니다. 교체로 인해 실행 중인 릴레이어 프로그램의 계정 설정도 수정해야 합니다.

Last updated