Safecoins divisible down to 1/100 safecoins could be used as an example (a simpler variant of Using new (modified) MData to Model Safecoin - #9 by tfa). Emulation with current MDs could be done by replacing values of the proposal with MDs whose name is the hash of a serialized triplet containing:
-
coin number (a random number generated by the app)
-
fraction lower limit
-
fraction upper limit
For example, (1389, 0, 99), would represent a whole safecoin and (1389, 5, 11) would represent a 7 cents fraction of this coin
The correspondence between the proposal and the emulation would be:
| Concepts | Proposal | Emulation |
|------------------|-----------------|-------------|
| Creation control | by vaults | by app |
| Division control | by vaults | by app |
| Transfer control | by vaults | by vaults |
| Fraction storage | a value of a MD | a whole MD |
| Fraction owner | Owner of value | Owner of MD |
The obvious limitation of emulation is that the app can generate any number of coins. Also, an external malicious program can easily disrupt the coin database by creating overlapping fractions. But divisions and transfers initiated by the app itself should be OK.
Edit: When the app creates a safecoin, it should check that no fraction containing 0 as lower bound exists: meaning issuing 100 gets from (coin#, 0, 0) to (coin#, 0, 99). That should be “enough” because IIRC MD deletion has not been implemented.