1. DB Schema
Agenda
{
agendaid: Number, // 의제 아이디
creator: String, // 의제 생성한 계정 주소
status: Number, // 의제 상태값. AgendaStatus { NONE :0 , NOTICE:1, VOTING:2, EXEC:3, ENDED:4, PENDING:5, RISK:6 }
result: Number, // 의제 결과. AgendaResult { UNDEFINED:0, ACCEPT:1, REJECT:2, DISMISS:3 }
executed: Boolean , // 실행여부 true 실행함, false: 실행안함.
executor: String , // 실행 트랜잭션을 보낸 주소
tCreationDate: Number, // 의제 생성시간
tNoticeEndTime: Number, // 공지 종료시간
tVotingStartTime: Number, // 투표 시작시간,
tVotingEndTime: Number, // 투표 종료시간,
tExecTime: Number, // 의제 실행시간
countAbstainVotes: Number, // 기권 투표수,
countYesVotes: Number, // 찬성 투표수,
countNoVotes: Number, // 반대 투표수 ,
target: String, // 의제 실행 컨트랙 주소
functionBytecode: String , // 의제 실행 함수, 실행이 된 후에 정보가 없데이트 됨.
description: String, // 의제 설명 ( 컨트랙 생성시 입력되는 설명, 의제 상세정보와 다름 )
voters: [String], // 의제 투표가능한자 (위원회)
chainId: Number, // 체인아이디 mainnet:1, rinkeby: 4
blockNumber: Number, // 의제 생성시 블록 번호
transactionHash: String, // 의제 생성시 트랜잭션
statusUpdateBlock: Number, // 가장 최근의 상태값 변경시 블록번호
resultUpdateBlock: Number, // 가장 최근의 결과값 변경시 블록번호
createdTime: Number, // DB 레코드 생성시간,
updated: Number , // DB 레코드 업데이트 시간
}
Agendavote
{
agendaid: Number, // 의제 번호
voter: String, // 투표자 주소
hasVoted: Boolean, // 투표여부
vote: Number, // 투표 정보 VoteChoice { ABSTAIN:0, YES: 1, NO: 2, MAX:3 }
comment : String, //
createdTime: Number,
updated: Number ,
}
Agendacontent
{
agendaid: Number, // 의제 아이디
creator: String, // 의제 생성자
tx: String, // 의제 생성 트랜잭션
contents: String, // 상세정보
del : Boolean,
chainId : Number, // 체인아이디 mainnet:1, rinkeby: 4
createdTime: Number,
updated: Number ,
}
Layer2coinage
{
layer2: String, // 레이어2 주소
operator: String, // 오퍼레이터 주소
coinageAddress: String, // 코인에이지 주소
operatorAmount: Number, // 오퍼레이터 잔액
coinageTotalSupply: Number, // 코인에이지 총수량
totTotalSupply: Number, // tot 총수량
chainId: Number, // 체인아이디 mainnet:1, rinkeby: 4
blockNumber: Number, // 집계시 블록번호
transactionHash: String, // 집계시 트랜잭션해쉬
createdTime: Number,
updated: Number ,
}
Layer2 ( Operator )
{
layer2: String, // 레이어2 주소 : dao일때는 candidateContract 값이 기록됨.
candidateContract: String, // candidateContract의 주소
operator: String, // 오퍼레이터 주소 : dao일때 candidate(EOA)
kind: String, // 레이어2 종류, dao-> candidate , 기존layer2 -> layer2
name: String, // 이름
website: String, // 웹사이트
description: String, // 설명
memberJoinedTime: Number, // 멤버 조인 시간
indexMembers: Number, // 멤버 인덱스 번호
rewardPeriod: Number, // 멤버 활동기간 관련
claimedTimestamp: Number, // 멤버 활동비 지급된 시간
chainId: Number, // 체인아이디 mainnet:1, rinkeby: 4
blockNumber: Number, // 해당 정보 추가시점의 블록번호,
transactionHash: String, // 해당 정보 추가시점의 트랜잭션 해쉬
updateCoinageBlock:Number, // 가장 최근에 Layer2coinage 필드 업데이트 시점의 블록번호
updateCoinageTime: Number, // 가장 최근에 Layer2coinage 필드 업데이트 시점의 시간
updateCoinageTotal:Number, // 가장 최근에 Layer2coinage 필드 업데이트때의 코인에이지 총수량
createdTime: Number,
updated: Number ,
}
DAO Candidate
{
candidate: String, // dao일때는 EOA, layer2일때는 CA(layer2주소)
candidateContract: String, // candidateContract의 주소
kind: String, // 레이어2 종류, dao-> **candidate** , 기존layer2 -> **layer2**
name: String, // 이름
website: String, // 웹사이트
description: String, // 설명
chainId: Number, // 체인아이디 mainnet:1, rinkeby: 4
blockNumber: Number, // 해당 정보 추가시점의 블록번호,
transactionHash: String, // 해당 정보 추가시점의 트랜잭션 해쉬
updateCoinageBlock:Number, // 가장 최근에 Layer2coinage 필드 업데이트 시점의 블록번호
updateCoinageTime: Number, // 가장 최근에 Layer2coinage 필드 업데이트 시점의 시간
updateCoinageTotal:Number, // 가장 최근에 Layer2coinage 필드 업데이트때의 코인에이지 총수량
}