mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-02 09:21:39 +00:00
173 lines
3.5 KiB
Plaintext
173 lines
3.5 KiB
Plaintext
---
|
|
title: "PDK Environment Configuration"
|
|
description: "Comprehensive guide to configuring the Pluggable Development Kit (PDK) for Sonr plugins"
|
|
icon: "gear"
|
|
---
|
|
|
|
# PDK Environment Configuration
|
|
|
|
The Pluggable Development Kit (PDK) provides a flexible configuration system for managing plugin environments, MPC enclaves, and runtime settings.
|
|
|
|
## Environment Variables
|
|
|
|
### Core PDK Variables
|
|
|
|
| Variable | Type | Description | Default |
|
|
| -------------- | -------- | --------------------------------- | ------------------ |
|
|
| `chain_id` | `string` | Target blockchain network | `"sonr-testnet-1"` |
|
|
| `enclave` | `object` | MPC enclave configuration | `{}` |
|
|
| `vault_config` | `object` | Vault and key management settings | `{}` |
|
|
| `log_level` | `string` | Logging verbosity | `"info"` |
|
|
|
|
## Enclave Configuration
|
|
|
|
### Basic Enclave Setup
|
|
|
|
```json
|
|
{
|
|
"enclave": {
|
|
"id": "unique-enclave-identifier",
|
|
"key_type": "secp256k1",
|
|
"threshold": 2,
|
|
"participants": [
|
|
{ "id": "participant1", "public_key": "..." },
|
|
{ "id": "participant2", "public_key": "..." }
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Advanced Enclave Parameters
|
|
|
|
```json
|
|
{
|
|
"enclave": {
|
|
"security_level": "high",
|
|
"attestation_mode": "remote",
|
|
"key_rotation_interval": "1h",
|
|
"backup_strategy": "distributed"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Vault Configuration
|
|
|
|
### Key Management Settings
|
|
|
|
```json
|
|
{
|
|
"vault_config": {
|
|
"storage_backend": "ipfs",
|
|
"encryption": {
|
|
"algorithm": "aes-256-gcm",
|
|
"key_derivation": "pbkdf2"
|
|
},
|
|
"access_control": {
|
|
"mode": "role-based",
|
|
"default_role": "viewer"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Logging Configuration
|
|
|
|
```json
|
|
{
|
|
"log_level": "debug",
|
|
"log_format": "json",
|
|
"log_outputs": [
|
|
{ "type": "stdout" },
|
|
{ "type": "file", "path": "/var/log/sonr/pdk.log" }
|
|
]
|
|
}
|
|
```
|
|
|
|
## Performance Tuning
|
|
|
|
```json
|
|
{
|
|
"performance": {
|
|
"max_concurrent_tasks": 10,
|
|
"task_timeout": "5m",
|
|
"memory_limit": "512MB",
|
|
"cpu_allocation": 2
|
|
}
|
|
}
|
|
```
|
|
|
|
## Security Hardening
|
|
|
|
```json
|
|
{
|
|
"security": {
|
|
"require_mfa": true,
|
|
"allowed_key_types": ["secp256k1", "ed25519"],
|
|
"audit_logging": true,
|
|
"rate_limiting": {
|
|
"max_requests_per_minute": 100
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Plugin-Specific Configuration
|
|
|
|
```json
|
|
{
|
|
"plugins": {
|
|
"motor": {
|
|
"mpc_mode": "distributed",
|
|
"token_generation_rate_limit": 10
|
|
},
|
|
"did": {
|
|
"supported_methods": ["did:key", "did:sonr"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Environment Loading Precedence
|
|
|
|
1. Environment Variables
|
|
2. Configuration Files
|
|
3. Default Values
|
|
|
|
## Best Practices
|
|
|
|
- Use environment-specific configurations
|
|
- Implement strict access controls
|
|
- Rotate encryption keys regularly
|
|
- Monitor and log configuration changes
|
|
- Use minimal privilege principles
|
|
|
|
## Example Configuration Loading
|
|
|
|
```go
|
|
func loadPDKConfiguration() (*PDKConfig, error) {
|
|
// Load from environment variables
|
|
config := &PDKConfig{}
|
|
|
|
// Override with config file if exists
|
|
configFile, err := ioutil.ReadFile("/etc/sonr/pdk.json")
|
|
if err == nil {
|
|
json.Unmarshal(configFile, config)
|
|
}
|
|
|
|
return config, nil
|
|
}
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
- Check `log_level` for detailed diagnostics
|
|
- Validate JSON configuration syntax
|
|
- Verify key and enclave configurations
|
|
|
|
## Advanced Topics
|
|
|
|
For more complex PDK configurations, refer to:
|
|
|
|
- [DWN Plugin Documentation](/blockchain/modules/dwn/plugin)
|
|
- [DWN Architecture Overview](/blockchain/modules/dwn/architecture)
|