Basics of Blockchains
Basics of Blockchain
Tuesday 1F
Convener: Muneeb Ali
Notes-taker(s): Dave Sanford
Tags for the session - technology discussed/ideas considered:
Discussion notes, key understandings, outstanding questions, observations, and, if appropriate to this discussion: action items, next steps:
Slides:
http://blog.onename.com/experiences-with-scaling-blockchain-based-data-stores/
Muneeb (from OneName) started the session with presentation: ‘Building Global PKI with Blockchain’. Bitcoin solves distributed consensus without relying on trusted party. Unconfirmed transactions are made and then they become confirmed. Data needs to be synched with the distributed ledger – by attaining agreement on the state of the system. Blockchain solves this problem – by giving everyone (who wants it) a copy of the file – therefore there is the same state for everyone. It acts as a peer-to-peer network which periodically (approximately every 10 minutes) decides what can get added to the file.
Who has the authority to write to this file? Bitcoin miners are trying to solve a hard problem. Whoever solves the problem – which defines the new block.
Incentives: People are incentivized to do work on the longest chain. Some discussions of ‘proof of work’ as well as ‘proof of state’.
There are now approximately 21 million bitcoins. Every block generates new bitcoins for miners until (projected) approximately the year 2140. There are also transaction fees, the intent is that transaction fees will provide enough incentive after 2140 to incentivize continued mining – given the volume of transactions at that time. As soon as you mine a block – there is a high incentive to advertise. When there are competing blocks in the systems – some blocks may need to be erased, so some entities wait until up to 6 new blocks before they view a transaction as validated by the final consensus block.
The hash of the public key acts as a bitcoin address. Bitcoin uses ECDSA with the SECP 256K1 cipher. The only way to prove that your transaction has been validated is to go to the validated block and confirm. Full broadcast nodes talk to each other and do transactions and each block contains transactions. The hash of the last block is computed using a nonce value to meet a certain criteria (e.g. starts with 5 zeros, requiring 6 zeros would be even harder). This hardness factor is designed to cause new blocks to be validated approximately every 10 minutes. Every two weeks hardness is re-evaluated based on the time validation took over the previous two weeks. The current block size is 1MB which equates to approximately 4,000 transactions/block.
The question was asked how much of this material is specific to the bitcoin blockchain vs. other blockchain? It was agreed that much of this discussion is about the bitcoin blockchain – in part because many types of non-bitcoin transactions can be built on top of it and that it is so large that compromising it would be very very hard. There was some discussion of the ‘group leader election problem’ and the ability of blockchain to ‘establish truth’, which could be extendable to PKI and other areas. Some questions – not answered about alternate chains and their alternative incentive structures.
For the user, sending a transaction is very simple – just sign and send to a bitcoin address, which means that you need to be able to ask for someone’s bitcoin address. The ledger is currently only 40GB and a full copy of it is only needed by full nodes (but is available to everyone). A key is only used for a single transaction – so the use of ECDSA does not represent a forward security vulnerability.
If you have to wait for six new blocks for sufficient validation of a transaction – does this impact the ability to support real time operations? The answer is yes, which is one of the things that some of the alt chains are trying to address.
Currently there are approximately 5300 full nodes, My (light node) wallet only needs to know its own transactions.
From a high level blockchain is doing two things:
- Creating a validated time sequence (block 1, 2, 3 …) and approximate time (6 blocks ~ 1 hour)
- Ownership with private keys – bitcoins are just one thing for which ownership can be established – any digital asset, names, data, code – can have its ownership proven
Namecoin is a forked blockchain, which provided decentralized DNS, OneName have now implemented the same functionality on top of the bitcoin blockchain – primarily because there were too few entities and miners involved with namecoin making it not as inherently secure as the bitcoin blockchain. For naming – you register a hash of your name, if you subsequently reveal the hash as being a hash of your public name, ownership is hard to contest. This hash is stored in a 40 byte op return field in the bitcoin transaction – and can be thought of as a $0 bitcoin transaction. For the name service, there are still transaction fees.
Side chains were too advanced for this discussion.
We use block chain for consensus – you could imagine different federated (more centralized) systems that still allow auditing. These systems could have ban periods or arbiters (EFF, ICANN, ..).
Bitcoin blockchain is powerful and secure because of network effects, there is so much infrastructure invested by such a diverse group. In a federated system, you might not need the overhead of mining. Can notarize the data in blockchain and store the data elsewhere.