功能
- 管理你的compose.yaml文件
- 创建/编辑/启动/停止/重启/删除
- 更新 Docker 镜像
- 交互式编辑器compose.yaml
- 交互式网页终端
- (1.4.0)多代理支持——您可以在一个界面中管理来自不同 Docker 主机的多个堆栈
- 将docker run ...命令转换为compose.yaml
- 基于文件的结构 - Dockge 不会劫持您的撰写文件,它们会像往常一样存储在您的驱动器上。您可以使用常规docker compose命令与它们交互
彻底卸载程序,不留下任何残留
强制卸载可删除任何顽固软件
一次删除多个程序
监控程序的安装
节目快速搜索功能
卸载 Windows 应用商店应用
删除浏览器的扩展
粉碎敏感文件
修复注册表问题并提高您的电脑性能
删除垃圾文件和不必要的程序文件
删除系统中无效的快捷方式
查找硬盘中的空文件夹
轻松管理随 Windows 启动的程序和服务
轻松管理 Windows 系统还原点
易于使用的用户界面
自动更新至最新版本
启动eth2.0 一段时间后,报如下错误
WARN [05-24|11:39:02.090] Served engine_forkchoiceUpdatedV3 conn=127.0.0.1:53124 reqid=355251 duration="74.273µs" err="Unsupported fork" errdata="{Error:forkchoiceUpdatedV3 must only be called for cancun payloads}"
// ForkchoiceUpdatedV3 is equivalent to V2 with the addition of parent beacon block root
// in the payload attributes. It supports only PayloadAttributesV3.
func (api *ConsensusAPI) ForkchoiceUpdatedV3(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error) {
if params != nil {
if params.Withdrawals == nil {
return engine.STATUS_INVALID, engine.InvalidPayloadAttributes.With(errors.New("missing withdrawals"))
}
if params.BeaconRoot == nil {
return engine.STATUS_INVALID, engine.InvalidPayloadAttributes.With(errors.New("missing beacon root"))
}
if api.eth.BlockChain().Config().LatestFork(params.Timestamp) != forks.Cancun { // 关键代码
return engine.STATUS_INVALID, engine.UnsupportedFork.With(errors.New("forkchoiceUpdatedV3 must only be called for cancun payloads"))
}
}
// LatestFork returns the latest time-based fork that would be active for the given time.
func (c *ChainConfig) LatestFork(time uint64) forks.Fork {
// Assume last non-time-based fork has passed.
london := c.LondonBlock
switch {
case c.IsPrague(london, time):
return forks.Prague
case c.IsCancun(london, time):
return forks.Cancun
case c.IsShanghai(london, time):
return forks.Shanghai
default:
return forks.Paris
}
}
当前genesis配置如下
{
"config": {
"chainId": ....,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"londonBlock": 0,
"mergeNetsplitBlock": 0,
"terminalTotalDifficulty": 0,
"terminalTotalDifficultyPassed": true,
"shanghaiTime": 0,
"cancunTime": 0,
"pragueTime": 1716532255
},
....
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x01",
"extraData": "",
"gasLimit": "0x17d7840",
"nonce": "0x1234",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "1715760655"
由于设置了pragueTime,所以LatestFork会返回Prague fork,不会是Cancun,所以ForkchoiceUpdatedV3会报错,至于Prague为什么不支持ForkchoiceUpdatedV3,留个TODO
目前要做的是把最新的fork改为Cancun
./geth --config ./config/config.toml init ./config/genesis.json
Asynq 是一个 Go 库,用于对任务进行排队并与工作线程异步处理它们。它由Redis支持,旨在可扩展且易于入门。
Asynq 工作原理的高级概述:
任务队列用作跨多台机器分配工作的机制。一个系统可以由多个工作服务器和代理组成,从而实现高可用性和水平扩展。