diff --git a/crates/core/src/decode/contract_error.rs b/crates/core/src/decode/contract_error.rs index 91f1d065..4d211d0e 100644 --- a/crates/core/src/decode/contract_error.rs +++ b/crates/core/src/decode/contract_error.rs @@ -48,7 +48,8 @@ async fn resolve_with_network( error_code, error_name: error_entry.map(|e| e.name.clone()), doc_comment: error_entry.and_then(|e| e.doc.clone()), - }) + learn_more: "https://developers.stellar.org/docs/learn/smart-contracts/errors#contract-specific-errors".to_string(), + }) } async fn fetch_contract_wasm(contract_id: &str, network: &NetworkConfig) -> PrismResult> { diff --git a/crates/core/src/decode/mod.rs b/crates/core/src/decode/mod.rs index 130fec37..31cdc99c 100644 --- a/crates/core/src/decode/mod.rs +++ b/crates/core/src/decode/mod.rs @@ -1,7 +1,7 @@ pub mod auth; pub mod auth_signature; -pub mod context; +pub mod decode_context; pub mod contract_error; pub mod cross_contract; pub mod diagnostic; @@ -173,6 +173,7 @@ pub async fn decode_transaction_with_op_filter( None => (0..num_ops).collect(), }; +let ctx = decode_context::DecodeContextBuilder::new(network.clone()).build(); for i in indices { let mut tx_data = base_tx_data.clone(); filter_transaction_by_operation(&mut tx_data, i)?; @@ -193,7 +194,7 @@ pub async fn decode_transaction_with_op_filter( } diagnostic::enrich_report(&mut report, &tx_data)?; - context::enrich_report(&mut report, &tx_data)?; + decode_context::enrich_report(&mut report, &tx_data)?; cross_contract::attribute_failure(&mut report, &tx_data)?; reports.push(report); } diff --git a/crates/core/src/decode/report.rs b/crates/core/src/decode/report.rs index 84280c29..3dd6049b 100644 --- a/crates/core/src/decode/report.rs +++ b/crates/core/src/decode/report.rs @@ -44,6 +44,7 @@ pub fn build_report(error: &ClassifiedError) -> PrismResult { related_errors: entry.related_errors.clone(), cross_contract_attribution: None, auth_signatures: Vec::new(), + learn_more: "https://developers.stellar.org/docs/learn/smart-contracts/errors".to_string(), }; Ok(report) diff --git a/crates/core/src/types/report.rs b/crates/core/src/types/report.rs index 48f709f0..9a89e97e 100644 --- a/crates/core/src/types/report.rs +++ b/crates/core/src/types/report.rs @@ -45,6 +45,8 @@ pub struct ContractErrorInfo { pub error_name: Option, pub doc_comment: Option, + + pub learn_more: String, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -131,6 +133,8 @@ pub struct DiagnosticReport { /// Malformed or empty byte sequences produce a human-readable error label. #[serde(skip_serializing_if = "Vec::is_empty", default)] pub auth_signatures: Vec, + + pub learn_more: String, } impl DiagnosticReport { @@ -150,6 +154,7 @@ impl DiagnosticReport { related_errors: Vec::new(), cross_contract_attribution: None, auth_signatures: Vec::new(), - } + learn_more: "https://developers.stellar.org/docs/learn/smart-contracts/errors".to_string(), + } } }