合約
此模块负责和evm有关的交易和查询
chat/
├── client
│ └── rest
│ ├── error.go # 介面錯誤集
│ ├── grpc.go # grpc査詢方法
│ ├── handle_comm.go # comm模塊消息前置處理
│ ├── query.go # 介面査詢函數
│ ├── rest.go # 消息與査詢路由的注册
│ └── tx.go # tx相關方法,包括廣播等
├── keeper
│ ├── genesis.go # 模塊的狀態化和匯出
│ ├── keeper.go # 存儲管理器,處理模塊的業務邏輯,並有許可權訪問狀態樹的特定子樹
│ ├── msg_server.go # 提供上鏈消息的服務處理邏輯
│ ├── params.go # 模塊參數的設定和獲取
│ ├── query.go # 狀態査詢函數
│ ├── medal.go # hash币质押计算相关逻辑算法
│ └── mingkeeper.go # 铸造增发相关逻辑算法
├── types
│ ├── codec.go # 編碼注册類型
│ ├── errors.go # 模塊特定的錯誤
│ ├── events.go # 向Tendermint PubSub/Websocket暴露的事件
│ ├── genesis.go # 模塊的創世狀態
│ ├── interface.go # 模塊的介面集合
│ ├── keys.go # 模塊存儲key以及一些其他的常數
│ ├── msg.go # 聊天模塊交易消息
│ ├── params.go # 模塊可以通過治理模塊修改的自定義參數
│ ├── interface.go # 引入的外部模块实现的方法
│ └── types.go # 模塊的類型集合
├── genesis.go # ABCI的創世狀態初始化和匯出功能
├── handler.go # 消息路由
└── module.go # 模塊管理器的模塊設定
概述
合約
Contract負責和evm合約的有關內容
一鍵發幣
用戶可以通過消息直接在evm上發佈自己的代幣,只需要上傳代幣的一些基本資訊即可,不需要部署代幣合約
一切都在合約內部自動完成
跨鏈轉帳
可以通過此模塊實現DaoDst到外鏈的代幣映射轉帳(如ETH),跨鏈支持雙向
當DaoDst向外部鏈跨鏈轉帳時,會將Daodst內部的餘額凍結,同時,外部鏈合約增發對應代幣
對應的,進行相反操作時,外部鏈銷毀,Daodst解凍
功能
合约模塊' Keeper '授予對聊天模塊狀態的存取權限 並實現' statedb。 介面,以支持' StateDB '實現。 Keeper包含一個允許資料庫的存儲鍵 寫入只能由Chat模塊訪問的多庫的具體子樹。 而不是使用樹和資料庫進行査詢和持久化(' StateDB '實現), DaoDst使用Cosmos的“KVStore”(鍵值存儲)和Cosmos SDK的“Keeper”來促進狀態轉換。
為了支持介面功能,它導入了7個模塊Keepers:
auth
: 帳號的增删改查bank
: 供應量和餘額的增删改查staking
: 閘道相關資料的管理pledge
: 聊天相关数据的管理evm
: evm相关数据的管理chat
: 聊天相關資料的管理gateway
: 閘道資料管理
type Keeper struct {
storeKey sdk.StoreKey
cdc codec.BinaryCodec
paramstore paramtypes.Subspace
stakingKeeper *stakingKeeper.Keeper
accountKeeper types.AccountKeeper
BankKeeper types.BankKeeper
pledgeKeeper types.PledgeKeeper
evmKeeper types.EVMKeeper
chatKeeper types.ChatKeeper
gatewayKeeper types.GatewayKeeper
erc20Keeper erc20keeper.Keeper
}
消息
MsgAppTokenIssue
通過此消息,發起一鍵發幣
type MsgAppTokenIssue struct {
FromAddress string `protobuf:"bytes,1,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty" yaml:"from_address"`
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty" yaml:"name"`
Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty" yaml:"symbol"`
PreMintAmount string `protobuf:"bytes,4,opt,name=pre_mint_amount,json=preMintAmount,proto3" json:"pre_mint_amount,omitempty" yaml:"pre_mint_amount"`
Decimals string `protobuf:"bytes,5,opt,name=decimals,proto3" json:"decimals,omitempty" yaml:"decimals"`
LogoUrl string `protobuf:"bytes,6,opt,name=logo_url,json=logoUrl,proto3" json:"logo_url,omitempty" yaml:"logo_url"`
}
MsgCrossChainOut
通過此消息,從DaoDst向外發起跨鏈轉帳
type MsgCrossChainOut struct {
SendAddress string `protobuf:"bytes,1,opt,name=send_address,json=sendAddress,proto3" json:"send_address,omitempty" yaml:"send_address"`
ToAddress string `protobuf:"bytes,2,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty" yaml:"to_address"`
Coins string `protobuf:"bytes,3,opt,name=coins,proto3" json:"coins,omitempty" yaml:"coins"`
ChainType string `protobuf:"bytes,4,opt,name=chain_type,json=chainType,proto3" json:"chain_type,omitempty" yaml:"chain_type"`
Remark string `protobuf:"bytes,5,opt,name=remark,proto3" json:"remark,omitempty" yaml:"remark"`
}
MsgCrossChainIn
通過此消息,從外部鏈發起向DaoDst的跨鏈轉帳
type MsgCrossChainIn struct {
SendAddress string `protobuf:"bytes,1,opt,name=send_address,json=sendAddress,proto3" json:"send_address,omitempty" yaml:"send_address"`
Coins string `protobuf:"bytes,2,opt,name=coins,proto3" json:"coins,omitempty" yaml:"coins"`
ChainType string `protobuf:"bytes,3,opt,name=chain_type,json=chainType,proto3" json:"chain_type,omitempty" yaml:"chain_type"`
Remark string `protobuf:"bytes,4,opt,name=remark,proto3" json:"remark,omitempty" yaml:"remark"`
TxHash string `protobuf:"bytes,5,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty" yaml:"tx_hash"`
}