基于 BSV 支付信道和 Oracle 的智能合约关注一下,BSV 最新资讯等着你!2019 年 12 月 26 日,BSV 学习群讲座,主讲:郭家琪,BSV 开发者。

说明:文中的“支付通道”与 nChain 的论文中的“支付信道”“Payment Channel”为同一技术词语。

相关参考资料请点击查看:支付信道和比特币智能合约

基于 BSV 支付信道和 Oracle 的智能合约

大家好,感谢给我这个机会,非常荣幸能在 BSV 学习群里和大家分享。
自我介绍一下,我叫郭家琪,17 年开始跟随 CSW 博士的文章学习比特币知识,目前在上海读本科并跟几个朋友一起在 BSV 上做应用。今天分享的内容是我从 CSW 博士视频和文章中学习到的一点知识 :"支付通道的原理及其应用"。一、什么是支付通道?

支付通道是几个参与方在链下通过比特币交易进行沟通的通讯通道。

每个比特币交易,均可含有多个输入。对于每个输入,都有一个称为序列号(sequence number)的参数,取值范围是从 0x0 到 0xFFFFFFF,表示交易的新旧版本次序,取最大值时表示此输入的交易是最终版,对于整个交易,有一个锁定时间(locktime)的参数,整个交易在锁定时间到来之前无效,无法被打包。如果一个交易的输入的序列号不是最大值,那么在锁定时间到来之前,这笔交易的一个具有更大序列号的新版本,可以使花费相同输入但序列号较小的较早版本失效。序列号和锁定时间是原初比特币就有的功能,创世纪升级后 BSV 将会恢复这些功能,到时基于支付信道技术会出现更多的新应用。支付信道的最基础应用就是流式小额支付,比如在家庭电表上使用支付信道付电费:智能电表内置 SPV 钱包,当用户回到家开始用电时智能电表与国家电网打开一个支付信道。基于 BSV 支付信道和 Oracle 的智能合约(这个表是简化版,没有列出矿工费)电表将此交易交给国家电网,国家电网将此交易广播出去,因为锁定时间到期前这个交易无效所以这个交易暂时不会被打包,但是这个交易涉及到的 UTXO 已经被矿工锁定,矿工不会再接受该 UTXO 的双花交易。接下来每隔 5 分钟电表就根据用户的用电量更新交易并发送给国家电网:基于 BSV 支付信道和 Oracle 的智能合约可见此交易的序列号为 1,可以覆盖上一个交易。等到晚上 12 点后,国家电网将会广播最后收到的序列号最大的那笔交易从而拿到这笔钱。基于 BSV 支付信道和 Oracle 的智能合约因为之前的 67 笔交易都是在链下传输,只有最后的交易上链,所以一天时间只需付出一笔矿工费。这种流支付方式可以低成本地将国家电网的应收账款从一个月缩减到一天。比特币最重要的特点之一就是极低的支付额和更低的支付费用,而在合适的场景应用支付通道可以让支付费用再次大幅降低。比特币弥补了互联网缺失的小额支付部分后可以带来不同于互联网的业务模式。互联网上的几乎所有内容都是免费的,传统方式无法为数字服务支付小额费用。支付宝、微信、Paypal 都无法做到全球小额支付,这导致服务提供商们只能靠广告盈利。调查显示如果平台提供无广告的订阅模式则他们的收入可能大幅增加。基于 BSV 支付信道和 Oracle 的智能合约以爱奇艺为例,对于偶尔看一个视频的用户,要不就忍受广告,要不就花一个月的钱买会员,两种方式都很恶心,用户体验很差,而对于平台来说,现在的会员机制,不管一个月看 500 个视频还是 5 万个视频都是固定的几十块钱,明显做不到利益最大化。而通过使用 P2P 支付通道,爱奇艺可以实现无广告、无会员、按照实际观看量实时小额收费,提高用户体验和平台收入,真正的“you pay you play”。这里所说的 P2P 支付通道不仅可以进行流支付,更可以传输数据,大家知道互联网的 OSI 模型有 7 层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,而在比特币模型中,我们有以下层级结构 :l 0= 物理层,l 1= 数据链 (网络,例如 IP 和互联网或其他) ,l 2= 网络--P2P 网络和用户与节点之间的交易交换,l 3= 比特币交易 l 4= 脚本 P2P 支付通道在这里就相当于 TCP,用户访问爱奇艺打开一个视频,即访问爱奇艺的 IP (IPv6)时,爱奇艺返回一个交易模版,这个交易模版就像 TCP 的数据包,模版包含了爱奇艺的收费地址、该视频每分钟的价格、该视频第一分钟的内容。其中的视频第一分钟的内容是放在 pushdata 里,比特币的 pushdata4 操作码支持 4GB 的内容。基于 BSV 支付信道和 Oracle 的智能合约客户端收到第一分钟的内容后即可开始播放视频,并根据模版签署付费交易传输给爱奇艺打开支付通道:
基于 BSV 支付信道和 Oracle 的智能合约爱奇艺收到交易并验证无误后将广播该交易并返回带有第二分钟视频内容及收费标准的交易模版,客户端播放第二分钟的视频并签署第二笔交易,如此循环下去直到用户停止播放视频,等锁定时间到期后矿工打包最后一笔序列号最大的交易,爱奇艺就能拿到钱了。二、基于支付通道和 Oracle 的智能合约

比特币的智能合约有多种形式:脚本、支付通道、第三方 Oracle,这次所说的智能合约只是其中一种而已。

这是一个全球范围内实时对战的公平安全的围棋平台,对战的玩家将会赢取或输掉 BSV。

一局游戏的参与者有:玩家 A,玩家 B,平台服务器 O。游戏开始,首先同时构建出资交易和退款交易,三方把该签的名都签好:基于 BSV 支付信道和 Oracle 的智能合约出资交易:A、B 各出资 1BSV,这笔 2BSV 存放在 A、B、O 的 2-3 多签脚本里,集齐其中任意两方就可以动用这笔钱,出资交易要马上广播到 BSV 网络生效。基于 BSV 支付信道和 Oracle 的智能合约退款交易:将 A、B 的钱原路返回给 A、B。有两个特点要注意:

    退款输入的序列号为 0,而接下来开始玩游戏时生成的交易的序列号会是 1、2、3、4、5………… , 退款交易的一个具有更大序列号的新版本,可以使花费相同输入但序列号较小的较早版本失效,因此退款交易只有在玩家没有开始过游戏的情况下才有效,比如玩家 A 出资完之后掉线了,B 可以使用退款交易。只要进行过一回合的游戏就以那一回合的序列号为 1 的结果结算。

    退款输入的序列号为 0,因此验证过程将查看锁定时间字段,在 24 小时内这笔退款交易无效,无法广播至 BSV 网络。

退款交易由 A、B、O 分别保存在本地暂时不广播,遇到游戏流局的情况等到 24 小时后任意一方将退款交易广播一下就能将所有资金原路返回。游戏没有流局的话就开始第一回合,在这里将围棋简化为只有 3 路,A 执黑先手:

基于 BSV 支付信道和 Oracle 的智能合约

A 生成了一个这样的交易:基于 BSV 支付信道和 Oracle 的智能合约(110)表示棋盘 1 行 1 列处没有子,(220)→(22 黑)表示 A 这一步在 2 行 2 列处下了一颗黑子。因为这一步走完的局势还是平局,所以输出的资金分配仍是原路返回。交易锁定 5 小时表示平台设置的这一局对局最多持续 5 小时。这个交易的输入只有 A 签了名所以暂时是个无效交易。A 将这个交易发给服务器 O,O 将会检查 A 的签名是否有效,根据围棋规则检查棋盘状态和 A 的下子是否有效,根据局势检查资金分配是否正确,防止 A 在任何地方作弊。如果全部有效,O 将对交易签名,此时交易有 A、O 两个签名,等 5 个小时就能成为有效交易,O 将签好的交易发给 A、B,这个交易就成为了最新的共识,就像游戏的存档点,这个交易有目前最大的序列号 1。将这个交易广播以锁定 UTXO,如果接下来有人掉线流局没有第二步,等该交易锁定时间到了即可被打包生效。如果继续游戏,该 B 下棋了:基于 BSV 支付信道和 Oracle 的智能合约B 生成交易:基于 BSV 支付信道和 Oracle 的智能合约跟第一步原理过程都一样。接下来该 A 走第三步:基于 BSV 支付信道和 Oracle 的智能合约基于 BSV 支付信道和 Oracle 的智能合约接下来 B 走第四步:

基于 BSV 支付信道和 Oracle 的智能合约

基于 BSV 支付信道和 Oracle 的智能合约接下来 A 走第五步:

基于 BSV 支付信道和 Oracle 的智能合约

基于 BSV 支付信道和 Oracle 的智能合约这一步开始不一样了,A 落子后吃掉了 B 两颗子,假如我们约定好的规则是吃掉对方 1 个子就赢 0.1BSV,这样资金分配就是 A 得到 1.2BSV,B 得到 0.8BSV。A 现在把这个交易发给服务器 O 审核,O 查看签名,查看棋盘,查看资金分配都没问题之后也签名。现在 2-3 多签已经完成,5 小时后广播即可生效,B 无法反悔不承认这个结果,B 只能按照规则继续往下玩或者直接掉线离开。下面的过程省略,原理都一样,就是一步一个检查点,游戏过程全部在支付通道内完成,直到游戏结束或者一方中途退出,将最后一个检查点广播生效即可。在这里 Oracle 的意义是提供信任。我们可以看到,所有跟围棋有关的部分全部是在 OP_return 里完成的,所以上面的过程完全不局限于围棋这个游戏,只要更改 OP_return 里的机制就可实现其他功能,比如应用在回合制的对战游戏中,如问道、宝可梦、刀塔自走棋,每一方的回合结束后根据这一回合打出的伤害更新资金分配,签名后发给 oracle 复核,然后等其他人完成回合。也可以应用在任务合同领域,例如矿池与其中的矿工之间的资金合同:基于 BSV 支付信道和 Oracle 的智能合约又例如 showjob 平台的模式可以这样实现,用户 A 出资 5BSV 发布任务:带着 BSV 标志在大会会场的 5 个位置合影,用户 B 接下任务后与 A 和平台 O 开通支付通道,随着 B 不断提交完成任务的证明,平台 O 将 A 的出资逐次支付给 B。在这种基于支付通道的智能合约中,Oracle 并不是必须存在的,因为支付通道智能合约已经具有信任的特性:强制执行如果任何一方试图作弊,另一方仅需简单地发布上一个达成共识的交易来索取交易输出。鉴于比特币交易的性质,作弊方获得的收益不可能超过上次约定交易的预期。换句话说,执行的强制性继承于这个成对交易的特性:出资交易和退款交易。信任支付通道不需要 A 和 B 和 Oracle 彼此信任。一旦出资交易上链,他们将尝试在支付信道中沟通并达成共识。如果没能形成共识,他们总是可以回到上一个达成共识的交易。这是从强制执行特性中继承来的。Oracle 的存在可以为智能合约带来更多信任,当一方试图作弊时,另一方可以和 Oracle 一起达成最新的共识而不是退回到上一个共识,这点小小的差别可以带来更好的用户体验。一台围棋 Oracle 服务器运行过程中会在链上留下记录,这些记录就是它积累的信誉,Oracle 作弊的成本就是之前积累的所有信誉,Oracle 作弊收益低于成本时就可以信任 Oracle,我在网上跟全世界范围内的陌生网友下棋,我肯定希望有一台靠得住的服务器来保障我的游戏体验。而在矿池与矿工的例子中,如果双方已经合作多年彼此信任,合作中就可以直接使用支付通道智能合约,不需要额外的 Oracle。需不需要 Oracle,是根据具体场景、参与方之间的关系、涉及金额等多个条件来决定的,由参与方自己判断。Oracle 的类型也有多种,游戏运行商的 Oracle、有信誉的第三方合同 Oracle 公司、包括法院也可以在线提供 Oracle 服务,签订重要合同时可以选择法院提供的 Oracle,如果一方作弊,另一方直接提交证据给法院由法院使用 2-3 多签判决资金分配,毕竟 Code 不是 Law,Code 只能提供证据,Law 才是 Law。

基于 BSV 支付信道和 Oracle 的智能合约

基于 BSV 支付信道和 Oracle 的智能合约

第五届 CoinGeek 大会 将在伦敦举行

2020 年 2 月 20 日至 21 日

欢迎加入区块链行业先锋们的讨论,你会发现 BSV 激动人心的发展——这是唯一一款监管友好、可用于商业、可大规模扩展的区块链。 你将成为 BSV 的早期参与者和创新者,BSV 即最初的比特币,它正朝着其引爆点迈进,并在全球范围内被广泛采用。

不要错过 2020 年最大的区块链会议之一!

Bitcoin SV (BSV):区块链的未来

大会订票微信号:bitcoinassociation

基于 BSV 支付信道和 Oracle 的智能合约

大会网址:https://coingeek.com/

基于 BSV 支付信道和 Oracle 的智能合约