To celebrate the World Cup on Algorand, D13 launched CupStakes.world - a World Cup Lottery Sweepstakes and apparently the first Verifiable Randomness beacon consumer on Algorand MainNet!
You normally shouldn't use addresses generated by other people.
"Not your keys, not your crypto" is an excellent rule of thumb that has very few exceptions. This post is about explaining why this giveaway is one of those exceptions.
As far as we know, this is only feasible on Algorand through the powerful Rekeying feature. Since we can't find another instance of a rare vanity address being a giveaway prize, we thought to document what our process will be and why this will be safe and secure to use by the lucky winner.
After the giveaway winner has been picked, they will share their Algorand address with us and we will Rekey the WORLDCUP.. address to theirs on all public Algorand networks - MainNet, TestNet and BetaNet.
Rekeying is a special transaction that instructs the Algorand network to change the "spending authority" of an address.
Normally, the WORLDCUP.. address is controlled by its corresponding private key, encoded in the form of our familiar seed phrase or mnemonic. If we just gave you this seed phrase without rekeying, it would not be safe to use it, as we would also be able to broadcast transactions for the WORLDCUP.. address, and your funds would not be safe!
After we rekey the WORLDCUP.. address to the winner's address (let's say: ABC..WIN) the Algorand network will no longer accept the original WORLDCUP.. private key as a legitimate way to execute any kind of transaction. Instead, all WORLDCUP.. transactions will be expected to be signed by the ABC..WIN keys.
This change is permanent and cannot be revoked or altered by anyone else other than ABC..WIN. We will have absolutely no spending authority over the WORLDCUP.. address after that. Read on for further proof.
Rekeying may be familiar to some users via the "Rekey to Ledger" feature of the popular Pera wallet.
How rare is an 8-letter vanity?
The "alphabet" of Algorand addresses is called base32, and it comprises of the following 32 characters:
The number of possible combinations in the first 8 characters of a vanity address is 32 to the power of 8, or:
So addresses that start with WORLDCUP.. are quite literally one in a trillion.
With a decent developer laptop, we get 2116 addresses per second @ 16 threads on algovanity.com. Assuming we'd find a WORLDCUP.. vanity at about half-way through that key space, it would take more than 8 years:
1099511627776 / 2 / 2116 / 60 / 60 / 24 / 365 = 8.238 yrs
Extra fun fact about the WORLDCUP.. vanity: It shortens to WORL..D6TQ in Pera wallet notifications.
Rekeyed addresses are well supported within the Algorand ecosystem.
For wallets, a pre-requisite is to have both the rekeyed address and the spending authority address in the same wallet.
- Pera wallet supports rekeyed addresses fully.
- myAlgo wallet supports dApp transactions (e.g. Folks Finance, AlgoFi), but support for initiating transactions from MyAlgo itself (to send ALGO or an ASA) is still incomplete
We expect that the winner will be able to use the WORLDCUP.. vanity address as they would any other address. See the troubleshooting section at the end of this article for some helpful tips.
How do I know this is secure?
We'll show you! We have another vanity that seems appropriate for this demonstration: FREE..MONEY
It has just under 100 ALGO in balance.
Here's it's seed phrase:
tongue holiday slender chicken board above draw puzzle boss never hawk worry arch bubble wine enough motor easy soap cotton owner burden major abandon ankle
Here is the seed phrase in QR form, for convenience:
We regret to inform you of the deceptive nature of that vanity. That money is not, in fact, free and you will not be able to move that 99.9 ALGO fortune, because it has been rekeyed on MainNet (and TestNet and BetaNet): MainNet Rekeying transaction.
After that transaction, FREE..MONEY is controlled exclusively by the private keys that control DTHIRTEEN..YARNQE (see RekeyTo field - dthirteen.algo is, unsurprisingly, DTHIRTEEN..YARNQE)
You can look it up on AlgoScan and see that it is rekeyed and what the "authorizer" address is:
After rekeying, we double-checked usability of rekeyed addresses once more. We used MyAlgo to opt into to TinyMan and swap 1 ALGO to OPUL:
And then used Pera with AlgoFi to swap that back to ALGO:
After our shrewd day trading, we turned 100 ALGO to 99.983 ALGO, which is still in FREE..MONEY. You're welcome to try and move any funds out that account, but you will fail.
What you can do with FREE..MONEY right now (i.e. nothing) is what we will be able to do with WORLDCUP.. after we have rekeyed it to the winner.
"Not Your Keys" is still a great rule of thumb
This is a fairly advanced feature of a very advanced blockchain. If you are certain it has been performed as described in this post, you can trust that only you control the rekeyed address.
That said: "Not your Keys? Not your Crypto" is a great rule of thumb to apply to most situations.
Official Rekeying Documentation
What is that giveaway link again?
You can participate by following the instructions on this tweet! Feel free to reach out for discussion or with any concerns. Good luck.
Trouble-shooting Rekeyed addresses
- To log in to a dApp with MyAlgo, you need to select both the authorizer address and the rekeyed address, otherwise you may get an error about the dApp asking to sign with an address you didn't authorize. It (reasonably) wants authorization for both the rekeyed and the spending-authority addresses. If you are unable to select both at once, log in with each one individually (you should only need to do this once.)
- Pera wallet can get confused if an address is rekeyed on one network (e.g. MainNet) but not another, and display "Rekeyed address" on the network where the address is actually self-sovereign. Removing and re-adding the account fixes this. This should not be an issue with the giveaway winner, as we will rekey on all public networks.