Pages:
Author

Topic: A rolling root to solve Bitcoin's scalability problem? - page 4. (Read 7369 times)

newbie
Activity: 58
Merit: 0
Discarded by whom?  "Considered invalid" by whom?

By all full-nodes.

Quote
Which ancient block?

The one that's at the back end of the rolling window.

Quote
Bitcoin is an imperfect solution to a very hard problem.  You can't just handwave it all away like Dilbert's boss.

I agree and I'm doing my best to give concrete answers to these questions that are not handwavy.
donator
Activity: 1218
Merit: 1080
Gerald Davis
Only the private key holder of the tx output can create a new tx.  There is no mechanism to "copy the outputs as a new transactions to the head" and then verify off that.
kjj
legendary
Activity: 1302
Merit: 1026
If I "sent" you coins and you didn't have the block which contained the transaction which contained that output how would you validate the input is valid and not just some nonsense I sent you because I know you have no way of validating?

That just wouldn't be possible. It would be discarded like all other invalid transactions.

You wouldn't be able to send to or from an outdated address (it would be considered invalid). You'd use the new ones that were copied as new transactions to the head. It's possible I am misunderstanding (I've only read the original paper a couple times, and perused the wiki, but I'm not working with the code itself).

Sidenote: consensus about an ancient block should be extremely high. There should be no disagreement about it.

Discarded by whom?  "Considered invalid" by whom?  Which ancient block?

Bitcoin is an imperfect solution to a very hard problem.  You can't just handwave it all away like Dilbert's boss.

http://dilbert.com/strips/comic/1994-10-17/
newbie
Activity: 58
Merit: 0
If I "sent" you coins and you didn't have the block which contained the transaction which contained that output how would you validate the input is valid and not just some nonsense I sent you because I know you have no way of validating?

That just wouldn't be possible. It would be discarded like all other invalid transactions.

You wouldn't be able to send to or from an outdated address (it would be considered invalid). You'd use the new ones that were copied as new transactions to the head. It's possible I am misunderstanding (I've only read the original paper a couple times, and perused the wiki, but I'm not working with the code itself).

Sidenote: consensus about an ancient block should be extremely high. There should be no disagreement about it.
donator
Activity: 1218
Merit: 1080
Gerald Davis
Still don't get what the problem is...

Well you are abstracting away the entire problem.  It is like saying how can we get into space and your answer is you keep going up until you are there.

Rereading your OP my guess is you don't understand how Bitcoin works (what is a transaction?  how does it work?  what are outputs?  what is the UXTO?  how can we verify that any given output is valid?).

If I "sent" you coins and you didn't have the block which contained the transaction which contained that output how would you validate the input is valid and not just some nonsense I sent you because I know you have no way of validating?
newbie
Activity: 58
Merit: 0
How do you reach "internet-agreement"?

One way would be to do what you already do (checkpoints), although those are controversial.

I haven't given it too much thought, but it might be possible to do something like have a hard coded rolling window, and have nodes mark the new root with some flag ("currentRoot = true").

New nodes could ask others for the current root then. If nodes lie about it, there are one of two possible scenarios:

- They give a root that is too old. This can be mitigated by asking multiple nodes and picking the majority answer, combined with simply downloading the rest of the blockchain. If it got unlucky and the majority lied, it will eventually catch up and discard the outdated root on its own anyway because of the rolling window that's hard coded.

- They give a root that's too young. This can be mitigated, again, by asking multiple nodes. If it also gets unlucky with its chosen majority, it should be able to figure this out because it's assumed that not all nodes are evil, and it will eventually stumble across a trustworthy one, which would make it have a longer blockchain than the ones that the lying nodes gave it, and it would automatically adopt that one.

I'm making these answers up on the fly btw. I'm sure better ones could be given with more thought.

Still don't get what the problem is...
donator
Activity: 1218
Merit: 1080
Gerald Davis
How do you reach "internet-agreement"?

Better yet how do the new nodes verify that the agreement has been reached and that agreement is valid.

To OP, the reality is most nodes in the future will be SPV.  The storage requirements are maybe 1% of that of a full node.   Eventually even most "full nodes" will be storing only a pruned copy of the db.  Today that means a 80%+ reduction in storage requirements and that will only improve in time.   Some nodes (maybe call them archive nodes to distinguish from full nodes) will need a full copy of the blockchain and for them the cost will be worth it.  If you are a major exchange and are making $1B a month in profit (and you would if Bitcoin is so huge it has higher tx volume them VISA) do you think it might be worth it to pay $1,000 a year in additional storage cost to add some drives to the SAN?  I think it might be.
legendary
Activity: 905
Merit: 1014
How do you reach "internet-agreement"?
newbie
Activity: 58
Merit: 0
How else would you bring new nodes online?

Download the internet-agreed upon new "rolling-genesis-block-snapshot".
legendary
Activity: 905
Merit: 1014
How else would you bring new nodes online?
newbie
Activity: 58
Merit: 0
EDIT June 18, 2014: To avoid confusion: this thread is now about a solution to the tremendous (and increasing) financial and temporal costs of bringing new nodes online, not disk space.

This was debated before, what you call  "rolling root" we called "ledger-solution"/"ledger-block".

Same idea; every say 1 year you would take all the 20 years or older transactions and move their unspent outputs to the latest "ledger block". Amounts in the ledger block would be much like coinbase transactions/miners fees.
Barring minor minor data growth from address fragmentation and perhaps block headers, this puts a quite final limit to the blockchain size.

Another idea (of my own) was "swarm clients" that individually would validate only parts of the blockchain, but as a whole would validate the whole thing - all zero trust etc..
This would allow for almost the smallest devices to participate in block validation forever.

You can google these terms, and I do mean google, the forum search is shite.

The main reason nothing has happened yet is laziness and people too busy getting rich off of Bitcoin - and no you can't lump me in with that group I have been hard at work helping Bitcoin for a while now.

Edit2 March 5, 2014: Something not previously noted here is that bitcoind can (and might already in some ways do) prune its locally stored blockchain, but only after it downloaded the entire thing once. Thus, this issue is more of a problem (I think) for new full-nodes, which currently must download the entire blockchain before they can prune the entire thing.
Pages:
Jump to: