@smartpolicy/mcp 0.1.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 +102 -0
- package/dist/abi.d.ts +679 -0
- package/dist/abi.js +59 -0
- package/dist/abi.js.map +1 -0
- package/dist/actions.d.ts +10 -0
- package/dist/actions.js +15 -0
- package/dist/actions.js.map +1 -0
- package/dist/config.d.ts +23 -0
- package/dist/config.js +60 -0
- package/dist/config.js.map +1 -0
- package/dist/deploy.d.ts +1 -0
- package/dist/deploy.js +72 -0
- package/dist/deploy.js.map +1 -0
- package/dist/deployArtifacts.d.ts +2 -0
- package/dist/deployArtifacts.js +5 -0
- package/dist/deployArtifacts.js.map +1 -0
- package/dist/grants.d.ts +63 -0
- package/dist/grants.js +88 -0
- package/dist/grants.js.map +1 -0
- package/dist/http.d.ts +1 -0
- package/dist/http.js +201 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/registry.d.ts +104 -0
- package/dist/registry.js +208 -0
- package/dist/registry.js.map +1 -0
- package/dist/server.d.ts +11 -0
- package/dist/server.js +219 -0
- package/dist/server.js.map +1 -0
- package/package.json +41 -0
package/dist/abi.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { parseAbi } from "viem";
|
|
2
|
+
/** Minimal ABI: exactly the registry surface the server consumes. */
|
|
3
|
+
export const registryAbi = parseAbi([
|
|
4
|
+
// events (the event indexer and receipt decoding depend on these)
|
|
5
|
+
"event PolicyCreated(uint256 indexed policyId, address indexed owner, uint8 flags, uint64 expiresAt)",
|
|
6
|
+
"event PolicyLocked(uint256 indexed policyId)",
|
|
7
|
+
"event PolicyOwnershipTransferred(uint256 indexed policyId, address indexed previousOwner, address indexed newOwner)",
|
|
8
|
+
"event PolicyMetadataUpdated(uint256 indexed policyId, string metadataURI, bytes32 metadataHash)",
|
|
9
|
+
"event PolicyExpiryUpdated(uint256 indexed policyId, uint64 expiresAt)",
|
|
10
|
+
"event MemberAdded(uint256 indexed policyId, address indexed member)",
|
|
11
|
+
"event MemberRemoved(uint256 indexed policyId, address indexed member)",
|
|
12
|
+
"event AdminAdded(uint256 indexed policyId, address indexed admin)",
|
|
13
|
+
"event AdminRemoved(uint256 indexed policyId, address indexed admin)",
|
|
14
|
+
"event IssuerAdded(uint256 indexed policyId, address indexed issuer)",
|
|
15
|
+
"event IssuerRemoved(uint256 indexed policyId, address indexed issuer)",
|
|
16
|
+
"event ActionRuleSet(uint256 indexed policyId, bytes32 indexed action, uint8 rule)",
|
|
17
|
+
"event ConditionSet(uint256 indexed policyId, bytes32 indexed key, bytes value)",
|
|
18
|
+
"event ConditionCleared(uint256 indexed policyId, bytes32 indexed key)",
|
|
19
|
+
// the canonical question
|
|
20
|
+
"function isAllowed(uint256 policyId, address subject, bytes32 action) view returns (bool)",
|
|
21
|
+
// reads backing policy_get and the reasons in policy_check
|
|
22
|
+
"function isPolicyActive(uint256 policyId) view returns (bool)",
|
|
23
|
+
"function isMember(uint256 policyId, address account) view returns (bool)",
|
|
24
|
+
"function isAdmin(uint256 policyId, address account) view returns (bool)",
|
|
25
|
+
"function isOwner(uint256 policyId, address account) view returns (bool)",
|
|
26
|
+
"function isAuthorizedIssuer(uint256 policyId, address issuer) view returns (bool)",
|
|
27
|
+
"function getPolicy(uint256 policyId) view returns ((address owner, uint64 expiresAt, uint8 flags, bool locked, bytes32 metadataHash, string metadataURI))",
|
|
28
|
+
"function getActionRule(uint256 policyId, bytes32 action) view returns (uint8)",
|
|
29
|
+
"function getCondition(uint256 policyId, bytes32 key) view returns (bytes)",
|
|
30
|
+
"function memberCount(uint256 policyId) view returns (uint256)",
|
|
31
|
+
"function policyCount() view returns (uint256)",
|
|
32
|
+
"function creationFee() view returns (uint256)",
|
|
33
|
+
"function updateFee() view returns (uint256)",
|
|
34
|
+
// writes (encoded into calldata for the caller's wallet — never submitted by us)
|
|
35
|
+
"function createPolicy(uint8 flags, uint64 expiresAt, string metadataURI, bytes32 metadataHash) payable returns (uint256)",
|
|
36
|
+
"function addMembers(uint256 policyId, address[] members) payable",
|
|
37
|
+
"function removeMembers(uint256 policyId, address[] members) payable",
|
|
38
|
+
"function setActionRule(uint256 policyId, bytes32 action, uint8 rule) payable",
|
|
39
|
+
"function addIssuer(uint256 policyId, address issuer) payable",
|
|
40
|
+
"function removeIssuer(uint256 policyId, address issuer) payable",
|
|
41
|
+
"function addAdmin(uint256 policyId, address admin) payable",
|
|
42
|
+
"function removeAdmin(uint256 policyId, address admin) payable",
|
|
43
|
+
"function setCondition(uint256 policyId, bytes32 key, bytes value) payable",
|
|
44
|
+
"function clearCondition(uint256 policyId, bytes32 key) payable",
|
|
45
|
+
"function setExpiry(uint256 policyId, uint64 expiresAt) payable",
|
|
46
|
+
"function setMetadataURI(uint256 policyId, string metadataURI, bytes32 metadataHash) payable",
|
|
47
|
+
"function lockPolicy(uint256 policyId)",
|
|
48
|
+
"function transferPolicyOwnership(uint256 policyId, address newOwner)",
|
|
49
|
+
]);
|
|
50
|
+
export const verifierAbi = parseAbi([
|
|
51
|
+
"struct Grant { uint256 policyId; address subject; bytes32 action; uint64 issuedAt; uint64 expiresAt; uint256 nonce; address issuer; address target; }",
|
|
52
|
+
"function isGrantValid(Grant grant, bytes signature) view returns (bool)",
|
|
53
|
+
"function consumeGrant(Grant grant, bytes signature)",
|
|
54
|
+
"function hashGrant(Grant grant) view returns (bytes32)",
|
|
55
|
+
"function isNonceUsed(address issuer, uint256 nonce) view returns (bool)",
|
|
56
|
+
"function registry() view returns (address)",
|
|
57
|
+
]);
|
|
58
|
+
export const actionRuleNames = ["UNSET", "MEMBERS", "ANYONE", "NOBODY"];
|
|
59
|
+
//# sourceMappingURL=abi.js.map
|
package/dist/abi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEhC,qEAAqE;AACrE,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;IAClC,kEAAkE;IAClE,qGAAqG;IACrG,8CAA8C;IAC9C,qHAAqH;IACrH,iGAAiG;IACjG,uEAAuE;IACvE,qEAAqE;IACrE,uEAAuE;IACvE,mEAAmE;IACnE,qEAAqE;IACrE,qEAAqE;IACrE,uEAAuE;IACvE,mFAAmF;IACnF,gFAAgF;IAChF,uEAAuE;IACvE,yBAAyB;IACzB,2FAA2F;IAC3F,2DAA2D;IAC3D,+DAA+D;IAC/D,0EAA0E;IAC1E,yEAAyE;IACzE,yEAAyE;IACzE,mFAAmF;IACnF,2JAA2J;IAC3J,+EAA+E;IAC/E,2EAA2E;IAC3E,+DAA+D;IAC/D,+CAA+C;IAC/C,+CAA+C;IAC/C,6CAA6C;IAC7C,iFAAiF;IACjF,0HAA0H;IAC1H,kEAAkE;IAClE,qEAAqE;IACrE,8EAA8E;IAC9E,8DAA8D;IAC9D,iEAAiE;IACjE,4DAA4D;IAC5D,+DAA+D;IAC/D,2EAA2E;IAC3E,gEAAgE;IAChE,gEAAgE;IAChE,6FAA6F;IAC7F,uCAAuC;IACvC,sEAAsE;CACvE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;IAClC,uJAAuJ;IACvJ,yEAAyE;IACzE,qDAAqD;IACrD,wDAAwD;IACxD,yEAAyE;IACzE,4CAA4C;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Hex } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Agents refer to actions by plain name ("withdraw", "sweep") — the protocol
|
|
4
|
+
* uses bytes32. Accept either: a 0x-prefixed 32-byte hex is passed through,
|
|
5
|
+
* anything else is keccak256-hashed, matching the Solidity convention
|
|
6
|
+
* `keccak256("withdraw")` used by protected contracts.
|
|
7
|
+
*/
|
|
8
|
+
export declare function toActionId(action: string): Hex;
|
|
9
|
+
/** Same convention for condition keys. */
|
|
10
|
+
export declare const toConditionKey: typeof toActionId;
|
package/dist/actions.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { keccak256, toBytes } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Agents refer to actions by plain name ("withdraw", "sweep") — the protocol
|
|
4
|
+
* uses bytes32. Accept either: a 0x-prefixed 32-byte hex is passed through,
|
|
5
|
+
* anything else is keccak256-hashed, matching the Solidity convention
|
|
6
|
+
* `keccak256("withdraw")` used by protected contracts.
|
|
7
|
+
*/
|
|
8
|
+
export function toActionId(action) {
|
|
9
|
+
if (/^0x[0-9a-fA-F]{64}$/.test(action))
|
|
10
|
+
return action;
|
|
11
|
+
return keccak256(toBytes(action));
|
|
12
|
+
}
|
|
13
|
+
/** Same convention for condition keys. */
|
|
14
|
+
export const toConditionKey = toActionId;
|
|
15
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAY,MAAM,MAAM,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,MAAa,CAAC;IAC7D,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Address, Hex } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* All configuration comes from the environment — the server holds no user
|
|
4
|
+
* keys, ever. SMARTPOLICY_ISSUER_KEY is the server's own grant-issuer key
|
|
5
|
+
* and is optional: without it the grant_issue tool reports itself disabled.
|
|
6
|
+
*/
|
|
7
|
+
export interface Config {
|
|
8
|
+
rpcUrl: string;
|
|
9
|
+
chainId: number;
|
|
10
|
+
registry: Address;
|
|
11
|
+
verifier: Address;
|
|
12
|
+
issuerKey?: Hex;
|
|
13
|
+
/** Cap on grant lifetime, seconds. Grants should be short-lived. */
|
|
14
|
+
maxGrantTtl: number;
|
|
15
|
+
}
|
|
16
|
+
/** Canonical public testnet deployment — the zero-config default. */
|
|
17
|
+
export declare const SEPOLIA_DEFAULTS: {
|
|
18
|
+
rpcUrl: string;
|
|
19
|
+
chainId: number;
|
|
20
|
+
registry: Address;
|
|
21
|
+
verifier: Address;
|
|
22
|
+
};
|
|
23
|
+
export declare function loadConfig(env?: NodeJS.ProcessEnv): Config;
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/** Canonical public testnet deployment — the zero-config default. */
|
|
2
|
+
export const SEPOLIA_DEFAULTS = {
|
|
3
|
+
rpcUrl: "https://ethereum-sepolia-rpc.publicnode.com",
|
|
4
|
+
chainId: 11155111,
|
|
5
|
+
registry: "0x5D127b04d344EfBfb9C127F2B598Cb824D0B8334",
|
|
6
|
+
verifier: "0x3510B9427BeadD04D052E0b01248a6A6A1f23dc9",
|
|
7
|
+
};
|
|
8
|
+
/** Parse a positive-integer env var, throwing on NaN/garbage instead of
|
|
9
|
+
* silently producing NaN that corrupts the EIP-712 domain or TTL math (L6). */
|
|
10
|
+
function parsePositiveInt(raw, fallback, name) {
|
|
11
|
+
if (raw === undefined)
|
|
12
|
+
return fallback;
|
|
13
|
+
const n = Number(raw);
|
|
14
|
+
if (!Number.isFinite(n) || n <= 0 || !Number.isInteger(n)) {
|
|
15
|
+
throw new Error(`invalid ${name}: ${JSON.stringify(raw)} (must be a positive integer)`);
|
|
16
|
+
}
|
|
17
|
+
return n;
|
|
18
|
+
}
|
|
19
|
+
/** Validate the optional issuer key shape. A malformed key disables issuance
|
|
20
|
+
* (with a stderr warning) rather than crashing the server — free reads must
|
|
21
|
+
* keep working regardless of issuer config (L7). */
|
|
22
|
+
function parseIssuerKey(raw) {
|
|
23
|
+
if (!raw)
|
|
24
|
+
return undefined;
|
|
25
|
+
if (!/^0x[0-9a-fA-F]{64}$/.test(raw)) {
|
|
26
|
+
console.error("WARNING: SMARTPOLICY_ISSUER_KEY is malformed (expected 0x + 64 hex chars); grant issuance disabled.");
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
return raw;
|
|
30
|
+
}
|
|
31
|
+
export function loadConfig(env = process.env) {
|
|
32
|
+
const registry = env.SMARTPOLICY_REGISTRY;
|
|
33
|
+
const verifier = env.SMARTPOLICY_VERIFIER;
|
|
34
|
+
const issuerKey = parseIssuerKey(env.SMARTPOLICY_ISSUER_KEY);
|
|
35
|
+
const maxGrantTtl = parsePositiveInt(env.SMARTPOLICY_MAX_GRANT_TTL, 3600, "SMARTPOLICY_MAX_GRANT_TTL");
|
|
36
|
+
// Zero-config: no addresses given → run against the public Sepolia deployment.
|
|
37
|
+
if (!registry && !verifier) {
|
|
38
|
+
return {
|
|
39
|
+
rpcUrl: env.SMARTPOLICY_RPC_URL ?? SEPOLIA_DEFAULTS.rpcUrl,
|
|
40
|
+
chainId: parsePositiveInt(env.SMARTPOLICY_CHAIN_ID, SEPOLIA_DEFAULTS.chainId, "SMARTPOLICY_CHAIN_ID"),
|
|
41
|
+
registry: SEPOLIA_DEFAULTS.registry,
|
|
42
|
+
verifier: SEPOLIA_DEFAULTS.verifier,
|
|
43
|
+
issuerKey,
|
|
44
|
+
maxGrantTtl,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// Custom deployment (local anvil, another network): both addresses required.
|
|
48
|
+
if (!registry || !verifier) {
|
|
49
|
+
throw new Error("set BOTH SMARTPOLICY_REGISTRY and SMARTPOLICY_VERIFIER for a custom deployment, or neither to use the public Sepolia default");
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
rpcUrl: env.SMARTPOLICY_RPC_URL ?? "http://127.0.0.1:8545",
|
|
53
|
+
chainId: parsePositiveInt(env.SMARTPOLICY_CHAIN_ID, 31337, "SMARTPOLICY_CHAIN_ID"),
|
|
54
|
+
registry: registry,
|
|
55
|
+
verifier: verifier,
|
|
56
|
+
issuerKey,
|
|
57
|
+
maxGrantTtl,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAiBA,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,6CAA6C;IACrD,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,4CAAuD;IACjE,QAAQ,EAAE,4CAAuD;CAClE,CAAC;AAEF;gFACgF;AAChF,SAAS,gBAAgB,CAAC,GAAuB,EAAE,QAAgB,EAAE,IAAY;IAC/E,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACvC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;qDAEqD;AACrD,SAAS,cAAc,CAAC,GAAuB;IAC7C,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,qGAAqG,CAAC,CAAC;QACrH,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC;IAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC;IAE1C,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,2BAA2B,CAAC,CAAC;IAEvG,+EAA+E;IAC/E,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,mBAAmB,IAAI,gBAAgB,CAAC,MAAM;YAC1D,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,CAAC;YACrG,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;YACnC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;YACnC,SAAS;YACT,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,8HAA8H,CAC/H,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,mBAAmB,IAAI,uBAAuB;QAC1D,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,sBAAsB,CAAC;QAClF,QAAQ,EAAE,QAAmB;QAC7B,QAAQ,EAAE,QAAmB;QAC7B,SAAS;QACT,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
package/dist/deploy.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function deploy(): Promise<void>;
|
package/dist/deploy.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `smartpolicy-mcp deploy` — bootstrap a SmartPolicy deployment on a local or
|
|
3
|
+
* custom chain without the protocol repo. Deploys PolicyRegistry +
|
|
4
|
+
* GrantVerifier from embedded bytecode and prints the env vars to use.
|
|
5
|
+
*
|
|
6
|
+
* Required env: SMARTPOLICY_DEPLOYER_KEY (funded key on the target chain).
|
|
7
|
+
* Optional env: SMARTPOLICY_RPC_URL (default http://127.0.0.1:8545).
|
|
8
|
+
* The deployer becomes protocol owner and fee collector.
|
|
9
|
+
*/
|
|
10
|
+
import { createWalletClient, http, parseAbi, parseEther, publicActions } from "viem";
|
|
11
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
12
|
+
import { registryBytecode, verifierBytecode } from "./deployArtifacts.js";
|
|
13
|
+
// Testnet/local defaults — match contracts/script/Deploy.s.sol.
|
|
14
|
+
const CREATION_FEE = parseEther("0.0001");
|
|
15
|
+
const UPDATE_FEE = parseEther("0.00001");
|
|
16
|
+
const MAX_CREATION_FEE = parseEther("0.01");
|
|
17
|
+
const MAX_UPDATE_FEE = parseEther("0.001");
|
|
18
|
+
const registryConstructorAbi = parseAbi([
|
|
19
|
+
"constructor(address protocolOwner, address feeCollector, uint256 creationFee, uint256 updateFee, uint256 maxCreationFee, uint256 maxUpdateFee)",
|
|
20
|
+
]);
|
|
21
|
+
const verifierConstructorAbi = parseAbi(["constructor(address registry)"]);
|
|
22
|
+
export async function deploy() {
|
|
23
|
+
const key = process.env.SMARTPOLICY_DEPLOYER_KEY;
|
|
24
|
+
if (!key) {
|
|
25
|
+
console.error("SMARTPOLICY_DEPLOYER_KEY is required (a funded private key on the target chain)");
|
|
26
|
+
process.exitCode = 1; // no process.exit(): see index.ts note on the Windows libuv race
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const rpcUrl = process.env.SMARTPOLICY_RPC_URL ?? "http://127.0.0.1:8545";
|
|
30
|
+
const account = privateKeyToAccount(key);
|
|
31
|
+
const client = createWalletClient({ account, transport: http(rpcUrl) }).extend(publicActions);
|
|
32
|
+
const chainId = await client.getChainId();
|
|
33
|
+
console.error(`deploying to ${rpcUrl} (chainId ${chainId}) as ${account.address} ...`);
|
|
34
|
+
const registryHash = await client.deployContract({
|
|
35
|
+
abi: registryConstructorAbi,
|
|
36
|
+
bytecode: registryBytecode,
|
|
37
|
+
args: [account.address, account.address, CREATION_FEE, UPDATE_FEE, MAX_CREATION_FEE, MAX_UPDATE_FEE],
|
|
38
|
+
chain: null,
|
|
39
|
+
});
|
|
40
|
+
const registryReceipt = await client.waitForTransactionReceipt({ hash: registryHash });
|
|
41
|
+
if (registryReceipt.status !== "success" || !registryReceipt.contractAddress) {
|
|
42
|
+
throw new Error(`PolicyRegistry deployment reverted (tx ${registryHash})`);
|
|
43
|
+
}
|
|
44
|
+
const registry = registryReceipt.contractAddress;
|
|
45
|
+
const verifierHash = await client.deployContract({
|
|
46
|
+
abi: verifierConstructorAbi,
|
|
47
|
+
bytecode: verifierBytecode,
|
|
48
|
+
args: [registry],
|
|
49
|
+
chain: null,
|
|
50
|
+
});
|
|
51
|
+
const verifierReceipt = await client.waitForTransactionReceipt({ hash: verifierHash });
|
|
52
|
+
if (verifierReceipt.status !== "success" || !verifierReceipt.contractAddress) {
|
|
53
|
+
throw new Error(`GrantVerifier deployment reverted (tx ${verifierHash})`);
|
|
54
|
+
}
|
|
55
|
+
const verifier = verifierReceipt.contractAddress;
|
|
56
|
+
// stdout gets machine-readable JSON; progress went to stderr
|
|
57
|
+
console.log(JSON.stringify({
|
|
58
|
+
chainId,
|
|
59
|
+
registry,
|
|
60
|
+
verifier,
|
|
61
|
+
protocolOwner: account.address,
|
|
62
|
+
feeCollector: account.address,
|
|
63
|
+
fees: { creationFee: CREATION_FEE.toString(), updateFee: UPDATE_FEE.toString() },
|
|
64
|
+
env: {
|
|
65
|
+
SMARTPOLICY_RPC_URL: rpcUrl,
|
|
66
|
+
SMARTPOLICY_CHAIN_ID: String(chainId),
|
|
67
|
+
SMARTPOLICY_REGISTRY: registry,
|
|
68
|
+
SMARTPOLICY_VERIFIER: verifier,
|
|
69
|
+
},
|
|
70
|
+
}, null, 2));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const registryBytecode: "0x60c060405234801562000010575f80fd5b5060405162002dc938038062002dc98339810160408190526200003391620001b3565b856001600160a01b0381166200006357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6200006e816200012a565b506001600160a01b038516620000975760405163d92e233d60e01b815260040160405180910390fd5b81841115620000c457604051630e2b357b60e31b815260048101859052602481018390526044016200005a565b80831115620000f157604051630e2b357b60e31b815260048101849052602481018290526044016200005a565b60809190915260a052600291909155600355600480546001600160a01b0319166001600160a01b0392909216919091179055506200020c565b600180546001600160a01b0319169055620001458162000148565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001ae575f80fd5b919050565b5f805f805f8060c08789031215620001c9575f80fd5b620001d48762000197565b9550620001e46020880162000197565b945060408701519350606087015192506080870151915060a087015190509295509295509295565b60805160a051612b7f6200024a5f395f818161051f01528181610732015261076e01525f818161029a015281816106c301526106ff0152612b7f5ff3fe60806040526004361061021d575f3560e01c80637d9e10f51161011e578063c2add7cf116100a8578063dce0b4e41161006d578063dce0b4e414610641578063de54d42914610656578063e30c39781461066a578063f2fde38b14610687578063fc284d11146106a6575f80fd5b8063c2add7cf146105bd578063c415b95c146105d0578063cffeb168146105ef578063d508be0b14610602578063dbdc814b1461062e575f80fd5b80639e509536116100ee5780639e5095361461050e578063a42dce8014610541578063a5f471d214610560578063a767d1701461057f578063bd8afa461461059e575f80fd5b80637d9e10f5146104995780637eb0bdc9146104b85780638da5cb5b146104cb5780638dd9c573146104fb575f80fd5b806347dc0c42116101aa5780636e8165e81161016f5780636e8165e81461041e578063715018a61461044957806371e163b21461045d578063758cdcf01461047057806379ba509714610485575f80fd5b806347dc0c42146103a757806348f65c51146103ba5780634ab6ba7c146103d95780635a5d096c146103ec578063627cf4b01461040b575f80fd5b806319be129e116101f057806319be129e146102ca578063209efe3e146103105780632b07fce314610354578063376951b314610380578063476343ee14610393575f80fd5b80630b78f9c014610221578063100af8a614610242578063146a2911146102555780631908351314610289575b5f80fd5b34801561022c575f80fd5b5061024061023b36600461249e565b6106b9565b005b6102406102503660046124be565b6107e1565b348015610260575f80fd5b5061027461026f366004612512565b610967565b60405190151581526020015b60405180910390f35b348015610294575f80fd5b506102bc7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610280565b3480156102d5575f80fd5b506103036102e436600461249e565b5f918252600b6020908152604080842092845291905290205460ff1690565b6040516102809190612550565b34801561031b575f80fd5b5061027461032a366004612512565b5f918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561035f575f80fd5b5061037361036e366004612576565b610993565b60405161028091906125d0565b61024061038e366004612512565b610b07565b34801561039e575f80fd5b50610240610c97565b6102406103b536600461267e565b610d54565b3480156103c5575f80fd5b506102406103d4366004612512565b610ec7565b6102406103e73660046126cc565b61103d565b3480156103f7575f80fd5b50610274610406366004612512565b61125b565b6102406104193660046126cc565b611292565b348015610429575f80fd5b506102bc610438366004612576565b5f9081526008602052604090205490565b348015610454575f80fd5b5061024061147f565b61024061046b36600461249e565b611492565b34801561047b575f80fd5b506102bc60035481565b348015610490575f80fd5b506102406115f1565b3480156104a4575f80fd5b506102746104b3366004612512565b611635565b6102406104c6366004612512565b611640565b3480156104d6575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610280565b610240610509366004612743565b6117a8565b348015610519575f80fd5b506102bc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561054c575f80fd5b5061024061055b366004612791565b611929565b34801561056b575f80fd5b5061027461057a3660046127aa565b6119a1565b34801561058a575f80fd5b50610240610599366004612576565b611a2a565b3480156105a9575f80fd5b506102746105b8366004612576565b611b2a565b6102406105cb366004612512565b611b34565b3480156105db575f80fd5b506004546104e3906001600160a01b031681565b6102bc6105fd3660046127f2565b611cec565b34801561060d575f80fd5b5061062161061c36600461249e565b611eec565b604051610280919061285c565b61024061063c366004612512565b611f97565b34801561064c575f80fd5b506102bc60025481565b348015610661575f80fd5b506005546102bc565b348015610675575f80fd5b506001546001600160a01b03166104e3565b348015610692575f80fd5b506102406106a1366004612791565b612128565b6102406106b436600461286e565b612198565b6106c1612316565b7f000000000000000000000000000000000000000000000000000000000000000082111561073057604051630e2b357b60e31b8152600481018390527f000000000000000000000000000000000000000000000000000000000000000060248201526044015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081111561079a57604051630e2b357b60e31b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610727565b6002829055600381905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1910160405180910390a15050565b5f8381526006602052604090205483906001600160a01b031661081a576040516321df5fa560e11b815260048101829052602401610727565b5f8481526006602052604090205484906001600160a01b0316331480159061085b57505f81815260096020908152604080832033845290915290205460ff16155b1561088257604051639259310160e01b815260048101829052336024820152604401610727565b5f858152600660205260409020548590600160e81b900460ff16156108bd5760405163d52f5e2b60e01b815260048101829052602401610727565b60035434146108ec576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f868152600b602090815260408083208884529091529020805485919060ff191660018360038111156109215761092161253c565b021790555084867f10a7086648593e30ff50a1f9f0023e81d4589bed5055f1a5ef3952242fe07b52866040516109579190612550565b60405180910390a3505050505050565b5f8281526009602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b6040805160c0810182525f808252602080830182905282840182905260608084018390526080840183905260a084015284825260069052919091205482906001600160a01b03166109fa576040516321df5fa560e11b815260048101829052602401610727565b5f83815260066020908152604091829020825160c08101845281546001600160a01b03811682526001600160401b03600160a01b8204169382019390935260ff600160e01b8404811694820194909452600160e81b909204909216151560608201526001820154608082015260028201805491929160a084019190610a7e9061288f565b80601f0160208091040260200160405190810160405280929190818152602001828054610aaa9061288f565b8015610af55780601f10610acc57610100808354040283529160200191610af5565b820191905f5260205f20905b815481529060010190602001808311610ad857829003601f168201915b50505050508152505091505b50919050565b5f8281526006602052604090205482906001600160a01b0316610b40576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b03163314801590610b8157505f81815260096020908152604080832033845290915290205460ff16155b15610ba857604051639259310160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff1615610be35760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414610c12576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f858152600a602090815260408083206001600160a01b038816845290915290205460ff1615610c90575f858152600a602090815260408083206001600160a01b0388168085529252808320805460ff1916905551909187917f71664410856ad4f9b3b31f3ba0fecc3b87b280c68cfd61953cd9829851aec1329190a35b5050505050565b60045460405147916001600160a01b0316905f90829084908381818185875af1925050503d805f8114610ce5576040519150601f19603f3d011682016040523d82523d5f602084013e610cea565b606091505b5050905080610d0c57604051634033e4e360e01b815260040160405180910390fd5b816001600160a01b03167fc0819c13be868895eb93e40eaceb96de976442fa1d404e5c55f14bb65a8c489a84604051610d4791815260200190565b60405180910390a2505050565b5f8481526006602052604090205484906001600160a01b0316610d8d576040516321df5fa560e11b815260048101829052602401610727565b5f8581526006602052604090205485906001600160a01b03163314801590610dce57505f81815260096020908152604080832033845290915290205460ff16155b15610df557604051639259310160e01b815260048101829052336024820152604401610727565b5f868152600660205260409020548690600160e81b900460ff1615610e305760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414610e5f576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f878152600c602090815260408083208984529091529020610e8285878361291e565b5085877f67c3c4289abc73cbd409e04570fad5311d8da780dea8322eb98845401171191b8787604051610eb69291906129ff565b60405180910390a350505050505050565b5f8281526006602052604090205482906001600160a01b0316610f00576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b03163314610f41576040516358a063e160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff1615610f7c5760405163d52f5e2b60e01b815260048101829052602401610727565b6001600160a01b038416610fa35760405163d92e233d60e01b815260040160405180910390fd5b5f85815260066020526040812054600160e01b90046002169003610fdd57604051632830951560e01b815260048101869052602401610727565b5f8581526006602052604080822080546001600160a01b031981166001600160a01b038981169182179093559251911692839189917f680c4ddb8119c2c393d40b0040ce5a008cb67c9af7d3d8dbba0e95485ed253e591a4505050505050565b5f8381526006602052604090205483906001600160a01b0316611076576040516321df5fa560e11b815260048101829052602401610727565b5f8481526006602052604090205484906001600160a01b031633148015906110b757505f81815260096020908152604080832033845290915290205460ff16155b156110de57604051639259310160e01b815260048101829052336024820152604401610727565b5f858152600660205260409020548590600160e81b900460ff16156111195760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414611148576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f5b84811015611252575f86868381811061116557611165612a12565b905060200201602081019061117a9190612791565b90506001600160a01b0381166111a35760405163d92e233d60e01b815260040160405180910390fd5b5f8881526007602090815260408083206001600160a01b038516845290915290205460ff16611249575f8881526007602090815260408083206001600160a01b03851684528252808320805460ff191660011790558a83526008909152812080549161120e83612a3a565b90915550506040516001600160a01b0382169089907ff328ac0f8bcae00933fe87ba0aa2d0d505c1df94bc9c1aa05b8441c28b74032c905f90a35b5060010161114a565b50505050505050565b5f828152600660205260408120546001600160a01b03838116911614801561128b57506001600160a01b03821615155b9392505050565b5f8381526006602052604090205483906001600160a01b03166112cb576040516321df5fa560e11b815260048101829052602401610727565b5f8481526006602052604090205484906001600160a01b0316331480159061130c57505f81815260096020908152604080832033845290915290205460ff16155b1561133357604051639259310160e01b815260048101829052336024820152604401610727565b5f858152600660205260409020548590600160e81b900460ff161561136e5760405163d52f5e2b60e01b815260048101829052602401610727565b600354341461139d576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f5b84811015611252575f8686838181106113ba576113ba612a12565b90506020020160208101906113cf9190612791565b5f8981526007602090815260408083206001600160a01b038516845290915290205490915060ff1615611476575f8881526007602090815260408083206001600160a01b03851684528252808320805460ff191690558a83526008909152812080549161143b83612a52565b90915550506040516001600160a01b0382169089907f1c4c9d2e56d0635d11bc47c997c6909a0d7061f55cbb8f4b27386db37553191c905f90a35b5060010161139f565b611487612316565b6114905f612342565b565b5f8281526006602052604090205482906001600160a01b03166114cb576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b0316331480159061150c57505f81815260096020908152604080832033845290915290205460ff16155b1561153357604051639259310160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff161561156e5760405163d52f5e2b60e01b815260048101829052602401610727565b600354341461159d576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f858152600c6020908152604080832087845290915281206115be91612454565b604051849086907f1ad954507e7d266546fc29e88954deaadb6fcabc1f66a25a99f7fcc6d3a92906905f90a35050505050565b60015433906001600160a01b031681146116295760405163118cdaa760e01b81526001600160a01b0382166004820152602401610727565b61163281612342565b50565b5f61128b838361235b565b5f8281526006602052604090205482906001600160a01b0316611679576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b031633146116ba576040516358a063e160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff16156116f55760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414611724576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f8581526009602090815260408083206001600160a01b038816845290915290205460ff1615610c90575f8581526009602090815260408083206001600160a01b0388168085529252808320805460ff1916905551909187917f8b41a2498e3f784d58ed746da2a7a2f699504cdd0ee2f9982dc7256e006e7ee59190a35050505050565b5f8481526006602052604090205484906001600160a01b03166117e1576040516321df5fa560e11b815260048101829052602401610727565b5f8581526006602052604090205485906001600160a01b0316331480159061182257505f81815260096020908152604080832033845290915290205460ff16155b1561184957604051639259310160e01b815260048101829052336024820152604401610727565b5f868152600660205260409020548690600160e81b900460ff16156118845760405163d52f5e2b60e01b815260048101829052602401610727565b60035434146118b3576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f8781526006602052604090206002016118ce86888361291e565b505f87815260066020526040908190206001018590555187907f466fffaf826184a6fa083dfe541a3796e003c6cff36453fd6c76200aad503d0a9061191890899089908990612a67565b60405180910390a250505050505050565b611931612316565b6001600160a01b0381166119585760405163d92e233d60e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f905f90a250565b5f6119ab846123ab565b6119b657505f61128b565b5f848152600b6020908152604080832085845290915290205460ff1660028160038111156119e6576119e661253c565b036119f557600191505061128b565b6003816003811115611a0957611a0961253c565b03611a17575f91505061128b565b611a21858561235b565b95945050505050565b5f8181526006602052604090205481906001600160a01b0316611a63576040516321df5fa560e11b815260048101829052602401610727565b5f8281526006602052604090205482906001600160a01b03163314611aa4576040516358a063e160e01b815260048101829052336024820152604401610727565b5f838152600660205260409020548390600160e81b900460ff1615611adf5760405163d52f5e2b60e01b815260048101829052602401610727565b5f84815260066020526040808220805460ff60e81b1916600160e81b1790555185917f798185fee0db4185c24afc6aacc104f9216f1dc5b6bdeffee2bce32e712a6cbc91a250505050565b5f61098d826123ab565b5f8281526006602052604090205482906001600160a01b0316611b6d576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b03163314801590611bae57505f81815260096020908152604080832033845290915290205460ff16155b15611bd557604051639259310160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff1615611c105760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414611c3f576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b6001600160a01b038416611c665760405163d92e233d60e01b815260040160405180910390fd5b5f858152600a602090815260408083206001600160a01b038816845290915290205460ff16610c90575f858152600a602090815260408083206001600160a01b0388168085529252808320805460ff1916600117905551909187917f30bc7e762c488c6d715dbda0e6220e2e84fe406a781e9a4a60af2ab3c1e3215d9190a35050505050565b5f6002543414611d1c576002546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b60055f8154611d2a90612a3a565b91905081905590506040518060c00160405280336001600160a01b03168152602001866001600160401b031681526020018760ff1681526020015f1515815260200183815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250508381526006602090815260409182902084518154928601519386015160608701511515600160e81b0260ff60e81b1960ff909216600160e01b029190911661ffff60e01b196001600160401b03909616600160a01b026001600160e01b03199095166001600160a01b03909316929092179390931793909316929092171781556080830151600182015560a08301519091506002820190611e4a9082612a8a565b50506040805160ff891681526001600160401b038816602082015233925083917f1b7c9de5d5b024974e150427e474fbcacba6d3b8240280e3aa3dc35ead3497cd910160405180910390a382151580611ea257508115155b15611a2157807f466fffaf826184a6fa083dfe541a3796e003c6cff36453fd6c76200aad503d0a858585604051611edb93929190612a67565b60405180910390a295945050505050565b5f828152600c602090815260408083208484529091529020805460609190611f139061288f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f3f9061288f565b8015611f8a5780601f10611f6157610100808354040283529160200191611f8a565b820191905f5260205f20905b815481529060010190602001808311611f6d57829003601f168201915b5050505050905092915050565b5f8281526006602052604090205482906001600160a01b0316611fd0576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b03163314612011576040516358a063e160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff161561204c5760405163d52f5e2b60e01b815260048101829052602401610727565b600354341461207b576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b6001600160a01b0384166120a25760405163d92e233d60e01b815260040160405180910390fd5b5f8581526009602090815260408083206001600160a01b038816845290915290205460ff16610c90575f8581526009602090815260408083206001600160a01b0388168085529252808320805460ff1916600117905551909187917f5b9611f54db67f0ad14ca6d531a6b00d0c68defcd0843350fb378ee2aac1a5cd9190a35050505050565b612130612316565b600180546001600160a01b0383166001600160a01b031990911681179091556121605f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f8281526006602052604090205482906001600160a01b03166121d1576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b0316331480159061221257505f81815260096020908152604080832033845290915290205460ff16155b1561223957604051639259310160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff16156122745760405163d52f5e2b60e01b815260048101829052602401610727565b60035434146122a3576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f85815260066020908152604091829020805467ffffffffffffffff60a01b1916600160a01b6001600160401b03891690810291909117909155915191825286917f02b68e611d2233ade081320b82f20a4b50d8c946124cb29402844b4ccdade7fb910160405180910390a25050505050565b5f546001600160a01b031633146114905760405163118cdaa760e01b8152336004820152602401610727565b600180546001600160a01b031916905561163281612405565b5f82815260066020526040812054600160e01b9004600116156123805750600161098d565b505f9182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f81815260066020526040812080546001600160a01b03166123cf57505f92915050565b8054600160a01b90046001600160401b0316158061128b5750805442600160a01b9091046001600160401b031610159392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546124609061288f565b5f825580601f1061246f575050565b601f0160209004905f5260205f209081019061163291905b8082111561249a575f8155600101612487565b5090565b5f80604083850312156124af575f80fd5b50508035926020909101359150565b5f805f606084860312156124d0575f80fd5b83359250602084013591506040840135600481106124ec575f80fd5b809150509250925092565b80356001600160a01b038116811461250d575f80fd5b919050565b5f8060408385031215612523575f80fd5b82359150612533602084016124f7565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016004831061257057634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215612586575f80fd5b5035919050565b5f81518084525f5b818110156125b157602081850181015186830182015201612595565b505f602082860101526020601f19601f83011685010191505092915050565b6020815260018060a01b0382511660208201526001600160401b03602083015116604082015260ff6040830151166060820152606082015115156080820152608082015160a08201525f60a083015160c08084015261263260e084018261258d565b949350505050565b5f8083601f84011261264a575f80fd5b5081356001600160401b03811115612660575f80fd5b602083019150836020828501011115612677575f80fd5b9250929050565b5f805f8060608587031215612691575f80fd5b843593506020850135925060408501356001600160401b038111156126b4575f80fd5b6126c08782880161263a565b95989497509550505050565b5f805f604084860312156126de575f80fd5b8335925060208401356001600160401b03808211156126fb575f80fd5b818601915086601f83011261270e575f80fd5b81358181111561271c575f80fd5b8760208260051b8501011115612730575f80fd5b6020830194508093505050509250925092565b5f805f8060608587031215612756575f80fd5b8435935060208501356001600160401b03811115612772575f80fd5b61277e8782880161263a565b9598909750949560400135949350505050565b5f602082840312156127a1575f80fd5b61128b826124f7565b5f805f606084860312156127bc575f80fd5b833592506127cc602085016124f7565b9150604084013590509250925092565b80356001600160401b038116811461250d575f80fd5b5f805f805f60808688031215612806575f80fd5b853560ff81168114612816575f80fd5b9450612824602087016127dc565b935060408601356001600160401b0381111561283e575f80fd5b61284a8882890161263a565b96999598509660600135949350505050565b602081525f61128b602083018461258d565b5f806040838503121561287f575f80fd5b82359150612533602084016127dc565b600181811c908216806128a357607f821691505b602082108103610b0157634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b601f82111561291957805f5260205f20601f840160051c810160208510156128fa5750805b601f840160051c820191505b81811015610c90575f8155600101612906565b505050565b6001600160401b03831115612935576129356128c1565b61294983612943835461288f565b836128d5565b5f601f84116001811461297a575f85156129635750838201355b5f19600387901b1c1916600186901b178355610c90565b5f83815260208120601f198716915b828110156129a95786850135825560209485019460019092019101612989565b50868210156129c5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6126326020830184866129d7565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201612a4b57612a4b612a26565b5060010190565b5f81612a6057612a60612a26565b505f190190565b604081525f612a7a6040830185876129d7565b9050826020830152949350505050565b81516001600160401b03811115612aa357612aa36128c1565b612ab781612ab1845461288f565b846128d5565b602080601f831160018114612aea575f8415612ad35750858301515b5f19600386901b1c1916600185901b178555612b41565b5f85815260208120601f198616915b82811015612b1857888601518255948401946001909101908401612af9565b5085821015612b3557878501515f19600388901b60f8161c191681555b505060018460011b0185555b50505050505056fea26469706673582212208044d5d75eb029fce5973cdb3fea98dfab9fa78d80d253988330aeba829210c864736f6c63430008180033";
|
|
2
|
+
export declare const verifierBytecode: "0x61018060405234801562000011575f80fd5b506040516200119538038062001195833981016040819052620000349162000205565b6040805180820182526012815271536d617274506f6c696379204772616e747360701b602080830191909152825180840190935260018352603160f81b908301529062000082825f6200018b565b61012052620000938160016200018b565b61014052815160208084019190912060e052815190820120610100524660a0526200012060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b038116620001785760405162461bcd60e51b815260206004820152601060248201526f7265676973747279206973207a65726f60801b60448201526064015b60405180910390fd5b6001600160a01b03166101605262000410565b5f602083511015620001aa57620001a283620001c3565b9050620001bd565b81620001b78482620002d2565b5060ff90505b92915050565b5f80829050601f81511115620001f0578260405163305a27a960e01b81526004016200016f91906200039e565b8051620001fd82620003ec565b179392505050565b5f6020828403121562000216575f80fd5b81516001600160a01b03811681146200022d575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200025d57607f821691505b6020821081036200027c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002cd57805f5260205f20601f840160051c81016020851015620002a95750805b601f840160051c820191505b81811015620002ca575f8155600101620002b5565b50505b505050565b81516001600160401b03811115620002ee57620002ee62000234565b6200030681620002ff845462000248565b8462000282565b602080601f8311600181146200033c575f8415620003245750858301515b5f19600386901b1c1916600185901b17855562000396565b5f85815260208120601f198616915b828110156200036c578886015182559484019460019091019084016200034b565b50858210156200038a57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602080835283518060208501525f5b81811015620003cc57858101830151858201604001528201620003ae565b505f604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200027c575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610d1c620004795f395f8181608f0152818161053501526105c501525f61044701525f61041601525f61080501525f6107dd01525f61073801525f61076201525f61078c0152610d1c5ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c806353299c60146100645780637b1039991461008a57806384b0196e146100c9578063cab7e8eb146100e4578063e40fa9781461012c578063ead34ff61461013f575b5f80fd5b610077610072366004610a8a565b610154565b6040519081526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610081565b6100d1610251565b6040516100819796959493929190610ae8565b61011c6100f2366004610b9a565b6001600160a01b03919091165f908152600260209081526040808320938352929052205460ff1690565b6040519015158152602001610081565b61011c61013a366004610bc2565b610293565b61015261014d366004610bc2565b6102b5565b005b5f61024b7f56b563a1dfbab1d5ce57183c2e0c8177696f5b9115acde44b0647b838f489c15833561018b6040860160208701610c41565b60408601356101a06080880160608901610c5a565b6101b060a0890160808a01610c5a565b60a08901356101c560e08b0160c08c01610c41565b6101d66101008c0160e08d01610c41565b60408051602081019a909a528901979097526001600160a01b039586166060890152608088019490945267ffffffffffffffff92831660a0880152911660c086015260e085015281166101008401521661012082015261014001604051602081830303815290604052805190602001206103e3565b92915050565b5f6060805f805f606061026261040f565b61026a610440565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f806102a085858561046d565b6001600160e01b0319161490505b9392505050565b6102c6610100840160e08501610c41565b6001600160a01b0316336001600160a01b0316146102f757604051631d49981d60e01b815260040160405180910390fd5b5f61030384848461046d565b90506001600160e01b031981161561031d57805f5260045ffd5b600160025f61033260e0880160c08901610c41565b6001600160a01b0316815260208082019290925260409081015f90812060a089013582528352819020805460ff19169315159390931790925590850180359161037d91908701610c41565b6001600160a01b031685357f36df3d29c82055fd30ca70317c7db95547d011ffb2252122190214d8437e57646103b960e0890160c08a01610c41565b604080516001600160a01b03909216825260a08a013560208301520160405180910390a450505050565b5f61024b6103ef61072c565b8360405161190160f01b8152600281019290925260228201526042902090565b606061043b7f00000000000000000000000000000000000000000000000000000000000000005f610855565b905090565b606061043b7f00000000000000000000000000000000000000000000000000000000000000006001610855565b5f61047e6080850160608601610c5a565b67ffffffffffffffff1642101561049d57506303ca3ee160e21b6102ae565b6104ad60a0850160808601610c5a565b67ffffffffffffffff164211156104cc575063075ff6cf60e11b6102ae565b60025f6104df60e0870160c08801610c41565b6001600160a01b0316815260208082019290925260409081015f90812060a0880135825290925290205460ff161561051f57506348929ed960e01b6102ae565b604051635ec57d2360e11b8152843560048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd8afa4690602401602060405180830381865afa158015610582573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a69190610c81565b6105bb5750600162d89f7d60e01b03196102ae565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663209efe3e85356105fc60e0880160c08901610c41565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015610644573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106689190610c81565b61067a5750633fc8312160e01b6102ae565b5f806106c361068887610154565b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506108fe92505050565b5090925090505f8160038111156106dc576106dc610ca0565b14158061070a57506106f460e0870160c08801610c41565b6001600160a01b0316826001600160a01b031614155b15610721575063731bd8ad60e11b91506102ae9050565b505f95945050505050565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561078457507f000000000000000000000000000000000000000000000000000000000000000046145b156107ae57507f000000000000000000000000000000000000000000000000000000000000000090565b61043b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b606060ff831461086f5761086883610947565b905061024b565b81805461087b90610cb4565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790610cb4565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b5050505050905061024b565b5f805f8351604103610935576020840151604085015160608601515f1a61092788828585610984565b955095509550505050610940565b505081515f91506002905b9250925092565b60605f61095383610a4c565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156109bd57505f91506003905082610a42565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610a0e573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610a3957505f925060019150829050610a42565b92505f91508190505b9450945094915050565b5f60ff8216601f81111561024b57604051632cd44ac360e21b815260040160405180910390fd5b5f6101008284031215610a84575f80fd5b50919050565b5f6101008284031215610a9b575f80fd5b6102ae8383610a73565b5f81518084525f5b81811015610ac957602081850181015186830182015201610aad565b505f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b881681525f602060e06020840152610b0860e084018a610aa5565b8381036040850152610b1a818a610aa5565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610b6d57835183529284019291840191600101610b51565b50909c9b505050505050505050505050565b80356001600160a01b0381168114610b95575f80fd5b919050565b5f8060408385031215610bab575f80fd5b610bb483610b7f565b946020939093013593505050565b5f805f6101208486031215610bd5575f80fd5b610bdf8585610a73565b925061010084013567ffffffffffffffff80821115610bfc575f80fd5b818601915086601f830112610c0f575f80fd5b813581811115610c1d575f80fd5b876020828501011115610c2e575f80fd5b6020830194508093505050509250925092565b5f60208284031215610c51575f80fd5b6102ae82610b7f565b5f60208284031215610c6a575f80fd5b813567ffffffffffffffff811681146102ae575f80fd5b5f60208284031215610c91575f80fd5b815180151581146102ae575f80fd5b634e487b7160e01b5f52602160045260245ffd5b600181811c90821680610cc857607f821691505b602082108103610a8457634e487b7160e01b5f52602260045260245ffdfea2646970667358221220bf6495f8dbf2f7cae144d377ab6f2c0511fa4ac585885fad637e872781dd457364736f6c63430008180033";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// AUTO-GENERATED from contracts/out by the embed step — do not edit.
|
|
2
|
+
// Compiled with solc 0.8.24, optimizer 200 runs (see contracts/foundry.toml).
|
|
3
|
+
export const registryBytecode = "0x60c060405234801562000010575f80fd5b5060405162002dc938038062002dc98339810160408190526200003391620001b3565b856001600160a01b0381166200006357604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6200006e816200012a565b506001600160a01b038516620000975760405163d92e233d60e01b815260040160405180910390fd5b81841115620000c457604051630e2b357b60e31b815260048101859052602481018390526044016200005a565b80831115620000f157604051630e2b357b60e31b815260048101849052602481018290526044016200005a565b60809190915260a052600291909155600355600480546001600160a01b0319166001600160a01b0392909216919091179055506200020c565b600180546001600160a01b0319169055620001458162000148565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001ae575f80fd5b919050565b5f805f805f8060c08789031215620001c9575f80fd5b620001d48762000197565b9550620001e46020880162000197565b945060408701519350606087015192506080870151915060a087015190509295509295509295565b60805160a051612b7f6200024a5f395f818161051f01528181610732015261076e01525f818161029a015281816106c301526106ff0152612b7f5ff3fe60806040526004361061021d575f3560e01c80637d9e10f51161011e578063c2add7cf116100a8578063dce0b4e41161006d578063dce0b4e414610641578063de54d42914610656578063e30c39781461066a578063f2fde38b14610687578063fc284d11146106a6575f80fd5b8063c2add7cf146105bd578063c415b95c146105d0578063cffeb168146105ef578063d508be0b14610602578063dbdc814b1461062e575f80fd5b80639e509536116100ee5780639e5095361461050e578063a42dce8014610541578063a5f471d214610560578063a767d1701461057f578063bd8afa461461059e575f80fd5b80637d9e10f5146104995780637eb0bdc9146104b85780638da5cb5b146104cb5780638dd9c573146104fb575f80fd5b806347dc0c42116101aa5780636e8165e81161016f5780636e8165e81461041e578063715018a61461044957806371e163b21461045d578063758cdcf01461047057806379ba509714610485575f80fd5b806347dc0c42146103a757806348f65c51146103ba5780634ab6ba7c146103d95780635a5d096c146103ec578063627cf4b01461040b575f80fd5b806319be129e116101f057806319be129e146102ca578063209efe3e146103105780632b07fce314610354578063376951b314610380578063476343ee14610393575f80fd5b80630b78f9c014610221578063100af8a614610242578063146a2911146102555780631908351314610289575b5f80fd5b34801561022c575f80fd5b5061024061023b36600461249e565b6106b9565b005b6102406102503660046124be565b6107e1565b348015610260575f80fd5b5061027461026f366004612512565b610967565b60405190151581526020015b60405180910390f35b348015610294575f80fd5b506102bc7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610280565b3480156102d5575f80fd5b506103036102e436600461249e565b5f918252600b6020908152604080842092845291905290205460ff1690565b6040516102809190612550565b34801561031b575f80fd5b5061027461032a366004612512565b5f918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561035f575f80fd5b5061037361036e366004612576565b610993565b60405161028091906125d0565b61024061038e366004612512565b610b07565b34801561039e575f80fd5b50610240610c97565b6102406103b536600461267e565b610d54565b3480156103c5575f80fd5b506102406103d4366004612512565b610ec7565b6102406103e73660046126cc565b61103d565b3480156103f7575f80fd5b50610274610406366004612512565b61125b565b6102406104193660046126cc565b611292565b348015610429575f80fd5b506102bc610438366004612576565b5f9081526008602052604090205490565b348015610454575f80fd5b5061024061147f565b61024061046b36600461249e565b611492565b34801561047b575f80fd5b506102bc60035481565b348015610490575f80fd5b506102406115f1565b3480156104a4575f80fd5b506102746104b3366004612512565b611635565b6102406104c6366004612512565b611640565b3480156104d6575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610280565b610240610509366004612743565b6117a8565b348015610519575f80fd5b506102bc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561054c575f80fd5b5061024061055b366004612791565b611929565b34801561056b575f80fd5b5061027461057a3660046127aa565b6119a1565b34801561058a575f80fd5b50610240610599366004612576565b611a2a565b3480156105a9575f80fd5b506102746105b8366004612576565b611b2a565b6102406105cb366004612512565b611b34565b3480156105db575f80fd5b506004546104e3906001600160a01b031681565b6102bc6105fd3660046127f2565b611cec565b34801561060d575f80fd5b5061062161061c36600461249e565b611eec565b604051610280919061285c565b61024061063c366004612512565b611f97565b34801561064c575f80fd5b506102bc60025481565b348015610661575f80fd5b506005546102bc565b348015610675575f80fd5b506001546001600160a01b03166104e3565b348015610692575f80fd5b506102406106a1366004612791565b612128565b6102406106b436600461286e565b612198565b6106c1612316565b7f000000000000000000000000000000000000000000000000000000000000000082111561073057604051630e2b357b60e31b8152600481018390527f000000000000000000000000000000000000000000000000000000000000000060248201526044015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081111561079a57604051630e2b357b60e31b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006024820152604401610727565b6002829055600381905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1910160405180910390a15050565b5f8381526006602052604090205483906001600160a01b031661081a576040516321df5fa560e11b815260048101829052602401610727565b5f8481526006602052604090205484906001600160a01b0316331480159061085b57505f81815260096020908152604080832033845290915290205460ff16155b1561088257604051639259310160e01b815260048101829052336024820152604401610727565b5f858152600660205260409020548590600160e81b900460ff16156108bd5760405163d52f5e2b60e01b815260048101829052602401610727565b60035434146108ec576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f868152600b602090815260408083208884529091529020805485919060ff191660018360038111156109215761092161253c565b021790555084867f10a7086648593e30ff50a1f9f0023e81d4589bed5055f1a5ef3952242fe07b52866040516109579190612550565b60405180910390a3505050505050565b5f8281526009602090815260408083206001600160a01b038516845290915290205460ff165b92915050565b6040805160c0810182525f808252602080830182905282840182905260608084018390526080840183905260a084015284825260069052919091205482906001600160a01b03166109fa576040516321df5fa560e11b815260048101829052602401610727565b5f83815260066020908152604091829020825160c08101845281546001600160a01b03811682526001600160401b03600160a01b8204169382019390935260ff600160e01b8404811694820194909452600160e81b909204909216151560608201526001820154608082015260028201805491929160a084019190610a7e9061288f565b80601f0160208091040260200160405190810160405280929190818152602001828054610aaa9061288f565b8015610af55780601f10610acc57610100808354040283529160200191610af5565b820191905f5260205f20905b815481529060010190602001808311610ad857829003601f168201915b50505050508152505091505b50919050565b5f8281526006602052604090205482906001600160a01b0316610b40576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b03163314801590610b8157505f81815260096020908152604080832033845290915290205460ff16155b15610ba857604051639259310160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff1615610be35760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414610c12576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f858152600a602090815260408083206001600160a01b038816845290915290205460ff1615610c90575f858152600a602090815260408083206001600160a01b0388168085529252808320805460ff1916905551909187917f71664410856ad4f9b3b31f3ba0fecc3b87b280c68cfd61953cd9829851aec1329190a35b5050505050565b60045460405147916001600160a01b0316905f90829084908381818185875af1925050503d805f8114610ce5576040519150601f19603f3d011682016040523d82523d5f602084013e610cea565b606091505b5050905080610d0c57604051634033e4e360e01b815260040160405180910390fd5b816001600160a01b03167fc0819c13be868895eb93e40eaceb96de976442fa1d404e5c55f14bb65a8c489a84604051610d4791815260200190565b60405180910390a2505050565b5f8481526006602052604090205484906001600160a01b0316610d8d576040516321df5fa560e11b815260048101829052602401610727565b5f8581526006602052604090205485906001600160a01b03163314801590610dce57505f81815260096020908152604080832033845290915290205460ff16155b15610df557604051639259310160e01b815260048101829052336024820152604401610727565b5f868152600660205260409020548690600160e81b900460ff1615610e305760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414610e5f576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f878152600c602090815260408083208984529091529020610e8285878361291e565b5085877f67c3c4289abc73cbd409e04570fad5311d8da780dea8322eb98845401171191b8787604051610eb69291906129ff565b60405180910390a350505050505050565b5f8281526006602052604090205482906001600160a01b0316610f00576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b03163314610f41576040516358a063e160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff1615610f7c5760405163d52f5e2b60e01b815260048101829052602401610727565b6001600160a01b038416610fa35760405163d92e233d60e01b815260040160405180910390fd5b5f85815260066020526040812054600160e01b90046002169003610fdd57604051632830951560e01b815260048101869052602401610727565b5f8581526006602052604080822080546001600160a01b031981166001600160a01b038981169182179093559251911692839189917f680c4ddb8119c2c393d40b0040ce5a008cb67c9af7d3d8dbba0e95485ed253e591a4505050505050565b5f8381526006602052604090205483906001600160a01b0316611076576040516321df5fa560e11b815260048101829052602401610727565b5f8481526006602052604090205484906001600160a01b031633148015906110b757505f81815260096020908152604080832033845290915290205460ff16155b156110de57604051639259310160e01b815260048101829052336024820152604401610727565b5f858152600660205260409020548590600160e81b900460ff16156111195760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414611148576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f5b84811015611252575f86868381811061116557611165612a12565b905060200201602081019061117a9190612791565b90506001600160a01b0381166111a35760405163d92e233d60e01b815260040160405180910390fd5b5f8881526007602090815260408083206001600160a01b038516845290915290205460ff16611249575f8881526007602090815260408083206001600160a01b03851684528252808320805460ff191660011790558a83526008909152812080549161120e83612a3a565b90915550506040516001600160a01b0382169089907ff328ac0f8bcae00933fe87ba0aa2d0d505c1df94bc9c1aa05b8441c28b74032c905f90a35b5060010161114a565b50505050505050565b5f828152600660205260408120546001600160a01b03838116911614801561128b57506001600160a01b03821615155b9392505050565b5f8381526006602052604090205483906001600160a01b03166112cb576040516321df5fa560e11b815260048101829052602401610727565b5f8481526006602052604090205484906001600160a01b0316331480159061130c57505f81815260096020908152604080832033845290915290205460ff16155b1561133357604051639259310160e01b815260048101829052336024820152604401610727565b5f858152600660205260409020548590600160e81b900460ff161561136e5760405163d52f5e2b60e01b815260048101829052602401610727565b600354341461139d576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f5b84811015611252575f8686838181106113ba576113ba612a12565b90506020020160208101906113cf9190612791565b5f8981526007602090815260408083206001600160a01b038516845290915290205490915060ff1615611476575f8881526007602090815260408083206001600160a01b03851684528252808320805460ff191690558a83526008909152812080549161143b83612a52565b90915550506040516001600160a01b0382169089907f1c4c9d2e56d0635d11bc47c997c6909a0d7061f55cbb8f4b27386db37553191c905f90a35b5060010161139f565b611487612316565b6114905f612342565b565b5f8281526006602052604090205482906001600160a01b03166114cb576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b0316331480159061150c57505f81815260096020908152604080832033845290915290205460ff16155b1561153357604051639259310160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff161561156e5760405163d52f5e2b60e01b815260048101829052602401610727565b600354341461159d576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f858152600c6020908152604080832087845290915281206115be91612454565b604051849086907f1ad954507e7d266546fc29e88954deaadb6fcabc1f66a25a99f7fcc6d3a92906905f90a35050505050565b60015433906001600160a01b031681146116295760405163118cdaa760e01b81526001600160a01b0382166004820152602401610727565b61163281612342565b50565b5f61128b838361235b565b5f8281526006602052604090205482906001600160a01b0316611679576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b031633146116ba576040516358a063e160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff16156116f55760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414611724576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f8581526009602090815260408083206001600160a01b038816845290915290205460ff1615610c90575f8581526009602090815260408083206001600160a01b0388168085529252808320805460ff1916905551909187917f8b41a2498e3f784d58ed746da2a7a2f699504cdd0ee2f9982dc7256e006e7ee59190a35050505050565b5f8481526006602052604090205484906001600160a01b03166117e1576040516321df5fa560e11b815260048101829052602401610727565b5f8581526006602052604090205485906001600160a01b0316331480159061182257505f81815260096020908152604080832033845290915290205460ff16155b1561184957604051639259310160e01b815260048101829052336024820152604401610727565b5f868152600660205260409020548690600160e81b900460ff16156118845760405163d52f5e2b60e01b815260048101829052602401610727565b60035434146118b3576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f8781526006602052604090206002016118ce86888361291e565b505f87815260066020526040908190206001018590555187907f466fffaf826184a6fa083dfe541a3796e003c6cff36453fd6c76200aad503d0a9061191890899089908990612a67565b60405180910390a250505050505050565b611931612316565b6001600160a01b0381166119585760405163d92e233d60e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f905f90a250565b5f6119ab846123ab565b6119b657505f61128b565b5f848152600b6020908152604080832085845290915290205460ff1660028160038111156119e6576119e661253c565b036119f557600191505061128b565b6003816003811115611a0957611a0961253c565b03611a17575f91505061128b565b611a21858561235b565b95945050505050565b5f8181526006602052604090205481906001600160a01b0316611a63576040516321df5fa560e11b815260048101829052602401610727565b5f8281526006602052604090205482906001600160a01b03163314611aa4576040516358a063e160e01b815260048101829052336024820152604401610727565b5f838152600660205260409020548390600160e81b900460ff1615611adf5760405163d52f5e2b60e01b815260048101829052602401610727565b5f84815260066020526040808220805460ff60e81b1916600160e81b1790555185917f798185fee0db4185c24afc6aacc104f9216f1dc5b6bdeffee2bce32e712a6cbc91a250505050565b5f61098d826123ab565b5f8281526006602052604090205482906001600160a01b0316611b6d576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b03163314801590611bae57505f81815260096020908152604080832033845290915290205460ff16155b15611bd557604051639259310160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff1615611c105760405163d52f5e2b60e01b815260048101829052602401610727565b6003543414611c3f576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b6001600160a01b038416611c665760405163d92e233d60e01b815260040160405180910390fd5b5f858152600a602090815260408083206001600160a01b038816845290915290205460ff16610c90575f858152600a602090815260408083206001600160a01b0388168085529252808320805460ff1916600117905551909187917f30bc7e762c488c6d715dbda0e6220e2e84fe406a781e9a4a60af2ab3c1e3215d9190a35050505050565b5f6002543414611d1c576002546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b60055f8154611d2a90612a3a565b91905081905590506040518060c00160405280336001600160a01b03168152602001866001600160401b031681526020018760ff1681526020015f1515815260200183815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250508381526006602090815260409182902084518154928601519386015160608701511515600160e81b0260ff60e81b1960ff909216600160e01b029190911661ffff60e01b196001600160401b03909616600160a01b026001600160e01b03199095166001600160a01b03909316929092179390931793909316929092171781556080830151600182015560a08301519091506002820190611e4a9082612a8a565b50506040805160ff891681526001600160401b038816602082015233925083917f1b7c9de5d5b024974e150427e474fbcacba6d3b8240280e3aa3dc35ead3497cd910160405180910390a382151580611ea257508115155b15611a2157807f466fffaf826184a6fa083dfe541a3796e003c6cff36453fd6c76200aad503d0a858585604051611edb93929190612a67565b60405180910390a295945050505050565b5f828152600c602090815260408083208484529091529020805460609190611f139061288f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f3f9061288f565b8015611f8a5780601f10611f6157610100808354040283529160200191611f8a565b820191905f5260205f20905b815481529060010190602001808311611f6d57829003601f168201915b5050505050905092915050565b5f8281526006602052604090205482906001600160a01b0316611fd0576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b03163314612011576040516358a063e160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff161561204c5760405163d52f5e2b60e01b815260048101829052602401610727565b600354341461207b576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b6001600160a01b0384166120a25760405163d92e233d60e01b815260040160405180910390fd5b5f8581526009602090815260408083206001600160a01b038816845290915290205460ff16610c90575f8581526009602090815260408083206001600160a01b0388168085529252808320805460ff1916600117905551909187917f5b9611f54db67f0ad14ca6d531a6b00d0c68defcd0843350fb378ee2aac1a5cd9190a35050505050565b612130612316565b600180546001600160a01b0383166001600160a01b031990911681179091556121605f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f8281526006602052604090205482906001600160a01b03166121d1576040516321df5fa560e11b815260048101829052602401610727565b5f8381526006602052604090205483906001600160a01b0316331480159061221257505f81815260096020908152604080832033845290915290205460ff16155b1561223957604051639259310160e01b815260048101829052336024820152604401610727565b5f848152600660205260409020548490600160e81b900460ff16156122745760405163d52f5e2b60e01b815260048101829052602401610727565b60035434146122a3576003546040516323b18f5f60e01b81526004810191909152346024820152604401610727565b5f85815260066020908152604091829020805467ffffffffffffffff60a01b1916600160a01b6001600160401b03891690810291909117909155915191825286917f02b68e611d2233ade081320b82f20a4b50d8c946124cb29402844b4ccdade7fb910160405180910390a25050505050565b5f546001600160a01b031633146114905760405163118cdaa760e01b8152336004820152602401610727565b600180546001600160a01b031916905561163281612405565b5f82815260066020526040812054600160e01b9004600116156123805750600161098d565b505f9182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f81815260066020526040812080546001600160a01b03166123cf57505f92915050565b8054600160a01b90046001600160401b0316158061128b5750805442600160a01b9091046001600160401b031610159392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5080546124609061288f565b5f825580601f1061246f575050565b601f0160209004905f5260205f209081019061163291905b8082111561249a575f8155600101612487565b5090565b5f80604083850312156124af575f80fd5b50508035926020909101359150565b5f805f606084860312156124d0575f80fd5b83359250602084013591506040840135600481106124ec575f80fd5b809150509250925092565b80356001600160a01b038116811461250d575f80fd5b919050565b5f8060408385031215612523575f80fd5b82359150612533602084016124f7565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b602081016004831061257057634e487b7160e01b5f52602160045260245ffd5b91905290565b5f60208284031215612586575f80fd5b5035919050565b5f81518084525f5b818110156125b157602081850181015186830182015201612595565b505f602082860101526020601f19601f83011685010191505092915050565b6020815260018060a01b0382511660208201526001600160401b03602083015116604082015260ff6040830151166060820152606082015115156080820152608082015160a08201525f60a083015160c08084015261263260e084018261258d565b949350505050565b5f8083601f84011261264a575f80fd5b5081356001600160401b03811115612660575f80fd5b602083019150836020828501011115612677575f80fd5b9250929050565b5f805f8060608587031215612691575f80fd5b843593506020850135925060408501356001600160401b038111156126b4575f80fd5b6126c08782880161263a565b95989497509550505050565b5f805f604084860312156126de575f80fd5b8335925060208401356001600160401b03808211156126fb575f80fd5b818601915086601f83011261270e575f80fd5b81358181111561271c575f80fd5b8760208260051b8501011115612730575f80fd5b6020830194508093505050509250925092565b5f805f8060608587031215612756575f80fd5b8435935060208501356001600160401b03811115612772575f80fd5b61277e8782880161263a565b9598909750949560400135949350505050565b5f602082840312156127a1575f80fd5b61128b826124f7565b5f805f606084860312156127bc575f80fd5b833592506127cc602085016124f7565b9150604084013590509250925092565b80356001600160401b038116811461250d575f80fd5b5f805f805f60808688031215612806575f80fd5b853560ff81168114612816575f80fd5b9450612824602087016127dc565b935060408601356001600160401b0381111561283e575f80fd5b61284a8882890161263a565b96999598509660600135949350505050565b602081525f61128b602083018461258d565b5f806040838503121561287f575f80fd5b82359150612533602084016127dc565b600181811c908216806128a357607f821691505b602082108103610b0157634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b601f82111561291957805f5260205f20601f840160051c810160208510156128fa5750805b601f840160051c820191505b81811015610c90575f8155600101612906565b505050565b6001600160401b03831115612935576129356128c1565b61294983612943835461288f565b836128d5565b5f601f84116001811461297a575f85156129635750838201355b5f19600387901b1c1916600186901b178355610c90565b5f83815260208120601f198716915b828110156129a95786850135825560209485019460019092019101612989565b50868210156129c5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6126326020830184866129d7565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201612a4b57612a4b612a26565b5060010190565b5f81612a6057612a60612a26565b505f190190565b604081525f612a7a6040830185876129d7565b9050826020830152949350505050565b81516001600160401b03811115612aa357612aa36128c1565b612ab781612ab1845461288f565b846128d5565b602080601f831160018114612aea575f8415612ad35750858301515b5f19600386901b1c1916600185901b178555612b41565b5f85815260208120601f198616915b82811015612b1857888601518255948401946001909101908401612af9565b5085821015612b3557878501515f19600388901b60f8161c191681555b505060018460011b0185555b50505050505056fea26469706673582212208044d5d75eb029fce5973cdb3fea98dfab9fa78d80d253988330aeba829210c864736f6c63430008180033";
|
|
4
|
+
export const verifierBytecode = "0x61018060405234801562000011575f80fd5b506040516200119538038062001195833981016040819052620000349162000205565b6040805180820182526012815271536d617274506f6c696379204772616e747360701b602080830191909152825180840190935260018352603160f81b908301529062000082825f6200018b565b61012052620000938160016200018b565b61014052815160208084019190912060e052815190820120610100524660a0526200012060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b038116620001785760405162461bcd60e51b815260206004820152601060248201526f7265676973747279206973207a65726f60801b60448201526064015b60405180910390fd5b6001600160a01b03166101605262000410565b5f602083511015620001aa57620001a283620001c3565b9050620001bd565b81620001b78482620002d2565b5060ff90505b92915050565b5f80829050601f81511115620001f0578260405163305a27a960e01b81526004016200016f91906200039e565b8051620001fd82620003ec565b179392505050565b5f6020828403121562000216575f80fd5b81516001600160a01b03811681146200022d575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200025d57607f821691505b6020821081036200027c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002cd57805f5260205f20601f840160051c81016020851015620002a95750805b601f840160051c820191505b81811015620002ca575f8155600101620002b5565b50505b505050565b81516001600160401b03811115620002ee57620002ee62000234565b6200030681620002ff845462000248565b8462000282565b602080601f8311600181146200033c575f8415620003245750858301515b5f19600386901b1c1916600185901b17855562000396565b5f85815260208120601f198616915b828110156200036c578886015182559484019460019091019084016200034b565b50858210156200038a57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602080835283518060208501525f5b81811015620003cc57858101830151858201604001528201620003ae565b505f604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200027c575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610d1c620004795f395f8181608f0152818161053501526105c501525f61044701525f61041601525f61080501525f6107dd01525f61073801525f61076201525f61078c0152610d1c5ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c806353299c60146100645780637b1039991461008a57806384b0196e146100c9578063cab7e8eb146100e4578063e40fa9781461012c578063ead34ff61461013f575b5f80fd5b610077610072366004610a8a565b610154565b6040519081526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610081565b6100d1610251565b6040516100819796959493929190610ae8565b61011c6100f2366004610b9a565b6001600160a01b03919091165f908152600260209081526040808320938352929052205460ff1690565b6040519015158152602001610081565b61011c61013a366004610bc2565b610293565b61015261014d366004610bc2565b6102b5565b005b5f61024b7f56b563a1dfbab1d5ce57183c2e0c8177696f5b9115acde44b0647b838f489c15833561018b6040860160208701610c41565b60408601356101a06080880160608901610c5a565b6101b060a0890160808a01610c5a565b60a08901356101c560e08b0160c08c01610c41565b6101d66101008c0160e08d01610c41565b60408051602081019a909a528901979097526001600160a01b039586166060890152608088019490945267ffffffffffffffff92831660a0880152911660c086015260e085015281166101008401521661012082015261014001604051602081830303815290604052805190602001206103e3565b92915050565b5f6060805f805f606061026261040f565b61026a610440565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f806102a085858561046d565b6001600160e01b0319161490505b9392505050565b6102c6610100840160e08501610c41565b6001600160a01b0316336001600160a01b0316146102f757604051631d49981d60e01b815260040160405180910390fd5b5f61030384848461046d565b90506001600160e01b031981161561031d57805f5260045ffd5b600160025f61033260e0880160c08901610c41565b6001600160a01b0316815260208082019290925260409081015f90812060a089013582528352819020805460ff19169315159390931790925590850180359161037d91908701610c41565b6001600160a01b031685357f36df3d29c82055fd30ca70317c7db95547d011ffb2252122190214d8437e57646103b960e0890160c08a01610c41565b604080516001600160a01b03909216825260a08a013560208301520160405180910390a450505050565b5f61024b6103ef61072c565b8360405161190160f01b8152600281019290925260228201526042902090565b606061043b7f00000000000000000000000000000000000000000000000000000000000000005f610855565b905090565b606061043b7f00000000000000000000000000000000000000000000000000000000000000006001610855565b5f61047e6080850160608601610c5a565b67ffffffffffffffff1642101561049d57506303ca3ee160e21b6102ae565b6104ad60a0850160808601610c5a565b67ffffffffffffffff164211156104cc575063075ff6cf60e11b6102ae565b60025f6104df60e0870160c08801610c41565b6001600160a01b0316815260208082019290925260409081015f90812060a0880135825290925290205460ff161561051f57506348929ed960e01b6102ae565b604051635ec57d2360e11b8152843560048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd8afa4690602401602060405180830381865afa158015610582573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a69190610c81565b6105bb5750600162d89f7d60e01b03196102ae565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663209efe3e85356105fc60e0880160c08901610c41565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015610644573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106689190610c81565b61067a5750633fc8312160e01b6102ae565b5f806106c361068887610154565b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506108fe92505050565b5090925090505f8160038111156106dc576106dc610ca0565b14158061070a57506106f460e0870160c08801610c41565b6001600160a01b0316826001600160a01b031614155b15610721575063731bd8ad60e11b91506102ae9050565b505f95945050505050565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561078457507f000000000000000000000000000000000000000000000000000000000000000046145b156107ae57507f000000000000000000000000000000000000000000000000000000000000000090565b61043b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b606060ff831461086f5761086883610947565b905061024b565b81805461087b90610cb4565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790610cb4565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b5050505050905061024b565b5f805f8351604103610935576020840151604085015160608601515f1a61092788828585610984565b955095509550505050610940565b505081515f91506002905b9250925092565b60605f61095383610a4c565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156109bd57505f91506003905082610a42565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610a0e573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610a3957505f925060019150829050610a42565b92505f91508190505b9450945094915050565b5f60ff8216601f81111561024b57604051632cd44ac360e21b815260040160405180910390fd5b5f6101008284031215610a84575f80fd5b50919050565b5f6101008284031215610a9b575f80fd5b6102ae8383610a73565b5f81518084525f5b81811015610ac957602081850181015186830182015201610aad565b505f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b881681525f602060e06020840152610b0860e084018a610aa5565b8381036040850152610b1a818a610aa5565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610b6d57835183529284019291840191600101610b51565b50909c9b505050505050505050505050565b80356001600160a01b0381168114610b95575f80fd5b919050565b5f8060408385031215610bab575f80fd5b610bb483610b7f565b946020939093013593505050565b5f805f6101208486031215610bd5575f80fd5b610bdf8585610a73565b925061010084013567ffffffffffffffff80821115610bfc575f80fd5b818601915086601f830112610c0f575f80fd5b813581811115610c1d575f80fd5b876020828501011115610c2e575f80fd5b6020830194508093505050509250925092565b5f60208284031215610c51575f80fd5b6102ae82610b7f565b5f60208284031215610c6a575f80fd5b813567ffffffffffffffff811681146102ae575f80fd5b5f60208284031215610c91575f80fd5b815180151581146102ae575f80fd5b634e487b7160e01b5f52602160045260245ffd5b600181811c90821680610cc857607f821691505b602082108103610a8457634e487b7160e01b5f52602260045260245ffdfea2646970667358221220bf6495f8dbf2f7cae144d377ab6f2c0511fa4ac585885fad637e872781dd457364736f6c63430008180033";
|
|
5
|
+
//# sourceMappingURL=deployArtifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployArtifacts.js","sourceRoot":"","sources":["../src/deployArtifacts.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,s5tBAA+5tB,CAAC;AACh8tB,MAAM,CAAC,MAAM,gBAAgB,GAAG,8yRAAuzR,CAAC"}
|
package/dist/grants.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type Address, type Hex } from "viem";
|
|
2
|
+
import type { Config } from "./config.js";
|
|
3
|
+
/** Mirrors IGrantVerifier.Grant; field order matters for EIP-712. */
|
|
4
|
+
export declare const grantTypes: {
|
|
5
|
+
readonly Grant: readonly [{
|
|
6
|
+
readonly name: "policyId";
|
|
7
|
+
readonly type: "uint256";
|
|
8
|
+
}, {
|
|
9
|
+
readonly name: "subject";
|
|
10
|
+
readonly type: "address";
|
|
11
|
+
}, {
|
|
12
|
+
readonly name: "action";
|
|
13
|
+
readonly type: "bytes32";
|
|
14
|
+
}, {
|
|
15
|
+
readonly name: "issuedAt";
|
|
16
|
+
readonly type: "uint64";
|
|
17
|
+
}, {
|
|
18
|
+
readonly name: "expiresAt";
|
|
19
|
+
readonly type: "uint64";
|
|
20
|
+
}, {
|
|
21
|
+
readonly name: "nonce";
|
|
22
|
+
readonly type: "uint256";
|
|
23
|
+
}, {
|
|
24
|
+
readonly name: "issuer";
|
|
25
|
+
readonly type: "address";
|
|
26
|
+
}, {
|
|
27
|
+
readonly name: "target";
|
|
28
|
+
readonly type: "address";
|
|
29
|
+
}];
|
|
30
|
+
};
|
|
31
|
+
export interface IssuedGrant {
|
|
32
|
+
grant: {
|
|
33
|
+
policyId: string;
|
|
34
|
+
subject: Address;
|
|
35
|
+
action: Hex;
|
|
36
|
+
issuedAt: number;
|
|
37
|
+
expiresAt: number;
|
|
38
|
+
nonce: string;
|
|
39
|
+
issuer: Address;
|
|
40
|
+
target: Address;
|
|
41
|
+
};
|
|
42
|
+
signature: Hex;
|
|
43
|
+
/** The grant as a Solidity tuple literal — paste directly into
|
|
44
|
+
* `cast send <target> "fn((uint256,address,bytes32,uint64,uint64,uint256,address,address),bytes)" <tuple> <signature>` */
|
|
45
|
+
castTuple: string;
|
|
46
|
+
requestedTtlSeconds: number;
|
|
47
|
+
grantedTtlSeconds: number;
|
|
48
|
+
ttlClamped: boolean;
|
|
49
|
+
usage: string;
|
|
50
|
+
}
|
|
51
|
+
export declare class GrantIssuer {
|
|
52
|
+
private readonly config;
|
|
53
|
+
private readonly account;
|
|
54
|
+
constructor(config: Config);
|
|
55
|
+
get address(): Address;
|
|
56
|
+
/**
|
|
57
|
+
* Sign a short-lived single-use grant. Random 256-bit nonces make collisions
|
|
58
|
+
* within one issuer's namespace negligible without any state.
|
|
59
|
+
* @param target the contract that will consume the grant (the integrator/gate).
|
|
60
|
+
* Only this address may call consumeGrant — prevents mempool griefing.
|
|
61
|
+
*/
|
|
62
|
+
issue(policyId: bigint, subject: Address, action: string, ttlSeconds: number, target: Address): Promise<IssuedGrant>;
|
|
63
|
+
}
|
package/dist/grants.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { bytesToBigInt } from "viem";
|
|
2
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
3
|
+
import { toActionId } from "./actions.js";
|
|
4
|
+
/** Mirrors IGrantVerifier.Grant; field order matters for EIP-712. */
|
|
5
|
+
export const grantTypes = {
|
|
6
|
+
Grant: [
|
|
7
|
+
{ name: "policyId", type: "uint256" },
|
|
8
|
+
{ name: "subject", type: "address" },
|
|
9
|
+
{ name: "action", type: "bytes32" },
|
|
10
|
+
{ name: "issuedAt", type: "uint64" },
|
|
11
|
+
{ name: "expiresAt", type: "uint64" },
|
|
12
|
+
{ name: "nonce", type: "uint256" },
|
|
13
|
+
{ name: "issuer", type: "address" },
|
|
14
|
+
{ name: "target", type: "address" },
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
export class GrantIssuer {
|
|
18
|
+
config;
|
|
19
|
+
account;
|
|
20
|
+
constructor(config) {
|
|
21
|
+
this.config = config;
|
|
22
|
+
if (!config.issuerKey)
|
|
23
|
+
throw new Error("grant issuance disabled: SMARTPOLICY_ISSUER_KEY not configured");
|
|
24
|
+
this.account = privateKeyToAccount(config.issuerKey);
|
|
25
|
+
}
|
|
26
|
+
get address() {
|
|
27
|
+
return this.account.address;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Sign a short-lived single-use grant. Random 256-bit nonces make collisions
|
|
31
|
+
* within one issuer's namespace negligible without any state.
|
|
32
|
+
* @param target the contract that will consume the grant (the integrator/gate).
|
|
33
|
+
* Only this address may call consumeGrant — prevents mempool griefing.
|
|
34
|
+
*/
|
|
35
|
+
async issue(policyId, subject, action, ttlSeconds, target) {
|
|
36
|
+
const ttl = Math.min(Math.max(1, ttlSeconds), this.config.maxGrantTtl);
|
|
37
|
+
const now = Math.floor(Date.now() / 1000);
|
|
38
|
+
// Backdate issuedAt by a small buffer so a just-issued grant is immediately
|
|
39
|
+
// valid on chains whose latest block.timestamp lags real time (e.g. ~12s
|
|
40
|
+
// blocks on Sepolia) — without it, on-chain `block.timestamp < issuedAt`
|
|
41
|
+
// transiently reverts GrantNotYetValid right after issuance.
|
|
42
|
+
const SKEW_BUFFER = 60;
|
|
43
|
+
const issuedAt = now - SKEW_BUFFER;
|
|
44
|
+
const nonce = bytesToBigInt(crypto.getRandomValues(new Uint8Array(32)));
|
|
45
|
+
const grant = {
|
|
46
|
+
policyId,
|
|
47
|
+
subject,
|
|
48
|
+
action: toActionId(action),
|
|
49
|
+
issuedAt: BigInt(issuedAt),
|
|
50
|
+
expiresAt: BigInt(now + ttl),
|
|
51
|
+
nonce,
|
|
52
|
+
issuer: this.account.address,
|
|
53
|
+
target,
|
|
54
|
+
};
|
|
55
|
+
const signature = await this.account.signTypedData({
|
|
56
|
+
domain: {
|
|
57
|
+
name: "SmartPolicy Grants",
|
|
58
|
+
version: "1",
|
|
59
|
+
chainId: this.config.chainId,
|
|
60
|
+
verifyingContract: this.config.verifier,
|
|
61
|
+
},
|
|
62
|
+
types: grantTypes,
|
|
63
|
+
primaryType: "Grant",
|
|
64
|
+
message: grant,
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
grant: {
|
|
68
|
+
policyId: grant.policyId.toString(),
|
|
69
|
+
subject: grant.subject,
|
|
70
|
+
action: grant.action,
|
|
71
|
+
issuedAt,
|
|
72
|
+
expiresAt: now + ttl,
|
|
73
|
+
nonce: nonce.toString(),
|
|
74
|
+
issuer: grant.issuer,
|
|
75
|
+
target,
|
|
76
|
+
},
|
|
77
|
+
signature,
|
|
78
|
+
castTuple: `(${grant.policyId},${grant.subject},${grant.action},${issuedAt},${now + ttl},${nonce},${grant.issuer},${target})`,
|
|
79
|
+
requestedTtlSeconds: ttlSeconds,
|
|
80
|
+
grantedTtlSeconds: ttl,
|
|
81
|
+
ttlClamped: ttl !== ttlSeconds,
|
|
82
|
+
usage: "Pass (grant, signature) to the `target` contract's grant-gated function " +
|
|
83
|
+
"(PolicyGate.withGrant). Only `target` may consume this grant (front-run " +
|
|
84
|
+
"protection). Single-use: the nonce is consumed on first successful on-chain use.",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=grants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,MAAM,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qEAAqE;AACrE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE;QACL,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;QACrC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QACnC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE;QACpC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;QACrC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;KACpC;CACO,CAAC;AAuBX,MAAM,OAAO,WAAW;IAGO;IAFZ,OAAO,CAAC;IAEzB,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACzC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACzG,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CACT,QAAgB,EAChB,OAAgB,EAChB,MAAc,EACd,UAAkB,EAClB,MAAe;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,4EAA4E;QAC5E,yEAAyE;QACzE,yEAAyE;QACzE,6DAA6D;QAC7D,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,GAAG,WAAW,CAAC;QACnC,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAExE,MAAM,KAAK,GAAG;YACZ,QAAQ;YACR,OAAO;YACP,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;YAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC1B,SAAS,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;YAC5B,KAAK;YACL,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC5B,MAAM;SACP,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YACjD,MAAM,EAAE;gBACN,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,GAAG;gBACZ,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;aACxC;YACD,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,OAAO;YACL,KAAK,EAAE;gBACL,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBACnC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ;gBACR,SAAS,EAAE,GAAG,GAAG,GAAG;gBACpB,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;gBACvB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM;aACP;YACD,SAAS;YACT,SAAS,EAAE,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,GAAG;YAC7H,mBAAmB,EAAE,UAAU;YAC/B,iBAAiB,EAAE,GAAG;YACtB,UAAU,EAAE,GAAG,KAAK,UAAU;YAC9B,KAAK,EACH,0EAA0E;gBAC1E,0EAA0E;gBAC1E,kFAAkF;SACrF,CAAC;IACJ,CAAC;CACF"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function serve(): Promise<void>;
|