epistery 1.5.3 → 1.5.4
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/cli/epistery.mjs +1 -1
- package/dist/chains/Chain.d.ts +2 -0
- package/dist/chains/Chain.d.ts.map +1 -1
- package/dist/chains/Chain.js.map +1 -1
- package/dist/chains/JapanOpenChain.d.ts.map +1 -1
- package/dist/chains/JapanOpenChain.js +9 -0
- package/dist/chains/JapanOpenChain.js.map +1 -1
- package/dist/chains/PolygonChain.d.ts.map +1 -1
- package/dist/chains/PolygonChain.js +11 -0
- package/dist/chains/PolygonChain.js.map +1 -1
- package/dist/utils/Config.js +9 -0
- package/dist/utils/Config.js.map +1 -1
- package/index.mjs +10 -10
- package/package.json +1 -1
- package/scripts/deploy-agent.js +63 -3
- package/src/chains/Chain.ts +5 -0
- package/src/chains/JapanOpenChain.ts +12 -0
- package/src/chains/PolygonChain.ts +12 -0
- package/src/utils/Config.ts +9 -0
- package/test/setup.ts +1 -1
package/cli/epistery.mjs
CHANGED
|
@@ -313,7 +313,7 @@ async function initializeDomain(domain) {
|
|
|
313
313
|
config.setPath(`/${domain}`);
|
|
314
314
|
config.load();
|
|
315
315
|
|
|
316
|
-
const contractAddress = config.data?.
|
|
316
|
+
const contractAddress = config.data?.contract_address;
|
|
317
317
|
|
|
318
318
|
if (
|
|
319
319
|
contractAddress &&
|
package/dist/chains/Chain.d.ts
CHANGED
|
@@ -17,7 +17,9 @@ export interface ChainFeeData {
|
|
|
17
17
|
export interface ChainPolicy {
|
|
18
18
|
minPriorityFeeGwei?: number;
|
|
19
19
|
maxFeeMultiplier?: number;
|
|
20
|
+
maxFeePerGasGwei?: number;
|
|
20
21
|
minGasPriceGwei?: number;
|
|
22
|
+
maxGasPriceGwei?: number;
|
|
21
23
|
gasLimitMultiplier?: number;
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chain.d.ts","sourceRoot":"","sources":["../../src/chains/Chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,KAAK;IAChB;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;IAE3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,OAAO,CAAC,SAAS,CAAiD;gBAEtD,MAAM,EAAE,WAAW;IAgB/B;;;;;OAKG;IACH,IAAI,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,CAQ/C;IAED,2EAA2E;IAC3E,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAczC;;;;;;OAMG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAC7C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IAQ5B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;IAmChF;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO;IAgBzC,wCAAwC;IACxC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS;CAG5C"}
|
|
1
|
+
{"version":3,"file":"Chain.d.ts","sourceRoot":"","sources":["../../src/chains/Chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAI1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,KAAK;IAChB;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;IAE3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,OAAO,CAAC,SAAS,CAAiD;gBAEtD,MAAM,EAAE,WAAW;IAgB/B;;;;;OAKG;IACH,IAAI,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,eAAe,CAQ/C;IAED,2EAA2E;IAC3E,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAczC;;;;;;OAMG;IACG,WAAW,CACf,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,kBAAkB,GAC7C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IAQ5B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;IAmChF;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO;IAgBzC,wCAAwC;IACxC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS;CAG5C"}
|
package/dist/chains/Chain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chain.js","sourceRoot":"","sources":["../../src/chains/Chain.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;
|
|
1
|
+
{"version":3,"file":"Chain.js","sourceRoot":"","sources":["../../src/chains/Chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JapanOpenChain.d.ts","sourceRoot":"","sources":["../../src/chains/JapanOpenChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,MAAM,CAAC,OAAO,SAAM;IACpB,MAAM,CAAC,QAAQ;;;;;;MAMb;IAEF,eAAe,IAAI,OAAO;IAI1B,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS;IAInC,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"JapanOpenChain.d.ts","sourceRoot":"","sources":["../../src/chains/JapanOpenChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,MAAM,CAAC,OAAO,SAAM;IACpB,MAAM,CAAC,QAAQ;;;;;;MAMb;IAEF,eAAe,IAAI,OAAO;IAI1B,SAAS,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS;IAInC,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;CAmB1C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JapanOpenChain = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
4
5
|
const Chain_1 = require("./Chain");
|
|
5
6
|
const registry_1 = require("./registry");
|
|
6
7
|
/**
|
|
@@ -27,6 +28,14 @@ class JapanOpenChain extends Chain_1.Chain {
|
|
|
27
28
|
const floor = this.minGasPrice();
|
|
28
29
|
const networkPrice = fd.gasPrice ?? floor;
|
|
29
30
|
const gasPrice = networkPrice.gt(floor) ? networkPrice : floor;
|
|
31
|
+
// Hard ceiling matching PolygonChain — refuse to send if the chain
|
|
32
|
+
// wants more than the operator is willing to pay. Default 200 gwei.
|
|
33
|
+
const ceiling = this.gwei(this.policy.maxGasPriceGwei ?? 500);
|
|
34
|
+
if (gasPrice.gt(ceiling)) {
|
|
35
|
+
throw new Error(`JOC gas price ${ethers_1.ethers.utils.formatUnits(gasPrice, 'gwei')} gwei exceeds ` +
|
|
36
|
+
`cap ${ethers_1.ethers.utils.formatUnits(ceiling, 'gwei')} gwei. ` +
|
|
37
|
+
`Raise policy.maxGasPriceGwei in config.ini if intentional.`);
|
|
38
|
+
}
|
|
30
39
|
return { gasPrice };
|
|
31
40
|
}
|
|
32
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JapanOpenChain.js","sourceRoot":"","sources":["../../src/chains/JapanOpenChain.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"JapanOpenChain.js","sourceRoot":"","sources":["../../src/chains/JapanOpenChain.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,mCAA8C;AAC9C,yCAA2C;AAE3C;;;;;;;;;;;GAWG;AACH,MAAa,cAAe,SAAQ,aAAK;IAUvC,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAES,WAAW;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;QAE/D,mEAAmE;QACnE,oEAAoE;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,GAAG,CAAC,CAAC;QAC9D,IAAI,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,iBAAiB,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB;gBAC3E,OAAO,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS;gBACzD,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;;AApCH,wCAqCC;AApCQ,sBAAO,GAAG,EAAE,CAAC;AACb,uBAAQ,GAAG;IAChB,IAAI,EAAE,kBAAkB;IACxB,GAAG,EAAE,uCAAuC;IAC5C,kBAAkB,EAAE,KAAK;IACzB,oBAAoB,EAAE,KAAK;IAC3B,sBAAsB,EAAE,EAAE;CAC3B,CAAC;AA+BJ,IAAA,wBAAa,EAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolygonChain.d.ts","sourceRoot":"","sources":["../../src/chains/PolygonChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,MAAM,CAAC,OAAO,SAAO;IACrB,MAAM,CAAC,QAAQ;;;;;;MAMb;IAEF,SAAS,CAAC,cAAc,IAAI,MAAM,CAAC,SAAS;IAItC,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"PolygonChain.d.ts","sourceRoot":"","sources":["../../src/chains/PolygonChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,MAAM,CAAC,OAAO,SAAO;IACrB,MAAM,CAAC,QAAQ;;;;;;MAMb;IAEF,SAAS,CAAC,cAAc,IAAI,MAAM,CAAC,SAAS;IAItC,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;CA0B1C;AAED;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,MAAM,CAAC,OAAO,SAAS;IACvB,MAAM,CAAC,QAAQ;;;;;;MAMb;CACH"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AmoyChain = exports.PolygonChain = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
4
5
|
const Chain_1 = require("./Chain");
|
|
5
6
|
const registry_1 = require("./registry");
|
|
6
7
|
/**
|
|
@@ -29,6 +30,16 @@ class PolygonChain extends Chain_1.Chain {
|
|
|
29
30
|
const minMaxFee = maxPriorityFeePerGas.mul(multiplier);
|
|
30
31
|
const networkMax = fd.maxFeePerGas ?? minMaxFee;
|
|
31
32
|
const maxFeePerGas = networkMax.gt(minMaxFee) ? networkMax : minMaxFee;
|
|
33
|
+
// Hard ceiling: refuse to send if the chain wants more than the operator
|
|
34
|
+
// is willing to pay. Default 500 gwei is high enough for normal Polygon
|
|
35
|
+
// congestion but catches anomalies that would drain a wallet on a single
|
|
36
|
+
// contract deploy. Override via policy.maxFeePerGasGwei in config.ini.
|
|
37
|
+
const ceiling = this.gwei(this.policy.maxFeePerGasGwei ?? 500);
|
|
38
|
+
if (maxFeePerGas.gt(ceiling)) {
|
|
39
|
+
throw new Error(`Polygon fee ${ethers_1.ethers.utils.formatUnits(maxFeePerGas, 'gwei')} gwei exceeds ` +
|
|
40
|
+
`cap ${ethers_1.ethers.utils.formatUnits(ceiling, 'gwei')} gwei. ` +
|
|
41
|
+
`Raise policy.maxFeePerGasGwei in config.ini if intentional.`);
|
|
42
|
+
}
|
|
32
43
|
return { maxPriorityFeePerGas, maxFeePerGas };
|
|
33
44
|
}
|
|
34
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolygonChain.js","sourceRoot":"","sources":["../../src/chains/PolygonChain.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"PolygonChain.js","sourceRoot":"","sources":["../../src/chains/PolygonChain.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,mCAA8C;AAC9C,yCAA2C;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAa,YAAa,SAAQ,aAAK;IAU3B,cAAc;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEpC,MAAM,eAAe,GAAG,EAAE,CAAC,oBAAoB,IAAI,KAAK,CAAC;QACzD,MAAM,oBAAoB,GAAG,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC;QAEjF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,IAAI,SAAS,CAAC;QAChD,MAAM,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvE,yEAAyE;QACzE,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC;QAC/D,IAAI,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,eAAe,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,gBAAgB;gBAC7E,OAAO,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS;gBACzD,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAC;IAChD,CAAC;;AAvCH,oCAwCC;AAvCQ,oBAAO,GAAG,GAAG,CAAC;AACd,qBAAQ,GAAG;IAChB,IAAI,EAAE,iBAAiB;IACvB,GAAG,EAAE,wCAAwC;IAC7C,kBAAkB,EAAE,KAAK;IACzB,oBAAoB,EAAE,KAAK;IAC3B,sBAAsB,EAAE,EAAE;CAC3B,CAAC;AAkCJ;;;;;;GAMG;AACH,MAAa,SAAU,SAAQ,YAAY;;AAA3C,8BASC;AARQ,iBAAO,GAAG,KAAK,CAAC;AAChB,kBAAQ,GAAG;IAChB,IAAI,EAAE,sBAAsB;IAC5B,GAAG,EAAE,qCAAqC;IAC1C,kBAAkB,EAAE,KAAK;IACzB,oBAAoB,EAAE,KAAK;IAC3B,sBAAsB,EAAE,EAAE;CAC3B,CAAC;AAGJ,IAAA,wBAAa,EAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAClD,IAAA,wBAAa,EAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC"}
|
package/dist/utils/Config.js
CHANGED
|
@@ -195,5 +195,14 @@ nativeCurrencyDecimals=18
|
|
|
195
195
|
; nativeCurrencyName=Japan Open Chain Token
|
|
196
196
|
; nativeCurrencySymbol=JOC
|
|
197
197
|
; nativeCurrencyDecimals=18
|
|
198
|
+
;
|
|
199
|
+
; Per-chain fee policy (optional). Bump these only after a market move
|
|
200
|
+
; legitimately pushes the network past the cap; the default is meant to
|
|
201
|
+
; be a circuit-breaker, not a normal operating point.
|
|
202
|
+
; [default.rpc.137.policy]
|
|
203
|
+
; maxFeePerGasGwei=500 ; refuse to send if Polygon wants more
|
|
204
|
+
; minPriorityFeeGwei=25 ; Polygon RPC floor (don't lower)
|
|
205
|
+
; [default.rpc.81.policy]
|
|
206
|
+
; maxGasPriceGwei=500 ; legacy-chain analogue (JOC)
|
|
198
207
|
`;
|
|
199
208
|
//# sourceMappingURL=Config.js.map
|
package/dist/utils/Config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/utils/Config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/utils/Config.ts"],"names":[],"mappings":"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"}
|
package/index.mjs
CHANGED
|
@@ -215,7 +215,7 @@ class EpisteryAttach {
|
|
|
215
215
|
// Get contract address from domain config
|
|
216
216
|
this.config.setPath(`/${this.domainName}`);
|
|
217
217
|
const contractAddress =
|
|
218
|
-
this.config.data?.
|
|
218
|
+
this.config.data?.contract_address ||
|
|
219
219
|
process.env.AGENT_CONTRACT_ADDRESS;
|
|
220
220
|
if (!contractAddress) {
|
|
221
221
|
throw new Error("Agent contract address not configured for domain");
|
|
@@ -257,7 +257,7 @@ class EpisteryAttach {
|
|
|
257
257
|
// Get contract address from domain config
|
|
258
258
|
this.config.setPath(`/${this.domainName}`);
|
|
259
259
|
const contractAddress =
|
|
260
|
-
this.config.data?.
|
|
260
|
+
this.config.data?.contract_address ||
|
|
261
261
|
process.env.AGENT_CONTRACT_ADDRESS;
|
|
262
262
|
if (!contractAddress) {
|
|
263
263
|
throw new Error("Agent contract address not configured for domain");
|
|
@@ -299,7 +299,7 @@ class EpisteryAttach {
|
|
|
299
299
|
// Get contract address from domain config
|
|
300
300
|
this.config.setPath(`/${this.domainName}`);
|
|
301
301
|
const contractAddress =
|
|
302
|
-
this.config.data?.
|
|
302
|
+
this.config.data?.contract_address ||
|
|
303
303
|
process.env.AGENT_CONTRACT_ADDRESS;
|
|
304
304
|
if (!contractAddress) {
|
|
305
305
|
throw new Error("Agent contract address not configured for domain");
|
|
@@ -340,7 +340,7 @@ class EpisteryAttach {
|
|
|
340
340
|
|
|
341
341
|
this.config.setPath(`/${this.domainName}`);
|
|
342
342
|
const contractAddress =
|
|
343
|
-
this.config.data?.
|
|
343
|
+
this.config.data?.contract_address ||
|
|
344
344
|
process.env.AGENT_CONTRACT_ADDRESS;
|
|
345
345
|
if (!contractAddress) {
|
|
346
346
|
throw new Error("Agent contract address not configured for domain");
|
|
@@ -380,7 +380,7 @@ class EpisteryAttach {
|
|
|
380
380
|
|
|
381
381
|
this.config.setPath(`/${this.domainName}`);
|
|
382
382
|
const contractAddress =
|
|
383
|
-
this.config.data?.
|
|
383
|
+
this.config.data?.contract_address ||
|
|
384
384
|
process.env.AGENT_CONTRACT_ADDRESS;
|
|
385
385
|
if (!contractAddress) {
|
|
386
386
|
throw new Error("Agent contract address not configured for domain");
|
|
@@ -410,7 +410,7 @@ class EpisteryAttach {
|
|
|
410
410
|
// Get contract address from domain config
|
|
411
411
|
this.config.setPath(`/${this.domainName}`);
|
|
412
412
|
const contractAddress =
|
|
413
|
-
this.config.data?.
|
|
413
|
+
this.config.data?.contract_address ||
|
|
414
414
|
process.env.AGENT_CONTRACT_ADDRESS;
|
|
415
415
|
if (!contractAddress) {
|
|
416
416
|
throw new Error("Agent contract address not configured for domain");
|
|
@@ -472,7 +472,7 @@ class EpisteryAttach {
|
|
|
472
472
|
// Get contract address from domain config
|
|
473
473
|
this.config.setPath(`/${this.domainName}`);
|
|
474
474
|
const contractAddress =
|
|
475
|
-
this.config.data?.
|
|
475
|
+
this.config.data?.contract_address ||
|
|
476
476
|
process.env.AGENT_CONTRACT_ADDRESS;
|
|
477
477
|
if (!contractAddress) {
|
|
478
478
|
throw new Error("Agent contract address not configured for domain");
|
|
@@ -515,7 +515,7 @@ class EpisteryAttach {
|
|
|
515
515
|
// Get contract address from domain config
|
|
516
516
|
this.config.setPath(`/${this.domainName}`);
|
|
517
517
|
const contractAddress =
|
|
518
|
-
this.config.data?.
|
|
518
|
+
this.config.data?.contract_address ||
|
|
519
519
|
process.env.AGENT_CONTRACT_ADDRESS;
|
|
520
520
|
if (!contractAddress) {
|
|
521
521
|
throw new Error("Agent contract address not configured for domain");
|
|
@@ -545,7 +545,7 @@ class EpisteryAttach {
|
|
|
545
545
|
// Get contract address from domain config - reload from disk to get latest
|
|
546
546
|
this.config.setPath(`/${this.domainName}`);
|
|
547
547
|
this.config.load(); // Force reload from disk
|
|
548
|
-
const agentContractAddress = this.config.data?.
|
|
548
|
+
const agentContractAddress = this.config.data?.contract_address;
|
|
549
549
|
const upgradeNotes = this.config.data?.contract_upgrade_notes;
|
|
550
550
|
|
|
551
551
|
if (
|
|
@@ -636,7 +636,7 @@ class EpisteryAttach {
|
|
|
636
636
|
// Get contract address from domain config
|
|
637
637
|
this.config.setPath(`/${this.domainName}`);
|
|
638
638
|
const agentContractAddress =
|
|
639
|
-
this.config.data?.
|
|
639
|
+
this.config.data?.contract_address ||
|
|
640
640
|
process.env.AGENT_CONTRACT_ADDRESS;
|
|
641
641
|
if (
|
|
642
642
|
!agentContractAddress ||
|
package/package.json
CHANGED
package/scripts/deploy-agent.js
CHANGED
|
@@ -1,6 +1,50 @@
|
|
|
1
1
|
const hre = require("hardhat");
|
|
2
2
|
const fs = require("fs");
|
|
3
3
|
const path = require("path");
|
|
4
|
+
const ini = require("ini");
|
|
5
|
+
const os = require("os");
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Read per-chain policy from ~/.epistery/config.ini under
|
|
9
|
+
* [default.rpc.<chainId>.policy]. Returns {} if no overrides set.
|
|
10
|
+
*/
|
|
11
|
+
function loadChainPolicy(chainId) {
|
|
12
|
+
const configPath = path.join(os.homedir(), ".epistery", "config.ini");
|
|
13
|
+
if (!fs.existsSync(configPath)) return {};
|
|
14
|
+
const data = ini.decode(fs.readFileSync(configPath, "utf8"));
|
|
15
|
+
return data?.default?.rpc?.[String(chainId)]?.policy || {};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Build EIP-1559 overrides for Polygon (137) and Amoy (80002): apply the
|
|
20
|
+
* 25 gwei priority floor, then enforce a configurable ceiling so a base-fee
|
|
21
|
+
* spike or RPC misreport can't drain the wallet on a single deploy.
|
|
22
|
+
*/
|
|
23
|
+
async function polygonDeployOverrides(provider, policy) {
|
|
24
|
+
const fd = await provider.getFeeData();
|
|
25
|
+
const minPriority = hre.ethers.utils.parseUnits(
|
|
26
|
+
String(policy.minPriorityFeeGwei ?? 25), "gwei"
|
|
27
|
+
);
|
|
28
|
+
const networkPriority = fd.maxPriorityFeePerGas || minPriority;
|
|
29
|
+
const maxPriorityFeePerGas = networkPriority.gt(minPriority) ? networkPriority : minPriority;
|
|
30
|
+
|
|
31
|
+
const multiplier = policy.maxFeeMultiplier ?? 2;
|
|
32
|
+
const minMaxFee = maxPriorityFeePerGas.mul(multiplier);
|
|
33
|
+
const networkMax = fd.maxFeePerGas || minMaxFee;
|
|
34
|
+
const maxFeePerGas = networkMax.gt(minMaxFee) ? networkMax : minMaxFee;
|
|
35
|
+
|
|
36
|
+
const ceiling = hre.ethers.utils.parseUnits(
|
|
37
|
+
String(policy.maxFeePerGasGwei ?? 500), "gwei"
|
|
38
|
+
);
|
|
39
|
+
if (maxFeePerGas.gt(ceiling)) {
|
|
40
|
+
throw new Error(
|
|
41
|
+
`Aborting deploy: network fee ${hre.ethers.utils.formatUnits(maxFeePerGas, "gwei")} gwei ` +
|
|
42
|
+
`exceeds cap ${hre.ethers.utils.formatUnits(ceiling, "gwei")} gwei. ` +
|
|
43
|
+
`Raise [default.rpc.<chainId>.policy] maxFeePerGasGwei in ~/.epistery/config.ini if intentional.`
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
return { maxFeePerGas, maxPriorityFeePerGas };
|
|
47
|
+
}
|
|
4
48
|
|
|
5
49
|
/**
|
|
6
50
|
* Deploy Agent contract script
|
|
@@ -40,7 +84,23 @@ async function main() {
|
|
|
40
84
|
// Deploy the Agent contract with constructor parameters
|
|
41
85
|
console.log("\nDeploying Agent contract...");
|
|
42
86
|
const Agent = await hre.ethers.getContractFactory("Agent");
|
|
43
|
-
|
|
87
|
+
|
|
88
|
+
// Apply fee cap on Polygon family — protects against base-fee spikes or
|
|
89
|
+
// RPC misreports that would otherwise drain the deployer wallet.
|
|
90
|
+
const chainId = hre.network.config.chainId;
|
|
91
|
+
let overrides = {};
|
|
92
|
+
if (chainId === 137 || chainId === 80002) {
|
|
93
|
+
const policy = loadChainPolicy(chainId);
|
|
94
|
+
overrides = await polygonDeployOverrides(deployer.provider, policy);
|
|
95
|
+
console.log(
|
|
96
|
+
"Gas overrides: maxFeePerGas=" +
|
|
97
|
+
hre.ethers.utils.formatUnits(overrides.maxFeePerGas, "gwei") + " gwei, " +
|
|
98
|
+
"maxPriorityFeePerGas=" +
|
|
99
|
+
hre.ethers.utils.formatUnits(overrides.maxPriorityFeePerGas, "gwei") + " gwei"
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const agent = await Agent.deploy(domain, sponsor, overrides);
|
|
44
104
|
|
|
45
105
|
await agent.deployed();
|
|
46
106
|
const contractAddress = agent.address;
|
|
@@ -70,7 +130,7 @@ async function main() {
|
|
|
70
130
|
}
|
|
71
131
|
|
|
72
132
|
// Update contract address for this domain
|
|
73
|
-
config[domain].
|
|
133
|
+
config[domain].contract_address = contractAddress;
|
|
74
134
|
config[domain].updated_at = new Date().toISOString();
|
|
75
135
|
|
|
76
136
|
// Save config
|
|
@@ -78,7 +138,7 @@ async function main() {
|
|
|
78
138
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
79
139
|
|
|
80
140
|
console.log("\n✅ Updated config.json:");
|
|
81
|
-
console.log(` ${domain}.
|
|
141
|
+
console.log(` ${domain}.contract_address = ${contractAddress}`);
|
|
82
142
|
} catch (error) {
|
|
83
143
|
console.error("\n⚠️ Failed to update config.json:", error.message);
|
|
84
144
|
console.log("You will need to manually update the configuration.");
|
package/src/chains/Chain.ts
CHANGED
|
@@ -20,8 +20,13 @@ export interface ChainPolicy {
|
|
|
20
20
|
// EIP-1559 floors (in gwei)
|
|
21
21
|
minPriorityFeeGwei?: number;
|
|
22
22
|
maxFeeMultiplier?: number; // applied to max(networkMax, minPriority * 2)
|
|
23
|
+
// EIP-1559 ceiling (in gwei) — refuse to send if the chain reports a
|
|
24
|
+
// base fee above this. Bumping the cap is a manual config change so a
|
|
25
|
+
// legitimate market spike can't silently drain a wallet.
|
|
26
|
+
maxFeePerGasGwei?: number;
|
|
23
27
|
// Legacy gas
|
|
24
28
|
minGasPriceGwei?: number;
|
|
29
|
+
maxGasPriceGwei?: number; // legacy-chain analogue of maxFeePerGasGwei
|
|
25
30
|
// Gas limit estimation safety
|
|
26
31
|
gasLimitMultiplier?: number; // applied to estimateGas result
|
|
27
32
|
}
|
|
@@ -37,6 +37,18 @@ export class JapanOpenChain extends Chain {
|
|
|
37
37
|
const floor = this.minGasPrice();
|
|
38
38
|
const networkPrice = fd.gasPrice ?? floor;
|
|
39
39
|
const gasPrice = networkPrice.gt(floor) ? networkPrice : floor;
|
|
40
|
+
|
|
41
|
+
// Hard ceiling matching PolygonChain — refuse to send if the chain
|
|
42
|
+
// wants more than the operator is willing to pay. Default 200 gwei.
|
|
43
|
+
const ceiling = this.gwei(this.policy.maxGasPriceGwei ?? 500);
|
|
44
|
+
if (gasPrice.gt(ceiling)) {
|
|
45
|
+
throw new Error(
|
|
46
|
+
`JOC gas price ${ethers.utils.formatUnits(gasPrice, 'gwei')} gwei exceeds ` +
|
|
47
|
+
`cap ${ethers.utils.formatUnits(ceiling, 'gwei')} gwei. ` +
|
|
48
|
+
`Raise policy.maxGasPriceGwei in config.ini if intentional.`
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
40
52
|
return { gasPrice };
|
|
41
53
|
}
|
|
42
54
|
}
|
|
@@ -41,6 +41,18 @@ export class PolygonChain extends Chain {
|
|
|
41
41
|
const networkMax = fd.maxFeePerGas ?? minMaxFee;
|
|
42
42
|
const maxFeePerGas = networkMax.gt(minMaxFee) ? networkMax : minMaxFee;
|
|
43
43
|
|
|
44
|
+
// Hard ceiling: refuse to send if the chain wants more than the operator
|
|
45
|
+
// is willing to pay. Default 500 gwei is high enough for normal Polygon
|
|
46
|
+
// congestion but catches anomalies that would drain a wallet on a single
|
|
47
|
+
// contract deploy. Override via policy.maxFeePerGasGwei in config.ini.
|
|
48
|
+
const ceiling = this.gwei(this.policy.maxFeePerGasGwei ?? 500);
|
|
49
|
+
if (maxFeePerGas.gt(ceiling)) {
|
|
50
|
+
throw new Error(
|
|
51
|
+
`Polygon fee ${ethers.utils.formatUnits(maxFeePerGas, 'gwei')} gwei exceeds ` +
|
|
52
|
+
`cap ${ethers.utils.formatUnits(ceiling, 'gwei')} gwei. ` +
|
|
53
|
+
`Raise policy.maxFeePerGasGwei in config.ini if intentional.`
|
|
54
|
+
);
|
|
55
|
+
}
|
|
44
56
|
return { maxPriorityFeePerGas, maxFeePerGas };
|
|
45
57
|
}
|
|
46
58
|
}
|
package/src/utils/Config.ts
CHANGED
|
@@ -215,4 +215,13 @@ nativeCurrencyDecimals=18
|
|
|
215
215
|
; nativeCurrencyName=Japan Open Chain Token
|
|
216
216
|
; nativeCurrencySymbol=JOC
|
|
217
217
|
; nativeCurrencyDecimals=18
|
|
218
|
+
;
|
|
219
|
+
; Per-chain fee policy (optional). Bump these only after a market move
|
|
220
|
+
; legitimately pushes the network past the cap; the default is meant to
|
|
221
|
+
; be a circuit-breaker, not a normal operating point.
|
|
222
|
+
; [default.rpc.137.policy]
|
|
223
|
+
; maxFeePerGasGwei=500 ; refuse to send if Polygon wants more
|
|
224
|
+
; minPriorityFeeGwei=25 ; Polygon RPC floor (don't lower)
|
|
225
|
+
; [default.rpc.81.policy]
|
|
226
|
+
; maxGasPriceGwei=500 ; legacy-chain analogue (JOC)
|
|
218
227
|
`
|
package/test/setup.ts
CHANGED
|
@@ -76,7 +76,7 @@ default_domain=localhost
|
|
|
76
76
|
|
|
77
77
|
// Write localhost domain config
|
|
78
78
|
const localhostConfig = `domain=localhost
|
|
79
|
-
|
|
79
|
+
contract_address=${TEST_CONTRACT_ADDRESS || ''}
|
|
80
80
|
|
|
81
81
|
[wallet]
|
|
82
82
|
address=${TEST_WALLETS.server.address}
|