Page 244 - 《软件学报》2025年第7期
P. 244

张孝 等: 区块链测试基准综述                                                                 3165


                 信息、物流信息、质检报告、交易的时间戳等, 用于记录交易的具体操作和上链的业务数据, 实现溯源和透明度.
                 ④ 结果数据: 智能合约执行状态代码、执行结果、错误信息等. 这些数据用于记录智能合约的执行情况和结果.
                    图  5  是一个简单的智能合约片段, 实现了供应链应用中订单创建的功能. 其中定义了一个名为                           Order 的结构
                 体, 用于存储订单     ID、产品名称、产品数量、买家地址、卖家地址等信息. 函数                   CreateOrder 用于创建订单, 接收
                 产品名称、数量和卖家地址作为参数, 并将订单存储在                  Orders 映射中, 实现订单的存储和检索. 当调用智能合约
                 的方法时, 函数的参数       (订单  ID、产品名称、数量等) 会被记录到区块链中. 此外, 交易的发起者信息、交易的时
                 间戳、元数据信息等也会被记录到区块链中.

                               contract SupplyChain {
                                  struct Order {
                                     uint256 orderId ;
                                     string product;
                                     uint256 quantity;
                                     address buyer;
                                     address seller;
                                     bool is Created ;
                                     string status;
                                     unit256 timestamp;
                                  }
                                  uint256 private orderldCounter;
                                  function createOrder (string memory _product, uint256 _quantity, address _seller) public {
                                     require (bytes (_product). length >0 && _quantity >0 && _seller !=
                                     address (0), "Invalid parameters");
                                     orderldCounter++;
                                     orders [orderIdCounter]=Order (orderIdCounter, _product, _quantity,
                                     msg.sender, _seller, true, "Created", block .timestamp);
                                     emit OrderCreated(orderldCounter,_product, _quantity, _seller,
                                     block .timestamp);
                                  }
                               }
                                                     图 5 智能合约举例

                    (2) 状态数据库: 区块链的状态数据库是一种特殊的数据结构, 记录了区块链网络中所有账户的状态信息, 并
                 随着交易的执行而不断变化. 状态数据库的设置包括了数据模式的设置.
                    数据模式是对数据库中数据的组织、管理和存储方式的描述, 它定义了数据的基本结构、属性、关系和约
                 束, 是设计和构建状态数据库的基础. 状态数据库中的数据模式设置对某些应用场景的性能有较大的影响. 因此,
                 在测试基准中需要明确说明数据模式.
                    下面我们以供应链应用为例说明数据模式的设置. 在供应链应用场景中, 状态数据库包含了各种实体的信息,
                 如订单信息、产品信息、供应商信息、物流信息、仓库信息等. 表                      4  和表  5  分别展示了产品和订单实体中属性的
                 设置, 其中, productId  和  orderId  可以设置主键索引, 用来检索、更新或删除实体信息.


                        表 4 供应链中产品实体的属性设置                            表 5 供应链中产品订单的属性设置

                     字段名          类型            描述                字段名         类型             描述
                    productId     String   产品的唯一标识符               orderId     String    订单的唯一标识符
                      name        String       产品名称              productId    String    对应的产品标识符
                    description   String       产品描述               amount     Number        订单金额
                   manufacturer   String       制造商               orderDate    Date         下单日期
                      price      Number        产品价格               status      String       订单状态
   239   240   241   242   243   244   245   246   247   248   249