Initially, 2M GORT tokens were unlocked, others locked. Then those 2M were burnt, and instead, dev emission contract was introduced.
Contract code can be found at dexy-stable/contracts/gort-dev/emission.es at master · kushti/dexy-stable · GitHub .
In short, the contract has following actions:
- top-up , where it is accepting GORTs (at least 1 GORT per call)
- withdrawal, where it is possible to withdraw to treasury address (stored in register R5), but not more than 1 GORT per block (last payout block number is stored in register R4), and could be increased to any value no more than current height, and up to the same number of GORTs can be withdrawn. Treasury address for next withdrawal can be updated in this action.
Withdrawal action is similar to treasury contract from pre-genesis state, but the latter was done in ErgoTree, while the current contract is available in ErgoScript.
Hopefully emission to treasury contract may be useful for other applications as well.
contract deployment transaction: Ergo Explorer
This contract is using along with oracle pool’s refresh contract. The refresh contract is allowing to withdraw up to 2 *(number of active oracles) GORTs, and oracle demands for at least 1 GORT. So the dev emission contract can take up to (number of active oracles) GORTs per epoch. Currently the offchain is done in the way that the leading oracle is getting 2 GORTs per epoch, other oracles 1 GORT per epoch, and dev emission contract is getting (number of active oracles) GORTs. This is not enforced via oracle pool data refresh contract atm, but such enforcement could be done.