From 4721988d951053f3dca843accd2a18167149a855 Mon Sep 17 00:00:00 2001 From: "reaction.la" Date: Tue, 6 Aug 2024 08:37:28 +0000 Subject: [PATCH 1/2] Fixed my plan for making SWIFT into Bitmessage, added a link to it from socil networking --- docs/design/mixer.md | 83 ++++++ docs/design/proof_of_share.md | 13 +- docs/design/python_rant.md | 27 ++ docs/libraries/unobvious_cpp.md | 12 +- docs/manifesto/SWIFT.md | 425 ++++++---------------------- docs/manifesto/consensus.md | 55 ++++ docs/manifesto/social_networking.md | 2 + docs/pandoc_templates/mkdocs.cfg | 2 +- 8 files changed, 260 insertions(+), 359 deletions(-) create mode 100644 docs/design/mixer.md create mode 100644 docs/design/python_rant.md diff --git a/docs/design/mixer.md b/docs/design/mixer.md new file mode 100644 index 0000000..4571e67 --- /dev/null +++ b/docs/design/mixer.md @@ -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 diff --git a/docs/design/proof_of_share.md b/docs/design/proof_of_share.md index 4dbde8a..07a25e5 100644 --- a/docs/design/proof_of_share.md +++ b/docs/design/proof_of_share.md @@ -3,16 +3,13 @@ title: proof of share sidebar: true 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 We need proof of share because our state regulated system of notaries, diff --git a/docs/design/python_rant.md b/docs/design/python_rant.md new file mode 100644 index 0000000..5e61802 --- /dev/null +++ b/docs/design/python_rant.md @@ -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. \ No newline at end of file diff --git a/docs/libraries/unobvious_cpp.md b/docs/libraries/unobvious_cpp.md index d38158e..f3b2163 100644 --- a/docs/libraries/unobvious_cpp.md +++ b/docs/libraries/unobvious_cpp.md @@ -216,12 +216,8 @@ calling one constructor from another. ```C++ example::example(... arguments ...): - example(...different arguments ...) - { - ... - code - ... - }; + example(...different arguments ...){ +}; ``` @@ -335,20 +331,24 @@ std::is_same< std::string, decltype(declval().toString()) > # Template specialization +```C++ namespace N { template class Y { /*...*/ }; // primary template template<> class Y ; // forward declare specialization for double } template<> class N::Y { /*...*/ }; // OK: specialization in same namespace +``` 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 arbitrarily complex recursive expression – but I think my rather crude implementation will not be nearly so clever. +```C++ 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.*/ +``` # Abstract and virtual diff --git a/docs/manifesto/SWIFT.md b/docs/manifesto/SWIFT.md index b9f3a14..dc01373 100644 --- a/docs/manifesto/SWIFT.md +++ b/docs/manifesto/SWIFT.md @@ -1,7 +1,6 @@ --- -# katex title: >- - Lets eat SWIFT's lunch. + Let’s eat SWIFT's lunch. sidebar: true notmine: false abstract: >- @@ -15,7 +14,7 @@ abstract: >- Double spends are resolved by databases of the entities receiving the messages. The grotesque profits are made by the banks that use it. 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, 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 Visa’s role in international transaction, 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, -because its command line wallet is only barely usable by a linux guru -who is running exactly the right version of linux. -Which is OK, if you have half a dozen linux systems running on +because its command line wallet is only barely usable by a Linux guru +who is running exactly the right version of Linux. +Which is OK, if you have half a dozen Linux systems running on your private network and several shelves full of computers with no keyboards or video screens running in your basement, 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. 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 -> 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? +For liquid lightning to work, needs an exchange between level one +lightning, liquid lightning, +tether lightning, bitcoin, liquid bitcoin, and tether. -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. +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. -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. +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. -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. +And a dex, a dex that exists for the perfectly respectable purpose +of exchanging level one bitcoin +for level two (lightning, grail, and liquid) bitcoin, tether, and level +three (liquid lightning) bitcoin needs a +privacy social net. -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 +For a liquid lightning network to exist, needs a dex, the dex needs +to have a privacy social net. But that would make the dex just one little +island. -Which means the weight is non uniformly distributed, with a very few peers -having most of the weight. +Rather the dex needs to be *in* a privacy social net, which can have +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 - -- a slightly more complex algorithm is needed. +Therefore, need a privacy protocol that is an update to bitmessage, +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.\ - 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. +This messaging functionality is the crypto currency equivalent of that provided by SWIFT to the banks. -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. +A 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. -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 - -> > 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. +The urgent important problem that crypto currency has to solve is privacy and scaling. 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, five thousand shitcoins, and two dozen altcoins, 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. -Polygon's Poly2 is OK, but though theoretically open source, -it is not exactly open source, there are complications and gotchas. +Further, all the recursive snark libraries are bleeding edge and rough around the edges. So, the path is to create a privacy social net tool first. A tool where you can securely have public and private conversations 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, 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, 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. -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). These are apt to be one and the same, to obfuscate the Howey test, but they need not be and probably should not be. 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, -these things are geneally missing. +these things are generally missing. Blockstream does not have a satisfactory lightning wallet, and their business plan depends on the existence of a satisfactory lightning wallet. 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, and Bisq lacks important things and still, after all these years, 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, obscure, and seemingly irrelevant changes in their environment. -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. - -An important use case for bitmessage was selling services for crypto currency +An important use case for Bitmessage was selling services for crypto currency 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 -(Litecoin and Monero) and semi secure currencies (lightning) into the communication channel, +This use case becomes a lot more convenient if we can lift crypto transactions on existing privacy currencies +(Litecoin and Monaro) and semi secure currencies (lightning) into the communication channel, as Nostr does a sort of mostly OK job of lifting lightning 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 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 -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. 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, recursive snarks libraries do not have quite so many rough edges -> > The size of this project is illustrated by how many other big -> > 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 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. The core of my plan has always been Web 3.0, a privacy social net, 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, and they are not done. -> Can you double check Keet/Pear.. Holepunch thing? I belive a good -> part of Blockstream funding is coming from Tether. And Tether (and -> their CEO) loves Keet (like his brainchild). Problem is they don't -> have any good use case. I believe a project somehow leveraging would -> easily get funding from Blockstream hence Tether. - -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. +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. diff --git a/docs/manifesto/consensus.md b/docs/manifesto/consensus.md index 9574f0a..68dbbbd 100644 --- a/docs/manifesto/consensus.md +++ b/docs/manifesto/consensus.md @@ -10,6 +10,8 @@ abstract: >- as wading through molasses, failed to scale --- +This document is work in progress, incomplete and inchoerent. + # Failure of Bitcoin consensus to scale 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 including the individual miner worse off, because he and everyone may be 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. \ No newline at end of file diff --git a/docs/manifesto/social_networking.md b/docs/manifesto/social_networking.md index b6762a5..64e0cfb 100644 --- a/docs/manifesto/social_networking.md +++ b/docs/manifesto/social_networking.md @@ -4,6 +4,8 @@ title: >- Social networking sidebar: true notmine: false +misc_links: >- + Let’s eat SWIFT's lunch.
abstract: >- 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 diff --git a/docs/pandoc_templates/mkdocs.cfg b/docs/pandoc_templates/mkdocs.cfg index 42cc951..373a0b8 100644 --- a/docs/pandoc_templates/mkdocs.cfg +++ b/docs/pandoc_templates/mkdocs.cfg @@ -35,8 +35,8 @@ fi katex=" --katex="$docroot fi 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 - echo "$destdir$base.html from $f" #else # echo " $base.html up to date" fi From ae69f5c5ee5fb981369aadfe143975ea5e34e3c6 Mon Sep 17 00:00:00 2001 From: "reaction.la" Date: Tue, 13 Aug 2024 03:45:31 +0000 Subject: [PATCH 2/2] attempting to learn nix --- docs/design/server.md | 6 +- docs/setup/nixos.md | 260 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 265 insertions(+), 1 deletion(-) create mode 100644 docs/setup/nixos.md diff --git a/docs/design/server.md b/docs/design/server.md index a5469ac..dca740d 100644 --- a/docs/design/server.md +++ b/docs/design/server.md @@ -138,6 +138,10 @@ the verdict is that they are useless and unusable, 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 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 -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 future, and that is what drives the cooperative multi tasking engine. diff --git a/docs/setup/nixos.md b/docs/setup/nixos.md new file mode 100644 index 0000000..c79ab49 --- /dev/null +++ b/docs/setup/nixos.md @@ -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..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. \ No newline at end of file