on-chain
on-chain 就是比特币的常规交易方式: 给我一个比特币地址 (公钥), 我用客户端创建交易发送比特币给你, 这笔交易在全网广播, 被确认, 被打包进区块. 显然, 交易是直接发生在链上的.
off-chain
至于 off-chain 其实玩过比特币的人也都用过, 我们在交易所里的交易就是 off-chain 交易. 这是如何运作的呢?
A, B 分别在某交易所开户, 交易所会分别为 A, B 生成一对公钥私钥, 但是 A 和 B 都不知道平台给他们生成的私钥, 只知道自己的公钥. 然后, A 和 B 用自己的钱包往平台给他们开的公钥地址里冲值比特币, 注意这个操作依然是 on chain 的.
再然后, A 通过交易所转了 0.5BTC 给 B, 但由于 A 没有私钥, 所以需要交易所拿 A 的私钥去签名并广播这个交易, 然而交易所真的需要去广播这个交易吗? 不需要的, 交易所只需要在自己的数据库里, 将 A 的账户余额 -0.5BTC, 将 B 的账户余额 +0.5BTC. 这一步, 只是交易所自己维护的信息在更新, 没有上链, 所以这个操作是 off chain 的.
最后, 当 A, B 从交易所取现时, 交易所将他们线上账户的比特币转给他们自己的比特币地址时 (A, B 自己拥有私钥的地址), 这个操作才会重新 on chain.
后记
简单来说, on-chain 交易更安全, 但是由于比特币网络区块确认时间较长, 所以交易比较耗时; off-chain 交易可以很快, 但是由于交易数据放到交易所的数据库里了, 所以安全隐私又打了点折扣. 不过本文只探讨原理, 对利弊就不做过多评论了.
其它文章
数字货币
- 为何留在 steemit?
- 说一说重放, 重放保护, 以及分叉期间我们该怎么做
- 闲聊即将到来的 segwit2x 分叉
- electrum 钱包的 sweep 功能小记
- 浅读 Steemit 的设计与规则
- bitshares 中的账户与权限个人理解
- 比特币地址, 公钥与私钥的格式以及如何保证比特币不丢失