KNIRV SDK
Software Development Kits for the KNIRV Network ecosystem, including complete KNIRVGATEWAY integration.
Available SDKs
Gateway SDKs ⭐ NEW
- Go Gateway SDK - Complete KNIRVGATEWAY integration for Go
- TypeScript Gateway SDK - Complete KNIRVGATEWAY integration for TypeScript/JavaScript
- Python Gateway SDK* - ✅ *NEW! Complete KNIRVGATEWAY integration for Python
Core KNIRV SDKs
- Go Transaction SDK - KNIRVCHAIN transaction management
- Go Transmission SDK - Network transmission and communication
- TypeScript Transmission SDK - Web transmission libraries
- Python Transaction SDK - KNIRVCHAIN transaction management for Python
- Python Transmission SDK - Network transmission for Python
Unified SDKs 🚧 In Development
- TypeScript Unified SDK - 🚧 Combined access to all KNIRV services
- Python Unified SDK - 🚧 Planned - Combined access to all KNIRV services
- Go Unified SDK - 🚧 Planned - Combined access to all KNIRV services
> Note: See UNIFIED_SDK_IMPLEMENTATION_PLAN.md for detailed implementation roadmap.
Gateway SDK Features ⭐ NEW
The new Gateway SDKs provide complete integration with KNIRVGATEWAY services:
Economics Service
- Skill Invocation: Process skill invocations with economic transactions
- LLM Registration: Handle LLM registration and fees
- Validation Rewards: Process validation rewards for network participants
- Fee Calculation: Calculate network fees for transactions
- Metrics & Analytics: Economic metrics, burn tracking, and network statistics
- Transaction Management: Economic transaction processing and history
API Gateway
- Service Routing: Route requests to appropriate KNIRV components
- Health Monitoring: Comprehensive service health checks
- Status Management: Service status and configuration management
Integration Management
- Component Connectivity: Test and monitor KNIRV component connections
- Cross-Service Communication: Manage communication between services
- Real-time Monitoring: Live system health and performance monitoring
PoAu-D Consensus Management ⭐ NEW
- Consensus Control: Enable/disable PoAu-D consensus mechanism
- Network Authors: Manage Network Author Peers (NAPs) for block proposal
- Plugin Author Peers: Handle PAP registration and delegation
- Status Monitoring: Real-time PoAu-D status and delegation statistics
- Transaction Delegation: Automatic routing of MCP transactions to capability owners
- Hybrid Mining: PoAu-D with PoW fallback for maximum reliability
Core SDK Features
The existing SDKs provide fundamental KNIRV network functionality:
1. Transaction Management: Complete blockchain transaction handling
2. Network Communication: Transmission protocols and client-server interactions
3. URI Resolution: Parse and resolve
knirv://
URIs4. Peer Discovery: Find peers on the KNIRVCHAIN DHT
5. Resource Fetching: Connect to peers and fetch resources
6. Error Handling: Handle errors and retries gracefully
KNIRV URI Structure
knirv://./?param1=value1¶m2=value2
- Scheme:
knirv
- Authority:
.
(e.g., mychain.chain
, content123.nrn
)-
: Unique identifier for the chain, content, or node.-
: Specifies the type of resource (e.g., chain
, nrn
).- Path:
/
(e.g., /block
, /content
, defaults to /
if omitted).- Query:
?param1=value1...
(Standard URL query parameters).For a detailed specification, please refer to the KNIRVCHAIN URI Scheme Design Document.
Quick Start
KNIRVGATEWAY Integration
#### Go Gateway SDK
go
import "github.com/cloud-equities/KNIRVGATEWAY/sdk/go/gateway"
// Create client
client := gateway.NewClient()
// Process skill invocation
skillResp, err := client.Economics.Skills.Invoke(ctx, gateway.SkillInvocationRequest{
UserID: "user123",
SkillID: "skill456",
Amount: "100000", // 0.1 NRN
})
// Get economic metrics
metrics, err := client.Economics.Metrics.Get(ctx)
// Check health
isHealthy, err := client.Health.Check(ctx)
#### TypeScript Gateway SDK
typescript
import { KNIRVGatewayClient } from '@knirv/gateway-sdk';
// Create client
const client = new KNIRVGatewayClient();
// Process skill invocation
const skillResp = await client.economics.invokeSkill({
user_id: 'user123',
skill_id: 'skill456',
amount: '100000', // 0.1 NRN
});
// Get economic metrics
const metrics = await client.economics.getMetrics();
// Check health
const health = await client.health.checkEconomicsHealth();
PoAu-D Consensus Management
#### Go Example
go
package main
import (
"context"
"fmt"
"log"
"github.com/cloud-equities/KNIRVGATEWAY/sdk/go/gateway"
)
func main() {
// Create PoAu-D client
client := gateway.NewPoAuDClient()
ctx := context.Background()
// Enable PoAu-D consensus
resp, err := client.EnableConsensus(ctx)
if err != nil {
log.Fatalf("Failed to enable PoAu-D: %v", err)
}
fmt.Printf("PoAu-D enabled: %s\n", resp.Message)
// Add Network Author
addResp, err := client.AddNetworkAuthor(ctx, "knirv1abc123def456")
if err != nil {
log.Fatalf("Failed to add network author: %v", err)
}
fmt.Printf("Added Network Author: %s\n", addResp.Message)
// Get status
status, err := client.GetConsensusStatus(ctx)
if err != nil {
log.Fatalf("Failed to get status: %v", err)
}
fmt.Printf("PoAu-D Status: enabled=%t, authors=%d\n",
status.Enabled, status.NetworkAuthorsCount)
}
#### TypeScript Example
typescript
import { PoAuDClient } from '@knirv/gateway-sdk';
async function main() {
// Create PoAu-D client
const client = new PoAuDClient();
// Enable PoAu-D consensus
const resp = await client.enableConsensus();
console.log(
PoAu-D enabled: ${resp.message});
// Add Network Author
const addResp = await client.addNetworkAuthor('knirv1abc123def456');
console.log(
Added Network Author: ${addResp.message});
// Get status
const status = await client.getConsensusStatus();
console.log(
PoAu-D Status: enabled=${status.enabled}, authors=${status.network_authors_count});
}
main().catch(console.error);
Legacy Examples
Go Transaction SDK
go
package main
import (
"fmt"
"log"
"github.com/cloud-equities/KNIRVCHAIN_GO_ROOT_MCP/sdk/go/client"
)
func main() {
// Create a client with default configuration
config := client.DefaultConfig()
knirvClient, err := client.New(config)
if err != nil {
log.Fatalf("Failed to create KNIRV client: %v", err)
}
defer knirvClient.Close()
// Bootstrap the client
if err := knirvClient.Bootstrap(); err != nil {
log.Fatalf("Failed to bootstrap client: %v", err)
}
// Fetch a resource
resource, err := knirvClient.FetchResource("knirv://mychain-alpha.chain/block?number=123")
if err != nil {
log.Fatalf("Failed to fetch resource: %v", err)
}
// Use the resource data
fmt.Println(resource.String())
}
Python
python
import asyncio
from knirv_uri_sdk import KnirvClient, KnirvClientError
async def main():
# Create a client with bootstrap peers
client = KnirvClient(
bootstrap_peers=[
"/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
# Add your own bootstrap peers here
],
log_enabled=True
)
try:
# Bootstrap the client
await client.bootstrap()
# Fetch a resource
resource = await client.fetch_resource("knirv://mychain-alpha.chain/block?number=123")
# Use the resource data
print(str(resource))
except KnirvClientError as e:
print(f"Error: {e}")
finally:
# Close the client
await client.close()
Run the async function
asyncio.run(main())
JavaScript/TypeScript
typescript
import { KnirvClient, KnirvClientError } from 'knirv-uri-sdk';
async function main() {
// Create a client with bootstrap peers
const client = new KnirvClient({
bootstrapPeers: [
'/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ',
// Add your own bootstrap peers here
],
logEnabled: true
});
try {
// Bootstrap the client
await client.bootstrap();
// Fetch a resource
const resource = await client.fetchResource('knirv://mychain-alpha.chain/block?number=123');
// Use the resource data
console.log(resource.toString());
} catch (e) {
if (e instanceof KnirvClientError) {
console.error(
Client error: ${e.message});
} else {
console.error(
Unexpected error: ${e instanceof Error ? e.message : String(e)});
}
} finally {
// Close the client
await client.stop();
}
}
main().catch(console.error);
License
MIT License