Subject: [bitcoin-dev] Why not checkpointing the transactions?

From: telemaco <[email-masked]>
Date: Fri, 9 Oct 2015 05:18:31 +0200

Hello,

I have been working on database engineering for many years and there are 
some things i don't understand very well about how bitcoin architecture 
works. I have not written here because i would not like to disturb 
development with yet another of those far to implement ideas that does 
not contribute to actual code as sometimes is said here.

On any case today I have been listening the last beyond bitcoin video 
about the new bitshares 2.0 and how they are changing the transaction 
structure to do it more similar to what relational database management 
systems have been doing for 30 years.

Keep a checkpointed state and just carry the new transactions. On rdbms, 
anyone if they want to perform historical research or something, they 
can just get the transaction log backups and reply every single 
transaction since the beginning of history.
Why is bitcoin network replying every single transaction since the 
beginning and not start from a closer state. Why is that information 
even stored on every core node? Couldn't we just have a checkpointed 
state and the new transactions and leave to "historical" nodes or 
collectors the backup of all the transactions since the beginning of 
history?

Replication rdbms have been working with this model for some time, just 
being able to replicate at table, column, index, row or even db level 
between many datacenters/continents and already serving the financial 
world, banks and exchanges. Their tps is very fast because they only 
transfer the smallest number of transactions that nodes decide to be 
suscribed to, maybe japan exchange just needs transactional info from 
japanese stocks on nasdaq or something similar. But even if they 
suscribe to everything, the transactional info is to some extent just a 
very small amount of information.

Couldn't we have just a very small transactional system with the fewest 
number of working transactions and advancing checkpointed states? We 
should be able to have nodes of the size of watches with that structure, 
instead of holding everything for ever for all eternity and hope on 
moore's law to keep us allowing infinite growth. What if 5 internet 
submarine cables get cut on a earth movement or war or there is a 
shortage of materials for chip manufacturing and the network moore's law 
cannot keep up. Shouldn't performance optimization and capacity planning 
go in both ways?. Having a really small working "transaction log" allows 
companies to rely some transactional info to little pdas on warehouses, 
or just relay a small amount of information to a satellite, not every 
single transaction of the company forever.

After all if we could have a very small transactional workload and leave 
behind the overload of all the previous transactions, we could have 
bitcoin nodes on watches and have an incredibly decentralized system 
that nobody can disrupt as the decentralization would be massive. We 
could even create a very small odbc, jdbc connector on the bitcoin 
client and just let any traditional rdbms system handle the heavy load 
and just let bitcoin core rely everyone and his mother to a level that 
noone could ever disrupt a very small amount of transactional data.

Just some thoughts. Please don't be very harsh, i am still researching 
bitcoin code and my intentions are the best as i cannot be more 
passionate about the project.

Thanks,