moltycash 8.2.1 → 8.3.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/dist/lib/x402Network.d.ts +7 -0
- package/dist/lib/x402Network.d.ts.map +1 -0
- package/dist/lib/x402Network.js +58 -0
- package/dist/lib/x402Network.js.map +1 -0
- package/dist/reward.js +10 -27
- package/dist/reward.js.map +1 -1
- package/dist/session.js +18 -31
- package/dist/session.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402Network.d.ts","sourceRoot":"","sources":["../../lib/x402Network.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,GAAG,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;CACvD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,CAsDhE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
2
|
+
import { x402Client } from "@x402/core/client";
|
|
3
|
+
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
4
|
+
import { registerExactSvmScheme } from "@x402/svm/exact/client";
|
|
5
|
+
import { createKeyPairSignerFromBytes } from "@solana/kit";
|
|
6
|
+
import bs58 from "bs58";
|
|
7
|
+
const SKALE_CHAIN_ID = 1187947933;
|
|
8
|
+
const SKALE_NETWORK_ID = `eip155:${SKALE_CHAIN_ID}`;
|
|
9
|
+
export async function buildX402Signer() {
|
|
10
|
+
const evmKey = process.env.EVM_PRIVATE_KEY;
|
|
11
|
+
const svmKey = process.env.SVM_PRIVATE_KEY;
|
|
12
|
+
const worldchainKey = process.env.WORLDCHAIN_PRIVATE_KEY;
|
|
13
|
+
const skaleKey = process.env.SKALE_PRIVATE_KEY;
|
|
14
|
+
const keyCount = [evmKey, svmKey, worldchainKey, skaleKey].filter(Boolean).length;
|
|
15
|
+
if (keyCount === 0) {
|
|
16
|
+
throw new Error("Set one of: EVM_PRIVATE_KEY (Base), SVM_PRIVATE_KEY (Solana), WORLDCHAIN_PRIVATE_KEY, SKALE_PRIVATE_KEY");
|
|
17
|
+
}
|
|
18
|
+
if (keyCount > 1) {
|
|
19
|
+
throw new Error("Multiple chain keys set. Unset the ones you don't want to use — only one chain per call.");
|
|
20
|
+
}
|
|
21
|
+
const client = new x402Client();
|
|
22
|
+
if (svmKey) {
|
|
23
|
+
const keyBytes = bs58.decode(svmKey);
|
|
24
|
+
const signer = await createKeyPairSignerFromBytes(keyBytes);
|
|
25
|
+
registerExactSvmScheme(client, { signer });
|
|
26
|
+
return { client, walletLabel: signer.address, network: 'solana' };
|
|
27
|
+
}
|
|
28
|
+
if (worldchainKey) {
|
|
29
|
+
if (!worldchainKey.startsWith("0x"))
|
|
30
|
+
throw new Error("WORLDCHAIN_PRIVATE_KEY must start with '0x'");
|
|
31
|
+
const account = privateKeyToAccount(worldchainKey);
|
|
32
|
+
registerExactEvmScheme(client, {
|
|
33
|
+
signer: account,
|
|
34
|
+
networks: ["eip155:480"],
|
|
35
|
+
paymentRequirementsSelector: (_ver, reqs) => reqs.find((r) => r.network === "eip155:480") || reqs[0],
|
|
36
|
+
});
|
|
37
|
+
return { client, walletLabel: account.address, network: 'worldchain' };
|
|
38
|
+
}
|
|
39
|
+
if (skaleKey) {
|
|
40
|
+
if (!skaleKey.startsWith("0x"))
|
|
41
|
+
throw new Error("SKALE_PRIVATE_KEY must start with '0x'");
|
|
42
|
+
const account = privateKeyToAccount(skaleKey);
|
|
43
|
+
registerExactEvmScheme(client, {
|
|
44
|
+
signer: account,
|
|
45
|
+
networks: [SKALE_NETWORK_ID],
|
|
46
|
+
paymentRequirementsSelector: (_ver, reqs) => reqs.find((r) => r.network === SKALE_NETWORK_ID) || reqs[0],
|
|
47
|
+
});
|
|
48
|
+
return { client, walletLabel: account.address, network: 'skale' };
|
|
49
|
+
}
|
|
50
|
+
// EVM Base default
|
|
51
|
+
if (!evmKey || !evmKey.startsWith("0x")) {
|
|
52
|
+
throw new Error("EVM_PRIVATE_KEY must start with '0x'");
|
|
53
|
+
}
|
|
54
|
+
const account = privateKeyToAccount(evmKey);
|
|
55
|
+
registerExactEvmScheme(client, { signer: account });
|
|
56
|
+
return { client, walletLabel: account.address, network: 'base' };
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=x402Network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402Network.js","sourceRoot":"","sources":["../../lib/x402Network.ts"],"names":[],"mappings":"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"}
|
package/dist/reward.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import "dotenv/config";
|
|
2
2
|
import minimist from "minimist";
|
|
3
3
|
import axios from "axios";
|
|
4
|
-
import { privateKeyToAccount } from "viem/accounts";
|
|
5
|
-
import { x402Client } from "@x402/core/client";
|
|
6
|
-
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
7
4
|
import { readCachedSession, readLatestSession } from "./lib/session.js";
|
|
8
5
|
import { buildExplorerUrl } from "./lib/explorer.js";
|
|
9
|
-
|
|
6
|
+
import { buildX402Signer } from "./lib/x402Network.js";
|
|
10
7
|
const baseURL = process.env.RESOURCE_SERVER_URL || "https://api.molty.cash";
|
|
11
8
|
const X402_EXTENSION_URI = "https://github.com/google-a2a/a2a-x402/v0.1";
|
|
12
9
|
let rpcIdCounter = 1;
|
|
@@ -53,20 +50,9 @@ async function rpcA2A(method, params) {
|
|
|
53
50
|
return response.data.result;
|
|
54
51
|
}
|
|
55
52
|
async function resolveWalletLabel() {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const bs58Mod = await import("bs58");
|
|
60
|
-
const decoder = bs58Mod.default ?? bs58Mod;
|
|
61
|
-
const keyBytes = decoder.decode(svm);
|
|
62
|
-
const signer = await createKeyPairSignerFromBytes(keyBytes);
|
|
63
|
-
return signer.address;
|
|
64
|
-
}
|
|
65
|
-
if (privateKey && privateKey.startsWith("0x")) {
|
|
66
|
-
const account = privateKeyToAccount(privateKey);
|
|
67
|
-
return account.address;
|
|
68
|
-
}
|
|
69
|
-
throw new Error("Set EVM_PRIVATE_KEY (Base) or SVM_PRIVATE_KEY (Solana)");
|
|
53
|
+
// Reuse the x402 signer setup so we accept the same chain set everywhere.
|
|
54
|
+
const { walletLabel } = await buildX402Signer();
|
|
55
|
+
return walletLabel;
|
|
70
56
|
}
|
|
71
57
|
async function handleBalance() {
|
|
72
58
|
// Prefer the wallet-specific session if any env key is set; otherwise just
|
|
@@ -111,15 +97,12 @@ async function handleClaim(args) {
|
|
|
111
97
|
console.error("❌ --destination <0x...> is required (Base EVM address that receives the $moltycash)");
|
|
112
98
|
process.exit(1);
|
|
113
99
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
console.log(`🎁 Claiming $moltycash for ${
|
|
120
|
-
// Set up x402 client to sign the USDC exit tax
|
|
121
|
-
const client = new x402Client();
|
|
122
|
-
registerExactEvmScheme(client, { signer: account });
|
|
100
|
+
// Build x402 client for whichever chain has a private key configured. The
|
|
101
|
+
// signing chain doesn't have to match the destination — destination is
|
|
102
|
+
// always Base EVM (where the sweep lands); fee can be paid from any
|
|
103
|
+
// supported x402 chain (Base / Solana / World Chain / SKALE).
|
|
104
|
+
const { client, walletLabel, network } = await buildX402Signer();
|
|
105
|
+
console.log(`🎁 Claiming $moltycash for ${walletLabel} (${network}) → ${destination}`);
|
|
123
106
|
// Phase 1: request fee challenge
|
|
124
107
|
console.log("💳 Phase 1: requesting USDC exit-tax challenge...");
|
|
125
108
|
const phase1 = await rpcA2A("reward.claim", { destination });
|
package/dist/reward.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reward.js","sourceRoot":"","sources":["../reward.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"reward.js","sourceRoot":"","sources":["../reward.ts"],"names":[],"mappings":"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"}
|
package/dist/session.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import "dotenv/config";
|
|
2
2
|
import minimist from "minimist";
|
|
3
3
|
import axios from "axios";
|
|
4
|
-
import { privateKeyToAccount } from "viem/accounts";
|
|
5
|
-
import { x402Client } from "@x402/core/client";
|
|
6
|
-
import { registerExactEvmScheme } from "@x402/evm/exact/client";
|
|
7
4
|
import { writeCachedSession, readCachedSession } from "./lib/session.js";
|
|
8
|
-
|
|
5
|
+
import { buildX402Signer } from "./lib/x402Network.js";
|
|
9
6
|
const baseURL = process.env.RESOURCE_SERVER_URL || "https://api.molty.cash";
|
|
10
7
|
const X402_EXTENSION_URI = "https://github.com/google-a2a/a2a-x402/v0.1";
|
|
11
8
|
let rpcIdCounter = 1;
|
|
@@ -26,28 +23,21 @@ async function a2aCall(method, params) {
|
|
|
26
23
|
return response.data.result;
|
|
27
24
|
}
|
|
28
25
|
async function handleSessionCreate() {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
const account = privateKeyToAccount(privateKey);
|
|
34
|
-
console.log(`🔧 Wallet: ${account.address}`);
|
|
35
|
-
const client = new x402Client();
|
|
36
|
-
registerExactEvmScheme(client, { signer: account });
|
|
37
|
-
console.log("💳 Phase 1: requesting 1¢ auth payment challenge...");
|
|
26
|
+
const { client, walletLabel, network } = await buildX402Signer();
|
|
27
|
+
console.log(`🔧 Wallet: ${walletLabel} (${network})`);
|
|
28
|
+
console.log("💳 Phase 1: requesting USDC auth payment challenge...");
|
|
38
29
|
const phase1 = await a2aCall("session.create", {});
|
|
39
30
|
if (!phase1.id)
|
|
40
31
|
throw new Error("Missing task ID in Phase 1 response");
|
|
41
32
|
const paymentRequired = phase1.status?.message?.metadata?.["x402.payment.required"];
|
|
42
33
|
if (!paymentRequired)
|
|
43
34
|
throw new Error("No payment requirements found");
|
|
44
|
-
console.log("🔐 Phase 2: signing
|
|
35
|
+
console.log("🔐 Phase 2: signing payment + submitting...");
|
|
45
36
|
const signedPayment = await client.createPaymentPayload(paymentRequired);
|
|
46
37
|
const phase2 = await a2aCall("session.create", {
|
|
47
38
|
taskId: phase1.id,
|
|
48
39
|
payment: signedPayment,
|
|
49
40
|
});
|
|
50
|
-
// Extract session_token from task artifacts
|
|
51
41
|
const artifacts = phase2.artifacts || [];
|
|
52
42
|
let issued = null;
|
|
53
43
|
for (const a of artifacts) {
|
|
@@ -69,6 +59,17 @@ async function handleSessionCreate() {
|
|
|
69
59
|
console.log(`✅ Session token cached for wallet ${issued.session_wallet}`);
|
|
70
60
|
console.log(` Expires in ${Math.floor(expiresIn / 3600)}h ${Math.floor((expiresIn % 3600) / 60)}m`);
|
|
71
61
|
}
|
|
62
|
+
async function handleSessionStatus() {
|
|
63
|
+
const { walletLabel } = await buildX402Signer();
|
|
64
|
+
const cached = readCachedSession(walletLabel);
|
|
65
|
+
if (!cached) {
|
|
66
|
+
console.log(`No active session for ${walletLabel}. Run: moltycash session create`);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const expiresIn = Math.max(0, cached.session_expires_at - Math.floor(Date.now() / 1000));
|
|
70
|
+
console.log(`Wallet: ${cached.session_wallet}`);
|
|
71
|
+
console.log(`Expires: ${Math.floor(expiresIn / 3600)}h ${Math.floor((expiresIn % 3600) / 60)}m from now`);
|
|
72
|
+
}
|
|
72
73
|
const args = minimist(process.argv.slice(2));
|
|
73
74
|
const subcommand = args._[0];
|
|
74
75
|
async function main() {
|
|
@@ -77,23 +78,9 @@ async function main() {
|
|
|
77
78
|
case "create":
|
|
78
79
|
await handleSessionCreate();
|
|
79
80
|
break;
|
|
80
|
-
case "status":
|
|
81
|
-
|
|
82
|
-
console.error("❌ EVM_PRIVATE_KEY required");
|
|
83
|
-
process.exit(1);
|
|
84
|
-
}
|
|
85
|
-
const account = privateKeyToAccount(privateKey);
|
|
86
|
-
const cached = readCachedSession(account.address);
|
|
87
|
-
if (!cached) {
|
|
88
|
-
console.log(`No active session for ${account.address}. Run: moltycash session create`);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
const expiresIn = Math.max(0, cached.session_expires_at - Math.floor(Date.now() / 1000));
|
|
92
|
-
console.log(`Wallet: ${cached.session_wallet}`);
|
|
93
|
-
console.log(`Expires in ${Math.floor(expiresIn / 3600)}h ${Math.floor((expiresIn % 3600) / 60)}m`);
|
|
94
|
-
}
|
|
81
|
+
case "status":
|
|
82
|
+
await handleSessionStatus();
|
|
95
83
|
break;
|
|
96
|
-
}
|
|
97
84
|
default:
|
|
98
85
|
console.error("Usage: moltycash session <create|status>");
|
|
99
86
|
process.exit(1);
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../session.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../session.ts"],"names":[],"mappings":"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"}
|