🚧 Stagnant
Standards Track: ERC
ERC-1388: 证明签发者管理列表
ERC-1388: 证明签发者管理列表
Authors | Weiwu Zhang <a@colourful.land>, James Sangalli <j.l.sangalli@gmail.com> |
---|---|
Created | 2018-09-08 |
Discussion Link | https://github.com/ethereum/EIPs/issues/1388 |
Table of Contents
Introduction
在智能合约中,我们需要一些方法来处理对用户身份或能力的密码学证明。假设我们有一个房地产经纪人,KiwiRealtors,通过智能合约提供一个“意向表达”功能,并且要求用户提供他们是新西兰或澳大利亚居民的证明,这是法律要求。这实际上发生在新西兰的房地产市场,并且是处理此类证明需求的完美示例。
然而,智能合约明确信任证明签发者是不切实际的。有多个签发者可以提供一个人的居住证明 - 当地的太平绅士、土地所有权办公室、当地警察、护照管理机构等。我们设想一种模型,其中管理合格签发者列表的工作实际上外包给一个列表。
任何人都可以发布签发者列表。只有最值得信赖和精心维护的列表才能得到广泛使用。
Purpose
此 ERC 为任何人管理证明签发者列表提供了一个智能合约接口。智能合约将明确信任一个列表,因此信任该列表上的签发者签发的所有证明。
Draft implementation
/*
* 此合约的目的是管理证明
* 签发者合约及其履行要求的能力
*/
contract ManagedListERC
{
/* 管理员是列表的管理者。只有他/她/它才能通过从列表中删除/添加证明签发者来更改列表。
* 列表中的签发者由其合约来表示
* 地址,而不是由此类合约管理的证明签名密钥。
*/
struct List
{
string name;
string description; // 列表的简短描述
string capacity; // 用作证明签名密钥的过滤器
/* 如果智能合约指定了一个列表,则只接受
* 由该列表上的签发者签发的证明。此外,如果该
* 列表具有非空容量,则仅接受由具有该容量的
* 签名密钥签名的证明。 */
address[] issuerContracts; // 所有这些地址都是合约,没有签名能力
uint expiry;
}
// 找到发送者正在管理的列表,然后向其中添加一个签发者
function addIssuer(address issuerContractAddress) public;
// 如果发送者标识的列表不包含此签发者,则返回 false
function removeIssuer(address issuerContractAddress, List listToRemoveIssuerFrom) public returns(bool);
/* 由服务调用,例如 Kiwi Properties 或 James Squire */
/* 循环遍历所有签发者的合约,并在
* 每一个合约上执行 validateKey(),希望得到一个命中,并返回
* 第一个命中的合约地址。请注意,存在一种攻击
* 方法,即一个签发者声称拥有另一个签发者的密钥,这
* 可以通过后续设计来缓解。 */
// 循环遍历签发者数组,调用 signingKeyOfAttestation 上的 validate
function getIssuerCorrespondingToAttestationKey(bytes32 list_id, address signingKeyOfAttestation) public returns (address);
/* 为了简单起见,我们使用发送者的地址作为列表 ID,
* 接受这些后果:a) 如果一个用户希望维护
* 具有不同容量的多个列表,他或她必须为每个列表使用不同的发送者地址。
* b) 如果用户替换了发送者的密钥,无论是由于他或她怀疑该密钥已泄露
* 还是由于该密钥丢失并通过特殊方式重置,
* 那么该列表仍然由第一个发送者的地址标识。
*/
function createList(List list) public;
/* 用新密钥替换列表管理器的密钥 */
function replaceListIndex(List list, address manager) public returns(bool);
}
点击 here 查看此 ERC 的示例实现
Related ERC’s
#1387 #1386
Citation
Please cite this document as:
Weiwu Zhang <a@colourful.land>, James Sangalli <j.l.sangalli@gmail.com>, "ERC-1388: 证明签发者管理列表 [DRAFT]," Ethereum Improvement Proposals, no. 1388, September 2018. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-1388.