Skip to content

Commit aee40cf

Browse files
authored
fix: specifies issuer to limit materialization calculations (#25)
1 parent 299eab0 commit aee40cf

6 files changed

Lines changed: 26 additions & 4 deletions

File tree

.fluence/aqua/services.aqua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ data ExecutionConfig:
77
private_key: string
88
ceramic_endpoint: string
99
checkpointer_endpoint: string
10+
attestation_issuer: string
1011
attestation_model_id: string
1112
materialization_model_id: string
1213

Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ members = [
1313
anyhow = "1.0.80"
1414
async-trait = "0.1.77"
1515
base64 = "0.21.7"
16-
clap = { version = "=4.4.18", default-features = false, features = ["derive", "std"] }
1716
curve25519-dalek = "=4.1.1"
1817
hmac = "0.12.1"
1918
jwt = "0.16.0"
@@ -25,6 +24,11 @@ members = [
2524
tracing-appender = "0.2.3"
2625
url = "2.5.0"
2726

27+
[workspace.dependencies.clap]
28+
version = "=4.4.18"
29+
default-features = false
30+
features = [ "derive", "std" ]
31+
2832
[workspace.dependencies.chrono]
2933
version = "0.4.34"
3034
features = [ "serde" ]

calculator/src/calculator.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ use std::str::FromStr;
1010

1111
#[derive(Clone, Debug)]
1212
pub struct CalculatorParameters {
13+
pub attestation_issuer: DidDocument,
1314
pub attestation_model_id: StreamId,
1415
pub materialization_model_id: StreamId,
1516
}
@@ -23,7 +24,12 @@ impl CalculatorParameters {
2324
std::env::var("MATERIALIZATION_MODEL_ID").unwrap_or_else(|_| {
2425
"kjzl6hvfrbw6c88slfzg2mw6jvin2hgv2v24tbl9u0xc97f4pr4755xjr2l6sck".to_string()
2526
});
27+
let attestation_issuer =
28+
DidDocument::new(&std::env::var("ATTESTATION_ISSUER").unwrap_or_else(|_| {
29+
"did:key:z6MkhER5181mt9PBCrnVvL9AcdWyzSzj4PLgGVKSFjJ8obMN".to_string()
30+
}));
2631
Ok(Self {
32+
attestation_issuer,
2733
attestation_model_id: StreamId::from_str(&attestation_model_id)?,
2834
materialization_model_id: StreamId::from_str(&materialization_model_id)?,
2935
})
@@ -56,9 +62,16 @@ impl Calculator {
5662
let attestation_stream_id = StreamId::from_str(&event.commit_id)?;
5763
match serde_json::from_str::<PointAttestations>(&event.content) {
5864
Ok(attestation) => {
65+
if attestation.issuer != self.params.attestation_issuer.id {
66+
tracing::warn!(
67+
"Attestation issuer {} does not match expected {}",
68+
attestation.issuer,
69+
self.params.attestation_issuer.id
70+
);
71+
return Ok(());
72+
}
5973
if let Err(e) = validate_attestation(&attestation).await {
6074
tracing::warn!("Error validating attestation: {}", e);
61-
return Ok(());
6275
}
6376
unique_events(
6477
&mut self.cache,

fluence.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ version: 8
99
deployments:
1010
myDeployment:
1111
targetWorkers: 1
12-
pricePerWorkerEpoch: 0.00001
13-
initialBalance: 0.001
12+
pricePerWorkerEpoch: "0.00001"
13+
initialBalance: "0.001"
1414
services: [ event_joiner ]
1515
spells: [ event_joiner_periodic ]
1616

fluence/src/services/event_joiner/modules/event_joiner/src/main.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ pub struct ExecutionConfig {
2626
pub private_key: String,
2727
pub ceramic_endpoint: String,
2828
pub checkpointer_endpoint: String,
29+
pub attestation_issuer: String,
2930
pub attestation_model_id: String,
3031
pub materialization_model_id: String,
3132
}
@@ -64,12 +65,14 @@ async fn try_process_events(cfg: ExecutionConfig) -> Result<SseResponse, anyhow:
6465
let client_id = cfg.client_id;
6566
let attestation_model_id = StreamId::from_str(&cfg.attestation_model_id)?;
6667
let materialization_model_id = StreamId::from_str(&cfg.materialization_model_id)?;
68+
let attestation_issuer = DidDocument::new(&cfg.attestation_issuer);
6769

6870
let did = DidDocument::new(&cfg.public_key);
6971
let ceramic: Box<dyn calculator::Ceramic + Send + Sync> =
7072
Box::new(Ceramic::new(did.clone(), &cfg.private_key, ceramic_endpoint).await?);
7173
let mut calculator = calculator::Calculator::new(
7274
calculator::CalculatorParameters {
75+
attestation_issuer,
7376
attestation_model_id,
7477
materialization_model_id,
7578
},

fluence/src/spells/event_joiner_periodic/spell.aqua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ func spell():
1212
private_key = "pk",
1313
ceramic_endpoint = "http://localhost:7007",
1414
checkpointer_endpoint = "http://localhost:8080",
15+
attestation_issuer = "did:key:z6MkhER5181mt9PBCrnVvL9AcdWyzSzj4PLgGVKSFjJ8obMN",
1516
attestation_model_id = "kjz",
1617
materialization_model_id = "kjz"
1718
))

0 commit comments

Comments
 (0)