This present disclosure relates to blockchain technology, including the architecture of a blockchain database and proof-of-work system and function, and more specifically to blockchain architectures that implement human-solved puzzles as proof-of-work.
According to an aspect of the present disclosure, a method includes identifying a set of computing-resistant puzzles and receiving human-input proposed solutions to at least a subset of the puzzles. The method further includes confirming the validity of the human-input proposed solutions and producing a proof-of-work based on at least a threshold quantity of validated human-input proposed solutions. In addition, a new block, which includes the produced proof-of-work, is added to a blockchain database.
Other features and advantages will be apparent to persons of ordinary skill in the art from the following detailed description and the accompanying drawings.
One skilled in the art appreciates that aspects of the present disclosure may be illustrated and described as pertaining to several patentable classes or contexts, including any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof. Accordingly, aspects of the present disclosure may be implemented entirely in hardware, entirely in software (including firmware, resident software, micro-code, etc.) or in a combined software and hardware implementation that may all generally be referred to herein as a “circuit,” “module,” “component,” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable media having computer readable program code embodied thereon.
The aspects of the present disclosure may use one or more computer readable media. The computer readable media may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would comprise the following: a portable computer diskette, a hard disk, a random access memory (“RAM”), a read-only memory (“ROM”), an erasable programmable read-only memory (“EPROM” or Flash memory), an appropriate optical fiber with a repeater, a portable compact disc read-only memory (“CD-ROM”), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium able to contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take a variety of forms comprising, but not limited to, electro-magnetic, optical, or a suitable combination thereof. A computer readable signal medium may be a computer readable medium that is not a computer readable storage medium and that is able to communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable signal medium may be transmitted using an appropriate medium, comprising but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present disclosure may be written in a combination of one or more programming languages, comprising an object oriented programming language such as JAVA®, SCALA®, SMALLTALK®, EIFFEL®, JADE®, EMERALD®, C++, C#, VB.NET, PYTHON® or the like, conventional procedural programming languages, such as the “C” programming language, VISUAL BASIC®, FORTRAN® 2003, Perl, COBOL 2002, PHP, ABAP®, dynamic programming languages such as PYTHON®, RUBY® and Groovy, or other programming languages. Unless specifically indicated otherwise, the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (“LAN”) or a wide area network (“WAN”), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) or in a cloud computing environment or offered as a service such as a Software as a Service (“SaaS”).
This disclosure includes flowchart illustrations and/or block diagrams of methods, apparatuses (e.g., systems or computers), and computer program products according to embodiments of the disclosure to reference aspects of the present disclosure. Each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable instruction execution apparatus, create a mechanism for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks, or otherwise described herein.
These computer program instructions may also be stored in a computer readable medium that, when executed, may direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions, when stored in the computer readable medium, produce an article of manufacture comprising instructions which, when executed, cause a computer to implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable instruction execution apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatuses, or other devices to produce a computer implemented process, such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
While embodiments of the present disclosure may be described with respect to financial transactions or cryptographic currencies, or other industry, one of ordinary skill in the art appreciates that the embodiments disclosed herein are useful in other industry, context, and application. Specifically, the methods, computers, and systems described herein are not limited to application in the context of blockchain-based cryptographic currencies, and one of skill in the art will appreciate that many embodiments fall within the scope of the present disclosure.
Blockchain technology refers generally to a technique for storing information. In other words, a blockchain is a type of database. Rather than storing the database in a single central location, blockchain refers distributed databases, which may be maintained and managed by peer-to-peer networks comprised of many nodes, wherein the nodes maintain the blockchain according to an agreed protocol. Blockchain technology is not limited to peer-to-peer networks, and several applications to private networks are emerging.
A network 105 of distributed nodes is illustrated in
A blockchain database, such as that illustrated in
Blockchains may be used to store or record varying types of data. Blockchain technology can be used to store and record a ledger of transactions, contractual obligations, sensitive data, time-based data, file systems, decentralized cloud file storage, for example. Storing data in the blockchain itself is one solution, however, an alternative is to store representations of the data in the blockchain and use the blockchain to test the veracity and integrity of data stored elsewhere. In this way, the blockchain may store immutable fingerprints of data, rather than the actual data. The blockchain may include a genesis block, such as genesis block 205 illustrated in
Blocks may be data structures. In some embodiments, a block comprises an n-tuple set of data values. As illustrated in
Blockchain pundits often describe blockchain databases as being immutable. Immutability refers to an unchanging or tamper-resistant property, which in the context of blockchains means that blockchain data is difficult to tamper with or modify once added to the blockchain. As illustrated in
To illustrate the tamper-resistant properties of blockchain databases, consider the following example. The block data of block 240 records or memorializes a transaction in which user C transferred three coins to user B. Suppose however that user C wanted some of those coins back, and tried to modify block 240 so that only 1 coin, or no coins, were transferred to user B. Perhaps user C would like to “double spend” some of those coins. User C could modify block 240, as illustrated by the strikethrough in
In a properly implemented blockchain however, User C's attempt should fail because the blockchain security mechanisms would detect block 240 had been tampered with. After modifying the contents of block 240, block 240's hash value would fail validation. By including the hash value of the block in each block, blocks can be verified and tampering easily detected by applying the cryptographic hashing algorithm to the block to obtain the block's hash value and comparing the determined hash value with the hash value recorded as part of the block. Cryptographic hash functions take an input and return a fixed size value or string. The output value form the hash function may be referred to as a hash value, message digest, digital fingerprint, digest, or checksum. Cryptographic hash functions preferably make it easy to calculate a hash value for any data input, make it computationally difficult to calculate the data input given the hash, and make it extremely unlikely that two nearly-identical but slightly different inputs have the same hash. Thus, if the transactions in the block are tampered with after creation and setting the hash value, the hash value of the tampered block will not be the same as the original block, and a discrepancy will exist between the block's hash value and its recorded hash value. This discrepancy may result in nodes rejecting the chain containing the fraudulent block 240. In an effort to fool the blockchain protocol, user C may recalculate and reset block 240's hash value to match the hash value of the tampered block, as illustrated with strikethrough in block 240 of
Thus, to effectively tamper with the blocks in a blockchain, each block following the tampered block must be rebuilt and rehashed, and the contents of the previous-block-hashes replaced with the new hash values to, in effect, build a new chain. More specifically, as
It follows then, that in order to effectively tamper with the blockchain, the malicious user, in the present example user C, must rebuild the blockchain on top of the tampered block to a length where the chain including the tampered block is the longest chain. In other words, referring now to
One of skill in the art would appreciate that computing hash values to rehash and rebuild the blocks, while computationally intensive in and of itself, is not computationally difficult or resource intensive enough to prevent attacks given today's computing machines. Thus, a proof-of-work system is central to many blockchain architectures. Proof-of-work systems make it difficult to create valid blocks and thus more difficult to recreate and rebuild blocks by requiring significant amounts of work be spent and expended to create a block. Proof-of-work may refer to a system or function, i.e., a protocol, for producing a proof-of-work. A proof-of-work may describe the piece of data that is difficult, costly, and/or time consuming to produce or discover, but easy for others to verify. Proof-of-work protects the integrity of the blockchain database by requiring, for example, expenditure and investment of computational power and energy to achieve consensus across the distributed blockchain database. Proof-of-work systems are economic deterrents to denial-of-service (DoS) or distributed-denial-of-service attacks (DDoS) by requiring work and expenditure of some limited resource. The theory is that requiring a certain amount of resources to access a resource, for example to modify the blockchain by creating or rebuilding blocks, deters against fraudsters from overloading and effectively hijacking the blockchain by creating fraudulent blocks faster than honest users create authentic blocks.
Typically, the proof-of-work puzzles are asymmetric in that they are difficult to find a solution or solve, but easy to verify the solution once it has been found. Bitcoin, a cryptocurrency based on blockchain technology, uses a proof-of-work technique that consumes computational power and energy to solve cryptographic puzzles at varying degrees of difficulty. The general premise behind proof-of-work is making it so difficult to generate a valid block that it makes it computationally impracticable to gather enough computational resources to outrun or out-mine the honest users of the blockchain. In the Bitcoin system, the proof-of-work function imposing a target hash problem or puzzle makes it computationally difficult to build a valid block. To summarize this proof-of-work system or protocol, Bitcoin requires miner nodes to solve cryptographic hashing puzzles that require finding a nonce or “salt” value that, when hashed with the remainder of the block, results in a hash value of a certain size (i.e., a specified number of leading zeros). The smaller the target hash value, i.e., the more leading zeros, the more difficult the cryptographic hashing puzzle. The computational work required to solve the puzzle is processing power to compute and test hashes using different nonce values until the node, or a different node, finds a solution and adds a valid block to the blockchain. Therefore, the proof-of-work required in the Bitcoin system requires not only calculating a block's hash value, but making sure the calculated hash is below a certain number. The node must repeatedly adjust the nonce value and rehash the block until the node calculates a hash value that is less than the target number. It may take thousands of iterations to find a salt value giving a valid target hash for a given block.
Continuing with the example above with user C overtaking the blockchain by creating blocks faster than the honest miners on the network, consider if the example blockchain used the Bitcoin proof-of-work function. Therefore, not only would user C need to recalculate the block's hash and create a longer chain, user C needs to expend a large amount of computational power and consume a large amount of energy to generate a valid hash that meets the target hash criteria for each block that must be rebuilt. Thus, the further back in the chain the tampered or fraudulent block, the more computational power and energy is required, and the less likely it is the block could be effectively tampered with. Thus, using proof-of-work functions in the blockchain architecture requires the proof-of-work for the entire chain be redone in order to tamper with the chain and rewrite the history of transactions.
The computational power and energy consumption required to solve complex cryptographic hashing puzzles as proof-of-work is expensive. It may also be wasteful, in that all the energy consumed by miners who do not find a solution to the puzzle is put to no use. In addition, in the Bitcoin system, only the miner who found the solution receives the Bitcoin reward, which is intended to compensate the miner for the computational power and energy consumed in solving the puzzle. Moreover, Bitcoin's proof-of-work protocol inevitably will require more energy as the network grows and processing power increases. In the Bitcoin blockchain architecture, the difficulty of the cryptographic hashing puzzles fluctuates, and adjusts depending on how fast blocks are being created. The Bitcoin proof-of-work system is designed such that the difficulty of the hashing puzzles should be adjusted so that salt values are found and valid blocks are added to the blockchain at a rate of one block roughly every ten minutes. If a malicious user or group of users collude to pull together enough resources to generate blocks faster than on block every ten minutes, thereby gaining on the honest miners and making it inevitable to outrun the honest users in finding new blocks, bitcoin will automatically adjust by making the puzzles harder to keep the rate of producing a new block at the target time of ten minutes. Increasingly, as computational power is added to the Bitcoin system, the Bitcoin blockchain architecture consumes more energy. Thus, the Bitcoin blockchain architecture not only is built upon and leverages immense power consumption, it requires it as proof-of-work to economically deter corruption or fraudulent manipulation of the blockchain. Accordingly, blockchain architectures which do not consume vast amounts of real energy are important to sustaining the blockchain technology.
The present disclosure provides a method and system that improves blockchain database technology by reducing the energy consumed by the blockchain architecture and validation mechanisms without reducing the complexity and security of the blockchain proof-of-work. The methods and systems described herein disclose a blockchain architecture that uses human effort, rather than computational power and energy consumption, to solve puzzles as the proof-of-work system or function for the blockchain architecture. The methods and systems within the scope of the present disclosure improve blockchain architecture by describing a proof-of-work that is more efficient, less wasteful, and consumes less energy.
The disclosure that follows references algebraic expressions from time to time as representations of an exemplary implementation of the blockchain architecture within the scope of the present disclosure. For reference,
The embodiments described herein may involve a network of participants to a blockchain. The participants may be referred to as nodes, and nodes may serve different purposes or specialized purposes on the blockchain network. Some nodes find blocks, write blocks, solve puzzles, and serve the proof-of-work function in the blockchain architecture. Other nodes maintain the blockchain by validating and propagating new entries and/or blocks, and storing full copies of the blockchain database. Yet other nodes are users participating in the blockchain network through some end-user functionality and may provide data to store or record in the blockchain. Some nodes may perform one or more than one of these functions. The nodes connected to the network may also monitor the network for transmissions of interest as part of performing their relative functions.
In some embodiments, nodes are computing devices. For example, nodes may be personal computers, cell phones, smart phones, tablets, servers, and the like. To participate in the blockchain peer-to-peer network, the nodes may have networking capabilities and hardware. Some nodes include various interface devices such as human-interface devices through which human-input is obtained and processed. Human input devices include input/output devices such as a mouse, keyboard, microphone, camera, stylus, touchscreen, and other similar input/output devices.
The proof-of-work function and corresponding blockchain architecture described herein may leverage human effort as proof-of-work required for each block on the blockchain. For each block, including the current block (t), trusted sources, such as trusted source 405 and trusted source 410 illustrated in
A set of puzzles may be generated and created by a trusted source, such as trusted source 405 and trusted source 410. In certain embodiments, the puzzle set may include several puzzles, and each puzzle within the puzzle set may include multiple sub-puzzles or tests. Embodiments of the blockchain architecture described herein may use alternative means of trusted sources for puzzle generation. For example, the source of the puzzles may be a single source or multiple sources. In embodiments with multiple sources of puzzles, the system may designate which labels of puzzles (i.e., from 1 to N) should be created by which source. In this way, a pseudo-random number generator may be used for allocating puzzle providers, and in certain embodiments, the generator may be seeded with the hash of the previous block. Another feature of the blockchain architecture may determine a trusted puzzle source as one which is trusted by a majority of the network. In such an embodiment, if the majority of the network does not trust the source, then puzzles generated, distributed, or signed by that source will not be considered or solved by the nodes, according to the protocol administering the blockchain. To facilitate communication of trusted and untrusted sources of puzzles within the network, lists of trusted and untrusted sources may be maintained and shared amongst nodes or written to a registry, or to the blockchain itself In some embodiments, a set of public keys Q_t={q_1, q_2, . . . , q_n} may be a set of public keys of the trusted sources available for the current block t. Nodes on the network may receive a distribution of the trusted public keys or may access the public keys via the blockchain network. In such embodiments, nodes are able to verify a trusted source generated a puzzle by verifying it with its public key, q_j. Thus, in some embodiments, trusted sources may sign puzzles with a private key, denoted k(q_j), which users or nodes may then decrypt using the public key, q_j, corresponding to the respective trusted source.
In some embodiments, trusted sources may be selected to generate puzzles for block t, and the vector A_t=(a_1, a_2, . . . , a_N)=f(Q_t, H(B_(t−1))) denotes a vector of public keys of the trusted sources selected to generate puzzles for block t. In such embodiments, the vector A t may be deterministically selected from the set of available sources and the selection function f( ) is also a function of the hash of the previous block, t−1.
An alternative or supplementary technique for trusted puzzle generation is a decentralized trust model. In the decentralized trust model, any network node may generate a puzzle. In such embodiments, the protocol may randomly select nodes to generate puzzles based on the hash of the previous block. For example, nodes may be selected by the starting digits of their representative public key, or selected from the public key of active wallets in the previous block, or selected from active wallets with a balance above a determined threshold. That is, nodes with a certain stake in the blockchain may be selected to generate puzzles. In these exemplary embodiments, selected nodes may not solve their own puzzle or may be prohibited from broadcasting any solutions to any puzzles for the current block. In certain embodiments, the system may allow multiple trusted sources to generate the same puzzle number as a protection against a malicious attack by one of the trusted sources.
For exemplary purposes, the blockchain and proof-of-work architecture described herein may be described with reference to CAPTCHA puzzles. CAPTCHA is an acronym for “Completely Automated Public Turing test to tell Computers and Humans Apart.” CAPTCHA puzzles may be a type of challenge-response test with characteristics making it difficult for a computer to solve without human input, and are widely used to determine whether or not a user seeking to access a resource is a human. In such embodiments, solving a CAPTCHA puzzle is a computationally very difficult; however, it is relatively easy for a human to solve. Thus, tampering with the blockchain and redoing the human work requires either an immense amount of computational power to solve the CAPTCHAs, or a large army of human workers to solve the CAPTCHA puzzles. With CAPTCHAs as proof-of-work, the human effort is asymmetric in that human effort is required to solve the puzzle, but no human effort and very little computer effort is required to verify the solution. While exemplary architectures described herein are provided with respect to CAPTCHA puzzles, other types of puzzles requiring human work are contemplated. Specifically, the methods and systems described herein may be implemented using various categories of CAPTCHA puzzles including CAPTCHAs based on text, image, audio, video, puzzle assembly, or other types puzzles including, for example, crossword puzzles, image recognition puzzles, and other similar puzzles involving human work that are more readily solved by human power than computer power.
For each block, a set of N puzzles may be generated in the current round. For example, while the blockchain is still in its infancy and the number of participants is relatively low, the set of puzzles may comprise a hundred puzzles. For another given round, the set of puzzles may comprise fifty puzzles, or one thousand puzzles. In some embodiments, the number of puzzles in each set for a given round may be a function of the number of participants in the blockchain system. For example, some embodiments may increase the number of puzzles in the set for a given round as the number of participants in the network increases. In such embodiments, more puzzles for each round may be required to compensate for growing numbers of participants in the system. In other embodiments, the number of puzzles in each set for a given round may be a function of the number of blocks in the blockchain. For example, some embodiments may increase the number of puzzles for each round as the number of blocks on the chain increase, thereby requiring more work as the blockchain grows.
Referring now to
To protect the solution's secrecy, trusted puzzle generators may provide a puzzle comprising the puzzle image and the hash of its solution. In such embodiments, as illustrated in
CAPTCHA puzzles vary in complexity and thus can be used to vary the amount of “work” required. In general, puzzles should be of sufficient complexity such that it is not vulnerable to brute force attack by a machine guessing different combinations or solutions. There are many techniques for varying the amount of work, and thus the complexity of the puzzles, in the embodiments described herein. For example, each puzzle may contain multiple CAPTCHAs or a sequence of CAPTCHAs, thus imposing multiple tests per puzzle, rather than a single test per puzzle. In such an embodiment, the hash of the solution to the puzzle may comprise a hash of the sequence of solutions. In this embodiment, the solution can only be verified if the entire sequence of CAPTCHAs is correctly solved. An exponential increase in complexity is thereby achieved by increasing the number of tests per puzzle.
CAPTCHA puzzles often have variations of valid solutions. For example, CAPTCHA puzzles may accept both uppercase and lowercase solutions to the distorted text in the CAPTCHA image. In such embodiments, a normalized form of the solution may be included with the puzzle. Using known techniques of normalization, any valid solution can then be converted to normalized form and verified for its correctness.
In certain embodiments, the set of CAPTCHA puzzles for each round may be transmitted over the blockchain network to participants of the network, as illustrated in
With the puzzles distributed across the blockchain network, humans may view the list or vector of CAPTCHA puzzles available to be solved in the current round. In such embodiments, a human may solve a single puzzle or several puzzles. In some embodiments, the network node may choose a puzzle to be solved from the broadcast of puzzles for the current round and present the puzzle to a user.
In either embodiment, the systems and methods disclosed herein may receive or identify user-input solutions to the CAPTCHA puzzles, as illustrated in
Referring now to
In some embodiments, the solver of the puzzle may prove that a solution to the puzzle has been found without revealing the solution itself. Various techniques for keeping the solution secret can be utilized in the architecture herein disclosed, including, for example, using homomorphic encryption or homomorphic hashing techniques. The following discussion provides an example of how a solver can prove that they have solved a CAPTCHA without revealing the solution. First, a trusted source generates a private key, denoted ‘x’ in this example. The private key may be chosen using a deterministic method from the salted hash of the CAPTCHA solution, and the hash value of the previous block may be used as the salt. The public key corresponding to the private key may be included with the broadcast CAPTCHA puzzle, and the solution to the puzzle may be signed with the private key ‘x’. In certain embodiments, the public key corresponding to the private key may replace the hash of the puzzle solution in the broadcasted set of puzzles. In such embodiments, solving one of the CAPTCHAs reveals the private key ‘x’ to the solver because the solver is able to determine ‘x’ once in possession of the signed solution distributed with the puzzle and the user-input solution to the puzzle. Rather than publishing the puzzle solution in this embodiment, the solver may encrypt some agreed text, such as a predetermined string or the hash value of the previous block or some other solution indicator, with the private key ‘x’ and broadcast the signed text along with the puzzle identifier to prove to the other nodes that a solution to the identified puzzle has been found. Other nodes, without knowing the value of key ‘x’, are able to verify that the solver has in fact solved the puzzle by decrypting the message with the public key distributed with the puzzle corresponding to the private key ‘x’.
Nodes and blockchain networks which implement blockchain architectures within the scope of the present disclosure may monitor or track the solutions that have been found and broadcast such that the node is able to detect when it has seen a solution to all N puzzles of the current round. In some embodiments, when all N puzzle solutions for the round have been broadcast, nodes may begin publishing a completed block with all solutions and a new block 330 may be written to the blockchain, as illustrated in
Each block in the blockchain architecture and corresponding proof-of-work function described herein may include a token or representation of the work done to create the block, i.e., the proof-of-work of users' human power exerted to find solutions to the puzzles as realized by the user-input solutions. As described below, there are various ways produce a proof of work within the scope of the present disclosure, and one of skill in the art reviewing the present disclosure may envision others which are still within the scope of the architecture described herein. In each of the instances or embodiments of the proof-of-work described herein, the proof-of-work based on the puzzles and the solutions to the puzzles as those solutions are found and broadcast over the blockchain network. As has been explained, the human-input solutions may come from different users and different nodes connected to the peer-to-peer network. Thus, the proof-of-work function within the scope of the present disclosure may be based on a distributed proof-of-work implementation. The proof-of-work within the scope of the present disclosure then is unique in that it is associated with and represents work done by different nodes of the blockchain peer-to-peer network, as compared to the Bitcoin proof-of-work system where only one node produces the proof of work.
These embodiments may represent the distributed consensus upon which blockchain technology requires by each of the nodes validating and expressing agreement that the solutions to each puzzle of the current round are in fact correct or valid solutions to the respective puzzles. Once such consensus has been obtained, i.e., by broadcasting and validating solutions to each of the puzzles of the current round or some threshold number of puzzles of the current round, that consensus may be memorialized in the current block, for example, by including a representation of the puzzles and solutions in the block. This way, a dishonest node seeking to rewrite history of transactions or data on the chain would need to re-solve each of the puzzles of a given round for a given block.
Like the Bitcoin blockchain and proof-of-work function, rewriting the history of the blockchain of the architecture described herein would require redoing the work of each block, which in this example, would require a team of humans to solve N puzzles. Thus, the architecture described herein provides sufficient tamper-resistance, i.e., immutability, by requiring proof-of-work without the increasing or inefficient expenditure and consumption of energy as required by the Bitcoin proof-of-work system.
To incentivize miners, i.e., the solvers of the puzzles, newly minted coins may be distributed to the accounts of all people who solved a puzzle. As illustrated in
The methods and systems described herein also enable blockchain to be used as a CAPTCHA service, where the CAPTCHAs generated may be used by websites as a content viewing charge. For example, a website viewer may solve one or more of the CAPTCHA puzzles from the trusted source and the website content provider may be rewarded with the newly minted coin from the blockchain. Thus, the present invention also realizes an alternative to advertising or pay walls for monetizing Internet content or services.
As explained above, the proof-of-work system described herein and within the scope of the present disclosure may implement a proof-of-work requirement for generation and creation of blocks on a blockchain, and therefore requires investment of human power for every block. Therefore, the methods and systems described herein may be described in rounds or iterations, wherein the procedures and techniques may be repeated for each new block. In some embodiments of the blockchain architecture described in the present disclosure, the hash of the new block may be used as the seeding for the next set of CAPTCHA puzzles, and in some embodiments, the hash of the new block becomes the seeding for the next block, thereby overlapping and chaining the blocks such that the solved puzzles become the proof-of-work protecting the immutability of the blockchain.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various aspects of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The terminology used herein is for the purpose of describing particular aspects only and is not intended to be limiting of the disclosure. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
The corresponding structures, materials, acts, and equivalents of any means or step plus function elements in the claims below are intended to include any disclosed structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosure in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the disclosure. The aspects of the disclosure herein were chosen and described in order to best explain the principles of the disclosure and the practical application, and to enable others of ordinary skill in the art to understand the disclosure with various modifications as are suited to the particular use contemplated.