Update 09 September, 2021

I was talking about using powers of two, not ten.
There are two ways of doing this:
1.23 = 123 * 0.01 = (
1 * 2 ^ 6 +
1 * 2 ^ 5 +
1 * 2 ^ 4 +
1 * 2 ^ 3 +
0 * 2 ^ 2 +
1 * 2 ^ 1 +
1 * 2 ^ 0 ) * 0.01
or
1.23 ≈
1 * 2 ^ 0 +
0 * 2 ^ -1 +
0 * 2 ^ -2 +
1 * 2 ^ -3 +
1 * 2 ^ -4 +
1 * 2 ^ -5 +
0 * 2 ^ -6 +
1 * 2 ^ -7 +
1 * 2 ^ -8 +
… = 1.23046875

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.

2 Likes

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.

1 Like

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.

5 Likes

Chia has been pestering Ledger about getting bls keys on their devices:

14 Likes

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”.

2 Likes

I read only what was posted in this topic.

That’s why I was talking about possibility to hide this complexity.
If not possible, then decimal should be used of course.

I do not see logic in such solution.
Will not dig in older topic to see why it was proposed.

1 Like

Reading the src is good fun… just looking at the basic enum and error classes wondering how to get a foothold understanding it. :smiley:

I expect I might spawn too many questions! :open_mouth: 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?

1 Like

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)

3 Likes

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.

How about knuts, sickles and galleons, with 29 knuts to a sickle and 17 sickles to a galleon.

6 Likes

lol, wizard currency, cracked me up. :rofl: :rofl: :rofl:

2 Likes

And 1E251 galleons to 1 SNT :sweat_smile:.

1 Like

But 1E251 is not a prime number like 29 and 17.

I propose 6624699379804989690086500193630206672929704810379292018633660610362761268918893255597526434368518053732566156355826759756454124274317862096663840842872881358407692429956915935675609601420946480124868974757965951820628342100618324060516268198002438079 galleons to 1 SNT (250 digits prime number)

2 Likes

I had hoped you would be satisfied enough with just the 251 :wink:

2 Likes

→ ad nauseam (accusative singular)

:running_man:

1 Like

https://brians.wsu.edu/2016/05/16/ad-nauseum/

1 Like

Thank you for the heavy work team MaidSafe! I add the translations in the first post :dragon:


Privacy. Security. Freedom

12 Likes