--- # katex title: >- Social networking sidebar: true notmine: false ... ::: myabstract [abstract:]{.bigbold} 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 Web 3.0 both for freedom of speech and economic freedom. ::: # the crisis of censorship If we have a mechanism capable of securely handling arbitrary free form metadata about transactions, it can handle arbitrary free form information about anything, and people are likely to use it for information the government does not like. It is not only transaction data that the government wants to control. We have a crisis of censorship. Every uncensored medium of public discussion is getting the treatment. In a world where truth and reality is massively suppressed, forbidden truth should migrate to a platform resistant to Global American Empire domination. The Global American Empire is at war with truth and reality. A communications platform should support truth and reality, thus must be at war with the Global American Empire. A crypto currency needs what Urbit was supposed to be, its own communications and publishing protocol, in order that you can have transaction metadata protected, and thus needs its own truth and reality system. And thus it needs to be willing to be at war with the Global American Empire. Its developers need to figure on a significant probability of being arrested, murdered or forced to flee, as Satoshi figured, though their inability to think beyond next weeks power point bullet points, and inability to comprehend the nature of cryptographic protocols will likely protect us. On the other hand, the recent arrests of people who created privacy software for Ethereum suggests some risk. I would never have tried what Tornado tried, for Ethereum is full of enemies who have longer time horizons and better capability to understand what we are up to than most of them, and Tornado was on the enemy's home turf. You can get away with that stuff in the Bitcoin ecology so far, but no need to tread on the enemy's toes unnecessarily. It draws unwelcome attention and forces them to think. We need a pseudonymous social network on which it is possible to safely discuss forbidden topics. ## shills, spamming, and scamming We also have a crisis of shills, spamming, and scamming. [lengthy battleground report]: ../images/anon_report_from_people_who_tried_to_keep_unmoderated_discussion_viable.webp "anon report_from people who tried to keep unmoderated discussion viable" {target="_blank"} Here is a [lengthy battleground report] from some people who were on the front lines in that battle, and stuck it out a good deal longer than I did. So we need moderation. But to prevent censorship, we need entirely decentralized moderation. People escape censorship to unmoderated anonymous platforms, but are driven off those platforms by shills, spammers, and scammers. The difference between censorship and moderation is that a moderator acts to protect the discussion from shills, spam, and scammers, while a censor acts to prevent the discussion of dangerous ideas. What the censor is suppressing is stuff that is not generally known and not generally available. What moderators are needed for is to suppress is stuff that is very hard to avoid, because a thousand sock puppets are robotically posting from the same script on a thousand forums. # Social net architecture You want to be able to message everyone in the world, but you don’t want spammers and shills to be able to message you. (The difference between a spammer and a shill is that a shill is spearphishing. A shill’s script is narrowly targeted to a specific target community, like Trotsky declaring himself to be a peasant in order to kill the peasants, or the innumerable pump and dump “investment opportunities”.) You want to be able to communicate to the broad public (equivalent of web pages) as well as specific individuals (equivalent of text messages, email), and you want people to be able to comment before the broad public on content you have communicated to the broad public (equivalent of blogs). You want to be notified when someone sends a message specifically to you, and you want to be notified when someone responds to content you have communicated to the broad public, you want to be able to turn off the ability to respond, or turn it off for any new respondents, want to be able to close comments, and you want, with considerably less urgency, to be notified when something appears before the broad public by people you are following. Thus the social network system of followers, followed, buddies, and feeds, which combines the functionality of the web, the functionality of messaging, and functionality of the blog. We can model everything as a web, except that some parts of the web are directed acyclic graphs under some directionality criterion. A directed acyclic graph has an implicit time order, hence notifications and feeds. if we try to distinguish between posts and comments as blogs do, there are several tricky edge cases when we have replies to replies. Usenet made no substantial distinction between posts and comments. Making the distinction, as blogs do, breaks the conversation and complicates the code and the interface. Usenet died of shills, as for example the science fiction and fantasy discussion groups dying as a side effect of progressive takeover of science fiction fandom organizations. Somehow the conversation would invariably turn into attacks on capitalism, the market, family, fatherhood, and private property, which did not have much to do with science fiction and fantasy. If fantasy came up at all, it was in a conversation that presupposed the evils of feudalism, and the Marxist history that capitalism was the successor of feudalism, rather than in a conversation that presupposed the reader’s yearning for Kingship, kinship, leadership, and the hero with a thousand faces. In the end the conversation in the science fiction and fantasy Usenet discussion groups tended to be about the power of classes as defined by Marx, rather than about power of heroes, Kings, and vigilantes. And so the Usenet science fiction and fantasy discussion groups, and just about every Usenet discussion group, died of shills. Conversations became one man with one microphone attached to a thousand megaphones, and replying was like talking back to the national news broadcast, because you could reply to a shill, but the man giving the shill her script was not listening, because he was running a hundred similar shills, and his shill would just stick to her script, the script he had assigned to her no matter what you replied to her script. Her replies to your reply would be unresponsive, because they came from a script written by a man who had never thought about or foreseen your reply. Conversations came to resemble the conversations you have with a non player character in a video game, a scripted robotic simulation of actual conversation, or the conversations on a help line with an unhelpful third world help line worker to whom English is a second language, and who is reading from a script, a script written by a man whose native tongue is English, but his script is designed to deal with certain common problems that do not in the slightest resemble the problem you have with the product, because the man writing her script did not foresee your problem. Usenet was designed for conversations, but was hijacked by Harvard and the New York Times to give one way lectures, resembling those given in Harvard and the pages of the New York Times. Speaking back was pointless, no one was listening, and eventually everyone stopped speaking back, and Usenet died. The conversation in the Usenet science fiction and fantasy groups died, because the shills would stick to script no matter what, providing the superficial simulation of a conversation about fantasy and science fiction without the substance of a real conversation. And the same was happening in every Usenet group, though what was being shilled varied from one group to the next, with an immense multitude of different shilling organizations running an immense multitude of unresponsive scripts promoting an immense multitude of different scams, most of them about money rather than politics. Two real participants in the science fiction and fantasy Usenet group would be having a conversation about the hero’s journey, and the computer of the man writing the economic Marxist scripts would detect a keyword or key phrase that it had been programmed to treat as relevant to a Marxist script, and direct a shill to interject that script into the conversation, and the shill would do so, mixing the script up a little with random fragments from the actual conversation to prevent it from being too readily recognizable as the same script already posted a thousand times before in a hundred Usenet groups, and the conversation would be derailed. Or worse, a robot promoting class conflict based on sexual preference classes would be triggered on seeing the post by a robot promoting class conflict based on economic classes, and the conversation thereafter would consist of one robot pushing scripts about economic Marxist classes, and another robot pushing scripts about Cultural Marxist classes with the bored economic Marxist shill industriously interweaving random fragments from Cultural Marxist script into the economic Marxist script, and the bored Cultural Marxist shill industriously interweaving random fragments from the economic Marxist script into the Cultural Marxist script to create the semblance of a conversation where no actual conversation existed, merely random variations on scripts already robotically pushed a thousand times in a hundred places. The real participants eventually left the Usenet group leaving the robots to robotically talk to each other. To prevent shills, you need moderation. But moderation is apt to get centrally controlled and become censorship, shutting down vitally needed conversations. We need mandatory moderation, to prevent what happened to Usenet, but we need completely decentralized moderation, to prevent censorship. If you don’t have a means of stopping one way broadcasts into a medium designed for conversations, your social net is going to be flooded with one way broadcasts. The particular axe that was being ground was not the problem. There is no end of large, wealthy, and powerful organizations with axes to grind. In the Science Fiction and Fantasy group, the primary problem seemed to be organizations created and funded by Harvard and the New York Times promoting cultural Marxism and old type economic Marxism, but if it had not been them, would have been someone else promoting something else. One way broadcasts provide the opportunity for power and money. So what should happen is that when you have a feed, and are a follower of Bob, Bob’s public posts that you have not yet seen are marked as unread in the feed, and listed by title or first line if no title. And if you look at one of them, the thing he is replying to is just a click away, and the replies he has approved are just a click away. But you don’t see, and cannot click on, the replies he has not approved, unless you are following those commenters also. Though he might give blanket approval to Alice’s feed, in which case you would also see Alice and everything she approved. Because if you could click on them, a million shills and spammers would reply, rendering the link worthless. If you want two way narrowcasts, you need a means to keep out broadcasts, or else narrowcast memes sent by individuals to individuals will be drowned out by mass produced broadcast memes sent to everyone indiscriminately by large bureaucratic organizations. If it had not been Harvard and the New York Times, might have been some megachurch. Indeed, in the early days of the internet, it was some megachurch. In the early days of the internet, every group, regardless of topic, regardless of its area of interest, was full of repetitious stuff about young earth creationism, material indistinguishable from what I had seen before in every other group, with any attempt to debate the posters receiving unresponsive scripted responses to the unscripted response, responses suspiciously similar to a thousand similarly unresponsive responses in a thousand different interest groups attempting to pursue a thousand quite different interests. If young earth creationist shilling died out, it was because bigger and more powerful organizations with more important axes to grind got in on the business of broadcasting one way broadcasts into narrowcast two way media. The old indiscriminate one way broadcasts were drowned out by new indiscriminate one way broadcasts reflecting the concerns of bigger and more powerful organizations, in the end, the biggest and most powerful organizations of all. When you look at your set of feeds, you want to see which feeds have activity on them by real people that you are following, and when you look at a particular feed, you want to see only new activity by the person you are following, and also which items on the feed have new replies approved by the person you are following. Which, unless the person you are following is issuing indiscriminate approvals, is going to keep out the one way broadcasts by shills, spammers, and scammers. And if he is issuing indiscriminate approvals, people will soon stop following his feed in the same way everyone dropped out of Usenet groups as the shilling of one way broadcasts became intolerable. If Bob replied to Carol, and you are not following Carol, and you click on Bob’s post, you should see in his post a link to the post by Carol that Bob replied to, and if you click on that, you see Carol’s post containing a link that will show all the replies to that Carol approved. Which might include Dave’s reply to Bob’s reply to Carol, a reply to Bob that Carol approved, but Bob did not. In which case, if you click on Carol’s replies link, you will see Dave’s reply to Bob in her comments page, but if you click on Bob’s replies link, you will not see it in Bob’s comments page. What posts you can see will depend on the path by which you reached them. The mesh of reply links, reply-to links, and approval links form a graph, and when you click around the conversation you are following that graph. So people will learn to follow the paths of good moderators, and will ignore the paths of bad moderators. The web also forms a graph. What is missing from the web whose lack makes it not a social network is the time element: feeds. You cannot have a conversation over the web. We need to support conversations, thus need to have different and distinct reply links, reply-to links, and approvals while the web only has one kind of link, losing the information that makes a conversation a conversation. A social network is a superset of the web, email, and instant messaging, and a moderated but truly decentralized social network is going to replace all of them. So everything is a post – and a reply is just a post that has a reply-to link to the post that it replies to. And the reply-to link works both ways, in that the post with the link will appear in the comments page of the original post that it links to, if approved by the poster it links to. So we treat replies and posts the same, everything a post. If you are following someone, you get his posts on your feed, and when you see a post that he made public, you can click on a link to the post that he replied to, and a link to any replies to him, or replies to his replies, that he approved. So everything you can click on and read has to be by someone you are following, a post approved by someone you are following, or approved by the author of the post that you are now reading, supposing you clicked on it to see the replies that he approved. Otherwise we get the Usenet problem of a million shills, scammers, and spammers. So, you can navigate to whole world’s public conversation through approved links and reply-to links – but not every spammer, scammer, and shill in the world can fill your feed with garbage. ## Algorithm and data structure for Zooko name network address For this to work, the underlying structure needs to be something based on the same principles as Git and git repositories, except that Git relies on SSL and the Certificate Authority system to locate a repository, which dangerous centralization would fail under the inevitable attack. It needs to find the network addresses of remote repositories on the basis of the public key of a Zooko identity of a person who pushed a tag or a branch to that repository, a branch being a thread, and the branch head in this case being the most recent response to a thread by a person you are following. We want to support a zooko identity for a machine whose owner wants anyone in the world to be able to connect to, perhaps because he wants an audience for his ideas, or for what he is selling. And we also want to support machines for which the connection information is a shared secret, distributed on a need to know basis. And we do not want a central authority with the capability to decide what that address is. For the normal case, zooko identity with public connect information, the controller of the machine makes public a small number of other zooko identities which have publicly accessible connect information, and very long lived network addresses, so that lots of entities are going to have their current network address cached, which identities he promises to regularly inform of his current network address. And those entities make public what they know of that network address, how recently they were informed of it, the likelihood of that network address suddenly changing, and apparent uptime of the entity whose network address they are reporting on. The final authority for each such item of information is the Zooko signature of the entity that wishes to be found, and the Zooko signatures of the other entities that he keeps informed. Thus, the authority over the informations is fully distributed. But in order to collect, distribute, and efficiently obtain this potentially very large pile of data, there has to be a fair bit of centralization in practice. Git source code distribution provides a model of how to handle this without dangerous or harmful centralization, or a central point of failure. For any one library on Git, there are an enormous number of branches. But in practice, everone winds up following one branch of that library, and if you make changes in it, and want your changes included, you have to get the man (and it is always a man) who runs that branch to pull your branch into his. And that is the centralization that is needed for efficient distribution of data. But if he is not doing a very good job, some people, and eventually everyone, eventually winds up following a repository with a different name, reflecting the fact that a different man is running it. And that is decentralization that is needed to prevent misconduct or single point of failure. So, if someone is providing the service of making other people's network addresses publicly available, he has to get that one man to pull his data. Or get another man, whose data is pulled by that one man, to pull his data. The reason git repositories scale is that the one man who in fact controls the one repository that matters the most trusts several other men, each of whom trust several others, and so information percolates through many trusted people, eventually into the central repository, where everyone sees it. Perhaps that one man might fail to include some zooko identity data for wicked reasons, that he does not want people to hear what those people are saying, that he wants to get between the man who wishes to speak, and the man who wishes to hear. Then some people will start pulling an additional branch that does include those people, and eventually everyone winds up pulling that branch, and after a while not pulling the old branch, and eventually nearly everyone will do the same. On the other hand, that one man might fail to include some zooko identity data because he thinks it is a pile of sybils, shills, scammers, and entryists, and the pile is too large, wasting too much disk space and bandwidth, and if he is right, most people will not want that useless misinformation cluttering up their disks. Or some people might disagree, and pull a branch that does include those questionable identitities. Once our system starts to attract substantial use and attention, a vast pile of sybil Zooko identities will appear, whose network addresses seem to be located all over the world, but a very large proportion of them will in fact be located on one computer in the bowels of the State Department or Harvard, and to avoid collecting and distributing a hundred gigabytes of this worthless and meaningless information will require human judgement and human action, which judgment and action will have to be done by a rather small number of humans, who will thus have rather too much power, and their failures rather too great consequences. But, following the way that git is designed and in practice used, we do not have to give them unlimited power, nor allow them to be a central point of failure. ### running in schism, with many approximately equal branches Centralized databases are a single point of failure. They are also extremely convenient, because they enable many humans to leverage the judgment of a single human, rather than needing to exercise their own judgement. With Git, you usually have one master repository. Sometimes you do not, and have to exercise your own judgement. I have often enough tripped over this, and often enough managed fine. Under attack, the system may well schism, with no one source that lists all or most Zooko identities that people are interested in contacting, but it should, like Git, be designed to schism, and work well enough while schismed. That is what makes Git centralization truly decentralized. Sometimes, often, there is no one authoritative branch, and things still work well enough. The messages of the people you are following are likely to be in a relatively small number of repositories, even if the total number of repositories out there is enormous and the number of hashes in each repository is enormous, so this algorithm and data structure will scale, and the responses to that thread that they have approved, by people you are not following, will be commits in that repository, that, by pushing their latest response to that thread to a public repository, they did the equivalent of a git commit and push to that repository. Each repository contains all the material the poster has approved, resulting in considerable duplication, but not enormous duplication. The underlying protocol and mechanism is that when you are following Bob, you get a Bob feed from a machine controlled by Bob, or controlled by someone that Bob has chosen to act on his behalf, and that when Bob replies to someone, the post that he replies to is copied onto his machine, containing a link to a feed controlled by the person he replies to, and similarly with replies that he approves. So posts and links to feeds spread around the net Usenet style, being duplicated on every machine that comments on them or approves them and every machine that follows a feed that contains them. You access a feed BitTorrent style, sharing Bob’s feed with everyone that follows Bob. Each feed is a mutable torrent, a Merkle-patricia tree with a single authority determining the current total state of that tree, with the continually changing root of Bob’s Merkle-patricia tree signed by Bob using his secret key which is kept in a BIP39 style wallet. When Dave replies to a text in Carol's feed, the Carol text and the reply by default goes into his feed, and if it does there will be metadata in his feed about his social network connection to Carol, which, if Bob is following Dave's feed, can be used by Bob's client to navigate the distribute hash table to Carol's feed. And if Carol approves Dave's reply, or is following Dave or has buddied Dave, and Bob is following Carol, but not following Dave, then there will be in metadata in Carol's feed that can be used by Bob's client to navigate the distribute hash table to Carol's feed. The metadata in the feed sharing reveals what network addresses are following a feed, but the keys are derived from user identity keys by a one way hash, so are not easily linked to who is posting in the feed. ### Replacing Kademlia [social distance metric]:recognizing_categories_and_instances.html#Kademlia {target="_blank"} I will describe the Kademlia distributed hash table algorithm not in the way that it is normally described and defined, but in such a way that we can easily replace its metric by [social distance metric], assuming that we can construct a suitable metric, which reflects what feeds a given host is following, and what network addresses it knows and the feeds they are following, a quantity over which a distance can be found that reflects how close a peer is to an unstable network address, or knows a peer that is likely to know a peer that is likely to know an unstable network address. A distributed hash table works by each peer on the network maintaining a large number of live and active connections to computers such that the distribution of connections to computers distant by the distributed hash table metric is approximately uniform by distance, which distance is for Kademlia the $log_2$ of the exclusive-or between his hash and your hash. And when you want to connect to an arbitrary computer, you asked the computers that are nearest in the space to the target for their connections that are closest to the target. And then you connect to those, and ask the same question again. In the course of this operation, you acquire more and more active connections, which you purge from time to time to keep the total number of connections reasonable, the distribution approximately uniform, the connections preferentially to computers with long lived network addresses and open ports, and connections that are distant from you distant from each other. The reason that the Kademlia distributed hash table cannot work in the face of enemy action, is that the shills who want to prevent something from being found create a hundred entries with a hash close to their target by Kademlia distance, and then when your search brings you close to target, it brings you to a shill, who misdirects you. Using social network distance resists this attack. The messages of the people you are following are likely to be in a relatively small number of repositories, even if the total number of repositories out there is enormous and the number of hashes in each repository is enormous, so this algorithm and data structure will scale, and the responses to that thread that they have approved, by people you are not following, will be commits in that repository, that, by pushing their latest response to that thread to a public repository, they did the equivalent of a git commit and push to that repository. Each repository contains all the material the poster has approved, resulting in considerable duplication, but not enormous duplication. approved links and reply-to links – but not every spammer, scammer, and shill in the world can fill your feed with garbage. ### Kademlia in social space The vector of an identity is $+1$ for each one bit, and $-1$ for each zero bit. We don't use the entire two hundred fifty six dimensional vector, just enough of it that the truncated vector of every identity that anyone might be tracking has a very high probability of being approximately orthogonal to the truncated vector of every other identity. We do not have, and do not need, an exact consensus on how much of the vector to actually use, but everyone needs to use roughly the same amount as everyone else. The amount is adjusted according to what is, over time, needed, by each identity adjusting according to circumstances, with the result that over time the consensus adjusts to what is needed. Each party indicates what entities he can provide a direct link to by publishing the sum of the vectors of the parties he can link to - and also the sum of the their sums, and also the sum of their ... to as many deep as turns out to be needed in practice, which is likely to two or three such vector sums, maybe four or five. What is needed will depend on the pattern of tracking that people engage in in practice. If everyone behind a firewall or with an unstable network address arranges to notify a well known peer with stable network address whenever his address changes, and that peer, as part of the arrangement, includes him in that peer's sum vector, the number of well known peers with stable network address offering this service is not enormously large, they track each other, and everyone tracks some of them, we only need the sum and the sum of sums. When someone is looking to find how to connect to an identity, he goes through the entities he can connect to, and looks at the dot product of their sum vectors with target identity vector. He contacts the closest entity, or a close entity, and if that does not work out, contacts another. The closest entity will likely be able to contact the target, or contact an entity more likely to be able to contact the target. * the identity vector represents the public key of a peer * the sum vector represents what identities a peer thinks he has valid connection information for. * the sum of sum vectors indicate what identities that he thinks he can connect to think that they can connect to. * the sum of the sum of the sum vectors ... A vector that provides the paths to connect to a billion entities, each of them redundantly through a thousand different paths, is still sixty or so thirty two bit signed integers, distributed in a normal distribution with a variance of a million or so, but everyone has to store quite a lot of such vectors. Small devices such as phones can get away with tracking a small number of such integers, at the cost of needing more lookups, hence not being very useful for other people to track for connection information. To prevent hostile parties from jamming the network by registering identities that closely approximate identities that they do not want people to be able to look up, we need the system to work in such a way that identities that lots of people want to look up tend to heavily over represented in sum of sums vectors relative to those that no one wants to look up. If you repeatedly provide lookup services for a certain entity, you should track that entity that had last stable network address on the path that proved successful to the target entity, so that peers that provide useful tracking information are over represented, and entities that provide useless tracking information are under represented. If an entity makes publicly available network address information for an identity whose vector is an improbably good approximation to an existing widely looked up vector, a sybil attack is under way, and needs to be ignored. To be efficient at very large scale, the network should contain a relatively small number of large well connected devices each of which tracks the tracking information of large number of other such computers, and a large number of smaller, less well connected devices, that track their friends and acquaintances, and also track well connected devices. Big fanout on on the interior vertices, smaller fanout on the exterior vertices, stable identities on all devices, moderately stable network addresses on the interior vertices, possibly unstable network addresses on the exterior vertices. If we have a thousand identities that are making public the information needed to make connection to them, and everyone tracks all the peers that provide third party look up service, we need only the first sum, and only about twenty dimensions. But if everyone attempts to track all the connection information network for all peers that provide third party lookup services, there are soon going to be a whole lot shill, entryist, and spammer peers purporting to provide such services, whereupon we will need white lists, grey lists, and human judgement, and not everyone will track all peers who are providing third party lookup services, whereupon we need the first two sums. In that case random peer searching for connection information to another random peer first looks to through those for which has good connection information, does not find the target. Then looks through for someone connected to the target, may not find him, then looks for someone connected to someone connected to the target and, assuming that most genuine peers providing tracking information are tracking most other peers providing genuine tracking information, and the peer doing the search has the information for a fair number of peers providing genuine tracking information, will find him. Suppose there are a billion peers for which tracking information exists. In that case, we need the first seventy or so dimensions, and possibly one more level of indirection in the lookup (the sum of the sum of the sum of vectors being tracked). Suppose a trillion peers, then about the first eighty dimensions, and possibly one more level of indirection in the lookup. That is a quite large amount of data, but if who is tracking whom is stable, even if the network addresses are unstable, updates are infrequent and small. If everyone tracks ten thousand identities, and we have a billion identities whose network address is being made public, and million always up peers with fairly stable network addresses, each of whom tracks one thousand unstable network addresses and several thousand other peers who also track large numbers of unstable addresses, then we need about fifty dimensions and two sum vectors for each entity being tracked, about a million integers, total -- too big to be downloaded in full every time, but not a problem if downloaded in small updates, or downloaded in full infrequently. But suppose no one specializes in tracking unstable network addresses. If your network address is unstable, you only provide updates to those following your feed, and if you have a lot of followers, you have to get a stable network address with a stable open port so that you do not have to update them all the time. Then our list of identities whose connection information we track will be considerably smaller, but our level of indirection considerably deeper - possibly needing six or so deep in sum of the sum of ... sum of identity vectors. ## Private messaging Private messaging is trivial. There is no end of excellent existing software to do it, in particular Jitsi Meet, Element, and, most secure of all Bitmessage. The hard problem is the public social net on which people meet so that they can then engage in private messaging and form private rooms. Our social network’s private rooms are not going to be competitive with the innumerable excellent existing systems supporting private conversations and private rooms, except that we need to provide efficient, convenient, and secure means to launch private rooms and private conversations from our public social network, and, most importantly, because programmers need to be paid, we need to support private conversations about money and payments, which existing private messaging systems do not provide. You cannot securely embed a private payment in a private message in existing private messaging systems. The most private solution for video conferencing is Jitsi Meet *if* you run your own Jitsi Meet server. If you are using someone else’s Jitsi Meet your messages are still private, but the someone else owns your metadata. A more private and far more convenient solution for text and voice is Element, and for text alone, the most secure is Bitmessage, which leaks no metadata. The highest priority for a crypto currency should be to re-open free public discussion. (Since we are, at the moment, out of power, we are temporarily free speech enthusiasts) But the second highest priority, and the one that will get us money, is re-opening the path to entrepreneurship, thus we should primarily be interested in freedom of speech about money and transactions. The enemy is shutting down forums where people can discuss unregulated crypto currency transactions. Since we are going to need a BIP39 style wallet, need to put a crypto currency in it, and the ability to have private conversations, which will typically be about orders, payments, and receipts. I just received over email in the clear a payment acknowledgment containing most of my credit card number and the three digit shared secret authorization on the back of my credit card. This is intolerably bad. Similar things are happening with crypto currency payments, linking crypto currency wallets to physical locations such that the owner of the wallet can be found and shaken down, because there is no wallet infrastructure for communicating metadata about payments, so all the metadata, such as “deliver these goods to this physical address” goes over public networks. Jitsi is great for private human conversations about human things, but we lack an environment useful for conversations about orders, payments, and receipts, which is going to need integration with the payments and accounting system, and needs to be based on BIP39 identities. Jitsi Meet XMPP identities are not really useful for the purpose. We are at present using SSL identities based on the Domain Name System for this purpose, hence the grossly inappropriate email I received, and these are unsatisfactory, because there are a thousand certificate authorities, and any organization that has a certificate authority in its pocket can intercept and interfere with a supposedly private conversation. This, rather than blockchain analysis, is the big problem with crypto currencies that needs to be fixed. Hence we need human readable messages that can have crypto coins, unspent transaction outputs, and lightning network payments embedded in them. A conversation between two people is an encrypted immutable authenticated but unsigned data structure shared between two parties, ## Private rooms There is plenty of excellent software supporting private messaging and private rooms. What is lacking is a public social network where it is safe to have conversations that would give people a reason to to move to a private room. The infrastructure proposed in [Anonymous Multi-Hop Locks] for lightning network transactions is also private room infrastructure, so we should implement private rooms on that model. In order to do money over a private room, you need a `reliable broadcast channel`, so that Bob cannot organize a private room with Ann and Carol, and make Ann see one three party transaction, and Carol see a different three party transaction. In this context, a broadcast channel is reliable if each of the participants can know that all the other participants saw the message, or knows that the room crashed and the conversation failed to complete. For most purposes, this is seldom a concern, and existing private room software fails to address this concern, which is hard to fix without increasing the likelihood of leaking metadata. But if we want to get paid, need to address this concern, possibly at the expense of the usability and security for other uses of our private rooms. Existing software does not implement reliable broadcast in private rooms, and is generally used in ways and for purposes that do not need it. And anything that does implement reliable broadcast channel is apt to leak more metadata than software that does not implement it. So for most existing uses, existing software is better than this software will be. But to do business securely and privately over the internet, you need a reliable broadcast channel Well then, as many dags as there are groups, and if someone is added, the adding party adds a reply link in the data structure of the smaller group to the larger group, and if someone is deleted, a subset of the parties to large group get invited to the smaller group, which contains a reply-to link into the larger group. Every conversation is a room, and if you buddy someone, he has authority to invite you to a room. The bilateral shared secrets that make a room possible are frequently discarded and replaced. They are not part of the immutable data structure, but infrastructure used to communicate what is in the room. Each room corresponds to a dag, a narrowly shared and transient blockchain, so that all participants know that all participants are seeing the same conversation. But once the shared secrets have been discarded, the room can no longer get new messages, and its data can no longer be decrypted. The conversation is immutable but deletable. Private rooms are recreated from time to time, with new transient keys, and the old transient keys lost forever. The participants may have a record of what was said in the old private room, but the old conversation is not present in the new room nor accessible from the new room, whereas a feed is around forever, and its past rendered immutable by the Merkle-patricia tree. When you join a room, you submit a transient public key to each of the participants in the room, and they respond with a transient public key, constructing a shared secret between each pair of participants. You then use symmetric encryption with that shared secret. And then, over the encrypted connection, set up a shared secret based on both the durable public and private keys, and the transient keys. So you now have, for each pair of participants, a shared secret that depends on both parties durable and transient keys. Possession of the shared secret proves you know the secret key corresponding to your public key, and you get perfect forward secrecy because the shared secret and the transient keys are abandoned when there is no further action in the private room. Assume Bob’s secret key is $b$, and his public key is $B$, and similarly Carol’s secret key is $c$ and her public key is $C$. [Scriptless Scripts]:https://tlu.tarilabs.com/cryptography/scriptless-scripts/introduction-to-scriptless-scripts.html "Introduction to Scriptless Scripts – Tari Labs University" [Anonymous Multi-Hop Locks]: anonymous_multihop_locks_lightning_network.pdf "Anonymous Multi-Hop Locks for Blockchain Scalability and Interoperability" In order to support [Scriptless Scripts] and [Anonymous Multi-Hop Locks] the private keys need to be scalars of an elliptic curve of prime order, such as Ristretto25519, and the public keys need to be elliptic points on that curve. $b×C=c×B$. (Lower case letters denote scalars modulo the order of the curve, upper case denote the corresponding elliptic points on the curve) So, to construct a shared secret that can be used for symmetric encryption, Bob calculates $b×C$ and Carol calculates $c×B$ Suppose that Bob’s transient private and public keys are $b_t$ and $B_t$, and his durable private and public keys are $b_d$ and $B_d$, and similarly for Carol. Then to construct a shared secret that depends on both the transient and the durable keys, and proves knowledge of the durable private key, Bob calculates $(b_d + b_t)×(C_d + C_t)$, and similarly Carol calculates $(c_d + c_t)×(B_d + B_t)$. (But this is only safe if both Bob and Carol have first proven that they also know the shared secret $b_t×C_t = c_t×B_t$, by first successfully decrypting and encrypting stuff symmetrically encrypted to that secret) A bilateral pair conversation is a pair of feeds that should have identical content and hashes, and though they are not signed, they are authenticated. A multilateral conversation is n bilateral conversations, n feeds. For money matters, where the point is proving to third parties, we want signatures on the hashes and immutable messages, but for bilateral conversations we want authentication without signing So the multilateral shared room is constructed through people communicating over bilateral shared secrets constructed from unilateral unshared secrets. The signed contents of the room are flood filled around the participants, rather than each participant being required to communicate his content to each of the others. To provide a reliable broadcast channel, a hash of the total state of the room is continually constructed # signing and immutability For money, we want signatures, and money is the highest priority. Carol signs what she said to Bob, and she is stuck with it. Less cases to handle. When you send money, you not only sign it, thus rendering it immutable but deletable, you sign the message, thus signing all the previously mutable conversations linked in through the “reply-to” and “regarding” links in your message. The preceding conversation was authenticated but unsigned, thus potentially mutable and deniable, but becomes signed by and one party, and thus immutable, when he sends money, and signed by the other party when he accepts the money. [Zooko’s triangle]: ./zookos_triangle.html A message with a single recipient is always authenticated, though possibly only by a cheap readily discardable [Zooko’s triangle] identity. If it is about money, normally signed, and thus immutable but discardable. A message with two or more recipients is always signed, regardless of whether it has money or not, because there are too many cases to handle otherwise, and thus immutable though deletable, and it retains perfect forward secrecy, in that if one of the recipients loses control of his durable secret keys, but all three participants keep their mouths shut, no one else can know what was in it. It also renders any bilateral messages linked in immutable, because they are linked by two fifty six bit hash, thus signing a message acknowledges sending or receiving all messages linked to by the signed message and renders them immutable by linking them into a hashdag. # Name System We need an unbreakable and untraceable name system like that Jitsi or namecoin, but Jitsi relies on the Ether blockchain, which is rather too breakable. and in the hands of the Social Justice Warriors. Has to rely on crypto wallet type identity keys, rather than some authority mapping names. You need the functional equivalent of blogs, where everything published and every approved comment on a blog gets shared BitTorrent/Usenet style – so you and everyone has a copy on their hard disk of everything and everyone they are following, and shares that data with everyone who follows the same entity, with no central server. And you need the functional equivalent of reposts and likes, so that if someone you are following endorses what someone said, it eventually gets downloaded, BitTorrent style, on your disk, and you get to see it, and comment on it, also. One minor difference you will need is that the person who issued the thing being commented on gets to moderate the comments, though obviously this will have no effect on comments by anyone you are already following. A repost by someone you are following should go into your feed. His likes should put links in your feed. Comments on the thing reposted should put links in your feed if they survive moderation, and the comment should go into your feed whether moderated or not if you are already following the commenter. You need private messages, which are easy, and we have lots of systems to securely provide that already. You need private groups that no outsiders can follow, except the moderator regularly sends them the latest keys. # Blockchains You need a cryptocurrency like Bitcoin, but Bitcoin is too readily traceable. Wasabi wallet has a cure for bitcoin traceability, but it is not easy to use that Wasabi capability, and most people will not, despite the very nice user interface. The lightning network over bitcoin could fix those problems, and also overcome Bitcoin’s scaling limit, but I don’t think much of the current implementation of the lightning network. The latest bitcoin upgrade, supporting Schnorr signatures and smart contracts, makes a true lightning network possible, but backwards compatibility and government pressure may prevent that from happening. People don’t actually understand fiat money, but are plenty comfortable when their browser tells them they have such and such an amount in their bank. And they don’t understand the difference between their wallet telling them that secrets sitting in their wallet are worth such and such an amount, and Coinbase telling them that secrets held by Coinbase, supposedly on their behalf, are worth such and such an amount. They do not understand this big important difference. But that is going to be OK if we get the user interface done right. A major obstacle to crypto currency taking over the world is that making payments in crypto currency is hard. [BTCPay] solves the problem of enabling your internet store to receive payments directly to your own wallet, and integrates with your database, automating the bookkeeping and stock keeping [BTCPay]:https://docs.btcpayserver.org/WooCommerce/ "BTCPay/WooCommerce integration" But though it is easy on internet shopkeepers, it is hard on internet shoppers. The fundamental user interface problem is inherent in all existing wallets. You navigate through a nice easy shop page, choose some goods or services, and proceed to a BTCPay page that is well integrated with the shop, and the BTCPay page gives you a receive address and an amount, presented in the context of your purchase. And then you have to launch your wallet, and copy and paste that amount and that address into your wallet, and tell it to pay, and when you are doing that, you are no longer in the context of your purchase and your interaction with the internet shopkeeper. Your wallet does not know anything about the metadata associated with the transaction. Which makes it hard, and makes the records kept by your wallet not very useful. The wallet of the seller is integrated into their book keeping by BTCPay, but the buyer's wallet cannot be integrated into the buyer's bookkeeping. The complexity and difficulty is because that we are using one rather insecure channel for the metadata about the transaction, and a different channel for the transaction. (This is also a gaping and gigantic security hole, even if you are using Monaro.) For a truly usable crypto currency payment mechanism, transactions and metadata have to go through the same channel, which means human to human communication through wallets - means that you need to be able to send human to human messages containing requests for money, *and containing money*. We can make the client wallets easier to use, and third worlders are already using payment methods that are not that easy when they have to do transactions over distance. The internet tends to be unreliable in third world, and people will do their interneting whenever it available, which is often at strange hours. Everyone who matters in the third world sends and receives text messages. We want to be able to implement a wallet that everyone in third world can use, can chat to friends and people they do business with, send money to them, and receive money from them. If the wallet integrates an identity and messaging system, then making payments and receiving payments over the wallet can be made easier than with any existing system. We have to put the medium for communication about money, for communicating metadata about transactions, inside the wallet, as in the old days you sent a sealed envelope containing both a cheque and a letter. Then everyone is going to use that wrapper, owning their secrets the way they used to own their correspondence. A third party like Coinbase will not have a handle to get inside the transaction. Private messages need to be able to carry the cryptocurrency embedded in them, so that the social net is useful for business, just as you can mail a check in an envelope with a document. So the lightning network needs to be an application, the primary application, of the private messaging and private room system. The elegant cryptography of [Scriptless Scripts] using adaptive Schnorr signatures and of [Anonymous Multi-Hop Locks] assumes and presupposes a lightning network that has a private room with a reliable broadcast channel (everyone in the room can know that everyone else in the room sees the same conversation he is seeing, and a reliable anonymous broadcast channel within the private room. "We also assume the existence of a functionality $F_{anon}$ which provides user with an anonymous communication channel." So, before we can implement a reliable anonymizing lightning network using the elegant cryptography of these papers, have to implement a corresponding social media capability, even though that capability is unlikely to be competitive with Jitsi and others for purely social purposes. Whereupon when finally we do implement a lightning network, it will work like paper payments sealed in envelopes, which are generally accompanied in that envelope by metadata about the human purpose and intent of that payment and the obligations that ensue, unlike the present lightning networks, where such metadata goes over separate and insecure channels. Business will move to the decentralized social net to escape the increasingly disruptive social controls that are sending so many businesses down the drain. Nasa lost the ability to build rockets because of Social Justice (The SLS is built around rocket parts built long ago that Nasa can no longer make). Intel lost the ability to build CPUs because of social justice. (They now rely on a Taiwanese owned and operated chip fab), and Disney destroyed to Star Wars franchise, turning it into a lecture on social justice. Debian broke Gnome3 and cannot fix it because of social justice. Business needs a currency and [book] keeping system that enables them to operate a business instead of a social justice crusade. A blockchain is just a public ledger with an immense number of columns. Triple entry [book] keeping with immutable journal entries is a narrowly shared ledger with a considerably smaller number of columns. Every business needs its books on its own blockchain, to escape government regulation of its book keeping, which public regulation tends to result in the creation of holiness being recorded as the creation of value, as in the Great Minority Mortgage Meltdown and MF Global. The disruptive interference of Human Resources in hiring and firing shows up on the books as a profit centre instead of a cost centre, and the legal and accounting departments work for regulators and the taxman similarly. # Monetization Information wants to be free, but programmers want to be paid. An environment created to allow people to have uncensored public and private conversations can make its creators rich if it allows businesses to focus on creating value and making profit. [sox]:sox_accounting.html "Sarbanes-Oxley accounting" A proof of share currency works like a startup company used to work before [SOX] -- the founders get shares, then they sell or issue shares to angel investors, and then with the angel investors money they pay early developers with both shares and fiat. And then in your liquidity event, these shares would become liquid (back in those days traded on the public stock exchange), and, if the startup was successful, everyone gets rich. But since [SOX] blew up that institutional and organizational structure, we have to recreate it, before we get paid. The intent is to recreate the organizational form that SOX destroyed, and recreate it for ourselves before we recreate it for anyone else. Its blockchain unit of value will be adopted by businesses and private individuals if it allows them to message each other securely about transactions, and if it allows businesses to keep their [book]s in ways that reflect a focus on the creation of value and profit. At the time I write this there is an immense amount of money in play on Taiwan Semiconductor. All the modern semiconductor fabs in the west have died, because Human Resources forces them to hire people into critical high tech positions on the basis of race, sex, and sexual preference, except for one company that is privately held by the King of Dubai, who being a foreign King with his own loyal army is in a better position than the average boss to resist political pressure. It is easier to resist demands from Human Resources when you have men at your back who will kill and die for you. There are a lot of high tech tasks where if you have a single dud member on the team, the whole team will fail – and if you have a woman on the team, and exclude her from the stuff she is going to wreck, you are guilty of mansplaining, sexual harassment, and probably rape. There will be a big emotional scene with so much of the drama that women so love, and even though will be absolutely obvious that the woman is disruptively manufacturing drama, no one will admit to noticing her bad behaviour. Censorship resistant social media is part of the necessary infrastructure for moron resistant high tech teams, though additional infrastructure will be needed. [sovereign]:white_paper.html#sovereign-corporation To maintain technology, and for business to create value, the west is going to have to create companies that can resist political pressure. Which means that we are going to have to create software that enables companies,as well as discussion groups, that can resist political pressure, their books being triple entry [book]s with immutable entries, rather than [Sox], and their shares traded on the blockchain instead of the quasi governmental stock exchanges, sovereign corporations rather than state created corporations. The software will be open source, so the programmers cannot make money off it directly, but can make money from the seigniorage and implementing the lightning network where such shares will be traded in a way that gives the developers seigniorage. [triple entry accounting]:./triple_entry_accounting.html "triple entry accounting" [book]:./triple_entry_accounting.html "triple entry accounting" Software that enables businesses that can resist political pressure is a superset of software than enables discussion groups that can resist political pressure. We start by enabling discussion groups, which will be an unprofitable exercise, but the big money is in enabling business. Discussion groups are a necessary first step. # Development sequence First we need a replacement for Quic, TCP, and SSL. Quic and SSL encryption is joined at the hip to the quasi governmental domain name system, and if we put our custom encryption and name system on top of TCP, it is inefficient, as SSL without Quic is inefficient, and will be dependent on big quasi governmental organizations to protect against distributed denial of service attacks, which will start up as soon as the social media has important discussions, and redouble when the project starts to develop serious monetary value. But such a communications protocol will have no value, until there is software that uses it to communicate, no value till there is a social media system on top of it. In order to communicate, it will need network addresses, and a system to associate durable public keys with frequently changing network addresses, though these should not have any direct one to one relationship with durable public keys of humans, and do not always need to be very durable. Initially we just use the equivalent of a hosts file, though as SQLite rather than text, but this does not scale to anything useful. For scaling, when one computer connects to another, each learns the durable public keys and most recent network addresses of those public keys from the other, and if one has connections to several others, it can perform nat penetration to allow direct connection, after the model used by Jitsi, where all participants have a durable connection to a Jitsi meet server, which enables them to form direct connections with each other. Though there is no reason why every computer should not be able to perform that role rather than just the central server as in Jitsi meet. If a participant does not sign the network address proposed for it by its counterparty, perhaps because it thinks it is incorrect, perhaps because it thinks it likely to be far from durable, or for privacy reasons, the network address does not get propagated through network address pooling. So only participants with stable network addresses and accessible ports get propagated, get the relationship between durable key and network address widely known, so if the network address is unstable, or no accessible port, you can only contact directly if both connected to same third computer. Which drastically limits the usefulness of this protocol in general, but it works fine for propagating message pools, Usenet/BitTorrent style. At some time in the future we will address nameservers, with will serve names that are recorded on the blockchain, but at this point, we do not yet have a blockchain, and without a domain name system for network addresses and nameservers, we cannot do much with the protocol. And we cannot use the quasi state domain name system, or it is going to be yanked out underneath us as soon as we succeed. But we can do the important things, which are social media and blockchain. With social networking on top of this protocol, we can then do blockchain and crypto currency. We then do trades between crypto currencies on the blockchain, bypassing the regulated quasi state exchanges, which trades are safe provided a majority of the stake of peers on the blockchain that is held by peers holding two peer wallets, one in each crypto currency being exchanged, are honest. This, a crypto currency and the capability to across blockchain exchanges on our blockdag, gives us our liquidity event, enabling investors to fund software. At which point we start plugging all the wonderful things we are going to do to make the currency actually useful in the near future. Which liquidity event will be considerably more persuasive if the system actually is useful as a censorship resistant social media platform at the time of the liquidity event. A proof of share blockdag is a [sovereign] corporation, but in order to actually function as a corporation it needs a human chief executive, corporate funds that the the chief executive can dispense, a human board of directors to keep an eye on what the chief executive is doing with those funds, and proper [book]s so that the board can keep an eye on the chief executive, and the shareholders keep an eye on the board. So, after the first liquidity event (cross blockchain trades on the blockdag) we implement the standard corporate infrastructure, accounting, board of directors, CEO, over proof of share instead of under a quasi governmental stock exchange, [triple entry accounting] with immutable journal entries instead of [sox] accounting, for the final liquidity event, the final liquidity event being the first [sovereign] corporation on this blockchain. Information wants to be free, but programmers need to be paid. We want the currency, the blockdag, to be able to function as a corporation so that it can pay the developers to improve the software in ways likely to add value to the stake. # Many sovereign corporations on the blockchain We have to do something about the enemy controlling speech. No namefag can mention or acknowledge any important truth, as more and more things, even in science, technology, and mathematics, become political. Global warming and recent horrifying ineffective and dangerous vaccinations are just the tip of the iceberg – every aspect of reality is being politicized. Our capability to monitor reality is being rapidly and massively eroded. Among those capabilities, are bookkeeping and accounting, which is becoming Environmental, Social, and Governance and is increasingly detached from reality. The latter is an area of truth that can get us paid for securing the capability to communicate truth. Information wants to be free, but programmers want to be paid. Increasingly, the value of shares is not physical things, but "goodwill" Domino’s does not sell pizzas, and Apple does not sell computers. It sets standards, and sells the expectation that stuff sold with its brand name will conform to expectations. Domino's does not make the pizza dough, does not make the pizzas. It sells the brand. The latest, and one of the biggest, jewels in Apple’s tech crown, at the time of writing, is the M1 chip. Which is *designed* by Apple. It is not *built* by Apple. And similarly if you buy a Domino’s pizza it was cooked according to a Domino’s recipe from Domino’s approved ingredients. But it was not cooked in a Domino’s owned oven, was not cooked by a Domino’s employee, and it is unlikely that any of the ingredients where ever anywhere near Domino’s owned physical property or a Domino’s direct employee. Domino's does not cook pizzas, and Apple does not build computers it. It designs computers and set standards. Most businesses are in practice distributed over a network, and their capital is less and less big centralized physical things like steel refineries that can easily be found and coerced, and more and more “goodwill”. “Goodwill” being the network of relationships and social roles within the corporation and between its customers and suppliers, and customer and supplier expectations of employee roles enforced by the corporation. *This*, we can move to the blockchain and protect from governments. A huge amount of what matters, a major proportion of the value represented by shares, is in the social network. Which is increasingly, like Apple and Google, scarcely attached to anything physical and coercible, and is getting less and less attached. It mostly information, which is a present organized in a highly coercible form. It does not have to be. There are a whole lot of government hooks into the corporation associated with physical things, but as more and more capital takes the form of “goodwill”, the most important hooks in the Global American Empire are Human Resources and Accounting. We have to attach employee roles and brand names to individually held unshared secrets, derived from a master secret of a master wallet, rather than the domain name system. With SSL, governments can, and routinely do, seize that name, but that is a flaw in the SSL design, the sort of thing blockchains were originally invented to prevent. The original concept of an immutable append only data structure, what we now call, not very accurately, a blockchain, was invented to address this flaw in SSL, though its first widely used useful application was bitcoin. It is now way past time to apply it to its original design purpose. These days, most of the wealth of the world is no longer in physical things, and increasingly companies are outsourcing that stuff to large numbers of smaller businessmen, each of whom owns some particular physical thing that is directly under his physical control, and who are therefore hard for the state to coerce. One is more likely to get shot when one attempts to coerce the actual owner who is physically present on his property than when coercing his employee who is supervising and guarding his property. And who can switch from Dominoes at the cost of taking down one sign and putting up another. (Also at the cost of confusing his customers.) Uber does not own any taxis, nor move any passengers, and Dominoes bakes no pizzas. Trucking companies are converging to the Uber model. Reflect on the huge revolutionary problem the Allende government got when attempting to coerce large numbers of truckers who each owned their own truck. The coup was in large part the army deciding it was easier and less disturbing to do something about Allende than to do something about truckers. One trucker is no problem. Many truckers are a problem. One Allende … The value of a business is largely the value of its social net of suppliers, customers, and employee roles. Our job is protecting social nets. Among them, social nets who will pay us. And with Information Epoch warfare looming, the surviving governments will likely be those that are good at protecting their social graph information from enemies internal and external, who will enjoy ever increasing capability to reach out and kill one particular man a thousand miles away. Though governments are unlikely to pay us. They are going to try to make us pay them. And in the end, we probably will, in return for safe locations where we have freedom to operate. Which we will probably lease from sovereign corporations who leased the physical facilities from small owners, and the freedom to operate from governments. ## source of corporateness State incorporated corporations derive their corporateness from the authority of the sovereign, but a proof of share currency derives its corporateness from the cryptographically discovered consensus that gives each stakeholder incentive to go along with the cryptographically discovered consensus because everyone else is going with the consensus, each stakeholder playing by the rules because all the other stakeholders play by those rules. Such a corporation is sovereign. ## shares, bookkeeping, and sidechains We then implement sidechains, so that many sovereign corporations will have some place to trade their shares and to keep the narrowly shared immutable journals for their triple entry [book]s. The shares will be on a broadly shared blockchain, but some aspects of the books may well be very narrowly shared and selectively revealed. A total order of a sidechain will be reflected in a total state of the main chain, through the total state of peers that are also managing side chain wallets, or who have clients (or clients of clients) and that are managing side chain wallets, and each client’s total order is Merkle linked into the client’s total state, which is Merkle linked into the peer’s total state, so that the main block chain contains a Merkle link that can prove that machines operating a sidechain are in agreement about a total order for transactions that happened a little time ago. The total order of transactions on a sidechain will be the order in which they get linked into the mainchain. If a peer on a sidechain is a client of a client of a client of a peer on the mainchain, and adds some new transactions to its sidechain wallet, the total order of those transactions within the sidechain is the order in which the main chain gives that total state of the mainchain peer, and within that order the order that the peer gives the total state of the client, and within that order … This does not occupy mainchain space, because a single two fifty six bit hash on the mainchain can represent to the total state and total order of many very large sidechains, with the very large preimage of the hash being known to peers on the sidechain, but not to peers on the mainchain unless they are also peers on the sidechain. A two fifty six bit hash gives unlimited compression, which is lossy in the sense that it is one way compression, but lossless in that if you know the preimage, you can always verify that the hash must have been made from that preimage, and a hash that is the root of a Merkle tree of two fifty six bit hashes gives the same, but with the added benefit that one can generate a short proof that some part of the preimage, possibly a very small part of a vast preimage, a part so small that it fits in single network packet, but part of a preimage so vast that no one possesses all of it, that no one could possess all of it, was part of the data from which that hash was generated. The mainchain is a Merkle dag, structured in a way that makes it possible to give a single total order for the gossip vertexes of which it is composed, and every gossip vertex in the dag is a Merkle tree that reflects, among other things, a total state of two peers on the blockchain, each total state of a peer being incorporated in one and only one gossip event, and every total state of a peer contains Merkle tree that reflects the prior state of the blockchain, and the state of its clients who want their current state committed to the blockchain, and thus whenever one party wants to prove to another party that he is telling the same story to all the parties involved (has not engaged in Byzantine failure) he can generate a short proof rooted in the mainchain. Thus shares and triple entry books will be in the mainchain, even though much of the information in the books is going to be private and narrowly shared. Whenever one man’s computer presents something from the [book]s to another man’s computer, it will present a short proof rooted in the blockchain, rooted in the same hash that everyone can see and vast numbers of people do see, that it is telling the same story to anyone it tells, even if only very few people should be told. What should happen is that every time you make a payment to a business, you get a receipt that is connected by a Merkle chain to a Merkle tree of the business’s narrowly shared books, which is connected by a Merkle chain to the broadly shared main blockchain. [Sox] bookkeeping relies on the books being widely shared among supposedly respectable and highly regulated people, which does not help you much if, as in the Great Minority Mortgage Meltdown, the regulators are engaged in evil deeds, or if, as with Enron and MF Global, the accountants are all in the pay of powerful men engaged in evil deeds. Triple entry [book]keeping with immutable journal entries works in a low trust world of badly behaved elites, works in the circumstances now prevailing, and, unlike Sox accounting, it does not require wide sharing of the books. ## Corporate cohesion The corporation exists by [book]keeping, which enables the shareholders to keep an eye on the board, and the board to keep an eye on the CEO, and our current system of bookkeeping is failing for lack of trust and honour. Corporate cohesion is hard and apt to be fragile. You are apt to have board members that want to participate in executive decisions, want to tell the CEO what to do instead of merely evaluating how well he is doing it and making sure he is not stealing from the shareholders, and executives that have a power base external to the company. And telework and video conferencing does not make this any easier. But while the purchasing officer who is too pally with certain suppliers is always a natural and inevitable problem, and your lawyer apt to be too well connected to the judge and the other guy’s lawyers, the big problem today with state created corporations is that the meddling of the state gives HR, accounting, and the legal department power bases external to the company, undermining corporate cohesion. If HR does not get its way, it is apt to organize lawsuits against the CEO, board, and shareholders. Things can easily fall apart, and a cohesive group of people within the company is apt to push on those fault lines. Corporate cohesion is hard, but the regulatory state is making it harder. Sovereignty will improve the capability of corporations to cohere, because the CEO really will be able to fire anyone, the board really able to fire the CEO, and shareholders really able to fire the board. And, with the corporate [book]s better connected to reality, the shareholders will have better information on whether to do so. A necessary precondition for corporations to function at all is that we fix bookkeeping to work in a world of untrustworthy elites.