202 lines
5.4 KiB
Rust
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],
|
|
];
|