openethereum/crates/util/rlp-compress/src/common.rs
2021-01-14 15:30:57 +01:00

202 lines
5.4 KiB
Rust

// Copyright 2015-2019 Parity Technologies (UK) Ltd.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
//! Contains RLPs used for compression.
use Swapper;
lazy_static! {
/// Swapper for snapshot compression.
pub static ref SNAPSHOT_SWAPPER: Swapper<'static> = Swapper::new(EMPTY_RLPS, INVALID_RLPS);
}
lazy_static! {
/// Swapper with common long RLPs, up to 127 can be added.
pub static ref BLOCKS_SWAPPER: Swapper<'static> = Swapper::new(COMMON_RLPS, INVALID_RLPS);
}
static EMPTY_RLPS: &'static [&'static [u8]] = &[
// RLP of KECCAK_NULL_RLP
&[
160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224,
27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33,
],
// RLP of KECCAK_EMPTY
&[
160, 197, 210, 70, 1, 134, 247, 35, 60, 146, 126, 125, 178, 220, 199, 3, 192, 229, 0, 182,
83, 202, 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112,
],
];
static COMMON_RLPS: &'static [&'static [u8]] = &[
// RLP of KECCAK_NULL_RLP
&[
160, 86, 232, 31, 23, 27, 204, 85, 166, 255, 131, 69, 230, 146, 192, 248, 110, 91, 72, 224,
27, 153, 108, 173, 192, 1, 98, 47, 181, 227, 99, 180, 33,
],
// RLP of KECCAK_EMPTY
&[
160, 197, 210, 70, 1, 134, 247, 35, 60, 146, 126, 125, 178, 220, 199, 3, 192, 229, 0, 182,
83, 202, 130, 39, 59, 123, 250, 216, 4, 93, 133, 164, 112,
],
// Other RLPs found in blocks DB using the test below.
&[
160, 29, 204, 77, 232, 222, 199, 93, 122, 171, 133, 181, 103, 182, 204, 212, 26, 211, 18,
69, 27, 148, 138, 116, 19, 240, 161, 66, 253, 64, 212, 147, 71,
],
&[
148, 50, 190, 52, 59, 148, 248, 96, 18, 77, 196, 254, 226, 120, 253, 203, 211, 140, 16, 45,
136,
],
&[
148, 82, 188, 68, 213, 55, 131, 9, 238, 42, 191, 21, 57, 191, 113, 222, 27, 125, 123, 227,
181,
],
&[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
];
static INVALID_RLPS: &'static [&'static [u8]] = &[
&[0x81, 0x0],
&[0x81, 0x1],
&[0x81, 0x2],
&[0x81, 0x3],
&[0x81, 0x4],
&[0x81, 0x5],
&[0x81, 0x6],
&[0x81, 0x7],
&[0x81, 0x8],
&[0x81, 0x9],
&[0x81, 0xa],
&[0x81, 0xb],
&[0x81, 0xc],
&[0x81, 0xd],
&[0x81, 0xe],
&[0x81, 0xf],
&[0x81, 0x10],
&[0x81, 0x11],
&[0x81, 0x12],
&[0x81, 0x13],
&[0x81, 0x14],
&[0x81, 0x15],
&[0x81, 0x16],
&[0x81, 0x17],
&[0x81, 0x18],
&[0x81, 0x19],
&[0x81, 0x1a],
&[0x81, 0x1b],
&[0x81, 0x1c],
&[0x81, 0x1d],
&[0x81, 0x1e],
&[0x81, 0x1f],
&[0x81, 0x20],
&[0x81, 0x21],
&[0x81, 0x22],
&[0x81, 0x23],
&[0x81, 0x24],
&[0x81, 0x25],
&[0x81, 0x26],
&[0x81, 0x27],
&[0x81, 0x28],
&[0x81, 0x29],
&[0x81, 0x2a],
&[0x81, 0x2b],
&[0x81, 0x2c],
&[0x81, 0x2d],
&[0x81, 0x2e],
&[0x81, 0x2f],
&[0x81, 0x30],
&[0x81, 0x31],
&[0x81, 0x32],
&[0x81, 0x33],
&[0x81, 0x34],
&[0x81, 0x35],
&[0x81, 0x36],
&[0x81, 0x37],
&[0x81, 0x38],
&[0x81, 0x39],
&[0x81, 0x3a],
&[0x81, 0x3b],
&[0x81, 0x3c],
&[0x81, 0x3d],
&[0x81, 0x3e],
&[0x81, 0x3f],
&[0x81, 0x40],
&[0x81, 0x41],
&[0x81, 0x42],
&[0x81, 0x43],
&[0x81, 0x44],
&[0x81, 0x45],
&[0x81, 0x46],
&[0x81, 0x47],
&[0x81, 0x48],
&[0x81, 0x49],
&[0x81, 0x4a],
&[0x81, 0x4b],
&[0x81, 0x4c],
&[0x81, 0x4d],
&[0x81, 0x4e],
&[0x81, 0x4f],
&[0x81, 0x50],
&[0x81, 0x51],
&[0x81, 0x52],
&[0x81, 0x53],
&[0x81, 0x54],
&[0x81, 0x55],
&[0x81, 0x56],
&[0x81, 0x57],
&[0x81, 0x58],
&[0x81, 0x59],
&[0x81, 0x5a],
&[0x81, 0x5b],
&[0x81, 0x5c],
&[0x81, 0x5d],
&[0x81, 0x5e],
&[0x81, 0x5f],
&[0x81, 0x60],
&[0x81, 0x61],
&[0x81, 0x62],
&[0x81, 0x63],
&[0x81, 0x64],
&[0x81, 0x65],
&[0x81, 0x66],
&[0x81, 0x67],
&[0x81, 0x68],
&[0x81, 0x69],
&[0x81, 0x6a],
&[0x81, 0x6b],
&[0x81, 0x6c],
&[0x81, 0x6d],
&[0x81, 0x6e],
&[0x81, 0x6f],
&[0x81, 0x70],
&[0x81, 0x71],
&[0x81, 0x72],
&[0x81, 0x73],
&[0x81, 0x74],
&[0x81, 0x75],
&[0x81, 0x76],
&[0x81, 0x77],
&[0x81, 0x78],
&[0x81, 0x79],
&[0x81, 0x7a],
&[0x81, 0x7b],
&[0x81, 0x7c],
&[0x81, 0x7d],
&[0x81, 0x7e],
];