你拿比特币做什么?为什么这么问,当然是花掉!或者更准确地说用来支付或使用服务。支付使用比特币的具体流程被称为比特币支付协议,它在被称为BIP70的一个文档中得以体现。BIP是比特币的改进建议,也是供比特币“核心开发人员”改良比特币而使用的机制。目前有各种各样的BIP。可以亲自去https://github.com/bitcoin/bips/核实检验一番。

现在我们把话题说回到BIP70的付款协议。有关它的描述写在https://github.com/bitcoin/bips/blob/master/bip – 0070. mediawiki, 这也是本文技术内容的基础。

付款协议的摘要:

BIP描述的是一个商人和他们的客户之间的通信协议,它旨在实现更好的客户体验和更高的安全性保障,并防止中间人对付款过程的入侵。

请注意:中间人(有时缩写为MITM)攻击是当客户连接到一个商人,但客户不是真正在和商人谈判,而是跟一个坐在客户和商家之间(中间)的人谈判。这个“人”就可以看到所有客户和供应商之间的交流信息,也能够通过模仿供应商得到用户名、密码、信用卡信息和所有的个人物品,。因为模仿地非常逼真,客户可能还是不会明白。MITM攻击很危险,但用技术(如BIP70付款协议)去阻止他们是很重要的。

让我们打破付款协议的概念。首先,“付款”是价值从一人转移到另一个人的过程。第二,“协议”是一个必须以特定顺序执行的特定过程或序列消息。作为流程的一部分,某些“条件”可能需要验证成功才能完成。有时一个条件不满足,进程会异常终止或回复一个错误消息,但是协议本身应该能够处理所有这些情况,使它成为“健全”协议。

付款协议是一个在客户和供应商之间的序列消息,它有特定的顺序,也需要指定的回复或消息不可或缺的认证。让我们来看看一组特定的消息,我将称之为“在走廊通过的协议”(PITHP)。如果你在大楼里工作,碰巧撞见同事,可能会发生这样的情形:

and we’re done, exciting ayee?

Sandy说:嘿Sharon,最近如何?

Sharon说:嗨Sandy,,很好很好,你呢?

Sandy说:还是老样子,老样子。

这个简单的“在走廊通过的协议”是一个序列的消息,它以预期的顺序从一个人传递给另一个。当然事情可能不会像预期的那样,在这种情况下,可能需要附加条件处理消息:

Sandy说:嘿Judy,最近如何?

Judy说:嗨Sandy,那个现状报告你拿给我了吗?

Sandy说:嗯,我昨天发给你了,让我看看,该死的邮件出问题了。

Judy说:我今天下班前需要它。

Sandy说:没问题,我再发你一份。

实现协议的代码必须处理所有可能发生的各种异常和状况,必须是所有的!

这个插图很能说明BIP70的问题:

比特币交互协议(比特币支付协议解读)(1)

注意:客户要将消息发送给商家,而不管其他两个实体会怎样运作。首先是比特币钱包应用程序本身和比特币网络。你从上到下看过插图,它表示消息的特定序列。当然图片不能详细地列举代码可能要处理的所有选项。例如,如果商人服务器不响应一个“支付请求”消息,那么客户必须做一些操作,诸如重复“现在支付吗?”或“中止整个交易”。

让我们用平实的语言大致浏览一遍图表:

客户点击“支付”按钮,发送一条消息到商人服务器。商人服务器请求从钱包应用程序付款(这个钱包属于客户)。钱包应用询问客户:“你确定你想授权这个付款吗?”客户点击“OK”,发送消息给钱包应用程序。钱包付款给商人,并且可能同时启动比特币网络交易。比特币网络处理交易,从而使商人接受到比特币。商人服务器承认这个付款,发送消息到钱包,最后钱包(可选择地)将一条消息发送回客户。

非常彻底,但完全可以理解。解释付款协议的细节是来自Mike Hearn的,可登陆:https://bitcointalk.org/index.php?topic=300809.0进行查看,那里有很多更详细的付款协议的细节。我只建议记住所讲述的BIP70摘要的关键步骤:那就是让客户有一个更好、更安全的体验。随着越来越多的钱包和商人提供更完整的付款协议支持,我们都将受益。

原文:http://bitcoinmagazine.com/12774/bitcoin-payment-protocol-explained/

,