As part of the Stacks grant, I have developed a pool registry smart contract (It comes with some unit tests):
The registry collects the following data:
(name (tuple (namespace (buff 20)) (name (buff 48)))) ; a bns name (delegatee principal) ; the pool's address to be used by stackers (pox-address (tuple (hashbytes (buff 20)) (version (buff 1)))) ; the btc address used by the pool admin (url (string-ascii 250)) ; the pool's web site (contract (optional principal)) ; a contract managing the stacking, e.g. SP000000000000000000002Q6VF78.pox (extended-contract (optional principal)) ; a contract managing the stacking e.g. SPXVRSEH2BKSXAEJ00F1BY562P45D5ERPSKR4Q33.xverse-pool-v1 (minimum-ustx (optional uint)) ; the required amount of STX to join the pool (locking-period (optional uint)) ; the number of stacking cycles (payout (string-ascii 5)) ; the currency of payout, e.g. BTC or STX (status uint))) ; the status: 0 (development), 1 (production), 2 (retired)
The registry entry is secured through a BNS name, that means only the owner of the name can register or update the data of the pool.
- Is the registered data sufficient? Missing any? Too much? Too many optionals?
- Is securing by BNS name good? Or currently too much of a burden due to missing support by the Stacks Wallet?