You are on the wrong forum...
|
|
|
The most common logo seen is released under "public domain" license: https://bitcointalk.org/?topic=1756.0The original Bitcoin logo/icon was released with the client under an MIT license.
|
|
|
If you create a text file and want to make it into an executable script, you'll usually need to chmod 755 the file to make it executable. You can also just edit the original mkbootstrap.py and save it as my version.
Pynode will have to download the blockchain first - it is it's own Bitcoin client, but it only has a few functions of real Bitcoin. The config script I gave is an example, and has directory locations I indicated you should change, like if your logon user name is "med2k", and you extract pynode to it's own subdirectory in your home directory, then the config file paths would start with "/home/med2k/pynode" because "user" in the script is where your username goes.
There is no need to sudo, nothing needs to run as root.
|
|
|
Exactly like a lottery - every time you attempt to find a block hash, you have a 1 in 14,475,041,481,077,218.113685271027695 chance of finding one, right now anyway.
It's like if you see a penny on the ground that could be worth 25 BTC, but to flip it over in order to check if it's a winner, you first need to perform about 6000 various math operations (addition, and and ors, shifts, rotations) on a 154 digit long number.
And the odds of the penny being a winner are small. Like if you lined up pennies that wrapped around the whole Earth, and only one of them was a winner, except it's 6,804,178 times around the Earth, more like a wall of pennies 10KM high around the entire equator of the Earth. Find the penny that's a winner.
|
|
|
The first thing you need to do is get pynode (python language mini-Bitcoin node) software working. This is easier on Linux, since on Windows you will need to build leveldb to use py-leveldb, which will require lots of C++ stuff installed. I use Kubuntu 12.04 on VirtualBox, since this allows you to have a second "Bitcoin" on another virtual IP address to connect to your main computer node. https://github.com/jgarzik/pynode( https://bitcointalk.org/index.php?topic=94645.0) Here are the steps to get the required python extensions on (k)ubuntu 12: sudo apt-get install python-setuptools sudo apt-get install python-leveldb sudo apt-get install libevent-dev sudo apt-get install python-all-dev sudo easy_install greenlet sudo easy_install geventThen download and unzip pynode to a working directory. I have it in the directory /home/USER/pynode/, where USER is the logon username. I also created a subdirectory /home/USER/pynode/db for the blockchain. You will need to create a pynode-config file. You can cut and paste the file below, but edit the IP address to be another (your local) Bitcoin node, and change the /home/USER lines to your login user name directory: pynode-config# hostname or IP address of network node to connect to host=192.168.1.101
# port of network node to connect to (default: 8333) port=8333
# JSON-RPC server user, password. Uses HTTP Basic authentication. rpcuser=XXXX rpcpass=YYYY
# JSON-RPC server incoming TCP port (default: 9332) rpcport=9332
# database directory db=/home/USER/pynode/db
# log filename, or '-' or no-value for standard output log=/home/USER/pynode/db/node.log
# if present, import these blocks into the block database #loadblock=/tmp/blk0001.dat
# if present, disable all signature checking in new blocks # (disabled by default) nosig=1
# if present, force signature checking on all blocks, # even those normally skipped because they were prior # to a checkpoint. # (disabled by default) #forcesig=1
Then run it with this command: cd ~/pynode ./node.py pynode-configIt will download all blocks from your other Bitcoin over the network (but go much faster without re-verification). After it is done downloading (by checking it's log file), you can abort it. To generate a bootstrap.datFind and edit the mkbootstrap.py file, changing the log and db directories to the directories used above. Then run it, to dump a bootstrap.dat up to the checkpoint block listed on the line that says xrange(216116... To generate importable blocks in multi-part filesAlternately, for Bitcoins less than version 0.8.0, run my modified mkbootstrap.py file that dumps the blockchain and splits the files at exactly the same blocks and size as Bitcoin creates in it's datadir: #!/usr/bin/python # # mkbootstrap.py # # Distributed under the MIT/X11 software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. #
import sys import Log import MemPool import ChainDb import cStringIO import struct
from bitcoin.coredefs import NETWORKS from bitcoin.core import CBlock from bitcoin.scripteval import *
NET_SETTINGS = { 'mainnet' : { 'log' : '/home/USER/pynode/mkbootstrap.log', 'db' : '/home/USER/pynode/db' }, 'testnet3' : { 'log' : '/home/USER/pynode/mkbootstraptest.log', 'db' : '/home/USER/pynode/chaintest' } }
MY_NETWORK = 'mainnet'
SETTINGS = NET_SETTINGS[MY_NETWORK]
log = Log.Log(SETTINGS['log']) mempool = MemPool.MemPool(log) netmagic = NETWORKS[MY_NETWORK] chaindb = ChainDb.ChainDb(SETTINGS, SETTINGS['db'], log, mempool, netmagic, True)
out1 = open('bootstrap.001', 'wb') out2 = open('bootstrap.002', 'wb') out3 = open('bootstrap.003', 'wb')
scanned = 0 failures = 0
for height in xrange(212000+1): # last block to dump (checkpoint) heightidx = ChainDb.HeightIdx() heightstr = str(height) try: heightidx.deserialize(chaindb.db.Get('height:'+heightstr)) except KeyError: log.write("Height " + str(height) + " not found.") continue
blkhash = heightidx.blocks[0]
block = chaindb.getblock(blkhash)
ser_block = block.serialize() if (height % 1000 == 0 and height <= 90000) or (height % 100 == 0 and height > 90000): print "mkbootstrap: block height " + str(height) outhdr = netmagic.msg_start outhdr += struct.pack("<i", len(ser_block)) if height > 210964: # write 210965- to 3rd file out3.write(outhdr) out3.write(ser_block) elif height > 188528: # write 188529-210964 to 2nd file out2.write(outhdr) out2.write(ser_block) else: out1.write(outhdr) out1.write(ser_block)
scanned += 1 if (scanned % 1000) == 1: log.write("Scanned height %d (%d failures)" % ( height, failures))
log.write("Scanned %d blocks (%d failures)" % (scanned, failures)) This will create the "official/final/verifiable/will never change" first two blockchain files (containing blocks up to 210964), blk0001/blk0002.dat in Bitcoin up to v0.7.x will also have the same hash after you import: >sha256sum bootstrap.*7aac5826b91b4f87a2e9534e0e38e8d64ed21aff8a4eb8ff8dde4e726e67fe1a *bootstrap.001 796f65be10ef2e5fc27b97b09f312c9f8ddd7d1c3ab0f27f356a5b1dbf5a8963 *bootstrap.002 The script will also create a bootstrap.003 with remaining blocks (up to 212000 in script). We'll ignore this one for now. The original mkbootstrap script dumped a single bootstrap.dat file up to block 193000; if a future checkpoint is set, the final part 003 of will include these blocks. (Google for your own copy of sha256sum.exe. Put it in the Windows directory and you can run it from anywhere.) Let's import the blocks into Bitcoin, this will take six hours with an SSD and fast CPU (3GHz Core2), even more time with regular hard drive and less CPU. Here's a Windows command line, import to a blank C:\datadir: "C:\Program Files (x86)\Bitcoin\daemon\bitcoind.exe" -datadir=C:\datadir -loadblock=C:\bootstrap.001 -loadblock=C:\bootstrap.002 -connect=127.0.0.1 -detachdb -printtoconsoleThis will create identical block file hashes as the imported files, and will build the final index file. Bitcoin won't proceed with network download after the last block of the import, instead it will abort, since you don't have bitcoin.conf. Here is the index file's hash on 0.7.1: 1ab115fd8338f0f4d112c8465418619f1219058a2e6f9baeb7621f39b362a177 *blkindex.dat By using this method, others can create the exact same blockchain files as you from a network download, import them and see that they get the exact same files in their data directory as you created.
|
|
|
SetBestChain: new best=0000000000000214aa18 height=189201 work=388855085476008295362 date=07/15/12 15:45:16 ProcessBlock: ACCEPTED SetBestChain: new best=00000000000005478db7 height=189202 work=388862608030743090363 date=07/15/12 16:41:47 ProcessBlock: ACCEPTED SetBestChain: new best=0000000000000854e370 height=189203 work=388870130585477885364 date=07/15/12 16:53:22 ProcessBlock: ACCEPTED SetBestChain: new best=00000000000009441aeb height=189204 work=388877653140212680365 date=07/15/12 16:56:00 ProcessBlock: ACCEPTED SetBestChain: new best=0000000000000802f60d height=189205 work=388885175694947475366 date=07/15/12 17:12:54 ProcessBlock: ACCEPTED Loaded 189205 blocks from external file in 5073035ms Loading addresses...
It took me 1 hr 25 min on a Core 2 2.4GHz with an SSD, on 0.7.1. After block 189205 (or block 193000 with tricks) your Bitcoin will be again connecting to the network normally to get 2GB more blockchain after the torrent's last block.
|
|
|
"out":[ { "value":"1.00000000", "scriptPubKey":"OP_DUP OP_HASH160 ad4c20d5b1956015ea626f02afdaebe8ed17e1a8 OP_EQUALVERIFY OP_CHECKSIG"[/b] }, { "value":"1.00000000", "scriptPubKey":"OP_DUP OP_HASH160 ad4c20d5b1956015ea626f02afdaebe8ed17e1a8 OP_EQUALVERIFY OP_CHECKSIG"[/b] } ] }
Constructing a transaction like this is: 1. Either identical to sending the destination 2 BTC, in that clients consider the transaction to be adding 2BTC to the balance as one output (Bitcoin can't differentiate which output of these two might later have been spent, because they are identical with an identical transaction hash), or 2. A good way to lose half your money because Bitcoin can't differentiate between which output of these two might later have been spent, because they are identical with an identical transaction hash. https://en.bitcoin.it/wiki/BIP_0030So far, the Bitcoin reference implementation always assumed duplicate transactions (transactions with the same identifier) didn't exist.
|
|
|
1. Hashes are non-reversible, a hash cannot be turned into data 2. You can look up the contents of a solved block and see the nonce, since it is a readable part of a block's contents: http://blockexplorer.com/rawblock/000000000000003c74f147f11e68ad5283efbad7796e5774836e75e7ed3340d13. Other block content is specific to the pool and constantly changing in blocks, such as the coinbase and the generate payout tx address. 4. It is trivial to determine if you solved a block or produced a valid share - if the hash of the share you are submitting is lower than the target, then it is a block solve. You can alter your mining software to record all shares you submit, the published hash of a solved block will be the same as your submission if you found one. 5. You can alter mining software to record the input data that produced a valid share, and re-hash it to verify it works. A pool will have different criteria than just it is a hash, they need to verify a share is still a valid block solve for the current block, and the coinbase, rollntimestamp is reasonable, and that it is work that was requested of you. 5. What is the problem?
|
|
|
When you say you have a modem, do you mean dial-up modem? Does "only have a modem" rather mean that you connected your computer directly to a high speed cable or DSL modem? It is impractical to run the full Bitcoin client on less than high-speed internet, as 77 days of blockchain is over 1GB of data.
Nevertheless, Bitcoin should attempt to make connections with other peer-to-peer clients. If you hover the mouse over the lower-right "bars" icon, it will tell you how many connections you have to other nodes, typically it will be less than five minutes after startup for Bitcoin to have several connections.
One should examine what on your network has changed. The first suggestion might be to go into Bitcoin's options, and on the network tab try each setting of "Map port using UPnP", and disable "SOCKS Proxy" (unless you know you need a proxy server to get on the Internet).
Additionally, third-party firewall or antivirus software may be blocking or interfering with connections to the peer-to-peer network, starting with "windows essentials" antivirus. One incorrect click and they will never let your app through again.
It is also possible to misconfigure Bitcoin if you have manually edited it's configuration file. Manually and incorrectly adding some options such as "connect" can make Bitcoin unable to connect.
If your client does show that you have multiple connections to other clients and the network block count does not increase after say half-an-hour, there is the possibility that the database that stores your local block record may have become corrupted, which will take repairs or a re-download.
|
|
|
Welcome to my hard drive, blk0002.dat.
Welcome to my hard drive, blk0003.dat
|
|
|
The blk0001.dat checksum posted is different than one that I obtain on my copy of the blk0001.dat (using the awkward QuickSFV program), and my file is identical to the one generated by pynode off a network download, one that would be created by doing an import of the bootstrap torrent, and the file in luke-jr's torrent. In addition, even if the CRC posted was the same, it is trivial to make a CRC32 collision, as it is not a cryptographically strong algorithm. Also, the blockchain database files cannot be used independent of the log sequence files which are in the database subdirectory, unless the database is specially prepared beforehand. I have a thread where I (had) hosted blockchain files, it also has links to two torrents and others who are hosting the bootstrap blockchain. If you wish to prepare a blockchain download in a way that the integrity can be independently verified, I can help you in this, but it will take more time and software than just copying files out of the datadir.
|
|
|
Pay-Per-Last-N-Shares, where N is a number, typically 1/2 of Bitcoin difficulty, defining how long your share remains active.
A share is a difficulty-1 proof of work, the method all pools use to calculate miner contribution when sharing rewards. The full difficulty is around 3.5 million, it takes on average that many shares for a pool to find a block.
1. You submit a pool share (about every 10 seconds on a good GPU), 2. For every share that is active, you receive 25BTC/N any time a block is found by pool, 3. Your shares aren't discarded when a block is found, 4. A share expires after all miners have submitted N more shares newer than yours.
You can think of this as a first-in-first-out system. If you have 1% of the hashrate of the pool, 1% of the shares used for calculating reward sharing will be yours and you will get 1% of the reward anytime a block is found. An individual share might expire without contributing to your reward, or it can earn you multiple rewards if several blocks are found before it expires. This is a fair payout system as your expected reward is 100% value regardless of how or when you mine.
|
|
|
"You step into the Road, and if you don't keep your feet, there is no telling where you might be swept off to." Welcome to the world of Linux. I'm using Linux for 5 / 6 years now, and everyday I learn something new. But compiling stuff from source was always a pain in the ass.. You haven't lived until you've compiled your operating system from source code by downloading every individual software package from it's repository: http://www.linuxfromscratch.org/lfs/view/stable/
|
|
|
. . . 17. Do not drive over 50MPH or over 50 miles on temporary spare tire, have tire serviced immediately.
However, at every step there is a way some idiot can screw up or kill themselves . . .
. . . A good technical writer knows it is impossible to make anything idiot-proof, because idiots are so ingenious.
I wonder what sort of safety margin the engineers use when coming up with this advice. I know I've driven more than 1000 miles in excess of 90MPH over the course of 3 months on one of those temporary spares, before I got around to replacing it. I just made up that stuff based on experience, it's not a cut-and-paste. Print and put on the spare tire of your less mechanically-inclined loved one. Just like "put the tools in the trunk" prevents you from getting a tire-iron through the head in case of a roll-over accident, running a temporary spare doesn't give you expected or needed vehicle control in cases of obstacle avoidance, confuses ABS computers, and causes differential wear. It is much better to provide simple guidance and tell white lies in some cases than explaining all possible consequences. I knew a guy who put temporary spares on the front of his lowered VW bug. Doesn't mean I want to be in the car with him on a wet day.
|
|
|
or am I just stuck and paying a BIG fee?
Not if you have a bitcoin-rich uncle. Just meet with him and ask him to use his 1000 BTC wad of cash to mop up the dust in your wallet. I'm not kidding. You can avoid all fees if you can convince someone to include your small transaction outputs in a single large transaction. It is the total sum transferred that matters. If my calculation is correct, he would need ~3200 btc*day worth of inputs, so about 100 of 1 month old coins would probably do it. If I had any old coins I would gladly do this for you, but alas I don't. Let's show our work: Typical transaction size examples in KB (from blockchain): A) 1 input/1 output (sending exact balance of one input) = 191 bytes B) 1 input/2 output (sending money from single input with some change) = 258 bytes C) 2 input/1 output (consolidating two address balances to one output) = 404 bytes D) 12 input/2 output (sending from many inputs with change) = 1851 bytes E) 34 input/1 output (consolidating 34 inputs to one output) = 3400 bytes F) 128 input/2 output (sending with a dice-spammed wallet) = 22935 bytesCalculated fee for last transaction in list = 23k * .0005 = 0.0115 regardless of actual BTC amount sent ( actual transaction was 0.013 BTC fee). priority = sum(input_value_in_base_units * input_age)/size_in_bytes minimum priority to avoid the enforced limit = above 57,600,000 So if transaction example B was a 20 BTC input with 144 confirmations (1 day old): priority = ( 2,000,000,000 * 144 ) / 258 = priority 1,116,279,060 = free OKIf transaction example F input was 20 BTC, one day old, plus 127 satoshispams, one day old: priority = { ( 2,000,000,000 * 144 ) + ( 1 * 144 ) + ( 1 * 144 ) + ( 1 * 144 ) .... } / 22935 priority = { (288000000000) + (18288) } / 22935 priority = 12,557,234 < 57,600,000 That transaction priority would be about one-fifth the size needed for free priority, either we can wait five days instead of one day, or use 100 BTC instead of 20 when adding a "helper balance" to the wallet. Note above that the age of the small-BTC spam inputs have near zero effect on the priority, only their additional size. Double the spam inputs, you only double the size, and double the age or balance required by a big helper balance when attempting to empty wallet for free.
|
|
|
No its like opening the back cover on your TV remote before inserting the batteries...
Jokes aside, I'm not 100% sure the Bitcoin-QT client will only accept the Blockchain files after selecting detach database at shutdown. It may only be necessary if just the blockchain files are transferred and not the clients settings but I don't know where they are stored.
To answer your question, the setting is stored in the Windows registry under HKCU\Software\Bitcoin\Bitcoin-Qt\detachDB. The detachDB option prepares your blockchain for the move to another computer by making it more idiot-proof (without me having to explain why). To explain why I detail every step above, I guess I'll have to explain what I think might be done by naive users without explicit instruction (or with incorrect instruction): - Try to copy the database files while Bitcoin might be running, while it is still writing to, or still has locked file handles on, the database files,
- Copy the data directory but not copy/restore the log files subdirectory,
- Not be running the same version/platform/bittiness of Bitcoin on the other computer they copy the datadir to.
When you make a backup of the datadir file (without detachdb), the backup can be restored on the same machine with the same version of Bitcoin with no problems. This should make sense to you intuitively, because the entire data set will be exactly the same. However, that data may not work correctly on another version of Bitcoin without preparation. Why do I specify to run and close Bitcoin with the detachdb option? Read what is performed when you use this option: Description: DbEnv::lsn_reset
The DbEnv::lsn_reset method allows database files to be moved from one transactional database environment to another.
Database pages in transactional database environments contain references to the environment's log files (that is, log sequence numbers, or LSNs). Copying or moving a database file from one database environment to another, and then modifying it, can result in data corruption if the LSNs are not first cleared.
Note that LSNs should be reset before moving or copying the database file into a new database environment, rather than moving or copying the database file and then resetting the LSNs. Berkeley DB has consistency checks that may be triggered if an application calls DbEnv::lsn_reset on a database in a new environment when the database LSNs still reflect the old environment.
The DbEnv::lsn_reset method modifies the physical file, in-place. Applications should not reset LSNs in files that are currently in use.
The DbEnv::lsn_reset method may be called at any time during the life of the application.
The DbEnv::lsn_reset method either returns a non-zero error value or throws an exception that encapsulates a non-zero error value on failure, and returns 0 on success. Don't do this, what are you likely to see in your db.log file?: error:file unknown has LSN 333/1994577, past end of log at 1/28 Commonly caused by moving a database from one database environment to another without clearing the database LSNs, or by removing all of the log files from a database environment. Bitcoin doesn't perform this operation on the blockchain database normally, because it takes a long time, and it is likely that the user will interrupt the writing process when they see Bitcoin isn't closing quickly or when they told their computer to shutdown and it's not shutting down due to the database files being written. This will corrupt database files. Enabling detachdb on the new computer in advance of restoration would only prepare database files which will be discarded anyway. Permanently enabling detachdb without knowing what it does or the caveats can increase the chance that the Bitcoin client's blockchain or other database files (uh, wallet?) will become corrupted in the future through end-user action.
You might thing tire-change instructions like these are tedious: 1. Move car to a flat and level surface, do not proceed work at an unstable or unlevel area, 2. Identify that you possess these items: cover pry tool, lug nut wrench, car jack, spare tire (properly inflated), tire chock, 3. Set vehicle parking brake and chock wheels at opposite end of vehicle from tire to be changed, 4. Remove wheel cover by prying at the indent notch at edge of cover with removal tool located in trunk, 5. Loosen each lug nut 1/4 turn by placing lug wrench tool on each lug nut (handle facing to the left) and stepping on it, 6. Locate jacking point on body rail seam weld, it will be an indent in the rail 6" from the wheel-well that can be felt, 7. Place jack under jacking point, raising it so it contacts vehicle by turning handle clockwise, 8. Verify that the jack is contacting vehicle at the notch and is perpendicular to ground, 9. Continue raising jack until tire is off the ground by 1" distance, 10. Remove all lug nuts from wheel and place in a secure location, 11. Remove wheel from lugs by shifting it left to right until it becomes disengaged from vehicle, 12. Place spare tire on lugs by orienting holes to match lugs and lift it into place, 13. Push wheel fully on lugs, ensuring that the center hole of wheel has seated itself around centering ring in spindle, 14. Replace lug nuts, hand tighten all nuts with wrench until turning resistance is met, using tightening pattern in vehicle manual 15. Lower vehicle jack, and tighten lug nuts to the same resistance as loosening them, 16. Place tools, jack, and original wheel in trunk, 17. Do not drive over 50MPH or over 50 miles on temporary spare tire, have tire serviced immediately. However, at every step there is a way some idiot can screw up or kill themselves. I stopped and helped a ditzy blonde change a tire once, she couldn't get the lug nuts off because the wheel was spinning in the air. Of course I also noted the unstable vehicle wobbling in the air because she put the jack about a foot inside from the edge of the car, jacking up under the body and bending in the passenger footwell about six inches. A good technical writer knows it is impossible to make anything idiot-proof, because idiots are so ingenious.
|
|
|
Make sure you select detach database at shutdown on the new computer before replacing the blockchain files with the ones from the old computer.
Uh, why? That's like saying "make sure you change the oil on your car before you replace the engine..."
|
|
|
You become her good friend and hang out with her. When her boyfriend becomes jealous or confrontational, she won't like being told who she can be friends with, and you'll be there for the rebound.
Or go out to a bar that has dance lessons for the dance lesson, stay for drinks and impress her with your dirty dancing and get her hot and bothered and suggest you get out of there and go to a hotel. Drunk horny chicks will quickly forget they have a boyfriend, and one good bang is all a guy needs to not want to call a chick again.
|
|
|
If the Bitcoin symbol is read or pronounced as "BEE-TEE-SEE" or "Bitcoins", then "BTC 50" doesn't make any sense, as saying "send me BTC 50" would sound like yoda-speak.
|
|
|
|