dero-mcp-server 0.2.2 → 0.4.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/POSITIONING.md +94 -0
- package/README.md +125 -24
- package/SKILL.md +264 -0
- package/data/docs-index.json +264 -260
- package/dist/bn254.d.ts +74 -0
- package/dist/bn254.d.ts.map +1 -0
- package/dist/bn254.js +205 -0
- package/dist/bn254.js.map +1 -0
- package/dist/citations.d.ts +70 -0
- package/dist/citations.d.ts.map +1 -1
- package/dist/citations.js +161 -1
- package/dist/citations.js.map +1 -1
- package/dist/composites/_shared.d.ts +1 -1
- package/dist/composites/_shared.js +1 -1
- package/dist/composites/audit-chain-artifact-claim.d.ts +128 -0
- package/dist/composites/audit-chain-artifact-claim.d.ts.map +1 -0
- package/dist/composites/audit-chain-artifact-claim.js +305 -0
- package/dist/composites/audit-chain-artifact-claim.js.map +1 -0
- package/dist/composites/diagnose-chain-health.d.ts +1 -1
- package/dist/composites/diagnose-chain-health.js +1 -1
- package/dist/composites/estimate-deploy-cost.d.ts +1 -1
- package/dist/composites/estimate-deploy-cost.js +1 -1
- package/dist/composites/explain-smart-contract.d.ts +1 -1
- package/dist/composites/explain-smart-contract.js +1 -1
- package/dist/composites/forge-demo-proof.d.ts +81 -0
- package/dist/composites/forge-demo-proof.d.ts.map +1 -0
- package/dist/composites/forge-demo-proof.js +204 -0
- package/dist/composites/forge-demo-proof.js.map +1 -0
- package/dist/composites/recommend-docs-path.d.ts +1 -1
- package/dist/composites/recommend-docs-path.js +1 -1
- package/dist/composites/trace-transaction-with-context.d.ts +1 -1
- package/dist/composites/trace-transaction-with-context.js +1 -1
- package/dist/daemon-base.d.ts +28 -0
- package/dist/daemon-base.d.ts.map +1 -0
- package/dist/daemon-base.js +62 -0
- package/dist/daemon-base.js.map +1 -0
- package/dist/dero-curve.d.ts +79 -0
- package/dist/dero-curve.d.ts.map +1 -0
- package/dist/dero-curve.js +79 -0
- package/dist/dero-curve.js.map +1 -0
- package/dist/docs-parse.d.ts.map +1 -1
- package/dist/docs-parse.js +18 -2
- package/dist/docs-parse.js.map +1 -1
- package/dist/http-server.d.ts +37 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +139 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.js +18 -11
- package/dist/index.js.map +1 -1
- package/dist/proof-decode.d.ts +125 -0
- package/dist/proof-decode.d.ts.map +1 -0
- package/dist/proof-decode.js +619 -0
- package/dist/proof-decode.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +89 -11
- package/dist/server.js.map +1 -1
- package/dist/tool-descriptions.d.ts +3 -0
- package/dist/tool-descriptions.d.ts.map +1 -1
- package/dist/tool-descriptions.js +39 -0
- package/dist/tool-descriptions.js.map +1 -1
- package/dist/tx-parse.d.ts +63 -0
- package/dist/tx-parse.d.ts.map +1 -0
- package/dist/tx-parse.js +183 -0
- package/dist/tx-parse.js.map +1 -0
- package/package.json +24 -3
package/dist/tx-parse.js
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal DERO transaction parser — extracts what the FORGE feature needs.
|
|
3
|
+
*
|
|
4
|
+
* Parses NORMAL, BURN_TX, and SC_TX transactions up through each payload's
|
|
5
|
+
* Statement (in particular, the `C[]` array of ring commitments). Does NOT
|
|
6
|
+
* parse the Bulletproof / sigma proofs at the end of the TX — they are large,
|
|
7
|
+
* complex, and irrelevant to forging a display-only payload proof.
|
|
8
|
+
*
|
|
9
|
+
* Wire format mirrors `transaction/transaction.go:Deserialize` (TX outer
|
|
10
|
+
* structure) and `cryptography/crypto/protocol_structures.go:Statement.Deserialize`
|
|
11
|
+
* (per-payload ring state).
|
|
12
|
+
*
|
|
13
|
+
* COINBASE / PREMINE / REGISTRATION transactions are rejected — they have no
|
|
14
|
+
* payloads, so there is nothing to forge a proof against.
|
|
15
|
+
*/
|
|
16
|
+
import { deroDecompress } from './bn254.js';
|
|
17
|
+
export var TransactionType;
|
|
18
|
+
(function (TransactionType) {
|
|
19
|
+
TransactionType[TransactionType["PREMINE"] = 0] = "PREMINE";
|
|
20
|
+
TransactionType[TransactionType["REGISTRATION"] = 1] = "REGISTRATION";
|
|
21
|
+
TransactionType[TransactionType["COINBASE"] = 2] = "COINBASE";
|
|
22
|
+
TransactionType[TransactionType["NORMAL"] = 3] = "NORMAL";
|
|
23
|
+
TransactionType[TransactionType["BURN_TX"] = 4] = "BURN_TX";
|
|
24
|
+
TransactionType[TransactionType["SC_TX"] = 5] = "SC_TX";
|
|
25
|
+
})(TransactionType || (TransactionType = {}));
|
|
26
|
+
const PAYLOAD_LIMIT = 145; // = 1 + 144, per transaction.go:62
|
|
27
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
28
|
+
// Cursor — tracks read position through the TX byte stream.
|
|
29
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
30
|
+
class Cursor {
|
|
31
|
+
bytes;
|
|
32
|
+
offset = 0;
|
|
33
|
+
constructor(bytes) {
|
|
34
|
+
this.bytes = bytes;
|
|
35
|
+
}
|
|
36
|
+
remaining() {
|
|
37
|
+
return this.bytes.length - this.offset;
|
|
38
|
+
}
|
|
39
|
+
readByte() {
|
|
40
|
+
if (this.offset >= this.bytes.length)
|
|
41
|
+
throw new Error('tx-parse: unexpected EOF');
|
|
42
|
+
return this.bytes[this.offset++];
|
|
43
|
+
}
|
|
44
|
+
readBytes(len) {
|
|
45
|
+
if (this.offset + len > this.bytes.length) {
|
|
46
|
+
throw new Error(`tx-parse: unexpected EOF (need ${len}, have ${this.remaining()})`);
|
|
47
|
+
}
|
|
48
|
+
const out = this.bytes.slice(this.offset, this.offset + len);
|
|
49
|
+
this.offset += len;
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
/** Go binary.Uvarint — little-endian base-128. */
|
|
53
|
+
readUvarint() {
|
|
54
|
+
let result = 0n;
|
|
55
|
+
let shift = 0n;
|
|
56
|
+
while (true) {
|
|
57
|
+
const b = this.readByte();
|
|
58
|
+
result |= BigInt(b & 0x7f) << shift;
|
|
59
|
+
if ((b & 0x80) === 0)
|
|
60
|
+
return result;
|
|
61
|
+
shift += 7n;
|
|
62
|
+
if (shift > 70n)
|
|
63
|
+
throw new Error('tx-parse: uvarint overflow');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
68
|
+
// Parser
|
|
69
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
70
|
+
function hexToBytes(hex) {
|
|
71
|
+
const clean = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
72
|
+
if (clean.length % 2 !== 0)
|
|
73
|
+
throw new Error(`tx-parse: odd hex length ${clean.length}`);
|
|
74
|
+
const out = new Uint8Array(clean.length / 2);
|
|
75
|
+
for (let i = 0; i < out.length; i++)
|
|
76
|
+
out[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);
|
|
77
|
+
return out;
|
|
78
|
+
}
|
|
79
|
+
function bytesToHex(bytes) {
|
|
80
|
+
let hex = '';
|
|
81
|
+
for (const b of bytes)
|
|
82
|
+
hex += b.toString(16).padStart(2, '0');
|
|
83
|
+
return hex;
|
|
84
|
+
}
|
|
85
|
+
function parseStatement(cur) {
|
|
86
|
+
const power = cur.readByte();
|
|
87
|
+
if (power > 7)
|
|
88
|
+
throw new Error(`tx-parse: ring power ${power} exceeds 128 ring size`);
|
|
89
|
+
const ringSize = 1 << power;
|
|
90
|
+
const bytesPerPublickey = cur.readByte();
|
|
91
|
+
const fees = cur.readUvarint();
|
|
92
|
+
const dRaw = cur.readBytes(33);
|
|
93
|
+
const D = deroDecompress(dRaw);
|
|
94
|
+
const publickeyPointers = cur.readBytes(ringSize * bytesPerPublickey);
|
|
95
|
+
const C = [];
|
|
96
|
+
const C_hex = [];
|
|
97
|
+
for (let i = 0; i < ringSize; i++) {
|
|
98
|
+
const raw = cur.readBytes(33);
|
|
99
|
+
C.push(deroDecompress(raw));
|
|
100
|
+
C_hex.push(bytesToHex(raw));
|
|
101
|
+
}
|
|
102
|
+
const roothash = cur.readBytes(32);
|
|
103
|
+
return {
|
|
104
|
+
ring_size: ringSize,
|
|
105
|
+
bytes_per_publickey: bytesPerPublickey,
|
|
106
|
+
fees,
|
|
107
|
+
D,
|
|
108
|
+
D_hex: bytesToHex(dRaw),
|
|
109
|
+
publickey_pointers: publickeyPointers,
|
|
110
|
+
C,
|
|
111
|
+
C_hex,
|
|
112
|
+
roothash,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function parsePayload(cur) {
|
|
116
|
+
const burnValue = cur.readUvarint();
|
|
117
|
+
const scid = cur.readBytes(32);
|
|
118
|
+
const rpcType = cur.readByte();
|
|
119
|
+
const rpcPayload = cur.readBytes(PAYLOAD_LIMIT);
|
|
120
|
+
const statement = parseStatement(cur);
|
|
121
|
+
return {
|
|
122
|
+
burn_value: burnValue,
|
|
123
|
+
scid_hex: bytesToHex(scid),
|
|
124
|
+
rpc_type: rpcType,
|
|
125
|
+
rpc_payload: rpcPayload,
|
|
126
|
+
statement,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Parse a hex-encoded DERO transaction up through each payload's Statement.
|
|
131
|
+
* Proofs and SCDATA (after payloads) are intentionally skipped.
|
|
132
|
+
*/
|
|
133
|
+
export function parseTransaction(hex) {
|
|
134
|
+
const bytes = hexToBytes(hex);
|
|
135
|
+
const cur = new Cursor(bytes);
|
|
136
|
+
const version = cur.readUvarint();
|
|
137
|
+
if (version !== 1n)
|
|
138
|
+
throw new Error(`tx-parse: unsupported version ${version}`);
|
|
139
|
+
const sourceNetwork = cur.readUvarint();
|
|
140
|
+
const destNetwork = cur.readUvarint();
|
|
141
|
+
const txType = Number(cur.readUvarint());
|
|
142
|
+
if (txType !== TransactionType.NORMAL &&
|
|
143
|
+
txType !== TransactionType.BURN_TX &&
|
|
144
|
+
txType !== TransactionType.SC_TX) {
|
|
145
|
+
throw new Error(`tx-parse: unsupported transaction type ${TransactionType[txType] ?? txType} — only NORMAL, BURN_TX, and SC_TX carry payloads with C[] commitments`);
|
|
146
|
+
}
|
|
147
|
+
// SC_TX prefixes Value (gas).
|
|
148
|
+
if (txType === TransactionType.SC_TX) {
|
|
149
|
+
cur.readUvarint(); // gas — we don't need the value
|
|
150
|
+
}
|
|
151
|
+
const height = cur.readUvarint();
|
|
152
|
+
const blid = cur.readBytes(32);
|
|
153
|
+
const assetCount = cur.readUvarint();
|
|
154
|
+
if (assetCount < 1n)
|
|
155
|
+
throw new Error('tx-parse: asset_count < 1');
|
|
156
|
+
const payloads = [];
|
|
157
|
+
for (let i = 0n; i < assetCount; i++)
|
|
158
|
+
payloads.push(parsePayload(cur));
|
|
159
|
+
return {
|
|
160
|
+
version,
|
|
161
|
+
source_network: sourceNetwork,
|
|
162
|
+
dest_network: destNetwork,
|
|
163
|
+
type: txType,
|
|
164
|
+
height,
|
|
165
|
+
blid_hex: bytesToHex(blid),
|
|
166
|
+
payloads,
|
|
167
|
+
bytes_consumed: cur.offset,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
171
|
+
// Convenience: extract a single commitment.
|
|
172
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
173
|
+
export function getRingCommitment(tx, ringSlot, payloadIndex = 0) {
|
|
174
|
+
if (payloadIndex < 0 || payloadIndex >= tx.payloads.length) {
|
|
175
|
+
throw new Error(`tx-parse: payload_index ${payloadIndex} out of range (have ${tx.payloads.length})`);
|
|
176
|
+
}
|
|
177
|
+
const stmt = tx.payloads[payloadIndex].statement;
|
|
178
|
+
if (ringSlot < 0 || ringSlot >= stmt.ring_size) {
|
|
179
|
+
throw new Error(`tx-parse: ring_slot ${ringSlot} out of range (ring size ${stmt.ring_size})`);
|
|
180
|
+
}
|
|
181
|
+
return stmt.C[ringSlot];
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=tx-parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx-parse.js","sourceRoot":"","sources":["../src/tx-parse.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dero-mcp-server",
|
|
3
3
|
"mcpName": "io.github.DHEBP/dero-mcp-server",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.1",
|
|
5
5
|
"description": "Model Context Protocol (MCP) server exposing DERO Stargate daemon JSON-RPC and bundled documentation to Claude and other MCP clients",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"engines": {
|
|
9
|
-
"node": ">=
|
|
9
|
+
"node": ">=22"
|
|
10
10
|
},
|
|
11
11
|
"main": "./dist/index.js",
|
|
12
12
|
"bin": {
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
"dist",
|
|
17
17
|
"data",
|
|
18
18
|
"README.md",
|
|
19
|
+
"SKILL.md",
|
|
20
|
+
"POSITIONING.md",
|
|
19
21
|
"LICENSE"
|
|
20
22
|
],
|
|
21
23
|
"scripts": {
|
|
@@ -28,14 +30,21 @@
|
|
|
28
30
|
"doctor": "./scripts/doctor.sh",
|
|
29
31
|
"smoke:mcp": "npx tsx scripts/mcp-smoke-probes.ts",
|
|
30
32
|
"smoke:docs": "npx tsx scripts/docs-smoke-probes.ts",
|
|
33
|
+
"smoke:http": "npm run build && npx tsx scripts/http-smoke-probes.ts",
|
|
31
34
|
"test:flows": "npx tsx scripts/flow-test.ts",
|
|
32
35
|
"test:composites": "npx tsx scripts/flow-composites.ts",
|
|
33
36
|
"check:mcp-descriptions": "npx tsx scripts/check-mcp-descriptions.ts",
|
|
34
37
|
"check:citations": "npx tsx scripts/check-citations.ts",
|
|
38
|
+
"check:curve-fixtures": "npx tsx scripts/check-curve-fixtures.ts",
|
|
39
|
+
"check:proof-roundtrip": "npx tsx scripts/check-proof-roundtrip.ts",
|
|
40
|
+
"check:tx-parse": "npx tsx scripts/check-tx-parse.ts",
|
|
41
|
+
"check:forge-demo": "npx tsx scripts/check-forge-demo.ts",
|
|
42
|
+
"check:server-json": "npx tsx scripts/check-server-json.ts",
|
|
35
43
|
"typecheck": "tsc --noEmit"
|
|
36
44
|
},
|
|
37
45
|
"dependencies": {
|
|
38
46
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
47
|
+
"@noble/curves": "^2.2.0",
|
|
39
48
|
"zod": "^3.25.0"
|
|
40
49
|
},
|
|
41
50
|
"devDependencies": {
|
|
@@ -45,10 +54,22 @@
|
|
|
45
54
|
},
|
|
46
55
|
"keywords": [
|
|
47
56
|
"dero",
|
|
57
|
+
"dero-blockchain",
|
|
48
58
|
"mcp",
|
|
49
59
|
"model-context-protocol",
|
|
50
60
|
"blockchain",
|
|
51
|
-
"json-rpc"
|
|
61
|
+
"json-rpc",
|
|
62
|
+
"privacy-blockchain",
|
|
63
|
+
"privacy-coin",
|
|
64
|
+
"private-smart-contracts",
|
|
65
|
+
"monero-alternative",
|
|
66
|
+
"private-ethereum",
|
|
67
|
+
"homomorphic-encryption",
|
|
68
|
+
"ring-signatures",
|
|
69
|
+
"bulletproofs",
|
|
70
|
+
"stargate",
|
|
71
|
+
"dvm-basic",
|
|
72
|
+
"tela"
|
|
52
73
|
],
|
|
53
74
|
"repository": {
|
|
54
75
|
"type": "git",
|