cosmos/evm
GitHub: cosmos/evm
为 Cosmos SDK 链提供即插即用的 EVM 兼容层和高度可定制的以太坊功能集成框架。
Stars: 159 | Forks: 197

## 什么是 Cosmos EVM?
Cosmos EVM 是一个即插即用的解决方案,可为你的 Cosmos SDK 链增加 EVM 兼容性和可定制性。Ondo、Mezo、Mantra、XRP 侧链、Telegram Application Chain (TAC)、Stable 等都在使用 Cosmos EVM。Cosmos EVM 为 Cosmos 链配备了完整的以太坊功能:Solidity 智能合约、Ethereum JSON-RPC、对 EVM 钱包/代币/用户体验的原生支持,以及访问整个以太坊开发者生态系统。它的预编译和扩展允许开发者将 [IBC](https://github.com/cosmos/ibc-go) 等模块与 EVM 结合使用,并为 Cosmos 上的代币提供原生的 ERC-20 支持。
Cosmos EVM 可根据你的业务用例、链架构和性能需求进行定制。
**请注意**:在代码接受审计和测试期间,此代码库正在进行更改。目前我们将发布 v0.x 版本。可能会发生一些破坏性更新。在完成审计、关键稳定性功能和基准测试之后,Cosmos Labs 仅在发布 v1 版本时才会将 Cosmos EVM 代码库标记为稳定版本。
**访问 Cosmos EVM 的官方文档**:[evm.cosmos.network](https://evm.cosmos.network/)
## 集成
Cosmos EVM 可以集成到你现有的链中,
或者在你即将推出的链的开发过程中添加,
只需将 Cosmos EVM 作为 go 模块库导入即可。
### 稳健的默认设置
Cosmos EVM 的模块开箱即带默认设置,可实现快速 VM 部署。将所有可用模块集成到区块链中可提供:
- 暴露的 JSON-RPC 端点,用于与 EVM 工具连接,例如 [MetaMask](https://metamask.io/) 和 [Rabby](https://rabby.io/) 等钱包,以及 [Blockscout](https://docs.blockscout.com/) 等区块浏览器。
- EVM 扩展允许从 Solidity 智能合约 [Solidity](https://docs.soliditylang.org/en/v0.8.26/) 智能合约中访问 Cosmos SDK 模块的原生功能。
- 在 EVM 中使用任何 IBC 资产。
所有模块均可通过链上治理进行控制。
### 广泛的可定制性
基于这些稳健的默认设置,其功能集具有高度可定制性:
- **许可的 EVM** - 实施定制的访问控制,以将单个地址列入黑名单或白名单,从而限制其在网络上调用和/或创建智能合约。
- **EVM 扩展** - 使用定制的 EVM 扩展为你的用例编写定制的业务逻辑。
- **单一代币表示 v2 和 ERC-20 模块** - 单一代币表示 v2 和我们的 `x/erc20` 模块对齐了 IBC 和 ERC-20 代币表示,从而简化并改善了用户体验。
- **EIP-1559 费用市场机制** - 使用基于 [EIP-1559 费用市场](https://eips.ethereum.org/EIPS/eip-1559) 的自我调节费用市场机制,定制费用结构和交易激增管理。
- **JSON-RPC 服务器** - 完全控制暴露的命名空间和 [JSON-RPC 服务器](https://cosmos-docs.mintlify.app/docs/api-reference/ethereum-json-rpc)。可配置的参数包括 EVM 调用或 HTTP 请求的自定义超时、最大区块 gas、开放连接数等。
- **EIP-712 签名** - 集成 [EIP-712 签名](https://eips.ethereum.org/EIPS/eip-712) 实现,允许使用 MetaMask 等 EVM 钱包对 Cosmos SDK 消息进行签名。这支持对任意消息进行结构化数据签名。
- **定制改进提案 (Opcodes)** - 为任何 Cosmos EVM 用户提供了定制其 EVM opcode 位并添加新 opcode 的机会。在[此处阅读有关自定义操作的更多信息](https://cosmos-docs.mintlify.app/docs/documentation/smart-contracts/custom-improvement-proposals#custom-improvement-proposals)。
## 与以太坊的兼容性
Cosmos EVM 是“以太坊等效”的吗?以太坊等效描述的是任何在交易执行上与以太坊客户端完全相同的 EVM 解决方案。另一方面,以太坊兼容意味着该 EVM 实现可以运行以太坊上有效的每一笔交易,同时也能处理在以太坊上无效的分歧交易。
我们将 Cosmos EVM 描述为与以太坊**向前兼容**。它可以运行来自以太坊的任何有效智能合约,同时也能实现标准以太坊 VM 尚未提供的新功能,从而推动标准向前发展。
## 入门指南
要运行示例 `evmd` 链,请从代码库的根目录使用 `./local_node.sh` 运行脚本。
### 迁移
我们在此处提供了[升级指南](./docs/migrations),用于将你的链从各种 Cosmos EVM 版本进行升级。
### 测试
所有测试脚本均可在代码库根目录的 `Makefile` 中找到。
以下列出了各种测试的命令:
#### 单元测试
```
make test-unit
```
#### 覆盖率测试
这将生成一个代码覆盖率文件 `filtered_coverage.txt`,并打印出工作文件的代码覆盖率百分比。
```
make test-unit-cover
```
#### Fuzz 测试
```
make test-fuzz
```
#### Solidity 测试
```
make test-solidity
```
#### 基准测试
```
make benchmark
```
## 维护者
[Cosmos Labs](https://cosmoslabs.io/) 负责维护技术栈的核心组件:Cosmos SDK、CometBFT、IBC、Cosmos EVM 以及各种开发工具和框架。详细的维护政策可在[此处](https://github.com/cosmos/security/blob/main/POLICY.md)找到。除了开发和维护 Cosmos 技术栈外,Cosmos Labs 还为区块链解决方案提供咨询和工程服务。[联系 Cosmos Labs](https://www.cosmoslabs.io/contact)。
Cosmos Labs 是 [Interchain Foundation](https://interchain.io/) 的全资子公司,该基金会是一家瑞士非营利组织,负责金库管理、资助公共物品以及支持 Cosmos 的治理。
Cosmos 技术栈得到了强大的开源贡献者社区的支持。
## 文档和资源
### 文档
访问 Cosmos EVM 的官方文档:[evm.cosmos.network](https://evm.cosmos.network/)
### Cosmos 技术栈库
- [Cosmos SDK](http://github.com/cosmos/cosmos-sdk) - 一个用于在 Golang 中
构建应用程序的框架
- [跨链通信协议 (IBC)](https://github.com/cosmos/ibc-go/) - 一种区块链互操作性协议,允许区块链传输任何以字节编码的数据类型。
- [CometBFT](https://github.com/cometbft/cometbft) - 高性能、可配置的 BFT 共识引擎,支持 10k+ TPS。
标签:Cosmos SDK, EVM, EVTX分析, Web3, 区块链开发, 日志审计, 智能合约, 跨链通信