서버는 다오 컨트랙트의 이벤트를 모니터하여 발생된 이벤트 정보를 DB에 저장하는 이벤트 모니터 , 이벤트 모니터를 통해서 집계된 로그를 근거로, 시뇨리지(이자) 발행이 반영된 개인별 스테이킹양을 조회 및 저장하는 자료 집계 에이전트. 그리고, 다오 웹/앱에서 사용할 수 있도록 DAO 정보제공 기능을 담당하는 하는 API 서버로 구성되어 있습니다.
이러한 다오의 시스템 구성은 다음과 같습니다
서버는 컨트랙의 이벤트 로그를 저장하여, 여러가지 분석 및 운영을 위한 자료로 사용됩니다.
모니터링하고 있는 이벤트는 다음과 같으며, 해당 이벤트 로그를 DB에 저장합니다.
DAO Committee Contract
( 1 ) 위원회 관련 이벤트
event CandidateContractCreated ( address indexed candidate, address indexed candidateContract, string memo )
후보자 생성 이벤트
후보자(candidate)의 후보자 컨트랙트(candidateContract)를 생성하여, 후보자 컨트랙트를 통해서 후보자만 사용할 수 있는 기능( 위원회 지원, 의제에 투표 , 활동비 지급, 위원회 사임 )을 제공한다.
memo 값으로 다오웹(앱)에서 후보자 식별을 쉽게 할 수 있습니다.
event OperatorRegistered( address indexed candidate, address indexed candidateContract, string memo )
Layer2를 후보자(candidate)로 등록하는 이벤트
토카막 네트워크의 Layer2는 후보자로 활동할 수 있습니다. 또한 Layer2에 스테이킹된 양은 후보자를 지지하는 투표수로 사용됩니다.
등록할 때 memo 값으로 다오웹(앱)에서 후보자 식별을 쉽게 할 수 있습니다.
event ChangedMember( uint256 indexed slotIndex, address prevMember, address indexed newMember )
위원회 멤버 변경 이벤트
event ChangedSlotMaximum( uint256 indexed prevSlotMax, uint256 indexed slotMax )
위원회 멤버의 최대수가 prevSlotMax에서 slotMax로 변경되었음을 알려주는 이벤트.
event ClaimedActivityReward( address indexed candidate, address receiver, uint256 amount )
후보자(candidate)자의 amount 활동비를 receiver에게 지급 이벤트
후보자(candidate)가 Layer2 일때, receiver는 layer2의 오퍼레이터가 됩니다
( 2 ) 안건 관련 이벤트
****event QuorumChanged( uint256 newQuorum )
안건의 결과를 내기 위한 정족수 결정 이벤트
특정 투표수가 newQuorum 수 이상 되면 안건 결과가 집계됩니다.
event AgendaCreated( address indexed from, uint256 indexed id, address[] targets, uint256 noticePeriodSeconds, uint256 votingPeriodSeconds )
안건이 생성 이벤트
from 이 안건번호(id)로 컨트랙(targets)을 호출하는 안건을 생성하였습니다. 해당 안건은 공지기간 (noticePeriodSeconds 초)과 투표기간( votingPeriodSeconds 초)을 거친후, 결과에 따라 실행될 수 있습니다.
event AgendaVoteCasted( address indexed from, uint256 indexed id, uint voting, string comment )
안건 투표 이벤트
from 이 안건(id)에 voting(투표 0: 기권, 1:찬성, 2:반대)를 행사하였습니다.
투표시 comment를 남길 수 있습니다.
event AgendaExecuted( uint256 indexed id, address[] target )
안건 실행 이벤트
id 안건이 컨트랙(target)의 함수를 실행했습니다.
DAOAgendaManager Contract
event AgendaStatusChanged( uint256 indexed agendaID, uint256 prevStatus, uint256 newStatus )
안건의 상태 변경 이벤트
안건의 상태가 변경되면 발생됩니다. agendaID 안건의 이전 상태와 변경된 상태값을 알 수 있습니다.
상태코드 0:NONE, 1:NOTICE, 2:VOTING, 3:WAITING_EXEC, 4:EXECUTED, 5:ENDED
event AgendaResultChanged( uint256 indexed agendaID, uint256 result )
안건의 결과 변경 이벤트
안건의 결과가 집계되면 발생됩니다. agendaID 안건의 결과를 알 수 있습니다.
결과코드 0: PENDING, 1: ACCEPT, 2: REJECT, 3: DISMISS
DepositManager Contract
event Deposited(address indexed layer2, address depositor, uint256 amount)
토카막 네트워크의 Layer2 에 스테이킹 하거나 DAO 의 Candidate에 투표할때, 발생하는 이벤트입니다.
event WithdrawalRequested(address indexed layer2, address depositor, uint256 amount)
토카막 네트워크의 Layer2 에 언스테이킹 요청을 하거나, DAO 의 Candidate 에 Unvote 할때, 발생하는 이벤트입니다.
event WithdrawalProcessed(address indexed layer2, address depositor, uint256 amount)
토카막 네트워크의 Layer2 에서 언스테이킹 출금이 되거나, DAO 의 Candidate 에서 출금될 때, 발생하는 이벤트입니다.
SeigManager Contract
event SeigGiven(address indexed layer2, uint256 totalSeig, uint256 stakedSeig, uint256 unstakedSeig, uint256 powertonSeig, uint256 pseig)
시뇨리지 발행 이벤트
event Comitted(address indexed layer2)
레이어2(후보자)의 시뇨리지 반영 이벤트
레이어2(후보자)의 오퍼레이터(후보자)의 커미션이 적용되고, 레이어2의 오퍼레이터(후보자)와 위임자(투표자)들에게 시뇨리지가 부여됩니다.
event CommissionRateSet(address indexed layer2, uint256 previousRate, uint256 newRate)
layer2의 커미션율 변동 이벤트
WTON Contract
Transfer(address(0), account, amount)
WTON 전송 이벤트