Skip to content

Commit 0d4f349

Browse files
avishai12321robojobotsomeone235
authored
Enable smallvec const_generics and optimize script vector size (kaspanet#757)
Co-authored-by: robojobot <[email protected]> Co-authored-by: Ori Newman <[email protected]>
1 parent 3d0bf62 commit 0d4f349

File tree

6 files changed

+10
-10
lines changed

6 files changed

+10
-10
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ sha1 = "0.10.6"
244244
sha2 = "0.10.8"
245245
sha3 = "0.10.8"
246246
slugify-rs = "0.0.3"
247-
smallvec = { version = "1.11.1", features = ["serde"] }
247+
smallvec = { version = "1.11.1", features = ["serde", "const_generics"] }
248248
sorted-insert = "0.2.3"
249249
subtle = { version = "2.5.0", default-features = false }
250250
sysinfo = "0.31.2"

consensus/core/src/tx.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ mod tests {
684684
let vec = (0..SCRIPT_VECTOR_SIZE as u8).collect::<Vec<_>>();
685685
let spk = ScriptPublicKey::from_vec(0xc0de, vec.clone());
686686
let hex: String = serde_json::to_string(&spk).unwrap();
687-
assert_eq!("\"c0de000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223\"", hex);
687+
assert_eq!("\"c0de000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122\"", hex);
688688
let spk = serde_json::from_str::<ScriptPublicKey>(&hex).unwrap();
689689
assert_eq!(spk.version, 0xc0de);
690690
assert_eq!(spk.script.as_slice(), vec.as_slice());

consensus/core/src/tx/script_public_key.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use wasm_bindgen::prelude::*;
1919
use workflow_wasm::prelude::*;
2020

2121
/// Size of the underlying script vector of a script.
22-
pub const SCRIPT_VECTOR_SIZE: usize = 36;
22+
pub const SCRIPT_VECTOR_SIZE: usize = 35;
2323

2424
/// Used as the underlying type for script public key data, optimized for the common p2pk script size (34).
2525
pub type ScriptVec = SmallVec<[u8; SCRIPT_VECTOR_SIZE]>;
@@ -415,7 +415,7 @@ mod tests {
415415
let vec = (0..SCRIPT_VECTOR_SIZE as u8).collect::<Vec<_>>();
416416
let spk = ScriptPublicKey::from_vec(0xc0de, vec.clone()); // 0xc0de == 49374,
417417
let hex: String = serde_json::to_string(&spk).unwrap();
418-
assert_eq!("\"c0de000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223\"", hex);
418+
assert_eq!("\"c0de000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122\"", hex);
419419
let spk = serde_json::from_str::<ScriptPublicKey>(&hex).unwrap();
420420
assert_eq!(spk.version, 0xc0de);
421421
assert_eq!(spk.script.as_slice(), vec.as_slice());
@@ -453,7 +453,7 @@ mod tests {
453453
let version = 0xc0de;
454454
let vec: Vec<u8> = (0..SCRIPT_VECTOR_SIZE as u8).collect();
455455
let spk = ScriptPublicKey::from_vec(version, vec.clone());
456-
let str = "c0de000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223";
456+
let str = "c0de000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122";
457457
let js = to_value(&spk).unwrap();
458458
assert_eq!(js.as_string().unwrap(), str);
459459
let script_hex = spk.script_as_hex();

rpc/core/src/model/hex_cnv.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,13 @@ mod tests {
115115

116116
#[test]
117117
fn test_smallvec_hex_convert() {
118-
type TestVec = SmallVec<[u8; 36]>;
118+
type TestVec = SmallVec<[u8; 35]>;
119119

120120
let v: TestVec = smallvec![0x0, 0xab, 0x55, 0x30, 0x1f, 0x63];
121121
let k = "00ab55301f63";
122122
assert_eq!(k.len(), v.len() * 2);
123123
assert_eq!(k.to_string(), v.to_rpc_hex());
124-
assert_eq!(SmallVec::<[u8; 36]>::from_rpc_hex(k).unwrap(), v);
124+
assert_eq!(SmallVec::<[u8; 35]>::from_rpc_hex(k).unwrap(), v);
125125

126126
assert!(TestVec::from_rpc_hex("not a number").is_err());
127127
assert!(TestVec::from_rpc_hex("ab01").is_ok());

rpc/core/src/model/tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ mod mockery {
321321

322322
impl Mock for ScriptPublicKey {
323323
fn mock() -> Self {
324-
let mut bytes: [u8; 36] = [0; 36];
324+
let mut bytes: [u8; 35] = [0; 35];
325325
rand::thread_rng().fill(&mut bytes[..]);
326326
ScriptPublicKey::from_vec(0, bytes.to_vec())
327327
}

utils/src/hex.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,13 @@ mod tests {
142142

143143
#[test]
144144
fn test_smallvec_hex_convert() {
145-
type TestVec = SmallVec<[u8; 36]>;
145+
type TestVec = SmallVec<[u8; 35]>;
146146

147147
let v: TestVec = smallvec![0x0, 0xab, 0x55, 0x30, 0x1f, 0x63];
148148
let k = "00ab55301f63";
149149
assert_eq!(k.len(), v.len() * 2);
150150
assert_eq!(k.to_string(), v.to_hex());
151-
assert_eq!(SmallVec::<[u8; 36]>::from_hex(k).unwrap(), v);
151+
assert_eq!(SmallVec::<[u8; 35]>::from_hex(k).unwrap(), v);
152152

153153
assert!(TestVec::from_hex("not a number").is_err());
154154
assert!(TestVec::from_hex("ab01").is_ok());

0 commit comments

Comments
 (0)