@totemsdk/chain-provider 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -0
- package/package.json +3 -3
package/README.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# @totemsdk/chain-provider
|
|
2
|
+
|
|
3
|
+
**Unified abstraction over all chain data sources.**
|
|
4
|
+
|
|
5
|
+
A strategy pattern for chain access. Any Totem SDK tool that needs on-chain data accepts a `ChainStateProvider`. Swap implementations without changing application code.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @totemsdk/chain-provider
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## What's inside
|
|
14
|
+
|
|
15
|
+
### The interface
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
interface ChainStateProvider {
|
|
19
|
+
getCoins(query: CoinQuery): Promise<Coin[]>;
|
|
20
|
+
getCoin(id: string): Promise<Coin | null>;
|
|
21
|
+
getMMRProof(coinId: string): Promise<MMRProof>;
|
|
22
|
+
getChainTip(): Promise<ChainTip>;
|
|
23
|
+
getToken(id: string): Promise<Token | null>;
|
|
24
|
+
searchTokens(query: string): Promise<Token[]>;
|
|
25
|
+
broadcastTxPoW(hex: string): Promise<BroadcastResult>;
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Concrete implementations
|
|
30
|
+
|
|
31
|
+
| Class | Connects to |
|
|
32
|
+
|-------|------------|
|
|
33
|
+
| `HostedProvider` | Axia / MEG hosted API (requires project credentials) |
|
|
34
|
+
| `PureMinimaRpcProvider` | A local or self-hosted PureMinima node directly |
|
|
35
|
+
| `LookupNodeProvider` | A personal lookup node over Hyperswarm DHT |
|
|
36
|
+
| `CompositeProvider` | Fans out across multiple providers with fallback logic |
|
|
37
|
+
|
|
38
|
+
Five other packages (`omnia`, `statechain`, `lookup-node`, `lookup-client`, `chain-provider` itself) accept `ChainStateProvider` — this is the pivot point between the upper SDK and chain data.
|
|
39
|
+
|
|
40
|
+
## Usage
|
|
41
|
+
|
|
42
|
+
### Hosted provider (fastest setup)
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
import { HostedProvider } from '@totemsdk/chain-provider';
|
|
46
|
+
|
|
47
|
+
const provider = new HostedProvider({
|
|
48
|
+
baseUrl: 'https://api.axia.to',
|
|
49
|
+
projectId: 'your-project-id',
|
|
50
|
+
projectSecret: process.env.AXIA_SECRET,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const tip = await provider.getChainTip();
|
|
54
|
+
const coins = await provider.getCoins({ address: 'Mx...' });
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Self-hosted node
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
import { PureMinimaRpcProvider } from '@totemsdk/chain-provider';
|
|
61
|
+
|
|
62
|
+
const provider = new PureMinimaRpcProvider({
|
|
63
|
+
nodeUrl: 'http://localhost:9005',
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Composite with fallback
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import { CompositeProvider, HostedProvider, PureMinimaRpcProvider } from '@totemsdk/chain-provider';
|
|
71
|
+
|
|
72
|
+
const provider = new CompositeProvider([
|
|
73
|
+
new PureMinimaRpcProvider({ nodeUrl: 'http://localhost:9005' }),
|
|
74
|
+
new HostedProvider({ baseUrl: 'https://api.axia.to', projectId: '...' }),
|
|
75
|
+
]);
|
|
76
|
+
// Queries hit the first provider; fallback to the second on error
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Personal lookup node
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
import { LookupNodeProvider } from '@totemsdk/chain-provider';
|
|
83
|
+
|
|
84
|
+
const provider = new LookupNodeProvider({
|
|
85
|
+
publicKey: '...your-lookup-node-pubkey...',
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## See also
|
|
90
|
+
|
|
91
|
+
- [`@totemsdk/pureminima-rpc`](../pureminima-rpc) — the RPC client used by `PureMinimaRpcProvider`
|
|
92
|
+
- [`@totemsdk/lookup-client`](../lookup-client) — `LookupClientProvider` implementation
|
|
93
|
+
- [`@totemsdk/node`](../node) — Node.js `MinimaProvider`
|
|
94
|
+
- [`@totemsdk/omnia`](../omnia) — uses `ChainStateProvider` for coin queries
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@totemsdk/chain-provider",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Unified ChainStateProvider interface for Totem SDK — Hosted, PureMinima, Composite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"src"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@totemsdk/core": "1.0.
|
|
20
|
-
"@totemsdk/pureminima-rpc": "0.1.
|
|
19
|
+
"@totemsdk/core": "1.0.9",
|
|
20
|
+
"@totemsdk/pureminima-rpc": "0.1.2"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@noble/hashes": "^1.3.0",
|