Platform service validation

JP2026010067A5Pending Publication Date: 2026-02-17NCHAIN LICENSING AG
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025171963
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2021-02-17
Filing Date
2025-10-10
Publication Date
2026-02-17

AI Technical Summary

Technical Problem

Existing blockchain technologies require clients to implement complex processes and security measures, making it difficult for computationally limited devices to securely and efficiently interact with blockchain-related applications.

Method used

A platform processor provides an application programming interface (API) that allows clients to access and interact with blockchain services using HTTP protocols, eliminating the need for clients to manage blockchain functionality directly.

Benefits of technology

Enables secure, low-complexity, and user-friendly interaction with blockchain services, allowing any client to instantly write, read, and audit data on the blockchain without requiring knowledge of blockchain-specific processes or cryptographic libraries.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Verify that the transaction is contained within the blockchain.SOLUTION: The method of the present disclosure includes identifying a transaction T to be verified, obtaining a certificate C associated with the transaction T, the certificate including a block identifier for a given block and a proof of inclusion linking the transaction to the given block in the blockchain, determining a longest chain of valid blocks in the blockchain, and verifying that the given block is included in the longest chain.SELECTED DRAWING: Figure 11
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates generally to methods and systems for implementing a platform for one or more services related to a distributed ledger, i.e., blockchain, for one or more clients. In particular, the present disclosure relates to providing access to multiple functions and applications related to blockchain, such as, but not limited to, implementing event streams or machine-readable contracts, for one or more clients. [Background technology]

[0002] In this document, we use the term “blockchain” to include all forms of electronic, computer-based distributed ledgers. These include consensus-based blockchain and transaction chain technologies, permissioned and permissionless ledgers, shared ledgers, public and private blockchains, and variations thereof. The most widely known application of blockchain technology is the Bitcoin ledger, but other blockchain implementations have been proposed and developed. While Bitcoin may be referenced herein for convenience and illustrative purposes, it should be noted that this disclosure is not limited to use with the Bitcoin blockchain, and alternative blockchain implementations and protocols related to any type of digital asset or representation of a digital asset fall within the scope of this disclosure. The terms “client,” “entity,” “node,” “user,” “sender,” “receiver,” “payer,” and “payee” may refer to computing or processor-based resources herein. The term “Bitcoin” is used herein to include any version or variation derived from or based on the Bitcoin protocol. The term “digital asset” may refer to any transferable asset, such as a cryptocurrency, a token representing at least a portion of property, a smart contract, a license, i.e., a software license, or a DRM contract for media content. It is understood that the term "digital asset" is used throughout this document to describe a commodity that may be associated with value that can be transferred or provided as payment in a transaction from one entity to another.

[0003] A blockchain is a computer-based, decentralized, peer-to-peer electronic ledger implemented as a distributed system made up of blocks, each of which is made up of transactions. Each transaction is a data structure that encodes the transfer of control of a digital asset between participants in the blockchain system and contains at least one input and at least one output. Each block contains a hash of the previous block so that blocks are chained together to create a permanent, immutable record of all transactions written to the blockchain since the blockchain's inception. Transactions contain small programs, known as scripts, embedded in their inputs and outputs that specify how and to whom the transaction's outputs can be accessed. In the Bitcoin platform, these scripts are written using a stack-based scripting language.

[0004] In order for a transaction to be written to the blockchain, it must be "validated." Network nodes (miners) perform work to ensure each transaction is valid; invalid transactions are rejected from the network. A software client installed on a node performs this validation work on an unspent transaction (UTXO) by executing its lock and unlock scripts. If the execution of the lock and unlock scripts evaluates to true, the transaction is valid and the transaction is then written to the blockchain. Thus, for a transaction to be written to the blockchain, it must i) be verified by the first node that receives the transaction; if the transaction is verified, the node relays it to other nodes in the network; ii) be added to a new block constructed by miners; and iii) be mined, or added, to the public ledger of past transactions.

[0005] It will be appreciated that the nature of the work performed by miners depends on the type of consensus mechanism used to maintain the blockchain. While proof of work (PoW) is associated with the original Bitcoin protocol, other mechanisms, such as proof of stake (PoS), delegated proof of stake (DPoS), proof of capacity (PoC), proof of elapsed time (PoET), and proof of authority (PoA), are also used. Different consensus mechanisms differ in how mining is distributed among nodes, and the probability of successfully mining a block depends, for example, on the miner's hashing power (PoW), the amount of cryptocurrency held by the miner (PoS), the amount of cryptocurrency staked in delegated mining (DPoS), the miner's ability to memorize a predetermined solution to a cryptographic puzzle (PoS), a waiting time randomly assigned to the miner (PoET), etc. Typically, miners are provided with an incentive or reward for mining blocks. A Bitcoin block, for example, rewards miners with newly minted cryptocurrency (Bitcoins) and fees associated with transactions in the block (transaction fees). In the case of the Bitcoin blockchain, the amount of cryptocurrency mined decreases over time, and incentives ultimately consist solely of transaction fees. It will be appreciated, therefore, that processing transaction fees is part of the underlying mechanism for committing data to a public blockchain, such as the Bitcoin blockchain.

[0006] As previously mentioned, each transaction in a given block encodes the transfer of control of a digital asset between participants in the blockchain system. Digital assets do not necessarily correspond to cryptocurrency. For example, digital assets may relate to digital representations of documents, images, physical objects, etc. Payment of cryptocurrency and / or transaction fees to miners may simply act as an incentive for maintaining the validity of the blockchain by performing necessary work. The cryptocurrency associated with the blockchain may act as security for miners, and the blockchain itself may be primarily a ledger for transactions related to digital assets other than cryptocurrency. In some cases, transfers of cryptocurrency between participants may be handled by entities different and / or independent from the entities that use the blockchain to maintain the ledger of transactions.

[0007] Once stored on the blockchain as a UTXO, a user can transfer control of the associated resource to another address associated with an input in another transaction. This transfer is typically, though not inherently, accomplished using a digital wallet. This digital wallet can be a device, physical media, a program, an application (app) on a computing device such as a desktop, laptop, or mobile terminal, or a remotely hosted service associated with a domain on a network such as the Internet. Digital wallets can be used to store public and private keys, track ownership of resources such as tokens and assets associated with a user, receive or consume digital assets, and transfer tokens, which may be related to digital assets such as cryptocurrency, licenses, property, or other types of resources.

[0008] While blockchain technology is most widely known for its use in implementing cryptocurrencies, digital entrepreneurs are exploring the use of both the cryptographic security system on which Bitcoin is based and the data that can be stored on the blockchain to implement new systems. It would be highly advantageous if blockchain could be used for automated tasks and processes that are not limited to the cryptocurrency realm. Such solutions would be more general in application while still being able to take advantage of the benefits of blockchain (e.g., permanent, tamper-proof recording of events, distributed processing, etc.).

[0009] One area of ​​current research is the use of blockchains for the implementation of "smart contracts." These are computer programs designed to automate the execution of machine-readable agreements or terms of agreements. Unlike traditional contracts, which are written in natural language, smart contracts are machine-executable programs with rules; these rules can process inputs to generate results and then cause actions to be taken in response to those results. Another area of ​​blockchain-related interest is the use of "tokens" (or "colored coins") to represent and transfer real-world entities via blockchains. Potentially sensitive or secret items can be represented by tokens that have no discernible meaning or value. Tokens therefore function as identifiers that allow real-world items to be referenced from the blockchain.

[0010] The above example or scenario, while utilizing the benefits of blockchain to provide a permanent, tamper-proof record of events, requires the client, client entity, computing device, or terminal associated with the client to include or implement software and / or hardware or processors / modules, such as a digital wallet to implement functionality for managing digital assets, managing cryptographic keys for the Elliptic Curve Digital Signature Algorithm (ECDSA) used by the BSV (Bitcoin Satoshi's Vision) blockchain. In addition, there is a need for the client device to implement blockchain transaction mechanisms and be able to access BSV libraries. Thus, the client not only needs to include processing to implement such functionality, but also needs to ensure that appropriate security measures are in place for such processes before it can utilize the blockchain network to send, receive, and view data and / or digital assets related to smart contracts or tokens representing real-world asset transactions. [Prior art documents] [Patent documents]

[0011] [Patent Document 1] U.S. Patent Application No. 16 / 384696 [Patent Document 2] UK Patent Application No. 1907180.2 [Patent Document 3] UK Patent Application No. 2007597.4 Summary of the Invention [Problem to be solved by the invention]

[0012] It is therefore desirable to implement secure, low-complexity, user-friendly, efficient, and robust techniques that enable any client, whether computationally advanced or not, to instantly access and interact with useful blockchain-related applications in a simple, fast, accurate, reliable, and secure manner that is computationally and functionally low burden. More specifically, it is desirable to utilize the benefits of distributed ledger (blockchain) technology and its increased security, transparency, and reliability of records to provide a common platform or interface for multiple blockchain-related services or applications that enables any client computing device to ensure that any data, event, or digital asset associated with the client can be easily mined or written to the blockchain instantly and securely, thereby providing a permanent, tamper-proof, and auditable record thereof that can be created, written, updated, read, or viewed as needed. [Means for solving the problem]

[0013] Such an improved solution has now been devised. The present disclosure addresses the above technical concerns by proposing one or more techniques whereby data or information related to a client may be easily, securely, and instantly written to and retrieved from a blockchain by methods, devices, and systems that provide an application programming interface (API) for one or more services related to the blockchain without the need for such clients to implement processes or functionality for using the blockchain, while still being able to utilize all of the benefits associated with the blockchain.

[0014] In a first aspect, the present disclosure proposes a method, device, and system for implementing a platform that provides multiple blockchain-related services using a platform processor associated with an application programming interface (API) that can receive client requirements in a Hypertext Transfer Protocol (HTTP) transmission protocol format for the services. In addition to appropriate validation of the client's identity and / or request, a request, destination address, or endpoint for the requested blockchain service is determined, and at least one blockchain transaction is generated based on the destination address to obtain an output script. Results based on the output script are then sent to the given client in an HTTP transmission protocol format.

[0015] In a second aspect, the present disclosure proposes a method, device, and system for implementing a data writing service for a transaction related to a blockchain for a client based on an HTTP request from the client, and relating to an event stream ES implemented using a blockchain, where the event stream may be used to represent or track a finite state machine (FSM). For example, the FSM may be a smart contract. Event Stream ES in Blockchain n The current state of is determined and a new or next event E is generated for the event stream E. n+1 is identified in the received request, and the inputs related to the transaction outputs from the previous transaction TX on the event stream ES and the new event E n+1 When submitted to the blockchain, the current state of the event stream in the blockchain is updated with the new event E n+1 Based on ESn+1 is updated to be. The current state ES n+1 The result, which is a result related to, is provided in the HTTP transmission protocol format.

[0016] In a third aspect, the present disclosure provides a method, device, and system for providing, creating, updating, and / or terminating an event stream implemented using a blockchain, and creating an anti-tampering log or record of events related to the event chain. An event E related to the event stream ES n is identified in the received request and represents the current length of the event stream ES. E n When n = 0, a blockchain transaction including an unconsumed output, which is a dust output, is created so that E is the first event to create the event stream ES. n When 0 < n ≦ N and N is the final or maximum value for n, so that E is an event that modifies the event stream ES, the first input that consumes the dust output related to the previous transaction related to the event stream, the unconsumed transaction output that is the dust output related to the current transaction, and the unconsumed transaction output associated with the event data representing the current event E n A blockchain transaction including is created. nIf n=N, such that n is an event that terminates the event stream ES, a blockchain transaction is created that includes a first input that consumes dust output associated with a previous transaction for the event stream and an unconsumed transaction output associated with a digital asset that exceeds the defined dust output limit. Once the created transaction is accepted and / or submitted to the blockchain, a result associated with the transaction is provided in an HTTP transmission protocol format. In some embodiments, one or more transactions in the event stream are accepted or are valid transactions for a given event stream, but are not immediately submitted to the blockchain. For example, transactions in the event stream are submitted to a block after a given number or transactions or time has passed, i.e., after 25 or so transactions in the event stream have occurred. The transactions may be held in a mempool until a number or time has passed. In other embodiments, the event stream Transactions within can be instantly submitted to the blockchain.

[0017] In a fourth aspect, the present disclosure proposes methods, devices, and systems for synchronizing multiple event streams associated with a blockchain using atomic blockchain transactions.

[0018] In a fifth aspect, the present disclosure proposes methods, devices, and systems for validation of blockchain transactions associated with a platform that provides multiple blockchain-related services to one or more clients.

[0019] Throughout this specification, the word "comprises" or variations such as "include," "comprises," or "comprising" will be understood to imply the inclusion of a stated element, integer, step, or group of elements, integers, or steps, but not the exclusion of any other element, integer, step, or group of elements, integers, or steps.

[0020] Aspects and embodiments of the present disclosure will now be described, by way of example only, with reference to the accompanying drawings, in which: [Brief explanation of the drawings]

[0021] [Figure 1] FIG. 1 is a schematic diagram illustrating an overview of a platform for multiple services associated with a blockchain according to a first embodiment. [Figure 2a] 1 is a flowchart illustrating a method for providing a platform for multiple services associated with a blockchain according to a first aspect, implemented by one or more processors associated with the platform. [Figure 2b] 1 is a flowchart illustrating a method for accessing a platform of multiple services associated with a blockchain according to a first aspect, implemented by one or more processors associated with a client. [Figure 3] FIG. 1 is a schematic diagram illustrating components of a platform for multiple services associated with a blockchain according to a first embodiment. [Figure 4] 10 is a flowchart illustrating a method for implementing a data writing service for transactions associated with a blockchain according to a second aspect, implemented by one or more processors associated with a platform service. [Figure 5] 10 is a flowchart illustrating a method for creating an event stream associated with a blockchain according to a third aspect, implemented by one or more processors associated with a platform service. [Figure 6] 10 is a flowchart illustrating a method for updating an event stream associated with a blockchain according to a third aspect, implemented by one or more processors associated with a platform service. [Figure 7] 10 is a flowchart illustrating a method for terminating an event stream associated with a blockchain according to a third aspect, implemented by one or more processors associated with a platform service. [Figure 8] 10 is a flowchart illustrating a method for accessing a data writing service for a transaction associated with a blockchain according to the second or third aspect, implemented by one or more processors associated with a client. [Figure 9] 10 is a flowchart illustrating a method according to an embodiment for synchronizing multiple event streams according to a fourth aspect, implemented by one or more processors associated with a platform service. [Figure 10] 10 is a flowchart illustrating a method for accessing a data writing service for synchronizing event streams associated with blockchains according to a fourth aspect, implemented by one or more processors associated with a client. [Figure 11] 10 is a flowchart illustrating a method for independent verification of data associated with a blockchain-related platform of services according to a first embodiment of the fifth aspect; [Figure 12] 10 is a flowchart illustrating a method for independent verification of data associated with a blockchain-related platform of services according to a second embodiment of the fifth aspect; [Figure 13] 10 is a flowchart illustrating a method for independent verification of data associated with a blockchain-related platform of services according to a third embodiment of the fifth aspect; [Figure 14]FIG. 1 is a schematic diagram illustrating a computing environment in which various aspects and embodiments of the present disclosure may be implemented. DETAILED DESCRIPTION OF THE INVENTION

[0022] Although the appended claims relate to a fifth aspect of the present disclosure, which is described in detail below, a detailed discussion of the first through fourth aspects is provided herein to provide the reader with a full and complete understanding of the claimed aspects and related embodiments of the present disclosure.

[0023] According to a first aspect, the present disclosure provides a computer-implemented method for providing a platform of multiple services associated with a blockchain, the platform being provided to a plurality of clients, the method being implemented by a platform processor associated with an application programming interface (API).

[0024] Advantageously, the platform processor API is a web-based interactive interface, i.e., in some embodiments, it may be implemented as a web service for one or more clients so that communication may occur over the Internet using standard Internet communication protocols for web-based services. For example, in some embodiments, this allows HTTP messages or requests at the application level or layer between the client and the server (in this case, the platform service), such as HTTP, HTTPS, etc., to be sent and received based on a transport layer protocol, such as TCP / IP. Reference herein to the HTTP transport protocol or HTTP API also encompasses all standard Internet communication protocols, such as TCP / IP, UDP, HTTPS, etc.

[0025] In some embodiments, the platform processor is implemented as an HTTP API endpoint. In some embodiments, the platform processor is implemented as a Representational State Transfer (REST) ​​endpoint. Advantageously, the API may be implemented as a REST endpoint, thereby allowing clients to communicate using standard internet or web-based protocols such as HTTP or HTTPS.

[0026] The method of the first aspect includes receiving a request from a given client of a plurality of clients, the request from the given client relating to a given service of a plurality of services based on a HyperText Transfer Protocol (HTTP) transmission protocol format. Then, based on an identification of the client and / or a determination that the request is valid, the method includes obtaining a destination address associated with the given service. In some embodiments, the destination address may be an IP address or a network address endpoint. For example, it may be a universal resource identifier (URI) of an endpoint and may include a universal resource location (URL) of a web server from which the requested service may be accessed by a payment processor or one or more other entities (including the client) for the requested service.

[0027] In some embodiments, the destination address may be the same endpoint as the platform API endpoint. This may be the case when the platform provides such requested service as a main or core service. In other embodiments, when there are multiple different types of services provided by the platform, each implemented by a different processor or web server, the destination address may be different from the platform API, which may act as a host server for other processors and web servers associated with the platform. In this case, the platform processor comprises or is associated with multiple processors, each configured to implement a given service of the multiple services in the blockchain, and each associated with a particular destination address or endpoint unique to the respective processor.

[0028] The method of the first aspect further includes processing a request for a given service based on at least one blockchain transaction corresponding to the obtained destination address to obtain an output script. In some embodiments, the output script is associated with data related to the requested service, or a result of the requested service is included in a UTXO, including such data or digital assets related to the transaction. In the first aspect, this result associated with the output script is then transmitted to the given (requesting) client in HTTP or a similar transmission protocol format.

[0029] Advantageously, the method of the first aspect of the present disclosure implements a platform provided as an API for one or more clients, thereby enabling one or more processors associated with the clients to sign up for or use web services provided by the platform processor to write or access data to the blockchain. The one or more processors associated with the platform can implement one or more of the provided services using a standards-based interface design, such as, but not limited to, REST (Representational State Transfer), an architectural style for developing web services and web-based interactions. A resource, in the context of a REST API, can be defined as an object having a type, associated data, relationships to other resources, and a set of methods to operate on it. Thus, the platform or service implemented by the platform processor of the first aspect is advantageously provided as an API implementation to access (the state of) a blockchain or distributed ledger, such as the Bitcoin SV (BSV) blockchain, and trigger operations or functions that can modify that state and expose it as a REST API via an application interface. In other words, one or more servers or processors associated with the platform can be considered REST endpoints for one or more clients that choose to use such services. Thus, advantageously, clients can communicate with the platform services via HTTP or similar internet commands. More advantageously, no knowledge of BSV, Bitcoin, blockchain, ECDSA, or other cryptographic key management libraries, or transaction building software such as digital wallet software, is required to be implemented by clients for any of the services provided.A client using one or more processing resources or user terminals can simply register to use the platform via some known authentication technique, such as password-protected authentication or a standard public key infrastructure (PKI) to verify the client's identity. The client should then simply be able to communicate with the platform services via basic HTTP or the like.

[0030] In some embodiments, some examples of blockchain-related services that may be provided via the platform include: A data service for writing / submitting data to the blockchain to change the state of the blockchain, A data service to read / get data that reflects the current state of the blockchain, Services relating to simplified payment verification for blockchain-related transactions; Services related to the management of one or more event streams and / or machine-readable contracts related to a blockchain; Services relating to the management of a digital wallet framework for multiple clients.

[0031] In embodiments where there are multiple processors or web services associated with the platform processor of the first aspect, the method of the first aspect further includes providing an application programming interface (API) converter for receiving a request from a client in HTTP transport protocol format, converting the received request to a remote procedure call (RPC), and sending the RPC request to a given processor of the multiple processors configured to implement the service identified in the received request. In the reverse flow path, this embodiment includes receiving an associated response from the given processor in RPC format and converting each response to be sent to the client using HTTP or a similar transport protocol.

[0032] This is advantageous because it allows clients to communicate blockchain-related requests via simple HTTP, using a web-based platform API and providing seamless interoperability with any of the nodes or services that implement the services described above but do not communicate using the Internet Protocol communication standard for web services. The API converter implemented in this embodiment is not limited to converting from HTTP to RPC and vice versa, or for that matter, from other web service protocols to alternative communication protocols supported by the platform processor implementing one or more of the above services, the network for a given cryptocurrency, or other possible digital asset. In the reverse flow path, the method of the first aspect also includes receiving responses related to corresponding blockchain transactions from each processor in RPC format and correspondingly converting each response using HTTP for transmission to the client. Thus, advantageous implementation of the proposed interface by the platform processor enables seamless communication for submitting transactions to the blockchain when the client (payer) and the miner use different wireless data communication protocols and mechanisms.

[0033] In some embodiments of the first aspect, the request received from the client is an HTTP GET, HTTP POST, HTTP PUT, or HTTP PATCH request that includes or is associated with a client identifier unique to the given client and a service identifier for the requested given service of the multiple services provided by the platform, as described above. In some embodiments, the result sent to the client is an HTTP POST request based on the client identifier.

[0034] In some embodiments, mechanisms already exist in which memorable, more user-friendly aliases are used instead of complex public addresses for one or more client entities to simplify client addressing for blockchain transactions. Such solutions are proposed in U.S. Patent Application No. 16 / 384696 and UK Patent Application No. 1907180.2, both in the name of nChain Holdings Limited. These documents present an alias-based payment service and associated protocol, called the bsvalias payment service, in which aliases are used to specify destination addresses instead of the client entity's public addresses. Aliases in such systems are typically associated with the domain name of the sending / receiving client entity and may be a URI or email address. Thus, as long as the sender or entity is aware of or has been provided with the alias, this is sufficient for the bsvalias payment system or alias-based addressing mechanism. Messages can be sent to a client's alias using instructions provided in a machine-readable resource, such as a JavaScript Object Notation (JSON) document, stored at a better-known URI or location for bsvalias or other payment services. In some embodiments of the present disclosure, one or more of the multiple clients may have an alias as described above to identify the respective client.

[0035] In a related embodiment, the method of the first aspect includes validating the client based on a client identifier and a record associated with the platform processor, the record corresponding to the client identifier. For example, such a record may be created, stored, or associated with the platform processor upon client sign-up or registration. Then, based on successful validation of the client, determining whether a received request from the client is valid based on the service identifier and attributes or settings included in the respective record. In some embodiments, the attributes or settings may indicate whether a given client is authorized to access all or part of the requested service. For example, one or more levels of permission associated with the client identifier may be provided in the attributes or settings. For example, a given client may be authorized to request a service that reads data on a blockchain related to a particular event, but may not be authorized to modify, delete, or terminate such event, whereas another client may have permission for all actions related to one or more services.

[0036] In some embodiments, verifying the identity of a given client may be based on a digital signature associated with the client. A cryptographic key pair comprising a private key and a public solution (or public address) associated with each client may be used to verify that a request made to a service truly originates from the given client, i.e., that data signed by a private key can only be recovered or verified using the corresponding public solution. When verification is based on a digital signature, standard public key infrastructure (PKI) techniques may be used and implemented.

[0037] In some embodiments of the first aspect, a computer-implemented method for accessing a platform of multiple services, implemented by one or more processors of a given client of the multiple clients, includes obtaining or identifying an application programming interface (API) endpoint associated with one or more processors associated with the platform; and transmitting a request related to a given service of the multiple services, the request including or associated with a client identifier for the given client and a service identifier for the requested given service. As described above, the request is transmitted using Hypertext Transfer Protocol (HTTP) or a similar transport protocol format. The method also includes a result related to an output script of a blockchain transaction associated with the request, the result being provided to the client in HTTP transport protocol format.

[0038] In a second aspect, the present disclosure provides a computer-implemented method for implementing a data writing service, the method being implemented by a platform associated with an application programming interface (API) to allow a client to access the service for writing data to a blockchain. The method of the second aspect includes receiving a request from a client, the request relating to an event stream ES implemented using a blockchain, the request from the client being based on a Hypertext Transfer Protocol (HTTP) transmission protocol format. In some embodiments, the event stream may be tracked or represented as a finite state machine (FSM), such as a deterministic finite automaton (DFA), a well-known computing term that describes a system that uses transition functions or trigger events to transition from one stage to the next, has a finite number of states, and can be in only one state at a given time. In some embodiments, such an event stream is useful for representing control measures or techniques for technological processes. In some embodiments, the event stream may represent or track inputs, states, and / or events associated with a machine-readable contract or smart contract on a blockchain, advantageously recording an immutable record of the contract's past and current states. In some embodiments, the received request from the client includes a trigger event to enable a state transition to occur in a smart contract associated with the event stream.

[0039] The method of the second aspect is to generate an event stream ES i=nThe method includes determining a current state of the event stream ES, where i is an integer from 0 to N, and each integer i represents a given state of the event stream ES, whereby i=0 represents the created event stream ES, i=n represents the event stream ES in its current state in the blockchain, and i=N represents the final state of the event stream ES. In some embodiments, determining the current state may be an index of the current state based on the most recent results associated with the event stream, the results being stored on the blockchain or in one or more separate off-chain storage resources for the event stream. This may be based on an identifier of a previous or prior blockchain transaction associated with the event stream. If there is no previous state identified for the event stream, this results in a determination that the current state is n=0, i.e., a new event stream should be created. In some embodiments, the current state may also be obtained or read from the blockchain. This may be performed by a data reader as described above, which may be a service among multiple services provided by the platform processor.

[0040] In the method of the second aspect, a new event E is generated for the event stream ES based on the received request. n+1 The step of processing the blockchain transaction TX n+1 creating a blockchain transaction TX n+1 is the previous transaction TX n Transaction Output (TXO) from n ) and unspent outputs (UTXOs) n+1 ) is a new event E n In some embodiments, when n=0, there is no input that consumes the previous output. However, there may be other inputs that represent digital assets associated with the event stream ES. The method then n+1and submitting the result to the blockchain.

[0041] Once submitted, the current state of the event stream is updated based on the submitted blockchain transaction, i.e., the state is updated based on the ES i=n =ES n+1 As in, the newly created event E n+1 Based on ES i=n+1 In some embodiments, the updated state is the unspent output of the latest transaction in the event stream, the UTXO n+1 The method then includes sending a result based on the updated current state of the event stream ESn+1, the result being provided based on an HTTP transfer protocol format.

[0042] A second aspect of the present disclosure discusses an implementation of a data writing service implemented by a platform processor, which enables the ability to write data related to real-world processes, such as controlling the state of a smart contract. The platform processor of the second aspect is related to that discussed in the first aspect, and the second aspect discusses one of multiple blockchain services, namely, a service for writing data to a blockchain to change the current state of the blockchain. Because requests and responses are received using an API for the platform, the second aspect provides all of the advantages associated with the first aspect. Additionally, the data writing service advantageously enables one or more clients to transact the state of a blockchain-implemented smart contract simply by extracting triggers or events from effects. Thus, an immutable record of the various stages of a smart contract can be provided by the data writing service of the second aspect.

[0043] A third aspect of the present disclosure relates to the data writing service of the second aspect, as discussed above with respect to services provided in connection with event streams. In this aspect, or techniques for establishing a tamper-proof record or log or certificate verifying the sequential occurrence of events associated with an event stream. Accordingly, in a third aspect, the method of the present disclosure proposes methods, devices, and systems for providing, creating, updating, and terminating event streams that are implemented using blockchain and automatically create a tamper-proof log or record of events associated with an event chain.

[0044] In a third aspect, the present disclosure provides a computer-implemented method for implementing a data writing service for transactions related to a blockchain, the method being implemented by a platform processor associated with an application programming interface (API) to enable a client to access the service to write data to the blockchain. The method of the third aspect includes receiving a request from the client, the request being related to an event stream ES on the blockchain, the request from the client being based on a Hypertext Transfer Protocol (HTTP) transmission protocol format.

[0045] Then, in the received request from the client, an event E n For an event stream ES, n represents the current length of the event stream ES. E nIf n = 0 such that it is the first event to create the event stream ES, for the event stream ES, a first blockchain transaction including a first unconsumed output that is a dust output is created. A blockchain transaction dust, or simply "dust", in the context of a blockchain transaction according to the present disclosure is understood to be a consumable transaction for a digital asset or cryptocurrency having an output of a low or very small value, that is, the value may be much less than the fee for mining the output in the blockchain. This dust output can be the minimum value of a consumable cryptocurrency or digital asset output. In some embodiments, funds of the digital asset or cryptocurrency related to such a dust transaction, that is, one that processes the transfer of the minimum value of the digital asset in its output, can be provided or managed by the platform processor. In other words, the dust output referred to in the present disclosure for a blockchain transaction is associated with a digital asset having a value below the value limit for the transaction, that is, perhaps the value of the dust output is lower than, for example, the mining fee that may be required to consume such a transaction.

[0046] E n If 0 < n < N such that it is the event to modify the event stream ES and N is the final or maximum value for n, a first input that consumes the dust output related to the previous transaction for the same event stream, a first unconsumed transaction output that is the dust output for the current transaction, and the current event E n represented by the final unconsumed transaction output associated with the event data are included in the current blockchain transaction. In some embodiments, the event data is included within a data carrier element. This can be a non-consumable OP-RETURN output of the transaction. In some embodiments, the event E in the final unconsumed transaction output for the current blockchain transactionn The event data for includes a hash of the event data, which advantageously keeps the event data contents of the event stream ES private. In some embodiments, it may also include a salt, which is a unique value that may be randomly generated by a platform processor for each transaction associated with the event stream. In some embodiments, the hash of the event data is applied by a platform processor, thereby advantageously allowing a platform service or processor to keep such event data private. In other embodiments, the hash of the event data is applied by a client device before being included in a request received by the platform processor. This advantageously allows a client to keep the events or data related to the events in a request private without sharing it with the platform. In other embodiments, the event data for the event E in the final unconsumed transaction output may also be included. n Event data relating to includes raw event data that is published on the blockchain once written or submitted to the blockchain.

[0047] E nIf n=N, a blockchain transaction is created that includes a first input that consumes a dust output associated with a previous transaction in the event stream, and a first unconsumed transaction output associated with a digital asset that exceeds a defined dust output limit, i.e., exceeds a defined or minimum value of the digital asset or cryptocurrency, such that n=N is an event that terminates the event stream ES. Advantageously, the absence of dust outputs signifies the end of the event stream, since it represents that there is nothing to track in the event stream, i.e., no more events in the sequence. The provision that the first output exceeds the dust limit signals the end of the chain. Furthermore, the final blockchain transaction does not have any event data outputs, i.e., there is no data carrier element, which advantageously signals that this is a data event that terminates the event stream, rather than an event stream that modifies it.

[0048] In any of the three cases for n discussed above, the transaction is submitted to the blockchain and the results associated with the transaction are provided based on the HTTP transfer protocol format. In some embodiments, the events associated with the request, i.e., E0, E n , or E N Each of the events can be a single event associated with the respective request, or two or more events. For example, a request can have E0, E n , or E NEach transaction may contain two or more sets of sub-events. In some embodiments, the results are based on the transaction's event data output or the events associated with the respective transaction. In some embodiments, any returned results or event data may be held in the transaction's non-consumable OP_RETURN output, which is a scripting opcode that can be used to write arbitrary data to the blockchain and also mark the transaction output as invalid. As another example, OP_RETURN is a scripting language opcode for creating a transaction's non-consumable output that can store data and / or metadata within the transaction, thereby immutably recording the metadata in the blockchain. The metadata may include logs or time entries or documents desired to be stored in the blockchain. The event data or results may, in some embodiments, be considered a payload included in the respective transaction's non-consumable output. Such output may be made non-consumable, for example, by an opcode that terminates the output's locking script, such as OP_RETURN described above. However, in other embodiments, the payload or event data may be included in other ways.

[0049] The use of dust outputs in transactions is advantageous and important for maintaining an immutable, continuous record of all transactions that occurred for an event stream. This is because, although all blockchain transactions are time-stamped and order is maintained in the blockchain by posting the transactions to the blockchain, this does not guarantee the preservation of their order. This is because transactions may be mined into blocks at different times. Thus, in a blockchain, only the order of blocks in the chain follows chronological order, not individual transactions. On the other hand, to track, record, and audit the exact order of events for an event stream, which may be a smart contract, the use of dust outputs, which must be consumed by the first input of the next transaction in the sequence, advantageously ensures that the order of transactions is tracked chronologically and a tamper-proof record is created. This is because, once mined into a block, dust payments from the previous transaction to the next transaction in the sequence, consistent with Bitcoin protocol rules, cannot reorder the sequence of embedded data carrier elements (which are the final output in each transaction) and ensure that no insertions or deletions can occur that would change the sequence without immediately revealing that the event stream has been compromised. In some embodiments, Bitcoin's inherent double-spend prevention ensures that the movement of cryptocurrency (e.g., dust) between different addresses, and therefore the associated events, remain in chronological order, thus improving the security of smart contracts on the blockchain, as well as the logging, copying, or duplication of the sequence of event occurrences.

[0050] In some embodiments, a hierarchical deterministic key chain K is determined to be used for requests related to the event stream ES. Such a key chain is unique to a given event stream. Then, K=K n=0From a seed or parent, or master key pair K, a cryptographic private / public key pair may be derived for each associated event, such that n is an integer between 0 and N, each integer n representing the current length or current number of events associated with the event stream ES, and N is the maximum or final value of n. This advantageously ensures that the keys derived for a particular event stream are related to a common master or seed key and may be derived to process each respective event. In this way, advantageously, a lock script associated with the dust output may use the derived key K for the current event. n and the first input is protected using the previous key pair K n-1 This ensures that outputs can only be consumed using the corresponding key pair unique to each previous transaction.

[0051] In some embodiments, the results associated with the event stream ES include: Event E n The transaction identifier that was submitted to the blockchain Merkle inclusion proof of a transaction into a header in the blockchain A copy of the block header containing the transaction The certificate includes a certificate verifying at least one of the following:

[0052] In some embodiments, each of the created transactions may further include other inputs related to digital assets, as discussed above with respect to the third aspect. This may be provided based on an operational float managed by the platform processor. In some embodiments, this may be associated with digital assets, or cryptocurrency resources or funds maintained or managed by the payment processor to cover mining fees for the transaction and one or more other operations for the blockchain, etc. The transaction may also have one or more change outputs related to the digital assets. As described above, the final transaction has all change outputs.

[0053] In some embodiments, the event stream ES may be identified based on a transaction identifier associated with a submitted blockchain transaction. In some embodiments, the event stream ES may also be identified based on a transaction identifier associated with the most recently submitted blockchain transaction.

[0054] In some embodiments, the method includes storing a copy or log of outcome-based records for each event in the event stream ES in an off-chain storage resource. This storage resource may be associated with the platform processor or in a different device, database, or service that can be requested or retrieved from it when requested by a client. Advantageously, the storage of the log associated with the outcome of the event stream is stored separately to avoid the need to download the entire blockchain and sift through the data for any query related to the event stream. The blockchain implementing the event stream itself can be checked in situations during audits or data validation. A backup or another copy can then be used for quick queries.

[0055] In a fourth aspect, the present disclosure provides a computer-implemented method for synchronizing multiple event streams associated with a blockchain, the method being implemented by a platform processor associated with an application programming interface (API). The method of the fourth aspect relates to a method for appending or modifying a single event stream, as described above in the third aspect. However, the fourth aspect relates to a technique for synchronizing multiple separate, independently progressing event streams based on a single or common event using a single blockchain transaction, called an atomic or rendezvous transaction, across the multiple event streams. This API for a platform service for implementing the fourth aspect may be the same API as mentioned above with respect to the third aspect, or may be a separate, specific API associated with the platform processor for synchronizing event streams.

[0056] The method of the fourth aspect includes receiving a request from a client, the request relating to a plurality of M event streams on a blockchain. In some embodiments, the request from the client is based on a HyperText Transfer Protocol (HTTP) transmission protocol format. The request from the client is based on a plurality of existing event streams ES associated with the blockchain. n=1 to M where n is an integer from 1 to M, and M≧2. The method includes updating a plurality of M event streams ES n= 1 to M Each event stream ES n The current event E to be added to n Also includes the step of obtaining.

[0057] As noted above, a client may be a processor, a computing resource, a software application or program, or another entity that has access to the event stream or is authorized to access resources tracked by the event stream. In some embodiments, for a synchronization request according to the fourth aspect, multiple M participating event streams ES n= 1 to M A smart contract acting as an agent or coordinator on behalf of a client may also be considered a client making a synchronization request.

[0058] Client requests are sent to multiple event streams n= 1 to M The M event streams may be received at the API as a JSON object containing an identifier for each of the M event streams, i.e., the M event streams are included in a JSON object representing the request. In most cases, the identifiers are received from the client as part of the request. In some cases, the API may obtain multiple M event stream identifiers from an account or record associated with the client.

[0059] In some embodiments, the request from the client is to n , which is the target index for each event stream ES that should be used for the synchronization request. n , i.e., the target index is the index of the current event E n represents the next available position in a given event stream where an event should be added.

[0060] In some embodiments, the target index is n The sequence number of the event stream to be used for synchronous requests corresponds to the sequence number of the nIdentifies a point in the event stream. In most cases, the target index is received from the client as part of the request. In some cases, the API n From or Event Stream ES n The respective indexes may be obtained automatically or directly from the external log associated with the database.

[0061] In some embodiments, similar to the third aspect, the event stream ES n A hierarchical deterministic key chain is determined for each event stream ES. n =1 to M , which are specific to a given event stream.

[0062] In some embodiments, a validation check, as also described above for the third aspect, is performed on each event stream ES based on its respective key chain K or public key. n In some embodiments, the method is performed on a plurality of event streams ES n =1 to M Each event stream ES n The next available index value for each event stream ES specified in the request. n In some embodiments, the plurality of M event streams ES may also include a verification step of checking whether the target index for the plurality of M event streams ES is the same as the target index for the plurality of M event streams ES. n =1 to M It is possible that a subset of event streams in have the specified target index value and other event streams do not, in which case for the subset only the target index is checked and for the other event streams any next available index is used without fail.

[0063] For example, consider two accounts X and Y, in which funds are subtracted from one account X and added to the other, Y, i.e., transferred from X to Y. This embodiment can be used to implement a logical clock to synchronize both accounts so that it may be possible to verify the state of each of the accounts involved in the transfer. For account X being subtracted, when a subtraction event from X is added to the event streams associated with both X and Y, a next available transaction index for X is provided or recorded. This next available transaction index for X, in order for it to be true or valid, should not change until the transfer to Y is complete; i.e., the next event in the event stream associated with account X should be the addition of funds to account Y, and this next available index, if provided, should match the specified target index for X in the request from the client to be successful. If a target index is provided, it can then be verified based on the next available index value to be used for the transaction in the event stream for X after the subtraction event. On the other hand, for account Y, i.e., the account being added, the transaction index for Y after the subtraction event is recorded in the event stream for Y is free to increase without restriction. For example, there may be other funds paid to account Y after a subtraction event from X, thereby resulting in a further transaction in the event stream for Y immediately after the subtraction event. This may be allowed and may remain unchecked, as it does not affect the transfer or balance required for the transfer from X to Y. Therefore, the index value for the transaction in the event stream related to Y may not need to be validated and therefore may not be provided for this purpose.

[0064] Then, to synchronize multiple event streams, each event stream ES n Current Events nThe requirements related to adding multiple event streams are n =1 to M If one or more validation checks are successful for each event stream ES, the method proceeds. Otherwise, the method includes creating an error notification and sending it to the client. Then, for each event stream ES in the plurality, n Regarding the method, each event stream n Previous blockchain transaction related to TX n-1 The method includes identifying:

[0065] The method then includes synchronizing the plurality of M event streams ES n= 1 to M Each event stream ES n The current event E to be added to n Atomic blockchain transaction TX n The method includes creating a

[0066] In some embodiments, a current event E for synchronizing multiple M event streams n The event data associated with the current event E is the same for each of the multiple M event streams. For example, this may be the case when funds or digital assets using the same exchange rate or the same currency are added to or removed from all event streams. In other embodiments, the current event E n The event data associated with the current event E may differ for one or more of the multiple M event streams. For example, one or more of the M event streams may have applied a different exchange rate to the remaining event streams, or n You may be using different types of tokens or digital assets or cryptocurrencies. In some cases, the current event E n There may be no event data associated with the event E. nmay only be associated with metadata, which may be associated with time or data or any other parameter that can be used to verify that a given event, with the same or different data or no data at all, was added or executed at a given time for multiple M event streams. Thus, a synchronization event E n M may be a logical timer to ensure that either the same event or indeed different events are attached via atomic blockchain transactions, providing synchronization of multiple M event streams at a given point in time.

[0067] Atomic Blockchain Transaction TX n is also called a rendezvous transaction, Each nth input is a separate event stream ES n Previous transaction TX n-1 n=M inputs consuming dust outputs associated with Each event stream ES for each of n inputs n Atomic transaction TX associated with n Each unspent transaction output (UTXO) is the nth dust output with respect to n_dust )and, The unspent transaction output (UTXO) associated with the event data representing the current event En n_data )and Includes.

[0068] The use and advantages of dust inputs and outputs have already been described in the third aspect. In all event streams discussed in this disclosure, dust inputs / outputs, i.e., tracking transactions in a chain of dust, are used to prevent reordering of entries in the log after an insertion / deletion. As in the third aspect, event E nis the data carrier payload for an atomic transaction that contains the non-consumable OP-RETURN output of the transaction. In some cases, event data E n In addition, there may be separate or additional outputs for each input to contain or store data related to the state of the respective stream. Each of the inputs / outputs may also be protected with a respective key for the event stream, as described above.

[0069] However, the atomic transaction of the fourth aspect allows many event chains, each related to a different event stream, to pass through a single blockchain transaction. However, the atomic transaction of the fourth aspect allows multiple event streams ES to be used to ensure traceability for each event stream within the atomic transaction. n =1 to M A given event stream ES n Each n-th dust input / output pair for is associated with its corresponding index value in an atomic blockchain transaction.

[0070] Advantageously, multiple event streams ES n =1 to M Whatever the state or progress of each of the four, the fourth aspect is a common event E n or common event E nThe present invention provides a mechanism by which a data payload associated with an event stream can be attached to each of multiple event streams within a single blockchain transaction. This is advantageous for applications where it is useful to be able to apply a given event or update across multiple resources or entities and then verify that the data was consistent across each of these multiple resources. This is possible in embodiments where participating event streams are associated with or owned by a given client or account. In some cases, one or more of the multiple event streams may be owned by different entities. For example, a client may be associated with a smart contract used to initiate synchronization, and the rules of that contract dictate that all inputs must be the same. In this case, even if all streams are not owned or accessible by the client, the validating entity may infer that all other streams contain the same events or data as the stream being checked. One example is ensuring that debit and / or credit entries related to assets for multiple bank accounts reflect the same information at the same point in time and can be verified using the same transaction for all associated accounts. Another example is when a global change should be applied to all clients or accounts associated with a smart contract, where multiple parties agree to use a new exchange rate, with each account maintained by a separate event stream for a given party.

[0071] In some embodiments, each event stream ES associated with a request from a client n is the current event E n is an event stream ES with multiple M n =1 to Mor an error message is generated for one or more of the event streams in said plurality of event streams. This advantageously ensures that when a synchronization occurs, it is the known, expected previous state of each event stream that is being updated, and that no changes have been made since the synchronization request was sent from the client.

[0072] In some embodiments, multiple event streams associated with a request from a client may be checked for compliance with a time window that may be optionally specified in the request, and if the time when the request is processed is outside the time window, an error message may be generated.

[0073] Then, in some embodiments, the method includes: n Multiple M event streams n =1 to M , retrieving the next available index value for each of the event streams ES in response to appending the next available index value to each of the event streams ES. This is then provided as a response array of the retrieved next index values ​​for the multiple event streams. This advantageously provides confirmation that the multiple M event streams have been updated and synchronized. It also provides new or current index values ​​for each of these streams so that future requests can be made for each individual stream event after the atomic blockchain transaction. In some embodiments, if the synchronization request fails, the returned index value is advantageous, and an unexpected index may be used to indicate the need for resynchronization with other data in the respective event stream. In some embodiments, such resynchronization may be required before the failed request can be retried by the client.

[0074] In some cases, the response array may be stored separately or externally so that it may be accessed by other authorized entities.

[0075] In some embodiments, the dust input index for each of the n=M inputs of an atomic blockchain transaction is the dust input index for the respective event stream ES associated with the nth input. n This means that the dust input index is recorded in multiple ESs, such as the dust output index and / or the event data index. n =1 to M Advantageously, this can be used to derive other indexes for a given event stream among . In some embodiments, all indexes of atomic blockchain transactions are recorded in the respective event stream ESn associated with the nth input.

[0076] When appended to an event stream, the method creates multiple synchronized event streams n = 1 to M The result may also be an acknowledgement of the event stream or an atomic blockchain transaction TX to the blockchain. n will be further returned to the submission of.

[0077] In some embodiments of the third and fourth aspects, a computer-implemented method is provided for accessing a service for writing data associated with an event stream, the service being implemented by one or more processors of a given client of a plurality of clients. The method includes obtaining or identifying an application programming interface (API) endpoint associated with one or more processors of the platform, sending a request associated with the data writing service, and then receiving one or more event E associated with the event stream. nFor the fourth aspect, the request includes sending a request for an event E of a plurality M of event streams in the blockchain. n , where M≧2. As noted above, the request is transmitted using the HyperText Transfer Protocol (HTTP) transmission protocol format. The method includes: n In some embodiments, the method further includes transmitting results related to the requested event E, wherein the results are received based on an HTTP transfer protocol format. In some embodiments, the method further includes transmitting results related to the requested event E such that the request includes hashed event data for the event E instead of raw data. n applying a hash function to the event data associated with

[0078] In a fourth aspect, where the request is to synchronize M event streams to add a common event En, the method includes providing an identifier for each of the plurality of M event streams in the request. Optionally, if available, the identifier for the event E in each event stream. n Also included is a target index value for one or more of the multiple M event streams that is used to append

[0079] A fifth aspect of the present disclosure relates to a method for verifying that a transaction is contained in a blockchain, the transaction in this aspect being associated with a client, the client being associated with the platform of the service of the first aspect.

[0080] In a first implementation, also referred to as basic validation for the platform described above in the first aspect, a fifth aspect of the present disclosure provides a method including identifying a transaction T to be validated and obtaining a certificate C associated with transaction T. The certificate includes a block identifier for a given block and an inclusion proof linking transaction T to the given block in the blockchain. The method then includes determining the longest chain of valid blocks in the blockchain and verifying that the given block is included in the determined longest chain. In some embodiments, the method includes sourcing the longest chain using a header client. The header client is configured to store block headers associated with transaction T. It will be understood that other known methods of determining the longest chain may also be used, and the fifth aspect is not limited to using a header client.

[0081] In some embodiments, a first implementation of the fifth aspect includes computing a Merkle root R' from a containment proof in a certificate C that connects transaction T to a Merkle root R associated with a given block, which may be associated with the block header of the given block. Then, based on determining that R = R', the method includes verifying that R' is contained within the given block, and then verifying that the given block is contained within the longest chain determined above.

[0082] In some cases, based on a determination that R does not match R', and / or R' is not contained within the given block, and / or the given block is not contained within the longest chain, the method includes generating an error message.

[0083] Advantageously, the fifth aspect enables independent verification or cross-checking or auditing when an entity, such as a client or a verifier, wishes to verify that a transaction was indeed submitted to the blockchain and is valid. The verification may be based on data about the transaction obtained from sources related to the platform or from multiple independent sources, thereby ensuring that the data used for verification is true and unbiased without relying on any one or a few entities for the verification data. In this way, even if the client, platform, or data service is compromised, transaction verification will only succeed if data about the independently obtained verification data, such as certificates and inclusion proofs, can be matched with the data provided to the client after commitment with the blockchain via the platform; otherwise, it will fail.

[0084] In some embodiments, certificate C is retrieved from local storage associated with the client. In alternative embodiments, certificate C is retrieved from storage associated with a validating entity, which may be associated with the client and / or platform, or may be separate / independent.

[0085] Advantageously, if the source is external to the platform, there is no dependency on the platform for the information to be used for verification, thereby improving the accuracy of the verification.

[0086] In another embodiment, the certificate C for transaction T is retrieved from storage or a module associated with the platform. This option may be useful if the client does not have access to the certificate, i.e., does not have the means to obtain the outcome following transaction commitment or to receive additional data such as the certificate required for verification. In this case, verification may still be performed by or for the client based on verification data received from the platform.

[0087] In a second implementation of the fifth aspect, the method of the present disclosure provides a method for validation of transactions related to a platform's data services, as described above in the first and second aspects. This is also referred to as data writer validation. The second implementation of the fifth aspect includes obtaining data D associated with a client, i.e., payload or request data associated with the client, and then determining a value d of data committed to the blockchain based on the data D. In some cases, d may be equal to D, or in other cases, d may be associated with a salt or hash function or salted hash value of D, where the salt is associated with a secret set or an arbitrary value and the hash may be one or more known hash functions, such as SHA256. The method then includes extracting or identifying a transaction T associated with the committed value d.

[0088] The second implementation provides the same useful advantages as the first implementation, and in addition provides a way to specifically perform validation on transactions committed to the blockchain using the platform's data writers.

[0089] In a third implementation form of the fifth aspect, the method of the present disclosure provides a method of validation for a transaction associated with an event stream related to a platform, as described in the second to fourth aspects above. This is also referred to as event stream ES validation. The third implementation form of the fifth aspect performs validation of the event stream ES by using the method of the first implementation form, i.e., base validation, to validate the inclusion of a first transaction T0 associated with ES0. n=0 to N where, similar to the third aspect, n is an integer between 0 and N, n represents the length of the event stream, 0 is the first event or creation event, and N is the final event or end event. The method further includes determining that the first input to the first transaction T0 is not dust, and then determining that the first output of T0 is dust. If the first input to the first transaction T0 is dust and / or the first output of T0 is not dust, the method includes generating an error message. If no error is generated, the event stream ES n=0toN The nth data entry about the event associated with the client D n Then, for every n>0, the method according to the second implementation, i.e., data writer verification, is executed. n The nth transaction in T n The input corresponding to the previous transaction T n-1 The step of verifying that the output associated with the

[0090] In some embodiments, the third method uses the base verification of the first implementation to verify the ES N The final transaction T associated with N Event streams by verifying the inclusion of N The method then further includes verifying the closure of the first transaction T NThe first input to T0 is dust, and the first output of T0 is not dust, and the event stream ES N The last N transactions in T N The input corresponding to the previous transaction T N-1 The first transaction T N If the first input to is not dust, and / or T N If the first output of is dust, an error message is generated.

[0091] A third implementation of the fifth aspect provides the same useful advantages as the first and second implementations, and additionally provides a method for specifically performing validation on transactions associated with an event stream committed to a blockchain using the platform, the event stream providing a log of a sequence of events that can be validated using the above methods.

[0092] The first, second, and third implementations of the fifth aspect may be implemented by one or more processors associated with a client. In another embodiment, the first, second, and third implementations may be implemented by one or more processors associated with a validation entity. The validation entity may be client and / or platform independent.

[0093] Advantageously, the fifth embodiment may be executed by a module or entity that is not related to the platform or client, thereby ensuring a trustless implementation without relying on any one data source to be used to verify committed transactions.

[0094] In an alternative embodiment, the first, second, and third implementations related to the fifth aspect may be implemented by one or more processors associated with the platform itself. As noted above, this is also possible when the external data source for the verification data is unavailable to the client or verifier, or is offline or otherwise compromised.

[0095] The present disclosure according to a fifth aspect also relates to a computer-implemented method for implementing a channel service for one or more clients, the method being implemented by a channel processor and including the steps of receiving a request from a given client of the one or more clients, the request related to creating a channel, and providing the given client access to one or more functions enabling direct communication between the given client and another client via the channel. The one or more functions include channel functions or procedures related to the channel for transmission of data and / or message functions or procedures related to data transmitted using the channel. The method also includes issuing one or more access tokens for the channel, the one or more access tokens configured for secure communication with another entity via the channel. The method includes storing and / or providing one or more notifications related to the channel for the given client.

[0096] The present disclosure according to a fifth aspect may further relate to a computer implemented for processing transactions related to a blockchain, the method being implemented by one or more processors associated with a client. The method includes obtaining access to one or more functions from a channel service that enable direct communication between a given client and another entity, the one or more functions including a channel function or procedure associated with a channel for transmitting data and / or a message function or procedure associated with data transmitted using the channel. The method includes obtaining one or more access tokens from the channel service, the access tokens enabling secure communication with the other entity. In response to obtaining or identifying a transaction identifier for a given transaction associated with the client, the method includes using one or more channel functions received from the channel processor, creating a given channel for communication with the other entity, and transmitting one or more access tokens associated with the given channel to the other entity. The method includes receiving a notification associated with the given channel, the notification relating to data in the given channel associated with the given transaction, the data being provided to verify that the given transaction is included in the blockchain.

[0097] Advantageously, the use of channels enables direct or peer-to-peer communication for clients via methods, devices, and systems that provide an interface or functionality for channels or messaging services without the need for such clients to implement any processing or functionality related to the blockchain, while still being able to take advantage of all the benefits associated therewith. Data to be used for validation in the fifth aspect, or information related to a client, can be simply, securely, and instantly written to or retrieved from the blockchain, while decoupling the client from the blockchain.

[0098] Channel services may be provided by a separate channel processor, or may be provided by the aforementioned platform or platform processor, or may be implemented separately / independently from the client and / or platform. Channels enable direct or peer-to-peer communication paths or sessions between entities for the transfer of messages or data required for validation, such as the delivery of certificates or the provision of client data. In most embodiments, there are only two entities for each channel. An example of a channel service and / or channel processor is described in UK Patent Application No. 2007597.4, filed in the name of nChain Holdings Limited, the subject matter of which is incorporated herein by reference.

[0099] Access tokens, particularly API access tokens, in some embodiments may act as unique identifiers for entities or applications requesting access to channels. In some embodiments, access tokens may be considered unique authentication credentials assigned to a client and may even be as granular as individual channels, or individual messages on each channel. In some embodiments, access tokens may be such that a client can provide these tokens to other entities for authentication on each of its channels.

[0100] In a fifth aspect, such a channel may be set up by a client or a validating entity to be used to request or provide or transact validation data such as a transaction T, a transaction identifier TxID, client data, authentication C, and a containment proof.

[0101] Aspects of the present disclosure also include a computing device comprising a processor and a memory, the memory including executable instructions that, upon execution by the processor, cause the device to perform a computer-implemented method as discussed above, and the computing device is associated with a platform processor.

[0102] Aspects of the present disclosure also include a computing device comprising a processor and a memory, the memory including executable instructions that, upon execution by the processor, cause the device to perform a computer-implemented method as discussed above, the computing device being associated with a client.

[0103] Aspects of the present disclosure also include a computer system comprising at least one platform processor communicatively coupled to at least one client via a wireless communications network, the at least one platform processor associated with an application programming interface (API) endpoint for processing HTTP requests from the at least one client, the at least one platform processor implemented in accordance with the above-described computing device, and the at least one client implemented in accordance with the above-described client computing device.

[0104] Aspects of the present disclosure also include a computer-readable storage medium having stored thereon executable instructions that, when executed by a processor of a computer, cause the computer to perform the method of any of the above aspects and embodiments.

[0105] Some specific embodiments will now be described, by way of example only, with reference to the accompanying drawings, in which like reference numerals refer to like features and in which:

[0106] First aspect - Platform API for multiple blockchain-related services The platform processor for providing the multiple services described above for the first aspect may be a Platform as a Service (PaaS) and Software as a Service (SaaS) offering that advantageously enables rapid delivery of useful real-world business and technical applications, such as management of software-controlled technical systems or smart contracts using a blockchain network such as the BSV blockchain. An overview of the platform service can be seen in FIG. 1, which shows a high-level overview of the system. The platform service has a platform processor 100 that provides an API 108 through which the services can be accessed by one or more clients.

[0107] The platform services 100 shown in this figure are comprised of three service families, which aim to enable users or organizations to easily and securely utilize the benefits provided by the unique properties of blockchain without actually implementing any blockchain-based software, knowledge, or libraries on the client side.

[0108] These services are a data service 102 aimed at simplifying the use of the chain as a product data ledger; Computation services 104 that aim to provide a generalized computational framework underpinned by digital assets such as Bitcoin SV; and Commerce service offering enterprise-grade capabilities for transacting using digital assets such as Bitcoin SV106 is.

[0109] As described above, the API is implemented as a web service, so that requests can be received from clients at the API via or using the HTTPS protocol. The requested service is then implemented by one or more service modules or processing resources 102-106 using underlying software 110, such as underlying software 110 associated with a blockchain, to implement resources, libraries, and / or key management wallet implementations for creating, processing, and submitting transactions related to the blockchain. Once processed, the transaction can be submitted to the blockchain network 112 (instead of the client implementing any such functionality or transaction library). At most, the client may or can implement a digital wallet or the like associated with cryptocurrency or some other digital asset, although this is not required, as the platform service 100 may also be able to provide and manage digital assets for the client.

[0110] Figure 2a relates to a first aspect of the disclosure and illustrates a computer-implemented method for providing a platform for multiple blockchain-related services, such as platform 100 shown in Figure 1. The method of Figure 2a is implemented by a platform processor associated with an application programming interface (API).

[0111] Step 202a depicts receiving a request from a given client of a plurality of clients. In some embodiments, a client may be one or more computing devices, resources, or processors associated with the client, the client having signed up or registered to access multiple services offered by the platform processor. As noted above, a platform processor may be one or more processors, each providing different types of functionality or services implemented using a blockchain, such as the Bitcoin SV blockchain (e.g., the processor for data, computation, and commerce services seen in FIG. 1). Thus, there may be only one processor for a single service. Because the platform processor is associated with an API endpoint, such as a URI, for the platform, the request from the given client may be based on a standard Internet protocol, such as the Hypertext Transfer Protocol (HTTP) transmission protocol format. In some embodiments, the request may include an identifier for the client as well as an identifier for the requested service.

[0112] In step 204a, the client's identity is checked to verify whether the client is a valid client registered to use the platform processor and the functionality provided thereby. In some embodiments, this may be based on known authentication methods, such as password-protected login authentication. In this case, a record may be created for a given client based on the client identifier or alias and password included in the request. Verification may be based on the password received at the API matching the password in the record. In other embodiments, standard PKI techniques based on cryptographic private / public key pairs may also be used to verify the digital signature present in the request received from the client in step 202a. In this case, the client's identity may be verified by checking whether a request signed with the private key can be successfully recovered or verified using the public key.

[0113] If the client's identity cannot be verified, or if the verification fails, then in step 206a the request is not processed further.

[0114] If the client is successfully verified, the validity of the request for service in step 202a is checked in step 208a to ensure that the given client is indeed authorized to use the requested service. Permissions or attributes for this purpose may be present in the record for the client to indicate one or more types of access levels or services that can or cannot be provided to the respective client.

[0115] If the request is found to be unauthorized or invalid for the requesting client, then in step 210a the request is not processed further.

[0116] It should be understood that the above-described client and / or service validation embodiments, while useful, are not required for the operation of the first aspect. In some cases, only the validation in steps 204a or 208a may be performed. In some cases, no validation is performed. In this case, any client, registered or not, may use the service or platform with appropriate payment for such access.

[0117] In step 212a, a destination address is obtained, which may be an endpoint URI for a server or processor responsible for implementing the service requested in step 202a. In some embodiments where there are multiple platform processors, the host server or platform API may convert the received request into a remote procedure call (RPC) format to be sent to a destination address associated with the processor configured to implement the identified service.

[0118] In step 214a, the requested service is processed by the respective platform processor responsible for it. The blockchain transaction is obtained, read, or generated by the platform processor based on the destination address / endpoint of the responsible processor, and an output script for the transaction is obtained. While FIG. 2a refers to generating a blockchain transaction in this step, it will be understood that the first aspect of the present disclosure is not so limited. If the request in step 202a is to read or obtain data from the blockchain, the transaction may not be generated; it may simply be read or obtained from the blockchain. There may be multiple blockchain transactions or multiple output scripts for one or more of the generated blockchain transactions.

[0119] In step 216a, the output script may include a data output as a result (e.g., there may be a data carrier UTXO), or a result may be obtained based on the transaction identifier or the remaining outputs of the transaction. There may also be a non-consumable OP-RETURN output associated with the transaction from which a result may be obtained.

[0120] In step 218a, results associated with the output script are provided to the given client in HTTP or similar transaction protocol format. In some embodiments, if the responsible processor for the service is located remotely relative to the host platform API, the platform processor receives the response associated with the blockchain transaction from the responsible processor in RPC format. An API converter then converts this into a message that can be sent based on HTTP format before sending it to the client. As noted above, if the client uses an alias addressing service such as bsvalias, the results are sent in an HTTP message addressed to the client's alias in a format dictated by the bsvalias machine-readable resource.

[0121] Figure 2b relates to a first aspect of the disclosure and illustrates a computer-implemented method for accessing a blockchain-related multiple services platform, such as platform 100 shown in Figure 1. The method of Figure 2b is implemented by one or more processors associated with a client.

[0122] In step 202b, an application programming interface (API) endpoint associated with the platform is identified. As mentioned above, this may be an API associated with the host platform processor, and there may be one or more additional processors responsible for executing the service, each with its own service endpoint or destination address.

[0123] In step 204b, the client prepares a request for a service, such as data writing service 102 in Figure 1. In some embodiments, the client includes a client alias or identifier and / or a service identifier in the request so that it can be routed to the correct service endpoint. This is useful for platform processor checks on the validity of the requesting client and the client's authorization to use the requested service.

[0124] In step 206b, since the platform processor is implemented as an HTTP or REST API, the request prepared in step 204b is sent using Hypertext Transfer Protocol (HTTP) or a similar transmission protocol format.

[0125] In step 208b, a result associated with the output script of the blockchain transaction associated with the request is provided from the platform processor, and the result is provided to the client in an HTTP transaction protocol format.

[0126] Advantageously, in the method of the first aspect, requests for the blockchain-based service are sent and received by the client in HTTP transaction protocol format, thereby allowing the client to utilize all of the benefits and services inherent in blockchain without having to implement any transaction functions or blockchain libraries. This is because the services are provided through a platform API, which can be an HTTP or REST API endpoint. For example, the REST API design standard allows for processing and communicating HTTP requests over the Internet using the following HTTP commands, which are all functions required by the client, i.e., to send and receive messages over the Internet. The platform processor implements the commands remotely or separately for the client.

[0127] [Table 1]

[0128] FIG. 3 provides a more detailed schematic diagram of multiple services related to a blockchain, which may be implemented by a platform 300 associated with an API through which any one or more of the provided services may be accessed. As seen in this diagram, data service 302 may include a data writer 302a and a data reader service 302b. An event stream implementation using data writer service 302a is described in detail in FIGS. 4 through 8 to enable clients to write data to the blockchain in a simple, secure, and optimized manner. Data reader service 302b allows clients to submit queries, which return data to be stored in the blockchain. This may be using filtered streams, where clients may predefine the type of data they want to read from the blockchain ad hoc or periodically, i.e., within a specific time frame, or related to a set of related or unrelated events or documents processed in blockchain 310. A data archiving function allows access to logs of previous transactions related to a specified event or contract.

[0129] Computation services 306 of platform 300 include applications 306a and frameworks 306b related to smart contracts, which in some embodiments may be represented as state machines within blockchain 310. Computation services 306 interact with data services 302 as data must be input for such computations and results provided to clients.

[0130] The commerce service 304 is responsible for providing enterprise-class functionality via the enterprise wallet 304a for transacting over the blockchain 310 based on best-in-class security practices and technology. For example, in some embodiments, the enterprise wallet may implement functionality to enable blockchain transaction processing when two or more people, users, or accounts may need to sign off on a transaction that meets defined criteria, i.e., a transaction involving a large value of cryptocurrency that exceeds a certain predefined limit. The enterprise wallet may also include functionality to implement threshold numbers and / or types of signatures to transfer large amounts of digital assets, such as cryptocurrency or tokens representing another resource. Transfers of these assets may be represented on the blockchain after processing based on criteria applied by such an enterprise wallet implementation.

[0131] SPV services 308 (simplified payment verification) are applications that require information from the blockchain but do not run miner nodes and therefore do not include a direct link to the blockchain. Such SPV services 308 allow light clients to verify that transactions are contained within the blockchain without downloading the entire blockchain 310.

[0132] Second aspect - Platform that provides data writing services related to blockchain Figure 4, relating to a second aspect of the disclosure, illustrates a computer-implemented method for providing a data writing service for transactions related to a blockchain, such as data writer 302a shown in Figure 3 of the first aspect. The method of Figure 3 is implemented by a platform processor associated with an application programming interface (API) for the service.

[0133] Step 402 depicts receiving a request from a client, the request associated with an event stream ES implemented using a blockchain. As with the first aspect, the request from the client is in Hypertext Transfer Protocol (HTTP) transmission protocol format. In some embodiments, the event stream is associated with a state machine and represents a machine-readable contract or smart contract implemented as a finite state machine within the blockchain. A finite state machine (FSM) is a well-known mathematical model of computation. An FSM is an abstract machine that can be in exactly one of a finite number of states at any given time. An FSM can change from one state to another in response to some external inputs, and the change from one state to another is called a transition. An FSM may be defined by its states, its initial state, and a list of conditions for each transition. In the Bitcoin SV blockchain, the UTXO set can be thought of as a state machine, where the consumption state of a given output is a function of previous inputs to the transaction (machine). Thus, by replaying all transactions, the current consumption state of any output and the current contents of the UTXO set can be deterministically established using the blockchain. Thus, in the embodiment of Figure 4, the request can be viewed as a request to change the current state of the smart contract, implemented as an event stream ES in the blockchain.

[0134] Step 404 includes a data writer or platform processor for implementing a data writing service to write the event stream ES i=n Let us consider that i is an integer between 0 and N, and each integer i represents a given state of an event stream ES having a finite number of states, whereby i=0 represents the created event stream ES, i=n represents the event stream ES in its current state in the blockchain, and i=N represents the final state of the event stream ES. Thus, the current state of the event stream ES is En.

[0135] Step 406 determines the next or new event E for the event stream ES based on the received request in step 402. n+1 In this embodiment, the new event may be data or a function that triggers a change of state such that the event stream transitions to the next state.

[0136] Step 408 includes generating a blockchain transaction TX by one or more processors associated with the platform processor that implements the data writer. n+1 Next event E n+1 The steps to create a blockchain transaction TX are shown below. n+1 At least, Previous transaction TX n Transaction Output (TXO) from n ) and this input is the TXO from the previous transaction. n An input that consumes an output, New Event E n+1 Represents the unspent outputs (UTXOs) associated with the event data. n+1 ), which in some embodiments is a data output, i.e., represents the data carrier element of the transaction, and There may be additional inputs, such as a funds input to cover network mining fees if necessary, and other outputs, such as a change output for the transaction.

[0137] Step 410 depicts submitting transaction TXn+1 created in step 408 to a blockchain, where the transaction may be submitted to a blockchain such as Bitcoin SV for inclusion in a subsequent block by a miner node or BSV node software associated with the platform processor.

[0138] Step 412 is ES i=n =ES n+1The newly created event E n+1 The current state of the event stream ES based on i=n+1 This indicates that the latest transaction TX submitted to the blockchain on ES is updated to n+1 In some embodiments, the new state corresponds to the last transaction output UTXO n+1 The event information is identified and updated based on the event data output in

[0139] Step 414 is a step of updating the current state ES n+1 The result is provided to the client in HTTP transfer protocol format.

[0140] Third aspect - A platform that provides data writing services for recording event streams related to the blockchain 5, 6, and 7 illustrate an event stream, such as that discussed in connection with FIG. 4 of the second embodiment. Applications related to implementing smart contracts are discussed. A third aspect relates to techniques for establishing an immutable, continuous log or record of an event stream ES up to its current state on a blockchain. In some embodiments, the log may also be provided or stored off-chain in addition to being stored on the blockchain. Because the state of an event stream is based on inputs and outputs associated with transactions, the techniques described below for the third aspect present a way to establish an immutable, chronological log of all transactions associated with an event stream on a blockchain. An event stream may represent continuous inputs applied to a smart contract implemented using an FSM, DFA, or the like.

[0141]

[0033] Figure 5, relating to a second aspect of the present disclosure, illustrates a computer-implemented method for providing data writing services for transactions related to a blockchain, such as data writer 302a shown in Figure 3 of the first aspect. The method of Figure 5 is implemented by a platform processor in association with an application programming interface (API). The method relates to creating a new event stream.

[0142] Step 502 shows receiving a request from a client, the request being to create a new event stream ES using the blockchain. As in the first and second aspects, the request from the client is in a Hypertext Transfer Protocol (HTTP) transmission protocol format.

[0143] Step 504 depicts determining a hierarchical deterministic (HD) key chain K to be used with the new event stream ES to be created. In some embodiments, this may be implemented by an HD wallet implementation associated with the platform processor to generate a hierarchical tree-like structure of keys starting from a seed, parent, or master key based on the well-known BIP21 protocol. The HD key creation and transfer protocol greatly simplifies key generation, enables the creation of child accounts that can operate independently, and gives the parent account the ability to monitor or control its children even if the child account is compromised. The HD protocol uses a single root seed to create a hierarchy of child, grandchild, and other descendant keys, each with a distinct deterministically generated integer value. Each child key also obtains a deterministically generated seed, called a chaincode, from its parent. In this way, any compromise of one chaincode does not necessarily compromise the integer sequence for the entire hierarchy. In addition to the above advantages, in this embodiment, this key generation is performed by the platform processor, thus removing the resources and functionality of this key generation from the client. Therefore, the HD wallet does not need to be implemented by the client. In step 504, the key chain K is generated as follows: K = K n=0 to N where n is an integer between 0 and N, each integer n representing the current length or current number of events associated with the event stream ES, and N representing the maximum or final value of n.

[0144] Step 506 depicts identifying or obtaining data related to the first event E0, which is for a new event stream ES to be created in the blockchain based on the event data in the request received in step 502.

[0145] Step 508 depicts creating a first blockchain transaction TX0 for the new event stream ES, where n=0, by one or more processors associated with the platform processor implementing the data writer.

[0146] Step 510 determines whether the output of the blockchain transaction TX0 created in step 508 is a dust output, and whether the output of the blockchain transaction TX0 is a dust output. 0_dust ), where the dust output is associated with a lock script protected with the first derived key pair K0 in the series of keys derived from the HD Key Chain K in step 504. The dust output is associated with a (digital asset) value that is below a defined threshold value for the transaction or has a defined minimum value, i.e., lower than the mining fee required to consume such transaction. There may also be other inputs related to digital assets related to operational float or digital assets or cryptocurrency assets maintained with or associated with the payment processor. It is also possible to have other outputs in a transaction that are digital asset modified outputs.

[0147] Thus, in some embodiments, the creation template for a blockchain transaction to create an event stream according to this embodiment requires that the first input must be greater than dust. This advantageously indicates that there are no previous entities in the event stream and that this is the first entity. The creation template also specifies that there is no data carrier or data output (and therefore no OP_RETURN) because the first output of the template is dust and there is no event data associated with the creation state other than the creation of the new event stream ES. In some embodiments, an OP_RETURN is included for the creation frame, but it does not carry any event data. It may carry metadata describing the parameters of the newly created stream. Examples of example metadata may include details such as public or notarized properties, time of writing to the blockchain, time the event is first accepted, time the event is no longer accepted, geographic region where backing or associated data is stored, maximum size of allowable data, sequence number, etc.

[0148] Step 512 depicts submitting transaction TX0 to a blockchain, where the transaction may be submitted to a blockchain such as Bitcoin SV for inclusion in a subsequent block by a miner node or BSV node software associated with the platform processor. In some embodiments, once mined, the transaction identifier TX0 may be used to uniquely identify the newly created event stream ES.

[0149] Step 514 indicates sending results associated with the event stream ES created in TX0 to the client, where the results are provided in HTTP transmission protocol format. Results associated with the event stream may be copied or stored separately from the blockchain. In some embodiments, the creation of the event stream may be decoupled from submission to the blockchain for on-chain settlement. In this case, an event stream ID unique to each event stream may also be used and provided in the results to the client instead.

[0150] Figure 6, relating to a third aspect of the present disclosure, illustrates a computer-implemented method for providing data writing services for transactions related to a blockchain, such as data writer 302a shown in Figure 3 of the first aspect. The method of Figure 6 is implemented by a platform processor associated with an application programming interface (API). The diagram relates to a request to append a new event to an existing event stream ES on the blockchain.

[0151] Step 602 shows receiving a request from a client, where the request is to modify an existing stream ES identified in the request and implemented in the blockchain. The request from the client is in HyperText Transfer Protocol (HTTP) transmission protocol format, as in the first and second aspects. As discussed in connection with step 504 of FIG. 5, the event stream ES on the blockchain is stored in a manner such that K=K n=0 to N where n is an integer from 0 to N, each integer n being the current length or current number of events associated with the event stream ES, and N representing the maximum or final value of n. In some embodiments, an authentication and authorization check is performed, which may be a test for the presence of an API access token, or a session check or a password / digital signature test, or any other suitable method for validating the client or the service request made.

[0152] In step 604, the current length n of the event stream ES is determined.

[0153] Step 606 indicates identifying or obtaining data related to event E n which is an event to be currently appended or added to the event stream ES on the blockchain based on the event data in the request received in step 602.

[0154] In step 608, the previous blockchain transaction TX n-1 related to the event stream ES is identified. Once identified, then the key pair K n-1 related to the identified previous transaction TX n-1 is determined. As described above, this is based on the same seed key pair K set in step 602.

[0155] In step 610, the key pair K n for the current event E n is derived from the seed key pair K.

[0156] Step 612 indicates creating a current blockchain transaction TX n for the new event stream ES by one or more processors associated with the platform processor implementing the data writer, where 0 < n < N. The blockchain transaction TX n created for the current event E n to be added to the event stream ES is a first input that consumes the dust output related to the previous transaction TX n-1 where the consumption is permitted using the obtained key pair K n-1 for the previous transaction obtained in step 608, and a first input, and the current transaction TX nThe first unspent transaction output (UTXO) is the dust output for n_dust ) wherein the dust output is the key pair K derived from step 610 n a first unspent transaction output associated with the lock script protected using Current Events n The event data represents the final unspent transaction output (UTXO) associated with the event data. n_data )and Includes.

[0157] As noted above, a dust output is associated with a (digital asset) value that is below a defined limit or has a defined minimum value for the transaction. There may also be other inputs related to the digital asset based on the operational float. This float may be controlled by the platform processor. There may also be other outputs within a transaction that are digital asset change outputs.

[0158] Thus, in some embodiments, the update template for a blockchain transaction to update an event stream according to this embodiment is one in which the first input must be dust and the first output must be dust. This is to advantageously indicate the presence of a previous entry in the event stream. This also indicates that the event in En in question (the current or current event data) comes after the previous transaction or state. Thus, the transaction advantageously follows the dust chain and comes before the next state. The update template includes a data carrier, i.e., a data output carrying the event data or result related to the current event or state. This may be a non-consumable OP_RETURN output.

[0159] The use of dust outputs in transactions is advantageous in maintaining an immutable, continuous record of all transactions that occur to the event stream ES in the blockchain. This is because, by posting a transaction to the blockchain, all blockchain transactions are time-stamped and order is maintained in the blockchain, but this does not guarantee preservation of their order, as transactions may be mined into blocks at different times. The use of a dust output from a previous transaction being consumed as the first input of a current transaction ensures a clear, continuous, and tamper-proof record of the event stream in chronological order, if the consumption is based on the respective unique keys associated with each transaction's lock / unlock scripts.

[0160] Step 614 is to n to a blockchain, where the transaction may be submitted to a blockchain such as Bitcoin SV for inclusion in a subsequent block by a miner node or BSV node software associated with the platform processor. In some embodiments, once mined, the transaction identifier may be used to uniquely identify the event stream ES.

[0161] Step 616 is TX n , which indicates sending results related to the event stream ES created in to the client, the results being provided in HTTP transmission protocol format. The results may be copied or stored separately from the blockchain. In some embodiments, this may be based on the event data in the final unconsumed transaction output (UTXOn_data). In some embodiments, the event E in (UTXOn_data) nThe event data for event E includes a hash of the event data, thereby ensuring that it is kept private by the platform processor. The hash may be applied by the platform processor or by the client, i.e., in some implementations, n may be applied prior to generating the event data associated with the request received at the platform processor in step 602. When applied by a client, the event data in the request is private even before it reaches the platform processor. In other implementations, the event data may be provided as publicly available raw data from the blockchain.

[0162] Figure 7, related to a third aspect of the present disclosure, illustrates a computer-implemented method for providing data writing services for transactions related to a blockchain, such as data writer 302a shown in Figure 3 of the first aspect. The method of Figure 7 is implemented by a platform processor associated with an application programming interface (API). The request in Figure 7 is to terminate an existing event stream on the blockchain.

[0163] Step 702 shows receiving a request from a client, the request relating to the termination of an existing event stream ES implemented using a blockchain. The request from the client is in the HyperText Transfer Protocol (HTTP) transmission protocol format, as in the first and second aspects. As discussed in connection with step 504 of FIG. 5, the event stream ES on the blockchain is n=0 to Nwhere n is an integer between 0 and N, each integer n representing the current length or current number of events associated with the event stream ES, and N representing the maximum or final value of n. In some embodiments, an authentication and authorization check is performed, which may be a test for the presence of an API access token, or a session check or a password / digital signature test, or any other suitable method for validating the client or the request made.

[0164] In step 704, the current length N of the event stream ES is determined.

[0165] Step 706 depicts identifying or obtaining data related to the final event EN, which is for the event that is currently to be added or appended to the event stream ES on the blockchain based on the event data in the request received in step 702.

[0166] In step 708, a previous blockchain transaction TX associated with the event stream ES is N-1 Once identified, the identified previous transaction TX N-1 The key pair K associated with N-1 is determined. As above, this is based on the same seed key pair K that was established in step 702.

[0167] In step 710, the current event E N The key pair K for N is derived from the seed key pair K.

[0168] Step 712 includes, by one or more processors associated with the platform processor implementing the data writer, generating a current blockchain transaction TX for the new event stream ES. Nwhere n=N. The blockchain transaction TX created for the current event EN to terminate the event stream ES. N teeth, Previous transaction TX N-1 a first input that consumes a dust output associated with the key pair K obtained for the previous transaction obtained in step 708; N-1 a first input, which is allowed using The first unspent transaction output (UTXO) associated with a digital asset that exceeds the defined dust output limit. N )and Includes.

[0169] For a final event, all transaction outputs return change. There is no dust output, as there is no requirement or need to track the next stage of a terminated event stream. Therefore, when n=N, no dust output is provided by the platform processor. In other words, the output may be considered a change output (digital asset payment) associated with the event stream ES. This advantageously marks or indicates the final end state of the event stream being tracked. In some embodiments, because the event or contract is in a terminated state, there is no event data or data carrier element for the output, i.e., there is no OP_RETURN associated with the event data. Therefore, separate dust and data carrier outputs are not generated to terminate the event stream ES; the first output, along with the absence of an event data output that also indicates termination, exceeds the dust limit, signaling the end of the event stream on the blockchain. In embodiments where metadata is present in the OP_RETURN instead of event data, this metadata may be useful to the validating entity. There may be other inputs or change outputs associated with digital assets from the operational float. In some embodiments, the value of the dust-related digital asset set out in connection with FIGS. 5 and 6 may simply be added to one or more other outputs.

[0170] Thus, in some embodiments, a close template for a blockchain transaction to terminate an event stream according to this embodiment is one in which the first input must be dust, like the first input of the update template in Figure 6. The first output must not be dust, which advantageously acts as an end-of-ledger marker and further distinguishes the close template from the update template. As with the create template in Figure 5, there may be no data carrier for the event data, but OP_RETURN may include metadata in the close template.

[0171] Step 714 is to N to the blockchain, where the transaction may be submitted to Bitcoin, such as the Bitcoin SV network, for inclusion in a subsequent block by a miner node or BSV node software associated with the platform processor.

[0172] Step 716 is TX N , and the results are provided in HTTP transmission protocol format.

[0173] Figure 8 relates to a third aspect of the disclosure and illustrates a computer-implemented method for accessing a platform or data writing service for writing data to an event stream associated with a block, such as platform 100 shown in Figure 1 or platform 300 in Figure 3. The method of Figure 8 is implemented by one or more processors associated with a client.

[0174] An application programming interface (API) endpoint associated with the platform is identified in step 802. As previously mentioned, this may be an API associated with the host platform processor, and there may be one or more additional processors responsible for implementing the service, each having a service endpoint or destination address.

[0175] In step 804, a client prepares a request to a service, such as data write service 302 in Figure 3. The request is associated with one or more events related to the event stream ES in the blockchain. The client in some embodiments includes a client alias or identifier and / or a service identifier in the request so that the request can be routed to the correct service endpoint and so that the platform processor can check the validity of the requesting client and the client's authorization to use the requested service.

[0176] In step 806, the platform processor is implemented as an HTTP or REST API, so the request prepared in step 804 is sent using Hypertext Transfer Protocol (HTTP) or a similar transmission protocol format.

[0177] In step 808, the event E in the request n A result associated with the output script of the blockchain transaction associated with the platform processor is received. The result is provided to the client in an HTTP transmission protocol format. In some embodiments, the result may be stored within the platform processor or in a log separate from the blockchain associated with the platform processor.

[0178] Advantageously, the implementation of the event stream and its continuous log associated with the blockchain, as implemented by the method of the third aspect of the present disclosure, provides guarantees regarding the immutability of events and the immutability of event ordering.

[0179] When written, it can be written in the following way: Change the content of the event; Rearranging the order of events, Inserting events at the beginning or middle of a stream; Delete events from anywhere in the stream Attempts to tamper with the event stream are prevented, or Or be revealed.

[0180] In other words, the method according to the third aspect comprises determining the following attributes associated with the event stream: that individual entries in the event stream have not been modified since they were written, No entries have been inserted between previous consecutive entries, The entry has not been deleted, Entries are not sorted Make it provable.

[0181] These properties and advantages have many practical applications, from audit / compliance logs, to state machine replication, to more efficient, tamper-resistant, and accurate ways to read and write data to the blockchain for all clients.

[0182] An example of an event stream where capturing an event log is useful is an application that tracks and records events in games such as Noughts O and Crosses X, which use blockchain.

[0183] For example, suppose a game with n=4 (five states from 0 to 4) is in the following states:

[0184] [Table 2]

[0185] As the game progresses, a log based on blockchain transactions may be recorded according to the method of the third aspect as follows:

[0186] [Table 3]

[0187] Consider that there are attempts to tamper with or modify the copy of the log maintained for this sequence, such as inserting a different entry for the outcome when n=4, so that the log does not reflect the actual state of the game, as shown below.

[0188] [Table 4]

[0189] This would be immediately identified from a check or audit of an automatically generated continuous log of the event stream on the blockchain as an input for a transaction consuming dust output for transactions where n=3 does not verify. It will be appreciated that if such games involve financial transactions (e.g., paying to play), there may be a desire from players to check the authenticity of those game logs and whether they adhere to the odds or difficulty advertised by a given game provider. By storing individual game entries (or hashes thereof) for a given game in the event stream as described above, players can be assured that in-game events can be checked and verified independently of any internal systems maintained by the game provider.

[0190] It will be further understood that each event in a given event stream need not correspond to an individual event occurring within a game session. An event stream may be defined for any log of events where an accurate, sequential, and tamper-proof log of said events is desirable. Examples of events in a given event stream may include, for example, the inputs and / or outputs of a given smart contract executed locally or remotely (preferably off-chain), messages sent between two or more participants of a given offline messaging conference, weather, physical measurements performed by sensors or IoT devices to measure the location of vehicles, goods, people, etc., drug / medicine tracking, including manufacturer, transportation, dispenser location, prescribed dosage, recipient information, etc., amounts credited and / or debited to an account (regardless of whether the account is credited with cryptocurrency or fiat currency), changes in exchange rates, execution of a trade, a request to purchase goods or shares, etc. Ultimately, the context in which an event stream is generated and used is at the discretion of the parties using the platform processor to generate such event streams.

[0191] Fourth Aspect – A platform that provides data writing services to synchronize multiple blockchain-related event streams FIG. 9 illustrates a technique for updating multiple event streams. Event streams are discussed above in connection with the second and third aspects, particularly FIG. 6, which refer to methods for appending data to or modifying a single event stream. In addition to establishing an immutable, continuous log of an event stream up to its current state on the blockchain, the fourth aspect of the present disclosure allows multiple separate event streams to be synchronized, each of which can progress separately as shown in FIGS. 5 through 7. As with the second and third aspects, an event stream once synchronized according to the fourth aspect can be provided or stored off-chain in addition to being stored on the blockchain. Because the state of each of multiple event streams is based on inputs and outputs associated with blockchain transactions, including a single or atomic transaction that synchronizes the streams by appending a synchronization event to all provides an immutable chronological log of all transactions, with the point of synchronization traceable back to the single atomic transaction. As noted above, the event data associated with events for synchronizing multiple event streams can be the same for each of the multiple event streams, or can be different for at least one or more of the multiple event streams, or in some cases, no event data may exist. 9 to a current event or a synchronized event is understood to cover all these possibilities. For ease of explanation only, and not meant to be limiting, some embodiments of the fourth aspect are described with respect to a single event, or possibly the same event data.

[0192] FIG. 9 relates to a fourth aspect of the present disclosure and illustrates a computer-implemented method for providing a data writing service for synchronizing multiple event streams. This method may be implemented by a platform processor that provides a function or service similar to the data writer 302a shown in FIG. 3 of the first aspect. The method of FIG. 9 is implemented by the platform processor in association with an application programming interface (API). In most cases, this API is a different endpoint than the API shown in FIG. 6, which teaches how to update a single event stream. However, if the same endpoint has the ability to service multiple event streams simultaneously, the API may potentially be the same endpoint as the API in FIG. 6. FIG. 9 relates to a request from a client to add a new event to multiple M event streams on a blockchain to synchronize all M streams.

[0193] Step 902 depicts receiving a request from a client, the request including a request for a number M of existing event streams ES associated with the blockchain. n =1 to M where n is an integer from 1 to M, where M≧2. In some embodiments, the request from the client is in the HyperText Transfer Protocol (HTTP) transmission protocol format, as in the previous embodiment.

[0194] As discussed in relation to the third aspect, in some embodiments, a plurality M of event streams ES n =1 to M Each event stream ES n Also, K=K 0 to i For a given event stream ES, n , where in this embodiment, i is the unique key chain for a given event stream ES nrepresents the current index or length or current number of events associated with the event stream. Other authentication and validation checks regarding the client's authority to attach to a given event stream may also be performed based on asymmetric key pairs or digital signatures, such as tests for the presence of an API access token, or session checks or password / digital signature tests, or event stream ES n Or it could be any other suitable way of validating the service request made.

[0195] Client requests are sent to multiple event streams n =1 to M , i.e., the M event stream identifiers are included in the JSON object representing the request. In some embodiments, the request from the client also includes one or more identified event streams ES n , where the target index is the next available index, or in other words represents the actual or current length of the event stream to be used for the synchronization request +1.

[0196] Step 904 retrieves the current event E from the request in step 902. n This indicates that the request identifies or retrieves data related to the M event streams ES identified in the request. This is data used to synchronize multiple M event streams. n is an event En to be added or loaded to each of

[0197] In some embodiments, as described above, an event E is added to each stream as part of the synchronization process. nIt is possible that event data associated with one or more of the multiple streams may differ from that of one or more other streams. For example, metadata associated with each event stream may differ when compared to other participating event streams. The metadata may be associated with synchronized logical clocks, the use of different currencies or exchange rates specific to a given event stream, the addition of random values ​​or salts to each stream, the characteristics of hash and / or salt functions, etc.

[0198] Step 906 illustrates an embodiment in which one or more validation steps are performed before synchronization of multiple streams can occur. When a request is received at the API in step 902 to synchronize two or more streams, multiple ES n =1 to M Each stream of ES n is verified by checking that the signature provided is valid for the signed input to the stream against the public key supplied when the event stream was created, in which case the data is passed to the synchronization event E n For example, the signature may be based on a public key provided for a given event stream at the time of its creation (see Figure 5).

[0199] A synchronization request is made to multiple M event streams ES n =1 to M If any one fails, the synchronization request will not proceed and an error message may be generated, as shown in step 912.

[0200] In some embodiments, this step may include retrieving data E specified for one or more of the event streams identified by the client in step 902, if available. n It also includes verifying whether the target index for ES matches the last index of the event stream, which is the next available index for appending data to the respective event stream. This is done for multiple M event streams ES n =1 to MIf one fails, the synchronization does not proceed and an error message is generated in step 912. Thus, this step checks for concurrency and verifies that there are no potentially overlapping requests related to a given event stream where the actual index may have changed.

[0201] Below is an example error message when the target index does not match the actual last or next available index in event stream id1, but does match for event stream id0 as identified in the JSON request object: [ { "id": " <esid0>", "ref": "<client reference>", "result": "unchanged", "index": <esid0.last_index> }, { "id": " <esid1>", "result": "badIndex", "index":<esid1.last_index> } ]

[0202] Following successful validation in step 906, in step 908, the plurality of M event streams ES n =1 to M Each event stream ES n For each event stream ES, the previous blockchain transaction TX associated with n-1 As described above in step 902, a seed key pair K or key chain is identified for each event stream ES n or each event stream ES n In this case, the identified previous transaction TX n-1 The key pair K associated with i-1 Based on this, the event stream ES n The key pair K for the current event to be added to n is derived from the seed key pair K.

[0203] Step 910 generates a plurality of event streams ES n= 1 to M To synchronize the event streams of n The current event E to be added to each of n Atomic blockchain transaction TX n This transaction splits the event stream of M into a given event E n An atomic blockchain transaction is a single transaction that updates multiple streams to synchronize with the event E. An atomic blockchain transaction is sometimes called a rendezvous transaction. Such a transaction is an extension of the event stream in FIG. 6 that allows for a single append operation, since the same event can be atomically appended to multiple streams; that is, all event streams that are parties to the rendezvous or atomic transaction are either extended or synchronized with a given E, or none. n may all be associated with the same event data, or the events E n may be associated with different event data for one or more of the multiple M event streams.

[0204] Atomic or rendezvous transactions are transactions that span event streams, and differ from the transactions in step 612 of FIG. 6 in that each transaction spans a given event stream ES among multiple M event streams. n It involves building multiple dust chains as the first input to

[0205] Therefore, atomic blockchain transaction TX n teeth, n=M inputs, each of which is a respective event stream ES n , and each n-th input is associated with a respective event stream ES n Previous transaction TX n-1 The dust output associated with the input and For each of the n inputs, a respective event stream ES n Atomic block transaction TX associated with n Each unspent transaction output (UTXO) is the nth dust output with respect to n_dust )and, Event data representing the current event En, i.e., the unspent transaction output (UTXO) associated with the data carrier. n_data )and Includes.

[0206] Similar to the above aspect, there may be additional inputs, such as a funds input to cover network mining fees if necessary, and there may also be other outputs, such as a mutating output or a data carrier output, such as an OP_RETURN, associated with each event stream for an atomic transaction.

[0207] Event Stream ES n is associated with the key chain K, similar to step 602, each nth dust input consumption is calculated based on the obtained key pair K for the previous transaction obtained in step 908. i-1 Atomic blockchain transactions are confirmed using TX. n The nth dust output for the key pair K derived from step 908 n is associated with the protected lock script using

[0208] In all event streams discussed in this disclosure, tracking transactions in dust inputs / outputs, i.e., chains of dust, is used to prevent reordering of entries in the log, prevent post-mortem insertions / deletions, forks, i.e., alternative timelines, etc., leveraging the safety, immutability, and double-spend prevention of blockchain networks. This chain of dust formed by the nth input / output pair on a set of data carriers is used to represent each single event stream ES. n collectively protect

[0209] Similar to standard event stream dust chain transactions, rendezvous or atomic transactions involve a dust chain, platform funds and change (for transaction fees), and a data carrier for each event stream. However, atomic transactions allow many dust chains, each associated with a different event stream, to pass through a single blockchain transaction.

[0210] Therefore, all Dust Chain pairs share platform funds and changes. The data payload or event data E used for synchronization in the above-described embodiment n becomes the output of an atomic transaction whose semantics is to append its data payload to all streams whose dust chains are contained within the first n=M input / output pairs, effectively providing an atomic commit of data across multiple event streams.

[0211] In some embodiments, such as those described above in FIG. 9, the input index and output index have a one-to-one mapping, with a single data element having a final output index. As described above, it is possible to individually verify whether multiple event streams participating in an atomic blockchain transaction were correctly synchronized / updated. An auditor or verification entity or program may individually verify whether each event stream ES is synchronized / updated to check that particular event stream. n In some embodiments, the index may be provided via a platform processor as part of metadata that may be available to the client or validating entity, or the index may be obtained on-chain through observation of the transaction inputs, i.e., by scanning the inputs for matches with the output of the previous event in the respective event stream.

[0212] Assuming that a validating entity acting on behalf of a client owns or has access to the event stream being examined, consider an example of validating synchronized event streams using the method of FIG. 9 using a double-entry bookkeeping policy where it is desired to verify that all balance changes in an account match an equal and opposite balance change in another account. This example is not limited to just one debit and one credit account, but can be applied to any number of accounts as long as all balance changes sum to zero. For example, consider two event streams A and B, where A represents an account using an exchange rate or agreed-upon offset X, and B represents an account using an exchange rate or agreed-upon offset Y for a given currency, where 1X=0.5Y. Suppose the two accounts should be synchronized when A transfers 2 units at offset X to B. This transfer occurs in a stream-by-stream synchronization event E. n , but the event data associated with each may be different. For A, the event data may represent a decrease of 2 units in offset X. For B, the event data may represent an increase of 1 unit in offset Y, which corresponds to an addition of 2 units in offset X transferred from A. In another example, the transfer may be split into two separate atomic transactions, one for the subtraction of 2X event from A that is recorded in both event streams, and another for the addition of 1Y unit event to B that is also recorded in both event streams.

[0213] Verification is performed on a given event stream ES until an atomic blockchain or rendezvous transaction is encountered. n events in the stream being checked. From this point, the verifying entity may also check other accounts owned by the same client and perform a zero-sum calculation. Any errors may then be flagged at this stage, and if there are no errors, the verifying entity simply moves on to verifying the next event in the stream being checked.

[0214] Below is an example of an atomic transaction input / output that attaches to three streams:

[0215] [Table 5]

[0216] An example of an atomic transaction associated with two event streams T1 and T2 can be seen in Figure 11. In this figure, we can see that the dust inputs / outputs of each T1 and T2 are the first two entries in atomic transaction TX12 at index 0 and index 1, respectively. TX12 tracks the dust chains associated with both event streams T1 and T2.

[0217] Multiple Event Streams ES n =1 to M Following an atomic transaction that synchronizes the API endpoints in some embodiments, multiple ES n=1to M Each event stream in ES n Returns a response array of the next available index values ​​associated with each event stream, which can be provided to the client requesting synchronization. The response can be provided for the purposes of independent validation for each event stream, or the client can request the next event from each event stream ES n An index may be provided to know which index value to use for one or more event streams. If the index is unknown for one or more event streams, for example, if the event stream is empty, a NULL value may be included for the event stream.

[0218] As data is appended and thus synchronized across all of the multiple M event streams, each event stream ES n may proceed independently as separate streams following the atomic transaction, as discussed in the third aspect.

[0219] Following the operation, multiple event streams ES n =1 to M are provided to the blockchain to be settled on-chain in a single multi-input / multi-output rendezvous or atomic transaction. During on-chain settlement, the API in step 902 collects each of the M event streams to be settled on-chain and groups them into a single blockchain rendezvous transaction.

[0220] Figure 10 relates to a fourth aspect of the disclosure and illustrates a computer-implemented method for accessing a platform or data writing service for synchronizing event streams associated with a blockchain, such as platform 100 shown in Figure 1 or platform 300 in Figure 3. The method of Figure 10 is implemented by one or more processors associated with a client.

[0221] In step 1002, an application programming interface (API) endpoint associated with the platform for synchronizing event streams is identified. This API may be made available to clients by one or more known means of delivering APIs. As discussed in connection with FIG. 8, this may be an API associated with the host platform processor for providing data writing services, or it may be a separate API specialized for synchronizing multiple event streams.

[0222] In step 1004, the client selects an event E for synchronizing or appending to multiple M event streams ESn =1 to M. n As mentioned above, multiple M event streams ES n =1 to M An identifier for and / or a target index for each of the multiple event streams may also be included in the request.

[0223] In step 1006, since the platform processor is implemented as an HTTP or REST API, the request prepared in step 1004 is sent using Hypertext Transfer Protocol (HTTP) or a similar transmission protocol format. The request is sent as a JSON object, as described above in connection with FIG. 9.

[0224] In step 1008, results associated with each of the M event streams are received. n If event E is not attached to any of the event streams, the result is an error message. n If the event streams ES are successfully appended to all of the M event streams, in some embodiments, the API appends the event streams ES to the event streams ES. n =1 to M In some embodiments, the event E n A result associated with the output script of the atomic blockchain transaction for is also received. The result is provided to the client in an HTTP transmission protocol format. In some embodiments, the result may be stored in a log separate from the blockchain within or associated with the platform processor.

[0225] Fifth Aspect – Validation of Blockchain-Related Transactions 3, such as one or more processors associated with data writer 302a, ensure data integrity guaranteed by time stamps, tamper-evident, and non-repudiation mechanisms to provide immutability through the use of mechanisms such as event streams as discussed in the second, third, and fourth aspects of this disclosure. Embodiments associated with data writers provide a solution for data storage and retrieval that complies with modern data protection regulations, introducing non-repudiation properties and providing proof of all properties in a simple procedure to enable independent verification of the data.

[0226] Data services 302, and in particular data writers 302a, construct on-chain transactions that embed customer or client data within them. Transactions are immutable and public; once a transaction is included in the blockchain, as explained, it cannot be deleted. Furthermore, these transactions are broadcast across the blockchain network.

[0227] In some cases, the benefits of transaction immutability and openness can pose some obstacles when dealing with sensitive data that falls under data privacy and protection laws or is confidential.

[0228] A first concept of notarization associated with the platform, and preferably or particularly associated with one or more processors associated with data writer 302a, commits a salted fingerprint or record of a customer or client to the blockchain. A salt is understood to be a unique value that may be randomly generated for each transaction associated with the data writer. The salted data of the first concept has the advantage of revealing nothing and exposing brute force pre-image attacks, such as brain wallet attacks.

[0229] A second concept of openness associated with the platform, and particularly with one or more processors associated with data writer 302a, commits the complete data payload to the blockchain, which advantageously provides persistence and distribution of client data.

[0230] When data is notarized or published, a proof of inclusion in the blockchain is generated by the platform. The combination of the enclosing transaction and its proof of inclusion forms a certificate. These certificates are mathematically correct proofs that cannot be forged or tampered with, and are advantageously separately and independently verifiable apart from the platform 300 or any services associated with the platform, such as data writer 302a.

[0231] In a fifth aspect of the present disclosure, one or more features, methods, and processes associated with data service 302 of platform 300 in Figure 3 may be implemented independently of platform 300 to simultaneously enable storage or provision of notarized or published customer or client data at the time of notarization or publication, and subsequent retrieval of said data. Additionally, in some embodiments, data retrieval functionality is advantageously provided that enables a client or customer entity to retrieve the above-mentioned notarized and published certificates from platform 300.

[0232] As part of the authentication process, as described above, one or more processors associated with platform 300 or data service 302 generate one or more on-chain transactions. Once included in a block, the transaction inherits the underlying properties of immutability and is associated with a timestamp and evidence of tampering. The data service further generates a certificate, which is a data bundle containing the transaction, the block header, and an inclusion proof that links the transaction to the block header.

[0233] Platform Service Verification - First Implementation A first embodiment or implementation of the fifth aspect shows a method for establishing how any transaction can be proven to be contained within a block.

[0234] The following steps are performed to verify that a transaction is included in the blockchain: 1. Verify that an authenticated transaction is included in a block. In some embodiments, this involves using the inclusion proof included in the certificate. 2. Verify that the block in step 1 is part of the longest proof-of-work chain of blocks. In some embodiments, this involves using an independently sourced view of the longest proof-of-work blockchain.

[0235] These steps may, in some examples, be performed by one or more processors or tools or software associated with the data service itself. However, using a data service introduces an element of trust in the platform 300 for validation. To provide completely independent validation, the validation process according to the present disclosure is advantageously performed without any dependent data service 302 or indeed any platform service tools.

[0236] An exemplary outline of a verification procedure according to a first implementation of the fifth aspect is given below and illustrated in FIG.

[0237] Terminology:

[0238] [Table 6]

[0239] methodology 1. Obtain or identify T transaction in step 1102. Then, obtain C in step 1104 either from a local copy or storage associated with the client or account, or from a data service storage facility. 2. Determine the longest chain of valid blocks according to step 1106. In some embodiments, sourcing the longest proof-of-work blockchain view may be done using, for example, a local header-only network client. A local header client is a client configured to store block headers associated with transaction T. Other known or existing techniques for establishing the longest chain may also be utilized. For ease of reference, examples of header clients are mentioned later in this disclosure. 3. In step 1108, calculate R' as follows: H(T):=sha256(sha256(T)) σ:=H(T) For each lemma in the PTHB, If λ is left: λ':=(λ||σ) If λ is right: λ':=(σ||λ) σ:=sha256(sha256(λ')) R':=σ 4. In step 1110, verify that R=R′; if not, in step 1112 and fails. 5. Verify that R′ is contained in HB in step 1114, if not, fail; verify HB∈Ω according to step 1114, if not, fail in step 1116.

[0240] Validation may be performed against a local database of Bitcoin blockchain headers. This database may be populated from the Bitcoin network by synchronizing header messages in real time from a rotating subset of all peers on the network. The longest chain is advantageously independently sourced from a random, rotating selection of all peers for eventual synchronization with all peers. This advantageously prevents eclipse attacks on the validation process of the first embodiment, and thus prevents the creation of a hostile fork if a malicious party has access to or control of several nodes or IP addresses in the blockchain network. An eclipse attack is an attack in which a malicious party may attempt to conceal a valid chain of blocks by providing inaccurate evidence that can be mathematically traced back to a block, but that block may be invalid or may have been generated by the malicious party.

[0241] For example, an open-source BSV (Bitcoin SV) header client may become available. The header client operates as described above and can be used to source the longest chain of headers. Being open-source, it can also be inspected by an independent validating entity to ensure that the identified chain faithfully and truthfully represents the longest chain of block headers.

[0242] Alternatively, other implications may be available, or an independent verifier may implement its own header client to source the necessary data.

[0243] Public block explorer services exist. Whether these services are via a web interface or an API, these public block explorers typically offer the ability to fetch block metadata given a block hash. Similar to sourcing headers, when using third-party or independent data sources, source selection may preferably be used. This advantageously mitigates the possibility that a single or small number of external actors control the view of the blockchain as seen by independent validators.

[0244] As noted above, the channel may be used to send and receive verification data.

[0245] Data Writer Verification - Second Implementation As discussed above with respect to the first through third aspects, the data service's data writer 302a provides an API that allows customers to notarize and / or publish individual data payloads. This is done by embedding either the data (published as described above) or a salted hash commit of the data (notarized as described above) into a Bitcoin transaction. The platform then funds the transaction. Thus, customers or clients advantageously have no involvement in constructing on-chain transactions other than supplying the embedded data via HTTP requests, such as POST.

[0246] The data carrier transaction refunds value or funds (minus any mining fees) from platform to platform, as described above in the third embodiment, and then includes the data commitment as an additional provable non-consumable transaction output. Notarization and publication as described above follow a similar flow.

[0247] First, the data is encapsulated in a transaction that is submitted to the blockchain.

[0248] The transaction is then later included in a block.

[0249] The client then initiates the operation by making an HTTP POST such as the following: POST / api / v1 / writer / (notarise|publicise)[?store=true] HTTP / 1.1 Host: (region-code).data.services.example.org Authorization: Bearer (api-token) Content-length: ... <raw data here>

[0250] In some embodiments, the platform may provide one or more storage or storage modules integrated within or otherwise associated with the platform. These storage modules may be provided to one or more clients associated with the platform services. Thus, in cases where a client may not have storage associated with it, or where it is preferable to store data associated with the platform 300 at a location other than the client entity or associated with one or more processors associated with the client, platform-associated storage may be purchased, rented, or used. In this case, if platform-associated storage is present or active, the payload in the client request (HTTP POST) is written to private and / or geo-restricted data storage associated with the platform.

[0251] When notarizing, a commitment payload is generated, which is a salted hash of the full customer or client payload.

[0252] A data carrier transaction is constructed, which then allows the funded transaction to be submitted to the blockchain and an accept / reject message received in response.

[0253] The response to the request includes an identifier, i.e., the writer ID, which can later be used to request a copy of the data certificate (if available) and to retrieve the original data payload (if stored).

[0254] An example data writer HTTP response template is shown below: HTTP / 1.1 201 Created Location: https: / / (region-code).data.services.example.org / api / v1 / writer / write / (write-id) Content-type: application / json Content-length: . .. { / / unique id for this write "id": "(write-id)", / / accepted: transaction created, not in block yet / / certified: transaction mined into block, certificate available "status": "accepted" | "certified", / / path to latest version of this document / / matches the Location header "manifest": "https: / / (region- code).data.services.example.org / api / v1 / writer / write / (write- id)", / / if storage was opted into, path to retrieve the raw payload "payload": "https: / / (region- code).data.services.example.org / api / v1 / writer / write / (write- id ) / payload", / / if status is certified, path to retrieve the system-generated certificate "certificate": "https: / / (region- code).data.services.example.org / api / v1 / writer / write / (write- id ) / certificate" }

[0255] In a second implementation of the fifth aspect, the present disclosure extends the verification presented in the first embodiment to be applied to verify not only the integrity of the transaction, but also that the transaction contains expected customer or client data.

[0256] The second implementation may be executed independently of the platform processor.

[0257] An exemplary outline of a verification procedure according to a second implementation of the fifth aspect is given below and illustrated in FIG.

[0258] Terminology:

[0259] [Table 7]

[0260] Methodology: 1. Obtain D, C, and, if notarized, S, either from a local copy or from a data service storage facility. See step 1202 in FIG. 12. 2. Determine data commitment in step 1204; For notarized data, d=sha256(sha256(S||D)) For published data, d:=D This becomes: 3. In step 1206, extract T from C. If the certificate is in JSON format, the extraction may include reading the data based on the key. Alternatively, binary encoding or other known methods may be used to parse the data to extract T. 4. Ensure that T contains at least one output that satisfies or fails the following test: Value == O, i.e., test whether at least one of the outputs in T has a value set to 0, and the script == OP_FALSE OP_RETURN <d>, i.e., test that one of the scripts T returns. 5. Perform the procedure as discussed in the first implementation and in FIG.

[0261] Event Stream Validation - Third Implementation As discussed in connection with the second and third aspects of the present disclosure, an event stream is an append-only log backed by a blockchain. Clients associated with platform services 300 can create event streams, append to event streams, and close event streams as presented in Figures 5 through 8. As with all data services 302, data appended to event streams can be notarized or public, and the underlying data can optionally be stored in private and / or geofenced storage. These choices are governed by entry E. n This may be done per stream ES rather than per stream ES.

[0262] A data writer 302a associated with an event stream can be used to authenticate any single entry in the log, as presented above. Event streams utilize an underlying blockchain to extend the advantages associated with the first and second embodiments of the fifth aspect with at least the following unique properties or rules or facts associated with event streams: Once written, individual entries in an event stream cannot be changed. The stream is append-only, so An entry cannot be inserted between previous consecutive entries, Entries cannot be deleted, Entries cannot be reordered. Unauthorized parties cannot append events to the event stream .

[0263] The validation procedures associated with the first and second implementations of the fifth aspect, along with the concept of embedding data on-chain, still apply to any individual event in the event stream. In a third implementation, the transaction template is extended to include a chain of dust (the lowest possible value of Bitcoin, as described above) that links to individual transactions. Each transaction in this dust chain contains a data carrier representing a single event in the stream. Transactions in the dust chain are linked by successive transactions that consume dust outputs from previous transactions, as detailed in the third aspect.

[0264] The Bitcoin blockchain does not allow double spending of any value in the system. Thus, each spent transaction output is spent exactly once in exactly one subsequent transaction. This property advantageously (i) prevents any forking of the log, (ii) ensures that each entry has exactly one predecessor and zero or one successor, and (iii) no other transactions other than those listed above are valid under Bitcoin's rules, thus not allowing other structures in the event stream.

[0265] An immutable ledger prevents the transaction graph from being rewritten at a later point in time. This advantageously ensures that entries cannot be inserted after the fact. While it is possible for a party to withhold transaction details, and therefore an entry, somewhere in the Dust Chain, it is impossible for that party to construct an alternative movement of funds that passes the transaction inclusion validation check in order to convince other parties that the Dust Chain does not contain a particular entry. The Dust Chain reveals that the entry the party attempted to withhold is not present.

[0266] Event stream interactions are driven by an HTTP API. A stream can be constructed using the following example request: POST / api / v1 / stream / create?mode=(notarise|publicise) [&store=true] HTTP / 1.1 Host: (region-code).data.services.example.org Authorization: Bearer (api-token)

[0267] As with the examples in this disclosure, this request outline is simplified: an actual API call may accept many parameters defining access control policies, retention policies, on-chain visibility, etc.

[0268] The API can then respond with information related to the event stream. HTTP / 1.1 201 Created Location: https: / / (region-code).data.services.example.org / api / v1 / stream / (es-id) Content-type: application / json Content-length: ... { / / unique id for this event stream "id": "(es-id)", / / accepted: transaction created, not in block yet / / certified: transaction mined into block, certificate available "status": "accepted" | "certified" }

[0269] Data can be added to the event stream using additional HTTP requests such as: POST / api / v1 / stream / (es-id)[?after=(seq-no)] HTTP / 1.1 Host: (region-code).data.services.example.org Authorization: Bearer (api-token) Content-length: ... <raw entry payload>

[0270] The optional after parameter of seq-no allows the caller to append to the event stream only if no appends have been made since the last time it was observed. This may be useful when synchronizing event stream operations across multiple clients using atomic blockchains or rendezvous transactions according to the fourth aspect. This may act as a form of optimistic concurrency control.

[0271] An example of an HTTP response template is shown below. HTTP / 1.1 201 Created Location: https: / / (region-code).data.services.example.org / api / v1 / stream / (es-id) / (seq) Content-type: application / json Content-length: ... { / / (globally) unique id for this write "id": "(write-id)", / / event stream id "esid": "(es-id)", / / sequence number within this event stream "seq": (sequence-number), / / accepted: transaction created, not in block yet / / certified: transaction mined into block, certificate available "status": "accepted" | "certified", / / path to latest version of this document / / matches the Location header "manifest": "https: / / (region- code).data.services.example.org / api / v1 / stream / (es-id) / (seq)", / / if storage was opted into, path to retrieve the raw payload "payload": "https: / / (region- code).data.services.example.org / api / v1 / stream / (es-id) / (seq) / payload", / / if status is certified, path to retrieve the system- generated certificate "certificate": "https: / / (region- code).data.services.example.org / api / v1 / stream / (es-id) / (seq) / certificate" }

[0272] If the after parameter is supplied and the supplied seq-no is found to be not the last entry in the event stream, an HTTP 409 Conflict response is returned instead.

[0273] Event stream data, including optionally stored payloads, and certificates can be downloaded from an HTTP API of platform service 300. Alternatively, authorized observers can receive replicas of the event stream using a different API, such as an API related to simple payment verification (SPV), which can provide push notifications about new data. In this configuration, the event stream service acts as an SPV channel server, and observers (receiving replicas) can be SPV channel clients.

[0274] A third implementation of the fifth aspect extends both the first and second implementations to additionally verify relationships between events in an event stream: the certificates generated by the event stream form proofs of causal predecessor, successor, immediately preceding, and immediately following relationships.

[0275] In addition to the first and second implementations with respect to individual entries, the integrity of an event stream can be verified in a third implementation by starting at one end of the stream and traversing each transaction until the other end of the stream is reached.

[0276] For each transaction, first the verification described for the data writer in the second embodiment in FIG. 12 is performed, which confirms that the same guarantees as for the data writing service alone are maintained.

[0277] Second, the transaction inputs and outputs are verified. The first input to a transaction must reference the first output of a previous transaction, which must be dust. Any discrepancy in the dust chain indicates that the associated append-only log is unreliable. As with all data services, methods according to embodiments may be implemented by platform services 300 to perform this verification, but the fifth aspect allows for a completely independent verification to be performed.

[0278] An exemplary outline of a verification procedure according to a third implementation of the fifth aspect is given below and illustrated in FIG.

[0279] Terminology:

[0280] [Table 8]

[0281] Methodology: This validation can be performed forward or backward in the event stream. Forward validation [T0,...,T n ,...[,T final ]] is described below but should not be considered limiting. 1. Verify the creation of the stream: T0 and C0 are obtained in step 1302 of FIG. The verification of the first embodiment (FIG. 11) is performed on T0 and C0. Verify that the first input to T0 is not dust in step 1304, otherwise fail in step 1306; In step 1308, verify that the first output of T0 is dust, otherwise fail in step 1310. 2. Each data entry in the append-only log, D n Regarding D n , C n Get Step 1312 D n , d n , D n Performs data writer validation on the Step 1314 inputs T n in 0 is the output T prev out 0 If not, fail in step 1316. T n in 0 prevout, previdx is H(T prev ), matches 0, fails otherwise T n in 0 scriptSig payment script is T prev out 0 Correctly resolve the scriptPubKey lock script (by running it). 3. Optionally, for the closed stream, T final , C final Get T final , C final The verification of the first embodiment is performed on T final Validates that the first input to is dust, and fails if not. T final Verify that the first output of is not dust, otherwise fail. input T final in 0 is the output T prev out 0 consume Based on this, the closing transaction is verified in step 1318.

[0282] Turning now to FIG. 14 , an exemplary simplified block diagram of a computing device 2600 that may be used to implement at least one embodiment of the present disclosure is provided. In various embodiments, the computing device 2600 may be used to implement any of the systems illustrated and described above. For example, the computing device 2600 may be configured to be used as one or more components of the illustrated DBMS, or the computing device 2600 may be configured to be a client entity associated with a given user, where the client entity makes database requests to a database managed by the DBMS of FIG. 14 . Thus, the computing device 2600 may be a portable computing device, a personal computer, or any electronic computing device. As shown in FIG. 14 , the computing device 2600 may include one or more processors (collectively labeled 2602) having one or more levels of cache memory and a memory controller configured to communicate with a storage subsystem 2606, which includes a main memory 2608 and persistent storage 2610. The main memory 2608 may include dynamic random access memory (DRAM) 2618 and read only memory (ROM) 2620 as shown. The storage subsystem 2606 and cache memory 2602 may be used for storage of information such as details related to transactions and blocks as described in this disclosure. The processor 2602 may be utilized to provide the steps or functions of any embodiment as described in this disclosure.

[0283] The processor 2602 may also be in communication with one or more user interface input devices 2612 , one or more user interface output devices 2614 , and a network interface subsystem 2616 .

[0284] The bus subsystem 2604 may provide a mechanism for allowing the various components and subsystems of the computing device 2600 to communicate with each other as intended. Although the bus subsystem 2604 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses.

[0285] The network interface subsystem 2616 may provide an interface to other computing devices and networks. The network interface subsystem 2616 may act as an interface for receiving data from other systems from the computing device 2600 and transmitting data to other systems from the computing device 2600. For example, the network interface subsystem 2616 may connect the device to a network so that a data technician may be able to send data to and receive data from the device while at a remote location, such as a data center. It may be possible to connect to

[0286] The user interface input devices 2612 may include one or more user input devices such as a keyboard, a pointing device such as an integrated mouse, trackball, touchpad, or graphics tablet, a scanner, a barcode scanner, a touchscreen integrated into a display, a voice recognition system, an audio input device such as a microphone, and other types of input devices. In general, the use of the term "input device" refers to any device for inputting information into the computing device 2600. It is intended to encompass all possible types of devices and mechanisms.

[0287] The one or more user interface output devices 2614 may include a display subsystem, a printer, or a non-visual display such as an audio output device. The display subsystem may be a cathode ray tube (CRT), a flat panel device such as a liquid crystal display (LCD), a light emitting diode (LED) display, or a projection or other display device. In general, use of the term "output device" is intended to include all possible types of devices and mechanisms for outputting information from computing device 2600. The one or more user interface output devices 2614 may be used, for example, to present a user interface that facilitates user interaction with applications that perform the described processes and variations thereof, when such interaction may be appropriate.

[0288] The storage subsystem 2606 may provide a computer-readable storage medium for storing basic programming and data constructs that may provide the functionality of at least one embodiment of the present disclosure. Applications (programs, code modules, instructions), which when executed by one or more processors, may provide the functionality of one or more embodiments of the present disclosure, may be stored within the storage subsystem 2606. These application modules or instructions may be executed by the one or more processors 2602. The storage subsystem 2606 may further provide a repository for storing data used in accordance with the present disclosure. For example, the main memory 2608 and the cache memory 2602 may provide volatile storage for programs and data. The persistent storage 2610 may provide persistent (non-volatile) storage for programs and data and may include flash memory, one or more solid-state drives, one or more magnetic hard disk drives, one or more floppy disk drives with associated removable media, one or more optical drives (e.g., CD-ROM, DVD, or Blue-Ray) with associated removable media, and other similar storage media. Such programs and data may include programs for performing the steps of one or more embodiments as described in this disclosure, as well as data related to transactions and blocks as described in this disclosure.

[0289] The computing device 2600 may be of various types, including a portable computing device, a tablet computer, a workstation, or any other device described below. Additionally, the computing device 2600 may include another device that may be connected to the computing device 2600 via one or more ports (e.g., USB, headphone jack, Lightning connector, etc.). A device that may be connected to the computing device 2600 may include multiple ports configured to accept fiber optic connectors. The device may thus be configured to convert optical signals into electrical signals that may be transmitted through ports connecting the device to the computing device 2600 for processing. Due to the ever-changing nature of computers and networks, the description of the computing device 2600 shown in FIG. 13 is intended only as a specific example to illustrate a preferred embodiment of the device. Many other configurations are possible, having more or fewer components than the system shown in FIG. 14.

[0290] Enumerated exemplary embodiments To better illustrate, explain, and understand the claimed aspects and embodiments, the present disclosure will now be discussed based on the following clauses relating to the above-mentioned aspects, which are provided herein as exemplary embodiments.

[0291] 1. A method for verifying that a transaction is included in a blockchain, comprising: identifying a transaction T to be verified; Obtaining a certificate C associated with a transaction T, the certificate comprising: a block identifier for a given block and an inclusion proof linking the transaction to the given block in the blockchain; determining the longest chain of valid blocks in the blockchain; Verifying that a given block is contained within the longest chain; A method comprising:

[0292] 2. Certificate C is retrieved from local storage associated with the client, clause 1 The method described below.

[0293] 3. Certificate C is retrieved from storage associated with the validating entity, as described in clause 1. How to post.

[0294] 4. The method of clause 1, wherein certificate C is retrieved from storage associated with the platform.

[0295] 5. The method of any preceding clause, comprising sourcing the longest blockchain using a header client configured to store block headers associated with transaction T.

[0296] 6. further comprising the step of computing a Merkle root R' from a containment proof connecting transaction T to a Merkle root R associated with a given block; In response to R=R′, the method determining that R' is contained within a given block; determining that a given block is contained within the longest chain; Including, A method as set forth in any of the preceding clauses.

[0297] 7. The method is generating an error message based on a determination that R does not match R'; and / or generating an error message based on a determination that R' is not contained within the given block; and / or generating an error message based on a determination that the given block is not contained within the longest chain; 7. The method of clause 6, further comprising:

[0298] 8. Obtaining data D associated with the client; determining a value d of the data committed to the blockchain based on the data D; extracting or identifying a transaction T associated with a committed value d; 8. The method of any one of clauses 1 to 7, further comprising:

[0299] 9. The method of clause 8, wherein the committed value d is based on a salt value S.

[0300] 10. The method of clause 9, wherein the committed value d is a hash of client data D and salt S.

[0301] 11. Verify the inclusion of a first transaction T0 associated with ES0 using any one of the methods in clauses 1 to 7 in the event stream ES n=0 to N where n is an integer between 0 and N, n represents the length of the event stream, 0 being the first or creating event, and N being the last or terminating event; determining that a first input to a first transaction T0 is not dust; determining that the first output of T0 is dust; Event Stream ES n=0toN The nth data entry about the event associated with the client D n performing the method according to any one of clauses 8 to 10 for each When n>0, the event stream ES n The nth transaction in T n The input corresponding to the previous transaction T n-1 Validating that the output associated with 11. The method of any one of clauses 8 to 10, comprising:

[0302] 12. If the first input to the first transaction T0 is dust, generate an error message; and / or If the first output of T0 is not dust, generate an error message. The method described in clause 11.

[0303] 13. Use any one of the methods in clauses 1 to 7 to download the ES N The final transaction T associated with N Event streams by verifying the inclusion of N verifying closure of First transaction T N determining that a first input to is dust; determining that the first output of T0 is not dust; Previous transaction T N-1 Event Stream ES N The last N transactions in T N verifying that the input corresponding to 13. The method of clause 11 or 12, further comprising:

[0304] 14. First transaction T N If the first input to is not dust, generate an error message, and / or T N If the output of is dust, generate an error message, The method described in clause 14.

[0305] 15. The method according to any one of the preceding clauses implemented by one or more processors associated with the client.

[0306] 16. The method of any one of clauses 1 to 15 implemented by one or more processors associated with the platform.

[0307] 17. The method of any one of clauses 1 to 15 implemented by one or more processors associated with a validating entity.

[0308] 18. The method described in clause 17, wherein the validation entity is independent of the client and / or the platform.

[0309] 19. A computer-implemented method for implementing a channel service for one or more clients, the method being implemented by a channel processor; receiving a request from a given client of the one or more clients, the request relating to the creation of a channel; providing a given client with access to one or more functions that enable direct communication between the given client and another client over a channel, said one or more functions comprising: Channel functions or procedures associated with the channel for the transmission of data; and / or steps including message functions or procedures related to data transmitted using the channel; issuing one or more access tokens for a channel, the one or more access tokens being configured for secure communication with another entity over the channel; storing and / or providing one or more notifications associated with a channel for a given client; 11. A computer-implemented method comprising:

[0310] 20. A computer-implemented method for processing transactions related to a blockchain, the method being implemented by one or more processors associated with a client; Obtaining access from a channel service to one or more functions that enable direct communication between a given client and another entity, said one or more functions comprising: Channel functions or procedures associated with the channel for the transmission of data; and / or steps including message functions or procedures related to data transmitted using the channel; obtaining one or more access tokens from a channel service, said access tokens enabling secure communication with other entities; In response to obtaining or identifying a transaction identifier (TxID) for a given transaction associated with the client, creating a given channel for communication with another entity using one or more channel capabilities received from the channel processor; transmitting one or more access tokens associated with a given channel to another entity; receiving a notification related to a given channel, the notification relating to data in the given channel for verifying that the given transaction is included in the blockchain; 11. A computer-implemented method comprising:

[0311] The above aspects and embodiments illustrate, rather than limit, the present disclosure, and it should be noted that those skilled in the art will be able to design many alternative embodiments without departing from the scope of the present disclosure, as defined by the appended claims. In the claims, any reference signs placed in parentheses shall not be construed as limiting the scope of the claim. The use of terms such as "comprising" and "comprises" does not exclude the presence of elements or steps other than those listed in any claim or the specification as a whole. As used herein, "comprising" means "including or consisting of," and "comprising" means "comprising or consisting of." A reference to an element in the singular does not exclude a reference to a plural of such element, and vice versa. The present disclosure may be implemented by hardware comprising several distinct elements and by a suitably programmed computer. In a device claim enumerating several means, these means may be embodied by one and the same item. The mere fact that certain means are recited in mutually different dependent claims does not indicate that a combination of these means cannot be used to advantage. [Explanation of symbols]

[0312] 100 Platform Processors, Platform Services, Platform 102 Data Services, Service Modules or Processing Resources 104 Computational Services, Service Modules or Processing Resources 106 Commerce Services, Service Modules or Processing Resources 108 API 110 Underlying Software 300 Platform, Platform Services 302 Data services, data writing services 302a Data writer services, data writers 302b Data Reader Service 304 Commerce Services 304a Enterprise Wallet 310 Blockchain 306 Computational Services 306a Application 306b Framework 308 SPV Services 310 Blockchain 2600 Computing Devices 2602 processor, cache memory 2604 Bus Subsystem 2606 Storage Subsystem 2608 main memory 2610 Persistent Storage 2612 User Interface Input Device 2614 User Interface Output Device 2616 Network Interface Subsystem 2618 Dynamic Random Access Memory (DRAM) 2620 Read-Only Memory (ROM)< / d>

Claims

1. A computer-implemented method for performing a channel service for a client, the computer-implemented method being executed by a channel processor, comprising: receiving a request from the client relating to the creation of a channel; providing the client access to one or more functions that enable direct communication between the client and other entities over the channel; the one or more functions include a channel function or procedure associated with the channel for transmission of data and / or a message function or procedure associated with the data transmitted using the channel; issuing one or more access tokens for the channel, the one or more access tokens configured for secure communication with another entity over the channel; storing and / or providing one or more notifications related to the channel to the client; 11. A computer-implemented method comprising:

2. The computer-implemented method of claim 1, wherein the notification received by the client includes data for verifying that a given transaction is included within a blockchain.

3. A computer-implemented method for processing transactions related to a blockchain, the computer-implemented method being executed by one or more processors associated with a client, the method comprising: obtaining access to one or more features from a channel service that enable direct communication between the client and another entity; the one or more functions include a channel function or procedure associated with a channel for transmission of data and / or a message function or procedure associated with the data transmitted using the channel; obtaining one or more access tokens from the channel service, the access tokens enabling secure communication with other entities; In response to obtaining or identifying a transaction identifier (TxID) for a given transaction associated with the client, using the one or more channel capabilities received from the channel processor to create a given channel for communication with another entity; transmitting the one or more access tokens associated with the given channel to the other entity; receiving a notification related to the given channel, the notification related to data provided to verify that the given transaction is included in a blockchain; 11. A computer-implemented method comprising:

4. A computer-implemented method as described in claim 2 or 3, wherein the channel service enables the client to write data to or retrieve data from the blockchain without the client having to implement blockchain processing functionality.

5. A computer-implemented method as described in any one of claims 1 to 4, wherein the channel enables direct communication or peer-to-peer communication between the client and another entity.

6. A computer-implemented method as described in any one of claims 1 to 5, wherein the channel is established for providing client data required for verification or delivering a certificate.

7. A computer-implemented method as described in any one of claims 1 to 6, wherein the access token is a unique authentication credential assigned to the client for each channel or each message within a channel.

8. A computer-implemented method as described in any one of claims 1 to 7, wherein the client provides the access token to the other entity for authentication on each channel.

9. A computer-implemented method as described in any one of claims 1 to 8, wherein the access token includes an API token that serves as a unique identifier for the client or application requesting access to the channel.

10. A computer-implemented method as described in any one of claims 1 to 9, wherein the channel is established between only two entities.

11. A computer-implemented method as claimed in any one of claims 1 to 10, wherein the channel service is provided by a channel processor separate from the client.

12. A computer-implemented method as described in any one of claims 1 to 10, wherein the channel service is integrated with the client.

13. A computing device having a processor and a memory, the memory including executable instructions that, when executed by the processor, cause the computing device to perform a computer-implemented method described in any one of claims 1 to 12.