I already offered to do this (would take about a day) but he wants to keep the existing directory layout which would be PITA for any automake set-up ... so probably have to stick to his python hack make until he can change that.
I'm glad to see someone will be able to do it at some point. I confess I tried to read the autotools documentation but I found it quite tough to grasp so I kind of gave up. If you can do it, it's great. It's ok if you prefer to wait until he changes the directory structure. There is no rush. If it's not easily possible to make a makefile (no pun intended there) without using a flat directory structure, then please change it. I'm fine with that. Even though I like the tree structure, it can be sacrificed for more important things. Thank you for that comment. I will likely use a dual license with the GPL.
Awesome. Here is standard-issue gift centipede cat for you: Thank you. When should I expect it in the post?
|
|
|
Doesn't bittorrent have an algorithm which allows for people to not contribute bandwidth but has incentives for nodes to do so? I just vaguely remember reading something about it.
|
|
|
Oh how I wish bitcoin was only 131 lines of code...
It was a good interview but indeed some of the information was wrong.
|
|
|
It is not known whether this is a bug or intentional, but the reference client never adds the genesis transaction to its index. Thus, its outputs cannot be spent. Changing this would imply giving Satoshi an instant switch to fork the network. I'm sure we respect him a lot, but not enough for that I didn't know this. Better update my code !
|
|
|
cbitcoin 1.0 is discontinued as many new features and improvements are in development for cbitcoin 2.0 and all work will go towards that from now on.
|
|
|
Hello. For the testing of my block-chain validation code, I am needing some blocks which allow me to test various cases. For instance a block where everything is valid except for the timestamp. The problem is, to test these without disabling the PoW checks, the blocks need to have valid hashes. I'm making this topic to ask if anyone would like to help generate some of these blocks. Once created these blocks should hopefully be useful for many bitcoin implementations. Matt Corallo has a program named pulltester which may help with this, though I'll leave him the opportunity to explain that in more detail, if he wishes. I'll list here the blocks I know I'll need to test, though there may be more blocks which will be helpful (inc. for other implementations). A lot of the tests can be done on the validation functions without needing separate blocks for each case so it may seem many things are missing. All of these blocks should be valid except for the things mentioned. This includes a valid hash. Blocks after the genesis block with the following problems (ie. At height 1): * Block with zero transactions. * Block with incorrect merkle root. * Block with first transaction not a coinbase. * Block with non-final coinbase transaction * Block with zero outputs * Block with a size of 1000001 bytes. * Block with bad coin-base script size (< 2 or > 100). Blocks after the 100 miner test blocks which are made with this code: https://github.com/bitcoin/bitcoin/blob/master/src/test/miner_tests.cpp* A block with a mixture of sigops (inc. P2SH) with 20000 sigops (This is a valid one). * Same but with 20001 sigops. * Block spending coinbase from height 2. * Block with non-coinbase transaction that is not final. * Block with transaction spending output of a transaction earlier inside that block (Valid). * Block with transaction spending output of a transaction later inside that block. * Two inputs referencing same output in two different transactions in a block. * Block with transaction with invalid input script. * Block with input referencing output that does not exist. * Block with coinbase value equal to block reward plus several transaction fees (Valid). * Block with coin base value equal to block reward plus several transaction fees plus one. * Block with timestamp 1231006525. I also need to test some obscure parts of the block-chain re-organisation. This can be done with a branch which goes off the branch created with the 100 test blocks and becomes the main chain. Then several blocks can be added to that branch so that the branch with the 100 blocks can be extended without becoming the main chain. Then another branch is made of this branch (Not an extension) which becomes the main branch. So to begin with there will be these blocks A: 0 --> 1 B: `-> 1 … 99 --> 100 Next a new main chain is need that branches of the previous main chain: A: 0 --> 1 B: `-> 1 … 99 --> 100 C: `-> 100 --> 101 Then this new branch is extended to make room for extension of the other branch. A: 0 --> 1 B: `-> 1 … 99 --> 100 C: `-> 100 --> 101 --> 102 Now the other branch is extended: A: 0 --> 1 B: `-> 1 … 99 --> 100 --> 101 --> 102 C: `-> 100 --> 101 --> 102 Then the new main chain is made: A: 0 --> 1 B: `-> 1 … 99 --> 100 --> 101 --> 102 D: \ `-> 102 --> 103 C: `-> 100 --> 101 --> 102 What that tests, is reorganisation in the case where the new main chain makes use of a parent branch with previous validation data and which requires further validation. In this case block B101 has not been completely validated before the reorganisation because complete validation is only done on blocks that enter the main chain or when there is a reorganisation. That's just one part of the code that needs testing. It would also be good to have more blocks with an invalid block for B101 as that would ensure an invalid block in a parent branch whilst doing complete validation would be caught. B101 would need to be invalid in a particular way. Give B101 an invalid coinbase output value. That would work. So what is needed is C100, C101, C102, B101, B102, D102, D103, where B is the branch using the miner test blocks. And also another set of B101, B102, D102, D103 with an invalid B101. Sorry that this is confusing. I also need to test the branch trimming code but I won't figure that out until I've actually coded it. Thanks for anyone willing to help. If anyone needs any further information please ask.
|
|
|
Okay the issue was with the input script length. Mine was 5 bytes but it should have only been 2 bytes. One byte each for the two numbers. All sorted now.
|
|
|
Hello. I'm trying to generate the mining test blocks from here: https://github.com/bitcoin/bitcoin/blob/master/src/test/miner_tests.cppI assume they work on top of the genesis block and so I tried creating them but the first fails with a bad hash. The first block data I have is this: 0x1, 0x0, 0x0, 0x0, // Version 1 0x6f, 0xe2, 0x8c, 0xa, 0xb6, 0xf1, 0xb3, 0x72, 0xc1, 0xa6, 0xa2, 0x46, 0xae, 0x63, 0xf7, 0x4f, 0x93, 0x1e, 0x83, 0x65, 0xe1, 0x5a, 0x8, 0x9c, 0x68, 0xd6, 0x19, 0x0, 0x0, 0x0, 0x0, 0x0, // Genesis Prev Hash 0x42, 0xa, 0x9e, 0xc3, 0xf4, 0xa4, 0x97, 0x26, 0x7d, 0xb5, 0xe0, 0x7d, 0xdd, 0x2e, 0xea, 0x53, 0xa5, 0x37, 0x68, 0xbc, 0x49, 0xd7, 0x89, 0xb9, 0x9c, 0x8a, 0x7a, 0x5a, 0x98, 0x92, 0x9b, 0xba, // Merkle Root 0x2a, 0xab, 0x5f, 0x49, // TimeStamp 0xff, 0xff, 0x0, 0x1d, // Target 0x23, 0xe2, 0xa3, 0xa4, // Nonce 0x1, // Transaction number 0x1, 0x0, 0x0, 0x0, // Transaction version 0x1, // Input number 0x0 <repeats 32 times>, // Coinbase output reference hash 0xff, 0xff, 0xff, 0xff, // Coinbase output reference index 0x5, // Input script length 0x4, // Extra nonce 0x0, 0x0, 0x0, 0x0, // Height 0xff, 0xff, 0xff, 0xff, // Sequence 0x1, // Output number 0x0, 0xf2, 0x5, 0x2a, 0x1, 0x0, 0x0, 0x0, // Output value 0x0, // Output script length. Assuming nothing comes after with zero length??? 0x0, 0x0, 0x0, 0x0 // Locktime What am I doing wrong, does anyone know? I need to do this to do some block validation tests.
|
|
|
I wonder if those superhuman people that can do square roots of large numbers instantly could actually learn how to do the SHA-256 algorithm in their mind?
|
|
|
In order to become rich, you must first learn to spend less than you earn! Getting rich does NOT happen by earning a lot of money.
#richdadpoordad
I thought this was obvious but apparently not.
|
|
|
Do you have anything I can read about that being the case?
I suppose if potatoes are to be avoided then carrots and parsnips are to be avoided too?
|
|
|
I don't eat grains when I cook for myself anymore but I still have cheese, butter, dark chocolate and potatoes. I'm not convinced that diary is a major problem in small amounts and one potato every few meals is not a major amount of carbohydrate (which a lot of people following the paleo diet get paranoid about). And if you are basing the diet decision on what hunter-gatherers ate, I believe they did eat potatoes and other starchy vegetables, though maybe they didn't? It depends largely on location of-course. Diet changes massively depending on what food sources are available.
|
|
|
You could tape a piece of paper onto the bank note with "bitcoin.org" or whatever on it. Then the tape can just be peeled off.
|
|
|
It doesn't have to be a problem because people do not need to download it.
|
|
|
You can't spend arbitrary amounts, you can only spend the entire amount of bitcoins held with a key or not. So it would be like printing your own cash backed by bitcoins. It's more complicated because it requires a printer and you'd need to remember and organise how much money is stored on the keys (How do you handle change?).
Why is it hard to scan a QR code or use NFC and then confirm a payment on your mobile? Bitcoin can be used in that fashion and it's easy no? Faffing around with printed keys is not as easy in my opinion. Sure, you might say something like "But the bitcoin payments require confirmations and the private keys can be verified instantly". Well I'm working on a way to remove all fears of 0-confirmation payments whether or not these fears are justified anyway.
As for the blockchain download. This doesn't need to be a problem either.
|
|
|
I do believe that paper wallets are a viable solution that is totally underrepresented in the materials one's likely to find in a cursory web search for bitcoin. The generator at BitAddress.org should be available on Bitcoin.org. The community of people able to use Bitcoin would be much bigger if they could easily print their own wallet, buy bitcoins somewhere to fund it, and type their private key directly into the merchant of their choice, no differently than if they were buying and redeeming an iTunes gift card. That "type it into a merchant" step would come much more easily if bitcoind offered support for "sweeping" private keys, which is why I proposed it over a year ago. A merchant would simply put a web front-end on the function, sweep funds to an address he controls, and then treat swept payments the same as an incoming payment from elsewhere on the internet. I run into people all the time who just wanted to own some coins, downloaded the client, and gave up because they bit off more than they could chew and because to them, a day long block chain download sounded nothing like "the future of money". If they could have printed themselves a wallet in 30 seconds, then handing someone 100 bucks for some play coins would have been far more pleasant. This seems to make things more complicated, not less. Maybe I haven't got a clue.
|
|
|
I'm looking to create a secure connection with the client I'm making. So the chance of an attack using this method would be impossible. The most an attacker could therefore do is prevent someone using bitcoin if the attacker has control over the internet connection.
|
|
|
Thank you for that comment. I will likely use a dual license with the GPL.
|
|
|
1.0 Alpha 4 is now available to download: http://cbitcoin.com/This release fixes issues with the CBBigInt code, an issue with compilation and an issue with CBSubScriptRemoveSignature.
|
|
|
Smart lawyers spent years on the current licenses, including rounds of open review and comments across multiple jurisdictions in the world.
It is doubtful lone efforts will match that sufficiently to make a bulletproof license, compared to existing ones. Well I plan to have a lawyer look over the license before I would use it. Many people use customer software licenses which might not have as much review as the popular licenses you talk about but at least have lawyers look at them. And the license will be a modified GPL license, only changing necessary parts to satisfy my requirements. If you look at what I've done so far I've just removed a lot of the GPL restrictions and added an additional part to the "Additional Terms" section in attempt to create compatibility with the Apache License 1.0 which is needed for OpenSSL.
|
|
|
|