//! Independent pinned-consensus oracle. No Trident source, cached claim, mock
//! proof or reduced native-currency predicate is used.
mod artifact;
use neptune_consensus::proof_abstractions::tasm::program::TritonProgram;
use neptune_consensus::proof_abstractions::SecretWitness;
use neptune_consensus::transaction::primitive_witness::SaltedUtxos;
use neptune_consensus::transaction::transaction_kernel::TransactionKernelProxy;
use neptune_consensus::transaction::utxo::Utxo;
use neptune_consensus::transaction::validity::single_proof::SingleProof;
use neptune_consensus::type_scripts::native_currency::{NativeCurrency, NativeCurrencyWitness};
use neptune_consensus::type_scripts::native_currency_amount::NativeCurrencyAmount;
use neptune_primitives::timestamp::Timestamp;
use tasm_lib::triton_vm::{self, prelude::*};

fn witness(output_coins: u32) -> NativeCurrencyWitness {
    let kernel = TransactionKernelProxy {
        inputs: vec![],
        outputs: vec![],
        announcements: vec![],
        fee: NativeCurrencyAmount::coins(3),
        coinbase: None,
        timestamp: Timestamp::millis(1_000_000),
        mutator_set_hash: Digest::default(),
        merge_bit: false,
    }
    .into_kernel();
    NativeCurrencyWitness {
        salted_input_utxos: SaltedUtxos {
            utxos: vec![Utxo::new_native_currency(
                Digest::default(),
                NativeCurrencyAmount::coins(10),
            )],
            salt: [bfe!(11), bfe!(12), bfe!(13)],
        },
        salted_output_utxos: SaltedUtxos {
            utxos: vec![Utxo::new_native_currency(
                Digest::default(),
                NativeCurrencyAmount::coins(output_coins),
            )],
            salt: [bfe!(21), bfe!(22), bfe!(23)],
        },
        kernel,
    }
}
fn main() {
    let args: Vec<_> = std::env::args().collect();
    let program = NativeCurrency.program();
    assert_eq!(program.hash(), NativeCurrency.hash());
    let native = witness(7);
    let input = native.standard_input();
    let (trace, output) =
        VM::trace_execution(program.clone(), input.clone(), native.nondeterminism()).unwrap();
    eprintln!(
        "native-currency: cycles={}, padded_height={}",
        trace.processor_trace.nrows(),
        trace.padded_height()
    );
    let cycles = trace.processor_trace.nrows() as u64;
    assert!(output.is_empty());
    let invalid = witness(8);
    assert!(
        VM::run(
            program.clone(),
            invalid.standard_input(),
            invalid.nondeterminism()
        )
        .is_err(),
        "canonical inflation check did not reject"
    );
    let description = serde_json::json!({
        "upstream_revision":"9869b5e35b659dc520fad51ba5a9c812fed46db0",
        "program_digest":program.hash().values().map(|x|x.value()),
        "single_proof_digest":SingleProof.hash().values().map(|x|x.value()),
        "input":input.individual_tokens.iter().map(|x|x.value()).collect::<Vec<_>>(),
        "output":[],"relation":"10 input coins = 7 output coins + 3 kernel-authenticated fee coins",
    });
    println!("{}", serde_json::to_string_pretty(&description).unwrap());
    if let Some(path) = args.get(1) {
        let started = std::time::Instant::now();
        let (stark, claim, proof) =
            triton_vm::prove_program(program, input, native.nondeterminism()).unwrap();
        assert!(triton_vm::verify(stark, &claim, &proof));
        artifact::write(
            std::path::Path::new(path),
            &claim,
            &proof,
            cycles,
            started.elapsed().as_millis() as u64,
        );
        let artifact = serde_json::json!({"reference":description,"claim":claim,"proof":proof});
        std::fs::write(path, serde_json::to_vec_pretty(&artifact).unwrap()).unwrap();
    }
}

Homonyms

cyber/src/main.rs
cyb/cli/src/main.rs
cyb/optica/src/main.rs
soft3/nox/cli/main.rs
cyb/shell/src/main.rs
soft3/glia/import/main.rs
warriors/joy/cli/main.rs
cyb/apps/src/main.rs
warriors/trisha/cli/main.rs
neural/trident/src/main.rs
neural/rune/cli/main.rs
cyberia/cyberia-my/src/main.rs
soft3/tru/cli/main.rs
soft3/radio/iroh-dns-server/src/main.rs
neural/eidos/cli/src/main.rs
neural/rs/link/src/main.rs
neural/rs/pure-rust-check/src/main.rs
soft3/radio/iroh-relay/src/main.rs
soft3/radio/radio-cli/src/main.rs
soft3/glia/run/cli/main.rs
soft3/cybergraph/cli/src/main.rs
soft3/neuron/cli/src/main.rs
soft3/hemera/cli/src/main.rs
neural/rs/cli/src/main.rs
warriors/erga/cli/src/main.rs
neural/rs/macho-linker/src/main.rs
soft3/radio/particle/src/main.rs
soft3/lens/cli/src/main.rs
soft3/bbg/cli/src/main.rs
soft3/strata/cli/src/main.rs
neural/rs/rsc/src/main.rs
soft3/foculus/src/bin/main.rs
soft3/zheng/cli/src/main.rs
soft3/strata/jali/cli/src/main.rs
warriors/erga/rs/mine-bench/src/main.rs
neural/trident/silicon/src/bin/main.rs
cyb/wysm/crates/cli/src/main.rs
soft3/strata/genies/cli/src/main.rs
soft3/lytics/rs/agent/src/main.rs
warriors/erga/rs/rtable-bench/src/main.rs
cyb/honeycrisp/rane/src/probe/main.rs
soft3/strata/kuro/cli/src/main.rs
warriors/erga/rs/blake-bench/src/main.rs
soft3/mudra/audit/quantus-mldsa-crosscheck/src/main.rs
neural/inf/rs/cli/src/main.rs
cyb/honeycrisp/acpu/src/probe/main.rs
soft3/strata/trop/cli/src/main.rs
soft3/strata/nebu/cli/src/main.rs
soft3/lytics/rs/ingest/src/main.rs
cyb/honeycrisp/unimem/experiments/hyp_probe/src/main.rs
cyb/honeycrisp/unimem/experiments/iosurface_probe/src/main.rs
soft3/mudra/audit/signature-optimality/xnt-predicate-check/src/main.rs
cyb/honeycrisp/unimem/experiments/dext_contiguous_alloc/client/src/main.rs
cyb/honeycrisp/unimem/experiments/dext_iosurface_pa/client/src/main.rs

Graph