// Bind contract - issues VC and anchors to blockchainvalbound=trustWeave.contracts.bindContract(contractId=contract.id,issuerDid=insurerDid,issuerKeyId=insurerKeyId,chainId="algorand:mainnet").getOrThrow()// Activate contractvalactive=trustWeave.contracts.activateContract(bound.contract.id).getOrThrow()
Step 3: EO Provider Issues Data Credential
1
2
3
4
5
6
7
8
9
10
11
12
// EO provider wraps SAR flood data in Verifiable CredentialvalfloodCredential=trustWeave.issue{credential{type("EarthObservationCredential","InsuranceOracleCredential")issuer(eoProviderDid)subject{addClaims(sarFloodData)}issued(Instant.now())}signedBy(issuerDid=eoProviderDid,keyId=eoProviderKeyId)}
Step 4: Execute Contract & Payout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Execute contract with EO datavalresult=trustWeave.contracts.executeContract(contract=active,executionContext=ExecutionContext(triggerData=buildJsonObject{put("floodDepthCm",75.0)put("credentialId",floodCredential.id)})).getOrThrow()// Process payout if executedif(result.executed){processPayout(result)}
📦 Products You Can Build
1. SAR Flood Parametric
Data: Sentinel-1 SAR + DEM
Trigger: Flood depth thresholds (20cm, 50cm, 1m)
Market: US (NC, SC, FL, GA)
Payout: $25k - $5M
2. Heatwave Parametric
Data: MODIS LST + ERA5
Trigger: > X°C for Y consecutive days
Market: GCC (Saudi Arabia, UAE)
Clients: Construction, energy, government
3. Solar Attenuation Parametric
Data: AOD (MODIS/VIIRS) + Irradiance (CERES)
Trigger: >30% irradiance drop
Market: GCC solar farms
Clients: ACWA Power, NEOM, UAE utilities
4. Hurricane Parametric
Data: NOAA EO + microwave satellites
Trigger: Wind speed + rainfall indices
Market: Caribbean, US Gulf Coast
5. Drought/Agriculture Parametric
Data: NDVI (Sentinel-2, MODIS) + soil moisture
Trigger: NDVI anomaly + rainfall deficit
Market: Africa, Asia
🔑 Key TrustWeave Features
Feature
What It Does
Why It Matters
DID Management
Creates identities for EO providers, insurers, reinsurers
Standardized identity across ecosystem
Verifiable Credentials
Wraps EO data with cryptographic proof
Prevents tampering, enables trust
Blockchain Anchoring
Creates tamper-proof audit trails
Regulatory compliance, dispute resolution
Multi-Provider Support
Accepts EO data from any certified provider
No custom integrations needed
Data Integrity
Cryptographic digests verify data hasn’t changed
Prevents replay attacks, ensures authenticity
💡 Business Value
Cost Savings
80% reduction in integration costs (no custom APIs per provider)
Standardized format works with all EO providers
Automated verification reduces manual review
Speed to Market
Launch products faster with standardized format
Add new providers without code changes
Instant verification enables 24-72 hour payouts
Regulatory Compliance
Blockchain-anchored audit trails for regulators
Cryptographic proof of data integrity
Complete data lineage for compliance
Competitive Advantage
Only EO-first MGA with full-spectrum EO integration
Multi-provider support without vendor lock-in
Instant verification vs. months for traditional insurance
valcontract=trustWeave.contracts.draft(request=ContractDraftRequest(contractType=ContractType.Insurance,executionModel=ExecutionModel.Parametric(triggerType=TriggerType.EarthObservation,evaluationEngine="parametric-insurance"),parties=ContractParties(primaryPartyDid=insurerDid,counterpartyDid=insuredDid),terms=ContractTerms(obligations=listOf(Obligation(id="payout-obligation",partyDid=insurerDid,description="Pay out based on flood depth tier",obligationType=ObligationType.PAYMENT)),conditions=listOf(ContractCondition(id="flood-threshold-20cm",description="Flood depth >= 20cm",conditionType=ConditionType.THRESHOLD,expression="$.floodDepthCm >= 20"))),effectiveDate=Instant.now().toString(),contractData=buildJsonObject{put("productType","SarFlood")put("coverageAmount",1_000_000.0)})).getOrThrow()
Bind and Activate Contract
1
2
3
4
5
6
7
8
9
// Bind contract (issues VC and anchors)valbound=trustWeave.contracts.bindContract(contractId=contract.id,issuerDid=insurerDid,issuerKeyId=insurerKeyId).getOrThrow()// Activate contractvalactive=trustWeave.contracts.activateContract(bound.contract.id).getOrThrow()
valresult=trustWeave.contracts.executeContract(contract=active,executionContext=ExecutionContext(triggerData=buildJsonObject{put("floodDepthCm",75.0)put("credentialId",floodCredential.id)})).getOrThrow()if(result.executed){// Process payoutresult.outcomes.forEach{outcome->outcome.monetaryImpact?.let{amount->println("Payout: ${amount.amount} ${amount.currency}")}}}
Accept Multi-Provider Data
1
2
3
// Works with ESA, Planet, NASA, NOAA - same format!valeoData=acceptEoDataCredential(dataCredential)// No custom integration needed!