hardhat 2.20.1 → 2.21.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/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -3
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts +6 -6
- package/internal/core/providers/construction.d.ts.map +1 -1
- package/internal/core/providers/construction.js +28 -4
- package/internal/core/providers/construction.js.map +1 -1
- package/internal/core/providers/http.d.ts +2 -0
- package/internal/core/providers/http.d.ts.map +1 -1
- package/internal/core/providers/http.js +2 -1
- package/internal/core/providers/http.js.map +1 -1
- package/internal/core/runtime-environment.d.ts.map +1 -1
- package/internal/core/runtime-environment.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.d.ts +0 -2
- package/internal/hardhat-network/jsonrpc/client.d.ts.map +1 -1
- package/internal/hardhat-network/jsonrpc/client.js +0 -16
- package/internal/hardhat-network/jsonrpc/client.js.map +1 -1
- package/internal/hardhat-network/jsonrpc/handler.js +9 -1
- package/internal/hardhat-network/jsonrpc/handler.js.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.d.ts +5 -5
- package/internal/hardhat-network/provider/BlockchainData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/BlockchainData.js +10 -10
- package/internal/hardhat-network/provider/BlockchainData.js.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts +0 -7
- package/internal/hardhat-network/provider/HardhatBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/HardhatBlockchain.js +2 -14
- package/internal/hardhat-network/provider/HardhatBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/TxPool.d.ts +3 -2
- package/internal/hardhat-network/provider/TxPool.d.ts.map +1 -1
- package/internal/hardhat-network/provider/TxPool.js +16 -16
- package/internal/hardhat-network/provider/TxPool.js.map +1 -1
- package/internal/hardhat-network/provider/ethereumjs-workarounds.js +1 -1
- package/internal/hardhat-network/provider/ethereumjs-workarounds.js.map +1 -1
- package/internal/hardhat-network/provider/filter.d.ts +6 -5
- package/internal/hardhat-network/provider/filter.d.ts.map +1 -1
- package/internal/hardhat-network/provider/filter.js +2 -2
- package/internal/hardhat-network/provider/filter.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts +0 -7
- package/internal/hardhat-network/provider/fork/ForkBlockchain.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js +4 -21
- package/internal/hardhat-network/provider/fork/ForkBlockchain.js.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts +13 -19
- package/internal/hardhat-network/provider/fork/ForkStateManager.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/ForkStateManager.js +61 -59
- package/internal/hardhat-network/provider/fork/ForkStateManager.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js +0 -3
- package/internal/hardhat-network/provider/fork/rpcToBlockData.js.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts +2 -2
- package/internal/hardhat-network/provider/fork/rpcToTxData.d.ts.map +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.js +1 -1
- package/internal/hardhat-network/provider/fork/rpcToTxData.js.map +1 -1
- package/internal/hardhat-network/provider/modules/base.js +4 -4
- package/internal/hardhat-network/provider/modules/base.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +9 -16
- package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.d.ts +6 -84
- package/internal/hardhat-network/provider/modules/logger.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/logger.js +3 -530
- package/internal/hardhat-network/provider/modules/logger.js.map +1 -1
- package/internal/hardhat-network/provider/node-types.d.ts +2 -65
- package/internal/hardhat-network/provider/node-types.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node-types.js +0 -5
- package/internal/hardhat-network/provider/node-types.js.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +2 -6
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +79 -153
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/hardhat-network/provider/output.d.ts +0 -14
- package/internal/hardhat-network/provider/output.d.ts.map +1 -1
- package/internal/hardhat-network/provider/output.js +0 -264
- package/internal/hardhat-network/provider/output.js.map +1 -1
- package/internal/hardhat-network/provider/provider.d.ts +28 -25
- package/internal/hardhat-network/provider/provider.d.ts.map +1 -1
- package/internal/hardhat-network/provider/provider.js +349 -185
- package/internal/hardhat-network/provider/provider.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts +10 -8
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js +9 -9
- package/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts +10 -8
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js +9 -9
- package/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts +10 -9
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js +7 -6
- package/internal/hardhat-network/provider/transactions/FakeSenderTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts +6 -5
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts +5 -4
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts +8 -7
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js +2 -2
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts +8 -7
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.d.ts.map +1 -1
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js +2 -2
- package/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.js.map +1 -1
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts +5 -4
- package/internal/hardhat-network/provider/types/HardhatBlockchainInterface.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/convertToEdr.d.ts +14 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.d.ts.map +1 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.js +194 -0
- package/internal/hardhat-network/provider/utils/convertToEdr.js.map +1 -0
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts +0 -1
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js +1 -5
- package/internal/hardhat-network/provider/utils/getCurrentTimestamp.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeCommon.js +1 -3
- package/internal/hardhat-network/provider/utils/makeCommon.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts +2 -2
- package/internal/hardhat-network/provider/utils/makeFakeSignature.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js +1 -15
- package/internal/hardhat-network/provider/utils/makeFakeSignature.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts +10 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/makeForkClient.js +38 -18
- package/internal/hardhat-network/provider/utils/makeForkClient.js.map +1 -1
- package/internal/hardhat-network/provider/utils/makeStateTrie.js +2 -2
- package/internal/hardhat-network/provider/utils/makeStateTrie.js.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts +3 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js +2 -6
- package/internal/hardhat-network/provider/utils/putGenesisBlock.js.map +1 -1
- package/internal/hardhat-network/provider/utils/random.d.ts +1 -0
- package/internal/hardhat-network/provider/utils/random.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/random.js +7 -1
- package/internal/hardhat-network/provider/utils/random.js.map +1 -1
- package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts +1 -1
- package/internal/hardhat-network/provider/utils/reorgs-protection.d.ts.map +1 -1
- package/internal/hardhat-network/provider/utils/reorgs-protection.js +5 -5
- package/internal/hardhat-network/provider/utils/reorgs-protection.js.map +1 -1
- package/internal/hardhat-network/provider/vm/exit.d.ts +22 -0
- package/internal/hardhat-network/provider/vm/exit.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/exit.js +93 -0
- package/internal/hardhat-network/provider/vm/exit.js.map +1 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.d.ts +29 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.js +43 -0
- package/internal/hardhat-network/provider/vm/minimal-vm.js.map +1 -0
- package/internal/hardhat-network/provider/vm/proxy-vm.d.ts +36 -0
- package/internal/hardhat-network/provider/vm/proxy-vm.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/proxy-vm.js +73 -0
- package/internal/hardhat-network/provider/vm/proxy-vm.js.map +1 -0
- package/internal/hardhat-network/provider/vm/types.d.ts +28 -0
- package/internal/hardhat-network/provider/vm/types.d.ts.map +1 -0
- package/internal/hardhat-network/provider/vm/types.js +3 -0
- package/internal/hardhat-network/provider/vm/types.js.map +1 -0
- package/internal/hardhat-network/stack-traces/consoleLogger.d.ts +6 -0
- package/internal/hardhat-network/stack-traces/consoleLogger.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/consoleLogger.js +33 -16
- package/internal/hardhat-network/stack-traces/consoleLogger.js.map +1 -1
- package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts +1 -2
- package/internal/hardhat-network/stack-traces/contracts-identifier.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/contracts-identifier.js +6 -7
- package/internal/hardhat-network/stack-traces/contracts-identifier.js.map +1 -1
- package/internal/hardhat-network/stack-traces/debug.js +6 -6
- 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 +13 -7
- package/internal/hardhat-network/stack-traces/error-inferrer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/message-trace.d.ts +8 -3
- package/internal/hardhat-network/stack-traces/message-trace.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/message-trace.js +22 -1
- package/internal/hardhat-network/stack-traces/message-trace.js.map +1 -1
- package/internal/hardhat-network/stack-traces/model.d.ts +8 -0
- package/internal/hardhat-network/stack-traces/model.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/model.js +52 -0
- package/internal/hardhat-network/stack-traces/model.js.map +1 -1
- package/internal/hardhat-network/stack-traces/opcodes.d.ts +1 -0
- package/internal/hardhat-network/stack-traces/opcodes.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/opcodes.js +5 -1
- package/internal/hardhat-network/stack-traces/opcodes.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/solidityTracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/solidityTracer.js +5 -5
- package/internal/hardhat-network/stack-traces/solidityTracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js +28 -34
- package/internal/hardhat-network/stack-traces/vm-debug-tracer.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts +7 -0
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js +69 -2
- package/internal/hardhat-network/stack-traces/vm-trace-decoder.js.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts +7 -12
- package/internal/hardhat-network/stack-traces/vm-tracer.d.ts.map +1 -1
- package/internal/hardhat-network/stack-traces/vm-tracer.js +46 -65
- package/internal/hardhat-network/stack-traces/vm-tracer.js.map +1 -1
- package/internal/util/date.d.ts +1 -0
- package/internal/util/date.d.ts.map +1 -1
- package/internal/util/date.js +5 -1
- package/internal/util/date.js.map +1 -1
- package/internal/util/hardforks.d.ts +2 -0
- package/internal/util/hardforks.d.ts.map +1 -1
- package/internal/util/hardforks.js +27 -1
- package/internal/util/hardforks.js.map +1 -1
- package/package.json +16 -14
- package/src/internal/core/providers/construction.ts +7 -9
- package/src/internal/core/providers/http.ts +3 -1
- package/src/internal/core/runtime-environment.ts +2 -1
- package/src/internal/hardhat-network/jsonrpc/client.ts +1 -28
- package/src/internal/hardhat-network/jsonrpc/handler.ts +9 -1
- package/src/internal/hardhat-network/provider/modules/logger.ts +6 -801
- package/src/internal/hardhat-network/provider/node-types.ts +2 -89
- package/src/internal/hardhat-network/provider/output.ts +0 -352
- package/src/internal/hardhat-network/provider/provider.ts +501 -261
- package/src/internal/hardhat-network/provider/utils/convertToEdr.ts +232 -0
- package/src/internal/hardhat-network/provider/utils/getCurrentTimestamp.ts +0 -4
- package/src/internal/hardhat-network/provider/utils/makeCommon.ts +1 -12
- package/src/internal/hardhat-network/provider/utils/makeForkClient.ts +63 -24
- package/src/internal/hardhat-network/provider/utils/random.ts +8 -1
- package/src/internal/hardhat-network/provider/utils/reorgs-protection.ts +5 -5
- package/src/internal/hardhat-network/provider/vm/exit.ts +101 -0
- package/src/internal/hardhat-network/provider/vm/minimal-vm.ts +98 -0
- package/src/internal/hardhat-network/provider/vm/types.ts +32 -0
- package/src/internal/hardhat-network/stack-traces/consoleLogger.ts +40 -21
- package/src/internal/hardhat-network/stack-traces/contracts-identifier.ts +10 -12
- package/src/internal/hardhat-network/stack-traces/debug.ts +6 -6
- package/src/internal/hardhat-network/stack-traces/error-inferrer.ts +15 -8
- package/src/internal/hardhat-network/stack-traces/message-trace.ts +40 -4
- package/src/internal/hardhat-network/stack-traces/model.ts +61 -0
- package/src/internal/hardhat-network/stack-traces/opcodes.ts +4 -0
- package/src/internal/hardhat-network/stack-traces/solidity-errors.ts +2 -2
- package/src/internal/hardhat-network/stack-traces/solidityTracer.ts +6 -5
- package/src/internal/hardhat-network/stack-traces/vm-trace-decoder.ts +113 -4
- package/src/internal/hardhat-network/stack-traces/vm-tracer.ts +67 -95
- package/src/internal/util/date.ts +4 -0
- package/src/internal/util/hardforks.ts +52 -0
- package/src/internal/hardhat-network/provider/BlockchainBase.ts +0 -185
- package/src/internal/hardhat-network/provider/BlockchainData.ts +0 -261
- package/src/internal/hardhat-network/provider/HardhatBlockchain.ts +0 -140
- package/src/internal/hardhat-network/provider/PoolState.ts +0 -48
- package/src/internal/hardhat-network/provider/TransactionQueue.ts +0 -158
- package/src/internal/hardhat-network/provider/TxPool.ts +0 -715
- package/src/internal/hardhat-network/provider/ethereumjs-workarounds.ts +0 -21
- package/src/internal/hardhat-network/provider/filter.ts +0 -142
- package/src/internal/hardhat-network/provider/fork/ForkBlockchain.ts +0 -433
- package/src/internal/hardhat-network/provider/fork/ForkStateManager.ts +0 -480
- package/src/internal/hardhat-network/provider/fork/rpcToBlockData.ts +0 -35
- package/src/internal/hardhat-network/provider/fork/rpcToTxData.ts +0 -44
- package/src/internal/hardhat-network/provider/modules/base.ts +0 -156
- package/src/internal/hardhat-network/provider/modules/debug.ts +0 -104
- package/src/internal/hardhat-network/provider/modules/eth.ts +0 -1781
- package/src/internal/hardhat-network/provider/modules/evm.ts +0 -249
- package/src/internal/hardhat-network/provider/modules/hardhat.ts +0 -481
- package/src/internal/hardhat-network/provider/modules/net.ts +0 -60
- package/src/internal/hardhat-network/provider/modules/personal.ts +0 -40
- package/src/internal/hardhat-network/provider/modules/web3.ts +0 -49
- package/src/internal/hardhat-network/provider/node.ts +0 -2999
- package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts +0 -226
- package/src/internal/hardhat-network/provider/transactions/FakeSenderEIP1559Transaction.ts +0 -224
- package/src/internal/hardhat-network/provider/transactions/FakeSenderTransaction.ts +0 -216
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP1559Transaction.ts +0 -143
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidEIP2930Transaction.ts +0 -144
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidTransaction.ts +0 -171
- package/src/internal/hardhat-network/provider/transactions/ReadOnlyValidUnknownTypeTransaction.ts +0 -169
- package/src/internal/hardhat-network/provider/types/HardhatBlockchainInterface.ts +0 -25
- package/src/internal/hardhat-network/provider/utils/makeFakeSignature.ts +0 -60
- package/src/internal/hardhat-network/provider/utils/makeStateTrie.ts +0 -29
- package/src/internal/hardhat-network/provider/utils/putGenesisBlock.ts +0 -61
- package/src/internal/hardhat-network/provider/utils/reorganizeTransactionsLists.ts +0 -45
- package/src/internal/hardhat-network/provider/utils/txMapToArray.ts +0 -7
- package/src/internal/hardhat-network/stack-traces/vm-debug-tracer.ts +0 -630
package/src/internal/hardhat-network/provider/transactions/FakeSenderAccessListEIP2930Transaction.ts
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
2
|
-
import * as rlp from "@nomicfoundation/ethereumjs-rlp";
|
|
3
|
-
import {
|
|
4
|
-
AccessListEIP2930Transaction,
|
|
5
|
-
AccessListEIP2930TxData,
|
|
6
|
-
TransactionType,
|
|
7
|
-
TxOptions,
|
|
8
|
-
TxValuesArray,
|
|
9
|
-
} from "@nomicfoundation/ethereumjs-tx";
|
|
10
|
-
import { Address, bytesToInt } from "@nomicfoundation/ethereumjs-util";
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
InternalError,
|
|
14
|
-
InvalidArgumentsError,
|
|
15
|
-
} from "../../../core/providers/errors";
|
|
16
|
-
import { makeFakeSignature } from "../utils/makeFakeSignature";
|
|
17
|
-
|
|
18
|
-
/* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* This class is the EIP-2930 version of FakeSenderTransaction.
|
|
22
|
-
*/
|
|
23
|
-
export class FakeSenderAccessListEIP2930Transaction extends AccessListEIP2930Transaction {
|
|
24
|
-
public static fromTxData(
|
|
25
|
-
_txData: AccessListEIP2930TxData,
|
|
26
|
-
_opts?: TxOptions
|
|
27
|
-
): never {
|
|
28
|
-
throw new InternalError(
|
|
29
|
-
"`fromTxData` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public static fromSerializedTx(
|
|
34
|
-
_serialized: Uint8Array,
|
|
35
|
-
_opts?: TxOptions
|
|
36
|
-
): never {
|
|
37
|
-
throw new InternalError(
|
|
38
|
-
"`fromSerializedTx` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
public static fromRlpSerializedTx(
|
|
43
|
-
_serialized: Uint8Array,
|
|
44
|
-
_opts?: TxOptions
|
|
45
|
-
): never {
|
|
46
|
-
throw new InternalError(
|
|
47
|
-
"`fromRlpSerializedTx` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
public static fromValuesArray(
|
|
52
|
-
_values: TxValuesArray[TransactionType.AccessListEIP2930],
|
|
53
|
-
_opts?: TxOptions
|
|
54
|
-
): never {
|
|
55
|
-
throw new InternalError(
|
|
56
|
-
"`fromValuesArray` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
public static fromSenderAndRlpSerializedTx(
|
|
61
|
-
sender: Address,
|
|
62
|
-
serialized: Uint8Array,
|
|
63
|
-
opts?: TxOptions
|
|
64
|
-
) {
|
|
65
|
-
if (serialized[0] !== 1) {
|
|
66
|
-
throw new InvalidArgumentsError(
|
|
67
|
-
`Invalid serialized tx input: not an EIP-2930 transaction (wrong tx type, expected: 1, received: ${serialized[0]}`
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const values = rlp.decode(serialized.slice(1));
|
|
72
|
-
|
|
73
|
-
checkIsAccessListEIP2930ValuesArray(values);
|
|
74
|
-
|
|
75
|
-
return this.fromSenderAndValuesArray(sender, values, opts);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public static fromSenderAndValuesArray(
|
|
79
|
-
sender: Address,
|
|
80
|
-
values: TxValuesArray[TransactionType.AccessListEIP2930],
|
|
81
|
-
opts: TxOptions = {}
|
|
82
|
-
): FakeSenderAccessListEIP2930Transaction {
|
|
83
|
-
const [
|
|
84
|
-
chainId,
|
|
85
|
-
nonce,
|
|
86
|
-
gasPrice,
|
|
87
|
-
gasLimit,
|
|
88
|
-
to,
|
|
89
|
-
value,
|
|
90
|
-
data,
|
|
91
|
-
accessList,
|
|
92
|
-
v,
|
|
93
|
-
r,
|
|
94
|
-
s,
|
|
95
|
-
] = values;
|
|
96
|
-
|
|
97
|
-
return new FakeSenderAccessListEIP2930Transaction(
|
|
98
|
-
sender,
|
|
99
|
-
{
|
|
100
|
-
chainId,
|
|
101
|
-
nonce,
|
|
102
|
-
gasPrice,
|
|
103
|
-
gasLimit,
|
|
104
|
-
to: to !== undefined && to.length > 0 ? to : undefined,
|
|
105
|
-
value,
|
|
106
|
-
data: data ?? Uint8Array.from([]),
|
|
107
|
-
accessList: accessList ?? [],
|
|
108
|
-
v: v !== undefined ? bytesToInt(v) : undefined, // EIP2930 supports v's with value 0 (empty Buffer)
|
|
109
|
-
r: r !== undefined && r.length !== 0 ? bytesToInt(r) : undefined,
|
|
110
|
-
s: s !== undefined && s.length !== 0 ? bytesToInt(s) : undefined,
|
|
111
|
-
},
|
|
112
|
-
opts
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
public readonly common: Common;
|
|
117
|
-
|
|
118
|
-
private readonly _sender: Address;
|
|
119
|
-
|
|
120
|
-
constructor(
|
|
121
|
-
sender: Address,
|
|
122
|
-
data: AccessListEIP2930TxData = {},
|
|
123
|
-
opts?: TxOptions
|
|
124
|
-
) {
|
|
125
|
-
const fakeSignature = makeFakeSignature(data, sender);
|
|
126
|
-
|
|
127
|
-
super(
|
|
128
|
-
{
|
|
129
|
-
...data,
|
|
130
|
-
v: data.v ?? 1,
|
|
131
|
-
r: data.r ?? fakeSignature.r,
|
|
132
|
-
s: data.s ?? fakeSignature.s,
|
|
133
|
-
},
|
|
134
|
-
{ ...opts, freeze: false, allowUnlimitedInitCodeSize: true }
|
|
135
|
-
);
|
|
136
|
-
|
|
137
|
-
this.common = this._getCommon(opts?.common);
|
|
138
|
-
this._sender = sender;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
public verifySignature(): boolean {
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
public getSenderAddress(): Address {
|
|
146
|
-
return this._sender;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
public getSenderPublicKey(): never {
|
|
150
|
-
throw new InternalError(
|
|
151
|
-
"`getSenderPublicKey` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
public _processSignature(_v: bigint, _r: Uint8Array, _s: Uint8Array): never {
|
|
156
|
-
throw new InternalError(
|
|
157
|
-
"`_processSignature` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
158
|
-
);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
public sign(_privateKey: Uint8Array): never {
|
|
162
|
-
throw new InternalError(
|
|
163
|
-
"`sign` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
public getMessageToSign(): never {
|
|
168
|
-
throw new InternalError(
|
|
169
|
-
"`getMessageToSign` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
public getMessageToVerifySignature(): never {
|
|
174
|
-
throw new InternalError(
|
|
175
|
-
"`getMessageToVerifySignature` is not implemented in FakeSenderAccessListEIP2930Transaction"
|
|
176
|
-
);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
public validate(stringError?: false): boolean;
|
|
180
|
-
public validate(stringError: true): string[];
|
|
181
|
-
public validate(stringError: boolean = false): boolean | string[] {
|
|
182
|
-
if (stringError) {
|
|
183
|
-
return [];
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
return true;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
function checkIsAccessListEIP2930ValuesArray(
|
|
191
|
-
values: unknown
|
|
192
|
-
): asserts values is TxValuesArray[TransactionType.AccessListEIP2930] {
|
|
193
|
-
if (!Array.isArray(values)) {
|
|
194
|
-
throw new InvalidArgumentsError(
|
|
195
|
-
`Invalid deserialized tx. Expected a Uint8Array[], but got '${
|
|
196
|
-
values as any
|
|
197
|
-
}'`
|
|
198
|
-
);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
if (values.length !== 8 && values.length !== 11) {
|
|
202
|
-
throw new InvalidArgumentsError(
|
|
203
|
-
"Invalid EIP-2930 transaction. Only expecting 8 values (for unsigned tx) or 11 values (for signed tx)."
|
|
204
|
-
);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// all elements in the array are buffers, except the 8th one that is an
|
|
208
|
-
// AccessListBuffer (an array of AccessListBufferItems)
|
|
209
|
-
for (const [i, value] of values.entries()) {
|
|
210
|
-
if (i === 7) {
|
|
211
|
-
if (!Array.isArray(value)) {
|
|
212
|
-
// we could check more things to assert that it's an AccessListBuffer,
|
|
213
|
-
// but we're assuming that just checking if it's an array is enough
|
|
214
|
-
throw new InvalidArgumentsError(
|
|
215
|
-
`Invalid deserialized tx. Expected a AccessListBuffer in position ${i}, but got '${value}'`
|
|
216
|
-
);
|
|
217
|
-
}
|
|
218
|
-
} else {
|
|
219
|
-
if (!(values[i] instanceof Uint8Array)) {
|
|
220
|
-
throw new InvalidArgumentsError(
|
|
221
|
-
`Invalid deserialized tx. Expected a Uint8Array in position ${i}, but got '${value}'`
|
|
222
|
-
);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
import * as rlp from "@nomicfoundation/ethereumjs-rlp";
|
|
2
|
-
import {
|
|
3
|
-
FeeMarketEIP1559Transaction,
|
|
4
|
-
FeeMarketEIP1559TxData,
|
|
5
|
-
TransactionType,
|
|
6
|
-
TxOptions,
|
|
7
|
-
TxValuesArray,
|
|
8
|
-
} from "@nomicfoundation/ethereumjs-tx";
|
|
9
|
-
import { Address, bytesToInt } from "@nomicfoundation/ethereumjs-util";
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
InternalError,
|
|
13
|
-
InvalidArgumentsError,
|
|
14
|
-
} from "../../../core/providers/errors";
|
|
15
|
-
import { makeFakeSignature } from "../utils/makeFakeSignature";
|
|
16
|
-
|
|
17
|
-
/* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* This class is the EIP-1559 version of FakeSenderTransaction.
|
|
21
|
-
*/
|
|
22
|
-
export class FakeSenderEIP1559Transaction extends FeeMarketEIP1559Transaction {
|
|
23
|
-
public static fromTxData(
|
|
24
|
-
_txData: FeeMarketEIP1559TxData,
|
|
25
|
-
_opts?: TxOptions
|
|
26
|
-
): never {
|
|
27
|
-
throw new InternalError(
|
|
28
|
-
"`fromTxData` is not implemented in FakeSenderEIP1559Transaction"
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
public static fromSerializedTx(
|
|
33
|
-
_serialized: Uint8Array,
|
|
34
|
-
_opts?: TxOptions
|
|
35
|
-
): never {
|
|
36
|
-
throw new InternalError(
|
|
37
|
-
"`fromSerializedTx` is not implemented in FakeSenderEIP1559Transaction"
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public static fromRlpSerializedTx(
|
|
42
|
-
_serialized: Uint8Array,
|
|
43
|
-
_opts?: TxOptions
|
|
44
|
-
): never {
|
|
45
|
-
throw new InternalError(
|
|
46
|
-
"`fromRlpSerializedTx` is not implemented in FakeSenderEIP1559Transaction"
|
|
47
|
-
);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public static fromValuesArray(
|
|
51
|
-
_values: TxValuesArray[TransactionType.FeeMarketEIP1559],
|
|
52
|
-
_opts?: TxOptions
|
|
53
|
-
): never {
|
|
54
|
-
throw new InternalError(
|
|
55
|
-
"`fromValuesArray` is not implemented in FakeSenderEIP1559Transaction"
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
public static fromSenderAndRlpSerializedTx(
|
|
60
|
-
sender: Address,
|
|
61
|
-
serialized: Uint8Array,
|
|
62
|
-
opts?: TxOptions
|
|
63
|
-
) {
|
|
64
|
-
if (serialized[0] !== 2) {
|
|
65
|
-
throw new InvalidArgumentsError(
|
|
66
|
-
`Invalid serialized tx input: not an EIP-1559 transaction (wrong tx type, expected: 2, received: ${serialized[0]}`
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const values = rlp.decode(serialized.slice(1));
|
|
71
|
-
|
|
72
|
-
checkIsFeeMarketEIP1559ValuesArray(values);
|
|
73
|
-
|
|
74
|
-
return this.fromSenderAndValuesArray(sender, values, opts);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
public static fromSenderAndValuesArray(
|
|
78
|
-
sender: Address,
|
|
79
|
-
values: TxValuesArray[TransactionType.FeeMarketEIP1559],
|
|
80
|
-
opts: TxOptions = {}
|
|
81
|
-
): FakeSenderEIP1559Transaction {
|
|
82
|
-
const [
|
|
83
|
-
chainId,
|
|
84
|
-
nonce,
|
|
85
|
-
maxPriorityFeePerGas,
|
|
86
|
-
maxFeePerGas,
|
|
87
|
-
gasLimit,
|
|
88
|
-
to,
|
|
89
|
-
value,
|
|
90
|
-
data,
|
|
91
|
-
accessList,
|
|
92
|
-
v,
|
|
93
|
-
r,
|
|
94
|
-
s,
|
|
95
|
-
] = values;
|
|
96
|
-
|
|
97
|
-
return new FakeSenderEIP1559Transaction(
|
|
98
|
-
sender,
|
|
99
|
-
{
|
|
100
|
-
chainId,
|
|
101
|
-
nonce,
|
|
102
|
-
maxPriorityFeePerGas,
|
|
103
|
-
maxFeePerGas,
|
|
104
|
-
gasLimit,
|
|
105
|
-
to: to !== undefined && to.length > 0 ? to : undefined,
|
|
106
|
-
value,
|
|
107
|
-
data: data ?? Uint8Array.from([]),
|
|
108
|
-
accessList: accessList ?? [],
|
|
109
|
-
v: v !== undefined ? bytesToInt(v) : undefined, // EIP1559 supports v's with value 0 (empty Buffer)
|
|
110
|
-
r: r !== undefined && r.length !== 0 ? bytesToInt(r) : undefined,
|
|
111
|
-
s: s !== undefined && s.length !== 0 ? bytesToInt(s) : undefined,
|
|
112
|
-
},
|
|
113
|
-
opts
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
private readonly _sender: Address;
|
|
118
|
-
|
|
119
|
-
constructor(
|
|
120
|
-
sender: Address,
|
|
121
|
-
data: FeeMarketEIP1559TxData = {},
|
|
122
|
-
opts?: TxOptions
|
|
123
|
-
) {
|
|
124
|
-
const fakeSignature = makeFakeSignature(data, sender);
|
|
125
|
-
|
|
126
|
-
super(
|
|
127
|
-
{
|
|
128
|
-
...data,
|
|
129
|
-
v: data.v ?? 1,
|
|
130
|
-
r: data.r ?? fakeSignature.r,
|
|
131
|
-
s: data.s ?? fakeSignature.s,
|
|
132
|
-
},
|
|
133
|
-
{ ...opts, freeze: false, allowUnlimitedInitCodeSize: true }
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
this._sender = sender;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
public verifySignature(): boolean {
|
|
140
|
-
return true;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
public getSenderAddress(): Address {
|
|
144
|
-
return this._sender;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
public getSenderPublicKey(): never {
|
|
148
|
-
throw new InternalError(
|
|
149
|
-
"`getSenderPublicKey` is not implemented in FakeSenderEIP1559Transaction"
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
public _processSignature(_v: bigint, _r: Uint8Array, _s: Uint8Array): never {
|
|
154
|
-
throw new InternalError(
|
|
155
|
-
"`_processSignature` is not implemented in FakeSenderEIP1559Transaction"
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
public sign(_privateKey: Uint8Array): never {
|
|
160
|
-
throw new InternalError(
|
|
161
|
-
"`sign` is not implemented in FakeSenderEIP1559Transaction"
|
|
162
|
-
);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
public getMessageToSign(): never {
|
|
166
|
-
throw new InternalError(
|
|
167
|
-
"`getMessageToSign` is not implemented in FakeSenderEIP1559Transaction"
|
|
168
|
-
);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
public getMessageToVerifySignature(): never {
|
|
172
|
-
throw new InternalError(
|
|
173
|
-
"`getMessageToVerifySignature` is not implemented in FakeSenderEIP1559Transaction"
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
public validate(stringError?: false): boolean;
|
|
178
|
-
public validate(stringError: true): string[];
|
|
179
|
-
public validate(stringError: boolean = false): boolean | string[] {
|
|
180
|
-
if (stringError) {
|
|
181
|
-
return [];
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
function checkIsFeeMarketEIP1559ValuesArray(
|
|
189
|
-
values: unknown
|
|
190
|
-
): asserts values is TxValuesArray[TransactionType.FeeMarketEIP1559] {
|
|
191
|
-
if (!Array.isArray(values)) {
|
|
192
|
-
throw new InvalidArgumentsError(
|
|
193
|
-
`Invalid deserialized tx. Expected a Uint8Array[], but got '${
|
|
194
|
-
values as any
|
|
195
|
-
}'`
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
if (values.length !== 9 && values.length !== 12) {
|
|
200
|
-
throw new InvalidArgumentsError(
|
|
201
|
-
"Invalid EIP-1559 transaction. Only expecting 9 values (for unsigned tx) or 12 values (for signed tx)."
|
|
202
|
-
);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// all elements in the array are buffers, except the 9th one that is an
|
|
206
|
-
// AccessListBuffer (an array of AccessListBufferItems)
|
|
207
|
-
for (const [i, value] of values.entries()) {
|
|
208
|
-
if (i === 8) {
|
|
209
|
-
if (!Array.isArray(value)) {
|
|
210
|
-
// we could check more things to assert that it's an AccessListBuffer,
|
|
211
|
-
// but we're assuming that just checking if it's an array is enough
|
|
212
|
-
throw new InvalidArgumentsError(
|
|
213
|
-
`Invalid deserialized tx. Expected a AccessListBuffer in position ${i}, but got '${value}'`
|
|
214
|
-
);
|
|
215
|
-
}
|
|
216
|
-
} else {
|
|
217
|
-
if (!(values[i] instanceof Uint8Array)) {
|
|
218
|
-
throw new InvalidArgumentsError(
|
|
219
|
-
`Invalid deserialized tx. Expected a Uint8Array in position ${i}, but got '${value}'`
|
|
220
|
-
);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { Common } from "@nomicfoundation/ethereumjs-common";
|
|
2
|
-
import * as rlp from "@nomicfoundation/ethereumjs-rlp";
|
|
3
|
-
import {
|
|
4
|
-
LegacyTransaction,
|
|
5
|
-
LegacyTxData,
|
|
6
|
-
TxOptions,
|
|
7
|
-
} from "@nomicfoundation/ethereumjs-tx";
|
|
8
|
-
import { Address } from "@nomicfoundation/ethereumjs-util";
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
InternalError,
|
|
12
|
-
InvalidArgumentsError,
|
|
13
|
-
} from "../../../core/providers/errors";
|
|
14
|
-
import { makeFakeSignature } from "../utils/makeFakeSignature";
|
|
15
|
-
|
|
16
|
-
/* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* This class represents a legacy transaction sent by a sender whose private
|
|
20
|
-
* key we don't control.
|
|
21
|
-
*
|
|
22
|
-
* The transaction's signature is never validated, but assumed to be valid.
|
|
23
|
-
*
|
|
24
|
-
* The sender's private key is never recovered from the signature. Instead,
|
|
25
|
-
* the sender's address is received as parameter.
|
|
26
|
-
*/
|
|
27
|
-
export class FakeSenderTransaction extends LegacyTransaction {
|
|
28
|
-
public static fromTxData(_txData: LegacyTxData, _opts?: TxOptions): never {
|
|
29
|
-
throw new InternalError(
|
|
30
|
-
"`fromTxData` is not implemented in FakeSenderTransaction"
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public static fromSerializedTx(
|
|
35
|
-
_serialized: Uint8Array,
|
|
36
|
-
_opts?: TxOptions
|
|
37
|
-
): never {
|
|
38
|
-
throw new InternalError(
|
|
39
|
-
"`fromSerializedTx` is not implemented in FakeSenderTransaction"
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public static fromRlpSerializedTx(
|
|
44
|
-
_serialized: Uint8Array,
|
|
45
|
-
_opts?: TxOptions
|
|
46
|
-
): never {
|
|
47
|
-
throw new InternalError(
|
|
48
|
-
"`fromRlpSerializedTx` is not implemented in FakeSenderTransaction"
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
public static fromValuesArray(
|
|
53
|
-
_values: Uint8Array[],
|
|
54
|
-
_opts?: TxOptions
|
|
55
|
-
): never {
|
|
56
|
-
throw new InternalError(
|
|
57
|
-
"`fromRlpSerializedTx` is not implemented in FakeSenderTransaction"
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public static fromSenderAndRlpSerializedTx(
|
|
62
|
-
sender: Address,
|
|
63
|
-
serialized: Uint8Array,
|
|
64
|
-
opts?: TxOptions
|
|
65
|
-
) {
|
|
66
|
-
const values = rlp.decode(serialized);
|
|
67
|
-
|
|
68
|
-
checkIsFlatBufferArray(values);
|
|
69
|
-
|
|
70
|
-
return this.fromSenderAndValuesArray(sender, values, opts);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
public static fromSenderAndValuesArray(
|
|
74
|
-
sender: Address,
|
|
75
|
-
values: Uint8Array[],
|
|
76
|
-
opts?: TxOptions
|
|
77
|
-
) {
|
|
78
|
-
if (values.length !== 6 && values.length !== 9) {
|
|
79
|
-
throw new InternalError(
|
|
80
|
-
"FakeSenderTransaction initialized with invalid values"
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const [nonce, gasPrice, gasLimit, to, value, data, v, r, s] = values;
|
|
85
|
-
|
|
86
|
-
return new FakeSenderTransaction(
|
|
87
|
-
sender,
|
|
88
|
-
{
|
|
89
|
-
nonce,
|
|
90
|
-
gasPrice,
|
|
91
|
-
gasLimit,
|
|
92
|
-
to: to !== undefined && to.length > 0 ? to : undefined,
|
|
93
|
-
value,
|
|
94
|
-
data,
|
|
95
|
-
v,
|
|
96
|
-
r,
|
|
97
|
-
s,
|
|
98
|
-
},
|
|
99
|
-
opts
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
public readonly common: Common;
|
|
104
|
-
|
|
105
|
-
private readonly _sender: Address;
|
|
106
|
-
|
|
107
|
-
constructor(sender: Address, data: LegacyTxData = {}, opts?: TxOptions) {
|
|
108
|
-
const fakeSignature = makeFakeSignature(data, sender);
|
|
109
|
-
|
|
110
|
-
super(
|
|
111
|
-
{
|
|
112
|
-
...data,
|
|
113
|
-
v: data.v ?? 27,
|
|
114
|
-
r: data.r ?? fakeSignature.r,
|
|
115
|
-
s: data.s ?? fakeSignature.s,
|
|
116
|
-
},
|
|
117
|
-
{ ...opts, freeze: false, allowUnlimitedInitCodeSize: true }
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
this.common = this._getCommon(opts?.common);
|
|
121
|
-
this._sender = sender;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
public verifySignature(): boolean {
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
public getSenderAddress(): Address {
|
|
129
|
-
return this._sender;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
public sign(): never {
|
|
133
|
-
throw new InternalError(
|
|
134
|
-
"`sign` is not implemented in FakeSenderTransaction"
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
public getSenderPublicKey(): never {
|
|
139
|
-
throw new InternalError(
|
|
140
|
-
"`getSenderPublicKey` is not implemented in FakeSenderTransaction"
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
public getMessageToVerifySignature(): never {
|
|
145
|
-
throw new InternalError(
|
|
146
|
-
"`getMessageToVerifySignature` is not implemented in FakeSenderTransaction"
|
|
147
|
-
);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
public getMessageToSign(): never {
|
|
151
|
-
throw new InternalError(
|
|
152
|
-
"`getMessageToSign` is not implemented in FakeSenderTransaction"
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
public validate(stringError?: false): boolean;
|
|
157
|
-
public validate(stringError: true): string[];
|
|
158
|
-
public validate(stringError: boolean = false): boolean | string[] {
|
|
159
|
-
if (stringError) {
|
|
160
|
-
return [];
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
return true;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Override private methods
|
|
168
|
-
const FakeSenderTransactionPrototype: any = FakeSenderTransaction.prototype;
|
|
169
|
-
|
|
170
|
-
FakeSenderTransactionPrototype._validateTxV = function (_v: any, common: any) {
|
|
171
|
-
return this._getCommon(common);
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
FakeSenderTransactionPrototype._signedTxImplementsEIP155 = function () {
|
|
175
|
-
throw new InternalError(
|
|
176
|
-
"`_signedTxImplementsEIP155` is not implemented in FakeSenderTransaction"
|
|
177
|
-
);
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
FakeSenderTransactionPrototype._unsignedTxImplementsEIP155 = function () {
|
|
181
|
-
throw new InternalError(
|
|
182
|
-
"`_unsignedTxImplementsEIP155` is not implemented in FakeSenderTransaction"
|
|
183
|
-
);
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
FakeSenderTransactionPrototype._getMessageToSign = function () {
|
|
187
|
-
throw new InternalError(
|
|
188
|
-
"`_getMessageToSign` is not implemented in FakeSenderTransaction"
|
|
189
|
-
);
|
|
190
|
-
};
|
|
191
|
-
|
|
192
|
-
FakeSenderTransactionPrototype._processSignature = function () {
|
|
193
|
-
throw new InternalError(
|
|
194
|
-
"`_processSignature` is not implemented in FakeSenderTransaction"
|
|
195
|
-
);
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
function checkIsFlatBufferArray(
|
|
199
|
-
values: unknown
|
|
200
|
-
): asserts values is Uint8Array[] {
|
|
201
|
-
if (!Array.isArray(values)) {
|
|
202
|
-
throw new InvalidArgumentsError(
|
|
203
|
-
`Invalid deserialized tx. Expected a Uint8Array[], but got '${
|
|
204
|
-
values as any
|
|
205
|
-
}'`
|
|
206
|
-
);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
for (const [i, value] of values.entries()) {
|
|
210
|
-
if (!(value instanceof Uint8Array)) {
|
|
211
|
-
throw new InvalidArgumentsError(
|
|
212
|
-
`Invalid deserialized tx. Expected a Uint8Array in position ${i}, but got '${value}'`
|
|
213
|
-
);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|