Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

多链分区环境,主链与子链能够实现存证数据的跨链验证 #24

Open
studyzy opened this issue Jul 4, 2020 · 0 comments
Labels
proposal 提案

Comments

@studyzy
Copy link
Contributor

studyzy commented Jul 4, 2020

摘要

当存在主链PTN和子链ABC时,用户A在子链上存证了文件Hash1,通过跨链验证功能,任何人都可以在主链上证明A用户确实存证了Hash1。同理,用户B在主链存证了文件Hash2,通过跨链验证功能,其ABC子链也能验证Hash2被存证。

动机

实现存证数据的跨链验证。无论是主链上存证的数据,还是子链存证的数据,在对方链上都能验证其合法性。

详细说明

无论主链还是子链,都有一个系统合约:分区合约PartitionSYSContract。主链PTN的该合约中,注册了一个子链ABC。子链ABC的该合约中,注册了一个主链PTN。相互注册成功后,主链所有全节点会同步子链ABC的区块头,子链ABC的全节点也会同步主链PTN的区块头。
存证的几个核心要素:存证人,存证内容,存证时间戳,存证证明(TxHash)
分区合约除了是一个主链子链的注册合约,也提供了SPV验证的功能。

在ABC子链存证,在PTN主链验证的过程

假设用户A在子链ABC上有100个ABC Token,现在需要将其跨链转移到PTN主链上,操作如下:

  1. 在ABC子链,用户A发起存证交易,存证了文件Hash1,并获得该交易的ID:TxHash1。
  2. 在ABC子链,用户A通过命令查询到TxHash1对的SPV所需数据:区块Hash,SPV验证路径,Tx完整内容。
  3. 在PTN主链,用户A发起合约查询请求,调用分区合约的“SPV验证”函数,同时传入参数:区块Hash,SPV验证路径,Tx完整内容。
  4. 在PTN主链, 用户A的合约查询被对应的全节点执行,通过SPV验证,可以确认用户A提供的Tx是否是被打包,然后通过解析Tx,可以获得:存证人地址,存证的内容,存证证明(TxHash);而通过区块Hash,查询区块头数据,可以获得:存证时间戳
    现在,存证的核心要素都通过该合约查询返回。

参考

  • 跨链技术:侧链中继模式。
  • SPV简单支付验证
@studyzy studyzy added the proposal 提案 label Jul 4, 2020
@studyzy studyzy changed the title 多链分区环境,主链与子链能够实现Token的跨链转移 多链分区环境,主链与子链能够实现状态数据的跨链验证 Jul 4, 2020
@studyzy studyzy changed the title 多链分区环境,主链与子链能够实现状态数据的跨链验证 多链分区环境,主链与子链能够实现存证数据的跨链验证 Jul 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
proposal 提案
Projects
None yet
Development

No branches or pull requests

1 participant