Powers of two is not user friendly unfortunately and best to kept it human usable even it wallet does most of the work. And really that is just a number again not denominations as being spoken about.
To mimic coins and notes then using decimal is best which is the plan.
Numbers are already stored in binary form by computer.
So if it is possible to hide mathematics from user, then it is more suitable to use binary form.
The idea is to separate the denominations out so that if I give you 5 x 10 “cents” then tracing the many 10 cent transactions makes it difficult to ever match the transactions from inputs to outputs back to inputs.
But with what your idea seems you still have the transaction as the exact number but are only calling each bit a denomination. Much easier to track as its still a number representing the actual amount.
I think it does not matter if network will have lots of 20 token transactions or lots of 16 (2^4) token transaction.
Just binary form is more machine friendly, compact and easier to implement.
The main issue is in your idea it seems you are storing it all in one number, a 32 bit number. This is not different to just storing a fixed point value. And is what they were trying to get away from.
Anyhow they are still developing so it will be interesting to see how they solve the issue.
This topic has been debated ad nauseum. Simple decimal works best for the man on the street. Binary is more fun for geeks. We had talked about having both binary and decimal denominations, which would be easy to do with the new denomination system for DBC, but that extra complexity is probably not worth it just for the intellectual curiosity and “fun” of using/playing with binary “divs” vs decimal “decs”.
Reading the src is good fun… just looking at the basic enum and error classes wondering how to get a foothold understanding it.
I expect I might spawn too many questions! So, ignore the noob…
Does a client make a request to one Node, wait a few minutes and try again?.. or is it a challenge to a couple of Nodes who might respond first? Just wondering how many connections are dropped if an Adult disappears… what occurs when Adult become Elders… do they drop everything and celebrate?
re: state_machine Transition
Might there be transitions from Client or Node back into bootstrapping?
enum State {
Bootstrapping(Bootstrapping),
Client(Client),
JoiningNode(JoiningNode),
Node(Node),
Terminated,
}
state_machine suggesting ~
If not Stay then
// Bootstrapping state transitioning to Client, JoiningNode, or Node. => IntoBootstrapp-ed
or
// JoiningNode state transitioning back to Bootstrapping. => IntoBootstrapp-ing
but how is loss of connection from Client and Node handled?
Just to be clear. My understanding of the idea in part is to
have separate amounts for each denominations.
give the users the feel of using coins and notes.
have the ability to send many of one denomination.
idea is to make tracing using exact amounts becomes very difficult since many transactions that are the same count of a denomination for each denominations.
The one bit per denomination would somewhat work as long as they is still one denomination as a value and other denominations are separate values too.
But
inefficient in that if I have 5 of 2^-2 then I’d need to do that as 5 transactions
using a bit per denomination rather than enum the denominations.
Using enum allows flexibly in that the denominations can be whatever is desired.
Maybe use the whole, half, quarter, 10cents, 5 cents, penny (+ other needed denominations). Would suit say the American UI and since values are exact the UI can display it as those denominations.
Maybe use the whole, 50 cents, 10 cents, 5 cents, 1 cent which suits the Aussies in the UI.
Maybe use binary which suits the geeks.
Now in fact the single byte enum could have all those denominations.
The reason binary is an issue is purely since there are plenty of times that the UI will not be able to display exact amount desired or the exact amount to be sent since people work in decimal. If you used fixed point of the lowest value then it could work, but then you have to define the lowest value to start with. The enum is extensible since one byte with 256 denominations would cover every conceivable decimal (or binary) because there are not enough sub atomic particles in the known universe to represent 1 SNT split into 10^-240 (as a comparison only, not suggesting the particles are associated with SNT)
In this topic denominations are described as protection measure.
Adding “feel” function to it may be a wrong decision.
This happens only when using binary negative powers (part 2 of my earlier post).
When applying decimal scaling to binary numbers (part 1 of my earlier post), any decimal amount (limited by precision) is represented exactly.
Denominations of any scheme needs to be combined at some point.
I propose 6624699379804989690086500193630206672929704810379292018633660610362761268918893255597526434368518053732566156355826759756454124274317862096663840842872881358407692429956915935675609601420946480124868974757965951820628342100618324060516268198002438079 galleons to 1 SNT (250 digits prime number)