Skip to content

Commit

Permalink
- Modify smart contract designs
Browse files Browse the repository at this point in the history
Signed-off-by: chaoxinhu <chaoxinhu@hotmail.com>
  • Loading branch information
chaoxinhu committed Mar 23, 2020
1 parent 5efe3d8 commit afb8572
Showing 1 changed file with 7 additions and 16 deletions.
23 changes: 7 additions & 16 deletions readthedocs/zh_CN/docs/weidentity-contract-design.rst
Original file line number Diff line number Diff line change
Expand Up @@ -184,24 +184,15 @@ WeIdentity Evidence智能合约

WeIdentity不仅提供了基于DID的公钥存储 + 数字签名用来防止凭证被篡改,同时也提供了Evidence存证功能,基于区块链不可篡改的特性,为创建出的凭证增信。简单来说,任何使用者,都可以将凭证的内容摘要上传到链上,以便在未来使用时可以根据链上内容比对,以防篡改。内容摘要使用Hash算法,抗逆向反推。

Evidence智能合约包括两个文件:EvidenceFactory工厂合约和Evidence存证模板合约
从WeIdentity SDK 1.5.2+版本开始,Evidence智能合约开始使用类似WeID智能合约的Linked-Event形式进行hash内容的存储。它支持多个不同的签名方对存证打上自己的签名进行背书;同时也支持签名方为存证填入额外记录(log)。不同的log会按照写入区块链的顺序垒叠起来,形成不可篡改的记录集

工厂合约有以下特性
存证合约有以下特性

- 通过将存证模板实例化,生成存证合约,并返回存证合约地址。
- 创建存证时,从入参里,需要指定有哪些WeID是创建出来的存证的特许签名方(Signer)。可有多个签名方。
- 入参中的dataHash和r,s,v签名值,是存证里需要在链上记录的摘要信息。一旦写入,没有任何办法能够篡改之。
- 如果dataHash为空(全为0),则会生成一个**空白存证**,可以后续由签名方通过调用addHash接口补上dataHash。

通过模板创建出来的存证合约有以下特性:

- 签名方在初始创建存证的时候就需要确定,且创建后不能更改。
- 每个签名方可以通过调用加签名接口(addSignature)对存证增加自己的签名,以增加信用。
- 签名方可以调用增加额外信息接口(addExtraValue)为存证添加额外信息,及addHash接口为空白存证补上Hash。增加额外信息,增加签名、为空白存证设置Hash,都必须需要Signer之一使用自己的私钥发交易。
- r,s,v签名值,可以在创建时由一个签名者上传,也可以由其他签名方在创建完成后后补。如果您使用WeIdentity Java SDK,则会自动生成此签名三项。
- 添加额外信息、加签名、为空白存证补上Hash,只能由创建时设定好的签名方之一,使用自己的WeID管理的私钥发交易。
- 一旦一个合约的dataHash或签名被设置为非空值,就没有任何办法可以对其进行二次修改。此时,唯二能够进行的操作就只有增加签名和增加额外信息。
- 使用合约地址进行管理,保证了前后升级的兼容性,即使更新的版本修改了存证逻辑,对已经上链的存证也不会有影响。
- 签名的Hash值在创建时就已确定且不可更改。
- 不同的签名方可以通过调用createEvidence接口为同一个存证增加来自于不同签名方的签名。
- 签名方可以调用增加记录接口(addLog)为存证添加额外信息。
- 添加的额外信息(log记录)只能追加,不能修改或删除。
- 不同的签名方的签名信息和额外信息存储互不干扰。
- 如果一不小心写错了存证信息,就创建一个新存证吧!

WeIdentity CPT智能合约
Expand Down

0 comments on commit afb8572

Please sign in to comment.