With the addition of OP_RETURN outputs in version 0.9, it became possible to attach arbitrary pieces of information to bitcoin transactions. This turns bitcoin into a low-level communications protocol, just like TCP/IP, on which many new applications can be built.
Despite its powerful features, bitcoin is also limited, costly and inefficient compared to TCP/IP. After discussing which sorts of applications make this trade-off worthwhile, we talk about CoinSpark, a new open source protocol for enhancing bitcoin transactions, which makes extensive use of OP_RETURNs.
Metadata in the Blockchain: The OP_RETURN Explosion
1. Metadata in the Blockchain:
The OP_RETURN Explosion
Coin Sciences Ltd
http://coinspark.org/
2. If Bitcoin = Gold 2.0 then …
What is the intrinsic
value of a bitcoin?
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
3. What has gone wrong? (1)
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
4. Early Internet growth
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
http://homes.cs.washington.edu/~lazowska/faculty.lecture/
innovation/hpcc/internet/hosts.html
5. What has gone wrong? (2)
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
11. What can we send?
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
An expensive way to encode information
12. Fake addresses
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
Permanent burden on unspent output list
13. Multisig addresses (1 of …)
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
Temporary burden on unspent output list
14. The OP_RETURN decision
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
https://bitcoinfoundation.org/2013/10/core-development-update-5/
15. OP_RETURNs
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
Provably prunable, no unspent output
23. Payment model
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
Bitcoin TCP/IP
Per message,
with message
Subscription or pay-
per-use, separate
24. So bitcoin is suitable for…
• Tiny payload
• High value
– Hashes in general
• Public broadcast
• Permanently recorded
• Non-instant
• Pay-as-you-go
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
26. Document notarization
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
Bitproof, BlockSign, La Preuve, ProveBit,
Proof of Existence, Stampd, Stampery
27. Historical records
• Blog post about stuff in blockchain
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
Lots more: http://www.righto.com/2014/02/
ascii-bernanke-wikileaks-photographs.html
29. Universal family tree?
• Show a family tree (DAG)
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
http://recursivediscursion.blogspot.com/2011/04/gentle-introduction-to-graph-theory.html
39. Bitcoin transaction model
Signed by Alice
Alice 10.000
Bob 2.000
Alice 7.999
Miner 0.001
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
40. CoinSpark asset model
• Multiple assets per output
– Low burden on network
– No accidental loss
• Default: all assets to last output
• Metadata sends to other outputs
– 40 bytes: up to 3 assets, unlimited outputs
• Asset independence ⇒ scalability
– Issuer provides tracking server for SPV
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
41. Example asset transaction
Signed by Alice
Alice 0.007
Bob 0.001
Alice 0.005
OP_RETURN
Miner 0.001
A
B
C
B
A
C
B
Output 1
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
150
60
60
90
42. CoinSpark messages
• Attach text and/or files to a bitcoin or
CoinSpark asset transaction
• Message discovery via OP_RETURN
– Compressed URL / IP of delivery server
– Outputs for which message intended
– Hash of message + salt
• Open source delivery server
– Federated, non-centralized model
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
43. CoinSpark messages vs email
• Hash proves message authenticity
• Notarization of message on blockchain
– Contracts, invoices, digital delivery
• Also: public messages
– Broadcast content + proof of existence
• Future: message encryption
– Requires public key, not just bitcoin address
• Challenge: identity (Openname?)
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
44. CoinSpark OP_RETURN format
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
53
50
4B
CoinSpark marker (“SPK”)
61
FF
— Last metadata opcode
···· Last metadata (until end of script)
01
60
Length of this metadata section—
61
FF
— Metadata opcode
···· Metadata (up to 95 bytes)
*
45. Metadata opcodes
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
61
7F
—
67
72
74
80
EF
—
Reserved for CoinSpark
Asset genesis (“g”)
Payment reference (“r”)
Asset transfer (“t”)
Your application?
6D
Message pointer (“m”)
46. Every byte is sacred
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
47. Every byte is sacred
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
48. Only encode surprises
000 = omit fields. If this is the first color transfer, assume input and output indices of 0.
Otherwise take the indices from the previous color transfer.
001 = omit fields. If this is the first color transfer, assume input index 0 and output index
1. Otherwise take the indices from the previous color transfer and increment the output
index only.
010 = omit fields. If this is the first color transfer, assume input index 1 and output index
0. Otherwise take the indices from the previous color transfer and increment the input
index only.
011 = omit input index and use 1 byte for output index. If this is the first color transfer,
assume input index 0. Otherwise use the same input index as the previous color transfer.
100 = omit output index and use 1 byte for input index. If this is the first color transfer,
assume output index 0. Otherwise use the same output index as the previous color
transfer.
101 = use 1 byte for input index, 1 byte for output index.
110 = use 1 byte for input index, 2 bytes for output index.
111 = use 2 bytes for input index, 2 bytes for output index.
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
49. Mantissa and exponent
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
625 trillion = 625×1012
??11001001110001
51. More domain name compression
• 38 valid characters
– 0 to 9, a to z, -‐ .
• Two terminator characters ⇒ 40
– http:// vs https://
• 403 = 64000 < 65536 = 216
– So 3 characters per byte pair
• Special case: IPv4 address
– Obvious encoding in 4 bytes
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
53. CoinSpark for Developers
• Fully open source (MIT/AGPL)
• Multilingual libraries
– C/C++, Go, Java, JS, PHP, Python, Ruby
• Fully decentralized
– Server-side elements federated
• Let’s do for bitcoin what
the web did for TCP/IP
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
54. Back to the start…
What is the intrinsic
value of a bitcoin?
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
55. 0.0
0.2
0.4
0.6
0.8
1.0
1.2
2011 2012 2013 2014 2015 2016 2017 2018 2019
Average block size (MB)
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
Current limit: 1 MB
Economic
prehistory
Economic
reality
56. What happens then?
• Transactions compete for confirmation
– Bidding via miner fee, paid only in bitcoin
• Real price discovery
– Econ 101: until supply = demand
• If enough transactions (notarization?) are
worth $10 to sender, all will cost that
– No more cups of coffee!
• Increasing block size limit just delays this
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
57. So: bitcoin = global
bidding power for
embedding data in
the blockchain.
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
59. MultiChain
• Private blockchain platform
– Targeted at financial sector
– Drop-in replacement for Bitcoin Core
• Easy and quick deployment
– Custom network parameters
• Permission management
• Native asset support
• Stable alpha now available
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
60. Coin Secrets – coinsecrets.org
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
61. php|python-OP_RETURN
Coin Sciences Ltd Metadata in the Blockchain http://coinspark.org/
• Send OP_RETURN using Bitcoin Core
– Doing it yourself is hard work!
• Store and retrieve any data in blockchain
– Uses OP_RETURNs in chained transactions
– Returns reference like 356115-052075 for
easy and fast retrieval
• Use on command line or library
– PHP and Python now, Ruby to come