I’ve coded a Solidity implementation of @rmsams Seignorage Shares. The contract is up and running on the Rinkeby testnet.
The source code is uploaded to Etherscan under the inidividual contracts and also available on Github:
Some implementation notes:
- A single oracle (me) has control of the price feed for now. The next step is to change this to either a multi-oracle or Schelling point scheme.
MINT_CONSTANTdetermines the the percentage change in supply for a percentage change in price. Currently a 1% change in price leads to 0.1% change in supply per cycle.
CYCLE_INTERVALis currently set to 2000 blocks (~10 hours). An auction is held every cycle for newly printed shares/coins.
- The auction design is pulled from the EOS crowdsale. Users send their orders to a common pool. The sum total of all orders for a cycle is divided by the printed amount of coins/shares to determine the exchange price. Arbitrageurs are incentivized to place orders and bid up the price until the auction exchange price reaches the market price.
- The auction method requires the number of shares to mint to be known ahead of time, so two oracles are required (share price + coin price) instead of one like in the original white paper.
If you’re interested in the project and want some coins/shares on the testnet, shoot me your address in a reply.