repeated and clarified the explantion on monero, contracts, and beating Metcalfe's law and the cold start problem
This commit is contained in:
parent
495f667c6f
commit
48f0a03b60
@ -966,7 +966,7 @@ Monero did OK, because it is the leading privacy coin. It has a niche, but
|
|||||||
cannot break out of the not very large niche. Because its privacy mechanism means it is
|
cannot break out of the not very large niche. Because its privacy mechanism means it is
|
||||||
a worse Bitcoin than Bitcoin in other respects.
|
a worse Bitcoin than Bitcoin in other respects.
|
||||||
|
|
||||||
And the cold start problem means we cannot directly take over that niche either.
|
And the cold start problem means we cannot directly take over Monero's niche either.
|
||||||
|
|
||||||
But our proposed privacy mechanism means we have a tech advantage over both
|
But our proposed privacy mechanism means we have a tech advantage over both
|
||||||
Bitcoin and Monero - better contract capability than Bitcoin or Ether, because
|
Bitcoin and Monero - better contract capability than Bitcoin or Ether, because
|
||||||
@ -975,10 +975,25 @@ with a costly proof of fulfillment, and without revealing everything to the
|
|||||||
network, and without the rest of the network needing to know what that there was
|
network, and without the rest of the network needing to know what that there was
|
||||||
a contract, what that contract is nor to be able to evaluate it.
|
a contract, what that contract is nor to be able to evaluate it.
|
||||||
Because of its privacy mechanism,
|
Because of its privacy mechanism,
|
||||||
|
|
||||||
Monero cannot do contracts, which prevents atomic exchange between Monero
|
Monero cannot do contracts, which prevents atomic exchange between Monero
|
||||||
and Bitcoin, and prevents Monero from doing a lightning network that would
|
and Bitcoin, and prevents Monero from doing a lightning network that would
|
||||||
enable fast atomic exchange between itself and Bitcoin lightning.
|
enable fast atomic exchange between itself and Bitcoin lightning.
|
||||||
|
|
||||||
|
In order to do atomic exchanges between two blockchains, which is to say,
|
||||||
|
to enable people to move value between one blockchain and another without
|
||||||
|
registering for Know Your Customer, have to have contracts on the blockchain.
|
||||||
|
|
||||||
|
In order to provide DeFi markets for the exchange of fiat for crypto currency,
|
||||||
|
have to have contracts on the blockchain.
|
||||||
|
|
||||||
|
In order to have a lightning network, have to have contracts on the blockchain.
|
||||||
|
|
||||||
|
To compete, have provide people with an off ramp and on ramp to bitcoin,
|
||||||
|
in the expectation that there will in due course the off ramp will be
|
||||||
|
a whole lot busier than the on ramp. If no contracts on the blockchain, no ramp,
|
||||||
|
making it a whole lot harder to solve Metcalfe’s law and the cold start problem.
|
||||||
|
|
||||||
So if we get a niche, get differentiation from Monero and Bitcoin,
|
So if we get a niche, get differentiation from Monero and Bitcoin,
|
||||||
we can then break out of that niche and eat Monero, being a better
|
we can then break out of that niche and eat Monero, being a better
|
||||||
privacy coin, a better Monero, and from the Monero niche eat Bitcoin,
|
privacy coin, a better Monero, and from the Monero niche eat Bitcoin,
|
||||||
|
@ -202,55 +202,67 @@ And so on and so forth for signed integers of unlimited size.
|
|||||||
|
|
||||||
# bitstrings
|
# bitstrings
|
||||||
|
|
||||||
Bitstrings in Merkle-patricia tree representing an sql index
|
It might be convenient to represent the data as a pile of edges,
|
||||||
are typically very short, so should be represented by a
|
rather than a pile of vertices, thus solving the problem that
|
||||||
variable length quantity. Which does not need to have the correct
|
the tree must always start with an edge, not vertex.
|
||||||
bytestring sort order.
|
This duplicates the start position of every edge,
|
||||||
|
but this duplication does not matter because the patricia representation of an index,
|
||||||
|
and the standard and usual database representation of an index,
|
||||||
|
compresses out the leading duplication.
|
||||||
|
|
||||||
I have no end of clever ideas to represent them in fully compressed form,
|
So we are representing an sql index by table whose primary key is the
|
||||||
but all we actually need is a count of the bits of the vertex, the difference
|
bitstring of the start position, and whose values are the
|
||||||
counts for the number of bits in the left and right edges,
|
start position and the end position.
|
||||||
the left bytestring which contains the parent and left bitstrings, and,
|
The patricia edges of this table live in the same table, just
|
||||||
if the right bitstring is more than one bit longer than the parent bitstring,
|
their values are distinguished from actual leaf values.
|
||||||
the difference bytes for the right bitstring.
|
|
||||||
|
|
||||||
If we want to be terribly clever at optimization, if both leaf bitstrings
|
Variable length bitstrings are represented as variable
|
||||||
are only greater by one than the parent bistring, we have bytes containing
|
length bytestrings by appending a one bit followed by
|
||||||
the parent bitstring, otherwise the bytestring containing all the bits of
|
zero to seven zero bits.
|
||||||
the longest edge bitstring, plus the difference bytes for the shorter
|
|
||||||
bitstring if it is longer than its parent by more than one.
|
|
||||||
|
|
||||||
An edge in a Merkle-patricia sql index contains the bit path
|
In the table we may compress the end values by discarding
|
||||||
of the thing pointed to, and the completely unrelated hash of the
|
all leading bytes except the overlap byte.
|
||||||
thing pointed to, which contains its own type information.
|
|
||||||
But sometimes, often, we are indexing things
|
Thus the actual table, containing only the leaf values,
|
||||||
*by* their hash, so need a flag on a leaf edge to denote this case.
|
is a virtual table based on a select statement that
|
||||||
|
excludes the internal edges of the patricia tree from
|
||||||
|
the table of all edges, and concatenates the compressed
|
||||||
|
value with the index to form the absolute value.
|
||||||
|
|
||||||
|
It is very common for the end value to be very short.
|
||||||
|
|
||||||
|
We could save a byte (which is a premature optimization)
|
||||||
|
as follows:
|
||||||
|
|
||||||
|
If S is the length of the bitfield in bits:
|
||||||
|
|
||||||
|
If $0\le S \lt 5$, it is represented by the variable
|
||||||
|
length integer obtained by prepending a set bit to the bitfield.
|
||||||
|
|
||||||
|
If $5\le S$ we represent the bit sequence as a byte
|
||||||
|
sequence prepended with the byte count plus 48,
|
||||||
|
(leaving a gap of sixteen impermissible values for future expansion)
|
||||||
|
|
||||||
# Dewey decimal sequences.
|
# Dewey decimal sequences.
|
||||||
|
|
||||||
The only thing we ever want to do with Dewey decimal sequences is $<=>$,
|
The only operation we ever want to do with Dewey
|
||||||
and they are always positive numbers less than $10^{14}$, so we represent them as
|
decimal sequences is $<=>$, and they are always
|
||||||
a sequence of variable length numbers terminated by the number minus one
|
positive numbers less than $10^{34}$, so we represent
|
||||||
and compare them as bytestrings.
|
them as a sequence of variable length positive
|
||||||
|
numbers terminated by a byte that corresponds
|
||||||
|
to the header of an impermissibly large number, the
|
||||||
|
byte `0xFFFF`, and compare them as bytestrings.
|
||||||
|
|
||||||
### SQL blobs.
|
Albeit we could add, subtract, multiply, and divide
|
||||||
|
Dewey decimal sequences as polynomials,
|
||||||
|
which would require signed integer sequences,
|
||||||
|
but I cannot see any use case for this,
|
||||||
|
while unsigned integer sequences have the advantage
|
||||||
|
that the ones used to sort and identify things are always
|
||||||
|
positive in practice, and one may consider a utf
|
||||||
|
string to be a very long Dewey decimal sequence.
|
||||||
|
|
||||||
In order for blobs in a database representing bitfields to sort
|
|
||||||
correctly, we do not use seven bit nibbles, but eight bit bytes,
|
|
||||||
with a final byte representing zero to seven bits as an eight bit byte.
|
|
||||||
|
|
||||||
For this we use the mapping:
|
|
||||||
Where if\
|
|
||||||
$j$ is the bitfield interpreted as a number\
|
|
||||||
$m$ is the length of the bitfield\
|
|
||||||
$c$ is a count of the set bits in the bitfield
|
|
||||||
|
|
||||||
The value of the eight bit field is:\
|
|
||||||
$j*(2^{(7-m)}-1)+c$
|
|
||||||
|
|
||||||
The difference is that blob is preceded by a count field
|
|
||||||
that is not used in the sort order, which is tricky to
|
|
||||||
do in a Merkle-patricia tree representing an sql index.
|
|
||||||
|
|
||||||
## Use case
|
## Use case
|
||||||
|
|
||||||
|
@ -126,6 +126,7 @@ $$\int \sin(x) dx = \cos(x)$$
|
|||||||
$$\sum a_i$$
|
$$\sum a_i$$
|
||||||
$$\lfloor{(x+5)÷6}\rfloor = \lceil{(x÷6}\rceil$$
|
$$\lfloor{(x+5)÷6}\rfloor = \lceil{(x÷6}\rceil$$
|
||||||
$$\lfloor{(x+5)/6}\rfloor = \lceil{(x/6}\rceil$$
|
$$\lfloor{(x+5)/6}\rfloor = \lceil{(x/6}\rceil$$
|
||||||
|
$$0\le S \lt 5$$
|
||||||
Use `\bigcirc`, not capital O for Omicron $\bigcirc$. `\Omicron` will not always
|
Use `\bigcirc`, not capital O for Omicron $\bigcirc$. `\Omicron` will not always
|
||||||
compile correctly, but `\ln` and `\log` is more likely to compile correctly than
|
compile correctly, but `\ln` and `\log` is more likely to compile correctly than
|
||||||
`ln` and `log`, which it tends to render as symbols multiplied, rather than one
|
`ln` and `log`, which it tends to render as symbols multiplied, rather than one
|
||||||
|
Loading…
Reference in New Issue
Block a user