bostrom-mcp 0.2.0 → 0.4.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 +98 -8
- package/dist/index.js +2 -2
- package/dist/services/lithium-write.d.ts +15 -6
- package/dist/services/lithium-write.js +29 -16
- package/dist/services/lithium-write.js.map +1 -1
- package/dist/services/lithium.d.ts +9 -4
- package/dist/services/lithium.js +21 -15
- package/dist/services/lithium.js.map +1 -1
- package/dist/tools/lithium-write.js +22 -10
- package/dist/tools/lithium-write.js.map +1 -1
- package/dist/tools/lithium.js +9 -20
- package/dist/tools/lithium.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,12 +2,66 @@
|
|
|
2
2
|
|
|
3
3
|
[MCP](https://modelcontextprotocol.io) server for the [Bostrom](https://cyb.ai) blockchain — knowledge graph, economy, lithium mining, governance, infrastructure, and **autonomous agent capabilities**.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
89 tools: 45 read + 44 write. Read tools work with zero configuration. Write tools require a wallet mnemonic.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
### Option 1: Claude Desktop
|
|
10
|
+
|
|
11
|
+
Open **Settings > Developer > Edit Config** and add:
|
|
12
|
+
|
|
13
|
+
```jsonc
|
|
14
|
+
{
|
|
15
|
+
"mcpServers": {
|
|
16
|
+
"bostrom": {
|
|
17
|
+
"command": "npx",
|
|
18
|
+
"args": ["-y", "bostrom-mcp"]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Restart Claude Desktop. You should see the Bostrom tools in the tool list.
|
|
25
|
+
|
|
26
|
+
To enable write tools (send tokens, create cyberlinks, etc.), add your wallet mnemonic:
|
|
27
|
+
|
|
28
|
+
```jsonc
|
|
29
|
+
{
|
|
30
|
+
"mcpServers": {
|
|
31
|
+
"bostrom": {
|
|
32
|
+
"command": "npx",
|
|
33
|
+
"args": ["-y", "bostrom-mcp"],
|
|
34
|
+
"env": {
|
|
35
|
+
"BOSTROM_MNEMONIC": "your twelve word mnemonic phrase here ..."
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Option 2: Claude Code (CLI)
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
claude mcp add bostrom -- npx -y bostrom-mcp
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
With write tools:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
claude mcp add bostrom -e BOSTROM_MNEMONIC="your twelve word mnemonic phrase here ..." -- npx -y bostrom-mcp
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Option 3: Cursor
|
|
55
|
+
|
|
56
|
+
Open **Settings > MCP Servers > Add Server** and configure:
|
|
57
|
+
|
|
58
|
+
- **Name**: `bostrom`
|
|
59
|
+
- **Type**: `command`
|
|
60
|
+
- **Command**: `npx -y bostrom-mcp`
|
|
61
|
+
|
|
62
|
+
Or add to `.cursor/mcp.json` in your project:
|
|
8
63
|
|
|
9
64
|
```jsonc
|
|
10
|
-
// Claude Desktop / Cursor / any MCP client
|
|
11
65
|
{
|
|
12
66
|
"mcpServers": {
|
|
13
67
|
"bostrom": {
|
|
@@ -21,12 +75,45 @@
|
|
|
21
75
|
}
|
|
22
76
|
```
|
|
23
77
|
|
|
24
|
-
|
|
78
|
+
### Option 4: Windsurf
|
|
79
|
+
|
|
80
|
+
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
81
|
+
|
|
82
|
+
```jsonc
|
|
83
|
+
{
|
|
84
|
+
"mcpServers": {
|
|
85
|
+
"bostrom": {
|
|
86
|
+
"command": "npx",
|
|
87
|
+
"args": ["-y", "bostrom-mcp"],
|
|
88
|
+
"env": {
|
|
89
|
+
"BOSTROM_MNEMONIC": "your twelve word mnemonic phrase here ..."
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Option 5: Any MCP client
|
|
97
|
+
|
|
98
|
+
Run the server directly:
|
|
25
99
|
|
|
26
100
|
```bash
|
|
27
101
|
npx -y bostrom-mcp
|
|
28
102
|
```
|
|
29
103
|
|
|
104
|
+
The server communicates over stdio using the [Model Context Protocol](https://modelcontextprotocol.io). Any MCP-compatible client can connect to it.
|
|
105
|
+
|
|
106
|
+
### Getting a wallet
|
|
107
|
+
|
|
108
|
+
Write tools require a Bostrom wallet mnemonic. If you don't have one:
|
|
109
|
+
|
|
110
|
+
1. Install [cyb.ai](https://cyb.ai) or any Cosmos wallet (Keplr, Cosmostation)
|
|
111
|
+
2. Create a new wallet and save the mnemonic phrase
|
|
112
|
+
3. Fund it with BOOT tokens (needed for gas fees)
|
|
113
|
+
4. Set `BOSTROM_MNEMONIC` in your MCP client config
|
|
114
|
+
|
|
115
|
+
Without a mnemonic, all 44 read tools work normally — you can explore the knowledge graph, check balances, view proposals, and more.
|
|
116
|
+
|
|
30
117
|
## Environment variables
|
|
31
118
|
|
|
32
119
|
| Variable | Default | Description |
|
|
@@ -121,10 +208,11 @@ npx -y bostrom-mcp
|
|
|
121
208
|
| `wasm_update_admin` | Update contract admin |
|
|
122
209
|
| `wasm_clear_admin` | Clear contract admin (irreversible) |
|
|
123
210
|
|
|
124
|
-
### Lithium Mining — Read (
|
|
211
|
+
### Lithium Mining — Read (26)
|
|
125
212
|
|
|
126
213
|
| Tool | Description |
|
|
127
214
|
|------|-------------|
|
|
215
|
+
| `li_block_context` | Current block hash and data hash for lithium v1 mining |
|
|
128
216
|
| `li_core_config` | Token denom, admin, paused status |
|
|
129
217
|
| `li_burn_stats` | Total LI burned |
|
|
130
218
|
| `li_total_minted` | Total LI minted and supply cap |
|
|
@@ -151,11 +239,12 @@ npx -y bostrom-mcp
|
|
|
151
239
|
| `li_community_pool` | Unclaimed community pool balance |
|
|
152
240
|
| `li_miner_tx_history` | Miner's recent contract TX history |
|
|
153
241
|
|
|
154
|
-
### Lithium Mining — Write (
|
|
242
|
+
### Lithium Mining — Write (6)
|
|
155
243
|
|
|
156
244
|
| Tool | Description |
|
|
157
245
|
|------|-------------|
|
|
158
|
-
| `li_submit_proof` | Submit a mining proof |
|
|
246
|
+
| `li_submit_proof` | Submit a v4 seed-based mining proof |
|
|
247
|
+
| `li_submit_lithium_proof` | Submit a lithium v1 proof with block context |
|
|
159
248
|
| `li_stake` | Stake LI tokens |
|
|
160
249
|
| `li_unstake` | Unstake LI tokens |
|
|
161
250
|
| `li_claim_rewards` | Claim LI staking rewards |
|
|
@@ -198,7 +287,8 @@ npx -y bostrom-mcp
|
|
|
198
287
|
|
|
199
288
|
With write tools enabled, an LLM agent can perform autonomous workflows:
|
|
200
289
|
|
|
201
|
-
- **Lithium mining**: `li_mine_state` → compute proof → `li_verify_proof` → `li_submit_proof` → `li_stake`
|
|
290
|
+
- **Lithium mining (v4)**: `li_mine_state` → compute proof → `li_verify_proof` → `li_submit_proof` → `li_stake`
|
|
291
|
+
- **Lithium mining (v1)**: `li_block_context` + `li_epoch_status` → compute proof → `li_submit_lithium_proof` → `li_stake`
|
|
202
292
|
- **Token launch + market**: `token_create` → `token_set_metadata` → `token_mint` → `liquidity_create_pool` → `graph_create_knowledge`
|
|
203
293
|
- **Knowledge graph**: `graph_pin_content` → `graph_create_cyberlink` → `graph_search` → `graph_rank`
|
|
204
294
|
- **Governance**: `gov_proposals` → `gov_proposal_detail` → `wallet_vote`
|
package/dist/index.js
CHANGED
|
@@ -22,13 +22,13 @@ export function createServer() {
|
|
|
22
22
|
name: "bostrom",
|
|
23
23
|
version: "0.2.0",
|
|
24
24
|
});
|
|
25
|
-
// Read tools (
|
|
25
|
+
// Read tools (45)
|
|
26
26
|
registerGraphTools(server);
|
|
27
27
|
registerEconomyTools(server);
|
|
28
28
|
registerLithiumTools(server);
|
|
29
29
|
registerGovernanceTools(server);
|
|
30
30
|
registerInfraTools(server);
|
|
31
|
-
// Write tools (
|
|
31
|
+
// Write tools (44)
|
|
32
32
|
registerWalletTools(server);
|
|
33
33
|
registerGraphWriteTools(server);
|
|
34
34
|
registerContractTools(server);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/** Submit a
|
|
2
|
-
export declare function
|
|
1
|
+
/** Submit a lithium proof */
|
|
2
|
+
export declare function submitLithiumProof(hash: string, nonce: number, miner_address: string, challenge: string, epoch_id: number, timestamp: number, referrer?: string, contract?: string): Promise<{
|
|
3
3
|
txHash: string;
|
|
4
4
|
height: number;
|
|
5
5
|
gasUsed: bigint;
|
|
@@ -7,8 +7,8 @@ export declare function submitProof(hash: string, nonce: number, timestamp: numb
|
|
|
7
7
|
sender: string;
|
|
8
8
|
contract: string;
|
|
9
9
|
}>;
|
|
10
|
-
/** Stake LI tokens
|
|
11
|
-
export declare function stakeLi(amount: string,
|
|
10
|
+
/** Stake LI tokens via CW-20 Send to the litium-stake contract */
|
|
11
|
+
export declare function stakeLi(amount: string, stakeContract?: string, coreContract?: string): Promise<{
|
|
12
12
|
txHash: string;
|
|
13
13
|
height: number;
|
|
14
14
|
gasUsed: bigint;
|
|
@@ -34,8 +34,17 @@ export declare function claimLiRewards(contract?: string): Promise<{
|
|
|
34
34
|
sender: string;
|
|
35
35
|
contract: string;
|
|
36
36
|
}>;
|
|
37
|
-
/**
|
|
38
|
-
export declare function
|
|
37
|
+
/** Claim matured unbonding from the litium-stake contract */
|
|
38
|
+
export declare function claimUnbonding(contract?: string): Promise<{
|
|
39
|
+
txHash: string;
|
|
40
|
+
height: number;
|
|
41
|
+
gasUsed: bigint;
|
|
42
|
+
gasWanted: bigint;
|
|
43
|
+
sender: string;
|
|
44
|
+
contract: string;
|
|
45
|
+
}>;
|
|
46
|
+
/** Claim accumulated referral rewards from the litium-refer contract */
|
|
47
|
+
export declare function claimReferralRewards(contract?: string): Promise<{
|
|
39
48
|
txHash: string;
|
|
40
49
|
height: number;
|
|
41
50
|
gasUsed: bigint;
|
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
import { executeContract } from "./contract-exec.js";
|
|
2
|
-
import { LITIUM_MINE, LITIUM_STAKE, LITIUM_REFER,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export async function submitProof(hash, nonce, timestamp, contract = LITIUM_MINE) {
|
|
2
|
+
import { LITIUM_CORE, LITIUM_MINE, LITIUM_STAKE, LITIUM_REFER, } from "./lithium.js";
|
|
3
|
+
/** Submit a lithium proof */
|
|
4
|
+
export async function submitLithiumProof(hash, nonce, miner_address, challenge, epoch_id, timestamp, referrer, contract = LITIUM_MINE) {
|
|
6
5
|
return executeContract(contract, {
|
|
7
|
-
|
|
6
|
+
submit_lithium_proof: {
|
|
7
|
+
hash,
|
|
8
|
+
nonce,
|
|
9
|
+
miner_address,
|
|
10
|
+
challenge,
|
|
11
|
+
epoch_id,
|
|
12
|
+
timestamp,
|
|
13
|
+
...(referrer && { referrer }),
|
|
14
|
+
},
|
|
8
15
|
});
|
|
9
16
|
}
|
|
10
|
-
/** Stake LI tokens
|
|
11
|
-
export async function stakeLi(amount,
|
|
12
|
-
// Staking
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
/** Stake LI tokens via CW-20 Send to the litium-stake contract */
|
|
18
|
+
export async function stakeLi(amount, stakeContract = LITIUM_STAKE, coreContract = LITIUM_CORE) {
|
|
19
|
+
// Staking works via CW-20 Send: call Send on litium-core which triggers Receive on litium-stake
|
|
20
|
+
return executeContract(coreContract, {
|
|
21
|
+
send: {
|
|
22
|
+
contract: stakeContract,
|
|
23
|
+
amount,
|
|
24
|
+
msg: Buffer.from("{}").toString("base64"),
|
|
25
|
+
},
|
|
26
|
+
});
|
|
16
27
|
}
|
|
17
28
|
/** Unstake LI tokens from the litium-stake contract */
|
|
18
29
|
export async function unstakeLi(amount, contract = LITIUM_STAKE) {
|
|
@@ -24,10 +35,12 @@ export async function unstakeLi(amount, contract = LITIUM_STAKE) {
|
|
|
24
35
|
export async function claimLiRewards(contract = LITIUM_STAKE) {
|
|
25
36
|
return executeContract(contract, { claim_staking_rewards: {} });
|
|
26
37
|
}
|
|
27
|
-
/**
|
|
28
|
-
export async function
|
|
29
|
-
return executeContract(contract, {
|
|
30
|
-
|
|
31
|
-
|
|
38
|
+
/** Claim matured unbonding from the litium-stake contract */
|
|
39
|
+
export async function claimUnbonding(contract = LITIUM_STAKE) {
|
|
40
|
+
return executeContract(contract, { claim_unbonding: {} });
|
|
41
|
+
}
|
|
42
|
+
/** Claim accumulated referral rewards from the litium-refer contract */
|
|
43
|
+
export async function claimReferralRewards(contract = LITIUM_REFER) {
|
|
44
|
+
return executeContract(contract, { claim_rewards: {} });
|
|
32
45
|
}
|
|
33
46
|
//# sourceMappingURL=lithium-write.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithium-write.js","sourceRoot":"","sources":["../../src/services/lithium-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"lithium-write.js","sourceRoot":"","sources":["../../src/services/lithium-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,6BAA6B;AAC7B,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,KAAa,EACb,aAAqB,EACrB,SAAiB,EACjB,QAAgB,EAChB,SAAiB,EACjB,QAAiB,EACjB,WAAmB,WAAW;IAE9B,OAAO,eAAe,CAAC,QAAQ,EAAE;QAC/B,oBAAoB,EAAE;YACpB,IAAI;YACJ,KAAK;YACL,aAAa;YACb,SAAS;YACT,QAAQ;YACR,SAAS;YACT,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC9B;KACF,CAAC,CAAC;AACL,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAc,EACd,gBAAwB,YAAY,EACpC,eAAuB,WAAW;IAElC,gGAAgG;IAChG,OAAO,eAAe,CAAC,YAAY,EAAE;QACnC,IAAI,EAAE;YACJ,QAAQ,EAAE,aAAa;YACvB,MAAM;YACN,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAC1C;KACF,CAAC,CAAC;AACL,CAAC;AAED,uDAAuD;AACvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAc,EACd,WAAmB,YAAY;IAE/B,OAAO,eAAe,CAAC,QAAQ,EAAE;QAC/B,OAAO,EAAE,EAAE,MAAM,EAAE;KACpB,CAAC,CAAC;AACL,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,YAAY;IAE/B,OAAO,eAAe,CAAC,QAAQ,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,YAAY;IAE/B,OAAO,eAAe,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmB,YAAY;IAE/B,OAAO,eAAe,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -2,12 +2,17 @@ export declare const LITIUM_CORE = "bostrom1wsgx32y0tx5rk6g89ffr8hg2wucnpwp650e9
|
|
|
2
2
|
export declare const LITIUM_MINE = "bostrom1vsfzcplds5z9xxl0llczeskxjxuddckksjm2u5ft2xt03qg28ups04mfes";
|
|
3
3
|
export declare const LITIUM_STAKE = "bostrom1z0s6rxw8eq4wy25kaucy5jydlphlpzpglsle5n7nx2gaqd60rmgqs67tnz";
|
|
4
4
|
export declare const LITIUM_REFER = "bostrom1m8a0jzyyu794cmd5clkt37kr0kkqvxyra23gnqcg5929n63ryhpss3986d";
|
|
5
|
+
export declare const LI_DENOM = "factory/bostrom1wsgx32y0tx5rk6g89ffr8hg2wucnpwp650e9nrdm80jeyku5u4zq5ashgz/li";
|
|
6
|
+
export declare function getBlockContext(): Promise<{
|
|
7
|
+
height: number;
|
|
8
|
+
block_hash: string;
|
|
9
|
+
cyberlinks_merkle: string;
|
|
10
|
+
time: any;
|
|
11
|
+
}>;
|
|
5
12
|
export declare function getCoreConfig(contract: string): Promise<unknown>;
|
|
6
13
|
export declare function getBurnStats(contract: string): Promise<unknown>;
|
|
7
14
|
export declare function getTotalMinted(contract: string): Promise<unknown>;
|
|
8
|
-
export declare function isAuthorizedCaller(contract: string, address: string): Promise<unknown>;
|
|
9
15
|
export declare function getMineConfig(contract: string): Promise<unknown>;
|
|
10
|
-
export declare function getSeed(contract: string): Promise<unknown>;
|
|
11
16
|
export declare function getDifficulty(contract: string): Promise<unknown>;
|
|
12
17
|
export declare function getEpochStatus(contract: string): Promise<unknown>;
|
|
13
18
|
export declare function getTarget(contract: string): Promise<unknown>;
|
|
@@ -16,12 +21,10 @@ export declare function getLithiumEmissionInfo(contract: string): Promise<unknow
|
|
|
16
21
|
export declare function getLithiumMinerEpochStats(contract: string, address: string, epochId: number): Promise<unknown>;
|
|
17
22
|
export declare function getMineStats(contract: string): Promise<unknown>;
|
|
18
23
|
export declare function getMinerStats(contract: string, address: string): Promise<unknown>;
|
|
19
|
-
export declare function verifyProof(contract: string, hash: string, nonce: number, timestamp: number, miner: string): Promise<unknown>;
|
|
20
24
|
export declare function calculateReward(contract: string, difficultyBits: number): Promise<unknown>;
|
|
21
25
|
/** Composite: full mine contract state */
|
|
22
26
|
export declare function getMineState(contract: string): Promise<{
|
|
23
27
|
config: unknown;
|
|
24
|
-
seed: unknown;
|
|
25
28
|
difficulty: unknown;
|
|
26
29
|
stats: unknown;
|
|
27
30
|
epoch_status: unknown;
|
|
@@ -32,10 +35,12 @@ export declare function getStakeConfig(contract: string): Promise<unknown>;
|
|
|
32
35
|
export declare function getTotalStaked(contract: string): Promise<unknown>;
|
|
33
36
|
export declare function getStakeInfo(contract: string, address: string): Promise<unknown>;
|
|
34
37
|
export declare function getStakingStats(contract: string): Promise<unknown>;
|
|
38
|
+
export declare function getStakeTotalPendingRewards(contract: string): Promise<unknown>;
|
|
35
39
|
export declare function getReferConfig(contract: string): Promise<unknown>;
|
|
36
40
|
export declare function getReferrerOf(contract: string, miner: string): Promise<unknown>;
|
|
37
41
|
export declare function getReferralInfo(contract: string, address: string): Promise<unknown>;
|
|
38
42
|
export declare function getCommunityPoolBalance(contract: string): Promise<unknown>;
|
|
43
|
+
export declare function getReferTotalPendingRewards(contract: string): Promise<unknown>;
|
|
39
44
|
interface TxMessage {
|
|
40
45
|
transaction_hash: string;
|
|
41
46
|
value: unknown;
|
package/dist/services/lithium.js
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import { lcdSmartQuery } from "../clients/lcd.js";
|
|
1
|
+
import { lcdGet, lcdSmartQuery } from "../clients/lcd.js";
|
|
2
2
|
import { graphql } from "../clients/graphql.js";
|
|
3
3
|
// Litium modular contract addresses
|
|
4
4
|
export const LITIUM_CORE = "bostrom1wsgx32y0tx5rk6g89ffr8hg2wucnpwp650e9nrdm80jeyku5u4zq5ashgz";
|
|
5
5
|
export const LITIUM_MINE = "bostrom1vsfzcplds5z9xxl0llczeskxjxuddckksjm2u5ft2xt03qg28ups04mfes";
|
|
6
6
|
export const LITIUM_STAKE = "bostrom1z0s6rxw8eq4wy25kaucy5jydlphlpzpglsle5n7nx2gaqd60rmgqs67tnz";
|
|
7
7
|
export const LITIUM_REFER = "bostrom1m8a0jzyyu794cmd5clkt37kr0kkqvxyra23gnqcg5929n63ryhpss3986d";
|
|
8
|
+
// LI token denom: token factory convention factory/{issuer}/{subdenom}
|
|
9
|
+
export const LI_DENOM = `factory/${LITIUM_CORE}/li`;
|
|
10
|
+
// --- block context for lithium v1 mining ---
|
|
11
|
+
export async function getBlockContext() {
|
|
12
|
+
const block = await lcdGet("/cosmos/base/tendermint/v1beta1/blocks/latest");
|
|
13
|
+
return {
|
|
14
|
+
height: Number(block.block.header.height),
|
|
15
|
+
block_hash: Buffer.from(block.block_id.hash, "base64").toString("hex"),
|
|
16
|
+
cyberlinks_merkle: Buffer.from(block.block.header.data_hash || "", "base64").toString("hex"),
|
|
17
|
+
time: block.block.header.time,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
8
20
|
// --- litium-core queries ---
|
|
9
21
|
export async function getCoreConfig(contract) {
|
|
10
22
|
return lcdSmartQuery(contract, { config: {} });
|
|
@@ -15,16 +27,10 @@ export async function getBurnStats(contract) {
|
|
|
15
27
|
export async function getTotalMinted(contract) {
|
|
16
28
|
return lcdSmartQuery(contract, { total_minted: {} });
|
|
17
29
|
}
|
|
18
|
-
export async function isAuthorizedCaller(contract, address) {
|
|
19
|
-
return lcdSmartQuery(contract, { is_authorized_caller: { address } });
|
|
20
|
-
}
|
|
21
30
|
// --- litium-mine queries ---
|
|
22
31
|
export async function getMineConfig(contract) {
|
|
23
32
|
return lcdSmartQuery(contract, { config: {} });
|
|
24
33
|
}
|
|
25
|
-
export async function getSeed(contract) {
|
|
26
|
-
return lcdSmartQuery(contract, { seed: {} });
|
|
27
|
-
}
|
|
28
34
|
export async function getDifficulty(contract) {
|
|
29
35
|
return lcdSmartQuery(contract, { difficulty: {} });
|
|
30
36
|
}
|
|
@@ -51,11 +57,6 @@ export async function getMineStats(contract) {
|
|
|
51
57
|
export async function getMinerStats(contract, address) {
|
|
52
58
|
return lcdSmartQuery(contract, { miner_stats: { address } });
|
|
53
59
|
}
|
|
54
|
-
export async function verifyProof(contract, hash, nonce, timestamp, miner) {
|
|
55
|
-
return lcdSmartQuery(contract, {
|
|
56
|
-
verify_proof: { hash, nonce, timestamp, miner },
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
60
|
export async function calculateReward(contract, difficultyBits) {
|
|
60
61
|
return lcdSmartQuery(contract, {
|
|
61
62
|
calculate_reward: { difficulty_bits: difficultyBits },
|
|
@@ -63,16 +64,15 @@ export async function calculateReward(contract, difficultyBits) {
|
|
|
63
64
|
}
|
|
64
65
|
/** Composite: full mine contract state */
|
|
65
66
|
export async function getMineState(contract) {
|
|
66
|
-
const [config,
|
|
67
|
+
const [config, difficulty, stats, epochStatus, proofStats, emission] = await Promise.all([
|
|
67
68
|
lcdSmartQuery(contract, { config: {} }),
|
|
68
|
-
lcdSmartQuery(contract, { seed: {} }),
|
|
69
69
|
lcdSmartQuery(contract, { difficulty: {} }),
|
|
70
70
|
lcdSmartQuery(contract, { stats: {} }),
|
|
71
71
|
lcdSmartQuery(contract, { epoch_status: {} }),
|
|
72
72
|
lcdSmartQuery(contract, { proof_stats: {} }),
|
|
73
73
|
lcdSmartQuery(contract, { lithium_emission_info: {} }),
|
|
74
74
|
]);
|
|
75
|
-
return { config,
|
|
75
|
+
return { config, difficulty, stats, epoch_status: epochStatus, proof_stats: proofStats, emission };
|
|
76
76
|
}
|
|
77
77
|
// --- litium-stake queries ---
|
|
78
78
|
export async function getStakeConfig(contract) {
|
|
@@ -87,6 +87,9 @@ export async function getStakeInfo(contract, address) {
|
|
|
87
87
|
export async function getStakingStats(contract) {
|
|
88
88
|
return lcdSmartQuery(contract, { staking_stats: {} });
|
|
89
89
|
}
|
|
90
|
+
export async function getStakeTotalPendingRewards(contract) {
|
|
91
|
+
return lcdSmartQuery(contract, { total_pending_rewards: {} });
|
|
92
|
+
}
|
|
90
93
|
// --- litium-refer queries ---
|
|
91
94
|
export async function getReferConfig(contract) {
|
|
92
95
|
return lcdSmartQuery(contract, { config: {} });
|
|
@@ -100,6 +103,9 @@ export async function getReferralInfo(contract, address) {
|
|
|
100
103
|
export async function getCommunityPoolBalance(contract) {
|
|
101
104
|
return lcdSmartQuery(contract, { community_pool_balance: {} });
|
|
102
105
|
}
|
|
106
|
+
export async function getReferTotalPendingRewards(contract) {
|
|
107
|
+
return lcdSmartQuery(contract, { total_pending_rewards: {} });
|
|
108
|
+
}
|
|
103
109
|
export async function getRecentProofs(contract, limit) {
|
|
104
110
|
const result = await graphql(`{
|
|
105
111
|
messages_by_address(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithium.js","sourceRoot":"","sources":["../../src/services/lithium.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"lithium.js","sourceRoot":"","sources":["../../src/services/lithium.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,20 +3,25 @@ import { ok, safe, WRITE_ANNOTATIONS } from "../util.js";
|
|
|
3
3
|
import * as svc from "../services/lithium-write.js";
|
|
4
4
|
import { LITIUM_MINE, LITIUM_STAKE, LITIUM_REFER } from "../services/lithium.js";
|
|
5
5
|
export function registerLithiumWriteTools(server) {
|
|
6
|
-
server.registerTool("
|
|
7
|
-
description: "Submit a mining proof
|
|
8
|
-
"
|
|
6
|
+
server.registerTool("li_submit_lithium_proof", {
|
|
7
|
+
description: "Submit a lithium mining proof. " +
|
|
8
|
+
"Requires challenge (32-byte hex) and epoch_id from li_epoch_status. " +
|
|
9
|
+
"First referrer submission also binds the referrer permanently.",
|
|
9
10
|
inputSchema: {
|
|
10
11
|
hash: z.string().describe("Computed hash (hex)"),
|
|
11
12
|
nonce: z.number().describe("Nonce value"),
|
|
13
|
+
miner_address: z.string().describe("Miner address (bostrom1...)"),
|
|
14
|
+
challenge: z.string().describe("Challenge (hex, 32 bytes)"),
|
|
15
|
+
epoch_id: z.number().describe("Current lithium epoch ID"),
|
|
12
16
|
timestamp: z.number().describe("Timestamp (unix seconds)"),
|
|
17
|
+
referrer: z.string().optional().describe("Referrer address (optional, bound permanently on first proof)"),
|
|
13
18
|
contract: z.string().default(LITIUM_MINE).describe("litium-mine contract address"),
|
|
14
19
|
},
|
|
15
20
|
annotations: WRITE_ANNOTATIONS,
|
|
16
|
-
}, safe(async ({ hash, nonce, timestamp, contract }) => ok(await svc.
|
|
21
|
+
}, safe(async ({ hash, nonce, miner_address, challenge, epoch_id, timestamp, referrer, contract }) => ok(await svc.submitLithiumProof(hash, nonce, miner_address, challenge, epoch_id, timestamp, referrer, contract))));
|
|
17
22
|
server.registerTool("li_stake", {
|
|
18
23
|
description: "Stake LI tokens to earn staking rewards. " +
|
|
19
|
-
"Sends LI
|
|
24
|
+
"Sends CW-20 LI to the stake contract via litium-core Send.",
|
|
20
25
|
inputSchema: {
|
|
21
26
|
amount: z.string().describe("Amount of LI to stake (base units)"),
|
|
22
27
|
contract: z.string().default(LITIUM_STAKE).describe("litium-stake contract address"),
|
|
@@ -38,14 +43,21 @@ export function registerLithiumWriteTools(server) {
|
|
|
38
43
|
},
|
|
39
44
|
annotations: WRITE_ANNOTATIONS,
|
|
40
45
|
}, safe(async ({ contract }) => ok(await svc.claimLiRewards(contract))));
|
|
41
|
-
server.registerTool("
|
|
42
|
-
description: "
|
|
43
|
-
"
|
|
46
|
+
server.registerTool("li_claim_unbonding", {
|
|
47
|
+
description: "Claim matured unbonding LI tokens from the stake contract. " +
|
|
48
|
+
"Only succeeds after unbonding_period_seconds has elapsed since unstaking.",
|
|
49
|
+
inputSchema: {
|
|
50
|
+
contract: z.string().default(LITIUM_STAKE).describe("litium-stake contract address"),
|
|
51
|
+
},
|
|
52
|
+
annotations: WRITE_ANNOTATIONS,
|
|
53
|
+
}, safe(async ({ contract }) => ok(await svc.claimUnbonding(contract))));
|
|
54
|
+
server.registerTool("li_claim_referral_rewards", {
|
|
55
|
+
description: "Claim accumulated referral rewards from the litium-refer contract. " +
|
|
56
|
+
"Called by the referrer to collect earned referral share.",
|
|
44
57
|
inputSchema: {
|
|
45
|
-
referrer: z.string().describe("Referrer address (bostrom1...)"),
|
|
46
58
|
contract: z.string().default(LITIUM_REFER).describe("litium-refer contract address"),
|
|
47
59
|
},
|
|
48
60
|
annotations: WRITE_ANNOTATIONS,
|
|
49
|
-
}, safe(async ({
|
|
61
|
+
}, safe(async ({ contract }) => ok(await svc.claimReferralRewards(contract))));
|
|
50
62
|
}
|
|
51
63
|
//# sourceMappingURL=lithium-write.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithium-write.js","sourceRoot":"","sources":["../../src/tools/lithium-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,GAAG,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEjF,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"lithium-write.js","sourceRoot":"","sources":["../../src/tools/lithium-write.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/lithium.js
CHANGED
|
@@ -3,6 +3,13 @@ import { ok, safe, paginationHint, READ_ONLY_ANNOTATIONS } from "../util.js";
|
|
|
3
3
|
import * as svc from "../services/lithium.js";
|
|
4
4
|
import { LITIUM_CORE, LITIUM_MINE, LITIUM_STAKE, LITIUM_REFER, } from "../services/lithium.js";
|
|
5
5
|
export function registerLithiumTools(server) {
|
|
6
|
+
// ── block context (for lithium v1 mining) ─────────────────────
|
|
7
|
+
server.registerTool("li_block_context", {
|
|
8
|
+
description: "Get current block hash and data hash (cyberlinks merkle) for lithium v1 mining. " +
|
|
9
|
+
"Returns height, block_hash (hex), cyberlinks_merkle (hex), time.",
|
|
10
|
+
inputSchema: {},
|
|
11
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
12
|
+
}, safe(async () => ok(await svc.getBlockContext())));
|
|
6
13
|
// ── litium-core ──────────────────────────────────────────────
|
|
7
14
|
server.registerTool("li_core_config", {
|
|
8
15
|
description: "Get litium-core config: token_denom, admin, paused",
|
|
@@ -27,26 +34,19 @@ export function registerLithiumTools(server) {
|
|
|
27
34
|
}, safe(async ({ contract }) => ok(await svc.getTotalMinted(contract))));
|
|
28
35
|
// ── litium-mine ──────────────────────────────────────────────
|
|
29
36
|
server.registerTool("li_mine_state", {
|
|
30
|
-
description: "Get full litium-mine state: config,
|
|
37
|
+
description: "Get full litium-mine state: config, difficulty, stats, epoch_status, proof_stats, emission breakdown",
|
|
31
38
|
inputSchema: {
|
|
32
39
|
contract: z.string().default(LITIUM_MINE).describe("litium-mine contract address"),
|
|
33
40
|
},
|
|
34
41
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
35
42
|
}, safe(async ({ contract }) => ok(await svc.getMineState(contract))));
|
|
36
43
|
server.registerTool("li_mine_config", {
|
|
37
|
-
description: "Get litium-mine config: difficulty, base_reward,
|
|
44
|
+
description: "Get litium-mine config: difficulty, base_reward, alpha_micros, max_proof_age, lithium_epoch_duration_blocks, target_proofs_per_epoch, estimated_gas_cost_uboot, core/stake/refer/token contracts",
|
|
38
45
|
inputSchema: {
|
|
39
46
|
contract: z.string().default(LITIUM_MINE).describe("litium-mine contract address"),
|
|
40
47
|
},
|
|
41
48
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
42
49
|
}, safe(async ({ contract }) => ok(await svc.getMineConfig(contract))));
|
|
43
|
-
server.registerTool("li_seed", {
|
|
44
|
-
description: "Get current mining seed and seed_interval",
|
|
45
|
-
inputSchema: {
|
|
46
|
-
contract: z.string().default(LITIUM_MINE).describe("litium-mine contract address"),
|
|
47
|
-
},
|
|
48
|
-
annotations: READ_ONLY_ANNOTATIONS,
|
|
49
|
-
}, safe(async ({ contract }) => ok(await svc.getSeed(contract))));
|
|
50
50
|
server.registerTool("li_difficulty", {
|
|
51
51
|
description: "Get difficulty info: current, min_profitable, window_proof_count, window_total_work",
|
|
52
52
|
inputSchema: {
|
|
@@ -107,17 +107,6 @@ export function registerLithiumTools(server) {
|
|
|
107
107
|
},
|
|
108
108
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
109
109
|
}, safe(async ({ address, epoch_id, contract }) => ok(await svc.getLithiumMinerEpochStats(contract, address, epoch_id))));
|
|
110
|
-
server.registerTool("li_verify_proof", {
|
|
111
|
-
description: "Dry-run verify a proof without submitting: valid, difficulty_bits, estimated_reward",
|
|
112
|
-
inputSchema: {
|
|
113
|
-
hash: z.string().describe("Computed hash (hex)"),
|
|
114
|
-
nonce: z.number().describe("Nonce"),
|
|
115
|
-
timestamp: z.number().describe("Timestamp (unix seconds)"),
|
|
116
|
-
miner: z.string().describe("Miner address (bostrom1...)"),
|
|
117
|
-
contract: z.string().default(LITIUM_MINE).describe("litium-mine contract address"),
|
|
118
|
-
},
|
|
119
|
-
annotations: READ_ONLY_ANNOTATIONS,
|
|
120
|
-
}, safe(async ({ hash, nonce, timestamp, miner, contract }) => ok(await svc.verifyProof(contract, hash, nonce, timestamp, miner))));
|
|
121
110
|
server.registerTool("li_recent_proofs", {
|
|
122
111
|
description: "Get recent proof submission transactions for the mine contract",
|
|
123
112
|
inputSchema: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lithium.js","sourceRoot":"","sources":["../../src/tools/lithium.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,GAAG,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,wBAAwB,CAAC;AAEhC,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,
|
|
1
|
+
{"version":3,"file":"lithium.js","sourceRoot":"","sources":["../../src/tools/lithium.ts"],"names":[],"mappings":"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"}
|