v0.1.0-pre.011-fix-01
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer/admin.rs
|
||||
// version: 3
|
||||
// version: 4
|
||||
|
||||
//! `admin` materializer family.
|
||||
|
||||
@@ -13,7 +13,7 @@ pub(crate) use self::constants::MT_ADMIN_TRACING_TARGET;
|
||||
|
||||
/// Stable native and SPL administration materializer.
|
||||
pub use self::core::MtAdminMaterializer;
|
||||
/// Materializes exact Token-2022 administration account snapshots.
|
||||
pub use self::core::materialize_token2022_admin_state_snapshots;
|
||||
/// Materializes one exact SPL ElGamal registry account snapshot.
|
||||
pub use self::core::materializer_admin_materialize_elgamal_registry_state_snapshot;
|
||||
/// Materializes exact Token-2022 administration account snapshots.
|
||||
pub use self::core::materializer_admin_materialize_token2022_state_snapshots;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer/admin/core.rs
|
||||
// version: 15
|
||||
// version: 16
|
||||
|
||||
//! Stable administrative projections derived from exact committed observations.
|
||||
|
||||
@@ -905,7 +905,7 @@ mod tests {
|
||||
}
|
||||
|
||||
/// Materialize authoritative Token-2022 administrative extension snapshots.
|
||||
pub fn materialize_token2022_admin_state_snapshots(
|
||||
pub fn materializer_admin_materialize_token2022_state_snapshots(
|
||||
account_key: &str,
|
||||
slot: u64,
|
||||
state: &crate::DcToken2022State,
|
||||
@@ -1012,8 +1012,10 @@ mod token2022_admin_state_tests {
|
||||
#[test]
|
||||
fn admin_snapshots_are_owned_once_filtered_and_idempotent() {
|
||||
let state = mint_state();
|
||||
let first = crate::materialize_token2022_admin_state_snapshots("mint111", 44, &state);
|
||||
let second = crate::materialize_token2022_admin_state_snapshots("mint111", 44, &state);
|
||||
let first =
|
||||
crate::materializer_admin_materialize_token2022_state_snapshots("mint111", 44, &state);
|
||||
let second =
|
||||
crate::materializer_admin_materialize_token2022_state_snapshots("mint111", 44, &state);
|
||||
assert_eq!(first, second);
|
||||
assert_eq!(first.as_ref().map(std::vec::Vec::len), std::result::Result::Ok(2));
|
||||
assert_eq!(
|
||||
@@ -1033,7 +1035,10 @@ mod token2022_admin_state_tests {
|
||||
#[test]
|
||||
fn admin_snapshots_reject_empty_identity_and_wrong_state_kind() {
|
||||
let state = mint_state();
|
||||
assert!(crate::materialize_token2022_admin_state_snapshots("", 44, &state).is_err());
|
||||
assert!(
|
||||
crate::materializer_admin_materialize_token2022_state_snapshots("", 44, &state)
|
||||
.is_err()
|
||||
);
|
||||
let account_state = crate::DcToken2022State {
|
||||
kind: crate::DcToken2022StateKind::Account,
|
||||
base_fields: serde_json::json!({}),
|
||||
@@ -1042,8 +1047,12 @@ mod token2022_admin_state_tests {
|
||||
extensions: state.extensions[..1].to_vec(),
|
||||
};
|
||||
assert!(
|
||||
crate::materialize_token2022_admin_state_snapshots("account111", 44, &account_state,)
|
||||
.is_err()
|
||||
crate::materializer_admin_materialize_token2022_state_snapshots(
|
||||
"account111",
|
||||
44,
|
||||
&account_state,
|
||||
)
|
||||
.is_err()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer/fees.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
//! `fees` materializer family.
|
||||
|
||||
@@ -8,4 +8,4 @@ mod core;
|
||||
/// Fee materializer for committed Token-2022 fee observations.
|
||||
pub use self::core::MtFeesMaterializer;
|
||||
/// Materializes authoritative Token-2022 fee extension snapshots.
|
||||
pub use self::core::materialize_token2022_fee_state_snapshots;
|
||||
pub use self::core::materializer_fees_materialize_token2022_state_snapshots;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer/fees/core.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
//! Stable fee projections derived from exact committed Token-2022 observations.
|
||||
|
||||
@@ -151,7 +151,7 @@ fn contains(entries: &[&str], entry_code: &str) -> bool {
|
||||
}
|
||||
|
||||
/// Materialize authoritative Token-2022 fee extension snapshots without decrypting confidential values.
|
||||
pub fn materialize_token2022_fee_state_snapshots(
|
||||
pub fn materializer_fees_materialize_token2022_state_snapshots(
|
||||
account_key: &str,
|
||||
slot: u64,
|
||||
state: &crate::DcToken2022State,
|
||||
@@ -371,8 +371,10 @@ mod tests {
|
||||
value_fields: serde_json::json!({"withheldAmount":"7"}),
|
||||
}],
|
||||
};
|
||||
let first = crate::materialize_token2022_fee_state_snapshots("mint111", 42, &mint);
|
||||
let second = crate::materialize_token2022_fee_state_snapshots("mint111", 42, &mint);
|
||||
let first =
|
||||
crate::materializer_fees_materialize_token2022_state_snapshots("mint111", 42, &mint);
|
||||
let second =
|
||||
crate::materializer_fees_materialize_token2022_state_snapshots("mint111", 42, &mint);
|
||||
assert!(first.is_ok());
|
||||
assert_eq!(first, second);
|
||||
let outputs = match first {
|
||||
@@ -399,7 +401,11 @@ mod tests {
|
||||
value_fields: serde_json::json!({"withheldAmount":"ciphertext"}),
|
||||
}],
|
||||
};
|
||||
let result = crate::materialize_token2022_fee_state_snapshots("account111", 43, &account);
|
||||
let result = crate::materializer_fees_materialize_token2022_state_snapshots(
|
||||
"account111",
|
||||
43,
|
||||
&account,
|
||||
);
|
||||
assert!(result.is_ok());
|
||||
let outputs = match result {
|
||||
std::result::Result::Ok(outputs) => outputs,
|
||||
@@ -425,8 +431,16 @@ mod tests {
|
||||
}],
|
||||
};
|
||||
assert!(
|
||||
crate::materialize_token2022_fee_state_snapshots("account111", 44, &wrong,).is_err()
|
||||
crate::materializer_fees_materialize_token2022_state_snapshots(
|
||||
"account111",
|
||||
44,
|
||||
&wrong,
|
||||
)
|
||||
.is_err()
|
||||
);
|
||||
assert!(
|
||||
crate::materializer_fees_materialize_token2022_state_snapshots("", 44, &wrong,)
|
||||
.is_err()
|
||||
);
|
||||
assert!(crate::materialize_token2022_fee_state_snapshots("", 44, &wrong,).is_err());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer/metadata.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
//! `metadata` materializer family.
|
||||
|
||||
@@ -8,8 +8,8 @@ mod core;
|
||||
/// Token-2022 and Metaplex metadata snapshot materializer.
|
||||
pub use self::core::MtMetadataMaterializer;
|
||||
/// Materializes one canonical non-Metadata Metaplex account snapshot.
|
||||
pub use self::core::materialize_metaplex_account_snapshot;
|
||||
pub use self::core::materializer_metadata_materialize_metaplex_account_snapshot;
|
||||
/// Materializes one canonical Metaplex Metadata account snapshot.
|
||||
pub use self::core::materialize_metaplex_metadata_snapshot;
|
||||
pub use self::core::materializer_metadata_materialize_metaplex_metadata_snapshot;
|
||||
/// Materializes Token-2022 embedded metadata and group snapshots.
|
||||
pub use self::core::materialize_token2022_metadata_snapshot;
|
||||
pub use self::core::materializer_metadata_materialize_token2022_snapshot;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer/metadata/core.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
//! Stable Token-2022 and Metaplex metadata snapshot materializer.
|
||||
|
||||
@@ -35,7 +35,7 @@ impl crate::MtMaterializer for crate::MtMetadataMaterializer {
|
||||
}
|
||||
|
||||
/// Materialize embedded Token-2022 metadata, group, and group-member extensions.
|
||||
pub fn materialize_token2022_metadata_snapshot(
|
||||
pub fn materializer_metadata_materialize_token2022_snapshot(
|
||||
account_key: &str,
|
||||
slot: u64,
|
||||
state: &crate::DcToken2022State,
|
||||
@@ -97,7 +97,7 @@ pub fn materialize_token2022_metadata_snapshot(
|
||||
///
|
||||
/// Account snapshots are authoritative for current state. Instruction observations may describe
|
||||
/// mutations, but must not emit a second competing metadata-state projection.
|
||||
pub fn materialize_metaplex_metadata_snapshot(
|
||||
pub fn materializer_metadata_materialize_metaplex_metadata_snapshot(
|
||||
snapshot: &crate::DcMetadataMtmCanonicalMetadataAccountSnapshot,
|
||||
) -> std::result::Result<crate::MtApiMaterializedOutput, String> {
|
||||
if !snapshot.provenance.committed {
|
||||
@@ -205,8 +205,10 @@ mod tests_metaplex_metadata_state {
|
||||
|
||||
#[test]
|
||||
fn account_snapshot_is_one_stable_authoritative_metadata_projection() {
|
||||
let first = crate::materialize_metaplex_metadata_snapshot(&snapshot(true));
|
||||
let second = crate::materialize_metaplex_metadata_snapshot(&snapshot(true));
|
||||
let first =
|
||||
crate::materializer_metadata_materialize_metaplex_metadata_snapshot(&snapshot(true));
|
||||
let second =
|
||||
crate::materializer_metadata_materialize_metaplex_metadata_snapshot(&snapshot(true));
|
||||
assert_eq!(first, second);
|
||||
assert_eq!(
|
||||
first.as_ref().map(|value| return value.output_key.as_str()),
|
||||
@@ -235,7 +237,10 @@ mod tests_metaplex_metadata_state {
|
||||
|
||||
#[test]
|
||||
fn uncommitted_or_non_metadata_state_is_rejected() {
|
||||
assert!(crate::materialize_metaplex_metadata_snapshot(&snapshot(false)).is_err());
|
||||
assert!(
|
||||
crate::materializer_metadata_materialize_metaplex_metadata_snapshot(&snapshot(false))
|
||||
.is_err()
|
||||
);
|
||||
let mut wrong = snapshot(true);
|
||||
wrong.state = crate::DcMetadataMtmCanonicalMetadataAccountState::EditionMarker(
|
||||
crate::DcMetadataMtmEditionMarkerAccountSnapshot {
|
||||
@@ -252,7 +257,9 @@ mod tests_metaplex_metadata_state {
|
||||
payload_json: serde_json::json!({}),
|
||||
},
|
||||
);
|
||||
assert!(crate::materialize_metaplex_metadata_snapshot(&wrong).is_err());
|
||||
assert!(
|
||||
crate::materializer_metadata_materialize_metaplex_metadata_snapshot(&wrong).is_err()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,7 +267,7 @@ mod tests_metaplex_metadata_state {
|
||||
///
|
||||
/// Every account address maps to one stable state key. Historical layouts remain materializable
|
||||
/// with an explicit historical lifecycle, while execution policy remains independently disabled.
|
||||
pub fn materialize_metaplex_account_snapshot(
|
||||
pub fn materializer_metadata_materialize_metaplex_account_snapshot(
|
||||
snapshot: &crate::DcMetadataMtmCanonicalMetadataAccountSnapshot,
|
||||
) -> std::result::Result<crate::MtApiMaterializedOutput, String> {
|
||||
if !snapshot.provenance.committed {
|
||||
@@ -404,8 +411,9 @@ mod tests_metaplex_account_state {
|
||||
},
|
||||
provenance(),
|
||||
);
|
||||
let first = crate::materialize_metaplex_account_snapshot(&edition);
|
||||
let second = crate::materialize_metaplex_account_snapshot(&reservation);
|
||||
let first = crate::materializer_metadata_materialize_metaplex_account_snapshot(&edition);
|
||||
let second =
|
||||
crate::materializer_metadata_materialize_metaplex_account_snapshot(&reservation);
|
||||
assert_eq!(
|
||||
first.as_ref().map(|value| return value.payload_json["lifecycle"].clone()),
|
||||
std::result::Result::Ok(serde_json::json!("historical"))
|
||||
@@ -439,7 +447,7 @@ mod tests_metaplex_account_state {
|
||||
},
|
||||
provenance(),
|
||||
);
|
||||
let output = crate::materialize_metaplex_account_snapshot(&token);
|
||||
let output = crate::materializer_metadata_materialize_metaplex_account_snapshot(&token);
|
||||
assert_eq!(
|
||||
output.as_ref().map(|value| return value.payload_json["factOwner"].clone()),
|
||||
std::result::Result::Ok(serde_json::json!("kb_materializer_lifecycle"))
|
||||
@@ -469,9 +477,11 @@ mod tests_metaplex_account_state {
|
||||
provenance(),
|
||||
);
|
||||
marker.provenance.committed = false;
|
||||
assert!(crate::materialize_metaplex_account_snapshot(&marker).is_err());
|
||||
assert!(
|
||||
crate::materialize_metaplex_account_snapshot(
|
||||
crate::materializer_metadata_materialize_metaplex_account_snapshot(&marker).is_err()
|
||||
);
|
||||
assert!(
|
||||
crate::materializer_metadata_materialize_metaplex_account_snapshot(
|
||||
&super::tests_metaplex_metadata_state::snapshot(true)
|
||||
)
|
||||
.is_err()
|
||||
@@ -509,7 +519,8 @@ mod tests_token2022_state {
|
||||
},
|
||||
],
|
||||
};
|
||||
let outputs = crate::materialize_token2022_metadata_snapshot("mint111", 9, &state);
|
||||
let outputs =
|
||||
crate::materializer_metadata_materialize_token2022_snapshot("mint111", 9, &state);
|
||||
assert_eq!(outputs.as_ref().map(|values| return values.len()), std::result::Result::Ok(3));
|
||||
assert_eq!(
|
||||
outputs
|
||||
@@ -545,11 +556,15 @@ mod tests_token2022_state {
|
||||
value_fields: serde_json::json!({}),
|
||||
}],
|
||||
};
|
||||
let first = crate::materialize_token2022_metadata_snapshot("mint111", 9, &state);
|
||||
let second = crate::materialize_token2022_metadata_snapshot("mint111", 9, &state);
|
||||
let first =
|
||||
crate::materializer_metadata_materialize_token2022_snapshot("mint111", 9, &state);
|
||||
let second =
|
||||
crate::materializer_metadata_materialize_token2022_snapshot("mint111", 9, &state);
|
||||
assert_eq!(first, second);
|
||||
assert_eq!(first.as_ref().map(|values| return values.len()), std::result::Result::Ok(0));
|
||||
assert!(crate::materialize_token2022_metadata_snapshot("", 9, &state).is_err());
|
||||
assert!(
|
||||
crate::materializer_metadata_materialize_token2022_snapshot("", 9, &state).is_err()
|
||||
);
|
||||
let account_state = crate::DcToken2022State {
|
||||
kind: crate::DcToken2022StateKind::Account,
|
||||
base_fields: serde_json::json!({}),
|
||||
@@ -558,8 +573,12 @@ mod tests_token2022_state {
|
||||
extensions: std::vec::Vec::new(),
|
||||
};
|
||||
assert!(
|
||||
crate::materialize_token2022_metadata_snapshot("account111", 9, &account_state)
|
||||
.is_err()
|
||||
crate::materializer_metadata_materialize_token2022_snapshot(
|
||||
"account111",
|
||||
9,
|
||||
&account_state
|
||||
)
|
||||
.is_err()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer/token.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
//! `token` materializer family.
|
||||
|
||||
@@ -17,4 +17,4 @@ pub(crate) use self::constants::MT_TOKEN_ACCOUNTS_TRACING_TARGET;
|
||||
/// Stable Token, ATA and Token-2022 account materializer.
|
||||
pub use self::accounts::MtTokenAccountsMaterializer;
|
||||
/// Materializes one bounded Token-2022 account state snapshot.
|
||||
pub use self::accounts::materialize_token2022_state_snapshot;
|
||||
pub use self::accounts::materializer_token_materialize_token2022_state_snapshot;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer/token/accounts.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
//! Stable committed SPL Token mutation and ATA lifecycle projections.
|
||||
|
||||
@@ -395,7 +395,7 @@ fn account_key_for_role(accounts: &serde_json::Value, role: &str) -> serde_json:
|
||||
}
|
||||
|
||||
/// Materialize one already parsed Token-2022 account snapshot without inferring hidden state.
|
||||
pub fn materialize_token2022_state_snapshot(
|
||||
pub fn materializer_token_materialize_token2022_state_snapshot(
|
||||
account_key: &str,
|
||||
slot: u64,
|
||||
state: &crate::DcToken2022State,
|
||||
@@ -801,7 +801,9 @@ mod tests {
|
||||
},
|
||||
],
|
||||
};
|
||||
let output = match crate::materialize_token2022_state_snapshot("mint111", 99, &state) {
|
||||
let output = match crate::materializer_token_materialize_token2022_state_snapshot(
|
||||
"mint111", 99, &state,
|
||||
) {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => panic!("snapshot failed: {error}"),
|
||||
};
|
||||
@@ -823,9 +825,13 @@ mod tests {
|
||||
account_type: std::option::Option::None,
|
||||
extensions: std::vec::Vec::new(),
|
||||
};
|
||||
let first = crate::materialize_token2022_state_snapshot("account111", 7, &state);
|
||||
let second = crate::materialize_token2022_state_snapshot("account111", 7, &state);
|
||||
let first =
|
||||
crate::materializer_token_materialize_token2022_state_snapshot("account111", 7, &state);
|
||||
let second =
|
||||
crate::materializer_token_materialize_token2022_state_snapshot("account111", 7, &state);
|
||||
assert_eq!(first, second);
|
||||
assert!(crate::materialize_token2022_state_snapshot("", 7, &state).is_err());
|
||||
assert!(
|
||||
crate::materializer_token_materialize_token2022_state_snapshot("", 7, &state).is_err()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// file: kb-lib/src/materializer/transaction/annotations.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
//! Exact committed SPL Memo transaction annotation projection.
|
||||
|
||||
@@ -601,10 +601,7 @@ mod tests {
|
||||
std::result::Result::Err(error) => panic!("memo matrix is invalid JSON: {error}"),
|
||||
};
|
||||
assert_eq!(matrix["matrixVersion"], 4);
|
||||
assert_eq!(
|
||||
matrix["materializationContract"]["crate"],
|
||||
"kb_materializer_transaction_annotations"
|
||||
);
|
||||
assert_eq!(matrix["materializationContract"]["crate"], "kb-lib");
|
||||
assert_eq!(
|
||||
matrix["materializationContract"]["transactionPolicy"],
|
||||
"SuccessfulCommittedOnly"
|
||||
|
||||
Reference in New Issue
Block a user