Page 330 - 《软件学报》2021年第5期
P. 330

1554                                     Journal of Software  软件学报 Vol.32, No.5,  May 2021

                 具体信息,不同的事务数据类型在 Transaction_Data 域有不同的格式;Timestamp 表示事务创建时时间戳;
                 Signature 表示发布者的签名.


































                                                     Fig.7   Data format
                                                      图 7   数据格式
                    各类非合约型事务经由图 7 所示数据格式打包进区块中进行存储,这些事务一旦被打包进区块就无法被
                 更改或删除,这样可以便于日后审计.事务具有 3 种操作类型,其中,创建操作 C 只能进行一次;更新操作 U 可以
                 进行若干次,直到该事务被撤销;同样,撤销操作 D 也只能进行一次.事务的操作类型作为系统判断该事务是否
                 合法的依据,判断方法如下.
                    (1)  检查事务的数据格式是否正确:正确,则进行下一步.
                    (2)  使用发布者公钥(Publisher_PK)检查事务签名是否有效:有效,则进行下一步.
                    (3)  ①  对于操作类型为 C 的事务:(a)  检查其 ID,若存在,则不合法;(b)  对于事务类型为 A 的事务,检查其
                        发布的属性是否已存在,若存在,则不合法(对于事务类型为 P 的事务,无需检查该策略是否存在,因为
                        策略是由各安全域根据自身需要定制的).
                        ②  对于操作类型为 U 或 D 的事务,检查其 ID:若不存在,则不合法;若存在,则检查原事务和更新后事
                        务的公钥是否相同,若不同,则不合法(防止策略状态被非法篡改,例如 A 域非法更改 B 域策略状态).
                    由于事务可能会被更新或撤销,且旧事务仍会存在于区块链中,所以系统在进行相关事务查询时,需要根据
                 其操作类型进行筛选.当一个事务被撤销后,无法被添加进结果集中,当一个事务被多次更新后,系统将选择时
                 间戳最新的事务添加进结果集中.
                    3)  区块链网络的工作流程
                         (1)  各种数据经过发布者按照上述的数据格式封装成事务后,经由区块链网络广播至全网节点.
                         (2)  链上节点对该事务进行验证:如果合法,则继续向附近节点广播;否则,停止传播.
                         (3)  网络中担任共识节点功能的网络节点收到该事务后,将其放入事务等待队列中,队列中的各种
   325   326   327   328   329   330   331   332   333   334   335