IP2IP 交易

比特币的交换可以直接从一方到另一方而无需中介。一个由中央银行背书的货币单位,再由其向商业银行,万事达卡和Visa卡等第三方发行的体系并不是现金的目的所在,现金的目的是建立一种允许个人之间直接交换的、稳定的硬通货货币体系。在比特币的第一个版本中,有一个相当糟糕的IP到IP的协议能让用户交换密钥。当时实现的版本并不安全,允许中间人攻击。这是可以轻松修复的东西,现在有很多协议可以解决这个问题。

双方进行交易时的主要关注点是:

“在计算上不可逆转的交易将保护卖方免受欺诈”[1]

这就是点对点(peer to peer)的意思。矿工是一个结算层。在银行系统中,即使资金清算到你的账户,也可能无法结算。商家通过信用卡系统收到的任何款项可能需要90天才能清算。银行允许你获得资金,但银行也可以追溯性对交易进行回撤,从而使账户逾期并要求支付利息和罚金。

这二者之间的差异使得比特币成为了点对点的。并非每个人都需要成为矿工,但个人之间可以直接相互交易,并快速验证挖矿节点是否已收到交易。

P2P 的理解其实很简单,点对点,这里的点是指交易的双方,而不是交易的一方与矿工网络。

正确理解的点对点交易,就是线下我拿着一张 10 元的纸币,递给小贩,小贩给我一个煎饼果子;问题在于今天为止我们在链上使用比特币的方式还没有做到这一点,现实是我拿着 10 元存进银行,由银行把我这 10 元划到小贩的账户,(由付款方单方生成交易 - 付款方签名 - 广播到网络)- 小贩打开客户端一看,喔钱到了,唯一的区别是这里的 “银行” 被去中心化了,“银行” 也没有信用派生去产生利息。 革命不彻底。

点对点的特性一方面满足比特币白皮书中第十节所提出新隐私模型,将身份与交易和公众相互分离;另一方面,这个是我个人的认知,是为了实现一笔交易的可协商性。很不幸,交易的可协商性的特性,被当成了一个问题叫做可锻性 malleability,被 Core 和 ABC 两家联手堵住了。

交易的可协商性讲白了,就是交易的双方(多方)可以先讨价还价,最后确定合同和支付。讨价还价的过程是不上链的,交易双方建立渠道,直接相互发送没有完全成型的交易并修改讨论内容,只有确定之后,才广播到链上。

比特币的交易数据结构中有两个关键的特性,一个叫 nSequence,一个叫 nLocktime,第一个功能是序号,第二个功能叫锁定时间。序号使得一个交易可有很多个版本,序号从 000001 一直上升至 FFFFFF,针对同一组输入,序号大的交易会覆盖序号小的交易;锁定时间使得一笔交易在达到指定时间之前不会被矿工打包。Blockstream 很黑,一方面把这两个特性彻底堵住,另外一方面在自己做的 Grin 上发扬光大,他们也一定见到了点对点交易的未来前景。

我们把相关的连接放在这里,请大家串起来看。

注意,交易协商的实现方式可以多种多样,这里仅以视频网站举个小小的例子。Craig 博士说了他接下来几周的 Medium 博客将会重点讲述。

比如说 Keyport 这个应用,你呢是一个看视频的,我是个视频服务商,我们约定,按看视频的时长付费,每分钟画面收 1 毛钱。 如何点对点实现这个过程呢?

  • 第一步,你先生成一笔押金交易,将押金 10 块发送到双方共有的一个地址,签名但不广播;
  • 第二步,建立一个 10 块退款交易,带有时间锁 5 个小时,让我来签名,签好给你,你再签好给我,确保你什么都不干的话可以拿到退款;
  • 第三步,双方核对好这两个交易并同时广播,由于退款交易有时间锁,并不会马上生效,这样押金就锁定好了。
  • 第四步,接下来我们开始传输,开始使用押金交易的输出向我服务器的地址和你的退款地址进行分配,创造一笔第一分钟的交易,序号 nSequence=1,我拿 1 毛,退款 9 块 9,把视频 ID 或者前两分钟的解密密钥写在 op_return 的备注里。我拿到之后,并不会广播,然后开始向你传输第一分钟的画面数据。

如果你要继续看第二分钟,那么你就要把这个传输交易改一改,我拿 2 毛,退款 9 块 8,签好再发给我,我把确认的第二分钟密钥给你,同时传输第三分钟的画面。

这个传输过程都不需要广播,我只要拿到你签名的交易,就向你发送下一分钟的视频。直到:

  1. 你把整个视频看完了。这个时候,比如说视频有 15 分钟,那么通过点对点直接来回 15 次,input 是一样的,但是 nSequence 从 1 一个一个涨到了 15. 这时候本视频已经放好了,那么我们协商一致,把 nSequence 变成 FFFFFFFF,作为最终的交易,广播,成交。
  2. 你看了五分钟,关了浏览器,过了半个小时继续看。你关掉浏览器的时候,我就把上一笔交易留着但不广播,当你回来,大家就继续对同一笔交易进行 P2P 的来回签名,这时候新生成的交易 nSequence>5,广播之后,会在矿工那里自动覆盖掉 nSequence<=5 的交易,最后,5 个小时之内,你看了多少,就收多少钱。
  3. 你看了五分钟,” 我好了”,直接关了浏览器。4 小时 59 分这个时候我只有最大序号 5 的交易,我把这笔交易广播,网络也能清算,我拿了 5 毛,给你退回 9 块 5。
  4. 你啥也没看,直接走了,过了五个小时,退款交易时间锁解除,矿工打包确认,钱退给你。
  5. 这里有没有可能双花呢,有一点点,押金交易是有可能双花的,但只要押金交易和退款交易都正常地到了矿工那里验证过,下面的就几乎没有风险了。

所有的高频竞价系统都可以使用 nSequence 实现。股票、拍卖……

  1. 视频付费。我发给你下一分钟内容,肯定已经收到了上一个签名交易,这样最多损失 1min,无所谓。
  2. 竞拍。竞拍也可以通过 nSequence 实现的,大家分别向交易所付足够的拍卖保证金,成交时,需要销毁其他交易,所以交易所会首先请成交人付费,收到成交人付费,并经过多个区块确认之后,通知其他竞拍人,这里需要一个复杂的原子交换,保证成交人 A 中标其他人就同时收到退款,具体的实现方式还有待开发,总之交易所可以销毁原有未广播的交易并退回保证金,经过若干个 conf 之后,再发货。如在这个过程中收到欺诈通知,可以不发货,并采取法律手段。
  3. 股票交易。股票交易是分几个阶段的,开盘前后各有两次集合竞价,盘中撮合成交。对双花的检查,可以设置在每一阶段的前后,把不合法的交易对剔除掉,然后再集合竞价阶段把被放鸽子的交易通过大户做完。
  4. 类似的过程,可以视为确定有限状态自动机(英语:deterministic finite automaton, DFA),形成自动的交易程序,按照固定条件执行流程图,完成自动交易,最终实现去中心化的公司治理自动化(英语 Decentralized Autonomous Corporations,DAC),详见这里: https://medium.com/@craig_10243/dfa-compilation-and-execution-38e6815897d2 https://medium.com/@craig_10243/blockchain-based-decentralised-autonomous-corporations-an-overview-5dc0d469fcb5

这里和现有社区的理解最大差别是,整个传输的中间过程都是点对点,不需要经过比特币(矿工)网络,事情办完,再把交易写到链上清算、固化。

2018 年 nChain 和 Coingeek 提出了一个 Metanet 概念。 以刚才视频为例,我们把每分钟视频数据的解密密钥放在交易中,而视频的数据通过现有的互联网方法传输。Metanet 是指,不再通过互联网协议渠道发送这个视频的数据包,而是把每分钟的视频,直接嵌入交易里面。这件事并不麻烦,后台程序自动处理了,使用起来,和微信扫码登录知识星球的体验会差不多。价格一定是双方协定好的必须透明,不透明的话,用户可以选择停止签名并安全退出。文件可以链上获得,也就意味着互联网服务器的所有内容都可以上链了,固定的资源放在主链上,临时的可变的资源 P2P 直接发给用户,在线博客、视频等等服务正在以日新月异的速度涌现,已经打破了我的想象力天花板。

在层出不穷的新应用、新环境下,点对点电子交易发展根本没有肉眼可见的天花板,唯一的限制是整个网络承载能力,也就是区块大小。


results matching ""

    No results matching ""