This PR adds a few features to the mining slot process:
Mining Bidding End VRF
We would like to randomize the closing of auction bidding so that all bids don't wait for the last possible moment in a slot. To do so, we need a verifiable randomized function. We already have a randomized value that cannot accept user manipulation without forgoing submitting a block - the block seal. This feature will randomize the closing of auctions within a configurable number of blocks (BlocksBeforeBidEndForVrfClose) from the end of each slot. After that point has passed, each block can close the bidding if blake2(seal_strength bytes) is determined to be less than a threshold that has a probability of 1 in BlocksBeforeBidEndForVrfClose. (seal strength is a u256 calculated by hashing the BlockVote bytes of a user provided in a previous notebook, hashed with the commit/reveal scheme for notebooks).
Bidding Start
We have a configurable start to the bidding process. It is currently set to allow one pass of all "slots" without mining (aka, 14,400 blocks when 1440 blocks per day and 10 slots of 1,000 miners). (Configurable through mining_slot.SlotBiddingStartBlock)
Target Bids Per Slot Adjusts Ulixee Shares
We want to incentivize all mining slots to be filled to ensure a healthiest state for the network. To do so, this PR adjusts the ownership tokens needed for each mining slot based on a 10 day rolling count of bids. The desired number of bids is configured through TargetBidsPerSlot, and currently set to 1200 per slot. Previously, the ownership shares needed were calculated as the issuance / max # of miners. Now we will track a percent offset from that number LastOwnershipPercentAdjustment and we will manipulate the number of ownership shares a maximum of OwnershipPercentAdjustmentDamper (20%) from the previous adjustment from the shares in circulation.
Mining Bonds Minimum Fee (Changed)
Mining bonds are modified so that minimum fees are no longer a full day, but are now pro-rata for the number of blocks that the bond was leased for, plus a base fee that a vault can set.
This PR adds a few features to the mining slot process:
Mining Bidding End VRF
We would like to randomize the closing of auction bidding so that all bids don't wait for the last possible moment in a slot. To do so, we need a verifiable randomized function. We already have a randomized value that cannot accept user manipulation without forgoing submitting a block - the block seal. This feature will randomize the closing of auctions within a configurable number of blocks (
BlocksBeforeBidEndForVrfClose
) from the end of each slot. After that point has passed, each block can close the bidding ifblake2(seal_strength bytes)
is determined to be less than a threshold that has a probability of 1 inBlocksBeforeBidEndForVrfClose
. (seal strength is a u256 calculated by hashing the BlockVote bytes of a user provided in a previous notebook, hashed with the commit/reveal scheme for notebooks).Bidding Start
We have a configurable start to the bidding process. It is currently set to allow one pass of all "slots" without mining (aka, 14,400 blocks when 1440 blocks per day and 10 slots of 1,000 miners). (Configurable through mining_slot.
SlotBiddingStartBlock
)Target Bids Per Slot Adjusts Ulixee Shares
We want to incentivize all mining slots to be filled to ensure a healthiest state for the network. To do so, this PR adjusts the ownership tokens needed for each mining slot based on a 10 day rolling count of bids. The desired number of bids is configured through
TargetBidsPerSlot
, and currently set to 1200 per slot. Previously, the ownership shares needed were calculated as theissuance / max # of miners
. Now we will track a percent offset from that numberLastOwnershipPercentAdjustment
and we will manipulate the number of ownership shares a maximum ofOwnershipPercentAdjustmentDamper
(20%) from the previous adjustment from the shares in circulation.Mining Bonds Minimum Fee (Changed)
Mining bonds are modified so that minimum fees are no longer a full day, but are now pro-rata for the number of blocks that the bond was leased for, plus a base fee that a vault can set.