Blockchain-based system and method for publishing an operating system
A method comprising, by a client device: identifying one or more target transactions, recorded on a blockchain, that contain operating system software stored in a payload of the one or more target transactions, the operating system software comprising at least part of an operating system, at least including some executable code of the operating system; accessing the operating system software from the payload of the one or more target transactions as stored on the blockchain; and running, on the client device, the operating system software as accessed from the one or more target transactions, the running comprising executing the executable code of the operating system.
1 . A method comprising, by a client device:
identifying one or more target transactions, recorded on a blockchain, that contain operating system software stored in a payload of the one or more target transactions, the operating system software comprising at least part of an operating system, at least including some executable code of the operating system, wherein a copy of the blockchain is maintained at each of a plurality of blockchain nodes in a blockchain network, and wherein the client device is not one of the blockchain nodes;
by interacting with the blockchain network, accessing the operating system software from the payload of the one or more target transactions as stored on the blockchain; and
running, on the client device, the operating system software as accessed in said accessing from the payload of the one or more target transactions, said running comprising executing the executable code of the operating system;
wherein a tree structure is overlaid on the blockchain, the tree structure comprising a plurality of nodes and edges between nodes, wherein each node is a different transaction recorded on the blockchain, and each edge connects from a respective child node to a respective parent node, the edges being formed by each child node specifying a transaction ID of its respective parent node in a payload of the respective child node, and wherein one of the parent nodes is a root node of the tree structure; and
wherein the one or more target transactions storing said operating system software are child nodes of said tree structure.
2 . The method of claim 1 , wherein said running comprises running said operating system software live from the blockchain by streaming it via random access memory of the client device without installing on the client device.
3 . The method of claim 1 , wherein the accessing and running of said operating system software are performed upon booting the client device.
4 . The method of claim 1 , further comprising, by the client device: sending to be published on the blockchain an acknowledgement that the client device has accessed the operating system software.
5 . The method of claim 1 , further comprising, by the client device: sending to be published on the blockchain an acknowledgement that the client device has run the operating system software.
6 . The method of claim 1 , wherein the tree structure comprises a Metanet tree.
7 . The method of claim 1 , wherein said operating system software comprise a plurality of files in different folders arranged in a hierarchical file-and-folder structure, wherein each of the target transactions stores at least a respective one of the files and one or more parent nodes of the target transactions are tagged so as to represent folders, such that at least part of the tree structure of the nodes follows at least part of the file-and-folder structure of the operating system software.
8 . The method of claim 1 , wherein said identifying comprises, based on the transaction ID of the root node, following paths of the edges from the root node down the tree structure to find leaf nodes, the leaf nodes being child nodes that are not parent nodes of other child nodes, wherein each of the one or more target transactions is a leaf node.
9 . The method of claim 8 , wherein the client device checks that each of the target transactions, and any intermediate parent node on a path between a target transaction and the root node, meets one or more rules of a tree protocol associated with the tree structure; wherein said execution is conditional on the meeting of said one or more rules.
10 . The method of claim 9 , wherein the one or more rules comprises at least: for each child along a path from root node to target transaction, the child is signed by key of the respective parent node.
11 . The method of claim 9 , wherein the one or more rules comprise: that only leaf nodes can form a valid part of the operating system.
12 . The method of claim 11 , further comprising, by the client device: at a subsequent time following said execution, checking for any new leaf node that has been subsequently appended to a respective one of the target transactions, such that the respective target transaction is no longer a leaf; wherein the new leaf nodes represent updates or deletion of the respective target transaction.
13 . The method of claim 12 , wherein one of the respective target transactions comprises an update, the method further comprises the client device running the update.
14 . The method of claim 1 , further comprising, by the client device:
identifying a further transaction on the blockchain, containing a remote command or script recorded in a payload of the further transaction by a remote administrator system remote from the client device; and
carrying out the command or script as accessed from the further transaction.
15 . The method of claim 14 , further comprising, by the client device, sending to be published on the blockchain one or both of:
an acknowledgement that the client device has accessed the command or script, or an acknowledgement that the client device has carried out the command or script.
16 . The method of claim 1 , wherein the client device is connected with one or more other devices in a network, and shares the operating system software with at least one of the other devices via said network.
17 . The method of claim 16 , wherein the network is a mesh network.
18 . The method of claim 16 , wherein not all of the one or more other devices have access to the blockchain.
19 . A client device comprising:
processing apparatus comprising one or more processing units, and
memory comprising one or more memory units;
wherein the memory stores code arranged to run on the processing apparatus, the code being configured so as when run on the processing apparatus, the processing apparatus performs a method comprising:
identifying one or more target transactions, recorded on a blockchain, that contain operating system software stored in a payload of the one or more target transactions, the operating system software comprising at least part of an operating system, at least including some executable code of the operating system, wherein a copy of the blockchain is maintained at each of a plurality of blockchain nodes in a blockchain network, and wherein the client device is not one of the blockchain nodes;
by interacting with the blockchain network, accessing the operating system software from the payload of the one or more target transactions as stored on the blockchain; and
running, on the client device, the operating system software as accessed in said accessing from the payload of the one or more target transactions stored on the blockchain, said running comprising executing the executable code of the operating system;
wherein a tree structure is overlaid on the blockchain, the tree structure comprising a plurality of nodes and edges between nodes, wherein each node is a different transaction recorded on the blockchain, and each edge connects from a respective child node to a respective parent node, the edges being formed by each child node specifying a transaction ID of its respective parent node in a payload of the respective child node, and wherein one of the parent nodes is a root node of the tree structure; and
wherein the one or more target transactions storing said operating system software are child nodes of said tree structure.
20 . A computer program embodied on non-transitory computer-readable storage media, the computer program comprising code configured so as when run on a client device, the client device performs a method comprising:
identifying one or more target transactions, recorded on a blockchain, that contain operating system software stored in a payload of the one or more target transactions, the operating system software comprising at least part of an operating system, at least including some executable code of the operating system;
by interacting with the blockchain, accessing the operating system software from the payload of the one or more target transactions as stored on the blockchain; and
running, on the client device, the operating system software as accessed in said accessing from the payload of the one or more target transactions stored on the blockchain, said running comprising executing the executable code of the operating system;
wherein a tree structure is overlaid on the blockchain, the tree structure comprising a plurality of nodes and edges between nodes, wherein each node is a different transaction recorded on the blockchain, and each edge connects from a respective child node to a respective parent node, the edges being formed by each child node specifying a transaction ID of its respective parent node in a payload of the respective child node, and wherein one of the parent nodes is a root node of the tree structure; and
wherein the one or more target transactions storing said operating system software are child nodes of said tree structure.