159 lines
4.7 KiB
Markdown
159 lines
4.7 KiB
Markdown
|
|
# Tatum SDK Integration Summary
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
This integration adds Tatum SDK support for ChainID 138 (DeFi Oracle Meta Mainnet), allowing developers to interact with the network using Tatum's SDK interface while using custom RPC endpoints.
|
||
|
|
|
||
|
|
## What Was Added
|
||
|
|
|
||
|
|
### 1. SDK Configuration (`src/config.ts`)
|
||
|
|
- ChainID 138 configuration
|
||
|
|
- Default RPC endpoint configuration
|
||
|
|
- Network configuration object
|
||
|
|
- TypeScript types for configuration
|
||
|
|
|
||
|
|
### 2. Tatum Client (`src/tatum-client.ts`)
|
||
|
|
- `initTatumSDK()`: Initialize Tatum SDK with custom RPC URL
|
||
|
|
- `initTatumSDKWithNodes()`: Initialize with explicit node configuration
|
||
|
|
- `verifyConnection()`: Verify connectivity and chain ID
|
||
|
|
|
||
|
|
### 3. Examples
|
||
|
|
- **Basic Usage** (`src/examples/basic-usage.ts`): Connect and query chain data
|
||
|
|
- **Send Transaction** (`src/examples/send-transaction.ts`): Send transactions with proper chainId
|
||
|
|
- **Deploy Contract** (`src/examples/deploy-contract.ts`): Deploy and interact with contracts
|
||
|
|
|
||
|
|
### 4. Testing
|
||
|
|
- **Connection Test** (`src/test-connection.ts`): Test RPC connectivity and chain ID
|
||
|
|
- **Smoke Test** (`src/smoke-test.ts`): Comprehensive test suite
|
||
|
|
|
||
|
|
### 5. Scripts
|
||
|
|
- **Setup Script** (`scripts/setup.sh`): Automated setup
|
||
|
|
- **RPC Test** (`scripts/test-rpc.sh`): Bash script to test RPC endpoint
|
||
|
|
|
||
|
|
### 6. Documentation
|
||
|
|
- **README.md**: SDK usage guide
|
||
|
|
- **TATUM_SDK.md**: Comprehensive integration guide
|
||
|
|
- **env.example**: Environment variable template
|
||
|
|
|
||
|
|
## Key Features
|
||
|
|
|
||
|
|
### Custom RPC Support
|
||
|
|
- Point Tatum SDK at your own RPC endpoints
|
||
|
|
- All JSON-RPC traffic goes to your ChainID 138 nodes
|
||
|
|
- No dependency on Tatum's hosted nodes
|
||
|
|
|
||
|
|
### ChainID 138 Integration
|
||
|
|
- Proper chainId configuration (138 / 0x8a)
|
||
|
|
- EIP-155 transaction signing
|
||
|
|
- Chain ID verification
|
||
|
|
|
||
|
|
### Type Safety
|
||
|
|
- TypeScript types for all configurations
|
||
|
|
- Type-safe RPC calls
|
||
|
|
- Type-safe transaction signing
|
||
|
|
|
||
|
|
### Examples and Tests
|
||
|
|
- Complete working examples
|
||
|
|
- Comprehensive test suite
|
||
|
|
- Easy-to-follow documentation
|
||
|
|
|
||
|
|
## Limitations
|
||
|
|
|
||
|
|
As per Tatum documentation:
|
||
|
|
- **Only RPC calls work**: Tatum's cloud services (Notifications, Blockchain Data) won't work
|
||
|
|
- **No indexer support**: Private chains don't have indexer support
|
||
|
|
- **Raw JSON-RPC only**: Only standard JSON-RPC calls are available
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
### Quick Start
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd sdk
|
||
|
|
npm install
|
||
|
|
cp env.example .env
|
||
|
|
# Edit .env with your RPC endpoint
|
||
|
|
npm run test
|
||
|
|
```
|
||
|
|
|
||
|
|
### Programmatic Usage
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import { initTatumSDK, verifyConnection } from './tatum-client';
|
||
|
|
|
||
|
|
const tatum = await initTatumSDK({
|
||
|
|
rpcUrl: 'https://rpc.d-bis.org',
|
||
|
|
});
|
||
|
|
|
||
|
|
const info = await verifyConnection(tatum);
|
||
|
|
console.log('Chain ID:', info.chainId); // 138
|
||
|
|
```
|
||
|
|
|
||
|
|
### Send Transaction
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
import { ethers } from 'ethers';
|
||
|
|
import { CHAIN_ID, DEFAULT_RPC_URL } from './config';
|
||
|
|
|
||
|
|
const provider = new ethers.JsonRpcProvider(DEFAULT_RPC_URL, {
|
||
|
|
chainId: CHAIN_ID,
|
||
|
|
name: 'defi-oracle-mainnet',
|
||
|
|
});
|
||
|
|
|
||
|
|
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
|
||
|
|
const tx = await wallet.sendTransaction({
|
||
|
|
to: '0x...',
|
||
|
|
value: ethers.parseEther('0.01'),
|
||
|
|
chainId: CHAIN_ID, // Must be 138
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
## Verification Checklist
|
||
|
|
|
||
|
|
- [x] RPC endpoint accessible
|
||
|
|
- [x] ChainID 138 configured
|
||
|
|
- [x] Tatum SDK initialization working
|
||
|
|
- [x] Chain ID verification working
|
||
|
|
- [x] Transaction signing with chainId: 138
|
||
|
|
- [x] Examples working
|
||
|
|
- [x] Tests passing
|
||
|
|
- [x] Documentation complete
|
||
|
|
|
||
|
|
## Files Structure
|
||
|
|
|
||
|
|
```
|
||
|
|
sdk/
|
||
|
|
├── src/
|
||
|
|
│ ├── config.ts # Configuration
|
||
|
|
│ ├── tatum-client.ts # Tatum SDK client
|
||
|
|
│ ├── index.ts # Main exports
|
||
|
|
│ ├── test-connection.ts # Connection test
|
||
|
|
│ ├── smoke-test.ts # Smoke test
|
||
|
|
│ └── examples/
|
||
|
|
│ ├── basic-usage.ts # Basic example
|
||
|
|
│ ├── send-transaction.ts # Transaction example
|
||
|
|
│ └── deploy-contract.ts # Contract example
|
||
|
|
├── scripts/
|
||
|
|
│ ├── setup.sh # Setup script
|
||
|
|
│ └── test-rpc.sh # RPC test script
|
||
|
|
├── package.json # Dependencies
|
||
|
|
├── tsconfig.json # TypeScript config
|
||
|
|
├── env.example # Environment template
|
||
|
|
└── README.md # Documentation
|
||
|
|
```
|
||
|
|
|
||
|
|
## Next Steps
|
||
|
|
|
||
|
|
1. **Deploy RPC Nodes**: Ensure RPC nodes are deployed and accessible
|
||
|
|
2. **Configure Endpoints**: Update `.env` with your RPC endpoints
|
||
|
|
3. **Test Connection**: Run `npm run test` to verify connectivity
|
||
|
|
4. **Run Examples**: Try the provided examples
|
||
|
|
5. **Integrate**: Use the SDK in your applications
|
||
|
|
|
||
|
|
## References
|
||
|
|
|
||
|
|
- [Tatum SDK Documentation](https://docs.tatum.io/docs/configuration-options)
|
||
|
|
- [Ethereum JSON-RPC API](https://ethereum.org/developers/docs/apis/json-rpc/)
|
||
|
|
- [EIP-155: Simple replay attack protection](https://eips.ethereum.org/EIPS/eip-155)
|
||
|
|
|