(sorry for the tongue in cheek heading)
I’m pasting some thoughts i had in the community telegram here so we can record the design process.
A few users were discussing how one can create a clean address with SCRT that isn’t linked to any other address. I gave the following idea:
We can have a contract that lets you deposit SCRT, a recipient, and entropy. The entropy is added to all previously collected entropy, a number between 5 and 30 (exact figures TBD) is randomly generated from that entropy, and the amount+recipient pair is saved along with that number.
Each time a deposit happens, the contract checks the list of previous deposits to see if for any withstanding deposits and if the number of interactions since they were made if greater than or equal to the number that was generated when the deposit was originally made. If there were matching deposits, then those deposits are released in the same TX.
So each time you deposit, you also release between 0 and 25 previously made deposits, and your deposit will be released within 1 and 26 interactions later, by some other random user.
Require all deposits in sSCRT so people can’t see how much you put in. Then on the withdrawal do it in two steps: (a contract can trigger multiple callbacks at once)
- The contract redeems enough sSCRT to SCRT to cover all withdrawals in this TX.
- The contract adds a list of bank operations to immediately distribute the SCRT it received in that internal tx between the intended recipients.
You can even use viewing keys to see if you have any pending deposits and how many more deposits need to happen until it gets released.
Plus have an option to retract it if it’s moving too slowly or something and you need the money back.
EDIT: made the sentences clearer and more sensible