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

轻松读懂状态通道如何实现即时确定性 #21

Closed
Whisker17 opened this issue Nov 13, 2020 · 4 comments
Closed

轻松读懂状态通道如何实现即时确定性 #21

Whisker17 opened this issue Nov 13, 2020 · 4 comments
Labels
Important very important,need read more note note state channel this issue is something about state channel

Comments

@Whisker17
Copy link
Owner

Whisker17 commented Nov 13, 2020

轻松读懂状态通道如何实现即时确定性

Contents:

@Whisker17
Copy link
Owner Author

「确定性」 是区块链交易的一种特性,可定义为交易被打包进区块之后的一种状态,即,如果我们看到某个区块之后挖出了足够多的区块,就可以确信这个区块内的交易不会被网络拒绝。也就是说,这个交易及其结果(对代币余额的更改)会永远留存下来。

@Whisker17 Whisker17 added Important very important,need read more note note labels Nov 13, 2020
@Whisker17
Copy link
Owner Author

Whisker17 commented Nov 13, 2020

工作量证明区块链的确定性不是非此即彼的:交易不会在某个时刻得到最终确定,而是像中本聪在白皮书中描述的那样,交易被拒绝的概率会随着时间流逝呈指数级下降,因为网络会就最长链达成共识

@Whisker17
Copy link
Owner Author

状态通道原理

使用状态通道应用必须在底层区块链上发起至少一个 「锁定」 交易和一个 「解锁」 交易。跟其它交易一样,这些交易同样存在确定性问题。用户通常要等待将近 1 分钟(从用户体验的角度来说这已经是龟速了)左右,这些底层交易才能被视为是确定的。

状态通道的原理是利用锁定和解锁之间的机会:在这两个步骤之间提供一个执行环境,让类似区块链的应用能够安全地运行。这类应用会涉及状态更新,这些状态更新可以称作 「二层交易」,与区块链交易大同小异。二层交易也带有密码学签名,可包含任意数据,并由定义了程序执行规则的虚拟机来解释(程序当然是由开发者来写的)。然而,二层交易并不需要依赖复杂的概率性共识协议状态通道的状态可由单方或各方同时发起更新。每次更新不一定具有可确定性

@Whisker17
Copy link
Owner Author

确定性

什么是可确定性?它指的是一个状态通道的状态能够被底层区块链接受作为解锁交易的一部分,随解锁交易一起发到底层链上时,不会导致链的虚拟机回滚。这就意味着,满足可确定性的二层交易是经过正确格式化的,也得到了正确的签名,能够经过状态通道协议设计者和应用开发者的额外检查。一旦这些条件经过了参与者的验证,参与者就可以相信这些条件会在将来的某个时间点以特定的方式触发解锁。这样,二层交易就以一个可确定的状态告终。

这些相对宽松的要求使得二层可确定性相比底层可确定性来说,在耗时方面减少了几个数量级

@Whisker17 Whisker17 added the state channel this issue is something about state channel label Nov 14, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Important very important,need read more note note state channel this issue is something about state channel
Projects
None yet
Development

No branches or pull requests

1 participant