The present invention generally relates to blockchain technology. Specifically, this invention relates to adapting blockchain technology for the storage of voting data in an electronic voting system. The system includes a distributed network of voting machines in communication with each other. Each voting machine has a barcode scanner, a network communications device and a computer system running a voting client. Votes are received through the barcode scanner or a voter interface system and stored securely on a blockchain. The tally for various candidates in the election is updated and stored as each vote is received and counted. This creates an audible trail of votes and the tally which can be used to detect, correct, and prevent fraud and error in the vote counting process.
- A voting system comprising:
- one or more voting machines connected to each other by network connections to form a distributed network;
- wherein each of said one or more voting machines comprises:
- a computer processor;
- a non-volatile computer-readable memory;
- a scanner configured to read data from barcodes and/or voting ballots; and a network interface;
- wherein the non-volatile computer-readable memory is configured with computer instructions configured to:
- receive a private key and public key pair from a voter, receive voting data comprising one or more votes for one or more candidates in an election,
- use said private key to digitally sign said voting data to produce signed voting data,
- broadcast said signed voting data with said public key to a distributed network, and
- store said signed voting data with said public key on a blockchain database managed by the one or more voting machines forming said distributed network.
- The system of claim 1 wherein said computer instructions are further configured to:
- store voting data with said public key in a voting block on a voting blockchain;
- update a voting count according to said voting data; and
- store said voting count in a counting block on a counting blockchain, wherein each counting block also stores a hash of the voting block storing the voting data which was used to update the voting count, the result of which is stored in the counting block.
- The system of claim 1 wherein said computer instructions are futher configured to: store, in a voter block which is a fork block of a slidechain, voter data identifying the voter and elections in which said voter is allowed to cast votes,
- store voting data from said voter in a voting block which is a slidechain root block storing a voter hash of said voter block,
- wherein said voter block also stores a voting hash computed from data in said voting block, and
- accept the longest chain on said slidechain as a valid chain and accept as valid a chain where any voter block stores a voting hash of a voting block which, in turn, stores a voter hash of said any voter block.
- The system of claim 3 wherein said computer instructions are futher configured to:
- update a voting count according to said voting data;
- store said voting count in a counting block on a counting chain which is a fork chain of said slidechain, and
- wherein each counting block in said counting chain also stores a hash of an immediately preceding counting block.
- The sytem of claim 1 wherein said computer instructions are futher configured to:
- store, in a voter block which is a fork block of a slidechain, voter data identifying the voter and elections in which said voter is allowed to cast votes,
- create a slidechain root block storing a voter hash of said voter block,
- store, in said voter block, a root hash computed from data in said root block,
- store said voting data in a voting block
- store said root hash in said voting block, and
- accept the longest chain on said slidechain as a valid chain and accept, as valid, a chain where any voter block stores a root hash of a root block which, in turn, stores a voter hash of said any voter block.
- The system of claim 6 wherein said computer instructions are futher configured to:
- update a voting count according to said voting data; store said voting count in a counting block on a counting chain which is a fork chain of said slidechain, and
- wherein each counting block in said counting chain also stores a hash of an immediately preceding counting block.
- A method of securing voting data comprising the steps of:
- receiving voting data produced by a voter;
- receiving a private key and public key corresponding to said voter;
- signing the voting data with said private key to produce signed voting data;
- storing the signed voting data in a voting block on a voting blockchain;
- updating a voting count based on said voting data; and
- storing said voting count in counting block of a counting blockchain, wherein the counting block a has of an immediately preceding block in the counting blockchain and stores a voting hash of the voting block containing the voting data used to update the voting count stored in the counting block.
-
Blockchain Technologies Corp
Explore more patents:
-
H04L2209/38
Explore more patents:
-
H04L2209/463
Explore more patents:
-
H04L9/3239
Explore more patents:
-
H04L9/3247
Explore more patents:
Document Preview
- Publication: Feb 11, 2016
-
Application:
Aug 6, 2015
US 2015/0044109 W
-
Priority:
Jul 24, 2015
US 201514809062 A
-
Priority:
Jun 27, 2015
US 201562185613 P
-
Priority:
Jun 3, 2015
US 201562170131 P
-
Priority:
Feb 4, 2015
US 201562112130 P
-
Priority:
Dec 11, 2014
US 201462090370 P