alpha-network-sdk 1.0.0
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 +170 -0
- package/dist/index.d.ts +299 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +395 -0
- package/dist/index.js.map +1 -0
- package/package.json +58 -0
package/README.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Alpha Network TypeScript SDK
|
|
2
|
+
|
|
3
|
+
> **The blockchain built for AI agents** — TypeScript/Node.js SDK v0.3.0
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🔗 Full REST API coverage via `AlphaClient`
|
|
8
|
+
- 🤖 High-level `AlphaAgent` for connect → register → earn flows
|
|
9
|
+
- 📡 Real-time `AlphaWebSocket` for block/tx/task event subscriptions
|
|
10
|
+
- 🎯 Zero external runtime dependencies (Node.js stdlib only)
|
|
11
|
+
- 📝 Full TypeScript types for all API responses
|
|
12
|
+
- ✅ Strict mode, ES2022, NodeNext modules
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { AlphaAgent } from "alpha-sdk";
|
|
18
|
+
|
|
19
|
+
const agent = new AlphaAgent({
|
|
20
|
+
nodeUrl: "http://localhost:8080",
|
|
21
|
+
address: "alpha1youraddresshere",
|
|
22
|
+
capabilities: ["inference", "validation"],
|
|
23
|
+
stake: 1000,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
await agent.connect(); // verify node is reachable
|
|
27
|
+
await agent.register(); // register on-chain
|
|
28
|
+
agent.startEarning(); // start earning $ALPHA
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install alpha-sdk
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Or run directly from source:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
git clone https://github.com/alpha-network/alpha
|
|
41
|
+
cd sdk/typescript
|
|
42
|
+
npm install
|
|
43
|
+
npm run build
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## API Reference
|
|
47
|
+
|
|
48
|
+
### `AlphaClient` — low-level REST client
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
const client = new AlphaClient("http://localhost:8080");
|
|
52
|
+
|
|
53
|
+
// Health & chain info
|
|
54
|
+
await client.health();
|
|
55
|
+
await client.chainInfo();
|
|
56
|
+
|
|
57
|
+
// Agents
|
|
58
|
+
await client.registerAgent(address, ["inference"], 1000);
|
|
59
|
+
await client.getAgent(agentId);
|
|
60
|
+
await client.listAgents("inference", 50);
|
|
61
|
+
|
|
62
|
+
// Transfers
|
|
63
|
+
await client.transfer(from, to, amount, "memo");
|
|
64
|
+
|
|
65
|
+
// Balances
|
|
66
|
+
await client.balance(address);
|
|
67
|
+
|
|
68
|
+
// Blocks
|
|
69
|
+
await client.latestBlock();
|
|
70
|
+
await client.blockByHeight(42);
|
|
71
|
+
|
|
72
|
+
// Tasks
|
|
73
|
+
await client.listTasks();
|
|
74
|
+
await client.availableTasks("inference");
|
|
75
|
+
await client.getTask(taskId);
|
|
76
|
+
await client.postTask("inference", 500, "sha256:...", postedBy);
|
|
77
|
+
await client.submitTaskResult(taskId, agentId, resultHash);
|
|
78
|
+
|
|
79
|
+
// Intelligence oracle
|
|
80
|
+
await client.topAgents("inference", 10);
|
|
81
|
+
await client.intelligenceStats(1000);
|
|
82
|
+
await client.intelligenceQuery("top", "inference");
|
|
83
|
+
|
|
84
|
+
// P2P peers
|
|
85
|
+
await client.peers();
|
|
86
|
+
await client.announcePeer("192.168.1.10", 8080);
|
|
87
|
+
|
|
88
|
+
// Sync status
|
|
89
|
+
await client.syncStatus();
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### `AlphaAgent` — high-level agent
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
const agent = new AlphaAgent({
|
|
96
|
+
nodeUrl: "http://localhost:8080",
|
|
97
|
+
address: "alpha1youraddress",
|
|
98
|
+
capabilities: ["inference", "validation"],
|
|
99
|
+
stake: 1000,
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
await agent.connect(); // connect to network
|
|
103
|
+
await agent.register(); // register on-chain
|
|
104
|
+
await agent.balance(); // get $ALPHA balance
|
|
105
|
+
await agent.send(to, amount, memo); // send $ALPHA
|
|
106
|
+
await agent.getTasks(); // browse available tasks
|
|
107
|
+
await agent.submitResult(taskId, "my result string");
|
|
108
|
+
agent.startEarning(5000); // start earning (polls every 5s)
|
|
109
|
+
agent.stopEarning(); // stop earning loop
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### `AlphaWebSocket` — real-time events
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
npm install ws # optional peer dependency
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
import { AlphaWebSocket } from "alpha-sdk";
|
|
120
|
+
|
|
121
|
+
const ws = new AlphaWebSocket("http://localhost:8081");
|
|
122
|
+
ws.on((event) => {
|
|
123
|
+
if (event.type === "block") {
|
|
124
|
+
console.log("New block:", event.data.height);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
await ws.connect();
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Event types: `"block"` | `"transaction"` | `"task"` | `"raw"`
|
|
131
|
+
|
|
132
|
+
## Running the Demo
|
|
133
|
+
|
|
134
|
+
Start the Alpha Network node first:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
./scripts/run_testnet.sh
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Then run the demo earning agent:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
cd sdk/typescript
|
|
144
|
+
npm install
|
|
145
|
+
npx ts-node --esm examples/earn.ts
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Or with environment variables:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
ALPHA_NODE_URL=http://mynode:8080 npx ts-node --esm examples/earn.ts
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## TypeScript Types
|
|
155
|
+
|
|
156
|
+
All API response types are exported:
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
import type {
|
|
160
|
+
Address, AgentID, Amount, Capability,
|
|
161
|
+
AgentIdentity, Block, Transaction, Task,
|
|
162
|
+
ChainInfo, TransferResult, BalanceResult,
|
|
163
|
+
RegisterResult, TaskSubmitResult,
|
|
164
|
+
PeerInfo, SyncStatus, HealthStatus,
|
|
165
|
+
} from "alpha-sdk";
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## License
|
|
169
|
+
|
|
170
|
+
MIT — built by anonymous contributors for the Alpha Network.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alpha Network TypeScript SDK v0.3.1
|
|
3
|
+
* The blockchain built for AI agents.
|
|
4
|
+
*
|
|
5
|
+
* Zero external runtime dependencies — uses Node.js built-in http/https/crypto only.
|
|
6
|
+
*/
|
|
7
|
+
export type Address = string;
|
|
8
|
+
export type AgentID = string;
|
|
9
|
+
export type Amount = number;
|
|
10
|
+
export type Capability = "validation" | "inference" | "data" | "governance" | string;
|
|
11
|
+
export interface AgentIdentity {
|
|
12
|
+
agent_id: AgentID;
|
|
13
|
+
address: Address;
|
|
14
|
+
capabilities: Capability[];
|
|
15
|
+
stake: Amount;
|
|
16
|
+
registered_at: number;
|
|
17
|
+
trust_score?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface Block {
|
|
20
|
+
height: number;
|
|
21
|
+
hash: string;
|
|
22
|
+
prev_hash: string;
|
|
23
|
+
timestamp: number;
|
|
24
|
+
transactions: Transaction[];
|
|
25
|
+
validator_id: AgentID;
|
|
26
|
+
tx_count: number;
|
|
27
|
+
}
|
|
28
|
+
export interface Transaction {
|
|
29
|
+
tx_id: string;
|
|
30
|
+
type: string;
|
|
31
|
+
from: Address;
|
|
32
|
+
to: Address;
|
|
33
|
+
amount: Amount;
|
|
34
|
+
memo?: string;
|
|
35
|
+
timestamp: number;
|
|
36
|
+
}
|
|
37
|
+
export interface Task {
|
|
38
|
+
task_id: string;
|
|
39
|
+
capability: Capability;
|
|
40
|
+
reward: Amount;
|
|
41
|
+
input_hash: string;
|
|
42
|
+
deadline?: number;
|
|
43
|
+
posted_by?: Address;
|
|
44
|
+
status: "pending" | "assigned" | "completed" | "expired" | string;
|
|
45
|
+
created_at: number;
|
|
46
|
+
assigned_to?: AgentID[];
|
|
47
|
+
}
|
|
48
|
+
export interface ChainInfo {
|
|
49
|
+
chain_id: string;
|
|
50
|
+
token: string;
|
|
51
|
+
total_supply: Amount;
|
|
52
|
+
block_time_ms: number;
|
|
53
|
+
agent_count: number;
|
|
54
|
+
version: string;
|
|
55
|
+
consensus: string;
|
|
56
|
+
status: string;
|
|
57
|
+
height?: number;
|
|
58
|
+
blocks_per_sec?: number;
|
|
59
|
+
tx_count?: number;
|
|
60
|
+
uptime?: string;
|
|
61
|
+
circulating_supply?: Amount;
|
|
62
|
+
total_burned?: Amount;
|
|
63
|
+
}
|
|
64
|
+
export interface TransferResult {
|
|
65
|
+
success: boolean;
|
|
66
|
+
tx_id: string;
|
|
67
|
+
from: Address;
|
|
68
|
+
to: Address;
|
|
69
|
+
amount: Amount;
|
|
70
|
+
memo?: string;
|
|
71
|
+
status: string;
|
|
72
|
+
}
|
|
73
|
+
export interface BalanceResult {
|
|
74
|
+
success: boolean;
|
|
75
|
+
address: Address;
|
|
76
|
+
balance: Amount;
|
|
77
|
+
token: string;
|
|
78
|
+
}
|
|
79
|
+
export interface RegisterResult {
|
|
80
|
+
success: boolean;
|
|
81
|
+
agent_id: AgentID;
|
|
82
|
+
identity: AgentIdentity;
|
|
83
|
+
message: string;
|
|
84
|
+
}
|
|
85
|
+
export interface TaskSubmitResult {
|
|
86
|
+
success: boolean;
|
|
87
|
+
task_id: string;
|
|
88
|
+
status: string;
|
|
89
|
+
}
|
|
90
|
+
export interface PeerInfo {
|
|
91
|
+
address: string;
|
|
92
|
+
port: number;
|
|
93
|
+
agent_id?: string;
|
|
94
|
+
last_seen: number;
|
|
95
|
+
latency_ms: number;
|
|
96
|
+
}
|
|
97
|
+
export interface SyncStatus {
|
|
98
|
+
local_height: number;
|
|
99
|
+
peer_height?: number;
|
|
100
|
+
synced: boolean;
|
|
101
|
+
peers: number;
|
|
102
|
+
}
|
|
103
|
+
export interface HealthStatus {
|
|
104
|
+
status: string;
|
|
105
|
+
chain: string;
|
|
106
|
+
timestamp: number;
|
|
107
|
+
version: string;
|
|
108
|
+
height: number;
|
|
109
|
+
}
|
|
110
|
+
export interface IntelligenceStats {
|
|
111
|
+
[key: string]: unknown;
|
|
112
|
+
}
|
|
113
|
+
export interface SignedTransfer {
|
|
114
|
+
from: Address;
|
|
115
|
+
to: Address;
|
|
116
|
+
amount: Amount;
|
|
117
|
+
memo: string;
|
|
118
|
+
pubkey: string;
|
|
119
|
+
signature: string;
|
|
120
|
+
nonce: number;
|
|
121
|
+
timestamp: number;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Ed25519 key management and transfer signing for Alpha Network.
|
|
125
|
+
*
|
|
126
|
+
* Uses Node.js built-in crypto module — zero extra dependencies.
|
|
127
|
+
*
|
|
128
|
+
* Usage:
|
|
129
|
+
* const signer = TransferSigner.generate();
|
|
130
|
+
* console.log(signer.address); // alpha1…
|
|
131
|
+
* const req = signer.buildTransferRequest("alpha1to…", 1000, 0);
|
|
132
|
+
* const result = await client.transferSigned(req);
|
|
133
|
+
*/
|
|
134
|
+
export declare class TransferSigner {
|
|
135
|
+
readonly publicKey: Buffer;
|
|
136
|
+
readonly pubkeyHex: string;
|
|
137
|
+
readonly address: Address;
|
|
138
|
+
private privateKey;
|
|
139
|
+
private constructor();
|
|
140
|
+
/** Generate a fresh Ed25519 keypair. */
|
|
141
|
+
static generate(): TransferSigner;
|
|
142
|
+
/** Load from a hex-encoded raw Ed25519 private key (64 hex chars = 32 bytes). */
|
|
143
|
+
static fromPrivateKeyHex(privkeyHex: string): TransferSigner;
|
|
144
|
+
/** Return the raw private key as hex (keep this secret!). */
|
|
145
|
+
privateKeyHex(): string;
|
|
146
|
+
/**
|
|
147
|
+
* Sign a transfer message.
|
|
148
|
+
* Canonical format: transfer:{from}:{to}:{amount}:{nonce}:{timestamp}
|
|
149
|
+
* Returns the 128-char hex signature.
|
|
150
|
+
*/
|
|
151
|
+
signTransfer(toAddr: Address, amount: Amount, nonce: number, timestamp?: number): string;
|
|
152
|
+
/** Build a complete signed transfer request body. */
|
|
153
|
+
buildTransferRequest(toAddr: Address, amount: Amount, nonce: number, memo?: string): SignedTransfer;
|
|
154
|
+
}
|
|
155
|
+
export declare class AlphaClient {
|
|
156
|
+
readonly baseUrl: string;
|
|
157
|
+
constructor(nodeUrl?: string);
|
|
158
|
+
health(): Promise<HealthStatus>;
|
|
159
|
+
healthDetailed(): Promise<unknown>;
|
|
160
|
+
chainInfo(): Promise<ChainInfo>;
|
|
161
|
+
registerAgent(address: Address, capabilities: Capability[], stake: Amount): Promise<RegisterResult>;
|
|
162
|
+
getAgent(agentId: AgentID): Promise<{
|
|
163
|
+
identity: AgentIdentity;
|
|
164
|
+
trust_score: number;
|
|
165
|
+
balance?: Amount;
|
|
166
|
+
}>;
|
|
167
|
+
listAgents(capability?: Capability, limit?: number): Promise<{
|
|
168
|
+
agents: AgentIdentity[];
|
|
169
|
+
count: number;
|
|
170
|
+
}>;
|
|
171
|
+
transfer(from: Address, to: Address, amount: Amount, memo?: string): Promise<TransferResult>;
|
|
172
|
+
/** Submit a signed transfer (from TransferSigner.buildTransferRequest). */
|
|
173
|
+
transferSigned(signedReq: SignedTransfer): Promise<TransferResult>;
|
|
174
|
+
balance(address: Address): Promise<BalanceResult>;
|
|
175
|
+
latestBlock(): Promise<{
|
|
176
|
+
success: boolean;
|
|
177
|
+
block: Block;
|
|
178
|
+
}>;
|
|
179
|
+
blockByHeight(height: number): Promise<{
|
|
180
|
+
success: boolean;
|
|
181
|
+
block: Block;
|
|
182
|
+
}>;
|
|
183
|
+
listTasks(): Promise<{
|
|
184
|
+
success: boolean;
|
|
185
|
+
tasks: Task[];
|
|
186
|
+
count: number;
|
|
187
|
+
}>;
|
|
188
|
+
availableTasks(capability?: Capability): Promise<{
|
|
189
|
+
success: boolean;
|
|
190
|
+
tasks: Task[];
|
|
191
|
+
count: number;
|
|
192
|
+
}>;
|
|
193
|
+
getTask(taskId: string): Promise<{
|
|
194
|
+
success: boolean;
|
|
195
|
+
task: Task;
|
|
196
|
+
}>;
|
|
197
|
+
postTask(capability: Capability, reward: Amount, inputHash: string, postedBy?: Address, deadline?: number): Promise<{
|
|
198
|
+
success: boolean;
|
|
199
|
+
task_id: string;
|
|
200
|
+
status: string;
|
|
201
|
+
}>;
|
|
202
|
+
submitTaskResult(taskId: string, agentId: AgentID, resultHash: string, ipfsCid?: string): Promise<TaskSubmitResult>;
|
|
203
|
+
intelligenceQuery(type: "top" | "stats" | "profile", capability?: string, agentId?: AgentID, limit?: number): Promise<unknown>;
|
|
204
|
+
intelligenceStats(window?: number): Promise<{
|
|
205
|
+
success: boolean;
|
|
206
|
+
stats: IntelligenceStats;
|
|
207
|
+
}>;
|
|
208
|
+
topAgents(capability?: Capability, limit?: number): Promise<{
|
|
209
|
+
success: boolean;
|
|
210
|
+
agents: AgentIdentity[];
|
|
211
|
+
count: number;
|
|
212
|
+
}>;
|
|
213
|
+
peers(): Promise<{
|
|
214
|
+
peers: PeerInfo[];
|
|
215
|
+
count: number;
|
|
216
|
+
}>;
|
|
217
|
+
announcePeer(address: string, port: number, agentId?: AgentID): Promise<unknown>;
|
|
218
|
+
syncStatus(): Promise<SyncStatus>;
|
|
219
|
+
}
|
|
220
|
+
export declare class AlphaAgent {
|
|
221
|
+
private client;
|
|
222
|
+
private address;
|
|
223
|
+
private capabilities;
|
|
224
|
+
private stake;
|
|
225
|
+
private agentId?;
|
|
226
|
+
private earningInterval?;
|
|
227
|
+
private connected;
|
|
228
|
+
constructor(opts: {
|
|
229
|
+
nodeUrl?: string;
|
|
230
|
+
address: Address;
|
|
231
|
+
capabilities?: Capability[];
|
|
232
|
+
stake?: Amount;
|
|
233
|
+
});
|
|
234
|
+
/** Connect: verify the node is reachable and return chain info */
|
|
235
|
+
connect(): Promise<ChainInfo>;
|
|
236
|
+
/** Register this agent on-chain */
|
|
237
|
+
register(): Promise<RegisterResult>;
|
|
238
|
+
/**
|
|
239
|
+
* Start earning $ALPHA by polling for tasks and submitting results.
|
|
240
|
+
* @param intervalMs polling interval in milliseconds (default 5000)
|
|
241
|
+
*/
|
|
242
|
+
startEarning(intervalMs?: number): void;
|
|
243
|
+
/** Stop the earning loop */
|
|
244
|
+
stopEarning(): void;
|
|
245
|
+
/** Get current $ALPHA balance */
|
|
246
|
+
balance(): Promise<Amount>;
|
|
247
|
+
/** Send $ALPHA to another address */
|
|
248
|
+
send(to: Address, amount: Amount, memo?: string): Promise<TransferResult>;
|
|
249
|
+
/** Send $ALPHA with an Ed25519 signature proving ownership */
|
|
250
|
+
sendSigned(signedReq: SignedTransfer): Promise<TransferResult>;
|
|
251
|
+
/** Get available tasks for this agent's capabilities */
|
|
252
|
+
getTasks(): Promise<Task[]>;
|
|
253
|
+
/** Submit a result for a task */
|
|
254
|
+
submitResult(taskId: string, result: string): Promise<TaskSubmitResult>;
|
|
255
|
+
/** One tick of the earning loop */
|
|
256
|
+
private _earnTick;
|
|
257
|
+
}
|
|
258
|
+
export type WebSocketEvent = {
|
|
259
|
+
type: "block";
|
|
260
|
+
data: Block;
|
|
261
|
+
} | {
|
|
262
|
+
type: "transaction";
|
|
263
|
+
data: Transaction;
|
|
264
|
+
} | {
|
|
265
|
+
type: "task";
|
|
266
|
+
data: Task;
|
|
267
|
+
} | {
|
|
268
|
+
type: "raw";
|
|
269
|
+
data: unknown;
|
|
270
|
+
};
|
|
271
|
+
export type EventHandler = (event: WebSocketEvent) => void;
|
|
272
|
+
/**
|
|
273
|
+
* AlphaWebSocket subscribes to real-time Alpha Network events.
|
|
274
|
+
*
|
|
275
|
+
* Uses the `ws` npm package when available (Node < 22 doesn't have a built-in
|
|
276
|
+
* WebSocket client). Falls back gracefully if ws is not installed.
|
|
277
|
+
*
|
|
278
|
+
* Install optionally: npm install ws
|
|
279
|
+
*/
|
|
280
|
+
export declare class AlphaWebSocket {
|
|
281
|
+
private wsUrl;
|
|
282
|
+
private handlers;
|
|
283
|
+
private ws;
|
|
284
|
+
constructor(nodeUrl?: string);
|
|
285
|
+
/** Subscribe to all events */
|
|
286
|
+
on(handler: EventHandler): this;
|
|
287
|
+
/** Connect and begin receiving events */
|
|
288
|
+
connect(): Promise<void>;
|
|
289
|
+
/** Disconnect */
|
|
290
|
+
close(): void;
|
|
291
|
+
}
|
|
292
|
+
declare const _default: {
|
|
293
|
+
AlphaClient: typeof AlphaClient;
|
|
294
|
+
AlphaAgent: typeof AlphaAgent;
|
|
295
|
+
AlphaWebSocket: typeof AlphaWebSocket;
|
|
296
|
+
TransferSigner: typeof TransferSigner;
|
|
297
|
+
};
|
|
298
|
+
export default _default;
|
|
299
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alpha Network TypeScript SDK v0.3.1
|
|
3
|
+
* The blockchain built for AI agents.
|
|
4
|
+
*
|
|
5
|
+
* Zero external runtime dependencies — uses Node.js built-in http/https/crypto only.
|
|
6
|
+
*/
|
|
7
|
+
import * as http from "node:http";
|
|
8
|
+
import * as https from "node:https";
|
|
9
|
+
import { URL } from "node:url";
|
|
10
|
+
import * as crypto from "node:crypto";
|
|
11
|
+
// ─── Ed25519 Transfer Signer ──────────────────────────────────────────────────
|
|
12
|
+
/**
|
|
13
|
+
* Ed25519 key management and transfer signing for Alpha Network.
|
|
14
|
+
*
|
|
15
|
+
* Uses Node.js built-in crypto module — zero extra dependencies.
|
|
16
|
+
*
|
|
17
|
+
* Usage:
|
|
18
|
+
* const signer = TransferSigner.generate();
|
|
19
|
+
* console.log(signer.address); // alpha1…
|
|
20
|
+
* const req = signer.buildTransferRequest("alpha1to…", 1000, 0);
|
|
21
|
+
* const result = await client.transferSigned(req);
|
|
22
|
+
*/
|
|
23
|
+
export class TransferSigner {
|
|
24
|
+
publicKey;
|
|
25
|
+
pubkeyHex;
|
|
26
|
+
address;
|
|
27
|
+
privateKey;
|
|
28
|
+
constructor(privateKey, publicKey) {
|
|
29
|
+
this.privateKey = privateKey;
|
|
30
|
+
this.publicKey = publicKey;
|
|
31
|
+
this.pubkeyHex = publicKey.toString("hex");
|
|
32
|
+
// Derive Alpha address: alpha1 + first 40 hex chars of SHA256(pubkey)
|
|
33
|
+
const h = crypto.createHash("sha256").update(publicKey).digest("hex").slice(0, 40);
|
|
34
|
+
this.address = `alpha1${h}`;
|
|
35
|
+
}
|
|
36
|
+
/** Generate a fresh Ed25519 keypair. */
|
|
37
|
+
static generate() {
|
|
38
|
+
const { publicKey, privateKey } = crypto.generateKeyPairSync("ed25519");
|
|
39
|
+
const pubBuf = publicKey.export({ type: "spki", format: "der" });
|
|
40
|
+
const privBuf = privateKey.export({ type: "pkcs8", format: "der" });
|
|
41
|
+
// Extract raw 32-byte public key from SPKI DER
|
|
42
|
+
const rawPub = pubBuf.subarray(pubBuf.length - 32);
|
|
43
|
+
return new TransferSigner(privBuf, rawPub);
|
|
44
|
+
}
|
|
45
|
+
/** Load from a hex-encoded raw Ed25519 private key (64 hex chars = 32 bytes). */
|
|
46
|
+
static fromPrivateKeyHex(privkeyHex) {
|
|
47
|
+
const rawPriv = Buffer.from(privkeyHex, "hex");
|
|
48
|
+
// Create KeyObject from raw seed
|
|
49
|
+
const privKey = crypto.createPrivateKey({
|
|
50
|
+
key: rawPriv,
|
|
51
|
+
format: "der",
|
|
52
|
+
type: "pkcs8",
|
|
53
|
+
});
|
|
54
|
+
const pubKey = crypto.createPublicKey(privKey);
|
|
55
|
+
const pubDer = pubKey.export({ type: "spki", format: "der" });
|
|
56
|
+
const rawPub = pubDer.subarray(pubDer.length - 32);
|
|
57
|
+
return new TransferSigner(rawPriv, rawPub);
|
|
58
|
+
}
|
|
59
|
+
/** Return the raw private key as hex (keep this secret!). */
|
|
60
|
+
privateKeyHex() {
|
|
61
|
+
return this.privateKey.toString("hex");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Sign a transfer message.
|
|
65
|
+
* Canonical format: transfer:{from}:{to}:{amount}:{nonce}:{timestamp}
|
|
66
|
+
* Returns the 128-char hex signature.
|
|
67
|
+
*/
|
|
68
|
+
signTransfer(toAddr, amount, nonce, timestamp) {
|
|
69
|
+
const ts = timestamp ?? Math.floor(Date.now() / 1000);
|
|
70
|
+
const message = `transfer:${this.address}:${toAddr}:${amount}:${nonce}:${ts}`;
|
|
71
|
+
const sig = crypto.sign(null, Buffer.from(message), this.privateKey);
|
|
72
|
+
return sig.toString("hex");
|
|
73
|
+
}
|
|
74
|
+
/** Build a complete signed transfer request body. */
|
|
75
|
+
buildTransferRequest(toAddr, amount, nonce, memo = "") {
|
|
76
|
+
const ts = Math.floor(Date.now() / 1000);
|
|
77
|
+
return {
|
|
78
|
+
from: this.address,
|
|
79
|
+
to: toAddr,
|
|
80
|
+
amount,
|
|
81
|
+
memo,
|
|
82
|
+
pubkey: this.pubkeyHex,
|
|
83
|
+
signature: this.signTransfer(toAddr, amount, nonce, ts),
|
|
84
|
+
nonce,
|
|
85
|
+
timestamp: ts,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// ─── HTTP helper ──────────────────────────────────────────────────────────────
|
|
90
|
+
function request(method, rawUrl, body) {
|
|
91
|
+
return new Promise((resolve, reject) => {
|
|
92
|
+
const u = new URL(rawUrl);
|
|
93
|
+
const isHttps = u.protocol === "https:";
|
|
94
|
+
const lib = isHttps ? https : http;
|
|
95
|
+
const data = body ? JSON.stringify(body) : undefined;
|
|
96
|
+
const opts = {
|
|
97
|
+
hostname: u.hostname,
|
|
98
|
+
port: u.port || (isHttps ? 443 : 80),
|
|
99
|
+
path: u.pathname + u.search,
|
|
100
|
+
method,
|
|
101
|
+
headers: {
|
|
102
|
+
"Content-Type": "application/json",
|
|
103
|
+
Accept: "application/json",
|
|
104
|
+
...(data ? { "Content-Length": Buffer.byteLength(data) } : {}),
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
const req = lib.request(opts, (res) => {
|
|
108
|
+
let raw = "";
|
|
109
|
+
res.on("data", (chunk) => (raw += chunk.toString()));
|
|
110
|
+
res.on("end", () => {
|
|
111
|
+
try {
|
|
112
|
+
const parsed = JSON.parse(raw);
|
|
113
|
+
resolve(parsed);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
reject(new Error(`Non-JSON response (${res.statusCode}): ${raw}`));
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
req.on("error", reject);
|
|
121
|
+
if (data)
|
|
122
|
+
req.write(data);
|
|
123
|
+
req.end();
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
// ─── AlphaClient — low-level REST client ─────────────────────────────────────
|
|
127
|
+
export class AlphaClient {
|
|
128
|
+
baseUrl;
|
|
129
|
+
constructor(nodeUrl = "http://localhost:8080") {
|
|
130
|
+
this.baseUrl = nodeUrl.replace(/\/$/, "");
|
|
131
|
+
}
|
|
132
|
+
// --- Health ---
|
|
133
|
+
health() {
|
|
134
|
+
return request("GET", `${this.baseUrl}/health`);
|
|
135
|
+
}
|
|
136
|
+
healthDetailed() {
|
|
137
|
+
return request("GET", `${this.baseUrl}/api/v1/health/detailed`);
|
|
138
|
+
}
|
|
139
|
+
// --- Chain info ---
|
|
140
|
+
chainInfo() {
|
|
141
|
+
return request("GET", `${this.baseUrl}/api/v1/chain/info`);
|
|
142
|
+
}
|
|
143
|
+
// --- Agent registry ---
|
|
144
|
+
registerAgent(address, capabilities, stake) {
|
|
145
|
+
return request("POST", `${this.baseUrl}/api/v1/agents/register`, { address, capabilities, stake });
|
|
146
|
+
}
|
|
147
|
+
getAgent(agentId) {
|
|
148
|
+
return request("GET", `${this.baseUrl}/api/v1/agents/${agentId}`);
|
|
149
|
+
}
|
|
150
|
+
listAgents(capability, limit = 50) {
|
|
151
|
+
const q = new URLSearchParams();
|
|
152
|
+
if (capability)
|
|
153
|
+
q.set("capability", capability);
|
|
154
|
+
q.set("limit", String(limit));
|
|
155
|
+
return request("GET", `${this.baseUrl}/api/v1/agents?${q}`);
|
|
156
|
+
}
|
|
157
|
+
// --- Transfers ---
|
|
158
|
+
transfer(from, to, amount, memo) {
|
|
159
|
+
return request("POST", `${this.baseUrl}/api/v1/transfer`, { from, to, amount, memo: memo ?? "" });
|
|
160
|
+
}
|
|
161
|
+
/** Submit a signed transfer (from TransferSigner.buildTransferRequest). */
|
|
162
|
+
transferSigned(signedReq) {
|
|
163
|
+
return request("POST", `${this.baseUrl}/api/v1/transfer`, signedReq);
|
|
164
|
+
}
|
|
165
|
+
// --- Balances ---
|
|
166
|
+
balance(address) {
|
|
167
|
+
return request("GET", `${this.baseUrl}/api/v1/accounts/${address}/balance`);
|
|
168
|
+
}
|
|
169
|
+
// --- Blocks ---
|
|
170
|
+
latestBlock() {
|
|
171
|
+
return request("GET", `${this.baseUrl}/api/v1/blocks/latest`);
|
|
172
|
+
}
|
|
173
|
+
blockByHeight(height) {
|
|
174
|
+
return request("GET", `${this.baseUrl}/api/v1/blocks/${height}`);
|
|
175
|
+
}
|
|
176
|
+
// --- Tasks ---
|
|
177
|
+
listTasks() {
|
|
178
|
+
return request("GET", `${this.baseUrl}/api/v1/tasks`);
|
|
179
|
+
}
|
|
180
|
+
availableTasks(capability) {
|
|
181
|
+
const q = new URLSearchParams();
|
|
182
|
+
if (capability)
|
|
183
|
+
q.set("capability", capability);
|
|
184
|
+
return request("GET", `${this.baseUrl}/api/v1/tasks/available?${q}`);
|
|
185
|
+
}
|
|
186
|
+
getTask(taskId) {
|
|
187
|
+
return request("GET", `${this.baseUrl}/api/v1/tasks/${taskId}`);
|
|
188
|
+
}
|
|
189
|
+
postTask(capability, reward, inputHash, postedBy, deadline) {
|
|
190
|
+
return request("POST", `${this.baseUrl}/api/v1/tasks/post`, {
|
|
191
|
+
capability,
|
|
192
|
+
reward,
|
|
193
|
+
input_hash: inputHash,
|
|
194
|
+
posted_by: postedBy ?? "",
|
|
195
|
+
deadline: deadline ?? 0,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
submitTaskResult(taskId, agentId, resultHash, ipfsCid) {
|
|
199
|
+
return request("POST", `${this.baseUrl}/api/v1/tasks/${taskId}/submit`, { agent_id: agentId, result_hash: resultHash, ipfs_cid: ipfsCid ?? "" });
|
|
200
|
+
}
|
|
201
|
+
// --- Intelligence oracle ---
|
|
202
|
+
intelligenceQuery(type, capability, agentId, limit = 10) {
|
|
203
|
+
const q = new URLSearchParams({ type, limit: String(limit) });
|
|
204
|
+
if (capability)
|
|
205
|
+
q.set("capability", capability);
|
|
206
|
+
if (agentId)
|
|
207
|
+
q.set("agent_id", agentId);
|
|
208
|
+
return request("GET", `${this.baseUrl}/api/v1/intelligence/query?${q}`);
|
|
209
|
+
}
|
|
210
|
+
intelligenceStats(window = 1000) {
|
|
211
|
+
return request("GET", `${this.baseUrl}/api/v1/intelligence/stats?window=${window}`);
|
|
212
|
+
}
|
|
213
|
+
topAgents(capability, limit = 10) {
|
|
214
|
+
const q = new URLSearchParams({ limit: String(limit) });
|
|
215
|
+
if (capability)
|
|
216
|
+
q.set("capability", capability);
|
|
217
|
+
return request("GET", `${this.baseUrl}/api/v1/intelligence/top?${q}`);
|
|
218
|
+
}
|
|
219
|
+
// --- P2P peers ---
|
|
220
|
+
peers() {
|
|
221
|
+
return request("GET", `${this.baseUrl}/api/v1/peers`);
|
|
222
|
+
}
|
|
223
|
+
announcePeer(address, port, agentId) {
|
|
224
|
+
return request("POST", `${this.baseUrl}/api/v1/peers/announce`, {
|
|
225
|
+
address,
|
|
226
|
+
port,
|
|
227
|
+
agent_id: agentId ?? "",
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
// --- Sync status ---
|
|
231
|
+
syncStatus() {
|
|
232
|
+
return request("GET", `${this.baseUrl}/api/v1/sync/status`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// ─── AlphaAgent — high-level agent class ──────────────────────────────────────
|
|
236
|
+
export class AlphaAgent {
|
|
237
|
+
client;
|
|
238
|
+
address;
|
|
239
|
+
capabilities;
|
|
240
|
+
stake;
|
|
241
|
+
agentId;
|
|
242
|
+
earningInterval;
|
|
243
|
+
connected = false;
|
|
244
|
+
constructor(opts) {
|
|
245
|
+
this.client = new AlphaClient(opts.nodeUrl);
|
|
246
|
+
this.address = opts.address;
|
|
247
|
+
this.capabilities = opts.capabilities ?? ["validation"];
|
|
248
|
+
this.stake = opts.stake ?? 1000;
|
|
249
|
+
}
|
|
250
|
+
/** Connect: verify the node is reachable and return chain info */
|
|
251
|
+
async connect() {
|
|
252
|
+
const info = await this.client.chainInfo();
|
|
253
|
+
this.connected = true;
|
|
254
|
+
return info;
|
|
255
|
+
}
|
|
256
|
+
/** Register this agent on-chain */
|
|
257
|
+
async register() {
|
|
258
|
+
const result = await this.client.registerAgent(this.address, this.capabilities, this.stake);
|
|
259
|
+
this.agentId = result.agent_id;
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Start earning $ALPHA by polling for tasks and submitting results.
|
|
264
|
+
* @param intervalMs polling interval in milliseconds (default 5000)
|
|
265
|
+
*/
|
|
266
|
+
startEarning(intervalMs = 5000) {
|
|
267
|
+
if (this.earningInterval)
|
|
268
|
+
return; // already earning
|
|
269
|
+
this.earningInterval = setInterval(async () => {
|
|
270
|
+
try {
|
|
271
|
+
await this._earnTick();
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
// Swallow errors — keep earning loop alive
|
|
275
|
+
}
|
|
276
|
+
}, intervalMs);
|
|
277
|
+
}
|
|
278
|
+
/** Stop the earning loop */
|
|
279
|
+
stopEarning() {
|
|
280
|
+
if (this.earningInterval) {
|
|
281
|
+
clearInterval(this.earningInterval);
|
|
282
|
+
this.earningInterval = undefined;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/** Get current $ALPHA balance */
|
|
286
|
+
async balance() {
|
|
287
|
+
const result = await this.client.balance(this.address);
|
|
288
|
+
return result.balance;
|
|
289
|
+
}
|
|
290
|
+
/** Send $ALPHA to another address */
|
|
291
|
+
async send(to, amount, memo) {
|
|
292
|
+
return this.client.transfer(this.address, to, amount, memo);
|
|
293
|
+
}
|
|
294
|
+
/** Send $ALPHA with an Ed25519 signature proving ownership */
|
|
295
|
+
async sendSigned(signedReq) {
|
|
296
|
+
return this.client.transferSigned(signedReq);
|
|
297
|
+
}
|
|
298
|
+
/** Get available tasks for this agent's capabilities */
|
|
299
|
+
async getTasks() {
|
|
300
|
+
const cap = this.capabilities[0];
|
|
301
|
+
const result = await this.client.availableTasks(cap);
|
|
302
|
+
return result.tasks ?? [];
|
|
303
|
+
}
|
|
304
|
+
/** Submit a result for a task */
|
|
305
|
+
async submitResult(taskId, result) {
|
|
306
|
+
if (!this.agentId)
|
|
307
|
+
throw new Error("Not registered — call register() first");
|
|
308
|
+
// Hash the result string into a hex digest
|
|
309
|
+
const resultHash = crypto.createHash("sha256").update(result).digest("hex");
|
|
310
|
+
return this.client.submitTaskResult(taskId, this.agentId, resultHash);
|
|
311
|
+
}
|
|
312
|
+
/** One tick of the earning loop */
|
|
313
|
+
async _earnTick() {
|
|
314
|
+
if (!this.agentId)
|
|
315
|
+
return;
|
|
316
|
+
const tasks = await this.getTasks();
|
|
317
|
+
for (const task of tasks.slice(0, 3)) {
|
|
318
|
+
// Simulate doing the work
|
|
319
|
+
const mockResult = `result_for_${task.task_id}_by_${this.agentId}`;
|
|
320
|
+
try {
|
|
321
|
+
await this.submitResult(task.task_id, mockResult);
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
// Task may already be claimed — continue
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* AlphaWebSocket subscribes to real-time Alpha Network events.
|
|
331
|
+
*
|
|
332
|
+
* Uses the `ws` npm package when available (Node < 22 doesn't have a built-in
|
|
333
|
+
* WebSocket client). Falls back gracefully if ws is not installed.
|
|
334
|
+
*
|
|
335
|
+
* Install optionally: npm install ws
|
|
336
|
+
*/
|
|
337
|
+
export class AlphaWebSocket {
|
|
338
|
+
wsUrl;
|
|
339
|
+
handlers = [];
|
|
340
|
+
ws = null;
|
|
341
|
+
constructor(nodeUrl = "http://localhost:8081") {
|
|
342
|
+
// Convert http(s) → ws(s)
|
|
343
|
+
this.wsUrl = nodeUrl.replace(/^http/, "ws").replace(/\/$/, "") + "/ws";
|
|
344
|
+
}
|
|
345
|
+
/** Subscribe to all events */
|
|
346
|
+
on(handler) {
|
|
347
|
+
this.handlers.push(handler);
|
|
348
|
+
return this;
|
|
349
|
+
}
|
|
350
|
+
/** Connect and begin receiving events */
|
|
351
|
+
async connect() {
|
|
352
|
+
// Try loading `ws` as an optional peer dependency
|
|
353
|
+
let WS;
|
|
354
|
+
try {
|
|
355
|
+
const mod = await import("ws");
|
|
356
|
+
WS = (mod.default ?? mod);
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
throw new Error("WebSocket support requires the `ws` package: npm install ws\n" +
|
|
360
|
+
"Alternatively use the REST polling API.");
|
|
361
|
+
}
|
|
362
|
+
const socket = new WS(this.wsUrl);
|
|
363
|
+
this.ws = socket;
|
|
364
|
+
socket.on("message", (raw) => {
|
|
365
|
+
try {
|
|
366
|
+
const text = raw instanceof Buffer ? raw.toString() : String(raw);
|
|
367
|
+
const data = JSON.parse(text);
|
|
368
|
+
const event = data.type === "block"
|
|
369
|
+
? { type: "block", data: data.data }
|
|
370
|
+
: data.type === "transaction"
|
|
371
|
+
? { type: "transaction", data: data.data }
|
|
372
|
+
: data.type === "task"
|
|
373
|
+
? { type: "task", data: data.data }
|
|
374
|
+
: { type: "raw", data };
|
|
375
|
+
this.handlers.forEach((h) => h(event));
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
// Ignore unparseable frames
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
socket.on("error", (err) => {
|
|
382
|
+
console.error("[AlphaWebSocket] error:", err);
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
/** Disconnect */
|
|
386
|
+
close() {
|
|
387
|
+
if (this.ws) {
|
|
388
|
+
this.ws.close();
|
|
389
|
+
this.ws = null;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
// ─── Exports ──────────────────────────────────────────────────────────────────
|
|
394
|
+
export default { AlphaClient, AlphaAgent, AlphaWebSocket, TransferSigner };
|
|
395
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "alpha-network-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Alpha Network TypeScript/Node.js SDK — the blockchain built for AI agents. Register agents, earn $ALPHA, sign transfers with Ed25519.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"check": "tsc --noEmit",
|
|
21
|
+
"dev": "tsc --watch",
|
|
22
|
+
"prepublishOnly": "npm run build"
|
|
23
|
+
},
|
|
24
|
+
"peerDependenciesMeta": {
|
|
25
|
+
"ws": {
|
|
26
|
+
"optional": true
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"ws": ">=8.0.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"typescript": "^5.4.0",
|
|
34
|
+
"@types/node": "^20.0.0",
|
|
35
|
+
"@types/ws": "^8.5.10"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"alpha-network",
|
|
39
|
+
"blockchain",
|
|
40
|
+
"ai-agents",
|
|
41
|
+
"sdk",
|
|
42
|
+
"typescript",
|
|
43
|
+
"crypto",
|
|
44
|
+
"proof-of-intelligence",
|
|
45
|
+
"web3",
|
|
46
|
+
"ed25519",
|
|
47
|
+
"p2p"
|
|
48
|
+
],
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"repository": {
|
|
51
|
+
"type": "git",
|
|
52
|
+
"url": "https://github.com/galaxiaalphanet/Alpha-Network"
|
|
53
|
+
},
|
|
54
|
+
"homepage": "https://alphanetx.xyz",
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">=18.0.0"
|
|
57
|
+
}
|
|
58
|
+
}
|