前言
最近在学习 Web3 开发,一直在用 Solidity(wake) 这款 Vscode 插件,它的强大能够平替大名鼎鼎的 Remix – Ethereum IDE,非常好用!最近一直弹出升级 wake 的提示窗,没按耐住就升级了。当我升级到wake 5.0.0rc1后发现无法正常工作了。插件依旧能够 Compile 合约,但无法 Deploy 合约,Vscode 输出Solidity(wake) Error:
Failed to deploy: argument 'authorization_list': 'type' object cannot be converted to 'Sequence'
错误原因
结合 Grok 专家模式(Thinks hard)给出了可能的错误原因:
这个错误很可能源于Wake框架的最近更新(版本5.0的发布候选版),它引入了对EIP-7702的支持(一个Ethereum改进提案,用于交易中的委托代码执行)。这导致了合约交互和部署函数中新增了一个可选参数
authorization_list。具体来说,这个TypeError表示代码中类型处理不当——可能是在默认值或类型注解中使用了一个类型对象(例如来自typing.List),而不是实际的序列实例(如空列表[]或None)。这在Python中常见,尤其当验证或转换逻辑(可能通过Pydantic模型或依赖如web3.py、eth-account)期望一个可迭代序列时,却收到了类型类,导致转换失败。
由于几天前插件还正常运行,应该就是Wake 依赖(如web3.py添加了Prague硬分叉支持,包括authorization_list格式化器)引入了这个不兼容性或bug。
接下来就重点讲一讲如何解决这个问题。
解决方式
当然是回滚到上一个stable版本啦!重新安装稳定版4.21.0
solidity(wake)默认使用 conda 进行环境管理,通过 Output 窗口找到插件工作的目录以及 conda 环境指令:

这里获得了我的插件目录,进入插件目录并执行激活 conda 环境的命令:
cd /Users/konakona/Library/Application\ Support/Code/User/ \
globalStorage/ackeeblockchain.tools-for-solidity/wake-conda/ \
bin/
export PYTHONNOUSERSITE=1
. "/Users/konakona/Library/Application Support/Code/User/ \
globalStorage/ackeeblockchain.tools-for-solidity/wake-conda/ \
bin/activate"
在这个环境里我们可以正常使用 bin 目录下所有的指令。

接下来卸载 eth-wake,安装 4.21.0 版本。
pip uninstall eth-wake
bin pip install eth-wake==4.21.0
//检查安装版本, 安装成功后应该打印4.21.0
./wake --version
重新打开 Vscode就可以正常 Deploy 合约了!!!😊