A full-fledged version of virtual money based on a peer-to-peer network communication model would allow online payments to be sent directly from one entity to another without the need for transactions to flow through financial institutions and other middlemen. Digital signatures give us a partial solution to the problem, but the main disadvantage of this type of solution is the required presence of a trusted, superior entity to prevent double-spending. Satoshi proposed a solution to the problem of double spending in the form of the use of peer-to-peer networks. The network marks transactions with time stamps, hashing them into a continuous chain of proof-of-work, creating a registry that cannot be changed without modifying the evidence of the work already done. The longest string not only serves as proof of the occurrence of a sequence of events, but also as proof that it comes from the largest pool of computing power. As long as most computing power is controlled by nodes that do not work together to attack the network, they will form the longest chain and anticipate a potential attack. The network itself requires a minimum structure. Messages are disseminated with the utmost care, and the nodes themselves can leave and rejoin the network at any time, accepting the longest chain of evidence of the work done as confirmation of what happened in the network during their absence.
1. The Introduction
E-commerce has to rely almost exclusively on financial institutions as the “trusted” processors of electronic payments. While the system runs smoothly enough for most transactions, it still suffers from the drawbacks of a trust-based model. Completely irreversible transactions are not possible in such a model because of the impossibility of avoiding litigation and the participation of financial institutions in related mediation. Mediation costs increase transaction costs, reducing the minimum practical transaction size, thus eliminating the possibility of making small transactions on a daily basis. There is also a much higher cost of not being able to make irreversible transactions for services, including those of an irreversible nature.
With the possibility of repayable transactions, the need for trust increases. Traders need to be cautious in their relationship with their customers, usually requiring more information from them than necessary. A certain percentage of fraud is accepted as unavoidable. These costs and uncertainties related to payment can be avoided for direct transactions using physical currency, but there are no mechanisms for making payments through communication channels without the presence of a trusted third party.
What is needed is an electronic payment system based on evidence of cryptography instead of trust, enabling any two entities willing to transact directly between themselves without the need for an additional trusted entity to participate. Transactions whose withdrawal is calculably impractical will protect sellers from fraud and the introduction of routine deposit mechanisms would easily protect buyers.
In this article I propose to solve the problem of double spending by implementing a model of distributed time marking servers, in order to generate a calculation proof of chronological order of completed transactions. Such a system is safe as long as reliable nodes together control more computing power than any cooperating group of attacking nodes.
We define electronic currency as a chain of digital signatures. Each holder may transfer ownership of the coin by digitally signing the hash of the previous transaction and the public key of the next owner, adding this value at the end of the coin record. The payee has the ability to verify these signatures in order to check the chain of possession.
The problem is, of course, that the recipient of the payment does not have the possibility of checking whether one of the holders has not redeemed the coin twice. A common solution is the introduction of a central trusted authority or a mint who checks each transaction to announce double spending. After each transaction, the coin must be returned to the Mint for it to issue new coins and only coins obtained directly from the Mint are perceived as trusted and certainly not issued more than once. The problem with this type of solution is that in such a case the whole monetary system is based on the company that runs the mint, through which each transaction is forced to go, just like through a bank. This is especially crucial in the gambling industry (and many more grey-market industries) with hundreds sites like bitcasino taking advantage of the blockchain’s efficency and anonymity it provides to bypass national gambling and betting laws. Too bad that when it comes to regulations, all crypto users, not only gamblers will be targeted.
We need a solution for the payee so that they can be sure that the previous owners have not signed any previous transactions. For our needs, we assume that the earliest transaction counts, so we no longer care about the subsequent attempts to double release. The only way to confirm the absence of a transaction is to view all transactions. In a model based on the existence of the Mint, it was familiar with all the transactions and decided which one arrives first. If we want to do this without a trusted third party, the transactions must be made public. We also need a system for transaction participants, in which we will agree on a single history taking into account the order in which transactions were received. The payee needs proof that at the time of execution of each transaction, most nodes agreed that it was the first that they received.
3. Temporary Marking Server
The solution we propose assumes the existence of a temporary marking server. The tagging server retrieves hashes of list items to be tagged with time stamps and broadcasts the hash as it is in a newspaper or in Usenet [2-5] post. A time stamp proves that the data existed at a certain time in order to be able to access the hash. Each timestamp places the previous timestamp in its hash, thus creating a string in which each additional timestamp amplifies the ones before it.
4. Proof Of The Work Carried Out
In order to implement the model of a distributed time server marking on a peer-to-peer network, we will have to use a system of proof of work done, similar to the Hashcash system proposed by Adam Back, and not the model of a newspaper or posts of the Usenet forum. The proof of the work carried out assumes the search for a value beginning with a specified number of zero bits, as is the case with SHA-256. The average workload required increases exponentially with the number of zero bits and can be verified by performing a single hash.
For the purposes of our network based on the time model of the coding server, we use the proof of work system in which we increase the value of the one-time number coding the encrypted message (the so-called nonce), until the moment of finding a value that gives the required zero bits to the hash block belonging to it. Once the computing power of the processors has been extended to meet the requirements of proof of work done, the block can no longer be changed without doing the same job again. Because they attach another block to the string after a specific block, trying to change a specific block would involve changing all blocks following it.
The proof of work model also solves the problem of identifying the majority in the majority decision-making model. If the majority were based on the principle – one IP address = one voice – it could easily be challenged by anyone capable of assigning multiple IP numbers. Proof of your work is in fact a principle – one processor = one voice. The majority decision is represented by the longest chain that has invested the greatest “effort” in the work. If most computing power is controlled by “fair” nodes, the “fair” node will grow fastest, leaving potential competing nodes behind. In order to modify one of the previous blocks, the attacker would have to rework the proof of the work done by the block and all subsequent blocks, then catch up and overtake the work of the “honest” knots. In the further part of the paper we will show that the probability of catching up with the work of “honest” knots by a potential, slower attacker decreases exponentially with the addition of new blocks. In order to compensate for the continuous increase in available computing power of computer hardware and the changing interest in the operation of nodes from the perspective of time, the level of difficulty of the proof of work performed is determined by the moving average determining the number of broken blocks per hour. If these are broken too quickly, the difficulty level increases.