Hacker News new | ask | show | jobs
by rxl 4133 days ago
Bitcoin technically has the capability to store at least 1K bytes per transaction using multi-sig outputs. 66 bytes per output * 15 possible outputs (for standard transactions) = 1K bytes. And you could do even more than that with non-standard transactions, making transactions with 3K bytes or more.

That said, you probably don't want to do this, because it contributes to blockchain bloat.

We made the decision of storing the data in a DHT because it's more efficient and you can store much more data than a few thousand bytes.

3 comments

Hey buddy. You're killing it man. Thanks for all that you do.

One thing I've still not grokked about your vision: What kind of redundancy can you expect for the DHT? It seems clear that, for the foreseeable future, there will be millions of copies of the bitcoin blockchain. How can you know that there will be a sufficient number of copies, distributed in a sufficiently diverse pattern, in order to ensure preservation of the DHT?

Thanks! Really appreciate it.

1. The replication factor of the DHT is set to be high. 2. We'll be committed to seeding the network and will work with others to have them run nodes. 3. We will provide a full index of the DHT, so the data can be retrieved via our API as an alternative to checking the DHT (the data can be stored and mirrored anywhere, since it's hash-addressed).

"We'll be committed to seeding the network and will work with others to have them run nodes."

What incentive do they have to run nodes? Bittorrent has the tit-for-tat mechanism. IPFS is planning on incentivizing nodes with filecoin.

But BitCoin community is against abusing the financial block-chain for general purpose [0]. Reducing bloat is good, but why bloat it in first place?

[0] - https://en.bitcoin.it/wiki/Alternative_chain#Objective

I've been doing some analysis of the bitcoin blockchain and there are only around 17,400 transactions that take up a total of 16 MB in transactions and 550KB of OP_RETURN data. Some protocols use OP_CHECKMULTISIG, OP_CHECKSIG and other methods so this doesn't account for everything.

However, the vast majority of bitcoin blockchain "bloat" is from standard bitcoin transactions.

Financial and accounting data has always contained more than just integer values of credit and debit. Who, how, when and why are just as important to good bookkeeping as to what was transacted.

Blockstore, by creating transferable digital property in the form of a key/value store, creates an economic incentive to use Bitcoin. Right now, Bitcoin needs all the help it can get. Consumer adoption will not happen if Bitcoin is just trying to be a public ledger of integer values that attempts to compete with MasterCard and Western Union.

Good thing is that no one really controls block chain.
No single entity controls it, but that doesn't mean you can do whatever you want. If someone is abusing the blockchain by bloating it with useless garbage, there will be consensus for fixing that. So don't build a business or technology around abusing Bitcoin's blockchain, because you will be left out.
Why not set clear rules? 1 byte of blockchain costs XXX millibitcoins. You like it — you use it. You don't like it — you don't use it. It's clear that if anyone can use blockchain as information storage, someone WILL do it, now or later. I think it's better to set the rules sooner than fix things later when they are out of control.
It's tough to set any simple firm rules that maintain the right incentives, because (roughly) each byte incurs costs on every node storing/verifying the blockchain, while any set one-time fee can only be collected by some subset of those nodes up-front.

Thus you can expect continuing push-and-pull negotiations, perhaps requiring a separate system of continued payments, if you really want indefinite, reliable, unalterable storage.

Don't bitcoin transaction fees provide a means to handle that without resort to fixed centralized policy?
No, because the miner who gets the fee isn't the only one who will have to work extra. All full nodes will have to relay and store that transaction. And there is no known way to pay full node operators in a way that can't be abused.
Not the past blockchain - but isn't the future blockchain format subject to changes?
Hi Ryan! Right, we need to avoid faster blockchain bloat(btw we already have this problem even with financial transactions, as Toshi node bootstrap takes few weeks even on a relatively powerful server), but best way is to store data into not-Bitcoin chain I guess, and better, to work on chains with optional storage for different kinds of data(financial state not depends on).