@lodestar/prover 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +135 -0
- package/lib/cli/applyPreset.d.ts +2 -0
- package/lib/cli/applyPreset.js +72 -0
- package/lib/cli/applyPreset.js.map +1 -0
- package/lib/cli/cli.d.ts +8 -0
- package/lib/cli/cli.js +50 -0
- package/lib/cli/cli.js.map +1 -0
- package/lib/cli/cmds/index.d.ts +4 -0
- package/lib/cli/cmds/index.js +3 -0
- package/lib/cli/cmds/index.js.map +1 -0
- package/lib/cli/cmds/start/handler.d.ts +7 -0
- package/lib/cli/cmds/start/handler.js +30 -0
- package/lib/cli/cmds/start/handler.js.map +1 -0
- package/lib/cli/cmds/start/index.d.ts +5 -0
- package/lib/cli/cmds/start/index.js +15 -0
- package/lib/cli/cmds/start/index.js.map +1 -0
- package/lib/cli/cmds/start/options.d.ts +27 -0
- package/lib/cli/cmds/start/options.js +67 -0
- package/lib/cli/cmds/start/options.js.map +1 -0
- package/lib/cli/index.d.ts +4 -0
- package/lib/cli/index.js +25 -0
- package/lib/cli/index.js.map +1 -0
- package/lib/cli/options.d.ts +22 -0
- package/lib/cli/options.js +50 -0
- package/lib/cli/options.js.map +1 -0
- package/lib/constants.d.ts +6 -0
- package/lib/constants.js +7 -0
- package/lib/constants.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -0
- package/lib/index.web.d.ts +3 -0
- package/lib/index.web.js +3 -0
- package/lib/index.web.js.map +1 -0
- package/lib/interfaces.d.ts +69 -0
- package/lib/interfaces.js +6 -0
- package/lib/interfaces.js.map +1 -0
- package/lib/proof_provider/ordered_map.d.ts +8 -0
- package/lib/proof_provider/ordered_map.js +24 -0
- package/lib/proof_provider/ordered_map.js.map +1 -0
- package/lib/proof_provider/payload_store.d.ts +25 -0
- package/lib/proof_provider/payload_store.js +154 -0
- package/lib/proof_provider/payload_store.js.map +1 -0
- package/lib/proof_provider/proof_provider.d.ts +36 -0
- package/lib/proof_provider/proof_provider.js +171 -0
- package/lib/proof_provider/proof_provider.js.map +1 -0
- package/lib/types.d.ts +136 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/assertion.d.ts +10 -0
- package/lib/utils/assertion.js +34 -0
- package/lib/utils/assertion.js.map +1 -0
- package/lib/utils/command.d.ts +22 -0
- package/lib/utils/command.js +27 -0
- package/lib/utils/command.js.map +1 -0
- package/lib/utils/consensus.d.ts +19 -0
- package/lib/utils/consensus.js +74 -0
- package/lib/utils/consensus.js.map +1 -0
- package/lib/utils/conversion.d.ts +47 -0
- package/lib/utils/conversion.js +94 -0
- package/lib/utils/conversion.js.map +1 -0
- package/lib/utils/errors.d.ts +6 -0
- package/lib/utils/errors.js +6 -0
- package/lib/utils/errors.js.map +1 -0
- package/lib/utils/evm.d.ts +44 -0
- package/lib/utils/evm.js +193 -0
- package/lib/utils/evm.js.map +1 -0
- package/lib/utils/execution.d.ts +12 -0
- package/lib/utils/execution.js +53 -0
- package/lib/utils/execution.js.map +1 -0
- package/lib/utils/file.d.ts +8 -0
- package/lib/utils/file.js +50 -0
- package/lib/utils/file.js.map +1 -0
- package/lib/utils/gitData/gitDataPath.d.ts +17 -0
- package/lib/utils/gitData/gitDataPath.js +37 -0
- package/lib/utils/gitData/gitDataPath.js.map +1 -0
- package/lib/utils/gitData/index.d.ts +6 -0
- package/lib/utils/gitData/index.js +68 -0
- package/lib/utils/gitData/index.js.map +1 -0
- package/lib/utils/gitData/writeGitData.d.ts +3 -0
- package/lib/utils/gitData/writeGitData.js +8 -0
- package/lib/utils/gitData/writeGitData.js.map +1 -0
- package/lib/utils/json_rpc.d.ts +17 -0
- package/lib/utils/json_rpc.js +115 -0
- package/lib/utils/json_rpc.js.map +1 -0
- package/lib/utils/logger.d.ts +4 -0
- package/lib/utils/logger.js +12 -0
- package/lib/utils/logger.js.map +1 -0
- package/lib/utils/process.d.ts +20 -0
- package/lib/utils/process.js +75 -0
- package/lib/utils/process.js.map +1 -0
- package/lib/utils/req_resp.d.ts +5 -0
- package/lib/utils/req_resp.js +33 -0
- package/lib/utils/req_resp.js.map +1 -0
- package/lib/utils/rpc.d.ts +26 -0
- package/lib/utils/rpc.js +55 -0
- package/lib/utils/rpc.js.map +1 -0
- package/lib/utils/validation.d.ts +30 -0
- package/lib/utils/validation.js +94 -0
- package/lib/utils/validation.js.map +1 -0
- package/lib/utils/verification.d.ts +34 -0
- package/lib/utils/verification.js +62 -0
- package/lib/utils/verification.js.map +1 -0
- package/lib/utils/version.d.ts +12 -0
- package/lib/utils/version.js +59 -0
- package/lib/utils/version.js.map +1 -0
- package/lib/verified_requests/eth_call.d.ts +4 -0
- package/lib/verified_requests/eth_call.js +33 -0
- package/lib/verified_requests/eth_call.js.map +1 -0
- package/lib/verified_requests/eth_estimateGas.d.ts +4 -0
- package/lib/verified_requests/eth_estimateGas.js +33 -0
- package/lib/verified_requests/eth_estimateGas.js.map +1 -0
- package/lib/verified_requests/eth_getBalance.d.ts +3 -0
- package/lib/verified_requests/eth_getBalance.js +13 -0
- package/lib/verified_requests/eth_getBalance.js.map +1 -0
- package/lib/verified_requests/eth_getBlockByHash.d.ts +4 -0
- package/lib/verified_requests/eth_getBlockByHash.js +12 -0
- package/lib/verified_requests/eth_getBlockByHash.js.map +1 -0
- package/lib/verified_requests/eth_getBlockByNumber.d.ts +7 -0
- package/lib/verified_requests/eth_getBlockByNumber.js +12 -0
- package/lib/verified_requests/eth_getBlockByNumber.js.map +1 -0
- package/lib/verified_requests/eth_getCode.d.ts +3 -0
- package/lib/verified_requests/eth_getCode.js +32 -0
- package/lib/verified_requests/eth_getCode.js.map +1 -0
- package/lib/verified_requests/eth_getTransactionCount.d.ts +6 -0
- package/lib/verified_requests/eth_getTransactionCount.js +13 -0
- package/lib/verified_requests/eth_getTransactionCount.js.map +1 -0
- package/lib/web3_provider.d.ts +14 -0
- package/lib/web3_provider.js +138 -0
- package/lib/web3_provider.js.map +1 -0
- package/lib/web3_proxy.d.ts +13 -0
- package/lib/web3_proxy.js +136 -0
- package/lib/web3_proxy.js.map +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Logger } from "@lodestar/utils";
|
|
2
|
+
import { ProofProvider } from "../proof_provider/proof_provider.js";
|
|
3
|
+
import { ELBlock, ELProof, HexString, JsonRpcRequest } from "../types.js";
|
|
4
|
+
import { ELRpc } from "./rpc.js";
|
|
5
|
+
type VerificationResult<T> = {
|
|
6
|
+
data: T;
|
|
7
|
+
valid: true;
|
|
8
|
+
} | {
|
|
9
|
+
valid: false;
|
|
10
|
+
data?: undefined;
|
|
11
|
+
};
|
|
12
|
+
export declare function verifyAccount({ address, proofProvider, logger, rpc, block, }: {
|
|
13
|
+
address: HexString;
|
|
14
|
+
rpc: ELRpc;
|
|
15
|
+
proofProvider: ProofProvider;
|
|
16
|
+
logger: Logger;
|
|
17
|
+
block?: number | string;
|
|
18
|
+
}): Promise<VerificationResult<ELProof>>;
|
|
19
|
+
export declare function verifyCode({ address, proofProvider, logger, rpc, codeHash, block, }: {
|
|
20
|
+
address: HexString;
|
|
21
|
+
rpc: ELRpc;
|
|
22
|
+
proofProvider: ProofProvider;
|
|
23
|
+
logger: Logger;
|
|
24
|
+
codeHash: HexString;
|
|
25
|
+
block?: number | string;
|
|
26
|
+
}): Promise<VerificationResult<string>>;
|
|
27
|
+
export declare function verifyBlock({ payload, proofProvider, logger, rpc, }: {
|
|
28
|
+
payload: JsonRpcRequest<[block: string | number, hydrated: boolean]>;
|
|
29
|
+
rpc: ELRpc;
|
|
30
|
+
proofProvider: ProofProvider;
|
|
31
|
+
logger: Logger;
|
|
32
|
+
}): Promise<VerificationResult<ELBlock>>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { bufferToHex } from "./conversion.js";
|
|
2
|
+
import { getELBlock, getELCode, getELProof } from "./execution.js";
|
|
3
|
+
import { isValidAccount, isValidBlock, isValidCodeHash, isValidStorageKeys } from "./validation.js";
|
|
4
|
+
export async function verifyAccount({ address, proofProvider, logger, rpc, block, }) {
|
|
5
|
+
try {
|
|
6
|
+
const executionPayload = await proofProvider.getExecutionPayload(block !== null && block !== void 0 ? block : "latest");
|
|
7
|
+
const proof = await getELProof(rpc, [address, [], bufferToHex(executionPayload.blockHash)]);
|
|
8
|
+
const validAccount = await isValidAccount({
|
|
9
|
+
address: address,
|
|
10
|
+
stateRoot: executionPayload.stateRoot,
|
|
11
|
+
proof,
|
|
12
|
+
logger,
|
|
13
|
+
});
|
|
14
|
+
// If account is invalid don't check the storage
|
|
15
|
+
const validStorage = validAccount && (await isValidStorageKeys({ storageKeys: [], proof, logger }));
|
|
16
|
+
if (validAccount && validStorage) {
|
|
17
|
+
return { data: proof, valid: true };
|
|
18
|
+
}
|
|
19
|
+
return { valid: false };
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
logger.error("Error while verifying account", { address }, err);
|
|
23
|
+
return { valid: false };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export async function verifyCode({ address, proofProvider, logger, rpc, codeHash, block, }) {
|
|
27
|
+
try {
|
|
28
|
+
const executionPayload = await proofProvider.getExecutionPayload(block !== null && block !== void 0 ? block : "latest");
|
|
29
|
+
const code = await getELCode(rpc, [address, bufferToHex(executionPayload.blockHash)]);
|
|
30
|
+
if (await isValidCodeHash({ codeHash, codeResponse: code, logger })) {
|
|
31
|
+
return { data: code, valid: true };
|
|
32
|
+
}
|
|
33
|
+
return { valid: false };
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
logger.error("Error while verifying code", { address }, err);
|
|
37
|
+
return { valid: false };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export async function verifyBlock({ payload, proofProvider, logger, rpc, }) {
|
|
41
|
+
try {
|
|
42
|
+
const executionPayload = await proofProvider.getExecutionPayload(payload.params[0]);
|
|
43
|
+
const block = await getELBlock(rpc, payload.params);
|
|
44
|
+
// If response is not valid from the EL we don't need to verify it
|
|
45
|
+
if (!block)
|
|
46
|
+
return { data: block, valid: false };
|
|
47
|
+
if (await isValidBlock({
|
|
48
|
+
logger,
|
|
49
|
+
block,
|
|
50
|
+
executionPayload,
|
|
51
|
+
config: proofProvider.config,
|
|
52
|
+
})) {
|
|
53
|
+
return { data: block, valid: true };
|
|
54
|
+
}
|
|
55
|
+
return { valid: false };
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
logger.error("Error while verifying block", { block: payload.params[0] }, err);
|
|
59
|
+
return { valid: false };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/utils/verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gathers all information on package version including Git data.
|
|
3
|
+
* @returns a version string, e.g.
|
|
4
|
+
* - Stable release: `v0.36.0/80c248bb`
|
|
5
|
+
* - Dev release: `v0.36.0-dev.80c248bb/80c248bb`
|
|
6
|
+
* - Test branch: `v0.36.0/developer-feature/80c248bb`
|
|
7
|
+
*/
|
|
8
|
+
export declare function getVersionData(): {
|
|
9
|
+
version: string;
|
|
10
|
+
commit: string;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { findUpSync } from "find-up";
|
|
5
|
+
import { readAndGetGitData } from "./gitData/index.js";
|
|
6
|
+
// Global variable __dirname no longer available in ES6 modules.
|
|
7
|
+
// Solutions: https://stackoverflow.com/questions/46745014/alternative-for-dirname-in-node-js-when-using-es6-modules
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
9
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const BRANCH_IGNORE = /^(HEAD|master|unstable|main)$/;
|
|
11
|
+
/**
|
|
12
|
+
* Gathers all information on package version including Git data.
|
|
13
|
+
* @returns a version string, e.g.
|
|
14
|
+
* - Stable release: `v0.36.0/80c248bb`
|
|
15
|
+
* - Dev release: `v0.36.0-dev.80c248bb/80c248bb`
|
|
16
|
+
* - Test branch: `v0.36.0/developer-feature/80c248bb`
|
|
17
|
+
*/
|
|
18
|
+
export function getVersionData() {
|
|
19
|
+
const parts = [];
|
|
20
|
+
/** Returns local version from `lerna.json` or `package.json` as `"0.28.2"` */
|
|
21
|
+
const localVersion = readCliPackageJson() || readVersionFromLernaJson();
|
|
22
|
+
if (localVersion) {
|
|
23
|
+
parts.push(`v${localVersion}`);
|
|
24
|
+
}
|
|
25
|
+
const { branch, commit } = readAndGetGitData();
|
|
26
|
+
// Add branch only if not present and not an ignore value
|
|
27
|
+
if (branch && !BRANCH_IGNORE.test(branch))
|
|
28
|
+
parts.push(branch);
|
|
29
|
+
// Add commit only if present. 7 characters to be consistent with Github
|
|
30
|
+
if (commit) {
|
|
31
|
+
const commitShort = commit.slice(0, 7);
|
|
32
|
+
// Don't add commit if it's already in the version string (dev versions)
|
|
33
|
+
if (!localVersion || !localVersion.includes(commitShort)) {
|
|
34
|
+
parts.push(commitShort);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
// Guard against empty parts array
|
|
39
|
+
version: parts.length > 0 ? parts.join("/") : "unknown",
|
|
40
|
+
commit,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** Read version information from lerna.json */
|
|
44
|
+
function readVersionFromLernaJson() {
|
|
45
|
+
const filePath = findUpSync("lerna.json", { cwd: __dirname });
|
|
46
|
+
if (!filePath)
|
|
47
|
+
return undefined;
|
|
48
|
+
const lernaJson = JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
49
|
+
return lernaJson.version;
|
|
50
|
+
}
|
|
51
|
+
/** Read version information from package.json */
|
|
52
|
+
function readCliPackageJson() {
|
|
53
|
+
const filePath = findUpSync("package.json", { cwd: __dirname });
|
|
54
|
+
if (!filePath)
|
|
55
|
+
return undefined;
|
|
56
|
+
const packageJson = JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
57
|
+
return packageJson.version;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACnC,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD,gEAAgE;AAChE,oHAAoH;AACpH,gEAAgE;AAChE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAO/D,MAAM,aAAa,GAAG,+BAA+B,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc;IAI5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,8EAA8E;IAC9E,MAAM,YAAY,GAAG,kBAAkB,EAAE,IAAI,wBAAwB,EAAE,CAAC;IACxE,IAAI,YAAY,EAAE;QAChB,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;KAChC;IAED,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,iBAAiB,EAAE,CAAC;IAE7C,yDAAyD;IACzD,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE9D,wEAAwE;IACxE,IAAI,MAAM,EAAE;QACV,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,wEAAwE;QACxE,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACxD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzB;KACF;IAED,OAAO;QACL,kCAAkC;QAClC,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QACvD,MAAM;KACP,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,SAAS,wBAAwB;IAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,EAAC,GAAG,EAAE,SAAS,EAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAgB,CAAC;IAC/E,OAAO,SAAS,CAAC,OAAO,CAAC;AAC3B,CAAC;AAED,iDAAiD;AACjD,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,EAAE,EAAC,GAAG,EAAE,SAAS,EAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAgB,CAAC;IACjF,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { bufferToHex } from "../utils/conversion.js";
|
|
2
|
+
import { createVM, executeVMCall, getVMWithState } from "../utils/evm.js";
|
|
3
|
+
import { getResponseForRequest, getErrorResponseForUnverifiedRequest } from "../utils/json_rpc.js";
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
5
|
+
export const eth_call = async ({ rpc, payload, logger, proofProvider, }) => {
|
|
6
|
+
const { params: [tx, block], } = payload;
|
|
7
|
+
// We assume that standard tx validation already been done by the caller (web3, ethers.js, etc.)
|
|
8
|
+
const executionPayload = await proofProvider.getExecutionPayload(block !== null && block !== void 0 ? block : "latest");
|
|
9
|
+
try {
|
|
10
|
+
// TODO: Optimize the creation of the evm
|
|
11
|
+
const vm = await createVM({ proofProvider });
|
|
12
|
+
const vmWithState = await getVMWithState({
|
|
13
|
+
rpc,
|
|
14
|
+
executionPayload,
|
|
15
|
+
tx,
|
|
16
|
+
vm,
|
|
17
|
+
logger,
|
|
18
|
+
});
|
|
19
|
+
const result = await executeVMCall({
|
|
20
|
+
vm: vmWithState,
|
|
21
|
+
tx,
|
|
22
|
+
rpc,
|
|
23
|
+
executionPayload,
|
|
24
|
+
network: proofProvider.network,
|
|
25
|
+
});
|
|
26
|
+
return getResponseForRequest(payload, bufferToHex(result.returnValue));
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
logger.error("Request could not be verified.", { method: payload.method, params: JSON.stringify(payload.params) }, err);
|
|
30
|
+
return getErrorResponseForUnverifiedRequest(payload, "eth_call request can not be verified.");
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=eth_call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth_call.js","sourceRoot":"","sources":["../../src/verified_requests/eth_call.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAC,qBAAqB,EAAE,oCAAoC,EAAC,MAAM,sBAAsB,CAAC;AAEjG,gEAAgE;AAChE,MAAM,CAAC,MAAM,QAAQ,GAA+E,KAAK,EAAE,EACzG,GAAG,EACH,OAAO,EACP,MAAM,EACN,aAAa,GACd,EAAE,EAAE;IACH,MAAM,EACJ,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,GACpB,GAAG,OAAO,CAAC;IACZ,gGAAgG;IAChG,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,QAAQ,CAAC,CAAC;IAEpF,IAAI;QACF,yCAAyC;QACzC,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAC,aAAa,EAAC,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC;YACvC,GAAG;YACH,gBAAgB;YAChB,EAAE;YACF,EAAE;YACF,MAAM;SACP,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;YACjC,EAAE,EAAE,WAAW;YACf,EAAE;YACF,GAAG;YACH,gBAAgB;YAChB,OAAO,EAAE,aAAa,CAAC,OAAO;SAC/B,CAAC,CAAC;QAEH,OAAO,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;KACxE;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,CAAC,KAAK,CACV,gCAAgC,EAChC,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,EAChE,GAAY,CACb,CAAC;QACF,OAAO,oCAAoC,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;KAC/F;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ELVerifiedRequestHandler } from "../interfaces.js";
|
|
2
|
+
import { ELApiParams, ELApiReturn } from "../types.js";
|
|
3
|
+
export declare const eth_estimateGas: ELVerifiedRequestHandler<ELApiParams["eth_estimateGas"], ELApiReturn["eth_estimateGas"]>;
|
|
4
|
+
//# sourceMappingURL=eth_estimateGas.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { bigIntToHex } from "../utils/conversion.js";
|
|
2
|
+
import { createVM, executeVMTx, getVMWithState } from "../utils/evm.js";
|
|
3
|
+
import { getErrorResponseForUnverifiedRequest, getResponseForRequest } from "../utils/json_rpc.js";
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
5
|
+
export const eth_estimateGas = async ({ rpc, payload, logger, proofProvider }) => {
|
|
6
|
+
const { params: [tx, block], } = payload;
|
|
7
|
+
// We assume that standard tx validation already been done by the caller (web3, ethers.js, etc.)
|
|
8
|
+
const executionPayload = await proofProvider.getExecutionPayload(block !== null && block !== void 0 ? block : "latest");
|
|
9
|
+
try {
|
|
10
|
+
// TODO: Optimize the creation of the evm
|
|
11
|
+
const vm = await createVM({ proofProvider });
|
|
12
|
+
const vmWithState = await getVMWithState({
|
|
13
|
+
rpc,
|
|
14
|
+
executionPayload,
|
|
15
|
+
tx,
|
|
16
|
+
vm,
|
|
17
|
+
logger,
|
|
18
|
+
});
|
|
19
|
+
const result = await executeVMTx({
|
|
20
|
+
vm: vmWithState,
|
|
21
|
+
tx,
|
|
22
|
+
rpc,
|
|
23
|
+
executionPayload,
|
|
24
|
+
network: proofProvider.network,
|
|
25
|
+
});
|
|
26
|
+
return getResponseForRequest(payload, bigIntToHex(result.totalGasSpent));
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
logger.error("Request could not be verified.", { method: payload.method, params: JSON.stringify(payload.params) }, err);
|
|
30
|
+
return getErrorResponseForUnverifiedRequest(payload, "eth_estimateGas request can not be verified.");
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=eth_estimateGas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth_estimateGas.js","sourceRoot":"","sources":["../../src/verified_requests/eth_estimateGas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAC,oCAAoC,EAAE,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAEjG,gEAAgE;AAChE,MAAM,CAAC,MAAM,eAAe,GAGxB,KAAK,EAAE,EAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAC,EAAE,EAAE;IAClD,MAAM,EACJ,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,GACpB,GAAG,OAAO,CAAC;IACZ,gGAAgG;IAChG,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,QAAQ,CAAC,CAAC;IAEpF,IAAI;QACF,yCAAyC;QACzC,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAC,aAAa,EAAC,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC;YACvC,GAAG;YACH,gBAAgB;YAChB,EAAE;YACF,EAAE;YACF,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,EAAE,EAAE,WAAW;YACf,EAAE;YACF,GAAG;YACH,gBAAgB;YAChB,OAAO,EAAE,aAAa,CAAC,OAAO;SAC/B,CAAC,CAAC;QAEH,OAAO,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;KAC1E;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,CAAC,KAAK,CACV,gCAAgC,EAChC,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,EAChE,GAAY,CACb,CAAC;QACF,OAAO,oCAAoC,CAAC,OAAO,EAAE,8CAA8C,CAAC,CAAC;KACtG;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { verifyAccount } from "../utils/verification.js";
|
|
2
|
+
import { getErrorResponseForUnverifiedRequest, getResponseForRequest } from "../utils/json_rpc.js";
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
4
|
+
export const eth_getBalance = async ({ rpc, payload, logger, proofProvider, }) => {
|
|
5
|
+
const { params: [address, block], } = payload;
|
|
6
|
+
const result = await verifyAccount({ proofProvider, logger, rpc, address, block });
|
|
7
|
+
if (result.valid) {
|
|
8
|
+
return getResponseForRequest(payload, result.data.balance);
|
|
9
|
+
}
|
|
10
|
+
logger.error("Request could not be verified.", { method: payload.method, params: JSON.stringify(payload.params) });
|
|
11
|
+
return getErrorResponseForUnverifiedRequest(payload, "eth_getBalance request can not be verified.");
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=eth_getBalance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth_getBalance.js","sourceRoot":"","sources":["../../src/verified_requests/eth_getBalance.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,oCAAoC,EAAE,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAEjG,gEAAgE;AAChE,MAAM,CAAC,MAAM,cAAc,GAAiF,KAAK,EAAE,EACjH,GAAG,EACH,OAAO,EACP,MAAM,EACN,aAAa,GACd,EAAE,EAAE;IACH,MAAM,EACJ,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,GACzB,GAAG,OAAO,CAAC;IACZ,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAEjF,IAAI,MAAM,CAAC,KAAK,EAAE;QAChB,OAAO,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5D;IAED,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IACjH,OAAO,oCAAoC,CAAC,OAAO,EAAE,6CAA6C,CAAC,CAAC;AACtG,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { verifyBlock } from "../utils/verification.js";
|
|
2
|
+
import { getErrorResponseForUnverifiedRequest, getResponseForRequest } from "../utils/json_rpc.js";
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
4
|
+
export const eth_getBlockByHash = async ({ rpc, payload, logger, proofProvider, }) => {
|
|
5
|
+
const result = await verifyBlock({ payload, proofProvider, logger, rpc });
|
|
6
|
+
if (result.valid) {
|
|
7
|
+
return getResponseForRequest(payload, result.data);
|
|
8
|
+
}
|
|
9
|
+
logger.error("Request could not be verified.", { method: payload.method, params: JSON.stringify(payload.params) });
|
|
10
|
+
return getErrorResponseForUnverifiedRequest(payload, "eth_getBlockByHash request can not be verified.");
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=eth_getBlockByHash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth_getBlockByHash.js","sourceRoot":"","sources":["../../src/verified_requests/eth_getBlockByHash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAC,oCAAoC,EAAE,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAEjG,gEAAgE;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAA0E,KAAK,EAAE,EAC9G,GAAG,EACH,OAAO,EACP,MAAM,EACN,aAAa,GACd,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC,CAAC;IAExE,IAAI,MAAM,CAAC,KAAK,EAAE;QAChB,OAAO,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;KACpD;IAED,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IACjH,OAAO,oCAAoC,CAAC,OAAO,EAAE,iDAAiD,CAAC,CAAC;AAC1G,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ELVerifiedRequestHandler } from "../interfaces.js";
|
|
2
|
+
import { ELBlock } from "../types.js";
|
|
3
|
+
export declare const eth_getBlockByNumber: ELVerifiedRequestHandler<[
|
|
4
|
+
block: string | number,
|
|
5
|
+
hydrated: boolean
|
|
6
|
+
], ELBlock>;
|
|
7
|
+
//# sourceMappingURL=eth_getBlockByNumber.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { verifyBlock } from "../utils/verification.js";
|
|
2
|
+
import { getErrorResponseForUnverifiedRequest, getResponseForRequest } from "../utils/json_rpc.js";
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
4
|
+
export const eth_getBlockByNumber = async ({ rpc, payload, logger, proofProvider }) => {
|
|
5
|
+
const result = await verifyBlock({ payload, proofProvider, logger, rpc });
|
|
6
|
+
if (result.valid) {
|
|
7
|
+
return getResponseForRequest(payload, result.data);
|
|
8
|
+
}
|
|
9
|
+
logger.error("Request could not be verified.", { method: payload.method, params: JSON.stringify(payload.params) });
|
|
10
|
+
return getErrorResponseForUnverifiedRequest(payload, "eth_getBlockByNumber request can not be verified.");
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=eth_getBlockByNumber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth_getBlockByNumber.js","sourceRoot":"","sources":["../../src/verified_requests/eth_getBlockByNumber.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAC,oCAAoC,EAAE,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAEjG,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAG7B,KAAK,EAAE,EAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAC,EAAE,EAAE;IAClD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC,CAAC;IAExE,IAAI,MAAM,CAAC,KAAK,EAAE;QAChB,OAAO,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;KACpD;IAED,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IACjH,OAAO,oCAAoC,CAAC,OAAO,EAAE,mDAAmD,CAAC,CAAC;AAC5G,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { verifyAccount, verifyCode } from "../utils/verification.js";
|
|
2
|
+
import { getErrorResponseForUnverifiedRequest, getResponseForRequest } from "../utils/json_rpc.js";
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
4
|
+
export const eth_getCode = async ({ rpc, payload, logger, proofProvider, }) => {
|
|
5
|
+
const { params: [address, block], } = payload;
|
|
6
|
+
// TODO: When batch requests are supported merged these two requests into one
|
|
7
|
+
const accountProof = await verifyAccount({
|
|
8
|
+
proofProvider,
|
|
9
|
+
logger,
|
|
10
|
+
rpc,
|
|
11
|
+
address,
|
|
12
|
+
block,
|
|
13
|
+
});
|
|
14
|
+
if (!accountProof.valid) {
|
|
15
|
+
logger.error("Request could not be verified.", { method: payload.method, params: JSON.stringify(payload.params) });
|
|
16
|
+
return getErrorResponseForUnverifiedRequest(payload, "account for eth_getCode request can not be verified.");
|
|
17
|
+
}
|
|
18
|
+
const codeProof = await verifyCode({
|
|
19
|
+
proofProvider,
|
|
20
|
+
logger,
|
|
21
|
+
rpc,
|
|
22
|
+
address,
|
|
23
|
+
block,
|
|
24
|
+
codeHash: accountProof.data.codeHash,
|
|
25
|
+
});
|
|
26
|
+
if (codeProof.valid) {
|
|
27
|
+
return getResponseForRequest(payload, codeProof.data);
|
|
28
|
+
}
|
|
29
|
+
logger.error("Request could not be verified.", { method: payload.method, params: JSON.stringify(payload.params) });
|
|
30
|
+
return getErrorResponseForUnverifiedRequest(payload, "eth_getCode request can not be verified.");
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=eth_getCode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth_getCode.js","sourceRoot":"","sources":["../../src/verified_requests/eth_getCode.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAC,oCAAoC,EAAE,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAEjG,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAiF,KAAK,EAAE,EAC9G,GAAG,EACH,OAAO,EACP,MAAM,EACN,aAAa,GACd,EAAE,EAAE;IACH,MAAM,EACJ,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,GACzB,GAAG,OAAO,CAAC;IACZ,6EAA6E;IAC7E,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC;QACvC,aAAa;QACb,MAAM;QACN,GAAG;QACH,OAAO;QACP,KAAK;KACN,CAAC,CAAC;IAEH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QACvB,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;QACjH,OAAO,oCAAoC,CAAC,OAAO,EAAE,sDAAsD,CAAC,CAAC;KAC9G;IAED,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC;QACjC,aAAa;QACb,MAAM;QACN,GAAG;QACH,OAAO;QACP,KAAK;QACL,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ;KACrC,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,KAAK,EAAE;QACnB,OAAO,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;KACvD;IAED,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IACjH,OAAO,oCAAoC,CAAC,OAAO,EAAE,0CAA0C,CAAC,CAAC;AACnG,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { verifyAccount } from "../utils/verification.js";
|
|
2
|
+
import { getResponseForRequest, getErrorResponseForUnverifiedRequest } from "../utils/json_rpc.js";
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
4
|
+
export const eth_getTransactionCount = async ({ rpc, payload, logger, proofProvider }) => {
|
|
5
|
+
const { params: [address, block], } = payload;
|
|
6
|
+
const result = await verifyAccount({ proofProvider, logger, rpc, address, block });
|
|
7
|
+
if (result.valid) {
|
|
8
|
+
return getResponseForRequest(payload, result.data.nonce);
|
|
9
|
+
}
|
|
10
|
+
logger.error("Request could not be verified.", { method: payload.method, params: JSON.stringify(payload.params) });
|
|
11
|
+
return getErrorResponseForUnverifiedRequest(payload, "eth_getTransactionCount request can not be verified.");
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=eth_getTransactionCount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth_getTransactionCount.js","sourceRoot":"","sources":["../../src/verified_requests/eth_getTransactionCount.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,qBAAqB,EAAE,oCAAoC,EAAC,MAAM,sBAAsB,CAAC;AAEjG,gEAAgE;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAGhC,KAAK,EAAE,EAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAC,EAAE,EAAE;IAClD,MAAM,EACJ,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,GACzB,GAAG,OAAO,CAAC;IACZ,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;IAEjF,IAAI,MAAM,CAAC,KAAK,EAAE;QAChB,OAAO,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1D;IAED,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IACjH,OAAO,oCAAoC,CAAC,OAAO,EAAE,sDAAsD,CAAC,CAAC;AAC/G,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Logger } from "@lodestar/utils";
|
|
2
|
+
import { VerifiedExecutionInitOptions, Web3Provider } from "./interfaces.js";
|
|
3
|
+
import { ProofProvider } from "./proof_provider/proof_provider.js";
|
|
4
|
+
import { ELRpc } from "./utils/rpc.js";
|
|
5
|
+
export type Web3ProviderTypeHandler<T extends Web3Provider> = (provider: T, proofProvider: ProofProvider, logger: Logger) => {
|
|
6
|
+
provider: T;
|
|
7
|
+
rpc: ELRpc;
|
|
8
|
+
};
|
|
9
|
+
export declare function createVerifiedExecutionProvider<T extends Web3Provider>(provider: T, opts: VerifiedExecutionInitOptions): {
|
|
10
|
+
provider: T;
|
|
11
|
+
proofProvider: ProofProvider;
|
|
12
|
+
};
|
|
13
|
+
export declare function getProviderTypeHandler<T extends Web3Provider>(provider: T, logger: Logger): Web3ProviderTypeHandler<T>;
|
|
14
|
+
//# sourceMappingURL=web3_provider.d.ts.map
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { getBrowserLogger } from "@lodestar/logger/browser";
|
|
2
|
+
import { LogLevel } from "@lodestar/logger";
|
|
3
|
+
import { ProofProvider } from "./proof_provider/proof_provider.js";
|
|
4
|
+
import { isEIP1193Provider, isEthersProvider, isRequestProvider, isSendAsyncProvider, isSendProvider, } from "./utils/assertion.js";
|
|
5
|
+
import { processAndVerifyRequest } from "./utils/process.js";
|
|
6
|
+
import { isBatchRequest } from "./utils/json_rpc.js";
|
|
7
|
+
import { ELRpc } from "./utils/rpc.js";
|
|
8
|
+
export function createVerifiedExecutionProvider(provider, opts) {
|
|
9
|
+
var _a, _b, _c;
|
|
10
|
+
const signal = (_a = opts.signal) !== null && _a !== void 0 ? _a : new AbortController().signal;
|
|
11
|
+
const logger = (_b = opts.logger) !== null && _b !== void 0 ? _b : getBrowserLogger({ level: (_c = opts.logLevel) !== null && _c !== void 0 ? _c : LogLevel.info });
|
|
12
|
+
const proofProvider = ProofProvider.init({
|
|
13
|
+
...opts,
|
|
14
|
+
signal,
|
|
15
|
+
logger,
|
|
16
|
+
});
|
|
17
|
+
const handler = getProviderTypeHandler(provider, logger);
|
|
18
|
+
const { provider: newInstance, rpc } = handler(provider, proofProvider, logger);
|
|
19
|
+
rpc.verifyCompatibility().catch((err) => {
|
|
20
|
+
logger.error(err);
|
|
21
|
+
logger.error("Due to compatibility issues, verified execution may not work properly.");
|
|
22
|
+
});
|
|
23
|
+
return { provider: newInstance, proofProvider: proofProvider };
|
|
24
|
+
}
|
|
25
|
+
function handleSendProvider(provider, proofProvider, logger) {
|
|
26
|
+
const send = provider.send.bind(provider);
|
|
27
|
+
const handler = (payload) => new Promise((resolve, reject) => {
|
|
28
|
+
// web3 providers supports batch requests but don't have valid types
|
|
29
|
+
send(payload, (err, response) => {
|
|
30
|
+
if (err) {
|
|
31
|
+
reject(err);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
resolve(response);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
const rpc = new ELRpc(handler, logger);
|
|
39
|
+
function newSend(payload, callback) {
|
|
40
|
+
processAndVerifyRequest({ payload, rpc, proofProvider, logger })
|
|
41
|
+
.then((response) => callback(undefined, response))
|
|
42
|
+
.catch((err) => callback(err, undefined));
|
|
43
|
+
}
|
|
44
|
+
return { provider: Object.assign(provider, { send: newSend }), rpc };
|
|
45
|
+
}
|
|
46
|
+
function handleRequestProvider(provider, proofProvider, logger) {
|
|
47
|
+
const request = provider.request.bind(provider);
|
|
48
|
+
const handler = (payload) => new Promise((resolve, reject) => {
|
|
49
|
+
request(payload, (err, response) => {
|
|
50
|
+
if (err) {
|
|
51
|
+
reject(err);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
resolve(response);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
const rpc = new ELRpc(handler, logger);
|
|
59
|
+
function newRequest(payload, callback) {
|
|
60
|
+
processAndVerifyRequest({ payload, rpc, proofProvider, logger })
|
|
61
|
+
.then((response) => callback(undefined, response))
|
|
62
|
+
.catch((err) => callback(err, undefined));
|
|
63
|
+
}
|
|
64
|
+
return { provider: Object.assign(provider, { request: newRequest }), rpc };
|
|
65
|
+
}
|
|
66
|
+
function handleSendAsyncProvider(provider, proofProvider, logger) {
|
|
67
|
+
const sendAsync = provider.sendAsync.bind(provider);
|
|
68
|
+
const handler = async (payload) => {
|
|
69
|
+
const response = await sendAsync(payload);
|
|
70
|
+
return response;
|
|
71
|
+
};
|
|
72
|
+
const rpc = new ELRpc(handler, logger);
|
|
73
|
+
async function newSendAsync(payload) {
|
|
74
|
+
return processAndVerifyRequest({ payload, rpc, proofProvider, logger });
|
|
75
|
+
}
|
|
76
|
+
return { provider: Object.assign(provider, { sendAsync: newSendAsync }), rpc };
|
|
77
|
+
}
|
|
78
|
+
function handleEIP1193Provider(provider, proofProvider, logger) {
|
|
79
|
+
const request = provider.request.bind(provider);
|
|
80
|
+
const handler = async (payload) => {
|
|
81
|
+
const response = await request(payload);
|
|
82
|
+
return response;
|
|
83
|
+
};
|
|
84
|
+
const rpc = new ELRpc(handler, logger);
|
|
85
|
+
async function newRequest(payload) {
|
|
86
|
+
return processAndVerifyRequest({ payload, rpc, proofProvider, logger });
|
|
87
|
+
}
|
|
88
|
+
return { provider: Object.assign(provider, { request: newRequest }), rpc };
|
|
89
|
+
}
|
|
90
|
+
function handleEthersProvider(provider, proofProvider, logger) {
|
|
91
|
+
const send = provider.send.bind(provider);
|
|
92
|
+
const handler = async (payload) => {
|
|
93
|
+
// Because ethers provider public interface does not support batch requests
|
|
94
|
+
// so we need to handle it manually
|
|
95
|
+
if (isBatchRequest(payload)) {
|
|
96
|
+
const responses = [];
|
|
97
|
+
for (const request of payload) {
|
|
98
|
+
responses.push(await send(request.method, request.params));
|
|
99
|
+
}
|
|
100
|
+
return responses;
|
|
101
|
+
}
|
|
102
|
+
return send(payload.method, payload.params);
|
|
103
|
+
};
|
|
104
|
+
const rpc = new ELRpc(handler, logger);
|
|
105
|
+
async function newSend(method, params) {
|
|
106
|
+
return processAndVerifyRequest({
|
|
107
|
+
payload: { jsonrpc: "2.0", id: 0, method, params },
|
|
108
|
+
rpc,
|
|
109
|
+
proofProvider,
|
|
110
|
+
logger,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return { provider: Object.assign(provider, { send: newSend }), rpc };
|
|
114
|
+
}
|
|
115
|
+
export function getProviderTypeHandler(provider, logger) {
|
|
116
|
+
if (isSendProvider(provider)) {
|
|
117
|
+
logger.debug("Provider is recognized as legacy provider with 'send' method.");
|
|
118
|
+
return handleSendProvider;
|
|
119
|
+
}
|
|
120
|
+
if (isEthersProvider(provider)) {
|
|
121
|
+
logger.debug("Provider is recognized as 'ethers' provider.");
|
|
122
|
+
return handleEthersProvider;
|
|
123
|
+
}
|
|
124
|
+
if (isRequestProvider(provider)) {
|
|
125
|
+
logger.debug("Provider is recognized as legacy provider with 'request' method.");
|
|
126
|
+
return handleRequestProvider;
|
|
127
|
+
}
|
|
128
|
+
if (isSendAsyncProvider(provider)) {
|
|
129
|
+
logger.debug("Provider is recognized as legacy provider with 'sendAsync' method.");
|
|
130
|
+
return handleSendAsyncProvider;
|
|
131
|
+
}
|
|
132
|
+
if (isEIP1193Provider(provider)) {
|
|
133
|
+
logger.debug("Provider is recognized as 'EIP1193' provider.");
|
|
134
|
+
return handleEIP1193Provider;
|
|
135
|
+
}
|
|
136
|
+
throw new Error("Unsupported provider type");
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=web3_provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web3_provider.js","sourceRoot":"","sources":["../src/web3_provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import http from "node:http";
|
|
3
|
+
import { VerifiedExecutionInitOptions } from "./interfaces.js";
|
|
4
|
+
import { ProofProvider } from "./proof_provider/proof_provider.js";
|
|
5
|
+
export type VerifiedProxyOptions = VerifiedExecutionInitOptions & {
|
|
6
|
+
executionRpcUrl: string;
|
|
7
|
+
requestTimeout: number;
|
|
8
|
+
};
|
|
9
|
+
export declare function createVerifiedExecutionProxy(opts: VerifiedProxyOptions): {
|
|
10
|
+
server: http.Server;
|
|
11
|
+
proofProvider: ProofProvider;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=web3_proxy.d.ts.map
|