Blockchain rule engine

By providing pluggable rule engine services on the blockchain, the management problems of rules and transactions in the existing technology are solved, dynamic rule management and multi-tenant support are realized, and the flexibility of the rule engine is improved. and efficiency.

CN119301583APending Publication Date: 2025-01-10DLT GLOBAL INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380031946.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-03-01
Filing Date
2023-03-01
Publication Date
2025-01-10

AI Technical Summary

Technical Problem

The existing rule engine is not suitable for the blockchain paradigm, resulting in rules and transactions being locked under the intention of the developer and being difficult to manage and use on the blockchain.

Method used

Provide blockchain rule engine as a pluggable service, and realizes the storage and execution of rules through language-specific software developer toolkits, rule engine application programming interface layer, and blockchain platform-specific service layer to realize the storage and execution of rules, supporting multi-tenants and multiple Application, using JSON document representation and consensus mechanism to write and read rules and transactions on the blockchain.

Benefits of technology

It realizes the ability to dynamically create, modify and delete rules on the blockchain, supports multi-tenant and efficient rule execution, reduces the complexity of blockchain operations, and improves the flexibility and scalability of the rule engine.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119301583A_ABST
    Figure CN119301583A_ABST
Patent Text Reader

Abstract

A blockchain rule engine is provided as a pluggable service that depicts a real-world implementation of a rule engine that stores rules, transactions, and results on a blockchain for use by blockchain applications and non-blockchain applications. A blockchain rule engine manages rules implemented by a client application that interacts with a blockchain platform that manages a blockchain. The blockchain rule engine includes a language-specific software developer toolkit (SDK) that provides an interface to a client application and discloses rule execution functions to the client application; a rule engine application programming interface (API) layer that provides a rule engine API to the language-specific SDK and receives and processes commands from the language-specific SDK; and a block chain platform-specific service layer that interacts with the block chain platform and accepts input from the rule engine API layer to execute business logic implemented in the rule.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to a rule engine for implementing business processes on a blockchain, and in particular to a blockchain rule engine implemented as a pluggable service for use by blockchain applications and non-blockchain applications. Background Art

[0002] Rules play an important and meaningful role in any process or system. Rules are fundamental to the thriving business processes. Rules can come from many sources - laws and regulations or company policies or any organization or group that involves processes and people. Rules are usually implemented as logic that determines outcomes. Rules can be used to implement decisions or can be calculations based on events, priority scores, or other functions.

[0003] Rules have been part of technology systems and applications since their inception. In the first generation of systems and applications, business rules formed part of the system or application code base on which all decisions, calculations, and conditions operated. As rules became complex and formed a large part of the code base, rule engines were introduced in products from Pegasystems, Fair Isaac Corp, and ILOG in the early 1990s. A rule engine is a separate system or application that implements precise decisions and is particularly useful for complex dependencies where regulatory and organizational rules change frequently, requiring changes in logic. A separate rule engine provides an easy way to include new rules or edit or deactivate rules.

[0004] Existing rule engine platforms have evolved from pure rules to organized rule engines that are easy and fast to manage and use. Unfortunately, existing rule engines are not suitable for the blockchain paradigm, and rules and transactions based on rules may be locked into the blockchain only under the developer's intention. Summary of the invention

[0005] The systems and methods described herein meet the needs of the art by providing a blockchain rule engine as a pluggable service, which depicts a real-world implementation of a rule engine that stores rules, transactions, and results on a blockchain for use by blockchain applications and non-blockchain applications. The blockchain rule engine manages rules implemented by client applications that interact with a blockchain platform that manages the blockchain. The blockchain rule engine includes: a language-specific software developer kit (SDK) that provides an interface to client applications and exposes rule execution functions to client applications; a rule engine application programming interface (API) layer that provides a rule engine API to a language-specific SDK and receives and processes commands from the language-specific SDK; and a blockchain platform-specific service layer that interacts with the blockchain platform and accepts input from the rule engine API layer to execute the business logic implemented in the rules. Data operations are managed by the blockchain platform-specific service layer and the blockchain platform together.

[0006] In an example configuration, the blockchain platform-specific service layer includes a JavaScript Object Notation (JSON) conditional parser that parses and evaluates conditions present in objects to which rules are applied. Each instance of each type of function supported by the blockchain rule engine is represented by a JSON document in the standard blockchain rule engine format, where each JSON document is written to the blockchain using the same methods and consensus as other blockchain transactions. Each modification or state change to each type of function is represented by appending a complete updated version of the JSON document for the modified function to the blockchain.

[0007] In other example configurations, the language-specific SDK provides an interface to enable client applications to access rule execution functions through blockchain applications developed in programming languages ​​supported by the language-specific SDK. In addition, the interface provided by the rule engine API layer supports multi-tenancy and multi-applications to interface with the blockchain rule engine. The rule engine API layer also accepts rule syntax and logic commands of the blockchain rule engine from the language-specific SDK or via the user interface console. The rule engine API layer also converts the syntax and logic commands into a format that can be passed to the blockchain platform-specific service layer via an interface to the blockchain platform-specific service layer implemented on the blockchain platform.

[0008] In other example configurations, the blockchain platform-specific service layer describes interfaces and functions to be supported in each implementation of the blockchain rule engine, which includes a subset of features and functions that can be implemented in the blockchain platform-specific service layer or on the blockchain platform. In the example configuration, the features include at least one of the following: function creation, function update, function deletion, rule creation, rule update, rule deletion, rule activation and deactivation, rule import and export, or rule rollback.

[0009] In another example configuration, a conditional parser of a blockchain platform-specific service layer parses pre-processor functions and post-processor functions to execute and store processing results on the blockchain. Pre-processor functions and post-processor functions can be linked with rules to change the behavior of the pre-processor functions and post-processor functions. The post-processor function can include at least one of a pass post-processor function or a fail post-processor function, which is executed after the rule has been executed and the executed rule produces a pass or fail result.

[0010] In another example configuration, the blockchain platform-specific service layer provides functionality implemented directly on the blockchain platform for rule-related functions that are directly accessed by smart contracts on the blockchain platform. Different rule execution functions can be applied to different data objects, where the data object can include at least one of a tenant, an application, a rule group, a function, or a rule. Each instance of each type of rule execution function can be represented by a JSON document in a format common to each type of rule execution function. In addition, each JSON document can be written to the blockchain using the same methods and consensus as other blockchain transactions. Each modification or state change to a rule execution function can be represented by appending a complete updated version of the JSON document for that type of rule execution function to the blockchain.

[0011] In another example configuration, a blockchain rule engine specification is provided, which outlines the syntax, interface, and requirements that enable the use of the rule engine API in a client application to implement dynamic rule creation, dynamic rule modification, and dynamic deletion of rules in an application, and outlines how the blockchain rule engine stores rule data on the blockchain. The blockchain rule engine specification can specify how the blockchain rule engine stores a set of instructions executed before the rule is executed on the blockchain. In addition, the blockchain rule engine specification can implement multi-tenancy on the blockchain by enabling multiple tenants to create and manage rules and store credential data and rule functions on the blockchain. The blockchain rule engine specification can also include multi-level access control, whereby in order to perform any operation on the rule, the client application provides the tenant's credentials as well as the client application's credentials. The blockchain rule engine specification can also provide an application-level hierarchy supported by the blockchain rule engine to utilize the rule execution function, whereby the client application can use the created rules and functions and store the credentials and metadata on the blockchain. The blockchain rule engine specification can also implement a plug-in for the communication between the blockchain application and the blockchain rule engine to establish inter-chain code communication and establish a connection for non-blockchain applications. In addition, the blockchain rule engine specification can provide the client application with the ability to execute the created rules by providing functions for creating a connection between the client application and the blockchain rule engine to perform rule execution. The blockchain rule engine specification can also include a set of function interfaces that define functions directly available to the client application code, and function implementation code that implements the function interface by converting calls to the blockchain rule engine specification into calls to the rule engine API.

[0012] The embodiments described herein also encompass computer systems and computer-readable media that utilize instruction encoding to implement the methods described throughout the present disclosure. For example, the systems and methods described herein can be implemented on a computing platform in the cloud that provides functionality for accessing a blockchain platform as described herein and storing data on the blockchain platform. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] The present disclosure is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like reference numerals indicate similar elements, and in which:

[0014] Figure 1 is a general block diagram providing an overview of a blockchain rules engine in an illustrative example.

[0015] Figure 2 is a detailed component diagram of how a sample configuration of a blockchain rule engine is implemented.

[0016] Figure 3A schematic diagram of a rule data system object of a blockchain rule engine in an example implementation is provided.

[0017] Figure 4 is a diagram illustrating a user application node including the interaction of the Fabric-Node.js SDK of the blockchain rule engine with the user application and the execution environment in which they are both hosted.

[0018] Figure 5 is a block diagram of a typical general-purpose computer that can be programmed as a special-purpose computer suitable for implementing one or more embodiments of the blockchain rule engine disclosed herein. DETAILED DESCRIPTION

[0019] Below about Figures 1 to 5 The descriptions are sufficient to describe specific embodiments to enable those skilled in the art to practice them. Other embodiments may incorporate structural, logical, process and other changes. Portions and features of some embodiments may be included in those of other embodiments, or substituted for those of other embodiments. The embodiments set forth in the claims encompass all available equivalents of those claims.

[0020] the term

[0021] Application: An application represents a component (service or tool) that can be attached to the blockchain rule engine to utilize its functionality. Applications are created and managed by tenants. Applications are similar to tenants and also have their own IDs and secrets. In order to perform any operations on rules and functions, tenants also need to provide the application ID (not the application secret). This is because rules and functions do not belong directly to the tenant, but to the application directly owned by the tenant. The reason why application secrets are not used in rule and function CRUD (create, read, update, and delete) operations is that these operations are not initiated by the application itself, but by the tenant. However, rule execution is initiated directly by the application and requires an application secret.

[0022] Blockchain: Uses cryptography to link and secure a growing list of records called blocks. Each block typically contains a cryptographic hash of the previous block, a timestamp, and transaction data. Blockchains are designed to be inherently resistant to modification of transaction data. To be used as a distributed ledger, blockchains are typically managed by a peer-to-peer network that collectively adheres to a protocol for validating new blocks. Once recorded, the data in any given block cannot be retroactively altered without altering all subsequent blocks, which requires the collusion of a majority of the network.

[0023] Function: A function is a set of JSON logic syntax instructions present in a rule. During rule creation, tenants can reference already created functions in the rule body (created using a dedicated endpoint), or they can write functions directly in the rule body. By understanding the type of function, you can better understand the purpose of the function. There are two types of functions, described below:

[0024] Preprocessor function: A rule's preprocessor function is a preprocessor for a transaction object before it is fed to a rule. This preprocessor function can be used in scenarios where a transaction object does not immediately have the data required for rule execution but contains a link to that data. In this case, the preprocessor function can be utilized to convert the link to that data into the actual data. Afterwards, the transaction object can be fed to the rule.

[0025] Post-Processor Functions: A rule can have a pass post-processor function and a fail post-processor function. The functions contain instructions that are returned to the application after the rule is executed. When a transaction object is sent to the blockchain rule engine for rule execution, all rules with the same "transaction type" value as the transaction object are executed on the transaction object. If a rule fails, its fail post-processor is pushed as a response, and if the rule passes, the pass post-processor is pushed. Once all rules have been executed, the complete response object (containing a list of responses for the fail post-processors and the pass post-processors) is returned to the application for its use.

[0026] JSON: JavaScript Object Notation, a lightweight, text-based, human-readable data interchange format.

[0027] A free, open source server environment for executing JavaScript code outside of a browser. It is an asynchronous programming platform built on the Chrome browser's JavaScript runtime. More information can be found in "About ”Node.js, found at the Node.js Foundation.Node.js TM JSON and Node.js are technologies and standards involved in the blockchain aspect of the blockchain rule engine. Node.js is a free and open source server environment for executing JavaScript code outside the browser. It is an asynchronous programming platform built on the JavaScript runtime of the Chrome browser.

[0028] Platform Administrator: In the Blockchain Rule Engine, tenants must first register to create and manage applications, rules, and functions. The Platform Administrator role designed specifically for this purpose only has the authority to create and manage tenants in the Blockchain Rule Engine.

[0029] Rules: Rules are objects that contain certain conditions, some functions, and transaction types. Tenants can create said rules by using endpoints provided by the blockchain rule engine (through the software development kit (SDK)). Rules can be applied to transaction objects, where "apply" means checking the transaction object against the conditions present in the rule.

[0030] Smart Contract: A computer protocol that provides general purpose computations to be performed on a blockchain or distributed ledger. Smart contract transactions can be simple or can implement complex logic. The resulting transactions are typically transparent, traceable, and irreversible to the ledger participants.

[0031] Tenant: A tenant represents any client (organization) using the Blockchain Rule Engine. A tenant has an ID and secret for performing basic CRUD operations on applications, functions, and rules. Tenants are registered by the platform administrator of the Blockchain Rule Engine.

[0032] Transaction: JavaScript object with a "transaction type" key that determines which rules are applied to it. Transaction objects contain data to which rules are applied and results are produced. Before executing rules on the data in a transaction object, preprocessor functions (present in the rules) can first modify that data. The reason why transaction objects are named this way is that the design philosophy of the blockchain rule engine is to maintain a hierarchy at the transaction level. Transaction objects can have any data as long as they contain a "transaction type" key as the highest level attribute.

[0033] Transaction Type: A transaction type represents a set of multiple rules that are intended to be executed together against a transaction. The transaction type classification feature makes it easier and more intuitive to manage rules in the database.

[0034] Overview

[0035] Computer application designers, especially those in large enterprise environments, are increasingly incorporating existing distributed ledger technology (DLT) platforms into their solutions. These platforms provide strict data replication, rule execution, and immutability and auditability, but typically require specialized skills to program and operate. A subsystem such as the following can be used: the subsystem enables developers to create and operate client applications in a selected platform without specialized skills by combining communication abstractions (including the writing of both data and rules for the data) of neighboring DLT nodes with a set of data and rule primitives that will support a wide range of potential DLT applications in a category. Primitives are typically constructed so that application developers can adapt the primitives to specific use cases, thereby extending the primitives with attributes and additional data rules without requiring DLT platform skills and without losing the strict rule execution provided by the DLT platform. In addition, the interfaces designed and acted upon by client application developers for these primitives should completely abstract any need for technical understanding of the DLT platform.

[0036] Specific implementations may be dedicated subsystems for a single client application, reusable components used with many client applications, or services that provide application support for many client applications. Other implementations may mediate communications with one or more neighboring DLT nodes, and these nodes may be drawn from a single or multiple DLT networks.

[0037] The example subsystem may enable indirect use of the Hyperledger Fabric DLT platform for a broad class or hypothetical workflow and information sharing applications, as well as several operational real-world implementations of such client applications. To implement such a subsystem, there are three key requirements:

[0038] 1. An extensible set of generic data and action primitives that will be represented on a distributed ledger;

[0039] 2. A set of rules operating on these primitives embedded in the distributed ledger that enforce the subsystem’s local data rules and allow extensions to these rules that may be provided by client applications; and

[0040] 3. A programming interface that does not require knowledge of the DLT platform to operate.

[0041] The resulting subsystem provides a set of tools and libraries that enable ordinary users with knowledge of a certain application category and skills in a certain DLT platform to build their own subsystems to support the creation of client applications in that category. The resulting code is implemented as middleware between the API network and the blockchain protocol, whereby users can consistently interface with the blockchain without extensive knowledge of blockchain operations. In these applications, use case-specific business rules from the upper layer are written and executed on the blockchain. New business rules need to be added from time to time to update the workflow without interrupting the blockchain's capabilities and control.

[0042] A rule engine provides a simple way to include new rules in such a subsystem or to edit or deactivate rules. The value of a rule engine comes from the inherent decoupling of rules from application code. In addition to decoupling, a rule engine also enables rules to be easily configured without affecting any related expert systems.

[0043] Some of the principles followed by the rule engine are as follows:

[0044] 1. The rule engine should be highly "pluggable and reusable", which means that the rule engine can be integrated with any external application, making it available in multiple applications. Business logic can be used by various processes and client applications.

[0045] 2. The rule engine should be "extensible", which means that any number of rules of any type of complexity can be configured in the rule engine.

[0046] 3. The rule engine should be very “efficient” to facilitate fast, easy and accurate rule changes. Even non-IT professionals should be able to configure (add, edit, delete, deactivate) rules in a short time to make the rule engine highly cost-effective.

[0047] 4. The rules engine should act as a “source of truth”, which means that all business rules and logic of an application or system should be stored in a central storage device.

[0048] The blockchain rules engine described below implements all of these principles.

[0049] The energy currently surrounding blockchain adoption is reminiscent of the early adoption of the internet. There is the potential to re-experience or avoid the same mistakes regarding logic management that have weighed down applications and systems as they matured. Similar to early websites and applications, cryptocurrency use of blockchains features relatively simple data structures and hard-coded business logic for managing said data structures. However, the subsequent invention of “smart contracts” opened the door to arbitrarily complex rules and data.

[0050] Enterprise use cases like supply chain logistics are putting information and logic on the blockchain, comparable to traditional solutions in terms of volume, but without standardized data management tools. As each programmer designs his own set of logic in the application code base, the result is again that the logic is tightly coupled to the program (smart contract) that writes the logic. A relational layer like the blockchain rule engine described in this article is needed to reduce this coupling.

[0051] Those skilled in the art will recognize that not every feature of a blockchain needs to be used in an enterprise application. Common scenarios include using a blockchain platform as a convenient way to implement features like cryptographic tamper resistance and data replication. In addition, an enterprise can implement a blockchain network with relaxed consensus rules or a centralized front end under its full control. A consortium with a high level of trust can be used to establish a blockchain network for support personnel along with strict smart contract implementation, allowing administrators and internal auditors to update blockchain data directly according to their own authority.

[0052] The transaction data and decision data stored in smart contracts have greater value in applications. The rule results and functions stored in the blockchain can then be used in other functions or logic without being controlled by consensus, making operations fast, efficient and reliable. The only requirement is access to use the rule results and functions stored on the blockchain. It will be understood that the rules and functions stored on the blockchain can be efficiently read and processed by applications, rules, functions or systems within or outside the blockchain, with purposes beyond the original smart contract programmer's imagination.

[0053] Example Implementation of a Blockchain-Powered Rules Engine

[0054] The blockchain rule engine described herein is a pluggable service that depicts a real-world implementation of a rule engine that stores rules, their transactions, and results on a blockchain to provide the above benefits. As developed for a specific business implementation, the blockchain rule engine is a pluggable service that can be utilized by blockchain applications as well as non-blockchain applications.

[0055] In the case of developing the SDK as a node package manager (NPM) package, the blockchain rule engine in the example configuration can be used by any Node.js application, making it a highly configurable rule engine that can be integrated with almost all applications. The blockchain rule engine described herein is designed to be used for implementations across various platforms and languages. This application describes such an implementation based on Hyperledger Fabric and Node.js programming language. Those skilled in the art will appreciate that Hyperledger Fabric is an enterprise-level licensed distributed ledger platform that provides modularity and versatility for a wide range of industry use cases.

[0056] The blockchain rules engine will be described in terms of a set of specifications, interfaces, and core components designed to guide all implementations. Figure 1 is a general block diagram providing an overview of a blockchain rules engine in an illustrative example.

[0057] The blockchain rule engine can be implemented for a variety of user programming languages ​​and blockchain platforms. Parts of the system are common to all implementations, and parts are customized but follow a common set of specifications. Figure 1 is an adaptation component diagram showing these components and specifications. Common specifications are represented as components with a Specification stereotype to indicate abstract requirements. Specifications are aspects that are expected to be implemented in a common way in all blockchain rule engine implementations. The interfaces shown are also specifications that are common to all implementations.

[0058] like Figure 1 As shown, the blockchain rule engine interacts with a client application 100 that is intended to utilize the blockchain rule engine. The client application 100 can be any third-party application, service or tool. The language-specific SDK 110 provides an interface 115 to the client application 100 to connect to the blockchain rule engine service. The main function exposed by the language-specific SDK 110 is the rule execution function. The blockchain rule engine API layer 120 provides a rule engine API 125, which receives and processes commands from the language-specific SDK 110 and communicates with internal components to produce the desired results. The blockchain platform-specific service layer 130 is designed to work with the blockchain system (Hyperledger Fabric in this example) and accepts input from the rule engine API layer 120 via the rule engine service layer interface 135 to execute business logic. In order to parse and evaluate the conditions present in the rule object, the blockchain platform-specific service layer 130 can use a module called a JSON condition parser 140.

[0059] Data operations in the system are managed by the blockchain platform specific service layer 130 together with the blockchain platform 150. The exact division of work depends on the capabilities of the blockchain platform 150. The required functionality is described in more detail in two sub-specifications: Rule Data on the Blockchain 155, which defines the standardized data representation (JSON Schema) and data operations that must be supported; and Smart Contract Integration 160, which specifies which rule data features must be accessed from smart contracts.

[0060] Blockchain rule engine language specific SDK 110

[0061] The blockchain rule engine language-specific SDKs 110 each provide an interface for accessing all features (rule execution functions) of the blockchain rule engine through any blockchain application developed in a programming language (Node.js) popular with blockchain application developers. The blockchain rule engine language-specific SDK 110 is a node package manager (NPM) package that is imported by a Node.js application to establish a docking connection with the blockchain rule engine, thereby initiating a rule execution request from a docked client application 100.

[0062] Blockchain rule engine API layer 120 and UI console

[0063] One of the core components of the blockchain rule engine is the rule engine API layer 120, which is used for all implementations of the blockchain rule engine. The rule engine API layer 120 provides an interactive and intuitive user interface to support multi-tenant and multi-application interfaces with the blockchain rule engine. The rule engine API layer 120 also provides compilation and overview of rules built through a user interface console (not shown). In addition, the rule engine API layer 120 accepts the rule syntax and logic commands of the blockchain rule engine via the blockchain rule engine API layer 120 derived from the language-specific SDK 110 or via the user interface console. The rule engine API layer 120 converts these grammars and logic commands into a format that can be passed to the blockchain rule engine service layer interface 135 implemented on the blockchain platform 150.

[0064] Blockchain rules engine multi-tenancy

[0065] The blockchain rule engine provides multi-tenant support because it provides the same blockchain rule engine instance for use by multiple applications. This specification of the tool allows more than one application in an enterprise or ecosystem to build the most complex and powerful rules, thereby enabling the business logic interaction in all interface applications. The remote access and virtualization features of multi-tenancy in the blockchain rule engine provide more control and greater flexibility for applications using the blockchain rule engine. In addition, due to the multi-tenancy features in the blockchain rule engine, the virtualization and remote access features can be used entirely within the enterprise.

[0066] Blockchain Rules Engine Service Layer Specification 130

[0067] The blockchain rule engine service layer specification 130 describes the interface and the functionality to be supported in each implementation of the blockchain rule engine. In addition to covering the entire interface, this specification also covers a subset of features and functionality that can be implemented in the blockchain rule engine's service layer 130 or on the blockchain platform 150 itself. These features include:

[0068] - Function creation

[0069] - Function update

[0070] - Function deletion

[0071] -Rule creation

[0072] - Rules Update

[0073] -Rule deletion

[0074] - Rule activation and deactivation

[0075] -Rule import and export

[0076] -Rule rollback

[0077] The service layer 130 of the blockchain rule engine is implemented in Node.js and is reused regardless of the SDK language or the target of the blockchain platform 150. Additional features may be targeted to the blockchain platform 150 itself. These will be described with respect to the blockchain platform specification below.

[0078] Blockchain rule engine function storage and utilization

[0079] The blockchain rule engine also provides the feature of storing functions within the blockchain. These functions are of two types: pre-processor functions and post-processor functions. These functions are written using a special JSON format and then parsed by the blockchain rule engine for execution.

[0080] These functions can be chained with rules to change their behavior. Any chained preprocessor function can be used to modify the rule input provided (from the client).

[0081] There are two types of post-processor functions: pass post-processor functions and fail post-processor functions. As the name suggests, the post-processor function takes effect after the rule has been executed and its result (pass or fail) is generated. Depending on the result, the corresponding post-processor function is returned to the caller, and the caller can execute the corresponding post-processor function at its end. Figure 2 These concepts are further explained.

[0082] Example configuration of blockchain rule engine in FABRIC / NODEJS

[0083] Figure 2 is a detailed component diagram of an implementation of an example configuration of the blockchain rule engine 200. Node.js is the SDK programming language used by the language-specific SDK 110, and Hyperledger Fabric is the blockchain platform 150 used. The blockchain rule engine 200 is implemented in Figure 2 The model in the article focuses on how to implement Fabric / Node.js Figure 1 The specifications outlined in , plus some additional features.

[0084] The blockchain rule engine Node.js software developer kit (SDK) component 210 implements user language specific functions. The rule engine API layer 120, the blockchain platform specific service layer 130, and the interfaces 115, 125, and 135 are common to all implementations and are compatible with Figure 1 The same. Below them, the blockchain rule engine Node.js Fabric service layer 220 implements the appearance of all platform operations. The Fabric CouchDB implementation 230 directly supports the blockchain rule engine Node.js Fabric service layer 220 through its dependency on the blockchain platform specification 150, and the Fabric CouchDB implementation 230 is directly accessed to implement certain indexing functions. In the Fabric implementation, pattern index modifications and user permissions are partially implemented in the blockchain rule engine Node.js Fabric service layer 220, and the blockchain rule engine Node.js Fabric service layer 220 directly calls the Fabric CouchDB implementation 230.

[0085] Fabric Peer 240 hosts instances of ledgers and smart contracts for the blockchain network. The ledger immutably records all transactions generated by smart contracts (in Hyperledger Fabric, these transactions are contained in chaincode or smart contracts, which are a piece of code that accesses the ledger written in a supported programming language). Smart contracts and ledgers are used to encapsulate shared processes and shared information in the network, respectively. Through Fabric Peer 240, applications can execute chaincode to query or update the ledger.

[0086] Blockchain Rules Engine Blockchain Platform Specifications 150

[0087] The Blockchain Rules Engine Blockchain Platform Specification 150 describes the functionality that must be implemented directly on a blockchain platform to make rule-related functionality available to smart contracts on that blockchain platform. Like the blockchain platforms themselves, these implementations will vary widely in approach. These specifications lay out what will remain common, including a common JSON-based data format for conditional data and schemas. The specifications fall into two categories: rule data on the blockchain and smart contract integration.

[0088] Rules and data specifications on blockchain155

[0089] The primary asset of the blockchain rule engine 200 is its rules. The blockchain rule engine 200 employs a number of data abstractions to implement the advertised functionality. These abstractions are defined as objects that include tenants, applications, rule groups, functions, and rules. There are significant differences in how these concepts will be implemented for different blockchain platforms, but on each platform the following will be true:

[0090] - Each instance of each of the five types of functions will be represented by a separate JSON document in the standard blockchain rule engine format common to each type of function.

[0091] -These documents are written to the blockchain using the same methods and consensus as other blockchain transactions.

[0092] - Each modification or state change to one of these elements is represented by appending a complete updated version of the JSON document to the blockchain.

[0093] JSON schema definitions of five types of objects with rich details are formally specified in the design of the blockchain rule engine 200.

[0094] Smart Contract Integration Specification 160

[0095] A key aspect of the blockchain rule engine 200 is its ability to access most rule functionality (primarily CRUD operations on the above objects) directly from smart contracts. Similar to an SDK, the formal specification lists the functions that must be supported and provides preferred forms, naming, and semantics to maximize consistency across blockchain platform implementations. In other words, accessing the blockchain rule engine 200 from smart contracts will be as consistent as possible across different blockchain platform implementations.

[0096] Blockchain Rules Engine Node.js SDK 210

[0097] The Blockchain Rule Engine Node.js Software Developer Kit (SDK) 210 outlines the syntax, interfaces, and requirements for implementing dynamic rule creation in applications using the public API of the Blockchain Rule Engine, where the semantics and syntax are already familiar to non-blockchain programmers and are the same on all blockchain platforms. The Blockchain Rule Engine Node.js SDK 210 further implements dynamic modification and deletion of rules in applications that interface with the Blockchain Rule Engine API, where the semantics and syntax are already familiar to non-blockchain programmers and are the same on all blockchain platforms.

[0098] The blockchain rule engine Node.js SDK 210 outlines how the blockchain rule engine 200 stores rule data on the blockchain. The rules, their execution results (success / error), and the resulting transactions (post-processor functions) are all stored on the blockchain. Any modifications made to the rules (its version control) are also placed on the blockchain. The blockchain rule engine Node.js SDK 210 further specifies how the blockchain rule engine 200 stores pre-processor functions - a set of instructions executed before the rule is executed - on the blockchain storage device. The blockchain rule engine Node.js SDK 210 further implements multi-tenancy on the blockchain by enabling multiple tenants to create and manage rules on the blockchain. Tenants also store their credential data, rule functions on the blockchain. In addition to multi-tenancy, the blockchain rule engine Node.js SDK 210 also provides an application-level hierarchy supported by the blockchain rule engine to take advantage of the rule execution feature. Applications can use the created rules and functions, and can also store credentials and metadata on the blockchain. In addition to the rule storage on the blockchain, all operations related to tenants, applications, functions, and rules are securely recorded on the blockchain.

[0099] The blockchain rule engine Node.js SDK 210 further specifies the ability to create categories of rules based on transaction types. The blockchain rule engine Node.js SDK 210 further supports creating transaction types for applications through API calls, whereby users of the application create rules once they register a transaction type. In addition, the blockchain rule engine Node.js SDK 210 implements a plug-in for blockchain applications to communicate with the blockchain rule engine 200 to establish inter-chain code communication. In addition, the plug-in can also establish connections for non-blockchain applications.

[0100] Blockchain Rules Engine on FABRIC with NODE.JSSDK

[0101] Based on the above specifications of the blockchain rule engine 200, the blockchain rule engine 200 can be implemented in an example configuration using an SDK for Node.js applications and Hyperledger Fabric for its blockchain platform. To make the rule data function available to smart contracts on the blockchain platform, it is necessary to implement the complete blockchain rule engine 200 using smart contracts. The blockchain rule engine 200 further implements logical data separation between tenants and applications, as well as tight integration with the blockchain platform.

[0102] In the example configuration, the blockchain rule engine 200 is implemented using Node.js, Hyperledger Fabric, and Apache Couch DB. Node.js is currently the most popular web server-side development framework in the world, and Hyperledger Fabric has an architecture that partially meets the requirements of multiple blockchain rule engines. Apache It is incorporated into Hyperledger Fabric as an option for the world state database. When chaincode data values ​​are modeled as JSON as rule data for the blockchain rule engine, Supports rich queries.

[0103] Blockchain rule engine Fabric implementation

[0104] Figure 3A schematic diagram of the rule data system objects of the blockchain rule engine in implementation 300 is provided. The rule data implementation of the blockchain rule engine on Fabric involves a total of three roles: platform administrator 310, tenant 320, and application 330. The platform administrator 310 is registered when the product is deployed. This role is responsible for registering the tenant 320 into the system 300. The tenant 320 has an ID and a secret, which the tenant 320 can use to create / read / update / delete rules 340 and functions 350. The tenant 320 is also responsible for creating an application 330. The application 330 has its own ID and secret, which the SDK needs to initiate a rule execution request using the product's API layer. The transaction type 360 ​​can group multiple rules 340 that are intended to be executed together for a transaction.

[0105] Figure 3 The relationship between various database entities of the blockchain rule engine 200 is explained. The numbers connecting the two ends of the link represent the relationship between the entities in terms of their number. For example, in Figure 3 , the platform administrator 310 is marked as “1”, and the tenants 320 are marked as “0**1”, which means that one tenant 320 can only be related to one platform administrator 310 , but one platform administrator 310 can be related to any number of tenants 320 starting from 0.

[0106] Blockchain rule engine rule data access control

[0107] Since the blockchain rule engine 200 is a multi-tenant system, it incorporates multi-level access control. In order to perform any operation (read or write) on the rules, the caller must provide the tenant's credentials as well as the application's credentials. The hierarchy of entities in the blockchain rule engine 200 is as follows:

[0108] Platform Admin > Tenant > Application > Functions and Rules.

[0109] Furthermore, tenant 320 may only be created by platform administrator 310 , and application 330 may only be created by tenant 320 .

[0110] Blockchain rule engine smart contract integration

[0111] The implementation of the blockchain rule engine on Hyperledger Fabric allows the installation of smart contracts 160 on the blockchain platform. In this way, the business logic is divided between the blockchain rule engine Node.js Fabric service layer 220 and the blockchain platform 150 itself.

[0112] Blockchain rule engine Fabric service layer

[0113] The blockchain rule engine Node.js Fabric service layer 220 accepts input from the API layer / SDK and converts the input into actions by calling the blockchain rule engine chain code and the CouchDB world state database 230.

[0114] Blockchain Rules Engine Node.js SDK

[0115] The blockchain rule engine Node.js SDK 210 provides the client application 100 with the ability to execute the created rules. Specifically, the blockchain rule engine Node.js SDK 210 provides functions for establishing a connection with the blockchain rule engine 200 and performing rule execution.

[0116] Blockchain rule engine Fabric-Node.js SDK

[0117] Figure 4 A user application node 400 is shown, which includes the interaction of the blockchain rule engine's Fabric-Node.js SDK 430 with the user's application 420 and the execution environment in which they are all hosted. The user application node 400 covers a wide range of possible implementations, which are constrained by support for Node.js and the ability to be configured to communicate with a running instance of the blockchain rule engine web service (API layer) 410 through a network socket of the blockchain rule engine API 125, such as Figure 4 The top-level details of the model are shown in Figure 1.

[0118] Going deeper into the user application node 400, the user application 420 in Node.js is modeled as a component that depends on the Fabric / Node.js blockchain rule engine SDK 430. Going deeper, the Fabric / Node.js blockchain rule engine SDK 430 is modeled in two parts. A set of Node.js wrapper function interfaces 440 define the functions that are directly available to the user application code. The Node.js wrapper function interface 440 generally conforms to Figure 1 The language-specific SDK "Specification" 110 introduced in the Node.js wrapper function implementation code 450 implements an interface that converts calls to the Fabric / Node.js blockchain rule engine SDK 430 into calls to the blockchain rule engine API 125.

[0119] In addition to the functions required by the blockchain rule engine specification, the Fabric / Node.js implementation also includes rule execution capabilities. In addition to the above-mentioned features of the blockchain rule engine 200, Figure 4The Fabric / Node.js version also implements rule data on the blockchain using a tenant-application hierarchy and a programmer-friendly SDK that provides features such as rule execution for client applications.

[0120] This article describes Fabric, but those skilled in the art will understand that the technology described herein can also be used in other blockchain networks, such as AION, ArcBlock, EOS, NEO, Sawtooth, NxT, QTUM, Quorum, Smilo, Tezos, TRON, Wanchain, or Zilliqa. The terms used in this article are The corresponding terms will be used in the context of other blockchain networks such as those mentioned.

[0121] Computer Implementation

[0122] Figure 5 is a block diagram of a typical general-purpose computer 500, which can be programmed as a special-purpose computer suitable for implementing one or more embodiments of the blockchain rule engine 200 disclosed herein. The blockchain rule engine 200 described above can be implemented on any general-purpose processing component, such as a computer with sufficient processing power, memory resources, and communication throughput capabilities to handle the necessary workload placed on it. The computer 500 includes a processor 502 (which can be referred to as a central processor unit or CPU), which communicates with memory devices including the following: auxiliary storage devices 504, read-only memory (ROM) 506, random access memory (RAM) 508, input / output (I / O) devices 510, and network connection devices 512. The processor 502 can be implemented as one or more CPU chips or can be part of one or more application-specific integrated circuits (ASICs).

[0123] Secondary storage 504 is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an overflow data storage device in the event that RAM 508 is not large enough to hold all of the working data. Secondary storage 504 may be used to store programs that are loaded into RAM 508 when such programs are selected for execution. ROM 506 is used to store instructions and possibly data that are read during program execution. ROM 506 is a non-volatile memory device that typically has a small memory capacity relative to the larger memory capacity of secondary storage 504. RAM 508 is used to store volatile data and possibly instructions. Access to both ROM 506 and RAM 508 is typically faster than access to secondary storage 504.

[0124] The apparatus described herein may be configured to include a computer-readable non-transitory medium storing computer-readable instructions and one or more processors coupled to the memory, and when executing the computer-readable instructions, configure the computer 500 to perform the above-referenced Figures 1 to 4 The described method steps and operations. Computer-readable non-transitory media include all types of computer-readable media, including magnetic storage media, optical storage media, flash memory media, and solid-state storage media.

[0125] It should also be understood that the software comprising one or more computer executable instructions can be installed in and sold together with one or more servers and / or one or more routers and / or one or more devices in the consumer and / or producer domain that meet the present disclosure, and the one or more computer executable instructions contribute to the processing and operation described as above with reference to any step or all steps of the present disclosure. Alternatively, the software can be obtained and loaded into one or more servers and / or one or more routers and / or one or more devices in the consumer and / or producer domain that meet the present disclosure, including obtaining the software through a physical medium or a distribution system, including, for example, obtaining the software from a server owned by the software creator or from a server that is not owned by the software creator but used by the software creator. For example, the software can be stored on a server to be distributed over the Internet.

[0126] In addition, it will be understood by those skilled in the art that the present disclosure is not limited in its application to the details of the construction and arrangement of the components set forth in the specification or shown in the drawings. The embodiments herein can be other embodiments and can be practiced or executed in various ways. In addition, it will be understood that the wording and terminology used herein are for descriptive purposes and should not be considered restrictive. The use of "including", "comprising" or "having" and its variations herein is intended to cover the items listed thereafter and their equivalents and additional items. Unless otherwise limited, the terms "connect", "couple" and "install" and their variations herein are widely used and cover direct and indirect connections, couplings and installations. In addition, the terms "connect" and "couple" and their variations are not limited to physical or mechanical connections or couplings. Further, terms such as upward, downward, bottom and top are relative and are used to assist in explanation, but are not limited thereto.

[0127] Components of the illustrative apparatus, systems, and methods employed in accordance with the illustrated embodiments may be implemented at least in part in digital electronic circuitry, analog electronic circuitry, or in computer hardware, firmware, software, or a combination thereof. For example, these components may be implemented as a computer program product, such as a computer program, program code, or computer instructions tangibly embodied in an information carrier or machine-readable storage device, for execution by a data processing device such as a programmable processor, a computer, or multiple computers or to control their operation.

[0128] The computer program can be written in any form of programming language including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine or other unit suitable for use in a computing environment. The computer program can be deployed to execute on a computer, or on multiple computers at a site or distributed across multiple sites and interconnected by a communication network. In addition, the functional programs, codes and code segments for implementing the technology described herein can be easily interpreted by programmers skilled in the art as being within the scope of the present disclosure. The method steps associated with the illustrative embodiments can be executed by one or more programmable processors to execute computer programs, codes or instructions to perform functions (e.g., by operating on input data and / or generating output). For example, the method steps can also be performed by a dedicated logic circuit system such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit), and the device can be implemented as a dedicated logic circuit system.

[0129] The various illustrative logical blocks, modules, and circuits described in conjunction with the embodiments disclosed herein may be implemented or executed using a general purpose processor, a digital signal processor (DSP), an ASIC, an FPGA, or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but alternatively, the processor may be any conventional processor, controller, microcontroller, or state machine. The processor may also be implemented as a combination of computing devices, for example, a combination of a DSP and a microprocessor, a plurality of microprocessors, a combination of one or more microprocessors with a DSP core, or any other such configuration.

[0130] By way of example, processors suitable for executing computer programs include both general-purpose microprocessors and special-purpose microprocessors and any one or more processors of any type of digital computer. Typically, the processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include or be operably coupled to one or more large-capacity storage devices such as magnetic disks, magneto-optical disks, or optical disks for storing data to receive data from or transmit data to or both. Information carriers suitable for implementing computer program instructions and data include all forms of non-volatile memory, including semiconductor memory devices as examples, such as electrically programmable read-only memory or ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory devices, and data storage disks (e.g., magnetic disks, internal hard disks or removable disks, magneto-optical disks, and CD-ROM and DVD-ROM disks). The processor and memory can be supplemented by a dedicated logic circuit system or the processor and memory can be incorporated into the dedicated logic circuit system.

[0131] Those skilled in the art will appreciate that information and signals may be represented using any of a variety of different techniques and technologies. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltage, current, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.

[0132] Those skilled in the art will appreciate that the various illustrative logic blocks, modules, circuits and algorithm steps described in conjunction with the embodiments disclosed herein can be implemented as electronic hardware, computer software or a combination of the two. In order to clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits and steps have been generally described above in terms of their functions. Whether such functions are implemented as hardware or software depends on the specific application and design constraints imposed on the entire system. The technician can implement the described functions in different ways for each specific application, but such implementation decisions should not be interpreted as causing departure from the scope of the present disclosure. The software module can reside in a random access memory (RAM), flash memory, ROM, EPROM, EEPROM, register, hard disk, removable disk, CD-ROM or any other form of storage medium known in the art. An exemplary storage medium is coupled to a processor so that the processor can read information from the storage medium and write information to the storage medium. In an alternative, the storage medium can be a component of the processor. In other words, the processor and the storage medium can reside in an integrated circuit or be implemented as discrete components.

[0133] As used herein, "machine-readable medium" means a device capable of temporarily or permanently storing instructions and data, and may include, but is not limited to: random access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage devices (e.g., erasable programmable read-only memory (EEPROM)), and / or any suitable combination thereof. The term "machine-readable medium" should be deemed to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) that can store processor instructions. The term "machine-readable medium" should also be deemed to include any medium or combination of multiple media that can store instructions for execution by one or more processors, so that the instructions, when executed by one or more processors, cause the one or more processors to perform any one or more of the methods described herein. Therefore, "machine-readable medium" refers to a single storage device or device as well as a "cloud-based" storage system or storage network comprising multiple storage devices or devices. The term "machine-readable medium" as used herein does not include the signal itself.

[0134] Except as set forth in the appended claims, the description and drawings presented above are intended to be examples only and are not intended to limit the illustrative embodiments in any way. Note that the various technical aspects of the various elements of the various exemplary embodiments that have been described above can be combined in a variety of other ways, all of which are considered to be within the scope of the present disclosure.

[0135] Therefore, although exemplary embodiments are disclosed for illustrative purposes, those skilled in the art will appreciate that various modifications, additions and substitutions are possible. Therefore, the present disclosure is not limited to the embodiments described above, but may be modified within the scope of the appended claims and the full scope of their equivalents.

Claims

1. A blockchain rule engine that manages rules implemented by a client application that interacts with a blockchain platform that manages a blockchain, the blockchain rule engine comprising: a language-specific software developer kit (SDK) that provides an interface to the client application and exposes rule execution functionality to the client application; A rule engine application programming interface (API) layer that provides a rule engine API to the language-specific SDK and receives and processes commands from the language-specific SDK; as well as A blockchain platform-specific service layer that interacts with the blockchain platform and accepts input from the rule engine API layer to execute the business logic implemented in the rules, wherein data operations are managed by the blockchain platform-specific service layer and the blockchain platform together.

2. The blockchain rule engine according to claim 1, wherein: The blockchain platform-specific service layer includes a JavaScript Object Notation (JSON) conditional parser that parses and evaluates conditions present in objects to which rules are applied.

3. The blockchain rule engine according to claim 2, wherein: Each instance of each type of functionality supported by the blockchain rule engine is represented by a JSON document in the standard blockchain rule engine format, where each JSON document is written to the blockchain using the same methods and consensus as other blockchain transactions.

4. The blockchain rule engine according to claim 3, wherein: Each modification or state change to each type of functionality is represented by appending a fully updated version of the JSON document for the modified functionality to the blockchain.

5. The blockchain rule engine according to claim 1, wherein: The language-specific SDK provides an interface to enable the client application to access rule execution functions through a blockchain application developed in a programming language supported by the language-specific SDK.

6. The blockchain rule engine according to claim 1, wherein: The interface provided by the rule engine API layer supports multi-tenancy and multi-applications to interface with the blockchain rule engine.

7. The blockchain rule engine according to claim 6, wherein: The rule engine API layer accepts rule syntax and logic commands of the blockchain rule engine from the language-specific SDK or via a user interface console, and the rule engine API layer converts the syntax and logic commands into a format that can be passed to the blockchain platform-specific service layer via an interface to the blockchain platform-specific service layer implemented on the blockchain platform.

8. The blockchain rule engine according to claim 1, wherein: The blockchain platform-specific service layer describes the interfaces and functions to be supported in each implementation of the blockchain rule engine, which includes a subset of the features and functions that can be implemented in the blockchain platform-specific service layer or on the blockchain platform.

9. The blockchain rule engine according to claim 8, wherein: The features include at least one of: function creation, function update, function deletion, rule creation, rule update, rule deletion, rule activation and deactivation, rule import and export, or rule rollback.

10. The blockchain rule engine according to claim 1, wherein: The blockchain platform-specific service layer includes a conditional parser that parses pre-processor functions and post-processor functions to execute and store processing results on the blockchain.

11. The blockchain rule engine according to claim 10, wherein: The pre-processor function and the post-processor function are linked with rules to change the behaviors of the pre-processor function and the post-processor function.

12. The blockchain rule engine according to claim 10, wherein: The post-processor function includes at least one of a pass post-processor function or a fail post-processor function that is executed after a rule has been executed and the executed rule produces a pass or fail result.

13. The blockchain rules engine according to claim 1, wherein: The blockchain platform-specific service layer provides functionality that is implemented directly on the blockchain platform for rule-related functions used by smart contracts on the blockchain platform.

14. The blockchain rules engine according to claim 1, wherein: Different rule execution functions are applied to different data objects, the data objects including at least one of a tenant, an application, a rule group, a function, or a rule.

15. The blockchain rule engine according to claim 14, wherein: Each instance of each type of rule execution function is represented by a JSON document in a format common to each type of rule execution function, and wherein each JSON document is written to the blockchain using the same method and consensus as other blockchain transactions.

16. The blockchain rule engine according to claim 15, wherein: Each modification or state change to a rule execution function is represented by appending a fully updated version of the JSON document for that type of rule execution function to the blockchain.

17. The blockchain rules engine according to claim 14, wherein: The rule execution functionality can be accessed directly from the smart contract.

18. The blockchain rule engine of claim 1, further comprising a blockchain rule engine specification outlining syntax, interfaces and requirements for enabling the rule engine API to be utilized in the client application to implement dynamic rule creation, dynamic rule modification and dynamic deletion of rules in an application, and outlining how the blockchain rule engine stores rule data on the blockchain.

19. The blockchain rule engine according to claim 18, wherein: The blockchain rules engine specification specifies how the blockchain rules engine stores a set of instructions on the blockchain that are executed prior to rule execution.

20. The blockchain rules engine according to claim 18, wherein: The blockchain rules engine specification enables multi-tenancy on the blockchain by enabling multiple tenants to create and manage rules and store credential data and rule functions on the blockchain.

21. The blockchain rules engine according to claim 20, wherein: The blockchain rules engine specification contains multi-level access control whereby in order to perform any action on a rule, the client application provides the tenant's credentials as well as the client application's credentials.

22. The blockchain rules engine according to claim 18, wherein: The blockchain rule engine specification provides an application-level hierarchy supported by the blockchain rule engine to utilize the rule execution functionality, whereby the client applications can use the created rules and functions and store credentials and metadata on the blockchain.

23. The blockchain rules engine according to claim 18, wherein: The blockchain rule engine specification implements a plug-in for blockchain applications to communicate with the blockchain rule engine to establish inter-chain code communication and establish connections for non-blockchain applications.

24. The blockchain rules engine according to claim 18, wherein: The blockchain rule engine specification provides the client application with the ability to execute created rules by providing functions for creating a connection between the client application and the blockchain rule engine to perform rule execution.

25. The blockchain rules engine according to claim 18, wherein: The blockchain rule engine specification includes a set of function interfaces that define functions directly available to client application code, and function implementation code that implements the function interfaces by converting calls to the blockchain rule engine specification into calls to the rule engine API.