EthereumJS 单一代码库
[![代码覆盖率][coverage-badge]][coverage-link] [![Discord][discord-badge]][discord-link] [![GitPOAP][gitpoap-badge]][gitpoap-link]
本代码库包含了以太坊区块链执行层的各种协议构建模块,由以太坊基金会的JavaScript团队管理。这里有一个可以在Node.js或浏览器环境中使用的[以太坊虚拟机(EVM)][vm-package]的TypeScript实现,以及核心区块链结构构建模块的实现,如以太坊[交易][tx-package]、[区块][block-package]或[区块链][blockchain-package],还有[Trie][trie-package](默克尔帕特里夏树)和[devp2p][devp2p-package](执行网络层)的实现。
所有库都通过核心[Common][common-package]库绑定在一起,该库跟踪链的具体信息和硬分叉变更。它们由辅助包complemented,如用于数据编码/解码的[RLP][rlp-package],或提供(字节)转换、签名、类型等辅助功能的[Util][util-package]。
最后,[EthereumJS执行客户端][client-package](EthereumJS)已经处于积极开发中一段时间了。它已经服务于多种用途,如测试、研究(如EIP)和开发者工具,以参与协议。
还需注意:在以太坊共识方面,ChainSafe的Lodestar代码库补充了本代码库,提供了以太坊共识客户端实现以及在以太坊共识层演进背景下开发的各种协议实现(如SSZ库)。
包列表
以下是本代码库中包含的包列表。
包名 | npm | 问题 | 测试 | 覆盖率 |
---|---|---|---|---|
[@ethereumjs/block][block-package] | [![NPM包][block-npm-badge]][block-npm-link] | [![Block问题][block-issues-badge]][block-issues-link] | [![Actions状态][block-actions-badge]][block-actions-link] | [![代码覆盖率][block-coverage-badge]][block-coverage-link] |
[@ethereumjs/blockchain][blockchain-package] | [![NPM包][blockchain-npm-badge]][blockchain-npm-link] | [![Blockchain问题][blockchain-issues-badge]][blockchain-issues-link] | [![Actions状态][blockchain-actions-badge]][blockchain-actions-link] | [![代码覆盖率][blockchain-coverage-badge]][blockchain-coverage-link] |
[@ethereumjs/client][client-package] | [![NPM包][client-npm-badge]][client-npm-link] | [![Client问题][client-issues-badge]][client-issues-link] | [![Actions状态][client-actions-badge]][client-actions-link] | [![代码覆盖率][client-coverage-badge]][client-coverage-link] |
[@ethereumjs/common][common-package] | [![NPM包][common-npm-badge]][common-npm-link] | [![Common问题][common-issues-badge]][common-issues-link] | [![Actions状态][common-actions-badge]][common-actions-link] | [![代码覆盖率][common-coverage-badge]][common-coverage-link] |
[@ethereumjs/devp2p][devp2p-package] | [![NPM包][devp2p-npm-badge]][devp2p-npm-link] | [![Devp2p问题][devp2p-issues-badge]][devp2p-issues-link] | [![Actions状态][devp2p-actions-badge]][devp2p-actions-link] | [![代码覆盖率][devp2p-coverage-badge]][devp2p-coverage-link] |
[@ethereumjs/ethash][ethash-package] | [![NPM包][ethash-npm-badge]][ethash-npm-link] | [![Ethash问题][ethash-issues-badge]][ethash-issues-link] | [![Actions状态][ethash-actions-badge]][ethash-actions-link] | [![代码覆盖率][ethash-coverage-badge]][ethash-coverage-link] |
[@ethereumjs/evm][evm-package] | [![NPM包][evm-npm-badge]][evm-npm-link] | [![EVM问题][evm-issues-badge]][evm-issues-link] | [![Actions状态][evm-actions-badge]][evm-actions-link] | [![代码覆盖率][evm-coverage-badge]][evm-coverage-link] |
[@ethereumjs/genesis][genesis-package] | [![NPM包][genesis-npm-badge]][genesis-npm-link] | [![Genesis问题][genesis-issues-badge]][genesis-issues-link] | [![Actions状态][genesis-actions-badge]][genesis-actions-link] | [![代码覆盖率][genesis-coverage-badge]][genesis-coverage-link] |
[@ethereumjs/rlp][rlp-package] | [![NPM包][rlp-npm-badge]][rlp-npm-link] | [![rlp问题][rlp-issues-badge]][rlp-issues-link] | [![Actions状态][rlp-actions-badge]][rlp-actions-link] | [![代码覆盖率][rlp-coverage-badge]][rlp-coverage-link] |
[@ethereumjs/statemanager][statemanager-package] | [![NPM包][statemanager-npm-badge]][statemanager-npm-link] | [![StateManager问题][statemanager-issues-badge]][statemanager-issues-link] | [![Actions状态][statemanager-actions-badge]][statemanager-actions-link] | [![代码覆盖率][statemanager-coverage-badge]][statemanager-coverage-link] |
[@ethereumjs/trie][trie-package] | [![NPM包][trie-npm-badge]][trie-npm-link] | [![Trie问题][trie-issues-badge]][trie-issues-link] | [![Actions状态][trie-actions-badge]][trie-actions-link] | [![代码覆盖率][trie-coverage-badge]][trie-coverage-link] |
[@ethereumjs/tx][tx-package] | [![NPM包][tx-npm-badge]][tx-npm-link] | [![Tx问题][tx-issues-badge]][tx-issues-link] | [![Actions状态][tx-actions-badge]][tx-actions-link] | [![代码覆盖率][tx-coverage-badge]][tx-coverage-link] |
[@ethereumjs/util][util-package] | [![NPM包][util-npm-badge]][util-npm-link] | [![Util问题][util-issues-badge]][util-issues-link] | [![Actions状态][util-actions-badge]][util-actions-link] | [![代码覆盖率][util-coverage-badge]][util-coverage-link] |
[@ethereumjs/verkle][verkle-package] | [![NPM包][verkle-npm-badge]][verkle-npm-link] | [![VM问题][verkle-issues-badge]][verkle-issues-link] | [![Actions状态][verkle-actions-badge]][verkle-actions-link] | [![代码覆盖率][verkle-coverage-badge]][verkle-coverage-link] |
[@ethereumjs/vm][vm-package] | [![NPM包][vm-npm-badge]][vm-npm-link] | [![VM问题][vm-issues-badge]][vm-issues-link] | [![Actions状态][vm-actions-badge]][vm-actions-link] | [![代码覆盖率][vm-coverage-badge]][vm-coverage-link] |
[@ethereumjs/wallet][wallet-package] | [![NPM包][wallet-npm-badge]][wallet-npm-link] | [![StateManager问题][wallet-issues-badge]][wallet-issues-link] | [![Actions状态][wallet-actions-badge]][wallet-actions-link] | [![代码覆盖率][wallet-coverage-badge]][wallet-coverage-link] |
分支
以下是我们目前活跃的分支:
分支 | 发布系列 | 状态 | 描述 |
---|---|---|---|
master | 即将发布(2024年秋季) | 开发中 | 破坏性发布工作 |
maintenance-v8 | v7/v8 | 维护中 | v8版本的维护(也包括v7) |
maintenance-v6 | v6 | 维护中 | v6版本的维护 |
破坏性发布通常会同步进行所有库的更新(最近的例外:VM v8,EVM v3),发布周期目前以@ethereumjs/vm
的版本命名。在大多数情况下,PR应该提交到当前的工作分支。如果没有当前的工作分支,请询问!🙂
要查看特定包版本的相关代码,请参考标签。
覆盖率报告
详细版本可以在[Codecov.io][coverage-link]上查看
[][coverage-link]
包依赖关系
graph TD
vm{vm}
client{client}
ethash --> blockchain
ethash --> client
devp2p --> client
block --> client
block --> blockchain
block --> ethash
block --> vm
blockchain --> client
blockchain --> vm
trie --> client
trie --> vm
trie --> blockchain
trie --> block
trie --> statemanager
common --> block
common --> statemanager
common --> tx
common --> blockchain
common --> vm
common --> evm
common --> client
common --> devp2p
common --> genesis
evm --> vm
evm --> client
genesis --> client
genesis --> statemanager
genesis --> trie
tx --> block
tx --> evm
tx --> vm
vm --> client
statemanager --> evm
statemanager --> vm
要更新上面的图表,请编辑README文件并提交包含更改的新PR。
入门
请参阅我们的monorepo文档,了解如何设置仓库和安装依赖项。config文件夹概述了包之间共享的配置和脚本。
EthereumJS
查看我们的组织文档,了解EthereumJS
的介绍以及当前的标准和最佳实践。如果您想加入工作或对库进行改进,请先阅读我们的贡献指南。
许可证
大多数包都采用MPL-2.0许可,请查看各包文件夹了解相应的许可证。 [coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg [coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo [discord-badge]: https://img.shields.io/static/v1?logo=discord&label=discord&message=Join&color=blue [discord-link]: https://discord.gg/TNwARpR [stackexchange-badge]: https://img.shields.io/badge/ethereumjs-stackexchange-brightgreen [stackexchange-link]: https://ethereum.stackexchange.com/questions/tagged/ethereumjs [block-package]: ./packages/block [block-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/block.svg [block-npm-link]: https://www.npmjs.com/package/@ethereumjs/block [block-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20block?label=issues [block-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+block" [block-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Block/badge.svg [block-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Block%22 [block-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=block [block-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/block [blockchain-package]: ./packages/blockchain [blockchain-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/blockchain.svg [blockchain-npm-link]: https://www.npmjs.com/package/@ethereumjs/blockchain [blockchain-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20blockchain?label=issues [blockchain-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+blockchain" [blockchain-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Blockchain/badge.svg [blockchain-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Blockchain%22 [blockchain-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=blockchain [blockchain-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/blockchain [client-package]: ./packages/client [client-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/client.svg [client-npm-link]: https://www.npmjs.com/package/@ethereumjs/client [client-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20client?label=issues [client-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+client" [client-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Client/badge.svg [client-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Client%22 [client-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=client [client-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/client [common-package]: ./packages/common [common-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/common.svg [common-npm-link]: https://www.npmjs.com/package/@ethereumjs/common [common-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20common?label=issues [common-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+common" [common-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Common/badge.svg [common-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Common%22 [common-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=common [common-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/common [devp2p-package]: ./packages/devp2p [devp2p-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/devp2p.svg [devp2p-npm-link]: https://www.npmjs.com/package/@ethereumjs/devp2p [devp2p-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20devp2p?label=issues [devp2p-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+devp2p" [devp2p-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Devp2p/badge.svg [devp2p-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Devp2p%22 [devp2p-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=devp2p [devp2p-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/devp2p [ethash-package]: ./packages/ethash [ethash-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/ethash.svg [ethash-npm-link]: https://www.npmjs.org/package/@ethereumjs/ethash [ethash-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20ethash?label=issues [ethash-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+ethash" [ethash-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Ethash/badge.svg [ethash-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Ethash%22 [ethash-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=ethash [ethash-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/ethash [evm-package]: ./packages/evm [evm-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/evm.svg [evm-npm-link]: https://www.npmjs.org/package/@ethereumjs/evm [evm-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20evm?label=issues [evm-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+evm" [evm-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/EVM/badge.svg [evm-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22evm%22 [evm-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=evm [evm-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/evm [genesis-package]: ./packages/genesis [genesis-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/genesis.svg [genesis-npm-link]: https://www.npmjs.com/package/@ethereumjs/genesis [genesis-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20genesis?label=issues [genesis-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+genesis" [genesis-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/genesis/badge.svg [genesis-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22genesis%22 [genesis-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=genesis [genesis-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/genesis [gitpoap-badge]: https://public-api.gitpoap.io/v1/repo/ethereumjs/ethereumjs-monorepo/badge [gitpoap-link]: https://www.gitpoap.io/gh/ethereumjs/ethereumjs-monorepo [tx-package]: ./packages/tx [tx-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/tx.svg [tx-npm-link]: https://www.npmjs.com/package/@ethereumjs/tx [tx-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20tx?label=issues [tx-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+tx" [tx-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Tx/badge.svg [tx-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Tx%22 [tx-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=tx [tx-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/tx [trie-package]: ./packages/trie [trie-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/trie.svg [trie-npm-link]: https://www.npmjs.com/package/@ethereumjs/trie [trie-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20trie?label=issues [trie-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+trie" [trie-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Trie/badge.svg [trie-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Trie%22 [trie-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=trie [trie-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie [rlp-package]: ./packages/rlp [rlp-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/rlp.svg [rlp-npm-link]: https://www.npmjs.com/package/@ethereumjs/rlp [rlp-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20rlp?label=issues [rlp-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+rlp" [rlp-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/rlp/badge.svg [rlp-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22rlp%22 [rlp-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=rlp [rlp-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/rlp [util-package]: ./packages/util [util-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/util.svg [util-npm-link]: https://www.npmjs.org/package/@ethereumjs/util [util-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20util?label=issues [util-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+util" [util-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Util/badge.svg [util-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Util%22 [util-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=util [util-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/util [statemanager-package]: ./packages/statemanager [statemanager-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/statemanager.svg [statemanager-npm-link]: https://www.npmjs.com/package/@ethereumjs/statemanager [statemanager-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20statemanager?label=issues [statemanager-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+statemanager" [statemanager-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/StateManager/badge.svg [statemanager-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22StateManager%22 [statemanager-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=statemanager [statemanager-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/statemanager [verkle-package]: ./packages/verkle [verkle-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/verkle.svg [verkle-npm-link]: https://www.npmjs.com/package/@ethereumjs/verkle [verkle-issues-badge]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20verkle?label=issues [verkle-issues-link]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+verkle" [verkle-actions-badge]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Verkle/badge.svg [verkle-actions-link]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22Verkle%22 [verkle-coverage-badge]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=verkle [verkle-coverage-link]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/verkle [vm-package]: ./packages/vm [vm-npm-badge]: https://img.shields.io/npm/v/@ethereumjs/vm.svg [vm-npm-链接]: https://www.npmjs.com/package/@ethereumjs/vm [vm-问题-徽章]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20vm?label=issues [vm-问题-链接]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+vm" [vm-操作-徽章]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/VM/badge.svg [vm-操作-链接]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22VM%22 [vm-覆盖率-徽章]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=vm [vm-覆盖率-链接]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/vm [钱包-包]: ./packages/wallet [钱包-npm-徽章]: https://img.shields.io/npm/v/@ethereumjs/wallet.svg [钱包-npm-链接]: https://www.npmjs.com/package/@ethereumjs/wallet [钱包-问题-徽章]: https://img.shields.io/github/issues/ethereumjs/ethereumjs-monorepo/package:%20wallet?label=issues [钱包-问题-链接]: https://github.com/ethereumjs/ethereumjs-monorepo/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+wallet" [钱包-操作-徽章]: https://github.com/ethereumjs/ethereumjs-monorepo/workflows/Wallet/badge.svg [钱包-操作-链接]: https://github.com/ethereumjs/ethereumjs-monorepo/actions?query=workflow%3A%22wallet%22 [钱包-覆盖率-徽章]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/branch/master/graph/badge.svg?flag=wallet [钱包-覆盖率-链接]: https://codecov.io/gh/ethereumjs/ethereumjs-monorepo/tree/master/packages/wallet