First, let’s define the form of these balances:
struct Coin { units: u32, parts: u32, }
The
units
field will represent whole safecoins, and since the defined upper limit of issuable safecoin is2^32
, this need be no bigger than au32
.
The
parts
field represents the number of2^-32
-th parts of a single safecoin. Since the maximum value of au32
is(2^32)-1
,parts
will always represent less than a single safecoin.
So does this mean that the parts of a safecoin is a binary division? Just like a normal programmer would do?
As a programmer who has done the block with highly technical programming and also business programming I’d like to say in as strong terms as possible that binary division will be the thorn in the side of SAFE.
People do not think in binary and do not want 77309411/4294967296th of a safecoin. They want 0.018 instead.
77309411 parts using binary is 0.01799999992363154888153076171875 of a safecoin. So then the receiver is losing some of their 0.018 and real life ordinary non-technical people will cry foul again and again.
People do not think in binary, they want decimal. Whereas for technical programming binary is exactly what was wanted.
Can I suggest that the parts field is 1 billion (fixed point value) rather than 2^32 parts