What is Bitcoin

  • Upload
    leili

  • View
    15

  • Download
    0

Embed Size (px)

DESCRIPTION

about bitcoin compnay

Citation preview

IntroductionBitcoin is a decentralized, math-based virtual currency that relies on a network of volunteers that together implement a simulated record and verify transactions.Similar to all other currencies, its main purpose is to facilitate the exchange of merchandises and services by offering a commonly reliable material. Since its start in late 2008, Bitcoin has grown very fast, both in value and in the number of transactions. Using a peer-to-peer network to implement all aspects of a currencies lifecycle is its key of success, . This is the essential difference from previous research, which concentrated on building systems that rely on either a centralized issuer or creating inter-user recognitions. Since transactions in Bitcoin are nonrefundable and instant its been compared to fiat money. However Bitcoin has put more efforts than cash by allowing real global transactions and providing the local speed for them. It offers a public transaction history and it introduces many new and innovative uses such as smart properties, micropayments, contracts and escrow transactions for disagreements.In this research we analyze Bitcoin from a networking aspects and describe how to implement the protocol considering main concepts such as : Nodes, Accounts, Wallets and Miners. There is also discussion about how Elliptic Curve Cryptography and stratum protocol works in Bitcoin.

Bitcoin ProtocolBitcoin is both a network protocol and a new kind of asset that can be held. Same as Internet there is no single institution or company that controls bitcoin. It is made up of several thousand computers working together and talking the same language or protocol.Bitcoin is much more than just a digital currency. It is a protocol, a network, a currency and a transaction language. The most important definition of it is an application programming interface (API) for cash. In a traditional financial network, trust is achieved through a multilayered network of protocols, fraud detection, and authorization but most of all exclusion. Financial networks remain safe if the APIs kept closed and just accessible just for a few users who are trusted. Bitcoin changes the format from trust by exclusion to trust by calculation. Trust is distributed across an ever-growing web of agents who continuously checking each other, making it increasingly hard for any bad user or even a group of bad users to hack the network. As a result, there is no need for prohibition or access controls. Everybody is able participate in the Bitcoin network and see the whole transactions, or even everyone can access the APIs.On the Bitcoin network, users can check their own balance, or the balance of any other Bitcoin wallet. The users can operate a bank, a stock exchange, a wire transfer service or an escrow service without anyones permission or accreditation. Bitcoin makes every node, even that running on cellphones, equal in capability to Famous banks or enterprises. In Bitcoin two different types of information are used: transactions and blocks.Depending on the situation, the name Bitcoin may refer to any of the following three parts of the Bitcoin network: Bitcoin, the system: the abstract protocol first introduced by Nakamoto in the original publication bitcoins or BTC, the currency unit; bitcoind, the reference implementation. Written by Nakamoto as a proof-of-concept implementation, bitcoind still remains the most used Bitcoin client.

Bitcoin NodesAll nodes in the bitcoin P2P network are equal, but they different roles depending on the functionality they are supporting. A bitcoin node is a set of functions: routing, the blockchain database, mining, and wallet services. A full node client verifies that all previous blocks are valid regarding to guarantee that a transaction is valid. Currently only the Satoshi client, libbitcoin, and btcd do full node verification. Full nodes are the fundamental anchor of trustless security in the Bitcoin system.A client verifies the depth D of a block by checking that there are D blocksafterit (also called "confirmations"), all of which are well-formed.As we mentioned there is no central server to keep track of all bitcoins. But that doesnt mean there arenoservers keeping track of bitcoins. In fact, there is thousandsof servers keeping track of bitcoins. Every such server in the Bitcoin network is called afull node.

Fig1 : Bitcoin Network

Full NodesA full node is an electronic accountant, and anybody worldwide can set up and run one. Each node has a complete copy of the public ledger thats a record of every Bitcoin transaction that ever happened, in history, all the way back to the very beginning of Bitcoin. Now days the public ledger contains more than 30 million transactions and requires 13 GB of disk space.A number a DNS servers require to join a node to network. These DNS servers are run by volunteers and send back an accidental set of bootstrap nodes that are currently contributing in the network.Another API in bitcoin is the P2P network protocol API, that allows nodes to communicate, exchanging transactions, evaluating new blocks of transactions and recently produced coins. All of these network protocol interactions allow each node to build a complete and identical local copy of the public transactions ledger that is the blockchain, at the heart of Bitcoin. The open nature of the Bitcoin record enables anyone to offer services that require knowledge of Bitcoin transactions.Full nodes, also keep a complete and up-to-date copy of the blockchain. Full nodes can separately and authoritatively verify any transaction without external reference. Full nodes are nodes that maintain a full blockchain with all transactions. More accurately, they probably should be called full blockchain nodes. In the early years of bitcoin,all nodes were full nodes and currently the Bitcoin Core client is a full blockchain node. However, new forms of bitcoin clients have been introduced that do not maintain a full blockchain but run as lightweight clients.There are a few alternative implementations of full blockchain bitcoin clients, built using different programming languages and software architectures. The most common implementation is the reference client Bitcoin Core, also known as the Satoshi client. Most of the nodes on the bitcoin network run various versions of Bitcoin Core. It is identified as Satoshi in the sub-version string sent in the version message and shown by the command getpeerinfo as we saw earlier; for example, /Satoshi:0.8.6/.

Simplified Payment Verification (SPV) NodesAll of the Bitcoin nodes are not able to store the full blockchain. Many bitcoin nodes are designed to run on space- and power- obliges devices, such as smartphones, tablets, or embedded systems. For such devices, a simplified payment verification (SPV) technique is made to allow them to function without storing the full blockchain. These types of nodes are called SPV nodes or lightweight clients. According to Bitcoin needs , the SPV node is becoming the most common form of bitcoin node, especially for bitcoin wallets.SPV nodes do not download the transactions inside the blocks they just download the block headers. As the result of it a chain of blocks, without transactions made that is much smaller than the full blockchain. SPV nodes verify transactions using a slightly different procedure that relies on peers to provide partial views of relevant parts of the blockchain on demand.Because SPV nodes need to save specific transactions in order to selectively verify them, they also create a privacy risk. Unlike full blockchain nodes, which collect all transactions within each block, the SPV nodes requests for specific data can inadvertently reveal the addresses in their wallet. SPV nodes use a getheaders message instead of getblocks in order to get block headers.The responding peer will send up to 2,000 block headers using a single headers message.SPV nodes also set a filter on the connection to peers, to filter the flow of future blocks and transactions sent by the peers. Any transactions of interest are retrieved using a getdata request. In response the peer produces a tx message containing the transactions,.

Fig2 : SPV node synchronizing the block headers

Bitcoin Network When a new node made, it must detect other bitcoin nodes on the network in order to participate. For this purpose the new node should find at least one available node on network to connect to it. The geographic location of other nodes is not important; the bitcoin network topology is not defined according to physical locations. Therefore, any existing bitcoin nodes can be selected at random.To connect to a known peer, nodes establish a TCP connection, usually to port 8333, or an alternative port if one is provided. Upon starting a connection, the node will start a handshake

Fig3: The initial handshake between peersBy transmitting a version message, which contains basic identifying information, including:PROTOCOL_VERSIONA constant that defines the bitcoin P2P protocol version the client speaks (e.g.,70002)nLocalServicesA list of local services supported by the node, currently just NODE_NETWORKnTimeThe current time addrYouThe IP address of the remote nodeappears from this nodeaddrMeThe IP address of the local node, as discovered by the local nodeSubvertA sub-version showing the type of software running on this node (e.g., /Satoshi: 0.9.2.1/)+BestHeightThe block height of this nodes blockchain ( GitHub is an example of the version network message.)On a node running the Bitcoin Core client, you can list the peer connections with thecommand getpeerinfo:

$ bitcoin-cli getpeerinfo[{"addr" : "85.213.199.39:8333","services" : "00000001","lastsend" : 1405634126,"lastrecv" : 1405634127,"bytessent" : 23487651,"bytesrecv" : 138679099,"conntime" : 1405021768,"pingtime" : 0.00000000,"version" : 70002,"subver" : "/Satoshi:0.9.2.1/","inbound" : false,"startingheight" : 310131,"banscore" : 0,"syncnode" : true},{"addr" : "58.23.244.20:8333","services" : "00000001","lastsend" : 1405634127,"lastrecv" : 1405634124,"bytessent" : 4460918,"bytesrecv" : 8903575,"conntime" : 1405559628,"pingtime" : 0.00000000,"version" : 70001,"subver" : "/Satoshi:0.8.6/","inbound" : false,"startingheight" : 311074,"banscore" : 0,"syncnode" : false}]

To speed up the automatic management of peers and to specify a list of IP addresses, clients can provide the option -connect= and specify one or more IP addresses.

Bitcoin MinerMining is the procedure by which new bitcoin is added to the system,. Mining also secure the bitcoin system against fake transactions or transactions spending the same amount of bitcoin duplicated, known as a double-spend. Bitcoin miners provide processing power to the bitcoin network in exchange for the chance to be rewarded bitcoin.Miners evaluate new transactions and save them on the global ledger. A new block, including transactions that happened since the last block, is mined every 10 minutes, thus adding those transactions to the blockchain. Transactions that become part of a block and added to the blockchain are considered approved, which allows the new owners of bitcoin to spend the bitcoin they received in those transactions.There are two types of rewards that miners receive for mining: new coins made by each new block, and transaction fees from all the transactions included in the block. The miners compete to solve a difficult mathematical problem based on a cryptographic hash algorithm to earn these rewards. The solution to the problem, called the proof of work, is included in the new block and functions as proof that the miner used important computing effort.The competition to solve the proof-of-work algorithm to earn reward and the right to record transactions on the blockchain is the basis for bitcoins security model.Mining is the creation that makes bitcoin special, a decentralized security mechanism that is the basis for peer-to-peer electronic currency. The reward of freshly minted coins and transaction fees is an encouragement scheme that aligns the actions of miners with the security of the network, while concurrently implementing the financial supply. Blocks will contain no new bitcoins, and miners will be rewarded solely through the transaction fees.

In the example code in, we calculate the total amount of bitcoin that will be issued.

A script for calculating how much total bitcoin will be issued

# Original block reward for miners was 50 BTCstart_block_reward = 50# 210000 is around every 4 years with a 10 minute block intervalreward_interval = 210000def max_money():# 50 BTC = 50 0000 0000 Satoshiscurrent_reward = 50 * 10**8total = 0while current_reward > 0:total += reward_interval * current_rewardcurrent_reward /= 2return totalprint "Total BTC to ever be created:", max_money(), "Satoshis"\

Running the max_money.py script

$ python max_money.pyTotal BTC to ever be created: 2099999997690000 Satoshis

Security of the NetworkBitcoin mining is decentralized. Anybody with an internet connection and the suitable hardware can participate. Since the Bitcoin network makes decisions based on consensus ,the security of the Bitcoin network depends on this decentralization. If there is disagreement about whether a block should be included in the block chain, the decision is effectively made by a simple voting system, that is, if more than half of the mining power agrees.In case an individual person or organization has control of greater than half of the Bitcoin network's mining power, then they have the power to corrupt the block chain. This called "51% attack". How costly such an attack would be to carry out depends largely on how much mining power is involved in the Bitcoin network. Thus the security of the Bitcoin network depends in part on how much mining power is employed. Bitcoin AccountsIn the Bitcoin "accounts" feature, each user acts as a bank . They can check the total balance of all accounts and also they can create an random number of accounts.When user receive bitcoins, coins are always assigned to one of the accounts, and can be changed which account is credited based on which bitcoin address receives the coins, same action that you tell a bank teller which account to credit when you deposit cash in your bank. However, sending bitcoins is like withdrawing cash from the bank; the coins that are sent out and debited from an account are almost always not the same coins that were deposited into that account.Bitcoin version 0.3.18 and later implements several RPC ways to keep separate account balances in a single Bitcoin wallet. The accounts feature makes it easy to keep track of how much money you have received or spent .Accounts are named with random strings; you may use any JSON string other than "*" (JSON strings are sent and returned as UTF-8 encoded Unicode).Bitcoin creates two accounts automatically: it indirectly creates a default account with the null string as its name, and it explicitly creates an account named Your Address when a new wallet is created.The default account which is named with the empty string ("" in JSON) generated coins and is always credited to the default account, also the sendtoaddress method always debits the default account.Each account is associated with zero or more receiving addresses, and every receiving address is associated with exactly one account. Coins sent to a receiving address in the wallet are credited to the associated account.Accounts are associated with receiving addresses by using the etaccountaddress, getnewaddress or setaccount methods.getaccountaddress will return the same address until coins are received on that address; once coins have been received, it will generate and return a new address.getnewaddress always generates and returns a new address.setaccount changes the account related with an existing address. Coins earlier received on that address will be withdrew from the previous account's balance and credited to the address' new account. sendfrom technique sends coins and debits the identified account. It does **not** change Bitcoin's algorithm for selecting which coins in the wallet are sent . sendtoaddress method works same as sendfrom, but always debits the default account. Use the move method to transfer balances between accounts. Moves are not broadcast to the network, and never incur transaction fees; they just adjust account balances in the wallet. getbalance method returns the bitcoin balance for either the entire wallet or for a particular account.listtransactions [N] method returns the last N (default 10) transactions that affected the account's balance. "listtransactions '*' [N]" will return the last N transactions for all accounts.

Special uses of accountsIn this part we are describing how typical web site code running on a web server uses the JSON-RPC API to keep track of customers' accounts.

Client creates an account on the website: web server assigns them a unique customer id number, uses their email address or other unique identifier, calls getaccountaddress "userid" and asks the customer to send to that address to deposit their account. Customer receives coins to fund their account: web server not involved in this. Client is shown their current balance: getbalance "userid" 6 to get their 'approved' balance, and deducts it from getbalance "userid" 0 to get their 'unapproved' balance. Show the client an **itemized list** of transactions: listtransactions "userid" Client sends coins to another bitcoin address: sendfrom "userid" Customer transfers coins to another customer: move "userid1" "userid2" You make a sale, paid for with bitcoins in the client's account: move "userid" "" 6 "purchased item", and if it was successful, send them the product. Client is charged a fee for use of the service: move "userid" "FEES" Customer purchases bitcoins from you: move "AVAILABLE" "userid"

Bitcoin keysWallets in Bitcoin contain a set of key pairs, each containing of a private key and a public key. The private key (k) is a number, usually chosen at random. We use elliptic curve multiplication, a one-way cryptographic function from private keys, to generate a public key (K). From the public key (K), we use a one-way cryptographic hash function to generate a bitcoin address (A). Private KeyA Bitcoin private key is simply a number, chosen randomly. Ownership and control over the private key is the source of user control over all funds contributed with the matching bitcoin address. The private key is used to create signatures that are required to spend bitcoins by proving ownership of funds used in a transaction. The private key has to remain secret at all times, if it relieved to a third party , they can control the bitcoin that secured by that key. The private key must also be backed up and protected from accidental loss, because if its lost it cannot be recovered and the funds secured by it are forever lost, too.

Public keyThe public key is derived from the private key using elliptic curve multiplication (we will explain it later in this paper) ,which is irretrievable: K = k *G where k is the private key, G is a continuous point called the generator point and K is the resulting public key. Before we demonstrate how to generate a public key from a private key, lets look at elliptic curve cryptography in a bit more detail.

Elliptic Curve Cryptography

Elliptic curve cryptography (ECC) is increasingly used in action to expresspublic-key cryptography protocols, for instance implementing digital signatures and main agreement. The practical benefits of using elliptic curves are well-understood as : they offer smaller key sizes and more efficient Implementations at the same security level as other widely deployed schemes such asRSA .Elliptic curve cryptography is a type of uneven or public-key cryptography based on the detached logarithm problem as expressed by addition and multiplication on the points of an elliptic curve.Figure4 is an example of an elliptic curve, similar to that used by bitcoin.

Figure 4.: An elliptic curve

Bitcoin uses a specific elliptic curve and set of mathematical numbers, as defined in a standard called secp256k1, established by the National Institute of Standards and Technology (NIST). The secp256k1 curve is defined by the following function, which produces an elliptic curve:

y 2 = (x 3 + 7) over (F p)ory 2 mod p = (x 3 + 7) mod p

The mod p (modulo prime number p) explains that this curve is over a finite field of prime order p, also written as F p, where p = 2256 232 29 28 27 26 24 1, a very large major number.Because this curve is defined over a finite field of prime order instead of over the real numbers, it looks like a pattern of dots scattered in two dimensions, which makes it difficult to visualize. However, the math is identical as that of an elliptic curve over the real numbers. As an example, Figure 5 shows the same elliptic curve over a much smaller finite field of prime order 17, showing a pattern of dots on a grid. The secp256k1 bitcoin elliptic curve can be thought of as a much more complex pattern of dots on a unintelligibly large grid.

Fig 5 :Elliptic curve cryptography: visualizing an elliptic curve over F(p), withp=17Technical detailsThe elliptic curve realm parameters over Fprelated with a Koblitz curve secp256k1 are specified by the sextuple T = (p,a,b,G,n,h) where the finite field Fpis defined by: p= FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F = 2256- 232- 29- 28- 27- 26- 24- 1The curveE:y2= x3+ax+bover Fpis defined by: a= 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 b= 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000007The base point G in compressed form is: G= 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798and in uncompressed form is: G= 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8Finally the ordernofGand the cofactor are: n= FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141 h= 01

Bitcoin WalletElectronic wallet (E-wallet) is an online prepaid account where users can reload money, to be used when needed. Consumers can buy a series of products from tickets to grocery without using a debit or credit card.Bitcoin wallets keeping the private keys, generally implemented as organized files or simple databases. Another way for making keys is deterministic key generation. In this you derive any new private key, using a one-way hash function from a prior private key, cone ting them in a sequence. As long as you can re-build that sequence, you only need the first key (known as a seed or master key) to produce them all.

They provide a place to store your coins, as well as letting you to spend and earn bitcoins, without wallets, it would be impossible to keep or use bitcoin. Wallets come in many different forms and configurations, including mobile, desktop, hardware, paper and even brain wallets. To actually use bitcoins, you need some kind of device which functions as a wallet. It can be an application running on your computer, a mobile app, a service offered by a website, or totally different thing. The wallet can add a transaction to the public ledger by informing a single node on the Bitcoin network. That node will relay the transaction to other nodes, which will relay it to others, and so on . In order to start Bitcoin transaction or mining, it is important to choose an appropriate wallet that would securely store your funds and fulfill all your requirements such as ease of use, etc. From the technical aspect its all about a private key, a special bitcoin address, that is saved in bitcoin wallets owner. Therefore the main use of the Bitcoin wallets lies in safely storing the private keys of your Bitcoin address and easily reaching it when signing transaction or spending the digital money. All bitcoin wallets help to send and receive bitcoins and shows the bitcoin balance.

Main types of walletsThere are different kinds of Bitcoin wallets that currently created: mobile Bitcoin wallet, desktop Bitcoin wallet, hardware Bitcoin wallet, Bitcoin paper wallet, offline Bitcoin wallet, and online Bitcoin wallet. This is how they work.Bitcoin Desktop walletsBitcoin users, will have aceess to this kind of wallet by installing the original Bitcoin clients (Bitcoin-Qt). This software can also be used for generate a Bitcoin address for spending and receiving digital cash. Bitcoin Mobile walletsMobile wallets operate as apps on smart phones and are assumed to be easier to use comparing to desktop wallets regarding to their advanced mobility. Owners of these wallets can do transactions through their mobile phones. Some mobile wallets applications let users to get advantage from the near-field communication (NFC) feature that processes payment through tapping the phone against a reader without the necessity of entering any information. Most popular mobile wallets are Mycelium, Xapo, and Blockchain.Bitcoin Paper walletsBitcoin paper wallet, also known as offline Bitcoin wallets are one of the cheapest and most commonly used Bitcoin wallets is. In these kind of wallets the private keys do not have any connection to digital world.. A paper wallet indicates an image with two QR codes , the first containing your Bitcoin address, the other one encrypting your private key. Bitcoin paper wallet as part of the offline Bitcoin wallet group is not subject to cyber hacking and are considered to be fairly secure. Bitcoin Online walletsThese wallets are remarkably controlled by a third party via the Internet. Some of these online wallets can be connected to mobile and desktop wallets, duplicating addresses on various devices. One of the greatest advantages of online wallets is its accessibility, and the biggest disadvantage of such wallets lies in the involvement of a third party , someone else controls your funds bringing the users back to centralization. Most trustworthy online Bitcoin wallets are Coinbase, Circle, Blockchain, and Xapo.

Wallet Setup and encryption

Here is an example of setting a wallet codes:

Commands: encryptwallet, walletpassphraseBefore you proceed with creating keys and other commands, you should first encrypt the wallet with a password. For this example, you will use the encryptwallet commandwith the password foo. Obviously, replace foo with a strong and complex password!

$ bitcoin-cli encryptwallet foowallet encrypted; Bitcoin server stopping, restart to run with encrypted wallet.The keypool has been flushed, you need to make a new backup.$You can verify the wallet has been encrypted by running getinfo again. This time youwill notice a new entry called unlocked_until. This is a counter showing how long thewallet decryption password will be stored in memory, keeping the wallet unlocked. Atfirst this will be set to zero, meaning the wallet is locked:

$ bitcoin-cli getinfo{"version" : 90000,#[... other information...]"unlocked_until" : 0,"errors" : ""}$To unlock the wallet, issue the walletpassphrase command, this takes two parametersthe password and a number of seconds until the wallet is locked again automatically(a time counter):

$ bitcoin-cli walletpassphrase foo 360$

You can confirm the wallet is unlocked and see the timeout by running getinfo again:$ bitcoin-cli getinfo{"version" : 90000,#[... other information ...]"unlocked_until" : 1392580909,"errors" : ""}

Bitcoin wallet SecurityThere are several ways to secure your bitcoin wallet: Using a strong password, makes it difficult to access your wallet, but not impossible. Back it upMake a copy of private keys and remember to back up your entire wallet in several different places. Multi -signature addressMulti-signature addresses allow to seed an address partially with a public key for many parties. This means that the signatures of all these parties are required to spend some of the bitcoins. Cold storagePrint your public key and store it with all the precious things you have in a safe box for example.Any kind of Bitcoin wallet you choose, it is important to protect it from hacking. By encrypting your passwords, backing up your wallet, and possibly using multi-signature you can ensure safety and security of your Bitcoins.

How stratum protocol works in bitcoinBitcoin network refers to the group of nodes running the bitcoin P2P protocol. In addition to the bitcoin P2P protocol, there are other protocols such as Stratum, which are used for mining and lightweight or mobile wallets. These extra protocols are provided by gateway routing servers that access the bitcoin network using the bitcoin P2P protocol, and then extend that network to nodes running other protocols.For instant , Stratum servers connect Stratum mining nodes via the Stratum protocol to the main bitcoin network and link the Stratum protocol to the bitcoin P2P protocol. We use the term extended bitcoin network to refer to the overall network that includes the bitcoin P2P protocol, pool-mining protocols, the Stratum protocol, and any other related protocols connecting the components of the bitcoin system.Stratum is a line-based protocol using simple TCP socket, with payload encoded as JSON-RPC messages. Client just opens TCP socket and writes requests to the server in the form of JSON messages finished by the newline character \n. Every line received by the client is again a exist JSON-RPC fragment containing the answer.Stratum protocol is very convenient to implement and very easy to debug, because both sides are talking in readable format. The protocol is unlike many other solutions easily extensible without messing up the backwards compatibility. As a bonus, JSON is widely supported on all platforms and current miners already have JSON libraries included. So packing and unpacking of the message is really simple and convenient.

References E. Androulaki, G. O. Karame, M. Roeschlin, T. Scherer, and S. Capkun.Evaluating User Privacy in Bitcoin. In Proceedings of Financial Cryptography,2013. M. Babaioff, S. Dobzinski, S. Oren, and A. Zohar. On Bitcoin and Red Balloons. In Proceedings of the 13th ACM Conference on Electronic Commerce, pages 5673. ACM, 2012. Back et al. Hashcash-a denial of service counter-measure. http://www.hashcash.org/papers/hashcash.pdf. S. Barber, X. Boyen, E. Shi, , and E. Uzun. Bitter to BetterHow to Make bitcoin a Better Currency. In Proceedings of Financial Cryptography, 2013. T. Bauman. Commerce and Reputation in Online Illegal Drug Markets.Princeton University Senior Thesis, 2013. J. Becker, D. Breuker, T. Heide, J. Holler, H. Rauer, and R. Bohme. Can We Afford Integrity by Proof-of-Work? Scenarios Inspired by the BitcoinCurrency. In Workshop on the Economics of Information Security, 2012. Bitcoin - P2P Digital Currency. http://bitcoin.org. Bitcoin Foundation. https://bitcoinfoundation.org. BTC Guild. http://www.btcguild.com. D. Chaum. Blind signatures for untraceable payments. In Advances in Cryptology: Proceedings of Crypto, volume 82, pages 199203, 1982. W. Dai. b-money. http://www.weidai.com/bmoney.txt, 1998. Dwork and M. Naor. Pricing via processing or combatting junk mail.In CRYPTO, 1992. Freicoin - easy-to-use demurrage currency. http://freico.in/. G. Hamilton (Dir.). Goldfinger. United Artists, 1964. G. O. Karame, E. Androulaki, and S. Capkun. Double-spending fast payments in Bitcoin. In Proceedings of the 2012 ACM conference on Computer and Communications Security, pages 906917. ACM, 2012. Laurie and R. Clayton. Proof-of-work proves not to work. In Workshop on Economics and Information Security, volume 2004, 2004. T. B. Lee. Major glitch in Bitcoin network sparks sell-off; price temporarily falls 23%. http://arstechnica.com/business/2013/03/major-glitchin-bitcoin-network-sparks-sell-offprice-temporarily-falls-23/. Litecoin - Open source P2P digital currency. http://litecoin.org/. Miers, C. Garman, M. Green, and A. D. Rubin. Zerocoin: Anonymous Distributed E-Cash from Bitcoin. IEEE Symposium on Security and Privacy,2013. Mt. Gox - Bitcoin Exchange. http://mtgox.com. S. Nakamoto. Bitcoin: A Peer-to-Peer Electronic Cash System. http://bitcoin.org/bitcoin.pdf, 2009. J. Ochs and A. E. Roth. An experimental study of sequential bargaining.The American Economic Review, pages 355384, 1989. organofcorti. Neighborhood Pool Watch. http://organofcorti.blogspot.com/. N. Popper and P. Lattman. Never mind Facebook; Winklevoss twins rule in digital money. http://dealbook.nytimes.com/2013/04/11/as-biginvestors-emerge-bitcoin-gets-ready-for-its-close-up/. Ron and A. Shamir. Quantitative Analysis of the Full Bitcoin Transaction Graph. In Proceedings of Financial Cryptography, 2013.20 T. C. Schelling. The Strategy of Conflict. Harvard University Press, 1960. C. E. Schumer and J. Manchin. Manchin urges federal law enforcement to shut down online black market for illegal drugs. http://manchin.senate.gov/public/index.cfm/press-releases? B. Skyrms. The stag hunt and the evolution of social structure. Cambridge University Press, 2003. P. Wuille. Bitcoin network graphs. http://bitcoin.sipa.be/.