forge-solana-sdk 3.2.0 → 3.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 +29 -0
- package/dist/cli.js +16 -7
- package/dist/cli.js.map +1 -1
- package/dist/commands/harden.d.ts +2 -0
- package/dist/commands/harden.d.ts.map +1 -0
- package/dist/commands/harden.js +99 -0
- package/dist/commands/harden.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +11 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/simulate.d.ts +2 -0
- package/dist/commands/simulate.d.ts.map +1 -0
- package/dist/commands/simulate.js +120 -0
- package/dist/commands/simulate.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -81,6 +81,17 @@ forge deploy --env localnet
|
|
|
81
81
|
- ✅ Auto-updates Anchor.toml with environment RPC URLs
|
|
82
82
|
- ✅ Mainnet deployment requires explicit confirmation
|
|
83
83
|
|
|
84
|
+
### Security Hardening
|
|
85
|
+
```bash
|
|
86
|
+
forge harden
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Safeguards include:**
|
|
90
|
+
- 🛡️ **Macro Integration**: Injects `require_signer!`, `assert_owned_by!`, and `checked_math!`
|
|
91
|
+
- 📋 **Config Hardening**: Enforces strict Anchor linting and PDA safety in `Anchor.toml`
|
|
92
|
+
- 🔒 **Security Modules**: Generates a local `security.rs` for project-specific rules
|
|
93
|
+
- 📦 **Runtime Safety**: Automatically adds `forge-runtime` to program dependencies
|
|
94
|
+
|
|
84
95
|
### Security Audit
|
|
85
96
|
```bash
|
|
86
97
|
forge audit
|
|
@@ -169,6 +180,20 @@ forge migrate 0.32.1
|
|
|
169
180
|
forge profile
|
|
170
181
|
```
|
|
171
182
|
|
|
183
|
+
### Instruction Simulation
|
|
184
|
+
```bash
|
|
185
|
+
forge simulate
|
|
186
|
+
|
|
187
|
+
# Simulate specific instruction
|
|
188
|
+
forge simulate process_intent
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Simulation Insights:**
|
|
192
|
+
- ⚡ **Compute Units**: Exact CU usage for the instruction
|
|
193
|
+
- 📜 **Prettified Logs**: All `msg!` outputs from the program
|
|
194
|
+
- 💎 **Return Values**: Capture instruction return data
|
|
195
|
+
- 🔮 **Dry-run**: Test logic without any SOL cost or deployment
|
|
196
|
+
|
|
172
197
|
**Performance Insights:**
|
|
173
198
|
- ⚡ Compute unit usage analysis
|
|
174
199
|
- 💰 Cost estimation per transaction
|
|
@@ -330,6 +355,8 @@ FORGE transforms natural language intents into production-ready Solana programs.
|
|
|
330
355
|
- ✅ **Program Search**: Find verified programs and best practices
|
|
331
356
|
- ✅ **CI/CD Integration**: GitHub Actions workflow generation
|
|
332
357
|
- ✅ **Fair-Launch Support**: Integrated Moonshot & Pump.fun launching
|
|
358
|
+
- ✅ **Security Hardening**: Auto-inject safeguards with `forge harden`
|
|
359
|
+
- ✅ **Instruction Simulator**: Preview logs and CUs with `forge simulate`
|
|
333
360
|
- ✅ **Complete Anchor Workspace**: Ready-to-build projects with proper structure
|
|
334
361
|
- ✅ **Client SDK Generation**: Auto-generated Legacy & **Web3.js v2** SDKs
|
|
335
362
|
- ✅ **Modern CPI Helpers**: `transfer_checked`, `mint_to`, PDA signers with `ctx.bumps`
|
|
@@ -473,6 +500,8 @@ You must have:
|
|
|
473
500
|
| `forge status` | Check environment, versions, and compatibility |
|
|
474
501
|
| `forge update` | Update FORGE to latest version |
|
|
475
502
|
| `forge deploy` | Deploy program to Solana network |
|
|
503
|
+
| `forge harden` | Apply security safeguards to your project |
|
|
504
|
+
| `forge simulate` | Preview logs and CU usage for instructions |
|
|
476
505
|
|
|
477
506
|
## 📖 Examples
|
|
478
507
|
|
package/dist/cli.js
CHANGED
|
@@ -5,14 +5,15 @@ const commander_1 = require("commander");
|
|
|
5
5
|
const ascii_js_1 = require("./ascii.js");
|
|
6
6
|
const init_js_1 = require("./commands/init.js");
|
|
7
7
|
const deploy_js_1 = require("./commands/deploy.js");
|
|
8
|
+
const harden_js_1 = require("./commands/harden.js");
|
|
8
9
|
const status_js_1 = require("./commands/status.js");
|
|
9
10
|
const generate_sdk_js_1 = require("./commands/generate-sdk.js");
|
|
10
|
-
const audit_js_1 = require("./commands/audit.js");
|
|
11
11
|
const test_js_1 = require("./commands/test.js");
|
|
12
12
|
const verify_js_1 = require("./commands/verify.js");
|
|
13
13
|
const upgrade_js_1 = require("./commands/upgrade.js");
|
|
14
14
|
const profile_js_1 = require("./commands/profile.js");
|
|
15
15
|
const monitor_js_1 = require("./commands/monitor.js");
|
|
16
|
+
const simulate_js_1 = require("./commands/simulate.js");
|
|
16
17
|
const interactive_js_1 = require("./commands/interactive.js");
|
|
17
18
|
const docs_js_1 = require("./commands/docs.js");
|
|
18
19
|
const migrate_js_1 = require("./commands/migrate.js");
|
|
@@ -27,7 +28,7 @@ const program = new commander_1.Command();
|
|
|
27
28
|
program
|
|
28
29
|
.name('forge')
|
|
29
30
|
.description('FORGE - Intent-driven app assembly on Solana')
|
|
30
|
-
.version('3.
|
|
31
|
+
.version('3.4.0');
|
|
31
32
|
program
|
|
32
33
|
.command('init [projectName]')
|
|
33
34
|
.description('Initialize a new FORGE project')
|
|
@@ -51,13 +52,13 @@ program
|
|
|
51
52
|
await (0, deploy_js_1.deployCommand)(options.env);
|
|
52
53
|
});
|
|
53
54
|
program
|
|
54
|
-
.command('
|
|
55
|
-
.description('
|
|
56
|
-
.
|
|
57
|
-
|
|
58
|
-
await (0, audit_js_1.auditCommand)(options.deep);
|
|
55
|
+
.command('harden')
|
|
56
|
+
.description('Apply security best-practices and forge-runtime safeguards')
|
|
57
|
+
.action(async () => {
|
|
58
|
+
await (0, harden_js_1.hardenCommand)();
|
|
59
59
|
});
|
|
60
60
|
program
|
|
61
|
+
.command('audit')
|
|
61
62
|
.command('test')
|
|
62
63
|
.description('Generate and run comprehensive test suite')
|
|
63
64
|
.action(async () => {
|
|
@@ -81,6 +82,12 @@ program
|
|
|
81
82
|
.action(async () => {
|
|
82
83
|
await (0, profile_js_1.profileCommand)();
|
|
83
84
|
});
|
|
85
|
+
program
|
|
86
|
+
.command('simulate [instruction]')
|
|
87
|
+
.description('Simulate a program instruction to preview logs and CU usage')
|
|
88
|
+
.action(async (instruction) => {
|
|
89
|
+
await (0, simulate_js_1.simulateCommand)(instruction);
|
|
90
|
+
});
|
|
84
91
|
program
|
|
85
92
|
.command('monitor')
|
|
86
93
|
.description('Monitor program activity and analytics')
|
|
@@ -176,6 +183,8 @@ program.on('--help', () => {
|
|
|
176
183
|
console.log('\nDevelopment:');
|
|
177
184
|
console.log(' test Generate and run comprehensive tests');
|
|
178
185
|
console.log(' audit Run security audit (--deep for advanced)');
|
|
186
|
+
console.log(' harden Apply security safeguards to your project');
|
|
187
|
+
console.log(' simulate Simulate instructions to preview logs and CUs');
|
|
179
188
|
console.log(' quality Analyze code quality metrics');
|
|
180
189
|
console.log(' profile Analyze performance and compute units');
|
|
181
190
|
console.log(' docs Generate API documentation');
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,yCAAkC;AAClC,gDAAuE;AACvE,oDAAqD;AACrD,oDAAoE;AACpE,gEAAgE;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,yCAAkC;AAClC,gDAAuE;AACvE,oDAAqD;AACrD,oDAAqD;AACrD,oDAAoE;AACpE,gEAAgE;AAEhE,gDAAiD;AACjD,oDAAqD;AACrD,sDAAuD;AACvD,sDAAuD;AACvD,sDAAuD;AACvD,wDAAyD;AACzD,8DAA+D;AAC/D,gDAAiD;AACjD,sDAAuD;AACvD,sDAAuD;AACvD,gDAAiD;AACjD,sDAAuD;AACvD,sDAAuD;AACvD,oDAAqD;AACrD,0DAA2D;AAC3D,4CAA6C;AAE7C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,uBAAuB,EAAE,8DAA8D,CAAC;KAC/F,MAAM,CAAC,gCAAgC,EAAE,0CAA0C,EAAE,QAAQ,CAAC;KAC9F,MAAM,CAAC,2BAA2B,EAAE,sHAAsH,CAAC;KAC3J,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;IACrC,MAAM,IAAA,qBAAW,EAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1F,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,8BAAoB,GAAE,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,yBAAyB,EAAE,sEAAsE,EAAE,QAAQ,CAAC;KACnH,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,yBAAa,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,yBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,qBAAW,GAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,yBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,2BAAc,EAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,2BAAc,GAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;IAC5B,MAAM,IAAA,6BAAe,EAAC,WAAW,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,2BAAc,GAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,mCAAkB,GAAE,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,qBAAW,GAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,2BAAc,EAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,2BAAc,GAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,qBAAW,GAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,yBAAyB,CAAC;KAClC,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAC7B,MAAM,IAAA,2BAAc,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,4BAA4B,CAAC;KACrC,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,IAAA,2BAAc,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACtB,MAAM,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,+BAAgB,GAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;IACzB,MAAM,IAAA,iBAAS,EAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,0BAA0B,CAAC;KACnC,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,MAAM,EAAE,2CAA2C,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IACnC,MAAM,IAAA,oCAAkB,EAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,yBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,yBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,oBAAoB;AACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,eAAI,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harden.d.ts","sourceRoot":"","sources":["../../src/commands/harden.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCnD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hardenCommand = hardenCommand;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const { glob } = require('glob');
|
|
7
|
+
async function hardenCommand() {
|
|
8
|
+
console.log('🛡️ FORGE Security Hardening System\n');
|
|
9
|
+
try {
|
|
10
|
+
if (!(0, fs_1.existsSync)('Anchor.toml')) {
|
|
11
|
+
console.error('❌ Not in an Anchor project directory');
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
console.log('📋 Analyzing project for security improvements...');
|
|
15
|
+
// 1. Update Anchor.toml with safe defaults
|
|
16
|
+
hardenAnchorToml();
|
|
17
|
+
// 2. Add forge-runtime to Cargo.toml
|
|
18
|
+
await hardenCargoFiles();
|
|
19
|
+
// 3. Create security module in programs
|
|
20
|
+
await createSecurityModules();
|
|
21
|
+
console.log('\n✅ Project hardening completed!');
|
|
22
|
+
console.log('📝 Improvements applied:');
|
|
23
|
+
console.log(' • Enabled strict Anchor linting');
|
|
24
|
+
console.log(' • Integrated forge-runtime security macros');
|
|
25
|
+
console.log(' • Generated local security modules');
|
|
26
|
+
console.log(' • Configured safe mathematical defaults');
|
|
27
|
+
console.log('\n🚀 Next step: Run "anchor build" to verify the new security layer.');
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('❌ Hardening failed');
|
|
31
|
+
console.error(`Error: ${error.message}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function hardenAnchorToml() {
|
|
36
|
+
let toml = (0, fs_1.readFileSync)('Anchor.toml', 'utf8');
|
|
37
|
+
// Enforce skip-lint = false
|
|
38
|
+
if (toml.includes('skip-lint = true')) {
|
|
39
|
+
toml = toml.replace('skip-lint = true', 'skip-lint = false');
|
|
40
|
+
console.log('✅ Enabled Anchor linting (skip-lint = false)');
|
|
41
|
+
}
|
|
42
|
+
// Ensure seeds feature is checked
|
|
43
|
+
if (toml.includes('seeds = false')) {
|
|
44
|
+
toml = toml.replace('seeds = false', 'seeds = true');
|
|
45
|
+
console.log('✅ Enabled Anchor seeds feature for PDA safety');
|
|
46
|
+
}
|
|
47
|
+
(0, fs_1.writeFileSync)('Anchor.toml', toml);
|
|
48
|
+
}
|
|
49
|
+
async function hardenCargoFiles() {
|
|
50
|
+
const cargoFiles = await glob('**/Cargo.toml');
|
|
51
|
+
for (const file of cargoFiles) {
|
|
52
|
+
// Skip the root Cargo.toml if it's just a workspace
|
|
53
|
+
if (file === 'Cargo.toml' && (0, fs_1.readFileSync)(file, 'utf8').includes('[workspace]')) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
let cargo = (0, fs_1.readFileSync)(file, 'utf8');
|
|
57
|
+
if (!cargo.includes('forge-runtime')) {
|
|
58
|
+
// Add forge-runtime to dependencies
|
|
59
|
+
cargo = cargo.replace('[dependencies]', '[dependencies]\nforge-runtime = "0.1.0"');
|
|
60
|
+
(0, fs_1.writeFileSync)(file, cargo);
|
|
61
|
+
console.log(`✅ Added forge-runtime to ${file}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async function createSecurityModules() {
|
|
66
|
+
const rustFiles = await glob('programs/**/src/lib.rs');
|
|
67
|
+
for (const libPath of rustFiles) {
|
|
68
|
+
const srcDir = (0, path_1.join)(libPath, '..');
|
|
69
|
+
const securityPath = (0, path_1.join)(srcDir, 'security.rs');
|
|
70
|
+
if (!(0, fs_1.existsSync)(securityPath)) {
|
|
71
|
+
const securityTemplate = `use anchor_lang::prelude::*;
|
|
72
|
+
use forge_runtime::{require_signer, assert_owned_by};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Project-specific security verification rules.
|
|
76
|
+
* Use these macros to enforce business-logic level security.
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
#[macro_export]
|
|
80
|
+
macro_rules! assert_is_admin {
|
|
81
|
+
($signer:expr, $admin_key:expr) => {
|
|
82
|
+
if $signer.key() != $admin_key {
|
|
83
|
+
return Err(solana_program::program_error::ProgramError::InsufficientFunds.into()); // Custom error
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
`;
|
|
88
|
+
(0, fs_1.writeFileSync)(securityPath, securityTemplate);
|
|
89
|
+
console.log(`✅ Generated security module: ${securityPath}`);
|
|
90
|
+
// Add mod security to lib.rs
|
|
91
|
+
let lib = (0, fs_1.readFileSync)(libPath, 'utf8');
|
|
92
|
+
if (!lib.includes('pub mod security')) {
|
|
93
|
+
lib = `pub mod security;\n${lib}`;
|
|
94
|
+
(0, fs_1.writeFileSync)(libPath, lib);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=harden.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harden.js","sourceRoot":"","sources":["../../src/commands/harden.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyPnI;AAkED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB1D"}
|
package/dist/commands/init.js
CHANGED
|
@@ -101,7 +101,8 @@ wallet = "~/.config/solana/id.json"
|
|
|
101
101
|
test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts"
|
|
102
102
|
`;
|
|
103
103
|
let dependencies = `anchor-lang = "${anchorVer}"
|
|
104
|
-
anchor-spl = "${anchorVer}"
|
|
104
|
+
anchor-spl = "${anchorVer}"
|
|
105
|
+
forge-runtime = "0.1.0"`;
|
|
105
106
|
// Add CPI-specific dependencies
|
|
106
107
|
if (cpiCode) {
|
|
107
108
|
if (cpiCode.imports.some(imp => imp.includes('mpl_token_metadata'))) {
|
|
@@ -130,7 +131,8 @@ default = []
|
|
|
130
131
|
${dependencies}
|
|
131
132
|
`;
|
|
132
133
|
// Generate imports and CPI code
|
|
133
|
-
let imports = `use anchor_lang::prelude
|
|
134
|
+
let imports = `use anchor_lang::prelude::*;
|
|
135
|
+
use forge_runtime::{require_signer, assert_owned_by};`;
|
|
134
136
|
let cpiImports = '';
|
|
135
137
|
let cpiCodeBlock = '';
|
|
136
138
|
let extraAccounts = '';
|
|
@@ -149,7 +151,13 @@ pub mod ${name.replace(/-/g, '_')} {
|
|
|
149
151
|
use super::*;
|
|
150
152
|
|
|
151
153
|
pub fn process_intent(ctx: Context<ProcessIntent>) -> Result<()> {
|
|
152
|
-
msg!("Processing intent...")
|
|
154
|
+
msg!("Processing intent...");
|
|
155
|
+
|
|
156
|
+
// Built-in security check
|
|
157
|
+
if ctx.accounts.authority.is_some() {
|
|
158
|
+
require_signer!(ctx.accounts.authority.as_ref().unwrap());
|
|
159
|
+
}
|
|
160
|
+
${cpiCodeBlock}
|
|
153
161
|
|
|
154
162
|
msg!("Intent processed successfully!");
|
|
155
163
|
Ok(())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyG7E"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.simulateCommand = simulateCommand;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
7
|
+
async function simulateCommand(instructionName) {
|
|
8
|
+
console.log('🔮 FORGE Instruction Simulator\n');
|
|
9
|
+
try {
|
|
10
|
+
if (!(0, fs_1.existsSync)('Anchor.toml')) {
|
|
11
|
+
console.error('❌ Not in an Anchor project directory');
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
// 1. Load IDL to find instructions
|
|
15
|
+
const programName = getProgramName();
|
|
16
|
+
const idlPath = (0, path_1.join)('target', 'idl', `${programName}.json`);
|
|
17
|
+
if (!(0, fs_1.existsSync)(idlPath)) {
|
|
18
|
+
console.error('❌ IDL not found. Run "anchor build" first.');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const idl = JSON.parse((0, fs_1.readFileSync)(idlPath, 'utf8'));
|
|
22
|
+
const instructions = idl.instructions || [];
|
|
23
|
+
if (instructions.length === 0) {
|
|
24
|
+
console.error('❌ No instructions found in IDL');
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
// 2. Select instruction to simulate
|
|
28
|
+
let targetIx = null;
|
|
29
|
+
if (instructionName) {
|
|
30
|
+
targetIx = instructions.find((ix) => ix.name === instructionName);
|
|
31
|
+
if (!targetIx) {
|
|
32
|
+
console.error(`❌ Instruction "${instructionName}" not found in IDL`);
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// Use the first one for now (or could be interactive)
|
|
38
|
+
targetIx = instructions[0];
|
|
39
|
+
console.log(`💡 No instruction specified, simulating first instruction: "${targetIx.name}"`);
|
|
40
|
+
}
|
|
41
|
+
console.log(`🛠️ Simulating instruction: ${targetIx.name}`);
|
|
42
|
+
console.log(`📋 Accounts required: ${targetIx.accounts.length}`);
|
|
43
|
+
console.log(`📦 Arguments: ${targetIx.args.length}\n`);
|
|
44
|
+
// 3. Setup Connection
|
|
45
|
+
const rpcUrl = getRpcUrl();
|
|
46
|
+
const connection = new web3_js_1.Connection(rpcUrl);
|
|
47
|
+
console.log(`🌐 Connected to: ${rpcUrl}`);
|
|
48
|
+
console.log('🚀 Running simulation...\n');
|
|
49
|
+
// 4. Create a dummy transaction for simulation
|
|
50
|
+
// Note: This is an approximation. Real simulation requires valid accounts and signatures.
|
|
51
|
+
const programId = new web3_js_1.PublicKey(getProgramId());
|
|
52
|
+
// Create zeroed accounts for simulation
|
|
53
|
+
const keys = targetIx.accounts.map((acc) => ({
|
|
54
|
+
pubkey: web3_js_1.PublicKey.default, // Dummy address
|
|
55
|
+
isSigner: acc.isSigner,
|
|
56
|
+
isWritable: acc.isMut,
|
|
57
|
+
}));
|
|
58
|
+
const ix = new web3_js_1.TransactionInstruction({
|
|
59
|
+
keys,
|
|
60
|
+
programId,
|
|
61
|
+
data: Buffer.alloc(0), // Dummy data
|
|
62
|
+
});
|
|
63
|
+
const tx = new web3_js_1.Transaction().add(ix);
|
|
64
|
+
tx.feePayer = web3_js_1.PublicKey.default;
|
|
65
|
+
tx.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;
|
|
66
|
+
const simulation = await connection.simulateTransaction(tx);
|
|
67
|
+
// 5. Display Results
|
|
68
|
+
if (simulation.value.err) {
|
|
69
|
+
console.log('❌ Simulation FAILED');
|
|
70
|
+
console.log(` Error: ${JSON.stringify(simulation.value.err)}`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log('✅ Simulation SUCCESSFUL');
|
|
74
|
+
}
|
|
75
|
+
console.log(`\n📊 Performance Metrics:`);
|
|
76
|
+
console.log(` • Compute Units Consumed: ${simulation.value.unitsConsumed || 'Unknown'}`);
|
|
77
|
+
if (simulation.value.logs && simulation.value.logs.length > 0) {
|
|
78
|
+
console.log(`\n📜 Program Logs:`);
|
|
79
|
+
simulation.value.logs.forEach(log => {
|
|
80
|
+
if (log.includes('Program log:')) {
|
|
81
|
+
console.log(` • ${log.replace('Program log: ', '')}`);
|
|
82
|
+
}
|
|
83
|
+
else if (log.includes('Program return:')) {
|
|
84
|
+
console.log(` 💎 ${log}`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log(` ${log}`);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
console.log('\n💡 Note: Simulation used default/dummy accounts. Real execution may vary.');
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error('❌ Simulation failed');
|
|
95
|
+
console.error(`Error: ${error.message}`);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function getProgramName() {
|
|
100
|
+
const anchorToml = (0, fs_1.readFileSync)('Anchor.toml', 'utf8');
|
|
101
|
+
const match = anchorToml.match(/\[programs\.localnet\]\s*\n([^\s]+)\s*=/);
|
|
102
|
+
return match ? match[1] : '';
|
|
103
|
+
}
|
|
104
|
+
function getProgramId() {
|
|
105
|
+
const anchorToml = (0, fs_1.readFileSync)('Anchor.toml', 'utf8');
|
|
106
|
+
const match = anchorToml.match(/\[programs\.localnet\]\s*([^=]+)\s*=\s*"([^"]+)"/);
|
|
107
|
+
return match ? match[2] : '';
|
|
108
|
+
}
|
|
109
|
+
function getRpcUrl() {
|
|
110
|
+
const anchorToml = (0, fs_1.readFileSync)('Anchor.toml', 'utf8');
|
|
111
|
+
const match = anchorToml.match(/cluster\s*=\s*"([^"]+)"/);
|
|
112
|
+
const cluster = match ? match[1] : 'localnet';
|
|
113
|
+
const urls = {
|
|
114
|
+
localnet: 'http://127.0.0.1:8899',
|
|
115
|
+
devnet: 'https://api.devnet.solana.com',
|
|
116
|
+
'mainnet-beta': 'https://api.mainnet-beta.solana.com'
|
|
117
|
+
};
|
|
118
|
+
return urls[cluster] || urls.localnet;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=simulate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"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"}
|