The blockchain is still young, but several applications are already operational: food traceability, secure commercial transactions, disintermediation in advertising, insurance payouts, the digitization of financial securities, ownership of objects in video games… But what are the fundamental principles of the blockchain? Cryptocurrencies—a timely topic and the field in which the concept originated—offer an opportunity for a fascinating mathematical investigation.
Bitcoin, with a market capitalization of $120 billion, is the best-known cryptocurrency. Some e-commerce companies already accept payment in bitcoins. Through its Libra cryptocurrency project (ultimately undermined by public authorities), Facebook is seeking to streamline commercial transactions worldwide, whether B2B ("business to business": a company's activities aimed at business customers) or B2C ("business to customer": a company's activities aimed directly at consumers), to increase the number of participants in these sectors and thereby generate new advertising needs that will boost its revenue. As a result, cryptocurrencies face opposition from regulators, whether central banks or governments.
A few principles of cryptography -----------------------------------
The blockchain could not exist without cryptography, the art of keeping data confidential and, above all, authenticating it. Two primitives—low-level algorithms—are essential: hashing and digital signatures.
Hashing takes input data and computes a digital fingerprint that can be used to identify the original data, much as a signature identifies a person. The SHA standard (Secure Hash Algorithm) transforms a block of a few kilobytes into a 256-bit hash in an unpredictable, irreversible way. The original message cannot be recovered from the hash. This impossibility is practical rather than absolute: trying every combination would eventually recover it, but would require a prohibitively long computation. Hashing can be applied to large volumes of data by breaking them into blocks and chaining the computations (the hash for block i + 1 incorporates the result of the calculation for block i).