Correlating and referencing blockchains

Systems and methods for correlating and referencing blockchains are described herein. An example method may include providing a database configured to store at least one grid. The grid comprises positions referenced by coordinates. The method may include acquiring, by a processor communicatively coupled to the database, a plurality of blockchains. The method may further include mapping, by the processor, the blockchains to the positions within the grid. The method may include acquiring, by the processor, a subset of coordinates ({P}) corresponding to a subset of the positions within the grid and a set of specifications ({S}). The specifications include an instruction for selection of blocks of one or blockchains mapped to on or more position of the subset of the positions. The method may include associating a function F({P}, {S}) with a further position within the grid, wherein the function F ({P}, {S}) operates on contents of the selected blocks.

TECHNICAL FIELD

The present disclosure relates generally to data processing and, more particularly, to system and method for correlating and referencing blockchains.

BACKGROUND

Blockchain technology are now widely used to track financial transactions. The blockchain technology can be also utilized to track information in other fields, such as outcomes of medical procedures, official registration records, storehouse records, and so forth. As the blockchain technology continues to develop, there is a need to collect and utilize information from different blockchains.

SUMMARY

Provided are computer-implemented systems and methods for correlating and referencing blockchains. Some embodiments of the present disclosure provide systems and methods for referencing a set of blocks from one of the plurality of blockchains in other blockchains of the plurality of blockchains.

According to one example embodiments, a system for correlating and referencing blockchains may include a database configured to store at least one grid. The grid may include positions referenced by coordinates. The system may further include a processor communicatively coupled to the database. The processor can be configured to acquire a plurality of blockchains. The processor may further map the blockchains to the positions within the grid. The processor may further acquire a subset of coordinates ({P}) corresponding to a subset of the positions within the at least one grid and a set of specifications ({S}). The specifications {S} may include one or more instructions for selection of one or more blocks of one or more blockchains of the plurality of blockchains to obtain selected blocks, wherein the one or more blockchains are mapped to one or more positions of the subset of the positions. The processor may further associate a function F({P}, {S}) with a further position within the grid, wherein the further position is outside the subset of the positions. The function F ({P}, {S}) operates on contents of the selected blocks.

The blockchains can be associated with blockchain addresses. The blockchain addresses can be immutable. The mapping of the blockchains to the positions may include mapping blockchain addresses to the positions within the grid. The coordinates of the positions within the grid can be mutable. The coordinates {P} can be relative coordinates with respect to coordinates of the further position. The further position can be mapped to a further blockchain of the plurality of blockchains.

The instructions for selection may include selecting a first block of one or more blockchains or selecting a last block of one or more blockchains. The instructions for selection may also include selecting all blocks of one or more blockchains starting with a block having a specified blockchain address and/or a specified block number.

The processor can be further configured to generate a grid blockchain. The grid blockchain may include one or more further blocks. The content of the further blocks may include versions of the grid. Each version of the grid can differ from a previous version of the grid by a change caused due to the mapping of a new blockchain to a new position in the grid or assigning a new function F({P},{S}} to the new position in the grid.

According to another embodiment, a method for correlating and referencing blockchains may include providing a database configured to store at least one grid. The grid may include positions referenced by coordinates. The method may include acquiring, by a processor communicatively coupled to the database, a plurality of blockchains. The method may also include mapping, by the processor, the blockchains to the positions within the grid. The method may further include acquiring, by the processor, a subset of coordinates ({P}) corresponding to a subset of the positions within the grid and a set of specifications ({S}). The specifications {S} may include one or more instructions for selection of one or more blocks of one or more blockchains of the plurality of blockchains to obtain selected blocks, wherein the one or more blockchains are mapped to one or more positions of the subset of the positions. The method may further include associating, by the processor, a function F({P}, {S}) with a further position within the grid, wherein the further position is located outside the subset of the positions. The function F ({P}, {S}) operates on contents of the selected blocks.

Additional objects, advantages, and novel features will be set forth in part in the detailed description section of this disclosure, which follows, and in part will become apparent to those skilled in the art upon examination of this specification and the accompanying drawings or may be learned by production or operation of the example embodiments. The objects and advantages of the concepts may be realized and attained by means of the methodologies, instrumentalities, and combinations particularly pointed out in the appended claims.

DETAILED DESCRIPTION

The present disclosure provides methods and systems for correlating and referencing blockchains of a plurality of blockchains. Embodiments of the present disclosure may allow to reference a set of blocks from a first blockchain of the plurality of blockchains in a second blockchain of the plurality of blockchains. The references to the set of blocks can be used to build functions that operate on the content of blocks in the set of blocks. For example, the references to the set of blocks of blockchains can be used in smart contracts to verify a financial agreement or to perform credible transactions.

Some embodiments of the present disclosure may provide a system for placing the blockchains positionally with respect to each other in a grid. Each blockchain can be assigned a position in the grid, wherein the position is referenced with coordinates. The coordinates of the positions of the blockchains in the grid can be used to refer to the blockchains, locate a first blockchain with respect to a second blockchain, and specify a selection of one or more blocks from a blockchain. The selection can be used to construct a specification for a function operating on contents of selected blocks of the blockchain.

Placement of blockchains in the grid may also allow to aggregate and disaggregate content across a set of blockchains, perform analytics across content of a set of blockchains, perform what-if analysis across a set of blockchains, obtain values of content of different blockchains, and track parallel evolution of blockchains.

Technical effects of certain embodiments of the present disclosure may include reducing or avoiding copying and duplication of data when blockchains are evolved since specification language of functions allows operating on references to the blockchains. Once the blockchains are evolved, the specification language of the functions does not need to be changed. Embodiments of the present disclosure may allow referencing a block of a blockchain directly instead of extracting the content of the block. Embodiments of the present disclosure may provide a method of linking to blockchain addresses and embedding data of blockchains.

FIG. 1is a block diagram showing an example environment100, wherein a method for correlating and referencing blockchains can be implemented. The example environment100can include a system for correlating and referencing blockchains110and one or more blockchain networks120. The system110may include a computing system as described inFIG. 2orFIG. 8. For example, the system110may include a personal computer (PC), a laptop, a smartphone, a tablet PC, a television set, a smartphone, an Internet phone, a netbook, a network appliance, a server, or a computing cloud shared by multiple users, and so forth.

The blockchain networks120may include a network of computing systems. The blockchain networks120can be configured to generate one or more blockchains130. Each of the blockchains130may include blocks. Each block may keep a portion of information for which the blockchain is configured in order to track changes. For example, blocks of a blockchain may store financial transactions. Blocks of another blockchain may store purchase transaction. Blocks of yet another blockchain may store prices of products and components. Once completed, a block of a blockchain can be kept in the blockchain permanently. New blocks can be generated as needed. The number of the blocks in a blockchain is unlimited. The blocks in the blockchain can be connected to each other in a chronological order. Each block can contain a hash of the previous block. The blocks of the blockchain can be assigned blockchain addresses. The blockchain addresses and content of the blocks can be immutable and cannot be deleted or modified once blocks are completed.

The system110may be connected to the blockchain networks120via a data network. The data network may include a computing cloud, the Internet, or any other network capable of communicating data between devices. Suitable networks may include or interface with any one or more of, for instance, a local intranet, a corporate data network, a data center network, a home data network, a Personal Area Network, a Local Area Network (LAN), a Wide Area Network (WAN), a Metropolitan Area Network, a virtual private network, a storage area network, a frame relay connection, an Advanced Intelligent Network connection, a synchronous optical network connection, a digital T1, T3, E1 or E3 line, Digital Data Service connection, Digital Subscriber Line connection, an Ethernet connection, an Integrated Services Digital Network line, a dial-up port such as a V.90, V.34 or V.34bis analog modem connection, a cable modem, an Asynchronous Transfer Mode connection, or a Fiber Distributed Data Interface or Copper Distributed Data Interface connection. Furthermore, communications may also include links to any of a variety of wireless networks, including Wireless Application Protocol, General Packet Radio Service, Global System for Mobile Communication, Code Division Multiple Access or Time Division Multiple Access, cellular phone networks, Global Positioning System, cellular digital packet data, Research in Motion, Limited duplex paging network, Bluetooth radio, or an IEEE 802.11-based radio frequency network. The data network can further include or interface with any one or more of a Recommended Standard 232 (RS-232) serial connection, an IEEE-1394 (FireWire) connection, a Fiber Channel connection, an IrDA (infrared) port, a Small Computer Systems Interface connection, a Universal Serial Bus (USB) connection or other wired or wireless, digital or analog interface or connection, mesh or Digi® networking.

FIG. 2is a block diagram showing an example system110for correlating and referencing blockchains, according to some example embodiments. The example system110may include a processor210in communication with a database220. The database220may be configured to store one or more grids230. The grids230may include one or more positions referenced by coordinates. The processor210may be configured to acquire one or more blockchains130. The processor210may further map the blockchains130to positions within one or more grids230. The processor210may further be configured to provide access to the contents of the blockchain130via coordinates of the positions within the grids230, to which the blockchains130are mapped.

FIG. 3is a block diagram showing an example scheme300for referencing blockchains using a grid, according to an example embodiment. The example scheme300includes a first blockchain310, a second blockchain320, and a grid330. The first blockchain310may include block A1, block A2, . . . , block An, and so forth. Each block may have a blockchain address and content. The blockchain310can be associated with an immutable address (Blockchain Address1) when the first block A1is generated. The Blockchain Address1can be valid across the whole blockchain310as the chain of the blocks A1, A2, . . . , An, . . . evolves. Similarly, the second blockchain320may include block B1, block B2, . . . , block Bn, and so forth, wherein the first block B1has address Blockchain Address2valid across the whole blockchain320.

The blocks of the blockchains310and320may store correlated data. For example, the blocks of the blockchain310may include information concerning purchase orders of components, and the blocks of the blockchain320may include information concerning prices of the components. In another example, the blocks of the blockchain310may include information on outcomes of medical procedures and the blocks of the blockchain320may include information on hospital expenses for the medical procedures.

The grid330may include positions P1, P2, P3, and so forth. The positions can be referenced to each other by coordinates (1,1), (1,2), (2,2), and so forth. The blockchains310and320can be mapped, by the processor210, to the positions within the grid330. For example, the blockchain310can be mapped to position P1and the blockchain320can be mapped to position P2. Since the block addresses in blockchains310and320are immutable, mapping the blockchain310can be carried out by mapping blockchain address of a first block A1of the blockchain310(Blockchain Address1) to the position P1. Similarly, mapping the blockchain320can be carried out by mapping blockchain address of a first block B1of the blockchain320(Blockchain Address2) to the position P2.

Once the blockchains310and320are mapped to the positions within the grid330, the contents and addressed of the blockchains can be accessed using the coordinates of the positions. In example ofFIG. 3, a function F(P1,P2) can be written to the position P3of the grid. The function F(P1,P2) can be configured to operate on content of a blockchain mapped to the position P1(which is blockchain310) and content of a blockchain mapped to the position P2(which is blockchain320). For example, function F(P1,P2)=F(P1)+F(P2) may imply that content of blocks of the blockchain at position P1(blockchain310) needs to be added to contents of blocks of the blockchain at position P2(blockchain320). The result of the function F(P1,P2) can be a third blockchain, wherein the blocks represent sums of the blocks of the blockchain310and the blockchain320. The third blockchain may start with a block having Blockchain Address3. The third blockchain can be mapped to the position P3.

The positions of blockchains in the grid330can be specified by coordinates relative to a selected position. For example, the coordinate of position P2can be referred to as P1+1, which is the next position to the position P1in the grid. According to another example, P2can be specified by an offset (0,1) from P1.

FIG. 4is a block diagram showing grids410and420for referencing the same plurality of blockchains, according to an example embodiment. As shown inFIG. 4, at the same time blockchain310and320can be mapped to at least two different grids410and420in the database220. In the grid410, the blockchain310is mapped to the position P1and the blockchain320is mapped to the position P2. In the grid420, the blockchain310is mapped to the position P2and the blockchain320is mapped to the position P1.

While the blockchain addresses of the blocks in the blockchains are immutable, the positions of the blockchain addresses in a grid, and thus positions of the blockchains in the grid, can be mutable. For example, the positions of the blockchain addresses in a grid, and thus positions of the blockchains in the grid, can be shifted when a new blockchain address is mapped to a position in the grid.

FIG. 5is a block diagram showing grids510and520for referencing blockchains, according to an example embodiment. In the grid510, the Blockchain Address1is mapped to the position P1=(1,1), the Blockchain Address2is mapped to the position P2=(1,2), and the Blockchain Address3is mapped to the position P3=(2,2). In the grid520, a new Blockchain Address N is mapped to the position P1=(1,1). The positions of Blockchain Address1, Blockchain Address2, and Blockchain Address3are shifted to the positions P4=(2,1), P3=(2,2), and P5=(3,2). Thus, while blockchain addresses are immutable, the positions corresponding to the blockchain addresses in the grid and the coordinates of the positions can be mutable.

FIG. 6is a block diagram showing a grid600for referencing blockchains, according to an example embodiment. In the grid600, the blockchain310with Blockchain Address1is mapped to a position P1and the blockchain320with Blockchain Address2is mapped to a position P2. The coordinates of the positions P1and P2within the grid600can be used to reference content of the blockchains310and320. For example, a position P3may be associated with a function F(P1,S1,P2,S2, . . . ), wherein P1and P2specifies the coordinates of the position P1and P2and S1and S2are specifications. The specification S1may include instructions for selection of blocks of the blockchain mapped to the position P1(blockchain310) and the specification S2may include instruction for selection of blocks of the blockchain mapped to the position P2(blockchain320). After the blocks are selected, the function F may operate on content, blockchain addresses, and/or numbers of the selected blocks of the blockchains.

According to various embodiments of the present disclosure, the processor210may be configured to evaluate the following functions:1. F1(Block)=BlockchainAddress. The function F1returns an address of a specific block.2. F2(BlockchainAddress)=<Block Chain>. The function F2returns an entire chain of blocks starting with a BlockchainAddress.3. F3(BlockchainAddress, S)=one or more Blocks of the blockchain. F3is a selector function, wherein the parameter S is a specification language (a specification) that allows selection of one or more blocks specified by an address or a number of blocks in blockchain, wherein the first block has address BlockchainAddress.

The function may operate on the grid600using positional coordinates of positions P1, P2, P3, and so forth. The coordinate of position can be specified as offsets from a selected position within the grid600.

In general, a mathematical functions F({P},{S}) may operate on the content of the blocks of blockchains mapped to a set of positions {P} in the grid, wherein the blocks are selected based on a set of specifications {S}. It should be noted that function F((P1,S), (P2,S)) can be automatically applied to selected blocks in blockchain310and blockchain320can be mapped to positions P1and P2as new blocks are being added to the blockchains310and320. P1applies to all selected blocks of the blockchain310and P2applies to all selected blocks of blockchain320.

FIG. 7is a block diagram showing a chain700of grids, according to an example embodiment. The chain700shows an example evolution of a grid710as a change of structure of the grid710occurs. The change to the structure of the grid710may include, for example, moving positions of blockchain addresses within the grid710or adding a new function to a new position in the grid710, wherein the new function operates on content one or more blockchains positioned within the grid710. The processor210can be configured to store chronological versions of the grid710in a form of a grid blockchain. Content or payloads of blocks of the grid blockchain may include structures of grid710after each change to the structure. Each block of the grid blockchain can be assigned a grid address (Grid Address1, Grid Address2, . . . ). Once generated, the blocks and grid addresses of the grid blockchain can be kept immutable in the database220.

FIG. 8is a flow chart showing an example method for correlating and referencing blockchains, according to an example embodiment. In some embodiments, the operations may be combined, performed in parallel, or performed in a different order. The method800may also include additional or fewer operations than those illustrated. The method800may be performed by processing logic that may comprise hardware (e.g., decision making logic, dedicated logic, programmable logic, and microcode), software (such as software run on a general-purpose computer system or a dedicated machine), or a combination of both.

The method800may commence in block802with providing a database configured to store at least one grid. The grid may include positions. The positions can be referenced by coordinates. In block804, the method800may proceed with acquiring, by a processor communicatively coupled to the database, a plurality of blockchains. Each of the blockchains may include immutable blocks associated with immutable blockchain addresses. In block806, the method800may map, by the processor, the blockchains to the positions within the grid. The mapping of a blockchains to a position may include mapping the blockchain address of the blockchain to the position. The position of the blockchain within the grid can be mutable.

In block808, the method800may include acquiring, by the processor, a subset of coordinates ({P}) corresponding to a subset of the positions within the grid and a set of specifications ({S}). At least one specification of the {S} may include one or more instructions for selection of one or more blocks of one or more blockchains of the plurality of blockchains to obtain selected blocks, wherein the one or more blockchains are mapped to one or more positions of the subset of the positions

In block810, the method800may include associating, by the processor, a function F({P}, {S}) with a further position within the grid. The further position is outside the subset of the positions. The function F ({P}, {S}) operates on contents of the selected blocks.

FIG. 9illustrates an example computing system900that may be used to implement embodiments described herein. The example computing system900ofFIG. 9may include one or more processors910and memory920. Memory920may store, in part, instructions and data for execution by the one or more processors910. Memory920can store the executable code when the exemplary computing system900is in operation. The example computing system900ofFIG. 9may further include a mass storage930, portable storage940, one or more output devices950, one or more input devices960, a network interface970, and one or more peripheral devices980.

The components shown inFIG. 9are depicted as being connected via a single bus990. The components may be connected through one or more data transport means. The one or more processors910and memory920may be connected via a local microprocessor bus, and the mass storage930, one or more peripheral devices980, portable storage940, and network interface970may be connected via one or more input/output buses.

Mass storage930, which may be implemented with a magnetic disk drive or an optical disk drive, is a non-volatile storage device for storing data and instructions for use by a magnetic disk or an optical disk drive, which in turn may be used by one or more processors910. Mass storage930can store the system software for implementing embodiments described herein for purposes of loading that software into memory920.

Portable storage940may operate in conjunction with a portable non-volatile storage medium, such as a compact disk (CD) or digital video disc (DVD), to input and output data and code to and from the computing system900ofFIG. 9. The system software for implementing embodiments described herein may be stored on such a portable medium and input to the computing system900via the portable storage940.

One or more input devices960provide a portion of a user interface. The one or more input devices960may include an alphanumeric keypad, such as a keyboard, for inputting alphanumeric and other information, or a pointing device, such as a mouse, a trackball, a stylus, or cursor direction keys. Additionally, the computing system900as shown inFIG. 9includes one or more output devices950. Suitable one or more output devices950include speakers, printers, network interfaces, and monitors.

Network interface970can be utilized to communicate with external devices, external computing devices, servers, and networked systems via one or more communications networks such as one or more wired, wireless, or optical networks including, for example, the Internet, intranet, LAN, WAN, cellular phone networks (e.g., Global System for Mobile communications network, packet switching communications network, circuit switching communications network), Bluetooth radio, and an IEEE 802.11-based radio frequency network, among others. Network interface970may be a network interface card, such as an Ethernet card, optical transceiver, radio frequency transceiver, or any other type of device that can send and receive information. Other examples of such network interfaces may include Bluetooth®, 3G, 4G, and WiFi® radios in mobile computing devices as well as a USB.

One or more peripheral devices980may include any type of computer support device to add additional functionality to the computing system. The one or more peripheral devices980may include a modem or a router.

The components contained in the exemplary computing system900ofFIG. 9are those typically found in computing systems that may be suitable for use with embodiments described herein and are intended to represent a broad category of such computer components that are well known in the art. Thus, the exemplary computing system900ofFIG. 9can be a personal computer, hand held computing device, telephone, mobile computing device, workstation, server, minicomputer, mainframe computer, or any other computing device. The computer can also include different bus configurations, networked platforms, multi-processor platforms, and so forth. Various operating systems (OS) can be used including UNIX, Linux, Windows, Macintosh OS, Palm OS, and other suitable operating systems.

Thus, systems and methods for correlating and referencing blockchains are described. Although embodiments have been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes can be made to these exemplary embodiments without departing from the broader spirit and scope of the present application. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.