#

define

(2 articles)

Kicking the Hornet's Nest - part 17

# Kicking the Hornet's Nest - third edition - part 17 All links, digital (pdf, txt, docx, md) and book in print, can be found at https://hive.blog/@crrdlx/satoshi Edited by [crrdlx](nostr:nprofile1qyv8wumn8ghj7mn0wdj8y6tkv5hxzurs9aex2mrp0yq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59uqzqqzmcn0yrn7ttq8hrjkk46ysn2tk26rr8f8k4y7xkl74hlh3rcdzm9d3t8), npub: ``` npub1qpdufhjpel94srm3ett2azgf49m9dp3n5nm2j0rt0l2mlmc3ux3qza082j ``` ---- ### Kicking the Hornet's Nest pages 375 - 400 ---- ##### BitcoinTalk #### Re: Bitcoin minting is thermodynamically perverse ##### _2010-08-07 17:46:09 UTC_ - [-](https://bitcointalk.org/index.php?topic=721.msg8114#msg8114) It's the same situation as gold and gold mining. The marginal cost of gold mining tends to stay near the price of gold. Gold mining is a waste, but that waste is far less than the utility of having gold available as a medium of exchange. I think the case will be the same for Bitcoin. The utility of the exchanges made possible by Bitcoin will far exceed the cost of electricity used. Therefore, _not_having Bitcoin would be the net waste. [_**Quote from: gridecon on August 06, 2010, 04:48:00 PM**_](https://bitcointalk.org/index.php?topic=721.msg7889#msg7889) _As an overall point, I also do not agree with the idea that the very high computational burden of coin generation is in fact a necessity of the current system. As I understand it, currency creation is fundamentally metered by TIME - and if that is the fundamental controlling variable, what is the need for everyone to "roll as many dice as posible" within that given time period? The "chain of proof" for coin ownership and transactions doesn't depend on the method for spawning coins._ Each node's influence on the network is proportional to its CPU power. The only way to show the network how much CPU power you have is to actually use it. If there's something else each person has a finite amount of that we could count for one-person-one-vote, I can't think of it. IP addresses... much easier to get lots of them than CPUs. I suppose it might be possible to measure CPU power _at certain times_. For instance, if the CPU power challenge was only run for an average of 1 minute every 10 minutes. You could still prove your total power at given times without running it all the time. I'm not sure how that could be implemented though. There's no way for a node that wasn't present at the time to know that a past chain was actually generated in a duty cycle with 9 minute breaks, not back to back. Proof-of-work has the nice property that it can be relayed through untrusted middlemen. We don't have to worry about a chain of custody of communication. It doesn't matter who tells you a longest chain, the proof-of-work speaks for itself. ##### BitcoinTalk #### Re: A proposal for a semi-automated Escrow mechanism ##### _2010-08-07 20:04:59 UTC_ - [-](https://bitcointalk.org/index.php?topic=645.msg8137#msg8137) [_**Quote from: jgarzik on August 05, 2010, 07:00:30 PM**_](https://bitcointalk.org/index.php?topic=645.msg7723#msg7723) _Due to that recourse, it is unlikely to be used as an escrow mechanism_ ![](file:///tmp/lu30467eu8.tmp/lu30468nv5_tmp_b56eb9f04b2623cd.gif) Really? Do you think people won't be able to understand the benefit? (If your response is an argument that there's no benefit at all, I guess that will reinforce the case that people won't be able to understand it.) ##### BitcoinTalk #### Escrow ##### _2010-08-07 20:13:52 UTC_ - [-](https://bitcointalk.org/index.php?topic=750.msg8140#msg8140) Here's an outline of the kind of escrow transaction that's possible in software. This is not implemented and I probably won't have time to implement it soon, but just to let you know what's possible. The basic escrow: The buyer commits a payment to escrow. The seller receives a transaction with the money in escrow, but he can't spend it until the buyer unlocks it. The buyer can release the payment at any time after that, which could be never. This does not allow the buyer to take the money back, but it does give him the option to burn the money out of spite by never releasing it. The seller has the option to release the money back to the buyer. While this system does not guarantee the parties against loss, it takes the profit out of cheating. If the seller doesn't send the goods, he doesn't get paid. The buyer would still be out the money, but at least the seller has no monetary motivation to stiff him. The buyer can't benefit by failing to pay. He can't get the escrow money back. He can't fail to pay due to lack of funds. The seller can see that the funds are committed to his key and can't be sent to anyone else. Now, an economist would say that a fraudulent seller could start negotiating, such as "release the money and I'll give you half of it back", but at that point, there would be so little trust and so much spite that negotiation is unlikely. Why on earth would the fraudster keep his word and send you half if he's already breaking his word to steal it? I think for modest amounts, almost everyone would refuse on principle alone. ##### BitcoinTalk #### Re: 4 hashes parallel on SSE2 CPUs for 0.3.6 ##### _2010-08-07 21:16:01 UTC_ - [-](https://bitcointalk.org/index.php?topic=648.msg8145#msg8145) [_**Quote from: impossible7 on August 06, 2010, 11:37:20 AM**_](https://bitcointalk.org/index.php?topic=648.msg7838#msg7838) _CRITICAL_BLOCK is a macro that contains a for loop. The assertion failure indicates that break has been called inside the body of the loop. The only break statement in this block is in line 2762. In the original source file, there is no break statement in this critical block. I think you must remove lines 2759-2762. The is nothing like that in the original main.cpp._ Sorry about that. CRITICAL_BLOCK isn't perfect. You have to be careful not to break or continue out of it. There's an assert that catches and warns about break. I can be criticized for using it, but the syntax would be so much more bloated and error prone without it. Is there a chance the SSE2 code is slow on Intel because of some quirk that could be worked around? For instance, if something works but is slow if it's not aligned, or thrashing the cache, or one type of instruction that's really slow? I'm not sure how available it is, but I think Intel used to have a profiler for profiling on a per instruction level. I guess if tcatm doesn't have a system with the slow processor to test with, there's not much hope. But it would be really nice if this was working on most CPUs. ##### BitcoinTalk #### Re: bitcoin generation broken in 0.3.8? ##### _2010-08-09 18:50:41 UTC_ - [-](https://bitcointalk.org/index.php?topic=753.msg8388#msg8388) I found that SSE2 only added a slight 2% speedup, which didn't seem worth the incompatibility. I was trying to take the safer option. It doesn't look to me like Crypto++ could be deciding whether to use SSE2 at runtime. There's one place where it detects SSE2 for deciding some block count parameter, but the SSE2 stuff is all #ifdef at compile time and I can't see how that would switch at runtime. Maybe I'm not looking in the right place. Should we enable SSE2 in all the makefiles? It seems like we must in case someone compiles with 64-bit. I will recompile the 64-bit part of the Linux 0.3.8 release. ##### BitcoinTalk #### Version 0.3.8.1 update for Linux 64-bit ##### _2010-08-09 19:46:58 UTC_ - [-](https://bitcointalk.org/index.php?topic=765.msg8402#msg8402) When we switched to Crypto++ 5.6.0 SHA-256 in version 0.3.6, generation got broken on the Linux 64-bit build. Version 0.3.8.1 is on SourceForge with the 64-bit binary updated. Download: [http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download](http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download) Future versions after 0.3.8 will probably require SSE2. Anyone have Pentium 3 or older where this would be a problem? ##### BitcoinTalk #### Re: What could be the transition plan to Y2038 compliant Bitcoin? ##### _2010-08-09 20:13:26 UTC_ - [-](https://bitcointalk.org/index.php?topic=760.msg8413#msg8413) **unsigned** int is good until 2106. Surely the network will have to be totally revamped at least once by then. There should not be any signed int. If you've found a signed int somewhere, please tell me (within the next 25 years please) and I'll change it to unsigned int. ##### BitcoinTalk #### Re: bitcoin generation broken in 0.3.8? (64-bit) ##### _2010-08-09 20:34:06 UTC_ - [-](https://bitcointalk.org/index.php?topic=753.msg8417#msg8417) I uploaded 0.3.8.1 for Linux with re-built 64-bit. I ran a difficulty 1 test with it and it has generated blocks. [http://BitcoinTalk.org/index.php?topic=765.0](http://bitcointalk.org/index.php?topic=765.0) Download: [http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download](http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.3.8/bitcoin-0.3.8.1-linux.tar.gz/download) ##### BitcoinTalk #### Re: Version 0.3.8.1 update for Linux 64-bit ##### _2010-08-09 20:55:06 UTC_ - [-](https://bitcointalk.org/index.php?topic=765.msg8422#msg8422) That's a good point, I believe you could run with generation off if you don't have SSE2. How about add to the top of cryptopp/config.h: #if !defined(_M_X64) && !defined(__x86_64__) #define CRYPTOPP_DISABLE_SSE2 1 #endif that would disable SSE2 for 32-bit builds. (at least with GCC or MSVC) ##### BitcoinTalk #### Connection limits ##### _2010-08-09 20:58:45 UTC_ - [-](https://bitcointalk.org/index.php?topic=766.msg8424#msg8424) SVN rev 125: - Always make 8 outbound connections even if have 8 inbound - Limit outbound connections to one per a.b.?.? range - Switch -maxconnections=# I added the (currently undocumented) switch -maxconnections=#. You shouldn't use it unless you need to because your router can't maintain a lot of connections, then try -maxconnections=30. I haven't really tested -maxconnections much, could someone test it? ##### BitcoinTalk #### Re: Bitcoin minting is thermodynamically perverse ##### _2010-08-09 21:28:39 UTC_ - [-](https://bitcointalk.org/index.php?topic=721.msg8431#msg8431) The heat from your computer is not wasted if you need to heat your home. If you're using electric heat where you live, then your computer's heat isn't a waste. It's equal cost if you generate the heat with your computer. If you have other cheaper heating than electric, then the waste is only the difference in cost. If it's summer and you're using A/C, then it's twice. Bitcoin generation should end up where it's cheapest. Maybe that will be in cold climates where there's electric heat, where it would be essentially free. ##### BitcoinTalk #### Re: Version 0.3.8.1 update for Linux 64-bit ##### _2010-08-10 23:46:00 UTC_ - [-](https://bitcointalk.org/index.php?topic=765.msg8628#msg8628) SVN rev 128: disable SSE2 on 32-bit. This may only disable it for MSVC and GCC. Other compilers might have different 64-bit defines. ##### BitcoinTalk #### Re: Not a suggestion ##### _2010-08-11 00:14:22 UTC_ - [-](https://bitcointalk.org/index.php?topic=770.msg8637#msg8637) This is a very interesting topic. If a solution was found, a much better, easier, more convenient implementation of Bitcoin would be possible. Originally, a coin can be just a chain of signatures. With a timestamp service, the old ones could be dropped eventually before there's too much backtrace fan-out, or coins could be kept individually or in denominations. It's the need to check for the absence of double-spends that requires global knowledge of all transactions. The challenge is, how do you prove that no other spends exist? It seems a node must know about all transactions to be able to verify that. If it only knows the hash of the in/outpoints, it can't check the signatures to see if an outpoint has been spent before. Do you have any ideas on this? It's hard to think of how to apply zero-knowledge-proofs in this case. We're trying to prove the absence of something, which seems to require knowing about all and checking that the something isn't included. ##### BitcoinTalk #### Re: Escrow ##### _2010-08-11 01:30:02 UTC_ - [-](https://bitcointalk.org/index.php?topic=750.msg8649#msg8649) [_**Quote from: jgarzik on August 10, 2010, 06:53:57 PM**_](https://bitcointalk.org/index.php?topic=750.msg8566#msg8566) _Ask some real-world business owners if they want to tell their customers about the chance of the money being lost forever, unrecoverable by either party._ That makes it sound like it might somehow get lost and the parties can't get it even if they want to cooperate. When you pay for something up front, you can't get it back either. Consumers seem comfortable with that. It's no worse than that. Either party always has the option to release it to the other. [_**Quote from: nelisky on August 10, 2010, 08:20:36 PM**_](https://bitcointalk.org/index.php?topic=750.msg8585#msg8585) _But the money burning solution, while great at preventing economically viable fraud, does nothing to prevent revenge and actually makes everyone loose if one side is dishonest. I would certainly not endorse that._ Then you must also be against the common system of payment up front, where the customer loses. Payment up front: customer loses, and the thief gets the money. Simple escrow: customer loses, but the thief doesn't get the money either. Are you guys saying payment up front is better, because at least the thief gets the money, so at least someone gets it? Imagine someone stole something from you. You can't get it back, but if you could, if it had a kill switch that could be remote triggered, would you do it? Would it be a good thing for thieves to know that everything you own has a kill switch and if they steal it, it'll be useless to them, although you still lose it too? If they give it back, you can re-activate it. Imagine if gold turned to lead when stolen. If the thief gives it back, it turns to gold again. It still seems to me the problem may be one of presenting it the right way. For one thing, not being so blunt about "money burning" for the purposes of game theory discussion. The money is never truly burned. You have the option to release it at any time forever. ##### BitcoinTalk #### Re: Compile error in SVN r127 ##### _2010-08-11 01:42:30 UTC_ - [-](https://bitcointalk.org/index.php?topic=784.msg8651#msg8651) Updated SVN. Thanks. There's little hope of not repeatedly stumbling over that in the future. It doesn't break the compile for me. **Martii Malmi (AKA Sirius) “COPA trial” email #228** **Date: Wed, 11 Aug 2010 02:54:27 +0100** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: Re: [Fwd: Forum e-mail notifications and PBL blacklist and wiki registration]** **To: mmalmi@cc.hut.fi** Are PM notifications still disabled? (All we really need is disable the forum's access to the mail server) _> Does it work correctly now? I had made some forum code changes to_ _> disable PM email notification, but just reverted most of them as_ _> unnecessary._ ##### BitcoinTalk #### Re: Not a suggestion ##### _2010-08-11 21:07:59 UTC_ - [-](https://bitcointalk.org/index.php?topic=770.msg8798#msg8798) Still thinking this idea through... The only job the network needs to do is to tell whether a spend of an outpoint is the first or not. If we're willing to have clients keep the history for their own money, then some of the information may not need to be stored by the network, such as: - the value - the association of inpoints and outpoints in one transaction The network would track a bunch of independent outpoints. It doesn't know what transactions or amounts they belong to. A client can find out if an outpoint has been spent, and it can submit a satisfying inpoint to mark it spent. The network keeps the outpoint and the first valid inpoint that proves it spent. The inpoint signs a hash of its associated next outpoint and a salt, so it can privately be shown that the signature signs a particular next outpoint if you know the salt, but publicly the network doesn't know what the next outpoint is. I believe the clients would have to keep the entire history back to the original generated coins. Someone sending a payment would have to send data to the recipient, as well as still communicating with the network to mark outpoints spent and check that the spend is the first spend. Maybe the data transfer could be done as an e-mail attachment. The fact that clients have to keep the entire history reduces the privacy benefit. Someone handling a lot of money still gets to see a lot of transaction history. The way it retrospectively fans out, they might end up seeing a majority of the history. Denominations could be made granular to limit fan-out, but a business handling a lot of money might still end up seeing a lot of the history. **Martii Malmi (AKA Sirius) “COPA trial” email #230** **Date: Wed, 11 Aug 2010 21:00:13 +0100** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: Re: [Fwd: Forum e-mail notifications and PBL blacklist and wiki registration]** **To: mmalmi@cc.hut.fi** Right, forgot about that. Hopefully theymos was right that the PBL is the source of the problem. mmalmi@cc.hut.fi wrote: > Yes, they're still disabled. Disabling the access to the mail server > would be easy, but we probably want to keep the password recovery by email. > ##### BitcoinTalk #### Re: Lost large number of bitcoins ##### _2010-08-11 21:46:51 UTC_ - [-](https://bitcointalk.org/index.php?topic=782.msg8803#msg8803) [_**Quote from: sirius-m on August 11, 2010, 02:01:53 AM**_](https://bitcointalk.org/index.php?topic=782.msg8657#msg8657) _I added to the FAQ the warning to back up after each transaction. Is it necessary btw to stop the client before making a backup? That's a bit inconvenient. Automatic backups would be useful indeed._ You can get away with backing up without stopping the client if you don't do anything or receive a payment within a few seconds before the backup. (like 5 seconds) [_**Quote from: gridecon on August 11, 2010, 08:46:08 PM**_](https://bitcointalk.org/index.php?topic=782.msg8795#msg8795) _Wait, I'm confused again. I thought the essence of the surprise was that Bitcoin is programmed to "empty your wallet" for EACH transaction._ No, it doesn't usually empty your wallet with each transaction. It uses the smallest set of coins it can find to add up to near the amount. In this case, unfortunately, his wallet had a single 9000 BTC bill in it, and it had to break it to get 1 BTC and 8999 BTC change. ##### BitcoinTalk #### Re: Where is the separate discussion devoted to possible Bitcoin weaknesses. ##### _2010-08-11 22:40:25 UTC_ - [-](https://bitcointalk.org/index.php?topic=788.msg8804#msg8804) It doesn't have to be such a breaking change. New nodes could accept old transactions for a long time until most nodes have already upgraded before starting to refuse transactions without PoW. Or, they could always accept old transactions, but only a limited number per time period. I've thought about PoW on transactions many times, but usually I end up thinking a 0.01 transaction fee is essentially similar and better. 0.01 is basically a proof of work, but not wasted. But if the problem is validating loads of transactions, then PoW could be checked faster. A more general umbrella partial solution would be to implement the idea where an unlikely dropoff in blocks received is detected. Then an attacker would still need a substantial portion of the network's power to benefit from a DoS attack. [_**Quote from: gavinandresen on August 11, 2010, 04:10:56 PM**_](https://bitcointalk.org/index.php?topic=788.msg8761#msg8761) _Bitcoin's p2p network is subject to various kinds of denial of service attacks. There, I said it._ +1 Any demonstration tests at this point would only show what we already know, and divert dev time from strengthening the system to operational fire fighting. ##### BitcoinTalk #### Re: Flood attack 0.00000001 BC ##### _2010-08-11 23:28:50 UTC_ - [-](https://bitcointalk.org/index.php?topic=287.msg8810#msg8810) It would be nice to keep the blk*.dat files small as long as we can. The eventual solution will be to not care how big it gets. But for now, while it's still small, it's nice to keep it small so new users can get going faster. When I eventually implement client-only mode, that won't matter much anymore. There's more work to do on transaction fees. In the event of a flood, you would still be able to jump the queue and get your transactions into the next block by paying a 0.01 transaction fee. However, I haven't had time yet to add that option to the UI. Scale or not, the test network will react in the same ways, but with much less wasted bandwidth and annoyance. ##### BitcoinTalk #### Re: BSD detection ##### _2010-08-12 00:02:06 UTC_ - [-](https://bitcointalk.org/index.php?topic=790.msg8814#msg8814) [_**Quote from: dkaparis on August 11, 2010, 11:00:16 PM**_](https://bitcointalk.org/index.php?topic=790.msg8807#msg8807) _There is this piece of code in headers.h: __#ifdef __WXMAC_OSX____#define __WXMAC__ 1__#define __WXOSX__ 1__#define __BSD__ 1__#endif__#endif_ That code was a bad idea anyway, I'm deleting it. Any Mac code should only use __WXMAC_OSX__, not __WXMAC__ or __WXOSX__, and we should stop using __BSD__. _**Quote**_ _#if (defined(__unix__) || defined(unix)) && !defined(USG)__#include <sys/param.h>__#endif_ Will that definitely cause BSD to be defined on Mac? ##### BitcoinTalk #### Re: Not a suggestion ##### _2010-08-12 02:46:56 UTC_ - [-](https://bitcointalk.org/index.php?topic=770.msg8836#msg8836) [_**Quote from: Red on August 12, 2010, 01:10:19 AM**_](https://bitcointalk.org/index.php?topic=770.msg8824#msg8824) [**Quote from: satoshi on August 11, 2010, 09:07:59 PM**](https://bitcointalk.org/index.php?topic=770.msg8798#msg8798) I believe the clients would have to keep the entire history back to the original generated coins. The fact that clients have to keep the entire history reduces the privacy benefit. _ I thought this too at first. But then I convinced myself otherwise._ Are you back to talking about the existing Bitcoin system here? I was talking about in the hypothetical system I was describing, if the network doesn't know the values and lineage of the transactions, then it can't verify them and vouch for them, so the clients would have to keep the history all the way back. If a client wasn't present until recently, the two ways to convince it that a transaction has a valid past is: 1) Show it the entire history back to the original generated coin. 2) Show it a history back to a thoroughly deep block, then trust that if so many nodes all said the history up to then was correct then it must be true. But if the network didn't know all the values and lineage of the transactions, it couldn't do 2), I don't think. ##### BitcoinTalk #### Re: BSD detection ##### _2010-08-12 21:14:20 UTC_ - [-](https://bitcointalk.org/index.php?topic=790.msg8919#msg8919) This is in SVN rev 130. Check that it compiles right. **Code:** #if (defined(__unix__) || defined(unix)) && !defined(USG) #include <sys/param.h> // to get BSD define #endif #ifdef __WXMAC_OSX__ #ifndef BSD #define BSD 1 #endif #endif ##### BitcoinTalk #### Bugfixes in SVN rev 130 ##### _2010-08-12 21:20:31 UTC_ - [-](https://bitcointalk.org/index.php?topic=795.msg8920#msg8920) Misc bugfixes in rev 130: fix -datadir with relative path autostart is now off by default except on windows fix occasional "vector iterator not dereferencable" assertion when compiled with msvc fix readlink compile warning on linux build use sys/param.h and BSD define instead of __BSD__ -paytxfee switch, e.g. -paytxfee=0.01 ##### BitcoinTalk #### Re: Bitcoin Watchdog Service ##### _2010-08-12 21:34:44 UTC_ - [-](https://bitcointalk.org/index.php?topic=691.msg8922#msg8922) True, there would probably be someone with a dial-up modem or satellite dish internet. Rarer would be someone who has both that and the wired internet that has the outage, but if it's a big enough segment to matter, out of a million people there's bound to be a multi-home geek. ISP network cuts are just your local area. If you still have communication with the rest of your area, it would probably be something like 1/1000 of the world or less. Block generation in the segment would take several hours per block. I favour the plan to monitor if the frequency of blocks received drops too slow. That covers a large range of possibilities. ##### BitcoinTalk #### Re: Having problems specifing -datadir ##### _2010-08-12 21:43:29 UTC_ - [-](https://bitcointalk.org/index.php?topic=601.msg8924#msg8924) Fixed in SVN rev 130. ##### BitcoinTalk #### Re: 4 hashes parallel on SSE2 CPUs for 0.3.6 ##### _2010-08-12 22:07:23 UTC_ - [-](https://bitcointalk.org/index.php?topic=648.msg8929#msg8929) That big of a difference in speed, by a factor of 4 or 6, feels like it's likely to be some quirky weak spot or instruction that the old chip is slow with. Unless it's a touted feature of the i5 that they made SSE2 six times faster. A quick summary: Xeon Quad 41% slower Core 2 Duo 55% slower Core 2 Duo same (vess) Core 2 Quad 50% slower Core i5 200% faster (nelisky) Core i5 100% faster (vess) AMD Opteron 105% faster aceat64: My system went from ~7100 to ~4200. This particular system has dual Intel Xeon Quad-Core CPUs (E5335) @ 2.00GHz. impossible7: on an Intel Core 2 Duo T7300 running x86_64 linux it was 55% slower compared to the stock version (r121) nelisky: My Core2Quad (Q6600) slowed down 50%, my i5 improved ~200%, impossible7: on an AMD Opteron 2374 HE running x86_64 linux I got a 105% improvement (!) ##### BitcoinTalk #### Re: Bugfixes in SVN rev 130 ##### _2010-08-13 03:15:23 UTC_ - [-](https://bitcointalk.org/index.php?topic=795.msg8960#msg8960) No, that's not what it is. -paytxfee allows you to include a transaction fee with your transactions. If transaction confirmations become slow, you can get priority by using "-paytxfee=0.01". Any transactions you send would cost an extra 0.01. There's no reason to use more than 0.01. It's just there in case we need it. It probably won't be needed, and it can be explained more if we do. ##### BitcoinTalk #### Re: Bitcoin Watchdog Service ##### _2010-08-13 17:09:27 UTC_ - [-](https://bitcointalk.org/index.php?topic=691.msg9041#msg9041) _**Quote**_ _But there will be no irc server to bootstrap from._ Which doesn't matter because you can't access sourceforge to download the software either. If you've ever been connected before, you don't need IRC to bootstrap anymore. Even if you haven't, you can bootstrap from seed nodes. IRC is completely redundant since 0.3.0. ##### BitcoinTalk #### Version 0.3.9 rc1, please test ##### _2010-08-13 17:40:00 UTC_ - [-](https://bitcointalk.org/index.php?topic=806.msg9046#msg9046) Here's a test build if you'd like to help test before 0.3.9 is released. (or if you'd rather get upgrading out of the way now instead of waiting) Downloads: (binaries only) [http://www.bitcoin.org/download/bitcoin-0.3.9.rc1-win32.zip](http://www.bitcoin.org/download/bitcoin-0.3.9.rc1-win32.zip) ([http://www.bitcoin.org/download/bitcoin-0.3.9.rc1-linux.tar.gz](http://www.bitcoin.org/download/bitcoin-0.3.9.rc1-linux.tar.gz)) SHA1 a36ea00cce27b4b083755df73a3d1e5e5729884e bitcoin-0.3.9.rc1-win32.zip SHA1 bbb333b0ea57302740ad1bb9948520d00f884f9d bitcoin-0.3.9.rc1-linux.tar.gz Edit: Linux please test rc2 instead. This adds a -4way switch for tcatm's 4-way SSE2. This will only be for Linux: [http://www.bitcoin.org/download/bitcoin-0.3.9.rc2-linux.tar.gz](http://www.bitcoin.org/download/bitcoin-0.3.9.rc2-linux.tar.gz) SHA1 47d9998f7d15fe81234a5c89a542da9d0664df40 bitcoin-0.3.9.rc2-linux.tar.gz Please report back your results [http://BitcoinTalk.org/index.php?topic=820](http://bitcointalk.org/index.php?topic=820) ##### BitcoinTalk #### Re: Not a suggestion ##### _2010-08-13 19:28:47 UTC_ - [-](https://bitcointalk.org/index.php?topic=770.msg9074#msg9074) I'm not grasping your idea yet. Does it hide any information from the public network? What is the advantage? If at least 50% of nodes validated transactions enough that old transactions can be discarded, then everyone saw everything and could keep a record of it. Can public nodes see the values of transactions? Can they see which previous transaction the value came from? If they can, then they know everything. If they can't, then they couldn't verify that the value came from a valid source, so you couldn't take their generated chain as verification of it. Does it hide the bitcoin addresses? Is that it? OK, maybe now I see, if that's it. Crypto may offer a way to do "key blinding". I did some research and it was obscure, but there may be something there. "group signatures" may be related. There's something here in the general area: [http://www.users.zetnet.co.uk/hopwood/crypto/rh/](http://www.users.zetnet.co.uk/hopwood/crypto/rh/) What we need is a way to generate additional blinded variations of a public key. The blinded variations would have the same properties as the root public key, such that the private key could generate a signature for any one of them. Others could not tell if a blinded key is related to the root key, or other blinded keys from the same root key. These are the properties of blinding. Blinding, in a nutshell, is x = (x * large_random_int) mod m. When paying to a bitcoin address, you would generate a new blinded key for each use. Then you need to be able to sign a signature such that you can't tell that two signatures came from the same private key. I'm not sure if always signing a different blinded public key would already give you this property. If not, I think that's where group signatures comes in. With group signatures, it is possible for something to be signed but not know who signed it. As an example, say some unpopular military attack has to be ordered, but nobody wants to go down in history as the one who ordered it. If 10 leaders have private keys, one of them could sign the order and you wouldn't know who did it. ##### BitcoinTalk #### Re: Proposed change to sendtoaddress API call ##### _2010-08-13 23:39:14 UTC_ - [-](https://bitcointalk.org/index.php?topic=807.msg9134#msg9134) It's too soon to start junking up the API for backward compatibility at all costs. Just return "<txid>". ##### BitcoinTalk #### Re: 4 hashes parallel on SSE2 CPUs for 0.3.6 ##### _2010-08-14 00:49:18 UTC_ - [-](https://bitcointalk.org/index.php?topic=648.msg9145#msg9145) MinGW on Windows has trouble compiling it: g++ -c -mthreads -O2 -w -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH -I"/boost" -I"/db/build_unix" -I"/openssl/include" -I"/wxwidgets/lib/gcc_lib/mswud" -I"/wxwidgets/include" -msse2 -O3 -o obj/sha256.o sha256.cpp sha256.cpp: In function `long long int __vector__ Ch(long long int __vector__, long long int __vector__, long long int __vector__)': sha256.cpp:31: internal compiler error: in perform_integral_promotions, at cp/typeck.c:1454 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.mingw.org/bugs.shtml> for instructions. make: *** [obj/sha256.o] Error 1 ##### BitcoinTalk #### Re: 4 hashes parallel on SSE2 CPUs for 0.3.6 ##### _2010-08-14 04:22:29 UTC_ - [-](https://bitcointalk.org/index.php?topic=648.msg9159#msg9159) If you haven't already, try aligning thash. It might matter. Couldn't hurt. [_**Quote from: tcatm on August 14, 2010, 12:53:07 AM**_](https://bitcointalk.org/index.php?topic=648.msg9147#msg9147) _Looks like we're triggering a compiler bug in the tree optimizer. Can you try to compile it -O0?_ No help from -O0, same error. MinGW is GCC 3.4.5. Probably the problem. I'll see if I can get a newer version of MinGW. ##### BitcoinTalk #### Re: 4 hashes parallel on SSE2 CPUs for 0.3.6 ##### _2010-08-14 17:55:37 UTC_ - [-](https://bitcointalk.org/index.php?topic=648.msg9228#msg9228) Got the test working on 32-bit with MinGW GCC 4.5. Exactly 50% slower than stock with Core 2. ##### BitcoinTalk #### Re: 4 hashes parallel on SSE2 CPUs for 0.3.6 ##### _2010-08-14 22:06:13 UTC_ - [-](https://bitcointalk.org/index.php?topic=648.msg9278#msg9278) MinGW GCC 4.5.0: Crypto++ doesn't work, X86_SHA256_HashBlocks() never returns I only got 4-way working with test.cpp but not when called by BitcoinMiner MinGW GCC 4.4.1: Crypto++ works 4-way SIGSEGV GCC is definitely not aligning __m128i. Even if we align our own __m128i variables, the compiler may decide to use a __m128i behind the scenes as a temporary variable. By making our __m128i variables aligned and changing these inlines to defines, I was able to get it to work on 4.4.1 with -O0 only: #define Ch(b, c, d) ((b & c) ^ (~b & d)) #define Maj(b, c, d) ((b & c) ^ (b & d) ^ (c & d)) #define ROTR(x, n) (_mm_srli_epi32(x, n) | _mm_slli_epi32(x, 32 - n)) #define SHR(x, n) _mm_srli_epi32(x, n) But that's with -O0. ##### BitcoinTalk #### Re: 4 hashes parallel on SSE2 CPUs for 0.3.6 ##### _2010-08-15 03:40:29 UTC_ - [-](https://bitcointalk.org/index.php?topic=648.msg9359#msg9359) On both MinGW GCC 4.4.1 and 4.5.0 I have it working with test.cpp but SIGSEGV when called by BitcoinMiner. So now it doesn't look like it's the version of GCC, it's something else, maybe just the luck of how the stack is aligned. I have it working fine on GCC 4.3.3 on Ubuntu 32-bit. I found the problem with Crypto++ on MinGW 4.5.0. Here's the patch for that: **Code:** --- \old\sha.cpp Mon Jul 26 13:31:11 2010 +++ ew\sha.cpp Sat Aug 14 20:21:08 2010 @@ -336,7 +336,7 @@ ROUND(14, 0, eax, ecx, edi, edx) ROUND(15, 0, ecx, eax, edx, edi) - ASL(1) + ASL(label1) // Bitcoin: fix for MinGW GCC 4.5 AS2(add WORD_REG(si), 4*16) ROUND(0, 1, eax, ecx, edi, edx) ROUND(1, 1, ecx, eax, edx, edi) @@ -355,7 +355,7 @@ ROUND(14, 1, eax, ecx, edi, edx) ROUND(15, 1, ecx, eax, edx, edi) AS2( cmp WORD_REG(si), K_END) - ASJ( jne, 1, b) + ASJ( jne, label1, ) // Bitcoin: fix for MinGW GCC 4.5 AS2( mov WORD_REG(dx), DATA_SAVE) AS2( add WORD_REG(dx), 64) ##### BitcoinTalk #### tcatm's 4-way SSE2 for Linux 32/64-bit is in 0.3.10 ##### _2010-08-15 15:52:09 UTC_ - [-](https://bitcointalk.org/index.php?topic=820.msg9452#msg9452) 0.3.10 has tcatm's 4-way SSE2 as an option switch. Use the switch "-4way" to turn it on. Without the switch you get Crypto++ ASM SHA-256. I could only get this working with Linux. Download: Get 0.3.10 from [http://BitcoinTalk.org/index.php?topic=827.0](http://bitcointalk.org/index.php?topic=827.0) Please report back your CPU and results! I think it's pretty clear that Core 2 and lower are slower, i5 faster. I don't think we've heard any i7 results yet. We need to know about the different models of AMD or other less common CPUs. ##### BitcoinTalk #### Re: Potential disaster scenario ##### _2010-08-15 16:37:16 UTC_ - [-](https://bitcointalk.org/index.php?topic=813.msg9454#msg9454) Some places where generation will gravitate to: 1) places where it's cheapest or free 2) people who want to help for idealogical reasons 3) people who want to get some coins without the inconvenience of doing a transaction to buy them There are legitimate places where it's free. Generation is basically free anywhere that has electric heat, since your computer's heat is offsetting your baseboard electric heating. Many small flats have electric heat out of convenience. How expensive is heating oil? With the price of oil so high, if it's actually more expensive than electric, then generating would have negative cost. There's also kids putting it on their parent's power bill, employees their employer, botnets, etc. Case 3 comes into play for small amounts. The overhead of doing an exchange doesn't make sense if you just need a small bit of pocket change for incidental micropayments. I think this is a nice advantage vs fiat currency, instead of all the seigniorage going to one big entity, let it go in convenience amounts to people who need to scrape up a small amount of change. ##### BitcoinTalk #### Re: Version 0.3.9 rc1, please test ##### _2010-08-15 18:11:41 UTC_ - [-](https://bitcointalk.org/index.php?topic=806.msg9475#msg9475) [_**Quote from: jgarzik on August 15, 2010, 05:46:27 PM**_](https://bitcointalk.org/index.php?topic=806.msg9467#msg9467) _the extended-help might have been based on my idea, but the code was somewhat different._ The idea was the main part. When you posted your patch, I realized it should have been done that way instead of "-?". I always had reservations about "-?" because it intrudes on the possible parameter values, and the help response is based on the version of the caller instead of the server. ##### BitcoinTalk #### Re: tcatm's 4-way SSE2 for Linux 32/64-bit 0.3.9 rc2 ##### _2010-08-15 18:23:26 UTC_ - [-](https://bitcointalk.org/index.php?topic=820.msg9478#msg9478) I hope someone can test an i5 or AMD to check that I built it right. I don't have either to test with. I'm also curious if it performs much worse on 32-bit linux vs 64-bit. ##### BitcoinTalk #### Re: tcatm's 4-way SSE2 for Linux 32/64-bit 0.3.9 rc2 ##### _2010-08-15 18:43:27 UTC_ - [-](https://bitcointalk.org/index.php?topic=820.msg9483#msg9483) I just uploaded a quick build so testers can check if I built it right. (I don't have an i5 or AMD) If it checks out, I'll put together the full package and do all the release stuff. **bitcoin-list** [**bitcoin-list**] ALERT - we are investigating a problem _2010-08-15 20:38:33 UTC_ - [-](https://sourceforge.net/p/bitcoin/mailman/message/25954806/) *** WARNING *** We are investigating a problem. DO NOT TRUST ANY TRANSACTIONS THAT HAPPENED AFTER 15.08.2010 17:05 UTC (block 74638) until the issue is resolved. ##### BitcoinTalk #### Re: overflow bug SERIOUS ##### _2010-08-15 20:59:09 UTC_ - [-](https://bitcointalk.org/index.php?topic=823.msg9530#msg9530) Here's the preliminary change. Look right? I have more changes to make, this isn't all of it. Will SVN shortly. **Code:** bool CheckTransaction() const { // Basic checks that don't depend on any context if (vin.empty() || vout.empty()) return error("CTransaction::CheckTransaction() : vin or vout empty"); // Check for negative and overflow values int64 nTotal = 0; foreach(const CTxOut& txout, vout) { if (txout.nValue < 0) return error("CTransaction::CheckTransaction() : txout.nValue negative"); if (txout.nValue > 21000000 * COIN) return error("CTransaction::CheckTransaction() : txout.nValue too high"); nTotal += txout.nValue; if (nTotal > 21000000 * COIN) return error("CTransaction::CheckTransaction() : txout total too high"); } if (IsCoinBase()) { if (vin[0].scriptSig.size() < 2 || vin[0].scriptSig.size() > 100) return error("CTransaction::CheckTransaction() : coinbase script size"); } else { foreach(const CTxIn& txin, vin) if (txin.prevout.IsNull()) return error("CTransaction::CheckTransaction() : prevout is null"); } return true; } Don't sticky the topic, nobody looks up there. There'll be enough posts to bump. ##### BitcoinTalk #### Re: overflow bug SERIOUS ##### _2010-08-15 21:06:45 UTC_ - [-](https://bitcointalk.org/index.php?topic=823.msg9531#msg9531) It would help if people stop generating. We will probably need to re-do a branch around the current one, and the less you generate the faster that will be. A first patch will be in SVN rev 132. It's not uploaded yet. I'm pushing some other misc changes out of the way first, then I'll upload the patch for this. ##### BitcoinTalk #### Re: overflow bug SERIOUS ##### _2010-08-15 21:23:55 UTC_ - [-](https://bitcointalk.org/index.php?topic=823.msg9539#msg9539) Once you have an update, you could download knightmb's block chain. You'll want one that's old enough that it ends _before_ block 74000 so the most recent security lockin will check it. Can someone find the link for that? **Martii Malmi (AKA Sirius) “COPA trial” email #231** **Date: Sun, 15 Aug 2010 21:37:28 +0100** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: [bitcoin-list] ALERT - we are investigating a problem** **To: bitcoin-list@lists.sourceforge.net** *** WARNING *** We are investigating a problem. DO NOT TRUST ANY TRANSACTIONS THAT HAPPENED AFTER 15.08.2010 17:05 UTC (block 74638) until the issue is resolved. ##### BitcoinTalk #### Re: overflow bug SERIOUS ##### _2010-08-15 21:40:19 UTC_ - [-](https://bitcointalk.org/index.php?topic=823.msg9548#msg9548) Patch is uploaded to SVN rev 132! For now, recommended steps: 1) Shut down. 2) Download knightmb's blk files. (replace your blk0001.dat and blkindex.dat files) 3) Upgrade. 4) It should start out with less than 74000 blocks. Let it redownload the rest. If you don't want to use knightmb's files, you could just delete your blk*.dat files, but it's going to be a lot of load on the network if everyone is downloading the whole block index at once. I'll build releases shortly. ----

Kicking the Hornet's Nest - part 12

# Kicking the Hornet's Nest - third edition - part 12 All links, digital (pdf, txt, docx, md) and book in print, can be found at https://hive.blog/@crrdlx/satoshi Edited by [crrdlx](nostr:nprofile1qyv8wumn8ghj7mn0wdj8y6tkv5hxzurs9aex2mrp0yq3wamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet59uqzqqzmcn0yrn7ttq8hrjkk46ysn2tk26rr8f8k4y7xkl74hlh3rcdzm9d3t8), npub: ``` npub1qpdufhjpel94srm3ett2azgf49m9dp3n5nm2j0rt0l2mlmc3ux3qza082j ``` ---- ### Kicking the Hornet's Nest pages 250 - 275 ---- **Martii Malmi (AKA Sirius) “COPA trial” email #180** **Date: Wed, 03 Mar 2010 03:54:52 +0000** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: Re: Bitcoind** **To: mmalmi@cc.hut.fi** That narrows it down a lot. It didn't print any IRC activity in debug.log, so I guess it couldn't have gotten past the RecvUntil. Eyeballing it I don't see anything obvious. I guess it would have to be either in ConnectSocket or RecvUntil. Try it with the attached irc.cpp and net.cpp and send me the debug.log. Or you could run it in gdb and step through ThreadIRCSeed gdb --args bitcoin [switches] b ThreadIRCSeed run step or u to step over and up out of routines. _mmalmi@cc.hut.fi wrote:_ _> I get the error regardless of the getinfo. Commenting out ThreadIRCSeed_ _> fixed the problem._ _>_ **BitcoinTalk** Re: Money Transfer Regulations _2010-03-03 04:28:56 UTC_ - [-](https://bitcointalk.org/index.php?topic=69.msg614#msg614) When there's enough scale, maybe there can be an exchange site that doesn't do transfers, just matches up buyers and sellers to exchange with each other directly, similar to how e-bay works. To make it safer, the exchange site could act as an escrow for the bitcoin side of the payment. The seller puts the bitcoin payment in escrow, and the buyer sends the conventional payment directly to the seller. The exchange service doesn't handle any real world money. This would be a step better than e-bay. E-bay manages to work fine even though shipped goods can't be recovered if payment falls through. **Martii Malmi (AKA Sirius) “COPA trial” email #182** **Date: Wed, 03 Mar 2010 17:15:28 +0000** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: Re: Bitcoind** **To: mmalmi@cc.hut.fi** It's in RecvUntil, but I still can't see anything wrong with it. The only thing I can think of is if the socket is receiving a spew of characters. Try this irc.cpp. debug.log may grow rapidly so be ready to kill it. _mmalmi@cc.hut.fi wrote:_ _> debug.log attached_ _>_ **Martii Malmi (AKA Sirius) “COPA trial” email #185** **Date: Fri, 05 Mar 2010 00:42:16 +0000** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: Re: Bitcoind** **To: mmalmi@cc.hut.fi** It's in util.c ParseString. I'm guessing the problem is incompatibility between the type "unsigned int" and the type of str.npos, which is size_type. Try changing the two "unsigned int"s to "size_type". old: void ParseString(const string& str, char c, vector<string>& v) { unsigned int i1 = 0; unsigned int i2; do { i2 = str.find(c, i1); v.push_back(str.substr(i1, i2-i1)); i1 = i2+1; } while (i2 != str.npos); } new: void ParseString(const string& str, char c, vector<string>& v) { size_type i1 = 0; size_type i2; do { i2 = str.find(c, i1); v.push_back(str.substr(i1, i2-i1)); i1 = i2+1; } while (i2 != str.npos); } _mmalmi@cc.hut.fi wrote:_ _> Here's another test run debug.log I got when debugging with gdb. The_ _> program started eating memory after the debug line "irc 8" and within a_ _> few seconds crashed with "terminate called after throwing an instance of_ _> 'std::bad_alloc'"._ _>_ **Martii Malmi (AKA Sirius) “COPA trial” email #186** **Date: Fri, 05 Mar 2010 00:54:40 +0000** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: Re: Bitcoind** **To: mmalmi@cc.hut.fi** Actually, please try this instead, this is more correct: void ParseString(const string& str, char c, vector<string>& v) { string::size_type i1 = 0; string::size_type i2; loop { i2 = str.find(c, i1); if (i2 == str.npos) { v.push_back(str.substr(i1)); return; } v.push_back(str.substr(i1, i2-i1)); i1 = i2+1; } } **Martii Malmi (AKA Sirius) “COPA trial” email #188** **Date: Fri, 05 Mar 2010 01:42:00 +0000** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: Re: Bitcoind** **To: mmalmi@cc.hut.fi** I confirmed that ParseString has this problem, and uploaded the fixed util.cpp to SVN. string::npos == -1 Comparing unsigned int -1 (0xffffffff) with long unsigned int -1 (0xffffffffffffffff) results in the unsigned int being promoted to 64-bit, which is 0x00000000ffffffff != 0xffffffffffffffff. _mmalmi@cc.hut.fi wrote:_ _> Here's another test run debug.log I got when debugging with gdb. The_ _> program started eating memory after the debug line "irc 8" and within a_ _> few seconds crashed with "terminate called after throwing an instance of_ _> 'std::bad_alloc'"._ _>_ **BitcoinTalk** Re: Command Line and JSON-RPC _2010-03-05 01:46:25 UTC_ - [-](https://bitcointalk.org/index.php?topic=63.msg633#msg633) [_**Quote from: sirius-m on February 24, 2010, 06:17:35 PM**_](https://bitcointalk.org/index.php?topic=63.msg502#msg502) _This is strange... When I start Bitcoin as a daemon on my 64 bit Linux server, it eats up all the 250MB of remaining RAM, 700MB of swap and eventually crashes. On my 32 bit Ubuntu desktop, it works fine and stays at 15MB of memory usage. The server is running a 64 bit build of Bitcoin. Maybe there's something wrong with the build or something._ sirius-m debugged this, it was 64-bit related. The fix is now available on SVN, file util.cpp. **Martii Malmi (AKA Sirius) “COPA trial” email #189** **Date: Sat, 06 Mar 2010 06:39:53 +0000** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: Blog** **To: Martti Malmi <mmalmi@cc.hut.fi>** There's a blog writer who wants to write a story about Bitcoin, but I don't have time right now to answer his questions. Would you be interested in answering his questions if I refer him to you? We might get a good link out of it. The blog is http://themonetaryfuture.blogspot.com **BitcoinTalk** Re: bitcoin auto-renice-ing _2010-03-15 18:44:12 UTC_ - [-](https://bitcointalk.org/index.php?topic=72.msg717#msg717) It sets different priorities for each thread. The generate threads run at PRIO_MIN. The other threads rarely take any CPU and run at normal. #define THREAD_PRIORITY_LOWEST PRIO_MIN #define THREAD_PRIORITY_BELOW_NORMAL 2 #define THREAD_PRIORITY_NORMAL 0 The priorities converted from Windows priorities were probably from a table like this: "The following table shows the mapping between nice values and Win32 priorities. Refer to the Win32 documentation for SetThreadPriority() for more information on Win32 priority issues. nice value Win32 Priority -20 to -16 THREAD_PRIORITY_HIGHEST -15 to -6 THREAD_PRIORITY_ABOVE_NORMAL -5 to +4 THREAD_PRIORITY_NORMAL +5 to +14 THREAD_PRIORITY_BELOW_NORMAL +15 to +19 THREAD_PRIORITY_LOWEST" If you have better values, suggestions welcome. Also, there was some advice on the web that PRIO_PROCESS is used on Linux because threads are processes. If that's not true, maybe it accounts for unexpectedly setting the priority of the whole app. // threads are processes on linux, so PRIO_PROCESS affects just the one thread setpriority(PRIO_PROCESS, getpid(), nPriority); **BitcoinTalk** Idea for file hosting and proxy services _2010-03-15 19:16:56 UTC_ - [-](https://bitcointalk.org/index.php?topic=83.msg719#msg719) When you want to upload an image to embed in a forum post, there are services like imageshack, but because they're free, they limit the number of views. It's a minuscule amount of bandwidth cost, but they can't just give it away for free, there has to be something in it for them. It would be nice to be able to pay for the bandwidth and avoid the limits, but conventional payments are too inconvenient for such a minor thing. It's worse if you want to upload a file for others to download. There are services like rapidshare, but they require the downloaders to go through extra steps and delays to make them look at advertising or encourage upgrading to a paid subscription, and they limit it to 10 or so downloads. It would be nice if we made some free PHP code for an image and file hosting service that charges Bitcoins. Anyone with some extra bandwidth quota could throw it on their webserver and run it. Users could finally pay the minor fee to cover bandwidth cost and avoid the limits and hassles. Ideally, it should be MIT license or public domain. Services like this would be great for anonymous users, who have trouble paying for things. **BitcoinTalk** Re: On IRC bootstrapping _2010-03-16 19:48:47 UTC_ - [-](https://bitcointalk.org/index.php?topic=84.msg729#msg729) Thanks soultcer for talking with the Freenode staffer. Good to know it's OK at the current size, and now they know who we are. They're supportive of projects like TOR so I hope they would probably be friendly to us. We don't want to overstay our welcome. If we get too big, then by the same token, we're big enough that we don't need IRC anymore and we'll get off. We only needed IRC because nobody had a static IP. In the early days there were some steady supporters, but they all had pool-allocated IPs that change every few days. IRC was only intended as a temporary solution. Bitcoin's built-in addr system is the main solution. Bitcoin can get the list of IPs from any bitcoin node. In that sense, every node serves as a directory server. When there are enough static IP nodes to have a good chance that at least one will still be running by the time the current version goes out of use, we can preprogram a seed list. How do you think we should compile the seed list? Would it be OK to create it from the currently connected IPs that have been static for a while? BTW, if we want to supplement by deploying separate directory server software, may I suggest IRC? IRC is a good directory server (I've heard it has other uses too), and there are mature IRC server implementations available that anyone can run. ![](file:///tmp/lu30467eu8.tmp/lu30468hd4_tmp_b56eb9f04b2623cd.gif) Bitcoin's IRC client implementation is already thoroughly tested. **BitcoinTalk** Re: Idea for file hosting service _2010-03-16 20:17:34 UTC_ - [-](https://bitcointalk.org/index.php?topic=83.msg731#msg731) That's a great idea. There's a thriving business in those services, but I've always thought the standard payment methods are at odds with privacy minded customers. Would you consider making your software freely available so anyone could easily set one up? I know for competitive reasons the inclination is to keep it to yourself, but it could get an order of magnitude more use if anyone could give proxy access to their country just by putting the software on a server. I wonder if there are other kinds of web application servers where we would only have to tack on the payment mechanism to an already existing system? **BitcoinTalk** Re: who is bitcoin.com _2010-03-23 15:22:41 UTC_ - [-](https://bitcointalk.org/index.php?topic=88.msg806#msg806) It's unrelated. There wasn't anything there when I started. The price of .com registrations is lower than it should be, therefore any good name you might think of is always already taken by some domain name speculator. Fortunately, it's standard for open source projects to be .org. **BitcoinTalk** Re: Exchange Methods _2010-03-23 17:35:34 UTC_ - [-](https://bitcointalk.org/index.php?topic=87.msg807#msg807) LR and Pecunix have many established exchanges to paper currencies by various payment methods, and a number of vendors accept them as payment, so an exchange link between Bitcoin and LR/Pecunix would give us 2nd-hop access to all that. The possibility to cash out through them would help support the value of bitcoins. Bitcoin has unique properties that would be complementary. LR/Pecunix are easy to spend anonymously, but hard to buy anonymously and not worth the trouble to buy in small amounts. Bitcoin, on the other hand, is easy to get in small amounts anonymously. It would be convenient to buy LR/Pecunix with bitcoins rather than through conventional payment methods. Most customers who convert to LR to buy something would probably ask the seller first if they accept Bitcoin, encouraging them to start accepting it. **BitcoinTalk** Re: Idea for file hosting and proxy services _2010-03-24 18:01:57 UTC_ - [-](https://bitcointalk.org/index.php?topic=83.msg809#msg809) Title changed. It helps that we have someone with actual experience running a proxy service. Do you think Psiphon is the best one currently? (sometimes the one you run was the best when you started but you found better ones later) **BitcoinTalk** Re: Idea for file hosting and proxy services _2010-03-24 18:02:55 UTC_ - [-](https://bitcointalk.org/index.php?topic=83.msg810#msg810) Mihalism Multi Host is a popular open source PHP file hosting server. It's geared toward image hosting, but I think by increasing the file size limit and liberalising the allowed file extensions, it could just as easily be used for general file upload hosting. They need the limits to keep it reasonable as a free service, but if we bolt on a Bitcoin payment mechanism, the limits could be relaxed. It doesn't have a bunch of client side scripting or anti-embedding junk to rip out. It generates standard links that work normally. There's a turnover churn in these free hosting sites. Small sites can give free image hosting, but once one starts getting popular, it gets too swamped with moochers using them for free bandwidth. Any site that gets well known has to become more aggressively pay-naggy to cover bandwidth costs. It's a perfect example of a service where the needed price point is in the no-man's-land between just a little too expensive to be free, but too cheap for most users to take the trouble of a conventional payment. It's in the gap between 0 and 19.95. The best they can do is try to maybe get 1 out of 1000 users to pay 9.95, but that has 999/1000 users treated like freeloaders. It can't really be advertising supported because the images are embedded in other sites and downloaded without going to the hosting site. An example of a site running the software: [http://www.imagez.ws/](http://www.imagez.ws/) Forum: [http://www.mihalism.net/](http://www.mihalism.net/) Download: [http://code.google.com/p/mihalismmh/](http://code.google.com/p/mihalismmh/) What do you think? If I made a Bitcoin payment integration for this, would anyone be interested in running it? It might be the first fully automated service available to buy with Bitcoins. The advantage it could offer over the free services is general file upload hosting of large files without making downloading users go to the upload site and jump through hoops. It would give a normal link directly to the file. **Martii Malmi (AKA Sirius) “COPA trial” email #192** **Date: Sun, 16 May 2010 20:12:21 +0100** **From: Satoshi Nakamoto <satoshin@gmx.com>** **Subject: Re: Status update** **To: mmalmi@cc.hut.fi** I've also been busy with other things for the last month and a half. I just now downloaded my e-mail since the beginning of April. I mostly have things sorted and should be back to Bitcoin shortly. Glad that you've been handling things in my absence. Congrats on your first transaction! As I recall, the code was nearly ready for a 0.3 release. I think all it needed was a little testing time and to install the new icon xpm. The JSON API functions are complete. I wanted to take another fresh look at them in case I think of any better function names before committing. I ought to write some sample code showing the proper way to use them, particularly with polling for received transactions. When I left off, I was thinking about bolting a payment mechanism onto a free upload server software as an example. It would make sense to actually build one practical application with the API before releasing it. You don't realise the problems with an API until you actually try to use it. _mmalmi@cc.hut.fi wrote:_ _> Hi!_ _>_ _> How are you doing? Haven't seen you around in a while._ _>_ _> I've been at full-time work lately, and will be until the end of June,_ _> so I haven't had that much time to work with Bitcoin or my exchange_ _> service. I have a working beta of my service though, and a few weeks ago_ _> made my first transaction: sold 10,000 btc for 20 euros via EU bank_ _> transfer. Maybe I can make it public soon._ _>_ _> I divided the forum into 6 boards, which are Bitcoin Discussion,_ _> Development & Technical Discussion, Technical support, Economics,_ _> Marketplace and Trading Discussion. Hope this is ok?_ _>_ _> I also added a page "Trade" on the bitcoin.org site, where btc-accepting_ _> services are listed. It's nice to see that there are already useful_ _> services that accept btc._ _>_ _> The community has been growing nicely. We've had around 10-20 people and_ _> active discussion at #bitcoin-dev lately._ _>_ _> It would be nice to get the daemon-able binaries to SF.net. We have some_ _> skilled programmers in the community now, so maybe we can finish the_ _> JSON API functions if you don't have time to._ _>_ _> Best regards._ _>_ **BitcoinTalk** Re: Could the bitcoin network be destroyed by someone generating endless bitcoin add _2010-05-16 21:01:44 UTC_ - [-](https://bitcointalk.org/index.php?topic=130.msg1130#msg1130) When you generate a new bitcoin address, it only takes disk space on your own computer (like 500 bytes). It's like generating a new PGP private key, but less CPU intensive because it's ECC. The address space is effectively unlimited. It doesn't hurt anyone, so generate all you want. **BitcoinTalk** Re: For a website taking payments with bitcoins, better: IP or bitcoin addresses? _2010-05-16 21:37:36 UTC_ - [-](https://bitcointalk.org/index.php?topic=129.msg1131#msg1131) [_**Quote from: Xunie on May 14, 2010, 09:52:53 PM**_](https://bitcointalk.org/index.php?topic=129.msg1124#msg1124) _I suggest we disable IP transactions while the user uses a Proxy! Just to be on the safe side._ That's a good idea. At the very least a warning dialog explaining that it'll connect to the IP and send the information cleartext, giving the chance to cancel. **BitcoinTalk** Re: Exception: 9key_error error _2010-05-16 22:53:59 UTC_ - [-](https://bitcointalk.org/index.php?topic=135.msg1133#msg1133) Does it happen every time you run it, or just happened once at some random time? I've never seen that fail before. It's a call to OpenSSL that I assumed would never fail, but I put an error check there just in case. I can't imagine how it would fail. Out of memory maybe. The code is: key.h: EC_KEY* pkey; pkey = EC_KEY_new_by_curve_name(NID_secp256k1); if (pkey == NULL) throw key_error("CKey::CKey() : EC_KEY_new_by_curve_name failed"); NID_secp256k1 is a constant. **BitcoinTalk** Re: removing bitcoin addresses _2010-05-16 23:34:40 UTC_ - [-](https://bitcointalk.org/index.php?topic=101.msg1134#msg1134) SheriffWoody: Bitcoin addresses you generate are kept forever. A bitcoin address must be kept to show ownership of anything sent to it. If you were able to delete a bitcoin address and someone sent to it, the money would be lost. They're only about 500 bytes. sirius-m: Thousands of own addresses should not be any problem at all. If you've generated 50000 BTC, then you already have 1000 own addresses, one for each 50 generated. Those are hidden, they're not shown in the UI. It would be a good idea to add a little code that keeps giving the same address to the same IP. Here's what I did in C++ to keep giving the same key (aka bitcoin address) until they use it: // Keep giving the same key to the same ip until they use it if (!mapReuseKey.count(pfrom->addr.ip)) mapReuseKey[pfrom->addr.ip] = GenerateNewKey(); ...sends the key mapReuseKey[pfrom->addr.ip] ...later... // Received something with this key mapReuseKey.erase(pfrom->addr.ip); If it's not convenient to know when you've received, just clear the cached keys every 20 minutes. I want to add a parameter to getnewaddress for number of days to expire if nothing is received with the address. **BitcoinTalk** Re: Setting up multiple bitcoin machines behind NAT _2010-05-16 23:56:03 UTC_ - [-](https://bitcointalk.org/index.php?topic=54.msg1135#msg1135) At the moment, it always assumes the incoming port is 8333, so it would tell other bitcoin nodes to connect to router:8333 even if you're redirecting from another port number. I'm not in a big hurry to fix this because I can't think of any benefit to having more than one incoming connection port. If you're providing one incoming port, then you've done your bit to help the network. Having two incoming ports to the same person doesn't help redundancy. If you have many computers, then using the -connect switch on most of them to connect locally makes more sense. **BitcoinTalk** Re: Is there a way to automate bitcoin payments for a website? _2010-05-18 02:58:11 UTC_ - [-](https://bitcointalk.org/index.php?topic=112.msg1143#msg1143) A little late, but in case anyone else has the same issue. The compile dump had 2 warnings (that were 20 lines long) and 2 link errors. The errors were: _**Quote**_ _obj/nogui/init.o(.gnu.linkonce.t._ZNK13wxArrayString4ItemEm+0x13): In function `wxArrayString::Item(unsigned long) const': /usr/local/include/wx-2.9/wx/buffer.h:42: undefined reference to `wxTheAssertHandler' obj/nogui/init.o(.gnu.linkonce.t._ZNK13wxArrayString4ItemEm+0x45): In function `wxArrayString::Item(unsigned long) const': /usr/src/bitcoin/trunk/uint256.h:526: undefined reference to `wxOnAssert(char const*, int, char const*, char const*, wchar_t const*)'_ Those are probably due to switching to the release build of wxWidgets instead of debug. They're moving towards only debug build and ditching the release build, so they probably don't care that their release build is broken by referring to non-existent assert stuff. There's nothing to fear about the debug build. It's fully suitable for releases. bitcoind runs as a daemon and can either be controlled by command line or JSON-RPC. Thanks madhatter and generica for detailing the instructions for building on freebsd. **BitcoinTalk** Re: Ummmm... where did my bitcoins go? _2010-05-18 20:06:46 UTC_ - [-](https://bitcointalk.org/index.php?topic=125.msg1149#msg1149) It's not the download so much as verifying all the signatures in all the blocks as it downloads that takes a long time. How long is the initial block download typically taking? Does it slow down half way through or is about the same speed the whole way? I've thought about ways to do a more cursory check of most of the chain up to the last few thousand blocks. It is possible, but it's a lot of work, and there are a lot of other higher priority things to work on. Simplified Payment Verification is for lightweight client-only users who only do transactions and don't generate and don't participate in the node network. They wouldn't need to download blocks, just the hash chain, which is currently about 2MB and very quick to verify (less than a second to verify the whole chain). If the network becomes very large, like over 100,000 nodes, this is what we'll use to allow common users to do transactions without being full blown nodes. At that stage, most users should start running client-only software and only the specialist server farms keep running full network nodes, kind of like how the usenet network has consolidated. SPV is not implemented yet, and won't be implemented until far in the future, but all the current implementation is designed around supporting it. In the meantime, sites like [vekja.net](http://vekja.net/) and [www.mybitcoin.com](http://www.mybitcoin.com/) have been experimenting with account-based sites. You create an account on a website and hold your bitcoins on account there and transfer in and out. Creating an account on a website is a lot easier than installing and learning to use software, and a more familiar way of doing it for most people. The only disadvantage is that you have to trust the site, but that's fine for pocket change amounts for micropayments and misc expenses. It's an easy way to get started and if you get larger amounts then you can upgrade to the actual bitcoin software. **BitcoinTalk** Re: We accept Bitcoins _2010-05-20 21:43:42 UTC_ - [-](https://bitcointalk.org/index.php?topic=30.msg1169#msg1169) [_**Quote from: DataWraith on May 19, 2010, 07:52:42 PM**_](https://bitcointalk.org/index.php?topic=30.msg1161#msg1161) _Can I just butt in with a question on why that is? To me it seems that if Bitcoin uses public-key cryptography to transfer ownership of the coins, it should be a trivial matter to include a short message that is only readable by the recipient._ Almost but not quite. Bitcoin uses EC-DSA, which can only do digital signing, not encryption. RSA can do both, but I didn't use it because it's an order of magnitude bigger and would have been impractical. ##### BitcoinTalk #### JSON-RPC programming tips using labels ##### _2010-05-26 18:27:25 UTC_ - [-](https://bitcointalk.org/index.php?topic=157.msg1252#msg1252) I added label related functions to help with managing multiple addresses per user. New or renamed functions are: getreceivedbyaddress -- amount received on a single address getreceivedbylabel -- amount received by all addresses with this label listreceivedbyaddress -- list addresses and amounts they've received listreceivedbylabel -- list labels and amounts they've received setlabel -- misc label functions for completeness getlabel getaddressesbylabel For consistency I renamed getamountreceived->getreceivedbyaddress and getallreceived->listreceivedbyaddress. The old names are still there so as not to break existing code, but they're deprecated. The idea is that if you give the username whenever you call getnewaddress, you can get the user's total received across all their addresses using the "bylabel" functions. You can freely change their address without worrying about tracking all their old addresses. A good way to automate changing the user's receiving address: just before displaying their current address, check if it has been used to receive anything, if it has then replace it with a new one: // Get a new address whenever the current one has received anything if (strAddr == "" || getreceivedbyaddress(strAddr) > 0) strAddr = getnewaddress(strUsername); // Label the address with username Display(strAddr); // Display their current receiving address // Get total received by all the user's addresses getreceivedbylabel(strUsername, 0) // unconfirmed getreceivedbylabel(strUsername, 1) // available balance If you're just getting one particular user's balance, such as in response to a page request by that user, use getreceivedbylabel, but if you're scanning over all users, it's better to use listreceivedbylabel to get the complete list and scan against the result. Scanning users with getreceivedbylabel would be n-squared, using listreceivedbylabel is n-log-n (or n linear). You should only really need to scan all users if you're polling in order to spontaneously take action in response to money received, rather than the user going to a webpage, seeing their balance and telling you what to do with it. It's not necessary to poll very frequently. If you require 1 confirmation, that'll take an average of 10 minutes anyway, so there's no point in polling more often than every few minutes. If you're selling digital goods and services, where you don't lose much if someone gets a free access, and it can't be resold for profit, I think you're fine to accept 0 confirmations. It's mostly only if you were selling gold or currency that you'd need multiple confirmations. ##### BitcoinTalk #### Re: Tracing a coin's lineage ##### _2010-05-26 18:51:04 UTC_ - [-](https://bitcointalk.org/index.php?topic=154.msg1254#msg1254) [_**Quote from: Xunie on May 26, 2010, 12:50:04 AM**_](https://bitcointalk.org/index.php?topic=154.msg1242#msg1242) _Can't we force a user to use a new address for receiving payments? Every time a payment is received display another Bitcoin address in the address bar. (only transactions via Bitcoin addresses, NOT IPs of course, since that'd be useless, right?) The actual key would still be kept to ensure that the user would still receive payments of people sending to the same address._ This is on my list. I will soon make the "Your Bitcoin Address:" window automatically change whenever you receive anything to the address displayed. I'm also recommending this approach for the implementation of web apps. I just posted some sample code showing a suggested way of implementing this. Versions on SVN since 0.2.4 already have a "New..." button next to the address bar to encourage changing it manually too. @theymos: If nothing else, we can fall back on that solution in the future. ##### BitcoinTalk #### Re: CLI bitcoin generation ##### _2010-05-26 20:09:34 UTC_ - [-](https://bitcointalk.org/index.php?topic=145.msg1256#msg1256) [_**Quote from: molybdenum on May 22, 2010, 06:44:20 PM**_](https://bitcointalk.org/index.php?topic=145.msg1194#msg1194) _An optional parameter to specify the minimum number of blocks after that transaction (getallreceived 1 for current behavior, or just getallreceived, getallreceived 5 for the paranoid, getallreceived 0 for instant confirms)?_ Yeah, that actually is what it is. getallreceived 0 should do what you want. (now it's renamed to listreceivedbyaddress 0) The default is 1 confirmation, but I think in reality most digital goods and services can be 0 confirmations. Like you say, if you need more than 0 confirmations, you could show two numbers, unconfirmed and available balance, so they immediately see their transaction went through. listreceivedbyaddress [minconf=1] [includeempty=false] [minconf] is the minimum number of confirmations before payments are included. [includeempty] whether to include addresses that haven't received any payments. Returns an array of objects containing: "address" : receiving address "label" : the label of the receiving address "amount" : total amount received by the address "confirmations" : number of confirmations of the most recent transaction included or listreceivedbylabel if you're labelling addresses with their username. So far I've concentrated on functions for web merchants, not so much on stuff for remote management of headless coin generators yet. ##### BitcoinTalk #### Re: Share database blocks ? ##### _2010-05-26 20:34:34 UTC_ - [-](https://bitcointalk.org/index.php?topic=153.msg1258#msg1258) It does in fact download 500 blocks at a time, then the counter counts one at a time as it verifies the blocks. The advantage of letting bitcoin download and verify the blocks is that you do not have to trust the person you're downloading them from. If you downloaded the blk*.dat files from some site, you would have to trust that site, since you would be accepting the data without verifying it yourself. If you're copying blk*.dat from another computer of yours, that should be fine. How long is the initial block download taking for you? ##### BitcoinTalk #### Re: Website translations ##### _2010-05-26 21:16:34 UTC_ - [-](https://bitcointalk.org/index.php?topic=151.msg1259#msg1259) Does anyone want to translate the Bitcoin client itself? It would be great to have at least one other language in the 0.3 release. All you have to do is get poedit and translate the po file I'm attaching to this post. It's less than 750 words. Updated bitcoin.po attachment for 0.3.1 ##### BitcoinTalk #### Re: Odd amount of generated coins ##### _2010-05-26 21:34:32 UTC_ - [-](https://bitcointalk.org/index.php?topic=141.msg1260#msg1260) In the SVN version, if a transaction requires a transaction fee, it says "This transaction is over the size limit. You can still send it for a fee of #, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?" If you don't have enough money with the fee added, it says "Total exceeds your balance when the # transaction fee is included " ##### BitcoinTalk #### Re: Website translations ##### _2010-05-27 14:18:22 UTC_ - [-](https://bitcointalk.org/index.php?topic=151.msg1269#msg1269) Hurray! We have our first language. I uploaded it to SVN to go in with the 0.3 release. **BitcoinTalk** Re: Hostnames instead of IP Addresses _2010-06-02 18:18:15 UTC_ - [-](https://bitcointalk.org/index.php?topic=158.msg1322#msg1322) The current sending by IP is not very useful: it connects to the IP, so you'd like to use TOR for anonymity, but then it can totally be eavesdropped and man-in-the-middled. The future plan for sending to an IP is to make it a bitcoin address plus IP, like: 1auaDZCFYqaGx4FKS5WenNfurk2SkoDu4h<someseparatorcharacter>1.2.3.4 or 1auaDZCFYqaGx4FKS5WenNfurk2SkoDu4h<someseparatorcharacter>domain.com I need suggestions for the separator character. ":" is a candidate, but IPv6 has : in it and that might get confusing. Something that's allowed in url parameters would be nice. I want to use SSL for the connection, using the bitcoin address' public key as the cert. You would be certain you're connected to who you thought, and safely encrypted. The bitcoin address would not be used for the transaction, only for authentication. A new generated bitcoin address would be sent through the SSL connection. Since it's authenticated, it would then be safe to allow the IP address to be a domain name. Some care taken that if a proxy is used, it uses socks4a instead of DNS lookup. ##### BitcoinTalk #### Re: Proof-of-work difficulty increasing ##### _2010-06-02 18:45:38 UTC_ - [-](https://bitcointalk.org/index.php?topic=43.msg1323#msg1323) That's a good idea. I'm not sure where exactly to fit that in, but it could certainly calculate the expected average time between blocks generated, and then people would know what to expect. Every node and each processor has a different public key in its block, so they're guaranteed to be scanning different territory. Whenever the 32-bit nonce starts over at 1, bnExtraNonce gets incremented, which is an arbitrary precision integer. ##### BitcoinTalk #### Re: Website translations ##### _2010-06-02 22:18:09 UTC_ - [-](https://bitcointalk.org/index.php?topic=151.msg1324#msg1324) I uploaded the 93% complete Dutch translation to SVN. Thanks! ##### BitcoinTalk #### Re: On IRC bootstrapping ##### _2010-06-14 18:13:21 UTC_ - [-](https://bitcointalk.org/index.php?topic=84.msg1579#msg1579) Bitcoin has its own distributed address directory using the "addr" message. It's about time we coded in a list of the current long running static nodes to seed from. I can add code so new nodes do not preferentially stay connected to the seed nodes, just connect and get the list, so it won't be a burden on them. What do you think, should I go ahead with adding the seeds? It'll still try IRC first. The IRC has the advantage that it lists nodes that are currently online, since they have to stay connected to stay on the list, but the disadvantage that it's a single point of failure. The "addr" system has no single point of failure, but can only tell you what nodes have recently been seen, so it takes a little longer to get connected since some of the nodes you try have gone offline. The combination of the two gets us the best of both worlds and more total robustness. Is there anyone who wants to volunteer to run an IRC server in case freenode gets tired of us? ##### BitcoinTalk #### Re: Hostnames instead of IP Addresses ##### _2010-06-14 19:53:44 UTC_ - [-](https://bitcointalk.org/index.php?topic=158.msg1582#msg1582) SirArthur has a good point about the normal online merchant case, which is what the send-by-IP option is more suited to. This is the case where the merchant will have a server on a static IP and their own domain name and SSL cert. Instead of connecting by IP, we can connect to a domain name by SSL, using the existing CA infrastructure to authenticate that you're connected to the owner of that domain. The user would send to domain.com (or [www.domain.com](http://www.domain.com/) is ok too). That would be very natural and users could see and verify that what they entered is who they intend to pay. The SSL also makes it safe for TOR users. Problem is, I think merchants would still prefer to use bitcoin addresses to be certain they know what the payment is for. You simply cannot count on users to enter the right thing in the comment fields to identify the transaction. It would only approach practical if we had a mailto style link that prepopulates the comment field with the order number, but then the link could just as well be a bitcoin address. Just having an open bitcoin server at domain.com that users could send unidentified payments to would be too much of a liability. Regular users aren't used to the idea of having to identify the payment. Merchants would get too many blank payments followed by "I paid you, where's my stuff?!" a week later. The payment sequence does have a step where the receiver verifies the order before accepting it. It can reject the payment and return an error message if it doesn't contain a valid order number. That would require a difficult level of integration of custom code with the bitcoin server though. ##### BitcoinTalk #### Re: Dealing with SHA-256 Collisions ##### _2010-06-14 20:39:50 UTC_ - [-](https://bitcointalk.org/index.php?topic=191.msg1585#msg1585) SHA-256 is very strong. It's not like the incremental step from MD5 to SHA1. It can last several decades unless there's some massive breakthrough attack. If SHA-256 became completely broken, I think we could come to some agreement about what the honest block chain was before the trouble started, lock that in and continue from there with a new hash function. If the hash breakdown came gradually, we could transition to a new hash in an orderly way. The software would be programmed to start using a new hash after a certain block number. Everyone would have to upgrade by that time. The software could save the new hash of all the old blocks to make sure a different block with the same old hash can't be used. ##### BitcoinTalk #### Re: Technical clarifications ##### _2010-06-14 22:21:55 UTC_ - [-](https://bitcointalk.org/index.php?topic=179.msg1588#msg1588) 3) Nothing, if sending by bitcoin address 5) It is decentralised. After you have connected to the network the first time, you no longer need IRC. ##### BitcoinTalk #### Re: Can't Build r80 from SVN ##### _2010-06-14 22:40:14 UTC_ - [-](https://bitcointalk.org/index.php?topic=163.msg1590#msg1590) Sorry, I didn't test compile on linux the last few revisions. Reverted makefile.unix. ##### BitcoinTalk #### Re: What is the incentive to collect transactions? ##### _2010-06-15 23:41:29 UTC_ - [-](https://bitcointalk.org/index.php?topic=165.msg1595#msg1595) [_**Quote from: theymos on June 05, 2010, 04:26:09 PM**_](https://bitcointalk.org/index.php?topic=165.msg1373#msg1373) _Adding transactions to the block you're working on will slow down your generation rate_ The premise is false. Adding more transactions to the block you're working on does NOT slow down your generation rate. When generate is scanning hashes, it only hashes the header of the block, which is constant size. The header contains a hash of the transactions (the Merkle root) and is only updated occasionally. If necessary I can write code to make nodes prefer not to use a block if it doesn't contain enough of the transactions they know about. A discouraged block would almost always fail to be included in the main chain, but would be accepted if it did get in. I doubt this will be necessary, since there's no real advantage for nodes not to include all transactions. ##### BitcoinTalk #### Re: URI-scheme for bitcoin ##### _2010-06-16 00:15:47 UTC_ - [-](https://bitcointalk.org/index.php?topic=55.msg1596#msg1596) [http://127.0.0.1:8330/?to=domain.com&amount=200.00&comment=order_12345](http://127.0.0.1:8330/?to=domain.com&amount=200.00&comment=order_12345) or [http://127.0.0.1:8330/?to=](http://127.0.0.1:8330/?to=)<bitcoinaddress><separatorchar>1.2.3.4&amount=200.00 But as long as the link is already doing the typing for you, I don't see much benefit in using a domain address instead of bitcoin address. With a bitcoin address, the user can't send an unidentified payment. They can't send payment until they've been given a correct bitcoin address to send to. What would be nice about sending by domain is you could visually verify who it's going to. A more crucial issue is what if the browser isn't allowed to connect to 127.0.0.1: [http://BitcoinTalk.org/index.php?topic=63.msg1589#msg1589](http://bitcointalk.org/index.php?topic=63.msg1589#msg1589) and if that's true, then what about that example freenet link that had 127.0.0.1 in it? ##### BitcoinTalk #### Re: Website translations ##### _2010-06-16 16:53:34 UTC_ - [-](https://bitcointalk.org/index.php?topic=151.msg1600#msg1600) Thanks DataWraith! The German translation is uploaded to SVN. This is great, we've already got 3 major languages. ##### BitcoinTalk #### Re: new binary release? ##### _2010-06-17 17:07:56 UTC_ - [-](https://bitcointalk.org/index.php?topic=184.msg1609#msg1609) I'm working on getting version 0.3 released as soon as I can. Just a last few things left to do. It's been a long time since 0.2 and we need to get a prebuilt bitcoind with command line and JSON-RPC available. This time we'll have both 32-bit and 64-bit linux binaries, and Laszlo is going to build a Mac OSX release. Plus, we'll include the German, Dutch and Italian translations by DataWraith, Xunie and Joozero (thanks you guys!). ##### BitcoinTalk #### Re: Transactions and Scripts: DUP HASH160 ... EQUALVERIFY CHECKSIG ##### _2010-06-17 18:46:08 UTC_ - [-](https://bitcointalk.org/index.php?topic=195.msg1611#msg1611) The nature of Bitcoin is such that once version 0.1 was released, the core design was set in stone for the rest of its lifetime. Because of that, I wanted to design it to support every possible transaction type I could think of. The problem was, each thing required special support code and data fields whether it was used or not, and only covered one special case at a time. It would have been an explosion of special cases. The solution was script, which generalizes the problem so transacting parties can describe their transaction as a predicate that the node network evaluates. The nodes only need to understand the transaction to the extent of evaluating whether the sender's conditions are met. The script is actually a predicate. It's just an equation that evaluates to true or false. Predicate is a long and unfamiliar word so I called it script. The receiver of a payment does a template match on the script. Currently, receivers only accept two templates: direct payment and bitcoin address. Future versions can add templates for more transaction types and nodes running that version or higher will be able to receive them. All versions of nodes in the network can verify and process any new transactions into blocks, even though they may not know how to read them. The design supports a tremendous variety of possible transaction types that I designed years ago. Escrow transactions, bonded contracts, third party arbitration, multi-party signature, etc. If Bitcoin catches on in a big way, these are things we'll want to explore in the future, but they all had to be designed at the beginning to make sure they would be possible later. I don't believe a second, compatible implementation of Bitcoin will ever be a good idea. So much of the design depends on all nodes getting exactly identical results in lockstep that a second implementation would be a menace to the network. The MIT license is compatible with all other licenses and commercial uses, so there is no need to rewrite it from a licensing standpoint. ----