Skip to content

合約

此模块负责和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"`
    }