Page 209 - 《软件学报》2020年第12期
P. 209

于雷  等:FCSP-Blockchain:基于区块链技术的公平合约交换协议的实现                                        3875


         后,双方之间的公平合约即建立.此后,合约内容是无法单方撤销的,需要双方的再次 3 次签名确认过程才能撤销
         已建立的公平合约(后面将会叙述).
             在前两个交易单的数据结构中,双方都在交易单的输出指向地址中加入了本方的交易地址,目的是在合约
         交换还未完成时,允许任何一方终止还在交换过程中的公平合约.区块链的共识机制避免了“分叉”现象,因此,交
         换过程中的公平合约,当任何一方发布链接“终止合约”交易单,对手方同时发布“确认”合约交易单时,区块链的
         全网共识机制,保证了这两个矛盾的交易单中只能有一个交易单被成功记入区块链全局区块链数据中,这保证
         了公平合约交换过程的全局数据一致性.无论公平合约成功建立,还是某一方终止合约交换过程,都不影响其公
         平性、不可抵赖性和不可撤销性.由其在区块链网络内形成的交易单链接如图 5 所示.


             交易单T a                         交易单T b                        交易单T c

           初始化存证数据    Out              In  A方的数字签名   Out             In            Out
                +           B方的地址             +            A方的地址                             In
           A方的数字签名                        B方的数字签名                       A方的数字签名       B方的地址
                                                                             +     Out
                                                                        B方的数字签名       A方的地址  In
           合约的终止消息    Out                合约的终止消息     Out
               +            A方的地址             +            B方的地址
           A方的数字签名                        B方的数字签名



                                            交易单 T′                        交易单 T′
                                                                               c
                                                 b

                                       In  A对“合约终止  Out  空地址          In  B对“合约终止   Out  空地址

                                          消息”的转发                         消息”的转发

                          Fig.5    Creating contract and signature transfer process between A and B
                                  图 5   合约创建及 A 和 B 双方的签名确认过程

             其合约终止交易单可由 A,B 中的任何一方发起,数据结构包含己方的数字签名和指向为空的目的地址.
             图 4 中的交易单链接关系,为了保证合约交换过程的数据一致及状态一致,避免造成“合约正常终止”与“合
         约成功建立”同时发生而出现的矛盾,其区块链全网节点的交易单合法性验证,与目前的交易类型区块链交易单
         合法性验证略有不同,即:每个交易单输出项指向地址中,不论包含多少个有效项,只能有一个输出地址能被后
         续交易单引用为前置交易单.即交易单的某个输出项被后续交易单使用之后,此交易单其他输出项地址同时变
         为无效状态,不能再被引用,否则会被共识节点验证交易单输入项不合法.在区块链网络的共识协议保证下,避
         免了交易单的“分叉”现象,多个矛盾的交易单同时在区块链网络发布时,只能有其中一个交易单被成功记入区
         块链网络,这使得合约交换过程要么被双方确认成功,要么被某一方确认终止.
         3.2.3    双方公平合约的追加、更新和删除
             在上述过程中,在末尾交易单 T c 构造新的交易单,可以在合约公平交换协议中实现合约内容的追加、更新
         和删除过程.“追加”指的是在合约内容 m 之后补充新的条款 m′;“更新”指在合约内容 m 之后补充新的条款 m′,
         且 m′中包含与原 m 相矛盾的内容时,以最新的补充条款 m′为准;“删除”指在合约内容 m 之后补充新的条款 m′,
         且 m′的内容为对 m 的失效声明.由此可知:合约内容 m 的追加、更新和删除都表现为在交易单 T c 之后链接新的
         交易单,且新交易单的双方待签内容为 m′.因此,以下将追加、更新和删除过程抽象为相同的过程:在合约内容 m
         之后追加新的合约内容 m′并确认 m′.合约更新的交换过程未完成时,允许任何一方终止合约更新过程,合约更新
         内容 m′的终止消息为 dm′.
             上述末尾交易单 T c 的输出 Out 指向了 A 和 B 的公钥地址,交易单 T c 的输出 Out 的验证脚本指明:A 和 B 双
   204   205   206   207   208   209   210   211   212   213   214