synor/sdk/README.md
Gulshan Yadav 5316995fb9 docs: add comprehensive SDK documentation
- Add detailed README.md with installation, quick start, and API examples
- Add CHANGELOG.md documenting all SDK implementations
- Cover all 12 services across 12 languages
- Include configuration, error handling, and WebSocket subscription docs
2026-01-28 10:53:52 +05:30

597 lines
14 KiB
Markdown

# Synor SDK Documentation
Official multi-language SDKs for the Synor blockchain platform, providing unified access to all Synor services.
## Overview
The Synor SDK provides native implementations across **12 programming languages** for **12 blockchain services**, totaling **144 SDK implementations** with consistent APIs and patterns.
## Services
| Service | Description | Key Features |
|---------|-------------|--------------|
| **Compute** | Distributed heterogeneous compute | CPU/GPU/TPU/NPU workloads, tensor operations, ML inference |
| **Wallet** | Key management & signing | HD wallets, stealth addresses, transaction signing |
| **RPC** | Blockchain data queries | Blocks, transactions, WebSocket subscriptions |
| **Storage** | Decentralized file storage | IPFS integration, pinning, CAR files, directories |
| **Database** | Multi-model database | Key-Value, Document, Vector, Time Series stores |
| **Hosting** | Decentralized web hosting | Domains, DNS, deployments, SSL certificates |
| **Bridge** | Cross-chain transfers | Lock/mint, burn/unlock, multi-chain support |
| **Mining** | Mining pool integration | Stratum protocol, device management, statistics |
| **Economics** | Pricing & billing | Usage tracking, staking, rewards, invoices |
| **Governance** | DAO & voting | Proposals, delegation, vesting schedules |
| **Privacy** | Privacy-preserving transactions | Confidential TX, ring signatures, stealth addresses |
| **Contract** | Smart contract interaction | Deploy, call, events, ABI encoding, multicall |
## Language Support
| Language | Package Manager | Async Model | Status |
|----------|-----------------|-------------|--------|
| JavaScript/TypeScript | npm | Promise/async-await | ✅ Complete |
| Python | pip/poetry | asyncio | ✅ Complete |
| Go | go mod | goroutines | ✅ Complete |
| Rust | cargo | async/await | ✅ Complete |
| Java | maven/gradle | CompletableFuture | ✅ Complete |
| Kotlin | maven/gradle | Coroutines | ✅ Complete |
| Swift | SPM | async/await | ✅ Complete |
| Flutter/Dart | pub | Future | ✅ Complete |
| C | cmake | Callbacks | ✅ Complete |
| C++ | cmake | std::future | ✅ Complete |
| C#/.NET | nuget | Task/async | ✅ Complete |
| Ruby | gem | Fiber/async | ✅ Complete |
---
## Installation
### JavaScript/TypeScript
\`\`\`bash
npm install @synor/sdk
# or
yarn add @synor/sdk
# or
pnpm add @synor/sdk
\`\`\`
### Python
\`\`\`bash
pip install synor-compute synor-wallet synor-rpc synor-storage
pip install synor-database synor-hosting synor-bridge synor-mining
pip install synor-economics synor-governance synor-privacy synor-contract
\`\`\`
### Go
\`\`\`bash
go get github.com/synor/sdk-go
\`\`\`
### Rust
\`\`\`toml
# Cargo.toml
[dependencies]
synor = "0.1"
\`\`\`
### Java
\`\`\`xml
<!-- pom.xml -->
<dependency>
<groupId>io.synor</groupId>
<artifactId>synor-sdk</artifactId>
<version>0.1.0</version>
</dependency>
\`\`\`
### Kotlin
\`\`\`kotlin
// build.gradle.kts
dependencies {
implementation("io.synor:synor-sdk:0.1.0")
}
\`\`\`
### Swift
\`\`\`swift
// Package.swift
dependencies: [
.package(url: "https://github.com/synor/sdk-swift.git", from: "0.1.0")
]
\`\`\`
### Flutter/Dart
\`\`\`yaml
# pubspec.yaml
dependencies:
synor_sdk: ^0.1.0
\`\`\`
### C/C++
\`\`\`cmake
# CMakeLists.txt
find_package(synor REQUIRED)
target_link_libraries(your_app synor::synor)
\`\`\`
### C#/.NET
\`\`\`bash
dotnet add package Synor.Sdk
\`\`\`
### Ruby
\`\`\`ruby
# Gemfile
gem 'synor_compute'
gem 'synor_wallet'
gem 'synor_rpc'
gem 'synor_storage'
\`\`\`
---
## Quick Start
### Compute SDK
\`\`\`typescript
// JavaScript/TypeScript
import { SynorCompute } from '@synor/sdk';
const compute = new SynorCompute({ apiKey: 'your-api-key' });
// Matrix multiplication on GPU
const result = await compute.matmul(tensorA, tensorB, {
precision: 'fp16',
processor: 'gpu'
});
// ML inference
const prediction = await compute.infer({
model: 'llama-70b',
input: 'Hello, world!'
});
\`\`\`
\`\`\`python
# Python
from synor_compute import SynorCompute
compute = SynorCompute(api_key="your-api-key")
# Tensor operations
result = await compute.matmul(tensor_a, tensor_b, precision="fp16")
\`\`\`
### Wallet SDK
\`\`\`typescript
// JavaScript/TypeScript
import { SynorWallet } from '@synor/sdk';
const wallet = new SynorWallet({ apiKey: 'your-api-key' });
// Create a new wallet
const { wallet: newWallet, mnemonic } = await wallet.createWallet();
// Sign a transaction
const signed = await wallet.signTransaction(walletId, transaction);
// Get balance
const balance = await wallet.getBalance(address);
\`\`\`
\`\`\`go
// Go
import "github.com/synor/sdk-go/wallet"
client := wallet.NewClient(wallet.Config{ApiKey: "your-api-key"})
// Create wallet
result, _ := client.CreateWallet(ctx)
// Sign transaction
signed, _ := client.SignTransaction(ctx, walletId, tx)
\`\`\`
### RPC SDK
\`\`\`typescript
// JavaScript/TypeScript
import { SynorRpc } from '@synor/sdk';
const rpc = new SynorRpc({ apiKey: 'your-api-key' });
// Get latest block
const block = await rpc.getLatestBlock();
// Subscribe to new blocks (WebSocket)
const subscription = await rpc.subscribeBlocks((block) => {
console.log('New block:', block.height);
});
// Send transaction
const result = await rpc.sendRawTransaction(signedTxHex);
\`\`\`
### Storage SDK
\`\`\`typescript
// JavaScript/TypeScript
import { SynorStorage } from '@synor/sdk';
const storage = new SynorStorage({ apiKey: 'your-api-key' });
// Upload file
const cid = await storage.upload(fileBuffer);
// Download file
const data = await storage.download(cid);
// Pin content
await storage.pin(cid, { duration: 365 * 24 * 60 * 60 }); // 1 year
\`\`\`
### Database SDK
\`\`\`typescript
// JavaScript/TypeScript
import { SynorDatabase } from '@synor/sdk';
const db = new SynorDatabase({ apiKey: 'your-api-key' });
// Key-Value store
await db.kv.set('user:123', { name: 'Alice' });
const user = await db.kv.get('user:123');
// Document store
const docId = await db.documents.create('users', { name: 'Bob', age: 30 });
const docs = await db.documents.query('users', { filter: { age: { $gt: 25 } } });
// Vector store (for AI/embeddings)
await db.vectors.upsert('embeddings', [
{ id: 'doc1', vector: [0.1, 0.2, ...], metadata: { title: 'Doc 1' } }
]);
const results = await db.vectors.search('embeddings', queryVector, 10);
// Time series
await db.timeseries.write('metrics', [
{ timestamp: Date.now(), value: 42.5, tags: { host: 'server-1' } }
]);
\`\`\`
### Contract SDK
\`\`\`typescript
// JavaScript/TypeScript
import { SynorContract } from '@synor/sdk';
const contract = new SynorContract({ apiKey: 'your-api-key' });
// Deploy contract
const { contractAddress, transactionHash } = await contract.deploy({
bytecode: '0x...',
abi: contractAbi,
constructorArgs: ['arg1', 100]
});
// Call view function
const result = await contract.call({
contract: contractAddress,
method: 'balanceOf',
args: [userAddress],
abi: contractAbi
});
// Send transaction
const txResult = await contract.send({
contract: contractAddress,
method: 'transfer',
args: [recipient, amount],
abi: contractAbi
});
// Get events
const events = await contract.getEvents({
contract: contractAddress,
event: 'Transfer',
fromBlock: 1000000
});
\`\`\`
### Privacy SDK
\`\`\`typescript
// JavaScript/TypeScript
import { SynorPrivacy } from '@synor/sdk';
const privacy = new SynorPrivacy({ apiKey: 'your-api-key' });
// Create confidential transaction
const confTx = await privacy.createConfidentialTx(inputs, outputs);
// Ring signature
const ringSig = await privacy.createRingSignature(message, ringPublicKeys);
const isValid = await privacy.verifyRingSignature(ringSig, message);
// Stealth address
const stealthAddr = privacy.generateStealthAddress();
\`\`\`
### Bridge SDK
\`\`\`typescript
// JavaScript/TypeScript
import { SynorBridge } from '@synor/sdk';
const bridge = new SynorBridge({ apiKey: 'your-api-key' });
// Lock tokens on source chain
const lockReceipt = await bridge.lock({
asset: { symbol: 'ETH', chain: 'ethereum' },
amount: '1000000000000000000', // 1 ETH in wei
targetChain: 'synor'
});
// Check transfer status
const status = await bridge.getTransferStatus(lockReceipt.transferId);
// Get supported chains
const chains = await bridge.getSupportedChains();
\`\`\`
---
## Configuration
All SDKs share a common configuration pattern:
\`\`\`typescript
interface SynorConfig {
apiKey: string; // Required: Your API key
endpoint?: string; // Optional: Custom API endpoint
timeout?: number; // Optional: Request timeout (ms), default: 30000
retries?: number; // Optional: Retry attempts, default: 3
debug?: boolean; // Optional: Enable debug logging
}
\`\`\`
### Service-Specific Endpoints
| Service | Default Endpoint |
|---------|------------------|
| Compute | \`https://compute.synor.io/v1\` |
| Wallet | \`https://wallet.synor.io/v1\` |
| RPC | \`https://rpc.synor.io/v1\` |
| Storage | \`https://storage.synor.io/v1\` |
| Database | \`https://db.synor.io/v1\` |
| Hosting | \`https://hosting.synor.io/v1\` |
| Bridge | \`https://bridge.synor.io/v1\` |
| Mining | \`https://mining.synor.io/v1\` |
| Economics | \`https://economics.synor.io/v1\` |
| Governance | \`https://governance.synor.io/v1\` |
| Privacy | \`https://privacy.synor.io/v1\` |
| Contract | \`https://contract.synor.io/v1\` |
---
## Error Handling
All SDKs use a consistent error hierarchy:
\`\`\`typescript
class SynorError extends Error {
code?: string; // Error code (e.g., 'INVALID_API_KEY')
statusCode?: number; // HTTP status code
}
// Specific error types
class ApiError extends SynorError {} // HTTP/API errors
class ValidationError extends SynorError {} // Invalid input
class TimeoutError extends SynorError {} // Request timeout
class AuthenticationError extends SynorError {} // Auth failures
class NetworkError extends SynorError {} // Connection issues
\`\`\`
### Error Handling Example
\`\`\`typescript
try {
const result = await wallet.createWallet();
} catch (error) {
if (error instanceof AuthenticationError) {
console.error('Invalid API key');
} else if (error instanceof TimeoutError) {
console.error('Request timed out, retrying...');
} else if (error instanceof ApiError) {
console.error(\`API error \${error.code}: \${error.message}\`);
}
}
\`\`\`
---
## WebSocket Subscriptions
RPC and other services support real-time subscriptions:
\`\`\`typescript
// Subscribe to new blocks
const blockSub = await rpc.subscribeBlocks((block) => {
console.log('New block:', block.height);
});
// Subscribe to address transactions
const addrSub = await rpc.subscribeAddress(address, (tx) => {
console.log('New transaction:', tx.hash);
});
// Subscribe to mempool
const mempoolSub = await rpc.subscribeMempool((tx) => {
console.log('Mempool tx:', tx.hash);
});
// Cancel subscription
blockSub.cancel();
\`\`\`
---
## Directory Structure
\`\`\`
sdk/
├── js/ # JavaScript/TypeScript SDK
│ └── src/
│ ├── wallet/
│ ├── rpc/
│ ├── storage/
│ └── ...
├── python/ # Python SDK
│ ├── synor_compute/
│ ├── synor_wallet/
│ └── src/
│ ├── synor_database/
│ └── ...
├── go/ # Go SDK
│ ├── synor.go # Compute
│ ├── wallet/
│ ├── rpc/
│ └── ...
├── rust/ # Rust SDK
│ └── src/
│ ├── wallet/
│ ├── rpc/
│ └── ...
├── java/ # Java SDK
│ └── src/main/java/io/synor/
│ ├── compute/
│ ├── wallet/
│ └── ...
├── kotlin/ # Kotlin SDK
│ └── src/main/kotlin/io/synor/
│ ├── compute/
│ ├── wallet/
│ └── ...
├── swift/ # Swift SDK
│ └── Sources/
│ ├── SynorCompute/
│ ├── SynorPrivacy/
│ ├── SynorContract/
│ └── Synor/
│ ├── Wallet/
│ ├── Rpc/
│ └── ...
├── flutter/ # Flutter/Dart SDK
│ └── lib/src/
│ ├── wallet/
│ ├── rpc/
│ └── ...
├── c/ # C SDK
│ ├── include/synor/
│ └── src/
├── cpp/ # C++ SDK
│ ├── include/synor/
│ └── src/
│ ├── wallet/
│ ├── rpc/
│ └── ...
├── csharp/ # C#/.NET SDK
│ ├── SynorCompute/
│ ├── Synor.Sdk/
│ │ ├── Wallet/
│ │ ├── Rpc/
│ │ └── ...
│ └── src/
│ ├── Synor.Privacy/
│ └── Synor.Contract/
├── ruby/ # Ruby SDK
│ └── lib/
│ ├── synor_compute/
│ ├── synor_wallet/
│ └── ...
└── shared/ # Shared schemas and test vectors
├── schemas/
└── test-vectors/
\`\`\`
---
## Testing
Each SDK includes comprehensive tests. Run tests locally:
\`\`\`bash
# JavaScript
cd sdk/js && npm test
# Python
cd sdk/python && pytest
# Go
cd sdk/go && go test ./...
# Rust
cd sdk/rust && cargo test
# Java
cd sdk/java && mvn test
# Kotlin
cd sdk/kotlin && ./gradlew test
# C#
cd sdk/csharp && dotnet test
# Ruby
cd sdk/ruby && bundle exec rspec
\`\`\`
---
## Contributing
1. Fork the repository
2. Create a feature branch
3. Implement changes following the SDK patterns
4. Add tests for new functionality
5. Submit a pull request
### SDK Development Guidelines
- **Consistent APIs**: All languages should have equivalent functionality
- **Async by default**: Use language-native async patterns
- **Error handling**: Use the standard error hierarchy
- **Documentation**: Include doc comments and examples
- **Testing**: Maintain >90% test coverage
---
## Version History
| Version | Date | Changes |
|---------|------|---------|
| 0.1.0 | 2026-01-28 | Initial release with all 12 services across 12 languages |
---
## License
MIT License - see [LICENSE](../LICENSE) for details.
---
## Support
- Documentation: https://docs.synor.io
- GitHub Issues: https://github.com/synor/sdk/issues
- Discord: https://discord.gg/synor