5486
|
Bitcoin / Bitcoin Discussion / Re: Wallet.Dat Recovery... Recover Your Own Lost Bitcoins!
|
on: July 25, 2011, 10:41:33 PM
|
So, I have created this script which pulls out every public and private key in your wallet and stores them into flat files. The "keylistpub.txt" will contain every public key in the wallet file whether it's yours or not, and "keylistpair.txt" contains a list of just the keys for which there is an associated private key in the wallet, and includes both. This script should avoid duplicate keys in the output files. http://dl.dropbox.com/u/1139081/extractKeys.tar.gzKeep in mind, this utility is going to create a new file on your computer with your private keys. Handle with care! Now, I want to create something that converts the flat file back into a wallet. This will allow someone to extract keys from multiple wallets, combine them into a single file, and the create a merged wallet. The output file format looks like this: 1MRAs5doMqqbLQVuAUqGcxHBzrexMiTBG: PubKey: cfd41f6ab9a217380bd2dc370592635797759c7de172f5cc6b228c1d4f83dde2 44f5a373bf80e66db4c0d34a892def09d1f605aef0d94f6b2c3e0322dfdd331e PrivKey: 7bb1e283fe1007757c75966706553e16cdb5f148c22712811a78e6bcf30c9a1b
1QXg28gA7mLBB9LSMgf4sjoB9batJBXEtB: PubKey: 47634c35731a35b5b70d4959418dae2e1c6676a1007626092eef8bceb80e1b16 0d048e2a917c80a3f5f085a06ce4c88f78d66c82abf2f2a1683c171f8bbdb7ab PrivKey: 6cd77c1cc66929e6db9bf4b502f4ce4868cb76037b66d630fd931a0ea2fb8bce ...
(don't get too excited, I have mangled the private keys) -- The first string is the address, which should be fairly obvious. -- The PubKey is two 32-byte numbers (x,y), which correspond to a point on the secp256k1 elliptic curve (the ECDSA curve used by the bitcoin network) -- The PrivKey is literally a random 32-byte number, which gives the public key when you multiply the generator point by this number. Yes, a private key is just a random number. As such, there is no way to identify whether a string of digits is a private key, without having a public key to compare to. Or rather, every 256-bit number is a private key, so a "private key" is only meaningful in the context of a public key point (x,y). (all hex numbers are encoded in BigEndian) Anyone want to help converting pub/priv keypairs into a wallet file? I believe it can be done with the bsddb package in Python, but I haven't gotten it to work, myself, yet. Joric's pywallet is the tool you need However, I modified it a bit and it's more practical Basically I added the possibility to import a key: - with its label - in a wallet not named 'wallet.dat' - as a reserve key (the hidden ones not shown in bitcoin adress book) Here are both: https://github.com/jackjack-jj/pywallethttps://github.com/joric/pywalletEdit: I now read your entire message I made a script too to backup the keys of a wallet into a new one automatically using my pywallet, without writing keys to the hdd You may take a look: http://forum.bitcoin.org/index.php?topic=31418.0
|
|
|
5487
|
Bitcoin / Bitcoin Technical Support / Re: [GUIDE]How to cancel 0/unconfirmed transactions?
|
on: July 25, 2011, 10:08:05 PM
|
If the transaction was broadcast it could go through at any time until you make a new transaction that spends it first?
Your sentence is too complicated for my poor english But if understand correctly, what you want to do is : - make a transaction - make your wallet forget it - make a new transaction that spend the same funds than the first one - hope the last one gets written in the blockchain before the first one If you remove also your blockchain history, I believe it could work if the second transaction reachs a miner before the first Are you thinking about the merchants who accept funds before being confirmed?
|
|
|
5488
|
Bitcoin / Bitcoin Technical Support / Re: [GUIDE]How to cancel 0/unconfirmed transactions?
|
on: July 25, 2011, 10:00:45 PM
|
Thanks for your help on this. The transaction was removed from the wallet, but the funds did not change. Maybe there is something else wrong with my wallet? I am on Win7 so I... 1. Backed up my broken wallet.dat 2. Renamed it wallet.old and left in Bitcoin directory 3. Created a new wallet.new in Bitcoin directory 4. Downloaded Python x645. Installed to C:\Python 6. Downloaded and extracted your pywallet fork to C:\Python 7. Downloaded and extracted walletco to C:\Python. (Check the link in OP.) 8. Opened a command window and ran this line "python walletco.py -p /python/ -W wallet.old -N wallet.new" Shows "Importing: 100.00%" First, DO NOT write here the privkeys (starting in 5), be sure to remove them all if you paste here the code in the console Before "Importing:100%", what was written? If it was like that, your new wallet has all the old keys:Address: 1AdDressxxxxx Privkey: 5xxxxxxx Imported successfully If not, please paste a little sample (again, remove the privkeys)
If debits/credits match, you should perform a -rescan
|
|
|
5489
|
Bitcoin / Mining / Re: Is "casual" mining still sustainable? Is buying a new rig stupid?
|
on: July 25, 2011, 08:12:21 PM
|
My wife let me purchase X dollars worth of gaming machine last year, and won't let me purchase anything new for a few more years. So bitcoins aren't "real money" to her, and thusly anything I mine is positive gain. I don't begrudge the hardcore miners, shit if I was single I'd be doing exactly that. So if you're in a boat similar to mine, just get what you want, and don't feel bad. If the bitcoin economy crashes, you still have a nice gaming rig for enjoyment. Don't take this the wrong way, but I've never understood how a guy could let his wife control the finances of the household. Even if she does the budget and bills how can you put your manhood in a drawer and have her dictate what you do with the money you make from work? My wife and I have always had separate finances. It keeps things really stable because I make a lot more than she does (about 3x) and I spend my free money on all kinds of toys, she spends her money on girl things, and neither of us can bitch and moan about what the other person is spending money on. I pay the bills and she gives me a percentage of the total monthly cost of living (rent, food, heat, electric, etc) which we determine by the income distribution. So basically, I pay 3/4 of the bills and she pays 1/4 because I make 3/4 of the household income. Everyone wins and no one has to limit what toys they are "allowed" to buy. I strongly recommend this method, it makes for a very respectful and stable relationship. Adopted
|
|
|
5490
|
Bitcoin / Bitcoin Discussion / Re: Bitcoins will become Betamax if we don't do THIS
|
on: July 25, 2011, 07:59:51 PM
|
When you take into account servers and Android OS, I'd say Linux has been fairly successful. There are large numbers of people using it without even realizing it (or caring). Bitcoin can achieve a similar success.
Also don't forget OSX and iOS are both based on the Linux kernel. I thought it was BSD
|
|
|
5492
|
Bitcoin / Project Development / Re: Dark Exchange: a 100% decentralized p2p exchange
|
on: July 25, 2011, 06:51:20 PM
|
I edited again, sorry for that (I won't edit anymore ) Actually there are 2 different errors (when no dev flag), when I hit the Login button If the password is correct: ERROR [darkexchange.uncaught-exception-handler]: Uncaught Exception: java.util.concurrent.RejectedExecutionException at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1768) at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92) at clojure.core$future_call.invoke(core.clj:5406) at darkexchange.controller.login.login$login.invoke(login.clj:62) at darkexchange.controller.login.login$login_action.invoke(login.clj:70) at seesaw.event$fire.invoke(event.clj:206) at seesaw.event$eval1022$fn$reify__1024.actionPerformed(event.clj:233) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(BasicRootPaneUI.java:191) at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1633) at javax.swing.JComponent.processKeyBinding(JComponent.java:2851) at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267) at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216) at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2928) at javax.swing.JComponent.processKeyBindings(JComponent.java:2920) at javax.swing.JComponent.processKeyEvent(JComponent.java:2814) at java.awt.Component.processEvent(Component.java:6040) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676) at java.awt.Component.dispatchEventImpl(Component.java:4502) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
If not: ERROR [darkexchange.uncaught-exception-handler]: Uncaught Exception: java.util.concurrent.RejectedExecutionException at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1768) at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767) at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92) at clojure.core$future_call.invoke(core.clj:5406) at darkexchange.controller.login.login$login.invoke(login.clj:62) at darkexchange.controller.login.login$login_action.invoke(login.clj:70) at seesaw.event$fire.invoke(event.clj:206) at seesaw.event$eval1022$fn$reify__1024.actionPerformed(event.clj:233) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
|
|
|
5493
|
Bitcoin / Project Development / Re: Dark Exchange: a 100% decentralized p2p exchange
|
on: July 25, 2011, 06:39:27 PM
|
Got a new question: where are the accounts? I'd really like to import my account into my dev repo instead of creating a new one I even 'find | xargs grep''d, but nothing...
Your account is held in a database in the data directory where your Dark Exchange is installed. If you want move it over to your dev repo, simply copy the entire data directory. It works but without the dev flag Well, no after all, without the dev flag I got that error:
See below
|
|
|
5495
|
Bitcoin / Project Development / Re: Dark Exchange: a 100% decentralized p2p exchange
|
on: July 25, 2011, 06:11:45 PM
|
I just restarted it and it's a bit better: I see you, DarkExchange and wegotpickles in Identities (all online), and 16 peers with only 4 notified (the '1' seems to be meaning 'Newly notified', right?)
Got a new question: where are the accounts? I'd really like to import my account into my dev repo instead of creating a new one I even 'find | xargs grep''d, but nothing...
|
|
|
|