토카막 다오의 모든것(2)

다오 스마트 컨트랙트(DAO Smart Contract)

Darren K
Darren K
Mar 25 · 9 min read
Tokamak DAO Smart Contract

(1)토카막 다오란 무엇인가

(2)토카막 다오 스마트 컨트랙트 ← Here

(3)다오 유저 인터페이스와 그 사용

(4)자주묻는질문(FAQs)

목차

  • 들어가며
  • 컨트랙트 개요
  • 후보자 투표
  • 다오 위원회
  • 제안
  • 다오 금고
  • 기타

들어가며

토카막 다오는 토카막 네트워크 생태계에 영향을 주는 여러 사항들에 대한 의사 결정을 위한 시스템입니다. 이번 포스팅은 토카막 다오 스마트 컨트랙트 시스템이 구체적으로 어떻게 동작하고, 사용자들은 어떤 방법으로 생태계에 기여할 수 있는지 설명합니다.

컨트랙트 개요

다오 컨트랙트는 토카막 네트워크와 관련된 거의 모든 컨트랙트의 권한을 가지고 있으며, 각 컨트랙트의 상태 값을 변경하는 함수들을 실행할 수 있는 권한을 가지고 있습니다. 구체적으로 상태 변경을 하기 위해서, 유저는 토카막 다오에 함수 실행에 대한 안건을 생성한 뒤 위원회의 의결이 이뤄지고, 의결 결과에 따라서 실행 가능 여부가 결정됩니다.

다오 컨트랙트는 다오 위원회의 위원에 대한 자격 관리, 의제의 제안과 투표 등 의제 상태 등을 제어합니다. 또한 다오 후보자에 대한 투표 등의 기능은 기존의 토카막 네트워크 스테이킹 컨트랙트를 활용하여 투표자들이 투표에 대한 보상을 가져갈 수 있도록 설계 되었습니다.

이번 포스팅을 통해서 다오 컨트랙트의 구성과 역할 및 기능적 특징을 살펴보겠습니다.

후보자 투표

모든 사용자들은 원하는 다오 후보자에게 투표할 수 있습니다. 이 투표는 톤을 예치하는 형태로 이루어지기 때문에, 사용자들은 특정 후보자에게 톤을 예치함으로써 해당 후보자에게 투표할 수 있습니다. 이러한 톤의 예치는 토카막 네트워크의 스테이킹 컨트랙트를 사용하기 때문에, 투표자들은 투표한 톤에 비례한 보상을 얻을 수 있습니다.

다오 후보자가 받은 투표 양은 해당 후보자에게 위임된 총 톤의 양과 같습니다. 이 투표 양은 후보자 본인이 직접 예치한 양도 포함됩니다.

사용자의 후보자에 대한 투표는 스테이킹의 구조와 같고, 따라서 아래 각 기능들은 모두 토카막 네트워크 스테이킹 컨트랙트로 관리됩니다. 토카막 네트워크의 스테이킹 서비스에 대한 더 자세한 내용은 이 글을 참고해주세요.

사용자는 원하는 다오 후보자에게 톤을 위임하여 투표할 수 있습니다. 이러한 톤의 위임과 관련된 사항은 토카막 네트워크의 스테이킹 컨트랙트가 관리하며, 사용자가 위임한 양과 기간에 비례한 보상을 얻을 수 있습니다.

다오 후보자에게 투표한 톤을 해제 요청하는 절차입니다. 투표 해제시 바로 출금이 이루어지지는 않으며, 해제한 뒤 일정 기간(현재 기준 14일)이 지나면 출금할 수 있습니다. 이 값은 토카막 네트워크 스테이킹 컨트랙트에서 관리되는 값과 같습니다.

투표 해제를 요청한 뒤 아직 출금하지 않은 톤을 그대로 다시 투표할 수 있습니다. 토카막 네트워크 스테이킹 서비스의 재스테이킹(re-staking)과 같습니다.

투표 해제를 요청한 톤을 출금하는 절차입니다. 요청 뒤 일정 기간(현재 기준 14일)이 지난 뒤 투표했던 톤을 출금할 수 있습니다.

다오 위원회(DAO Committee)

다오 위원회는 토카막 다오의 의제들에 관한 실질적인 의결권을 가진 조직으로 정의할 수 있습니다. 토카막 네트워크의 다오 위원회는 커미티 컨트랙트(Committee Contract)로 관리됩니다. 커미티 컨트랙트는 후보자 등록, 위원 추가, 변경, 제거, 안건의 등록과 실행 등 다오의 주된 기능을 수행합니다.

  • 후보자들에 대한 투표(톤 위임투표)

모든 사용자는 원하는 후보자에게 톤을 위임(예치, 투표)할 수 있으며, 시뇨리지 매니저 컨트랙트( SeigManager contract)에서 관리되는 이자(새롭게 발행된 톤, seigniorage)를 받을 수 있습니다.

  • 의제 생성

모든 사용자는 일정량의 톤을 수수료로써 소모하며 안건을 생성할 수 있습니다.

누구나 후보자로 등록할 수 있으며, 시뇨리지 매니저 컨트랙트에서 관리되는 Layer2 컨트랙트들 또한 후보자로써 등록될 수 있습니다. 모든 후보자는 스테이킹 된 수량에 따라 새롭게 발행된 톤을 분배하는 updateSeigniorage()함수와 커미션 비율을 조정하는 등의 시뇨리지 매니저 컨트랙트 기능을 사용할 수 있습니다.

모든 후보자들은 Candidate 컨트랙트를 통해 DAO 컨트랙트와 상호작용할 수 있습니다. 후보자가 Layer2 컨트랙트인 경우, operator가 Candidate 컨트랙트를 사용할 수 있습니다.

  • Layer2 와 다오 후보자

Layer2 컨트랙트가 이미 등록된 상태에서 다오 후보자로 등록하는 것도 가능합니다. 이 경우 Layer2는 Layer2를 운영함과 동시에 다오 후보자로 활동할 수 있습니다. 이 때, Layer2의 관리와 다오 후보자로써의 활동은 Layer2 운영자(Operator)가 하게 됩니다.

또한, Layer2 컨트랙트에 위임된 TON은 다오 후보자에게 투표된 양으로 간주됩니다.

  • 위원석(Member Slot)

DAO 컨트랙트는 최대위원 수만큼의 의석(slot)을 갖습니다. 최초의 의석(slot)은 ZERO_ADDRESS가 할당된 상태이며, 각 후보자들은 위원 선출 기준을 만족하면 위원을 교체할 수 있습니다.

  • 위원 선출 기준

후보자들에 대한 득표 양은 각 후보자들이 위임 받은 톤의 양과 같습니다. 이 투표는 시뇨리지 매니저 컨트랙트로 관리되며, 그 양은 후보자 본인이 예치(투표, 스테이킹)한 양도 포함합니다.

  • 위원의 교체

후보자는 본인에게 투표된 수량이(예치된 톤의 양)이 특정 위원의 투표 수량보다 많은 경우, 후보자 컨트랙트(Candidate)를 통해 해당 위원의 의석(Slot)을 차지할 수 있습니다.

제안(proposal)

  • 의제의 생성

각 의제(Agenda)는 의제에 포함된 특정 컨트랙트들의 특정 함수를 특정 파라미터로 실행할 수 있습니다. 이 값들은 의제를 제안하는 사용자가가 의제 생성시 기입하게 됩니다.

의제(Agenda)는 누구나 생성할 수 있으며, 안건 생성 수수료로 일정량의 톤(TON)을 소모(burn)합니다. 이 수수료는 현재 기본값 100 TON이며, 이 값 또한 의제를 통해서 바뀔 수 있습니다.

  • 의제의 의결 과정

의제는 생성된 시점부터 공지 기간(Notice Period)이 시작되고, 공지 기간이 종료된 뒤 투표 기간(Voting Period)을 갖습니다. 여기서 공지 기간과 투표 기간은 최소값이며, 의제 생성시 별도로 설정할 수 있습니다. 또한 통과된 의제는 실행 기간(Execution Period)을 갖는데, 실행 기간 이내에만 실행될 수 있고 해당 기간이 만료된 이후에는 실행될 수 없습니다. 실행 기간은 모든 의제가 같습니다.

공지 기간 중에는 의제에 어떠한 상태 변화도 일어나지 않으며, 공지기간이 종료된 이후 트랜잭션이 발생하는 시점의 위원회 위원(committee member)로부터 의제 위원(Agenda member)이 결정됩니다. 의제 위원만이 해당 의제에 투표를 할 수 있으며, 공지 기간 후 첫 투표 트랜잭션이 발생한 시점부터 투표 기간이 시작됩니다.

의제 위원에 의해서 진행되는 투표는 찬성/반대/기권(yes/no/abstain)으로 이루어지며, 정족수(quorum)를 만족한 시점에 투표 결과가 변경됩니다. 찬성 표가 정족수를 채워 투표 결과가 확정된 경우, 통과된 안건은 바로 실행될 수 없고 투표 기간이 종료된 후에 실행 가능합니다.

통과된 의제는 투표가 종료된 후 일정 기간의 실행 기간을 갖습니다. 실행 기간 내에 누구나 해당 안건을 실행하여 토카막 네트워크의 컨트랙트 상태를 의제에 의해 변경할 수 있습니다.

다오 금고(DAO Vault)

다오의 금고에는 다오를 통해 사용될 수 있는 토큰이 저장되어 있습니다. 금고에 들어오는 토큰은 톤(TON)의 총 발행량에서 일부 다오를 위해 할당된 양(최초발행량의 35%)과, 토카막 네트워크의 스테이킹에서 발행되는 시뇨리지(추가발행량) 중 일부를 포함합니다.

안건을 통해 금고에 저장된 토큰들을 대상으로 approve() 함수를 실행할 수 있습니다. 대상 토큰은 TON, WTON 혹은 토큰 주소가 입력된 토큰입니다.

안건을 통해 금고에 저장된 토큰들을 곧바로 출금할 수 있습니다. 대상 토큰은 TON, WTON 혹은 토큰 주소가 입력된 토큰입니다.

기타

아래는 다오 후보자, 멤버, 안건별 투표자들의 관계를 대략적으로 나타낸 다이어그램입니다.

다이어그램 하단부에서 의제별로 다른 위원이 할당되어 있으며, 이에 따라 투표를 진행하는 것을 보실 수 있습니다.

토카막 다오는 컨트랙트가 배포되어 운영되는 과정에서 기능적으로 확장 및 업그레이드 가능성을 고려하여 설계되었습니다. 다오 위원회 관리 컨트랙트는 스토리지와 로직을 분리되어 있는 다오 프록시 패턴을 기반으로 구성되어 있습니다.

사용자는 DAOCommitteeProxy 컨트랙트을 통해서, 다오의 위원회 및 기본 서비스를 접근할 수 있습니다. DAOCommitteeProxy 컨트랙트 주소는 사용자들에게 직접 노출되는 주소로 서비스 동안 변하지 않는 주소로 관리됩니다.

DAOCommitteeProxy 컨트랙트 안의 upgradeTo() 함수를 이용해서, 다오 서비스 로직을 담당하는 DAOCommittee 컨트랙트 주소를 변경함으로써, 다오 서비스의 확장 및 업그레이드가 가능합니다. 이러한 구조적 특징을 바탕으로 컨트랙트가 사용되는 과정에서도 서비스 중단 없이 다오의 유지보수와 업그레이드를 원활하게 진행토록 함으로써 더욱 유저 친화적이고 능동적인 사용자 경험을 제공할 수 있을 것으로 기대하고 있습니다.

다오 서비스의 전체 컨트랙트의 상세 다이어그램은 다음과 같습니다 .

Onther

Building an Ethereum Blockchain ECO system to Change the…

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store