Bitcoin-Qt version 0.8.4 released - Bitcoin - Open source ...

Bitcoin Wallet

Everything about bitcoin wallets.
[link]

/r/Bitcoin FAQ - Newcomers please read

Welcome to the /Bitcoin Sticky FAQ

You've probably been hearing a lot about Bitcoin recently and are wondering what's the big deal? Most of your questions should be answered by the resources below but if you have additional questions feel free to ask them in the comments.
The following videos are a good starting point for understanding how bitcoin works and a little about its long term potential:
For some more great introductory videos check out Andreas Antonopoulos's YouTube playlists, he is probably the best bitcoin educator out there today. Also have to give mention to James D'Angelo's Bitcoin 101 Blackboard series. Lots of additional video resources can be found at the videos wiki page or /BitcoinTV.
Key properties of bitcoin
Some excellent writing on Bitcoin's value proposition and future can be found here. Bitcoin statistics can be found here, here and here. Developer resources can be found here and here. Peer-reviewed research papers can be found here. The number of times Bitcoin was declared dead by the media can be found here. Scaling resources here, and of course the whitepaper that started it all.

Where can I buy bitcoins?

BuyBitcoinWorldwide.com and Howtobuybitcoin.io are helpful sites for beginners. You can buy or sell any amount of bitcoin and there are several easy methods to purchase bitcoin with cash, credit card or bank transfer. Some of the more popular resources are below, also, check out the bitcoinity exchange resources for a larger list of options for purchases.
Bank Transfer Credit / Debit card Cash
Coinbase Coinbase LocalBitcoins
Gemini Bitstamp LibertyX
GDAX Bitit Mycelium LocalTrader
Bitstamp Cex.io BitQuick
Kraken CoinMama WallofCoins
Xapo BitcoinOTC
Cex.io
itBit
Bitit
Bitsquare
Here is a listing of local ATMs. If you would like your paycheck automatically converted to bitcoin use Cashila or Bitwage.
Note: Bitcoins are valued at whatever market price people are willing to pay for them in balancing act of supply vs demand. Unlike traditional markets, bitcoin markets operate 24 hours per day, 365 days per year. Preev is a useful site that that shows how much various denominations of bitcoin are worth in different currencies. Alternatively you can just Google "1 bitcoin in (your local currency)".

Securing your bitcoins

With bitcoin you can "Be your own bank" and personally secure your bitcoins OR you can use third party companies aka "Bitcoin banks" which will hold the bitcoins for you.
Android iOs Desktop
Mycelium BreadWallet Electrum
CoPay AirBitz Armory
Another interesting use case for physical storage/transfer is the Opendime. Opendime is a small USB stick that allows you to spend Bitcoin by physically passing it along so it's anonymous and tangible like cash.
Note: For increased security, use Two Factor Authentication (2FA) everywhere it is offered, including email!
2FA requires a second confirmation code to access your account, usually from a text message or app, making it much harder for thieves to gain access. Google Authenticator and Authy are the two most popular 2FA services, download links are below. Make sure you create backups of your 2FA codes.
Google Auth Authy
Android Android
iOS iOS

Where can I spend bitcoins?

A more comprehensive list can be found at the Trade FAQ but some more commons ones are below.
Store Product
Gyft Gift cards for hundreds of retailers including Amazon, Target, Walmart, Starbucks, Whole Foods, CVS, Lowes, Home Depot, iTunes, Best Buy, Sears, Kohls, eBay, GameStop, etc.
Steam, HumbleBundle, Games Planet, itch.io, g2g and kinguin For when you need to get your game on
Microsoft Xbox games, phone apps and software
Spendabit, The Bitcoin Shop, Overstock, DuoSearch, The Bitcoin Directory and BazaarBay Retail shopping with millions of results
ShakePay Generate one time use Visa cards in seconds
NewEgg and Dell For all your electronics needs
Cashila, Bitwa.la, Coinbills, Piixpay, Bitbill.eu, Bylls, Coins.ph, Bitrefill, Pey.de, LivingRoomofSatoshi, Hyphen.to, Coinsfer, GetPaidinBitcoin, Coins.co.th, More #1, #2 Bill payment
Foodler, Menufy, Takeaway, Thuisbezorgd NL, Pizza For Coins Takeout delivered to your door!
Expedia, Cheapair, Lot, Destinia, BTCTrip, Abitsky, SkyTours, Fluege the Travel category on Gyft and 9flats For when you need to get away
BoltVM, BitHost VPS service
Cryptostorm, Mullvad, and PIA VPN services
Namecheap, Porkbun For new domain name registration
Stampnik and GetUSPS Discounted USPS Priority, Express, First-Class mail postage
Reddit Gold Premium membership which can be gifted to others
Coinmap, 99Bitcoins and AirBitz are helpful to find local businesses accepting bitcoins. A good resource for UK residents is at wheretospendbitcoins.co.uk.
There are also lots of charities which accept bitcoin donations, such as Wikipedia, Red Cross, Amnesty International, United Way, ACLU and the EFF. You can find a longer list here.

Merchant Resources

There are several benefits to accepting bitcoin as a payment option if you are a merchant;
If you are interested in accepting bitcoin as a payment method, there are several options available;

Can I mine bitcoin?

Mining bitcoins can be a fun learning experience, but be aware that you will most likely operate at a loss. Newcomers are often advised to stay away from mining unless they are only interested in it as a hobby similar to folding at home. If you want to learn more about mining you can read more here. Still have mining questions? The crew at /BitcoinMining would be happy to help you out.
If you want to contribute to the bitcoin network by hosting the blockchain and propagating transactions you can run a full node using this setup guide. Bitseed is an easy option for getting set up. You can view the global node distribution here.

Earning bitcoins

Just like any other form of money, you can also earn bitcoins by being paid to do a job.
Site Description
WorkingForBitcoins, Bitwage, XBTfreelancer, Cryptogrind, Bitlancerr, Coinality, Bitgigs, /Jobs4Bitcoins, Rein Project Freelancing
OpenBazaar, Purse.io, Bitify, /Bitmarket, 21 Market Marketplaces
Watchmybit, Streamium.io, OTika.tv, XOtika.tv NSFW, /GirlsGoneBitcoin NSFW Video Streaming
Bitasker, BitforTip, WillPayCoin Tasks
Supload.com, SatoshiBox, JoyStream, File Army File/Image Sharing
CoinAd, A-ads, Coinzilla.io Advertising
You can also earn bitcoins by participating as a market maker on JoinMarket by allowing users to perform CoinJoin transactions with your bitcoins for a small fee (requires you to already have some bitcoins)

Bitcoin Projects

The following is a short list of ongoing projects that might be worth taking a look at if you are interested in current development in the bitcoin space.
Project Description
Lightning Network, Amiko Pay, and Strawpay Payment channels for network scaling
Blockstream and Drivechain Sidechains
21, Inc. Open source library for the machine payable web
ShapeShift.io Trade between bitcoins and altcoins easily
Open Transactions, Counterparty, Omni, Open Assets, Symbiont and Chain Financial asset platforms
Hivemind and Augur Prediction markets
Mirror Smart contracts
Mediachain Decentralized media library
Tierion and Factom Records & Titles on the blockchain
BitMarkets, DropZone, Beaver and Open Bazaar Decentralized markets
Samourai and Dark Wallet - abandoned Privacy-enhancing wallets
JoinMarket CoinJoin implementation (Increase privacy and/or Earn interest on bitcoin holdings)
Coinffeine and Bitsquare Decentralized bitcoin exchanges
Keybase and Bitrated Identity & Reputation management
Bitmesh and Telehash Mesh networking
JoyStream BitTorrent client with paid seeding
MORPHiS Decentralized, encrypted internet
Storj and Sia Decentralized file storage
Streamium and Faradam Pay in real time for on-demand services
Abra Global P2P money transmitter network
bitSIM PIN secure hardware token between SIM & Phone
Identifi Decentralized address book w/ ratings system
Coinometrics Institutional-level Bitcoin Data & Research
Blocktrail and BitGo Multisig bitcoin API
Bitcore Open source Bitcoin javascript library
Insight Open source blockchain API
Leet Kill your friends and take their money ;)

Bitcoin Units

One Bitcoin is quite large (hundreds of £/$/€) so people often deal in smaller units. The most common subunits are listed below:
Unit Symbol Value Info
millibitcoin mBTC 1,000 per bitcoin SI unit for milli i.e. millilitre (mL) or millimetre (mm)
microbitcoin μBTC 1,000,000 per bitcoin SI unit for micro i.e microlitre (μL) or micrometre (μm)
bit bit 1,000,000 per bitcoin Colloquial "slang" term for microbitcoin
satoshi sat 100,000,000 per bitcoin Smallest unit in bitcoin, named after the inventor
For example, assuming an arbitrary exchange rate of $500 for one Bitcoin, a $10 meal would equal:
For more information check out the Bitcoin units wiki.
Still have questions? Feel free to ask in the comments below or stick around for our weekly Mentor Monday thread. If you decide to post a question in /Bitcoin, please use the search bar to see if it has been answered before, and remember to follow the community rules outlined on the sidebar to receive a better response. The mods are busy helping manage our community so please do not message them unless you notice problems with the functionality of the subreddit. A complete list of bitcoin related subreddits can be found here
Note: This is a community created FAQ. If you notice anything missing from the FAQ or that requires clarification you can edit it here and it will be included in the next revision pending approval.
Welcome to the Bitcoin community and the new decentralized economy!
submitted by BinaryResult to Bitcoin [link] [comments]

/r/Bitcoin FAQ - Newcomers please read

Welcome to the /Bitcoin Sticky FAQ

You've probably been hearing a lot about Bitcoin recently and are wondering what's the big deal? Most of your questions should be answered by the resources below but if you have additional questions feel free to ask them in the comments.
The following videos are a good starting point for understanding how bitcoin works and a little about its long term potential:
For lots of additional video resources check out the videos wiki page or /BitcoinTV.
Key properties of bitcoin
Some excellent writing on Bitcoin's value proposition and future can be found here. Bitcoin statistics can be found here and here. Developer resources can be found here and here. Peer-reviewed research papers can be found here. The number of times Bitcoin was declared dead by the media can be found here. Scaling resources here, and of course the whitepaper that started it all.

Where can I buy bitcoins?

BuyBitcoinWorldwide.com is a very helpful site for beginners. You can buy or sell any amount of bitcoin and there are several easy methods to purchase bitcoin with cash, credit card or bank transfer. Some of the more popular resources are below, also, check out the bitcoinity exchange resources for a larger list of options for purchases.
Bank Transfer Credit / Debit card Cash
Coinbase Coinbase LocalBitcoins
Gemini Bitstamp LibertyX
GDAX Bitit Mycelium LocalTrader
Bitstamp Cex.io BitQuick
Kraken CoinMama WallofCoins
Xapo BitcoinOTC
Cex.io
itBit
Bitit
Bitsquare
Here is a listing of local ATMs. If you would like your paycheck automatically converted to bitcoin use Cashila or Bitwage.
Note: Bitcoins are valued at whatever market price people are willing to pay for them in balancing act of supply vs demand. Unlike traditional markets, bitcoin markets operate 24 hours per day, 365 days per year. Preev is a useful site that that shows how much various denominations of bitcoin are worth in different currencies. Alternatively you can just Google "1 bitcoin in (your local currency)".

Securing your bitcoins

With bitcoin you can "Be your own bank" and personally secure your bitcoins OR you can use third party companies aka "Bitcoin banks" which will hold the bitcoins for you.
Android iOs Desktop
Mycelium BreadWallet Electrum
CoPay AirBitz Armory
Note: For increased security, use Two Factor Authentication (2FA) everywhere it is offered, including email!
2FA requires a second confirmation code to access your account, usually from a text message or app, making it much harder for thieves to gain access. Google Authenticator and Authy are the two most popular 2FA services, download links are below. Make sure you create backups of your 2FA codes.
Google Auth Authy
Android Android
iOS iOS

Where can I spend bitcoins?

A more comprehensive list can be found at the Trade FAQ but some more commons ones are below.
Store Product
Gyft Gift cards for hundreds of retailers including Amazon, Target, Walmart, Starbucks, Whole Foods, CVS, Lowes, Home Depot, iTunes, Best Buy, Sears, Kohls, eBay, GameStop, etc.
Steam, HumbleBundle, GreenmanGaming, and Coinplay.io For when you need to get your game on
Microsoft Xbox games, phone apps and software
Spendabit, The Bitcoin Shop, Overstock, Rakuten, DuoSearch, The Bitcoin Directory and BazaarBay Retail shopping with millions of results
ShakePay Generate one time use Visa cards in seconds
NewEgg, TigerDirect and Dell For all your electronics needs
Cashila, Bitwa.la, Coinbills, Piixpay, Bitbill.eu, Bylls, Coins.ph, Bitrefill, Pey.de, LivingRoomofSatoshi, Hyphen.to, Coinsfer, GetPaidinBitcoin, Coins.co.th, More #1, #2 Bill payment
Foodler, Takeaway, Thuisbezorgd NL, Pizza For Coins Takeout delivered to your door!
Expedia, Cheapair, Lot, Destinia, BTCTrip, Abitsky, SkyTours, Fluege the Travel category on Gyft and 9flats For when you need to get away
BoltVM, BitHost VPS service
Cryptostorm, Mullvad, and PIA VPN services
Namecheap For new domain name registration
Stampnik and GetUSPS Discounted USPS Priority, Express, First-Class mail postage
Reddit Gold Premium membership which can be gifted to others
Coinmap, 99Bitcoins and AirBitz are helpful to find local businesses accepting bitcoins. A good resource for UK residents is at wheretospendbitcoins.co.uk.
There are also lots of charities which accept bitcoin donations, such as Wikipedia, Red Cross, Amnesty International, United Way, ACLU and the EFF. You can find a longer list here.

Merchant Resources

There are several benefits to accepting bitcoin as a payment option if you are a merchant;
If you are interested in accepting bitcoin as a payment method, there are several options available;

Can I mine bitcoin?

Mining bitcoins can be a fun learning experience, but be aware that you will most likely operate at a loss. Newcomers are often advised to stay away from mining unless they are only interested in it as a hobby similar to folding at home. If you want to learn more about mining you can read more here. Still have mining questions? The crew at /BitcoinMining would be happy to help you out.
If you want to contribute to the bitcoin network by hosting the blockchain and propagating transactions you can run a full node using this setup guide. Bitseed is an easy option for getting set up. You can view the global node distribution here.

Earning bitcoins

Just like any other form of money, you can also earn bitcoins by being paid to do a job.
Site Description
Bitwage, XBTfreelancer, Cryptogrind, Bitlancerr, Coinality, Bitgigs, /Jobs4Bitcoins, Rein Project Freelancing
OpenBazaar, Purse.io, Bitify, /Bitmarket, 21 Market Marketplaces
Watchmybit, Streamium.io, OTika.tv, XOtika.tv NSFW, /GirlsGoneBitcoin NSFW Video Streaming
Bitasker, BitforTip, WillPayCoin Tasks
Supload.com, SatoshiBox, JoyStream, File Army File/Image Sharing
CoinAd, A-ads, Coinzilla.io Advertising
You can also earn bitcoins by participating as a market maker on JoinMarket by allowing users to perform CoinJoin transactions with your bitcoins for a small fee (requires you to already have some bitcoins)

Bitcoin Projects

The following is a short list of ongoing projects that might be worth taking a look at if you are interested in current development in the bitcoin space.
Project Description
Lightning Network, Amiko Pay, and Strawpay Payment channels for network scaling
Blockstream and Drivechain Sidechains
21, Inc. Open source library for the machine payable web
ShapeShift.io Trade between bitcoins and altcoins easily
Open Transactions, Counterparty, Omni, Open Assets, Symbiont and Chain Financial asset platforms
Hivemind and Augur Prediction markets
Mirror Smart contracts
Mediachain Decentralized media library
Tierion and Factom Records & Titles on the blockchain
BitMarkets, DropZone, Beaver and Open Bazaar Decentralized markets
Samourai and Dark Wallet - abandoned Privacy-enhancing wallets
JoinMarket CoinJoin implementation (Increase privacy and/or Earn interest on bitcoin holdings)
Coinffeine and Bitsquare Decentralized bitcoin exchanges
Keybase and Bitrated Identity & Reputation management
Bitmesh and Telehash Mesh networking
JoyStream BitTorrent client with paid seeding
MORPHiS Decentralized, encrypted internet
Storj and Sia Decentralized file storage
Streamium and Faradam Pay in real time for on-demand services
Abra Global P2P money transmitter network
bitSIM PIN secure hardware token between SIM & Phone
Identifi Decentralized address book w/ ratings system
Coinometrics Institutional-level Bitcoin Data & Research
Blocktrail and BitGo Multisig bitcoin API
Bitcore Open source Bitcoin javascript library
Insight Open source blockchain API
Leet Kill your friends and take their money ;)

Bitcoin Units

One Bitcoin is quite large (hundreds of £/$/€) so people often deal in smaller units. The most common subunits are listed below:
Unit Symbol Value Info
millibitcoin mBTC 1,000 per bitcoin SI unit for milli i.e. millilitre (mL) or millimetre (mm)
microbitcoin μBTC 1,000,000 per bitcoin SI unit for micro i.e microlitre (μL) or micrometre (μm)
bit bit 1,000,000 per bitcoin Colloquial "slang" term for microbitcoin
satoshi sat 100,000,000 per bitcoin Smallest unit in bitcoin, named after the inventor
For example, assuming an arbitrary exchange rate of $500 for one Bitcoin, a $10 meal would equal:
For more information check out the Bitcoin units wiki.
Still have questions? Feel free to ask in the comments below or stick around for our weekly Mentor Monday thread. If you decide to post a question in /Bitcoin, please use the search bar to see if it has been answered before, and remember to follow the community rules outlined on the sidebar to receive a better response. The mods are busy helping manage our community so please do not message them unless you notice problems with the functionality of the subreddit. A complete list of bitcoin related subreddits can be found here
Note: This is a community created FAQ. If you notice anything missing from the FAQ or that requires clarification you can edit it here and it will be included in the next revision pending approval.
Welcome to the Bitcoin community and the new decentralized economy!
submitted by BinaryResult to Bitcoin [link] [comments]

/r/Bitcoin FAQ - Newcomers please read

Welcome to the /Bitcoin Sticky FAQ

You've probably been hearing a lot about Bitcoin recently and are wondering what's the big deal? Most of your questions should be answered by the resources below but if you have additional questions feel free to ask them in the comments.
The following videos are a good starting point for understanding how bitcoin works and a little about its long term potential:
For lots of additional video resources check out the videos wiki page or /BitcoinTV.
Key properties of bitcoin
Some excellent writing on Bitcoin's value proposition and future can be found here. Bitcoin statistics can be found here and here. Developer resources can be found here and here. Peer-reviewed research papers can be found here. Scaling resources here, and of course the whitepaper that started it all.

Where can I buy bitcoins?

BuyBitcoinWorldwide.com is a very helpful site for beginners. You can buy or sell any amount of bitcoin and there are several easy methods to purchase bitcoin with cash, credit card or bank transfer. Some of the more popular resources are below, also, check out the bitcoinity exchange resources for a larger list of options for purchases.
Bank Transfer / Credit card Cash
Coinbase LocalBitcoins
Gemini LibertyX
GDAX Mycelium LocalTrader
Poloniex BitQuick
Bitstamp WallofCoins
Kraken BitcoinOTC
Xapo
SnapCard
Cex.io
itBit
Bitit
Bitsquare
Here is a listing of local ATMs. If you would like your paycheck automatically converted to bitcoin use Cashila or Bitwage.
Note: Bitcoins are valued at whatever market price people are willing to pay for them in balancing act of supply vs demand. Unlike traditional markets, bitcoin markets operate 24 hours per day, 365 days per year. Preev is a useful site that that shows how much various denominations of bitcoin are worth in different currencies. Alternatively you can just Google "1 bitcoin in (your local currency)".

Securing your bitcoins

With bitcoin you can "Be your own bank" and personally secure your bitcoins OR you can use third party companies aka "Bitcoin banks" which will hold the bitcoins for you.
Android iOs Desktop
Mycelium BreadWallet Electrum
CoPay AirBitz Armory
Note: For increased security, use Two Factor Authentication (2FA) everywhere it is offered, including email!
2FA requires a second confirmation code to access your account, usually from a text message or app, making it much harder for thieves to gain access. Google Authenticator and Authy are the two most popular 2FA services, download links are below. Make sure you create backups of your 2FA codes.
Google Auth Authy
Android Android
iOS iOS

Where can I spend bitcoins?

A more comprehensive list can be found at the Trade FAQ but some more commons ones are below.
Store Product
Gyft Gift cards for hundreds of retailers including Amazon, Target, Walmart, Starbucks, Whole Foods, CVS, Lowes, Home Depot, iTunes, Best Buy, Sears, Kohls, eBay, GameStop, etc.
Steam, HumbleBundle, GreenmanGaming, and Coinplay.io For when you need to get your game on
Microsoft Xbox games, phone apps and software
Spendabit, The Bitcoin Shop, Overstock, Rakuten, DuoSearch, The Bitcoin Directory and BazaarBay Retail shopping with millions of results
ShakePay Generate one time use Visa cards in seconds
NewEgg, TigerDirect and Dell For all your electronics needs
Cashila, Bitwa.la, Coinbills, Piixpay, Bitbill.eu, Bylls, Coins.ph, Bitrefill, Pey.de, LivingRoomofSatoshi, Wagepoint, Hyphen.to, Coinsfer, GetPaidinBitcoin, Coins.co.th, More Bill payment
Foodler, Takeaway, Thuisbezorgd NL, Pizza For Coins Takeout delivered to your door!
Expedia, Cheapair, Lot, Destinia, BTCTrip, Abitsky, SkyTours, Fluege the Travel category on Gyft and 9flats For when you need to get away
BoltVM, BitHost VPS service
Cryptostorm, Mullvad, and PIA VPN services
Namecheap For new domain name registration
Stampnik and GetUSPS Discounted USPS Priority, Express, First-Class mail postage
Reddit Gold Premium membership which can be gifted to others
Coinmap and AirBitz are helpful to find local businesses accepting bitcoins. A good resource for UK residents is at wheretospendbitcoins.co.uk.
There are also lots of charities which accept bitcoin donations, such as Wikipedia, Red Cross, Amnesty International, United Way, ACLU and the EFF. You can find a longer list here.

Merchant Resources

There are several benefits to accepting bitcoin as a payment option if you are a merchant;
If you are interested in accepting bitcoin as a payment method, there are several options available;

Can I mine bitcoin?

Mining bitcoins can be a fun learning experience, but be aware that you will most likely operate at a loss. Newcomers are often advised to stay away from mining unless they are only interested in it as a hobby similar to folding at home. If you want to learn more about mining you can read more here. Still have mining questions? The crew at /BitcoinMining would be happy to help you out.
If you want to contribute to the bitcoin network by hosting the blockchain and propagating transactions you can run a full node using this setup guide. You can view the global node distribution here.

Earning bitcoins

Just like any other form of money, you can also earn bitcoins by being paid to do a job.
Site Description
Bitwage, XBTfreelancer, Cryptogrind, Bitlancerr, Coinality, Bitgigs, /Jobs4Bitcoins, Rein Project Freelancing
OpenBazaar, Purse.io, Bitify, /Bitmarket, 21 Market Marketplaces
Watchmybit, Streamium.io, OTika.tv, XOtika.tv NSFW, /GirlsGoneBitcoin NSFW Video Streaming
Bitasker, BitforTip, WillPayCoin Tasks
Supload.com, SatoshiBox, JoyStream, File Army File/Image Sharing
CoinAd, A-ads, Coinzilla.io Advertising
You can also earn bitcoins by participating as a market maker on JoinMarket by allowing users to perform CoinJoin transactions with your bitcoins for a small fee (requires you to already have some bitcoins)

Bitcoin Projects

The following is a short list of ongoing projects that might be worth taking a look at if you are interested in current development in the bitcoin space.
Project Description
Lightning Network, Amiko Pay, and Strawpay Payment channels for network scaling
Blockstream and Drivechain Sidechains
21, Inc. Open source library for the machine payable web
ShapeShift.io Trade between bitcoins and altcoins easily
Open Transactions, Counterparty, Omni, Open Assets, Symbiont and Chain Financial asset platforms
Hivemind and Augur Prediction markets
Mirror Smart contracts
Mediachain Decentralized media library
Tierion and Factom Records & Titles on the blockchain
BitMarkets, DropZone, Beaver and Open Bazaar Decentralized markets
Samourai and Dark Wallet - abandoned Privacy-enhancing wallets
JoinMarket CoinJoin implementation (Increase privacy and/or Earn interest on bitcoin holdings)
Coinffeine and Bitsquare Decentralized bitcoin exchanges
Keybase and Bitrated Identity & Reputation management
Bitmesh and Telehash Mesh networking
JoyStream BitTorrent client with paid seeding
MORPHiS Decentralized, encrypted internet
Storj and Sia Decentralized file storage
Streamium and Faradam Pay in real time for on-demand services
Abra Global P2P money transmitter network
bitSIM PIN secure hardware token between SIM & Phone
Identifi Decentralized address book w/ ratings system
Coinometrics Institutional-level Bitcoin Data & Research
Blocktrail and BitGo Multisig bitcoin API
Bitcore Open source Bitcoin javascript library
Insight Open source blockchain API
Leet Kill your friends and take their money ;)

Bitcoin Units

One Bitcoin is quite large (hundreds of £/$/€) so people often deal in smaller units. The most common subunits are listed below:
Unit Symbol Value Info
millibitcoin mBTC 1,000 per bitcoin SI unit for milli i.e. millilitre (mL) or millimetre (mm)
microbitcoin μBTC 1,000,000 per bitcoin SI unit for micro i.e microlitre (μL) or micrometre (μm)
bit bit 1,000,000 per bitcoin Colloquial "slang" term for microbitcoin
satoshi sat 100,000,000 per bitcoin Smallest unit in bitcoin, named after the inventor
For example, assuming an arbitrary exchange rate of $500 for one Bitcoin, a $10 meal would equal:
For more information check out the Bitcoin units wiki.
Still have questions? Feel free to ask in the comments below or stick around for our weekly Mentor Monday thread. If you decide to post a question in /Bitcoin, please use the search bar to see if it has been answered before, and remember to follow the community rules outlined on the sidebar to receive a better response. The mods are busy helping manage our community so please do not message them unless you notice problems with the functionality of the subreddit. A complete list of bitcoin related subreddits can be found here
Note: This is a community created FAQ. If you notice anything missing from the FAQ or that requires clarification you can edit it here and it will be included in the next revision pending approval.
Welcome to the Bitcoin community and the new decentralized economy!
submitted by BinaryResult to Bitcoin [link] [comments]

What wallets, today, support fee bumping (i.e., replace-by-fee / RBF)?

There are nearly two dozen wallets listed here, ...
but not many of them have support for RBF such that a user can bump the fee.
Replace-by-fee (RBF) is a method to permit the fee paid to be bumped up to cause an unconfirmed transaction to get included in a block sooner.
With an increasing number of transactions waiting, fee bumping will become a bigger deal, once again.
Those with RBF support that I know of:
Custodial/online wallets with RBF:
To use RBF, the original transaction needs to be constructed properly so that a replacement transaction gets relayed, and today only about 7% % of them 9% of them have that.
What other wallets do today support fee bumping through RBF?
[Note: Periodically this list is updated, with most additions learned from the RBF Support list by BItcoinOps. Feel free to send to me additions / corrections via direct message here on Reddit or via e-mail.]
submitted by cointastical to Bitcoin [link] [comments]

A Guide to Keeping Keys Offline Using Armory +rPi

Hi Redditors.
I am going to post in this thread my experiences in getting my Desktop (Debian) machine running Armory in watch-only mode, and coupling that with an offline Raspberry Pi (which holds my private keys) for signing the transactions previously made in watch-only mode.
I actually compiled Armory from source directly on my Pi. This guide is probably more for the bitcoin 'power user', as to run Armory online, and broadcast the signed transactions, you need to have a bitcoin full node running (bitcoind).
Basic requirements:
Aimed-for Setup:
I'll post the guide in digestible sections...

Section 1

I should begin by saying I installed source code from git, and got Armory to build the DB on my desktop initially, WITHOUT creating a wallet.. (This allowed me to debug what was going on a little!)
Go to Bitcoin.org, select Armory..
It leads to a Download from Git:
https://github.com/goatpig/BitcoinArmory/releases
Followed the procedure for Linux Debian verify code, compile, install, all straight-forward..
Began by running bitcoind, and telling Armory where to find it. This is the command I used, obviously it was all on one line and didn't include the arrows/explanations!:
python ArmoryQt.py \ --satoshi-datadir=/BlockChain/chain20180414/blocks \ # <-----(where my bitcoind blocks live) --datadir=/ArmoryDataDi \ # <-----(this is instead of ~/.armory) --dbdir=/ArmoryDataDidatabases # <-------(again, non std. place used for Armory's databases.. my choice.) 
So, on the Desktop, after the initial "build databases"
(NB the initial "Build Databases" took about 1.5h and my two CPUs were maxed the whole time, Temps up to 62C. Not ideal; Im not in a rush!)
I then wanted to import a watch-only wallet.
Before I did this, I took a full backup of the Armory data dir:
/ArmoryDataDi
(or ~/.armory in a default installation).
I'd hate to have to make Armory do another full sync with the bitcoind node!

Section 2

Next step: offline wallet (with Private Keys) is on a Raspberry Pi.
I downloaded the source and managed to compile it on the pi itself! :)
Though there were some gymnastics needed to setup the Pi.
My Pi is running Raspbian based on Wheezy.. quite old!
I did the following on the Pi:
apt-get update apt-get upgrade (<---took about an hour!) apt-get install autotools-dev apt-get install autoconf 
Then I followed the instructions exactly as I had done for my Debian Desktop machine, EXCEPT:
I had to increase the Pi's swap space. I upped it from 100Mb to 400Mb.
The compilation took 7 hours, and my poor SD card got a thrashing.
But after compilation, I put the Swap back to 100Mb and Armory runs ok with about 150Mb of memory (no swap needed).
Swap increase on the Pi:
use your favourite editor, and open the file /etc/dphys-swapfile
add/change the following line:
CONF_SWAPSIZE=400 
Then, REBOOT the Pi:
sudo shutdown -h -P now 
Once the compilation was done on the Pi, put the swap back, rebooted and created an Armory wallet.
I added manual entropy and upped the encryption 'time' from 250ms to 2500ms - since the Pi is slow, but I'll be happy to wait for more iterations in the Key Derivation Function.
Once the wallet was created, it obviously prompts you for backup.
I want to add a private key of my own (i.e. import), so don't do the backup until this is over.
I import my Private Key, and Armory checks that this corresponds to a Public Key, which I check is correct.
This is the point now where the Pi storage medium (e.g an SD card) has to be properly destroyed if you ever get rid of it.
I had thought that now would be a good time to decide if your new wallet will generate Segwit receiving addresses, and also addresses used to receive 'change' after a transaction..
But it seems Armory WON'T let you switch to P2SH-P2WPKH unless your Armory is connected to a node offering "WITNESS" service.
Obviously, my Pi is offline and will never connect to a node, so the following will not work on the Pi:
NB: I thought about setting this on the Debian "watch-only" wallet, but that would surely mean doom, as the Pi would not know about those addresses and backups might not keep them.. who knows...
So, end result:- no segwit for me just yet in my offline funds.

--If anyone can offer a solution to this, I'd be very grateful--

Section 3

Ok, now this is a good point to back up your wallet on the Pi. It has your imported keys. I choose a Digital Backup - and put it on a USB key, which will never touch the internet and will be stored off-site. I also chose to encrypt it, because I'm good with passwords..
NB: The Armory paper backup will NOT back up your imported private keys, so keep those somewhere if you're not sweeping them. It would be prudent to have an Armory paper backup anyway, but remember it will likely NOT help you with that imported key.
Now for the watch-only copy of the wallet. I want to get the "watch-only" version onto my Desktop Debian machine.
On the Pi, I created (exported to a USB key) a "watching-only" copy of my wallet.
I would use the RECOMMENDED approach, export the "Entire Wallet File".
As you will see below, I initially exported only the ROOT data, which will NOT capture the watching-only part of the Private Key I entered manually above (i.e. the public Key!).
Now, back on the Debian Desktop machine...
I stopped all my crontab jobs; just give Armory uninterrupted CPU/memory/disk...
I also stopped bitcoind and made a backup prior to any watch-only wallet being imported.
I already made a backup of Armory on my Desktop, before any wallet import.
(this was needed, as I made a mistake.. see below)
So on the Debian Desktop machine, I begin by firing up bitcoind.
my command for this is:
./bitcoind -daemon -datadir=/BlockChain/chain20180414 -dbcache=400 -maxmempool=400 

Section 4

I try running Armory like this:
(I'm actually starting Armory from a script - StartArm.sh)
Inside the script StartArm.sh, it has the line:
python ArmoryQt.py --ram-usage=4 --satoshi-datadir=/BlockChain/chain20180414/blocks --datadir=/ArmoryDataDi --dbdir=/ArmoryDataDidatabases 
I know from bitter experience that doing a scan over the blockchain for a new wallet takes a looong time and a lot of CPU, and I'd like it to play nicely; not gobble all the memory and swap and run my 2xCPUs both at 100% for four hours...
So... I aim to run with --ram-usage=X and --thread-count=X
(For me in the end, X=1 but I began with X=4)
I began with --ram-usage=4 (<--- = 4x128Mb)
The result is below...
TypeError: cannot concatenate 'str' and 'int' objects 
It didn't recognise the ram-usage and carried on, crippling my Debian desktop PC.
This is where it gets dangerous; Armory can gobble so much memory and CPU that the windowing environment can cease up, and it can take over 30 minutes just to exit nicely from bitcoind and ArmoryDB.
So, I ssh to the machine from another computer, and keep an eye on it with the command
"free -h" 
I'd also be able to do a "sudo reboot now" if needed from here.

Section 5

So, trying to get my --ram-usage command recognised, I tried this line (added quotes):
python ArmoryQt.py --ram-usage="4" --satoshi-datadir=/BlockChain/chain20180414/blocks --datadir=/ArmoryDataDi --dbdir=/ArmoryDataDidatabases 
But no, same error...
Loading Armory Engine: Armory Version: 0.96.4 Armory Build: None PyBtcWallet Version: 1.35 Detected Operating system: Linux OS Variant : ('debian', '9.4', '') User home-directory : /home/ Satoshi BTC directory : /BlockChain/chain20180414 Armory home dir : /ArmoryDataDi ArmoryDB directory : /ArmoryDataDidatabases Armory settings file : /ArmoryDataDiArmorySettings.txt Armory log file : /ArmoryDataDiarmorylog.txt Do wallet checking : True (ERROR) ArmoryUtils.py:3723 - Unsupported language specified. Defaulting to English (en) (ERROR) ArmoryQt.py:1833 - Failed to start Armory database: cannot concatenate 'str' and 'int' objects Traceback (most recent call last): File "ArmoryQt.py", line 1808, in startArmoryDBIfNecessary TheSDM.spawnDB(str(ARMORY_HOME_DIR), TheBDM.armoryDBDir) File "/BitcoinArmory/SDM.py", line 387, in spawnDB pargs.append('--ram-usage=' + ARMORY_RAM_USAGE) TypeError: cannot concatenate 'str' and 'int' objects 

Section 6

So, I edit the Armory python file SDM.py:
if ARMORY_RAM_USAGE != -1: pargs.append('--ram-usage=4') #COMMENTED THIS, SO I CAN HARDCODE =4 # ' + ARMORY_RAM_USAGE) 
Running it, I now have acknowledgement of the --ram-usage=4:
(WARNING) SDM.py:400 - Spawning DB with command: /BitcoinArmory/ArmoryDB --db-type="DB_FULL" --cookie --satoshi-datadir="/BlockChain/chain20180414/blocks" --datadir="/ArmoryDataDi" --dbdir="/ArmoryDataDidatabases" --ram-usage=4 
Also, even with ram-usage=4, it used too much memory, so I told it to quit.
It took over 30 minutes to stop semi-nicely. The last thing it reported was:
ERROR - 00:25:21: (StringSockets.cpp:351) FcgiSocket::writeAndRead FcgiError: unexpected fcgi header version 
But that didn't seem to matter or corrupt the Armory Database, so I think it's ok.
So, I get brave and change SDM.py as below, and I make sure my script has a command line for --ram-usage="ABCDE" and --thread-count="FGHIJ"; the logic being that these strings "ABCDE" will pass the IF criteria below, and my hardcoded values will be used...
if ARMORY_RAM_USAGE != -1: pargs.append('--ram-usage=1') #COMMENTED THIS, SO I CAN HARDCODE =1 # ' + ARMORY_RAM_USAGE) if ARMORY_THREAD_COUNT != -1 pargs.append('--thread-count=1') #COMMENTED THIS, SO I CAN HARDCODE =1 #' + ARMORY_THREAD_COUNT) 
So, as usual, I use my script and start this with: ./StartArm.sh
(which uses command line:)
python ArmoryQt.py --ram-usage="ABCDE" --thread-count="FGHIJ" --satoshi-datadir=/BlockChain/chain20180414/blocks --datadir=/ArmoryDataDi --dbdir=/ArmoryDataDidatabases 
(this forces it to use my hard-coded values in SDM.py...)
So, this is the command which it reports that it starts with:
(WARNING) SDM.py:400 - Spawning DB with command: /BitcoinArmory/ArmoryDB --db-type="DB_FULL" --cookie --satoshi-datadir="/BlockChain/chain20180414/blocks" --datadir="/ArmoryDataDi" --dbdir="/ArmoryDataDidatabases" --ram-usage=1 --thread-count=1 
Again, this is where it gets dangerous; Armory can gobble so much memory and CPU that the windowing environment can cease up. So I ssh to the machine and keep an eye on it with:
"free -h" 

Section 7

So, on the Debian Desktop PC, I inserted the USB stick with the watch-only wallet I exported from the Pi.
Start Armory...
Import "Entire Wallet File" watch-only copy.
Wait 4 hours..
YAY!!!
After running Armory for about 30m, the memory usage dropped by 400m... wierd...
It took ~2 hours to get 40% completion.
After 3.5 hours it's almost there...
The memory went up to about 1.7Gb in use and 900Mb of Swap, but the machine remained fairly responsive throughout, apart from a few (10?) periods at the start, where it appeared to freeze for 10-30s at a time.
(That's where my ssh session came in handy - I could check the machine was still ok with a "free -h" command)
Now, I can:
Create an unsigned transaction on my Desktop,
Save the tx to USB stick,
Move to the Pi,
Sign the tx,
Move back to the Desktop,
Broadcast the signed tx.

Section 8

My initial Mistake:
This caused me to have to roll-back my Armory database, using the backup. so you should try to avoid doing this..
On the Pi, I exported only the ROOT data, which will NOT capture the watching-only part of the Private Key
It is RECOMMENDED to use the Digital Export of Entire Wallet File from the Pi when making a watch-only copy. If you just export just the "ROOT data", not the "Entire Wallet File", you'll have problems if you used an imported Private Key in the offline wallet, like I did.
Using the ROOT data text import, after it finished... my balance was zero. So,. I tried a Help->Rescan Balance (Restart Armory, takes 1minute to get back up and running) No Luck. Still zero balance.
So, I try Rescan Databases.. This will take longer. Nah.. no luck.
So, I tried again, thinking it might be to do with the fact that I imported the text "root data" stuff, instead of following the (Recommended) export of watching-wallet file.
So, I used my Armory backup, and wound back the ArmoryDataDi to the point before the install of the (zero balance) wallet. (you should not need to do this, as you will hopefully use the RECOMMENDED approach of exporting the "Entire Wallet File"!)
submitted by fartinator to Bitcoin [link] [comments]

[uncensored-r/Bitcoin] /r/Bitcoin FAQ - Newcomers please read

The following post by BinaryResult is being replicated because some comments within the post(but not the post itself) have been silently removed.
The original post can be found(in censored form) at this link:
reddit: /Bitcoin/comments/6jlop4
The original post's content was as follows:

Welcome to the /Bitcoin Sticky FAQ

You've probably been hearing a lot about Bitcoin recently and are wondering what's the big deal? Most of your questions should be answered by the resources below but if you have additional questions feel free to ask them in the comments.
The following videos are a good starting point for understanding how bitcoin works and a little about its long term potential:
For lots of additional video resources check out the videos wiki page or /BitcoinTV.
Key properties of bitcoin
  • Limited Supply - There will only ever be 21,000,000 bitcoins created and they are issued in a predictable fashion, you can view the inflation schedule here. Once they are all issued Bitcoin will be truly deflationary.
  • Open source - Bitcoin code is fully auditable. You can read the source code yourself here.
  • Accountable - The public ledger is transparent, all transactions are seen by everyone.
  • Decentralized - Bitcoin is globally distributed across thousands of nodes with no single point of failure and as such can't be shut down similar to how Bittorrent works.
  • Censorship resistant - No one can prevent you from interacting with the bitcoin network and no one can censor, alter or block transactions that they disagree with, see Operation Chokepoint.
  • Push system - There are no chargebacks in bitcoin because only the person who owns the address where the bitcoins reside has the authority to move them.
  • Low fee - Transactions fees can vary between a few cents and a few dollars depending on network demand and how much priority you wish to assign to the transaction. Most wallets calculate the fee automatically but you can view current fees here.
  • Borderless - No country can stop it from going in/out, even in areas currently unserved by traditional banking as the ledger is globally distributed.
  • Trustless - Bitcoin solved the Byzantine's Generals Problem which means nobody needs to trust anybody for it to work.
  • Pseudonymous - No need to expose personal information when purchasing with cash or transacting.
  • Secure - Encrypted cryptographically and can’t be brute forced or confiscated with proper key management such as hardware wallets.
  • Programmable - Individual units of bitcoin can be programmed to transfer based on certain criteria being met
  • Nearly instant - From a few seconds to a few minutes depending on need for confirmations. After a few confirmations transactions are irreversible.
  • Peer-to-peer - No intermediaries with a cut, no need for trusted third parties.
  • Portable - Bitcoins are digital so they are easier to move than cash or gold. They can even be transported by simply remembering a string of words for wallet recovery.
  • Scalable - Each bitcoin is divisible down to 8 decimals allowing it to grow in value while still accommodating micro-transactions.
  • Designed Money - Bitcoin was created to fit all the fundamental properties of money better than gold or fiat
Some excellent writing on Bitcoin's value proposition and future can be found here. Bitcoin statistics can be found here, here and here. Developer resources can be found here and here. Peer-reviewed research papers can be found here. The number of times Bitcoin was declared dead by the media can be found here. Scaling resources here, and of course the whitepaper that started it all.

Where can I buy bitcoins?

BuyBitcoinWorldwide.com and Howtobuybitcoin.io are helpful sites for beginners. You can buy or sell any amount of bitcoin and there are several easy methods to purchase bitcoin with cash, credit card or bank transfer. Some of the more popular resources are below, also, check out the bitcoinity exchange resources for a larger list of options for purchases.
Bank Transfer Credit / Debit card Cash
Coinbase Coinbase LocalBitcoins
Gemini Bitstamp LibertyX
GDAX Bitit Mycelium LocalTrader
Bitstamp Cex.io BitQuick
Kraken CoinMama WallofCoins
Xapo BitcoinOTC
Cex.io
itBit
Bitit
Bitsquare
Here is a listing of local ATMs. If you would like your paycheck automatically converted to bitcoin use Cashila or Bitwage.
Note: Bitcoins are valued at whatever market price people are willing to pay for them in balancing act of supply vs demand. Unlike traditional markets, bitcoin markets operate 24 hours per day, 365 days per year. Preev is a useful site that that shows how much various denominations of bitcoin are worth in different currencies. Alternatively you can just Google "1 bitcoin in (your local currency)".

Securing your bitcoins

With bitcoin you can "Be your own bank" and personally secure your bitcoins OR you can use third party companies aka "Bitcoin banks" which will hold the bitcoins for you.
  • If you prefer to "Be your own bank" and have direct control over your coins without having to use a trusted third party, there are many software wallet options here. If you want easy and secure storage without having to learn computer security best practices, then a hardware wallet such as the Trezor or Ledger is recommended. A more advanced option is to secure them yourself using paper wallets generated offline. Some popular mobile and desktop options are listed below and most are cross platform.
Android iOs Desktop
Mycelium BreadWallet Electrum
CoPay AirBitz Armory
  • If you prefer to let third party "Bitcoin banks" manage your coins, try Coinbase or Xapo but be aware you may not be in control of your private keys in which case you would have to ask permission to access your funds and be exposed to third party risk.
Another interesting use case for physical storage/transfer is the Opendime. Opendime is a small USB stick that allows you to spend Bitcoin by physically passing it along so it's anonymous and tangible like cash.
Note: For increased security, use Two Factor Authentication (2FA) everywhere it is offered, including email!
2FA requires a second confirmation code to access your account, usually from a text message or app, making it much harder for thieves to gain access. Google Authenticator and Authy are the two most popular 2FA services, download links are below. Make sure you create backups of your 2FA codes.
Google Auth Authy
Android Android
iOS iOS

Where can I spend bitcoins?

A more comprehensive list can be found at the Trade FAQ but some more commons ones are below.
Store Product
Gyft Gift cards for hundreds of retailers including Amazon, Target, Walmart, Starbucks, Whole Foods, CVS, Lowes, Home Depot, iTunes, Best Buy, Sears, Kohls, eBay, GameStop, etc.
Steam, HumbleBundle, Games Planet, itch.io, g2g and kinguin For when you need to get your game on
Microsoft Xbox games, phone apps and software
Spendabit, The Bitcoin Shop, Overstock, Rakuten, DuoSearch, The Bitcoin Directory and BazaarBay Retail shopping with millions of results
ShakePay Generate one time use Visa cards in seconds
NewEgg, TigerDirect and Dell For all your electronics needs
Cashila, Bitwa.la, Coinbills, Piixpay, Bitbill.eu, Bylls, Coins.ph, Bitrefill, Pey.de, LivingRoomofSatoshi, Hyphen.to, Coinsfer, GetPaidinBitcoin, Coins.co.th, More #1, #2 Bill payment
Foodler, Menufy, Takeaway, Thuisbezorgd NL, Pizza For Coins Takeout delivered to your door!
Expedia, Cheapair, Lot, Destinia, BTCTrip, Abitsky, SkyTours, Fluege the Travel category on Gyft and 9flats For when you need to get away
BoltVM, BitHost VPS service
Cryptostorm, Mullvad, and PIA VPN services
Namecheap For new domain name registration
Stampnik and GetUSPS Discounted USPS Priority, Express, First-Class mail postage
Reddit Gold Premium membership which can be gifted to others
Coinmap, 99Bitcoins and AirBitz are helpful to find local businesses accepting bitcoins. A good resource for UK residents is at wheretospendbitcoins.co.uk.
There are also lots of charities which accept bitcoin donations, such as Wikipedia, Red Cross, Amnesty International, United Way, ACLU and the EFF. You can find a longer list here.

Merchant Resources

There are several benefits to accepting bitcoin as a payment option if you are a merchant;
  • 1-3% savings over credit cards or PayPal.
  • No chargebacks (final settlement in 10 minutes as opposed to 3+ months).
  • Accept business from a global customer base.
  • Increased privacy.
  • Convert 100% of the sale to the currency of your choice for deposit to your account, or choose to keep a percentage of the sale in bitcoin if you wish to begin accumulating it.
If you are interested in accepting bitcoin as a payment method, there are several options available;

Can I mine bitcoin?

Mining bitcoins can be a fun learning experience, but be aware that you will most likely operate at a loss. Newcomers are often advised to stay away from mining unless they are only interested in it as a hobby similar to folding at home. If you want to learn more about mining you can read more here. Still have mining questions? The crew at /BitcoinMining would be happy to help you out.
If you want to contribute to the bitcoin network by hosting the blockchain and propagating transactions you can run a full node using this setup guide. Bitseed is an easy option for getting set up. You can view the global node distribution here.

Earning bitcoins

Just like any other form of money, you can also earn bitcoins by being paid to do a job.
Site Description
WorkingForBitcoins, Bitwage, XBTfreelancer, Cryptogrind, Bitlancerr, Coinality, Bitgigs, /Jobs4Bitcoins, Rein Project Freelancing
OpenBazaar, Purse.io, Bitify, /Bitmarket, 21 Market Marketplaces
Watchmybit, Streamium.io, OTika.tv, XOtika.tv NSFW, /GirlsGoneBitcoin NSFW Video Streaming
Bitasker, BitforTip, WillPayCoin Tasks
Supload.com, SatoshiBox, JoyStream, File Army File/Image Sharing
CoinAd, A-ads, Coinzilla.io Advertising
You can also earn bitcoins by participating as a market maker on JoinMarket by allowing users to perform CoinJoin transactions with your bitcoins for a small fee (requires you to already have some bitcoins)

Bitcoin Projects

The following is a short list of ongoing projects that might be worth taking a look at if you are interested in current development in the bitcoin space.
Project Description
Lightning Network, Amiko Pay, and Strawpay Payment channels for network scaling
Blockstream and Drivechain Sidechains
21, Inc. Open source library for the machine payable web
ShapeShift.io Trade between bitcoins and altcoins easily
Open Transactions, Counterparty, Omni, Open Assets, Symbiont and Chain Financial asset platforms
Hivemind and Augur Prediction markets
Mirror Smart contracts
Mediachain Decentralized media library
Tierion and Factom Records & Titles on the blockchain
BitMarkets, DropZone, Beaver and Open Bazaar Decentralized markets
Samourai and Dark Wallet - abandoned Privacy-enhancing wallets
JoinMarket CoinJoin implementation (Increase privacy and/or Earn interest on bitcoin holdings)
Coinffeine and Bitsquare Decentralized bitcoin exchanges
Keybase and Bitrated Identity & Reputation management
Bitmesh and Telehash Mesh networking
JoyStream BitTorrent client with paid seeding
MORPHiS Decentralized, encrypted internet
Storj and Sia Decentralized file storage
Streamium and Faradam Pay in real time for on-demand services
Abra Global P2P money transmitter network
bitSIM PIN secure hardware token between SIM & Phone
Identifi Decentralized address book w/ ratings system
Coinometrics Institutional-level Bitcoin Data & Research
Blocktrail and BitGo Multisig bitcoin API
Bitcore Open source Bitcoin javascript library
Insight Open source blockchain API
Leet Kill your friends and take their money ;)

Bitcoin Units

One Bitcoin is quite large (hundreds of £/$/€) so people often deal in smaller units. The most common subunits are listed below:
Unit Symbol Value Info
millibitcoin mBTC 1,000 per bitcoin SI unit for milli i.e. millilitre (mL) or millimetre (mm)
microbitcoin ?BTC 1,000,000 per bitcoin SI unit for micro i.e microlitre (?L) or micrometre (?m)
bit bit 1,000,000 per bitcoin Colloquial "slang" term for microbitcoin
satoshi sat 100,000,000 per bitcoin Smallest unit in bitcoin, named after the inventor
For example, assuming an arbitrary exchange rate of $500 for one Bitcoin, a $10 meal would equal:
  • 0.02 BTC
  • 20 mBTC
  • 20,000 bits
For more information check out the Bitcoin units wiki.
Still have questions? Feel free to ask in the comments below or stick around for our weekly Mentor Monday thread. If you decide to post a question in /Bitcoin, please use the search bar to see if it has been answered before, and remember to follow the community rules outlined on the sidebar to receive a better response. The mods are busy helping manage our community so please do not message them unless you notice problems with the functionality of the subreddit. A complete list of bitcoin related subreddits can be found here
Note: This is a community created FAQ. If you notice anything missing from the FAQ or that requires clarification you can edit it here and it will be included in the next revision pending approval.
Welcome to the Bitcoin community and the new decentralized economy!
submitted by censorship_notifier to noncensored_bitcoin [link] [comments]

PSA: Clearing up some misconceptions about full nodes

It's time to clear up some misconceptions floating around about full nodes.
Myth: There are only about 5500 full nodes worldwide
This number comes from this site and it measured by trying to probe every nodes on their open ports.
Problem is, not all nodes actually have open ports that can be probed. Either because they are behind firewalls or because their users have configured them to not listen for connections.
Nobody knows how many full nodes there are, since many people don't know how to forward ports behind a firewall, and bandwidth can be costly, its quite likely that the number of nodes with closed ports is at least another several thousand.
Nodes with open ports are able to upload blocks to new full nodes. In all other ways they are the same as nodes with closed ports. But because open-port-nodes can be measured and closed-port-nodes cannot, some members of the bitcoin community have been mistaken into believing that open-port-nodes are that matters.
Myth: This number of nodes matters and/or is too low.
Nodes with open ports are useful to the bitcoin network because they help bootstrap new nodes by uploading historical blocks, they are a measure of bandwidth capacity. Right now there is no shortage of bandwidth capacity, and if there was it could be easily added by renting cloud servers.
The problem is not bandwidth or connections, but trust, security and privacy. Let me explain.
Full nodes are able to check that all of bitcoin's rules are being followed. Rules like following the inflation schedule, no double spending, no spending of coins that don't belong to the holder of the private key and all the other rules required to make bitcoin work (e.g. difficulty)
Full nodes are what make bitcoin trustless. No longer do you have to trust a financial institution like a bank or paypal, you can simply run software on your own computer. To put simply, the only node that matters is the one you use
Myth: There is no incentive to run nodes, the network relies on altruism
It is very much in the individual bitcoin's users rational self interest to run a full node and use it as their wallet.
Using a full node as your wallet is the only way to know for sure that none of bitcoin's rules have been broken. Rules like no coins were spent not belonging to the owner, that no coins were spent twice, that no inflation happens outside of the schedule and that all the rules needed to make the system work are followed (e.g. difficulty.) All other kinds of wallet involve trusting a third party server.
All these checks done by full nodes also increase the security. There are many attacks possible against lightweight wallets that do not affect full node wallets.
This is not just mindless paranoia, there have been real world examples where full node users were unaffected by turmoil in the rest of the bitcoin ecosystem. The 4th July 2015 accidental chain fork effected many kinds of wallets. Here is the wiki page on this event https://en.bitcoin.it/wiki/July_2015_chain_forks#Wallet_Advice
Notice how updated node software was completely unaffected by the fork. All other wallets required either extra confirmations or checking that the third-party institution was running the correct version.
Full nodes wallets are also currently the most private way to use Bitcoin, with nobody else learning which bitcoin addresses belong to you. All other lightweight wallets leak information about which addresses are yours because they must query third-party servers. The Electrum servers will know which addresses belong to you and can link them together. Despite bloom filtering, lightweight wallets based on BitcoinJ do not provide much privacy against nodes who connected directly to the wallet or wiretappers.
For many use cases, such privacy may not be required. But an important reason to run a full node and use it as a wallet is to get the full privacy benefits.
Myth: I can just set up a node on a cloud server instance and leave it
To get the benefits of running a full node, you must use it as your wallet, preferably on hardware you control.
Most people who do this do not use a full node as their wallet. Unfortunately because Bitcoin has a similar name to Bittorrent, some people believe that upload capacity is the most important thing for a healthy network. As I've explained above: bandwidth and connections are not a problem today, trust, security and privacy are.
Myth: Running a full node is not recommended, most people should use a lightweight client
This was common advice in 2012, but since then the full node software has vastly improved in terms of user experience.
If you cannot spare the disk space to store the blockchain, you can enable pruning. In Bitcoin Core 0.12, pruning being enabled will leave the wallet enabled. Altogether this should require less than 900MB of hard disk space.
If you cannot spare the bandwidth to upload blocks to other nodes, there are number of options to reduce or eliminate the bandwidth requirement. These include limiting connections, bandwidth targetting and disabling listening. Bitcoin Core 0.12 has the new option -blocksonly, where the node will not download unconfirmed transaction and only download new blocks. This more than halves the bandwidth usage at the expense of not seeing unconfirmed transactions.
Synchronizing the blockchain for a new node has improved since 2012 too. Features like headers-first and libsecp256k1 have greatly improved the initial synchronization time.
It can be further improved by setting -dbcache=3000 which keeps more of the UTXO set in memory. It reduces the amount of time reading from disk and therefore speeds up synchronization. Tests showed that the entire blockchain can now be synchronized in less than 3 and a half hours (Note that you'll need Bitcoin Core 0.12 or later to get all these efficiency improvements) Another example with 2h 25m
How to run a full node as your wallet.
I think every moderate user of bitcoin would benefit by running a full node and using it as their wallet. There are several ways to do this.
So what are you waiting for? The benefits are many, the downsides are not that bad. The more people do this, the more robust and healthy the bitcoin ecosystem is.
Further reading: http://www.truthcoin.info/blog/measuring-decentralization/
submitted by belcher_ to Bitcoin [link] [comments]

Secure paper wallet tutorial

This is my handout for paranoid people who want a way to store bitcoin safely. It requires a little work, but this is the method I use because it should be resistant to risks associated with:
  1. Bad random number generators
  2. Malicious or flawed software
  3. Hacked computers
If you want a method that is less secure but easier, skip to the bottom of this post.
The Secure Method
  1. Download bitaddress.org. (Try going to the website and pressing "ctrl+s")
  2. Put the bitaddress.org file on a computer with an operating system that has not interacted with the internet much or at all. The computer should not be hooked up to the internet when you do this. You could put the bitaddress file on a USB stick, and then turn off your computer, unplug the internet, and boot it up using a boot-from-CD copy of linux (Ubuntu or Mint for example). This prevents any mal-ware you may have accumulated from running and capturing your keystrokes. I use an old android smart phone that I have done a factory reset on. It has no sim-card and does not have the password to my home wifi. Also the phone wifi is turned off. If you are using a fresh operating system, and do not have a connection to the internet, then your private key will probably not escape the computer.
  3. Roll a die 62 times and write down the sequence of numbers. This gives you 2160 possible outcomes, which is the maximum that Bitcoin supports.
  4. Run bitaddress.org from your offline computer. Input the sequence of numbers from the die rolls into the "Brain Wallet" tab. By providing your own source of randomness, you do not have to worry that the random number generator used by your computer is too weak. I'm looking at you, NSA ಠ_ಠ
  5. Brain Wallet tab creates a private key and address.
  6. Write down the address and private key by hand or print them on a dumb printer. (Dumb printer means not the one at your office with the hard drive. Maybe not the 4 in 1 printer that scans and faxes and makes waffles.) If you hand copy them you may want to hand copy more than one format. (WIF and HEX). If you are crazy and are storing your life savings in Bitcoin, and you hand copy the private key, do a double-check by typing the private key back into the tool on the "Wallet Details" tab and confirm that it recreates the same public address.
  7. Load your paper wallet by sending your bitcoin to the public address. You can do this as many times as you like.
  8. You can view the current balance of your paper wallet by typing the public address into the search box at blockchain.info
  9. If you are using an old cell phone or tablet do a factory reset when you are finished so that the memory of the private keys is destroyed. If you are using a computer with a boot-from-CD copy of linux, I think you can just power down the computer and the private keys will be gone. (Maybe someone can confirm for me that the private keys would not be able to be cached by bitaddress?)
  10. To spend your paper wallet, you will need to either create an offline transaction, or import the private key into a hot wallet. Creating an offline transaction is dangerous if you don't know what you are doing. Importing to a client side wallet like Bitcoin-Qt, Electrum, MultiBit or Armory is a good idea. You can also import to an online wallet such as Blockchain.info or Coinbase.
Trusting bitaddress.org
The only thing you need bitaddress.org to do is to honestly convert the brainwallet passphrase into the corresponding private key and address. You can verify that it is doing this honestly by running several test passphrases through the copy of bitaddress that you plan on using, and several other brainwallet generators. For example, you could use the online version of bitaddress, and brainwallet and safepaperwallet and bitcoinpaperwallet. If you are fancy with the linux command line, you can also try "echo -n my_die_rolls | sha256sum". The linux operating system should reply with the same private key that bitaddress makes. This protects you from a malicious paper wallet generator.
Trusting your copy of bitaddress.org
Bitaddress publishes the sha1 hash of the bitaddress.org website at this location:
https://www.bitaddress.org/pgpsignedmsg.txt
The message is signed by the creator, pointbiz. I found his PGP fingerprint here:
https://github.com/pointbiz/bitaddress.org/issues/18
"527B 5C82 B1F6 B2DB 72A0 ECBF 8749 7B91 6397 4F5A"
With this fingerprint, you can authenticate the signed message, which gives you the hash of the current bitaddress.org file. Then you can hash your copy of the file and authenticate the file.
I do not have a way to authenticate the fingerprint itself, sorry. According to the website I linked to, git has cryptographic traceability that would enable a person to do some research and authenticate the fingerprint. If you want to go that far, knock yourself out. I think that the techniques described in this document do not really rely on bitaddress being un-corrupt. Anyway, how do we know pointbiz is a good guy? ;-)
There are a lot of skilled eyes watching bitaddress.org and the signed sha1 hash. To gain the most benefit from all of those eyes, it's probably worthwhile to check your copy by hashing it and comparing to the published hash.
"But we aren't supposed to use brainwallets"
You are not supposed to use brainwallets that have predictable passphrases. People think they are pretty clever about how they pick their passphrases, but a lot of bitcoins have been stolen because people tend to come up with similar ideas. If you let dice generate the passphrase, then it is totally random, and you just need to make sure to roll enough times.
How to avoid spending your life rolling dice
When I first started doing this, I rolled a die 62 times for each private key. This is not necessary. You can simply roll the die 62 times and keep the sequence of 62 numbers as a "seed". The first paper address you create would use "my die rolls-1" as the passphrase, the second would be "my die rolls-2" and so on. This is safe because SHA256 prevents any computable relationship between the resulting private key family.
Of course this has a certain bad security scenario -- if anyone obtains the seed they can reconstruct all of your paper wallets. So this is not for everyone! On the other hand, it also means that if you happen to lose one of your paper wallets, you could reconstruct it so long as you still had the seed.
One way to reduce this risk is to add an easy to remember password like this: "my die rolls-password-1".
If you prefer, you can use a technique called diceware to convert your die rolls to words that still contain the same quantity of entropy, but which could be easier to work with. I don't use diceware because it's another piece of software that I have to trust, and I'm just copy/pasting my high entropy seed, so I don't care about how ugly it is.
Why not input the dice as a Base 6 private key on the Wallet Details tab?
Two reasons. First of all, this option requires that you roll the die 99 times, but you do not get meaningful additional protection by rolling more than 62 times. Why roll more times if you don't have to? Second, I use the "high entropy seed" method to generate multiple private keys from the same die rolls. Using the Base 6 option would require rolling 99 times for every private key.
I'm a big nerd with exotic dice. How many times to roll?
Put this formula in Excel to get the number of times to roll: "=160*LOG(2,f)" where f = number of faces on the die. For example, you would roll a d16 40 times. By the way, somewhat unbelievably casino dice are more fair than ordinary dice
The "Change address" problem:
You should understand change addresses because some people have accidentally lost money by not understanding it.
Imagine your paper wallet is a 10 dollar bill. You use it to buy a candy bar. To do this you give the cashier the entire 10 dollar bill. They keep 1 dollar and give you 9 dollars back as change.
With Bitcoin, you have to explicitly say that you want 9 dollars back, and you have to provide an address where it should go to. If you just hand over the 10 dollar bill, and don't say you want 9 dollars back, then the miner who processes the transaction gives 1 dollar to the store and keeps the remainder themselves.
Wallet software like Bitcoin-Qt handles this automatically for you. They automatically make "change addresses" and they automatically construct transactions that make the change go to the change address.
There are three ways I know of that the change problem can bite you:
  1. You generate a raw transaction by hand, and screw up. If you are generating a transaction "by hand" with a raw transaction editor, you need to be extra careful that your outputs add up to the same number as your inputs. Otherwise, the very lucky miner who puts your transaction in a block will keep the difference.
  2. You import a paper wallet into a wallet software and spend part of it, and then think that the change is in the paper wallet. The change is not in the paper wallet. It is in a change address that the wallet software generated. That means that if you lose your wallet.dat file you will lose all the change. The paper wallet is empty.
  3. You import a paper wallet into a wallet software and spend part of it, and then think that the change is in the change address that the wallet software generated. If the transaction did not need to consume all of the "outputs" used to fund the paper wallet, then there could be some unspent outputs still located at the address of the paper wallet. If you destroyed the paper wallet, and destroyed the copy of the private key imported to the wallet software, then you could not access this money. (E.g. if you restored the software wallet from its seed, thinking all of the money was moved to the wallet-generated change addresses.)
For more on this, see here
The hot paper wallet problem
Your bitcoin in your paper wallet are secure, so long as the piece of paper is secure, until you go to spend it. When you spend it, you put the private key onto a computer that is connected to the internet. At this point you must regard your paper wallet address as hot because the computer you used may have been compromised. It now provides much less protection against theft of your coins. If you need the level of protection that a cold paper wallet provides, you need to create a new one and send your coins to it.
Destroying your paper wallet address
Do not destroy the only copy of a private key without verifying that there is no money at that address. Your client may have sent change to your paper wallet address without you realizing it. Your client may have not consumed all of the unspent outputs available at the paper wallet address. You can go to blockchain.info and type the public address into the search window to see the current balance. I don't bother destroying my used/empty paper wallet addresses. I just file them away.
Encrypting your private key
BIP 0038 describes a standardized way to encrypt your paper wallet private key. A normal paper wallet is vulnerable because if anyone sees the private key they can take the coins. The BIP38 protocol is even resistant to brute force attacks because it uses a memory intensive encryption algorithm called scrypt. If you want to encrypt your wallets using BIP38, I recommend that you use bitcoinpaperwallet because they will let you type in your own private key and will encrypt it for you. As with bitaddress, for high security you should only use a local copy of this website on a computer that will never get connected to the internet.
Splitting your private key
Another option for protecting the private key is to convert it into multiple fragments that must be brought together. This method allows you to store pieces of your key with separate people in separate locations. It can be set up so that you can reconstitute the private key when you have any 2 out of the 3 fragments. This technique is called Shamir's Secret Sharing. I have not tried this technique, but you may find it valuable. You could try using this website http://passguardian.com/ which will help you split up a key. As before, you should do this on an offline computer. Keep in mind if you use this service that you are trusting it to work properly. It would be good to find other independently created tools that could be used to validate the operation of passguardian. Personally, I would be nervous destroying the only copy of a private key and relying entirely on the fragments generated by the website.
Looks like Bitaddress has an implementation of Shamir's Secret Sharing now under the "Split Wallet" tab. However it would appear that you cannot provide your own key for this, so you would have to trust bitaddress.
Durable Media
Pay attention to the media you use to record your paper wallet. Some kinds of ink fade, some kinds of paper disintegrate. Moisture and heat are your enemies.
In addition to keeping copies of my paper wallet addresses I did the following:
  1. Order a set of numeric metal stamps. ($10)
  2. Buy a square galvanized steel outlet cover from the hardware store ($1)
  3. Buy a sledgehammer from the hardware store
  4. Write the die rolls on the steel plate using a sharpie
  5. Use the hammer to stamp the metal. Do all the 1's, then all the 2's etc. Please use eye protection, as metal stamp may emit sparks or fly unexpectedly across the garage. :-)
  6. Use nail polish remover to erase the sharpie
Electrum
If you trust electrum you might try running it on an offline computer, and having it generate a series of private keys from a seed. I don't have experience with this software, but it sounds like there are some slick possibilities there that could save you time if you are working with a lot of addresses.
Message to the downvoters
I would appreciate it if you would comment, so that I can learn from your opinion. Thanks!
The Easy Method
This method is probably suitable for small quantities of bitcoin. I would not trust it for life-altering sums of money.
  1. Download the bitaddress.org website to your hard drive.
  2. Close your browser
  3. Disconnect from the internet
  4. Open the bitaddress.org website from your hard drive.
  5. Print a paper wallet on your printer
  6. Close your browser
submitted by moral_agent to BitcoinWallet [link] [comments]

I would like to address FUD regarding colored coins and ChromaWallet

I am the lead developer of ChromaWallet. I've noticed that people who are presumably proponents of competing projects post comments which are dismissive and hostile towards colored coins and ChromaWallet. In many cases these posts are based on information which is only half-true, or sometimes not true at all. I'd like to address this unfair criticism here instead of chasing each individual comment.
FUD: Colored coins are irrelevant, because we already have Counterparty. (Also, Mastercoin, Ethereum, BitShares, NXT and so on.)
This would be true if Counterparty could do everything which colored coins can, but that's just not true. Counterparty uses a fundamentally different approach, which means that some things which can be implemented on top of colored coins are impossible with Counterparty, particularly:
Fast trading. First of all, let's consider how it is done in Counterparty: orders are submitted as separate transactions, which can be included into blockchain in arbitrary order. That means that you cannot reliably cancel an order or change price until your original transaction gets into a Bitcoin block, which takes on average 10 minutes. Thus you cannot change price very often (don't forget that you pay a transaction fee for each new order).
Also, you know whether your order was matched only after it is in a block, which, again, takes something on scale of 10 minutes. If you want to buy an asset for Bitcoin, it's even worse; first you need to find a matching order, and then you need to do a Bitcoin payment. In the best case, this requires two Bitcoin blocks, thus average time is 20 minutes. In the worst case, if your Bitcoin transaction is confirmed too late, you will lose your Bitcoins without getting that asset. On the sellers end, you might wait for several hours, but payment won't arrive.
On the bright side, Coutnerparty "dex" requires only Bitcoin network/blockchain. So it is highly available. But slow. Potentially problematic when you use Bitcoin as a currency.
On the other hand, in case with colored coins, trading protocol can be implemented as a separate protocol built on top of core coloring protocol and atomic transactions. As such, it is very flexible, you can choose trade-offs relevant to your particular applications.
Let's consider a specific protocol, p2ptrade (which was first released, as a working proof-of-concept, in January 2013, as a part of ArmoryX):
ArmoryX is dead now, but the similar thing is implemented in ChromaWallet, so you can see yourself that it takes around 5 seconds to complete a trade, not 10 minutes, and not 1 hour.
Micropayment channels, transaction aggregation: Paying a standard Bitcoin fee for each payment is not cool, for many applications that's too much. With colored coins we can use almost all standard Bitcoin features, which can make payments much cheaper and/or faster. I don't think that can work with Counterparty.
SPV: With colored coins, we can implement a "thin" client which will be able to independently verify payments without downloading the whole blockchain. In fact, that's how ChromaWallet works now, it's very similar to Electrum. We can also implement a mobile and in-browser clients which do not need to trust the server.
I could go on, but I hope it's obvious that Counterparty isn't the best at everything, and there might be some room for colored coins. (To be fair, there are certain things which Counterparty can do, but colored coins can't: Counterparty can resolve CFDs and bets based on asset price automatically.)
As for other projects (NXT, Ethereum, BitShares...), they have numerous advantages, but still aren't completely "dominating" over colored coins: I believe the fact that colored coins can provide complete integration with Bitcoin is a significant feature which justifies its existence.
FUD: Development is slow.
Answer: This is partially true.
First of all, few words about ChromaWallet. It started as an open source project supported by donations, which allowed us to to release an alpha version. But then, after donations dwindled, development pace have drastically slowed down. But recently we have organized a for-profit company which will continue to develop ChromaWallet, hopefully at much faster pace. (The wallet will remain open source, of course; we're going to monetize services which will be useful to wallet's users.) One example of what it have already done is coloredcoinjs-lib, a JS library for colored coins. It is something like 90% complete after one month of development.
Then there are several other projects like CoinPrism and Iridis, which are making good progress.
So, yeah, it could be faster, but it is hardly a reason to dismiss colored coins.
FUD: Development efforts are fragmented.
Answer: Well, they are: there are several different implementations. I don't see it as a bad thing, though: there are, probably, dozens of different potential applications of colored coins. We don't need same piece of software doing everything.
I see colored coins as a toolkit for implementing different kinds of applications on top of Bitcoin blockchain, not as a particular standard.
FUD: ChromaWallet isn't working.
I'm fairly certain it's working. It has some deficiencies (like some error messages are displayed in console instead of being shown in GUI), but they are relatively minor. What's important, you can send and receive payments, even p2ptrade is working. Still, it is a beta. We would rather take more time for testing and fixing, thus we ask people to avoid using it for anything of value. Better be safe than sorry, you know.
FUD: ChromaWallet requires complex installation process.
This was true for alpha release which was in December, but not for more recent beta release. Just download, unpack and it works. We're working on web and mobile versions now...
FUD: p2ptrade is not decentralized, there is no colored coins decentralized exchange!
Well, it depends on how you define a "decentralized exchange", of course.
p2ptrade, as implemented in ArmoryX and ChromaWallet, relies on a communication channel implemented as an HTTP service. The thing is, anybody can run his own service. So it is definitely decentralized, as it allows two (or more) parties to trade without relying on a central service.
Also, Iridis implements a similar thing which uses BitMessage for communication.
submitted by killerstorm to Bitcoin [link] [comments]

Seeking replacement for Armory: desktop with offline on 32-bit Linux

I'm looking to update my wallet for SegWit. At present I'm on Armory 0.93.3. I know about 0.95, but I can't use it. The reason I use Armory is that I want its off-line key storage. I've got an old Asus Eee 900 running Ubuntu LTS that I use for the offline component, but Armory 0.95.1 doesn't compile on a 32-bit machine like the Eee . So I'm looking for a replacement that doesn't involve buying a 64-bit machine just for an offline wallet.
I looked at the [Choose your wallet])(https://bitcoin.org/en/choose-your-wallet) page. mSIGNA looked like an option, except it also requires 64-bit hardware. And its still in beta. I could use a Trezor, except I look after multiple wallets for family members and I don't want to mash them together. I also really like the Armory M-of-N paper backup system.
So what I'm looking for is:
Anybody know any other options? Thanks.
submitted by paulajohnson to Bitcoin [link] [comments]

Is anyone else freaked out by this whole blocksize debate? Does anyone else find themself often agreeing with *both* sides - depending on whichever argument you happen to be reading at the moment? And do we need some better algorithms and data structures?

Why do both sides of the debate seem “right” to me?
I know, I know, a healthy debate is healthy and all - and maybe I'm just not used to the tumult and jostling which would be inevitable in a real live open major debate about something as vital as Bitcoin.
And I really do agree with the starry-eyed idealists who say Bitcoin is vital. Imperfect as it may be, it certainly does seem to represent the first real chance we've had in the past few hundred years to try to steer our civilization and our planet away from the dead-ends and disasters which our government-issued debt-based currencies keep dragging us into.
But this particular debate, about the blocksize, doesn't seem to be getting resolved at all.
Pretty much every time I read one of the long-form major arguments contributed by Bitcoin "thinkers" who I've come to respect over the past few years, this weird thing happens: I usually end up finding myself nodding my head and agreeing with whatever particular piece I'm reading!
But that should be impossible - because a lot of these people vehemently disagree!
So how can both sides sound so convincing to me, simply depending on whichever piece I currently happen to be reading?
Does anyone else feel this way? Or am I just a gullible idiot?
Just Do It?
When you first look at it or hear about it, increasing the size seems almost like a no-brainer: The "big-block" supporters say just increase the blocksize to 20 MB or 8 MB, or do some kind of scheduled or calculated regular increment which tries to take into account the capabilities of the infrastructure and the needs of the users. We do have the bandwidth and the memory to at least increase the blocksize now, they say - and we're probably gonna continue to have more bandwidth and memory in order to be able to keep increasing the blocksize for another couple decades - pretty much like everything else computer-based we've seen over the years (some of this stuff is called by names such as "Moore's Law").
On the other hand, whenever the "small-block" supporters warn about the utter catastrophe that a failed hard-fork would mean, I get totally freaked by their possible doomsday scenarios, which seem totally plausible and terrifying - so I end up feeling that the only way I'd want to go with a hard-fork would be if there was some pre-agreed "triggering" mechanism where the fork itself would only actually "switch on" and take effect provided that some "supermajority" of the network (of who? the miners? the full nodes?) had signaled (presumably via some kind of totally reliable p2p trustless software-based voting system?) that they do indeed "pre-agree" to actually adopt the pre-scheduled fork (and thereby avoid any possibility whatsoever of the precious blockchain somehow tragically splitting into two and pretty much killing this cryptocurrency off in its infancy).
So in this "conservative" scenario, I'm talking about wanting at least 95% pre-adoption agreement - not the mere 75% which I recall some proposals call for, which seems like it could easily lead to a 75/25 blockchain split.
But this time, with this long drawn-out blocksize debate, the core devs, and several other important voices who have become prominent opinion shapers over the past few years, can't seem to come to any real agreement on this.
Weird split among the devs
As far as I can see, there's this weird split: Gavin and Mike seem to be the only people among the devs who really want a major blocksize increase - and all the other devs seem to be vehemently against them.
But then on the other hand, the users seem to be overwhelmingly in favor of a major increase.
And there are meta-questions about governance, about about why this didn't come out as a BIP, and what the availability of Bitcoin XT means.
And today or yesterday there was this really cool big-blockian exponential graph based on doubling the blocksize every two years for twenty years, reminding us of the pure mathematical fact that 210 is indeed about 1000 - but not really addressing any of the game-theoretic points raised by the small-blockians. So a lot of the users seem to like it, but when so few devs say anything positive about it, I worry: is this just yet more exponential chart porn?
On the one hand, Gavin's and Mike's blocksize increase proposal initially seemed like a no-brainer to me.
And on the other hand, all the other devs seem to be against them. Which is weird - not what I'd initially expected at all (but maybe I'm just a fool who's seduced by exponential chart porn?).
Look, I don't mean to be rude to any of the core devs, and I don't want to come off like someone wearing a tinfoil hat - but it has to cross people's minds that the powers that be (the Fed and the other central banks and the governments that use their debt-issued money to run this world into a ditch) could very well be much more scared shitless than they're letting on. If we assume that the powers that be are using their usual playbook and tactics, then it could be worth looking at the book "Confessions of an Economic Hitman" by John Perkins, to get an idea of how they might try to attack Bitcoin. So, what I'm saying is, they do have a track record of sending in "experts" to try to derail projects and keep everyone enslaved to the Creature from Jekyll Island. I'm just saying. So, without getting ad hominem - let's just make sure that our ideas can really stand scrutiny on their own - as Nick Szabo says, we need to make sure there is "more computer science, less noise" in this debate.
When Gavin Andresen first came out with the 20 MB thing - I sat back and tried to imagine if I could download 20 MB in 10 minutes (which seems to be one of the basic mathematical and technological constraints here - right?)
I figured, "Yeah, I could download that" - even with my crappy internet connection.
And I guess the telecoms might be nice enough to continue to double our bandwidth every two years for the next couple decades – if we ask them politely?
On the other hand - I think we should be careful about entrusting the financial freedom of the world into the greedy hands of the telecoms companies - given all their shady shenanigans over the past few years in many countries. After decades of the MPAA and the FBI trying to chip away at BitTorrent, lately PirateBay has been hard to access. I would say it's quite likely that certain persons at institutions like JPMorgan and Goldman Sachs and the Fed might be very, very motivated to see Bitcoin fail - so we shouldn't be too sure about scaling plans which depend on the willingness of companies Verizon and AT&T to double our bandwith every two years.
Maybe the real important hardware buildout challenge for a company like 21 (and its allies such as Qualcomm) to take on now would not be "a miner in every toaster" but rather "Google Fiber Download and Upload Speeds in every Country, including China".
I think I've read all the major stuff on the blocksize debate from Gavin Andresen, Mike Hearn, Greg Maxwell, Peter Todd, Adam Back, and Jeff Garzick and several other major contributors - and, oddly enough, all their arguments seem reasonable - heck even Luke-Jr seems reasonable to me on the blocksize debate, and I always thought he was a whackjob overly influenced by superstition and numerology - and now today I'm reading the article by Bram Cohen - the inventor of BitTorrent - and I find myself agreeing with him too!
I say to myself: What's going on with me? How can I possibly agree with all of these guys, if they all have such vehemently opposing viewpoints?
I mean, think back to the glory days of a couple of years ago, when all we were hearing was how this amazing unprecedented grassroots innovation called Bitcoin was going to benefit everyone from all walks of life, all around the world:
...basically the entire human race transacting everything into the blockchain.
(Although let me say that I think that people's focus on ideas like driverless cabs creating realtime fare markets based on supply and demand seems to be setting our sights a bit low as far as Bitcoin's abilities to correct the financial world's capital-misallocation problems which seem to have been made possible by infinite debt-based fiat. I would have hoped that a Bitcoin-based economy would solve much more noble, much more urgent capital-allocation problems than driverless taxicabs creating fare markets or refrigerators ordering milk on the internet of things. I was thinking more along the lines that Bitcoin would finally strangle dead-end debt-based deadly-toxic energy industries like fossil fuels and let profitable clean energy industries like Thorium LFTRs take over - but that's another topic. :=)
Paradoxes in the blocksize debate
Let me summarize the major paradoxes I see here:
(1) Regarding the people (the majority of the core devs) who are against a blocksize increase: Well, the small-blocks arguments do seem kinda weird, and certainly not very "populist", in the sense that: When on earth have end-users ever heard of a computer technology whose capacity didn't grow pretty much exponentially year-on-year? All the cool new technology we've had - from hard drives to RAM to bandwidth - started out pathetically tiny and grew to unimaginably huge over the past few decades - and all our software has in turn gotten massively powerful and big and complex (sometimes bloated) to take advantage of the enormous new capacity available.
But now suddenly, for the first time in the history of technology, we seem to have a majority of the devs, on a major p2p project - saying: "Let's not scale the system up. It could be dangerous. It might break the whole system (if the hard-fork fails)."
I don't know, maybe I'm missing something here, maybe someone else could enlighten me, but I don't think I've ever seen this sort of thing happen in the last few decades of the history of technology - devs arguing against scaling up p2p technology to take advantage of expected growth in infrastructure capacity.
(2) But... on the other hand... the dire warnings of the small-blockians about what could happen if a hard-fork were to fail - wow, they do seem really dire! And these guys are pretty much all heavyweight, experienced programmers and/or game theorists and/or p2p open-source project managers.
I must say, that nearly all of the long-form arguments I've read - as well as many, many of the shorter comments I've read from many users in the threads, whose names I at least have come to more-or-less recognize over the past few months and years on reddit and bitcointalk - have been amazingly impressive in their ability to analyze all aspects of the lifecycle and management of open-source software projects, bringing up lots of serious points which I could never have come up with, and which seem to come from long experience with programming and project management - as well as dealing with economics and human nature (eg, greed - the game-theory stuff).
So a lot of really smart and experienced people with major expertise in various areas ranging from programming to management to game theory to politics to economics have been making some serious, mature, compelling arguments.
But, as I've been saying, the only problem to me is: in many of these cases, these arguments are vehemently in opposition to each other! So I find myself agreeing with pretty much all of them, one by one - which means the end result is just a giant contradiction.
I mean, today we have Bram Cohen, the inventor of BitTorrent, arguing (quite cogently and convincingly to me), that it would be dangerous to increase the blocksize. And this seems to be a guy who would know a few things about scaling out a massive global p2p network - since the protocol which he invented, BitTorrent, is now apparently responsible for like a third of the traffic on the internet (and this despite the long-term concerted efforts of major evil players such as the MPAA and the FBI to shut the whole thing down).
Was the BitTorrent analogy too "glib"?
By the way - I would like to go on a slight tangent here and say that one of the main reasons why I felt so "comfortable" jumping on the Bitcoin train back a few years ago, when I first heard about it and got into it, was the whole rough analogy I saw with BitTorrent.
I remembered the perhaps paradoxical fact that when a torrent is more popular (eg, a major movie release that just came out last week), then it actually becomes faster to download. More people want it, so more people have a few pieces of it, so more people are able to get it from each other. A kind of self-correcting economic feedback loop, where more demand directly leads to more supply.
(BitTorrent manages to pull this off by essentially adding a certain structure to the file being shared, so that it's not simply like an append-only list of 1 MB blocks, but rather more like an random-access or indexed array of 1 MB chunks. Say you're downloading a film which is 700 MB. As soon as your "client" program has downloaded a single 1-MB chunk - say chunk #99 - your "client" program instantly turns into a "server" program as well - offering that chunk #99 to other clients. From my simplistic understanding, I believe the Bitcoin protocol does something similar, to provide a p2p architecture. Hence my - perhaps naïve - assumption that Bitcoin already had the right algorithms / architecture / data structure to scale.)
The efficiency of the BitTorrent network seemed to jive with that "network law" (Metcalfe's Law?) about fax machines. This law states that the more fax machines there are, the more valuable the network of fax machines becomes. Or the value of the network grows on the order of the square of the number of nodes.
This is in contrast with other technology like cars, where the more you have, the worse things get. The more cars there are, the more traffic jams you have, so things start going downhill. I guess this is because highway space is limited - after all, we can't pave over the entire countryside, and we never did get those flying cars we were promised, as David Graeber laments in a recent essay in The Baffler magazine :-)
And regarding the "stress test" supposedly happening right now in the middle of this ongoing blocksize debate, I don't know what worries me more: the fact that it apparently is taking only $5,000 to do a simple kind of DoS on the blockchain - or the fact that there are a few rumors swirling around saying that the unknown company doing the stress test shares the same physical mailing address with a "scam" company?
Or maybe we should just be worried that so much of this debate is happening on a handful of forums which are controlled by some guy named theymos who's already engaged in some pretty "contentious" or "controversial" behavior like blowing a million dollars on writing forum software (I guess he never heard that reddit.com software is open-source)?
So I worry that the great promise of "decentralization" might be more fragile than we originally thought.
Scaling
Anyways, back to Metcalfe's Law: with virtual stuff, like torrents and fax machines, the more the merrier. The more people downloading a given movie, the faster it arrives - and the more people own fax machines, the more valuable the overall fax network.
So I kindof (naïvely?) assumed that Bitcoin, being "virtual" and p2p, would somehow scale up the same magical way BitTorrrent did. I just figured that more people using it would somehow automatically make it stronger and faster.
But now a lot of devs have started talking in terms of the old "scarcity" paradigm, talking about blockspace being a "scarce resource" and talking about "fee markets" - which seems kinda scary, and antithetical to much of the earlier rhetoric we heard about Bitcoin (the stuff about supporting our favorite creators with micropayments, and the stuff about Africans using SMS to send around payments).
Look, when some asshole is in line in front of you at the cash register and he's holding up the line so they can run his credit card to buy a bag of Cheeto's, we tend to get pissed off at the guy - clogging up our expensive global electronic payment infrastructure to make a two-dollar purchase. And that's on a fairly efficient centralized system - and presumably after a year or so, VISA and the guy's bank can delete or compress the transaction in their SQL databases.
Now, correct me if I'm wrong, but if some guy buys a coffee on the blockchain, or if somebody pays an online artist $1.99 for their work - then that transaction, a few bytes or so, has to live on the blockchain forever?
Or is there some "pruning" thing that gets rid of it after a while?
And this could lead to another question: Viewed from the perspective of double-entry bookkeeping, is the blockchain "world-wide ledger" more like the "balance sheet" part of accounting, i.e. a snapshot showing current assets and liabilities? Or is it more like the "cash flow" part of accounting, i.e. a journal showing historical revenues and expenses?
When I think of thousands of machines around the globe having to lug around multiple identical copies of a multi-gigabyte file containing some asshole's coffee purchase forever and ever... I feel like I'm ideologically drifting in one direction (where I'd end up also being against really cool stuff like online micropayments and Africans banking via SMS)... so I don't want to go there.
But on the other hand, when really experienced and battle-tested veterans with major experience in the world of open-souce programming and project management (the "small-blockians") warn of the catastrophic consequences of a possible failed hard-fork, I get freaked out and I wonder if Bitcoin really was destined to be a settlement layer for big transactions.
Could the original programmer(s) possibly weigh in?
And I don't mean to appeal to authority - but heck, where the hell is Satoshi Nakamoto in all this? I do understand that he/she/they would want to maintain absolute anonymity - but on the other hand, I assume SN wants Bitcoin to succeed (both for the future of humanity - or at least for all the bitcoins SN allegedly holds :-) - and I understand there is a way that SN can cryptographically sign a message - and I understand that as the original developer of Bitcoin, SN had some very specific opinions about the blocksize... So I'm kinda wondering of Satoshi could weigh in from time to time. Just to help out a bit. I'm not saying "Show us a sign" like a deity or something - but damn it sure would be fascinating and possibly very helpful if Satoshi gave us his/hetheir 2 satoshis worth at this really confusing juncture.
Are we using our capacity wisely?
I'm not a programming or game-theory whiz, I'm just a casual user who has tried to keep up with technology over the years.
It just seems weird to me that here we have this massive supercomputer (500 times more powerful than the all the supercomputers in the world combined) doing fairly straightforward "embarassingly parallel" number-crunching operations to secure a p2p world-wide ledger called the blockchain to keep track of a measly 2.1 quadrillion tokens spread out among a few billion addresses - and a couple of years ago you had people like Rick Falkvinge saying the blockchain would someday be supporting multi-million-dollar letters of credit for international trade and you had people like Andreas Antonopoulos saying the blockchain would someday allow billions of "unbanked" people to send remittances around the village or around the world dirt-cheap - and now suddenly in June 2015 we're talking about blockspace as a "scarce resource" and talking about "fee markets" and partially centralized, corporate-sponsored "Level 2" vaporware like Lightning Network and some mysterious company is "stess testing" or "DoS-ing" the system by throwing away a measly $5,000 and suddenly it sounds like the whole system could eventually head right back into PayPal and Western Union territory again, in terms of expensive fees.
When I got into Bitcoin, I really was heavily influenced by vague analogies with BitTorrent: I figured everyone would just have tiny little like utorrent-type program running on their machine (ie, Bitcoin-QT or Armory or Mycelium etc.).
I figured that just like anyone can host a their own blog or webserver, anyone would be able to host their own bank.
Yeah, Google and and Mozilla and Twitter and Facebook and WhatsApp did come along and build stuff on top of TCP/IP, so I did expect a bunch of companies to build layers on top of the Bitcoin protocol as well. But I still figured the basic unit of bitcoin client software powering the overall system would be small and personal and affordable and p2p - like a bittorrent client - or at the most, like a cheap server hosting a blog or email server.
And I figured there would be a way at the software level, at the architecture level, at the algorithmic level, at the data structure level - to let the thing scale - if not infinitely, at least fairly massively and gracefully - the same way the BitTorrent network has.
Of course, I do also understand that with BitTorrent, you're sharing a read-only object (eg, a movie) - whereas with Bitcoin, you're achieving distributed trustless consensus and appending it to a write-only (or append-only) database.
So I do understand that the problem which BitTorrent solves is much simpler than the problem which Bitcoin sets out to solve.
But still, it seems that there's got to be a way to make this thing scale. It's p2p and it's got 500 times more computing power than all the supercomputers in the world combined - and so many brilliant and motivated and inspired people want this thing to succeed! And Bitcoin could be our civilization's last chance to steer away from the oncoming debt-based ditch of disaster we seem to be driving into!
It just seems that Bitcoin has got to be able to scale somehow - and all these smart people working together should be able to come up with a solution which pretty much everyone can agree - in advance - will work.
Right? Right?
A (probably irrelevant) tangent on algorithms and architecture and data structures
I'll finally weigh with my personal perspective - although I might be biased due to my background (which is more on the theoretical side of computer science).
My own modest - or perhaps radical - suggestion would be to ask whether we're really looking at all the best possible algorithms and architectures and data structures out there.
From this perspective, I sometimes worry that the overwhelming majority of the great minds working on the programming and game-theory stuff might come from a rather specific, shall we say "von Neumann" or "procedural" or "imperative" school of programming (ie, C and Python and Java programmers).
It seems strange to me that such a cutting-edge and important computer project would have so little participation from the great minds at the other end of the spectrum of programming paradigms - namely, the "functional" and "declarative" and "algebraic" (and co-algebraic!) worlds.
For example, I was struck in particular by statements I've seen here and there (which seemed rather hubristic or lackadaisical to me - for something as important as Bitcoin), that the specification of Bitcoin and the blockchain doesn't really exist in any form other than the reference implementation(s) (in procedural languages such as C or Python?).
Curry-Howard anyone?
I mean, many computer scientists are aware of the Curry-Howard isomorophism, which basically says that the relationship between a theorem and its proof is equivalent to the relationship between a specification and its implementation. In other words, there is a long tradition in mathematics (and in computer programming) of:
And it's not exactly "turtles all the way down" either: a specification is generally simple and compact enough that a good programmer can usually simply visually inspect it to determine if it is indeed "correct" - something which is very difficult, if not impossible, to do with a program written in a procedural, implementation-oriented language such as C or Python or Java.
So I worry that we've got this tradition, from the open-source github C/Java programming tradition, of never actually writing our "specification", and only writing the "implementation". In mission-critical military-grade programming projects (which often use languages like Ada or Maude) this is simply not allowed. It would seem that a project as mission-critical as Bitcoin - which could literally be crucial for humanity's continued survival - should also use this kind of military-grade software development approach.
And I'm not saying rewrite the implementations in these kind of theoretical languages. But it might be helpful if the C/Python/Java programmers in the Bitcoin imperative programming world could build some bridges to the Maude/Haskell/ML programmers of the functional and algebraic programming worlds to see if any kind of useful cross-pollination might take place - between specifications and implementations.
For example, the JavaFAN formal analyzer for multi-threaded Java programs (developed using tools based on the Maude language) was applied to the Remote Agent AI program aboard NASA's Deep Space 1 shuttle, written in Java - and it took only a few minutes using formal mathematical reasoning to detect a potential deadlock which would have occurred years later during the space mission when the damn spacecraft was already way out around Pluto.
And "the Maude-NRL (Naval Research Laboratory) Protocol Analyzer (Maude-NPA) is a tool used to provide security proofs of cryptographic protocols and to search for protocol flaws and cryptosystem attacks."
These are open-source formal reasoning tools developed by DARPA and used by NASA and the US Navy to ensure that program implementations satisfy their specifications. It would be great if some of the people involved in these kinds of projects could contribute to help ensure the security and scalability of Bitcoin.
But there is a wide abyss between the kinds of programmers who use languages like Maude and the kinds of programmers who use languages like C/Python/Java - and it can be really hard to get the two worlds to meet. There is a bit of rapprochement between these language communities in languages which might be considered as being somewhere in the middle, such as Haskell and ML. I just worry that Bitcoin might be turning into being an exclusively C/Python/Java project (with the algorithms and practitioners traditionally of that community), when it could be more advantageous if it also had some people from the functional and algebraic-specification and program-verification community involved as well. The thing is, though: the theoretical practitioners are big on "semantics" - I've heard them say stuff like "Yes but a C / C++ program has no easily identifiable semantics". So to get them involved, you really have to first be able to talk about what your program does (specification) - before proceeding to describe how it does it (implementation). And writing high-level specifications is typically very hard using the syntax and semantics of languages like C and Java and Python - whereas specs are fairly easy to write in Maude - and not only that, they're executable, and you state and verify properties about them - which provides for the kind of debate Nick Szabo was advocating ("more computer science, less noise").
Imagine if we had an executable algebraic specification of Bitcoin in Maude, where we could formally reason about and verify certain crucial game-theoretical properties - rather than merely hand-waving and arguing and deploying and praying.
And so in the theoretical programming community you've got major research on various logics such as Girard's Linear Logic (which is resource-conscious) and Bruni and Montanari's Tile Logic (which enables "pasting" bigger systems together from smaller ones in space and time), and executable algebraic specification languages such as Meseguer's Maude (which would be perfect for game theory modeling, with its functional modules for specifying the deterministic parts of systems and its system modules for specifiying non-deterministic parts of systems, and its parameterized skeletons for sketching out the typical architectures of mobile systems, and its formal reasoning and verification tools and libraries which have been specifically applied to testing and breaking - and fixing - cryptographic protocols).
And somewhat closer to the practical hands-on world, you've got stuff like Google's MapReduce and lots of Big Data database languages developed by Google as well. And yet here we are with a mempool growing dangerously big for RAM on a single machine, and a 20-GB append-only list as our database - and not much debate on practical results from Google's Big Data databases.
(And by the way: maybe I'm totally ignorant for asking this, but I'll ask anyways: why the hell does the mempool have to stay in RAM? Couldn't it work just as well if it were stored temporarily on the hard drive?)
And you've got CalvinDB out of Yale which apparently provides an ACID layer on top of a massively distributed database.
Look, I'm just an armchair follower cheering on these projects. I can barely manage to write a query in SQL, or read through a C or Python or Java program. But I would argue two points here: (1) these languages may be too low-level and "non-formal" for writing and modeling and formally reasoning about and proving properties of mission-critical specifications - and (2) there seem to be some Big Data tools already deployed by institutions such as Google and Yale which support global petabyte-size databases on commodity boxes with nice properties such as near-real-time and ACID - and I sometimes worry that the "core devs" might be failing to review the literature (and reach out to fellow programmers) out there to see if there might be some formal program-verification and practical Big Data tools out there which could be applied to coming up with rock-solid, 100% consensus proposals to handle an issue such as blocksize scaling, which seems to have become much more intractable than many people might have expected.
I mean, the protocol solved the hard stuff: the elliptical-curve stuff and the Byzantine General stuff. How the heck can we be falling down on the comparatively "easier" stuff - like scaling the blocksize?
It just seems like defeatism to say "Well, the blockchain is already 20-30 GB and it's gonna be 20-30 TB ten years from now - and we need 10 Mbs bandwidth now and 10,000 Mbs bandwidth 20 years from - assuming the evil Verizon and AT&T actually give us that - so let's just become a settlement platform and give up on buying coffee or banking the unbanked or doing micropayments, and let's push all that stuff into some corporate-controlled vaporware without even a whitepaper yet."
So you've got Peter Todd doing some possibly brilliant theorizing and extrapolating on the idea of "treechains" - there is a Let's Talk Bitcoin podcast from about a year ago where he sketches the rough outlines of this idea out in a very inspiring, high-level way - although the specifics have yet to be hammered out. And we've got Blockstream also doing some hopeful hand-waving about the Lightning Network.
Things like Peter Todd's treechains - which may be similar to the spark in some devs' eyes called Lightning Network - are examples of the kind of algorithm or architecture which might manage to harness the massive computing power of miners and nodes in such a way that certain kinds of massive and graceful scaling become possible.
It just seems like a kindof tiny dev community working on this stuff.
Being a C or Python or Java programmer should not be a pre-req to being able to help contribute to the specification (and formal reasoning and program verification) for Bitcoin and the blockchain.
XML and UML are crap modeling and specification languages, and C and Java and Python are even worse (as specification languages - although as implementation languages, they are of course fine).
But there are serious modeling and specification languages out there, and they could be very helpful at times like this - where what we're dealing with is questions of modeling and specification (ie, "needs and requirements").
One just doesn't often see the practical, hands-on world of open-source github implementation-level programmers and the academic, theoretical world of specification-level programmers meeting very often. I wish there were some way to get these two worlds to collaborate on Bitcoin.
Maybe a good first step to reach out to the theoretical people would be to provide a modular executable algebraic specification of the Bitcoin protocol in a recognized, military/NASA-grade specification language such as Maude - because that's something the theoretical community can actually wrap their heads around, whereas it's very hard to get them to pay attention to something written only as a C / Python / Java implementation (without an accompanying specification in a formal language).
They can't check whether the program does what it's supposed to do - if you don't provide a formal mathematical definition of what the program is supposed to do.
Specification : Implementation :: Theorem : Proof
You have to remember: the theoretical community is very aware of the Curry-Howard isomorphism. Just like it would be hard to get a mathematician's attention by merely showing them a proof without telling also telling them what theorem the proof is proving - by the same token, it's hard to get the attention of a theoretical computer scientist by merely showing them an implementation without showing them the specification that it implements.
Bitcoin is currently confronted with a mathematical or "computer science" problem: how to secure the network while getting high enough transactional throughput, while staying within the limited RAM, bandwidth and hard drive space limitations of current and future infrastructure.
The problem only becomes a political and economic problem if we give up on trying to solve it as a mathematical and "theoretical computer science" problem.
There should be a plethora of whitepapers out now proposing algorithmic solutions to these scaling issues. Remember, all we have to do is apply the Byzantine General consensus-reaching procedure to a worldwide database which shuffles 2.1 quadrillion tokens among a few billion addresses. The 21 company has emphatically pointed out that racing to compute a hash to add a block is an "embarrassingly parallel" problem - very easy to decompose among cheap, fault-prone, commodity boxes, and recompose into an overall solution - along the lines of Google's highly successful MapReduce.
I guess what I'm really saying is (and I don't mean to be rude here), is that C and Python and Java programmers might not be the best qualified people to develop and formally prove the correctness of (note I do not say: "test", I say "formally prove the correctness of") these kinds of algorithms.
I really believe in the importance of getting the algorithms and architectures right - look at Google Search itself, it uses some pretty brilliant algorithms and architectures (eg, MapReduce, Paxos) which enable it to achieve amazing performance - on pretty crappy commodity hardware. And look at BitTorrent, which is truly p2p, where more demand leads to more supply.
So, in this vein, I will close this lengthy rant with an oddly specific link - which may or may not be able to make some interesting contributions to finding suitable algorithms, architectures and data structures which might help Bitcoin scale massively. I have no idea if this link could be helpful - but given the near-total lack of people from the Haskell and ML and functional worlds in these Bitcoin specification debates, I thought I'd be remiss if I didn't throw this out - just in case there might be something here which could help us channel the massive computing power of the Bitcoin network in such a way as to enable us simply sidestep this kind of desperate debate where both sides seem right because the other side seems wrong.
https://personal.cis.strath.ac.uk/neil.ghani/papers/ghani-calco07
The above paper is about "higher dimensional trees". It uses a bit of category theory (not a whole lot) and a bit of Haskell (again not a lot - just a simple data structure called a Rose tree, which has a wikipedia page) to develop a very expressive and efficient data structure which generalizes from lists to trees to higher dimensions.
I have no idea if this kind of data structure could be applicable to the current scaling mess we apparently are getting bogged down in - I don't have the game-theory skills to figure it out.
I just thought that since the blockchain is like a list, and since there are some tree-like structures which have been grafted on for efficiency (eg Merkle trees) and since many of the futuristic scaling proposals seem to also involve generalizing from list-like structures (eg, the blockchain) to tree-like structures (eg, side-chains and tree-chains)... well, who knows, there might be some nugget of algorithmic or architectural or data-structure inspiration there.
So... TL;DR:
(1) I'm freaked out that this blocksize debate has splintered the community so badly and dragged on so long, with no resolution in sight, and both sides seeming so right (because the other side seems so wrong).
(2) I think Bitcoin could gain immensely by using high-level formal, algebraic and co-algebraic program specification and verification languages (such as Maude including Maude-NPA, Mobile Maude parameterized skeletons, etc.) to specify (and possibly also, to some degree, verify) what Bitcoin does - before translating to low-level implementation languages such as C and Python and Java saying how Bitcoin does it. This would help to communicate and reason about programs with much more mathematical certitude - and possibly obviate the need for many political and economic tradeoffs which currently seem dismally inevitable - and possibly widen the collaboration on this project.
(3) I wonder if there are some Big Data approaches out there (eg, along the lines of Google's MapReduce and BigTable, or Yale's CalvinDB), which could be implemented to allow Bitcoin to scale massively and painlessly - and to satisfy all stakeholders, ranging from millionaires to micropayments, coffee drinkers to the great "unbanked".
submitted by BeYourOwnBank to Bitcoin [link] [comments]

Hardware BITCOIN Brain WALLET GENERATOR -BITCOIN -Smart Wallet BitCoin, Credit Cards, Bitcoin GitHub History Visualization - Multiple Projects (Jan 2015) Turn Key Bitcoin Mining Solution Chirimbolito - A Bitcoin address monitoring tool built with a Raspberry Pi and a LCD display

GitHub Gist: instantly share code, notes, and snippets. Skip to content. All gists Back to GitHub. Sign in Sign up Instantly share code, notes, and snippets. throughnothing / building armory-qt forked from WyseNynja/building armory-qt. Created Nov 10, 2013. Star 0 Fork 0; Code Revisions 15. Embed. What would you like to do? Embed Embed this gist in your website. Share Copy sharable link for ... Download 0.96.0 Now. Available for: Cold Storage For Everyone. Armory makes Bitcoin security best practices accessible to everyone through its unique interface. And most importantly, it’s available for free. Learn more » Open Source and Extensible. Armory was created with developers in mind. Armory is a great base for building Bitcoin apps like exchanges and crowdfunding platforms. Learn ... Bitcoin Armory. Python-based fully-featured Bitcoin Wallet Software. Releases; Documentation. Building From Source; Verify Binaries; Pathing; FAQ; Contribute. Armory To-Do list; Website To-Do list ; Contact Us; About; Armory 0.96.5 Released. This release is a minor release introducing many bug fixes and some new features. Full changelog Added. You can now set the database path from the ... Armory. Created by Alan Reiner on 13 July, 2011. Forked by goatpig in February 2016. Armory is a full-featured Bitcoin client, offering a dozen innovative features not found in any other client software! Manage multiple wallets (deterministic and watching-only), print paper backups that work forever, import or sweep private keys, and keep your savings in a computer that never touches the ... Recently I decided to migrate my bitcoin from Armory wallet cold storage to the BIP39 and related standards. I hadn't switched on the offline PC in a long time, and neither had I updated the blockchain on the online PC. Thus, I started considering my recovery options should something have broken or gone missing. Below are some of the ways I found to recover and move bitcoin in such failure ...

[index] [27868] [30774] [18511] [51419] [24965] [51330] [19439] [28318] [7091] [27124]

Hardware BITCOIN Brain WALLET GENERATOR

To that end, this video includes visualizations of Bitcoin Core, Trezor, Armory, Electrum, Schildbach's Android Wallet and Mycelium - all on the same time scale. Now we can see a bigger picture of ... bitcoin aktie bitcoin armory bitcoin account bitcoin average bitcoin avanza bitcoin anonymt bitcoin api a bitcoin miner a bitcoin a bitcoin primer a bitcoin christmas a bitcoin address a bitcoin ... Robert Kiyosaki 2019 - The Speech That Broke The Internet!!! KEEP THEM POOR! - Duration: 10:27. MotivationHub Recommended for you bitcoin github bitcoin grafikkort bitcoin generator online bitcoin games bitcoin get started g bitcoin g bitcoin charts g bitcointalk g bitcoin wallet g bitcoin kurs g bitcoin mining calculator g ... bitcoin aktie bitcoin armory bitcoin account bitcoin average bitcoin avanza bitcoin anonymt bitcoin api bitcoin miner a bitcoin tcoin is worth a bitcoin puzzle a bitcoin faq bitcoin a peer-to-peer ...

#