1
0
forked from cheng/wallet

Merge remote-tracking branch 'origin/docs'

This commit is contained in:
Cheng 2024-08-24 05:58:17 +08:00
commit 770b0bf715
No known key found for this signature in database
10 changed files with 525 additions and 360 deletions

83
docs/design/mixer.md Normal file
View File

@ -0,0 +1,83 @@
---
title: >-
Bitcoin mixer.
sidebar: false
notmine: false
abstract: >-
I want to get early adopters to use my planned privacy
social net, as a small step to replacing SWIFT.
all existing bitcoin mixers have been shut down because
they relied on a centralized social net,
which depended on domain names, which resulted
in the fbi arriving at address of the owner of the
domain name
---
Samourai wallet migrated to centralisation, which directly led to them getting
busted. That codebase is poisoned with communications that the FBI
has flagged as actionable. And integrating anything into current
Bitmessage is impossible except for the original developer. No
big Python program is truly open source.
The correct design for a mixer is as follows. One has a social net,
on which anyone can offer to coordinate a single mixing transaction.
for a mix that will produce mixed coins (utxos )of a particular
round number, 10mBTC, 20mBTC, 50mBTC, or 100mBTC,
plus unmixed changed coins.
All the mixed coins are of equal value, for example all 100mBTC.
Not some funny value highly identifiable value like 99.9872384mBTC
People offer to contribute utxos to this mix transaction - revealing
to the coordinater the public keys, the address, of the utxos,and
revealing to the coordinator that these utxos have a common owner.
They also give him the blinded addresses of coins they want to
receive. He blindsigns those addresses. They then reveal the unblinded
addresses, and his unblinded signature, which proves he signed those
addresses, but does not reveal to him which of the addresses he blindsigned it
is -- he does not learn the relation between the utxos that will be contributed
to the mix transaction, and the mixed or the change utxos that it will replace
them. (Though he and anyone doing blockchain analysis can trace the
change coins by the sudoko attack. But the sudoko attack is irrelevant to
coins that are all the same round number of bitcoin, such as 10mBTC)
He then creates the transaction, and everyone signs it. If not everyone
signs, everyone can see what the missing utxos were, the ones that
were promised, and not delivered, and blacklist them,
then try again.
People contributing already mixed utxos do not have to pay transaction fees
so get back exactly what they contributed.
People contributing as yet unmixed bitcoin have to pay a portion of the transaction
fee proportional to the number of utxos contributed and received. This is good for
them because the free of charge remixed utxos are enlarging their anonymity pool.
making each mixing transaction part of one enormous anonymity pool instead of many
tiny anonymity pools.
If mixing does not work like this, then someone has fucked it up in order to profit from
it, their users will be traced, and *they* will be traced, then arrested.
> > The core of my plan has always been Web 3.0, a privacy social net,
> > and everything else is just monetization, because software never
> > gets done properly or properly maintained without someone making
> > money off it.
> I got what you mean now. Once you reach a point that's indeed a good
> strategy to reinforce value of the network. You offer those
> integrate your service to beat metcalfe's law, your network becomes
> much more stronger. Facebook and some other social networks all
> followed this path via. 'applications' within them.
> > I have been trying to do that, but it is hard to get to the front of
> > the line of all the people who want to tell blockstream why
> > blockstream should fund them and their projects.
> Have you really tried? Adam must have had some fidelity to
> cypherpunks.
I have not tried, but I have been looking for entry points, and
have come up empty. One has to have an in, and one has
to listen before one speaks.s

View File

@ -3,16 +3,13 @@ title:
proof of share proof of share
sidebar: true sidebar: true
notmine: false notmine: false
abstract: >-
Map a blockdag algorithm to the corporate form.
The proof of share crypto currency will work like
shares. Crypto wallets, or the humans controlling the wallets,
correspond to shareholders.
... ...
::: myabstract
[abstract:]{.bigbold}
Map a blockdag algorithm to the corporate form.
The proof of share crypto currency will work like
shares. Crypto wallets, or the humans controlling the wallets,
correspond to shareholders.
:::
# the problem to be solved # the problem to be solved
We need proof of share because our state regulated system of notaries, We need proof of share because our state regulated system of notaries,

View File

@ -0,0 +1,27 @@
---
title:
Python rant
sidebar: false
notmine: false
abstract: >-
Python is the best language in the world for code you intend will only be used by yourself,
used only a few times, then thrown away. It also works great for small trivial programs.
For large programs intended to be used many times by many people on
many different machines, it is a disaster.
...
The bigger it gets, the more it traps you into code that is only going to run
correctly on your one particular development system and that no one else is
going to be able to modify and add to, so investing in python
in anything you intend to be widely used is a trap. Open source
python is also a trap, because no one else is going to be able
to modify and add to it.
If I try to start modifying Bitmessage, I will surely fail. It is a bigger python
program than anyone except the original developer can maintain and modify.
In this sense, no large open source python program is truly open source. PHP
has the same problem, though to lesser degree. Javascript likewise. Has
improved considerably, but still sucks. But typescript which is compiled to javascript is OK.
so all big projects with many developers use typescript rather than javascript.
Or they die before they get big.

View File

@ -138,6 +138,10 @@ the verdict is that they are useless and unusable,
And we should use fibres instead. Fibres? And we should use fibres instead. Fibres?
On the other hand, lots of people report incomprehensible complexity in
the borrow checker when it and the programmer are struggling with
asynch.
Boost fibres provide multiple stacks on a single thread of execution. But Boost fibres provide multiple stacks on a single thread of execution. But
the consensus is that [fibres just massively suck](https://devblogs.microsoft.com/oldnewthing/20191011-00/?p=102989). the consensus is that [fibres just massively suck](https://devblogs.microsoft.com/oldnewthing/20191011-00/?p=102989).
@ -164,7 +168,7 @@ how to do it with Goroutines.
## Massive concurrency in Rust ## Massive concurrency in Rust
Well supported, works, widely used. Well supported, works, widely used. Hard to use.
The way Rust does things is that the input that you are waiting for is itself a The way Rust does things is that the input that you are waiting for is itself a
future, and that is what drives the cooperative multi tasking engine. future, and that is what drives the cooperative multi tasking engine.

View File

@ -216,12 +216,8 @@ calling one constructor from another.
```C++ ```C++
example::example(... arguments ...): example::example(... arguments ...):
example(...different arguments ...) example(...different arguments ...){
{ };
...
code
...
};
``` ```
@ -335,20 +331,24 @@ std::is_same< std::string, decltype(declval<T>().toString()) >
# Template specialization # Template specialization
```C++
namespace N { namespace N {
template<class T> class Y { /*...*/ }; // primary template template<class T> class Y { /*...*/ }; // primary template
template<> class Y<double> ; // forward declare specialization for double template<> class Y<double> ; // forward declare specialization for double
} }
template<> template<>
class N::Y<double> { /*...*/ }; // OK: specialization in same namespace class N::Y<double> { /*...*/ }; // OK: specialization in same namespace
```
is used when you have sophisticated template code, because you have to is used when you have sophisticated template code, because you have to
use recursion for looping as the Mpir system uses it to evaluate an use recursion for looping as the Mpir system uses it to evaluate an
arbitrarily complex recursive expression but I think my rather crude arbitrarily complex recursive expression but I think my rather crude
implementation will not be nearly so clever. implementation will not be nearly so clever.
```C++
extern template int fun(int); extern template int fun(int);
/*prevents redundant instantiation of fun in this compilation unit and thus renders the code for fun unnecessary in this compilation unit.*/ /*prevents redundant instantiation of fun in this compilation unit and thus renders the code for fun unnecessary in this compilation unit.*/
```
# Abstract and virtual # Abstract and virtual

View File

@ -1,7 +1,6 @@
--- ---
# katex
title: >- title: >-
Lets eat SWIFT's lunch. Lets eat SWIFT's lunch.
sidebar: true sidebar: true
notmine: false notmine: false
abstract: >- abstract: >-
@ -15,7 +14,7 @@ abstract: >-
Double spends are resolved by databases of the entities receiving the messages. Double spends are resolved by databases of the entities receiving the messages.
The grotesque profits are made by the banks that use it. The grotesque profits are made by the banks that use it.
And the profits for its crypto currency replacement are going to be made And the profits for its crypto currency replacement are going to be made
by the cexs, dexes daos and wallets that use it. by the cexs, dexes, daos and wallets that use it.
With a lions share of the profits made by first dao of the first dex, With a lions share of the profits made by first dao of the first dex,
because of first mover advantage. because of first mover advantage.
@ -138,9 +137,9 @@ Liquid, to take over from SWIFT. Liquid can handle a lot of transactions per sec
but to really take over from Swift, we are going to be taking Visas role in international transaction, but to really take over from Swift, we are going to be taking Visas role in international transaction,
and that will need Liquid Lightning, a layer three. and that will need Liquid Lightning, a layer three.
Which theoretically exists, but has no useful consumer wallet and has no useful Liquid lightning network, Which theoretically exists, but has no useful consumer wallet and has no useful Liquid lightning network,
because its command line wallet is only barely usable by a linux guru because its command line wallet is only barely usable by a Linux guru
who is running exactly the right version of linux. who is running exactly the right version of Linux.
Which is OK, if you have half a dozen linux systems running on Which is OK, if you have half a dozen Linux systems running on
your private network and several shelves full of computers your private network and several shelves full of computers
with no keyboards or video screens running in your basement, with no keyboards or video screens running in your basement,
which you interact with over ssh and xrdp. which you interact with over ssh and xrdp.
@ -194,276 +193,88 @@ and liquid lightning tether,
for SWIFT is a nexus of third parties and third parties are not going to build on a cex. for SWIFT is a nexus of third parties and third parties are not going to build on a cex.
A major reason that Particl is not very satisfactory is that Bitmessage is not very satisfactory. A major reason that Particl is not very satisfactory is that Bitmessage is not very satisfactory.
# misc unorganized fragments # Plan
## consensus For a dex, one needs a a social net that
allows end to end encrypted conversations and allows
pseudonymous identities to conceal their network address, since if
one is doing trades of blockchain currencies on
a dex, exchanging one crypto currency for another,
one has make public offers without revealing the network
address of a computer that could be stolen, or
a person who could be subjected to rubber hose cryptography, and
engage in securely private human to human conversations
about the resulting transactions, also without revealing one's
network address.
> why do you hate POW? Because of resource waste? I thought it was the For liquid lightning to work, needs an exchange between level one
> reason for success of BTC. With proof of share, or proof of stake, lightning, liquid lightning,
> there will be always discussions of pre-mine, centralization etc. tether lightning, bitcoin, liquid bitcoin, and tether.
> Would it be the case?
Hate the resource waste. It offends me. Plus a system that does And the early adopters are not going to get aboard if the wallet is
not directly handle money, that is a a messaging system between locked to a cex, locked to Boltz, fearing
systems that do handle money, cannot incentivise the that once Boltz gets Metcalfe's law on its side, it is going to
necessary resource waste. enshitify the network.
It could bill people for messaging, and the payments could go to the block winner, but then Early adopters will want a dex, on which Blockz happens to be the
it would be a dao or yet another crypto currency, and not a neutral platform that other daos major, but entirely replaceable, supplier
and crypto currencies could use. of liquidity, so that if it turns evil, as corporations that have a
Metcalfe's law lockin tend to do, the
dex will become dominated by less evil alternatives.
Suppose we have a filecoin style proof of spacetime . And a dex, a dex that exists for the perfectly respectable purpose
Which also wastes resources, but identifies those of exchanging level one bitcoin
peers that are contributing to the network by storing for level two (lightning, grail, and liquid) bitcoin, tether, and level
information and are capable of passing it around, three (liquid lightning) bitcoin needs a
and have lots of connections to other peers. privacy social net.
All peers that pass the proof of space test become
authorized consensus makers for
a certain number of blocks, say 8192 blocks.
The test is not too hard. Most peers are authorized.
We harvest randomness, possibly from the fact that parties For a liquid lightning network to exist, needs a dex, the dex needs
do not know each other's secret keys, possibly from the to have a privacy social net. But that would make the dex just one little
proof of space time test, so that each round, or each group of rounds, island.
a peer gets a random weight, such that the inverse of the weight is uniformly
distributed between one and two to the fifty sixth
Which means the weight is non uniformly distributed, with a very few peers Rather the dex needs to be *in* a privacy social net, which can have
having most of the weight. many dexs
Each peer goes with the consensus block that has the highest chain of weights that it knows of. To handle swift volumes, we need a liquid lightning network to
exist, for it to exist there has to be
a liquid lightning dex that mediates the exchange of liquid lightning for
other crypto currencies,, and such a dex needs a mechanism for communicating
publicly and privately without revealing one's network address.
Actually that algorithm has pathologies that could lead to suprising chain re-organisations Therefore, need a privacy protocol that is an update to bitmessage,
-- a slightly more complex algorithm is needed. with additional capability of zooko names and total order broadcast, reliable in the cryptographic sense.
Every time a proposed block consensus is shared, it now has addiitional support.\ This messaging functionality is the crypto currency equivalent of that provided by SWIFT to the banks.
The weights of the two peers that have that consensus
and have the highest weight of all peers having that consensus is propagated
among all the peers that have that consensus, and the weight of the consensus is the weight of
the lesser of the two peers, plus the weight of the lesser of the two peers of the block it
was built upon that were known to the peer that built upon it at the time he built upon it,
plus the weight of the block that block was built upon, and so on and so forth.
Thus the most well known chain is propagated, becoming more well known. The more A total order broadcast in the cryptographic sense being that if one has
peers that know of a block, the greater the weight of the block. a transaction protocol in which Bob is supposed
to send a message to Carol, and Carol supposed to send a
corresponding response to Bob, the blockchain
can prove who dropped the ball -- so one can have contracts on the
blockchain that have one outcome if Bob failed to
send the message, and a different outcome if Carol failed to reply.
It is a better algorithm, but a whole lot more work to implement than RandomX POW. This makes possible a whole lot of useful dex capabilities, which do
not yet exist on any dex, but could and should.and Particl lack.
## plan # The big problem
The urgent important problem that crypto currency has to solve is privacy and scaling.
> > But there is a perfectly respectable case for a social net that
> > allows end to end encrypted conversations and allows
> > pseudonymous identitities to conceal their network address, since if
> > one is doing trades of blockchain currencies on
> > a dex, one has make public offers without revealing the network
> > address of a computer that could be stolen, or
> > a person who could be subjected to rubber hose cryptography, and
> > engage in securely private conversations
> > about the resulting transactions, also without revealing one's
> > network address.
> >
> > For liquid lightning to work, needs an exchange between level one
> > lightning, liquid lightning,
> > tether lightning, bitcoin, liquid bitcoin, and tether.
> >
> > And the early adopters are not going to get aboard if the wallet is
> > locked to a cex, locked to Boltz, fearing
> > that once Boltz gets Metcalfe's law on its side, it is going to
> > enshitify the network.
> >
> > Early adopters will want a dex, on which Blockz happens to be the
> > major, but entirely replaceable, supplier
> > of liquidity, so that if it turns evil, as corporations that have a
> > Metcalfe's law lockin tend to do, the
> > dex will become dominated by less evil alternatives.
> >
> > And a dex, a dex that exists for the perfectly respectable purpose
> > of exchanging level one bitcoin
> > for level two (lightning and liquid) bitcoin, tether, and level
> > three (liquid lightning) bitcoin needs a
> > privacy social net.
> It makes sense.
> > If they decide they want a liquid lightning network to exist, they
> > need a dex, and they need a privacy social net for it
> > (Though I need a name less likely to give corporate officers the
> > hebee jeebies than privacy social net.
> Special social net. :)
Maybe I will just long windedly call it a social net designed to support
humanand and machine communications in a way suitable for cryptographic currency
purposes and especially a dex, that is a superset of the capabilities of Particl and
Bisq human to human communication protocol, particl's system being Bitmessage,
and Bitmessage being out of support.
> > My plan is to tell them they need a liquid lightning network to
> > exist, for it to exist there has to be
> > a liquid lightning dex, and it needs a mechanism for communicating
> > publicly and privately
> > without revealing one's network address.
> >
> > Therefore, fund a privacy protocol that is an update to bitmessage,
> > with additional capability of
> > zooko names and total order broadcast, reliable in the cryptographic
> > sense.
> >
> > total order broadcast in the cryptographic sense being that if one has
> > a transaction protocol in which Bob is supposed
> > to send a message to Carol, and Carol supposed to send a
> > corresponding response to Bob, the blockchain
> > can prove who dropped the ball -- so one can have contracts on the
> > blockchain that have one outcome if Bob failed to
> > send the message, and a different outcome if Carol failed to reply.
> >
> > This makes possible a whole lot of useful dex capabilities, which do
> > not yet exist on any dex, but could.
> > I need to write them up as part of a totally bland proposal for a
> > totally bland privacy social net that
> > enables arbitrary dexes and daos, among them a totally bland dex
> > that enables exchange of things near and dear to
> > Blockstream's heart.
> Ok, if you want me to pass your proposal, I'm ready to do it. I'm
> sure I can contact Adam, and at least get a response. I'm not sure
> how it should be proposed though. "Someone I messaged on BitMessage
> sharing this proposal, I'm sure you'll like it." :) But I think we
> can work it out.
I want to read what Adam has been writing, before I prepare the proposal.
I think he has been on some you tube channels, or something like that --
some kind of conference.
The proposal is going to be long and technical -- a white paper explaining what
Bitmessage is, that it is being used in the Particl dex, and explaining what
additional capabilities a dex needs, that Bisq and Particl lack.
## Python rant
Wouldn't it be an start to use existing code to experiment some p2p
> payments using bitmessage protocol?
Python is the best language in the world for code you intend will only be used by yourself,
used only a few times, then thrown away. It also works great for small trivial programs,
because these are apt to remain reasonably portable.
But the bigger it gets, the more it traps you into code that is only going to run
correctly on your one particular development system and that no one else is
going to be able to modify and add to, so investing in python
in anything you intend to be widely used is a trap. Open source
python is also a trap, because no one else is going to be able
to modify and add to it.
If I try to start modifying Bitmessage, I will surely fail. It is a bigger python
program than anyone except the original developer can maintain and modify.
In this sense, no large open source python program is truly open source. PHP
has the same problem, though to lesser degree. Javascript likewise. Has
improved considerably, but still sucks. But typescript which is compiled to javascript is OK.
so all big projects with many developers use typescript rather than javascript.
Or they die before they get big.
## mixer plan
(Which I am sure blockstream does not want)
> > Get early adopters to use it. One obvious use case is bitcoin
> > mixing. We have mixers, but the social environments that made them
> > usable have all been shut down.
> Or maybe integratate Samourai wallet into current BitMessage client?
Samourai wallet migrated to centralisation, which directly led to them getting
busted. That codebase is poisoned with communications that the FBI
has flagged as actionable. And integrating anything into current
Bitmessage is impossible except for the original developer. No
big Python program is truly open source.
The correct design for a mixer is as follows. One has a social net,
on which anyone can offer to coordinate a single mixing transaction.
for a mix that will produce mixed coins (utxos )of a particular
round number, 10mBTC, 20mBTC, 50mBTC, or 100mBTC,
plus unmixed changed coins.
All the mixed coins are of equal value, for example all 100mBTC.
Not some funny value highly identifiable value like 99.9872384mBTC
People offer to contribute utxos to this mix transaction - revealing
to the coordinater the public keys, the address, of the utxos,and
revealing to the coordinator that these utxos have a common owner.
They also give him the blinded addresses of coins they want to
receive. He blindsigns those addresses. They then reveal the unblinded
addresses, and his unblinded signature, which proves he signed those
addresses, but does not reveal to him which of the addresses he blindsigned it
is -- he does not learn the relation between the utxos that will be contributed
to the mix transaction, and the mixed or the change utxos that it will replace
them. (Though he and anyone doing blockchain analysis can trace the
change coins by the sudoko attack. But the sudoko attack is irrelevant to
coins that are all the same round number of bitcoin, such as 10mBTC)
He then creates the transaction, and everyone signs it. If not everyone
signs, everyone can see what the missing utxos were, the ones that
were promised, and not delivered, and blacklist them,
then try again.
People contributing already mixed utxos do not have to pay transaction fees
so get back exactly what they contributed.
People contributing as yet unmixed bitcoin have to pay a portion of the transaction
fee proportional to the number of utxos contributed and received. This is good for
them because the free of charge remixed utxos are enlarging their anonymity pool.
making each mixing transaction part of one enormous anonymity pool instead of many
tiny anonymity pools.
If mixing does not work like this, then someone has fucked it up in order to profit from
it, their users will be traced, and *they* will be traced, then arrested.
> > The core of my plan has always been Web 3.0, a privacy social net,
> > and everything else is just monetization, because software never
> > gets done properly or properly maintained without someone making
> > money off it.
> I got what you mean now. Once you reach a point that's indeed a good
> strategy to reinforce value of the network. You offer those
> integrate your service to beat metcalfe's law, your network becomes
> much more stronger. Facebook and some other social networks all
> followed this path via. 'applications' within them.
> > I have been trying to do that, but it is hard to get to the front of
> > the line of all the people who want to tell blockstream why
> > blockstream should fund them and their projects.
> Have you really tried? Adam must have had some fidelity to
> cypherpunks.
I have not tried, but I have been looking for entry points, and
have come up empty. One has to have an in, and one has
to listen before one speaks.
## the big problem
The urgent important problem that crypto currency has to solve is privacy and scaliing.
But cannot solve it just by creating a currency that is private and scales, But cannot solve it just by creating a currency that is private and scales,
because scaling is not a competitive advantage over ten thousand scamcoins, because scaling is not a competitive advantage over ten thousand scamcoins,
five thousand shitcoins, and two dozen altcoins, five thousand shitcoins, and two dozen altcoins,
until you reach a market capitalization of thirty billion dollars, until you reach a market capitalization of thirty billion dollars,
which is when scaling started to bite bitcoin in 2016-2017 which is when scaling started to bite bitcoin in 2016-2017, and privacy alone
is not an advantage over Monaro, Litecoin, ZCash, and Grin.
Further, all the recursive snark libraries are rough around the edges. Further, all the recursive snark libraries are bleeding edge and rough around the edges.
Polygon's Poly2 is OK, but though theoretically open source,
it is not exactly open source, there are complications and gotchas.
So, the path is to create a privacy social net tool first. So, the path is to create a privacy social net tool first.
A tool where you can securely have public and private conversations A tool where you can securely have public and private conversations
without your IP being discoverable. Bitmessage done right. without your IP being discoverable. Bitmessage done right.
A Dao that facilitates stuff done wth crypto currency, A Dao that facilitates stuff done with crypto currency,
such as Bisq and Particl, needs such a social tool, such as Bisq and Particl, needs such a social tool,
and what they have is rather broken. and what they have is rather broken.
@ -473,21 +284,21 @@ efficient and transparent to investors, a sovereign corporation,
while existing daos are dancing around the Howey test, while existing daos are dancing around the Howey test,
and so are opaque and disorderly. and so are opaque and disorderly.
So, create, not a crypto currency, but an environment for such Daos. So, create, not a crypto currency, not a dao, but an environment for such daos.
Among them daos for trading crypto currency. Among them daos for trading crypto currency.
A Dao that facilitates crypto currency transactions needs a trade currency A dao that facilitates crypto currency transactions needs a trade currency
and dao ownership currency (substitute for shares). and dao ownership currency (substitute for shares).
These are apt to be one and the same, to obfuscate the Howey test, These are apt to be one and the same, to obfuscate the Howey test,
but they need not be and probably should not be. but they need not be and probably should not be.
There are a whole lot of capabilities that a crypto coin needs There are a whole lot of capabilities that a crypto coin needs
-- and we see that even in things that are well funded by many large corporations, -- and we see that even in things that are well funded by many large corporations,
these things are geneally missing. these things are generally missing.
Blockstream does not have a satisfactory lightning wallet, Blockstream does not have a satisfactory lightning wallet,
and their business plan depends on the existence of a satisfactory lightning wallet. and their business plan depends on the existence of a satisfactory lightning wallet.
Litecoin has demonstrated atomic exchange between Litecoin has demonstrated atomic exchange between
Bitcoin, bitcoin lightning, Litecoin, and litecoin lightning, Bitcoin, bitcoin lightning, Litecoin, and Litecoin lightning,
but does not have a dao in which to do it. Particl is not quite working, but does not have a dao in which to do it. Particl is not quite working,
and Bisq lacks important things and still, after all these years, and Bisq lacks important things and still, after all these years,
has known major bugs which can cause the loss of lots of money. has known major bugs which can cause the loss of lots of money.
@ -508,34 +319,31 @@ Large python projects accumulate such technical debt that only the original prog
can fix them, and become ever more fragile to minor, can fix them, and become ever more fragile to minor,
obscure, and seemingly irrelevant changes in their environment. obscure, and seemingly irrelevant changes in their environment.
Get early adopters to use it. One obvious use case is bitcoin mixing. An important use case for Bitmessage was selling services for crypto currency
We have mixers, but the social environments that made them usable have all been shut down.
An important use case for bitmessage was selling services for crypto currency
to people who did not want to reveal their IP address. to people who did not want to reveal their IP address.
This use case becomes a lot more conveniient if we can lift crypto transactions on existing privacy currencies This use case becomes a lot more convenient if we can lift crypto transactions on existing privacy currencies
(Litecoin and Monero) and semi secure currencies (lightning) into the communication channel, (Litecoin and Monaro) and semi secure currencies (lightning) into the communication channel,
as Nostr does a sort of mostly OK job of lifting lightning as Nostr does a sort of mostly OK job of lifting lightning
into the communication channel. into the communication channel.
First such use, following the footsteps of nostr tips. First such use, following the footsteps of Nostr tips.
Get existing Daos to use it Get existing Daos to use it
Get new Daos to use it. A Dao that wants to openly organise in an efficient manner transparent Get new Daos to use it. A Dao that wants to openly organise in an efficient manner transparent
to investors is going to want a very private privacy blockchain on which to issue its shares. to investors (which is to say in violation of the Howey test) is going to want a very private privacy blockchain on which to issue its shares. Such a dao
(a sovereign corporation) will
want to organise over a privacy social net, and its shares to be a privacy coin.
And now, it is back to plan A. (almost) A privacy blockchain And now, it is back to plan A. (almost) A privacy blockchain
on which anyone can issue a Daocoin. Or a shitcoin or scamcoin. on which anyone can issue a daocoin. Or a shitcoin or scamcoin.
But the privacy blockchain does not need to be fully scalable. But the privacy blockchain does not need to be fully scalable.
It does, however need to be future compatible with the technologies It does, however need to be future compatible with the technologies
that make full scalability possible. But we delay in the hope that by currency time, that make full scalability possible. But we delay in the hope that by currency time,
recursive snarks libraries do not have quite so many rough edges recursive snarks libraries do not have quite so many rough edges
> > The size of this project is illustrated by how many other big The size of this project is illustrated by how many other big well funded
> > projects need some key element of this project, and do not have it. projects need some key element of this project, and do not have it.
> I'm not sure if I understood that to be honest.
The core of my plan has always been Web 3.0, a privacy social net, The core of my plan has always been Web 3.0, a privacy social net,
and everything else is just monetization, and everything else is just monetization,
@ -546,79 +354,8 @@ And I look at all these people doing Web 3.0 stuff,
or doing projects like particl that really require Web 3.0, or doing projects like particl that really require Web 3.0,
and they are not done. and they are not done.
> Can you double check Keet/Pear.. Holepunch thing? I belive a good And so, all the larger moving parts that have to be part of the
> part of Blockstream funding is coming from Tether. And Tether (and ultimate coin, have to be part of something that has more immediate
> their CEO) loves Keet (like his brainchild). Problem is they don't utility, and is part of a business plan that will bring the project
> have any good use case. I believe a project somehow leveraging would closer to completion, and product of that completion closer to
> easily get funding from Blockstream hence Tether. getting past the cold start problem.
I have been trying to do that, but it is hard to get to the front of
the line of all the people who want to tell blockstream why
blockstream should fund them and their projects.
Also, I need to find the keywords needed to get the proposal
past the layer of idiot no men whose job is to protect them
from all those people with bright ideas as to why blockstream should fund them.
What words are they internally using for stuff that really needs to be done?
But some of the stuff I want done, they really need done.
>
> Also excuse me but how it would work if you stays anonymous and pay
> devs to work on it. How can they fund, doesn't it require
> psedenomous organization? Or do you think some can work in psedonmy
> but some can be non-anonymous while working on it?
I think they should promise an L-BTC bounty or lightning Bitcoin bounty
for someone who accomplishes certain goals.
Other people have used this funding model, albeit lightning Bitcoin.
> Even if you have the funding, it is not easy to bring talent on the
> table. What's your plan to find to hire the talent even if you can
> pay them?
Litecoin bounties for contributions that get included in the repository.
(Litecoin being arguably the best existing privacy currency -- at least when you use mweb addresses.
> > And so, all the larger moving parts that have to be part of the
> > ultimate coin, have to be part of something that has more immediate
> > utility, and is part of a business plan that will bring the project
> > closer to completion, and product of that completion closer to
> > getting past the cold start problem
> 100%
>
## collapse and cryptocurrency
>
> Or, do you think it will replace the Gold, nobody would need or want
> to use it.
>
> Today, if you ask me to accept Gold vs. Bitcoin, leaving aside the
> speculative part, I'd go 100% for gold. I'm not sure that would
> change in the future. But also maybe that's because I think I'm
> emotional about it. I always thought Gold is a godly thing, a "gift"
> of god to us punish or reward. No question fiat is a scam, or even
> in a good intent it is an opiod of an ecomy, however I'm really not
> convinced about Gold.
Obviously over the past few years, Bitcoin has risen enormously more than gold.
When it looked like full scale war might break out, bitcoin fell a little,
and gold rose considerably.
If the crisis is nuclear war, Gold, 22 LR rifle ammo, whiskey, tobacco,
and coffee are likely to be considerably more valuable investments than bitcoin.
If, on the other hand, the crisis is state internal collapse and red terror
against whites, straight males, and Christians, bitcoin because you can carry it through an airport,
while gold will be fairly useless
If the crisis is that you are likely to get conscripted to die in Eastern Europe or the middle east or Taiwan,
or all of them simultaneously, bitcoin will be useful, and gold fairly useless.
If the crisis is hyperinflation and collapse of the US dollar,
Gold and Bitcoin both work, but Bitcoin is better because
the primary problem will be transactions over distance.
If the problem is all of the above, simultaneously or in rapid succession, Bitcoin.

View File

@ -10,6 +10,8 @@ abstract: >-
as wading through molasses, failed to scale as wading through molasses, failed to scale
--- ---
This document is work in progress, incomplete and inchoerent.
# Failure of Bitcoin consensus to scale # Failure of Bitcoin consensus to scale
Mining pools, asics Mining pools, asics
@ -35,3 +37,56 @@ make decisions that are contrary to everyone else's interests. Even if the
individual miner is better off than mining solo, this could well make everyone individual miner is better off than mining solo, this could well make everyone
including the individual miner worse off, because he and everyone may be including the individual miner worse off, because he and everyone may be
adversely affected by other people's decision to pool mine. adversely affected by other people's decision to pool mine.
# POW
> why do you hate POW? Because of resource waste? I thought it was the
> reason for success of BTC. With proof of share, or proof of stake,
> there will be always discussions of pre-mine, centralization etc.
> Would it be the case?
Hate the resource waste. It offends me. Plus a system that does
not directly handle money, that is a a messaging system between
systems that do handle money, cannot incentivise the
necessary resource waste.
It could bill people for messaging, and the payments could go to the block winner, but then
it would be a dao or yet another crypto currency, and not a neutral platform that other daos
and crypto currencies could use.
Suppose we have a filecoin style proof of spacetime .
Which also wastes resources, but identifies those
peers that are contributing to the network by storing
information and are capable of passing it around,
and have lots of connections to other peers.
All peers that pass the proof of space test become
authorized consensus makers for
a certain number of blocks, say 8192 blocks.
The test is not too hard. Most peers are authorized.
We harvest randomness, possibly from the fact that parties
do not know each other's secret keys, possibly from the
proof of space time test, so that each round, or each group of rounds,
a peer gets a random weight, such that the inverse of the weight is uniformly
distributed between one and two to the fifty sixth
Which means the weight is non uniformly distributed, with a very few peers
having most of the weight.
Each peer goes with the consensus block that has the highest chain of weights that it knows of.
Actually that algorithm has pathologies that could lead to suprising chain re-organisations
-- a slightly more complex algorithm is needed.
Every time a proposed block consensus is shared, it now has addiitional support.\
The weights of the two peers that have that consensus
and have the highest weight of all peers having that consensus is propagated
among all the peers that have that consensus, and the weight of the consensus is the weight of
the lesser of the two peers, plus the weight of the lesser of the two peers of the block it
was built upon that were known to the peer that built upon it at the time he built upon it,
plus the weight of the block that block was built upon, and so on and so forth.
Thus the most well known chain is propagated, becoming more well known. The more
peers that know of a block, the greater the weight of the block.
It is a better algorithm, but a whole lot more work to implement than RandomX POW.

View File

@ -4,6 +4,8 @@ title: >-
Social networking Social networking
sidebar: true sidebar: true
notmine: false notmine: false
misc_links: >-
Lets eat <a href="SWIFT.html" target="_blank">SWIFT's lunch</a>.<br>
abstract: >- abstract: >-
Speech is suppressed by censorship, and on "free speech" platforms by state sponsored shill spam. Speech is suppressed by censorship, and on "free speech" platforms by state sponsored shill spam.
Crypto currency transaction metadata goes over insecure networks, so we need a secure, uncensorable, and spam resistent Crypto currency transaction metadata goes over insecure networks, so we need a secure, uncensorable, and spam resistent

View File

@ -35,8 +35,8 @@ fi
katex=" --katex="$docroot katex=" --katex="$docroot
fi fi
done <$f done <$f
echo "$destdir$base.html from $f"
pandoc --variable $banner_height --variable targetDocroot:$targetDocroot --template $docroot"pandoc_templates/pandoc.template" $katex $options $destdir$base.html $base.md pandoc --variable $banner_height --variable targetDocroot:$targetDocroot --template $docroot"pandoc_templates/pandoc.template" $katex $options $destdir$base.html $base.md
echo "$destdir$base.html from $f"
#else #else
# echo " $base.html up to date" # echo " $base.html up to date"
fi fi

260
docs/setup/nixos.md Normal file
View File

@ -0,0 +1,260 @@
---
title:
Nixos
sidebar: true
...
Nixos is primarily a package manager with a declarative functional language as its package manager.
Which makes it possible to reproducibly create a setup. Unfortunately the packages are hard to customise, because access to the
configuration files is restricted and non trivial -- you have to create your own package.
Nixos solves the problem of dll hell by having any number of configurations living on the same machine -- which leads to massive and rapid accumulation of garbage. Garbage collection is very slow, and requires either a lot of ram or a lot of swap (12GB swap recommended. This is a feature I do not want, but wind up suffering, for the advantage of reproducible setups.
To avoid bloat, can use a strategy of re-install from scratch, which Nixos makes less painful. I notice the mail server insists
on pinning to a specific Nixos release.
# Install Nixos
# minimal server
ssh and avahi daemon, pubkeys setup for ssh, users created.
## configuration.nix
```nix
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# networking.hostName = "nixos"; # Define your hostname.
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone.
# time.timeZone = "Europe/Amsterdam";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
# services.xserver.enable = true;
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# hardware.pulseaudio.enable = true;
# OR
# services.pipewire = {
# enable = true;
# pulse.enable = true;
# };
# Enable touchpad support (enabled default in most desktopManager).
services.libinput.enable = false;
#enable avahi-daemon
services.avahi = {
enable = true;
ipv6 = true;
ipv4 = true;
publish = {
enable = true;
addresses = true;
};
# nssmdns4 = true;
};
# guest additions
# not very useful unless desktop enabled, or maybe it just does not work at all
#virtualisation.virtualbox.guest.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.cherry = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAVcyLSWwsa8aN+v2PaS1wuHXGVhTdC+43B3eZ9j/C/M" ];
# packages = with pkgs; [
# firefox
# tree
# ];
};
# Define a user account. Don't forget to set a password with passwd.
users.users.root = {
openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAVcyLSWwsa8aN+v2PaS1wuHXGVhTdC+43B3eZ9j/C/M" ];
};
# List packages installed in system profile. To search, run:
# $ nix search wget
# environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
# ];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh = {
enable = true;
hostKeys = [
{
path = "/etc/ssh/ssh_host_ed25519_key";
rounds = 100;
type = "ed25519";
}
];
settings = {
PasswordAuthentication = false;
PubkeyAuthentication = true;
PermitRootLogin = "prohibit-password";
UsePAM = false;
ChallengeResponseAuthentication = false;
Ciphers = [ "chacha20-poly1305@openssh.com" ];
GatewayPorts = "Yes";
KbdInteractiveAuthentication = false;
KexAlgorithms = [ "curve25519-sha256" "curve25519-sha256@libssh.org" ];
Macs = [ "hmac-sha2-256-etm@openssh.com" ];
};
};
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "24.05"; # Did you read the comment?
}
```
## hardware-configuration.nix
This should be set up automatically by the install
process. For a human to do it is very difficult.
```nix
{
imports = [ ];
boot.initrd.availableKernelModules = [ "ata_piix" "ohci_pci" "ehci_pci" "ahci" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/bf0ee7f8-0397-44d6-a3f7-462b848d0912";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/B4E2-93D5";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/2b67021b-3b31-4e2d-a521-05362ffb39f8"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
virtualisation.virtualbox.guest.enable = true;
}
```
# change config
```bash
nano /etc/nixos/conf*.nix
df -h .
nixos-rebuild test
nixos-rebuild boot
df -h .
```
## garbage collect old configs
```bash
nix-env --delete-generations old
nix-store --gc --print-dead
nix-store --gc --print-live
nix-store --gc
```
# Install nginx, mariadb, and php
[Nginx setup](https://wiki.nixos.org/wiki/Nginx#LEMP_stack)
# Nixos mail server
[This](https://nixos-mailserver.readthedocs.io/en/latest/) has the huge advantage that it only needs a small computer.
Setup is also decribed as ridiculously easy -- compare and contrast with much grief while setting up on debian.
And the huge disadvantage that it only exists for Nix 23.05, while the latest "stable" (not very stable at all) release is 24.05
It also has only a minimal nginx setup. Not at all sure what will happen when I combine it with a real nginx setup.