It's amazing what choosing the right first step can do for solving a problem. It can mean the difference between finding a solution step-by-step naturally and having no hope of doing it.
Example: let's create a database for all of humanity to pass along for generations. A singular, never-ending story written by many authors over many centuries.
First we need to make it resistant to loss, so we make it easy for anyone to store. Let's limit the amount of data anyone can add in a fixed amount of time. We'll create fixed blocks of data that can be stored in a window before moving on to the next one.
Next we need to detect corruption and tampering so we use a Merkle tree.
We want to prevent vandalism so we make it unsustainable to put low value content in there. We'll do that by requiring credits in order to write to the database.
In order to fairly distribute the credits and give everyone a chance to get some we'll release them only if you can provably trade something of value, say, energy. We do this via proof of work.
Next we need to account for technology improvements over time so we'll make the credit issuance rate dependent on how fast we're adding data. We'll add a supply cap so we don't dilute holders over time. Without this, some subset of credit holders will eventually get crowded out indefinitely.
We need to enforce ownership rights of credit holders so we use public key cryptography. ECDSA will do for now. However, we need to account for cryptographic security changing over time so let's hide the public key behind a one-way function to give us time to upgrade when the time comes. Better yet, make it 2 layers of hashes: SHA256 and RIPEMD160 will do.
We'll transfer the data peer-to-peer to prevent any one group of people from locking out others.
We now have something very much like #bitcoin.