区块链撮合交易所的制作方法

文档序号:14720077发布日期:2018-06-17 03:40阅读:513来源:国知局

本发明涉及互联网技术领域,特别是区块链、交易所等技术。



背景技术:

1、目前大多交易所都是主从备份方式存储数据的,没有有效的加密和校验机制,数据库容易被篡改,需要很多安全监控的方案来防止数据篡改,提高了人力物力成本,如果是内部人员数据造假危害就更大了。

2、资金一般都要当天收盘才能清算,鉴于安全的问题,也不能24小时交易。

3、数据传输过程中一般没有加密和验证,交易指令容易被篡改。

4、目前还没有成熟的区块链交易所案例,功能不完善,性能有待提高。



技术实现要素:

本发明的目的是用区块链交易所代替中心化交易所,每个交易指令都是用户用自自己的私钥签名,传输过程中被无法篡改,历史数据库采用区块链分布式的存储方式,同步校验机制,即使内部人员也无法修改历史交易数据。

本方案较好地解决了在区块链上一对多,多对多的撮合成交方式,优化了数据对比技术,减少数据遗漏,加快数据同步速度,增加区域化的撮合中心服务器,减少了不同区域网络延时对交易的影响。

本发明所采用的技术方案是:区块链交易所订单都是用户签名过的,数量一般不能完全匹配,这里需要规定,当签名过的价格符合成交要求时,只要成交的数量累计不大于签名的数量即可,同一服务器上同一个价格上的撮合顺序按进入该服务器的时间顺序来排序。

各服务器收到交易请求,因为时间的差异,一样的订单价格,不同服务器排序的位置是不确定的,为保证成交效率,可以按一定规则或随机选其中一台服务器作为唯一一台全网撮合中心,这台服务器结束每个新区块的撮合后,把配对结果打包,广播给其他服务器,其他服务器验证通过后在本地增加新区块。

为提高数据同步的效率,可以让用户通过变换随机数来改变哈希值,可让用户选定某些前置取号机,可约定交易哈希值的某几位分段分配号段,这里把哈希值的某几位作为同一区块不重复的编号来使用,将这批哈希值的编号用位图来记录,将交易数据传送到另一服务器上后同样用位图法进行排序,生成新的位图,两台服务器的位图比较后,马上可以获悉那些数据遗漏的交易编号组成的位图,去请求下载补齐。

如果要撮合的用户分别处于网络有延时的多个区域,除了一台全网撮合中心,还可以增加多台区域撮合中心,用户可指定到某区域撮合中心配对,每个用户只能指定(需要签名)在某个区域的其中一台服务器上撮合成交,若要更换撮合服务器,需要通过撤单后重新挂单来实现。区域撮合中心成交的交易记录会发送给全网撮合中心,无须全网撮合中心配对可直接写入区块链的新区块,若某订单指定的撮合中心发生变化,某订单指定的撮合中心默认传移到新的撮合中心服务器。

各台服务器根据与周围服务器的通讯状况(考虑带宽和网络延时)给周围服务器打分,比如5、4、3、2、1分,得分最高的那台(若有一样就随机选其中一台)服务器会被选为全网撮合中心服务器,得分统计最高的部分(如前30%比例数量的)服务器,其平均值最高的服务器会选为区域撮合中心服务器。

区块链撮合交易所,不但可以分多区域中心进行撮合交易,还可以把不同的交易品种放到不同的服务器上进行撮合交易,但因为资金余额在多台服务器上无法同时校验,仍需用户指定一台(或默认)服务器来做资金余额校验,然后才能发送到相应不同品种的撮合中心。

与现有技术相比,本发明的有益效果是:

本方案较好地解决了在区块链上一对多,多对多的撮合成交方式,优化了数据对比技术,减少数据遗漏,加快数据同步速度,增加区域化的撮合中心服务器的选举,降低了不同区域网络延时对交易的影响。

附图说明:

图1是区块链上如何实现签名过的多笔订单的撮合交易;

图2是说明使用位图对比同步交易数据的流程;

图3是说明如何选全网撮合中心服务器;

图4是各台服务器根据与周围服务器的通讯状况(考虑带宽和网络延时)给周围服务器打分。

实施例1,参照说明书附图1,

本实施例说明区块链上如何实现签名过的多笔订单的撮合交易:

各服务器收到交易请求,因为时间的差异,一样的订单价格,不同服务器排序的位置是不确定的,为保证成交效率,可以按一定规则或随机选其中一台服务器作为唯一一台全网撮合中心,这台服务器结束每个新区块的撮合后,把配对结果打包,广播给其他服务器,其他服务器验证通过后在本地增加新区块。

步骤S1:A用户订单买入300股股票,价格15元,

B用户订单卖出200股股票,价格15元,

C用户订单买出500股股票,价格15元,

D用户订单卖出200股股票,价格15元,

E用户订单卖出300股股票,价格15元,

服务器收到每一笔交易都附有用户的签名(用户私钥签名),并约定未来配对的数量累计不能多于签名中预定的数量,这里每笔交易都没有指定交易对手。

A、B、C、D、E用户的订单在某台服务器上同一个价格上的撮合顺序按进入该服务器的时间顺序来排序。

每笔订单在进入撮合队列前会检查每个用户累计的数量不能超过其自身的可用资金余额或可用股票余额。

步骤S2:A定单最早出现,B订单第2位出现,两订单价格相同,买卖方向相反,B订单的全部200股股票和A订单的300股中的200股配对成交。

成交的记录为:B的200股股票支付给A

A的3000元(200*15)支付给B

步骤S3:经过上一步骤,A定单剩下100股还未成交,这时轮到D用户配对,D用户15元卖出100股股票,与A定单成交剩下100股,D用户15元卖出100股股票,与C定单成交100股。

成交记录为:

D的100股股票支付给A

A的1500元(100*15)支付给D

D的100股股票支付给C

C的1500元(100*15)支付给D

步骤S4:经过上一步骤,C定单剩下400股还未成交,这时轮到E用户配对,E用户15元卖出300股股票,与C定单成交300股。

成交的记录为:E的300股股票支付给C

C的4500元(300*15)支付给E

步骤S5:若C用户想把还未成交的100股撤销,就发送删除指令(需要签名),服务器接到指令后就把还未成交的C订单撤出撮合队列中,已成交的部分不能撤销。

实施例2,参照说明书附图2,

说明使用位图对比同步交易数据的流程。场景:通过前置节点A挑选不重复编号的有10万笔(1e5)交易,节点服务器B同步前置服务器节点A的交易订单。步骤S1:节点A使用18位(2^18>2^17>1e5,但是18位的位图更有时间效率)位图A,可用https://github.com/willf/bitset来计算位图。

bitNum:=uint(18)

A:=bitset.New(2^bitNum)

取每个交易哈希值(32字节,256位)前18位整数(二进制),放入位图A,保证每个交易对应位图的位置唯一,如果位置已被设置,则变换交易随机数,重新生成哈希值。步骤S2:节点A陆续发送10万笔交易到节点B,最后把位图A发送到节点B步骤S3:节点B把接收到的交易,按照步骤S1,生成位图B,对比位图A和位图B,如果相等,结束。B.Equal(A)==true否则标记缺少的交易,生成位图C,发送位图C到节点A。C:=A.Difference(B)

步骤S4:节点A找出位图C对应位置的交易,发送给节点B。步骤S5:重复步骤S3,步骤S4。

实施例3,参照说明书附图3,附图4,

各台服务器根据与周围服务器的通讯状况(考虑带宽和网络延时)给周围服务器打分,比如5、4、3、2、1分,得分最高的某台服务器会被选为全网撮合中心服务器,这里8号服务器总分为46分,是所有服务器中总分最高的服务器,很容易被选为全网撮合中心服务器。

得分统计最高的部分(如前30%)服务器,其平均值最高的服务器会选为区域撮合中心服务器。这里若取得分最高的前3台服务器,4、6、8都会被选为区域撮合中心服务器,因为8已经是全网撮合中心服务器,所以4、6选为区域撮合中心服务器。

由于全网或区域撮合服务器都不是固定的,一旦用户指定的中心已经变化,可将交易配对的权利默认转移到下一个被选出的撮合中心,区块链上需要指出转移的唯一线路达成共识。

增加区域化的撮合中心服务器,可以降低不同区域网络延时对交易的影响。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1