Kicking the Hornet's Nest - part 4
Kicking the Hornet’s Nest - third edition - part 4
All links, digital (pdf, txt, docx, md) and book in print, can be found at https://hive.blog/@crrdlx/satoshi
Edited by crrdlx, npub:
npub1qpdufhjpel94srm3ett2azgf49m9dp3n5nm2j0rt0l2mlmc3ux3qza082j
Kicking the Hornet’s Nest pages 50-75
Personal email
Editor’s note: In late November of 2020, three previously unknown emails emerged which are believed to have been correspondence between Satoshi Nakamoto and Hal Finney. The emails were dated November 19, 2008 (Finney to Nakamoto); January 8, 2009 (Nakamoto to Finney); and January 9, 2009 (Nakamoto to Finney). This places them a couple of weeks after the Bitcoin Whitepaper’s release and a week or so after the Bitcoin “Genesis Block” was mined. Thus, they were very early in Bitcoin history.
In an article by professor Michael Kapilkov, CoinDesk.com reported on the emails and explained their validity (see https://www.coindesk.com/satoshi-nakamoto-hal-finney-emails). In short, CoinDesk reported that the emails had been on Hal Finney’s computer and that they had been previously shared with reporter Nathaniel Popper during research for his book titled “Digital Gold: Bitcoin and the Inside Story of the Misfits and Millionaires Trying to Reinvent Money” published in 2016, two years after Finney’s death. In the article, CoinDesk stated that Hal Finney’s widow, Fran Finney, had been contacted concerning the authenticity of the emails. The CoinDesk article explains that she corroborated that the emails had indeed been on Hal’s computer and that they had indeed been shared with Popper for his research. The CoinDesk article also stated that Popper, in turn, had shared the three previously unseen emails with Kapilkov, who then brought the emails to light in the CoinDesk article.
Although the November 19 email was not written by Satoshi, it is included here for context.
From hal@finney.org Wed Nov 19 07:20:46 2008
Return-Path: hal@finney.org
X-Original-To: hal@finney.org
Delivered-To: hal@finney.org
Received: by finney.org (Postfix, from userid 500)
id A78D414F6E2; Wed, 19 Nov 2008 07:20:46 -0800 (PST)
To: hal@finney.org, satoshi@vistomail.com
Subject: Re: Bitcoin source files attached
Cc: bear@sonic.net, jamesd@echeque.com
Message-Id: 20081119152046.A78D414F6E2@finney.org
Date: Wed, 19 Nov 2008 07:20:46 -0800 (PST)
From: hal@finney.org (“Hal Finney”)
X-Bogosity: Ham, tests-bogofilter, spamicity=0.000000, version=1.0.3
Status: RO
Ah, I see, thanks for the corrections.
Some of the discussion and concern over performance may related to the eventual size of the P2P node network. How large do you envision it becoming? Tens of nodes? Thousands? Millions?
And for clients, do you think this could scale to be usable for close to 100% of world financial transactions? Or would you see it as mostly being used for some “core” subset of transactions that have special requirements, with other transactions using a different payment system that perhaps is based on Bitcoin?
Hal
bitcoin-list
[bitcoin-list] Welcome
2008-12-10 17:00:23 UTC - -
Welcome to the Bitcoin mailing list!
Genesis Block
Bitcoin v0.1 released
2009-01-03 18:15:05 UTC - -
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

View the Genesis block on blockchain.com at https://www.blockchain.com/btc/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f (shortcut: goo.gl/hm5ZzY) and at the encrypted note by Satoshi at https://www.blockchain.com/btc/tx/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b (shortcut: goo.gl/2csRje). Image credit: Bitcoin Wiki at https://en.bitcoin.it/wiki/Genesis_block
Cryptography Mailing List
Bitcoin v0.1 released
2009-01-08 19:27:40 UTC - -
Announcing the first release of Bitcoin, a new electronic cash
system that uses a peer-to-peer network to prevent double-spending.
It’s completely decentralized with no server or central authority.
See bitcoin.org for screenshots.
Download link:
http://downloads.sourceforge.net/bitcoin/bitcoin-0.1.0.rar
Windows only for now. Open source C++ code is included.
- Unpack the files into a directory
- Run BITCOIN.EXE
- It automatically connects to other nodes
If you can keep a node running that accepts incoming connections,
you’ll really be helping the network a lot. Port 8333 on your
firewall needs to be open to receive incoming connections.
The software is still alpha and experimental. There’s no guarantee
the system’s state won’t have to be restarted at some point if it
becomes necessary, although I’ve done everything I can to build in
extensibility and versioning.
You can get coins by getting someone to send you some, or turn on
Options->Generate Coins to run a node and generate blocks. I made
the proof-of-work difficulty ridiculously easy to start with, so
for a little while in the beginning a typical PC will be able to
generate coins in just a few hours. It’ll get a lot harder when
competition makes the automatic adjustment drive up the difficulty.
Generated coins must wait 120 blocks to mature before they can be
spent.
There are two ways to send money. If the recipient is online, you
can enter their IP address and it will connect, get a new public
key and send the transaction with comments. If the recipient is
not online, it is possible to send to their Bitcoin address, which
is a hash of their public key that they give you. They’ll receive
the transaction the next time they connect and get the block it’s
in. This method has the disadvantage that no comment information
is sent, and a bit of privacy may be lost if the address is used
multiple times, but it is a useful alternative if both users can’t
be online at the same time or the recipient can’t receive incoming
connections.
Total circulation will be 21,000,000 coins. It’ll be distributed
to network nodes when they make blocks, with the amount cut in half
every 4 years.
first 4 years: 10,500,000 coins
next 4 years: 5,250,000 coins
next 4 years: 2,625,000 coins
next 4 years: 1,312,500 coins
etc…
When that runs out, the system can support transaction fees if
needed. It’s based on open market competition, and there will
probably always be nodes willing to process transactions for free.
Satoshi Nakamoto
Personal email
Editor’s note: This is the second of the three previously unknown emails that emerged in November 2020. The emails were dated November 19, 2008 (Finney to Nakamoto); January 8, 2009 (Nakamoto to Finney); and January 9, 2009 (Nakamoto to Finney).
From satoshi@vistomail.com Thu Jan 8 20:54:55 2009
Return-Path: satoshi@vistomail.com
X-Original-To: hal@finney.org
Delivered-To: hal@finney.org
Received: from mail.anonymousspeech.com (anonymousspeech.com [124.217.253.42])
by finney.org (Postfix) with ESMTP id 467AA14F6E1
for hal@finney.org; Thu, 8 Jan 2009 20:54:53 -0800 (PST)
Received: from server123 ([124.217.253.42]) by anonymousspeech.com with MailEnable ESMTP; Fri, 09 Jan 2009 13:32:28 +0800
MIME-Version: 1.0
Date: Fri, 09 Jan 2009 13:21:04 +0800
X-Mailer: Chilkat Software Inc (http://www.chilkatsoft.com)
X-Priority: 3 (Normal)
Subject: Bitcoin v0.1
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
From: “Satoshi Nakamoto” satoshi@vistomail.com
Reply-To: satoshi@vistomail.com
To: hal@finney.org
Message-ID: CHILKAT-MID-c4977816-955c-9f60-e4bf-19bded842d44@server123
X-Bogosity: Ham, tests=bogofilter, spamcity=0.000000, version=1.0.3
Status: RO
Thought you’d like to know, the Bitcoin v0.1 release with EXE and full sourcecode is up on Sourceforge:
http://downloads.sourceforge.net/bitcoin/bitcoin-0.1.0.rar
www.bitcoin.org has release notes and screenshots.
Satoshi
Personal email
Editor’s note: This is the third of the three previously unknown emails that emerged in November 2020. The emails were dated November 19, 2008 (Finney to Nakamoto); January 8, 2009 (Nakamoto to Finney); and January 9, 2009 (Nakamoto to Finney).
From satoshi@vistomail.com Fri Jan 9 08:08:37 2009
Return-Path: satoshi@vistomail.com
X-Original-To: hal@finney.org
Delivered-To: hal@finney.org
Received: from mail.anonymousspeech.com (anonymousspeech.com [124.217.253.421])
by finney.org (Postfix) with ESMTP id 220A414F6E1
for hal@finney.org; Fri, 9 Jan 2009 08:08:35 -0800 (PST)
Received: from server123 ([124.217.253.421]) by anonymousspeech.com with MailEnable ESMTP; Sat, 10 Jan 2009 00:46:09 +0800
MIME-Version: 1.0
Date: Sat, 10 Jan 2009 00:43:01 +0800
X-Mailer: Chilkat Software Inc (http://www.chilkatsoft.com)
X-Priority: 3 (Normal)
Subject: Re: Bitcoin v0.1
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
From: “Satoshi Nakamoto” satoshi@vistomail.com
Reply-To: satoshi@vistomail.com
To: hal@finney.org
Message-ID: CHILKAT-MID-b1285368-fb47-d04a-88f6-bc6cb54e0f1d@server123
X-Bogosity: Ham, tests=bogofilter, spamcity=0.000000, version=1.0.3
Status: 0
Sure thing. If you have any questions, feel free.
>Hi, Satoshi, thanks very much for that information! I should have a chance
>to look at that this weekend. I am looking forward to learning more about
> the code –
>
>Hal
>
Cryptography Mailing List
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Sat, Jan 10, 2009 at 11:52 AM
Subject: RE:Crash in bitcoin 0.1.0
To: hal.finney@gmail.com
Normally I would keep the symbols in, but they increased the size of the EXE from 6.5MB to 50MB so I
just couldn’t justify not stripping them. I guess I made the wrong decision, at least for this early
version. I’m kind of surprised there was a crash, I’ve tested heavily and haven’t had an outright
exception for a while. Come to think of it, there isn’t even an exception print at the end of
debug.log. I’ve been testing on XP SP2, maybe SP3 is something.
I’ve attached bitcoin.exe with symbols. (gcc symbols for gdb, if you’re using MSVC I can send you an
MSVC build with symbols)
Thanks for your help!
_>Hi Satoshi - I tried running bitcoin.exe from the 0.1.0 package, and
it crashed. I am running on an up to date version of XP, SP3. The
debug.log output is attached. There was also a file db.log but it was
empty.The crash allowed me to start up a debugger, but there were no
symbols. The exception was at address 00930AF7. The displayed call
stack was 942316 called by 508936.When I have a chance, I’ll try building it, although it looks like it
would take me a while to acquire all the dependencies.Hal_
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Sat, Jan 10, 2009 at 2:59 PM
Subject: Re: Crash in bitcoin 0.1.0
To: hal.finney@gmail.com
I was temporarily able to reproduce the bug and narrowed it down to the “mapAddresses.count” in the
following code. It was absolutely the last piece of code to go in and mainly only got tested with the
MSVC build. It’s not essential and I’m inclined to turn off optimization and delete the section of code
until I figure out what’s going on.
I’m attaching a dbg exe you can try that deletes the line of code and turns off optimization. I’m not able
to reproduce it anymore at the moment.
irc.cpp:
if (pszName[0] == ‘u’)
{
CAddress addr;
if (DecodeAddress(pszName, addr))
{
CAddrDB addrdb;
if (AddAddress(addrdb, addr))
printf(“new “);
else
{
// make it try connecting sooner
CRITICAL_BLOCK(cs_mapAddresses)
if (mapAddresses.count(addr.GetKey()))
mapAddresses[addr.GetKey()].nLastFailed = 0;
}
addr.print();
}
else
{
printf(“decode failed\n”);
}
}
_>Yes, actually the version with MSVC symbols would be better, that is
the one I am using.
I found that if I launched this one from a cygwin shell, it does not
crash. But if I launch it from Windows, double-clicking on the file,
it does crash similarly to the previous version. However, I am pretty
sure that the previous version did crash even when I launched it from
cygwin.I have to go out but I’ll leave this version running for a while.
Hal_
Adam Back “COPA trial” email
From: “Satoshi Nakamoto” satoshi@vistomail.com
Sent: Sat 1/10/2009 6:46:45 PM (UTC)
Subject: Re: Citation of your Hashcash paper
Thanks for the pointers you gave me to Wei Dai’s b-money paper and others.
I just released the open source implementation of my paper, Bitcoin v0.1. Details, download and screenshots are at www.bitcoin.org
The main idea of the system is the generation of a chain of hash based proof-of-work to create self evident proof of the majority consensus. Users get new coins by contributing proof-of-work to the chain.
There was a discussion of the design on the Cryptography mailing list. Hal Finney gave a good high-level overview:
| One thing I might mention is that in many ways bitcoin is two independent
| ideas: a way of solving the kinds of problems James lists here, of
| creating a globally consistent but decentralized database; and then using
| it for a system similar to Wei Dai’s b-money (which is referenced in the
| paper) but transaction/coin based rather than account based. Solving the
| global, massively decentralized database problem is arguably the harder
| part, as James emphasizes. The use of proof-of-work as a tool for this
| purpose is a novel idea well worth further review IMO.
Satoshi
>Yes citation looks fine, I’ll take a look at your paper. You maybe
>aware of the “B-money” proposal, I guess google can find it for you,
>by Wei Dai which sounds to be somewhat related to your paper. (The
>b-money idea is just described concisely on his web page, he didnt
>write up a paper).
>
>Adam
>
On Wed, Aug 20, 2008 at 6:30 PM, satoshi@anonymousspeech.com
satoshi@anonymousspeech.com wrote:
I’m getting ready to release a paper that references your Hashcash paper and I wanted to make sure I have the citation right. Here’s what I have:
[5] A. Back, “Hashcash - a denial of service counter-measure,”
http://www.hashcash.org/papers/hashcash.pdf, 2002.
I think you would find it interesting, since it finds a new use for hash-based proof-of-work as a way to
make e-cash work. You can download a pre-release draft at http://www.upload.ae/file/6157/ecashpdf.html Feel free to forward it to anyone else you think would be interested. I’m also nearly finished
with a C++ implementation to release as open source.
Title: Electronic Cash Without a Trusted Third Party
Abstract: A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without the burdens of going through a financial institution. Digital signatures offer part of the solution, but the main benefits are lost if a trusted party is still required toprevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power. As long as honest nodes control the most CPU power on the network, they can generate the longest chain and outpace any attackers. The network itself requires minimal structure. Messages are broadcasted on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone.
Cryptography Mailing List
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Sat, Jan 10, 2009 at 6:55 PM
Subject: Re: Crash in bitcoin 0.1.0
I isolated the problem. If I spawn a thread and do
mapAddresses.count, even as the very first thing in the program,
it segfaults. The workaround is to needlessly call
mapAddresses.count in the main thread once and it’s fine from then
on. I hate to blame the compiler, and I’ve never had a GCC
compiler bug before, but this feels like one. Maybe some bit of
init code it tries to optimize out if it’s not called at least once
in the same thread, or some STL optimization that’s not thread
friendly. I’m really dismayed to have this botch up the release
after all that stress testing.
The attached file: bitcoin-0.1.1.rar (filesize 2,132,686) is the
version where I deleted the mapAddresses.count line, and that
should be the safest version. (that was the only use of
mapAddresses.count) If you could try this version and confirm
that the crash is fixed, I’d appreciate it.
Thanks,
Satoshi
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Sat, Jan 10, 2009 at 7:11 PM
Subject: Re: Crash in bitcoin 0.1.0
To: hal.finney@gmail.com
OK, thanks. The one in bitcoin-0.1.1-exe-dbg.rar is the same build as in bitcoin-0.1.1.rar.
I forgot, when you build debug on MSVC, it uses the debug versions of the runtime DLLs, which aren’t
included with Windows distributions. Actually, MSVC 6.0’s runtime (MSVC60.DLL) is the last version that
shipped preinstalled on Windows, which is why the continued interest in that ancient version of the
compiler. Later Visual C versions can’t create a standalone EXE that doesn’t require additional runtime
packages installed.
I can’t use MSVC 6.0 for the release because its optimization of the SHA-256 routines is too slow.
I’ve attached a copy of the debug runtime DLLs. (They’re redistributable)
_>Hi Satoshi - The version with the .pdb file did not run for me, I got
an error about MSVCP60D.DLL not being found. I imagine this is due to
the version incompatibility you were worried about.The next version, that deleted the questionable line of code and
turned off optimization, seems to run fine for me. So the problem may
be related to that bit.Hal_
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Sun, Jan 11, 2009 at 4:36 PM
Subject: How’s v0.1.2 going?
To: hal.finney@gmail.com
Well this doesn’t look good. After you upgraded to 0.1.2, your node responded to one or two messages
and then stopped replying to messages. It’s still accepting connections and seems to be alive on
IRC. That could happen if ThreadSocketHandler or ThreadMessageHandler is hung or crashed or
blocked. Usually when there’s an exception or other problem, it only stops the affected thread and
everything else keeps running.
I’m attaching the msvc debug version in case you need it.
Satoshi
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Sun, Jan 11, 2009 at 4:49 PM
Subject: v0.1.2 gcc debug build attached
To: hal.finney@gmail.com
Could you send me your debug.log?
The gcc debug version is attached.
gdb is easier to use than you’d think. gdb.exe is the only file. You run
gdb bitcoin.exe
then type “run”
then if it crashes, type “backtrace” for a stack dump, or it may do it automatically. (The stack trace
doesn’t always go far enough back unfortunately)
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Sun, Jan 11, 2009 at 5:25 PM
Subject: Re: v0.1.2 debug.log
To: hal.finney@gmail.com
OK, so no crash or exception window or anything. debug.log is all I need then.
It looks like there’s a “select failed: 10038” error (the sockets select function failed) and then network
communication goes quiet after that (except for IRC which is still working). I’ve never had select fail
before. It looks like sockets is somehow partially hosed. At least now I know what’s wrong now.
You should restart it. It’s not doing anything right now. I don’t know if it’ll just get the “select failed”
error again, or be fine for a while.
If I can’t think of anything else, I can always shut down and restart sockets if it gets hosed like that. I’m
sure everyone who’s written an internet app like a browser or p2p app had to slog through all the ways
the Internet can trash you. The Internet is a brutal, rough and tumble place.
The issue of bitcoin.exe still running after you close it is a known issue. It does a careful shutdown of
everything to be extra safe, in case some important transaction is in progress, but it’s completely fine
and totally safe to just kill it if it doesn’t exit on its own. I’ll have to work on figuring out what’s getting
hung up. I may just have it kill itself after a timeout.
Thanks!
_>Hi Satoshi - debug.log attached. When I started 0.1.2 this afternoon,
I first quit the previous version which was running. However, 0.1.2
would not start up. Looking at the debug log, it said “Existing
instance found”. I ran task manager, and found two processes called
bitcoin.exe running. I killed them both and started up the new one,
and it seemed to run OK. It says at the bottom “3 connections”. I
haven’t tried the debug version, I’m not sure what I would look for.Hal_
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Sun, Jan 11, 2009 at 9:31 PM
Subject: select failed 10038 fix
To: hal.finney@gmail.com
I believe I’ve fixed the bug related to “select failed: 10038”
(error WSAENOTSOCK). The select error is not a big deal, but it
led the communications thread to get blocked on a socket that
should have been in non-blocking mode but wasn’t. It never came
up until now because as long as select never failed, receive would
never be called unless there was data.
Without this fix, your node’s communication sometimes goes dead.
Connections are still made, but no data is passed. Any generated
blocks would probably not be accepted since you can’t broadcast
them and other nodes will leave your branch behind. That’s why
Generate doesn’t run when you’re not connected.
This could also have caused bitcoin.exe to fail to exit. There’s
no reason for shutdown to wait for the com thread, so I made it
only wait for the message processing thread. I’ll do a more
thorough forced shutdown later.
Looks like your node’s com thread just now got blocked on this
bug again. It went for a few hours this time before it did.
Version 0.1.3 exe attached.
bitcoin-list
[bitcoin-list] Bitcoin v0.1.2 now available
2009-01-11 22:32:18 UTC - -
Bitcoin v0.1.2 is now available for download.
See http://www.bitcoin.org for the download link.
All the problems I’ve been finding are in the code that
automatically finds and connects to other nodes, since I wasn’t
able to test it in the wild until now. There are many more ways
for connections to get screwed up on the real Internet.
Bugs fixed:
- Fixed various problems that were making it hard for new nodes to
see other nodes to connect to. - If you’re behind a firewall, it could only receive one
connection, and the second connection would constantly disconnect
and reconnect.
These problems are kind of screwing up the network and will get
worse as more users arrive, so please make sure to upgrade.
Satoshi Nakamoto
From dtrammell@dustintrammell.com Sun Jan 11 23:14:04 2009
On Fri, 2009-01-09 at 03:27 +0800, Satoshi Nakamoto wrote:
Announcing the first release of Bitcoin, a new electronic cash
system that uses a peer-to-peer network to prevent double-spending.
It’s completely decentralized with no server or central authority.
I’m currently reading through your paper. At the timestamp server
section you mention newspapers and usenet, so I thought you might be
interested in this if you have not seen it already:
http://www.publictimestamp.org/
By the way, I’m also currently running the alpha code on one of my
workstations. So far it has two “Generated” messages, however the
“Credit” field for those is 0.00 and the balance hasn’t changed. Is
this due to the age/maturity requirement for a coin to be valid?
Cheers,
Dustin D. Trammell
dtrammell@dustintrammell.com
http://www.dustintrammell.com
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Mon, Jan 12, 2009 at 8:41 AM
Subject: Re: select failed 10038 fix
To: hal.finney@gmail.com
It definitely looks like 0.1.3 solved it. It was getting so there
were so many zombie nodes, I was having a hard time getting a
reply to any of my messages. Now, four inventory messages go out,
four getdata messages come back.
Did you get any “not accepted” blocks? The connectivity bug could
have caused a generated block not to be accepted if the node
wasn’t able to broadcast at the time. Once the status is above 5
or so it’s safely accepted.
Unfortunately, I can’t receive incoming connections from where I
am, which has made things more difficult. Your node receiving
incoming connections was the main thing keeping the network going
the first day or two.
You can send to my Bitcoin address if you want to, but you won’t
get to see the full transfer sequence:
1NSwywA5Dvuyw89sfs3oLPvLiDNGf48cPD
You could always findstr /c:“version message” debug.log and send a
test to some random person you’re connected to near the end of the
list. The ones ending in port 8333 can receive connections.
I just thought of something. Eventually there’ll be some interest
in brute force scanning bitcoin addresses to find one with the
first few characters customized to your name, kind of like getting
a phone number that spells out something. Just by chance I have
my initials.
Satoshi
_>Thanks, Satoshi, this new version seems to be running much better.
I’ve got 8 connections, and watching debug.log there seems to be quite
a bit of activity. I see you sent me a payment, thanks! Let me know
your address and I will try sending one to you. I managed to generate
a block yesterday and the coins are about to mature, if I understand
it correctly.Hal_
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Mon, Jan 12, 2009 at 10:50 AM
Subject: Re: select failed 10038 fix
To: hal.finney@gmail.com
Could you send me the debug.log from the 0.1.3 crash?
I can usually get a lot just from that.
I’ll send you the debug builds shortly.
_>Looks like 0.1.3 crashed during the night, unfortunately. Next time I
will try running the debug version. Today I am working and will need
to take this computer up and down quite a bit, so I won’t be able to
run it for most of the day. Tonight I will try to look at it a little
bit.Hal_
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Mon, Jan 12, 2009 at 11:26 AM
Subject: Re: v0.1.3 msvc debug build
To: hal.finney@gmail.com
Here’s the 0.1.3 MSVC debug build
_>Looks like 0.1.3 crashed during the night, unfortunately. Next time I
will try running the debug version. Today I am working and will need
to take this computer up and down quite a bit, so I won’t be able to
run it for most of the day. Tonight I will try to look at it a little
bit.Hal
_>On Mon, Jan 12, 2009 at 8:41 AM, Satoshi Nakamoto satoshi@vistomail.com wrote:
It definitely looks like 0.1.3 solved it. It was getting so there
were so many zombie nodes, I was having a hard time getting a
reply to any of my messages. Now, four inventory messages go out,
four getdata messages come back.Did you get any “not accepted” blocks? The connectivity bug could
have caused a generated block not to be accepted if the node
wasn’t able to broadcast at the time. Once the status is above 5
or so it’s safely accepted.Unfortunately, I can’t receive incoming connections from where I
am, which has made things more difficult. Your node receiving
incoming connections was the main thing keeping the network going
the first day or two.You can send to my Bitcoin address if you want to, but you won’t
get to see the full transfer sequence:
1NSwywA5Dvuyw89sfs3oLPvLiDNGf48cPDYou could always findstr /c:“version message” debug.log and send a
test to some random person you’re connected to near the end of the
list. The ones ending in port 8333 can receive connections.I just thought of something. Eventually there’ll be some interest
in brute force scanning bitcoin addresses to find one with the
first few characters customized to your name, kind of like getting
a phone number that spells out something. Just by chance I have
my initials.Satoshi_
Thanks, Satoshi, this new version seems to be running much better.
I’ve got 8 connections, and watching debug.log there seems to be quite
a bit of activity. I see you sent me a payment, thanks! Let me know
your address and I will try sending one to you. I managed to generate
a block yesterday and the coins are about to mature, if I understand
it correctly.Hal
_>>>On Sun, Jan 11, 2009 at 9:31 PM, Satoshi Nakamoto satoshi@vistomail.com wrote:
I believe I’ve fixed the bug related to “select failed: 10038”
(error WSAENOTSOCK). The select error is not a big deal, but it
led the communications thread to get blocked on a socket that
should have been in non-blocking mode but wasn’t. It never came
up until now because as long as select never failed, receive would
never be called unless there was data.Without this fix, your node’s communication sometimes goes dead.
Connections are still made, but no data is passed. Any generated
blocks would probably not be accepted since you can’t broadcast
them and other nodes will leave your branch behind. That’s why
Generate doesn’t run when you’re not connected.This could also have caused bitcoin.exe to fail to exit. There’s
no reason for shutdown to wait for the com thread, so I made it
only wait for the message processing thread. I’ll do a more
thorough forced shutdown later.Looks like your node’s com thread just now got blocked on this
bug again. It went for a few hours this time before it did.Version 0.1.3 exe attached.
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Mon, Jan 12, 2009 at 11:39 AM
Subject: Re: v0.1.3 gcc debug build
To: hal.finney@gmail.com
and the gcc debug build w/gdb.exe
_>Looks like 0.1.3 crashed during the night, unfortunately. Next time I
will try running the debug version. Today I am working and will need
to take this computer up and down quite a bit, so I won’t be able to
run it for most of the day. Tonight I will try to look at it a little
bit.Hal_
From satoshi@vistomail.com Mon Jan 12 18:52:45 2009
_> I’m currently reading through your paper. At the timestamp server
section you mention newspapers and usenet, so I thought you might be
interested in this if you have not seen it already:
Thanks, I hadn’t seen that yet. It looks very well presented.
There was an older one that’s been running for a long time that
publishes its hashes to Usenet. I’m surprised this one isn’t
using Usenet, although it is kind of difficult to get access to
post to Usenet in an automated way these days. If they can get a
magazine or newspaper to publish their hashes, it would work a lot
easier in court for their purposes. Bitcoin and all timestamp
servers share the basic functionality of periodically collecting
things into blocks and hashing them into a chain.
_> By the way, I’m also currently running the alpha code on one of my
workstations. So far it has two “Generated” messages, however the
“Credit” field for those is 0.00 and the balance hasn’t changed. Is
this due to the age/maturity requirement for a coin to be valid?_
Right, the credit field stays 0.00 until it matures, then it’ll be
50.00. Do you think it would be clearer if I left the credit
field blank until it matures? I should put some text in the
transaction details (when you double click on it) explaining how
it works. (was it obvious you can doubleclick on a line for
details?)
Be sure to upgrade to v0.1.3 if you haven’t already. This version
has really stabilized things.
Satoshi
bitcoin-list
[bitcoin-list] Bitcoin v0.1 Alpha release notes
2009-01-12 20:20:47 UTC - -
Release notes for Bitcoin v0.1 Alpha
Bitcoin is a new electronic cash system that uses a peer-to-peer
network to prevent double-spending. It’s completely decentralized
with no server or central authority.
You can find screenshots and the download link at:
http://www.bitcoin.org
Windows only for now. Open source C++ code is included.
- Unpack the files into a directory
- Run BITCOIN.EXE
- It automatically connects to other nodes
If you can keep a node running that accepts incoming connections,
you’ll really be helping the network a lot. Port 8333 on your
firewall needs to be open to receive incoming connections.
The software is still alpha and experimental. There’s no guarantee
the system’s state won’t have to be restarted at some point if it
becomes necessary, although I’ve done everything I can to build in
extensibility and versioning.
You can get coins by getting someone to send you some, or turn on
Options->Generate Coins to run a node and generate blocks. I made
the proof-of-work difficulty ridiculously easy to start with, so
for a little while in the beginning a typical PC will be able to
generate coins in just a few hours. It’ll get a lot harder when
competition makes the automatic adjustment drive up the difficulty.
Generated coins must wait 120 blocks to mature before they can be
spent.
There are two ways to send money. If the recipient is online, you
can enter their IP address and it will connect, get a new public
key and send the transaction with comments. If the recipient is
not online, it is possible to send to their Bitcoin address, which
is a hash of their public key that they give you. They’ll receive
the transaction the next time they connect and get the block it’s
in. This method has the disadvantage that no comment information
is sent, and a bit of privacy may be lost if the address is used
multiple times, but it is a useful alternative if both users can’t
be online at the same time or the recipient can’t receive incoming
connections.
Total circulation will be 21,000,000 coins. It’ll be distributed
to network nodes when they make blocks, with the amount cut in half
every 4 years.
first 4 years: 10,500,000 coins
next 4 years: 5,250,000 coins
next 4 years: 2,625,000 coins
next 4 years: 1,312,500 coins
etc…
When that runs out, the system can support transaction fees if
needed. It’s based on open market competition, and there will
probably always be nodes willing to process transactions for free.
Satoshi Nakamoto
bitcoin-list
[bitcoin-list] Bitcoin v0.1.3
2009-01-12 22:48:23 UTC - -
It looks like we’re through with the worst of the Internet
connection issues. 0.1.3 fixed a problem where your node’s
communications could go dead after a while. The network is
running much more smoothly now with this version.
If you’ve successfully generated a block, you’ve seen it has a
maturation countdown before you can spend it. Once it matures,
the Credit column will change from 0.00 to 50.00. For a block to
be valid, it has to be broadcasted to the network and get into the
block chain, which is why Generate does not run if you’re not
connected. If you generated a block without being connected, the
network wouldn’t know about it and would continue building the
chain without it, leaving it behind, and the maturation countdown
would change to “(not accepted)” when your node sees that it
wasn’t used. If you subtract 1 from the status column, that’s how
many blocks have been chained after yours.
Satoshi Nakamoto
––––– Forwarded message –––––
From: Satoshi Nakamoto satoshi@vistomail.com
Date: Mon, Jan 12, 2009 at 11:59 PM
Subject: Re: select failed 10038 fix
To: hal.finney@gmail.com
Definitely the disk full. I completely put off disk full
handling until a later version. Probably about time I did it now.
Well, that’s a relief.
Satoshi
_>Hi Satoshi - Sorry I have not been able to do more today, this looks
like a busy week for me. I started 0.1.3 again under the MSVC debugger
this time so if it crashes tonight I may be able to get some more
information.I remember now that last night, my disk filled up. I had downloaded a
bunch of the dependencies (boost, etc) with an eye towards trying to
build it myself, and my disk was already pretty full. I’m pretty sure
this is what caused 0.1.3 to crash. I’ve attached the debug.log, which
also includes some other runs. The error is about 1/3 of the way down
and says,EXCEPTION: NSt8ios_base7failureE
CAutoFile::read : end of fileNormally this should be a rare occurrence with the large disk sizes
people have today.Hal
_>On 1/12/09, Satoshi Nakamoto satoshi@vistomail.com wrote:
Could you send me the debug.log from the 0.1.3 crash?
I can usually get a lot just from that.I’ll send you the debug builds shortly.
_
Looks like 0.1.3 crashed during the night, unfortunately. Next time I
will try running the debug version. Today I am working and will need
to take this computer up and down quite a bit, so I won’t be able to
run it for most of the day. Tonight I will try to look at it a little
bit.Hal_