Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,7 @@ schema_output.log
.docker/service-cid
deploy/post-deploy.sh
Cargo-component.lock

# Deploy
config/network_deploy_*.json
config/networks.development.json
11 changes: 11 additions & 0 deletions README_PROD.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
## Production

### Deploy new network

Add a new network to `config/networks.production.json` with all the correct metadata set, but leave the contracts and schemas blank as they will be filled in by the deployment script.

Then deploy the contracts which will deploy and fill in the missing values:

```bash
pnpm deploy:contracts
```

### Build service.json

```bash
Expand All @@ -19,6 +29,7 @@ pnpm deploy:upload-service
cd infra/wavs-1
sh start.sh
```

⚠️ If you get `0x3dda1739` in the aggregator, make sure to run this because there is no operator:

```bash
Expand Down
26 changes: 15 additions & 11 deletions config/components.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
"package_version": "0.9.1",
"trigger": {
"event": {
"contract_json_path": "merkler.merkle_snapshot",
"contract_json_path": "${networks[]}.contracts.merkleSnapshot",
"event": "MerklerTrigger(uint64)"
}
},
"submit": {
"contract_json_path": "merkler.merkle_snapshot"
"contract_json_path": "${networks[]}.contracts.merkleSnapshot"
},
"config": {
"file": "trust_graph"
Expand All @@ -29,7 +29,7 @@
}
},
"submit": {
"contract_json_path": "merkler.merkle_snapshot"
"contract_json_path": "${networks[]}.contracts.merkleSnapshot"
},
"config": {
"file": "trust_graph"
Expand All @@ -47,7 +47,7 @@
}
},
"submit": {
"contract_json_path": "merkler.merkle_snapshot"
"contract_json_path": "${networks[]}.contracts.merkleSnapshot"
},
"config": {
"file": "trust_graph"
Expand All @@ -64,7 +64,7 @@
}
},
"submit": {
"contract_json_path": "merkler.merkle_snapshot"
"contract_json_path": "${networks[]}.contracts.merkleSnapshot"
},
"env_variables": []
},
Expand All @@ -74,7 +74,7 @@
"package_version": "0.9.1",
"trigger": {
"event": {
"contract_json_path": "eas.contracts.indexer_resolver",
"contract_json_path": "${networks[]}.contracts.easIndexerResolver",
"event": "AttestationAttested(address,bytes32)"
}
},
Expand All @@ -91,7 +91,7 @@
"package_version": "0.9.1",
"trigger": {
"event": {
"contract_json_path": "eas.contracts.indexer_resolver",
"contract_json_path": "${networks[]}.contracts.easIndexerResolver",
"event": "AttestationRevoked(address,bytes32)"
}
},
Expand All @@ -103,12 +103,13 @@
}
},
{
"disabled": true,
"filename": "wavs_indexer.wasm",
"package_name": "wavs-indexer",
"package_version": "0.9.1",
"trigger": {
"event": {
"contract_json_path": "eas.contracts.payable_indexer_resolver",
"contract_json_path": "eas.payable_indexer_resolver",
"event": "AttestationAttested(address,bytes32)"
}
},
Expand All @@ -120,12 +121,13 @@
}
},
{
"disabled": true,
"filename": "wavs_indexer.wasm",
"package_name": "wavs-indexer",
"package_version": "0.9.1",
"trigger": {
"event": {
"contract_json_path": "eas.contracts.payable_indexer_resolver",
"contract_json_path": "eas.payable_indexer_resolver",
"event": "AttestationRevoked(address,bytes32)"
}
},
Expand All @@ -137,12 +139,13 @@
}
},
{
"disabled": true,
"filename": "wavs_indexer.wasm",
"package_name": "wavs-indexer",
"package_version": "0.9.1",
"trigger": {
"event": {
"contract_json_path": "eas.contracts.attester_indexer_resolver",
"contract_json_path": "eas.attester_indexer_resolver",
"event": "AttestationAttested(address,bytes32)"
}
},
Expand All @@ -154,12 +157,13 @@
}
},
{
"disabled": true,
"filename": "wavs_indexer.wasm",
"package_name": "wavs-indexer",
"package_version": "0.9.1",
"trigger": {
"event": {
"contract_json_path": "eas.contracts.attester_indexer_resolver",
"contract_json_path": "eas.attester_indexer_resolver",
"event": "AttestationRevoked(address,bytes32)"
}
},
Expand Down
158 changes: 158 additions & 0 deletions config/networks.development.template.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
[
{
"id": "test-network-1",
"name": "Test Network 1",
"link": {
"prefix": "Learn more:",
"label": "Click Me",
"href": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
},
"about": "This is a test network.",
"callToAction": {
"label": "Click Me",
"href": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
},
"criteria": "The attestations in this network are weighted endorsements.",
"contracts": {
"merkleSnapshot": "",
"easIndexerResolver": "",
"merkleFundDistributor": ""
},
"schemas": [
{
"description": "Weighted endorsement",
"key": "vouching",
"name": "Vouch",
"resolver": "",
"revocable": true,
"schema": "string comment,uint256 confidence",
"uid": "",
"fields": [
{
"name": "comment",
"type": "string"
},
{
"name": "confidence",
"type": "uint256"
}
]
}
],
"pagerank": {
"enabled": true,
"pointsPool": 10000,
"trustMultiplier": 3.0,
"trustShare": 1.0,
"trustDecay": 0.8,
"minWeight": 0,
"maxWeight": 100,
"trustedSeeds": []
},
"validatedThreshold": 100
},
{
"id": "test-network-2",
"name": "Test Network 2",
"link": {
"prefix": "Learn more:",
"label": "Click Me",
"href": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
},
"about": "This is a test network.",
"callToAction": {
"label": "Click Me",
"href": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
},
"criteria": "The attestations in this network are weighted endorsements.",
"contracts": {
"merkleSnapshot": "",
"easIndexerResolver": "",
"merkleFundDistributor": ""
},
"schemas": [
{
"description": "Weighted endorsement",
"key": "vouching",
"name": "Vouch",
"resolver": "",
"revocable": true,
"schema": "string comment,uint256 confidence",
"uid": "",
"fields": [
{
"name": "comment",
"type": "string"
},
{
"name": "confidence",
"type": "uint256"
}
]
}
],
"pagerank": {
"enabled": true,
"pointsPool": 10000,
"trustMultiplier": 3.0,
"trustShare": 1.0,
"trustDecay": 0.8,
"minWeight": 0,
"maxWeight": 100,
"trustedSeeds": []
},
"validatedThreshold": 100
},
{
"id": "test-network-3",
"name": "Test Network 3",
"link": {
"prefix": "Learn more:",
"label": "Click Me",
"href": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
},
"about": "This is a test network.",
"callToAction": {
"label": "Click Me",
"href": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
},
"criteria": "The attestations in this network are weighted endorsements.",
"contracts": {
"merkleSnapshot": "",
"easIndexerResolver": "",
"merkleFundDistributor": ""
},
"schemas": [
{
"description": "Weighted endorsement",
"key": "vouching",
"name": "Vouch",
"resolver": "",
"revocable": true,
"schema": "string comment,uint256 confidence",
"uid": "",
"fields": [
{
"name": "comment",
"type": "string"
},
{
"name": "confidence",
"type": "uint256"
}
]
}
],
"pagerank": {
"enabled": true,
"pointsPool": 10000,
"trustMultiplier": 3.0,
"trustShare": 1.0,
"trustDecay": 0.8,
"minWeight": 0,
"maxWeight": 100,
"trustedSeeds": []
},
"validatedThreshold": 100
}
]
57 changes: 57 additions & 0 deletions config/networks.production.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
[
{
"id": "localism-fund",
"name": "Localism Fund",
"link": {
"prefix": "Learn more:",
"label": "localism.fund",
"href": "https://www.localism.fund"
},
"about": "The **Localism Fund Expert Network** is a curated, peer-attested collective of practitioners advancing the intersection of **localism and Ethereum-based coordination**. Experts in the network bring proven experience across Grant-making, Web3 / Ethereum Tooling, or Localism.",
"callToAction": {
"label": "Apply as Expert",
"href": "https://www.localism.fund/expert-network"
},
"criteria": "Localism Fund Experts should meet the following criteria:\n\n- **Application** — Has completed the application form and appears in the [**Expert Network Database**](https://www.localism.fund/expert-network-db).\n- **Expertise** — Demonstrates relevant experience in at least one of the following areas: Grant-making, Web3 / Ethereum Tooling, Localism.\n- **Professional Alignment** — Commits to upholding the [**OpenCivics Ethical Standards**](https://wiki.opencivics.co/OpenCivics+Network/Membership/Ethical+Standards).\n\nBy attesting, you're **vouching** that this person meets the above criteria, and using the slider to signal your **confidence in**:\n\n- **Accuracy & Evidence**: Their _self-assessment is accurate, evidenced, and credible_ — with experience, expertise, and intentions that are verifiable through your direct experience with them or the evidence they've provided.\n- **Fit & Alignment**: Their _experience, expertise, unique insight, and credibility_ in one or more relevant domains, as well as _professional alignment_ — including good-faith collaboration, honesty, feedback & accountability, efficacy over ego, and inclusion & listening.\n\nEveryone helps **decentralize trust** by making honest, careful attestations.",
"schemas": [
{
"uid": "0xe980be2010432b0e887d12c0d50a6ab61d6ad3a9a64448ff2829b8f117a134ac",
"key": "vouching",
"name": "Vouch",
"description": "Weighted endorsement",
"resolver": "0xF0278E089aA3361796e9B9d30C30Ee427747225E",
"revocable": true,
"schema": "string comment,uint256 confidence",
"fields": [
{
"name": "comment",
"type": "string"
},
{
"name": "confidence",
"type": "uint256"
}
]
}
],
"pagerank": {
"enabled": true,
"pointsPool": 10000,
"trustMultiplier": 3.0,
"trustShare": 1.0,
"trustDecay": 0.8,
"minWeight": 0,
"maxWeight": 100,
"trustedSeeds": [
"0x7d03C5c37f77Fd01211334B9115CA108C84E8f3B",
"0x733Fe4b4D26168532c668231d725C46C315c14b1",
"0x59DDA36bD196Ec849838CE2163E6821f946b37Dc"
]
},
"contracts": {
"merkleSnapshot": "0x6d5339Fd17235803AE68e04d0b820bdd987427AC",
"easIndexerResolver": "0xF0278E089aA3361796e9B9d30C30Ee427747225E"
},
"validatedThreshold": 75
}
]
20 changes: 10 additions & 10 deletions config/trust_graph.template.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
{
"events_dir": "./events",
"eas_address": "${get(eas.contracts.eas)}",
"eas_address": "${get(eas.eas)}",
"indexer_address": "${get(wavs_indexer)}",
"chain_name": "${getEnv(triggerChain)}",
"vouching_schema_uid": "${get(eas.schemas.vouching.uid)}",
"vouching_schema_uid": "${get(${networks[]}.schemas.0.uid)}",
"vouching_schema_abi": "(string,uint256)",
"vouching_schema_abi_weight_index": "1",
"pagerank_enabled": "true",
"pagerank_points_pool": "10000",
"pagerank_trusted_seeds": "0x7d03C5c37f77Fd01211334B9115CA108C84E8f3B,0x733Fe4b4D26168532c668231d725C46C315c14b1,0x59DDA36bD196Ec849838CE2163E6821f946b37Dc",
"pagerank_trust_multiplier": "3.0",
"pagerank_trust_share": "1.0",
"pagerank_trust_decay": "0.8",
"pagerank_min_weight": "0",
"pagerank_max_weight": "100"
"pagerank_enabled": "${get(${networks[]}.pagerank.enabled)}",
"pagerank_points_pool": "${get(${networks[]}.pagerank.pointsPool)}",
"pagerank_trusted_seeds": "${join(${networks[]}.pagerank.trustedSeeds)}",
"pagerank_trust_multiplier": "${get(${networks[]}.pagerank.trustMultiplier)}",
"pagerank_trust_share": "${get(${networks[]}.pagerank.trustShare)}",
"pagerank_trust_decay": "${get(${networks[]}.pagerank.trustDecay)}",
"pagerank_min_weight": "${get(${networks[]}.pagerank.minWeight)}",
"pagerank_max_weight": "${get(${networks[]}.pagerank.maxWeight)}"
}
Loading