SOVA Protocol

Developer Reference & Integration

Solidity & REST Query API

Integrate SOVA Protocol reputation queries directly into your Whitechain smart contracts via Solidity view calls or fetch registry-backed attestations via REST endpoints.

Solidity Onchain Query Interface

Query attestation state directly inside your Whitechain smart contracts. `SovaAttestationRegistry` provides gas-efficient view methods to verify subject scores, status enums, and expiration timestamps.

ISOVARegistry.sol (Solidity v0.8.20)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface ISOVARegistry {
    enum AttestationStatus {
        NONE,
        ACTIVE,
        EXPIRED,
        REVOKED,
        ISSUER_SUSPENDED,
        ISSUER_INACTIVE,
        ISSUER_REVOKED,
        SCHEMA_INACTIVE
    }

    struct AttestationView {
        bytes32 attestationId;
        bytes32 subjectId;
        bytes32 schemaId;
        bytes32 dataHash;
        address issuer;
        uint64 issuedAt;
        uint64 expiresAt;
        uint64 issuerEpoch;
        uint64 revokedAt;
        bytes32 revocationReason;
        AttestationStatus status;
        bool usable;
    }

    function getAttestationView(bytes32 attestationId) external view returns (AttestationView memory);
    function isUsable(bytes32 attestationId) external view returns (bool);
}

Example: Reputation-Aware Lending Pool

WhitechainLendingPool.sol
contract WhitechainLendingPool {
    ISOVARegistry public immutable registry;

    constructor(address _registry) {
        registry = ISOVARegistry(_registry);
    }

    function getBorrowCollateralRatio(bytes32 attestationId) external view returns (uint256 ratioBps) {
        // 1. Authoritative check onchain
        require(registry.isUsable(attestationId), "SOVA: Attestation unusable or revoked");

        ISOVARegistry.AttestationView memory viewData = registry.getAttestationView(attestationId);
        
        // 2. Active status & expiration validation
        require(viewData.status == ISOVARegistry.AttestationStatus.ACTIVE, "SOVA: Not active");
        require(block.timestamp <= viewData.expiresAt, "SOVA: Attestation expired");

        // 3. Dynamic collateral ratio optimization (e.g. 110% vs 150%)
        return 11000; // 110% collateral for verified high-reputation souls
    }
}

Whitechain Sepolia Active Addresses

SovaAttestationRegistry0x953a4edC84CEBdC113688310F54adce6Dc2c8bCf ↗
SovaTimelockMultisig0x9B1d...a341 ↗
SOVA Read API (Health)http://127.0.0.1:3000/health