--- title: "On-Chain Authorization (x/svc)" sidebarTitle: "Web Service Registry" description: "Service registration and management with domain verification and UCAN integration" icon: "factory" tag: "x/svc" --- # Sonr Service (SVC) Module The Service (SVC) module manages the registration and operation of decentralized services within the Sonr ecosystem. It provides a comprehensive framework for services to register with verified domains, define their permission requirements, and integrate with the broader Sonr authorization system through UCAN capabilities. ## Key Capabilities - **Domain Verification**: DNS-based domain ownership verification - **Service Registration**: Register services with verified domains - **Permission Management**: Define and request specific UCAN permissions - **Service Discovery**: Query services by owner, domain, or ID - **Capability Integration**: Seamless integration with the UCAN module ## System Architecture B B --> WA B --> APP APP --> SDK APP --> SVC_SDK SDK --> BC SVC_SDK --> BC BC --> DID BC --> DWN BC --> UCAN BC --> SVC DWN --> IPFS DWN --> VAULT `} /> ## Trust Model Hardware] BC[Blockchain
Consensus] DNS[DNS
Domain Verification] end subgraph "Identity Layer" DID[DID Documents] CRED[WebAuthn Credentials] end subgraph "Authorization Layer" UCAN[UCAN Tokens] CAP[Capabilities] end subgraph "Service Layer" SVC[Service Records] PERM[Permissions] end WA --> CRED BC --> DID DNS --> SVC CRED --> DID DID --> UCAN UCAN --> CAP CAP --> PERM SVC --> PERM `} /> ## Core Concepts ### Domain Verification Services must verify ownership of their domain through DNS TXT records before registration. This ensures that only legitimate domain owners can register services. ### Service Registration Once domain ownership is verified, services can be registered with: - Unique service ID - Verified domain binding - Requested permissions (UCAN capabilities) - Service metadata (name, description) ### Permission Model Services request specific permissions during registration, which are granted as UCAN capabilities. These permissions define what actions the service can perform on behalf of users. ### Service Identity Each service has a unique identity composed of: - Service ID (chosen identifier) - Domain (verified TLD) - Owner (blockchain address) ## Domain Verification Process Domain verification follows a strict process to ensure legitimate ownership: 1. **Initiate Verification**: ```bash # Initiate domain verification snrd tx svc initiate-domain-verification example.com --from alice ``` 2. **Add DNS TXT Record**: ``` Type: TXT Name: @ (or app if subdomain) Value: sonr-verification= TTL: 300 (5 minutes) ``` 3. **Complete Verification**: ```bash # Verify domain after DNS propagation snrd tx svc verify-domain example.com --from alice ``` ### Verification Requirements - Domain must be a valid TLD - DNS TXT record must match the generated token - Verification expires after 7 days if not completed - Each domain can only be verified by one owner ## Service Registration Guide ### For Service Developers 1. **Domain Setup**: - Register your domain with a DNS provider - Ensure you have access to manage DNS TXT records - Choose a unique service ID 2. **Service Registration**: ```bash # Register a service with basic permissions snrd tx svc register-service my-app example.com \ dwn:read,dwn:write,identity:read \ --from alice # Register with UCAN delegation snrd tx svc register-service vault-service vault.example.com \ vault:access,identity:read \ --ucan-delegation-chain="" \ --from alice ``` ### Common Permission Patterns - `dwn:read,dwn:write` - Basic data access - `identity:read` - Read user identity - `vault:access` - Vault operations - `credentials:verify` - Verify credentials ## Service Discovery and Queries ### Querying Services ```bash # Query a specific service snrd query svc service my-app # Query services by owner snrd query svc services-by-owner $(snrd keys show alice -a) # Query services by domain snrd query svc services-by-domain example.com ``` ## Security Considerations 1. **Domain Ownership**: Only verified domain owners can register services 2. **Permission Scope**: Services can only request, not grant permissions 3. **UCAN Validation**: All capability chains are validated 4. **Unique Domains**: Each domain can only have one owner 5. **Service Isolation**: Services cannot access data from other services ## Best Practices ### For Service Developers 1. Choose meaningful service IDs 2. Request minimal permissions 3. Document why each permission is needed 4. Plan for future permission model updates 5. Monitor UCAN expiration times ### For Users 1. Verify service domain ownership 2. Review permission scopes carefully 3. Conduct regular permission audits 4. Revoke unused service permissions ## Future Enhancements - Service categorization - Reputation system - Permission templates - Multi-sig service ownership - Service analytics - Enhanced subdomain support