Afternoon, All.

Today marks the eighth anniversary of the publication of the Bitcoin white paper.

( Part-one was posted to reddit on the 1st November 2016 )

As a special tribute, I will provide you with a short story on the origins of the Bitcoin tech.

I've been out of the game for many years, however now I find myself drawn back - in part due to the energy that's being added by the incumbents, in part due to information that's become public over the past year.

I haven't followed the Bitcoin and alt coin tech for the past five or six years. I left about six months before (2).

My last communication with (2) was five years ago which ended in my obliteration of all development emails and long-term exile. Every mention of Bitcoin made me turn the page, change the channel, click away - due to a painful knot of fear in my belly at the very mention of the tech.

As my old memories come back I'm jotting them down so that a roughly decent book on the original Bitcoin development may be created.

The following are a few of these notes.

This is still in early draft form so expect the layout and flow to be cleaned up over time.

Also be aware that the initial release of the Bitcoin white paper and code was what we had cut down to from earlier ideas.

This means that some of the ideas below will not correspond to what would end up being made public.

It’s written as a conversational narrative.

It’s the style of writing I’ve chosen to explain how the tech was created.

Most academia write technical details in such a stifled way that it’s pretty much unreadable.

Writing as if a conversation was taking place - discussing how it could work - is much more interesting.

Like a play on a stage or a Tv documentary.

So the text itself is made up however the narrative surrounds what generally happened ( by someone without access to the actual email and IRC messages ).

Even without documented evidence there are a few fixed points I've been able to lock down.

One is the kicking off of the Prometheus project being in the first week of June 2008 due to finding the book from which the project was named.

Other points include the instructions for the two main logos - the gold coin and orange logos from 2010 ( the initial BC logo wasn't built from instructions ).

You must have an HTML5 capable browser.

You must have an HTML5 capable browser.

Six Months In A Leaky Boat

I have always found that there’s a vast gulf between knowledge and understanding.

Wherever I looked I’ve found very intelligent folks who had immense knowledge in their subject but with little understanding of what to do with it, how to mould it, how to create something new.

They could only ever iterate incrementally to improve the knowledge in their given field.

Understanding comes from experiences outside of knowledge in a particular subject.

The following story is about a most unique project and the understanding that was used and applied to the e-cash problem which resulted in the experiment called Bitcoin.

It is to show the thought process, stream of consciousness, arguments, examples, concerns and fears that went through our minds has we tussled with this beast and hammered out something that may actually work.

There is no verification of truth here. There is absolutely no evidential proof that I had any part in the project. All evidence was purged in late 2011 - the reason will become apparent. Only (2) should know of my involvement (until now). Take this as just a fictional story if you wish.

Who am I ? I went by the ‘net handle Scronty back then.

scrontsoft.com

I have always been interested in computer and electronic technology since the age of eleven. Seeing what others had made these machines do, and then trying to push it a little bit further out.

Whenever there was a problem to be figured out I would always begin with what the current state of knowledge was - after all, we all stand on the shoulders of all those who have gone before.

Quite often I found that the assumptions folks hold for a particular problem are the things that are holding them back from figuring out a new solution.

So I would begin by questioning peoples basic assumptions on various subjects

“What if that wasn’t true ?"

"If it didn’t exist what could it be replaced with ?”

This usually resulted in annoying all of these knowledgable folks.

“That’s the way it’s always been”

“That’s the best industry standard for this”

“All the letters after my name means I’m right and you’re wrong”

“That’s what’s written in this book I’m holding”

“Everyone quotes from this person so he must be right - so I quote from him as well”

You get the idea.

You see it on every single message-board since the mid-nineties onwards.

There’re also a lot of egotistical chips on folks shoulders where you’d find that they’d look down on others and belittle them on topics that they themselves had only just learned a few weeks earlier.

This is particularly true in programming and crypto forums.

In the early 1990's I obtained the book The 2024 Report from a second-hand bookstore in Palmerston North, New Zealand.

My copy:

Chapter 6 mentions the creation of a CentroBank in 2005, Computerised Town Meetings and Third World people using CentroBank currency over their own country's fiat currency.

Every few years I'd find the book again and read over some of its content - always coming back to chapter 6.

I'd then hunt down the current crypto community Usenet newsgroups, message-boards, and IRC ( Internet Relay Chat ) channels to find out what was the current state of development in electronic cash.

Each time I was disappointed.

Occasionally I'd see a few folks attempting to create something, only to have everyone else trash their ideas and pull it to pieces.

After a few weeks of searching I'd return to my normal life.

In 2005 I began helping someone develop the tech for an online multi-player tank game prototype.

The IP ( Intellectual Property ) for most of its functionality was on the Win32 Asm message-board where I was a moderator at the time.

In early 2006 the developer made a deal to transfer ownership of the game's IP to a gaming company in return for a position in the company to continue building the game.

That gaming company, to get out of its deal, began a merging process with another gaming company which left the original developer stuck at a desk in an office with nothing to do while they continued development of the game themselves.

During 2006 they began a huge campaign to remove any mention of this tank game prototype from the internet.

That included sending an email to the administrator of the Win32 Asm Community message-board telling him to remove my threads which mentioned the prototype.

I found out almost immediately of the removed threads and messaged the admin telling him to put them back.

He explained some of the contents of the email he'd received and said he couldn't put it back due to IP violations.

This company was saying that the IP I'd created was theirs and that's why the threads were removed.

I told the admin that the threads themselves are proof that the IP is mine and definitely not that company's IP.

I said those threads show step-by-step how the ideas were fleshed out and conclusions reached.

He still refused to put the threads back due to the threatening content in the emails.

I told him that if they were threatening legal action against you, then put the threads back up.

No lawyer would be able to prove that the gaming company had created this stuff before I did.

He refused and said the threats in the email were not from a legal point-of-view and he'd be physically at risk if he put my threads back up.

From that moment on I decided I wouldn't spend my time helping folks on the message-board any longer and that I'm through with spending my time and effort to help others when it could be pulled from the board so easily.

For the next six months I googled the original developers handle and the game and noticed that every fortnight their were fewer and fewer pages with any information on him and the game.

In late 2006 I messaged the original developer asking him what's happening.

He gave me some details as I mentioned earlier and that he was deciding to leave the game development industry for good and never return due to how he had been treated.

By early 2007 there was no-longer any mention of the tank game prototype and the developer anywhere.

At this stage I was looking around for other things to put my mind towards.

I wasn't really doing anything in assembly on the board as every time I went on the board to take a look around I'd see someone who needed help with something then recall the removal of the tank prototype threads and stop myself.

I was very anti-open source up until that time.

The idea of folks coming together to help each other on the development of a project made me think they'd just be making junk software.

To be successful, any software needs to be driven by greed.

One form of greed is monetary gain.

Most of these open-source software developers were doing it for prestige or additions to their resume.

However there was one single thing that these open source software projects had which my previous projects didn't have.

The code was duplicated on multiple computers and folks had copies of the same source-code.

There is absolutely no way a bad actor could come in and force every single one of those duplicated repositories to capitulate and remove or delete their content.

Clearly, if you wanted to restrict how someone could modify the truth you have to distribute the data to as many computers as practical.

If you're restricted to trusting a few admins on a few message-boards, Usenet newsgroups and IRC channels then a few folks can be targeted for advantage.

These jaded feelings pervaded all though 2007 and by the end of the year I hadn't found any open source project that I could sink my teeth into.

Near the end of 2007 I came across my copy of The 2024 Report book again and re-read chapter 6 mentioning the CentroBank.

I again hooked into the various crypto community Usenet newsgroups, message-boards, and IRC channels to find out what was the current state of development in electronic cash.

Still pretty much the same.

I kept the crypto IRC channels up whenever I was online, to go along with the other IRC channels I was keeping an eye on.

ToC

A couple of guys worked with an online betting company.

They had a problem.

For punters to use their service they had to provide credit card details and pay for chip tokens.

However, many times a punter would play the online pokey machines, lose all of their money and then reverse the credit card charge saying “It’s unauthorised. It wasn’t me”.

Sometimes the company’s network would not record the funds transfer correctly and so the punters funds were removed from their credit account into the company’s account but no record of it was made on the company’s end - so the punter didn’t receive any play tokens and, again, tried to reverse the charges.

The large credit card issuing companies also actively stopped allowing credit cards to be used for online gambling and began refusing to reverse the charges.

What these guys needed was a way to transfer funds between punters and the online betting companies so that both parties could trust that everything was above board.

That a payment could not be made by mistake and once a payment went through it was unchangeable, irreversible.

(2) had been on the periphery of the cypherpunks group since the mid 1990’s. When I entered the project in early 2008 he had been working on the problem part-time over the past five years. Over the previous year or so he’d been working on the problem full-time. He was writing a white paper for an e-cash system for the online betting/gambling company to use ( or to license out the solution to multiple companies ) plus writing the code for it.

He was attempting to implement a working example of electronic cash.

There were other cryptographers who he was communicating with however it just wouldn’t “work”. There were always too many attack vectors with the solution and even though, from a cryptographic point-of-view, the white paper and code was appropriate, he found it unsatisfactory.

12th March 2008 (2) asks (3) to help with his white paper and code.

After talking to his friend (3) it was decided that maybe they had their noses too close to the grindstone and that they should find someone who wasn’t a cryptographer to look over the ideas.

The problem is that to find such a person is very difficult. He’d have to be smart enough to understand cryptography (or learn it), also be interested in the subject but also not currently be a cryptographer.

Usually the folks who were smart enough and had an interest were already cryptographers.

Within a week or two (3) begins asking on a few IRC channels for help.

ToC

(3) was asking folks on the crypto IRC channel for anyone who could help him with his friends digital money project.

He needed someone to look it over and see any flaws it has and how to improve upon it.

At the beginning of April 2008 I noticed the chitchat among these crypto folks and kept wondering why they were giving (3) so much grief when all he was asking for was some help.

They really ripped into him, telling him that he was wasting his time, electronic money had already been proven to be impossible, that unless the Byzantine General's problem was solved it would be impossible to move data without double-spending, links were given showing all the info on failed projects, and silence, endless silence while the everyday crypto folks continued to chitchat on irrelevant issues which would never impact the world on any higher level.

After a day or so of coming online asking for help, the aggressive responses stopped and they just ignored him.

Just what the [redacted] was wrong with these people ?

Are they so jaded that they've all just given up ?

Are they so reliant upon the "expert" who were saying it's impossible that they just don't bother to think about it at all ?

The GFC ( Global Financial Crisis ) was just starting to heat up.

This was the time to finally crack this nut and figure out a working solution to electronic money.

Even though I hardly knew anything about the crypto tech - I'd only dabbled here and there over the years but never had a concerted and focused effort in learning the stuff - I decided to contact (3) and ask him what's up with these crypto folks.

He told me that he's been trying on many IRC channels and UseNet rooms and other crypto places ( message-boards, forums, direct emails, etc ) to get anyone with crypto knowledge to help him with his friends project.

"This is pretty much what the entire industry is like nowadays," (3) said. "Most of them gave up long ago. There are a few that kept trying but they are always being attacked like this."

"I know the feeling," I said. "I've helped folks on gaming websites with their projects and had the same type of insults and put-downs fired towards them just like these folks have been doing to you."

"Do you have a lot of cryptographic knowledge ?" (3) asked. "I don't recognise your handle and I've been around these channels for quite some time."

"I'm just in here listening out what everyone's talking about," I said. "I've actually been waiting for someone to come along and talk about global digital money but you're the first one to show up."

"But do you know much about crypto ?" (3) asked. "If you do then I can see if my friend will be ok with having you help us."

Well ... that's a turn-up I wasn't counting on.

I was wanting to listen and learn from folks who were actively working on this type of project.

I never thought I'd be in a position to be involved directly with them.

The lack of knowledge I had which was needed to even understand the discussions taking place, let alone understand how to push the tech so that it actually works, meant I'd definitely be a hindrance to any members of the project.

"I know pretty much nothing about crypto tech," I said.

"That's a real shame," (3) said. "You're the only one who has contacted me favourably over this and it turns out you cannot help at all."

I had to agree with him on that.

"I've always had an interest in the crypto tech," I said. "In the nineties I had a choice between learning crypto or learning assembly language on the Win32 platform and chose assembly due to a few countries treating crypto like munitions and saying you're a weapons smuggler if you play around with it."

"You'll find if you have the correct connections," (3) said. "Or job posts within a university you're allowed to practise playing around with crypto without as much of a problem. But you're still restricted in delving into some of the more darker elements of the tech. They have their real name and real reputation attached to the work. Many others use anonymous handles when they want to play with unofficial crypto possibilities."

"You mean they have their feet planted in both the light and dark sides ?" I asked.

"Yep," (3) said. "If their real identities were discovered they would lose their funding and be removed from their positions at the universities. With the loss of position they lose reputation and their real reputation means everything to these people."

"That's similar to my Scronty handle," I said. "Because it's tied directly with my real identity it forces me to make sure it's only ever used publicly for grey-to-light issues in the computing and assembly communities. For anything darker I go anonymous."

"Isn't this Scronty handle of yours anonymous ?" (3) asked. "It's not you real name, right ?"

"Yeh," I said. "But the top folks in the community know me personally by my name. They know where I live. I've even been around the home of the main founder of the Masm32 project and we know each others names, mobiles numbers, and home addresses."

"Then why bother with the handle then ?" (3) asked. "Why not just use your real name ?"

"It's my main internet handle I've used since I first came online in the mid nineties," I said. "Would folks listen to someone with the name of Gonzo the Great ... or Tim ?"

"What's this assembly community you're talking about ?" (3) asked.

I gave him a link to the assembly community and showed him a few of the threads where I helped folks out on various issues.

"You see that guy asking about xxx ?" I said.

"Yeh," (3) said.

"Well, when he asked the question," I said. "I didn't have a clue as to the answer".

"You see that other guy asking about yyy ?" I said.

"Yeh," (3) said.

"When he asked that question," I said. "I again didn't have a clue as to the answer"

"But you not only gave the correct answer," (3) said. "You also suppled an example program showing it working."

"Exactly," I said. "That's what I do. I really don't know anything about any thing. I don't retain information or recall memories like normal folks. I see something, deep dive into the information about it, think up possible solutions, program them up and confirm they work, and supply it as the answer."

"So you're going from novice to expert again and again ?" (3) asked.

"Yep," I said. "It gets pretty exhausting if the problem is challenging. My head runs hot due to the amount of effort the brain's putting into the issue. Hot like when normal folks get ill and run a fever."

"And this is your normal everyday level of activity ?" (3) asked.

"Not always," I said. "I do have to sleep and recharge before I burn out."

"Pretty cool," (3) said. "Do you think you'd be able to help on this project ? Without having expertise in cryptography I don't think my friend would be interested."

"Just tell him what I've just told you," I said. "Give him the links to my assembly stuff. Tell him that I'll be able to learn about crypto as I try to understand your project and point out issues as I find them."

"I'll try but I'm not sure he'll go for it," (3) said.

"Then tell him that what he really needs is someone that's not a cryptography expert," I said. "You've said yourself that most folks in the crypto space believe digital money is an impossible dream. What makes you think someone like that is what you need to help you ?"

"But why would he believe you can help ?" (3) asked.

"Tell him that you guys are having issues because you've got your noses too close to the workspace," I said. "That because you know crypto you cannot see what the real problem is. Having someone that's got fresh eyes in this space and is also capable of learning it is exactly what you need."

"I'll give it a go and see how he takes it," (3) said.

Quite a few emails were sent back and forth between me and (2) via (3) discussing what their problem is and how I might help.

This went on for a couple or three days.

Finally ...

"He's agreed with everything you'd said," (3) said. "But he's still edgy when it comes to showing anyone what he's trying to do. Trust is an issue here."

"Then why is he bothering to try and find anyone to help him get his digital money project working ?" I asked.

"He's not, really," (3) said. "He asked me to help him because we've helped each other out in past. I told him that we need to bring others on board to help work this out."

"Well, he'll have to make a decision soon then," I said. "I'm interested in this topic enough to start looking into it myself - whether helping you folks at the same time or going it alone. Seeing that crypto folks have pretty much given up on the topic means that someone's got to continue giving it a go."

(3) came back about a day later saying that his friend was ok to at least start seeing if I can help out.

"Great," I said. "Now for communication between us, I don't want my Scronty handle associated with this project at all. I don't want there to be any evidence that the Scronty character has anything to do with anything that some folks may deem to be dubious."

"Fair enough," (3) said. "My friend is of the same mind and doesn't want the public to know what he's doing in private. Are you going to create a new handle to use for the project ? My friend says he uses anonymousspeech for his website domains and email accounts."

I had a quick look-over the website.

"No, I'm not going to go to a mysterious website and enter in my credit card details," I said. "I'm not going to create the email account. He is."

"What do you mean 'He is' ? " (3) asked.

"I want your friend to create an email address for me that I'll use exclusively for our communication," I said. "I don't even want it recorded anywhere on a computer that my IP or my credit-card is associated with this project. I'm going to be completely off-the-books."

"I really don't think he'll go for that," (3) said. "But I'll ask him anyway."

About an hour later ...

"I don't believe it," (3) said. "He agreed that having him set up and control the email accounts is a good idea and that he had been thinking along the same lines. He wants to know how you think they should be set up ? Not hotmail, right ?"

"We cannot use any general purpose publicly used email hosting service like hotmail," I said. "But we also cannot use something that looks like it's a private email."

"Wait, what ?" (3) said. "You want us to use private email accounts that don't look like private email accounts ?"

"Yep," I said. "Your friend is going to create email accounts which look similar to the generic everyday accounts that millions of folks see and use everyday. Anyone intercepting our correspondence will just automatically dismiss them. We're not going to have an account like @supersecretproject.com ."

I told (2) via (3) to generate a new TLD ( Top Level Domain ) for us to use for correspondence on the project so that any current 'net handles are not associated with what we do.

He asked for an example of what I mean.

I gave him a link to one of my Win32 Asm examples and told him to make a TLD that's similar to the generic TLD I was using back then ( the website address in the main file header ).

My old website was using cjb.net - scrontsoft.cjb.net

(3) came back saying that (2) had agreed to create the email accounts and that (2) was wanting my name for the account.

"What ?" I asked, "He wants my name ?"

(3) said, "Yep. And he's waiting right now. Give me your name to use as the account name."

I had to think quickly.

If I wouldn't associate my Scronty handle with this project then like [redacted] would I use my real name !

My full name is Phillip James Wilson.

My father always called me James ( as he thought that was always my intended first name ).

My wife's family were introduced to me as James and have always called me by that name.

But it'd be stupid to just use my middle name straight up.

I told (3) to tell (2) to use "jamie" for my name.

"That's your real name, is it ?" (3) asked. "Jamie ?"

I thought it an odd question to be asked and supposed (3) was just kidding.

"Sure it is", I replied. "It's short for Jim."

"How's Jim short for Jamie ?" (3) asked. "Isn't Jim short for James ?"

"From where I'm from, Jim can be used for both Jamie and James", I floundered. I really didn't know if that was true.

He came back after (2) obtained rcjbr.org and created the two email handles for us.

My email address used the name I'd given (3) to tell (2).

jamie@rcjbr.org

I only found out three years later that they both thought the name I'd given them was my real name, and that (2) had been using his real name all along ( for this super-secret project that we didn't want anyone else to know about our involvement ).

In my very first direct email to (2) I said, "You were supposed to create emails using rcjbr.net, not rcjbr.org !"

"What's the difference ?" (2) replied.

"At a glance rcjbr.net looks similar to cjb.net", I said. "It's supposed to look like one of these anonymous publicly-available accounts. None of them end with .org"

"Well, I reckon it's close enough," (2) said. "If you want to create another email address you can go to anonymousspeech and do so yourself."

All emailing between us from that point on was via these new handles.

I was asked to take a look over what had been written in the white paper and see what needed to be changed as the code implementing it just wasn’t working - the pieces wouldn’t fit together or the whole thing would fail if certain pre-conditions in the network weren’t met.

(2) wanted to publish the white paper before the end of the year (2008).

I began reading through the document - understanding very little.

Hashing and encrypting and decrypting and private keys and public keys.

Different types of hashing algorithms, encrypting then hashing and hashing then encrypting.

Oh my!

“Just tell me what I need to change to make it work” - (2) kept asking me.

“I dunno what the [redacted] I’m reading here” - I replied.

(2) thought that maybe he’d made a mistake and he’ll just try and find someone else.

I told him that he’s going about fixing it the wrong way.

“How should it be fixed ?”, he asked.

“Well, first I need to know what I’m reading. So you’re going to have to give me info on the various crypto stuff in here”, I said.

“No no no”, he said. “ If you learn the meaning of the cryptographic jargon you will be influenced by it and would no-longer be the “non-cryptographer” that we need to look over the white paper”.

I told him that without learning the jargon I cannot read the paper in the first place.

Also - as I learn I will understand more and will be able to tell you what you need to change.

If or when it got to the stage that I’d learned too much and also had my nose too close to the grindstone then I could leave the project and he could find someone else to replace me.

He agreed that having me learn a bit about cryptography may be a good idea (:roll-eyes:).

He told me to get started.

I asked where the information was.

He said “Google it”.

I said “Nope. You’ve been working in this area for the past few years so you can give me a link to the websites with the info."

ToC

He returned with a URL to a website full of crypto-related links and said to go through that and look at the white paper.

It was a list of pretty much every single crypto related article up until that time.

Over 1,700 articles and webpages !

Encryption and Security-related Resources

Crypto Link Farms

Crypto Archives

Crypto Social Issues

Crypto Software

Miscellaneous Security Items Anonymity and Privacy Random Numbers Public Key Infrastructure Security Agencies and Organizations Security Books, Journals, Bibliographies, and Publications Security People Security Problems

Security Products Access Control Data Encryption Interception and Monitoring Investigative Tools Misc Online Commerce and Banking Smart Cards Snake Oil Security Standards, Laws, and Guidelines



Holy [redacted]!

I said, "Are you serious ? Have you actually read any of these articles and website ?"

"Over the past few years I've read through all of these articles and followed all of their links and read those as well, " (2) replied.

By Jupiter, This guy must be insane !

I went up and down the list a few times trying out a few of the links.

I began finding that some of these links had died - the webpages no-longer existed.

Those links that did work usually ended up on a webpage with many more links to articles and webpages.

Once a week had gone by I threw my hands up in disgust and told him “At this rate I’ll be here all year and still not understand all the pieces. You’ve got to filter this down for me. You’ve already read all of these documents and websites so give me a list of the most important docs/websites you think would be helpful in understanding your white paper”.

I told him to reduce this huge list down to the top hundred articles he thought would benefit me to understand his whitepaper.

He returned with a list of website links and said to go through that and look at the white paper.

The list had 233 links in it - bloody [redacted].

ToC

He'd just copied the entire list from the Security Books, Journals, Bibliographies, and Publications section.

I opened up all the 'A' links and began going through the information one-by-one.

Again, many of the links were dead or the webpages had been updated and the information no-longer existed.

After a few days or so I’d gone through about half-a-dozen papers/websites which hadn’t cleared up anything.

I told him to break the list into chunks of 10, ordered by their importance, and to give them to me ten-at-a-time.

The idea being that when I get through one set of 10 he'd give me the next.

He came back with a white paper and website list that was 22 lines long which was a combination of link+description.

He'd just copied the 'A' group from the Security Books, Journals, Bibliographies, and Publications section.

I'd already read the stuff from the working links for 'A' group, but decided that, if it was going to be up to me to choose my own pace of education, I'll use a system.

I went back to the original list for the Security Books, Journals, Bibliographies, and Publications section and opened up all of the 'A' group links into multiple tabs ( Internet Explorer had come out with tabs just a couple of years earlier ).

30% of the links were dead.

Great !

I began reading through the working links - starting at the first.

The Story of Alice and Bob

Alice and Bob have very powerful enemies. One of their enemies is the Tax Authority. Another is the Secret Police.

This is a pity since their favourite topics of discussion are tax frauds and overthrowing the government.

Ummmm, this may be setting the scene for what is yet to come.

Against all odds, over a noisy telephone line, tapped by the tax authorities and the secret police, Alice will happily attempt, with someone she doesn't trust, whom she cannot hear clearly, and who is probably someone else, to fiddle her tax returns and to organise a coup d'etat, while at the same time minimising the cost of the phone call.

A coding theorist is someone who doesn't think Alice is crazy.

Yeh. I like that.

I'd on-and-off over the years heard and read crypto stuff, but this was the very first time I'd decided to put head-down-bum-up and focus on the topic with all my effort.

head-down-bum-up might be a horsing term ( the position you get into when you want to go very fast in a specific direction )

The other thing coding theorists are concerned with is information.

One type of information is called Money.

There are people who refuse to concede that money can be created and destroyed.

They spend their entire lives altering records and making adjustments to ensure that every time a bit of money leaves some place, an equal bit seems to appear somewhere else. These people are called accountants.

So an electronic cash system would need to both create money and keep an account of it.

An Analysis Of Security Incidents On The Internet 1989 - 1995

From - chapter 6

Security Categories: Stealing passwords - methods used to obtain other users' passwords,

Social engineering - talking your way into information that you should not have,

Bugs and backdoors - taking advantage of systems that do not meet their specifications, or replacing software with compromised versions,

Authentication failures - defeating of mechanisms used for authentication,

Protocol failures - protocols themselves are improperly designed or implemented,

Information leakage - using systems such as finger or the DNS to obtain information that is necessary to administrators and the proper operation of the network, but could also be used by attackers,

Denial-of-service - efforts to prevent users from being able to use their systems.

Any electronic cash system would have to address all of these concerns.

Categories of Attack: Interruption - An asset of the system is destroyed or becomes unavailable or unusable

Interception - An unauthorised party gains access to an asset

Modification - An unauthorised party not only gains access to, but tampers with an asset

Fabrication - An unauthorised party inserts counterfeit objects into the system [Sta95:7]

Attackers: Hackers - break into computers primarily for the challenge and status of obtaining access

Spies - break into computers primarily for information which can be used for political gain

Terrorists - break into computers primarily to cause fear which will aid in achieving political gain

Corporate raiders - employees of one company break into computers of competitors for financial gain

Professional Criminals - break into computers for personal financial gain (not as a corporate raider)

Vandals - break into computers primarily to cause damage

Ok.

So it's a real mess out there.

Shame the analysis doesn't really provide a solution.

An Electronic Pearl Harbor? Not Likely

Nope.

Nothing there.

Chablis - Market Analysis of Digital Payment Systems

This shows the typical payment systems as currently practiced by the financial industry.

You have the payer ( customer ) and the payee ( merchant ).

A transfer of value goes from the payer to the payee.

There are so many third parties involved I have trouble trying to keep up of who's sending what to whom.

I go through as much of this stuff as possible - trying to get my brain to retain some of it.

Computer Immune Systems -- Research

This is interesting.

Treating a computer security system like an animal's immune system to protect it from outside antagonists.

Immunologists have traditionally described the problem solved by the immune system as the problem of distinguishing "self" from dangerous "other" (or "nonself") and eliminating dangerous nonself.

This is something I've thought about for a long time.

There's no such thing as Evil vs Good or Capitalist vs Socialist.

There's only ever been Us vs Them.

And we only need to decide who is in the Us group and who is in the Them group.

It would have at least the following basic components: a stable definition of self, prevention or detection and subsequent elimination of dangerous foreign activities (infections), memory of previous infections, a method of recognising new infections, and a method of protecting the immune system itself from attack.

Credit Card Transactions

This provides an overview of a credit card payment process.

A single-page is here.

It mentions the First Virtual payment system:

Advantages: Neither buyer or seller needs to install any software in order to use the system.

Buyers are virtually 100 % protected from fraud. No charges are processed against their account without their confirmation.

Purchases are essentially anonymous. The merchant is never given the buyer's name from First Virtual.

It is extremely easy to become a merchant, or seller, under First Virtual. First Virtual does not screen merchants, nor do they require merchants to have a special business accounts established with a bank. All a person needs to sell merchandise, services, data, etc.. over the Internet is an ordinary checking account.

First Virtual has very low processing fees compared to other Internet payment schemes or even straight credit card processing.

Disadvantages: Merchant assumes all risk!

Extremely long waiting period between when a sale is made and when payment is deposited in the merchant's account.

In the Appendix - Related Topics it mentions e-cash and micropayment systems.

It talks about DigiCash and how it's really just an e-cash system to help banks transfer transaction data across the internet.

Micropayments are said to be in the realm of 1, 10 or 15 cents, which is lower than the fee for actual credit card processing.

All of these things piggyback the current financial payment systems.

Cryptography and Number Theory for Digital Cash

Now we start getting into the meat and potatoes of it all.

An encryption algorithm must be associated with a reverse procedure that restores the original message.

Algorithms--such as DES or RSA--are, in general, publicly known. This has the advantage that any weaknesses in an algorithm can be found by researchers.

Any attempt at "security through obscurity", by keeping an algorithm secret, is usually self-defeating, because it will most likely simply mask weaknesses in the algorithm itself which could be exploited by anyone who has figured out what the algorithm is.

But when a good publicly-known algorithm is used, security depends on the length of the key, which may be thought of as a string of 0s and 1s used in the algorithm to transform the data.

Ok.

So don't roll-your-own encryption algorithm.

I make a proggy ( small program ) to test out the idea of using XOR addition to change a string sentence inputed by the user into junk and back again.

Encrypted message C = M + k

Where M is the message data and k is the key.

If M = 1011 and k = 1010 then C = 0001

If the encrypted message is XORed with the key again, we get the Message back.

So M = (M + k) + k

Security depends on the length of the key k.

In general, for a key of length N, there are 2 to the Nth power (2^N) possible keys.

A brute forced attack can now break DES which has a key length of 2^56 (2 to the 56th power).

2^128 is quite secure.

Electronic code-book (ECB) mode encrypts each 64-bit text block individually.

Cipher Block Chaining (CBC) is a mode of DES encryption in which the current 64-bit plaintext block is XORed with the previous cipherblock before encryption with the 56-bit DES key k.

That's seems a wee bit weird.

So if you've got 4 chunks of 64-bit data, then you:

Encrypt the first 64-bit chunk with DES (2^56)

XOR the second 64-bit chunk with the results of the previous step

Encrypt the second XORed 64-bit chunk with DES (2^56)

XOR the third 64-bit chunk with the results of the previous step

Encrypt the third XORed 64-bit chunk with DES (2^56)

XOR the fourth 64-bit chunk with the results of the previous step

Encrypt the fourth XORed 64-bit chunk with DES (2^56)

Cipher Feedback (CFB) is the same except the XORing happens after encryption.

The biggest problem here is that both people involved in moving data ( transmitter and receiver ) need to have the exact same key.

This means you need to find a way to send the key to the other person in such a way that it cannot be intercepted and known.

This might include embedding the key inside a digital image and emailing the image to the person ( or place the image on a website and tell them to have a look at it ).

XOR is a type of symmetric key algorithm.

Public key, or asymmetric, systems, by contrast, use two different keys for encryption and decryption.

Public key systems are typically based on relationships from number theory, and the process of encryption works by raising the message M to some power a: C = M^a.

Decryption works by raising the encrypted message C to another power b: M = C^b.

The first key, or power, a will be known to everyone--hence it is called a "public" key-- while the key b will be kept secret by the user--hence it is called a "secret" or "private" key

Diffie-Hellman & Discrete Logarithms

It provides a secure way for two parties to agree on (negotiate) a shared symmetric key by which to encrypt their current exchange of messages.

So you can switch public keys and no-one will be able to read the messages ?

Brilliant !

No more having to find special ways to swap keys.

The secret random integer values shown in Steps in Negotiating Diffie-Hellman Key Agreement seem to have been selected so that the algorithm comes out correctly.

Choosing any other random value and the equations fail.

Let's see if the RSA Public Key System steps are any better.

Get two large primes p and q

Modulus n = p*q

Euler's totient t = (p-1)*(q-1)

Then it loses me when trying to describe how the public and private values are computed ( because it doesn't say )

Hash Functions & Digital Signatures

Digital signatures are hashes of messages that are encrypted with a private key.

Recipients can decrypt using the public key to verify the hash was signed

A hash of the message can be made and compared with the decrypted hash to verify the data has not been altered.

It's recommended to use SHA-1 for hashing which creates 160-bit long hashes.

Blind Signatures

Suppose a customer wants a bank to sign a piece of digital cash with the serial number x, but does not want the bank to know which piece of cash it is signing.

By using a blinding factor r, where (e, n) is the bank's public RSA key, the customer give the bank x*r^e mod n

The bank signs this with its private key which allows everyone to use the banks public key to confirm it's valid.

The bank cannot know whose cash this is belongs to - only that it is valid.

Only the customer can decrypt the cash to be passed along to another person.

Double-spending Identification

One way is using Zero-knowledge Proofs & Schnorr Protocols

You prove who you say you are by signing a random number supplied by the merchant with your private key.

The merchant uses your public key to confirm that the random number is returned.

I start up a conversation with (2) again to discuss everything I've read so far so that my understanding is correct.

"Wouldn't Man-In-The-Middle attacks be possible with this system ?" I asked. "Someone that's in the network between the merchant and the customer could send their own random number to the customer and confirm the proof and then in turn sign the merchant's random number with their own."

"They wouldn't just have a random number," (2) said. "They'd include something that's specific to the customer like an email address or mobile number. A Man-In-The-Middle wouldn't be able to spoof that as the customer would enter the email address into the merchants payment system."

"Unless the payment system is on a website and that website has been compromised," I said.

"Then the merchant would never be included in that transaction, " (2) said. "It'd be a facade site that just looks like a real merchant and the merchant would know nothing about it."

"So how would we stop that from happening ?" I ask.

"There's this thing called two factor authentication or 2FA," (2) said. "It means that whenever you want to make a transaction that you want to protect the software will send you an email with a link or an SMS message with a passcode which allows the transaction to go through. Any Man-In-The-Middle wouldn't have access to your email or mobile phone so it makes the transaction safe."

"That makes sense I suppose, " I said. "If someone has access to your email account or phone your probably [redacted] in many other ways."

"Yep, " (2) said. "If they had the email account or phone device they wouldn't even be bothering trying to pretend to scam you out of an online purchase. They'd move money directly out of you bank account directly."

"And what about this Schnorr signing thing ?" I ask.

"Don't bother with that one, " (2) said. "Elements of it have been under patent for the past few years so no-one is going to use it until the patents expire."

"Kinda like the GIF patent, right ?" I said.

"What ? The image format ?" (2) asked.

"Yeah," I continued. "At the end of the 1990's the patent for the GIF file format was sold and the new owner begun filing legal notices to everyone - mainly large companies - to cough up the funds to license the format. It was the number one image format on the internet at the time and this was during the dotcom boom."

"So what happened ?" (2) asked. "We use PNG and JPG files for images now, don't we ?"

"Yep," I continued. "A thread began on CompuServe about how we should fight this patent by creating a new image file format that had the benefits of GIFs - transparent backgrounds - and compression similar to JPEGs. Over time the format was decided upon and coded up and out popped the PNG file format. The format was so much more superior to GIF that it ended up superseding it."

"Not's not completely true though, isn't it ?" (2) said. "GIF animations are still all over the internet today."

"Well, the use for animation was also part of the discussions," I said. "Should we include the animations inside of PNG like GIF or not. In the end there was a second file format called MNG which was an animation-specific version of PNG. It never really took off and GIF was kept for having animated images."

"So why did we head down this path on GIF patents for ?' (2) asked.

"Because, " I said. "By the time the Schnorr patents expire the community might've come together and created something superior to it, making it obsolete."

"You don't know the crypto community very well, do you ?" (2) said.

We continued to talk about the various aspects of crypto usage and I carried on reading through the cryptographic resources.

I bounce around a few links and websites like cryptodox and end up on an NSA site which explained Elliptic Curve Cryptography.

What was really quite interesting is the table comparing the differences between RSA and Diffie-Hellman Key Size and Elliptic Curve Key Size.

Key Size (bits)

Symmetric RSA and Diffie-Hellman Elliptic Curve 80 1024 160 112 2048 224 128 3072 256 192 7680 384 256 15360 521

This means that if we wanted to have really stronger encryption over the internet we should choose Elliptic Curve encryption because we could then get the equivalent of an RSA key of 15,360 bits with only 521 bits of Elliptic Curve.

Even just using to lowest level ( 160 bits ) would yield the same security as an RSA using 1024 bits.

To use RSA or Diffie-Hellman to protect 128-bit AES keys one should use 3072-bit parameters: three times the size in use throughout the Internet today.

The equivalent key size for elliptic curves is only 256 bits.

After going through a few dozen websites and articles I decide to give the brain a rest and look around for any electronic cash specific articles.

I skip down to the Online Commerce and Banking section.

Internet-based digital cash seems to have something on e-cash.

As private as cash ? Even a scheme designed to allow direct peer-to-peer fund transfers, without the intermediation of an entity functioning as a bank, could be configured to keep records of every transaction.

The return of bartering ? Yet the concept of merchant and consumer will inevitably change; we will see much more person-to-person buying, selling, swopping and bartering.

I bounce around a few of the various links on this site.

At one stage I end up on Magic Money Digital Cash System

It mentions using ecash in specific denominations of powers of 2 (1, 2, 4, 8, 16, 32, 64, 128...).

This went on for a couple of weeks until the websites and articles began repeating each other.

(2) and I would be discussing some of the stuff I'd read and he'd come back with references from sources I was yet to come across.

Some of the definitions for ideas and examples were quite peculiar and obscure.

"So which link is this info from ?" I queried. "I haven't read about that anywhere."

"This link here," (2) said, as he posted a URL to the article or reference.

"Interesting stuff," I said. "But where in the [redacted] huge list you gave me did you get this from ? There might be related items nearby."

"Oh, I didn't get this in that list I gave you," (2) said. "I've been scouring the crypto UseNet and mailing lists for quite some time and have dug through many of the references given in the reference section of any articles and white-papers that I've ever come across."

"When do you have the time to read all that ?" I asked.

"I'm a fast reader when I have to be," (2) said.

There's just no way he could've read every single item in this huge list, plus the articles listed in many of the linked websites, plus all the references listed in each article.

That would've taken years.

Surely a lot of skipping would've happened.

After a couple of weeks intensively going through the list of articles I came to the conclusion that (2) hadn't actually read much of the stuff on this website page.

He'd read the specific topics, however he'd come across the information from alternative sources.

When we'd discuss RSA I'd be referencing from articles within the huge list and he'd reply with links to sources outside that list.

Every. Single. Time.

So if this wasn't the main list he'd used to learn what he needed to write his whitepaper then surely I wasn't locked into it either.

Instead of going though the articles and websites one-by-one in order I decided to start randomly moving up and down the various sections and following there references to other sources just like (2) had done over the years.

ToC

The crypto is crypto and you really needed a mathematicians mind to wrap your head around some of this stuff.

And many, once they're inside that particular headspace, can never leave it.

That's when you see articles written by an expert mathematician that only other expert mathematicians could possibly understand.

But many of the crypto solutions to the double-spending problem were so archaic and difficult to comprehend that even the experts were baffled and it often came down to "I trust this person not to damage their reputation so I'll agree with their conclusion".

Or the rebuttals to white-papers were equally baffling.

I've been in this type of situation before.

During the Win32 Asm days I had to move 3D objects in 3D time and space.

One way of doing this was by using 4x4 matrix computations.

Rotation and translation on the x, y, and z planes plus scaling.

During normal programming you want to spend your time on the higher level objects and abstract the difficult math away.

And so you deep-dive into the math for matrix calculations and create program functions which allowed you to tell it where your object is, where it's facing and its velocity and have a function pop out where the program should draw it upon the screen.

After creating many matrix functions for everything from rotation of simple static objects, to how a car moves along a street, to how an aircraft banks and turns, to how a space craft rotates and thrusts, to how the camera works, you end up with the entire mathematics abstracted away and no longer have to deal with it ever again.

You only need to know which function to choose and how it will move your object.

I needed to find something similar for this electronic cash double-spending solution.

Surely someone out there would've done the same as I had done and abstracted the complex stuff away so that normal folks could use and understand it ?

I scrolled the huge list down to where it mentioned well-known crypto folks and I began to read through them.

Security People Links to home pages of cryptographers

Links to cryptographers

Ross Anderson

Mihir Bellare

Steven Bellovin

Eli Biham

Wei Dai

Dorothy Denning

Oded Goldreich

Shafi Goldwasser

David Jablon

Bob Jenkins

Phil Karn

Lars Knudsen

Markus Kuhn

Stefan Lucks

Terry Ritter

Ron Rivest

Phil Rogaway

Greg Rose

Ken Shirriff

William Stallings

Doug Stinson

Serge Vaudenay

Boudewijn Visser

Bennet Yee

Yuliang Zheng

Some of these links went to websites I'd already visited.

I kept going through one-by-one and to any links they had on their sites.

It was becoming clear to me that the whitepaper that (2) had already written wasn't going to work due to its reliance upon a third party server for time-stamping.

We kept referring back to articles and webpages in this giant list.

(2) would mention something and give a link to some obscure reference and I'd reply with a link to another article.

For the coming months we were going back and forth validating and backing whatever we were saying with references to experts.

ToC

After working steadily through many crypto articles and websites, learning the crypto basics and seeing how they applied to what (2)'s white paper was saying, I came to the conclusion that his version would fail just like all the other previous electronic or digital money attempts over the years.

I could finally see why all those folks on that crypto IRC channel were giving (3) so much grief when he was asking folks to help him and his friend on this project.

I told (2) that I really didn't see how his version of electronic cash would ever fly.

"I'm out," I said.

"What do you mean out ?" (2) asked.

"I'm done trying to get your electronic cash thing working," I said. "It's just never going to work when you've got to trust a single server for the time stamping mechanism."

"Then we'll use half a dozen," (2) said. "We'll use ten, twenty servers for the time stamping."

"The number of servers is not the issue," I said. "If there's a single server that the network depends upon then the network will never be safe."

"Are you saying that if we've got a hundred servers doing the time-stamping and having the software randomly choose which one to use for each transaction transmission, that the network itself is unsafe ?

"You're not getting it," I said. "If there's a single server that's controlled by a single entity then the network will never be safe. There will always be an attack vector from within that entity. Having a thousand servers controlled by a single entity has the same risk as a single server controlled by a single entity. It's the elephant in the room that the computer security industry always ignores and pretends is not really there. The attack vector comes from the employees of the server owners. You must trust the server administrators."

"So what do you propose we do ?" (2) asked. "I'm not going to give up now. I've put too much of my own time and money into trying to get this working."

"There's been the occasional person saying what to do about this," I said. "The only possible way for this system to work is if we use a peer-to-peer network."

I look back through my notes and bookmarked URLs and pass along every place I'd found in that huge crypto list where someone mentioned using peer-to-peer connections to remove trust in third party servers.

"Yeh, I remember reading some of these," (2) said. "But you can only create a network like this if you also solve the Byzantine Generals Problem. Everyone agrees that it's impossible to solve. People far smarter than us have been working on the solution for years, decades. We cannot use a peer-to-peer network. You'll notice that those people who say to use P2P don't actually show a working solution."

"Well, without being able to use a peer-to-peer network this thing will never work," I said. "So I'm off the project. Good luck with it."

"Can't you figure out a way to use P2P but without needing to solve the BGP ?" (2) asked. "If P2P is what I need to get my digital money system working then that's what I want."

"You said yourself that the entire industry believes it's impossible," I said. "Do you really think we can go up against 100,000 experts with a million hours of expertise between them ?"

"You said you'll help me with this," (2) said. "I even went out of my way to create private email accounts for us to work on this project. You can't just leave."

"Sure I can," I said. "I only ever said I'd try to help you. I never said I'd succeed. I even said if or when there came a time I could no longer help you on your project then I would leave."

"But what should I do now ?" (2) asked.

"Just go with the white paper and code as you currently have it," I said. "Use some of the ideas and modifications we've discussed over the past month and a half."

"I want this to work," (2) said. "I want this to be better than any of the previous digital money versions. You've convinced me that it must use P2P and I don't want to make something that's second-rate."

"Well, that's what you're going to have to do," I said. "Use your idea of using multiple servers for the time-stamping. It's not the best solution, but the best solution is currently impossible anyway."

"All right then," (2) said. "I'll have the time-stamping servers set up as a P2P network so that attackers can't take them all out."

And here ends my involvement with (2)'s digital money project.

ToC

Over the coming week I felt relieved that I was finished on that project.

It really didn't seem it was going to go anywhere due to the inherent problems being the exact same problems all the other past failed attempts had.

But this thing kept niggling at my brain.

I remembered how folks act in group settings.

When someone tells a joke there's often a slight pause while folks in the group hesitate and wait for signals and signs that the joke was funny to the group and it's Ok to laugh.

The very worst thing to do in a group is to laugh out loud to a joke you thought was funny but your peers didn't.

You instantly get bad looks from them.

Frowns, shaking of the head.

Far better to keep quiet until the group tells me it's Ok to laugh out loud.

These signals are usually not of a conscious nature.

Our brains pick up these signals automatically and the reaction it automatic.

It's the thing that gives us stage-fright.

The fear of being ostracised from our society, our peers.

The same thing would be happening to these 100,000 crypto experts and academics.

The 100,000 experts are incentivised to conform with their peers otherwise they'll be ostracised from the community, lose their funding and be thrown out of their universities.

These experts cannot think or write about anything radically different to what all their peers write and think about.

Their papers only provide incremental improvements on top of currently accepted theories and beliefs.

When a few folks studied Quantum String theory in the mid 1980s the entire scientific world descended upon them, crushing them.

Until a few more prominent researchers also studied it and began to say it may be correct.

There might actually be a solution to the Byzantine General's Problem but it cannot come from anyone currently working within the field due to peer pressure.

To [redacted] with it ! I'll give it a go myself !

I'm still going to need to chat with someone who has a lot of cryptographic knowledge.

I look through the UseNet and mailing lists for possible candidates.

Some of these folks appeared familiar - either from the crypto articles I'd previously read or from being mentioned by (2) and (3).

Looking through a short list I come to the conclusion that It may be better to have someone else communicate with these folks directly.

I thought not one of them would go out of their way to create anonymous email accounts for us to correspond through.

Even though (2) and (3) weren't as high in the crypto world and as knowledgable as the folks I wanted to interact with, they had factors which placed them far above any of these others.

They were driven.

Especially (2).

He really wanted a practical working solution to digital money.

They'd already proven themselves by their actions.

Their reputations with me were completely merit based.

Many of the high level crypto folks were busy stroking their egos on the message-boards and mailing lists and IRC channels.

Many just wanted to argue and never actually produce anything concrete.

There were still issues with how (2) communicated and misunderstood some of the things we discussed.

Some of the links and information he gave were really hard to understand or see the relevance to the topic.

But he was tenacious.

And sometimes being tenacious and driven is far more important than going through life on idle.

I'm going to have to see if they'd be interested in helping me on my own electronic cash project.

It's very likely they'll tell me to go and jump, but it would be worth making the attempt.

There was something else that had been talked about since the early nineties.

With the advent of the internet we should begin to see folks coming together from all over the world to work briefly on a project and then moving on to other projects.

That hardly ever occurs.

It happens in a few startups.

For my project I wanted to see just how far the bar could be pushed.

Have folks from all over the planet join in to help on a project.

Some stay for a short time.

Some stay for years.

And to make it impossible; Each person didn't know who the others were.

Anonymous folks coming together to work on a super secret project.

A shield to protect them all.

A project, if it succeeds, that will have a greater influence on the human species than any other normal project where folks were in the same physical location.

Trying to find a practical solution to the Byzantine General's problem without it relying upon a third party was impossible.

Or was it ?

In The Hitchhiker's Guide to the Galaxy, there was this concept of an Infinite Improbability Drive.

The idea is that there really isn't anything that's impossible.

Just merely improbable.

And if you could calculate the improbability of something occuring, you would then be able to accomplish that thing.

So if I could figure out the improbability of figuring out the solution then I'd be in with a chance.

I'd have to start going through as many message-boards and UseNet groups as I could and try to extract their membership lists and filter out any duplicates.

Then try and find the average years of experience they have in the industry.

And from that see if I can guessimate just how many years of expertise is against me figuring out the impossible solution.

In the first week of June, 2008, I contacted (2) again and told them that I was going to give it a go and figure it out myself from scratch.

"You're not going to use any of my work," (2) said. "I only brought you on board to help me with my project. Not for you to go off and do your own based upon my stuff."

"I won't be using anything that you've come up with," I said. "You have been involved in the conversations over the past month or so, haven't you ? Or have you just been a delegate for someone else and I've been talking to another instead of you ?"

"No, you've been talking to me all along," (2) said.

"Then what part of <This [redacted] just won't work> don't you understand ?" I said. "I won't be using any of your stuff because from my perspective it's all broken because it's using ideas from previous flawed attempts. I need to start from the very beginning and work from the ground up."

"So why are you telling us this ?" (2) said. "Just go ahead with it and we'll carry on with my project. When you publish a whitepaper or release code you'll know for certain I'll be checking it for any similarities."

This wasn't going very well.

"You misunderstand me," I said. "I need folks to help test any of the ideas and solutions I come up with. To make sure I don't miss some fatal flaw."

"So what are you saying ?" (2) said.

"I want you both to help me while I figure this thing out," I said. "If I succeed then you get the digital money system you want. If I fail then at least we made the attempt."

"What ?" (2) said. "You now want us to work on your own project ? What the [redacted]!"

Oh dear.

He wasn't very pleased with the proposal.

"Look," I said. "Your project is still there, right ? You can continue as you are and also try and help me do the impossible. As I figure anything out you can modify your own project to include it."

"All right then," (2) said. "It's good to see you're back on the subject again. How long do you think it'll take to come up with a solution ?"

"Dunno," I said. "It's taken the crypto and computing world a few decades to fail to deliver a solution. So give me at least half a decade to fail also."

I read a book called The E-Myth Revisited which talked about leveraging others so you can amplify the work being done.

I decided to begin my project by using as much leverage as possible.

Effectively this would mean trying to get (2) and (3) to do absolutely everything outside of the actually figuring out solutions to the problems.

(2) and I were discussing the idea of using a Development Name for the project so that we could talk about specific ideas with others without them cottoning on to what we were trying to create.

I was telling him about how Microsoft's Windows Vista was called Longhorn during development.

(2) said, "It should be something more specific to the project, but not too obvious. Maybe something from the ancient Greek myths."

"It's odd that you should say that, " I replied. "About a week ago I bought a Greek Myth book from a local book store. It covers all the greek myths."

My copy:

"You're kidding me ? " (2) said. "You have really just bought a book on this ?"

"Yep, " I said. "I'll go through them one-by-one and you choose which one we should use."

"Ok," (2) said. "Go for it."

"There's a few dozen here, so it may take some time, " I said.

"Here we go..." I began. "It begins with Land, Sea and Sky myths ..."

When we got to page 134 it mentioned Prometheus stealing fire and wisdom from the gods.

"Put that one aside as a possible choice, " (2) said.

We continued, with me typing out each myth, god and titan and both of us discussing and dismissing each in turn.

After an hour I was beginning to think I was doing this "leverage others" a wee bit wrong.

Instead of leveraging (2) to do work and come up with a name I was now expending even more energy than I would've if I just did it all myself.

I'm going to have to re-access this leveraging idea again after this and decide which tasks I do and which tasks others do.

When I got to page 249, Prometheus appeared again.

This time it expanded upon what we'd read earlier and said Prometheus saw that [humans] lacked some of their basic requirements and so he stole fire, crafting and metalworking skills from the gods and gave them to [humans].

"That's the one !" (2) exclaimed. "We'll use Prometheus as the development name for this electronic cash project."

"Are you absolutely sure ? " I asked. "That first mention about Prometheus had a picture of an eagle pecking at his body. Not a good omen. Surely you can't be serious ?"

"It's the best choice so far, so let's use it, " (2) said. "And don't call me Shirley."

For the coming months we used Prometheus as the project cover-name in some correspondence.

ToC

I had to start from the very beginning.

Or begin at the start.

Given a computer network there had to be transactions sent to a recipient.

(2)'s previous white paper was pretty much a shuffling of the various cryptographic e-cash white papers at the time.

We knew that when someone wanted to send a payment to another person it would have to be transmitted across a network securely.

But how to solve the double-spend problem ?

A piece of physical paper cash can only be in one place at a time - you cannot double-spend a physical currency note.

All current electronic cash solutions relied upon a central server to control the allocation of coin and to make sure no coin could be double-spent.

But if that server went down, or was unaccessible due to a DDOS attack or government intervention ( or someone just tripping over a power cord ) then no more money.

We knew that a coin would initially be minted somehow.

I found most of the methods written in white papers and on websites were rubbish ( Personal opinion here. No disrespect to those who wrote those white papers ).

They either tried to pretend to act as central banks or tried to allow a “mates club” whereby they all agreed who's going to get coin at a particular time.

Kind of like politicians using an "independent" third party to give themselves a pay rise.

We knew that a piece of electronic cash would be minted somehow, however once it was minted how could it be sent to someone else ?

(2) and I went back and forth with a few ideas, going through the physical process of different transaction types one by one and adjusting how a transaction data package would look like.

We began with a single piece of e-cash.

Like a piece of gold, it should be able to cut smaller pieces off of it.

That means by starting with one item we’d end up with two - the piece going to the recipient and the change coming back to the original owner.

I told (2) that when drawn into a diagram it looks like a neural network.

If we had a large piece and were paying that entire amount to someone then the input and output pieces would be the same.

If we had a large piece and were paying a small amount to someone then the input would be the large piece and the outputs would be the amount being paid plus a small piece as change.

As more people are paid we’d end up with a lot of small pieces in our wallet.

If we had a small piece and needed to pay someone a large amount then we could combine multiple small pieces to be equal or larger than the amount to be paid, and refund back to ourselves any change left over.

This means a transaction would have to allow multiple inputs and multiple outputs, with each input signed by the current owners private key and the outputs being the new owners public key.

One day he came back to me saying his friend (3) wanted to communicate directly with me but he was a super-paranoid fella and I had to encrypt any messages using private/public keys.

It was a [redacted] nightmare.

I had to:

Generate the private/public keys

Make sure the public key was sent to a very specific location so that we could “trust” that the public key was valid

Use this quirky little command line proggy where I included my email address plus a link to the private key

Embed the generated data into the email

This was all so he could confirm that the message was indeed from me and had not been intercepted or changed.

Then he decided that I’d also have to generate new private/public keys for every single email just in case a previous email had been intercepted.

I told (2) that this just wasn’t going to happen.

I’ve always disliked using command line programs directly and always thought that they should always be executed from a GUI ( Graphical User Interface).

I said “You’re going to be my filter for this project and main conduit in this team. I send emails to you, you communicate with whoever you need to and send their replies back to me. Or you send their requests to me and I reply back through you.

And what’s this annoying command line proggy anyway? What the [redacted] is it doing?

(2) gave me the link to the information - it wasn't in that list of 1700+ docs/websites at all.

It was to Hal's website where he very clearly explained how something called "Hashcash" worked.

Hals RPOW

He explained quite clearly how proof-of-work functions.

The idea of RPOW ( Re-usable proof-of-work ) is to generate a token ( coin ) once and be able to reuse it similar to folks reusing physical coins when they hand them to each other for payments.

His site mentioned something about bit gold with a link to Nick Szabo's Shelling Out article.

It was an interesting read, however it never mentioned what bit gold was about.

I followed a link on the Shelling Out page to Nick's main table-of-contents page

Starting with the first article, I began to read each one to try and find information about this bit gold Hal had alluded to.

After a dozen articles I gave up and decided it was probably something similar to all the other ideas out there but using Reusable Proof-Of-Work as the coin.

From there I went on to Adam's site:

Hashcash

(which was also not even in the original huge crypto list at all).

I read the Hashcash white paper sections until I hit the calculations and my eyes begun to glaze over.

ToC

I read the first few paragraphs and knew this was something interesting.

I asked (2) if he could check whether this document was the final version or if there had been improvements/ amendments/ updates to it.

He said he thought I was wasting my time with this and I should continue with the other docs/websites in the list he’d provided me.

I told him that I’m the only one who would know what info is important and to look into the Hashcash origin for me.

He came back a couple of days later and said it was confirmed that the public document linked was the final version of the Hashcash paper.

I asked how he could confirm it?

He told me that he’d contacted the original website author Hal and asked him for any updated document and Hal had replied back with the exact same public link.

He’d even copy/pasted Hal’s reply in the email to me.

I said “Wait… What ? …”

“You actually contacted the original author of the reference material ?”

He said “Yep. Who else would I go to to confirm the document, except to the author themselves ?”

I told him it was really quite rare to have someone check with the original author or sources.

Most folks read something and take that as fact, or read the reference documents and take those as fact.

If someone read about the Boyer-Moore search algorithm they take it as fact that what they’ve read is the official final solution.

I haven’t heard of anyone contacting Boyer or Moore to check for any updates/ improvements/ amendments.

The Boyer-Moore search algorithm is something that went through the rounds on the Win32 Asm community forum for a while.

I found this quite intriguing.

Even with (2)’s occasional grating personality it would be very useful to have someone who’s prepared to hunt down the original authors like this.

I asked him if he'd contacted the Hashcash author and he said he'd sent emails to every single author of all of the websites/ white papers and only about a dozen or so had ever replied back to him.

I had begun to write up a list of what the various problems were for creating an e-cash system from the other e-cash system white-papers and websites I had been studying.

I was still referring back to the white paper (2) had supplied me however it was really just a mishmash of what everyone else had been doing over the years.

Hence why it failed like all of the others.

One of the problems was a trusted time stamp so that folks would know that funds hadn’t been double-spent.

Another was the minting of the tokens in the system and trusting the minting source.

If I recall - practically every single white paper out there ( including the one suppled to me ) used a trusted third party as the source for a time stamp and a convoluted method to check it hadn’t been tampered with.

And the minting either used a trusted third party to generate coins on a regular basis or had a network of nodes agree on how many tokens to generate and give to each other.

(2) said that we need to use the trusted third parties because how else can we trust the time stamp and the minting of the tokens.

I told him he was thinking of it in the wrong way.

You’re assuming a trusted third party is needed, just because every single other cryptographic white paper says that’s how you do it.

But you’re also saying that you can’t rely on a trusted third party because that makes a single point attack vector that can bring the whole system down to its knees.

“Remember Sherlock Holmes” I said. “ ‘When you have eliminated the impossible, whatever remains, however improbable, must be the truth ?’.

The assumption of a trusted third party in a functioning e-cash system must be eliminated as impossible for this to work.

So if we cannot have a trusted third party for this, what are our other options ?”

“I have no idea”, (2) replied. “Do you believe this proof-of-work thing you’re looking into can be used for this somehow ?”.

"I dunno. It definitely has some possibilities. It’s made for making sure the data being sent and received comes from a known trusted source and that it hasn’t been tampered with. The sender's and the recipient's email address is part of the header. If the sender email is the same as the person who sent it to you ( the Return address ) and the hash of that header matches the one you generate then you know it's coming from the same person."

It forces the user's computer to generate a hash of the data to find a hash with a prepended number of zeroes. If the hash isn’t found it increments a value and hashes again. It just keeps repeating until a hash is found with the correct number of prepended zeroes.

This means that the user's computer has to spend time working on the hashes until it finds one and only then can it stop.

It was designed to eliminate the email spam problem that we all have because a spam-sender would need to use a lot of computing resources to generate hashes for all the emails sent out ( the data that’s hashed includes the recipient's email address so a new hash is required for every single email recipient ).

It also has a throttle so that the difficulty in generating a hash can be increased over time as the general computing hardware improves.

The minting problem is also sorted due to the electricity used in generating a hash can be used to mint the e-cash and put it into circulation.

Effectively - the real fiat-currency cost ( via electricity consumed ) of generating the valid hash is how much e-cash is given to that minter.

It also sets what the price of the minted e-cash should be, as there is a direct correlation between a real-world electricity bill and the digital e-cash amount minted.

Taking the time used to generate the hash with how much energy the cpu used during the generation ( only the time spent on hashing - not other computing resources ) with the local electricity costs of the suburb/county/province/state/nation the minter resides within, then each minter could have a locally-adjusted e-cash value added to their account.

It would mean that someone minting in a country with cheap electricity due to state-subsidised support would receive less e-cash because less real-world fiat currency was expended in the generation of the hash.

So now we had a mechanism in which this e-cash would work.

“You’re saying that we can use this proof-of-work thing to inject electronic cash into the network and have it tied to fiat currencies, but how would the network know what the local fiat currency is to figure out the correct fiat-currency-to-electronic-cash exchange rate ?”, (2) asked.

“Maybe we could have a server that keeps a record of what the various electricity companies charge and have the software get the values from there ?”, I suggested. “Some of these new mobile phones, the smart phones, the cellular network phones in folks pockets, have GPS chips incorporated into them, right ? And everyone has them or will be getting them as they become more popular. This means everyone will have a device on them which will allow the software to include a GPS location so that the network knows which exchange rate to use for that particular minted cash.

“But how will the network know that the GPS coordinates haven’t been changed and set to another location ?”, (2) asked. “Wouldn’t that mean relying on a trusted third party again ? I thought you said we have to get away from that ? If we cannot trust a single computer for minting cash into the network then maybe we shouldn’t trust any at all ?”

“Uhh… dunno,” I replied. “I’ll get back to that later”, I said.

“Ok, ” (2) said. “How are we going to have the transactions sent to other people on the network ? All the other white papers are expecting people to connect directly to one of the trusted computers to purchase the electronic cash and to transfer it to someone else through them. If we’re not going to use a trusted computer for this and will have the proof-of-work generate the cash, then how do people receive or pay the cash ? Also: How would the network trust that the cash is valid if no computer is being used for time-stamping and validating the cash ?”

I told him I’d have to think about it.

Multiple ideas were given and discarded. He consulted with (3) about every possible solution and every one was a failure.

They either resulted in having to rely on at least one server to hook everything together or would break if multiple transaction messages were sent at the same time to different computers.

After a week or so of this I’d finally burnt myself out and decided that it’s quite possible that everyone else was correct when they said that you couldn’t solve double-spending in a digital world without depending upon a trusted third party.

I stopped emailing (2) at that point, hoping it’d all go away.

After a week he emailed me asking if I’d come up with another solution for testing.

I told him that I don’t think there is a solution and maybe he should just use part of what he had in his original white paper and rely on a trusted third party like everyone else.

He said something along the lines of “Like [redacted] I will ! You’ve taken me down this path of not trusting a single computer and that’s what I want. No-one's done that before and if we crack that nut, it will probably change everything ! ”

I told him I’m taking a break from it all for a while.

Another week passes and he emails me again.

He said, “How are you feeling ? Sorry to be so harsh on you but I really need this to work. I’ll leave you be if that’s what you want. Just let me know when you’re able to continue.”

Another week goes by and whenever I begin to think of the problem I just say to myself “To [redacted] with him and his electronic cash problem.”

For comfort I turn to perusing through some of my old Win32 Asm proggys ( I called them “proggys” because I thought of them as small, incomplete computer programs - kind of like examples and tutorials ).

I also begun reminiscing about the Amiga 500 days and the proggys I made back then ( late 1980’s through to mid 1990’s ).

Knowing that one of the most difficult issues with electronic cash revolved around the networking architecture and how data would be propagated by the networked computers I began going through some of the discussions I had back in 2005 and 2006 with someone who was attempting to make a tank game.

I explained to him the main difference between TCP and UDP ( Transmission Control Protocol and User Datagram Protocol ).

If you need data packages to arrive in a particular order with confirmation that they’ve arrived then you’d use TCP.

If you need velocity of data packets you can throw all the protocol error checking out and use UDP.

That’s one of the reasons great online multi-player games uses UDP. It reduces the latency with the data being transmitted around the network.

The main difficulty is in building the gaming system in such a way so that the data the servers and clients transmit and receive work when data packets never arrive.

TCP guarantees delivery if the network is functioning while with UDP you do not know if a particular packet ever arrived or if packets arrived in a different order to transmission due to separate packets traversing the internet via different pathways.

Many online games were usually built for single-player first and the multi-player code would be chucked into the code-base near the end of development.

This would mean that all of the game code objects and classes were made to use known values at any particular time and could not work in a UDP environment without re-architecting the entire code base from scratch.

You’d find many of the games that also included multi-player gameplay options ended up using TCP for the network communications and this made all of these games slow over the network with high latency and unplayable lag as the gameplay would be faster than the network data packets telling your computer where your opponents are located.

The various tanks games around 2005 were built as above. I persuaded this person to focus on the multi-player aspect of the game because he could always add in single-player later on.

Multiple players would have to drive and fire tanks around a field while being updated continuously about the complete state of the network.

This is usually accomplished by having a single server that receives all of the current data from all the player clients and dishes out the official game state back to all of those player clients so that everyone knows who went where, who fired at what and who has been hit.

However even with using UDP there is a bottleneck in the network with the server itself only being able to process a peak number of connections and data throughput every second. It could only scale so high.

We had talked about different ways to improve this by possibly having relay servers on some of the players computers or having a more peer-to-peer like structure so that each player's client only had to get the latest data from its nearest neighbours in the network and only transmit to their peers so that a fully server-less multi-player game could be created.

How the data could be moved about without someone creating a hack that could change the data packages in their favour couldn’t be figured out.

In the end he went with using a central server with both TCP and UDP depending upon what data packages were needed to be sent - general gameplay data (tank movements) via UDP and server state (for confirming who hit what) via TCP.

If a peer-to-peer network was to be used for electronic cash then to be scalable the data packages must be able to be transmitted with as high a velocity as possible. It must work with the majority of transmissions using UDP.

If two-way communication is required then a return ip/port can be included within a UDP data package or a TCP connection could be used.

I had also read and reread this thing that has been going around the crypto community for ages called the Byzantine General's Problem (or worded in a similar way).

It’s supposed to be impossible to solve and at least a couple of well-known academics and crypto folks had “proven” it was impossible to solve only a few years previously. They had pretty much staked their reputations on the fact that it was unsolvable.

I thought “Wouldn’t it be absolutely hilarious if the solution to this double-spending problem is also the solution to the impossible Byzantine General's Problem and could be found using ideas from the Amiga days and 3D programming and uses multi-player gaming techniques ? That would annoy the [redacted] out of the crypto community and take those elitists down a peg or two !”

(This is where you’d see the screen go all watery-wavy as the scene morphs to a time in the past when I was a moderator of the Win32 Asm community)

The assembly community and the crypto community share a lot in common.

They’re made up of some of the most brilliant folks in the computing industry where huge egos do battle against one-another.

You’d also find folks in one community existing within the other.

Both communities are made up of both light and dark actors.

The light actors are those who are very public.

They are academics, researchers, security professionals, and so on.

The dark actors are … (and that’s all I’ll say about them).

Except to say that the light crypto actors are usually doing work to undo what the dark assembly actors are doing.

It’s one [redacted] of a game !

To have a message-board that was able to accommodate all actors required a few tough rules and stiff execution of them if the forum was to continue to exist.

Many of the other assembly boards were being snuffed out by government actors forcing the hosting service to shut them down.

This was mainly due to the assembly forums insistence of allowing threads to exist which showed exactly how to break and crack various websites/ networks/ software/ etc.

Whenever one of these sites were shut down the members would disperse to the various remaining assembly boards.

So we received an influx of new members every few months whenever their previous venue went up in smoke.

However they never learned from the experience ( or, at least, some of them never learned ) and they would continue to openly chat about dark subjects on our board, which put our board in danger as well.

The moderators had to be strong but fair against these new-comers, especially knowing that they ( the moderators ) could be actively attacked ( digitally ) at any time.

Occasionally one of these new members would decide to DDOS ( Distributed Denial Of Service ) us, however they apparently forgot what message-board they were attempting to DDOS, and it always ended very badly for them.

We would also occasionally get someone with quite a bit of knowledge in various subjects - some of it very rare and hard-to-come-by. It would be terrible if that member left and took their knowledge with them.

They would complain that there were too many noobs asking questions on the message-board and it would be better if there was a higher level of knowledge and experience needed before the noobs could enter the message-board or post a question.

Once I told one of these members, “Ok then. Let’s say that thing you’ve been talking about for the past two weeks, and calling everyone else a noob for not understanding it, is the knowledge limit. I know that you only first read about it two and a half weeks ago. Let’s say I make that the limit and predate it three weeks ago and kick your butt out of this community ?"

“That’s not very fair”, he protested.

I told him, “None of us know where the next genius is coming from. The main members of this community, the ones that input more than everyone else, have come from incredibly varied environments. Some with only a few weeks knowledge are adding more to the community every week compared to members who have been with us for years. One of the members you’ve dissed in the past couple of weeks could in turn create the next piece of software that all of us use. We don’t know that. What we need to do is have a community that is absolutely inclusive for every single person on the planet no matter where they’ve come from, what their wealth is, what their nation state does, and to keep our elitism in check.”

“Ok, fair enough, I’m sorry, please don’t kick me out.” was the usual result.

These were very intelligent folks, however they had to be reminded that we are a single species moving through time and space together as one.

(This is where you’d see the screen go all watery-wavy as the scene morphs back to me figuring out this double-spending problem)

As you may tell, I don’t tolerate elitist attitudes very well.

Which also helped when I turned towards the elitist attitudes I read in some of these academic papers and crypto white papers ( some of which were more like notes than white papers ) and messages on the crypto forums and mailing lists.

“ ‘It’s impossible to solve the Byzantine Generals Problem’ they say ? Let’s see about that !”

ToC

The first thing to do was to discard everything all others had tried before.

For surely if they were on the correct path it would've been solved by now.

The problem is written a little bit differently depending upon where you read it.

An occasional academic may be more well-read than others and becomes the “official” wording used by many others.

I’ll paraphrase it a wee bit just so you get a general idea of the problem (pun intended).

We go back to the time of the city-states.

This is before the notion of sovereign states - there’s just a bunch of individual city-states that control the surrounding nearby country side.

Every so often a bunch of these city-states would get together and form something called an empire.

Alliances would change and friends would become enemies and enemies friends on a month-to-month and year-to-year basis.

To expand the empire the bunch of city-states would send armies controlled by generals to take over an adjacent city-state.

These city-states are huge (for their time) walled cities with armies in strong fortifications.

Let’s say there are six generals from six empire city-states that surround an adjacent city-state - all generals and their armies are equidistant from each other.

They cannot trust one another because at any moment one of them may become an enemy. Or they could be an enemy pretending to be a friend.

Due to the defensive forces of the defending city-state, the six generals know that they could take the city if every one of them attacked at the same time from around the city.

But if only a few attacked and the others retreated then the attackers would be wiped out and the surviving city-states, with their generals and their armies intact, would end up over-powering and enslaving their previous friendly city-states.

No-one could trust any other.

( This has massive parallels with modern day sovereign nations and their playing of the game with weapons, armies/air forces/navies, economics, currency, trade agreements, banks, education, health, wealth, and so on )

The generals have to send a message to the other generals telling them if they’re going to attack or retreat.

The problem is that a general could send a message to the general to his left saying that he’ll attack and send a second message to the general to his right that he will retreat.

Some possible solutions said that there should be two lieutenants to receive the message from the general and that they could check each others message to confirm that they are indeed identical before passing the messages onto the left and right messengers.

However the messengers in turn could change the message from “attack” to “retreat” or vice versa or not deliver the message at all.

Plus the generals, once a message has been sent out as “attack” could turn around and retreat, or vice versa.

I thought to myself, "I bet the folks who thought up this problem are feeling pretty damn smug about themselves."

However I was a moderator of an assembly community.

I’d translated the DirectX8 C++ COM headers into their x86 assembly equivalent ( using techniques built by others far more smarter than me, and with help for some files when DX8.1 was translated ), built a PIC micro controller assembler in x86 assembly language, and many other things.

And because I've done six impossible things this morning, why not round it off with creating a solution to the Byzantine General's Problem !

Elitist ego ? What elitist ego ? They’re all amateurs !

Let us begin:

What was needed was a practical solution.

Not the solution to a perfectly impossible puzzle.

One that works reasonably well in the real world.

In the RNZAF during the Avionics Technician training we were taught how to calculate various aspects of an electrical transformer.

You begin by imagining a perfect transformer with the number of input and output coils ( inductors ).

Then you begin adding in elements based upon reality.

The copper wire has resistance.

The looped wire cause a phase shift between voltage and current by 90°.

The copper loops also create resistance that's 90° out of phase with the straight copper wire and we change to using impedance instead of resistance.

We continue adding elements from reality until we have a pretty close approximation of how a transformer would function in the real world.

From an unreal perfect transformer to a realistic practical transformer.

The same needed to be done to the Byzantine General's Problem.

Many mathematicians and academics used a perfect scenario to place the generals and how they can communicate with each other.

This ended up making a practical solution impossible because of the unrealistic constraints placed upon the generals.

So beginning with a perfect Byzantine General's Problem we start adding in the elements until we have something far more realistic so that we can hopefully figure out a more practical, if not perfect, solution.

“Ok,” I thought to myself. “let’s start at the beginning. We need a network. What does that look like ?”

The Generals are going to be represented as computers. The servers in the network. The nodes.

The messages are going to be the data travelling between them.

Transactions will be used as the first example of data.

For those reading, hold your hands in front of you - touch the bottom of the palms together with the fingers far apart, thumbs touching each other, twist your elbow and wrists so that the fingers are pointing upwards - slightly curved.

These are the nodes in the network.

The node where the thumbs touch is your own node.

No node can trust each other.

For this network structure to work, it must work even with every single node actively hostile toward one another.

“Surely the network can trust my node. I’m good ! “, you may say to yourself.

But you would be wrong.

This network is not about you. It must exist even when you don’t.

If there were a hundred nodes then it’d be ninety-nine to one against you.

As far as the network is concerned, there’s ninety-nine nodes that cannot trust you compared to your one.

So accepting that all nodes cannot trust one another, plus they are actively hostile toward one another, we can …

“But hang on ! ”, you say. “What do you mean ‘actively hostile’ ? Surely they’re not all hostile ? ”

Even if most of the time nodes will play nice with one another, the rules of the game must be structured in such a way that they will work even if all participants were actively hostile toward one another .

Because if it still worked with everyone having a go at each other then you would’ve built something that could last for a very long time.

You could build something whereby sovereign nations could no-longer undermine other sovereign nations.

It would be the great equaliser that would allow stronger nations to stop screwing around with weaker nations.

It’s the ultimate golf handicapping system. Everyone could play this game.

Kind of like my moderating style from the assembly days.

So we have these hostile nodes.

It has to be able to work with any type of message or data package. Initially it will be built for electronic cash transactions.

I will type it as "messages (transactions)" below to indicate that the mes