hardhat 2.8.3 → 2.9.0-dev.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 +3 -61
- package/README.md +1 -1
- package/builtin-tasks/compile.js +86 -51
- package/builtin-tasks/compile.js.map +1 -1
- package/builtin-tasks/node.js.map +1 -1
- package/builtin-tasks/test.js +30 -5
- package/builtin-tasks/test.js.map +1 -1
- package/builtin-tasks/utils/solidity-files-cache.d.ts.map +1 -1
- package/builtin-tasks/utils/solidity-files-cache.js.map +1 -1
- package/internal/cli/analytics.js +2 -2
- package/internal/cli/analytics.js.map +1 -1
- package/internal/cli/cli.js +3 -3
- package/internal/cli/project-creation.d.ts.map +1 -1
- package/internal/cli/project-creation.js +24 -1
- package/internal/cli/project-creation.js.map +1 -1
- package/internal/core/config/config-loading.d.ts.map +1 -1
- package/internal/core/config/config-loading.js.map +1 -1
- package/internal/core/config/config-validation.d.ts.map +1 -1
- package/internal/core/config/config-validation.js +2 -2
- package/internal/core/config/config-validation.js.map +1 -1
- package/internal/core/config/default-config.d.ts +2 -0
- package/internal/core/config/default-config.d.ts.map +1 -1
- package/internal/core/config/default-config.js +1 -0
- package/internal/core/config/default-config.js.map +1 -1
- package/internal/core/errors-list.d.ts +7 -0
- package/internal/core/errors-list.d.ts.map +1 -1
- package/internal/core/errors-list.js +13 -0
- package/internal/core/errors-list.js.map +1 -1
- package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -3
- package/internal/core/jsonrpc/types/input/blockTag.d.ts.map +1 -1
- package/internal/core/providers/accounts.d.ts +1 -1
- package/internal/core/providers/accounts.d.ts.map +1 -1
- package/internal/core/providers/accounts.js +6 -4
- package/internal/core/providers/accounts.js.map +1 -1
- package/internal/core/providers/construction.d.ts.map +1 -1
- package/internal/core/providers/construction.js +1 -1
- package/internal/core/providers/construction.js.map +1 -1
- package/internal/core/providers/http.d.ts +5 -1
- package/internal/core/providers/http.d.ts.map +1 -1
- package/internal/core/providers/http.js +35 -31
- package/internal/core/providers/http.js.map +1 -1
- package/internal/core/providers/util.d.ts +1 -1
- package/internal/core/providers/util.d.ts.map +1 -1
- package/internal/core/providers/util.js +3 -3
- package/internal/core/providers/util.js.map +1 -1
- package/internal/core/tasks/task-definitions.d.ts +8 -8
- package/internal/core/tasks/task-definitions.js +8 -8
- package/internal/hardhat-network/jsonrpc/server.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/server.js.map +1 -1
- package/internal/hardhat-network/provider/BlockchainBase.d.ts +26 -0
- package/internal/hardhat-network/provider/BlockchainBase.d.ts.map +1 -0
- package/internal/hardhat-network/provider/BlockchainBase.js +92 -0
- package/internal/hardhat-network/provider/BlockchainBase.js.map +1 -0
- package/internal/hardhat-network/provider/BlockchainData.d.ts +32 -0
- package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.js +78 -1
- package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +9 -15
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.js +15 -73
- package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +6 -14
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js +23 -73
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +2 -2
- package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.d.ts +3 -0
- package/internal/hardhat-network/provider/modules/hardhat.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/hardhat.js +40 -5
- package/internal/hardhat-network/provider/modules/hardhat.js.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.d.ts +4 -2
- package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.js +38 -12
- package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +9 -1
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +61 -10
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/provider.d.ts +1 -1
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +2 -1
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js +2 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +1 -1
- package/internal/hardhat-network/stack-traces/debug.js.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/error-inferrer.js +21 -12
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-errors.js +2 -2
- package/internal/hardhat-network/stack-traces/solidity-errors.js.map +1 -1
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts +3 -2
- package/internal/hardhat-network/stack-traces/solidity-stack-trace.d.ts.map +1 -1
- package/internal/solidity/compilation-job.d.ts.map +1 -1
- package/internal/solidity/compilation-job.js.map +1 -1
- package/internal/solidity/compiler/downloader.d.ts +2 -2
- package/internal/solidity/compiler/downloader.d.ts.map +1 -1
- package/internal/solidity/compiler/downloader.js +3 -3
- package/internal/solidity/compiler/downloader.js.map +1 -1
- package/internal/util/chunked-promise-all.d.ts +7 -0
- package/internal/util/chunked-promise-all.d.ts.map +1 -0
- package/internal/util/chunked-promise-all.js +31 -0
- package/internal/util/chunked-promise-all.js.map +1 -0
- package/internal/util/download.d.ts.map +1 -1
- package/internal/util/download.js +22 -24
- package/internal/util/download.js.map +1 -1
- package/internal/util/glob.d.ts.map +1 -1
- package/internal/util/glob.js.map +1 -1
- package/internal/util/global-dir.d.ts.map +1 -1
- package/internal/util/global-dir.js.map +1 -1
- package/internal/util/keys-derivation.d.ts +1 -1
- package/internal/util/keys-derivation.d.ts.map +1 -1
- package/internal/util/keys-derivation.js +2 -2
- package/internal/util/keys-derivation.js.map +1 -1
- package/package.json +11 -11
- package/sample-projects/advanced/.prettierrc +1 -0
- package/sample-projects/advanced-ts/README.md +1 -1
- package/src/builtin-tasks/compile.ts +94 -76
- package/src/builtin-tasks/node.ts +2 -1
- package/src/builtin-tasks/test.ts +69 -11
- package/src/builtin-tasks/utils/solidity-files-cache.ts +3 -2
- package/src/internal/cli/analytics.ts +2 -2
- package/src/internal/cli/cli.ts +3 -3
- package/src/internal/cli/project-creation.ts +41 -1
- package/src/internal/core/config/config-loading.ts +2 -1
- package/src/internal/core/config/config-validation.ts +2 -0
- package/src/internal/core/config/default-config.ts +1 -0
- package/src/internal/core/errors-list.ts +13 -0
- package/src/internal/core/providers/accounts.ts +8 -5
- package/src/internal/core/providers/construction.ts +3 -1
- package/src/internal/core/providers/http.ts +47 -16
- package/src/internal/core/providers/util.ts +6 -3
- package/src/internal/core/tasks/task-definitions.ts +8 -8
- package/src/internal/hardhat-network/jsonrpc/server.ts +16 -3
- package/src/internal/hardhat-network/provider/BlockchainBase.ts +137 -0
- package/src/internal/hardhat-network/provider/BlockchainData.ts +144 -0
- package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +34 -87
- package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +45 -90
- package/src/internal/hardhat-network/provider/modules/eth.ts +2 -2
- package/src/internal/hardhat-network/provider/modules/hardhat.ts +51 -5
- package/src/internal/hardhat-network/provider/modules/logger.ts +50 -14
- package/src/internal/hardhat-network/provider/node-types.ts +2 -2
- package/src/internal/hardhat-network/provider/node.ts +85 -11
- package/src/internal/hardhat-network/provider/provider.ts +9 -8
- package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +7 -1
- package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +2 -1
- package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/debug.ts +1 -1
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +21 -13
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidity-stack-trace.ts +3 -2
- package/src/internal/solidity/compilation-job.ts +2 -1
- package/src/internal/solidity/compiler/downloader.ts +5 -3
- package/src/internal/util/download.ts +26 -31
- package/src/internal/util/glob.ts +1 -0
- package/src/internal/util/global-dir.ts +2 -1
- package/src/internal/util/keys-derivation.ts +3 -2
- package/src/types/config.ts +4 -0
- package/types/config.d.ts +4 -0
- package/types/config.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construction.js","sourceRoot":"","sources":["../../../src/internal/core/providers/construction.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"construction.js","sourceRoot":"","sources":["../../../src/internal/core/providers/construction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from "events";
|
|
3
|
+
import { Dispatcher } from "undici";
|
|
3
4
|
import { EIP1193Provider, RequestArguments } from "../../../types";
|
|
4
5
|
export declare class HttpProvider extends EventEmitter implements EIP1193Provider {
|
|
5
6
|
private readonly _url;
|
|
@@ -7,9 +8,12 @@ export declare class HttpProvider extends EventEmitter implements EIP1193Provide
|
|
|
7
8
|
private readonly _extraHeaders;
|
|
8
9
|
private readonly _timeout;
|
|
9
10
|
private _nextRequestId;
|
|
11
|
+
private _dispatcher;
|
|
12
|
+
private _path;
|
|
13
|
+
private _authHeader;
|
|
10
14
|
constructor(_url: string, _networkName: string, _extraHeaders?: {
|
|
11
15
|
[name: string]: string;
|
|
12
|
-
}, _timeout?: number);
|
|
16
|
+
}, _timeout?: number, client?: Dispatcher | undefined);
|
|
13
17
|
get url(): string;
|
|
14
18
|
request(args: RequestArguments): Promise<unknown>;
|
|
15
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/internal/core/providers/http.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/internal/core/providers/http.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAQ,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA6BnE,qBAAa,YAAa,SAAQ,YAAa,YAAW,eAAe;IAOrE,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAT3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAqB;gBAGrB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,aAAa,GAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAO,EAC9C,QAAQ,SAAQ,EACjC,MAAM,GAAE,UAAU,GAAG,SAAqB;IAuB5C,IAAW,GAAG,IAAI,MAAM,CAEvB;IAEY,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B9D;;OAEG;IACU,SAAS,CACpB,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC,GAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;YAyCH,qBAAqB;YA2ErB,MAAM;IASpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,qBAAqB;CAgB9B"}
|
|
@@ -1,28 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
3
|
exports.HttpProvider = void 0;
|
|
23
4
|
const events_1 = require("events");
|
|
5
|
+
const undici_1 = require("undici");
|
|
24
6
|
const constants_1 = require("../../constants");
|
|
25
7
|
const jsonrpc_1 = require("../../util/jsonrpc");
|
|
8
|
+
const packageInfo_1 = require("../../util/packageInfo");
|
|
26
9
|
const errors_1 = require("../errors");
|
|
27
10
|
const errors_list_1 = require("../errors-list");
|
|
28
11
|
const errors_2 = require("./errors");
|
|
@@ -32,14 +15,31 @@ function isErrorResponse(response) {
|
|
|
32
15
|
const MAX_RETRIES = 6;
|
|
33
16
|
const MAX_RETRY_AWAIT_SECONDS = 5;
|
|
34
17
|
const TOO_MANY_REQUEST_STATUS = 429;
|
|
18
|
+
const hardhatVersion = (0, packageInfo_1.getHardhatVersion)();
|
|
35
19
|
class HttpProvider extends events_1.EventEmitter {
|
|
36
|
-
constructor(_url, _networkName, _extraHeaders = {}, _timeout = 20000) {
|
|
20
|
+
constructor(_url, _networkName, _extraHeaders = {}, _timeout = 20000, client = undefined) {
|
|
37
21
|
super();
|
|
38
22
|
this._url = _url;
|
|
39
23
|
this._networkName = _networkName;
|
|
40
24
|
this._extraHeaders = _extraHeaders;
|
|
41
25
|
this._timeout = _timeout;
|
|
42
26
|
this._nextRequestId = 1;
|
|
27
|
+
const url = new URL(this._url);
|
|
28
|
+
this._path = url.pathname;
|
|
29
|
+
this._authHeader =
|
|
30
|
+
url.username === ""
|
|
31
|
+
? undefined
|
|
32
|
+
: `Basic ${Buffer.from(`${url.username}:${url.password}`, "utf-8").toString("base64")}`;
|
|
33
|
+
try {
|
|
34
|
+
this._dispatcher = client !== null && client !== void 0 ? client : new undici_1.Pool(url.origin);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
if (e instanceof TypeError && e.message === "Invalid URL") {
|
|
38
|
+
e.message += ` ${url.origin}`;
|
|
39
|
+
}
|
|
40
|
+
// eslint-disable-next-line @nomiclabs/hardhat-internal-rules/only-hardhat-error
|
|
41
|
+
throw e;
|
|
42
|
+
}
|
|
43
43
|
}
|
|
44
44
|
get url() {
|
|
45
45
|
return this._url;
|
|
@@ -99,21 +99,25 @@ class HttpProvider extends events_1.EventEmitter {
|
|
|
99
99
|
return sortedResponses;
|
|
100
100
|
}
|
|
101
101
|
async _fetchJsonRpcResponse(request, retryNumber = 0) {
|
|
102
|
-
const { default: fetch } = await Promise.resolve().then(() => __importStar(require("node-fetch")));
|
|
103
102
|
try {
|
|
104
|
-
const response = await
|
|
103
|
+
const response = await this._dispatcher.request({
|
|
105
104
|
method: "POST",
|
|
105
|
+
path: this._path,
|
|
106
106
|
body: JSON.stringify(request),
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
maxRedirections: 10,
|
|
108
|
+
headersTimeout: process.env.DO_NOT_SET_THIS_ENV_VAR____IS_HARDHAT_CI !== undefined
|
|
109
109
|
? 0
|
|
110
110
|
: this._timeout,
|
|
111
|
-
headers: Object.assign({ "Content-Type": "application/json" }, this._extraHeaders),
|
|
111
|
+
headers: Object.assign({ "Content-Type": "application/json", "User-Agent": `hardhat ${hardhatVersion}`, Authorization: this._authHeader }, this._extraHeaders),
|
|
112
112
|
});
|
|
113
113
|
if (this._isRateLimitResponse(response)) {
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
|
|
114
|
+
// "The Fetch Standard allows users to skip consuming the response body
|
|
115
|
+
// by relying on garbage collection to release connection resources.
|
|
116
|
+
// Undici does not do the same. Therefore, it is important to always
|
|
117
|
+
// either consume or cancel the response body."
|
|
118
|
+
// https://undici.nodejs.org/#/?id=garbage-collection
|
|
119
|
+
// It's not clear how to "cancel", so we'll just consume:
|
|
120
|
+
await response.body.text();
|
|
117
121
|
const seconds = this._getRetryAfterSeconds(response);
|
|
118
122
|
if (seconds !== undefined && this._shouldRetry(retryNumber, seconds)) {
|
|
119
123
|
return await this._retry(request, seconds, retryNumber);
|
|
@@ -123,7 +127,7 @@ class HttpProvider extends events_1.EventEmitter {
|
|
|
123
127
|
throw new errors_2.ProviderError(`Too Many Requests error received from ${url.hostname}`, -32005 // Limit exceeded according to EIP1474
|
|
124
128
|
);
|
|
125
129
|
}
|
|
126
|
-
return (0, jsonrpc_1.parseJsonResponse)(await response.text());
|
|
130
|
+
return (0, jsonrpc_1.parseJsonResponse)(await response.body.text());
|
|
127
131
|
}
|
|
128
132
|
catch (error) {
|
|
129
133
|
if (error.code === "ECONNREFUSED") {
|
|
@@ -158,10 +162,10 @@ class HttpProvider extends events_1.EventEmitter {
|
|
|
158
162
|
return true;
|
|
159
163
|
}
|
|
160
164
|
_isRateLimitResponse(response) {
|
|
161
|
-
return response.
|
|
165
|
+
return response.statusCode === TOO_MANY_REQUEST_STATUS;
|
|
162
166
|
}
|
|
163
167
|
_getRetryAfterSeconds(response) {
|
|
164
|
-
const header = response.headers
|
|
168
|
+
const header = response.headers["retry-after"];
|
|
165
169
|
if (header === undefined || header === null) {
|
|
166
170
|
return undefined;
|
|
167
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/internal/core/providers/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/internal/core/providers/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { HardhatNetworkAccountConfig, HardhatNetworkAccountsConfig } from "../../../types";
|
|
3
|
-
export declare function derivePrivateKeys(mnemonic: string, hdpath: string, initialIndex: number, count: number): Buffer[];
|
|
3
|
+
export declare function derivePrivateKeys(mnemonic: string, hdpath: string, initialIndex: number, count: number, passphrase: string): Buffer[];
|
|
4
4
|
export declare function normalizeHardhatNetworkAccountsConfig(accountsConfig: HardhatNetworkAccountsConfig): HardhatNetworkAccountConfig[];
|
|
5
5
|
//# sourceMappingURL=util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/internal/core/providers/util.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AAQxB,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/internal/core/providers/util.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AAQxB,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CA6BV;AAED,wBAAgB,qCAAqC,CACnD,cAAc,EAAE,4BAA4B,GAC3C,2BAA2B,EAAE,CAiB/B"}
|
|
@@ -6,7 +6,7 @@ const default_config_1 = require("../config/default-config");
|
|
|
6
6
|
const errors_1 = require("../errors");
|
|
7
7
|
const errors_list_1 = require("../errors-list");
|
|
8
8
|
const HD_PATH_REGEX = /^m(:?\/\d+'?)+\/?$/;
|
|
9
|
-
function derivePrivateKeys(mnemonic, hdpath, initialIndex, count) {
|
|
9
|
+
function derivePrivateKeys(mnemonic, hdpath, initialIndex, count, passphrase) {
|
|
10
10
|
if (hdpath.match(HD_PATH_REGEX) === null) {
|
|
11
11
|
throw new errors_1.HardhatError(errors_list_1.ERRORS.NETWORK.INVALID_HD_PATH, { path: hdpath });
|
|
12
12
|
}
|
|
@@ -15,7 +15,7 @@ function derivePrivateKeys(mnemonic, hdpath, initialIndex, count) {
|
|
|
15
15
|
}
|
|
16
16
|
const privateKeys = [];
|
|
17
17
|
for (let i = initialIndex; i < initialIndex + count; i++) {
|
|
18
|
-
const privateKey = (0, keys_derivation_1.deriveKeyFromMnemonicAndPath)(mnemonic, hdpath + i.toString());
|
|
18
|
+
const privateKey = (0, keys_derivation_1.deriveKeyFromMnemonicAndPath)(mnemonic, hdpath + i.toString(), passphrase);
|
|
19
19
|
if (privateKey === undefined) {
|
|
20
20
|
throw new errors_1.HardhatError(errors_list_1.ERRORS.NETWORK.CANT_DERIVE_KEY, {
|
|
21
21
|
mnemonic,
|
|
@@ -32,7 +32,7 @@ function normalizeHardhatNetworkAccountsConfig(accountsConfig) {
|
|
|
32
32
|
return accountsConfig;
|
|
33
33
|
}
|
|
34
34
|
const { bufferToHex } = require("ethereumjs-util");
|
|
35
|
-
return derivePrivateKeys(accountsConfig.mnemonic, accountsConfig.path, accountsConfig.initialIndex, accountsConfig.count).map((pk) => {
|
|
35
|
+
return derivePrivateKeys(accountsConfig.mnemonic, accountsConfig.path, accountsConfig.initialIndex, accountsConfig.count, accountsConfig.passphrase).map((pk) => {
|
|
36
36
|
var _a;
|
|
37
37
|
return ({
|
|
38
38
|
privateKey: bufferToHex(pk),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/internal/core/providers/util.ts"],"names":[],"mappings":";;;AAIA,gEAA0E;AAC1E,6DAA2E;AAC3E,sCAAyC;AACzC,gDAAwC;AAExC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C,SAAgB,iBAAiB,CAC/B,QAAgB,EAChB,MAAc,EACd,YAAoB,EACpB,KAAa;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/internal/core/providers/util.ts"],"names":[],"mappings":";;;AAIA,gEAA0E;AAC1E,6DAA2E;AAC3E,sCAAyC;AACzC,gDAAwC;AAExC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C,SAAgB,iBAAiB,CAC/B,QAAgB,EAChB,MAAc,EACd,YAAoB,EACpB,KAAa,EACb,UAAkB;IAElB,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,qBAAY,CAAC,oBAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;KAC1E;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACzB,MAAM,IAAI,GAAG,CAAC;KACf;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,YAAY,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,UAAU,GAAG,IAAA,8CAA4B,EAC7C,QAAQ,EACR,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,EACrB,UAAU,CACX,CAAC;QAEF,IAAI,UAAU,KAAK,SAAS,EAAE;YAC5B,MAAM,IAAI,qBAAY,CAAC,oBAAM,CAAC,OAAO,CAAC,eAAe,EAAE;gBACrD,QAAQ;gBACR,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;SACJ;QAED,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC9B;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAnCD,8CAmCC;AAED,SAAgB,qCAAqC,CACnD,cAA4C;IAE5C,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;QACjC,OAAO,cAAc,CAAC;KACvB;IAED,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEnD,OAAO,iBAAiB,CACtB,cAAc,CAAC,QAAQ,EACvB,cAAc,CAAC,IAAI,EACnB,cAAc,CAAC,YAAY,EAC3B,cAAc,CAAC,KAAK,EACpB,cAAc,CAAC,UAAU,CAC1B,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;;QAAC,OAAA,CAAC;YACb,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,MAAA,cAAc,CAAC,eAAe,mCAAI,gDAA+B;SAC3E,CAAC,CAAA;KAAA,CAAC,CAAC;AACN,CAAC;AAnBD,sFAmBC"}
|
|
@@ -38,7 +38,7 @@ export declare class SimpleTaskDefinition implements TaskDefinition {
|
|
|
38
38
|
*/
|
|
39
39
|
setAction<ArgsT extends TaskArguments>(action: ActionType<ArgsT>): this;
|
|
40
40
|
/**
|
|
41
|
-
* Adds a
|
|
41
|
+
* Adds a parameter to the task's definition.
|
|
42
42
|
*
|
|
43
43
|
* @remarks This will throw if the `name` is already used by this task or
|
|
44
44
|
* by Hardhat's global parameters.
|
|
@@ -51,7 +51,7 @@ export declare class SimpleTaskDefinition implements TaskDefinition {
|
|
|
51
51
|
*/
|
|
52
52
|
addParam<T>(name: string, description?: string, defaultValue?: T, type?: ArgumentType<T>, isOptional?: boolean): this;
|
|
53
53
|
/**
|
|
54
|
-
* Adds an optional
|
|
54
|
+
* Adds an optional parameter to the task's definition.
|
|
55
55
|
*
|
|
56
56
|
* @see addParam.
|
|
57
57
|
*
|
|
@@ -62,7 +62,7 @@ export declare class SimpleTaskDefinition implements TaskDefinition {
|
|
|
62
62
|
*/
|
|
63
63
|
addOptionalParam<T>(name: string, description?: string, defaultValue?: T, type?: ArgumentType<T>): this;
|
|
64
64
|
/**
|
|
65
|
-
* Adds a boolean
|
|
65
|
+
* Adds a boolean parameter or flag to the task's definition.
|
|
66
66
|
*
|
|
67
67
|
* Flags are params with default value set to `false`, and that don't expect
|
|
68
68
|
* values to be set in the CLI. A normal boolean param must be called with
|
|
@@ -73,7 +73,7 @@ export declare class SimpleTaskDefinition implements TaskDefinition {
|
|
|
73
73
|
*/
|
|
74
74
|
addFlag(name: string, description?: string): this;
|
|
75
75
|
/**
|
|
76
|
-
* Adds a positional
|
|
76
|
+
* Adds a positional parameter to the task's definition.
|
|
77
77
|
*
|
|
78
78
|
* @remarks This will throw if the `name` is already used by this task or
|
|
79
79
|
* by Hardhat's global parameters.
|
|
@@ -89,7 +89,7 @@ export declare class SimpleTaskDefinition implements TaskDefinition {
|
|
|
89
89
|
*/
|
|
90
90
|
addPositionalParam<T>(name: string, description?: string, defaultValue?: T, type?: ArgumentType<T>, isOptional?: boolean): this;
|
|
91
91
|
/**
|
|
92
|
-
* Adds an optional positional
|
|
92
|
+
* Adds an optional positional parameter to the task's definition.
|
|
93
93
|
*
|
|
94
94
|
* @see addPositionalParam.
|
|
95
95
|
*
|
|
@@ -100,7 +100,7 @@ export declare class SimpleTaskDefinition implements TaskDefinition {
|
|
|
100
100
|
*/
|
|
101
101
|
addOptionalPositionalParam<T>(name: string, description?: string, defaultValue?: T, type?: ArgumentType<T>): this;
|
|
102
102
|
/**
|
|
103
|
-
* Adds a variadic positional
|
|
103
|
+
* Adds a variadic positional parameter to the task's definition. Variadic
|
|
104
104
|
* positional params act as `...rest` parameters in JavaScript.
|
|
105
105
|
*
|
|
106
106
|
* @param name The parameter's name.
|
|
@@ -111,7 +111,7 @@ export declare class SimpleTaskDefinition implements TaskDefinition {
|
|
|
111
111
|
*/
|
|
112
112
|
addVariadicPositionalParam<T>(name: string, description?: string, defaultValue?: T[] | T, type?: ArgumentType<T>, isOptional?: boolean): this;
|
|
113
113
|
/**
|
|
114
|
-
* Adds a positional
|
|
114
|
+
* Adds a positional parameter to the task's definition.
|
|
115
115
|
*
|
|
116
116
|
* This will check if the `name` is already used and
|
|
117
117
|
* if the parameter is being added after a varidic argument.
|
|
@@ -123,7 +123,7 @@ export declare class SimpleTaskDefinition implements TaskDefinition {
|
|
|
123
123
|
*/
|
|
124
124
|
addOptionalVariadicPositionalParam<T>(name: string, description?: string, defaultValue?: T[] | T, type?: ArgumentType<T>): this;
|
|
125
125
|
/**
|
|
126
|
-
* Adds a positional
|
|
126
|
+
* Adds a positional parameter to the task's definition.
|
|
127
127
|
*
|
|
128
128
|
* @param definition the param's definition
|
|
129
129
|
*/
|
|
@@ -79,7 +79,7 @@ class SimpleTaskDefinition {
|
|
|
79
79
|
return this;
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
|
-
* Adds a
|
|
82
|
+
* Adds a parameter to the task's definition.
|
|
83
83
|
*
|
|
84
84
|
* @remarks This will throw if the `name` is already used by this task or
|
|
85
85
|
* by Hardhat's global parameters.
|
|
@@ -119,7 +119,7 @@ class SimpleTaskDefinition {
|
|
|
119
119
|
return this;
|
|
120
120
|
}
|
|
121
121
|
/**
|
|
122
|
-
* Adds an optional
|
|
122
|
+
* Adds an optional parameter to the task's definition.
|
|
123
123
|
*
|
|
124
124
|
* @see addParam.
|
|
125
125
|
*
|
|
@@ -132,7 +132,7 @@ class SimpleTaskDefinition {
|
|
|
132
132
|
return this.addParam(name, description, defaultValue, type, true);
|
|
133
133
|
}
|
|
134
134
|
/**
|
|
135
|
-
* Adds a boolean
|
|
135
|
+
* Adds a boolean parameter or flag to the task's definition.
|
|
136
136
|
*
|
|
137
137
|
* Flags are params with default value set to `false`, and that don't expect
|
|
138
138
|
* values to be set in the CLI. A normal boolean param must be called with
|
|
@@ -156,7 +156,7 @@ class SimpleTaskDefinition {
|
|
|
156
156
|
return this;
|
|
157
157
|
}
|
|
158
158
|
/**
|
|
159
|
-
* Adds a positional
|
|
159
|
+
* Adds a positional parameter to the task's definition.
|
|
160
160
|
*
|
|
161
161
|
* @remarks This will throw if the `name` is already used by this task or
|
|
162
162
|
* by Hardhat's global parameters.
|
|
@@ -202,7 +202,7 @@ class SimpleTaskDefinition {
|
|
|
202
202
|
return this;
|
|
203
203
|
}
|
|
204
204
|
/**
|
|
205
|
-
* Adds an optional positional
|
|
205
|
+
* Adds an optional positional parameter to the task's definition.
|
|
206
206
|
*
|
|
207
207
|
* @see addPositionalParam.
|
|
208
208
|
*
|
|
@@ -215,7 +215,7 @@ class SimpleTaskDefinition {
|
|
|
215
215
|
return this.addPositionalParam(name, description, defaultValue, type, true);
|
|
216
216
|
}
|
|
217
217
|
/**
|
|
218
|
-
* Adds a variadic positional
|
|
218
|
+
* Adds a variadic positional parameter to the task's definition. Variadic
|
|
219
219
|
* positional params act as `...rest` parameters in JavaScript.
|
|
220
220
|
*
|
|
221
221
|
* @param name The parameter's name.
|
|
@@ -259,7 +259,7 @@ class SimpleTaskDefinition {
|
|
|
259
259
|
return this;
|
|
260
260
|
}
|
|
261
261
|
/**
|
|
262
|
-
* Adds a positional
|
|
262
|
+
* Adds a positional parameter to the task's definition.
|
|
263
263
|
*
|
|
264
264
|
* This will check if the `name` is already used and
|
|
265
265
|
* if the parameter is being added after a varidic argument.
|
|
@@ -273,7 +273,7 @@ class SimpleTaskDefinition {
|
|
|
273
273
|
return this.addVariadicPositionalParam(name, description, defaultValue, type, true);
|
|
274
274
|
}
|
|
275
275
|
/**
|
|
276
|
-
* Adds a positional
|
|
276
|
+
* Adds a positional parameter to the task's definition.
|
|
277
277
|
*
|
|
278
278
|
* @param definition the param's definition
|
|
279
279
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/internal/hardhat-network/jsonrpc/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/internal/hardhat-network/jsonrpc/server.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EACf,aAAa,IAAI,cAAc,EAChC,MAAM,gBAAgB,CAAC;AAOxB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAa;gBAElB,MAAM,EAAE,mBAAmB;IAgBhC,WAAW,qBAAwB,eAAe,CAIvD;IAEK,MAAM,QAAO,QAAQ;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAS5D;IAEK,eAAe,sBAUpB;IAEK,KAAK,sBA6BV;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/internal/hardhat-network/jsonrpc/server.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/internal/hardhat-network/jsonrpc/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Block } from "@ethereumjs/block";
|
|
3
|
+
import Common from "@ethereumjs/common";
|
|
4
|
+
import { TypedTransaction } from "@ethereumjs/tx";
|
|
5
|
+
import { BN } from "ethereumjs-util";
|
|
6
|
+
import { BlockchainData } from "./BlockchainData";
|
|
7
|
+
import { RpcReceiptOutput } from "./output";
|
|
8
|
+
export declare abstract class BlockchainBase {
|
|
9
|
+
protected _common: Common;
|
|
10
|
+
protected readonly _data: BlockchainData;
|
|
11
|
+
constructor(_common: Common);
|
|
12
|
+
abstract addBlock(block: Block): Promise<Block>;
|
|
13
|
+
addTransactionReceipts(receipts: RpcReceiptOutput[]): void;
|
|
14
|
+
delBlock(blockHash: Buffer): Promise<void>;
|
|
15
|
+
deleteBlock(blockHash: Buffer): void;
|
|
16
|
+
getBlock(blockHashOrNumber: Buffer | BN | number): Promise<Block | null>;
|
|
17
|
+
abstract getLatestBlockNumber(): BN;
|
|
18
|
+
getLatestBlock(): Promise<Block>;
|
|
19
|
+
getLocalTransaction(transactionHash: Buffer): TypedTransaction | undefined;
|
|
20
|
+
iterator(_name: string, _onBlock: (block: Block, reorg: boolean) => void | Promise<void>): Promise<number | void>;
|
|
21
|
+
putBlock(block: Block): Promise<void>;
|
|
22
|
+
reserveBlocks(count: BN, interval: BN, previousBlockStateRoot: Buffer, previousBlockTotalDifficulty: BN): void;
|
|
23
|
+
protected _delBlock(blockNumber: BN): void;
|
|
24
|
+
protected _computeTotalDifficulty(block: Block): Promise<BN>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=BlockchainBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockchainBase.d.ts","sourceRoot":"","sources":["../../../src/internal/hardhat-network/provider/BlockchainBase.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAGrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI5C,8BAAsB,cAAc;IAGtB,SAAS,CAAC,OAAO,EAAE,MAAM;IAFrC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;gBAEnB,OAAO,EAAE,MAAM;aAIrB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAE/C,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE;IAM7C,QAAQ,CAAC,SAAS,EAAE,MAAM;IAIhC,WAAW,CAAC,SAAS,EAAE,MAAM;IAQvB,QAAQ,CACnB,iBAAiB,EAAE,MAAM,GAAG,EAAE,GAAG,MAAM,GACtC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;aAiBR,oBAAoB,IAAI,EAAE;IAE7B,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC;IAQtC,mBAAmB,CACxB,eAAe,EAAE,MAAM,GACtB,gBAAgB,GAAG,SAAS;IAIxB,QAAQ,CACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC/D,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIZ,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,aAAa,CAClB,KAAK,EAAE,EAAE,EACT,QAAQ,EAAE,EAAE,EACZ,sBAAsB,EAAE,MAAM,EAC9B,4BAA4B,EAAE,EAAE;IAWlC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI;cAiB1B,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;CAoBnE"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BlockchainBase = void 0;
|
|
4
|
+
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
5
|
+
const errors_1 = require("../../core/errors");
|
|
6
|
+
const BlockchainData_1 = require("./BlockchainData");
|
|
7
|
+
/* eslint-disable @nomiclabs/hardhat-internal-rules/only-hardhat-error */
|
|
8
|
+
class BlockchainBase {
|
|
9
|
+
constructor(_common) {
|
|
10
|
+
this._common = _common;
|
|
11
|
+
this._data = new BlockchainData_1.BlockchainData(_common);
|
|
12
|
+
}
|
|
13
|
+
addTransactionReceipts(receipts) {
|
|
14
|
+
for (const receipt of receipts) {
|
|
15
|
+
this._data.addTransactionReceipt(receipt);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async delBlock(blockHash) {
|
|
19
|
+
this.deleteBlock(blockHash);
|
|
20
|
+
}
|
|
21
|
+
deleteBlock(blockHash) {
|
|
22
|
+
const block = this._data.getBlockByHash(blockHash);
|
|
23
|
+
if (block === undefined) {
|
|
24
|
+
throw new Error("Block not found");
|
|
25
|
+
}
|
|
26
|
+
this._delBlock(block.header.number);
|
|
27
|
+
}
|
|
28
|
+
async getBlock(blockHashOrNumber) {
|
|
29
|
+
var _a, _b, _c;
|
|
30
|
+
if ((typeof blockHashOrNumber === "number" || ethereumjs_util_1.BN.isBN(blockHashOrNumber)) &&
|
|
31
|
+
this._data.isReservedBlock(new ethereumjs_util_1.BN(blockHashOrNumber))) {
|
|
32
|
+
this._data.fulfillBlockReservation(new ethereumjs_util_1.BN(blockHashOrNumber));
|
|
33
|
+
}
|
|
34
|
+
if (typeof blockHashOrNumber === "number") {
|
|
35
|
+
return (_a = this._data.getBlockByNumber(new ethereumjs_util_1.BN(blockHashOrNumber))) !== null && _a !== void 0 ? _a : null;
|
|
36
|
+
}
|
|
37
|
+
if (ethereumjs_util_1.BN.isBN(blockHashOrNumber)) {
|
|
38
|
+
return (_b = this._data.getBlockByNumber(blockHashOrNumber)) !== null && _b !== void 0 ? _b : null;
|
|
39
|
+
}
|
|
40
|
+
return (_c = this._data.getBlockByHash(blockHashOrNumber)) !== null && _c !== void 0 ? _c : null;
|
|
41
|
+
}
|
|
42
|
+
async getLatestBlock() {
|
|
43
|
+
const block = await this.getBlock(this.getLatestBlockNumber());
|
|
44
|
+
if (block === null) {
|
|
45
|
+
throw new Error("Block not found");
|
|
46
|
+
}
|
|
47
|
+
return block;
|
|
48
|
+
}
|
|
49
|
+
getLocalTransaction(transactionHash) {
|
|
50
|
+
return this._data.getTransaction(transactionHash);
|
|
51
|
+
}
|
|
52
|
+
iterator(_name, _onBlock) {
|
|
53
|
+
throw new Error("Method not implemented.");
|
|
54
|
+
}
|
|
55
|
+
async putBlock(block) {
|
|
56
|
+
await this.addBlock(block);
|
|
57
|
+
}
|
|
58
|
+
reserveBlocks(count, interval, previousBlockStateRoot, previousBlockTotalDifficulty) {
|
|
59
|
+
this._data.reserveBlocks(this.getLatestBlockNumber().addn(1), count, interval, previousBlockStateRoot, previousBlockTotalDifficulty);
|
|
60
|
+
}
|
|
61
|
+
_delBlock(blockNumber) {
|
|
62
|
+
let i = blockNumber;
|
|
63
|
+
while (i.lte(this.getLatestBlockNumber())) {
|
|
64
|
+
if (this._data.isReservedBlock(i)) {
|
|
65
|
+
const reservation = this._data.cancelReservationWithBlock(i);
|
|
66
|
+
i = reservation.last.addn(1);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const current = this._data.getBlockByNumber(i);
|
|
70
|
+
if (current !== undefined) {
|
|
71
|
+
this._data.removeBlock(current);
|
|
72
|
+
}
|
|
73
|
+
i = i.addn(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async _computeTotalDifficulty(block) {
|
|
78
|
+
const difficulty = block.header.difficulty;
|
|
79
|
+
const blockNumber = block.header.number;
|
|
80
|
+
if (blockNumber.eqn(0)) {
|
|
81
|
+
return difficulty;
|
|
82
|
+
}
|
|
83
|
+
const parentBlock = await this.getBlock(blockNumber.subn(1));
|
|
84
|
+
(0, errors_1.assertHardhatInvariant)(parentBlock !== null, "Parent block should exist");
|
|
85
|
+
const parentHash = parentBlock.hash();
|
|
86
|
+
const parentTD = this._data.getTotalDifficulty(parentHash);
|
|
87
|
+
(0, errors_1.assertHardhatInvariant)(parentTD !== undefined, "Parent block should have total difficulty");
|
|
88
|
+
return parentTD.add(difficulty);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.BlockchainBase = BlockchainBase;
|
|
92
|
+
//# sourceMappingURL=BlockchainBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockchainBase.js","sourceRoot":"","sources":["../../../src/internal/hardhat-network/provider/BlockchainBase.ts"],"names":[],"mappings":";;;AAGA,qDAAqC;AAErC,8CAA2D;AAC3D,qDAAkD;AAGlD,yEAAyE;AAEzE,MAAsB,cAAc;IAGlC,YAAsB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,+BAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAIM,sBAAsB,CAAC,QAA4B;QACxD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;SAC3C;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,SAAiB;QACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAEM,WAAW,CAAC,SAAiB;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,QAAQ,CACnB,iBAAuC;;QAEvC,IACE,CAAC,OAAO,iBAAiB,KAAK,QAAQ,IAAI,oBAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,oBAAE,CAAC,iBAAiB,CAAC,CAAC,EACrD;YACA,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,oBAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;SAC/D;QAED,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;YACzC,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,oBAAE,CAAC,iBAAiB,CAAC,CAAC,mCAAI,IAAI,CAAC;SACvE;QACD,IAAI,oBAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAC9B,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,mCAAI,IAAI,CAAC;SAC/D;QACD,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,mCAAI,IAAI,CAAC;IAC9D,CAAC;IAIM,KAAK,CAAC,cAAc;QACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC/D,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACpC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,mBAAmB,CACxB,eAAuB;QAEvB,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;IAEM,QAAQ,CACb,KAAa,EACb,QAAgE;QAEhE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,KAAY;QAChC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEM,aAAa,CAClB,KAAS,EACT,QAAY,EACZ,sBAA8B,EAC9B,4BAAgC;QAEhC,IAAI,CAAC,KAAK,CAAC,aAAa,CACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,sBAAsB,EACtB,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAES,SAAS,CAAC,WAAe;QACjC,IAAI,CAAC,GAAG,WAAW,CAAC;QAEpB,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE;YACzC,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;gBACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;gBAC7D,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC9B;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC/C,IAAI,OAAO,KAAK,SAAS,EAAE;oBACzB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBACjC;gBACD,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACf;SACF;IACH,CAAC;IAES,KAAK,CAAC,uBAAuB,CAAC,KAAY;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAExC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,UAAU,CAAC;SACnB;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAA,+BAAsB,EAAC,WAAW,KAAK,IAAI,EAAE,2BAA2B,CAAC,CAAC;QAE1E,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAA,+BAAsB,EACpB,QAAQ,KAAK,SAAS,EACtB,2CAA2C,CAC5C,CAAC;QAEF,OAAO,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;CACF;AA7HD,wCA6HC"}
|
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Block } from "@ethereumjs/block";
|
|
3
|
+
import Common from "@ethereumjs/common";
|
|
3
4
|
import { TypedTransaction } from "@ethereumjs/tx";
|
|
4
5
|
import { BN } from "ethereumjs-util";
|
|
5
6
|
import { FilterParams } from "./node-types";
|
|
6
7
|
import { RpcLogOutput, RpcReceiptOutput } from "./output";
|
|
8
|
+
interface Reservation {
|
|
9
|
+
first: BN;
|
|
10
|
+
last: BN;
|
|
11
|
+
interval: BN;
|
|
12
|
+
previousBlockStateRoot: Buffer;
|
|
13
|
+
previousBlockTotalDifficulty: BN;
|
|
14
|
+
}
|
|
7
15
|
export declare class BlockchainData {
|
|
16
|
+
private _common;
|
|
8
17
|
private _blocksByNumber;
|
|
9
18
|
private _blocksByHash;
|
|
10
19
|
private _blocksByTransactions;
|
|
11
20
|
private _transactions;
|
|
12
21
|
private _transactionReceipts;
|
|
13
22
|
private _totalDifficulty;
|
|
23
|
+
private _blockReservations;
|
|
24
|
+
constructor(_common: Common);
|
|
25
|
+
reserveBlocks(first: BN, count: BN, interval: BN, previousBlockStateRoot: Buffer, previousBlockTotalDifficulty: BN): void;
|
|
14
26
|
getBlockByNumber(blockNumber: BN): Block | undefined;
|
|
15
27
|
getBlockByHash(blockHash: Buffer): Block | undefined;
|
|
16
28
|
getBlockByTransactionHash(transactionHash: Buffer): Block | undefined;
|
|
@@ -19,8 +31,28 @@ export declare class BlockchainData {
|
|
|
19
31
|
getTotalDifficulty(blockHash: Buffer): BN | undefined;
|
|
20
32
|
getLogs(filterParams: FilterParams): RpcLogOutput[];
|
|
21
33
|
addBlock(block: Block, totalDifficulty: BN): void;
|
|
34
|
+
/**
|
|
35
|
+
* WARNING: this method can leave the blockchain in an invalid state where
|
|
36
|
+
* there are gaps between blocks. Ideally we should have a method that removes
|
|
37
|
+
* the given block and all the following blocks.
|
|
38
|
+
*/
|
|
22
39
|
removeBlock(block: Block): void;
|
|
23
40
|
addTransaction(transaction: TypedTransaction): void;
|
|
24
41
|
addTransactionReceipt(receipt: RpcReceiptOutput): void;
|
|
42
|
+
isReservedBlock(blockNumber: BN): boolean;
|
|
43
|
+
private _findBlockReservation;
|
|
44
|
+
/**
|
|
45
|
+
* WARNING: this method only removes the given reservation and can result in
|
|
46
|
+
* gaps in the reservations array. Ideally we should have a method that
|
|
47
|
+
* removes the given reservation and all the following reservations.
|
|
48
|
+
*/
|
|
49
|
+
private _removeReservation;
|
|
50
|
+
/**
|
|
51
|
+
* Cancel and return the reservation that has block `blockNumber`
|
|
52
|
+
*/
|
|
53
|
+
cancelReservationWithBlock(blockNumber: BN): Reservation;
|
|
54
|
+
fulfillBlockReservation(blockNumber: BN): void;
|
|
55
|
+
private _calculateTimestampForReservedBlock;
|
|
25
56
|
}
|
|
57
|
+
export {};
|
|
26
58
|
//# sourceMappingURL=BlockchainData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockchainData.d.ts","sourceRoot":"","sources":["../../../src/internal/hardhat-network/provider/BlockchainData.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAe,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"BlockchainData.d.ts","sourceRoot":"","sources":["../../../src/internal/hardhat-network/provider/BlockchainData.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAe,MAAM,iBAAiB,CAAC;AAIlD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1D,UAAU,WAAW;IACnB,KAAK,EAAE,EAAE,CAAC;IACV,IAAI,EAAE,EAAE,CAAC;IACT,QAAQ,EAAE,EAAE,CAAC;IACb,sBAAsB,EAAE,MAAM,CAAC;IAC/B,4BAA4B,EAAE,EAAE,CAAC;CAClC;AAED,qBAAa,cAAc;IASb,OAAO,CAAC,OAAO;IAR3B,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,qBAAqB,CAAiC;IAC9D,OAAO,CAAC,aAAa,CAA4C;IACjE,OAAO,CAAC,oBAAoB,CAA4C;IACxE,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,kBAAkB,CAA8B;gBAEpC,OAAO,EAAE,MAAM;IAE5B,aAAa,CAClB,KAAK,EAAE,EAAE,EACT,KAAK,EAAE,EAAE,EACT,QAAQ,EAAE,EAAE,EACZ,sBAAsB,EAAE,MAAM,EAC9B,4BAA4B,EAAE,EAAE;IAY3B,gBAAgB,CAAC,WAAW,EAAE,EAAE;IAIhC,cAAc,CAAC,SAAS,EAAE,MAAM;IAIhC,yBAAyB,CAAC,eAAe,EAAE,MAAM;IAIjD,cAAc,CAAC,eAAe,EAAE,MAAM;IAItC,qBAAqB,CAAC,eAAe,EAAE,MAAM;IAI7C,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAIpC,OAAO,CAAC,YAAY,EAAE,YAAY;IAmClC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE;IAcjD;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,KAAK;IAexB,cAAc,CAAC,WAAW,EAAE,gBAAgB;IAI5C,qBAAqB,CAAC,OAAO,EAAE,gBAAgB;IAI/C,eAAe,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO;IAIhD,OAAO,CAAC,qBAAqB;IAO7B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACI,0BAA0B,CAAC,WAAW,EAAE,EAAE,GAAG,WAAW;IAIxD,uBAAuB,CAAC,WAAW,EAAE,EAAE;IA6C9C,OAAO,CAAC,mCAAmC;CA4B5C"}
|