contractsRegistry

contractRegistry는 PoS 컨트랙트 목록과 현재의 관리자를 관리합니다. 이 컨트랙트는 시스템 기반이며 다른 컨트랙트나 유저에게 최신의 컨트랙트 리스트 정보를 제공해줍니다.

contractRegistry는 컨트랙트 주소 변경사항은 PoS와 관련된 컨트랙트들에게 전달합니다. 컨트랙트 레지스트리는 PoS 컨트랙트 업그레이드에 핵심이며 자신 뿐만 아니라 각각의 컨트랙트가 시스템 내에서 새로운 컨트랙트로 이전할 수 있게 해줍니다.

stakingContract

staking contact는 PoS 참여자들의 스테이킹된 토큰을 보관합니다. 이 컨트랙트는 스테이킹 또는 언락등 참여 수량에 변경이 있을 경우 stakingContractHandler를 통해 알려주게 됩니다.

자세한 내용은 다음 링크를 참고해주세요: Orbs Staking Contract High-Level Specification.

stakingContractHandler

stakingContractHandler는 스테이킹 컨트렉트를 Orbs PoS 컨트랙트와 contractRegistry가 관리하는 컨트랙트 관리정보와 연결시켜줍니다.

stakingContractHandler는 추가적인 스테이킹 컨트랙트를 연결하거나 필요시 다른 PoS 컨트랙트들로부터 스테이킹 컨트랙트를 분리시킬 수 있는 인프라를 제공합니다.

delegations

delegations contract는 Orbs PoS의 각 참여자에 대한 위임정보를 저장관리합니다. 위임 컨트랙트는 참여자들이 선택한 가디언과 위임된 수량 및 자체 수량 정보를 가지고 있습니다.

참여자들의 위임정보, 위임수량, 자체수량이 변경될 때마다 컨트랙트는 stakingRewards에게 알림을 줘서 리워드가 제대로 계산되도록 해줍니다. 또한 위임 컨트렉트는 참여자의 스테이킹 정보가 변경되면 투표 컨트렉트에 이를 알려주어 투표 컨트랙트에서 위임한 이의 정보를 표해줍니다.

elections

election 컨트랙트는 delegation 컨트랙트와 위원회, 가디언 등록 및 인증 컨트랙트를 연결해줍니다. 또한 투표 컨트랙트는 voteUnready와 voteOut 모두의 투표 로직을 구현했으며 노드 상태 머신로부터의 readyForCommittee와 readyToSynct 알림을 관리합니다.

delegation 컨트랙트로부터의 알림에 따라, election 컨트랙트는 참여자들의 새로운 유효 스테이킹을 계산하여 Committee 컨트렉트에 업데이트해줍니다. 가디언의 readyForCommittee, 위원회, election 컨트랙트는 가디언의 등록상태와 유효성을 검증하여 Committee 컨트랙트에 추가할 수 있도록 요청을 보냅니다. 만일 가디언이 현재 voted-unready 또는 voted-out 상태라면, election 컨트랙트는 committee 컨트랙트가 위원회로부터 해당 가디언을 빼도록 요청합니다.

committee

committee 컨트랙트는 현재의 위원회 상태를 관리합니다. committee 컨트랙트는 현재 위원회 구성원과 이들의 보팅파워 정보를 가지고 있습니다. 유효한 스테이킹 변화가 election 컨트랙트로부터 전달되면, committee 컨트랙트는 위원회 구성원의 보팅파워값을 업데이트하고 관련 이벤트를 발송합니다.

On a request to join the committee, the committee member checks that the candidate is qualified to join. If the candidate’s weight is higher than the committee member with the lowest weight, the candidate will join the committee instead of the minimal weight Guardian. Upon a change in the committee members list or their certification, the contact notifies the stakingRewards and FeesAndBootstrap contracts on the leaving and joining members to update their rewards state.

stakingRewards

stakingRewards 컨트랙트는 PoS 생태계 참여자들의 스테이킹 리워드 상태를 관리합니다. 스테이킹 리워드 구조는 프레이밍 풀에서 흔히 볼 수 있는 공유 아키텍처에 따른 리워드정보를 기반으로 하고 있습니다. 해당 컨트랙트는 Orbs PoS 구조에 맞게 3단계(글로벌 할당, 위원회 가디언이 보팅파워에 맞게 지분받기, 가디언 할당량으로부터 자신들의 지분에 비례해서 리워드 받기)로 설계되어 있습니다.

스테이킹 리워드 컨트랙트는 두가지 이벤트를 업데이트합니다: 1) 델리게이터 스테이킹 수량 변경 2) 가디언의 위원회 참여여부 변경. 참여자는 자신의 스테이킹 리워드를 스테이킹 컨트랙트에 따라 청구할 수 있으며 시스템 상태는 이에 맞게 갱신됩니다. stakingRewardsWallet으로부터 출금되는 스테이킹 자금을 인출합니다. 해당 지갑에는 모든 참여가에 대해 청구되지 않은 총 금액의 토큰을 보유합니다.

feesAndBootstrapRewards

feesAndBootstrapRewards 컨트랙트는 수수료와 가디언 지원용 리워드 상황을 관리합니다. 수수료 및 지원금 보상 아키텍처는 스테이킹 리워드 컨트랙트와 유사한 설계로 이루어져 있습니다.

또한 feesAndBootstrapRewards는 지원 리워드를 지원금 지갑에서 출금합니다. 이 지갑에는 모든 가디언들의 미청구 금액의 총합이 보관되고 있습니다.

프로토콜 지갑들(stakingRewardsWallet, bootstrapRewardsWallet)

stakingRewardsWalletbootstrapRewardsWallet은 관련된 리워드 컨트렉트가 설정된 최대비율에 맞춰 출금할 수 있도록 프로토콜에서 필요로하는 자금을 보관하고 있습니다. 프로토콜 지갑은 간단하면서 보안이 된 매커니즘으로 프로토콜 자금을 저장합니다.

컨트랙트는 2단계로 설계되어 있습니다: 1) 글로벌 배당 2) 위원회 가디언들. feesAndBootstrapRewards는 가상체인이 인증 및 일반 위원회에 지불하는 수수료 지갑의 두 인스턴스로부터 수수료를 모읍니다. 프로토콜 지갑은 PoS 컨트랙트 거버넌스와 운영 인프라로부터 분리되어 있으며 두 종류의 관리자의 관리를 받고 있습니다: 1) 기능 관리자: 지갑 클라이언트를 셋팅, 2) 마이그레이션 관리자: 자금의 출금을 컨트롤

수수료 지갑들(generalFeesWallet, certifiedFeesWallet)

수수료 지갑은 가상 체인들이 구독료로 지불하는 수수료를 관리합니다. 수수료 지갑은 두 인스턴스로 분리되어 배치되어 있습니다. 하나는 일반 가상체인용이며 다른 하나는 인증 가상체인용입니다. 수수료 지갑들은 구독수수료를 30일간 보관하면서 시간에 비례하여 정확히 나누어 분배하게 됩니다.

두 수수료 지갑을 이용하는 feesAndBootstrapRewards 컨트랙트는 지난 번 수집된 이후 기간동안 지불된 수수료를 모아놓습니다.

guardiansRegistration

guardiansRegistration 컨트랙트는 가디언 등록 정보를 저장하고 있습니다. 가디언은 이곳에서 최초 등록 및 등록된 정보의 수정, 등록 해지등을 할 수 있습니다. 또한 이 컨트랙트는 Orbs 플랫폼에서 쿼리할 수 있도록 일반 목적의 키를 각 가디언별로 저장할 수 있도록 메타데이터 맵을 저장합니다. 예를 들어, 가디언 신원 데이터로의 링크는 "ID_FORM_URL" 메타데이터 키에 저장됩니다.

guardiansRegistration 컨트랙트는 Orbs 주소를 이더리움 주소로 매핑시키는 기능을 제공하여 다른 컨트렉트가 Orbs 주소를 사용할 수 있는 함수호출이 가능하게 합니다. guardiansRegistration 컨트랙트는 election 컨트랙트에게 가디언 등록 상태의 변동사항을 알려줍니다.

certification

certification 컨트랙트는 각 가디언의 인증 상태를 저장합니다. 인증 데이터는 certificationManager에 의해 관리되며 가디언의 인증을 설정하거나 제거할 수 있습니다.

certification 컨트랙트는 election 컨트랙트에게 가디언 인증사항의 변화를 알려줍니다.

subscriptions

subsceription 컨트랙트는 가상체인의 구독 상태를 관리합니다. 이 컨트렉트는 개발자가 가상체인을 생성하고, Orbs 플랫폼에서 쓰이는 메타데이터값과 연장된 가상체인 구독등의 설정값을 수정하도록 지원합니다.

가상 체인의 생성과 구독은 subscriptions 컨트랙트만으로 직접 상호작용하여 이루어지는 것이 아니라 "subscription plan" 컨트랙트를 호출하여 subscription 컨트렉트에 업데이트를 해주어야 합니다. subscription 컨트랙트는 유효한 "subscription plan" 컨트랙트에 대한 목록을 가지고 있습니다.

Subscription plan

Subscription plan 컨트랙트는 stateless 컨트랙트로 가상 체인이 구독하는데 필요한 수수료 구조와 플랜을 책임지고 있습니다. 가상 체인의 소유자는 subscription plan 컨트랙트를 호출하여 가상 체인을 생성하고 구독 기간을 정합니다.

Subscription plan 컨트랙트는 플랜등급을 할당하고 매달 플랜에 따른 수수료율을 매깁니다. 다중 구독 컨트랙트가 시스템에 배치될 수도 있습니다.

protocol

protocol 컨트랙트는 Orbs 플랫폼의 프로토콜 버전 업그레이드를 설정하고 동기화하는 역할을 맡고 있습니다. 프로토콜 컨트랙트는 하위집합의 다중 배치를 지원합니다. 예를 들면, 제품출시와 카나리 배포 시, 각각은 서로 다른 프로토콜 버전으로 운영될 수 있습니다.

Upon protocol version upgrade, a future time is set as the cutoff date for the protocol upgrade.

컨트랙트의 운영과 관리 아키텍처

Orbs의 각 PoS 컨트랙트는 향후 있을 수 있는 마이그레이션을 대비하여 설계되었습니다. 다른 컨트랙트와 상호작용하는 PoS 시스템의 컨트랙트는 현재 주소를 컨트랙트 저장소에 저장합니다. 컨트랙트 마이그레이션이 발생하면, 레지스트리는 모든 관련된 컨트랙트에게 푸시 알림을 보내어 연관된 컨트랙트 목록을 그에 맞게 업데이트합니다.

시스템 컨트랙트와 더불어, 컨트랙트 레지스트리 저장소는 최신 관리자 목록을 저장합니다. 동기화를 보장하기 위해, 컨트랙트는 모든 관리명령을 수행하기 전에 현재 관리자 레지스크리에 쿼리합니다. 관리자는 registryAdmin에 의해 지정되며, 이는 관리자 역할을 지정하거나 취소할 수 있습니다.

컨트랙트 레지스트리는 레지스트리 마이그레이션 뿐만 아니라 다른 컨트랙트 주소의 변경사항도 이벤트로 내보냅니다. 첫 컨트랙트 레지스트리 주소를 알고 있다면 애플리케이션은 모든 컨트랙트 버전으로부터의 전체 이벤트 목록들과 최신 컨트랙트 목록을 알 수 있습니다.

컨트랙트 레지스트리에 의한 컨트랙트 관리에 있어서 예외사항은 프로토콜 지갑 컨트랙트가 있습니다. 프로토콜 지갑 컨트랙트는 관리자가 분리되어 있어 기능수행과 마이그레이션을 별도로 관리하게 됩니다.

역할들
  • registryAdmin

    registryAdmin은 컨트랙트 레지스트리를 관리하며 가장 권한이 강한 관리 주체입니다. registryAdmin은 레지스트리 설정, 컨트랙트, 할당된 매니저를 변경할 수 있습니다. registryAdmin의 관리자는 레지스트리가 관리하는 각 컨트랙트에 링크되어 각각의 레지스트리에 지정된 컨택트를 수정할 수 있습니다.

    box image
  • initializationAdmin

    initializationAdmin은 관리 매개변수에서부터 위임 또는 가디언 목록같은 네트워크 마이그레이션 상태에 이르기까지 컨트랙트 상태를 초기화하는 역할을 맡고 있습니다. initializationAdmin는 컨트랙트 배포자로 설정되며 그의 작업은 컨택트 생성자에 대한 확장으로 간주될 수 있습니다. initializationAdmin는 마이그레이션 발생시 가장 권한이 강한 역할이며, 초기화가 완료된 이후에는 역할이 회수되고 다시 되돌릴 수 없게 됩니다.

    box image
  • migrationManager

    migrationManager는 컨트랙트 레지스트리에서 지정되며 모든 마이그레이션 동작들을 관장합니다. 마이그레이션 매니저는 레지스트리의 컨택트, 마이그레이션 상태, 컨트랙트들의 밸런스를 설정할 수 있습니다. migrationManager의 권한은 막강하기 때문에 migrationManager를 지정할 때는 특정 임무, 예를 들면 새로운 컨트랙트 버전으로의 마이그레이션등을 위해서만 사용하고 그 후에는 권한을 회수하게 됩니다.

    box image
  • functionalManager

    functionalManager는 컨트랙트 레지스트리에 의해 지정되며 컨트랙트 관리 매개변수와 기능성을 컨트롤합니다.

    box image
  • certificationManager

    certificationManager는 가디언의 인증상태를 관리합니다. certificationManager는 가디언의 인증 상황을 집어넣거나 뺄 수 있습니다. 가디언 인증은 ID url 메타데이터를 이용하는 registration 컨트랙트로부터 제공되는 가디언의 신원 정보를 바탕으로 결정됩니다.

    box image

이전 화면으로 돌아가기

웹사이트 방문 경험 향상을 위해 이 홈페이지는 브라우저에서 쿠키를 사용합니다. 웹사이트를 계속 보시려면 쿠키 운영 정책에 동의해주세요.