Bitcoin Forum
July 20, 2024, 06:24:04 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Block Chain Size Solution: Gather all bitcoins into super account, redistribute  (Read 5313 times)
Skybuck (OP)
Full Member
***
Offline Offline

Activity: 384
Merit: 110


View Profile
September 15, 2013, 07:13:07 PM
 #1

Hello,

I'd like to write down this solution for you developers if there is ever a situation were the block chain's size gets out of control.

(Basic idea is to "reset" the blockchain and build a new chain which would hopefully be much smaller)

One possible solution to bring it back under control and perhaps also add some privacy as a side effect would be the following:

Step 1: Take all money from existing bitcoin users/wallets/addresses and pool it into one big new super account.

1. A ledger is build, which shows all existing accounts/money that is currently in the system and in people's wallets.

2. All this money is totalled and transferred to a main/new developer account.

Step 2. Re-distribute the money from the super account back to individual bitcoin addresses.

3. The main/new developer account is then used to distribute this money back to all existing accounts/bitcoin addresses, to give back all the money to the wallets.

4. This can be done by simply using the existing transaction infrastructure/code with perhaps only some slight tweaks to allow the super account to do this.

5. This effectively builds up a new block chain which shows how all the money from the super account is transferred to existing bitcoin addresses.

6. This will hopefully significantly reduce the block chain size (it's like all intermediate transactions are pruned).

Step 3. Throw away the old block chain.

7. The old block chain can now safely been thrown away for these that wish to throw it away.

8. Others can store it to verify the super account for historical reasons.

Technical feasibility:

9. By adding the super account to the bitcoin source code this can be enforced.

10. Building of the new block chain could happen on a seperate block chain thread.

11. At a certain point in the future the old block chain is removed, and the new block chain is used.

12. Transactions which happened during this transition period could later be re-added to the new block chain. (If this leads to double spending oppertunities needs to be investigated further).

13. Alternatively bitcoin trading/system could be halted until the new blockchain is in place to prevent any double spending threats or issues/attacks that might exist in this idea.

Side-Effects:

14. Since older transactions are now deleted, some privacy might return, though people are free to store the entire old blockchain, so it's no privacy garantuee.

Bye,
  Skybuck.
wabber
Member
**
Offline Offline

Activity: 85
Merit: 10


View Profile
September 15, 2013, 07:59:16 PM
 #2

Well, as far as i can see you are proposing to prune everything but unspent outputs. That's nothing new. The only thing that's new is doing this by transfering everything to a developer and then back to individual wallets, so in your scenario the developer holding that super account can fck up everything if he wants to.

Doesn't sound very good to me.
Skybuck (OP)
Full Member
***
Offline Offline

Activity: 384
Merit: 110


View Profile
September 15, 2013, 08:21:46 PM
 #3

Well, as far as i can see you are proposing to prune everything but unspent outputs. That's nothing new. The only thing that's new is doing this by transfering everything to a developer and then back to individual wallets, so in your scenario the developer holding that super account can fck up everything if he wants to.

Doesn't sound very good to me.

What is the alternative according to you ? Prune the blockchain by individual clients/users ? How can such individual pruning be trusted ?

Even for pruning it must probably be done by a trusted source, for example the bitcoin source/software but there has to be a way to verify that it was done correctly. Thus the main developers could be the source of the trust. It must however also be veriefiable that it was done correctly.

The client can be build/coded in such a way that it checks if it was done correctly, otherwise it would not accept the new blockchain.

There could also be other benefits: Perhaps new bitcoins could be introduced, I am not sure if that makes any sense logically ? I think it could.

If I remember correctly the ammount of bitcoins is based on the number of blocks in the block chain.

By reducing/rebuilding the block chain this could give new incencitives to miners to keep participating in bitcoin mining.

However perhaps there is an unforseen problem with this idea... suddenly there would be more bitcoins then the rules allow... so this will have to be  looked further into if this is a problem or not.

If it is a problem, the super account could also introduce a new root for the block chain discribing what happened, how many bitcoins were mined and start from that offset to keep everything as it was.

Building this new block chain could be done offline to take it slowly. Alternatively it could also be done in a distributed fashion, but might require new algorithms. The new block chain transactions awards miners as usual... though these rewards go online/accessible when the new block chain is in effect.
maaku
Legendary
*
expert
Offline Offline

Activity: 905
Merit: 1012


View Profile
September 15, 2013, 08:37:56 PM
 #4

Block chain pruning is very well understood, and can be done safely. The reference client already does this (the data is kept around but the index used for validation is pruned). Search the forum and dev mailing list: we won't rehash it here.

I'm an independent developer working on bitcoin-core, making my living off community donations.
If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
Skybuck (OP)
Full Member
***
Offline Offline

Activity: 384
Merit: 110


View Profile
September 15, 2013, 08:40:56 PM
 #5

Ok, any idea what the current block chain/database size is for bitcoin ?
maaku
Legendary
*
expert
Offline Offline

Activity: 905
Merit: 1012


View Profile
September 15, 2013, 09:27:52 PM
 #6

Code:
$ bitcoind gettxoutsetinfo
{
    "height" : 258203,
    "bestblock" : "00000000000000160e92679f151f08aabd44893a18e5084849d24e687ae8d1e0",
    "transactions" : 2092536,
    "txouts" : 7045322,
    "bytes_serialized" : 243229507,
    "hash_serialized" : "2de63f62e11c12da10410e3a51dea1d47c1a14b8d232d38f23844fa46b9e58f7",
    "total_amount" : 11704939.80231183
}

That's about 243MB.

I'm an independent developer working on bitcoin-core, making my living off community donations.
If you like my work, please consider donating yourself: 13snZ4ZyCzaL7358SmgvHGC9AxskqumNxP
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!