BitcoinNetwork / src /verifier.rs
LordXido's picture
Update src/verifier.rs
b5ac7c4 verified
raw
history blame contribute delete
669 Bytes
use crate::opcode::Opcode;
pub fn verify_program(bytes: &[u8]) -> Result<(), String> {
if bytes.len() % 8 != 0 {
return Err("Program length must be multiple of 8 bytes".into());
}
if bytes.len() > 8192 {
return Err("Program too large".into());
}
for chunk in bytes.chunks(8) {
let opcode = Opcode::from_byte(chunk[0])
.ok_or("Unknown opcode")?;
if (0xE0..=0xE5).contains(&chunk[0]) {
return Err("Constitutional violation".into());
}
if opcode == Opcode::CISS && chunk[5] == 0 {
return Err("Zero credit issuance forbidden".into());
}
}
Ok(())
}