ERC-190: 以太坊智能合约打包标准
Authors | Piper Merriam (@pipermerriam), Tim Coulter (@tcoulter), Denis Erfurt (@mhhf), RJ Catalano (@VoR0220), Iuri Matias (@iurimatias) |
---|---|
Created | 2017-01-10 |
摘要
本 ERC 提出以太坊智能合约包的规范。
该规范由以下以太坊开发框架维护者合作开发。
- Tim Coulter (Truffle)
- Denis Erfurt (Dapple)
- Piper Merriam (Populus)
- RJ Catalano (Eris PM)
- Iuri Matias (Embark)
动机
打包是现代软件开发的核心部分,但以太坊生态系统中缺少这一环节。缺乏打包限制了开发者重用代码的能力,从而对生产力和安全性产生负面影响。
一个关键的例子是 ERC20 标准。有一些经过良好审计的可重用代币合约可用,但由于难以找到和重用现有代码,大多数开发者最终会编写自己的合约。
打包标准应该对生态系统产生以下积极影响:
- 由于能够重用现有代码而提高整体生产力。
- 由于能够重用常见模式(ERC20、众筹等)的现有经过良好审计的实现而提高安全性。
智能合约打包还应该对最终用户产生直接的积极影响。钱包软件将能够使用发布的包,并生成一个用于与该包中包含的任何已部署合约进行交互的界面。随着 ENS 的出现,所有部分都将到位,钱包可以使用人类可读的名称,并向用户呈现一个用于与底层应用程序交互的界面。
规范
此标准的完整规范在仓库 epm/epm-spec 中单独维护。
此 EIP 引用规范的 1.0.0
版本:https://github.com/ethpm/epm-spec/tree/v1.0.0
该规范包含一个名为 “Release Lockfile” 的单个文档的详细信息。
- Release Lockfile Specification: https://github.com/ethpm/epm-spec/blob/v1.0.0/release-lockfile.spec.md。
- Release Lockfile 的 JSON Schema:https://github.com/ethpm/epm-spec/blob/v1.0.0/spec/release-lockfile.spec.json
这些文档没有内联到此 ERC 中,以确保规范只有一个事实来源。
用例
此规范涵盖以下类型的智能合约包。
- 包含旨在用作基本合约的合约的包,例如常见的
owned
模式。 - 包含随时可用的合约的包,例如 ERC20 代币合约。
- 包含已部署合约的包,例如库或服务。
这些用例的完整解释和示例可以在 epm/epm-spec
仓库的 README.md
中找到。
包管理器
Release Lockfile 旨在供包管理软件使用。已特别注意确保所有以下功能都可以由包管理器实现。
确定性构建
确保包始终解析为相同的依赖项和源文件集。源文件和依赖项都通过内容寻址,以确保引用的资源不会更改。
字节码验证
包含适当的信息,供包管理器检查已部署的合约,并验证其字节码是否与包源代码的编译和链接产生的字节码匹配。
多链部署
支持跨多个链的部署,允许包在公共主网和测试网上定义地址。
受信任的包
允许排除源代码或其他验证合约字节码所需的元素的包。这允许为包管理器不执行验证的特殊情况创建最小的包。
框架支持和集成
以下项目已实施或正在实施对 ERC190 的支持:
Citation
Please cite this document as:
Piper Merriam (@pipermerriam), Tim Coulter (@tcoulter), Denis Erfurt (@mhhf), RJ Catalano (@VoR0220), Iuri Matias (@iurimatias), "ERC-190: 以太坊智能合约打包标准," Ethereum Improvement Proposals, no. 190, January 2017. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-190.