比特币P2P交易市场的逻辑设计——献给奔腾的2014

Unknown view 64 2014-1-13 09:27
share to
Scan QR code with WeChat

比特币系统是天生的P2P。截至目前为止,法币与比特币的联系大都寄托于中心化的交易平台。虽然个人觉得 “法币与比特币是一对天生互助共生双赢的完美体” ,但终究有一个P2P模式的去中心化交易渠道才让人安心。

这里,本人试图提供一个逻辑上的设计模型,来构建一个P2P模式的去中心化和无需信任的比特币交易系统。请不吝拍砖,欢迎讨论~~

比特币P2P交易市场的逻辑设计——献给奔腾的2014

要点

与通常意义上实时交易的“中心化交易平台”不同,P2P方式下需要撮合交易双方“具体的个人”来实施交易,这更像菜市场中面对面的购买“标价的商品”;

因为付款无法预先充值(缺乏中心点),购买行为是在交易撮合之后现付款。又因为交易是在买卖双方个人之间发生,所以卖出者的商品(特定数量的比特币)很可能达不到你想购买的额度(会尽量接近——由撮合算法实施),所以一般只能是卖多少买多少(详见后);

现付款是一个需要较长时间的行为(以小时记),同时P2P方式牵涉到交易双方的“信誉”考量,所以撮合交易并非严格按照挂单的时序执行;

P2P是一个以买卖个体为单位的交易“市场”,而非被服务器汇合挂单、智能处理的实时交易的“平台”,所以逻辑上会有很多的不同;

基本特点

就像比特币的客户端程序,这个P2P交易市场也是一个客户端程序,开启后,它作为一个P2P节点运行;

程序维护市场的挂单数据,成交后的单子作为历史记录保存,但并不需要存储所有的历史记录,比如只存储半年的历史用于追溯查询。挂单数据是动态的,也是有限的,所以系统维护的数据并不会无限递增(与用户规模有关);

用户的卖单需要提供有效的比特币地址作为卖出地址,并且在撮合交易前地址上的余额满足交易要求(系统会自动检索比特币网络进行验证);

购买者同样需要提供一个有效的接收比特币的地址进行挂单,购买数量任意(但应该考虑实际的支付能力,否则如果交易失败会影响接收地址的信誉度);

交易双方的身份ID即是相应的比特币地址(匿名性),该地址被系统存储并会附加以往交易得到的信誉积分。信誉会与撮合交易的优先级相关(故该地址也会积累价值或负价值~)。

交易过程

P2P模式下的任何行为都是双盲的,交易双方互不了解也无任何信任可言,在设计时必须充分考虑欺诈的可能。

P2P下引入第三方仲裁节点不可避免,但这并不意味着“仲裁”会经常发生。为尽量避免仲裁的涉入或欺诈产生,本设计引入“前置代价”的概念,即交易双方需要为交易预先支付押金。具体如下:

买方购买者可以任意挂单,但在交易撮合后(已获得目标卖家,双方暂时锁定),买方必须先向仲裁节点提交一个转账交易。该交易的内容为“买方向一个自己的钱包地址发送一定数量的比特币(推荐为实际交易额的20%)作为诚意押金,并且该交易需要两个签名才能实施(自己 + 卖方或仲裁节点)”;

【注】:交易撮合后买方可以撤单(如果还未创建诚意押金交易的话)。押金赎回的交易单自己已先签署(第一次签署)。

中介仲裁节点收到诚意押金交易单后,通知卖方发送比特币;

卖方卖方创建一个需两个签名才能实施的“发送到买方比特币地址的售卖交易”发送到仲裁节点(注:尚未签署);

卖方为避免自己收到付款后不确认付款(买方无法收币),卖方还需同时创建一个诚信押金交易(一个发送到自己钱包地址的交易,成交约束为依赖于售卖交易成功和买方押金赎回成功两者——也就是自己最终签署了售卖交易和买方押金赎回交易后,本交易自动确认);

卖方卖方需同时提供收款方式、帐号等相关信息供买方付款使用。注:该信息传递可以通过比特币网络,或程序自己设计的方式;

中介仲裁节点收到卖方的2个交易单后(一个售卖交易单一个押金单),验证交易单的合规性,然后通知买方付款并转发卖方收款方式等信息

买方签署接收比特币的交易(第一次签署),根据信息进行实际付款,同时保存付款凭据以防发生纠纷;

卖方收到付款后,确认交易成功(完成签署售卖交易单和买方的押金赎回交易单);

【注】:如果不确认交易成功,自己的押金将无法赎回。

比特币系统:售卖交易和买方押金赎回交易都完成,卖方押金赎回交易自动确认。至此买方押金赎回,卖方押金也赎回。

风险分析

买方预先支付诚意押金,可以防止无诚意买单冻结被撮合的卖单,虽然可以设计超时自动解冻(不易权衡),但会影响系统交易的有效运作(甚至成为一种攻击);

卖方同时发送诚信押金,可以防止卖方收到付款后不确认比特币的最终发送。这或许是因为行情上涨,卖家觉得划不来希望买家额外补偿,以不确认交易为要挟;

在这样的设计下,除非卖家真的没有收到付款,或买家既富有又无聊,一般不会发生纠纷。上面仲裁节点的中介行为应当是自动的,无需人工参与;

有一种情况:一个新帐户可能一点币都没有,他无法提供初始购买的诚意押金。对于这种情况,系统可以允许一个新地址无押金的进行一次(或几次)低额购买,并且对其进行信誉评估。购买者的虚假买单仅会暂时冻结被撮合的卖单,不会造成卖家实际的币损失。

每成功交易一次双方信誉评分+1,每发生一次纠纷(仲裁介入)双方平分-2,扣分比加分严重一倍,可以提高违约的成本(信誉影响交易撮合优先级);

交易撮合策略

买卖双方可以在任何时候挂单,但P2P网络不像中心化平台那样有一个一致的时间标准(服务器时间),挂单是否及时被广播出去并被认可,跟该节点的网络状况有关。所以挂单的时间顺序不应作为最主要的撮合考量因素;

每一个交易账户其实就是一个比特币地址(无需另外注册),通过不断的交易历史可以累积账户的信誉。在P2P模式下信誉因素是很重要的(中心化平台可以无视,因为账户无法作弊或耍赖),所以信誉度应当作为撮合交易的一个参考因素;

如前所述交易是以挂单者个体为基本单位(便于付款),买卖双方的挂单金额很难刚好匹配,很明显的做法是尽量减少买卖单的差额。一般以卖单为主,买单额大于尽量等于卖单额(付款金额按实际成交额计算)即可。通常情况下不撮合卖单额大于买单额的,因为这需要将卖单分拆,会增加复杂性;

仲裁设计

当纠纷终于无法避免,仲裁节点的人工介入解决则必需。

仲裁节点就是普通的交易节点,仲裁点的选取是根据其交易信誉度和其之前仲裁的威望值综合决定的。每成功“完成”一次仲裁加一个威望值。

买卖双方可在交易启动一段时间后(如24小时)要求仲裁节点人工介入,但需要付出成本。无论哪一方申请了仲裁,双方都需要支付仲裁费(建议支付押金的5%),因为一般是申请者的对方违约,所以对方应当承担损失,同时自己也必须付出,以避免轻易启动仲裁程序。

支付仲裁费使得仲裁点的人工付出可以获得回报,提升仲裁人的积极性;

仲裁并非仅为一次,如果某一方不服可以申请新的仲裁(系统自动优选一个新的仲裁节点)。前一次的仲裁费也会支付,但该仲裁点因有“不服”会被减去一个威望值。威望值的减法是为了督促仲裁人的责任心——虽然依然有收入,但以后的获选概率会降低。

重复的仲裁不会无限延续,系统可以设置一个次数上限,当达到上限后系统自动根据历任仲裁的判决结果判决(多者胜出)。注:推荐19次(约全部押金,估计不会发展到如此地步);

仲裁节点是随机选择的,但为避免交易方与仲裁点合谋进行欺诈(很难出现),可以将节点的IP地址的地域距离纳入优选考虑因素中;

问题

如果无纠纷产生,则一切都好。但如果发生了纠纷,仲裁点的人工裁定方法可能会成为一个问题,即仲裁人用什么方法查验交易的真实情况?

如果交易双方采用银行转账汇款进行支付,仲裁人是否可以很方便的查询到该项银行转账的信息,从而确定买方是否足额支付了款项?

如果交易双方采用支付宝系统内转账呢?或者更多的其它支付方式呢?各种方式是否都能够提供外部查询。

如果交易的双方所采用的付款方式无法从外部查询,则可能需要买家提供进入支付账户的方式(如账户和密码),这既不安全也会导致隐私问题,对买家不公平。如果最终需要用三方会谈(通过网络工具如QQ)的方式了解和仲裁,则又是对仲裁人素质的考验。

其它……待补充

所以,最好是卖家能提供一个方便的收款方式,其交易详情可以无需登录就简单查询(只要有查询密码即可)。或许付款截图保存到网盘是一种方式,但图片终究是很容易PS滴~

总结

在任何交易中,第三方仲裁都无法完全避免,因为总是有这样那样的原因导致纠纷的产生;

为了实现去中心化,第三方仲裁点的选择应当是随机的,通过仲裁威望值和交易信誉度优选仲裁节点;

利用比特币系统本有的交易担保功能(多签名交易脚本)和巧妙的相互制约设计,实现预置成本的低风险双盲交易;

该系统不是一个常规概念的交易平台,它更像一个大市场,商品被打包标价——买币,就像买菜一样;

建议

不建议该交易市场程序另外再发行自身的虚拟币,系统最好独立于货币发行之外,保持独立性以获得公平性;

着眼于长远,如果系统支持多币种兑换,可能发展成为通用的虚拟支付客户端,或者作为开放性虚拟支付的基础平台;

系统开发期间可接受捐助,挂载严格把关的适量广告等~~让开发者不必太为生计而奔波拼命。

btcfans公众号

Scan QR code with WeChat

From the Internet
Disclaimer:

Previous: 网上“搬砖”要谨慎,多名网友被骗比特币 Next: 比特币为何吸引如此多的投资者?

Related