Skip to content

去中心化組織

概覽

本模組是實現去中心化組織的核心模組,實現了集群的概念

具體相關概念、演算法、模型 詳見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