@payload-exchange/solver-agent 0.0.1
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/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +163 -0
- package/dist/index.js.map +1 -0
- package/package.json +27 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { SolverClient } from "@payload-exchange/solver-sdk";
|
|
4
|
+
import { privateKeyToAccount, generatePrivateKey } from "viem/accounts";
|
|
5
|
+
const program = new Command()
|
|
6
|
+
.name("px-solver")
|
|
7
|
+
.description("Register as a solver on the payload.exchange coordinator")
|
|
8
|
+
.option("--coordinator <url>", "Coordinator URL", process.env.COORDINATOR_URL ?? "https://px-test.fly.dev")
|
|
9
|
+
.option("--key <hex>", "Tempo private key (hex)", process.env.TEMPO_PRIVATE_KEY)
|
|
10
|
+
.option("--tasks <classes>", "Comma-separated task classes", "price_feed")
|
|
11
|
+
.option("--price <n>", "Fee per task in USDC", "0.075")
|
|
12
|
+
.option("--stake <n>", "Stake amount", "10")
|
|
13
|
+
.parse();
|
|
14
|
+
const opts = program.opts();
|
|
15
|
+
const coordinatorUrl = opts.coordinator;
|
|
16
|
+
const privateKey = (opts.key ?? generatePrivateKey());
|
|
17
|
+
const account = privateKeyToAccount(privateKey);
|
|
18
|
+
const solverAddress = account.address;
|
|
19
|
+
const hasKey = !!opts.key;
|
|
20
|
+
const taskClasses = opts.tasks.split(",").map((s) => s.trim());
|
|
21
|
+
/**
|
|
22
|
+
* Mock price fetcher. Returns simulated price data for any token pair.
|
|
23
|
+
* Replace with real API calls (CoinGecko, Binance, etc.) in production.
|
|
24
|
+
*/
|
|
25
|
+
async function fetchPrices(token) {
|
|
26
|
+
const now = Math.floor(Date.now() / 1000);
|
|
27
|
+
// Simulated prices with small variance
|
|
28
|
+
const base = token.toUpperCase().includes("ETH") ? 3421.5 : 1.0;
|
|
29
|
+
const variance = () => base * (1 + (Math.random() - 0.5) * 0.002);
|
|
30
|
+
const sources = [
|
|
31
|
+
{ name: "binance", price: Number(variance().toFixed(2)), timestamp: now - 2 },
|
|
32
|
+
{ name: "coinbase", price: Number(variance().toFixed(2)), timestamp: now - 5 },
|
|
33
|
+
{ name: "kraken", price: Number(variance().toFixed(2)), timestamp: now - 3 },
|
|
34
|
+
];
|
|
35
|
+
const twap = Number((sources.reduce((sum, s) => sum + s.price, 0) / sources.length).toFixed(2));
|
|
36
|
+
return { twap, sources };
|
|
37
|
+
}
|
|
38
|
+
async function main() {
|
|
39
|
+
const client = new SolverClient(coordinatorUrl);
|
|
40
|
+
// 1. Register as a solver
|
|
41
|
+
console.log(`[solver] Coordinator: ${coordinatorUrl}`);
|
|
42
|
+
console.log(`[solver] Wallet: ${solverAddress}`);
|
|
43
|
+
if (!hasKey) {
|
|
44
|
+
console.log("[solver] No --key set — generated ephemeral wallet");
|
|
45
|
+
}
|
|
46
|
+
console.log(`[solver] Registering for tasks: ${taskClasses.join(", ")}...`);
|
|
47
|
+
let registration;
|
|
48
|
+
try {
|
|
49
|
+
registration = await client.register({
|
|
50
|
+
seller: solverAddress,
|
|
51
|
+
supportedTaskClasses: taskClasses,
|
|
52
|
+
pricingModel: "fixed",
|
|
53
|
+
price: Number.parseFloat(opts.price),
|
|
54
|
+
stake: Number.parseFloat(opts.stake),
|
|
55
|
+
executionTerms: {
|
|
56
|
+
maxLatency: "5s",
|
|
57
|
+
minSources: 3,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
console.error("[solver] Failed to register:", err.message);
|
|
63
|
+
console.error("[solver] Is the coordinator running at", coordinatorUrl, "?");
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
console.log(`[solver] Registered: ${registration.id} (stake: $${opts.stake})`);
|
|
67
|
+
// 2. Connect to WebSocket for match notifications
|
|
68
|
+
console.log("[solver] Watching for intents...");
|
|
69
|
+
let connection;
|
|
70
|
+
try {
|
|
71
|
+
connection = client.connect({ taskClasses });
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
console.error("[solver] WebSocket connection failed:", err.message);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
// Handle graceful shutdown
|
|
78
|
+
process.on("SIGINT", () => {
|
|
79
|
+
console.log("\n[solver] Shutting down...");
|
|
80
|
+
connection.close();
|
|
81
|
+
process.exit(0);
|
|
82
|
+
});
|
|
83
|
+
process.on("SIGTERM", () => {
|
|
84
|
+
console.log("\n[solver] Shutting down...");
|
|
85
|
+
connection.close();
|
|
86
|
+
process.exit(0);
|
|
87
|
+
});
|
|
88
|
+
for await (const event of connection.events) {
|
|
89
|
+
console.log(`[solver] Event: ${event.event}`);
|
|
90
|
+
if (event.event === "subscribed") {
|
|
91
|
+
console.log(`[solver] Subscribed to ${taskClasses.join(", ")} intents`);
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
// Handle new_intent — this means the coordinator broadcast an intent we should look at
|
|
95
|
+
if (event.event === "new_intent") {
|
|
96
|
+
const data = event.data;
|
|
97
|
+
console.log(`[solver] New intent received! Order: ${data.orderId}`);
|
|
98
|
+
console.log(`[solver] Intent: ${data.intent}`);
|
|
99
|
+
console.log(`[solver] Max fee: $${data.maxPrice}`);
|
|
100
|
+
// Wait briefly for the matching engine to process
|
|
101
|
+
await new Promise((resolve) => setTimeout(resolve, 2_000));
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// Handle match — this means we've been assigned to an order
|
|
105
|
+
if (event.event === "order_matched") {
|
|
106
|
+
const data = event.data;
|
|
107
|
+
// Only act on matches assigned to us
|
|
108
|
+
if (data.seller !== solverAddress)
|
|
109
|
+
continue;
|
|
110
|
+
console.log(`[solver] Match received! Order: ${data.orderId}`);
|
|
111
|
+
console.log(`[solver] Intent: ${data.intent}`);
|
|
112
|
+
console.log(`[solver] Agreed price: $${data.agreedPrice}`);
|
|
113
|
+
// Fetch price data
|
|
114
|
+
console.log("[solver] Fetching prices...");
|
|
115
|
+
const priceData = await fetchPrices(data.intent);
|
|
116
|
+
console.log(`[solver] TWAP: $${priceData.twap} from ${priceData.sources.length} sources`);
|
|
117
|
+
// Submit fulfillment
|
|
118
|
+
console.log("[solver] Submitting fulfillment...");
|
|
119
|
+
try {
|
|
120
|
+
const response = await client.submitFulfillment({
|
|
121
|
+
orderId: data.orderId,
|
|
122
|
+
sellerId: solverAddress,
|
|
123
|
+
result: priceData,
|
|
124
|
+
proof: {
|
|
125
|
+
source_urls: priceData.sources.map((s) => `https://api.${s.name}.com/v1/ticker`),
|
|
126
|
+
timestamps: priceData.sources.map((s) => s.timestamp),
|
|
127
|
+
methodology: "TWAP",
|
|
128
|
+
},
|
|
129
|
+
executionTime: `${Date.now() - event.timestamp}ms`,
|
|
130
|
+
});
|
|
131
|
+
if (response.attestation.success) {
|
|
132
|
+
const checkCount = response.attestation.checks?.length ?? 0;
|
|
133
|
+
const passedCount = response.attestation.checks?.filter((c) => c.passed).length ?? 0;
|
|
134
|
+
console.log(`[solver] Attestation: PASSED (${passedCount}/${checkCount} checks)`);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
console.log(`[solver] Attestation: FAILED - ${response.attestation.reason ?? "unknown reason"}`);
|
|
138
|
+
}
|
|
139
|
+
console.log(`[solver] Next step: ${response.nextStep}`);
|
|
140
|
+
console.log("[solver] Waiting for buyer payment...");
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
console.error("[solver] Fulfillment failed:", err.message);
|
|
144
|
+
}
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
// Log settlement events
|
|
148
|
+
if (event.event === "settlement_complete") {
|
|
149
|
+
const data = event.data;
|
|
150
|
+
console.log(`[solver] Settlement complete for order ${data.orderId}`);
|
|
151
|
+
console.log(`[solver] Received: $${data.sellerReceived}`);
|
|
152
|
+
if (data.txHash) {
|
|
153
|
+
console.log(`[solver] Tx: ${data.txHash}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
console.log("[solver] WebSocket connection closed.");
|
|
158
|
+
}
|
|
159
|
+
main().catch((err) => {
|
|
160
|
+
console.error("[solver] Fatal error:", err);
|
|
161
|
+
process.exit(1);
|
|
162
|
+
});
|
|
163
|
+
//# 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,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@payload-exchange/solver-agent",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"bin": {
|
|
6
|
+
"px-solver": "./dist/index.js"
|
|
7
|
+
},
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"files": ["dist"],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"start": "bun run src/index.ts",
|
|
12
|
+
"build": "tsc -p tsconfig.build.json",
|
|
13
|
+
"typecheck": "tsc --noEmit",
|
|
14
|
+
"clean": "rm -rf dist"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@payload-exchange/solver-sdk": "workspace:*",
|
|
18
|
+
"@payload-exchange/protocol": "workspace:*",
|
|
19
|
+
"commander": "^13.0.0",
|
|
20
|
+
"viem": "^2.0.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@payload-exchange/tsconfig": "workspace:*",
|
|
24
|
+
"@types/bun": "^1.3.11",
|
|
25
|
+
"typescript": "^5.7.0"
|
|
26
|
+
}
|
|
27
|
+
}
|