Today I am happy to unveil the keys app, which is a way to create and manage the keys used in what will soon be the EarthBucks wallet, as well as other EarthBucks products such as messaging.
The keys app is not just an app. It is also an API that is used by the client and the server to generate keys for the wallet and messaging.
The new tool is designed to have the following properties:
Here’s how it works. Every user on EarthBucks has a master key that is used to log in. For each new key, entropy is generated that is stored in the database. The entropy is a 32 byte random number, called . The server also has a separate piece of entropy called which is shared across all keys. These two pieces of entropy are combined together using the blake3 mac function to find .
The new key that is generated is not available on the database (in case it were ever compromised) and is only ephemerally available on the server when rendering a new key. Call the user’s master private key . The new derived private key, only available on the client, is , where is the order of the elliptic curve (secp256k1). The new derived public key, derivable on the client, is where is the generator point of the elliptic curve. The public key can also be derived on the server by knowing , and then where is the user’s master public key (known to the server).
Now that the server can generate new public keys (and the user can generate the corresponding private keys), the next step is to generate the mint transaction in each block and the corresponding payment to each user for mining shares.