Commit b02010d1 authored by Kelvin Fichter's avatar Kelvin Fichter

Added basic tests for message passing contracts

parents dcfd3df9 669ed02c
#!/usr/bin/env python3
# pip3 install pyevmasm
from pyevmasm import instruction_tables
#print(instruction_tables.keys())
def asm(x):
return [instruction_tables['istanbul'][i].opcode for i in x]
push_opcodes = asm(["PUSH%d" % i for i in range(1,33)])
stop_opcodes = asm(["STOP", "JUMP", "RETURN", "INVALID"])
caller_opcodes = asm(["CALLER"])
blacklist_ops = set([
"ADDRESS", "BALANCE", "BLOCKHASH",
"CALL", "CALLCODE", "CHAINID", "COINBASE",
"CREATE", "CREATE2", "DELEGATECALL", "DIFFICULTY",
"EXTCODESIZE", "EXTCODECOPY", "EXTCODEHASH",
"GASLIMIT", "GASPRICE", "NUMBER",
"ORIGIN", "REVERT", "SELFBALANCE", "SELFDESTRUCT",
"SLOAD", "SSTORE", "STATICCALL", "TIMESTAMP"])
whitelist_opcodes = []
for x in instruction_tables['istanbul']:
if x.name not in blacklist_ops:
whitelist_opcodes.append(x.opcode)
pushmask = 0
for x in push_opcodes:
pushmask |= 1 << x
stopmask = 0
for x in stop_opcodes:
stopmask |= 1 << x
stoplist = [0]*256
procmask = 0
for i in range(256):
if i in whitelist_opcodes and \
i not in push_opcodes and \
i not in stop_opcodes and \
i not in caller_opcodes:
# can skip this opcode
stoplist[i] = 1
else:
procmask |= 1 << i
# PUSH1 through PUSH4, can't skip in slow
for i in range(0x60, 0x64):
stoplist[i] = i-0x5e
rr = "uint256[8] memory opcodeSkippableBytes = [\n"
for i in range(0, 0x100, 0x20):
ret = "uint256(0x"
for j in range(i, i+0x20, 1):
ret += ("%02X" % stoplist[j])
rr += ret+"),\n"
rr = rr[:-2] + "];"
print(rr)
print("// Mask to gate opcode specific cases")
print("uint256 opcodeGateMask = ~uint256(0x%x);" % procmask)
print("// Halting opcodes")
print("uint256 opcodeHaltingMask = ~uint256(0x%x);" % stopmask)
print("// PUSH opcodes")
print("uint256 opcodePushMask = ~uint256(0x%x);" % pushmask)
......@@ -4,12 +4,12 @@ import * as path from 'path'
import * as mkdirp from 'mkdirp'
/* Internal Imports */
import { makeStateDump } from '../src'
import { makeStateDump } from '../src/contract-dumps'
;(async () => {
const outdir = path.resolve(__dirname, '../build/dumps')
const outfile = path.join(outdir, 'state-dump.latest.json')
mkdirp.sync(outdir)
const dump = await makeStateDump()
fs.writeFileSync(outfile, JSON.stringify(dump))
fs.writeFileSync(outfile, JSON.stringify(dump, null, 4))
})()
......@@ -67,7 +67,6 @@ contract OVM_ECDSAContractAccount is iOVM_ECDSAContractAccount {
decodedTx.nonce == Lib_SafeExecutionManagerWrapper.safeGETNONCE(ovmExecutionManager) + 1,
"Transaction nonce does not match the expected nonce."
);
Lib_SafeExecutionManagerWrapper.safeSETNONCE(ovmExecutionManager, decodedTx.nonce);
// Contract creations are signalled by sending a transaction to the zero address.
if (decodedTx.target == address(0)) {
......@@ -81,6 +80,11 @@ contract OVM_ECDSAContractAccount is iOVM_ECDSAContractAccount {
// initialization. Always return `true` for our success value here.
return (true, abi.encode(created));
} else {
// We only want to bump the nonce for `ovmCALL` because `ovmCREATE` automatically bumps
// the nonce of the calling account. Normally an EOA would bump the nonce for both
// cases, but since this is a contract we'd end up bumping the nonce twice.
Lib_SafeExecutionManagerWrapper.safeSETNONCE(ovmExecutionManager, decodedTx.nonce);
return Lib_SafeExecutionManagerWrapper.safeCALL(
ovmExecutionManager,
decodedTx.gasLimit,
......
......@@ -16,7 +16,6 @@ contract OVM_BaseCrossDomainMessenger is iOVM_BaseCrossDomainMessenger {
mapping (bytes32 => bool) public receivedMessages;
mapping (bytes32 => bool) public sentMessages;
address public targetMessengerAddress;
uint256 public messageNonce;
address public xDomainMessageSender;
......@@ -25,22 +24,6 @@ contract OVM_BaseCrossDomainMessenger is iOVM_BaseCrossDomainMessenger {
* Public Functions *
********************/
/**
* Sets the target messenger address.
* @dev Currently, this function is public and therefore allows anyone to modify the target
* messenger for a given xdomain messenger contract. Obviously this shouldn't be allowed,
* but we still need to determine an adequate mechanism for updating this address.
* @param _targetMessengerAddress New messenger address.
*/
function setTargetMessengerAddress(
address _targetMessengerAddress
)
override
public
{
targetMessengerAddress = _targetMessengerAddress;
}
/**
* Sends a cross domain message to the target messenger.
* @param _target Target contract address.
......@@ -92,8 +75,8 @@ contract OVM_BaseCrossDomainMessenger is iOVM_BaseCrossDomainMessenger {
bytes memory
)
{
return abi.encodeWithSelector(
bytes4(keccak256(bytes("relayMessage(address,address,bytes,uint256)"))),
return abi.encodeWithSignature(
"relayMessage(address,address,bytes,uint256)",
_target,
_sender,
_message,
......
......@@ -16,6 +16,9 @@ import { iOVM_StateCommitmentChain } from "../../iOVM/chain/iOVM_StateCommitment
/* Contract Imports */
import { OVM_BaseCrossDomainMessenger } from "./OVM_BaseCrossDomainMessenger.sol";
/* Logging Imports */
import { console } from "@nomiclabs/buidler/console.sol";
/**
* @title OVM_L1CrossDomainMessenger
*/
......@@ -163,15 +166,13 @@ contract OVM_L1CrossDomainMessenger is iOVM_L1CrossDomainMessenger, OVM_BaseCros
bool
)
{
// TODO: We *must* verify that the batch timestamp is sufficiently old.
// However, this requires that we first add timestamps to state batches
// and account for that change in various tests. Change of that size is
// out of scope for this ticket, so "TODO" for now.
return ovmStateCommitmentChain.verifyElement(
abi.encodePacked(_proof.stateRoot),
_proof.stateRootBatchHeader,
_proof.stateRootProof
return (
ovmStateCommitmentChain.insideFraudProofWindow(_proof.stateRootBatchHeader) == false
&& ovmStateCommitmentChain.verifyElement(
abi.encodePacked(_proof.stateRoot),
_proof.stateRootBatchHeader,
_proof.stateRootProof
)
);
}
......@@ -219,7 +220,7 @@ contract OVM_L1CrossDomainMessenger is iOVM_L1CrossDomainMessenger, OVM_BaseCros
abi.encodePacked(storageKey),
abi.encodePacked(uint256(1)),
_proof.storageTrieWitness,
_proof.stateRoot
account.storageRoot
);
}
......@@ -236,7 +237,7 @@ contract OVM_L1CrossDomainMessenger is iOVM_L1CrossDomainMessenger, OVM_BaseCros
internal
{
ovmCanonicalTransactionChain.enqueue(
targetMessengerAddress,
resolve("OVM_L2CrossDomainMessenger"),
_gasLimit,
_message
);
......
......@@ -13,6 +13,9 @@ import { iOVM_L2ToL1MessagePasser } from "../../iOVM/precompiles/iOVM_L2ToL1Mess
/* Contract Imports */
import { OVM_BaseCrossDomainMessenger } from "./OVM_BaseCrossDomainMessenger.sol";
/* Logging Imports */
import { console } from "@nomiclabs/buidler/console.sol";
/**
* @title OVM_L2CrossDomainMessenger
*/
......@@ -104,7 +107,7 @@ contract OVM_L2CrossDomainMessenger is iOVM_L2CrossDomainMessenger, OVM_BaseCros
)
{
return (
ovmL1MessageSender.getL1MessageSender() == targetMessengerAddress
ovmL1MessageSender.getL1MessageSender() == resolve("OVM_L1CrossDomainMessenger")
);
}
......
......@@ -18,6 +18,13 @@ import { OVM_BaseChain } from "./OVM_BaseChain.sol";
* @title OVM_StateCommitmentChain
*/
contract OVM_StateCommitmentChain is iOVM_StateCommitmentChain, OVM_BaseChain, Lib_AddressResolver {
/*************
* Constants *
*************/
uint256 constant public FRAUD_PROOF_WINDOW = 7 days;
/*******************************************
* Contract Variables: Contract References *
......@@ -75,7 +82,9 @@ contract OVM_StateCommitmentChain is iOVM_StateCommitmentChain, OVM_BaseChain, L
_appendBatch(
elements,
abi.encodePacked(block.timestamp)
abi.encode(
block.timestamp
)
);
}
......@@ -94,6 +103,39 @@ contract OVM_StateCommitmentChain is iOVM_StateCommitmentChain, OVM_BaseChain, L
"State batches can only be deleted by the OVM_FraudVerifier."
);
require(
insideFraudProofWindow(_batchHeader),
"State batches can only be deleted within the fraud proof window."
);
_deleteBatch(_batchHeader);
}
/**********************************
* Public Functions: Batch Status *
**********************************/
function insideFraudProofWindow(
Lib_OVMCodec.ChainBatchHeader memory _batchHeader
)
override
public
view
returns (
bool _inside
)
{
uint256 timestamp = abi.decode(
_batchHeader.extraData,
(uint256)
);
require(
timestamp != 0,
"Batch header timestamp cannot be zero"
);
return timestamp + FRAUD_PROOF_WINDOW > block.timestamp;
}
}
......@@ -27,8 +27,8 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
* External Contract References *
********************************/
iOVM_SafetyChecker public ovmSafetyChecker;
iOVM_StateManager public ovmStateManager;
iOVM_SafetyChecker internal ovmSafetyChecker;
iOVM_StateManager internal ovmStateManager;
/*******************************
......@@ -63,11 +63,15 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
* @param _libAddressManager Address of the Address Manager.
*/
constructor(
address _libAddressManager
address _libAddressManager,
GasMeterConfig memory _gasMeterConfig,
GlobalContext memory _globalContext
)
Lib_AddressResolver(_libAddressManager)
{
ovmSafetyChecker = iOVM_SafetyChecker(resolve("OVM_SafetyChecker"));
gasMeterConfig = _gasMeterConfig;
globalContext = _globalContext;
}
......@@ -120,10 +124,18 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
override
public
{
// Store our OVM_StateManager instance (significantly easier than attempting to pass the address
// around in calldata).
// Store our OVM_StateManager instance (significantly easier than attempting to pass the
// address around in calldata).
ovmStateManager = iOVM_StateManager(_ovmStateManager);
// Make sure this function can't be called by anyone except the owner of the
// OVM_StateManager (expected to be an OVM_StateTransitioner). We can revert here because
// this would make the `run` itself invalid.
require(
msg.sender == ovmStateManager.owner(),
"Only the owner of the ovmStateManager can call this function"
);
// Check whether we need to start a new epoch, do so if necessary.
_checkNeedsNewEpoch(_transaction.timestamp);
......@@ -150,6 +162,9 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
// Wipe the execution context.
_resetContext();
// Reset the ovmStateManager.
ovmStateManager = iOVM_StateManager(address(0));
}
......@@ -494,7 +509,6 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
MessageContext memory nextMessageContext = messageContext;
nextMessageContext.ovmCALLER = nextMessageContext.ovmADDRESS;
nextMessageContext.ovmADDRESS = _address;
nextMessageContext.isCreation = false;
bool isStaticEntrypoint = false;
return _callContract(
......@@ -532,7 +546,6 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
nextMessageContext.ovmCALLER = nextMessageContext.ovmADDRESS;
nextMessageContext.ovmADDRESS = _address;
nextMessageContext.isStatic = true;
nextMessageContext.isCreation = false;
bool isStaticEntrypoint = true;
return _callContract(
......@@ -567,7 +580,6 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
{
// DELEGATECALL does not change anything about the message context.
MessageContext memory nextMessageContext = messageContext;
nextMessageContext.isCreation = false;
bool isStaticEntrypoint = false;
return _callContract(
......@@ -753,19 +765,12 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
// We always need to initialize the contract with the default account values.
_initPendingAccount(_address);
// We're going into a contract creation, so we need to set this flag to get the correct
// revert behavior.
messageContext.isCreation = true;
// Actually deploy the contract and retrieve its address. This step is hiding a lot of
// complexity because we need to ensure that contract creation *never* reverts by itself.
// We cover this partially by storing a revert flag and returning (instead of reverting)
// when we know that we're inside a contract's creation code.
address ethAddress = Lib_EthUtils.createContract(_bytecode);
// Now reset this flag so we go back to normal revert behavior.
messageContext.isCreation = false;
// Contract creation returns the zero address when it fails, which should only be possible
// if the user intentionally runs out of gas. However, we might still have a bit of gas
// left over since contract calls can only be passed 63/64ths of total gas, so we need to
......@@ -818,7 +823,7 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
)
{
// We always update the nonce of the creating account, even if the creation fails.
_setAccountNonce(ovmADDRESS(), 1);
_setAccountNonce(ovmADDRESS(), _getAccountNonce(ovmADDRESS()) + 1);
// We're stepping into a CREATE or CREATE2, so we need to update ADDRESS to point
// to the contract's associated address and CALLER to point to the previous ADDRESS.
......@@ -1394,7 +1399,12 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
// *single* byte, something the OVM_ExecutionManager will not return in any other case.
// We're thereby allowed to communicate failure without allowing contracts to trick us into
// thinking there was a failure.
if (messageContext.isCreation) {
bool isCreation;
assembly {
isCreation := eq(extcodesize(caller()), 0)
}
if (isCreation) {
messageRecord.revertFlag = _flag;
assembly {
......@@ -1550,7 +1560,7 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
_getGasMetadata(cumulativeGasKey)
- _getGasMetadata(prevEpochGasKey)
+ _gasLimit
) > gasMeterConfig.maxGasPerQueuePerEpoch
) < gasMeterConfig.maxGasPerQueuePerEpoch
);
}
......@@ -1650,11 +1660,6 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
if (_prevMessageContext.isStatic != _nextMessageContext.isStatic) {
messageContext.isStatic = _nextMessageContext.isStatic;
}
// Avoid unnecessary the SSTORE.
if (_prevMessageContext.isCreation != _nextMessageContext.isCreation) {
messageContext.isCreation = _nextMessageContext.isCreation;
}
}
/**
......@@ -1672,6 +1677,8 @@ contract OVM_ExecutionManager is iOVM_ExecutionManager, Lib_AddressResolver {
transactionContext.ovmL1QUEUEORIGIN = _transaction.l1QueueOrigin;
transactionContext.ovmL1TXORIGIN = _transaction.l1Txorigin;
transactionContext.ovmGASLIMIT = gasMeterConfig.maxGasPerQueuePerEpoch;
messageRecord.nuisanceGasLeft = _getNuisanceGasLimit(_transaction.gasLimit);
}
/**
......
......@@ -12,22 +12,124 @@ contract OVM_SafetyChecker is iOVM_SafetyChecker {
/********************
* Public Functions *
********************/
/**
* Checks that a given bytecode string is considered safe.
* @param _bytecode Bytecode string to check.
* @return _safe Whether or not the bytecode is safe.
* Returns whether or not all of the provided bytecode is safe.
* @param _bytecode The bytecode to safety check.
* @return `true` if the bytecode is safe, `false` otherwise.
*/
function isBytecodeSafe(
bytes memory _bytecode
)
override
public
external
view
returns (
bool _safe
)
returns (bool)
{
// autogenerated by gen_safety_checker_constants.py
// number of bytes to skip for each opcode
uint256[8] memory opcodeSkippableBytes = [
uint256(0x0001010101010101010101010000000001010101010101010101010101010000),
uint256(0x0100000000000000000000000000000000000000010101010101000000010100),
uint256(0x0000000000000000000000000000000001010101000000010101010100000000),
uint256(0x0203040500000000000000000000000000000000000000000000000000000000),
uint256(0x0101010101010101010101010101010101010101010101010101010101010101),
uint256(0x0101010101000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000),
uint256(0x0000000000000000000000000000000000000000000000000000000000000000)
];
// Mask to gate opcode specific cases
uint256 opcodeGateMask = ~uint256(0xffffffffffffffffffffffe000000000fffffffff070ffff9c0ffffec000f001);
// Halting opcodes
uint256 opcodeHaltingMask = ~uint256(0x4008000000000000000000000000000000000000004000000000000000000001);
// PUSH opcodes
uint256 opcodePushMask = ~uint256(0xffffffff000000000000000000000000);
uint256 codeLength;
uint256 _pc;
assembly {
_pc := add(_bytecode, 0x20)
}
codeLength = _pc + _bytecode.length;
do {
// current opcode: 0x00...0xff
uint256 opNum;
// inline assembly removes the extra add + bounds check
assembly {
let word := mload(_pc) //load the next 32 bytes at pc into word
// Look up number of bytes to skip from opcodeSkippableBytes and then update indexInWord
// E.g. the 02030405 in opcodeSkippableBytes is the number of bytes to skip for PUSH1->4
// We repeat this 6 times, thus we can only skip bytes for up to PUSH4 ((1+4) * 6 = 30 < 32).
// If we see an opcode that is listed as 0 skippable bytes e.g. PUSH5,
// then we will get stuck on that indexInWord and then opNum will be set to the PUSH5 opcode.
let indexInWord := byte(0, mload(add(opcodeSkippableBytes, byte(0, word))))
indexInWord := add(indexInWord, byte(0, mload(add(opcodeSkippableBytes, byte(indexInWord, word)))))
indexInWord := add(indexInWord, byte(0, mload(add(opcodeSkippableBytes, byte(indexInWord, word)))))
indexInWord := add(indexInWord, byte(0, mload(add(opcodeSkippableBytes, byte(indexInWord, word)))))
indexInWord := add(indexInWord, byte(0, mload(add(opcodeSkippableBytes, byte(indexInWord, word)))))
indexInWord := add(indexInWord, byte(0, mload(add(opcodeSkippableBytes, byte(indexInWord, word)))))
_pc := add(_pc, indexInWord)
opNum := byte(indexInWord, word)
}
// + push opcodes
// + stop opcodes [STOP(0x00),JUMP(0x56),RETURN(0xf3),INVALID(0xfe)]
// + caller opcode CALLER(0x33)
// + blacklisted opcodes
uint256 opBit = 1 << opNum;
if (opBit & opcodeGateMask == 0) {
if (opBit & opcodePushMask == 0) {
// all pushes are valid opcodes
// subsequent bytes are not opcodes. Skip them.
_pc += (opNum - 0x5e); // PUSH1 is 0x60, so opNum-0x5f = PUSHed bytes and we +1 to
// skip the _pc++; line below in order to save gas ((-0x5f + 1) = -0x5e)
continue;
} else if (opBit & opcodeHaltingMask == 0) {
// STOP or JUMP or RETURN or INVALID (Note: REVERT is blacklisted, so not included here)
// We are now inside unreachable code until we hit a JUMPDEST!
do {
_pc++;
assembly {
opNum := byte(0, mload(_pc))
}
// encountered a JUMPDEST
if (opNum == 0x5b) break;
// skip PUSHed bytes
if ((1 << opNum) & opcodePushMask == 0) _pc += (opNum - 0x5f); // opNum-0x5f = PUSHed bytes (PUSH1 is 0x60)
} while (_pc < codeLength);
// opNum is 0x5b, so we don't continue here since the pc++ is fine
} else if (opNum == 0x33) { // Caller opcode
uint256 firstOps; // next 32 bytes of bytecode
uint256 secondOps; // following 32 bytes of bytecode
assembly {
firstOps := mload(_pc)
// 32 - 4 bytes = 28 bytes = 224 bits
secondOps := shr(224, mload(add(_pc, 0x20)))
}
// Call identity precompile
// CALLER POP PUSH1 0x00 PUSH1 0x04 GAS CALL
// 32 - 8 bytes = 24 bytes = 192
if ((firstOps >> 192) == 0x3350600060045af1) {
_pc += 8;
// Call EM and abort execution if instructed
// CALLER PUSH1 0x00 SWAP1 GAS CALL PC PUSH1 0x1d ADD EQ JUMPI RETURNDATASIZE PUSH1 0x00 DUP1 RETURNDATACOPY PUSH1 0x00 REVERT JUMPDEST PUSH1 0x01 PUSH1 0x00 RETURN JUMPDEST
} else if (firstOps == 0x336000905af158601d0157586012013d600114573d6000803e3d6000fd5b6001 && secondOps == 0x6000f35b) {
_pc += 36;
} else {
return false;
}
continue;
} else {
// encountered a non-whitelisted opcode!
return false;
}
}
_pc++;
} while (_pc < codeLength);
return true;
}
}
......@@ -25,8 +25,8 @@ contract OVM_StateManager is iOVM_StateManager {
* Contract Variables: Contract References *
*******************************************/
address public owner;
address public ovmExecutionManager;
address override public owner;
address override public ovmExecutionManager;
/****************************************
......
......@@ -304,6 +304,7 @@ contract OVM_StateTransitioner is iOVM_StateTransitioner, Lib_AddressResolver {
)
override
public
onlyDuringPhase(TransitionPhase.PRE_EXECUTION)
{
require(
Lib_OVMCodec.hashTransaction(_transaction) == transactionHash,
......
......@@ -11,14 +11,6 @@ interface iOVM_BaseCrossDomainMessenger {
* Public Functions *
********************/
/**
* Sets the target messenger address.
* @param _targetMessengerAddress New messenger address.
*/
function setTargetMessengerAddress(
address _targetMessengerAddress
) external;
/**
* Sends a cross domain message to the target messenger.
* @param _target Target contract address.
......
......@@ -19,4 +19,10 @@ interface iOVM_StateCommitmentChain is iOVM_BaseChain {
function appendStateBatch(bytes32[] calldata _batch) external;
function deleteStateBatch(Lib_OVMCodec.ChainBatchHeader memory _batchHeader) external;
/**********************************
* Public Functions: Batch Status *
**********************************/
function insideFraudProofWindow(Lib_OVMCodec.ChainBatchHeader memory _batchHeader) external view returns (bool _inside);
}
......@@ -62,7 +62,6 @@ interface iOVM_ExecutionManager {
address ovmCALLER;
address ovmADDRESS;
bool isStatic;
bool isCreation;
}
struct MessageRecord {
......
......@@ -10,5 +10,5 @@ interface iOVM_SafetyChecker {
* Public Functions *
********************/
function isBytecodeSafe(bytes memory _bytecode) external view returns (bool _safe);
function isBytecodeSafe(bytes memory _bytecode) external view returns (bool);
}
......@@ -25,7 +25,9 @@ interface iOVM_StateManager {
/***************************
* Public Functions: Setup *
***************************/
function owner() external view returns (address _owner);
function ovmExecutionManager() external view returns (address _ovmExecutionManager);
function setExecutionManager(address _ovmExecutionManager) external;
......
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.7.0;
/* Contract Imports */
import { Ownable } from "./Lib_Ownable.sol";
/**
* @title Lib_AddressManager
*/
contract Lib_AddressManager {
contract Lib_AddressManager is Ownable {
/*******************************************
* Contract Variables: Internal Accounting *
......@@ -22,6 +25,7 @@ contract Lib_AddressManager {
address _address
)
public
onlyOwner
{
addresses[_getNameHash(_name)] = _address;
}
......
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
/**
* @title Ownable
* @dev Adapted from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol
*/
abstract contract Ownable {
/*************
* Variables *
*************/
address public owner;
/**********
* Events *
**********/
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/***************
* Constructor *
***************/
constructor()
internal
{
owner = msg.sender;
emit OwnershipTransferred(address(0), owner);
}
/**********************
* Function Modifiers *
**********************/
modifier onlyOwner() {
require(
owner == msg.sender,
"Ownable: caller is not the owner"
);
_;
}
/********************
* Public Functions *
********************/
function renounceOwnership()
public
virtual
onlyOwner
{
emit OwnershipTransferred(owner, address(0));
owner = address(0);
}
function transferOwnership(address _newOwner)
public
virtual
onlyOwner
{
require(
_newOwner != address(0),
"Ownable: new owner cannot be the zero address"
);
emit OwnershipTransferred(owner, _newOwner);
owner = _newOwner;
}
}
......@@ -389,6 +389,10 @@ library Lib_RLPReader {
address
)
{
if (_in.length == 1) {
return address(0);
}
require(
_in.length == 21,
"Invalid RLP address value."
......
......@@ -6,8 +6,6 @@ import { Lib_BytesUtils } from "../utils/Lib_BytesUtils.sol";
import { Lib_RLPReader } from "../rlp/Lib_RLPReader.sol";
import { Lib_RLPWriter } from "../rlp/Lib_RLPWriter.sol";
import { console } from "@nomiclabs/buidler/console.sol";
/**
* @title Lib_MerkleTrie
*/
......
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;
/* Interface Imports */
import { iOVM_ECDSAContractAccount } from "../../iOVM/accounts/iOVM_ECDSAContractAccount.sol";
/* Library Imports */
import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol";
import { Lib_ECDSAUtils } from "../../libraries/utils/Lib_ECDSAUtils.sol";
import { Lib_SafeExecutionManagerWrapper } from "../../libraries/wrappers/Lib_SafeExecutionManagerWrapper.sol";
/**
* @title mockOVM_ECDSAContractAccount
*/
contract mockOVM_ECDSAContractAccount is iOVM_ECDSAContractAccount {
/********************
* Public Functions *
********************/
/**
* Executes a signed transaction.
* @param _transaction Signed EOA transaction.
* @param _signatureType Hashing scheme used for the transaction (e.g., ETH signed message).
* @param _v Signature `v` parameter.
* @param _r Signature `r` parameter.
* @param _s Signature `s` parameter.
* @return _success Whether or not the call returned (rather than reverted).
* @return _returndata Data returned by the call.
*/
function execute(
bytes memory _transaction,
Lib_OVMCodec.EOASignatureType _signatureType,
uint8 _v,
bytes32 _r,
bytes32 _s
)
override
public
returns (
bool _success,
bytes memory _returndata
)
{
address ovmExecutionManager = msg.sender;
// Skip signature validation in this mock.
Lib_OVMCodec.EOATransaction memory decodedTx = Lib_OVMCodec.decodeEOATransaction(_transaction);
// Contract creations are signalled by sending a transaction to the zero address.
if (decodedTx.target == address(0)) {
address created = Lib_SafeExecutionManagerWrapper.safeCREATE(
ovmExecutionManager,
decodedTx.gasLimit,
decodedTx.data
);
// EVM doesn't tell us whether a contract creation failed, even if it reverted during
// initialization. Always return `true` for our success value here.
return (true, abi.encode(created));
} else {
return Lib_SafeExecutionManagerWrapper.safeCALL(
ovmExecutionManager,
decodedTx.gasLimit,
decodedTx.target,
decodedTx.data
);
}
}
}
......@@ -29,6 +29,7 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger {
**********************/
ReceivedMessage[] internal fullReceivedMessages;
address internal targetMessengerAddress;
uint256 internal lastRelayedMessage;
uint256 internal delay;
......@@ -51,6 +52,21 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger {
* Public Functions *
********************/
/**
* Sets the target messenger address.
* @dev Currently, this function is public and therefore allows anyone to modify the target
* messenger for a given xdomain messenger contract. Obviously this shouldn't be allowed,
* but we still need to determine an adequate mechanism for updating this address.
* @param _targetMessengerAddress New messenger address.
*/
function setTargetMessengerAddress(
address _targetMessengerAddress
)
public
{
targetMessengerAddress = _targetMessengerAddress;
}
/**
* Sends a message to another mock xdomain messenger.
* @param _target Target for the message.
......
{
"name": "optimism",
"version": "1.0.0",
"main": "index.js",
"name": "@eth-optimism/contracts",
"version": "0.0.2-alpha.1",
"main": "build/src/index.js",
"files": [
"build/**/*.js",
"build/contracts/*",
"build/dumps/*json",
"build/artifacts/*json"
],
"license": "MIT",
"scripts": {
"build": "yarn run build:contracts && yarn run build:typescript && yarn run build:copy",
"build": "yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump",
"build:typescript": "tsc -p .",
"build:contracts": "buidler compile",
"build:dump": "ts-node \"bin/take-dump.ts\"",
......@@ -17,6 +23,9 @@
"lint:fix:typescript": "prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\"",
"clean": "rm -rf ./artifacts ./build ./cache"
},
"dependencies": {
"ethers": "5.0.0"
},
"devDependencies": {
"@eth-optimism/smock": "^0.0.2",
"@nomiclabs/buidler": "^1.4.4",
......@@ -31,11 +40,10 @@
"chai": "^4.2.0",
"copyfiles": "^2.3.0",
"ethereum-waffle": "3.0.0",
"ethers": "5.0.0",
"fs-extra": "^9.0.1",
"ganache-core": "^2.12.1",
"lodash": "^4.17.20",
"merkle-patricia-tree": "git+https://github.com/kfichter/merkle-patricia-tree",
"merkle-patricia-tree": "^4.0.0",
"mkdirp": "^1.0.4",
"mocha": "^8.1.1",
"prettier": "^2.1.2",
......
......@@ -12,6 +12,9 @@ export interface RollupDeployConfig {
maxGasPerQueuePerEpoch: number
secondsPerEpoch: number
}
ovmGlobalContext: {
ovmCHAINID: number
}
transactionChainConfig: {
sequencer: string | Signer
forceInclusionPeriodSeconds: number
......@@ -20,6 +23,7 @@ export interface RollupDeployConfig {
owner: string | Signer
allowArbitraryContractDeployment: boolean
}
dependencies?: string[]
}
export interface ContractDeployParameters {
......@@ -64,9 +68,29 @@ export const makeContractDeployConfig = async (
factory: getContractFactory('OVM_StateCommitmentChain'),
params: [AddressManager.address],
},
OVM_DeployerWhitelist: {
factory: getContractFactory('OVM_DeployerWhitelist'),
params: [],
},
OVM_L1MessageSender: {
factory: getContractFactory('OVM_L1MessageSender'),
params: [],
},
OVM_L2ToL1MessagePasser: {
factory: getContractFactory('OVM_L2ToL1MessagePasser'),
params: [],
},
OVM_SafetyChecker: {
factory: getContractFactory('OVM_SafetyChecker'),
params: [],
},
OVM_ExecutionManager: {
factory: getContractFactory('OVM_ExecutionManager'),
params: [AddressManager.address],
params: [
AddressManager.address,
config.ovmGasMeteringConfig,
config.ovmGlobalContext,
],
},
OVM_StateManager: {
factory: getContractFactory('OVM_StateManager'),
......@@ -91,5 +115,11 @@ export const makeContractDeployConfig = async (
OVM_StateTransitionerFactory: {
factory: getContractFactory('OVM_StateTransitionerFactory'),
},
OVM_ECDSAContractAccount: {
factory: getContractFactory('OVM_ECDSAContractAccount'),
},
mockOVM_ECDSAContractAccount: {
factory: getContractFactory('mockOVM_ECDSAContractAccount'),
},
}
}
......@@ -38,20 +38,32 @@ export const deploy = async (
for (const [name, contractDeployParameters] of Object.entries(
contractDeployConfig
)) {
if (config.dependencies && !config.dependencies.includes(name)) {
continue
}
const SimpleProxy = await Factory__SimpleProxy.deploy()
await AddressManager.setAddress(name, SimpleProxy.address)
contracts[`Proxy__${name}`] = SimpleProxy
try {
contracts[name] = await contractDeployParameters.factory
.connect(config.deploymentSigner)
.deploy(...contractDeployParameters.params)
.deploy(...(contractDeployParameters.params || []))
await SimpleProxy.setTarget(contracts[name].address)
} catch (err) {
failedDeployments.push(name)
}
}
for (const contractDeployParameters of Object.values(contractDeployConfig)) {
for (const [name, contractDeployParameters] of Object.entries(
contractDeployConfig
)) {
if (config.dependencies && !config.dependencies.includes(name)) {
continue
}
if (contractDeployParameters.afterDeploy) {
await contractDeployParameters.afterDeploy(contracts)
}
......
......@@ -2,57 +2,29 @@
import * as path from 'path'
import { ethers } from 'ethers'
import * as Ganache from 'ganache-core'
import { keccak256 } from 'ethers/lib/utils'
/* Internal Imports */
import { deploy, RollupDeployConfig } from './contract-deployment'
import { fromHexString, toHexString, remove0x } from '../test/helpers/utils'
import { getContractDefinition } from './contract-defs'
import { keccak256 } from 'ethers/lib/utils'
type Accounts = Array<{
originalAddress: string
address: string
code: string
}>
interface StorageDump {
[key: string]: string
}
export interface StateDump {
contracts: {
ovmExecutionManager: string
ovmStateManager: string
}
accounts: {
[address: string]: {
balance: number
nonce: number
[name: string]: {
address: string
code: string
codeHash: string
storage: StorageDump
abi: any
}
}
}
/**
* Finds the addresses of all accounts changed in the state.
* @param cStateManager Instance of the callback-based internal vm StateManager.
* @returns Array of changed addresses.
*/
const getChangedAccounts = async (cStateManager: any): Promise<string[]> => {
return new Promise<string[]>((resolve, reject) => {
const accounts: string[] = []
const stream = cStateManager._trie.createReadStream()
stream.on('data', (val: any) => {
accounts.push(val.key.toString('hex'))
})
stream.on('end', () => {
resolve(accounts)
})
})
}
/**
* Generates a storage dump for a given address.
* @param cStateManager Instance of the callback-based internal vm StateManager.
......@@ -90,15 +62,23 @@ const getStorageDump = async (
*/
const sanitizeStorageDump = (
storageDump: StorageDump,
accounts: Accounts
accounts: Array<{
originalAddress: string
deadAddress: string
}>
): StorageDump => {
for (const account of accounts) {
account.originalAddress = remove0x(account.originalAddress).toLowerCase()
account.deadAddress = remove0x(account.deadAddress).toLowerCase()
}
for (const [key, value] of Object.entries(storageDump)) {
let parsedKey = key
let parsedValue = value
for (const account of accounts) {
const re = new RegExp(`${account.originalAddress}`, 'g')
parsedValue = parsedValue.replace(re, account.address)
parsedKey = parsedKey.replace(re, account.address)
parsedValue = parsedValue.replace(re, account.deadAddress)
parsedKey = parsedKey.replace(re, account.deadAddress)
}
if (parsedKey !== key) {
......@@ -135,6 +115,9 @@ export const makeStateDump = async (): Promise<any> => {
maxGasPerQueuePerEpoch: 1_000_000_000_000,
secondsPerEpoch: 600,
},
ovmGlobalContext: {
ovmCHAINID: 420,
},
transactionChainConfig: {
sequencer: signer,
forceInclusionPeriodSeconds: 600,
......@@ -143,96 +126,78 @@ export const makeStateDump = async (): Promise<any> => {
owner: signer,
allowArbitraryContractDeployment: true,
},
dependencies: [
'Lib_AddressManager',
'OVM_DeployerWhitelist',
'OVM_L1MessageSender',
'OVM_L2ToL1MessagePasser',
'OVM_L2CrossDomainMessenger',
'OVM_SafetyChecker',
'OVM_ExecutionManager',
'OVM_StateManager',
'mockOVM_ECDSAContractAccount',
],
}
const precompiles = {
OVM_L2ToL1MessagePasser: '0x4200000000000000000000000000000000000000',
OVM_L1MessageSender: '0x4200000000000000000000000000000000000001',
OVM_DeployerWhitelist: '0x4200000000000000000000000000000000000002',
}
const deploymentResult = await deploy(config)
deploymentResult.contracts['Lib_AddressManager'] =
deploymentResult.AddressManager
if (deploymentResult.failedDeployments.length > 0) {
throw new Error(
`Could not generate state dump, deploy failed for: ${deploymentResult.failedDeployments}`
)
}
const pStateManager = ganache.engine.manager.state.blockchain.vm.pStateManager
const cStateManager = pStateManager._wrapped
const ovmExecutionManagerOriginalAddress = deploymentResult.contracts.OVM_ExecutionManager.address
.slice(2)
.toLowerCase()
const ovmExecutionManagerAddress = 'c0dec0dec0dec0dec0dec0dec0dec0dec0de0000'
const ovmStateManagerOriginalAddress = deploymentResult.contracts.OVM_StateManager.address
.slice(2)
.toLowerCase()
const ovmStateManagerAddress = 'c0dec0dec0dec0dec0dec0dec0dec0dec0de0001'
const l2ToL1MessagePasserDef = getContractDefinition(
'OVM_L2ToL1MessagePasser'
)
const l2ToL1MessagePasserHash = keccak256(
l2ToL1MessagePasserDef.deployedBytecode
)
const l2ToL1MessagePasserAddress = '4200000000000000000000000000000000000000'
const l1MessageSenderDef = getContractDefinition('OVM_L1MessageSender')
const l1MessageSenderHash = keccak256(l1MessageSenderDef.deployedBytecode)
const l1MessageSenderAddress = '4200000000000000000000000000000000000001'
const changedAccounts = await getChangedAccounts(cStateManager)
let deadAddressIndex = 0
const accounts: Accounts = []
for (const originalAddress of changedAccounts) {
const code = (
await pStateManager.getContractCode(originalAddress)
).toString('hex')
const codeHash = keccak256('0x' + code)
if (code.length === 0) {
continue
}
// Sorry for this one!
let address = originalAddress
if (codeHash === l2ToL1MessagePasserHash) {
address = l2ToL1MessagePasserAddress
} else if (codeHash === l1MessageSenderHash) {
address = l1MessageSenderAddress
} else if (originalAddress === ovmExecutionManagerOriginalAddress) {
address = ovmExecutionManagerAddress
} else if (originalAddress === ovmStateManagerOriginalAddress) {
address = ovmStateManagerAddress
} else {
address = `deaddeaddeaddeaddeaddeaddeaddeaddead${deadAddressIndex
.toString(16)
.padStart(4, '0')}`
deadAddressIndex++
}
accounts.push({
originalAddress,
address,
code,
})
}
const dump: StateDump = {
contracts: {
ovmExecutionManager: '0x' + ovmExecutionManagerAddress,
ovmStateManager: '0x' + ovmStateManagerAddress,
},
accounts: {},
}
for (const account of accounts) {
const storageDump = sanitizeStorageDump(
await getStorageDump(cStateManager, account.originalAddress),
accounts
for (let i = 0; i < Object.keys(deploymentResult.contracts).length; i++) {
const name = Object.keys(deploymentResult.contracts)[i]
const contract = deploymentResult.contracts[name]
const codeBuf = await pStateManager.getContractCode(
fromHexString(contract.address)
)
const code = toHexString(codeBuf)
dump.accounts[account.address] = {
balance: 0,
nonce: 0,
code: account.code,
storage: storageDump,
const deadAddress =
precompiles[name] ||
`0xdeaddeaddeaddeaddeaddeaddeaddeaddead${i.toString(16).padStart(4, '0')}`
dump.accounts[name] = {
address: deadAddress,
code,
codeHash: keccak256(code),
storage: await getStorageDump(cStateManager, contract.address),
abi: getContractDefinition(name.replace('Proxy__', '')).abi,
}
}
const addressMap = Object.keys(dump.accounts).map((name) => {
return {
originalAddress: deploymentResult.contracts[name].address,
deadAddress: dump.accounts[name].address,
}
})
for (const name of Object.keys(dump.accounts)) {
dump.accounts[name].storage = sanitizeStorageDump(
dump.accounts[name].storage,
addressMap
)
}
return dump
}
......
export * from './contract-defs'
export * from './contract-dumps'
export { getLatestStateDump, StateDump } from './contract-dumps'
export * from './contract-deployment'
yarn run v1.22.5
$ yarn run test:contracts
$ buidler test "test/contracts/libraries/rlp/Lib_RLPReader.spec.ts" --show-stack-traces
All contracts have already been compiled, skipping compilation.
{
"emptystring": {
"in": [
"0x80"
],
"out": [
""
]
},
"bytestring00": {
"in": [
"0x00"
],
"out": [
"\u0000"
]
},
"bytestring01": {
"in": [
"0x01"
],
"out": [
"\u0001"
]
},
"bytestring7F": {
"in": [
"0x7f"
],
"out": [
""
]
},
"shortstring": {
"in": [
"0x83646f67"
],
"out": [
"dog"
]
},
"shortstring2": {
"in": [
"0xb74c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e7365637465747572206164697069736963696e6720656c69"
],
"out": [
"Lorem ipsum dolor sit amet, consectetur adipisicing eli"
]
},
"longstring": {
"in": [
"0xb8384c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e7365637465747572206164697069736963696e6720656c6974"
],
"out": [
"Lorem ipsum dolor sit amet, consectetur adipisicing elit"
]
},
"longstring2": {
"in": [
"0xb904004c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20437572616269747572206d6175726973206d61676e612c20737573636970697420736564207665686963756c61206e6f6e2c20696163756c697320666175636962757320746f72746f722e2050726f696e20737573636970697420756c74726963696573206d616c6573756164612e204475697320746f72746f7220656c69742c2064696374756d2071756973207472697374697175652065752c20756c7472696365732061742072697375732e204d6f72626920612065737420696d70657264696574206d6920756c6c616d636f7270657220616c6971756574207375736369706974206e6563206c6f72656d2e2041656e65616e2071756973206c656f206d6f6c6c69732c2076756c70757461746520656c6974207661726975732c20636f6e73657175617420656e696d2e204e756c6c6120756c74726963657320747572706973206a7573746f2c20657420706f73756572652075726e6120636f6e7365637465747572206e65632e2050726f696e206e6f6e20636f6e76616c6c6973206d657475732e20446f6e65632074656d706f7220697073756d20696e206d617572697320636f6e67756520736f6c6c696369747564696e2e20566573746962756c756d20616e746520697073756d207072696d697320696e206661756369627573206f726369206c756374757320657420756c74726963657320706f737565726520637562696c69612043757261653b2053757370656e646973736520636f6e76616c6c69732073656d2076656c206d617373612066617563696275732c2065676574206c6163696e6961206c616375732074656d706f722e204e756c6c61207175697320756c747269636965732070757275732e2050726f696e20617563746f722072686f6e637573206e69626820636f6e64696d656e74756d206d6f6c6c69732e20416c697175616d20636f6e73657175617420656e696d206174206d65747573206c75637475732c206120656c656966656e6420707572757320656765737461732e20437572616269747572206174206e696268206d657475732e204e616d20626962656e64756d2c206e6571756520617420617563746f72207472697374697175652c206c6f72656d206c696265726f20616c697175657420617263752c206e6f6e20696e74657264756d2074656c6c7573206c65637475732073697420616d65742065726f732e20437261732072686f6e6375732c206d65747573206163206f726e617265206375727375732c20646f6c6f72206a7573746f20756c747269636573206d657475732c20617420756c6c616d636f7270657220766f6c7574706174"
],
"out": [
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur mauris magna, suscipit sed vehicula non, iaculis faucibus tortor. Proin suscipit ultricies malesuada. Duis tortor elit, dictum quis tristique eu, ultrices at risus. Morbi a est imperdiet mi ullamcorper aliquet suscipit nec lorem. Aenean quis leo mollis, vulputate elit varius, consequat enim. Nulla ultrices turpis justo, et posuere urna consectetur nec. Proin non convallis metus. Donec tempor ipsum in mauris congue sollicitudin. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse convallis sem vel massa faucibus, eget lacinia lacus tempor. Nulla quis ultricies purus. Proin auctor rhoncus nibh condimentum mollis. Aliquam consequat enim at metus luctus, a eleifend purus egestas. Curabitur at nibh metus. Nam bibendum, neque at auctor tristique, lorem libero aliquet arcu, non interdum tellus lectus sit amet eros. Cras rhoncus, metus ac ornare cursus, dolor justo ultrices metus, at ullamcorper volutpat"
]
},
"zero": {
"in": [
"0x80"
],
"out": [
0
]
},
"smallint": {
"in": [
"0x01"
],
"out": [
1
]
},
"smallint2": {
"in": [
"0x10"
],
"out": [
16
]
},
"smallint3": {
"in": [
"0x4f"
],
"out": [
79
]
},
"smallint4": {
"in": [
"0x7f"
],
"out": [
127
]
},
"mediumint1": {
"in": [
"0x8180"
],
"out": [
128
]
},
"mediumint2": {
"in": [
"0x8203e8"
],
"out": [
1000
]
},
"mediumint3": {
"in": [
"0x830186a0"
],
"out": [
100000
]
},
"mediumint4": {
"in": [
"0x8f102030405060708090a0b0c0d0e0f2"
],
"out": [
"#83729609699884896815286331701780722"
]
},
"mediumint5": {
"in": [
"0x9c0100020003000400050006000700080009000a000b000c000d000e01"
],
"out": [
"#105315505618206987246253880190783558935785933862974822347068935681"
]
},
"emptylist": {
"in": [
"0xc0"
],
"out": [
[]
]
},
"stringlist": {
"in": [
"0xcc83646f6783676f6483636174"
],
"out": [
[
"0x83646f67",
"0x83676f64",
"0x83636174"
]
]
},
"multilist": {
"in": [
"0xc6827a77c10401"
],
"out": [
[
"0x827a77",
"0xc104",
"0x01"
]
]
},
"shortListMax1": {
"in": [
"0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
],
"out": [
[
"0x8461736466",
"0x8471776572",
"0x847a786376",
"0x8461736466",
"0x8471776572",
"0x847a786376",
"0x8461736466",
"0x8471776572",
"0x847a786376",
"0x8461736466",
"0x8471776572"
]
]
},
"longList1": {
"in": [
"0xf840cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
],
"out": [
[
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376"
]
]
},
"longList2": {
"in": [
"0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
],
"out": [
[
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376",
"0xcf84617364668471776572847a786376"
]
]
},
"listsoflists": {
"in": [
"0xc4c2c0c0c0"
],
"out": [
[
"0xc2c0c0",
"0xc0"
]
]
},
"listsoflists2": {
"in": [
"0xc7c0c1c0c3c0c1c0"
],
"out": [
[
"0xc0",
"0xc1c0",
"0xc3c0c1c0"
]
]
},
"dictTest1": {
"in": [
"0xecca846b6579318476616c31ca846b6579328476616c32ca846b6579338476616c33ca846b6579348476616c34"
],
"out": [
[
"0xca846b6579318476616c31",
"0xca846b6579328476616c32",
"0xca846b6579338476616c33",
"0xca846b6579348476616c34"
]
]
}
}
Lib_RLPReader
JSON tests
readList
160
0xc0
0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
should run test: emptylist (58ms)
160
0xcc83646f6783676f6483636174
1
3
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000030000000000000000000000000000000000000000000000000000
1
3
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000030000000000000000000000000000000000000000000000000000
1
3
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000030000000000000000000000000000000000000000000000000000
0x000001000003000001000003000001000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
----
0x0000010000030000010000030000010000030000000000000000000000000000
3
1
----
----
0x0000010000030000010000030000000000000000000000000000000000000000
3
1
----
----
0x0000010000030000000000000000000000000000000000000000000000000000
3
1
----
0x83646f67
0x83676f64
0x83636174
1) should run test: stringlist
160
0xc6827a77c10401
1
2
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000020000000000000000000000000000000000000000000000000000
1
1
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000010000000000000000000000000000000000000000000000000000
0
1
0x0000000000000000000000000000000000000000000000000000000000000000
0x0000000000010000000000000000000000000000000000000000000000000000
0x000001000002000001000001000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
----
0x0000010000020000010000010000000000010000000000000000000000000000
2
1
----
----
0x0000010000010000000000010000000000000000000000000000000000000000
1
1
----
----
0x0000000000010000000000000000000000000000000000000000000000000000
1
0
----
0x827a77
0xc104
0x0100
2) should run test: multilist
160
0xf784617364668471776572847a78637684617364668471776572847a78637684000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
1
4
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000040000000000000000000000000000000000000000000000000000
0x000001000004000001000004000001000004000001000004000001000004000001000004000001000004000001000004000001000004000001000004000001000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
----
0x0000010000040000010000040000010000040000010000040000010000040000
4
1
----
----
0x0000010000040000010000040000010000040000010000040000010000040000
4
1
----
----
0x0000010000040000010000040000010000040000010000040000010000040000
4
1
----
----
0x0000010000040000010000040000010000040000010000040000010000040000
4
1
----
----
0x0000010000040000010000040000010000040000010000040000010000040000
4
1
----
----
0x0000010000040000010000040000010000040000010000040000010000040000
4
1
----
----
0x0000010000040000010000040000010000040000010000040000010000040000
4
1
----
----
0x0000010000040000010000040000010000040000010000040000000000000000
4
1
----
----
0x0000010000040000010000040000010000040000000000000000000000000000
4
1
----
----
0x0000010000040000010000040000000000000000000000000000000000000000
4
1
----
----
0x0000010000040000000000000000000000000000000000000000000000000000
4
1
----
0x8461736466
0x8471776572
0x847a786376
0x8461736466
0x8471776572
0x847a786376
0x8461736466
0x8471776572
0x847a786376
0x8461736466
0x8471776572
3) should run test: shortListMax1
160
0xf840cf84617364668471776572847a786376cf84617364668471776572847a7800000000000000000000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
0x00000100000f00000100000f00000100000f00000100000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
----
0x00000100000f00000100000f00000100000f00000100000f0000000000000000
15
1
----
----
0x00000100000f00000100000f00000100000f0000000000000000000000000000
15
1
----
----
0x00000100000f00000100000f0000000000000000000000000000000000000000
15
1
----
----
0x00000100000f0000000000000000000000000000000000000000000000000000
15
1
----
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
4) should run test: longList1
160
0xf90200cf84617364668471776572847a786376cf84617364668471776572847a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
1
15
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000f0000000000000000000000000000000000000000000000000000
0x00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f00000100000f
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f00000100000f0000
15
1
----
----
0x00000100000f00000100000f00000100000f00000100000f0000000000000000
15
1
----
----
0x00000100000f00000100000f00000100000f0000000000000000000000000000
15
1
----
----
0x00000100000f00000100000f0000000000000000000000000000000000000000
15
1
----
----
0x00000100000f0000000000000000000000000000000000000000000000000000
15
1
----
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
0xcf84617364668471776572847a786376
5) should run test: longList2
160
0xc4c2c0c0c0
1
2
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000020000000000000000000000000000000000000000000000000000
1
0
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000000000000000000000000000000000000000000000000000000000
0x000001000002000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
----
0x0000010000020000010000000000000000000000000000000000000000000000
2
1
----
----
0x0000010000000000000000000000000000000000000000000000000000000000
0
1
----
0xc2c0c0
0xc0
6) should run test: listsoflists
160
0xc7c0c1c0c3c0c1c0
1
0
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000000000000000000000000000000000000000000000000000000000
1
1
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000010000000000000000000000000000000000000000000000000000
1
3
0x0000000000000000000000000000000000000000000000000000000000000001
0x0000010000030000000000000000000000000000000000000000000000000000
0x000001000000000001000001000001000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
----
0x0000010000000000010000010000010000030000000000000000000000000000
0
1
----
----
0x0000010000010000010000030000000000000000000000000000000000000000
1
1
----
----
0x0000010000030000000000000000000000000000000000000000000000000000
3
1
----
0xc0
0xc1c0
0xc3c0c1c0
7) should run test: listsoflists2
160
0xecca846b6579318476616c31ca846b6579328476616c32ca846b65793384766100000000000000000000000000
1
10
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000a0000000000000000000000000000000000000000000000000000
1
10
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000a0000000000000000000000000000000000000000000000000000
1
10
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000a0000000000000000000000000000000000000000000000000000
1
10
0x0000000000000000000000000000000000000000000000000000000000000001
0x00000100000a0000000000000000000000000000000000000000000000000000
0x00000100000a00000100000a00000100000a00000100000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
----
0x00000100000a00000100000a00000100000a00000100000a0000000000000000
10
1
----
----
0x00000100000a00000100000a00000100000a0000000000000000000000000000
10
1
----
----
0x00000100000a00000100000a0000000000000000000000000000000000000000
10
1
----
----
0x00000100000a0000000000000000000000000000000000000000000000000000
10
1
----
0xca846b6579318476616c31
0xca846b6579328476616c32
0xca846b6579338476616c33
0xca846b6579348476616c34
8) should run test: dictTest1
1 passing (2s)
8 failing
1) Lib_RLPReader
JSON tests
readList
should run test: stringlist:
AssertionError: expected [ Array(1) ] to deeply equal [ Array(1) ]
+ expected - actual
[
[
- "0x83646f67"
- "0x83676f64"
- "0x83636174"
+ "0xcc83646f6783676f6483636174"
+ "0xcc83646f6783676f6483636174"
+ "0xcc83646f6783676f6483636174"
]
]
at Context.<anonymous> (test/helpers/test-runner/json-test-runner.ts:21:100)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
2) Lib_RLPReader
JSON tests
readList
should run test: multilist:
AssertionError: expected [ [ '0x827a77', '0xc104', '0x0100' ] ] to deeply equal [ Array(1) ]
+ expected - actual
[
[
- "0x827a77"
- "0xc104"
- "0x0100"
+ "0xc6827a77c10401"
+ "0xc6827a77c10401"
+ "0xc6827a77c10401"
]
]
at Context.<anonymous> (test/helpers/test-runner/json-test-runner.ts:21:100)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
3) Lib_RLPReader
JSON tests
readList
should run test: shortListMax1:
AssertionError: expected [ Array(1) ] to deeply equal [ Array(1) ]
+ expected - actual
[
[
- "0x8461736466"
- "0x8471776572"
- "0x847a786376"
- "0x8461736466"
- "0x8471776572"
- "0x847a786376"
- "0x8461736466"
- "0x8471776572"
- "0x847a786376"
- "0x8461736466"
- "0x8471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
+ "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
]
]
at Context.<anonymous> (test/helpers/test-runner/json-test-runner.ts:21:100)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
4) Lib_RLPReader
JSON tests
readList
should run test: longList1:
AssertionError: expected [ Array(1) ] to deeply equal [ Array(1) ]
+ expected - actual
[
[
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
+ "0xf840cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf840cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf840cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf840cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
]
]
at Context.<anonymous> (test/helpers/test-runner/json-test-runner.ts:21:100)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
5) Lib_RLPReader
JSON tests
readList
should run test: longList2:
AssertionError: expected [ Array(1) ] to deeply equal [ Array(1) ]
+ expected - actual
[
[
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
- "0xcf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
+ "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
]
]
at Context.<anonymous> (test/helpers/test-runner/json-test-runner.ts:21:100)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
6) Lib_RLPReader
JSON tests
readList
should run test: listsoflists:
AssertionError: expected [ [ '0xc2c0c0', '0xc0' ] ] to deeply equal [ [ '0xc4c2c0c0c0', '0xc4c2c0c0c0' ] ]
+ expected - actual
[
[
- "0xc2c0c0"
- "0xc0"
+ "0xc4c2c0c0c0"
+ "0xc4c2c0c0c0"
]
]
at Context.<anonymous> (test/helpers/test-runner/json-test-runner.ts:21:100)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
7) Lib_RLPReader
JSON tests
readList
should run test: listsoflists2:
AssertionError: expected [ [ '0xc0', '0xc1c0', '0xc3c0c1c0' ] ] to deeply equal [ Array(1) ]
+ expected - actual
[
[
- "0xc0"
- "0xc1c0"
- "0xc3c0c1c0"
+ "0xc7c0c1c0c3c0c1c0"
+ "0xc7c0c1c0c3c0c1c0"
+ "0xc7c0c1c0c3c0c1c0"
]
]
at Context.<anonymous> (test/helpers/test-runner/json-test-runner.ts:21:100)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
8) Lib_RLPReader
JSON tests
readList
should run test: dictTest1:
AssertionError: expected [ Array(1) ] to deeply equal [ Array(1) ]
+ expected - actual
[
[
- "0xca846b6579318476616c31"
- "0xca846b6579328476616c32"
- "0xca846b6579338476616c33"
- "0xca846b6579348476616c34"
+ "0xecca846b6579318476616c31ca846b6579328476616c32ca846b6579338476616c33ca846b6579348476616c34"
+ "0xecca846b6579318476616c31ca846b6579328476616c32ca846b6579338476616c33ca846b6579348476616c34"
+ "0xecca846b6579318476616c31ca846b6579328476616c32ca846b6579338476616c33ca846b6579348476616c34"
+ "0xecca846b6579318476616c31ca846b6579328476616c32ca846b6579338476616c33ca846b6579348476616c34"
]
]
at Context.<anonymous> (test/helpers/test-runner/json-test-runner.ts:21:100)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
import { expect } from '../../../setup'
/* External Imports */
import { ethers } from '@nomiclabs/buidler'
import { Signer, ContractFactory, Contract, BigNumber } from 'ethers'
import { smockit, MockContract } from '@eth-optimism/smock'
/* Internal Imports */
import {
makeAddressManager,
setProxyTarget,
NON_NULL_BYTES32,
ZERO_ADDRESS,
NON_ZERO_ADDRESS,
NULL_BYTES32,
DUMMY_BATCH_HEADERS,
DUMMY_BATCH_PROOFS,
TrieTestGenerator,
toHexString,
} from '../../../helpers'
import { getContractInterface } from '../../../../src'
import { keccak256 } from 'ethers/lib/utils'
const getXDomainCalldata = (
sender: string,
target: string,
message: string,
messageNonce: number
): string => {
return getContractInterface(
'OVM_L2CrossDomainMessenger'
).encodeFunctionData('relayMessage', [target, sender, message, messageNonce])
}
describe('OVM_L1CrossDomainMessenger', () => {
let signer: Signer
before(async () => {
;[signer] = await ethers.getSigners()
})
let AddressManager: Contract
before(async () => {
AddressManager = await makeAddressManager()
})
let Mock__TargetContract: MockContract
let Mock__OVM_L2CrossDomainMessenger: MockContract
let Mock__OVM_CanonicalTransactionChain: MockContract
let Mock__OVM_StateCommitmentChain: MockContract
before(async () => {
Mock__TargetContract = smockit(
await ethers.getContractFactory('Helper_SimpleProxy')
)
Mock__OVM_L2CrossDomainMessenger = smockit(
await ethers.getContractFactory('OVM_L2CrossDomainMessenger')
)
Mock__OVM_CanonicalTransactionChain = smockit(
await ethers.getContractFactory('OVM_CanonicalTransactionChain')
)
Mock__OVM_StateCommitmentChain = smockit(
await ethers.getContractFactory('OVM_StateCommitmentChain')
)
await AddressManager.setAddress(
'OVM_L2CrossDomainMessenger',
Mock__OVM_L2CrossDomainMessenger.address
)
await setProxyTarget(
AddressManager,
'OVM_CanonicalTransactionChain',
Mock__OVM_CanonicalTransactionChain
)
await setProxyTarget(
AddressManager,
'OVM_StateCommitmentChain',
Mock__OVM_StateCommitmentChain
)
})
let Factory__OVM_L1CrossDomainMessenger: ContractFactory
before(async () => {
Factory__OVM_L1CrossDomainMessenger = await ethers.getContractFactory(
'OVM_L1CrossDomainMessenger'
)
})
let OVM_L1CrossDomainMessenger: Contract
beforeEach(async () => {
OVM_L1CrossDomainMessenger = await Factory__OVM_L1CrossDomainMessenger.deploy(
AddressManager.address
)
})
describe('sendMessage', () => {
const target = NON_ZERO_ADDRESS
const message = NON_NULL_BYTES32
const gasLimit = 100_000
it('should be able to send a single message', async () => {
await expect(
OVM_L1CrossDomainMessenger.sendMessage(target, message, gasLimit)
).to.not.be.reverted
expect(
Mock__OVM_CanonicalTransactionChain.smocked.enqueue.calls[0]
).to.deep.equal([
Mock__OVM_L2CrossDomainMessenger.address,
BigNumber.from(gasLimit),
getXDomainCalldata(await signer.getAddress(), target, message, 0),
])
})
it('should be able to send the same message twice', async () => {
await OVM_L1CrossDomainMessenger.sendMessage(target, message, gasLimit)
await expect(
OVM_L1CrossDomainMessenger.sendMessage(target, message, gasLimit)
).to.not.be.reverted
})
})
describe('replayMessage', () => {
const target = NON_ZERO_ADDRESS
const message = NON_NULL_BYTES32
const gasLimit = 100_000
it('should revert if the message does not exist', async () => {
await expect(
OVM_L1CrossDomainMessenger.replayMessage(
target,
await signer.getAddress(),
message,
0,
gasLimit
)
).to.be.revertedWith('Provided message has not already been sent.')
})
it('should succeed if the message exists', async () => {
await OVM_L1CrossDomainMessenger.sendMessage(target, message, gasLimit)
await expect(
OVM_L1CrossDomainMessenger.replayMessage(
target,
await signer.getAddress(),
message,
0,
gasLimit
)
).to.not.be.reverted
})
})
describe('relayMessage', () => {
let target: string
let message: string
let sender: string
let proof: any
before(async () => {
target = Mock__TargetContract.address
message = Mock__TargetContract.interface.encodeFunctionData('setTarget', [
NON_ZERO_ADDRESS,
])
sender = await signer.getAddress()
const calldata = getXDomainCalldata(sender, target, message, 0)
const precompile = '0x4200000000000000000000000000000000000000'
const storageKey = keccak256(keccak256(calldata) + '00'.repeat(32))
const storageGenerator = await TrieTestGenerator.fromNodes({
nodes: [
{
key: storageKey,
val: '0x' + '01'.padStart(64, '0'),
},
],
secure: true,
})
const generator = await TrieTestGenerator.fromAccounts({
accounts: [
{
address: precompile,
nonce: 0,
balance: 0,
codeHash: keccak256('0x1234'),
storageRoot: toHexString(storageGenerator._trie.root),
},
],
secure: true,
})
proof = {
stateRoot: toHexString(generator._trie.root),
stateRootBatchHeader: DUMMY_BATCH_HEADERS[0],
stateRootProof: DUMMY_BATCH_PROOFS[0],
stateTrieWitness: (await generator.makeAccountProofTest(precompile))
.accountTrieWitness,
storageTrieWitness: (
await storageGenerator.makeInclusionProofTest(storageKey)
).proof,
}
})
beforeEach(async () => {
Mock__OVM_StateCommitmentChain.smocked.verifyElement.will.return.with(
true
)
Mock__OVM_StateCommitmentChain.smocked.insideFraudProofWindow.will.return.with(
false
)
})
it('should revert if still inside the fraud proof window', async () => {
Mock__OVM_StateCommitmentChain.smocked.insideFraudProofWindow.will.return.with(
true
)
const proof = {
stateRoot: NULL_BYTES32,
stateRootBatchHeader: DUMMY_BATCH_HEADERS[0],
stateRootProof: DUMMY_BATCH_PROOFS[0],
stateTrieWitness: '0x',
storageTrieWitness: '0x',
}
await expect(
OVM_L1CrossDomainMessenger.relayMessage(
target,
sender,
message,
0,
proof
)
).to.be.revertedWith('Provided message could not be verified.')
})
it('should revert if provided an invalid state root proof', async () => {
Mock__OVM_StateCommitmentChain.smocked.verifyElement.will.return.with(
false
)
const proof = {
stateRoot: NULL_BYTES32,
stateRootBatchHeader: DUMMY_BATCH_HEADERS[0],
stateRootProof: DUMMY_BATCH_PROOFS[0],
stateTrieWitness: '0x',
storageTrieWitness: '0x',
}
await expect(
OVM_L1CrossDomainMessenger.relayMessage(
target,
sender,
message,
0,
proof
)
).to.be.revertedWith('Provided message could not be verified.')
})
it('should revert if provided an invalid storage trie witness', async () => {
await expect(
OVM_L1CrossDomainMessenger.relayMessage(target, sender, message, 0, {
...proof,
storageTrieWitness: '0x',
})
).to.be.reverted
})
it('should revert if provided an invalid state trie witness', async () => {
await expect(
OVM_L1CrossDomainMessenger.relayMessage(target, sender, message, 0, {
...proof,
stateTrieWitness: '0x',
})
).to.be.reverted
})
it('should send a call to the target contract', async () => {
await OVM_L1CrossDomainMessenger.relayMessage(
target,
sender,
message,
0,
proof
)
expect(Mock__TargetContract.smocked.setTarget.calls[0]).to.deep.equal([
NON_ZERO_ADDRESS,
])
})
it('should revert if trying to send the same message twice', async () => {
await OVM_L1CrossDomainMessenger.relayMessage(
target,
sender,
message,
0,
proof
)
await expect(
OVM_L1CrossDomainMessenger.relayMessage(
target,
sender,
message,
0,
proof
)
).to.be.revertedWith('Provided message has already been received.')
})
})
})
import { expect } from '../../../setup'
/* External Imports */
import { ethers } from '@nomiclabs/buidler'
import { Signer, ContractFactory, Contract } from 'ethers'
import { smockit, MockContract } from '@eth-optimism/smock'
/* Internal Imports */
import {
makeAddressManager,
setProxyTarget,
NON_NULL_BYTES32,
ZERO_ADDRESS,
NON_ZERO_ADDRESS,
} from '../../../helpers'
import { getContractInterface } from '../../../../src'
const getXDomainCalldata = (
sender: string,
target: string,
message: string,
messageNonce: number
): string => {
return getContractInterface(
'OVM_L2CrossDomainMessenger'
).encodeFunctionData('relayMessage', [target, sender, message, messageNonce])
}
describe('OVM_L2CrossDomainMessenger', () => {
let signer: Signer
before(async () => {
;[signer] = await ethers.getSigners()
})
let AddressManager: Contract
before(async () => {
AddressManager = await makeAddressManager()
})
let Mock__TargetContract: MockContract
let Mock__OVM_L1CrossDomainMessenger: MockContract
let Mock__OVM_L1MessageSender: MockContract
let Mock__OVM_L2ToL1MessagePasser: MockContract
before(async () => {
Mock__TargetContract = smockit(
await ethers.getContractFactory('Helper_SimpleProxy')
)
Mock__OVM_L1CrossDomainMessenger = smockit(
await ethers.getContractFactory('OVM_L1CrossDomainMessenger')
)
Mock__OVM_L1MessageSender = smockit(
await ethers.getContractFactory('OVM_L1MessageSender')
)
Mock__OVM_L2ToL1MessagePasser = smockit(
await ethers.getContractFactory('OVM_L2ToL1MessagePasser')
)
await AddressManager.setAddress(
'OVM_L1CrossDomainMessenger',
Mock__OVM_L1CrossDomainMessenger.address
)
await setProxyTarget(
AddressManager,
'OVM_L1MessageSender',
Mock__OVM_L1MessageSender
)
await setProxyTarget(
AddressManager,
'OVM_L2ToL1MessagePasser',
Mock__OVM_L2ToL1MessagePasser
)
})
let Factory__OVM_L2CrossDomainMessenger: ContractFactory
before(async () => {
Factory__OVM_L2CrossDomainMessenger = await ethers.getContractFactory(
'OVM_L2CrossDomainMessenger'
)
})
let OVM_L2CrossDomainMessenger: Contract
beforeEach(async () => {
OVM_L2CrossDomainMessenger = await Factory__OVM_L2CrossDomainMessenger.deploy(
AddressManager.address
)
})
describe('sendMessage', () => {
const target = NON_ZERO_ADDRESS
const message = NON_NULL_BYTES32
const gasLimit = 100_000
it('should be able to send a single message', async () => {
await expect(
OVM_L2CrossDomainMessenger.sendMessage(target, message, gasLimit)
).to.not.be.reverted
expect(
Mock__OVM_L2ToL1MessagePasser.smocked.passMessageToL1.calls[0]
).to.deep.equal([
getXDomainCalldata(await signer.getAddress(), target, message, 0),
])
})
it('should be able to send the same message twice', async () => {
await OVM_L2CrossDomainMessenger.sendMessage(target, message, gasLimit)
await expect(
OVM_L2CrossDomainMessenger.sendMessage(target, message, gasLimit)
).to.not.be.reverted
})
})
describe('relayMessage', () => {
let target: string
let message: string
let sender: string
before(async () => {
target = Mock__TargetContract.address
message = Mock__TargetContract.interface.encodeFunctionData('setTarget', [
NON_ZERO_ADDRESS,
])
sender = await signer.getAddress()
})
beforeEach(async () => {
Mock__OVM_L1MessageSender.smocked.getL1MessageSender.will.return.with(
Mock__OVM_L1CrossDomainMessenger.address
)
})
it('should revert if the L1 message sender is not the OVM_L1CrossDomainMessenger', async () => {
Mock__OVM_L1MessageSender.smocked.getL1MessageSender.will.return.with(
ZERO_ADDRESS
)
await expect(
OVM_L2CrossDomainMessenger.relayMessage(target, sender, message, 0)
).to.be.revertedWith('Provided message could not be verified.')
})
it('should send a call to the target contract', async () => {
await OVM_L2CrossDomainMessenger.relayMessage(target, sender, message, 0)
expect(Mock__TargetContract.smocked.setTarget.calls[0]).to.deep.equal([
NON_ZERO_ADDRESS,
])
})
it('should revert if trying to send the same message twice', async () => {
Mock__OVM_L1MessageSender.smocked.getL1MessageSender.will.return.with(
Mock__OVM_L1CrossDomainMessenger.address
)
await OVM_L2CrossDomainMessenger.relayMessage(target, sender, message, 0)
await expect(
OVM_L2CrossDomainMessenger.relayMessage(target, sender, message, 0)
).to.be.revertedWith('Provided message has already been received.')
})
})
})
......@@ -13,8 +13,9 @@ import {
ZERO_ADDRESS,
toHexString32,
getEthTime,
NULL_BYTES32,
} from '../../../helpers'
import { keccak256 } from 'ethers/lib/utils'
import { keccak256, defaultAbiCoder } from 'ethers/lib/utils'
describe('OVM_StateCommitmentChain', () => {
let signer: Signer
......@@ -106,7 +107,7 @@ describe('OVM_StateCommitmentChain', () => {
batchRoot: keccak256(NON_NULL_BYTES32),
batchSize: 1,
prevTotalElements: 0,
extraData: '0x',
extraData: NULL_BYTES32,
}
beforeEach(async () => {
......@@ -114,7 +115,10 @@ describe('OVM_StateCommitmentChain', () => {
batch.length
)
await OVM_StateCommitmentChain.appendStateBatch(batch)
batchHeader.extraData = toHexString32(await getEthTime(ethers.provider))
batchHeader.extraData = defaultAbiCoder.encode(
['uint256'],
[await getEthTime(ethers.provider)]
)
})
describe('when the sender is not the OVM_FraudVerifier', () => {
......@@ -156,7 +160,7 @@ describe('OVM_StateCommitmentChain', () => {
await expect(
OVM_StateCommitmentChain.deleteStateBatch({
...batchHeader,
extraData: '0x1234',
extraData: '0x' + '22'.repeat(32),
})
).to.be.revertedWith('Invalid batch header.')
})
......
......@@ -16,6 +16,8 @@ import {
const CREATED_CONTRACT_1 = '0x2bda4a99d5be88609d23b1e4ab5d1d34fb1c2feb'
const CREATED_CONTRACT_2 = '0x2bda4a99d5be88609d23b1e4ab5d1d34fb1c2feb'
const CREATED_CONTRACT_BY_2_1 = '0xe0d8be8101f36ebe6b01abacec884422c39a1f62'
const CREATED_CONTRACT_BY_2_2 = '0x15ac629e1a3866b17179ee4ae86de5cbda744335'
const NESTED_CREATED_CONTRACT = '0xcb964b3f4162a0d4f5c997b40e19da5a546bc36f'
const DUMMY_REVERT_DATA =
'0xdeadbeef1e5420deadbeef1e5420deadbeef1e5420deadbeef1e5420deadbeef1e5420'
......@@ -49,6 +51,14 @@ const test_ovmCREATE: TestDefinition = {
codeHash: VERIFIED_EMPTY_CONTRACT_HASH,
ethAddress: '0x' + '00'.repeat(20),
},
[CREATED_CONTRACT_BY_2_1]: {
codeHash: VERIFIED_EMPTY_CONTRACT_HASH,
ethAddress: '0x' + '00'.repeat(20),
},
[CREATED_CONTRACT_BY_2_2]: {
codeHash: '0x' + '01'.repeat(32),
ethAddress: '0x' + '00'.repeat(20),
},
[NESTED_CREATED_CONTRACT]: {
codeHash: VERIFIED_EMPTY_CONTRACT_HASH,
ethAddress: '0x' + '00'.repeat(20),
......@@ -527,6 +537,38 @@ const test_ovmCREATE: TestDefinition = {
},
],
},
{
name: 'ovmCREATE => ovmCREATE => ovmCALL(ADDRESS_NONEXIST)',
steps: [
{
functionName: 'ovmCALL',
functionParams: {
gasLimit: OVM_TX_GAS_LIMIT,
target: '$DUMMY_OVM_ADDRESS_2',
subSteps: [
{
functionName: 'ovmCREATE',
functionParams: {
subSteps: [
{
functionName: 'ovmCREATE',
functionParams: {
bytecode: '0x',
},
expectedReturnStatus: true,
expectedReturnValue: ZERO_ADDRESS,
},
],
},
expectedReturnStatus: true,
expectedReturnValue: CREATED_CONTRACT_BY_2_1,
},
],
},
expectedReturnStatus: true,
},
],
},
{
name: 'ovmCREATE => ovmCREATE => ovmCALL(ADDRESS_NONEXIST)',
expectInvalidStateAccess: true,
......@@ -563,6 +605,39 @@ const test_ovmCREATE: TestDefinition = {
},
],
},
{
name: 'OZ-AUDIT: ovmCREATE => ((ovmCREATE => ovmADDRESS), ovmREVERT)',
steps: [
{
functionName: 'ovmCREATE',
functionParams: {
subSteps: [
{
functionName: 'ovmCREATE',
functionParams: {
subSteps: [
{
functionName: 'ovmADDRESS',
expectedReturnValue: NESTED_CREATED_CONTRACT,
},
],
},
expectedReturnStatus: true,
expectedReturnValue: NESTED_CREATED_CONTRACT,
},
{
functionName: 'ovmREVERT',
revertData: DUMMY_REVERT_DATA,
expectedReturnStatus: true,
expectedReturnValue: '0x00',
},
],
},
expectedReturnStatus: true,
expectedReturnValue: ZERO_ADDRESS,
},
],
},
{
name: 'ovmCREATE => OUT_OF_GAS',
steps: [
......
......@@ -17,7 +17,7 @@ describe('OVM_SafetyChecker', () => {
OVM_SafetyChecker = await Factory__OVM_SafetyChecker.deploy()
})
describe.skip('isBytecodeSafe()', () => {
describe('isBytecodeSafe()', () => {
for (const testName of Object.keys(SAFETY_CHECKER_TEST_JSON)) {
const test = SAFETY_CHECKER_TEST_JSON[testName]
it(`should correctly classify: ${testName}`, async () => {
......
......@@ -72,6 +72,10 @@
"in": "0x32",
"out": false
},
"single opcode blacklisted: REVERT": {
"in": "0xfd",
"out": false
},
"single opcode blacklisted: SELFBALANCE": {
"in": "0x47",
"out": false
......@@ -748,6 +752,10 @@
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a432",
"out": false
},
"multiple opcodes blacklisted end: REVERT": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fd",
"out": false
},
"multiple opcodes blacklisted end: SELFBALANCE": {
"in": "0x0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b60306130306230303063303030306430303030306530303030303066303030303030306730303030303030306830303030303030303069303030303030303030306a30303030303030303030306b3030303030303030303030306c303030303030303030303030306d30303030303030303030303030306e3030303030303030303030303030306f303030303030303030303030303030307030303030303030303030303030303030307130303030303030303030303030303030303072303030303030303030303030303030303030307330303030303030303030303030303030303030307430303030303030303030303030303030303030303075303030303030303030303030303030303030303030307630303030303030303030303030303030303030303030307730303030303030303030303030303030303030303030303078303030303030303030303030303030303030303030303030307930303030303030303030303030303030303030303030303030307a3030303030303030303030303030303030303030303030303030307b303030303030303030303030303030303030303030303030303030307c30303030303030303030303030303030303030303030303030303030307d3030303030303030303030303030303030303030303030303030303030307e303030303030303030303030303030303030303030303030303030303030307f3030303030303030303030303030303030303030303030303030303030303030808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a447",
"out": false
......@@ -1048,10 +1056,6 @@
"in": "0x565bf3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4",
"out": true
},
"valid alternating reachable/unreachable with REVERT": {
"in": "0x565bfd303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fd303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fd303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4",
"out": true
},
"valid alternating reachable/unreachable with INVALID": {
"in": "0x565bfe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4",
"out": true
......@@ -1064,1364 +1068,44 @@
"in": "0x575bf3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4f3303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a430",
"out": false
},
"invalid alternating reachable/unreachable with REVERT": {
"in": "0x575bfd303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fd303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fd303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a430",
"out": false
},
"invalid alternating reachable/unreachable with INVALID": {
"in": "0x575bfe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4fe303140f1f24641f0f5f4443b3c3f453a433247ff5455fa425b0102030405060708090a0b101112131415161718191a1b1c1d203435363738393d3e505152535758595a5b606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a430",
"out": false
},
"valid call": {
"in": "0x336000905af1",
"valid EM call": {
"in": "0x336000905af158601d0157586012013d600114573d6000803e3d6000fd5b60016000f35b",
"out": true
},
"invalid CALL with gas setter: ADD": {
"in": "0x3360009001f1",
"out": false
},
"invalid CALL with gas setter: MUL": {
"in": "0x3360009002f1",
"out": false
},
"invalid CALL with gas setter: SUB": {
"in": "0x3360009003f1",
"out": false
},
"invalid CALL with gas setter: DIV": {
"in": "0x3360009004f1",
"out": false
},
"invalid CALL with gas setter: SDIV": {
"in": "0x3360009005f1",
"out": false
},
"invalid CALL with gas setter: MOD": {
"in": "0x3360009006f1",
"out": false
},
"invalid CALL with gas setter: SMOD": {
"in": "0x3360009007f1",
"out": false
},
"invalid CALL with gas setter: ADDMOD": {
"in": "0x3360009008f1",
"out": false
},
"invalid CALL with gas setter: MULMOD": {
"in": "0x3360009009f1",
"out": false
},
"invalid CALL with gas setter: EXP": {
"in": "0x336000900af1",
"out": false
},
"invalid CALL with gas setter: SIGNEXTEND": {
"in": "0x336000900bf1",
"out": false
},
"invalid CALL with gas setter: LT": {
"in": "0x3360009010f1",
"out": false
},
"invalid CALL with gas setter: GT": {
"in": "0x3360009011f1",
"out": false
},
"invalid CALL with gas setter: SLT": {
"in": "0x3360009012f1",
"out": false
},
"invalid CALL with gas setter: SGT": {
"in": "0x3360009013f1",
"out": false
},
"invalid CALL with gas setter: EQ": {
"in": "0x3360009014f1",
"out": false
},
"invalid CALL with gas setter: ISZERO": {
"in": "0x3360009015f1",
"out": false
},
"invalid CALL with gas setter: AND": {
"in": "0x3360009016f1",
"out": false
},
"invalid CALL with gas setter: OR": {
"in": "0x3360009017f1",
"out": false
},
"invalid CALL with gas setter: XOR": {
"in": "0x3360009018f1",
"out": false
},
"invalid CALL with gas setter: NOT": {
"in": "0x3360009019f1",
"out": false
},
"invalid CALL with gas setter: BYTE": {
"in": "0x336000901af1",
"out": false
},
"invalid CALL with gas setter: SHL": {
"in": "0x336000901bf1",
"out": false
},
"invalid CALL with gas setter: SHR": {
"in": "0x336000901cf1",
"out": false
},
"invalid CALL with gas setter: SAR": {
"in": "0x336000901df1",
"out": false
},
"invalid CALL with gas setter: SHA3": {
"in": "0x3360009020f1",
"out": false
},
"invalid CALL with gas setter: CALLVALUE": {
"in": "0x3360009034f1",
"out": false
},
"invalid CALL with gas setter: CALLDATALOAD": {
"in": "0x3360009035f1",
"out": false
},
"invalid CALL with gas setter: CALLDATASIZE": {
"in": "0x3360009036f1",
"out": false
},
"invalid CALL with gas setter: CALLDATACOPY": {
"in": "0x3360009037f1",
"out": false
},
"invalid CALL with gas setter: CODESIZE": {
"in": "0x3360009038f1",
"out": false
},
"invalid CALL with gas setter: CODECOPY": {
"in": "0x3360009039f1",
"out": false
},
"invalid CALL with gas setter: RETURNDATASIZE": {
"in": "0x336000903df1",
"out": false
},
"invalid CALL with gas setter: RETURNDATACOPY": {
"in": "0x336000903ef1",
"out": false
},
"invalid CALL with gas setter: POP": {
"in": "0x3360009050f1",
"out": false
},
"invalid CALL with gas setter: MLOAD": {
"in": "0x3360009051f1",
"out": false
},
"invalid CALL with gas setter: MSTORE": {
"in": "0x3360009052f1",
"out": false
},
"invalid CALL with gas setter: MSTORE8": {
"in": "0x3360009053f1",
"out": false
},
"invalid CALL with gas setter: JUMPI": {
"in": "0x3360009057f1",
"out": false
},
"invalid CALL with gas setter: PC": {
"in": "0x3360009058f1",
"out": false
},
"invalid CALL with gas setter: MSIZE": {
"in": "0x3360009059f1",
"out": false
},
"invalid CALL with gas setter: JUMPDEST": {
"in": "0x336000905bf1",
"out": false
},
"invalid CALL with gas setter: PUSH1": {
"in": "0x336000906000f1",
"out": false
},
"invalid CALL with gas setter: PUSH2": {
"in": "0x33600090610000f1",
"out": false
},
"invalid CALL with gas setter: PUSH3": {
"in": "0x3360009062000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH4": {
"in": "0x336000906300000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH5": {
"in": "0x33600090640000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH6": {
"in": "0x3360009065000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH7": {
"in": "0x336000906600000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH8": {
"in": "0x33600090670000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH9": {
"in": "0x3360009068000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH10": {
"in": "0x336000906900000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH11": {
"in": "0x336000906a0000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH12": {
"in": "0x336000906b000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH13": {
"in": "0x336000906c00000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH14": {
"in": "0x336000906d0000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH15": {
"in": "0x336000906e000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH16": {
"in": "0x336000906f00000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH17": {
"in": "0x33600090700000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH18": {
"in": "0x3360009071000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH19": {
"in": "0x336000907200000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH20": {
"in": "0x33600090730000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH21": {
"in": "0x3360009074000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH22": {
"in": "0x336000907500000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH23": {
"in": "0x33600090760000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH24": {
"in": "0x3360009077000000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH25": {
"in": "0x336000907800000000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH26": {
"in": "0x33600090790000000000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH27": {
"in": "0x336000907a000000000000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH28": {
"in": "0x336000907b00000000000000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH29": {
"in": "0x336000907c0000000000000000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH30": {
"in": "0x336000907d000000000000000000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH31": {
"in": "0x336000907e00000000000000000000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: PUSH32": {
"in": "0x336000907f0000000000000000000000000000000000000000000000000000000000000000f1",
"out": false
},
"invalid CALL with gas setter: DUP1": {
"in": "0x3360009080f1",
"out": false
},
"invalid CALL with gas setter: DUP2": {
"in": "0x3360009081f1",
"out": false
},
"invalid CALL with gas setter: DUP3": {
"in": "0x3360009082f1",
"out": false
},
"invalid CALL with gas setter: DUP4": {
"in": "0x3360009083f1",
"out": false
},
"invalid CALL with gas setter: DUP5": {
"in": "0x3360009084f1",
"out": false
},
"invalid CALL with gas setter: DUP6": {
"in": "0x3360009085f1",
"out": false
},
"invalid CALL with gas setter: DUP7": {
"in": "0x3360009086f1",
"out": false
},
"invalid CALL with gas setter: DUP8": {
"in": "0x3360009087f1",
"out": false
},
"invalid CALL with gas setter: DUP9": {
"in": "0x3360009088f1",
"out": false
},
"invalid CALL with gas setter: DUP10": {
"in": "0x3360009089f1",
"out": false
},
"invalid CALL with gas setter: DUP11": {
"in": "0x336000908af1",
"out": false
},
"invalid CALL with gas setter: DUP12": {
"in": "0x336000908bf1",
"out": false
},
"invalid CALL with gas setter: DUP13": {
"in": "0x336000908cf1",
"out": false
},
"invalid CALL with gas setter: DUP14": {
"in": "0x336000908df1",
"out": false
},
"invalid CALL with gas setter: DUP15": {
"in": "0x336000908ef1",
"out": false
},
"invalid CALL with gas setter: DUP16": {
"in": "0x336000908ff1",
"out": false
},
"invalid CALL with gas setter: SWAP1": {
"in": "0x3360009090f1",
"out": false
},
"invalid CALL with gas setter: SWAP2": {
"in": "0x3360009091f1",
"out": false
},
"invalid CALL with gas setter: SWAP3": {
"in": "0x3360009092f1",
"out": false
},
"invalid CALL with gas setter: SWAP4": {
"in": "0x3360009093f1",
"out": false
},
"invalid CALL with gas setter: SWAP5": {
"in": "0x3360009094f1",
"out": false
},
"invalid CALL with gas setter: SWAP6": {
"in": "0x3360009095f1",
"out": false
},
"invalid CALL with gas setter: SWAP7": {
"in": "0x3360009096f1",
"out": false
},
"invalid CALL with gas setter: SWAP8": {
"in": "0x3360009097f1",
"out": false
},
"invalid CALL with gas setter: SWAP9": {
"in": "0x3360009098f1",
"out": false
},
"invalid CALL with gas setter: SWAP10": {
"in": "0x3360009099f1",
"out": false
},
"invalid CALL with gas setter: SWAP11": {
"in": "0x336000909af1",
"out": false
},
"invalid CALL with gas setter: SWAP12": {
"in": "0x336000909bf1",
"out": false
},
"invalid CALL with gas setter: SWAP13": {
"in": "0x336000909cf1",
"out": false
},
"invalid CALL with gas setter: SWAP14": {
"in": "0x336000909df1",
"out": false
},
"invalid CALL with gas setter: SWAP15": {
"in": "0x336000909ef1",
"out": false
},
"invalid CALL with gas setter: SWAP16": {
"in": "0x336000909ff1",
"out": false
},
"invalid CALL with gas setter: LOG0": {
"in": "0x33600090a0f1",
"out": false
},
"invalid CALL with gas setter: LOG1": {
"in": "0x33600090a1f1",
"out": false
},
"invalid CALL with gas setter: LOG2": {
"in": "0x33600090a2f1",
"out": false
},
"invalid CALL with gas setter: LOG3": {
"in": "0x33600090a3f1",
"out": false
},
"invalid CALL with gas setter: LOG4": {
"in": "0x33600090a4f1",
"out": false
},
"invalid CALL with value setter: ADD": {
"in": "0x3301905af1",
"out": false
},
"invalid CALL with value setter: MUL": {
"in": "0x3302905af1",
"out": false
},
"invalid CALL with value setter: SUB": {
"in": "0x3303905af1",
"out": false
},
"invalid CALL with value setter: DIV": {
"in": "0x3304905af1",
"out": false
},
"invalid CALL with value setter: SDIV": {
"in": "0x3305905af1",
"out": false
},
"invalid CALL with value setter: MOD": {
"in": "0x3306905af1",
"out": false
},
"invalid CALL with value setter: SMOD": {
"in": "0x3307905af1",
"out": false
},
"invalid CALL with value setter: ADDMOD": {
"in": "0x3308905af1",
"out": false
},
"invalid CALL with value setter: MULMOD": {
"in": "0x3309905af1",
"out": false
},
"invalid CALL with value setter: EXP": {
"in": "0x330a905af1",
"out": false
},
"invalid CALL with value setter: SIGNEXTEND": {
"in": "0x330b905af1",
"out": false
},
"invalid CALL with value setter: LT": {
"in": "0x3310905af1",
"out": false
},
"invalid CALL with value setter: GT": {
"in": "0x3311905af1",
"out": false
"valid identity precompile call": {
"in": "0x3350600060045af1",
"out": true
},
"invalid CALL with value setter: SLT": {
"in": "0x3312905af1",
"out": false
},
"invalid CALL with value setter: SGT": {
"in": "0x3313905af1",
"out": false
},
"invalid CALL with value setter: EQ": {
"in": "0x3314905af1",
"out": false
},
"invalid CALL with value setter: ISZERO": {
"in": "0x3315905af1",
"out": false
},
"invalid CALL with value setter: AND": {
"in": "0x3316905af1",
"out": false
},
"invalid CALL with value setter: OR": {
"in": "0x3317905af1",
"out": false
},
"invalid CALL with value setter: XOR": {
"in": "0x3318905af1",
"out": false
},
"invalid CALL with value setter: NOT": {
"in": "0x3319905af1",
"out": false
},
"invalid CALL with value setter: BYTE": {
"in": "0x331a905af1",
"out": false
},
"invalid CALL with value setter: SHL": {
"in": "0x331b905af1",
"out": false
},
"invalid CALL with value setter: SHR": {
"in": "0x331c905af1",
"out": false
},
"invalid CALL with value setter: SAR": {
"in": "0x331d905af1",
"out": false
},
"invalid CALL with value setter: SHA3": {
"in": "0x3320905af1",
"out": false
},
"invalid CALL with value setter: CALLVALUE": {
"in": "0x3334905af1",
"out": false
},
"invalid CALL with value setter: CALLDATALOAD": {
"in": "0x3335905af1",
"out": false
},
"invalid CALL with value setter: CALLDATASIZE": {
"in": "0x3336905af1",
"out": false
},
"invalid CALL with value setter: CALLDATACOPY": {
"in": "0x3337905af1",
"out": false
},
"invalid CALL with value setter: CODESIZE": {
"in": "0x3338905af1",
"out": false
},
"invalid CALL with value setter: CODECOPY": {
"in": "0x3339905af1",
"out": false
},
"invalid CALL with value setter: RETURNDATASIZE": {
"in": "0x333d905af1",
"out": false
},
"invalid CALL with value setter: RETURNDATACOPY": {
"in": "0x333e905af1",
"out": false
},
"invalid CALL with value setter: POP": {
"in": "0x3350905af1",
"out": false
},
"invalid CALL with value setter: MLOAD": {
"in": "0x3351905af1",
"out": false
},
"invalid CALL with value setter: MSTORE": {
"in": "0x3352905af1",
"out": false
},
"invalid CALL with value setter: MSTORE8": {
"in": "0x3353905af1",
"out": false
},
"invalid CALL with value setter: JUMPI": {
"in": "0x3357905af1",
"out": false
},
"invalid CALL with value setter: PC": {
"in": "0x3358905af1",
"out": false
},
"invalid CALL with value setter: MSIZE": {
"in": "0x3359905af1",
"out": false
},
"invalid CALL with value setter: GAS": {
"in": "0x335a905af1",
"out": false
},
"invalid CALL with value setter: JUMPDEST": {
"in": "0x335b905af1",
"out": false
},
"invalid CALL with value setter: PUSH2": {
"in": "0x33610000905af1",
"out": false
},
"invalid CALL with value setter: PUSH3": {
"in": "0x3362000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH4": {
"in": "0x336300000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH5": {
"in": "0x33640000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH6": {
"in": "0x3365000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH7": {
"in": "0x336600000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH8": {
"in": "0x33670000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH9": {
"in": "0x3368000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH10": {
"in": "0x336900000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH11": {
"in": "0x336a0000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH12": {
"in": "0x336b000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH13": {
"in": "0x336c00000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH14": {
"in": "0x336d0000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH15": {
"in": "0x336e000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH16": {
"in": "0x336f00000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH17": {
"in": "0x33700000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH18": {
"in": "0x3371000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH19": {
"in": "0x337200000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH20": {
"in": "0x33730000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH21": {
"in": "0x3374000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH22": {
"in": "0x337500000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH23": {
"in": "0x33760000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH24": {
"in": "0x3377000000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH25": {
"in": "0x337800000000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH26": {
"in": "0x33790000000000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH27": {
"in": "0x337a000000000000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH28": {
"in": "0x337b00000000000000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH29": {
"in": "0x337c0000000000000000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH30": {
"in": "0x337d000000000000000000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH31": {
"in": "0x337e00000000000000000000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: PUSH32": {
"in": "0x337f0000000000000000000000000000000000000000000000000000000000000000905af1",
"out": false
},
"invalid CALL with value setter: DUP1": {
"in": "0x3380905af1",
"out": false
},
"invalid CALL with value setter: DUP2": {
"in": "0x3381905af1",
"out": false
},
"invalid CALL with value setter: DUP3": {
"in": "0x3382905af1",
"out": false
},
"invalid CALL with value setter: DUP4": {
"in": "0x3383905af1",
"out": false
},
"invalid CALL with value setter: DUP5": {
"in": "0x3384905af1",
"out": false
},
"invalid CALL with value setter: DUP6": {
"in": "0x3385905af1",
"out": false
},
"invalid CALL with value setter: DUP7": {
"in": "0x3386905af1",
"out": false
},
"invalid CALL with value setter: DUP8": {
"in": "0x3387905af1",
"out": false
},
"invalid CALL with value setter: DUP9": {
"in": "0x3388905af1",
"out": false
},
"invalid CALL with value setter: DUP10": {
"in": "0x3389905af1",
"out": false
},
"invalid CALL with value setter: DUP11": {
"in": "0x338a905af1",
"out": false
},
"invalid CALL with value setter: DUP12": {
"in": "0x338b905af1",
"out": false
},
"invalid CALL with value setter: DUP13": {
"in": "0x338c905af1",
"out": false
},
"invalid CALL with value setter: DUP14": {
"in": "0x338d905af1",
"out": false
},
"invalid CALL with value setter: DUP15": {
"in": "0x338e905af1",
"out": false
},
"invalid CALL with value setter: DUP16": {
"in": "0x338f905af1",
"out": false
},
"invalid CALL with value setter: SWAP1": {
"in": "0x3390905af1",
"out": false
},
"invalid CALL with value setter: SWAP2": {
"in": "0x3391905af1",
"out": false
},
"invalid CALL with value setter: SWAP3": {
"in": "0x3392905af1",
"out": false
},
"invalid CALL with value setter: SWAP4": {
"in": "0x3393905af1",
"out": false
},
"invalid CALL with value setter: SWAP5": {
"in": "0x3394905af1",
"out": false
},
"invalid CALL with value setter: SWAP6": {
"in": "0x3395905af1",
"out": false
},
"invalid CALL with value setter: SWAP7": {
"in": "0x3396905af1",
"out": false
},
"invalid CALL with value setter: SWAP8": {
"in": "0x3397905af1",
"out": false
},
"invalid CALL with value setter: SWAP9": {
"in": "0x3398905af1",
"out": false
},
"invalid CALL with value setter: SWAP10": {
"in": "0x3399905af1",
"out": false
},
"invalid CALL with value setter: SWAP11": {
"in": "0x339a905af1",
"out": false
},
"invalid CALL with value setter: SWAP12": {
"in": "0x339b905af1",
"out": false
},
"invalid CALL with value setter: SWAP13": {
"in": "0x339c905af1",
"out": false
},
"invalid CALL with value setter: SWAP14": {
"in": "0x339d905af1",
"out": false
},
"invalid CALL with value setter: SWAP15": {
"in": "0x339e905af1",
"out": false
},
"invalid CALL with value setter: SWAP16": {
"in": "0x339f905af1",
"out": false
},
"invalid CALL with value setter: LOG0": {
"in": "0x33a0905af1",
"out": false
},
"invalid CALL with value setter: LOG1": {
"in": "0x33a1905af1",
"out": false
},
"invalid CALL with value setter: LOG2": {
"in": "0x33a2905af1",
"out": false
},
"invalid CALL with value setter: LOG3": {
"in": "0x33a3905af1",
"out": false
},
"invalid CALL with value setter: LOG4": {
"in": "0x33a4905af1",
"out": false
},
"invalid CALL with caller setter: ADD": {
"in": "0x016000905af1",
"out": false
},
"invalid CALL with caller setter: MUL": {
"in": "0x026000905af1",
"out": false
},
"invalid CALL with caller setter: SUB": {
"in": "0x036000905af1",
"out": false
},
"invalid CALL with caller setter: DIV": {
"in": "0x046000905af1",
"out": false
},
"invalid CALL with caller setter: SDIV": {
"in": "0x056000905af1",
"out": false
},
"invalid CALL with caller setter: MOD": {
"in": "0x066000905af1",
"out": false
},
"invalid CALL with caller setter: SMOD": {
"in": "0x076000905af1",
"out": false
},
"invalid CALL with caller setter: ADDMOD": {
"in": "0x086000905af1",
"out": false
},
"invalid CALL with caller setter: MULMOD": {
"in": "0x096000905af1",
"out": false
},
"invalid CALL with caller setter: EXP": {
"in": "0x0a6000905af1",
"out": false
},
"invalid CALL with caller setter: SIGNEXTEND": {
"in": "0x0b6000905af1",
"out": false
},
"invalid CALL with caller setter: LT": {
"in": "0x106000905af1",
"out": false
},
"invalid CALL with caller setter: GT": {
"in": "0x116000905af1",
"out": false
},
"invalid CALL with caller setter: SLT": {
"in": "0x126000905af1",
"out": false
},
"invalid CALL with caller setter: SGT": {
"in": "0x136000905af1",
"out": false
},
"invalid CALL with caller setter: EQ": {
"in": "0x146000905af1",
"out": false
},
"invalid CALL with caller setter: ISZERO": {
"in": "0x156000905af1",
"out": false
},
"invalid CALL with caller setter: AND": {
"in": "0x166000905af1",
"out": false
},
"invalid CALL with caller setter: OR": {
"in": "0x176000905af1",
"out": false
},
"invalid CALL with caller setter: XOR": {
"in": "0x186000905af1",
"out": false
},
"invalid CALL with caller setter: NOT": {
"in": "0x196000905af1",
"out": false
},
"invalid CALL with caller setter: BYTE": {
"in": "0x1a6000905af1",
"out": false
},
"invalid CALL with caller setter: SHL": {
"in": "0x1b6000905af1",
"out": false
},
"invalid CALL with caller setter: SHR": {
"in": "0x1c6000905af1",
"out": false
},
"invalid CALL with caller setter: SAR": {
"in": "0x1d6000905af1",
"out": false
},
"invalid CALL with caller setter: SHA3": {
"in": "0x206000905af1",
"out": false
},
"invalid CALL with caller setter: CALLVALUE": {
"in": "0x346000905af1",
"out": false
},
"invalid CALL with caller setter: CALLDATALOAD": {
"in": "0x356000905af1",
"out": false
},
"invalid CALL with caller setter: CALLDATASIZE": {
"in": "0x366000905af1",
"out": false
},
"invalid CALL with caller setter: CALLDATACOPY": {
"in": "0x376000905af1",
"out": false
},
"invalid CALL with caller setter: CODESIZE": {
"in": "0x386000905af1",
"out": false
},
"invalid CALL with caller setter: CODECOPY": {
"in": "0x396000905af1",
"out": false
},
"invalid CALL with caller setter: RETURNDATASIZE": {
"in": "0x3d6000905af1",
"out": false
},
"invalid CALL with caller setter: RETURNDATACOPY": {
"in": "0x3e6000905af1",
"out": false
},
"invalid CALL with caller setter: POP": {
"in": "0x506000905af1",
"out": false
},
"invalid CALL with caller setter: MLOAD": {
"in": "0x516000905af1",
"out": false
},
"invalid CALL with caller setter: MSTORE": {
"in": "0x526000905af1",
"out": false
},
"invalid CALL with caller setter: MSTORE8": {
"in": "0x536000905af1",
"out": false
},
"invalid CALL with caller setter: JUMPI": {
"in": "0x576000905af1",
"out": false
},
"invalid CALL with caller setter: PC": {
"in": "0x586000905af1",
"out": false
},
"invalid CALL with caller setter: MSIZE": {
"in": "0x596000905af1",
"out": false
},
"invalid CALL with caller setter: GAS": {
"in": "0x5a6000905af1",
"out": false
},
"invalid CALL with caller setter: JUMPDEST": {
"in": "0x5b6000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH1": {
"in": "0x60006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH2": {
"in": "0x6100006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH3": {
"in": "0x620000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH4": {
"in": "0x63000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH5": {
"in": "0x6400000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH6": {
"in": "0x650000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH7": {
"in": "0x66000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH8": {
"in": "0x6700000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH9": {
"in": "0x680000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH10": {
"in": "0x69000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH11": {
"in": "0x6a00000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH12": {
"in": "0x6b0000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH13": {
"in": "0x6c000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH14": {
"in": "0x6d00000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH15": {
"in": "0x6e0000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH16": {
"in": "0x6f000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH17": {
"in": "0x7000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH18": {
"in": "0x710000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH19": {
"in": "0x72000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH20": {
"in": "0x7300000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH21": {
"in": "0x740000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH22": {
"in": "0x75000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH23": {
"in": "0x7600000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH24": {
"in": "0x770000000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH25": {
"in": "0x78000000000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH26": {
"in": "0x7900000000000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH27": {
"in": "0x7a0000000000000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH28": {
"in": "0x7b000000000000000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH29": {
"in": "0x7c00000000000000000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH30": {
"in": "0x7d0000000000000000000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH31": {
"in": "0x7e000000000000000000000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: PUSH32": {
"in": "0x7f00000000000000000000000000000000000000000000000000000000000000006000905af1",
"out": false
},
"invalid CALL with caller setter: DUP1": {
"in": "0x806000905af1",
"out": false
},
"invalid CALL with caller setter: DUP2": {
"in": "0x816000905af1",
"out": false
},
"invalid CALL with caller setter: DUP3": {
"in": "0x826000905af1",
"out": false
},
"invalid CALL with caller setter: DUP4": {
"in": "0x836000905af1",
"out": false
},
"invalid CALL with caller setter: DUP5": {
"in": "0x846000905af1",
"out": false
},
"invalid CALL with caller setter: DUP6": {
"in": "0x856000905af1",
"out": false
},
"invalid CALL with caller setter: DUP7": {
"in": "0x866000905af1",
"out": false
},
"invalid CALL with caller setter: DUP8": {
"in": "0x876000905af1",
"out": false
},
"invalid CALL with caller setter: DUP9": {
"in": "0x886000905af1",
"out": false
},
"invalid CALL with caller setter: DUP10": {
"in": "0x896000905af1",
"out": false
},
"invalid CALL with caller setter: DUP11": {
"in": "0x8a6000905af1",
"out": false
},
"invalid CALL with caller setter: DUP12": {
"in": "0x8b6000905af1",
"out": false
},
"invalid CALL with caller setter: DUP13": {
"in": "0x8c6000905af1",
"out": false
},
"invalid CALL with caller setter: DUP14": {
"in": "0x8d6000905af1",
"out": false
},
"invalid CALL with caller setter: DUP15": {
"in": "0x8e6000905af1",
"out": false
},
"invalid CALL with caller setter: DUP16": {
"in": "0x8f6000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP1": {
"in": "0x906000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP2": {
"in": "0x916000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP3": {
"in": "0x926000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP4": {
"in": "0x936000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP5": {
"in": "0x946000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP6": {
"in": "0x956000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP7": {
"in": "0x966000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP8": {
"in": "0x976000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP9": {
"in": "0x986000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP10": {
"in": "0x996000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP11": {
"in": "0x9a6000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP12": {
"in": "0x9b6000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP13": {
"in": "0x9c6000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP14": {
"in": "0x9d6000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP15": {
"in": "0x9e6000905af1",
"out": false
},
"invalid CALL with caller setter: SWAP16": {
"in": "0x9f6000905af1",
"out": false
},
"invalid CALL with caller setter: LOG0": {
"in": "0xa06000905af1",
"out": false
},
"invalid CALL with caller setter: LOG1": {
"in": "0xa16000905af1",
"out": false
"valid EM call, then valid identity precompile call": {
"in": "0x336000905af158601d0157586012013d600114573d6000803e3d6000fd5b60016000f35b3350600060045af1",
"out": true
},
"invalid CALL with caller setter: LOG2": {
"in": "0xa26000905af1",
"valid EM call, then invalid identity precompile call": {
"in": "0x336000905af158601d0157586012013d600114573d6000803e3d6000fd5b60016000f35b3350600060035af1",
"out": false
},
"invalid CALL with caller setter: LOG3": {
"in": "0xa36000905af1",
"valid EM call, then invalid opcode (SLOAD)": {
"in": "0x336000905af158601d0157586012013d600114573d6000803e3d6000fd5b60016000f35b54",
"out": false
},
"invalid CALL with caller setter: LOG4": {
"in": "0xa46000905af1",
"valid identity precompile call, then invalid opcode (SLOAD)": {
"in": "0x3350600060045af154",
"out": false
},
"invalid CALL with non-zero value": {
"in": "0x336001905af1",
"invalid EM call (missing final byte)": {
"in": "0x336000905af158601d0157586012013d600114573d6000803e3d6000fd5b60016000f3",
"out": false
},
"invalid call to non-ExecutionManager address": {
"in": "0x73ffffffffffffffffffffffffffffffffffffffff6000905af1",
"invalid identity precompile call (missing final byte)": {
"in": "0x3350600060045a",
"out": false
},
"invalid CALL without SWAP1": {
"in": "0x6000335af1",
"invalid identity precompile call (First 2 bytes are PUSH2ed)": {
"in": "0x613350600060045af1",
"out": false
}
}
......
......@@ -4,7 +4,7 @@ import { expect } from '../../setup'
import { ethers } from '@nomiclabs/buidler'
import { Contract, BigNumber, ContractFactory } from 'ethers'
import { cloneDeep, merge } from 'lodash'
import { smoddit, ModifiableContract } from '@eth-optimism/smock'
import { smoddit, smockit, ModifiableContract } from '@eth-optimism/smock'
/* Internal Imports */
import {
......@@ -148,10 +148,15 @@ export class ExecutionManagerTestRunner {
await ethers.getContractFactory('Lib_AddressManager')
).deploy()
this.contracts.OVM_SafetyChecker = await (
const SafetyChecker = await (
await ethers.getContractFactory('OVM_SafetyChecker')
).deploy()
const MockSafetyChecker = smockit(SafetyChecker)
MockSafetyChecker.smocked.isBytecodeSafe.will.return.with(true)
this.contracts.OVM_SafetyChecker = MockSafetyChecker
await AddressManager.setAddress(
'OVM_SafetyChecker',
this.contracts.OVM_SafetyChecker.address
......@@ -159,11 +164,25 @@ export class ExecutionManagerTestRunner {
this.contracts.OVM_ExecutionManager = await (
await smoddit('OVM_ExecutionManager')
).deploy(AddressManager.address)
).deploy(
AddressManager.address,
{
minTransactionGasLimit: 0,
maxTransactionGasLimit: 1_000_000_000,
maxGasPerQueuePerEpoch: 1_000_000_000_000,
secondsPerEpoch: 600,
},
{
ovmCHAINID: 420,
}
)
this.contracts.OVM_StateManager = await (
await smoddit('OVM_StateManager')
).deploy(this.contracts.OVM_ExecutionManager.address)
).deploy(await this.contracts.OVM_ExecutionManager.signer.getAddress())
await this.contracts.OVM_StateManager.setExecutionManager(
this.contracts.OVM_ExecutionManager.address
)
this.contracts.Helper_TestRunner = await (
await ethers.getContractFactory('Helper_TestRunner')
......
......@@ -20,8 +20,7 @@
"node_modules/@types"
]
},
"include": ["*.ts", "**/*.ts", "artifacts/*.json"],
"exclude": ["./build", "node_modules", "test"],
"include": ["src/**/*.ts", "artifacts/*.json"],
"files": [
"./buidler.config.ts",
"./buidler-env.d.ts",
......
......@@ -113,10 +113,10 @@
"@ethersproject/properties" ">=5.0.0-beta.131"
"@ethersproject/strings" ">=5.0.0-beta.130"
"@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.0.5":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.5.tgz#6e7bbf9d014791334233ba18da85331327354aa1"
integrity sha512-FNx6UMm0LnmCMFzN3urohFwZpjbUHPvc/O60h4qkF4yiJxLJ/G7QOSPjkHQ/q/QibagR4S7OKQawRy0NcvWa9w==
"@ethersproject/abi@5.0.7", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.0.5":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b"
integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==
dependencies:
"@ethersproject/address" "^5.0.4"
"@ethersproject/bignumber" "^5.0.7"
......@@ -128,10 +128,10 @@
"@ethersproject/properties" "^5.0.3"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/abstract-provider@^5.0.0", "@ethersproject/abstract-provider@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.4.tgz#ef12df8cb5e66d0d47b567ad6ed642d682043773"
integrity sha512-EOCHUTS8jOE3WZlA1pq9b/vQwKDyDzMy4gXeAv0wZecH1kwUkD0++x8avxeSYoWI+aJn62P1FVV9B6r9pM56kQ==
"@ethersproject/abstract-provider@5.0.5", "@ethersproject/abstract-provider@^5.0.0", "@ethersproject/abstract-provider@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.5.tgz#797a32a8707830af1ad8f833e9c228994d5572b9"
integrity sha512-i/CjElAkzV7vQBAeoz+IpjGfcFYEP9eD7j3fzZ0fzTq03DO7PPnR+xkEZ1IoDXGwDS+55aLM1xvLDwB/Lx6IOQ==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
......@@ -141,10 +141,10 @@
"@ethersproject/transactions" "^5.0.5"
"@ethersproject/web" "^5.0.6"
"@ethersproject/abstract-signer@^5.0.0", "@ethersproject/abstract-signer@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.5.tgz#d1cdea6b0b82fb8e4a83f6899ba84d3dc3bb6e66"
integrity sha512-nwSZKtCTKhJADlW42c+a//lWxQlnA7jYLTnabJ3YCfgGU6ic9jnT9nRDlAyT1U3kCMeqPL7fTcKbdWCVrM0xsw==
"@ethersproject/abstract-signer@5.0.6", "@ethersproject/abstract-signer@^5.0.0", "@ethersproject/abstract-signer@^5.0.4":
version "5.0.6"
resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.6.tgz#c01211665ab9c9e93988c4783b789712fd93a388"
integrity sha512-h8TZBX3pL2Xx9tmsRxfWcaaI+FcJFHWvZ/vNvFjLp8zJ0kPD501LKTt2jo44LZ20N3EW68JMoyEmRQ6bpsn+iA==
dependencies:
"@ethersproject/abstract-provider" "^5.0.4"
"@ethersproject/bignumber" "^5.0.7"
......@@ -152,10 +152,10 @@
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.4.tgz#8669bcbd02f4b64f4cede0a10e84df6d964ec9d3"
integrity sha512-CIjAeG6zNehbpJTi0sgwUvaH2ZICiAV9XkCBaFy5tjuEVFpQNeqd6f+B7RowcNO7Eut+QbhcQ5CVLkmP5zhL9A==
"@ethersproject/address@5.0.5", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.5.tgz#2caa65f6b7125015395b1b54c985ee0b27059cc7"
integrity sha512-DpkQ6rwk9jTefrRsJzEm6nhRiJd9pvhn1xN0rw5N/jswXG5r7BLk/GVA0mMAVWAsYfvi2xSc5L41FMox43RYEA==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
......@@ -164,48 +164,48 @@
"@ethersproject/rlp" "^5.0.3"
bn.js "^4.4.0"
"@ethersproject/base64@^5.0.0", "@ethersproject/base64@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.3.tgz#d0aaa32c9ab08e2d62a6238581607ab6e929297e"
integrity sha512-sFq+/UwGCQsLxMvp7yO7yGWni87QXoV3C3IfjqUSY2BHkbZbCDm+PxZviUkiKf+edYZ2Glp0XnY7CgKSYUN9qw==
"@ethersproject/base64@5.0.4", "@ethersproject/base64@^5.0.0", "@ethersproject/base64@^5.0.3":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.4.tgz#b0d8fdbf3dda977cf546dcd35725a7b1d5256caa"
integrity sha512-4KRykQ7BQMeOXfvio1YITwHjxwBzh92UoXIdzxDE1p53CK28bbHPdsPNYo0wl0El7lJAMpT2SOdL0hhbWRnyIA==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/basex@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.3.tgz#f8c9bc449a089131f52cfa8698cf77bc22e27e32"
integrity sha512-EvoER+OXsMAZlvbC0M/9UTxjvbBvTccYCI+uCAhXw+eS1+SUdD4v7ekAFpVX78rPLrLZB1vChKMm6vPHIu3WRA==
"@ethersproject/basex@5.0.4", "@ethersproject/basex@^5.0.3":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.4.tgz#93e1cd11f9a47281da2389de24f88e13e9d90847"
integrity sha512-ixIr/kKiAoSzOnSc777AGIOAhKai5Ivqr4HO/Gz+YG+xkfv6kqD6AW4ga9vM20Wwb0QBhh3LoRWTu4V1K+x9Ew==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.0", "@ethersproject/bignumber@^5.0.7":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.7.tgz#720b3e3df3e125a99669ee869478106d0afe7b76"
integrity sha512-wwKgDJ+KA7IpgJwc8Fc0AjKIRuDskKA2cque29/+SgII9/1K/38JpqVNPKIovkLwTC2DDofIyzHcxeaKpMFouQ==
"@ethersproject/bignumber@5.0.8", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.0", "@ethersproject/bignumber@^5.0.7":
version "5.0.8"
resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.8.tgz#cee33bd8eb0266176def0d371b45274b1d2c4ec0"
integrity sha512-KXFVAFKS1jdTXYN8BE5Oj+ZfPMh28iRdFeNGBVT6cUFdtiPVqeXqc0ggvBqA3A1VoFFGgM7oAeaagA393aORHA==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
bn.js "^4.4.0"
"@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.4.tgz#328d9d929a3e970964ecf5d62e12568a187189f1"
integrity sha512-9R6A6l9JN8x1U4s1dJCR+9h3MZTT3xQofr/Xx8wbDvj6NnY4CbBB0o8ZgHXvR74yV90pY2EzCekpkMBJnRzkSw==
"@ethersproject/bytes@5.0.5", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.5.tgz#688b70000e550de0c97a151a21f15b87d7f97d7c"
integrity sha512-IEj9HpZB+ACS6cZ+QQMTqmu/cnUK2fYNE6ms/PVxjoBjoxc6HCraLpam1KuRvreMy0i523PLmjN8OYeikRdcUQ==
dependencies:
"@ethersproject/logger" "^5.0.5"
"@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.0", "@ethersproject/constants@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.4.tgz#9ddaa5f3c738a94e5adc4b3f71b36206fa5cdf88"
integrity sha512-Df32lcXDHPgZRPgp1dgmByNbNe4Ki1QoXR+wU61on5nggQGTqWR1Bb7pp9VtI5Go9kyE/JflFc4Te6o9MvYt8A==
"@ethersproject/constants@5.0.5", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.0", "@ethersproject/constants@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.5.tgz#0ed19b002e8404bdf6d135234dc86a7d9bcf9b71"
integrity sha512-foaQVmxp2+ik9FrLUCtVrLZCj4M3Ibgkqvh+Xw/vFRSerkjVSYePApaVE5essxhoSlF1U9oXfWY09QI2AXtgKA==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/contracts@^5.0.0", "@ethersproject/contracts@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.4.tgz#27a2d7e3a7eef9bd8d006824ac2a74157b523988"
integrity sha512-gfOZNgLiO9e1D/hmQ4sEyqoolw6jDFVfqirGJv3zyFKNyX+lAXLN7YAZnnWVmp4GU1jiMtSqQKjpWp7r6ihs3Q==
"@ethersproject/contracts@5.0.5", "@ethersproject/contracts@^5.0.0":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.5.tgz#64831a341ec8ca225e83ff3e9437c26b970fd5d7"
integrity sha512-tFI255lFbmbqMkgnuyhDWHl3yWqttPlReplYuVvDCT/SuvBjLR4ad2uipBlh1fh5X1ipK9ettAoV4S0HKim4Kw==
dependencies:
"@ethersproject/abi" "^5.0.5"
"@ethersproject/abstract-provider" "^5.0.4"
......@@ -217,20 +217,20 @@
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.0.0", "@ethersproject/hash@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.4.tgz#385642786405d236f3d2f1acdfaf250ab519cdac"
integrity sha512-VCs/bFBU8AQFhHcT1cQH6x7a4zjulR6fJmAOcPxUgrN7bxOQ7QkpBKF+YCDJhFtkLdaljIsr/r831TuWU4Ysfg==
"@ethersproject/hash@5.0.5", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.0.0", "@ethersproject/hash@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.5.tgz#e383ba2c7941834266fa6e2cf543d2b0c50a9d59"
integrity sha512-GpI80/h2HDpfNKpCZoxQJCjOQloGnlD5hM1G+tZe8FQDJhEvFjJoPDuWv+NaYjJfOciKS2Axqc4Q4WamdLoUgg==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/hdnode@^5.0.0", "@ethersproject/hdnode@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.4.tgz#9c07a87781b24b9cae3507fe9404361c5870f1b7"
integrity sha512-eHmpNLvasfB4xbmQUvKXOsGF4ekjIKJH/eZm7fc6nIdMci9u5ERooSSRLjs9Dsa5QuJf6YD4DbqeJsT71n47iw==
"@ethersproject/hdnode@5.0.5", "@ethersproject/hdnode@^5.0.0", "@ethersproject/hdnode@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.5.tgz#1f89aad0a5ba9dfae3a85a36e0669f8bc7a74781"
integrity sha512-Ho4HZaK+KijE5adayvjAGusWMnT0mgwGa5hGMBofBOgX9nqiKf6Wxx68SXBGI1/L3rmKo6mlAjxUd8gefs0teQ==
dependencies:
"@ethersproject/abstract-signer" "^5.0.4"
"@ethersproject/basex" "^5.0.3"
......@@ -245,10 +245,10 @@
"@ethersproject/transactions" "^5.0.5"
"@ethersproject/wordlists" "^5.0.4"
"@ethersproject/json-wallets@^5.0.0", "@ethersproject/json-wallets@^5.0.6":
version "5.0.6"
resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.6.tgz#c6c1818dcab18ecf3f37fa59ca504b9bc162d559"
integrity sha512-BPCfyGdwOUSp6+xA59IaZ/2pUWrUOL5Z9HuCh8YLsJzkuyBJQN0j+z/PmhIiZ7X8ilhuE+pRUwXb42U/R39fig==
"@ethersproject/json-wallets@5.0.7", "@ethersproject/json-wallets@^5.0.0", "@ethersproject/json-wallets@^5.0.6":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.7.tgz#4c48753b38ce7bce23a55f25c23f24617cf560e5"
integrity sha512-dgOn9JtGgjT28mDXs4LYY2rT4CzS6bG/rxoYuPq3TLHIf6nmvBcr33Fee6RrM/y8UAx4gyIkf6wb2cXsOctvQQ==
dependencies:
"@ethersproject/abstract-signer" "^5.0.4"
"@ethersproject/address" "^5.0.4"
......@@ -264,45 +264,45 @@
aes-js "3.0.0"
scrypt-js "3.0.1"
"@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.0", "@ethersproject/keccak256@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.3.tgz#f094a8fca3bb913c044593c4f382be424292e588"
integrity sha512-VhW3mgZMBZlETV6AyOmjNeNG+Pg68igiKkPpat8/FZl0CKnfgQ+KZQZ/ee1vT+X0IUM8/djqnei6btmtbA27Ug==
"@ethersproject/keccak256@5.0.4", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.0", "@ethersproject/keccak256@^5.0.3":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.4.tgz#36ca0a7d1ae2a272da5654cb886776d0c680ef3a"
integrity sha512-GNpiOUm9PGUxFNqOxYKDQBM0u68bG9XC9iOulEQ8I0tOx/4qUpgVzvgXL6ugxr0RY554Gz/NQsVqknqPzUcxpQ==
dependencies:
"@ethersproject/bytes" "^5.0.4"
js-sha3 "0.5.7"
"@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.0", "@ethersproject/logger@^5.0.5":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.5.tgz#e3ba3d0bcf9f5be4da5f043b1e328eb98b80002f"
integrity sha512-gJj72WGzQhUtCk6kfvI8elTaPOQyMvrMghp/nbz0ivTo39fZ7IjypFh/ySDeUSdBNplAwhzWKKejQhdpyefg/w==
"@ethersproject/logger@5.0.6", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.0", "@ethersproject/logger@^5.0.5":
version "5.0.6"
resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.6.tgz#faa484203e86e08be9e07fef826afeef7183fe88"
integrity sha512-FrX0Vnb3JZ1md/7GIZfmJ06XOAA8r3q9Uqt9O5orr4ZiksnbpXKlyDzQtlZ5Yv18RS8CAUbiKH9vwidJg1BPmQ==
"@ethersproject/networks@^5.0.0", "@ethersproject/networks@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.3.tgz#c4ebe56e79ca399247382627e50a022aa68ece55"
integrity sha512-Gjpejul6XFetJXyvHCd37IiCC00203kYGU9sMaRMZcAcYKszCkbOeo/Q7Mmdr/fS7YBbB5iTOahDJWiRLu/b7A==
"@ethersproject/networks@5.0.4", "@ethersproject/networks@^5.0.0", "@ethersproject/networks@^5.0.3":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.4.tgz#6d320a5e15a0cda804f5da88be0ba846156f6eec"
integrity sha512-/wHDTRms5mpJ09BoDrbNdFWINzONe05wZRgohCXvEv39rrH/Gd/yAnct8wC0RsW3tmFOgjgQxuBvypIxuUynTw==
dependencies:
"@ethersproject/logger" "^5.0.5"
"@ethersproject/pbkdf2@^5.0.0", "@ethersproject/pbkdf2@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.3.tgz#f9eca284a458cd11179d407884c595412d8d2775"
integrity sha512-asc+YgJn7v7GKWYXGz3GM1d9XYI2HvdCw1cLEow2niEC9BfYA29rr1exz100zISk95GIU1YP2zV//zHsMtWE5Q==
"@ethersproject/pbkdf2@5.0.4", "@ethersproject/pbkdf2@^5.0.0", "@ethersproject/pbkdf2@^5.0.3":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.4.tgz#a0841d53f5ce9a2b52a65a349d2dc15910b0a767"
integrity sha512-9jVBjHXQKfr9+3bkCg01a8Cd1H9e+7Kw3ZMIvAxD0lZtuzrXsJxm1hVwY9KA+PRUvgS/9tTP4viXQYwLAax7zg==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/sha2" "^5.0.3"
"@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.0", "@ethersproject/properties@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.3.tgz#991aef39a5f87d4645cee76cec4df868bfb08be6"
integrity sha512-wLCSrbywkQgTO6tIF9ZdKsH9AIxPEqAJF/z5xcPkz1DK4mMAZgAXRNw1MrKYhyb+7CqNHbj3vxenNKFavGY/IA==
"@ethersproject/properties@5.0.4", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.0", "@ethersproject/properties@^5.0.3":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.4.tgz#a67a1f5a52c30850b5062c861631e73d131f666e"
integrity sha512-UdyX3GqBxFt15B0uSESdDNmhvEbK3ACdDXl2soshoPcneXuTswHDeA0LoPlnaZzhbgk4p6jqb4GMms5C26Qu6A==
dependencies:
"@ethersproject/logger" "^5.0.5"
"@ethersproject/providers@^5.0.0", "@ethersproject/providers@^5.0.8":
version "5.0.9"
resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.9.tgz#88b48596dcfb0848a89da3160d2e2a055fc899f6"
integrity sha512-UtGrlJxekFNV7lriPOxQbnYminyiwTgjHMPX83pG7N/W/t+PekQK8V9rdlvMr2bRyGgafHml0ZZMaTV4FxiBYg==
"@ethersproject/providers@5.0.12", "@ethersproject/providers@^5.0.0":
version "5.0.12"
resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.12.tgz#de05e865e130709ea1e0870511eb892bda7d41cb"
integrity sha512-bRUEVNth+wGlm2Q0cQprVlixBWumfP9anrgAc3V2CbIh+GKvCwisVO8uRLrZOfOvTNSy6PUJi/Z4D5L+k3NAog==
dependencies:
"@ethersproject/abstract-provider" "^5.0.4"
"@ethersproject/abstract-signer" "^5.0.4"
......@@ -324,45 +324,45 @@
bech32 "1.1.4"
ws "7.2.3"
"@ethersproject/random@^5.0.0", "@ethersproject/random@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.3.tgz#ec16546fffdc10b9082f1207bd3a09f54cbcf5e6"
integrity sha512-pEhWRbgNeAY1oYk4nIsEtCTh9TtLsivIDbOX11n+DLZLYM3c8qCLxThXtsHwVsMs1JHClZr5auYC4YxtVVzO/A==
"@ethersproject/random@5.0.4", "@ethersproject/random@^5.0.0", "@ethersproject/random@^5.0.3":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.4.tgz#98f7cf65b0e588cec39ef24843e391ed5004556f"
integrity sha512-AIZJhqs6Ba4/+U3lOjt3QZbP6b/kuuGLJUYFUonAgWmkTHwqsCwYnFvnHKQSUuHbXHvErp7WFXFlztx+yMn3kQ==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/rlp@^5.0.0", "@ethersproject/rlp@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.3.tgz#841a5edfdf725f92155fe74424f5510c9043c13a"
integrity sha512-Hz4yyA/ilGafASAqtTlLWkA/YqwhQmhbDAq2LSIp1AJNx+wtbKWFAKSckpeZ+WG/xZmT+fw5OFKK7a5IZ4DR5g==
"@ethersproject/rlp@5.0.4", "@ethersproject/rlp@^5.0.0", "@ethersproject/rlp@^5.0.3":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.4.tgz#0090a0271e84ea803016a112a79f5cfd80271a77"
integrity sha512-5qrrZad7VTjofxSsm7Zg/7Dr4ZOln4S2CqiDdOuTv6MBKnXj0CiBojXyuDy52M8O3wxH0CyE924hXWTDV1PQWQ==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/sha2@^5.0.0", "@ethersproject/sha2@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.3.tgz#52c16edc1135d0ec7d242d88eed035dae72800c0"
integrity sha512-B1U9UkgxhUlC1J4sFUL2GwTo33bM2i/aaD3aiYdTh1FEXtGfqYA89KN1DJ83n+Em8iuvyiBRk6u30VmgqlHeHA==
"@ethersproject/sha2@5.0.4", "@ethersproject/sha2@^5.0.0", "@ethersproject/sha2@^5.0.3":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.4.tgz#40f639721a27dbe034b3dee021ba20b054586fec"
integrity sha512-0yFhf1mspxAfWdXXoPtK94adUeu1R7/FzAa+DfEiZTc76sz/vHXf0LSIazoR3znYKFny6haBxME+usbvvEcF3A==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
hash.js "1.1.3"
"@ethersproject/signing-key@^5.0.0", "@ethersproject/signing-key@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.4.tgz#a5334ce8a52d4e9736dc8fb6ecc384704ecf8783"
integrity sha512-I6pJoga1IvhtjYK5yXzCjs4ZpxrVbt9ZRAlpEw0SW9UuV020YfJH5EIVEGR2evdRceS3nAQIggqbsXSkP8Y1Dg==
"@ethersproject/signing-key@5.0.5", "@ethersproject/signing-key@^5.0.0", "@ethersproject/signing-key@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.5.tgz#acfd06fc05a14180df7e027688bbd23fc4baf782"
integrity sha512-Z1wY7JC1HVO4CvQWY2TyTTuAr8xK3bJijZw1a9G92JEmKdv1j255R/0YLBBcFTl2J65LUjtXynNJ2GbArPGi5g==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/properties" "^5.0.3"
elliptic "6.5.3"
"@ethersproject/solidity@^5.0.0", "@ethersproject/solidity@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.4.tgz#67022cbfb50cb73b72d1739178537a9e798945bf"
integrity sha512-cUq1l8A+AgRkIItRoztC98Qx7b0bMNMzKX817fszDuGNsT2POAyP5knvuEt4Fx4IBcJREXoOjsGYFfjyK5Sa+w==
"@ethersproject/solidity@5.0.5", "@ethersproject/solidity@^5.0.0":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.5.tgz#97a7d8a67f2d944f208c948fed0d565512bcc2be"
integrity sha512-DMFQ0ouXmNVoKWbGEUFGi8Urli4SJip9jXafQyFHWPRr5oJUqDVkNfwcyC37k+mhBG93k7qrYXCH2xJnGEOxHg==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
......@@ -370,19 +370,19 @@
"@ethersproject/sha2" "^5.0.3"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.0", "@ethersproject/strings@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.4.tgz#67cda604eee3ffcc004cb9f3bd03516e1c7b09a0"
integrity sha512-azXFHaNkDXzefhr4LVVzzDMFwj3kH9EOKlATu51HjxabQafuUyVLPFgmxRFmCynnAi0Bmmp7nr+qK1pVDgRDLQ==
"@ethersproject/strings@5.0.5", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.0", "@ethersproject/strings@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.5.tgz#ed7e99a282a02f40757691b04a24cd83f3752195"
integrity sha512-JED6WaIV00xM/gvj8vSnd+0VWtDYdidTmavFRCTQakqfz+4tDo6Jz5LHgG+dd45h7ah7ykCHW0C7ZXWEDROCXQ==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/transactions@^5.0.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.5":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.5.tgz#9a966f9ef4817b1752265d4efee0f1e9fd6aeaad"
integrity sha512-1Ga/QmbcB74DItggP8/DK1tggu4ErEvwTkIwIlUXUcvIAuRNXXE7kgQhlp+w1xA/SAQFhv56SqCoyqPiiLCvVA==
"@ethersproject/transactions@5.0.6", "@ethersproject/transactions@^5.0.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.5":
version "5.0.6"
resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.6.tgz#b8b27938be6e9ed671dbdd35fe98af8b14d0df7c"
integrity sha512-htsFhOD+NMBxx676A8ehSuwVV49iqpSB+CkjPZ02tpNew0K6p8g0CZ46Z1ZP946gIHAU80xQ0NACHYrjIUaCFA==
dependencies:
"@ethersproject/address" "^5.0.4"
"@ethersproject/bignumber" "^5.0.7"
......@@ -394,19 +394,19 @@
"@ethersproject/rlp" "^5.0.3"
"@ethersproject/signing-key" "^5.0.4"
"@ethersproject/units@^5.0.0", "@ethersproject/units@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.4.tgz#e08876b54e1f6b362a841dcd986496a425875735"
integrity sha512-80d6skjDgiHLdbKOA9FVpzyMEPwbif40PbGd970JvcecVf48VjB09fUu37d6duG8DhRVyefRdX8nuVQLzcGGPw==
"@ethersproject/units@5.0.6", "@ethersproject/units@^5.0.0":
version "5.0.6"
resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.6.tgz#e1169ecffb7e8d5eab84e1481a4e35df19045708"
integrity sha512-tsJuy4mipppdmooukRfhXt8fGx9nxvfvG6Xdy0RDm7LzHsjghjwQ69m2bCpId6SDSR1Uq1cQ9irPiUBSyWolUA==
dependencies:
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/wallet@^5.0.0", "@ethersproject/wallet@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.4.tgz#b414ae2870fc0ea10808330f0ab3c5a1ac9e34e1"
integrity sha512-h/3mdy6HZVketHbs6ZP/WjHDz+rtTIE3qZrko2MVeafjgDcYWaHcVmhsPq4LGqxginhr191a4dkJDNeQrQZWOw==
"@ethersproject/wallet@5.0.5", "@ethersproject/wallet@^5.0.0":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.5.tgz#93973d919e75bbc5422f11d1c3f39695f1a27e71"
integrity sha512-NbrKmsW3w+5dVOEyVCN5VAAIp3y8ckutW6AV7Lo0Hn8RO9mLT8ZFzLGp4lzgJoxkm+EV8BE+x1N6NdiOgUzRng==
dependencies:
"@ethersproject/abstract-provider" "^5.0.4"
"@ethersproject/abstract-signer" "^5.0.4"
......@@ -424,10 +424,10 @@
"@ethersproject/transactions" "^5.0.5"
"@ethersproject/wordlists" "^5.0.4"
"@ethersproject/web@^5.0.0", "@ethersproject/web@^5.0.6":
version "5.0.7"
resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.7.tgz#ab8ccffa9cee9469a8b49af8b8fee30e384e59d8"
integrity sha512-BM8FdGrzdcULYaOIyMXDKvxv+qOwGne8FKpPxUrifZIWAWPrq/y+oBOZlzadIKsP3wvYbAcMN2CgOLO1E3yIfw==
"@ethersproject/web@5.0.9", "@ethersproject/web@^5.0.0", "@ethersproject/web@^5.0.6":
version "5.0.9"
resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.9.tgz#b08f8295f4bfd4777c8723fe9572f5453b9f03cb"
integrity sha512-//QNlv1MSkOII1hv3+HQwWoiVFS+BMVGI0KYeUww4cyrEktnx1QIez5bTSab9s9fWTFaWKNmQNBwMbxAqPuYDw==
dependencies:
"@ethersproject/base64" "^5.0.3"
"@ethersproject/bytes" "^5.0.4"
......@@ -435,10 +435,10 @@
"@ethersproject/properties" "^5.0.3"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/wordlists@^5.0.0", "@ethersproject/wordlists@^5.0.4":
version "5.0.4"
resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.4.tgz#76a7e1dfd95aea645f6be2c1932b3f89b7f0c4ce"
integrity sha512-z/NsGqdYFvpeG6vPLxuD0pYNR5lLhQAy+oLVqg6G0o1c/OoL5J/a0iDOAFvnacQphc3lMP52d1LEX3YGoy2oBQ==
"@ethersproject/wordlists@5.0.5", "@ethersproject/wordlists@^5.0.0", "@ethersproject/wordlists@^5.0.4":
version "5.0.5"
resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.5.tgz#a935b7fdb86c96b44ea8391fed94b3fa2f33c606"
integrity sha512-XA3ycFltVrCTQt04w5nHu3Xq5Z6HjqWsXaAYQHFdqtugyUsIumaO9S5MOwFFuUYTNkZUoT3jCRa/OBS+K4tLfA==
dependencies:
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/hash" "^5.0.4"
......@@ -447,9 +447,9 @@
"@ethersproject/strings" "^5.0.4"
"@nomiclabs/buidler-ethers@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@nomiclabs/buidler-ethers/-/buidler-ethers-2.0.0.tgz#f972df98a5d9f32fce974749f3ba9d964f057f2a"
integrity sha512-Lf5XLClEeWYo6jVrGAqGBAcKTOP6IAChAR4qcDS36BkQnWakoRKcoSbwhr2YmTNTRAvgDWTmjQYbV17udJ+Alw==
version "2.0.2"
resolved "https://registry.yarnpkg.com/@nomiclabs/buidler-ethers/-/buidler-ethers-2.0.2.tgz#56c7f3d6f2d1bbf701e97a0003abb30f1071b2c4"
integrity sha512-lFcM7HVi44JB5xl7MKD8qChPQ5tfeO02ZYlrI6uef7J1SJCgE+wiokrl7HQ/jb7DgTHS5agfZxVO9yUbkrMIrQ==
"@nomiclabs/buidler-waffle@^2.0.0":
version "2.1.0"
......@@ -566,72 +566,72 @@
path-browserify "^1.0.0"
url "^0.11.0"
"@sentry/core@5.24.2":
version "5.24.2"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.24.2.tgz#1724652855c0887a690c3fc6acd2519d4072b511"
integrity sha512-nuAwCGU1l9hgMinl5P/8nIQGRXDP2FI9cJnq5h1qiP/XIOvJkJz2yzBR6nTyqr4vBth0tvxQJbIpDNGd7vHJLg==
"@sentry/core@5.26.0":
version "5.26.0"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.26.0.tgz#9b5fe4de8a869d733ebcc77f5ec9c619f8717a51"
integrity sha512-Ubrw7K52orTVsaxpz8Su40FPXugKipoQC+zPrXcH+JIMB+o18kutF81Ae4WzuUqLfP7YB91eAlRrP608zw0EXA==
dependencies:
"@sentry/hub" "5.24.2"
"@sentry/minimal" "5.24.2"
"@sentry/types" "5.24.2"
"@sentry/utils" "5.24.2"
"@sentry/hub" "5.26.0"
"@sentry/minimal" "5.26.0"
"@sentry/types" "5.26.0"
"@sentry/utils" "5.26.0"
tslib "^1.9.3"
"@sentry/hub@5.24.2":
version "5.24.2"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.24.2.tgz#64a02fd487599945e488ae23aba4ce4df44ee79e"
integrity sha512-xmO1Ivvpb5Qr9WgekinuZZlpl9Iw7iPETUe84HQOhUrXf+2gKO+LaUYMMsYSVDwXQEmR6/tTMyOtS6iavldC6w==
"@sentry/hub@5.26.0":
version "5.26.0"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.26.0.tgz#b2bbd8128cd5915f2ee59cbc29fff30272d74ec5"
integrity sha512-lAYeWvvhGYS6eQ5d0VEojw0juxGc3v4aAu8VLvMKWcZ1jXD13Bhc46u9Nvf4qAY6BAQsJDQcpEZLpzJu1bk1Qw==
dependencies:
"@sentry/types" "5.24.2"
"@sentry/utils" "5.24.2"
"@sentry/types" "5.26.0"
"@sentry/utils" "5.26.0"
tslib "^1.9.3"
"@sentry/minimal@5.24.2":
version "5.24.2"
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.24.2.tgz#14e8b136842398a32987459f0574359b6dc57a1f"
integrity sha512-biFpux5bI3R8xiD/Zzvrk1kRE6bqPtfWXmZYAHRtaUMCAibprTKSY9Ta8QYHynOAEoJ5Akedy6HUsEkK5DoZfA==
"@sentry/minimal@5.26.0":
version "5.26.0"
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.26.0.tgz#851dea3644153ed3ac4837fa8ed5661d94e7a313"
integrity sha512-mdFo3FYaI1W3KEd8EHATYx8mDOZIxeoUhcBLlH7Iej6rKvdM7p8GoECrmHPU1l6sCCPtBuz66QT5YeXc7WILsA==
dependencies:
"@sentry/hub" "5.24.2"
"@sentry/types" "5.24.2"
"@sentry/hub" "5.26.0"
"@sentry/types" "5.26.0"
tslib "^1.9.3"
"@sentry/node@^5.18.1":
version "5.24.2"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.24.2.tgz#6e06bf26f1e0b23e122a14f17aa57671d3428c4d"
integrity sha512-ddfU2tLTvhnY+NqzLIA/gxMt/uxq7R204Nb2J5qqE0WAgbh0dtylNAzfKZTizLdbZfRnpeISmd+CBILh3tavog==
dependencies:
"@sentry/core" "5.24.2"
"@sentry/hub" "5.24.2"
"@sentry/tracing" "5.24.2"
"@sentry/types" "5.24.2"
"@sentry/utils" "5.24.2"
version "5.26.0"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.26.0.tgz#d3ed5856bc5f30b13435be4c569d6c72746cf286"
integrity sha512-BuN9c84f8MxGhYZl+JgVsORh3GiDmuyG9QjawVQ2fmJKVxQ+fcNvde/wq5z7jEca4Z8FrNLa+DHb4c8Fl8gz8g==
dependencies:
"@sentry/core" "5.26.0"
"@sentry/hub" "5.26.0"
"@sentry/tracing" "5.26.0"
"@sentry/types" "5.26.0"
"@sentry/utils" "5.26.0"
cookie "^0.4.1"
https-proxy-agent "^5.0.0"
lru_map "^0.3.3"
tslib "^1.9.3"
"@sentry/tracing@5.24.2":
version "5.24.2"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.24.2.tgz#a36b4f9bf699c5e07e99a148360091c8e727c51f"
integrity sha512-1uDgvGGVF8lb3hRXbhNnns+8DBUKjhRKOFR5Z3RExjrDFYTDbHmoNtV73Q12Ra+Iht9HTZnIBOqYD3oSZIbJ0w==
"@sentry/tracing@5.26.0":
version "5.26.0"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.26.0.tgz#33ee0426da14836e54e7b9a8838e4d7d0cb14b70"
integrity sha512-N9qWGmKrFJYKFTZBe8zVT3Qiju0+9bbNJuyun69T+fqP3PCDh+aRlRiP+OKTJyeCZjNG5HIvIlU8wTVUDoYfjQ==
dependencies:
"@sentry/hub" "5.24.2"
"@sentry/minimal" "5.24.2"
"@sentry/types" "5.24.2"
"@sentry/utils" "5.24.2"
"@sentry/hub" "5.26.0"
"@sentry/minimal" "5.26.0"
"@sentry/types" "5.26.0"
"@sentry/utils" "5.26.0"
tslib "^1.9.3"
"@sentry/types@5.24.2":
version "5.24.2"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.24.2.tgz#e2c25d1e75d8dbec5dbbd9a309a321425b61c2ca"
integrity sha512-HcOK00R0tQG5vzrIrqQ0jC28+z76jWSgQCzXiessJ5SH/9uc6NzdO7sR7K8vqMP2+nweCHckFohC8G0T1DLzuQ==
"@sentry/types@5.26.0":
version "5.26.0"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.26.0.tgz#b0cbacb0b24cd86620fb296b46cf7277bb004a3e"
integrity sha512-ugpa1ePOhK55pjsyutAsa2tiJVQEyGYCaOXzaheg/3+EvhMdoW+owiZ8wupfvPhtZFIU3+FPOVz0d5k9K5d1rw==
"@sentry/utils@5.24.2":
version "5.24.2"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.24.2.tgz#90b7dff939bbbf4bb8edcac6aac2d04a0552af80"
integrity sha512-oPGde4tNEDHKk0Cg9q2p0qX649jLDUOwzJXHKpd0X65w3A6eJByDevMr8CSzKV9sesjrUpxqAv6f9WWlz185tA==
"@sentry/utils@5.26.0":
version "5.26.0"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.26.0.tgz#09a3d01d91747f38f796cafeb24f8fd86e4fa05f"
integrity sha512-F2gnHIAWbjiowcAgxz3VpKxY/NQ39NTujEd/NPnRTWlRynLFg3bAV+UvZFXljhYJeN3b/zRlScNDcpCWTrtZGw==
dependencies:
"@sentry/types" "5.24.2"
"@sentry/types" "5.26.0"
tslib "^1.9.3"
"@sindresorhus/is@^0.14.0":
......@@ -656,6 +656,11 @@
dependencies:
defer-to-connect "^1.0.1"
"@types/abstract-leveldown@*":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-5.0.1.tgz#3c7750d0186b954c7f2d2f6acc8c3c7ba0c3412e"
integrity sha512-wYxU3kp5zItbxKmeRYCEplS2MW7DzyBnxPGj+GJVHZEUZiK/nn5Ei1sUFgURDh+X051+zsGe28iud3oHjrYWQQ==
"@types/bn.js@*", "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5":
version "4.11.6"
resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c"
......@@ -664,19 +669,22 @@
"@types/node" "*"
"@types/chai@*", "@types/chai@^4.2.12":
version "4.2.12"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.12.tgz#6160ae454cd89dae05adc3bb97997f488b608201"
integrity sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==
version "4.2.13"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.13.tgz#8a3801f6655179d1803d81e94a2e4aaf317abd16"
integrity sha512-o3SGYRlOpvLFpwJA6Sl1UPOwKFEvE4FxTEB/c9XHI2whdnd4kmPVkNLL8gY4vWGBxWWDumzLbKsAhEH5SKn37Q==
"@types/color-name@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
"@types/levelup@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-3.1.1.tgz#f7cc08f248f14cb6c92914e91bceb8761020e8f0"
integrity sha512-LjvlfctJYj23Xuqq3jCT8ZPSUSSgDcRJg8+XFDBasoYzefFbB4cHzlDmBVjc2rBOYvklpYHJRayD0jBsbJLD9w==
dependencies:
"@types/abstract-leveldown" "*"
"@types/node" "*"
"@types/lodash@^4.14.161":
version "4.14.161"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.161.tgz#a21ca0777dabc6e4f44f3d07f37b765f54188b18"
integrity sha512-EP6O3Jkr7bXvZZSZYlsgt5DIjiGr0dXP1/jVEwVLTFgg0d+3lWVQkRavYVQszV7dYUwvg0B8R0MBDpcmXg7XIA==
version "4.14.162"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.162.tgz#65d78c397e0d883f44afbf1f7ba9867022411470"
integrity sha512-alvcho1kRUnnD1Gcl4J+hK0eencvzq9rmzvFPRmP5rPHx9VVsJj6bKLTATPVf9ktgv4ujzh7T+XWKp+jhuODig==
"@types/lru-cache@^5.1.0":
version "5.1.0"
......@@ -704,14 +712,14 @@
form-data "^3.0.0"
"@types/node@*", "@types/node@^14.6.0":
version "14.11.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.2.tgz#2de1ed6670439387da1c9f549a2ade2b0a799256"
integrity sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==
version "14.11.8"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.8.tgz#fe2012f2355e4ce08bca44aeb3abbb21cf88d33f"
integrity sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw==
"@types/node@^12.12.6":
version "12.12.62"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.62.tgz#733923d73669188d35950253dd18a21570085d2b"
integrity sha512-qAfo81CsD7yQIM9mVyh6B/U47li5g7cfpVQEDMfQeF8pSZVwzbhwU3crc0qG4DmpsebpJPR49AKOExQyJ05Cpg==
version "12.12.67"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.67.tgz#4f86badb292e822e3b13730a1f9713ed2377f789"
integrity sha512-R48tgL2izApf+9rYNH+3RBMbRpPeW3N8f0I9HMhggeq4UXwBDqumJ14SDs4ctTMhG11pIOduZ4z3QWGOiMc9Vg==
"@types/pbkdf2@^3.0.0":
version "3.1.0"
......@@ -736,9 +744,9 @@
"@types/sinon" "*"
"@types/sinon@*":
version "9.0.6"
resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.6.tgz#fb4b6883fe0417e6a1ac5d9753bdcb7016dd4dd0"
integrity sha512-j3GK0fiHgn8fe7sqOpInMjm0A2Tary1NBZ8gbI/sZ0C0JxYeO+nh8H0/pW/0l94vNWcH1FnZOZu/cOvIfNZTrg==
version "9.0.8"
resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.8.tgz#1ed0038d356784f75b086104ef83bfd4130bb81b"
integrity sha512-IVnI820FZFMGI+u1R+2VdRaD/82YIQTdqLYC9DLPszZuynAJDtCvCtCs3bmyL66s7FqRM3+LPX7DhHnVTaagDw==
dependencies:
"@types/sinonjs__fake-timers" "*"
......@@ -848,9 +856,9 @@ agent-base@6:
debug "4"
ajv@^6.12.3:
version "6.12.5"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da"
integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
......@@ -907,11 +915,10 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
color-convert "^1.9.0"
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
"@types/color-name" "^1.1.1"
color-convert "^2.0.1"
anymatch@~3.1.1:
......@@ -1988,9 +1995,9 @@ camelcase@^5.0.0, camelcase@^5.3.1:
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
caniuse-lite@^1.0.30000844:
version "1.0.30001137"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001137.tgz#6f0127b1d3788742561a25af3607a17fc778b803"
integrity sha512-54xKQZTqZrKVHmVz0+UvdZR6kQc7pJDgfhsMYDG19ID1BWoNnDMFm5Q3uSBSU401pBvKYMsHAt9qhEDcxmk8aw==
version "1.0.30001148"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001148.tgz#dc97c7ed918ab33bf8706ddd5e387287e015d637"
integrity sha512-E66qcd0KMKZHNJQt9hiLZGE3J4zuTqE1OnU53miEVtylFbwOEmeA5OsRu90noZful+XGSQOni1aT2tiqu/9yYw==
caseless@~0.12.0:
version "0.12.0"
......@@ -2313,15 +2320,16 @@ copy-descriptor@^0.1.0:
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
copyfiles@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.3.0.tgz#1c26ebbe3d46bba2d309a3fd8e3aaccf53af8c76"
integrity sha512-73v7KFuDFJ/ofkQjZBMjMBFWGgkS76DzXvBMUh7djsMOE5EELWtAO/hRB6Wr5Vj5Zg+YozvoHemv0vnXpqxmOQ==
version "2.4.0"
resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.0.tgz#fcac72a4f2b882f021dd156b4bcf6d71315487bd"
integrity sha512-yGjpR3yjQdxccW8EcJ4a7ZCA6wGER6/Q2Y+b7bXbVxGeSHBf93i9d7MzTsx+VV1CpMKQa3v4ThZfXBcltMzl0w==
dependencies:
glob "^7.0.5"
minimatch "^3.0.3"
mkdirp "^1.0.4"
noms "0.0.0"
through2 "^2.0.1"
untildify "^4.0.0"
yargs "^15.3.1"
core-js-pure@^3.0.1:
......@@ -2711,9 +2719,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.47:
version "1.3.576"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.576.tgz#2e70234484e03d7c7e90310d7d79fd3775379c34"
integrity sha512-uSEI0XZ//5ic+0NdOqlxp0liCD44ck20OAGyLMSymIWTEAtHKVJi6JM18acOnRgUgX7Q65QqnI+sNncNvIy8ew==
version "1.3.578"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.578.tgz#e6671936f4571a874eb26e2e833aa0b2c0b776e0"
integrity sha512-z4gU6dA1CbBJsAErW5swTGAaU2TBzc2mPAonJb00zqW1rOraDo2zfBMDRvaz9cVic+0JEZiYbHWPw/fTaZlG2Q==
elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3:
version "6.5.3"
......@@ -2805,37 +2813,37 @@ error-ex@^1.2.0:
is-arrayish "^0.2.1"
es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5:
version "1.17.6"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a"
integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==
version "1.17.7"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
dependencies:
es-to-primitive "^1.2.1"
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.1"
is-callable "^1.2.0"
is-regex "^1.1.0"
object-inspect "^1.7.0"
is-callable "^1.2.2"
is-regex "^1.1.1"
object-inspect "^1.8.0"
object-keys "^1.1.1"
object.assign "^4.1.0"
object.assign "^4.1.1"
string.prototype.trimend "^1.0.1"
string.prototype.trimstart "^1.0.1"
es-abstract@^1.18.0-next.0:
version "1.18.0-next.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc"
integrity sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ==
es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1:
version "1.18.0-next.1"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68"
integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==
dependencies:
es-to-primitive "^1.2.1"
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.1"
is-callable "^1.2.0"
is-callable "^1.2.2"
is-negative-zero "^2.0.0"
is-regex "^1.1.1"
object-inspect "^1.8.0"
object-keys "^1.1.1"
object.assign "^4.1.0"
object.assign "^4.1.1"
string.prototype.trimend "^1.0.1"
string.prototype.trimstart "^1.0.1"
......@@ -3274,10 +3282,10 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum
rlp "^2.0.0"
safe-buffer "^5.1.1"
ethereumjs-util@^7.0.0, ethereumjs-util@^7.0.2:
version "7.0.5"
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.5.tgz#bc6e178dedbccc4b188c9ae6ae38db1906884b7b"
integrity sha512-gLLZVXYUHR6pamO3h/+M1jzKz7qE20PKFyFKtq1PrIHA6wcLI96mDz96EMkkhXfrpk30rhpkw0iRnzxKhqaIdQ==
ethereumjs-util@^7.0.2:
version "7.0.6"
resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.6.tgz#ce4a6391a163cd1f2217b5276273f83bdacc7ab2"
integrity sha512-E9aJ9W7XZkcBqIblfstBU+0nGSjF9Dz/Ps7s1NTFOgDZM8pwD+nX1P1GBJeSqB6Osxhj2UtuxVCqjvmrj2svzw==
dependencies:
"@types/bn.js" "^4.11.3"
bn.js "^5.1.2"
......@@ -3375,40 +3383,40 @@ ethers@5.0.0:
"@ethersproject/wordlists" "^5.0.0"
ethers@^5, ethers@^5.0.0, ethers@^5.0.1:
version "5.0.14"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.14.tgz#fc33613ff3c1eb04c481f32083f2be315079e2a2"
integrity sha512-6WkoYwAURTr/4JiSZlrMJ9mm3pBv/bWrOu7sVXdLGw9QU4cp/GDZVrKKnh5GafMTzanuNBJoaEanPCjsbe4Mig==
dependencies:
"@ethersproject/abi" "^5.0.5"
"@ethersproject/abstract-provider" "^5.0.4"
"@ethersproject/abstract-signer" "^5.0.4"
"@ethersproject/address" "^5.0.4"
"@ethersproject/base64" "^5.0.3"
"@ethersproject/basex" "^5.0.3"
"@ethersproject/bignumber" "^5.0.7"
"@ethersproject/bytes" "^5.0.4"
"@ethersproject/constants" "^5.0.4"
"@ethersproject/contracts" "^5.0.4"
"@ethersproject/hash" "^5.0.4"
"@ethersproject/hdnode" "^5.0.4"
"@ethersproject/json-wallets" "^5.0.6"
"@ethersproject/keccak256" "^5.0.3"
"@ethersproject/logger" "^5.0.5"
"@ethersproject/networks" "^5.0.3"
"@ethersproject/pbkdf2" "^5.0.3"
"@ethersproject/properties" "^5.0.3"
"@ethersproject/providers" "^5.0.8"
"@ethersproject/random" "^5.0.3"
"@ethersproject/rlp" "^5.0.3"
"@ethersproject/sha2" "^5.0.3"
"@ethersproject/signing-key" "^5.0.4"
"@ethersproject/solidity" "^5.0.4"
"@ethersproject/strings" "^5.0.4"
"@ethersproject/transactions" "^5.0.5"
"@ethersproject/units" "^5.0.4"
"@ethersproject/wallet" "^5.0.4"
"@ethersproject/web" "^5.0.6"
"@ethersproject/wordlists" "^5.0.4"
version "5.0.17"
resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.17.tgz#35dea41f1d09d31f80e0bb4c03cb633cd6673756"
integrity sha512-E0MrwCttHgdD6Irfa0B9cNdX0VoWVWLusaj51+EQalkl3pqhV2zGMPncfhYbc9+4nD2u81dbX8Pk9UN5kh/jew==
dependencies:
"@ethersproject/abi" "5.0.7"
"@ethersproject/abstract-provider" "5.0.5"
"@ethersproject/abstract-signer" "5.0.6"
"@ethersproject/address" "5.0.5"
"@ethersproject/base64" "5.0.4"
"@ethersproject/basex" "5.0.4"
"@ethersproject/bignumber" "5.0.8"
"@ethersproject/bytes" "5.0.5"
"@ethersproject/constants" "5.0.5"
"@ethersproject/contracts" "5.0.5"
"@ethersproject/hash" "5.0.5"
"@ethersproject/hdnode" "5.0.5"
"@ethersproject/json-wallets" "5.0.7"
"@ethersproject/keccak256" "5.0.4"
"@ethersproject/logger" "5.0.6"
"@ethersproject/networks" "5.0.4"
"@ethersproject/pbkdf2" "5.0.4"
"@ethersproject/properties" "5.0.4"
"@ethersproject/providers" "5.0.12"
"@ethersproject/random" "5.0.4"
"@ethersproject/rlp" "5.0.4"
"@ethersproject/sha2" "5.0.4"
"@ethersproject/signing-key" "5.0.5"
"@ethersproject/solidity" "5.0.5"
"@ethersproject/strings" "5.0.5"
"@ethersproject/transactions" "5.0.6"
"@ethersproject/units" "5.0.6"
"@ethersproject/wallet" "5.0.5"
"@ethersproject/web" "5.0.9"
"@ethersproject/wordlists" "5.0.5"
ethjs-unit@0.1.6:
version "0.1.6"
......@@ -3874,9 +3882,9 @@ functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1:
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
ganache-core@^2.10.2, ganache-core@^2.12.1:
version "2.12.1"
resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.12.1.tgz#c21e8f7eca6e15f13756a353928357e0b8960d9e"
integrity sha512-gycoVl3TChAbL6ZZQrK1gS2cNMheX+JXVBKTpMAzuLHwb5gE1CB1s6YYN3F7rB86opaEuldCSuTJK1dv4xYRAw==
version "2.13.0"
resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.0.tgz#e211d995eb806a1cd792096a989cf624417f0f7c"
integrity sha512-yTSsesDBwPh+34ZN2w5SZoPNVbR0Gn75InvQc2D1zUdy9prED6R2sVbefSyiXFR/uwZK9NrIVS1+HcEtgQVb9Q==
dependencies:
abstract-leveldown "3.0.0"
async "2.6.2"
......@@ -3894,11 +3902,13 @@ ganache-core@^2.10.2, ganache-core@^2.12.1:
ethereumjs-util "6.2.1"
ethereumjs-vm "4.2.0"
heap "0.2.6"
keccak "3.0.1"
level-sublevel "6.6.4"
levelup "3.1.1"
lodash "4.17.14"
lodash "4.17.20"
lru-cache "5.1.1"
merkle-patricia-tree "2.3.2"
merkle-patricia-tree "3.0.0"
patch-package "6.2.2"
seedrandom "3.0.1"
source-map-support "0.5.12"
tmp "0.1.0"
......@@ -4418,7 +4428,7 @@ is-buffer@~2.0.3:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.0:
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
......@@ -4599,7 +4609,7 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
is-regex@^1.0.4, is-regex@^1.1.0, is-regex@^1.1.1:
is-regex@^1.0.4, is-regex@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
......@@ -4878,7 +4888,7 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
keccak@^3.0.0:
keccak@3.0.1, keccak@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff"
integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==
......@@ -5193,12 +5203,7 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6:
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=
lodash@4.17.14:
version "4.17.14"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba"
integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==
lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.4:
lodash@4.17.20, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.4:
version "4.17.20"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
......@@ -5362,7 +5367,20 @@ merge-descriptors@1.0.1:
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2:
merkle-patricia-tree@3.0.0, merkle-patricia-tree@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8"
integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ==
dependencies:
async "^2.6.1"
ethereumjs-util "^5.2.0"
level-mem "^3.0.1"
level-ws "^1.0.0"
readable-stream "^3.0.6"
rlp "^2.0.0"
semaphore ">=1.0.1"
merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a"
integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==
......@@ -5376,24 +5394,13 @@ merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2
rlp "^2.0.0"
semaphore ">=1.0.1"
merkle-patricia-tree@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8"
integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ==
dependencies:
async "^2.6.1"
ethereumjs-util "^5.2.0"
level-mem "^3.0.1"
level-ws "^1.0.0"
readable-stream "^3.0.6"
rlp "^2.0.0"
semaphore ">=1.0.1"
"merkle-patricia-tree@git+https://github.com/kfichter/merkle-patricia-tree":
version "3.0.0"
resolved "git+https://github.com/kfichter/merkle-patricia-tree#ebd10c405be8ae909f1f82dea275a0e9ec1c8e46"
merkle-patricia-tree@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.0.0.tgz#b95500a2a188a813eae18b175b34d9f439b92a62"
integrity sha512-OnI0iUvc5G66ZJgSB7PnuU6Pnk9QADMcBgua7YhNm8gbQJq5Hbiv9U9hQRe3mEM1KEfbqrdTC+x33bTewF+oCA==
dependencies:
ethereumjs-util "^7.0.0"
"@types/levelup" "^3.1.1"
ethereumjs-util "^7.0.2"
level-mem "^5.0.1"
level-ws "^2.0.0"
readable-stream "^3.6.0"
......@@ -5806,7 +5813,7 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
object-inspect@^1.7.0, object-inspect@^1.8.0:
object-inspect@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
......@@ -5817,12 +5824,12 @@ object-inspect@~1.7.0:
integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
object-is@^1.0.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6"
integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==
version "1.1.3"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81"
integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.17.5"
es-abstract "^1.18.0-next.1"
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
......@@ -5851,7 +5858,7 @@ object.assign@4.1.0:
has-symbols "^1.0.0"
object-keys "^1.0.11"
object.assign@^4.1.0:
object.assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd"
integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==
......@@ -6052,7 +6059,7 @@ pascalcase@^0.1.1:
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
patch-package@^6.2.2:
patch-package@6.2.2, patch-package@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39"
integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==
......@@ -7486,9 +7493,9 @@ ts-node@^9.0.0:
yn "3.1.1"
tslib@^1.13.0, tslib@^1.7.1, tslib@^1.8.1, tslib@^1.9.3:
version "1.13.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslint-config-prettier@^1.18.0:
version "1.18.0"
......@@ -7680,6 +7687,11 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
untildify@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
uri-js@^4.2.2:
version "4.4.0"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment