Brainwallet - JavaScript Client-Side Bitcoin Address Generator

Notes on a first quick test of NTumblebit, on Linux and regtest.

I just thought I'd jot down a few notes on the experience of trying out the current NTumbleBit code.
This is testing on regtest, done for the simple reason that you don't have to wait for testnet blocks (nor sync testnet which is mildly annoying). At this stage I just wanted to learn how this works.
Your starting point is this wiki page.

Installation

You need to download Bitcoin Core. Use at least 0.13.1 - this turned out to be only major blocking point in the whole test, funnily enough, for me - it took me a few hours(!) in debugging to realize that the reason my wallet's coins were not being recognized was simply because 0.12.1 didn't support the necessary RPC syntax. (Note to devs: is there a way to expose errors/exception to the user in the client to help with under-the-hood errors like that? RPC configuration errors are exposed, so that's good of course).
Since this is regtest, that's it: you don't need to sync any blockchains :)
However, you do of course have to configure and start it. Put a bitcoin.conf somewhere (if you're currently running a node it's easiest to make a separate one from your main ~/.bitcoin/bitcoin.conf one, of course. I put one in ~/bitcoin.conf with these settings:
rpcuser=bitcoinrpc rpcpassword=123456abcdef 
(you'll need those values again in a minute) and then run with
~/bitcoininstallationdibitcoind -regtest -daemon -conf=homedibitcoin.conf 
(I didn't need to add server=1 to config).
Note that coins are not available until maturity, so you need to use the generate command to mine blocks, like this:
~/bitcoininstallationdibitcoin-cli -regtest -rpcuser=bitcoinrpc -rpcpassword=123456abcdef generate 101 
Now your regtest bitcoind is running, you can move on to Tumblebit. Follow the instructions in the wiki page mentioned at the start; install .Net Core - the Microsoft instructions are easy to follow, just a couple of apt-gets and install the *.deb. Next, clone the github repo and run the Unit Tests. They passed first time for me.

Running

Next, start up the server, following the instructions in the wiki, except note you're using regtest, so:
cd NTumbleBit.TumblerServer dotnet run -regtest 
The first start up will compile but also set up RSA keys, all that is fine without changes, but you'll need to edit the config so that the RPC is pointing at your regtest instance properly. In this case it (the new config should be located in ~/.ntumblebit/RegTest/server.config) should be edited to look like:
rpc.url=http://localhost:18332/ rpc.user=bitcoinrpc rpc.password=123456abcdef #rpc.cookiefile=yourbitcoinfolde.cookie 
Then restart and check you get no RPC errors. Leave that console open, it's running a server loop.
Next, configure and start the client. Note, we are still following the wiki page, except for the regtest element, so:
cd NTumbleBit.CLI dotnet run -regtest 
You'll most likely get an RPC error again, before it shuts down. Now we need to edit the ~/.ntumblebit/RegTest/client.config file. The server can be left as the default localhost:5000, but you need the right RPC settings:
rpc.url=http://localhost:18332/ rpc.user=bitcoinrpc rpc.password=123456abcdef #rpc.cookiefile=yourbitcoinfolde.cookie tumbler.server=http://localhost:5000 outputwallet.extpubkey= outputwallet.keypath=0 
the last two fields are the important bit, which the wiki page explains in some detail for the testnet case.

Details on setting up a receiving wallet (for this test!)

What you need is a BIP32 based wallet (HD) that supports testnet, and can be run against regtest here (which in most cases will be the same thing to a wallet, as long as it can connect via RPC to sync itself). The good news is the wallet doesn't need to contain any coins. The details of the following probably won't be suitable for most (if you've never used joinmarket it's a bit convoluted), so you'll probably want to find another easy to use wallet; the wiki page should be a good starting point.
For my test I used joinmarket; all we need to do is (a) hook it up to the regtest instance, and (b) extract the BIP32 xpub key that we'll be sending coins to. So in my case the flow of coins is:
Regtest Bitcoin Core wallet (containing 'mined' coins) one branch of my BIP32 joinmarket wallet, configured to sync against the same regtest instance.
I used my new joinmarket code but it's the same for the main joinmarket code. I overwrote joinmarket.cfg to have regtest settings (use this file; only the highlighted settings matter, those are the right ones for this test), then just run python wallet-tool.py randomseed. "randomseed" there can be literally anything, it's read as a brainwallet style seed for the bip32 wallet (because testnet, we don't care about its insecurity). The tpub.. keys seen for each branch are the "xpub" public keys at that branch of the BIP32 wallet. Tumblebit is going to send to a branch below whatever xpub we need, so the simplest is to add a print statement to print the xpub key above that; e.g. add this code:
for i in range(max_mix_depth): print('master for index: ' + str( i) + ' : ' + btc.bip32_privtopub(mixing_depth_keys[i])) 
immediately above this line. Then run again python wallet-tool.py randomseed.
Extract an xpub for any one of the "mixdepths", e.g. I chose:
master for index: 3 : tpubDBFGvUbWtEPKXeWPeG7rUh98iV9GuXSDbnk6ZrZHjcmp134BPByT293HPPQ93DktrVFKpZeAU1ULSdyfmwWuUGvUVLP19JkdUq2mzNKFJPR 
and put that tpub.. key into the field pubkey in the above mentioned 'client.config':
outputwallet.extpubkey=tpubDBFGvUbWtEPKXeWPeG7rUh98iV9GuXSDbnk6ZrZHjcmp134BPByT293HPPQ93DktrVFKpZeAU1ULSdyfmwWuUGvUVLP19JkdUq2mzNKFJPR outputwallet.keypath=0 
Now save and quit.

Running the tumble

Restart the client. If RPC is right, it'll start running, waiting for blocks. Your regtest Core instance will have coins (after the previous generate 101), and those coins will be automatically tumbled, one coin at a time, into the output wallet (in my case, the branch m/0/3/0 which is labelled there 'mixdepth 3, external').
Now you can test and watch the process! Open up a third console and repeatedly generate blocks:
/path/to/bitcoin/bin/bitcoin-cli -regtest -rpcpassword=123456abcdef generate 1 
As each block is generated you'll see the state in the client terminal window updating, showing the phases. A new 'epoch' (right term?) is started every N blocks (I haven't investigated the timing yet), and several epochs run concurrently. In each one, the client can pay in 1 Bitcoin (from Core) and eventually get out 1 coin - fees to the destination (Joinmarket in my case, any other BIP32 in yours). You can replace generate 1 with generate N but I'm not sure if the code will always correctly handle you mining lots of blocks at once! After a large enough number of blocks you'll start to see 'ClientCashout phase' occurring, and txids being printed out. You can go back to your (JM or other) wallet and see the coins arriving; here's what I see after a few epochs have gone through (using my python wallet-tool.py randomseed command):
for mixdepth=2 balance=0.00000000btc mixing depth 3 m/0/3/ external addresses m/0/3/0 tpubDDMAxSHJmxzeXwDnATuvtDizqNSsQKpXGufBDnER44BzEbHy7kg485zZwHqvzprgf6yEQYg9qYYfsLYS1HMmdSuXDzQb2dJSiga9geyM62R m/0/3/0/007 mw9s7tYucxB9yr2L6HkqeDVsh3wdgMdcyK used 0.99995750 btc m/0/3/0/008 mq5TgTNgwYHv88Q4T7wL6kTb1MBSPE3mqK used 0.99995750 btc m/0/3/0/009 mhzQFY8FNvux6SKWKLKmhBB3Sw4MLaSnyu used 0.99995750 btc m/0/3/0/010 mrYECmCf5UKa1BBRMuzprVugsCi9z7oiHo new 0.00000000 btc m/0/3/0/011 mopUNXmHT8ngfBymM3c3EYMg7RLZAf6Zc6 new 0.00000000 btc m/0/3/0/012 mmaVXVfQP4UAYJPhMpQ3FhgXfHzujaxyw4 new 0.00000000 btc m/0/3/0/013 mzYD1AcUFz8SVwJM8EjVCfEM6pcYnHooBR new 0.00000000 btc m/0/3/0/014 my5unLCEMWQBkXBdeJ75VVGk1wrMrT8iDE new 0.00000000 btc m/0/3/0/015 muA76YSTtKKmD6HnVKYhkd9K9TZnPLh8pp new 0.00000000 btc internal addresses m/0/3/1 for mixdepth=3 balance=2.99987250btc 
As you can see, 3 coins have arrived.
submitted by waxwing to TumbleBit [link] [comments]

Volunteers for testnet testing of 0.2.0 version

There's a new protocol (technical description here) with a few changes. The main change is making commitments to utxos using proof of discrete log equivalence as described e.g. here and in other places. There are a few other changes, the most obvious being using multiple IRC servers simultaneously.
If you feel like helping out you could do so considerably by running a yield generator bot in the testing pit, so we can test out different scenarios (including the snooping on utxos scenario which is the main motivation for the upgrade).
If you're going to do this, keep an eye on the updates and update when the code changes. You might want to hang out in our IRC channel #joinmarket on freenode too.
Steps:
(a) Optional: start a testnet bitcoind daemon - otherwise, just use blockr.
(b) Clone the 0.2.0 branch from the joinmarket repo.
(c) Choose IRC servers. I am currently running my bots on Cgan (the current joinmarket IRC server) and irc.rizon.net and chat.freenode.net. Only the first of those 3 supports Tor (but this is testnet of course, up to you). More bots across multiple servers will help the tests. If anyone can find another Tor-supporting server that works, please let us know.
(d) If you have an existing joinmarket.cfg file in the place you've installed this, please remove it and start a bot to recreate a default version. There are some new settings in POLICY that are needed, and for now please just leave them at default. AND: don't forget to set the network to testnet !
(e) To reflect your IRC server choices above, you need to edit the MESSAGING section. For example, for 3 servers I have:
host = irc.cyberguerrilla.org, chat.freenode.net, irc.rizon.net channel = joinmarket-pit2, joinmarket-pit2, joinmarket-pit2 port = 6697, 6697, 6697 usessl = true, true, true socks5 = false, false, false socks5_host = localhost, localhost, localhost socks5_port = 9150, 9150, 9150 
(Obviously this comma separated style is clunky, there are obscure/uninteresting reasons there isn't a better way of setting it yet).
Note the channel name is joinmarket-pit2 which will translate to a channel on the actual server of #joinmarket-pit2-test (same for each IRC server of course).
(f) to run a yg-bot you'll need testnet coins of course. You can use the faucet https://kuttler.eu/en/bitcoin/btc/faucet/ (uses JM under the hood!) or http://tpfaucet.appspot.com/ , or hit us up on IRC for some. For setting up a wallet, testnet is (can be) different on joinmarket. You can just use a "brainwallet" style phrase like this: python wallet-tool.py thisismydumbpassword display, which will show all the coins stored in the bip32 wallet generated using the hash of that phrase as the master secret. No wallet file is involved this way, you can extract an address from that list and pay in to it.
(g) Run any yg-algo you like. Have it as long-running as is feasible, but note the point about "updates" above. Feel free to try out a sendpayment if you like too, although I don't mind if it's just me doing that for now.
There are 4 bots in the pit from 2 people at the moment. I'd like to get that up to 10-15 ideally for good realistic testing scenarios.
Thanks!
submitted by waxwing to joinmarket [link] [comments]

How to Brute Force a Bitcoin Wallet with Hashcat - YouTube What is a brain wallet? Your Bitcoin Brainwallet Can Be Swept Even Without Reading ... Hardware Bitcoin Brain Wallet Generator Bitcoin 101 - Fun with Brain Wallets (Making and Playing ...

Walletgenerator.net use the same security measures as the original project. All-in-one html document, no ajax, no analytics, no external calls, no CDN that can inject anything they want. And trust us, we have seen some nasty things when reviewing some wallet generator. BitEasy BlockChain Info Bitcoin Block Explorer Download. Transaction Inputs. Destination Address. BTC + – JSON Transaction. Raw Transaction. Fee. BTC. Re-sign. Converter. Source Encoding. Hex Text Base58 Base64 Rfc1751 Poetry. Source Text Convert To. Hex Text Base58 Base64 Rfc1751 Poetry Rot13. Result This work of art is public domain, source code available at GitHub. ... Search Bitcoin Testnet Private Keys created from brainwallet passphrases. Brainwallet Generator. If you have trust issues with third-party services (BTC.com, Blockchain.com, BitGo.com, Coinbase.com, etc) securing your Bitcoin, Altcoin, or other Cryptocurrency, you will want a Brainwallet – the most affordable and secure solution today. You may lose your hardware wallet, computers and devices can die, and online web ... Run bitcoin or bitcoind with the -testnet flag to use the testnet (or put testnet=1 in the bitcoin.conf file). There have been three generations of testnet. Testnet2 was just the first testnet reset with a different genesis block, because people were starting to trade testnet coins for real money. Testnet3 is the current test network. It was ...

[index] [11176] [4305] [25432] [4725] [40576] [41504] [43550] [48854] [39936] [49686]

How to Brute Force a Bitcoin Wallet with Hashcat - YouTube

Learn more at cryptoversal.com What is a Bitcoin Brain Wallet? Brainwallet involves memorizing a certain phrase (or sequence of words), then using a computer to run a 'hashing algorithm' This demo shows a prototype bitcoin brain wallet generator. Generation is done entirely offline ensuring the brain wallet pass phrase and private key are kept safely away from the reach of malware. There's no idea in Bitcoin more science fiction ready than the idea of brain wallets. To actually hold your wealth inside your head (and no where else) is so... In deze video kan je zien hoe het aanmaken van een brainwallet in de praktijk werkt. Ook kan je zien hoe je bitcoins kan sturen naar je brainwallet, en hoe j... Bitcoin NodeJS Tutorial. Use body-parser to collect POST data in a web form, convert that POST data into a private key pair using bitcore-lib.

#