RELATED APPLICATION

This application was originally filed as Patent Cooperation Treaty Application No. PCT/EP2017/053686 filed Feb. 17, 2017.

A replicated distributed ledger is a ledger that is maintained at multiple sites (nodes), with all nodes operating according to a common consensus algorithm about what changes to make to their respective local record of the ledger.

According to one kind of consensus algorithm known as proof-of-work, each node makes a change to its local record of the ledger when a request to make a change is accompanied by a solution to a mathematical puzzle connected with the requested change. According to another kind of consensus algorithm known as proof-of-stake, each change to the ledger is controlled by a randomly selected one of the group of nodes operating the mutual distributed ledger. Both these consensus algorithms have their drawbacks. The proof-of-work algorithm involves wasting a significant amount of computing power at one or more nodes, as they compete to control a change to the distributed ledger. On the other hand, the proof-of-stake algorithm is susceptible to being dominated by an entity with the resources to control a large portion of the nodes operating the distributed ledger.

Another consensus algorithm involves each node making a change to the ledger when it identifies the change as being supported by a majority of the nodes operating the distributed ledger. There has been identified the problem that a distributed ledger operating according to this kind of consensus algorithm is also susceptible to being dominated by an entity with the resources to generate and control a large number of nodes operating the distributed ledger.

The inventors for the present invention have identified the challenge of providing a new distributed ledger technique, which eliminates or reduces these weaknesses.

There is hereby provided a method, comprising: identifying, at an existing node of a distributed ledger network for operation according to a voting-based consensus algorithm, a new candidate node for the distributed ledger network, wherein said identifying is done based on an existing unique identifier unrelated to the distributed ledger network.

According to one embodiment, the method further comprises: using said unique existing identifier to communicate an invitation to join the distributed ledger network.

According to one embodiment, said existing unique identifier comprises an identifier selected from the group consisting of: an email address, a postal address, a mobile number, a fixed line telephone number, and an official local or national government registration number.

There is hereby also provided a method, comprising: checking, at a new node having joined a distributed ledger network operating according to a voting-based consensus algorithm based on an invitation by an existing node of the distributed ledger network, whether one or more predetermined conditions are met for the new node to invite another node into the distributed ledger network.

According to one embodiment, said checking comprises: checking whether the number of invitations made by a preceding generation of nodes including the existing node that invited the new node to join the network, exceeds a predetermined percentage of the maximum number of invitations available to all nodes in said preceding generation.

According to one embodiment, said checking comprises: checking whether a number of invitations already made by the new node equals a maximum number of invitations available to the new node.

According to one embodiment, operation of the distributed ledger involves each node of the network locally recording a change to the ledger at least partly in response to a determination that a predetermined threshold number of voting nodes have voted to accept said change to the ledger.

According to one embodiment, said voting nodes are nodes for which there is a substantially immutable record of registration as a voting node based directly or indirectly on an invitation by a trusted node.

According to one embodiment, said voting nodes are nodes for which one or more blocks of a blockchain record registration as a voting node based on an invitation by a trusted node.

According to one embodiment, said voting nodes are nodes for which one or more blocks of said blockchain record passing of a test to join said group of nodes after an invitation by a trusted node.

According to one embodiment, said test for a candidate node comprises: recordal in one or more blocks of the blockchain of a network identifier for the candidate node; recordal in one or more later blocks of the blockchain of private questions by existing nodes of the distributed ledger network, wherein each private question can only be successfully answered with knowledge of a private number communicated to the candidate node; recordal in one or more later blocks of the blockchain of private answers to the private questions by the candidate node; and recordal in one or more later blocks of the block chain of said private number, and information by which any existing node of the distributed ledger network can decrypt the private questions by other existing nodes and the private answers thereto, and thereby verify that the private answers to the private questions were correct.

According to one embodiment, a trusted node comprises a genesis node or a node for which said blockchain records a chain of one or more invitations extending back to a genesis node.

According to one embodiment, said voting nodes are nodes for which one or more blocks of a blockchain record registration as a voting node based on an invitation by a trusted node and in accordance with one or more invitation rules.

According to one embodiment, said one or more invitation rules comprise restrictions on the number of invitations that a newly registered node is permitted, and/or the timing of one or more invitations by a newly registered node.

There is also hereby provided an apparatus comprising: a processor and memory including computer program code, wherein the memory and computer program code are configured to, with the processor, cause the apparatus to: identify, at an existing node of a distributed ledger network for operation according to a voting-based consensus algorithm, a new candidate node for the distributed ledger network, based on an existing unique identifier unrelated to the distributed ledger network.

According to one embodiment, the memory and computer program code are further configured to, with the processor, cause the apparatus to use said unique existing identifier to communicate an invitation to join the distributed ledger network.

According to one embodiment, said existing unique identifier comprises an identifier selected from the group consisting of: an email address, a postal address, a mobile number, a fixed line telephone number, and an official local or national government registration number.

There is also hereby provided apparatus comprising: a processor and memory including computer program code, wherein the memory and computer program code are configured to, with the processor, cause the apparatus to: check, at a new node having joined a distributed ledger network operating according to a voting-based consensus algorithm based on an invitation by an existing node of the distributed ledger network, whether one or more predetermined conditions are met for the new node to invite another node into the distributed ledger network.

According to one embodiment, the memory and computer program code are further configured to, with the processor, cause the apparatus to: check whether the number of invitations made by a preceding generation of nodes including the existing node that invited the new node to join the network, exceeds a predetermined percentage of the maximum number of invitations available to all nodes in said preceding generation.

According to one embodiment, the memory and computer program code are further configured to, with the processor, cause the apparatus to: check whether a number of invitations already made by the new node equals a maximum number of invitations available to the new node.

According to one embodiment, operation of the distributed ledger involves each node of the network locally recording a change to the ledger at least partly in response to a determination that a predetermined threshold number of voting nodes have voted to accept said change to the ledger.

According to one embodiment, said voting nodes are nodes for which there is a substantially immutable record of registration as a voting node based directly or indirectly on an invitation by a trusted node.

According to one embodiment, said voting nodes are nodes for which one or more blocks of a blockchain record registration as a voting node based on an invitation by a trusted node.

According to one embodiment, said voting nodes are nodes for which one or more blocks of said blockchain record passing of a test to join said group of nodes after an invitation by a trusted node.

According to one embodiment, said test for a candidate node comprises: recordal in one or more blocks of the blockchain of a network identifier for the candidate node; recordal in one or more later blocks of the blockchain of private questions by existing nodes of the distributed ledger network, wherein each private question can only be successfully answered with knowledge of a private number communicated to the candidate node; recordal in one or more later blocks of the blockchain of private answers to the private questions by the candidate node; and recordal in one or more later blocks of the block chain of said private number, and information by which any existing node of the distributed ledger network can decrypt the private questions by other existing nodes and the private answers thereto, and thereby verify that the private answers to the private questions were correct.

According to one embodiment, a trusted node comprises a genesis node or a node for which said blockchain records a chain of one or more invitations extending back to a genesis node.

According to one embodiment, said voting nodes are nodes for which one or more blocks of a blockchain record registration as a voting node based on an invitation by a trusted node and in accordance with one or more invitation rules.

According to one embodiment, said one or more invitation rules comprise restrictions on the number of invitations that a newly registered node is permitted, and/or the timing of one or more invitations by a newly registered node.

There is also hereby provided an apparatus, comprising: means for identifying, at an existing node of a distributed ledger network for operation according to a voting-based consensus algorithm, a new candidate node for the distributed ledger network, wherein said identifying is done based on an existing unique identifier unrelated to the distributed ledger network.

There is also hereby provided an apparatus, comprising: means for checking, at a new node having joined a distributed ledger network operating according to a voting-based consensus algorithm based on an invitation by an existing node of the distributed ledger network, whether one or more predetermined conditions are met for the new node to invite another node into the distributed ledger network.

There is also hereby provided a computer program product comprising program code means which when loaded into a computer controls the computer to: identify, at an existing node of a distributed ledger network for operation according to a voting-based consensus algorithm, a new candidate node for the distributed ledger network, wherein said identifying is done based on an existing unique identifier unrelated to the distributed ledger network.

There is also hereby provided a computer program product comprising program code means which when loaded into a computer controls the computer to: check, at a new node having joined a distributed ledger network operating according to a voting-based consensus algorithm based on an invitation by an existing node of the distributed ledger network, whether one or more predetermined conditions are met for the new node to invite another node into the distributed ledger network.

