MCPcopy Create free account
hub / github.com/BitVM/BitVM / read_u32_le

Method read_u32_le

bitvm/src/bigint/std.rs:96–128  ·  view source on GitHub ↗
(mut witness: Vec<Vec<u8>>)

Source from the content-addressed store, hash-verified

94 }
95
96 pub fn read_u32_le(mut witness: Vec<Vec<u8>>) -> Vec<u32> {
97 assert_eq!(witness.len() as u32, Self::N_LIMBS);
98
99 witness.reverse();
100
101 let mut bits: Vec<bool> = vec![];
102 for element in witness.iter() {
103 let limb = read_scriptint(element).unwrap();
104 for i in 0..LIMB_SIZE {
105 bits.push((limb & (1 << i)) != 0);
106 }
107 }
108
109 bits.resize(N_BITS as usize, false);
110
111 let mut u32s = vec![];
112
113 for chunk in bits.chunks(32) {
114 let mut chunk_vec = chunk.to_vec();
115 chunk_vec.resize(32, false);
116
117 let mut elem = 0u32;
118 for (i, chunk_i) in chunk_vec.into_iter().enumerate() {
119 if chunk_i {
120 elem += 1 << i;
121 }
122 }
123
124 u32s.push(elem);
125 }
126
127 u32s
128 }
129
130 pub fn push_u64_le(v: &[u64]) -> Script {
131 let v = v

Callers

nothing calls this directly

Calls 2

resizeMethod · 0.80
pushMethod · 0.45

Tested by

no test coverage detected