#![no_main] use { bitcoin::{ locktime, opcodes, script::{self, PushBytes}, Transaction, TxOut, }, libfuzzer_sys::fuzz_target, ord::runes::Runestone, }; fuzz_target!(|input: Vec>| { let mut builder = script::Builder::new() .push_opcode(opcodes::all::OP_RETURN) .push_slice(b"RUNE_TEST"); for slice in input { let Ok(push): Result<&PushBytes, _> = slice.as_slice().try_into() else { continue; }; builder = builder.push_slice(push); } let tx = Transaction { input: Vec::new(), lock_time: locktime::absolute::LockTime::ZERO, output: vec![TxOut { script_pubkey: builder.into_script(), value: 0, }], version: 0, }; Runestone::from_transaction(&tx); });