跳到主要內容

One interface, multiple chains: which differences must remain visible?

ArcBlock
VerifiabilityBlockchain

An application wants to put records from two blockchains in one table. The work soon extends beyond adding another address: fields differ, queries differ, and transaction submission may follow different steps. Applications repeatedly handle these differences to present what looks like a simple row.

A common access layer can reduce repeated integration work. It must still expose the differences that determine what a record means. An application needs to know which chain a transaction belongs to, whether it was merely submitted, and whether it satisfies that chain's confirmation rules.

ArcBlock's 2019 discussion of weaving chains into a network introduced the direction behind OCAP, the Open Chain Access Protocol: a common way to access data across chains. The later grant US11676139B2 describes adapters, structured data, and transaction signing in more detail. These materials explain where unification happens. They do not establish a current inventory of supported networks and working endpoints.

A shared access point, separate chain handling

An adapter is an integration module that understands a particular chain's rules. An application sends a request in a common format; the service selects an adapter to interact with the relevant network.

The request in claim 1 includes a parameter indicating the blockchain protocol. A chain-agnostic request format still leaves a choice of chain. It separates shared expression from protocol-specific handling.

After obtaining ledger data, the service parses it according to that protocol and stores structured data in a database. Querying prepared data can reduce the need for each application to interpret raw ledgers. It also means the result may come from the service's processed view. Applications need to establish how current that view is and which information survived the processing.

Querying two chains through one interface does not mean the chains exchanged messages. Placing their records together does not mean either chain verified the other.

A shared balance field can hide different spending models

Claim 1 describes two transaction-construction flows. One uses unspent transaction outputs, or UTXOs. The other constructs a transfer from an amount of assets under the requestor's control. Claim 3 further specifies Bitcoin-based and Ethereum-based networks.

Think of UTXOs, provisionally, as separate receipts that have not yet been spent. Constructing a payment involves selecting suitable receipts as inputs and arranging recipient outputs and any change. An account-balance representation instead starts with the amount available in an account. This analogy explains why transaction preparation differs; it does not describe every rule of either chain.

Even if both appear as “available balance” in a user interface, the application cannot infer identical transaction construction, costs, or failure conditions from a shared number. Adapters can handle part of that work. The application still needs to understand conditions affecting the user's operation.

A common field needs a precise definition. Does “confirmed” mean a threshold chosen by the access service or a status supplied by the underlying network? Does it express comparable certainty on another chain? Without answers, matching names merely move the differences out of sight.

Reading, preparing, signing, and broadcasting

The patent goes beyond data retrieval. In claim 1, the service generates an unsigned transaction from processed chain data and sends it to the client. The client signs with the corresponding private key. The service receives the signed transaction and broadcasts it to the relevant network.

That separates preparation from private-key signing. Preparing content does not by itself give the service the user's private key. Keeping signing on the client does not make blind signing safe either.

Suppose a user intends to transfer an asset. The following is an exercise for evaluating this design, not a sequence of calls to a currently available endpoint:

StageWhat to establish
RequestThe intended network, asset, recipient, and amount
Unsigned transactionWhether the encoded recipient, amount, costs, and other details match the request
Client signingWhich account signs and what content the signature covers
BroadcastWhether it went to the intended network and has a tracking identifier
ResultWhether the network accepted and executed it, and which confirmation rule the application applies

A faulty or malicious service could return signing content that does not match the request. The client or wallet should interpret it under the target chain's rules so the user or an established policy can check it before signing. A private key remaining on the client is insufficient evidence that an operation matches the user's intention.

Nor should a successful broadcast immediately become “business operation completed.” A service accepting the transaction, a node seeing it, inclusion in a block, and sufficient certainty for the application are distinct states.

GraphQL does not attest to chain data

GraphQL lets a client describe the fields it wants. The official GraphQL introduction explains a query language and execution mechanism. That can improve data access; using the format does not attach a blockchain authenticity proof to the response.

GraphQL appears in dependent claim 5. It belongs in the context of requests, adapters, structured storage, and the transaction flow. Calling this simply a “GraphQL patent” omits the mechanism that needs explaining.

An application should retain the source network, the block or time reflected by a result, and any known indexing delay. If a service provides independently verifiable proofs, establish what they cover and who checks them. Without independent verification, users should at least understand which data service they rely on.

Imagine two chains returning a “successful” transaction. One record may already satisfy the application's confirmation condition; the other may still be affected by a reorganization, where part of the currently accepted block history is replaced. A shared response format does not eliminate that difference. Finality concerns when history can be treated as no longer changeable under the protocol's conditions. It comes from chain rules, not an interface name.

How to use the abstraction

Start with a specific multi-chain task, such as collecting account activity from several networks. Define the meaning of each displayed field, then decide what adapters handle and what the application must judge. Matching column names should follow that work, not substitute for it.

During integration, choose a known transaction and compare the access service's result with the corresponding network record. Check network identity, asset units, status, and the point in time represented. Then examine what the application reports when indexing falls behind, fields are absent, or a transaction fails. These checks evaluate the selected service, not just the consistency of its interface.

For writes, use test accounts to exercise preparation, inspection, signing, broadcasting, and observation of the outcome. Supported chains, operations, and signing formats depend on the version in use. Historical articles and patent documents explain the design; they should not be used as a present-day API manual.

The OCAP Learning lesson provides a shorter introduction. The publication record links to the grant and related documents.

When unification is not worth the cost

An application working with one chain and many chain-specific operations may be clearer using its native interface. Hiding fields the business needs merely to achieve a common format can increase maintenance work.

Moving assets between chains requires a separate cross-chain mechanism. Reading both networks and submitting transactions to each does not guarantee both operations succeed together. It does not automatically establish asset locking, release, or message verification.

The useful part of the OCAP design is reusable access that keeps the differences affecting correctness visible. A common interface is valuable. The chain's identity, the age of its data, and the actual transaction status still need to be visible when a user makes a decision.

References