github.com/turingchain2020/turingchain@v1.1.21/types/cfg.go (about) 1 // Copyright Turing Corp. 2018 All Rights Reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package types 6 7 import "github.com/turingchain2020/turingchain/common/crypto" 8 9 // Config 配置信息 10 type Config struct { 11 Title string `json:"title,omitempty"` 12 Version string `json:"version,omitempty"` 13 Log *Log `json:"log,omitempty"` 14 Store *Store `json:"store,omitempty"` 15 Consensus *Consensus `json:"consensus,omitempty"` 16 Mempool *Mempool `json:"memPool,omitempty"` 17 BlockChain *BlockChain `json:"blockChain,omitempty"` 18 Wallet *Wallet `json:"wallet,omitempty"` 19 P2P *P2P `json:"p2p,omitempty"` 20 RPC *RPC `json:"rpc,omitempty"` 21 Exec *Exec `json:"exec,omitempty"` 22 TestNet bool `json:"testNet,omitempty"` 23 FixTime bool `json:"fixTime,omitempty"` 24 TxHeight bool `json:"txHeight,omitempty"` 25 Pprof *Pprof `json:"pprof,omitempty"` 26 Fork *ForkList `json:"fork,omitempty"` 27 Health *HealthCheck `json:"health,omitempty"` 28 CoinSymbol string `json:"coinSymbol,omitempty"` 29 EnableParaFork bool `json:"enableParaFork,omitempty"` 30 Metrics *Metrics `json:"metrics,omitempty"` 31 ChainID int32 `json:"chainID,omitempty"` 32 AddrVer byte `json:"addrVer,omitempty"` 33 Crypto *crypto.Config `json:"crypto,omitempty"` 34 NtpHosts []string `json:"ntpHosts,omitempty"` 35 } 36 37 //ConfigSubModule 子模块的配置 38 type ConfigSubModule struct { 39 Store map[string][]byte 40 Exec map[string][]byte 41 Consensus map[string][]byte 42 Wallet map[string][]byte 43 Mempool map[string][]byte 44 Metrics map[string][]byte 45 P2P map[string][]byte 46 Crypto map[string][]byte 47 } 48 49 // subModule 子模块结构体 50 type subModule struct { 51 Store map[string]interface{} 52 Exec map[string]interface{} 53 Consensus map[string]interface{} 54 Wallet map[string]interface{} 55 Mempool map[string]interface{} 56 Metrics map[string]interface{} 57 P2P map[string]interface{} 58 Crypto map[string]interface{} 59 } 60 61 // ForkList fork列表配置 62 type ForkList struct { 63 System map[string]int64 64 Sub map[string]map[string]int64 65 } 66 67 // Log 日志配置 68 type Log struct { 69 // 日志级别,支持debug(dbug)/info/warn/error(eror)/crit 70 Loglevel string `json:"loglevel,omitempty"` 71 LogConsoleLevel string `json:"logConsoleLevel,omitempty"` 72 // 日志文件名,可带目录,所有生成的日志文件都放到此目录下 73 LogFile string `json:"logFile,omitempty"` 74 // 单个日志文件的最大值(单位:兆) 75 MaxFileSize uint32 `json:"maxFileSize,omitempty"` 76 // 最多保存的历史日志文件个数 77 MaxBackups uint32 `json:"maxBackups,omitempty"` 78 // 最多保存的历史日志消息(单位:天) 79 MaxAge uint32 `json:"maxAge,omitempty"` 80 // 日志文件名是否使用本地事件(否则使用UTC时间) 81 LocalTime bool `json:"localTime,omitempty"` 82 // 历史日志文件是否压缩(压缩格式为gz) 83 Compress bool `json:"compress,omitempty"` 84 // 是否打印调用源文件和行号 85 CallerFile bool `json:"callerFile,omitempty"` 86 // 是否打印调用方法 87 CallerFunction bool `json:"callerFunction,omitempty"` 88 } 89 90 // Mempool 配置 91 type Mempool struct { 92 // mempool队列名称,可配,timeline,score,price 93 Name string `json:"name,omitempty"` 94 // mempool缓存容量大小,默认10240 95 PoolCacheSize int64 `json:"poolCacheSize,omitempty"` 96 ForceAccept bool `json:"forceAccept,omitempty"` 97 // 每个账户在mempool中得最大交易数量,默认100 98 MaxTxNumPerAccount int64 `json:"maxTxNumPerAccount,omitempty"` 99 MaxTxLast int64 `json:"maxTxLast,omitempty"` 100 IsLevelFee bool `json:"isLevelFee,omitempty"` 101 // 最小单元交易费,这个没有默认值,必填,一般是100000 102 MinTxFeeRate int64 `json:"minTxFeeRate,omitempty"` 103 // 最大单元交易费, 默认1e7 104 MaxTxFeeRate int64 `json:"maxTxFeeRate,omitempty"` 105 // 单笔最大交易费, 默认1e9 106 MaxTxFee int64 `json:"maxTxFee,omitempty"` 107 // 目前execCheck效率较低,支持关闭交易execCheck,提升性能 108 DisableExecCheck bool `json:"disableExecCheck,omitempty"` 109 } 110 111 // Consensus 配置 112 type Consensus struct { 113 // 共识名称 :solo, ticket, raft, tendermint, para 114 Name string `json:"name,omitempty"` 115 // 创世区块时间(UTC时间) 116 GenesisBlockTime int64 `json:"genesisBlockTime,omitempty"` 117 // 是否开启挖矿,开启挖矿才能创建区块 118 Minerstart bool `json:"minerstart,omitempty"` 119 // 创世交易地址 120 Genesis string `json:"genesis,omitempty"` 121 HotkeyAddr string `json:"hotkeyAddr,omitempty"` 122 ForceMining bool `json:"forceMining,omitempty"` 123 // 配置挖矿的合约名单 124 MinerExecs []string `json:"minerExecs,omitempty"` 125 // 最优区块选择 126 EnableBestBlockCmp bool `json:"enableBestBlockCmp,omitempty"` 127 } 128 129 // Wallet 配置 130 type Wallet struct { 131 // 交易发送最低手续费,单位0.00000001TRC(1e-8),默认100000,即0.001TRC 132 MinFee int64 `json:"minFee,omitempty"` 133 // walletdb驱动名 134 Driver string `json:"driver,omitempty"` 135 // walletdb路径 136 DbPath string `json:"dbPath,omitempty"` 137 // walletdb缓存大小 138 DbCache int32 `json:"dbCache,omitempty"` 139 // 钱包发送交易签名方式 140 SignType string `json:"signType,omitempty"` 141 CoinType string `json:"coinType,omitempty"` 142 } 143 144 // Store 配置 145 type Store struct { 146 // 数据存储格式名称,目前支持mavl,kvdb,kvmvcc,mpt 147 Name string `json:"name,omitempty"` 148 // 数据存储驱动类别,目前支持leveldb,goleveldb,memdb,gobadgerdb,ssdb,pegasus 149 Driver string `json:"driver,omitempty"` 150 // 数据文件存储路径 151 DbPath string `json:"dbPath,omitempty"` 152 // Cache大小 153 DbCache int32 `json:"dbCache,omitempty"` 154 // 数据库版本 155 LocalDBVersion string `json:"localdbVersion,omitempty"` 156 // 数据库版本 157 StoreDBVersion string `json:"storedbVersion,omitempty"` 158 } 159 160 // BlockChain 配置 161 type BlockChain struct { 162 // 分片存储中每个大块包含的区块数 163 ChunkblockNum int64 `json:"chunkblockNum,omitempty"` 164 // 缓存区块的个数 165 DefCacheSize int64 `json:"defCacheSize,omitempty"` 166 // 同步区块时一次最多申请获取的区块个数 167 MaxFetchBlockNum int64 `json:"maxFetchBlockNum,omitempty"` 168 // 向对端节点请求同步区块的时间间隔 169 TimeoutSeconds int64 `json:"timeoutSeconds,omitempty"` 170 BatchBlockNum int64 `json:"batchBlockNum,omitempty"` 171 // 使用的数据库类型 172 Driver string `json:"driver,omitempty"` 173 // 数据库文件目录 174 DbPath string `json:"dbPath,omitempty"` 175 // 数据库缓存大小 176 DbCache int32 `json:"dbCache,omitempty"` 177 IsStrongConsistency bool `json:"isStrongConsistency,omitempty"` 178 // 是否为单节点 179 SingleMode bool `json:"singleMode,omitempty"` 180 // 同步区块批量写数据库时,是否需要立即写磁盘,非固态硬盘的电脑可以设置为false,以提高性能 181 Batchsync bool `json:"batchsync,omitempty"` 182 // 是否记录添加或者删除区块的序列,若节点作为主链节点,为平行链节点提供服务,需要设置为true 183 IsRecordBlockSequence bool `json:"isRecordBlockSequence,omitempty"` 184 // 是否为平行链节点 185 IsParaChain bool `json:"isParaChain,omitempty"` 186 EnableTxQuickIndex bool `json:"enableTxQuickIndex,omitempty"` 187 // 升级storedb是否重新执行localdb 188 EnableReExecLocal bool `json:"enableReExecLocal,omitempty"` 189 // 区块回退 190 RollbackBlock int64 `json:"rollbackBlock,omitempty"` 191 // 回退是否保存区块 192 RollbackSave bool `json:"rollbackSave,omitempty"` 193 // 最新区块上链超时时间,单位秒。 194 OnChainTimeout int64 `json:"onChainTimeout,omitempty"` 195 // 使能精简localdb 196 EnableReduceLocaldb bool `json:"enableReduceLocaldb,omitempty"` 197 // 关闭分片存储,默认开启分片存储为false;平行链不需要分片需要修改此默认参数为true 198 DisableShard bool `protobuf:"varint,19,opt,name=disableShard" json:"disableShard,omitempty"` 199 // 使能从P2pStore中获取数据 200 EnableFetchP2pstore bool `json:"enableFetchP2pstore,omitempty"` 201 // 使能假设已删除已归档数据后,获取数据情况 202 EnableIfDelLocalChunk bool `json:"enableIfDelLocalChunk,omitempty"` 203 // 使能注册推送区块、区块头或交易回执 204 EnablePushSubscribe bool `json:"EnablePushSubscribe,omitempty"` 205 // 当前活跃区块的缓存数量 206 MaxActiveBlockNum int `json:"maxActiveBlockNum,omitempty"` 207 // 当前活跃区块的缓存大小M为单位 208 MaxActiveBlockSize int `json:"maxActiveBlockSize,omitempty"` 209 210 //HighAllowPackHeight 允许打包的High区块高度 211 HighAllowPackHeight int64 `json:"highAllowPackHeight,omitempty"` 212 213 //LowAllowPackHeight 允许打包的low区块高度 214 LowAllowPackHeight int64 `json:"lowAllowPackHeight,omitempty"` 215 //关闭blockchain 区块广播 216 DisableBlockBroadcast bool `json:"disableBlockBroadcast,omitempty"` 217 //关闭本地和ntp server的时钟偏移检查 218 DisableClockDriftCheck bool `json:"disableClockDriftCheck,omitempty"` 219 } 220 221 // P2P 配置 222 type P2P struct { 223 // 使用的数据库类型 224 Driver string `json:"driver,omitempty"` 225 // 数据库文件目录 226 DbPath string `json:"dbPath,omitempty"` 227 // 数据库缓存大小 228 DbCache int32 `json:"dbCache,omitempty"` 229 // GRPC请求日志文件 230 GrpcLogFile string `json:"grpcLogFile,omitempty"` 231 // 是否启动P2P服务 232 Enable bool `json:"enable,omitempty"` 233 //是否等待Pid 234 WaitPid bool `json:"waitPid,omitempty"` 235 //指定p2p类型, 支持gossip, dht 236 Types []string `json:"types,omitempty"` 237 } 238 239 // RPC 配置 240 type RPC struct { 241 // jrpc绑定地址 242 JrpcBindAddr string `json:"jrpcBindAddr,omitempty"` 243 // grpc绑定地址 244 GrpcBindAddr string `json:"grpcBindAddr,omitempty"` 245 // 白名单列表,允许访问的IP地址,默认是“*”,允许所有IP访问 246 Whitlist []string `json:"whitlist,omitempty"` 247 Whitelist []string `json:"whitelist,omitempty"` 248 // jrpc方法请求白名单,默认是“*”,允许访问所有RPC方法 249 JrpcFuncWhitelist []string `json:"jrpcFuncWhitelist,omitempty"` 250 // grpc方法请求白名单,默认是“*”,允许访问所有RPC方法 251 GrpcFuncWhitelist []string `json:"grpcFuncWhitelist,omitempty"` 252 // jrpc方法请求黑名单,禁止调用黑名单里配置的rpc方法,一般和白名单配合使用,默认是空 253 JrpcFuncBlacklist []string `json:"jrpcFuncBlacklist,omitempty"` 254 // grpc方法请求黑名单,禁止调用黑名单里配置的rpc方法,一般和白名单配合使用,默认是空 255 GrpcFuncBlacklist []string `json:"grpcFuncBlacklist,omitempty"` 256 // 是否开启https 257 EnableTLS bool `json:"enableTLS,omitempty"` 258 EnableTrace bool `json:"enableTrace,omitempty"` 259 // 证书文件,证书和私钥文件可以用cli工具生成 260 CertFile string `json:"certFile,omitempty"` 261 // 私钥文件 262 KeyFile string `json:"keyFile,omitempty"` 263 //basic auth 用户名 264 JrpcUserName string `json:"jrpcUserName,omitempty"` 265 //basic auth 用户密码 266 JrpcUserPasswd string `json:"jrpcUserPasswd,omitempty"` 267 } 268 269 // Exec 配置 270 type Exec struct { 271 // 是否开启stat插件 272 EnableStat bool `json:"enableStat,omitempty"` 273 // 是否开启MVCC插件 274 EnableMVCC bool `json:"enableMVCC,omitempty"` 275 DisableAddrIndex bool `json:"disableAddrIndex,omitempty"` 276 Alias []string `json:"alias,omitempty"` 277 // 是否保存token交易信息 278 SaveTokenTxList bool `json:"saveTokenTxList,omitempty"` 279 } 280 281 // Pprof 配置 282 type Pprof struct { 283 ListenAddr string `json:"listenAddr,omitempty"` 284 } 285 286 // HealthCheck 配置 287 type HealthCheck struct { 288 ListenAddr string `json:"listenAddr,omitempty"` 289 CheckInterval uint32 `json:"checkInterval,omitempty"` 290 UnSyncMaxTimes uint32 `json:"unSyncMaxTimes,omitempty"` 291 } 292 293 // Metrics 相关测量配置信息 294 type Metrics struct { 295 EnableMetrics bool `json:"enableMetrics,omitempty"` 296 DataEmitMode string `json:"dataEmitMode,omitempty"` 297 Duration int64 `json:"duration,omitempty"` 298 URL string `json:"url,omitempty"` 299 DatabaseName string `json:"databaseName,omitempty"` 300 Username string `json:"username,omitempty"` 301 Password string `json:"password,omitempty"` 302 Namespace string `json:"namespace,omitempty"` 303 }