Bloom Workflow
Bloom
Bloom is a workflow for The Headstash Contracts that, if enabled, allows those who have claimed their headstash to redeem and transfer their allocation to one or more wallet address of their choice, in a manner that contributes to the retention of the privacy design. By design, Secret Network has two conceptual software layer, one being public and the other being private. When headstashers claim their allocations, they are claiming tokens that exist in the private layer. They may decide they want to make use of their newly claimed tokens in the public layer. If so, they will be required to redeem the public representation of their allocation. This action of 'transferring' tokens from the private to the public layer often creates an association between the public wallet address that has triggered the action, effectively breaking the privacy design of this contract.
Solution
To remediate this, the bloom workflow enables automating the redemption of these public tokens for users, so that there is little to no association of the recipients of these public tokens with the account that has claimed their headstash!
Bloom Workflow

1. Register Bloom
Only those who are eligible and have claimed their headstash may register for a bloom. They provide:
- the token they want to bloom
- the amount of tokens they want to bloom
- the recipients and the amount to send to recipients
- the level of randomness they want their transactions to be chosen to process
- the minimum time they want their blooms to be processed
- the number of their transactions they want to be processed at a time
2. Prepare Bloom
This second step is only able to be triggered by the contract owner. Once triggered, the contract will:
- randomly determine one of the memory pools to process registered bloom messages from
- redeem the public version of the tokens on behalf of the owner, to The Headstash contract
- register the transactions to process
3. Process Bloom
The final step is able to be triggered by anyone, and will process the transactions that have been prepared in the previous steps. This will get the public tokens to their destination set by their owner.