A cryptographic solution to the double-spend problem without a trusted third party, proposed by Satoshi Nakamoto in “Bitcoin: A Peer-to-Peer Electronic Cash System”. He proposed that transactions should be publicly announced, and have a system for participants to agree on a single history of the order in which transactions were received. Mimblewimble removes the need to transactions to be publicly announced.
To achieve an order of transactions he defined a timestamp server. This works by taking the hash of a block of items (transactions in our case) to be timestamped and widely broadcast the hash. The timestamp proves that the data existed at the time in order to get the hash. Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it.
The result is broadcasted over a peer-to-peer network with the help of a proof-of-work system, which requires computational effort to operate. Once the proof has been produced, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would involve redoing all the blocks after it.
Proof-of-work also solves the problem of determining a majority decision making. Since if the vote on a valid block was based on a per IP-address, it could be subverted by a malicious actor allocating many IPs. The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it.