Hi Jeff

There where previous discussions about similar approaches [1] [2].

I’m not sure if compression should be built into the protocol.
My humble understanding of it, is, that it should be built into different 
layers.

If bandwidth is a concern, then on the fly gzip compression like apaches 
mod_deflate could be something. But I expect fast propagation is often more 
important then a ~30% bandwidth reduction.
Bandwidth may be a concern for historical blocks transmission. If you continue 
the proposal, I think you should focus on historical blocks.

If disk space is a concern, then the database layer should handle the 
compression.

Thanks
—
</jonas>


[1] 
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-November/011692.html
 
<https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-November/011692.html>
[2] https://github.com/bitcoin/bitcoin/pull/6973 
<https://github.com/bitcoin/bitcoin/pull/6973>



> Am 26.11.2017 um 16:11 schrieb Jeff Johnson via bitcoin-dev 
> <bitcoin-dev@lists.linuxfoundation.org>:
> 
> I'm new to this mailing list and apologize if this has been suggested before. 
> I was directed from the Bitcoin core github to this mailing list for 
> suggestions.
> 
> I'd just like to post a possible solution that increases the amount of data 
> in a block without actually increasing the size on disk or the size in memory 
> or the size transmitted over the Internet. Simply applying various 
> compression algorithms, I was able to achieve about a 50% compression ratio. 
> Here are my findings on a recent Bitcoin block using max compression for all 
> methods:
> 
> Raw block
> 998,198 bytes
> 
> Gzip
> 521,212 bytes (52% ratio)
> (needs 2MB to decompress).
> 
> LZMA
> 415,308 bytes (41% ratio)
> (1MB dictionary, needs 3MB to decompress)
> 
> - ZStandard: 469,179 bytes (47% ratio)
> (1MB memory to decompress)
> 
> - LZ4: 641,063 bytes (64% ratio)
> (32-64K to decompress)
> 
> The compression time on my modest laptop (2 years old) was "instant". I ran 
> all from the command line and did not notice any lag as I pressed enter to do 
> the compression, so easily less than a second. But compression time doesn't 
> matter, decompression time is what matters as blocks will be decompressed 
> billions of times more than they will be compressed. Decompression speed for 
> LZ4 is the fastest of the above methods, at 3.3GB / second, slightly less 
> than half the speed of memcpy, see char at (https://github.com/lz4/lz4 
> <https://github.com/lz4/lz4>).
> 
> If decompression speed, CPU and memory usage is a concern, LZ4 is a no 
> brainer. You basically get a 33% larger block size for "free". But ZStandard, 
> in my opinion, makes the most sense as it offers greater than 50% compression 
> ratio with a very good decompression ratio of 900MB / second.
> 
> If this were implemented in the Bitcoin protocol, there would need to be a 
> place to specify the compression type in a set of bits somewhere, so that 
> future compression algorithms could potentially be added.
> 
> Miners could do nothing and keep sending blocks as is, and these blocks would 
> have "no compression" as the type of compression, just as today. Or they 
> could opt in to compress blocks and choose how many transactions they want to 
> stuff into the block, keeping the compressed size under the limit.
> 
> The bitcoin client code would also need to be able to handle the appropriate 
> compression bits, and limits of signature data, etc. modified to deal with 
> the compression.
> 
> I understand schnorr signatures are on the roadmap as a 25% compression gain 
> which is great, I suspect that schnorr signatures would compress even further 
> when compressed with the above compression methods.
> 
> Here is a link to the block that I compressed: 
> https://mega.nz/#!YPIF2KTa!4FxxLvqzjqIftrkhXwSC2h4G4Dolk8dLteNUolEtq98 
> <https://mega.nz/#!YPIF2KTa!4FxxLvqzjqIftrkhXwSC2h4G4Dolk8dLteNUolEtq98>
> 
> Thanks for reading, best wishes to all.
> 
> -- Jeff Johnson
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Attachment: signature.asc
Description: Message signed with OpenPGP

_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to