去中心化組織
概覽
本模組是實現去中心化組織
的核心模組,實現了集群
的概念
具體相關概念、演算法、模型 詳見https://www.daodst.com
目錄
設備集群
集群會在普通集群進行升級的時候創建,創建集群需要群主銷毀一定額度的dst 一般成員會同步提升為設備成員,無需銷毀即可定期獲得獎勵 當錢包選擇在集群下銷毀時,會獲得此集群下的虛擬機,定期獲得獎勵,以及合約算力授權的功能
狀態
dao關於集群的鏈上的數據記錄
// 集群
type DeviceCluster struct {
ClusterId string `json:"cluster_id"` //集群id
ClusterChatId string `json:"cluster_chat_id"` //集群通訊id
ClusterName string `json:"cluster_name"` //集群名稱
ClusterOwner string `json:"cluster_owner"` //集群群主地址
ClusterGateway string `json:"cluster_gateway"` //集群所屬的驗證器
ClusterLeader string `json:"cluster_leader"` //橋接集群
ClusterDeviceMembers map[string]ClusterDeviceMember `json:"cluster_device_members"` //集群設備成員
ClusterPowerMembers map[string]ClusterPowerMember `json:"cluster_power_members"` //集群算力成員
ClusterPower sdk.Dec `json:"cluster_power"` //集群總算力
ClusterLevel int64 `json:"cluster_level"` //集群等級
ClusterBurnAmount sdk.Dec `json:"cluster_burn_amount"` //集群總銷毀數
ClusterActiveDevice int64 `json:"cluster_active_device"` //集群活躍設備
ClusterDaoPool string `json:"cluster_dao_pool"` //集群dao組織池地址
ClusterRouteRewardPool string `json:"cluster_route_reward_pool"` //集群路由橋接獎勵池
ClusterDeviceRatio sdk.Dec `json:"cluster_device_ratio"` //集群設備獎勵比例
ClusterDeviceRatioUpdateHeight int64 `json:"cluster_device_ratio_update_height"` //設備比例最後更新高度
ClusterSalaryRatio sdk.Dec `json:"cluster_salary_ratio"` //集群薪資獎勵比例
ClusterDvmRatio sdk.Dec `json:"cluster_dvm_ratio"` //集群dao組織池挖礦群主獎勵比例
ClusterDaoRatio sdk.Dec `json:"cluster_dao_ratio"` //集群dao獎勵比例
ClusterSalaryRatioUpdateHeight ClusterChangeRatioHeight `json:"cluster_salary_ratio_update_height"` //群主工資比例最後更新高度
OnlineRatio sdk.Dec `json:"online_ratio"` //在線率
OnlineRatioUpdateTime int64 `json:"online_ratio_update_time"` //在線率更新時間
ClusterAdminList map[string]struct{} `json:"cluster_admin_list"` //群組管理員及其權限列表
ClusterVoteId uint64 `json:"cluster_vote_id"` //群投票id
ClusterVotePolicy string `json:"cluster_vote_policy"` //集群投票訊息固定簽名帳號
}
普通群 升級為設備群集時,初始化此結構體
群操作
升級為設備集群後,部分群組操作需要同步進行上鍊操作,包括:增加成員、群組主(管理員)踢出成員、更新群組管理員清單、更改群組名稱、更改群組或群組的獎勵比例
dao組織池
每個設備集群在創建時,會初始化一個特殊的錢包位址,用來儲存集群公共的資金等
銷毀與獎勵
透過集群獲得獎勵 ,有三種方式
1.銷毀dst兌換成此集群下的算力(成為此集群的算力成員) 2.成為設備成員 3.創建自己的集群,成為群主,領取群主工資
算力成員獎勵
群集成員可以在群集下銷毀一定數量的dst,依照全網兌換比例轉換為個人和群集的算力值。 全網每日有固定數量的dst產出,根據集群算力值的佔比,給予獎勵。集群算力值佔全網總算力值的比例越高,獎勵越多。 個人算力值佔集群算力值的比例越高,獎勵越多。
設備成員獎勵
算力成員領取獎勵時,會依固定比例(群主設定),分出一部分給設備獎勵池 設備獎勵池將根據設備數量,週期性的均分發給設備成員
群主薪資獎勵
算力成員銷毀時,其中一部分會增發為dst ,由dao組織池銷毀,兌換算力獲得的獎勵,其中的一部分(比例由群主設定),給予群主,作為群主獎勵, 剩下的一部分,沉澱到dao組織池,可以由群員投票其歸屬
dvm
創世認籌
DST為社區自製公鏈,本著完全去中心化的原則,進行全球創世認籌。 參與創世認籌需在開源社區下載程式,創建設備集群且成員達到100即可參加,參與創世認籌將USDT跨鏈至DST鏈打入認籌合約中, 合約將以0.03的價格兌換DST,並會自動銷毀1:1兌換成GAS算力到認籌地址。 創世認籌的USDT為所有DST社群共有,全部用於創建DST流動性,且LP將自动打入黑洞在鏈上銷毀。
gas抵扣
1.個人在集群下的算力,產生gas抵扣額度,可以抵扣资产轉帳(含dst、nxn、dao)產生的gas費
2.群主在群集下的抵扣額度,可以給予群成員的群相關操作抵扣gas
授權合約
每個虛擬機器可以指定授權某一合約,並抵扣合約產生的gas費用
1.個人算力可以授權給某一合約,並指定到期高度
2.dao組織池也可以授權給某一合約,由群組內投票決定
投票
集群內部可以發起投票,以決定
1、dao組織池的餘額的轉賬
2、dao組織池的合約授權
集群內部投票,群主占20%的權重,其他人的權重平均分配
預言機
dao模組儲存了關於集群的線上費率信息,可透過廣播公開給所有網關
橋接集群
如果某地址a的首次銷毀是在集群A下,之後a創建了集群B
那麼A為B的橋接集群
訊息
MsgColonyRate
透過此消息,將網關下集群的線上率更新到區塊鏈
type MsgColonyRate struct {
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
GatewayAddress string `protobuf:"bytes,2,opt,name=gateway_address,json=gatewayAddress,proto3" json:"gateway_address,omitempty"`
OnlineRate []ColonyRate `protobuf:"bytes,3,rep,name=online_rate,json=onlineRate,proto3" json:"online_rate"`
}
MsgCreateClusterAddMembers
透過此訊息把普通集群升級為設備集群,或創建設備集群
type MsgCreateClusterAddMembers struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
GateAddress string `protobuf:"bytes,2,opt,name=gate_address,json=gateAddress,proto3" json:"gate_address,omitempty" yaml:"gate_address"`
ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
SalaryRatio github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,4,opt,name=salary_ratio,json=salaryRatio,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"salary_ratio" yaml:"salary_ratio"`
BurnAmount github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,5,opt,name=burn_amount,json=burnAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"burn_amount" yaml:"burn_amount"`
ChatAddress string `protobuf:"bytes,6,opt,name=chat_address,json=chatAddress,proto3" json:"chat_address,omitempty" yaml:"chat_address"`
ClusterName string `protobuf:"bytes,7,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty" yaml:"cluster_name"`
FreezeAmount github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,8,opt,name=freeze_amount,json=freezeAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"freeze_amount" yaml:"freeze_amount"`
Metadata string `protobuf:"bytes,9,opt,name=metadata,proto3" json:"metadata,omitempty" yaml:"metadata"`
ClusterDaoRatio github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=cluster_dao_ratio,json=clusterDaoRatio,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"cluster_dao_ratio" yaml:"cluster_dao_ratio"`
Members []Members `protobuf:"bytes,11,rep,name=members,proto3" json:"members" yaml:"members"`
MemberOnlineAmount int64 `protobuf:"varint,12,opt,name=member_online_amount,json=memberOnlineAmount,proto3" json:"member_online_amount,omitempty" yaml:"member_online_amount"`
OwnerIndexNum string `protobuf:"bytes,13,opt,name=owner_index_num,json=ownerIndexNum,proto3" json:"owner_index_num,omitempty" yaml:"owner_index_num"`
GatewaySign string `protobuf:"bytes,14,opt,name=gateway_sign,json=gatewaySign,proto3" json:"gateway_sign,omitempty" yaml:"gateway_sign"`
}
MsgClusterAddMembers
透過此訊息為群組增加新成員,支援批量
type MsgClusterAddMembers struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
Members []Members `protobuf:"bytes,3,rep,name=members,proto3" json:"members" yaml:"members"`
}
MsgBurnToPower
透過此訊息,在某一集群下銷毀獲得算力
type MsgBurnToPower struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ToAddress string `protobuf:"bytes,2,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty" yaml:"to_address"`
ClusterId string `protobuf:"bytes,3,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
BurnAmount github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,4,opt,name=burn_amount,json=burnAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"burn_amount" yaml:"burn_amount"`
UseFreezeAmount github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,5,opt,name=use_freeze_amount,json=useFreezeAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"use_freeze_amount" yaml:"use_freeze_amount"`
GatewayAddress string `protobuf:"bytes,6,opt,name=gateway_address,json=gatewayAddress,proto3" json:"gateway_address,omitempty" yaml:"gateway_address"`
ChatAddress string `protobuf:"bytes,7,opt,name=chat_address,json=chatAddress,proto3" json:"chat_address,omitempty" yaml:"chat_address"`
}
MsgClusterChangeDeviceRatio
透過此訊息,修改設備獎勵的分成比例
type MsgClusterChangeDeviceRatio struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
DeviceRatio github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=device_ratio,json=deviceRatio,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"device_ratio" yaml:"device_ratio"`
}
MsgClusterChangeSalaryRatio
透過此訊息,修改群主工資的獲取比例
type MsgClusterChangeSalaryRatio struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
SalaryRatio github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=salary_ratio,json=salaryRatio,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"salary_ratio" yaml:"salary_ratio"`
}
MsgClusterChangeId
透過此訊息,修改集群的id
type MsgClusterChangeId struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
NewClusterId string `protobuf:"bytes,3,opt,name=new_cluster_id,json=newClusterId,proto3" json:"new_cluster_id,omitempty" yaml:"new_cluster_id"`
}
MsgWithdrawOwnerReward
群主領取薪資獎勵
type MsgWithdrawOwnerReward struct {
ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
}
MsgWithdrawSwapDpos
贖回swap質押
type MsgWithdrawSwapDpos struct {
ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
MemberAddress string `protobuf:"bytes,2,opt,name=member_address,json=memberAddress,proto3" json:"member_address,omitempty"`
DaoNum string `protobuf:"bytes,3,opt,name=dao_num,json=daoNum,proto3" json:"dao_num,omitempty"`
}
MsgWithdrawDeviceReward
領取設備獎勵
type MsgWithdrawDeviceReward struct {
ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
MemberAddress string `protobuf:"bytes,2,opt,name=member_address,json=memberAddress,proto3" json:"member_address,omitempty"`
}
MsgDeleteMembers
群組主(或管理員)移除群組成員(支援批次)
type MsgDeleteMembers struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
Members []string `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty" yaml:"members"`
}
MsgClusterMemberExit
群組成員主動退群
type MsgClusterMemberExit struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
}
MsgClusterChangeName
集群更換名稱
type MsgClusterChangeName struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
ClusterName string `protobuf:"bytes,3,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty" yaml:"cluster_name"`
}
MsgUpdateAdmin
集群更新群管理名單
type MsgUpdateAdmin struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
ClusterAdminList []string `protobuf:"bytes,3,rep,name=cluster_admin_list,json=clusterAdminList,proto3" json:"cluster_admin_list,omitempty" yaml:"cluster_admin_list"`
}
MsgClusterPowerApprove
集群算力授權合約
type MsgClusterPowerApprove struct {
ApproveAddress string `protobuf:"bytes,1,opt,name=approve_address,json=approveAddress,proto3" json:"approve_address,omitempty" yaml:"approve_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
ApproveEndBlock string `protobuf:"bytes,3,opt,name=approve_end_block,json=approveEndBlock,proto3" json:"approve_end_block,omitempty" yaml:"approve_end_Block"`
FromAddress string `protobuf:"bytes,4,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
}
MsgPersonDvmApprove
個人DVM合約授權
type MsgPersonDvmApprove struct {
ApproveAddress string `protobuf:"bytes,1,opt,name=approve_address,json=approveAddress,proto3" json:"approve_address,omitempty" yaml:"approve_address"`
ClusterId string `protobuf:"bytes,2,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
ApproveEndBlock string `protobuf:"bytes,3,opt,name=approve_end_block,json=approveEndBlock,proto3" json:"approve_end_block,omitempty" yaml:"approve_end_Block"`
FromAddress string `protobuf:"bytes,4,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
}
MsgClusterAd
集群廣告投放
type MsgClusterAd struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
ClusterId []string `protobuf:"bytes,2,rep,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty" yaml:"cluster_id"`
AdText string `protobuf:"bytes,3,opt,name=ad_text,json=adText,proto3" json:"ad_text,omitempty" yaml:"ad_text"`
}
參數
dao模塊包含如下模塊參數
參數
Key | 類型 | 預設值 |
---|---|---|
Rate |
github_com_cosmos_cosmos_sdk_types.Dec | 0.1 |
SalaryRewardRatio |
0.00~0.49 |
|
DvmRewardRatio |
github.com/cosmos/cosmos-sdk/types.Coin | 0.00~0.49 |
BurnGetPowerRatio |
github.com/cosmos/cosmos-sdk/types.Coin | 100 |
MaxClusterMembers |
int64 | 666 |
MinCreateClusterPledgeAmount |
github_com_cosmos_cosmos_sdk_types.Int | 5000 |
DposRewardPercent |
github.com/cosmos/cosmos-sdk/types.Coin | 0.1 |
BurnCurrentGateRatio |
github.com/cosmos/cosmos-sdk/types.Coin | 0.0575 |
BurnRegisterGateRatio |
github.com/cosmos/cosmos-sdk/types.Coin | 0.0375 |
DayMintAmount |
github.com/cosmos/cosmos-sdk/types.Coin | 360000000000000000000000 |
PowerGasRatio |
github.com/cosmos/cosmos-sdk/types.Coin | 100 |
AdPrice |
github.com/cosmos/cosmos-sdk/types.Coin | 0.05 |
AdRate |
github.com/cosmos/cosmos-sdk/types.Coin | 0.2 |
BurnLevels |
multi BurnLevel | see https://raw.githubusercontent.com/daodst/home/main/DAO_Secret%20Telegram_Whitepaper_V1.21_EN.pdf |
ClusterLevels |
multi ClusterLevel | see https://raw.githubusercontent.com/daodst/home/main/DAO_Secret%20Telegram_Whitepaper_V1.21_EN.pdf |
DaoRewardPercent |
github.com/cosmos/cosmos-sdk/types.Dec | 0.02 |
BurnRewardFeeRate |
github.com/cosmos/cosmos-sdk/types.Dec | 0.3 |
ReceiveDaoRatio |
github.com/cosmos/cosmos-sdk/types.Dec | 0.075 |
ConnectivityDaoRatio |
github.com/cosmos/cosmos-sdk/types.Dec | 0.7 |
BurnDaoPool |
github.com/cosmos/cosmos-sdk/types.Dec | 0.1 |
DaoRewardRatio |
RatioLimit | 0~0.9 |
MaxOnlineRatio |
github.com/cosmos/cosmos-sdk/types.Dec | 0.6 |
VotingPeriod |
time.Duration | 86400s |
MintBlockInterval |
int64 | 3600 |
CrossFee |
CrossFee | 0x4918aD481e4512DedE7565A8a4ddbc06881D9Bf7 / 150000 |
SwapContract |
string | `` |
TranslateMin |
github.com/cosmos/cosmos-sdk/types.Dec | 0.075 |
DaoIncreaseRatio |
github.com/cosmos/cosmos-sdk/types.Dec | 0.01 |
DaoIncreaseHeight |
int64 | 600 |