commit edd69a0c12d033c6fc3aae1c17015925168762ea
parent 376a1d4c8e8dc0042c9f9b3575dae9b4c3b8d3a3
Author: triesap <tyson@radroots.org>
Date: Sun, 12 Jul 2026 00:51:05 +0000
crate-surface: adopt final RHI crate names
- move RHI dependencies to final event and trade SP1 package names
- update DVM and receipt paths for current trade witness types
- align proof smoke local-execute capability with host guest ELF availability
- validate with cargo check, cargo test, and removed-name scans
Diffstat:
11 files changed, 191 insertions(+), 178 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
@@ -3376,7 +3376,7 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
name = "radroots_authority"
version = "0.1.0-alpha.2"
dependencies = [
- "radroots_events",
+ "radroots_event",
]
[[package]]
@@ -3389,7 +3389,7 @@ dependencies = [
]
[[package]]
-name = "radroots_events"
+name = "radroots_event"
version = "0.1.0-alpha.2"
dependencies = [
"hex",
@@ -3400,12 +3400,12 @@ dependencies = [
]
[[package]]
-name = "radroots_events_codec"
+name = "radroots_event_codec"
version = "0.1.0-alpha.2"
dependencies = [
"nostr",
"radroots_core",
- "radroots_events",
+ "radroots_event",
"serde",
"serde_json",
]
@@ -3415,7 +3415,7 @@ name = "radroots_identity"
version = "0.1.0-alpha.2"
dependencies = [
"nostr",
- "radroots_events",
+ "radroots_event",
"radroots_protected_store",
"radroots_runtime",
"radroots_runtime_paths",
@@ -3443,8 +3443,8 @@ version = "0.1.0-alpha.2"
dependencies = [
"nostr",
"nostr-sdk",
- "radroots_events",
- "radroots_events_codec",
+ "radroots_event",
+ "radroots_event_codec",
"radroots_identity",
"reqwest",
"serde",
@@ -3500,9 +3500,15 @@ name = "radroots_secret_vault"
version = "0.1.0-alpha.2"
[[package]]
-name = "radroots_sp1_guest_trade"
+name = "radroots_trade"
version = "0.1.0-alpha.2"
dependencies = [
+ "base64 0.22.1",
+ "hex",
+ "radroots_authority",
+ "radroots_core",
+ "radroots_event",
+ "radroots_event_codec",
"serde",
"serde_json",
"sha2",
@@ -3510,35 +3516,29 @@ dependencies = [
]
[[package]]
-name = "radroots_sp1_host_trade"
+name = "radroots_trade_sp1_guest"
version = "0.1.0-alpha.2"
dependencies = [
- "base64 0.22.1",
- "bincode",
- "futures",
- "radroots_sp1_guest_trade",
- "radroots_trade",
"serde",
"serde_json",
"sha2",
- "sp1-build",
- "sp1-sdk",
"thiserror 1.0.69",
]
[[package]]
-name = "radroots_trade"
+name = "radroots_trade_sp1_host"
version = "0.1.0-alpha.2"
dependencies = [
"base64 0.22.1",
- "hex",
- "radroots_authority",
- "radroots_core",
- "radroots_events",
- "radroots_events_codec",
+ "bincode",
+ "futures",
+ "radroots_trade",
+ "radroots_trade_sp1_guest",
"serde",
"serde_json",
"sha2",
+ "sp1-build",
+ "sp1-sdk",
"thiserror 1.0.69",
]
@@ -3749,16 +3749,16 @@ dependencies = [
"anyhow",
"clap",
"radroots_core",
- "radroots_events",
- "radroots_events_codec",
+ "radroots_event",
+ "radroots_event_codec",
"radroots_identity",
"radroots_log",
"radroots_nostr",
"radroots_runtime",
"radroots_runtime_paths",
- "radroots_sp1_guest_trade",
- "radroots_sp1_host_trade",
"radroots_trade",
+ "radroots_trade_sp1_guest",
+ "radroots_trade_sp1_host",
"reqwest",
"serde",
"serde_json",
diff --git a/Cargo.toml b/Cargo.toml
@@ -12,37 +12,37 @@ resolver = "2"
[workspace.dependencies]
radroots_core = { path = "../lib/crates/core" }
-radroots_events = { path = "../lib/crates/events" }
-radroots_events_codec = { path = "../lib/crates/events_codec" }
+radroots_event = { path = "../lib/crates/event" }
+radroots_event_codec = { path = "../lib/crates/event_codec" }
radroots_identity = { path = "../lib/crates/identity" }
radroots_log = { path = "../lib/crates/log" }
radroots_nostr = { path = "../lib/crates/nostr" }
radroots_runtime = { path = "../lib/crates/runtime" }
radroots_runtime_paths = { path = "../lib/crates/runtime_paths" }
-radroots_sp1_guest_trade = { path = "../lib/crates/sp1_guest_trade" }
-radroots_sp1_host_trade = { path = "../lib/crates/sp1_host_trade" }
+radroots_trade_sp1_guest = { path = "../lib/crates/trade_sp1_guest" }
+radroots_trade_sp1_host = { path = "../lib/crates/trade_sp1_host" }
radroots_trade = { path = "../lib/crates/trade" }
[features]
default = []
-sp1_verify = ["radroots_sp1_host_trade/sp1_verify"]
-sp1_proving = ["sp1_verify", "radroots_sp1_host_trade/sp1_proving"]
-sp1_cuda_proving = ["sp1_proving", "radroots_sp1_host_trade/sp1_cuda"]
+sp1_verify = ["radroots_trade_sp1_host/sp1_verify"]
+sp1_proving = ["sp1_verify", "radroots_trade_sp1_host/sp1_proving"]
+sp1_cuda_proving = ["sp1_proving", "radroots_trade_sp1_host/sp1_cuda"]
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage_nightly)'] }
[dependencies]
radroots_core = { workspace = true, features = ["std", "serde"] }
-radroots_events = { workspace = true, features = ["serde"] }
-radroots_events_codec = { workspace = true, features = ["nostr"] }
+radroots_event = { workspace = true, features = ["serde"] }
+radroots_event_codec = { workspace = true, features = ["nostr"] }
radroots_identity = { workspace = true }
radroots_log = { workspace = true }
radroots_nostr = { workspace = true, features = ["client", "codec", "events", "http"] }
radroots_runtime = { workspace = true, features = ["cli"] }
radroots_runtime_paths = { workspace = true }
-radroots_sp1_guest_trade = { workspace = true }
-radroots_sp1_host_trade = { workspace = true }
+radroots_trade_sp1_guest = { workspace = true }
+radroots_trade_sp1_host = { workspace = true }
radroots_trade = { workspace = true }
anyhow = { version = "1" }
diff --git a/src/adapters/nostr/event.rs b/src/adapters/nostr/event.rs
@@ -1,4 +1,4 @@
-use radroots_events_codec::job::traits::{JobEventBorrow, JobEventLike};
+use radroots_event_codec::job::traits::{JobEventBorrow, JobEventLike};
use radroots_nostr::prelude::{RadrootsNostrEvent, RadrootsNostrKind};
#[derive(Clone, Debug)]
@@ -81,7 +81,7 @@ impl JobEventLike for NostrEventAdapter<'_> {
#[cfg_attr(coverage_nightly, coverage(off))]
mod tests {
use super::NostrEventAdapter;
- use radroots_events_codec::job::traits::{JobEventBorrow, JobEventLike};
+ use radroots_event_codec::job::traits::{JobEventBorrow, JobEventLike};
use radroots_nostr::prelude::{
RadrootsNostrEvent, RadrootsNostrEventBuilder, RadrootsNostrKeys, RadrootsNostrKind,
RadrootsNostrTag, RadrootsNostrTagKind,
diff --git a/src/config.rs b/src/config.rs
@@ -299,7 +299,7 @@ mod tests {
RadrootsHostEnvironment, RadrootsPathOverrides, RadrootsPathProfile, RadrootsPathResolver,
RadrootsPlatform, RadrootsRuntimeNamespace,
};
- use radroots_sp1_host_trade::RadrootsSp1TradeProofMode;
+ use radroots_trade_sp1_host::RadrootsSp1TradeProofMode;
use std::path::PathBuf;
fn linux_resolver() -> RadrootsPathResolver {
diff --git a/src/features/trade_listing/handlers/dvm.rs b/src/features/trade_listing/handlers/dvm.rs
@@ -3,9 +3,9 @@
use std::{sync::Arc, time::Duration};
-use radroots_events::farm::RadrootsFarmRef;
-use radroots_events::ids::{RadrootsEventId, RadrootsPublicKey};
-use radroots_events::kinds::{
+use radroots_event::farm::RadrootsFarmRef;
+use radroots_event::ids::{RadrootsEventId, RadrootsPublicKey};
+use radroots_event::kinds::{
KIND_FARM, KIND_JOB_FEEDBACK, KIND_ORDER_CANCELLATION, KIND_ORDER_DECISION, KIND_ORDER_REQUEST,
KIND_ORDER_REVISION_DECISION, KIND_ORDER_REVISION_PROPOSAL,
KIND_TRADE_LISTING_VALIDATION_REQUEST, KIND_TRADE_LISTING_VALIDATION_RESULT,
@@ -13,14 +13,12 @@ use radroots_events::kinds::{
KIND_TRADE_VALIDATION_RECEIPT, is_listing_kind, is_order_event_kind,
is_trade_validation_service_event_kind,
};
-use radroots_events::trade_validation::{
+use radroots_event::trade_validation::{
RadrootsTradeValidationListingError as TradeListingValidationError,
RadrootsTradeValidationListingRequest as TradeListingValidateRequest,
RadrootsTradeValidationListingResult as TradeListingValidateResult,
};
-use radroots_events_codec::order::{
- RadrootsOrderEnvelopeParseError, parse_order_listing_event_tag,
-};
+use radroots_event_codec::order::{RadrootsOrderEnvelopeParseError, parse_order_listing_event_tag};
use radroots_nostr::prelude::{
RadrootsNostrClient, RadrootsNostrEvent, RadrootsNostrEventBuilder, RadrootsNostrFilter,
RadrootsNostrKeys, RadrootsNostrKind, RadrootsNostrTag, radroots_event_from_nostr,
@@ -447,7 +445,7 @@ async fn handle_listing_validate_request(
async fn resolve_listing_event(
client: &RadrootsNostrClient,
listing_addr: &str,
- listing_event: Option<radroots_events::RadrootsNostrEventPtr>,
+ listing_event: Option<radroots_event::RadrootsEventPtr>,
) -> Result<Option<RadrootsNostrEvent>, TradeListingDvmError> {
match listing_event {
Some(ptr) => fetch_event_by_id_io(client, &ptr.id).await.map(Some),
@@ -542,7 +540,7 @@ async fn handle_order_request(
async fn ensure_listing_snapshot(
listing_addr: &str,
- listing_event: &radroots_events::RadrootsNostrEventPtr,
+ listing_event: &radroots_event::RadrootsEventPtr,
client: &RadrootsNostrClient,
state: &Arc<tokio::sync::Mutex<TradeListingState>>,
) -> Result<String, TradeListingDvmError> {
@@ -691,8 +689,8 @@ async fn fetch_listing_by_addr(
.kind(RadrootsNostrKind::Custom(kind))
.author(author)
.identifier(addr.listing_id.into_string());
- let events = fetch_events_io(client, filter, Duration::from_secs(10)).await?;
- Ok(events
+ let event = fetch_events_io(client, filter, Duration::from_secs(10)).await?;
+ Ok(event
.into_iter()
.filter(|event| event.kind == RadrootsNostrKind::Custom(kind))
.max_by_key(|event| event.created_at))
@@ -704,8 +702,8 @@ async fn fetch_latest_event_by_kind(
filter: RadrootsNostrFilter,
kind: RadrootsNostrKind,
) -> Result<Option<RadrootsNostrEvent>, TradeListingDvmError> {
- let events = fetch_events_io(client, filter, Duration::from_secs(10)).await?;
- Ok(events
+ let event = fetch_events_io(client, filter, Duration::from_secs(10)).await?;
+ Ok(event
.into_iter()
.filter(|event| event.kind == kind)
.max_by_key(|event| event.created_at))
@@ -818,23 +816,23 @@ mod tests {
use radroots_core::{
RadrootsCoreCurrency, RadrootsCoreDecimal, RadrootsCoreMoney, RadrootsCoreUnit,
};
- use radroots_events::RadrootsNostrEventPtr;
- use radroots_events::farm::RadrootsFarmRef;
- use radroots_events::ids::{
+ use radroots_event::RadrootsEventPtr;
+ use radroots_event::farm::RadrootsFarmRef;
+ use radroots_event::ids::{
RadrootsEventId, RadrootsInventoryBinId, RadrootsListingAddress, RadrootsOrderId,
RadrootsOrderQuoteId, RadrootsPublicKey,
};
- use radroots_events::kinds::{
+ use radroots_event::kinds::{
KIND_LISTING, KIND_ORDER_REQUEST, KIND_TRADE_LISTING_VALIDATION_REQUEST,
};
- use radroots_events::order::{
+ use radroots_event::order::{
RadrootsOrderCancellation, RadrootsOrderDecision, RadrootsOrderDecisionOutcome,
RadrootsOrderEconomicItem, RadrootsOrderEconomicLine, RadrootsOrderEconomics,
RadrootsOrderInventoryCommitment, RadrootsOrderItem, RadrootsOrderPricingBasis,
RadrootsOrderRequest,
};
- use radroots_events::trade_validation::RadrootsTradeValidationListingRequest;
- use radroots_events_codec::order::{
+ use radroots_event::trade_validation::RadrootsTradeValidationListingRequest;
+ use radroots_event_codec::order::{
order_cancellation_event_build, order_decision_event_build, order_request_event_build,
};
use radroots_nostr::prelude::{
@@ -888,8 +886,8 @@ mod tests {
RadrootsEventId::parse(event.id.to_string()).expect("event id")
}
- fn listing_event_ptr() -> RadrootsNostrEventPtr {
- RadrootsNostrEventPtr {
+ fn listing_event_ptr() -> RadrootsEventPtr {
+ RadrootsEventPtr {
id: listing_event_id().to_string(),
relays: None,
}
diff --git a/src/features/trade_listing/processed_jobs.rs b/src/features/trade_listing/processed_jobs.rs
@@ -1314,7 +1314,7 @@ mod tests {
}
#[tokio::test]
- async fn processed_job_store_prevents_unexpired_duplicate_claims_and_reclaims_expired_claims() {
+ async fn processed_job_store_prevent_unexpired_duplicate_claims_and_reclaims_expired_claims() {
let store = RhiProcessedJobStore::open_memory().expect("store");
let job = job("request-2");
diff --git a/src/features/trade_listing/subscriber.rs b/src/features/trade_listing/subscriber.rs
@@ -5,7 +5,7 @@ use std::convert::TryFrom;
use std::time::Duration;
use anyhow::{Result, anyhow};
-use radroots_events::kinds::{
+use radroots_event::kinds::{
KIND_LISTING, KIND_LISTING_DRAFT, ORDER_EVENT_KINDS, TRADE_VALIDATION_EVENT_KINDS,
is_trade_validation_service_event_kind,
};
diff --git a/src/features/trade_validation_receipt.rs b/src/features/trade_validation_receipt.rs
@@ -1,15 +1,15 @@
#![forbid(unsafe_code)]
#![cfg_attr(coverage_nightly, coverage(off))]
-use radroots_events::ids::RadrootsEventId;
-use radroots_events::kinds::{
+use radroots_event::ids::RadrootsEventId;
+use radroots_event::kinds::{
KIND_TRADE_TRANSITION_PROOF_REQUEST, KIND_TRADE_TRANSITION_PROOF_RESULT,
KIND_TRADE_VALIDATION_RECEIPT, is_listing_kind,
};
-use radroots_events::order::{
+use radroots_event::order::{
RadrootsOrderDecision, RadrootsOrderDecisionOutcome, RadrootsOrderRequest,
};
-use radroots_events_codec::order::{
+use radroots_event_codec::order::{
order_decision_from_event, order_request_from_event, parse_order_listing_event_tag,
parse_order_prev_tag, parse_order_root_tag,
};
@@ -18,29 +18,16 @@ use radroots_nostr::prelude::{
RadrootsNostrKind, RadrootsNostrTimestamp, radroots_event_from_nostr,
radroots_nostr_build_event, radroots_nostr_fetch_event_by_id, radroots_nostr_filter_tag,
};
-use radroots_sp1_guest_trade::{
- RADROOTS_SP1_TRADE_ORDER_ACCEPTANCE_PROOF_TARGET, RADROOTS_SP1_TRADE_PROTOCOL_VERSION,
- RADROOTS_SP1_TRADE_REDUCER_PROGRAM_HASH, RADROOTS_SP1_TRADE_WITNESS_VERSION,
- RadrootsSp1TradeCanonicalEventEvidence, RadrootsSp1TradeEventEvidenceRole,
- RadrootsSp1TradeEventWorkflowPosition, RadrootsSp1TradeInventoryBinWitness,
- RadrootsSp1TradeInventoryCommitmentWitness, RadrootsSp1TradeOrderAcceptanceWitness,
- RadrootsSp1TradeOrderDecisionEventWitness, RadrootsSp1TradeOrderDecisionWitness,
- RadrootsSp1TradeOrderItemWitness, RadrootsSp1TradeOrderRequestWitness,
-};
-use radroots_sp1_host_trade::{
- RadrootsSp1TradeHostError, RadrootsSp1TradeProofBundle, RadrootsSp1TradeProofMode,
- generate_order_acceptance_proof, validation_receipt_for_order_acceptance_proof,
- verify_order_acceptance_proof_artifact_structure,
-};
use radroots_trade::dvm::{
+ RadrootsOrderDecisionEventWitnessDto, RadrootsOrderDecisionWitnessDto,
+ RadrootsOrderItemWitnessDto, RadrootsOrderRequestWitnessDto,
RadrootsTradeCanonicalEventEvidenceDto, RadrootsTradeCanonicalEventEvidenceRole,
RadrootsTradeCanonicalEventWorkflowPosition, RadrootsTradeDvmError,
RadrootsTradeInventoryBinWitnessDto, RadrootsTradeInventoryCommitmentWitnessDto,
- RadrootsTradeOrderDecisionEventWitnessDto, RadrootsTradeOrderDecisionWitnessDto,
- RadrootsTradeOrderItemWitnessDto, RadrootsTradeOrderRequestWitnessDto, RadrootsTradeProofMode,
- RadrootsTradeTransitionProofRequestEnvelope, RadrootsTradeTransitionProofRequestV1,
- RadrootsTradeTransitionProofResultBinding, build_transition_proof_request_tags,
- build_transition_proof_result_tags, parse_transition_proof_request_event,
+ RadrootsTradeProofMode, RadrootsTradeTransitionProofRequestEnvelope,
+ RadrootsTradeTransitionProofRequestV1, RadrootsTradeTransitionProofResultBinding,
+ build_transition_proof_request_tags, build_transition_proof_result_tags,
+ parse_transition_proof_request_event,
};
use radroots_trade::validation_receipt::{
RadrootsTradeCommitmentConfidence, RadrootsTradeValidationAuthority,
@@ -57,6 +44,20 @@ use radroots_trade::{
RadrootsTradeWorkflowRecords, RadrootsTradeWorkflowState, reduce_trade_workflow_records,
},
};
+use radroots_trade_sp1_guest::{
+ RADROOTS_SP1_TRADE_ORDER_ACCEPTANCE_PROOF_TARGET, RADROOTS_SP1_TRADE_PROTOCOL_VERSION,
+ RADROOTS_SP1_TRADE_REDUCER_PROGRAM_HASH, RADROOTS_SP1_TRADE_WITNESS_VERSION,
+ RadrootsSp1TradeCanonicalEventEvidence, RadrootsSp1TradeEventEvidenceRole,
+ RadrootsSp1TradeEventWorkflowPosition, RadrootsSp1TradeInventoryBinWitness,
+ RadrootsSp1TradeInventoryCommitmentWitness, RadrootsSp1TradeOrderAcceptanceWitness,
+ RadrootsSp1TradeOrderDecisionEventWitness, RadrootsSp1TradeOrderDecisionWitness,
+ RadrootsSp1TradeOrderItemWitness, RadrootsSp1TradeOrderRequestWitness,
+};
+use radroots_trade_sp1_host::{
+ RadrootsSp1TradeHostError, RadrootsSp1TradeProofBundle, RadrootsSp1TradeProofMode,
+ generate_order_acceptance_proof, validation_receipt_for_order_acceptance_proof,
+ verify_order_acceptance_proof_artifact_structure,
+};
use serde::{Deserialize, Serialize};
use sha2::{Digest, Sha256};
use std::{collections::BTreeMap, time::Duration};
@@ -68,7 +69,7 @@ use crate::features::trade_listing::processed_jobs::{
use crate::features::trade_listing::state::{TradeListingRuntime, TradeListingRuntimeError};
#[cfg(feature = "sp1_verify")]
-use radroots_sp1_host_trade::{
+use radroots_trade_sp1_host::{
RADROOTS_SP1_TRADE_REMOTE_PROVER_SCHEMA_VERSION, RADROOTS_SP1_TRADE_SP1_VERSION_LINE,
RadrootsSp1TradeRemoteProverRequest, RadrootsSp1TradeRemoteProverResponse,
RadrootsSp1TradeRemoteProverStatus, RadrootsSp1TradeResolvedProofArtifact,
@@ -688,7 +689,7 @@ pub fn build_trade_validation_receipt_job_request_event(
.map_err(|_| TradeValidationReceiptJobError::EventSetMismatch)?,
decision_event_id: RadrootsEventId::parse(order_decision_event.id.to_hex())
.map_err(|_| TradeValidationReceiptJobError::EventSetMismatch)?,
- event_evidence: canonical_dvm_event_evidence_from_events(
+ event_evidence: canonical_dvm_event_evidence_from_event(
listing_event,
order_request_event,
order_decision_event,
@@ -705,7 +706,7 @@ pub fn build_trade_validation_receipt_job_request_event(
sp1_verifying_key_hash: prover_policy.expected_sp1_verifying_key_hash.clone(),
};
let worker_pubkey =
- radroots_events::ids::RadrootsPublicKey::parse(worker_keys.public_key().to_hex())
+ radroots_event::ids::RadrootsPublicKey::parse(worker_keys.public_key().to_hex())
.map_err(|_| TradeValidationReceiptJobError::EventSetMismatch)?;
let builder = radroots_nostr_build_event(
KIND_TRADE_TRANSITION_PROOF_REQUEST,
@@ -957,7 +958,7 @@ async fn process_trade_validation_receipt_job_request(
return Err(TradeValidationReceiptJobError::EventSetMismatch);
}
- let expected_evidence = canonical_dvm_event_evidence_from_events(
+ let expected_evidence = canonical_dvm_event_evidence_from_event(
&listing_event,
&order_request_event,
&order_decision_event,
@@ -981,7 +982,7 @@ async fn process_trade_validation_receipt_job_request(
let receipt = validation_receipt_for_order_acceptance_proof(&proof_outcome.bundle)?;
let receipt_parts = validation_receipt_event_build(&witness.request.order_id, &receipt)?;
let verified_receipt = verify_validation_receipt_event(
- &radroots_events::RadrootsNostrEvent {
+ &radroots_event::RadrootsEventEnvelope {
id: zero_event_id(),
author: keys.public_key().to_string(),
created_at: 0,
@@ -1079,7 +1080,7 @@ enum ResultPublicationAction {
fn processed_job_for_request(
event: &RadrootsNostrEvent,
request_kind: u32,
- request_event: &radroots_events::RadrootsNostrEvent,
+ request_event: &radroots_event::RadrootsEventEnvelope,
) -> Result<RhiProcessedJobState, TradeValidationReceiptJobError> {
let request_id = event.id.to_hex();
let customer_pubkey = event.pubkey.to_hex();
@@ -1233,7 +1234,7 @@ enum TradeValidationReceiptJobIo<'a> {
},
Local {
keys: &'a RadrootsNostrKeys,
- events_by_id: BTreeMap<String, RadrootsNostrEvent>,
+ event_by_id: BTreeMap<String, RadrootsNostrEvent>,
published_events: Vec<RadrootsNostrEvent>,
publish_created_at_secs: Option<u64>,
},
@@ -1244,20 +1245,20 @@ impl<'a> TradeValidationReceiptJobIo<'a> {
keys: &'a RadrootsNostrKeys,
request: &TradeValidationReceiptLocalWorkerRequest,
) -> Self {
- let mut events_by_id = BTreeMap::new();
+ let mut event_by_id = BTreeMap::new();
for event in [
request.listing_event.clone(),
request.order_request_event.clone(),
request.order_decision_event.clone(),
] {
- events_by_id.insert(event.id.to_hex(), event);
+ event_by_id.insert(event.id.to_hex(), event);
}
for event in request.existing_receipt_events.iter().cloned() {
- events_by_id.insert(event.id.to_hex(), event);
+ event_by_id.insert(event.id.to_hex(), event);
}
Self::Local {
keys,
- events_by_id,
+ event_by_id,
published_events: Vec::new(),
publish_created_at_secs: request.publish_created_at_secs,
}
@@ -1269,7 +1270,7 @@ impl<'a> TradeValidationReceiptJobIo<'a> {
) -> Result<RadrootsNostrEvent, TradeValidationReceiptJobError> {
match self {
Self::Nostr { client } => fetch_event_by_id_io(client, event_id).await,
- Self::Local { events_by_id, .. } => events_by_id
+ Self::Local { event_by_id, .. } => event_by_id
.get(event_id)
.cloned()
.ok_or(TradeValidationReceiptJobError::EventSetMismatch),
@@ -1295,7 +1296,7 @@ impl<'a> TradeValidationReceiptJobIo<'a> {
)?;
fetch_events_io(client, filter, Duration::from_secs(10)).await
}
- Self::Local { events_by_id, .. } => Ok(events_by_id
+ Self::Local { event_by_id, .. } => Ok(event_by_id
.values()
.filter(|event| {
event.pubkey == keys.public_key()
@@ -1345,12 +1346,12 @@ impl<'a> TradeValidationReceiptJobIo<'a> {
match self {
Self::Nostr { client } => publish_signed_event_io(client, event).await,
Self::Local {
- events_by_id,
+ event_by_id,
published_events,
..
} => {
let event_id = event.id.to_hex();
- events_by_id.insert(event_id.clone(), event.clone());
+ event_by_id.insert(event_id.clone(), event.clone());
published_events.push(event);
Ok(event_id)
}
@@ -1376,9 +1377,9 @@ async fn find_existing_receipt_event(
Option<(RadrootsNostrEvent, RadrootsVerifiedValidationReceipt)>,
TradeValidationReceiptJobError,
> {
- let events = io.fetch_candidate_receipts(keys, request).await?;
+ let event = io.fetch_candidate_receipts(keys, request).await?;
let mut matches = Vec::new();
- for event in events {
+ for event in event {
if let Ok(verified) = verify_existing_receipt_event(&event, request, prover_policy) {
matches.push((event, verified));
}
@@ -1818,7 +1819,7 @@ fn result_tags_from_dvm(
.map_err(|_| TradeValidationReceiptJobError::EventSetMismatch)?,
),
};
- let customer_pubkey = radroots_events::ids::RadrootsPublicKey::parse(request.author.as_str())
+ let customer_pubkey = radroots_event::ids::RadrootsPublicKey::parse(request.author.as_str())
.map_err(|_| TradeValidationReceiptJobError::EventSetMismatch)?;
build_transition_proof_result_tags(&request, &customer_pubkey, inputs, &binding)
.map_err(TradeValidationReceiptJobError::from)
@@ -1912,7 +1913,7 @@ fn sp1_event_evidence_from_dvm(
}
fn sp1_order_request_witness_from_dvm(
- request: &RadrootsTradeOrderRequestWitnessDto,
+ request: &RadrootsOrderRequestWitnessDto,
) -> RadrootsSp1TradeOrderRequestWitness {
RadrootsSp1TradeOrderRequestWitness {
order_id: request.order_id.as_str().to_string(),
@@ -1931,7 +1932,7 @@ fn sp1_order_request_witness_from_dvm(
}
fn sp1_order_decision_witness_from_dvm(
- decision: &RadrootsTradeOrderDecisionEventWitnessDto,
+ decision: &RadrootsOrderDecisionEventWitnessDto,
) -> RadrootsSp1TradeOrderDecisionEventWitness {
RadrootsSp1TradeOrderDecisionEventWitness {
order_id: decision.order_id.as_str().to_string(),
@@ -1939,7 +1940,7 @@ fn sp1_order_decision_witness_from_dvm(
buyer_pubkey: decision.buyer_pubkey.as_str().to_string(),
seller_pubkey: decision.seller_pubkey.as_str().to_string(),
decision: match &decision.decision {
- RadrootsTradeOrderDecisionWitnessDto::Accepted {
+ RadrootsOrderDecisionWitnessDto::Accepted {
inventory_commitments,
} => RadrootsSp1TradeOrderDecisionWitness::Accepted {
inventory_commitments: inventory_commitments
@@ -1950,7 +1951,7 @@ fn sp1_order_decision_witness_from_dvm(
})
.collect(),
},
- RadrootsTradeOrderDecisionWitnessDto::Declined { reason } => {
+ RadrootsOrderDecisionWitnessDto::Declined { reason } => {
RadrootsSp1TradeOrderDecisionWitness::Declined {
reason: reason.clone(),
}
@@ -1971,8 +1972,8 @@ fn sp1_inventory_bin_witness_from_dvm(
fn dvm_order_request_witness_from_payload(
payload: &RadrootsOrderRequest,
-) -> RadrootsTradeOrderRequestWitnessDto {
- RadrootsTradeOrderRequestWitnessDto {
+) -> RadrootsOrderRequestWitnessDto {
+ RadrootsOrderRequestWitnessDto {
order_id: payload.order_id.clone(),
listing_addr: payload.listing_addr.clone(),
buyer_pubkey: payload.buyer_pubkey.clone(),
@@ -1980,7 +1981,7 @@ fn dvm_order_request_witness_from_payload(
items: payload
.items
.iter()
- .map(|item| RadrootsTradeOrderItemWitnessDto {
+ .map(|item| RadrootsOrderItemWitnessDto {
bin_id: item.bin_id.clone(),
bin_count: item.bin_count,
})
@@ -1990,8 +1991,8 @@ fn dvm_order_request_witness_from_payload(
fn dvm_order_decision_witness_from_payload(
payload: &RadrootsOrderDecision,
-) -> RadrootsTradeOrderDecisionEventWitnessDto {
- RadrootsTradeOrderDecisionEventWitnessDto {
+) -> RadrootsOrderDecisionEventWitnessDto {
+ RadrootsOrderDecisionEventWitnessDto {
order_id: payload.order_id.clone(),
listing_addr: payload.listing_addr.clone(),
buyer_pubkey: payload.buyer_pubkey.clone(),
@@ -1999,7 +2000,7 @@ fn dvm_order_decision_witness_from_payload(
decision: match &payload.decision {
RadrootsOrderDecisionOutcome::Accepted {
inventory_commitments,
- } => RadrootsTradeOrderDecisionWitnessDto::Accepted {
+ } => RadrootsOrderDecisionWitnessDto::Accepted {
inventory_commitments: inventory_commitments
.iter()
.map(|commitment| RadrootsTradeInventoryCommitmentWitnessDto {
@@ -2009,7 +2010,7 @@ fn dvm_order_decision_witness_from_payload(
.collect(),
},
RadrootsOrderDecisionOutcome::Declined { reason } => {
- RadrootsTradeOrderDecisionWitnessDto::Declined {
+ RadrootsOrderDecisionWitnessDto::Declined {
reason: reason.clone(),
}
}
@@ -2017,7 +2018,7 @@ fn dvm_order_decision_witness_from_payload(
}
}
-fn canonical_dvm_event_evidence_from_events(
+fn canonical_dvm_event_evidence_from_event(
listing_event: &RadrootsNostrEvent,
order_request_event: &RadrootsNostrEvent,
order_decision_event: &RadrootsNostrEvent,
@@ -2058,7 +2059,7 @@ fn canonical_dvm_event_evidence(
Ok(RadrootsTradeCanonicalEventEvidenceDto {
event_id: RadrootsEventId::parse(event.id.to_hex())
.map_err(|_| TradeValidationReceiptJobError::EventSetMismatch)?,
- signer_pubkey: radroots_events::ids::RadrootsPublicKey::parse(event.pubkey.to_hex())
+ signer_pubkey: radroots_event::ids::RadrootsPublicKey::parse(event.pubkey.to_hex())
.map_err(|_| TradeValidationReceiptJobError::EventSetMismatch)?,
kind: event_kind_u32(event)?,
canonical_event_hash: hash_bytes(
@@ -2099,7 +2100,7 @@ fn dvm_proof_mode_from_sp1(mode: RadrootsSp1TradeProofMode) -> RadrootsTradeProo
}
fn request_event_hash(
- request_event: &radroots_events::RadrootsNostrEvent,
+ request_event: &radroots_event::RadrootsEventEnvelope,
) -> Result<String, TradeValidationReceiptJobError> {
Ok(hash_bytes(
"radroots:rhi-dvm-request-event:v1",
@@ -2143,8 +2144,8 @@ fn processed_job_store_error(error: RhiProcessedJobStoreError) -> TradeValidatio
fn validate_shared_workflow_pending_agreement(
listing_event_id: &str,
- request_event: &radroots_events::RadrootsNostrEvent,
- decision_event: &radroots_events::RadrootsNostrEvent,
+ request_event: &radroots_event::RadrootsEventEnvelope,
+ decision_event: &radroots_event::RadrootsEventEnvelope,
) -> Result<(), TradeValidationReceiptJobError> {
let request_record = match order_event_record_from_event(request_event).map_err(|error| {
TradeValidationReceiptJobError::InvalidActiveTradeEvent(error.to_string())
@@ -2274,7 +2275,7 @@ async fn run_local_execute_backend(
proof_mode: RadrootsSp1TradeProofMode,
) -> Result<TradeValidationReceiptProofOutcome, TradeValidationReceiptJobError> {
let sp1_execution =
- radroots_sp1_host_trade::execute_order_acceptance_sp1_public_values(witness).await?;
+ radroots_trade_sp1_host::execute_order_acceptance_sp1_public_values(witness).await?;
let bundle = generate_order_acceptance_proof(witness, proof_mode)?;
Ok(TradeValidationReceiptProofOutcome {
bundle,
@@ -2301,8 +2302,8 @@ async fn run_local_cpu_prove_backend(
proof_mode: RadrootsSp1TradeProofMode,
) -> Result<TradeValidationReceiptProofOutcome, TradeValidationReceiptJobError> {
let bundle =
- radroots_sp1_host_trade::generate_order_acceptance_sp1_proof(witness, proof_mode).await?;
- radroots_sp1_host_trade::verify_order_acceptance_resolved_sp1_proof_artifact(
+ radroots_trade_sp1_host::generate_order_acceptance_sp1_proof(witness, proof_mode).await?;
+ radroots_trade_sp1_host::verify_order_acceptance_resolved_sp1_proof_artifact(
&bundle.execution,
&RadrootsSp1TradeResolvedProofArtifact::inline(bundle.proof.clone()),
)
@@ -2333,7 +2334,7 @@ async fn run_remote_http_prove_backend(
.expected_sp1_verifying_key_hash
.as_deref()
.ok_or(TradeValidationReceiptJobError::Sp1IdentityPolicyRequired)?;
- let execution = radroots_sp1_host_trade::execute_order_acceptance_public_values(witness)?;
+ let execution = radroots_trade_sp1_host::execute_order_acceptance_public_values(witness)?;
let request = RadrootsSp1TradeRemoteProverRequest {
schema_version: RADROOTS_SP1_TRADE_REMOTE_PROVER_SCHEMA_VERSION,
request_id: remote_http_request_id(witness)?,
@@ -2463,13 +2464,13 @@ fn remote_http_terminal_error(
#[cfg(feature = "sp1_verify")]
async fn remote_http_verified_artifact(
- execution: &radroots_sp1_guest_trade::RadrootsSp1TradePublicValuesExecution,
+ execution: &radroots_trade_sp1_guest::RadrootsSp1TradePublicValuesExecution,
policy: &TradeValidationReceiptProverPolicy,
expected_sp1_program_hash: &str,
expected_sp1_verifying_key_hash: &str,
request: &RadrootsSp1TradeRemoteProverRequest,
response: RadrootsSp1TradeRemoteProverResponse,
-) -> Result<radroots_sp1_host_trade::RadrootsSp1TradeProofArtifact, TradeValidationReceiptJobError>
+) -> Result<radroots_trade_sp1_host::RadrootsSp1TradeProofArtifact, TradeValidationReceiptJobError>
{
if response.schema_version != RADROOTS_SP1_TRADE_REMOTE_PROVER_SCHEMA_VERSION {
return Err(TradeValidationReceiptJobError::RemoteHttpInvalidResponse(
@@ -2519,7 +2520,7 @@ async fn remote_http_verified_artifact(
#[cfg(feature = "sp1_verify")]
async fn verify_remote_proof_artifact_io(
- execution: &radroots_sp1_guest_trade::RadrootsSp1TradePublicValuesExecution,
+ execution: &radroots_trade_sp1_guest::RadrootsSp1TradePublicValuesExecution,
resolved: &RadrootsSp1TradeResolvedProofArtifact,
) -> Result<(), TradeValidationReceiptJobError> {
#[cfg(test)]
@@ -2527,7 +2528,7 @@ async fn verify_remote_proof_artifact_io(
return result;
}
- radroots_sp1_host_trade::verify_order_acceptance_resolved_sp1_proof_artifact(
+ radroots_trade_sp1_host::verify_order_acceptance_resolved_sp1_proof_artifact(
execution, resolved,
)
.await?;
@@ -2914,9 +2915,9 @@ fn remote_http_test_response_for_request(
&& response.proof_artifact.is_none()
{
let execution =
- radroots_sp1_host_trade::execute_order_acceptance_public_values(&request.witness)?;
+ radroots_trade_sp1_host::execute_order_acceptance_public_values(&request.witness)?;
let artifact =
- radroots_sp1_host_trade::referenced_order_acceptance_proof_artifact_for_execution(
+ radroots_trade_sp1_host::referenced_order_acceptance_proof_artifact_for_execution(
&execution,
request.proof_mode,
format!("radroots-proof://sha256/{}", "1".repeat(64)),
@@ -2971,21 +2972,21 @@ mod tests {
use radroots_core::{
RadrootsCoreCurrency, RadrootsCoreDecimal, RadrootsCoreMoney, RadrootsCoreUnit,
};
- use radroots_events::RadrootsNostrEventPtr;
- use radroots_events::ids::{
+ use radroots_event::RadrootsEventPtr;
+ use radroots_event::ids::{
RadrootsEventId, RadrootsInventoryBinId, RadrootsListingAddress, RadrootsOrderId,
RadrootsOrderQuoteId, RadrootsPublicKey,
};
- use radroots_events::kinds::{
+ use radroots_event::kinds::{
KIND_LISTING, KIND_TRADE_TRANSITION_PROOF_REQUEST, KIND_TRADE_TRANSITION_PROOF_RESULT,
KIND_TRADE_VALIDATION_RECEIPT,
};
- use radroots_events::order::{
+ use radroots_event::order::{
RadrootsOrderDecision, RadrootsOrderDecisionOutcome, RadrootsOrderEconomicItem,
RadrootsOrderEconomicLine, RadrootsOrderEconomics, RadrootsOrderInventoryCommitment,
RadrootsOrderItem, RadrootsOrderPricingBasis, RadrootsOrderRequest,
};
- use radroots_events_codec::order::{
+ use radroots_event_codec::order::{
order_decision_event_build, order_decision_from_event, order_request_event_build,
order_request_from_event,
};
@@ -2993,17 +2994,6 @@ mod tests {
RadrootsNostrClient, RadrootsNostrEvent, RadrootsNostrKeys, radroots_event_from_nostr,
radroots_nostr_build_event,
};
- use radroots_sp1_guest_trade::{
- RADROOTS_SP1_TRADE_PROTOCOL_VERSION, RADROOTS_SP1_TRADE_REDUCER_PROGRAM_HASH,
- };
- #[cfg(feature = "sp1_verify")]
- use radroots_sp1_host_trade::RadrootsSp1TradeHostError;
- use radroots_sp1_host_trade::RadrootsSp1TradeProofMode;
- #[cfg(feature = "sp1_verify")]
- use radroots_sp1_host_trade::{
- RADROOTS_SP1_TRADE_REMOTE_PROVER_SCHEMA_VERSION, RadrootsSp1TradeRemoteProverRequest,
- RadrootsSp1TradeRemoteProverResponse, RadrootsSp1TradeRemoteProverStatus,
- };
use radroots_trade::dvm::{
RadrootsTradeInventoryBinWitnessDto, RadrootsTradeProofMode,
RadrootsTradeTransitionProofRequestV1, build_transition_proof_request_tags,
@@ -3017,6 +3007,17 @@ mod tests {
RadrootsValidationReceiptTags, RadrootsValidationReceiptType,
RadrootsVerifiedValidationReceipt, verify_validation_receipt_event,
};
+ use radroots_trade_sp1_guest::{
+ RADROOTS_SP1_TRADE_PROTOCOL_VERSION, RADROOTS_SP1_TRADE_REDUCER_PROGRAM_HASH,
+ };
+ #[cfg(feature = "sp1_verify")]
+ use radroots_trade_sp1_host::RadrootsSp1TradeHostError;
+ use radroots_trade_sp1_host::RadrootsSp1TradeProofMode;
+ #[cfg(feature = "sp1_verify")]
+ use radroots_trade_sp1_host::{
+ RADROOTS_SP1_TRADE_REMOTE_PROVER_SCHEMA_VERSION, RadrootsSp1TradeRemoteProverRequest,
+ RadrootsSp1TradeRemoteProverResponse, RadrootsSp1TradeRemoteProverStatus,
+ };
use std::sync::{Mutex, MutexGuard};
static TEST_LOCK: Mutex<()> = Mutex::new(());
@@ -3192,7 +3193,7 @@ mod tests {
) -> (RadrootsNostrEvent, RadrootsNostrEvent) {
let listing_addr = listing_addr_for_seller(seller);
let order_id = "order-1";
- let listing_ptr = RadrootsNostrEventPtr {
+ let listing_ptr = RadrootsEventPtr {
id: listing_event.id.to_hex(),
relays: None,
};
@@ -3229,7 +3230,7 @@ mod tests {
) -> (RadrootsNostrEvent, RadrootsNostrEvent) {
let listing_addr = listing_addr_for_seller(seller);
let order_id = "order-1";
- let listing_ptr = RadrootsNostrEventPtr {
+ let listing_ptr = RadrootsEventPtr {
id: listing_event.id.to_hex(),
relays: None,
};
@@ -3274,14 +3275,14 @@ mod tests {
let request_envelope = order_request_from_event(&request_rr).expect("request envelope");
let decision_envelope = order_decision_from_event(&decision_rr).expect("decision envelope");
let request = RadrootsTradeTransitionProofRequestV1 {
- witness_version: radroots_sp1_guest_trade::RADROOTS_SP1_TRADE_WITNESS_VERSION,
+ witness_version: radroots_trade_sp1_guest::RADROOTS_SP1_TRADE_WITNESS_VERSION,
proof_target:
- radroots_sp1_guest_trade::RADROOTS_SP1_TRADE_ORDER_ACCEPTANCE_PROOF_TARGET
+ radroots_trade_sp1_guest::RADROOTS_SP1_TRADE_ORDER_ACCEPTANCE_PROOF_TARGET
.to_string(),
listing_event_id: typed_event_id(listing_event),
request_event_id: typed_event_id(request_event),
decision_event_id: typed_event_id(decision_event),
- event_evidence: super::canonical_dvm_event_evidence_from_events(
+ event_evidence: super::canonical_dvm_event_evidence_from_event(
listing_event,
request_event,
decision_event,
@@ -3325,9 +3326,9 @@ mod tests {
let seller = RadrootsNostrKeys::generate();
let listing_addr = typed_listing_addr(&listing_addr_for_seller(&seller));
RadrootsTradeTransitionProofRequestV1 {
- witness_version: radroots_sp1_guest_trade::RADROOTS_SP1_TRADE_WITNESS_VERSION,
+ witness_version: radroots_trade_sp1_guest::RADROOTS_SP1_TRADE_WITNESS_VERSION,
proof_target:
- radroots_sp1_guest_trade::RADROOTS_SP1_TRADE_ORDER_ACCEPTANCE_PROOF_TARGET
+ radroots_trade_sp1_guest::RADROOTS_SP1_TRADE_ORDER_ACCEPTANCE_PROOF_TARGET
.to_string(),
listing_event_id: RadrootsEventId::parse(
"1111111111111111111111111111111111111111111111111111111111111111",
@@ -3342,22 +3343,22 @@ mod tests {
)
.expect("decision event id"),
event_evidence: Vec::new(),
- request: radroots_trade::dvm::RadrootsTradeOrderRequestWitnessDto {
+ request: radroots_trade::dvm::RadrootsOrderRequestWitnessDto {
order_id: typed_order_id("order-1"),
listing_addr: listing_addr.clone(),
buyer_pubkey: typed_pubkey(&buyer),
seller_pubkey: typed_pubkey(&seller),
- items: vec![radroots_trade::dvm::RadrootsTradeOrderItemWitnessDto {
+ items: vec![radroots_trade::dvm::RadrootsOrderItemWitnessDto {
bin_id: typed_bin_id(),
bin_count: 2,
}],
},
- decision: radroots_trade::dvm::RadrootsTradeOrderDecisionEventWitnessDto {
+ decision: radroots_trade::dvm::RadrootsOrderDecisionEventWitnessDto {
order_id: typed_order_id("order-1"),
listing_addr,
buyer_pubkey: typed_pubkey(&buyer),
seller_pubkey: typed_pubkey(&seller),
- decision: radroots_trade::dvm::RadrootsTradeOrderDecisionWitnessDto::Accepted {
+ decision: radroots_trade::dvm::RadrootsOrderDecisionWitnessDto::Accepted {
inventory_commitments: vec![
radroots_trade::dvm::RadrootsTradeInventoryCommitmentWitnessDto {
bin_id: typed_bin_id(),
@@ -5608,16 +5609,16 @@ mod tests {
.await
.expect("first proof job");
- let published_events = trade_validation_receipt_test_hooks()
+ let published_event = trade_validation_receipt_test_hooks()
.lock()
.unwrap_or_else(std::sync::PoisonError::into_inner)
.published_events
.clone();
- let receipt_event_id = published_events[0]
+ let receipt_event_id = published_event[0]
.event_id
.clone()
.expect("signed receipt event id");
- let result_event_id = published_events[1]
+ let result_event_id = published_event[1]
.event_id
.clone()
.expect("signed result event id");
@@ -7192,7 +7193,7 @@ mod tests {
let decision_rr = radroots_event_from_nostr(&decision_event);
assert!(
order_request_event_build(
- &RadrootsNostrEventPtr {
+ &RadrootsEventPtr {
id: listing_event.id.to_hex(),
relays: None,
},
diff --git a/src/lib.rs b/src/lib.rs
@@ -13,7 +13,7 @@ pub mod rhi;
pub use cli::Args as cli_args;
use anyhow::Result;
-use radroots_events::kinds::{
+use radroots_event::kinds::{
KIND_LISTING, KIND_LISTING_DRAFT, ORDER_EVENT_KINDS, TRADE_VALIDATION_EVENT_KINDS,
};
use std::time::Duration;
diff --git a/src/proof_smoke.rs b/src/proof_smoke.rs
@@ -2,7 +2,7 @@
#![cfg_attr(coverage_nightly, coverage(off))]
use crate::cli::Command;
-use radroots_sp1_guest_trade::{
+use radroots_trade_sp1_guest::{
RADROOTS_SP1_TRADE_KIND_LISTING, RADROOTS_SP1_TRADE_KIND_ORDER_DECISION,
RADROOTS_SP1_TRADE_KIND_ORDER_REQUEST, RADROOTS_SP1_TRADE_ORDER_ACCEPTANCE_PROOF_TARGET,
RADROOTS_SP1_TRADE_PROTOCOL_VERSION, RADROOTS_SP1_TRADE_REDUCER_PROGRAM_HASH,
@@ -13,7 +13,7 @@ use radroots_sp1_guest_trade::{
RadrootsSp1TradeOrderDecisionWitness, RadrootsSp1TradeOrderItemWitness,
RadrootsSp1TradeOrderRequestWitness,
};
-use radroots_sp1_host_trade::{
+use radroots_trade_sp1_host::{
RadrootsSp1TradeProofMode, generate_order_acceptance_proof,
verify_order_acceptance_proof_artifact_structure,
};
@@ -215,7 +215,10 @@ fn deterministic_smoke(
async fn local_execute_smoke(
witness: &RadrootsSp1TradeOrderAcceptanceWitness,
) -> Result<RhiProofSmokeOutput, RhiProofSmokeError> {
- let execution = radroots_sp1_host_trade::execute_order_acceptance_sp1_public_values(witness)
+ if !radroots_trade_sp1_host::order_acceptance_sp1_guest_elf_available() {
+ return Err(RhiProofSmokeError::LocalExecuteUnavailable);
+ }
+ let execution = radroots_trade_sp1_host::execute_order_acceptance_sp1_public_values(witness)
.await
.map_err(|error| RhiProofSmokeError::Sp1Execute(error.to_string()))?
.execution;
@@ -319,7 +322,9 @@ fn capabilities() -> Vec<String> {
"proof_smoke".to_string(),
"deterministic_none".to_string(),
];
- if cfg!(feature = "sp1_proving") {
+ if cfg!(feature = "sp1_proving")
+ && radroots_trade_sp1_host::order_acceptance_sp1_guest_elf_available()
+ {
values.push("local_execute".to_string());
}
values
@@ -494,7 +499,7 @@ mod tests {
})
.expect("request json");
let response: RhiProofSmokeResponse = handle_request_bytes(&bytes).await;
- assert!(response.ok);
+ assert!(response.ok, "{:?}", response.error);
assert_eq!(response.worker_name, "rhi");
assert!(response.capabilities.contains(&"health".to_string()));
assert!(!response.proof_generated);
@@ -507,7 +512,7 @@ mod tests {
RhiProofSmokeBackend::DeterministicNone,
))
.await;
- assert!(response.ok);
+ assert!(response.ok, "{:?}", response.error);
assert_eq!(response.operation, RhiProofSmokeOperation::ProofSmoke);
assert!(response.public_values_hash.is_some());
assert!(response.sp1_program_hash.is_none());
@@ -589,7 +594,16 @@ mod tests {
RhiProofSmokeBackend::LocalExecute,
))
.await;
- assert!(response.ok);
+ if !radroots_trade_sp1_host::order_acceptance_sp1_guest_elf_available() {
+ assert!(!response.ok);
+ assert_eq!(
+ response.error.as_deref(),
+ Some("local_execute backend is unavailable in this build")
+ );
+ assert!(!response.capabilities.contains(&"local_execute".to_string()));
+ return;
+ }
+ assert!(response.ok, "{:?}", response.error);
assert_eq!(response.operation, RhiProofSmokeOperation::ProofSmoke);
assert_eq!(response.backend, RhiProofSmokeBackend::LocalExecute);
assert!(response.capabilities.contains(&"local_execute".to_string()));
diff --git a/src/remote_prove.rs b/src/remote_prove.rs
@@ -2,11 +2,11 @@
#![cfg_attr(coverage_nightly, coverage(off))]
use crate::cli::Command;
-use radroots_sp1_guest_trade::{
+use radroots_trade_sp1_guest::{
RADROOTS_SP1_TRADE_ORDER_ACCEPTANCE_PROOF_TARGET, RADROOTS_SP1_TRADE_PROTOCOL_VERSION,
RADROOTS_SP1_TRADE_REDUCER_PROGRAM_HASH, RADROOTS_SP1_TRADE_WITNESS_VERSION,
};
-use radroots_sp1_host_trade::{
+use radroots_trade_sp1_host::{
RADROOTS_SP1_TRADE_REMOTE_PROVER_SCHEMA_VERSION, RADROOTS_SP1_TRADE_SP1_VERSION_LINE,
RadrootsSp1TradeProofEngine, RadrootsSp1TradeProofMode, RadrootsSp1TradeRemoteProverRequest,
RadrootsSp1TradeRemoteProverResponse, RadrootsSp1TradeRemoteProverStatus,
@@ -163,7 +163,7 @@ fn validate_request(
return Err(rejection("invalid_hash", "expected hash field is invalid"));
}
}
- let execution = radroots_sp1_host_trade::execute_order_acceptance_public_values(
+ let execution = radroots_trade_sp1_host::execute_order_acceptance_public_values(
&request.witness,
)
.map_err(|_| {
@@ -190,7 +190,7 @@ async fn prove_request(
request: RadrootsSp1TradeRemoteProverRequest,
engine: RadrootsSp1TradeProofEngine,
) -> RadrootsSp1TradeRemoteProverResponse {
- match radroots_sp1_host_trade::generate_order_acceptance_sp1_proof_with_engine(
+ match radroots_trade_sp1_host::generate_order_acceptance_sp1_proof_with_engine(
&request.witness,
request.proof_mode,
engine,
@@ -221,7 +221,7 @@ async fn prove_request(
#[cfg(feature = "sp1_proving")]
fn completed_response(
request: RadrootsSp1TradeRemoteProverRequest,
- bundle: radroots_sp1_host_trade::RadrootsSp1TradeProofBundle,
+ bundle: radroots_trade_sp1_host::RadrootsSp1TradeProofBundle,
) -> RadrootsSp1TradeRemoteProverResponse {
if bundle.execution.public_values_hash != request.expected_public_values_hash {
return failed_response(
@@ -369,11 +369,11 @@ fn write_output(output: Option<&Path>, bytes: &[u8]) -> anyhow::Result<()> {
#[cfg(test)]
mod tests {
use super::handle_request_bytes;
- use radroots_sp1_guest_trade::{
+ use radroots_trade_sp1_guest::{
RADROOTS_SP1_TRADE_ORDER_ACCEPTANCE_PROOF_TARGET, RADROOTS_SP1_TRADE_PROTOCOL_VERSION,
RADROOTS_SP1_TRADE_REDUCER_PROGRAM_HASH, RADROOTS_SP1_TRADE_WITNESS_VERSION,
};
- use radroots_sp1_host_trade::{
+ use radroots_trade_sp1_host::{
RADROOTS_SP1_TRADE_REMOTE_PROVER_SCHEMA_VERSION, RADROOTS_SP1_TRADE_SP1_VERSION_LINE,
RadrootsSp1TradeProofEngine, RadrootsSp1TradeProofMode,
RadrootsSp1TradeRemoteProverRequest, RadrootsSp1TradeRemoteProverStatus,
@@ -387,7 +387,7 @@ mod tests {
let mut witness = crate::proof_smoke::order_acceptance_tiny_witness();
witness.sp1_program_hash = Some(hash32('a'));
witness.sp1_verifying_key_hash = Some(hash32('b'));
- let execution = radroots_sp1_host_trade::execute_order_acceptance_public_values(&witness)
+ let execution = radroots_trade_sp1_host::execute_order_acceptance_public_values(&witness)
.expect("public values");
RadrootsSp1TradeRemoteProverRequest {
schema_version: RADROOTS_SP1_TRADE_REMOTE_PROVER_SCHEMA_VERSION,