Kicking the Hornet's Nest - part 10
# Kicking the Hornet's Nest - third edition - part 10
All links, digital (pdf, txt, docx, md) and book in print, can be found at https://hive.blog/@crrdlx/satoshi
Edited by [crrdlx](@crrdlx), npub:
```
npub1qpdufhjpel94srm3ett2azgf49m9dp3n5nm2j0rt0l2mlmc3ux3qza082j
```
### Kicking the Hornet's Nest pages 200 - 225
Martii Malmi (AKA Sirius) “COPA trial” email #131
Date: Wed, 16 Dec 2009 16:54:46 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Planned release announcement text
To: Martti Malmi <mmalmi@cc.hut.fi>
Here's the planned release announcement text. Probably releasing shortly.
Bitcoin version 0.2 is here!
Download links:
Windows Setup Program
Windows Zip File
Linux (tested on Ubuntu)
New features
Martti Malmi
- Minimize to system tray option
- Autostart on boot option so you can keep it running in the
background automatically
- New options dialog layout for future expansion
- Setup program for Windows
- Linux version
Satoshi Nakamoto
- Multi-processor support for coin generation
- Proxy support for use with TOR
- Fixed some slowdowns in the initial block download
- Various refinements to keep the network running smoothly
We also have a new forum at http://www.bitcoin.org/smf/ if you have any
questions.
Thanks to Martti Malmi (sirius-m) for his coding work and for hosting
the new site and forum, and thanks to New Liberty Standard for testing
the Linux version.
Satoshi Nakamoto
BitcoinTalk
Bitcoin 0.2 released!
2009-12-16 22:45:36 UTC - [-](https://bitcointalk.org/index.php?topic=16.msg73#msg73)
Bitcoin version 0.2 is here!
Download links:
[http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32-setup.exe/download](http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32-setup.exe/download)
[http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32.zip/download](http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32.zip/download)
[http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-linux.tar.gz/download](http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-linux.tar.gz/download)
New Features
Martti Malmi
- Minimize to system tray option
- Autostart on boot option so you can keep it running in the background automatically
- New options dialog layout for future expansion
- Setup program for Windows
- Linux version (tested on Ubuntu)
Satoshi Nakamoto
- Multi-processor support for coin generation
- Proxy support for use with TOR
- Fixed some slowdowns in the initial block download
Major thanks to Martti Malmi (sirius-m) for all his coding work and for hosting the new site and this forum, and New Liberty Standard for his help with testing the Linux version.
Martii Malmi (AKA Sirius) “COPA trial” email #132
Date: Thu, 17 Dec 2009 06:49:02 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: [bitcoin-list] Bitcoin 0.2 released
To: bitcoin-list@lists.sourceforge.net
Bitcoin 0.2 is here!
Download (Windows, and now Linux version available)
http://sourceforge.net/projects/bitcoin/files/
New Features
Martti Malmi
- Minimize to system tray option
- Autostart on boot option so you can keep it running in the
background automatically
- New options dialog layout for future expansion
- Setup program for Windows
- Linux version (tested on Ubuntu)
Satoshi Nakamoto
- Multi-processor support for coin generation
- Proxy support for use with TOR
- Fixed some slowdowns in the initial block download
We also have a new forum at http://www.bitcoin.org/smf/
Many thanks to Martti (sirius-m) for all his development work, and to
New Liberty Standard for his help with testing the Linux version.
Satoshi Nakamoto
bitcoin-list
[bitcoin-list] Bitcoin 0.2 released
2009-12-17 06:52:09 UTC - [-](https://sourceforge.net/p/bitcoin/mailman/message/24205662/)
Bitcoin 0.2 is here!
Download (Windows, and now Linux version available)
http://sourceforge.net/projects/bitcoin/files/
New Features
Martti Malmi
- Minimize to system tray option
- Autostart on boot option so you can keep it running in the
background automatically
- New options dialog layout for future expansion
- Setup program for Windows
- Linux version (tested on Ubuntu)
Satoshi Nakamoto
- Multi-processor support for coin generation
- Proxy support for use with TOR
- Fixed some slowdowns in the initial block download
We also have a new forum at http://www.bitcoin.org/smf/
Many thanks to Martti (sirius-m) for all his development work, and to
New Liberty Standard for his help with testing the Linux version.
Satoshi Nakamoto
BitcoinTalk
Re: A few suggestions
2009-12-17 18:38:06 UTC - [-](https://bitcointalk.org/index.php?topic=12.msg77#msg77)
That's good, is it running fine on FreeBSD?
I committed the changes to headers.h.\u00a0 For consistency, I used BSD.\u00a0 The complete list of defines is at [http://docs.wxwidgets.org/stable/wxcppconst.html](http://docs.wxwidgets.org/stable/wxcppconst.html)
#ifdef BSD
#include <netinet/in.h>
#endif
malloc.h is only needed on windows, I'll move that into the WXMSW section before it causes any more trouble.
BitcoinTalk
Re: A few suggestions
2009-12-18 17:37:48 UTC - [-](https://bitcointalk.org/index.php?topic=12.msg79#msg79)
What you can currently do is set "Minimize to the tray" in options, then run it as "bitcoin -min" so it starts minimized. \u00a0The only visible part will be a small (20x20) icon on the tray, which can be doubleclicked if you want to access the UI. \u00a0Note: there's a bug with tray icons sometimes disappearing on 64-bit Karmic Koala, not sure if it's from 64-bit or Karmic, it was fine on 32-bit Jaunty.
We didn't have time to implement the "Start Bitcoin on system startup" feature on Linux in time for 0.2 so it's greyed out. \u00a0I figured Linux people wouldn't mind doing that manually anyway. \u00a0I guess they need to know about the -min switch to do it right.
You can locate the data directory where you want with the "-datadir=<directory>" switch. \u00a0I know someone is already doing that to put it on a TrueCrypt USB drive.
Martii Malmi (AKA Sirius) “COPA trial” email #134
Date: Tue, 22 Dec 2009 19:00:41 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Bitcoin stuff
To: mmalmi@cc.hut.fi
Thanks for creating the maintenance account, it would have been
impossible to do all that without it. I'm really always going to need
it. OK, I changed the password to a 20 character random password.
That's a good domain. People rarely type domain names anymore, they use
autocomplete or click links on search engines.
I need to make a way for you to programmatically get new generated
bitcoin addresses. Either that or you could have them send to your IP
address, but then you have to rely on them to put the order number in
the comment.
When generating the new address, there can be an option to add an entry
to the address book associated with the address, so the received
transaction will be labelled. I kinda hid the labels after early users
found them confusing, but it would be very helpful for this application.
You have to widen up the comment column to see them.
Are you going to manually review and enter orders, at least to begin
with? I sure would.
I'm thinking I should move the UI in the direction of having the user
ask for their bitcoin address when they want one. "give me a bitcoin to
receive a payment with". I suppose next to the send button, there would
by a receive button, you press it and it says "here's a new address to
use, here's the button to copy it to the clipboard, do you want to label
it?" and maybe some explanation about why you shouldn't reuse addresses.
Or maybe just a "New Address" button next to the address box that you
should hit each time to change it.
mmalmi@cc.hut.fi wrote:
> I have registered the domain name bitcoinexchange.com and will start
> coding the service sometime soon as a nice leisure activity. I'm
> envisioning a simple Google-like interface with no registration and only
> two texts fields on the front page, where you insert the amount of money
> you wish to trade, and either your PayPal address to buy dollars or
> bitcoin address to buy bitcoins. On the next page you'll get a new
> bitcoin address for sending the coins or a check code for the PayPal
> transaction text.
>
> PayPal is good for the beginning - it's simple and has no startup costs,
> but later on I might accept credit cards also.
>
> Do you still need the maintenance account? It's ok if you do, but change
> the password to something else.
>
Martii Malmi (AKA Sirius) “COPA trial” email #136
Date: Wed, 23 Dec 2009 17:53:18 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Bitcoin stuff
To: mmalmi@cc.hut.fi
mmalmi@cc.hut.fi wrote:
> I'd also need at least the command line tools to check if coins have
> been received and to send coins. It would require some way to
> communicate with the Bitcoin process running in the background. I don't
> know how that should be done, maybe with something RPC related.
>
> It would also be great if the background process was non-graphical - the
> VPS on the current service level doesn't have enough memory to run the X
> Windowing environment, unless I come up with some ways to free memory.
I had been wondering why everyone keeps harping on no-UI, when already
you can run it with only a small icon on the tray, which is common for
server services on Windows. So I guess this is why. I had chalked it
up to unix snobbery if they couldn't abide a tiny little icon on a
desktop they never see.
Not opening any windows is easy, but it may fail because the gtk
libraries aren't there. wxWidgets has WXBASE for "Only wxBase, no
GUI features". You could try building for that instead of WXGTK and
see what happens. It would be preferable if there's any way to do it as
a command line switch on the same executable, rather than yet another
build variation to release.
How much memory do you have to work with? Bitcoin necessarily takes a
fair bit of memory; about 75MB on Windows. Is that a problem?
Command line control is one of the next things on the list. I want to
design the API carefully.
Receiving payments is the part that has a lot of design choices to be
made. The caller needs to identify the transactions of interest, that's
where the one-bitcoin-address-per-transaction model helps. Searching
the comments text for an order number is another possibility. There's
polled, asking what has been received to the given bitcoin address, and
event driven. I guess in event driven, bitcoin would be told to run a
command line when a certain amount is received to a certain bitcoin address.
Martii Malmi (AKA Sirius) “COPA trial” email #138
Date: Fri, 25 Dec 2009 16:11:14 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Bitcoin stuff
To: mmalmi@cc.hut.fi
You're right, I was looking at a test run with 250,000 blocks... duh.
A normal one shows 17MB memory usage and 10MB VM size.
mmalmi@cc.hut.fi wrote:
>> How much memory do you have to work with?
> The VPS has 320MB RAM, 50MB of which is currently free. There's also
> 500MB swap space.
>
>> Bitcoin necessarily takes a
>> fair bit of memory; about 75MB on Windows. Is that a problem?
>
> Sure about that? Windows task manager shows about 13MB memory usage here.
>
BitcoinTalk
Re: Is my second Transaction working correctly? +Transfer Question
2010-01-05 20:00:46 UTC - [-](https://bitcointalk.org/index.php?topic=17.msg85#msg85)
The transfer is immediate if you send by IP address. If you send by bitcoin address and the recipient isn't online at the time, it might take 30 minutes or more to see it.
Also, the recipient needs to be synced up with the block chain before it'll see the received transaction. That means the status bar at the bottom needs to say at least 33000 blocks, like "x connections 33200 blocks x transactions".
[Quote from: sirius-m on January 05, 2010, 01:20:06 AM](https://bitcointalk.org/index.php?topic=17.msg84#msg84)
Quote
However, once that transaction was complete, a new transaction hasn't started. Or maybe it has. There's only one transaction in the list but I'm up to 131 Blocks under "Status". Is this the way it's supposed to happen? Does it keep processing on the same transaction and generating coins every 120 blocks or so? Or is it supposed to start a new transaction?
_
The number of blocks of a transaction is the amount of new blocks that have been generated by the whole network after the transaction. Each new block in the chain means new coins to its creator. One "generated" -transaction in your transaction list means that you have generated one block. You're not the first one to find the concept of a "block" a bit confusing on the first sight._
Would it be clearer if the status said "x confirmations", like:
2/unconfirmed
3/unconfirmed
4/unconfirmed
5/unconfirmed
6 confirmations
7 confirmations
8 confirmations
Each block essentially means another node has confirmed that it agrees with all transactions up to that point.
BitcoinTalk
Re: 64bit support
2010-01-14 20:17:20 UTC - [-](https://bitcointalk.org/index.php?topic=18.msg97#msg97)
I haven't tried compiling 64-bit yet. 64-bit wouldn't make it any faster, since it uses 64-bit numbers in only a few places and SHA-256 is a 32-bit algorithm, but it may be convenient for those running a 64-bit OS. If I get a chance I'll try -m64 and see what the problem is.
You can run the 32-bit version on 64-bit Linux by installing ia32-libs. (sudo apt-get install ia32-libs) If we made a Debian package, it could automatically pull that in as a dependency.
BitcoinTalk
Re: Number of connections?
2010-01-20 20:07:15 UTC - [-](https://bitcointalk.org/index.php?topic=21.msg112#msg112)
Coins generate at the same speed with any number of connections >= 1.
More connections just add redundancy. If you only had one connection, what if that node is slow or busy, or only connected to you? Having several connections increases the certainty that you're well connected to the network. That hasn't been a problem in practice, the network is very thoroughly connected. If you have 2 or 3 connections, you're fine.
BitcoinTalk
Re: TOR and I2P
2010-01-20 22:05:28 UTC - [-](https://bitcointalk.org/index.php?topic=22.msg113#msg113)
I've been thinking about that for a while. I want to add the backend support for .onion addresses and connecting to them, then go from there.
There aren't many .onion addresses in use for anything because the user has to go through a number of steps to create one. Configure TOR to generate a .onion address, restart TOR, configure it with the generated address. Perhaps this is intentional to keep TOR so it can't be integrated into file sharing programs in any sufficiently automated way.
BitcoinTalk
Re: Bitcoin crash when sending coins
2010-01-27 21:52:27 UTC - [-](https://bitcointalk.org/index.php?topic=27.msg156#msg156)
That is what happens if you copy wallet files around. If you copy your wallet file to a second computer, then they both think the money in the wallet is theirs. If one spends any of it, the other doesn't know those coins are already spent and would try to spend them again, and that's the error you would hit.
Now that it's clear this is a key error message, it ought to be something more like "the money appears to be already spent... this could happen if you used a copy of your wallet file on another computer."
You can move or backup your wallet file, but it needs to have only one "lineage" and only used in one place at a time. Any time you transfer money out of it, then you must no longer use any previous copies.
This brings up a good point. In the case of restoring a backup that may be from before you spent some coins, we need to add functionality to resync it to discover which coins have already been spent. This would not be hard to do, it just hasn't been implemented yet. I'll add it to the list. This would make it mostly repair the situation instead of giving that error message.
BitcoinTalk
Re: A newb's test - anyone want to buy a picture for $1?
2010-01-28 01:01:48 UTC - [-](https://bitcointalk.org/index.php?topic=25.msg159#msg159)
Yes, it's a technical limitation. Sending by bitcoin address enters the transaction into the network and the recipient discovers it from the network. You don't connect directly with them and they don't have to be online at the time.
I very much wanted to find some way to include a short message, but the problem is, the whole world would be able to see the message. As much as you may keep reminding people that the message is completely non-private, it would be an accident waiting to happen.
Unfortunately, ECDSA can only sign signatures, it can't encrypt messages, and we need the small size of ECDSA. RSA can encrypt messages, but it's many times bigger than ECDSA.
BitcoinTalk
Re: 64bit support
2010-01-29 00:42:49 UTC - [-](https://bitcointalk.org/index.php?topic=18.msg174#msg174)
I committed a fix for 64-bit compile and some fixes to support wxWidgets 2.9.0.
There was one compile error in serialize.h with min(sizeof()) that I fixed for 64-bit. The rest of the 64-bit compile errors I was getting were in wxWidgets 2.8.9, so I started working on supporting wxWidgets 2.9.0.
wxWidgets 2.9.0 is UTF-8. We've been using the ANSI version of wxWidgets 2.8.9 in anticipation of wxWidgets UTF-8 support.
I compiled and ran on 64-bit Ubuntu 9.10 Karmic.
I think the only bug left is where the status number is mashed up. I'm not sure why, I have to suspect it's a UTF-8 thing, but no idea how that could happen. Haven't looked into it.
build-unix.txt is updated and two makefiles on SVN:
makefile.unix.wx2.8
makefile.unix.wx2.9
Unfortunately there's still no debian package for either version of wxWidgets we use. They only have the wchar ("unicode") version of wxWidgets 2.8, which is a disaster because wchar wxString doesn't convert to std::string. We use either ANSI wxWidgets 2.8, or wxWidgets 2.9. So you still have to get it and build it yourself.
Martii Malmi (AKA Sirius) “COPA trial” email #143
Editor’s note: this email appears timestamped PRIOR to emails #141 and #142, however it was listed AFTER emails #141 and #142 in Martii Malmi’s COPA trial email documents.
Date: Wed, 03 Feb 2010 20:25:53 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Bitcoin API
To: mmalmi@cc.hut.fi
Is there any way to find out what the missing shared libraries are? It
would help to know.
It probably needs the gtk libraries, in which case you'll have the same
problem with the 64-bit version. I would like to have a single
executable that can also run on a UI-less system, but I'm not sure how
on linux to link to things but still be able to run and not use them if
the library is not present. Maybe we should statically link the GTK.
Licensewise, it's LGPL, but since it's only used on unix, that would be
OK. (we can't link LGPL stuff on windows because we provide the OpenSSL
DLL, but on linux OpenSSL comes with the OS)
My 64-bit (debug stripped) executable is attached. It includes untested
changes that are not in SVN yet: UI changes and the wallet fSpent flag
resync stuff.
I've been researching options for interprocess calling. I want
something that will be easy for a variety of server side languages to
call, particularly PHP. Cross-platform to windows is a plus.
I'm not sure if I want it to be something that can be accessed across
the network. That would introduce security issues. If it can only be
accessed on the local system, then local security authentication covers
it, and it is incapable of being hacked remotely.
At surface level, not looking into any details yet, the current front
runners are:
D-Bus:
local system only
used by qt, gnome and skype
bindings: c, python, java, c++,
php listed as "in progress"
not sure how ready it is on windows
XML-RPC:
widely used, built in libraries on PHP
it's more for web clients to talk to server, transport is http, so
its a security question
Is it possible to open a socket that can only be accessed locally?
mmalmi@cc.hut.fi wrote:
> Have you decided upon the inter-process calling method of the Bitcoin
> API yet? An easy solution would be the socket interface provided by
> wxWidgets: http://docs.wxwidgets.org/trunk/overviewipc.html. The_
> Bitcoin program running a wxServer could be then accessed by calling the
> bitcoin executable from the command line or by coding your own wxClient
> app.
>
> Another option would be to just use the plain BSD sockets.
>
> Can you send me a 64-bit Linux binary of Bitcoin if you have one? I
> tried compiling on the VPS, but it ran out of memory. Tried the 32-bit
> version (with ia32-libs) also, but it didn't find the shared libraries.
>
BitcoinTalk
Re: Bitcoin crash when sending coins
2010-02-03 23:29:57 UTC - [-](https://bitcointalk.org/index.php?topic=27.msg219#msg219)
I uploaded this fix to the SVN. It watches for spent coins and updates your wallet on load and also continuously as blocks come in. I also put a better error message, but it should never hit it because it always finds spent coins ahead of time, unless you spent the same money at the same time on two computers at once.
If you want to try it, PM or e-mail me your e-mail address where I can send it as an attachment and also what OS (win, linux 32-bit, linux 64-bit).
BitcoinTalk
Re: Win32 CPU Cycles vs 'Live Protection' Engines ?
2010-02-03 23:36:54 UTC - [-](https://bitcointalk.org/index.php?topic=35.msg220#msg220)
Thanks for that. Which version of Windows?
BitcoinTalk
Re: Questions about Addresses
2010-02-04 00:07:07 UTC - [-](https://bitcointalk.org/index.php?topic=34.msg222#msg222)
Port forwarding forwards a port to one computer. It tells the router which computer handles connections to that port. So that's the computer receiving.
If you didn't set up port forwarding, then incoming connections won't go to any computer, and attempts to send to that IP would just say it couldn't connect to the recipient and nothing is sent. When sending by IP, you still send to a bitcoin address, but your computer connects to that IP, gets a new bitcoin address from it, gives the transaction directly to the them and confirms that it was received and accepted.
Someone should post their static IP so people can try out sending by IP and also give that user free money.
There's a 32-bit checksum in bitcoin addresses so you can't accidentally type an invalid address.
If 4) you send to a recipient who has abandoned or lost their wallet.dat, then the money is lost. A subtle point can be made that since there is then less total money in circulation, everyone's remaining money is worth slightly more, aka "natural deflation".
BitcoinTalk
Re: TOR and I2P
2010-02-04 00:30:50 UTC - [-](https://bitcointalk.org/index.php?topic=22.msg223#msg223)
When using proxy port 9050, it will only make one attempt to connect to IRC, then give up, since it knows it will probably always fail because IRC servers ban all the TOR exit nodes. If you're using another port, it would assume it might be a regular old normal proxy and would keep retrying IRC at longer and longer intervals. You should not use Polipo or Privoxy as those are http filters and caches that would corrupt Bitcoin's messages if they make any changes. Bitcoin might be trying to overcome it by reconnecting. You should use port 9050.
As riX says, the "is giving Tor only an IP address. Apps that do DNS..." warnings are nothing to worry about. Bitcoin doesn't use DNS at all in proxy mode.
Since Bitcoin can't get through to IRC through Tor, it doesn't know which nodes are currently online, so it has to try all the recently seen nodes. It tries to conserve connection attempts as much as possible, but also people want it to connect quickly when they start it up and reconnect quickly if disconnected. It uses an algorithm where it tries an IP less and less frequently the longer ago it was successful connected. For example, for a node it saw 24 hours ago, it would wait 5 hours between connection attempts. Once it has at least 2 connections, it won't try anything over a week old, and 5 connections it won't try anything over 24 hours old.
Martii Malmi (AKA Sirius) “COPA trial” email #142
Editor’s note: this email appears timestamped PRIOR to email #141, however it was listed AFTER email #141 in Martii Malmi’s COPA trial email documents.
Date: Thu, 04 Feb 2010 01:32:50 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Exchange options
To: Martti Malmi <mmalmi@cc.hut.fi>
Don't rush ahead and get yourself rejected from all the payment options
before you've had time to see if there's a better approach. I suggest
you wait before contacting any more payment processors. You may get
ideas from things other users come up with and try.
Just some random incomplete ideas: There may be a way to position it as
an intermediate credit for micropayments for some virtual good or
something. Or maybe if the payments are only in one direction. If you
only buy bitcoins, then you're only sending money out not taking
people's money, that would still be useful to peg the currency. That
might be payment for computer time.
Credit card is only one way. Don't even talk about the idea of
returning money to customer's credit cards. Credit card companies hate
that.
In any case, any payment processor is going to expect you to be selling
something real.
Do you have electronic transfer or paper cheque in your country? (even
if only within Europe)
Martii Malmi (AKA Sirius) “COPA trial” email #141
Date: Thu, 04 Feb 2010 02:20:10 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Exchange ideas
To: Martti Malmi <mmalmi@cc.hut.fi>
You could always exchange for Liberty Reserve. It's an online currency
similar to e-Bullion, Pecunix or Webmoney that allows exchanges no
questions asked and with privacy.
LR and the others are hard to buy but easy to cash out. Hard to buy
because exchangers are very cautious about getting ripped off by
reversed payments, so they require more details and holding time.
Cashing out is very easy. LR is non-reversible, so there are oodles of
exchanges eager to turn LR into any kind of payment.
Bitcoin is the reverse, in that it's easy to get Bitcoins just by
generating them. It would be easy for customers to go
bitcoin->LR->cash, bitcoin->LR->gold, bitcoin->LR->paypal or maybe they
just want to save the money, then just bitcoin->LR.
There's also the idea BTC2PSC had to sell paysafecards for bitcoins.
Either online delivery by sending the card number by e-mail, or delivery
of the unopened physical card in the mails. There are many variations
of these cards. In some countries, they're called Gift Cards, and can
be used wherever credit cards are accepted. I think they're used more
by people who don't have the credit history to get a real credit card,
so they buy gift cards themselves to pay for things that require a
credit card.
Martii Malmi (AKA Sirius) “COPA trial” email #145
Date: Thu, 04 Feb 2010 18:50:35 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Bitcoin API
To: mmalmi@cc.hut.fi
I must have accidentally typed j instead of z. It's bz2 format. Rename
to .tar.bz2 or just do tar -jxvf
> The package doesn't open, it says "not in gzip format".
>
Martii Malmi (AKA Sirius) “COPA trial” email #146
Date: Thu, 04 Feb 2010 19:33:26 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: UTF-8 to ANSI hack in CAboutDialog
To: Martti Malmi <mmalmi@cc.hut.fi>
What was the reason for this change?
#if !wxUSE_UNICODE
if (str.Find('Â') != wxNOT_FOUND)
str.Remove(str.Find('Â'), 1);
to:
if (str.Find('�') != wxNOT_FOUND)
str.Remove(str.Find('�'), 1);
wxFormBuilder turns the (c) symbol into UTF-8 automatically. On
wxWidgets-2.8.9 ansi, it shows as a copyright symbol with an extra trash
character, which this hack fixes up for the non-unicode (ansi) case.
Martii Malmi (AKA Sirius) “COPA trial” email #147
Date: Thu, 04 Feb 2010 19:59:48 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Bitcoin API
To: mmalmi@cc.hut.fi
Good, then no need to consider d-bus. Is there something like IPC
sockets on Windows? I guess we could look how wx does it, or maybe the
XML-RPC library will already know what to do. Windows has named pipes,
maybe that's the best analogue.
I don't think I want to invent my own RPC protocol, I want to use an
existing standard. PHP, Java, Python or anything will be able to talk
to the server directly the same way the command line commands do.
I'm going to start reading on XML-RPC. It's coming up in searches as
the most widely used protocol and widely supported. PHP includes it in
its standard libraries.
>> Is it possible to open a socket that can only be accessed locally?
>
> Yes, you can use IPC sockets ("Unix domain sockets") which are local
> only. That's done in the wx-api by using a filename in place of a port
> number. I committed an example of how the wxServer-Client communication
> is used, you can revert if you want to. Now there's the -blockamount
> command line option which asks the running instance for the block chain
> length.
>
> I think this command line method could already be used from PHP, but it
> might be lighter if php itself could call the socket server directly.
> The wx's IPC overview mentions wxSocketEvent, wxSocketBase,
> wxSocketClient and wxSocketServer as being "Classes for the low-level
> TCP/IP API", which might be easier to use from php than what I used now
> (wxServer, wxClient, wxConnection). I'll look more into it.
>
Martii Malmi (AKA Sirius) “COPA trial” email #148
Date: Fri, 05 Feb 2010 04:08:54 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Bitcoin API research status
To: Martti Malmi <mmalmi@cc.hut.fi>
I noticed this in the docs for wxSocketServer::Accept(bool wait = true):
"If wait is true and there are no pending connections to be accepted, it
will wait for the next incoming connection to arrive. **Warning: This
will block the GUI."
wxWidgets is pathologically single-threaded. Not only single-threaded,
but must-be-the-GUI-thread-ed. Even for something as non-UI as
wxStandardPaths I got nailed. All this is fine for UI code, since this
is the same constraint placed by Windows anyway, but for UI-less server
daemon code, wx calls are uncertain.
Status of my research currently:
For PHP, Python, etc to access the server, we need to use regular
sockets. I think we can make it local-only by binding to localhost
only, so it can only be accessed through the loopback. They say it's
also watertight to simply check the IP of connections received and
disconnect anything not 127.0.0.1. May as well do both.
XML-RPC is a bit fat. There are 4 libraries for C++ but they're all big
and hard to build, dependencies, license issues. Some posters complain
all the C++ and PHP XML-RPC libraries are buggy.
JSON-RPC is a simpler more elegant standard. It's simple enough I could
use a generic JSON parser.
PHP, Python and Java all have good implementations of JSON-RPC.
I'm currently leaning towards JSON-RPC.
Martii Malmi (AKA Sirius) “COPA trial” email #151
Date: Fri, 05 Feb 2010 18:29:12 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: Exchange options
To: mmalmi@cc.hut.fi
Maybe the current difficulty of buying LR is already the limit of how
easy it can get in that direction.
Every conventional payment method has refutability as their way to cope
with their lack of passwords and crypto. The system is wide open to
copying plaintext credit card numbers and account numbers, and they deal
with it by reversing the transaction after the fact. The system works
for physical goods that have to be delivered somewhere, and services
which can't be resold. It's a problem when it interfaces with precious
metals and currency conversion.
The first step of being easy in one direction, bitcoin->LR or anything
of established value, goes a long way. Even those who don't use the
conversion still benefit from knowing that they could. Trading bitcoin
becomes an easier way to trade the ability to claim LR, similar to how
paper money was once the right to claim gold. Nobody has to ever
actually claim the LR to get the benefit of having the option that they
could if they wanted to.
A lot of times you just need a minuscule amount of online currency. The
hassle of buying the other online currencies is too much for buying a
small amount. The ease of getting a small amount of bitcoin may help
bootstrap an ecosystem of sellers of micropayment sized online goods
selling to that market. If the sellers can get LR for bitcoins, they're
happy, and that may be subsidized at first by investors who want to buy
bc in large lots.
The main thing holding online currencies back is the lack of an easy way
to get a small amount of currency. Bitcoin opens that up. It'll be the
only online currency that's both easy to cash out and easy to get a
small amount. It'll just be the usual harder difficulty to buy a large
amount.
mmalmi@cc.hut.fi wrote:
> Liberty Reserve sounds good. I could first make a service that only
> accepts LR, and add more options later. The weakness is that buying LR
> is an extra step of inconvenience when the customer just wants to get
> Bitcoins. But maybe I don't have too much choice here.
>
>> Do you have electronic transfer or paper cheque in your country? (even
>> if only within Europe)
>
> Yes, electronic bank transfer is available. During 2010 most European
> countries will become a part of SEPA (Single Euro Payments Area), which
> means that all payments within Europe are to be considered domestic.
> Banks will have to apply the same fees and standards to all domestic
> transfers, so they'll probably all be free of charge and complete in one
> bank day. For international transfers there's the SWIFT/IBAN system,
> which usually costs some extra.
>
> A longer term project for my exchange service would be to see what kinds
> of integration options the banks have to offer. Bank transfers would
> reach nearly as many customers as credit cards do.
>
Martii Malmi (AKA Sirius) “COPA trial” email #152
Date: Fri, 05 Feb 2010 18:39:18 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Re: UTF-8 to ANSI hack in CAboutDialog
To: mmalmi@cc.hut.fi
Right, I'll change it to this so it doesn't get broken again:
if (str.Find('\xC2') != wxNOT_FOUND)
str.Remove(str.Find('\xC2'), 1);
mmalmi@cc.hut.fi wrote:
> I didn't change it knowingly, must have been some encoding problem.
>
>> What was the reason for this change?
>>
>> #if !wxUSEUNICODE_
>> ...
>> if (str.Find('Â') != wxNOTFOUND)_
>> str.Remove(str.Find('Â'), 1);
>> to:
>> if (str.Find('�') != wxNOTFOUND)_
>> str.Remove(str.Find('�'), 1);
>>
>> wxFormBuilder turns the (c) symbol into UTF-8 automatically. On
>> wxWidgets-2.8.9 ansi, it shows as a copyright symbol with an extra
>> trash character, which this hack fixes up for the non-unicode (ansi)
>> case.
>
BitcoinTalk
Proof-of-work difficulty increasing
2010-02-05 19:19:12 UTC - [-](https://bitcointalk.org/index.php?topic=43.msg249#msg249)
We had our first automatic adjustment of the proof-of-work difficulty on 30 Dec 2009.
The minimum difficulty is 32 zero bits, so even if only one person was running a node, the difficulty doesn't get any easier than that. For most of last year, we were hovering below the minimum. On 30 Dec we broke above it and the algorithm adjusted to more difficulty. It's been getting more difficult at each adjustment since then.
The adjustment on 04 Feb took it up from 1.34 times last year's difficulty to 1.82 times more difficult than last year. That means you generate only 55% as many coins for the same amount of work.
The difficulty adjusts proportionally to the total effort across the network. If the number of nodes doubles, the difficulty will also double, returning the total generated to the target rate.
For those technically inclined, the proof-of-work difficulty can be seen by searching on "target:" in debug.log. It's a 256-bit unsigned hex number, which the SHA-256 value has to be less than to successfully generate a block. It gets adjusted every 2016 blocks, typically two weeks. That's when it prints "GetNextWorkRequired RETARGET" in debug.log.
minimum 00000000ffff0000000000000000000000000000000000000000000000000000
30/12/2009 00000000d86a0000000000000000000000000000000000000000000000000000
11/01/2010 00000000c4280000000000000000000000000000000000000000000000000000
25/01/2010 00000000be710000000000000000000000000000000000000000000000000000
04/02/2010 000000008cc30000000000000000000000000000000000000000000000000000
14/02/2010 0000000065465700000000000000000000000000000000000000000000000000
24/02/2010 0000000043b3e500000000000000000000000000000000000000000000000000
08/03/2010 00000000387f6f00000000000000000000000000000000000000000000000000
21/03/2010 0000000038137500000000000000000000000000000000000000000000000000
01/04/2010 000000002a111500000000000000000000000000000000000000000000000000
12/04/2010 0000000020bca700000000000000000000000000000000000000000000000000
21/04/2010 0000000016546f00000000000000000000000000000000000000000000000000
04/05/2010 0000000013ec5300000000000000000000000000000000000000000000000000
19/05/2010 00000000159c2400000000000000000000000000000000000000000000000000
29/05/2010 000000000f675c00000000000000000000000000000000000000000000000000
11/06/2010 000000000eba6400000000000000000000000000000000000000000000000000
24/06/2010 000000000d314200000000000000000000000000000000000000000000000000
06/07/2010 000000000ae49300000000000000000000000000000000000000000000000000
13/07/2010 0000000005a3f400000000000000000000000000000000000000000000000000
16/07/2010 000000000168fd00000000000000000000000000000000000000000000000000
27/07/2010 00000000010c5a00000000000000000000000000000000000000000000000000
05/08/2010 0000000000ba1800000000000000000000000000000000000000000000000000
15/08/2010 0000000000800e00000000000000000000000000000000000000000000000000
26/08/2010 0000000000692000000000000000000000000000000000000000000000000000
date, difficulty factor, % change
2009 1.00
30/12/2009 1.18 +18%
11/01/2010 1.31 +11%
25/01/2010 1.34 +2%
04/02/2010 1.82 +36%
14/02/2010 2.53 +39%
24/02/2010 3.78 +49%
08/03/2010 4.53 +20%
21/03/2010 4.57 +9%
01/04/2010 6.09 +33%
12/04/2010 7.82 +28%
21/04/2010 11.46 +47%
04/05/2010 12.85 +12%
19/05/2010 11.85 -8%
29/05/2010 16.62 +40%
11/06/2010 17.38 +5%
24/06/2010 19.41 +12%
06/07/2010 23.50 +21%
13/07/2010 45.38 +93%
16/07/2010 181.54 +300%
27/07/2010 244.21 +35%
05/08/2010 352.17 +44%
15/08/2010 511.77 +45%
26/08/2010 623.39 +22%
BitcoinTalk
Re: Questions about Addresses
2010-02-05 19:44:46 UTC - [-](https://bitcointalk.org/index.php?topic=34.msg250#msg250)
[Quote from: Sabunir on February 05, 2010, 05:31:30 PM](https://bitcointalk.org/index.php?topic=34.msg246#msg246)
Perhaps there should be a feature against this? For instance, if a transaction isn't accepted by the recipient for a long period of time (a month?), the transaction will be canceled and the coins returned to the one who sent them?
That's not possible. You've handed control of the money over to the recipient's keypair. Only that key can control it.
It's similar to if you encrypt a file with AES and a strong password, and you lose the password. The data is lost.
BitcoinTalk
Re: Repost: Request: Make this anonymous?
2010-02-06 21:06:32 UTC - [-](https://bitcointalk.org/index.php?topic=7.msg264#msg264)
When you send to a bitcoin address, you don't connect to the recipient. You send the transaction to the network the same way you relay transactions. There's no distinction between a transaction you originated and one you received from another node that you're relaying in a broadcast. With a very small network though, someone might still figure it out by process of elimination. It'll be better when the network is larger.
If you send by IP, the recipient sees you because you connect to their IP. You could use TOR to mask that.
You could use TOR if you don't want anyone to know you're even using Bitcoin.
Bitcoin is still very new and has not been independently analysed. If you're serious about privacy, TOR is an advisable precaution.
BitcoinTalk
Re: How divisible are bitcoins and other market/economic questions
2010-02-06 23:25:53 UTC - [-](https://bitcointalk.org/index.php?topic=44.msg267#msg267)
Eventually at most only 21 million coins for 6.8 billion people in the world if it really gets huge.
But don't worry, there are another 6 decimal places that aren't shown, for a total of 8 decimal places internally. It shows 1.00 but internally it's 1.00000000. If there's massive deflation in the future, the software could show more decimal places.
If it gets tiresome working with small numbers, we could change where the display shows the decimal point. Same amount of money, just different convention for where the ","'s and "."'s go. e.g. moving the decimal place 3 places would mean if you had 1.00000 before, now it shows it as 1,000.00.
Martii Malmi (AKA Sirius) “COPA trial” email #153
Date: Sun, 07 Feb 2010 06:12:04 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: JSON-RPC status
To: Martti Malmi <mmalmi@cc.hut.fi>
The JSON-RPC implementation is going well. I'm using boost::asio for
sockets. JSON-RPC can be plain socket or HTTP, but it seems most other
implementations are HTTP, so I made my own simple HTTP headers. For
JSON parsing I'm using JSON Spirit, which makes full use of STL and has
been really nice to use. It's header-only so it's no added build work,
and small enough to just add it to our source tree. MIT license. This
should all be working in a few more days.
The forum sure is taking off. I didn't expect to have so much activity
so fast.
BitcoinTalk
Re: Make your "we accept Bitcoin" logo
2010-02-08 01:22:29 UTC - [-](https://bitcointalk.org/index.php?topic=45.msg278#msg278)
No, sorry. I've been meaning to redo it. The largest icon that still looks good is the 20x20 one which is used for the tray icon in GNOME. Any larger than that looks bad. The 16x16 and 20x20 ones have quite a bit of hand tweaking to get the pixels to work out right. If you just scale down a larger image, the pixels end up blurred and awkward in places where the lines in "BC" don't land square on a pixel.
The best 16x16 with full alpha channel is in src/rc/bitcoin.ico. I don't like the 32x32 version.
I'm attaching bitcoin20x20.png, the 20x20 version with full transparency.
BitcoinTalk
Bitcoin client and website translation
2010-02-08 01:27:02 UTC - [-](https://bitcointalk.org/index.php?topic=47.msg279#msg279)
Thank you for the offer to help translate. That is probably the best way you could help.
I will need to prepare the code for translation first. wxWidgets has locale support, and most strings are in generated code that is already wrapped, so it shouldn't be too hard. We also must finish upgrading to wxWidgets-2.9.0 to get UTF-8 support. I've done test builds with 2.9.0 and there is one bug left to fix.
What operating system are you using? Windows, Linux 32-bit or 64 bit?
Split from [another thread](https://www.bitcoin.org/smf/index.php?topic=44).
sirius-m
Martii Malmi (AKA Sirius) “COPA trial” email #155
Date: Mon, 08 Feb 2010 15:28:52 +0000
From: Satoshi Nakamoto <satoshin@gmx.com>
Subject: Translation
To: Martti Malmi <mmalmi@cc.hut.fi>
Does Drupal have any special multi-language support, or do you just
create copies of pages by hand?
BlueSky offered to do translation on the forum. If you create a
www.bitcoin.org/zh/ copy of the site and give him an account with just
the ability to create new pages and edit text, he'll probably translate
the site into Chinese for you and maybe maintain it.
BitcoinTalk
Bitcoin client and website translation
2010-02-08 16:10:37 UTC - [-](https://bitcointalk.org/index.php?topic=47.msg283#msg283)
It's much easier to have a single binary and multiple .mo files. It's too much maintenance work to have lots of build variations. Once the software support is implemented, anyone could contribute translations.
wxWidgets uses the gettext standard. You use the gettext tools or something like poedit to create a .po file by scanning the sourcefiles for strings and editing the translations into the .po file, then compile it into a .mo file. The program loads the .mo file at runtime and reskins all the strings. Additional languages can be added to an existing program by adding .mo files without recompiling the program.
On Windows, the .mo files would go in a lang subdirectory in the directory where the EXE is located.
Right now I'm working on JSON-RPC and command line support, but when I'm finished with that I hope to do this next.