diff --git a/examples/complete/contracts/BasicContract.sol b/examples/complete/contracts/BasicContract.sol index 13d9a672e..e04f1dd7f 100644 --- a/examples/complete/contracts/BasicContract.sol +++ b/examples/complete/contracts/BasicContract.sol @@ -6,9 +6,14 @@ pragma solidity ^0.8.9; contract BasicContract { uint public savedArg; + address public sender; event BasicEvent(uint eventArg); + constructor(address _sender) { + sender = _sender; + } + receive() external payable {} function basicFunction(uint funcArg) public { diff --git a/examples/complete/ignition/modules/CompleteModule.js b/examples/complete/ignition/modules/CompleteModule.js index 345e669c1..8a1aa9b28 100644 --- a/examples/complete/ignition/modules/CompleteModule.js +++ b/examples/complete/ignition/modules/CompleteModule.js @@ -5,7 +5,9 @@ const withLibArtifact = require("../../libArtifacts/ContractWithLibrary.json"); const libArtifact = require("../../libArtifacts/BasicLibrary.json"); module.exports = buildModule("CompleteModule", (m) => { - const basic = m.contract("BasicContract"); + const acct2 = m.getAccount(2); + + const basic = m.contract("BasicContract", [acct2]); const library = m.library("BasicLibrary"); const libFromArtifact = m.library("BasicLibrary", libArtifact, { id: "BasicLibrary2", diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index c2e063414..0ca5e714f 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -5,12 +5,14 @@ export * from "./errors"; export { IgnitionModuleSerializer } from "./ignition-module-serializer"; export { formatSolidityParameter } from "./internal/formatters"; export { listDeployments } from "./list-deployments"; +export { listTransactions } from "./list-transactions"; export { status } from "./status"; export * from "./type-guards"; export * from "./types/artifact"; export * from "./types/deploy"; export * from "./types/errors"; export * from "./types/execution-events"; +export * from "./types/list-transactions"; export * from "./types/module"; export * from "./types/module-builder"; export * from "./types/provider"; diff --git a/packages/core/src/internal/errors-list.ts b/packages/core/src/internal/errors-list.ts index a0697bdac..900fbff3f 100644 --- a/packages/core/src/internal/errors-list.ts +++ b/packages/core/src/internal/errors-list.ts @@ -73,6 +73,11 @@ export const ERROR_RANGES: { max: 1199, title: "Strategy errors", }, + LIST_TRANSACTIONS: { + min: 1200, + max: 1299, + title: "List transactions errors", + }, }; /** @@ -400,6 +405,13 @@ export const ERRORS = { "Strategy configuration parameter '%paramName%' for the strategy '%strategyName%' is invalid: %reason%", }, }, + LIST_TRANSACTIONS: { + UNINITIALIZED_DEPLOYMENT: { + number: 1200, + message: + "Cannot list transactions for nonexistant deployment at %deploymentDir%", + }, + }, }; /** diff --git a/packages/core/src/internal/execution/deployment-state-helpers.ts b/packages/core/src/internal/execution/deployment-state-helpers.ts index 4b4fac442..1b6f197cd 100644 --- a/packages/core/src/internal/execution/deployment-state-helpers.ts +++ b/packages/core/src/internal/execution/deployment-state-helpers.ts @@ -89,3 +89,20 @@ export function shouldBeJournaled(message: JournalMessage): boolean { return true; } + +/** + * Reads the journal and returns an array of future IDs in the order they were executed. + */ +export async function getExecutionOrder( + deploymentLoader: DeploymentLoader +): Promise { + const futureIds: string[] = []; + + for await (const message of deploymentLoader.readFromJournal()) { + if ("futureId" in message && !futureIds.includes(message.futureId)) { + futureIds.push(message.futureId); + } + } + + return futureIds; +} diff --git a/packages/core/src/list-transactions.ts b/packages/core/src/list-transactions.ts new file mode 100644 index 000000000..3ceafe8ee --- /dev/null +++ b/packages/core/src/list-transactions.ts @@ -0,0 +1,144 @@ +import type { ArtifactResolver } from "./types/artifact"; + +import { IgnitionError } from "./errors"; +import { FileDeploymentLoader } from "./internal/deployment-loader/file-deployment-loader"; +import { ERRORS } from "./internal/errors-list"; +import { + getExecutionOrder, + loadDeploymentState, +} from "./internal/execution/deployment-state-helpers"; +import { ExecutionResultType } from "./internal/execution/types/execution-result"; +import { + ExecutionSateType, + type CallExecutionState, + type DeploymentExecutionState, + type ExecutionState, + type SendDataExecutionState, +} from "./internal/execution/types/execution-state"; +import { + type Transaction, + TransactionReceiptStatus, +} from "./internal/execution/types/jsonrpc"; +import { assertIgnitionInvariant } from "./internal/utils/assertions"; +import { + type ListTransactionsResult, + TransactionStatus, +} from "./types/list-transactions"; + +/** + * Returns the transactions associated with a deployment. + * + * @param deploymentDir - the directory of the deployment to get the transactions of + * @param artifactResolver - the artifact resolver to use when loading artifacts + * for a future + * + * @beta + */ +export async function listTransactions( + deploymentDir: string, + _artifactResolver: Omit +): Promise { + const deploymentLoader = new FileDeploymentLoader(deploymentDir); + + const deploymentState = await loadDeploymentState(deploymentLoader); + + if (deploymentState === undefined) { + throw new IgnitionError(ERRORS.LIST_TRANSACTIONS.UNINITIALIZED_DEPLOYMENT, { + deploymentDir, + }); + } + + const executionOrder = await getExecutionOrder(deploymentLoader); + const transactions: ListTransactionsResult = []; + + for (const futureId of executionOrder) { + const exState = deploymentState.executionStates[futureId]; + + if (!doesSendTransactions(exState)) { + continue; + } + + for (const networkInteraction of exState.networkInteractions) { + assertIgnitionInvariant( + networkInteraction.type === "ONCHAIN_INTERACTION", + "Expected network interaction to be an onchain interaction" + ); + + for (const transaction of networkInteraction.transactions) { + switch (exState.type) { + case ExecutionSateType.DEPLOYMENT_EXECUTION_STATE: { + transactions.push({ + type: exState.type, + from: exState.from, + txHash: transaction.hash, + status: getTransactionStatus(transaction), + name: exState.contractName, + address: + transaction.receipt?.status === TransactionReceiptStatus.SUCCESS + ? exState.result?.type === ExecutionResultType.SUCCESS + ? exState.result.address + : undefined + : undefined, + params: exState.constructorArgs, + value: networkInteraction.value, + }); + + break; + } + case ExecutionSateType.CALL_EXECUTION_STATE: { + transactions.push({ + type: exState.type, + from: exState.from, + txHash: transaction.hash, + status: getTransactionStatus(transaction), + name: exState.functionName, + to: networkInteraction.to, + params: exState.args, + value: networkInteraction.value, + }); + + break; + } + case ExecutionSateType.SEND_DATA_EXECUTION_STATE: { + transactions.push({ + type: exState.type, + from: exState.from, + txHash: transaction.hash, + status: getTransactionStatus(transaction), + to: networkInteraction.to, + value: networkInteraction.value, + }); + + break; + } + } + } + } + } + + return transactions; +} + +function doesSendTransactions( + exState: ExecutionState +): exState is + | DeploymentExecutionState + | CallExecutionState + | SendDataExecutionState { + return ( + exState.type === ExecutionSateType.DEPLOYMENT_EXECUTION_STATE || + exState.type === ExecutionSateType.CALL_EXECUTION_STATE || + exState.type === ExecutionSateType.SEND_DATA_EXECUTION_STATE + ); +} + +function getTransactionStatus(transaction: Transaction): TransactionStatus { + const status = + transaction.receipt === undefined + ? TransactionStatus.DROPPED + : transaction.receipt.status === TransactionReceiptStatus.SUCCESS + ? TransactionStatus.SUCCESS + : TransactionStatus.FAILURE; + + return status; +} diff --git a/packages/core/src/types/list-transactions.ts b/packages/core/src/types/list-transactions.ts new file mode 100644 index 000000000..567ae5236 --- /dev/null +++ b/packages/core/src/types/list-transactions.ts @@ -0,0 +1,36 @@ +import type { SolidityParameterType } from "./module"; + +/** + * The status of a transaction. + * + * @beta + */ +export enum TransactionStatus { + SUCCESS = "SUCCESS", + FAILURE = "FAILURE", + DROPPED = "DROPPED", +} + +/** + * The information of a transaction. + * + * @beta + */ +export interface TransactionInfo { + type: string; + status: TransactionStatus; + txHash: string; + from: string; + to?: string; + name?: string; // can be contract name, function name, or undefined, depending on the type + address?: string; + params?: SolidityParameterType[]; + value?: bigint; +} + +/** + * An array of transaction information. + * + * @beta + */ +export type ListTransactionsResult = TransactionInfo[]; diff --git a/packages/core/test/list-transactions.ts b/packages/core/test/list-transactions.ts new file mode 100644 index 000000000..14e8fbb25 --- /dev/null +++ b/packages/core/test/list-transactions.ts @@ -0,0 +1,103 @@ +import { assert } from "chai"; +import path from "path"; + +import { + listTransactions, + ListTransactionsResult, + TransactionStatus, +} from "../src"; + +import { setupMockArtifactResolver } from "./helpers"; + +describe("listTransactions", () => { + it("should return the transactions associated with a deployment", async () => { + const expected: ListTransactionsResult = [ + { + type: "DEPLOYMENT_EXECUTION_STATE", + from: "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + txHash: + "0x65c7c0850d014fe44aced2249b3b3523c3a29e5e40b6388b6d84b28c0345b9e1", + status: TransactionStatus.SUCCESS, + name: "BasicContract", + address: "0x74e720c9B362ae3A65fF356ad62866511486BBBc", + params: ["0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"], + value: 0n, + }, + { + type: "DEPLOYMENT_EXECUTION_STATE", + from: "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + txHash: + "0xee331a69f69646d8b551a1ee6514760763cb7b1c332dadb2f0d05c730e554a28", + status: TransactionStatus.SUCCESS, + name: "BasicLibrary", + address: "0x1c947344BA932fC7f3D622600dA0199520A67EFd", + params: [], + value: 0n, + }, + { + type: "DEPLOYMENT_EXECUTION_STATE", + from: "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + txHash: + "0x6f06b87969f7543887e7cda4b0cf82426b6712a57c915593adf2dd6168f9f283", + status: TransactionStatus.SUCCESS, + name: "BasicLibrary", + address: "0xBdAce15b3211019E272418B8014971c1cefbC8f0", + params: [], + value: 0n, + }, + { + type: "CALL_EXECUTION_STATE", + from: "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + txHash: + "0xb7b49d16087ab6351e26b2358ae211e5dac335441f323a28c6c26f0bc0c3a0a3", + status: TransactionStatus.SUCCESS, + name: "basicFunction", + to: "0x74e720c9B362ae3A65fF356ad62866511486BBBc", + params: [40], + value: 0n, + }, + { + type: "DEPLOYMENT_EXECUTION_STATE", + from: "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + txHash: + "0x7542503401d0ad31f0c8de576c8d524535538c25050bd20f77562ecab25c4c8d", + status: TransactionStatus.SUCCESS, + name: "ContractWithLibrary", + address: "0xD369D9aB22D85C2A12bEabc0B581a419789E3755", + params: [], + value: 0n, + }, + { + type: "SEND_DATA_EXECUTION_STATE", + from: "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + txHash: + "0x2870c7d9f84122caba3739be0dc2246343a87d1b216b57002654b3bd413fe8e2", + status: TransactionStatus.SUCCESS, + to: "0x74e720c9B362ae3A65fF356ad62866511486BBBc", + value: 123n, + }, + ]; + + const deploymentDir = path.join( + __dirname, + "mocks", + "listTransactions", + "success" + ); + + const artifactResolver = setupMockArtifactResolver(); + + const result = await listTransactions(deploymentDir, artifactResolver); + + assert.deepEqual(result, expected); + }); + + it("should throw an error if the deployment is not initialized", async () => { + const artifactResolver = setupMockArtifactResolver(); + + await assert.isRejected( + listTransactions("fake", artifactResolver), + /IGN1200: Cannot list transactions for nonexistant deployment at fake/ + ); + }); +}); diff --git a/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract.dbg.json b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract.dbg.json new file mode 100644 index 000000000..c0fd7b8e3 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/0957b2d8bc1fe22551b79ef37cafc10a.json" +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract.json b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract.json new file mode 100644 index 000000000..571a45e15 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract.json @@ -0,0 +1,91 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BasicContract", + "sourceName": "contracts/BasicContract.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "eventArg", + "type": "uint256" + } + ], + "name": "BasicEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "funcArg", + "type": "uint256" + } + ], + "name": "basicFunction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "arg", + "type": "uint256" + } + ], + "name": "otherFunction", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "savedArg", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sender", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610396380380610396833981810160405281019061003291906100dc565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610109565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100a98261007e565b9050919050565b6100b98161009e565b81146100c457600080fd5b50565b6000815190506100d6816100b0565b92915050565b6000602082840312156100f2576100f1610079565b5b6000610100848285016100c7565b91505092915050565b61027e806101186000396000f3fe6080604052600436106100435760003560e01c806353a57b4a1461004f578063673b6d911461007a57806367e404ce1461009657806392b4bb8a146100c15761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100646100ea565b6040516100719190610173565b60405180910390f35b610094600480360381019061008f91906101bf565b6100f0565b005b3480156100a257600080fd5b506100ab6100fa565b6040516100b8919061022d565b60405180910390f35b3480156100cd57600080fd5b506100e860048036038101906100e391906101bf565b610120565b005b60005481565b8060008190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a28160405161014f9190610173565b60405180910390a150565b6000819050919050565b61016d8161015a565b82525050565b60006020820190506101886000830184610164565b92915050565b600080fd5b61019c8161015a565b81146101a757600080fd5b50565b6000813590506101b981610193565b92915050565b6000602082840312156101d5576101d461018e565b5b60006101e3848285016101aa565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610217826101ec565b9050919050565b6102278161020c565b82525050565b6000602082019050610242600083018461021e565b9291505056fea264697066735822122048e0c12634eed4d08b9eb753088008b374f8c695ef56c03075052e85d43f691f64736f6c63430008110033", + "deployedBytecode": "0x6080604052600436106100435760003560e01c806353a57b4a1461004f578063673b6d911461007a57806367e404ce1461009657806392b4bb8a146100c15761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100646100ea565b6040516100719190610173565b60405180910390f35b610094600480360381019061008f91906101bf565b6100f0565b005b3480156100a257600080fd5b506100ab6100fa565b6040516100b8919061022d565b60405180910390f35b3480156100cd57600080fd5b506100e860048036038101906100e391906101bf565b610120565b005b60005481565b8060008190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a28160405161014f9190610173565b60405180910390a150565b6000819050919050565b61016d8161015a565b82525050565b60006020820190506101886000830184610164565b92915050565b600080fd5b61019c8161015a565b81146101a757600080fd5b50565b6000813590506101b981610193565b92915050565b6000602082840312156101d5576101d461018e565b5b60006101e3848285016101aa565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610217826101ec565b9050919050565b6102278161020c565b82525050565b6000602082019050610242600083018461021e565b9291505056fea264697066735822122048e0c12634eed4d08b9eb753088008b374f8c695ef56c03075052e85d43f691f64736f6c63430008110033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract2.dbg.json b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract2.dbg.json new file mode 100644 index 000000000..c0fd7b8e3 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract2.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/0957b2d8bc1fe22551b79ef37cafc10a.json" +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract2.json b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract2.json new file mode 100644 index 000000000..571a45e15 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicContract2.json @@ -0,0 +1,91 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BasicContract", + "sourceName": "contracts/BasicContract.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "eventArg", + "type": "uint256" + } + ], + "name": "BasicEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "funcArg", + "type": "uint256" + } + ], + "name": "basicFunction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "arg", + "type": "uint256" + } + ], + "name": "otherFunction", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "savedArg", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sender", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610396380380610396833981810160405281019061003291906100dc565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610109565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100a98261007e565b9050919050565b6100b98161009e565b81146100c457600080fd5b50565b6000815190506100d6816100b0565b92915050565b6000602082840312156100f2576100f1610079565b5b6000610100848285016100c7565b91505092915050565b61027e806101186000396000f3fe6080604052600436106100435760003560e01c806353a57b4a1461004f578063673b6d911461007a57806367e404ce1461009657806392b4bb8a146100c15761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100646100ea565b6040516100719190610173565b60405180910390f35b610094600480360381019061008f91906101bf565b6100f0565b005b3480156100a257600080fd5b506100ab6100fa565b6040516100b8919061022d565b60405180910390f35b3480156100cd57600080fd5b506100e860048036038101906100e391906101bf565b610120565b005b60005481565b8060008190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a28160405161014f9190610173565b60405180910390a150565b6000819050919050565b61016d8161015a565b82525050565b60006020820190506101886000830184610164565b92915050565b600080fd5b61019c8161015a565b81146101a757600080fd5b50565b6000813590506101b981610193565b92915050565b6000602082840312156101d5576101d461018e565b5b60006101e3848285016101aa565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610217826101ec565b9050919050565b6102278161020c565b82525050565b6000602082019050610242600083018461021e565b9291505056fea264697066735822122048e0c12634eed4d08b9eb753088008b374f8c695ef56c03075052e85d43f691f64736f6c63430008110033", + "deployedBytecode": "0x6080604052600436106100435760003560e01c806353a57b4a1461004f578063673b6d911461007a57806367e404ce1461009657806392b4bb8a146100c15761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100646100ea565b6040516100719190610173565b60405180910390f35b610094600480360381019061008f91906101bf565b6100f0565b005b3480156100a257600080fd5b506100ab6100fa565b6040516100b8919061022d565b60405180910390f35b3480156100cd57600080fd5b506100e860048036038101906100e391906101bf565b610120565b005b60005481565b8060008190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a28160405161014f9190610173565b60405180910390a150565b6000819050919050565b61016d8161015a565b82525050565b60006020820190506101886000830184610164565b92915050565b600080fd5b61019c8161015a565b81146101a757600080fd5b50565b6000813590506101b981610193565b92915050565b6000602082840312156101d5576101d461018e565b5b60006101e3848285016101aa565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610217826101ec565b9050919050565b6102278161020c565b82525050565b6000602082019050610242600083018461021e565b9291505056fea264697066735822122048e0c12634eed4d08b9eb753088008b374f8c695ef56c03075052e85d43f691f64736f6c63430008110033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicLibrary.dbg.json b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicLibrary.dbg.json new file mode 100644 index 000000000..594e771d2 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicLibrary.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/0fce7e4e9544f4b99b971b3b98da92d2.json" +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicLibrary.json b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicLibrary.json new file mode 100644 index 000000000..3988eccd9 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicLibrary.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BasicLibrary", + "sourceName": "contracts/BasicLibrary.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "self", + "type": "uint256" + } + ], + "name": "addTwo", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x6101ab610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cae579131461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006002826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b925082820190508082111561016f5761016e610112565b5b9291505056fea264697066735822122082ed7a81ce855fb874f96d949594ec96c01bee23c154e3d112e6d8b6a31f1cc064736f6c63430008110033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cae579131461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006002826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b925082820190508082111561016f5761016e610112565b5b9291505056fea264697066735822122082ed7a81ce855fb874f96d949594ec96c01bee23c154e3d112e6d8b6a31f1cc064736f6c63430008110033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicLibrary2.json b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicLibrary2.json new file mode 100644 index 000000000..d3b813f5a --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#BasicLibrary2.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BasicLibrary", + "sourceName": "contracts/BasicLibrary.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "self", + "type": "uint256" + } + ], + "name": "addTwo", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x6101ab610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cae579131461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006002826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b925082820190508082111561016f5761016e610112565b5b9291505056fea26469706673582212206a544cfc8f986be3fb0a207e85759e54cc759f3023d890241105de48c3f5db1d64736f6c63430008110033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cae579131461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006002826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b925082820190508082111561016f5761016e610112565b5b9291505056fea26469706673582212206a544cfc8f986be3fb0a207e85759e54cc759f3023d890241105de48c3f5db1d64736f6c63430008110033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#ContractWithLibrary.json b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#ContractWithLibrary.json new file mode 100644 index 000000000..ad330d592 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#ContractWithLibrary.json @@ -0,0 +1,48 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ContractWithLibrary", + "sourceName": "contracts/ContractWithLibrary.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "num", + "type": "uint256" + } + ], + "name": "readonlyFunction", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610217806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630689b57e14610030575b600080fd5b61004a6004803603810190610045919061011e565b610060565b604051610057919061015a565b60405180910390f35b60008173__$e24d6032859d6fb940f423f951556f4c34$__63cae5791390916040518263ffffffff1660e01b815260040161009b9190610184565b602060405180830381865af41580156100b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100dc91906101b4565b9050919050565b600080fd5b6000819050919050565b6100fb816100e8565b811461010657600080fd5b50565b600081359050610118816100f2565b92915050565b600060208284031215610134576101336100e3565b5b600061014284828501610109565b91505092915050565b610154816100e8565b82525050565b600060208201905061016f600083018461014b565b92915050565b61017e816100e8565b82525050565b60006020820190506101996000830184610175565b92915050565b6000815190506101ae816100f2565b92915050565b6000602082840312156101ca576101c96100e3565b5b60006101d88482850161019f565b9150509291505056fea2646970667358221220c633fa737297b0a691bd22eff28934afa87e280f9bf9fd4a81f88e8748974b5564736f6c63430008110033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80630689b57e14610030575b600080fd5b61004a6004803603810190610045919061011e565b610060565b604051610057919061015a565b60405180910390f35b60008173__$e24d6032859d6fb940f423f951556f4c34$__63cae5791390916040518263ffffffff1660e01b815260040161009b9190610184565b602060405180830381865af41580156100b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100dc91906101b4565b9050919050565b600080fd5b6000819050919050565b6100fb816100e8565b811461010657600080fd5b50565b600081359050610118816100f2565b92915050565b600060208284031215610134576101336100e3565b5b600061014284828501610109565b91505092915050565b610154816100e8565b82525050565b600060208201905061016f600083018461014b565b92915050565b61017e816100e8565b82525050565b60006020820190506101996000830184610175565b92915050565b6000815190506101ae816100f2565b92915050565b6000602082840312156101ca576101c96100e3565b5b60006101d88482850161019f565b9150509291505056fea2646970667358221220c633fa737297b0a691bd22eff28934afa87e280f9bf9fd4a81f88e8748974b5564736f6c63430008110033", + "linkReferences": { + "contracts/BasicLibrary.sol": { + "BasicLibrary": [ + { + "length": 20, + "start": 133 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/BasicLibrary.sol": { + "BasicLibrary": [ + { + "length": 20, + "start": 101 + } + ] + } + } +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#ContractWithLibrary2.json b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#ContractWithLibrary2.json new file mode 100644 index 000000000..ad330d592 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/artifacts/CompleteModule#ContractWithLibrary2.json @@ -0,0 +1,48 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ContractWithLibrary", + "sourceName": "contracts/ContractWithLibrary.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "num", + "type": "uint256" + } + ], + "name": "readonlyFunction", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610217806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630689b57e14610030575b600080fd5b61004a6004803603810190610045919061011e565b610060565b604051610057919061015a565b60405180910390f35b60008173__$e24d6032859d6fb940f423f951556f4c34$__63cae5791390916040518263ffffffff1660e01b815260040161009b9190610184565b602060405180830381865af41580156100b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100dc91906101b4565b9050919050565b600080fd5b6000819050919050565b6100fb816100e8565b811461010657600080fd5b50565b600081359050610118816100f2565b92915050565b600060208284031215610134576101336100e3565b5b600061014284828501610109565b91505092915050565b610154816100e8565b82525050565b600060208201905061016f600083018461014b565b92915050565b61017e816100e8565b82525050565b60006020820190506101996000830184610175565b92915050565b6000815190506101ae816100f2565b92915050565b6000602082840312156101ca576101c96100e3565b5b60006101d88482850161019f565b9150509291505056fea2646970667358221220c633fa737297b0a691bd22eff28934afa87e280f9bf9fd4a81f88e8748974b5564736f6c63430008110033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80630689b57e14610030575b600080fd5b61004a6004803603810190610045919061011e565b610060565b604051610057919061015a565b60405180910390f35b60008173__$e24d6032859d6fb940f423f951556f4c34$__63cae5791390916040518263ffffffff1660e01b815260040161009b9190610184565b602060405180830381865af41580156100b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100dc91906101b4565b9050919050565b600080fd5b6000819050919050565b6100fb816100e8565b811461010657600080fd5b50565b600081359050610118816100f2565b92915050565b600060208284031215610134576101336100e3565b5b600061014284828501610109565b91505092915050565b610154816100e8565b82525050565b600060208201905061016f600083018461014b565b92915050565b61017e816100e8565b82525050565b60006020820190506101996000830184610175565b92915050565b6000815190506101ae816100f2565b92915050565b6000602082840312156101ca576101c96100e3565b5b60006101d88482850161019f565b9150509291505056fea2646970667358221220c633fa737297b0a691bd22eff28934afa87e280f9bf9fd4a81f88e8748974b5564736f6c63430008110033", + "linkReferences": { + "contracts/BasicLibrary.sol": { + "BasicLibrary": [ + { + "length": 20, + "start": 133 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/BasicLibrary.sol": { + "BasicLibrary": [ + { + "length": 20, + "start": 101 + } + ] + } + } +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/build-info/0957b2d8bc1fe22551b79ef37cafc10a.json b/packages/core/test/mocks/listTransactions/success/build-info/0957b2d8bc1fe22551b79ef37cafc10a.json new file mode 100644 index 000000000..7e860975c --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/build-info/0957b2d8bc1fe22551b79ef37cafc10a.json @@ -0,0 +1,2420 @@ +{ + "id": "0957b2d8bc1fe22551b79ef37cafc10a", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.17", + "solcLongVersion": "0.8.17+commit.8df45f5f", + "input": { + "language": "Solidity", + "sources": { + "contracts/BasicContract.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.9;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\ncontract BasicContract {\n uint public savedArg;\n address public sender;\n\n event BasicEvent(uint eventArg);\n\n constructor(address _sender) {\n sender = _sender;\n }\n\n receive() external payable {}\n\n function basicFunction(uint funcArg) public {\n // Uncomment this line, and the import of \"hardhat/console.sol\", to print a log in your terminal\n // console.log(\"Unlock time is %o and block timestamp is %o\", unlockTime, block.timestamp);\n\n emit BasicEvent(funcArg);\n }\n\n function otherFunction(uint arg) public payable {\n savedArg = arg;\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "sources": { + "contracts/BasicContract.sol": { + "ast": { + "absolutePath": "contracts/BasicContract.sol", + "exportedSymbols": { + "BasicContract": [ + 44 + ] + }, + "id": 45, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".9" + ], + "nodeType": "PragmaDirective", + "src": "39:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BasicContract", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 44, + "linearizedBaseContracts": [ + 44 + ], + "name": "BasicContract", + "nameLocation": "149:13:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "53a57b4a", + "id": 3, + "mutability": "mutable", + "name": "savedArg", + "nameLocation": "179:8:0", + "nodeType": "VariableDeclaration", + "scope": 44, + "src": "167:20:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "167:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "67e404ce", + "id": 5, + "mutability": "mutable", + "name": "sender", + "nameLocation": "206:6:0", + "nodeType": "VariableDeclaration", + "scope": 44, + "src": "191:21:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "191:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "b532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a2", + "id": 9, + "name": "BasicEvent", + "nameLocation": "223:10:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7, + "indexed": false, + "mutability": "mutable", + "name": "eventArg", + "nameLocation": "239:8:0", + "nodeType": "VariableDeclaration", + "scope": 9, + "src": "234:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "234:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "233:15:0" + }, + "src": "217:32:0" + }, + { + "body": { + "id": 18, + "nodeType": "Block", + "src": "282:27:0", + "statements": [ + { + "expression": { + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 14, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "288:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 15, + "name": "_sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "297:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "288:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 17, + "nodeType": "ExpressionStatement", + "src": "288:16:0" + } + ] + }, + "id": 19, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11, + "mutability": "mutable", + "name": "_sender", + "nameLocation": "273:7:0", + "nodeType": "VariableDeclaration", + "scope": 19, + "src": "265:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "265:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "264:17:0" + }, + "returnParameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [], + "src": "282:0:0" + }, + "scope": 44, + "src": "253:56:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 22, + "nodeType": "Block", + "src": "340:2:0", + "statements": [] + }, + "id": 23, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [], + "src": "320:2:0" + }, + "returnParameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [], + "src": "340:0:0" + }, + "scope": 44, + "src": "313:29:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 32, + "nodeType": "Block", + "src": "390:233:0", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 29, + "name": "funcArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "610:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 28, + "name": "BasicEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "599:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "599:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 31, + "nodeType": "EmitStatement", + "src": "594:24:0" + } + ] + }, + "functionSelector": "92b4bb8a", + "id": 33, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "basicFunction", + "nameLocation": "355:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 26, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "funcArg", + "nameLocation": "374:7:0", + "nodeType": "VariableDeclaration", + "scope": 33, + "src": "369:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 24, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "369:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "368:14:0" + }, + "returnParameters": { + "id": 27, + "nodeType": "ParameterList", + "parameters": [], + "src": "390:0:0" + }, + "scope": 44, + "src": "346:277:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 42, + "nodeType": "Block", + "src": "675:25:0", + "statements": [ + { + "expression": { + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 38, + "name": "savedArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "681:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 39, + "name": "arg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "692:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "681:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 41, + "nodeType": "ExpressionStatement", + "src": "681:14:0" + } + ] + }, + "functionSelector": "673b6d91", + "id": 43, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "otherFunction", + "nameLocation": "636:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 36, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "arg", + "nameLocation": "655:3:0", + "nodeType": "VariableDeclaration", + "scope": 43, + "src": "650:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 34, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "650:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "649:10:0" + }, + "returnParameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:0:0" + }, + "scope": 44, + "src": "627:73:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 45, + "src": "140:562:0", + "usedErrors": [] + } + ], + "src": "39:664:0" + }, + "id": 0 + } + }, + "contracts": { + "contracts/BasicContract.sol": { + "BasicContract": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "eventArg", + "type": "uint256" + } + ], + "name": "BasicEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "funcArg", + "type": "uint256" + } + ], + "name": "basicFunction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "arg", + "type": "uint256" + } + ], + "name": "otherFunction", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "savedArg", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "sender", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_19": { + "entryPoint": null, + "id": 19, + "parameterSlots": 1, + "returnSlots": 0 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 199, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 220, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 158, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 126, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 121, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 176, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1199:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:1" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:1" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:1", + "type": "" + } + ], + "src": "7:75:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:1" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:1" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:81:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:65:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "404:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "411:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "400:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "400:54:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:1", + "type": "" + } + ], + "src": "334:126:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "511:51:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "521:35:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "550:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "532:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "532:24:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "521:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "493:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "503:7:1", + "type": "" + } + ], + "src": "466:96:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "611:79:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "668:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "677:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "680:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "670:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "670:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "670:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "634:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "659:5:1" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "641:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "641:24:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "631:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "631:35:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "624:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "624:43:1" + }, + "nodeType": "YulIf", + "src": "621:63:1" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "604:5:1", + "type": "" + } + ], + "src": "568:122:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "759:80:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "769:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "784:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "778:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "778:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "769:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "827:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "800:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "800:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "800:33:1" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "737:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "745:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "753:5:1", + "type": "" + } + ], + "src": "696:143:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "922:274:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "968:83:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "970:77:1" + }, + "nodeType": "YulFunctionCall", + "src": "970:79:1" + }, + "nodeType": "YulExpressionStatement", + "src": "970:79:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "943:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "952:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "939:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "939:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "964:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "935:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "935:32:1" + }, + "nodeType": "YulIf", + "src": "932:119:1" + }, + { + "nodeType": "YulBlock", + "src": "1061:128:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1076:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1090:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1080:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1105:74:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1151:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1162:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1147:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1147:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1171:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "1115:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "1115:64:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1105:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "892:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "903:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "915:6:1", + "type": "" + } + ], + "src": "845:351:1" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50604051610396380380610396833981810160405281019061003291906100dc565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610109565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100a98261007e565b9050919050565b6100b98161009e565b81146100c457600080fd5b50565b6000815190506100d6816100b0565b92915050565b6000602082840312156100f2576100f1610079565b5b6000610100848285016100c7565b91505092915050565b61027e806101186000396000f3fe6080604052600436106100435760003560e01c806353a57b4a1461004f578063673b6d911461007a57806367e404ce1461009657806392b4bb8a146100c15761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100646100ea565b6040516100719190610173565b60405180910390f35b610094600480360381019061008f91906101bf565b6100f0565b005b3480156100a257600080fd5b506100ab6100fa565b6040516100b8919061022d565b60405180910390f35b3480156100cd57600080fd5b506100e860048036038101906100e391906101bf565b610120565b005b60005481565b8060008190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a28160405161014f9190610173565b60405180910390a150565b6000819050919050565b61016d8161015a565b82525050565b60006020820190506101886000830184610164565b92915050565b600080fd5b61019c8161015a565b81146101a757600080fd5b50565b6000813590506101b981610193565b92915050565b6000602082840312156101d5576101d461018e565b5b60006101e3848285016101aa565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610217826101ec565b9050919050565b6102278161020c565b82525050565b6000602082019050610242600083018461021e565b9291505056fea264697066735822122048e0c12634eed4d08b9eb753088008b374f8c695ef56c03075052e85d43f691f64736f6c63430008110033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x396 CODESIZE SUB DUP1 PUSH2 0x396 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0xDC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x109 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA9 DUP3 PUSH2 0x7E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB9 DUP2 PUSH2 0x9E JUMP JUMPDEST DUP2 EQ PUSH2 0xC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xD6 DUP2 PUSH2 0xB0 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF2 JUMPI PUSH2 0xF1 PUSH2 0x79 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP5 DUP3 DUP6 ADD PUSH2 0xC7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x27E DUP1 PUSH2 0x118 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x53A57B4A EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x673B6D91 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x67E404CE EQ PUSH2 0x96 JUMPI DUP1 PUSH4 0x92B4BB8A EQ PUSH2 0xC1 JUMPI PUSH2 0x4A JUMP JUMPDEST CALLDATASIZE PUSH2 0x4A JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0xEA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x173 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x8F SWAP2 SWAP1 PUSH2 0x1BF JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAB PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x22D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x1BF JUMP JUMPDEST PUSH2 0x120 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0xB532177E7C269FCC7B98812C0FC27F2DD1970AD68F68CEA8C18F0191848377A2 DUP2 PUSH1 0x40 MLOAD PUSH2 0x14F SWAP2 SWAP1 PUSH2 0x173 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x16D DUP2 PUSH2 0x15A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x188 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x164 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19C DUP2 PUSH2 0x15A JUMP JUMPDEST DUP2 EQ PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1B9 DUP2 PUSH2 0x193 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D5 JUMPI PUSH2 0x1D4 PUSH2 0x18E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1E3 DUP5 DUP3 DUP6 ADD PUSH2 0x1AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x217 DUP3 PUSH2 0x1EC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x227 DUP2 PUSH2 0x20C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x242 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x21E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BASEFEE 0xE0 0xC1 0x26 CALLVALUE 0xEE 0xD4 0xD0 DUP12 SWAP15 0xB7 MSTORE8 ADDMOD DUP1 ADDMOD 0xB3 PUSH21 0xF8C695EF56C03075052E85D43F691F64736F6C6343 STOP ADDMOD GT STOP CALLER ", + "sourceMap": "140:562:0:-:0;;;253:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;297:7;288:6;;:16;;;;;;;;;;;;;;;;;;253:56;140:562;;88:117:1;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:351::-;915:6;964:2;952:9;943:7;939:23;935:32;932:119;;;970:79;;:::i;:::-;932:119;1090:1;1115:64;1171:7;1162:6;1151:9;1147:22;1115:64;:::i;:::-;1105:74;;1061:128;845:351;;;;:::o;140:562:0:-;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_23": { + "entryPoint": null, + "id": 23, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@basicFunction_33": { + "entryPoint": 288, + "id": 33, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@otherFunction_43": { + "entryPoint": 240, + "id": 43, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@savedArg_3": { + "entryPoint": 234, + "id": 3, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@sender_5": { + "entryPoint": 250, + "id": 5, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_t_uint256": { + "entryPoint": 426, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 447, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 542, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 356, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 557, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 371, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 524, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 492, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 346, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 398, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 403, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1960:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "52:32:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "62:16:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "62:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "44:7:1", + "type": "" + } + ], + "src": "7:77:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "155:53:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "172:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "195:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "177:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "177:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "165:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "165:37:1" + }, + "nodeType": "YulExpressionStatement", + "src": "165:37:1" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "143:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "150:3:1", + "type": "" + } + ], + "src": "90:118:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "312:124:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "322:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "334:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "345:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "330:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "330:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "322:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "402:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "415:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "426:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "411:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "411:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "358:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "358:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "358:71:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "284:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "296:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "307:4:1", + "type": "" + } + ], + "src": "214:222:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "482:35:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "492:19:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "508:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "502:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "502:9:1" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "492:6:1" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "475:6:1", + "type": "" + } + ], + "src": "442:75:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "612:28:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "629:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "632:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "622:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "622:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "622:12:1" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "523:117:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "735:28:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "752:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "755:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "745:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "745:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "745:12:1" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "646:117:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "812:79:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "869:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "878:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "881:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "871:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "871:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "871:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "835:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "860:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "842:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "842:24:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "832:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "832:35:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "825:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "825:43:1" + }, + "nodeType": "YulIf", + "src": "822:63:1" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "805:5:1", + "type": "" + } + ], + "src": "769:122:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "949:87:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "959:29:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "981:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "968:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "968:20:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "959:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1024:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "997:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "997:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "997:33:1" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "927:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "935:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "943:5:1", + "type": "" + } + ], + "src": "897:139:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1108:263:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1154:83:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1156:77:1" + }, + "nodeType": "YulFunctionCall", + "src": "1156:79:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1156:79:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1129:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1138:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1125:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1125:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1150:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1121:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1121:32:1" + }, + "nodeType": "YulIf", + "src": "1118:119:1" + }, + { + "nodeType": "YulBlock", + "src": "1247:117:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1262:15:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1276:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1266:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1291:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1326:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1337:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1322:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1322:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1346:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "1301:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "1301:53:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1291:6:1" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1078:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1089:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1101:6:1", + "type": "" + } + ], + "src": "1042:329:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1422:81:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1432:65:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1447:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1454:42:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1443:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1443:54:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1432:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1404:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1414:7:1", + "type": "" + } + ], + "src": "1377:126:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1554:51:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1564:35:1", + "value": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1593:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nodeType": "YulIdentifier", + "src": "1575:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "1575:24:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "1564:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1536:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "1546:7:1", + "type": "" + } + ], + "src": "1509:96:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1676:53:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1693:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1716:5:1" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nodeType": "YulIdentifier", + "src": "1698:17:1" + }, + "nodeType": "YulFunctionCall", + "src": "1698:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1686:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1686:37:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1686:37:1" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1664:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1671:3:1", + "type": "" + } + ], + "src": "1611:118:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1833:124:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1843:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1855:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1866:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1851:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1851:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1843:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1923:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1936:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1947:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1932:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1932:17:1" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nodeType": "YulIdentifier", + "src": "1879:43:1" + }, + "nodeType": "YulFunctionCall", + "src": "1879:71:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1879:71:1" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1805:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1817:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1828:4:1", + "type": "" + } + ], + "src": "1735:222:1" + } + ] + }, + "contents": "{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600436106100435760003560e01c806353a57b4a1461004f578063673b6d911461007a57806367e404ce1461009657806392b4bb8a146100c15761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100646100ea565b6040516100719190610173565b60405180910390f35b610094600480360381019061008f91906101bf565b6100f0565b005b3480156100a257600080fd5b506100ab6100fa565b6040516100b8919061022d565b60405180910390f35b3480156100cd57600080fd5b506100e860048036038101906100e391906101bf565b610120565b005b60005481565b8060008190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a28160405161014f9190610173565b60405180910390a150565b6000819050919050565b61016d8161015a565b82525050565b60006020820190506101886000830184610164565b92915050565b600080fd5b61019c8161015a565b81146101a757600080fd5b50565b6000813590506101b981610193565b92915050565b6000602082840312156101d5576101d461018e565b5b60006101e3848285016101aa565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610217826101ec565b9050919050565b6102278161020c565b82525050565b6000602082019050610242600083018461021e565b9291505056fea264697066735822122048e0c12634eed4d08b9eb753088008b374f8c695ef56c03075052e85d43f691f64736f6c63430008110033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x43 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x53A57B4A EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x673B6D91 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x67E404CE EQ PUSH2 0x96 JUMPI DUP1 PUSH4 0x92B4BB8A EQ PUSH2 0xC1 JUMPI PUSH2 0x4A JUMP JUMPDEST CALLDATASIZE PUSH2 0x4A JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0xEA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x173 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x8F SWAP2 SWAP1 PUSH2 0x1BF JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAB PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0x22D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x1BF JUMP JUMPDEST PUSH2 0x120 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0xB532177E7C269FCC7B98812C0FC27F2DD1970AD68F68CEA8C18F0191848377A2 DUP2 PUSH1 0x40 MLOAD PUSH2 0x14F SWAP2 SWAP1 PUSH2 0x173 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x16D DUP2 PUSH2 0x15A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x188 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x164 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19C DUP2 PUSH2 0x15A JUMP JUMPDEST DUP2 EQ PUSH2 0x1A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1B9 DUP2 PUSH2 0x193 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D5 JUMPI PUSH2 0x1D4 PUSH2 0x18E JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1E3 DUP5 DUP3 DUP6 ADD PUSH2 0x1AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x217 DUP3 PUSH2 0x1EC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x227 DUP2 PUSH2 0x20C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x242 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x21E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BASEFEE 0xE0 0xC1 0x26 CALLVALUE 0xEE 0xD4 0xD0 DUP12 SWAP15 0xB7 MSTORE8 ADDMOD DUP1 ADDMOD 0xB3 PUSH21 0xF8C695EF56C03075052E85D43F691F64736F6C6343 STOP ADDMOD GT STOP CALLER ", + "sourceMap": "140:562:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;167:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;627:73;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;191:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;346:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;167:20;;;;:::o;627:73::-;692:3;681:8;:14;;;;627:73;:::o;191:21::-;;;;;;;;;;;;;:::o;346:277::-;599:19;610:7;599:19;;;;;;:::i;:::-;;;;;;;;346:277;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:96::-;1546:7;1575:24;1593:5;1575:24;:::i;:::-;1564:35;;1509:96;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o" + }, + "methodIdentifiers": { + "basicFunction(uint256)": "92b4bb8a", + "otherFunction(uint256)": "673b6d91", + "savedArg()": "53a57b4a", + "sender()": "67e404ce" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eventArg\",\"type\":\"uint256\"}],\"name\":\"BasicEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"funcArg\",\"type\":\"uint256\"}],\"name\":\"basicFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"arg\",\"type\":\"uint256\"}],\"name\":\"otherFunction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"savedArg\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BasicContract.sol\":\"BasicContract\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/BasicContract.sol\":{\"keccak256\":\"0xdaa3f8902b441f57a3d3dcbf3bc9faaf2e2340bc6b5fe6750fe088db6cb2bc21\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1c9d6307d9db3b6f77d5742a6a418d8cab153cfd356b8d53966372a6a17d3f0b\",\"dweb:/ipfs/QmeBe5wY8bXfgoC6Cps3kVpC8p3DfnTBVa6VTBFa7BJ6m2\"]}},\"version\":1}" + } + } + } + } +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/build-info/0fce7e4e9544f4b99b971b3b98da92d2.json b/packages/core/test/mocks/listTransactions/success/build-info/0fce7e4e9544f4b99b971b3b98da92d2.json new file mode 100644 index 000000000..45431d9ee --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/build-info/0fce7e4e9544f4b99b971b3b98da92d2.json @@ -0,0 +1,4076 @@ +{ + "id": "0fce7e4e9544f4b99b971b3b98da92d2", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.17", + "solcLongVersion": "0.8.17+commit.8df45f5f", + "input": { + "language": "Solidity", + "sources": { + "contracts/BasicContract.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.9;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\ncontract BasicContract {\n uint public savedArg;\n\n event BasicEvent(uint eventArg);\n\n receive() external payable {}\n\n function basicFunction(uint funcArg) public {\n // Uncomment this line, and the import of \"hardhat/console.sol\", to print a log in your terminal\n // console.log(\"Unlock time is %o and block timestamp is %o\", unlockTime, block.timestamp);\n\n emit BasicEvent(funcArg);\n }\n\n function otherFunction(uint arg) public payable {\n savedArg = arg;\n }\n}\n" + }, + "contracts/BasicLibrary.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.9;\n\nlibrary BasicLibrary {\n function addTwo(uint self) public pure returns (uint) {\n return self + 2;\n }\n}\n" + }, + "contracts/ContractWithLibrary.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.9;\n\nimport \"./BasicLibrary.sol\";\n\nusing BasicLibrary for uint;\n\ncontract ContractWithLibrary {\n function readonlyFunction(uint num) public pure returns (uint) {\n return num.addTwo();\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "sources": { + "contracts/BasicContract.sol": { + "ast": { + "absolutePath": "contracts/BasicContract.sol", + "exportedSymbols": { + "BasicContract": [ + 32 + ] + }, + "id": 33, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".9" + ], + "nodeType": "PragmaDirective", + "src": "39:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BasicContract", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 32, + "linearizedBaseContracts": [ + 32 + ], + "name": "BasicContract", + "nameLocation": "149:13:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "53a57b4a", + "id": 3, + "mutability": "mutable", + "name": "savedArg", + "nameLocation": "179:8:0", + "nodeType": "VariableDeclaration", + "scope": 32, + "src": "167:20:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "167:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "b532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a2", + "id": 7, + "name": "BasicEvent", + "nameLocation": "198:10:0", + "nodeType": "EventDefinition", + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5, + "indexed": false, + "mutability": "mutable", + "name": "eventArg", + "nameLocation": "214:8:0", + "nodeType": "VariableDeclaration", + "scope": 7, + "src": "209:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "209:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "208:15:0" + }, + "src": "192:32:0" + }, + { + "body": { + "id": 10, + "nodeType": "Block", + "src": "255:2:0", + "statements": [] + }, + "id": 11, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8, + "nodeType": "ParameterList", + "parameters": [], + "src": "235:2:0" + }, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [], + "src": "255:0:0" + }, + "scope": 32, + "src": "228:29:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 20, + "nodeType": "Block", + "src": "305:233:0", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 17, + "name": "funcArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "525:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 16, + "name": "BasicEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "514:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "514:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 19, + "nodeType": "EmitStatement", + "src": "509:24:0" + } + ] + }, + "functionSelector": "92b4bb8a", + "id": 21, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "basicFunction", + "nameLocation": "270:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "funcArg", + "nameLocation": "289:7:0", + "nodeType": "VariableDeclaration", + "scope": 21, + "src": "284:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "284:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "283:14:0" + }, + "returnParameters": { + "id": 15, + "nodeType": "ParameterList", + "parameters": [], + "src": "305:0:0" + }, + "scope": 32, + "src": "261:277:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 30, + "nodeType": "Block", + "src": "590:25:0", + "statements": [ + { + "expression": { + "id": 28, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 26, + "name": "savedArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "596:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 27, + "name": "arg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "607:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "596:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 29, + "nodeType": "ExpressionStatement", + "src": "596:14:0" + } + ] + }, + "functionSelector": "673b6d91", + "id": 31, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "otherFunction", + "nameLocation": "551:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "mutability": "mutable", + "name": "arg", + "nameLocation": "570:3:0", + "nodeType": "VariableDeclaration", + "scope": 31, + "src": "565:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 22, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "565:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "564:10:0" + }, + "returnParameters": { + "id": 25, + "nodeType": "ParameterList", + "parameters": [], + "src": "590:0:0" + }, + "scope": 32, + "src": "542:73:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 33, + "src": "140:477:0", + "usedErrors": [] + } + ], + "src": "39:579:0" + }, + "id": 0 + }, + "contracts/BasicLibrary.sol": { + "ast": { + "absolutePath": "contracts/BasicLibrary.sol", + "exportedSymbols": { + "BasicLibrary": [ + 47 + ] + }, + "id": 48, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 34, + "literals": [ + "solidity", + "^", + "0.8", + ".9" + ], + "nodeType": "PragmaDirective", + "src": "39:23:1" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BasicLibrary", + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 47, + "linearizedBaseContracts": [ + 47 + ], + "name": "BasicLibrary", + "nameLocation": "72:12:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 45, + "nodeType": "Block", + "src": "143:26:1", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 41, + "name": "self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "156:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "32", + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "163:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "156:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 40, + "id": 44, + "nodeType": "Return", + "src": "149:15:1" + } + ] + }, + "functionSelector": "cae57913", + "id": 46, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "addTwo", + "nameLocation": "98:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36, + "mutability": "mutable", + "name": "self", + "nameLocation": "110:4:1", + "nodeType": "VariableDeclaration", + "scope": 46, + "src": "105:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "105:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "104:11:1" + }, + "returnParameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 46, + "src": "137:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 38, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "137:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "136:6:1" + }, + "scope": 47, + "src": "89:80:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 48, + "src": "64:107:1", + "usedErrors": [] + } + ], + "src": "39:133:1" + }, + "id": 1 + }, + "contracts/ContractWithLibrary.sol": { + "ast": { + "absolutePath": "contracts/ContractWithLibrary.sol", + "exportedSymbols": { + "BasicLibrary": [ + 47 + ], + "ContractWithLibrary": [ + 66 + ] + }, + "id": 67, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 49, + "literals": [ + "solidity", + "^", + "0.8", + ".9" + ], + "nodeType": "PragmaDirective", + "src": "39:23:2" + }, + { + "absolutePath": "contracts/BasicLibrary.sol", + "file": "./BasicLibrary.sol", + "id": 50, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 67, + "sourceUnit": 48, + "src": "64:28:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "global": false, + "id": 53, + "libraryName": { + "id": 51, + "name": "BasicLibrary", + "nameLocations": [ + "100:12:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47, + "src": "100:12:2" + }, + "nodeType": "UsingForDirective", + "src": "94:28:2", + "typeName": { + "id": 52, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "117:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ContractWithLibrary", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 66, + "linearizedBaseContracts": [ + 66 + ], + "name": "ContractWithLibrary", + "nameLocation": "133:19:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 64, + "nodeType": "Block", + "src": "220:30:2", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 60, + "name": "num", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 55, + "src": "233:3:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "237:6:2", + "memberName": "addTwo", + "nodeType": "MemberAccess", + "referencedDeclaration": 46, + "src": "233:10:2", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "233:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 59, + "id": 63, + "nodeType": "Return", + "src": "226:19:2" + } + ] + }, + "functionSelector": "0689b57e", + "id": 65, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "readonlyFunction", + "nameLocation": "166:16:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 56, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 55, + "mutability": "mutable", + "name": "num", + "nameLocation": "188:3:2", + "nodeType": "VariableDeclaration", + "scope": 65, + "src": "183:8:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 54, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "183:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "182:10:2" + }, + "returnParameters": { + "id": 59, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65, + "src": "214:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "214:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "213:6:2" + }, + "scope": 66, + "src": "157:93:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 67, + "src": "124:128:2", + "usedErrors": [] + } + ], + "src": "39:214:2" + }, + "id": 2 + } + }, + "contracts": { + "contracts/BasicContract.sol": { + "BasicContract": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "eventArg", + "type": "uint256" + } + ], + "name": "BasicEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "funcArg", + "type": "uint256" + } + ], + "name": "basicFunction", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "arg", + "type": "uint256" + } + ], + "name": "otherFunction", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "savedArg", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506101c6806100206000396000f3fe6080604052600436106100385760003560e01c806353a57b4a14610044578063673b6d911461006f57806392b4bb8a1461008b5761003f565b3661003f57005b600080fd5b34801561005057600080fd5b506100596100b4565b6040516100669190610117565b60405180910390f35b61008960048036038101906100849190610163565b6100ba565b005b34801561009757600080fd5b506100b260048036038101906100ad9190610163565b6100c4565b005b60005481565b8060008190555050565b7fb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a2816040516100f39190610117565b60405180910390a150565b6000819050919050565b610111816100fe565b82525050565b600060208201905061012c6000830184610108565b92915050565b600080fd5b610140816100fe565b811461014b57600080fd5b50565b60008135905061015d81610137565b92915050565b60006020828403121561017957610178610132565b5b60006101878482850161014e565b9150509291505056fea26469706673582212206e9f7ed083b7ba69491f350d1fbdd13154b9f3f71c1da0a8b9df128918bb821f64736f6c63430008110033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x53A57B4A EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x673B6D91 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x92B4BB8A EQ PUSH2 0x8B JUMPI PUSH2 0x3F JUMP JUMPDEST CALLDATASIZE PUSH2 0x3F JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x59 PUSH2 0xB4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x89 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x163 JUMP JUMPDEST PUSH2 0xBA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x163 JUMP JUMPDEST PUSH2 0xC4 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH32 0xB532177E7C269FCC7B98812C0FC27F2DD1970AD68F68CEA8C18F0191848377A2 DUP2 PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x111 DUP2 PUSH2 0xFE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x108 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x140 DUP2 PUSH2 0xFE JUMP JUMPDEST DUP2 EQ PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x15D DUP2 PUSH2 0x137 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x179 JUMPI PUSH2 0x178 PUSH2 0x132 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x187 DUP5 DUP3 DUP6 ADD PUSH2 0x14E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x9F7ED083B7BA69491F350D1FBDD131 SLOAD 0xB9 RETURN 0xF7 SHR SAR LOG0 0xA8 0xB9 0xDF SLT DUP10 XOR 0xBB DUP3 0x1F PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ", + "sourceMap": "140:477:0:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_11": { + "entryPoint": null, + "id": 11, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@basicFunction_21": { + "entryPoint": 196, + "id": 21, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@otherFunction_31": { + "entryPoint": 186, + "id": 31, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@savedArg_3": { + "entryPoint": 180, + "id": 3, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_t_uint256": { + "entryPoint": 334, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 355, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 264, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 279, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 254, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 306, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 311, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1374:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "52:32:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "62:16:3", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "73:5:3" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "62:7:3" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "34:5:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "44:7:3", + "type": "" + } + ], + "src": "7:77:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "155:53:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "172:3:3" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "195:5:3" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "177:17:3" + }, + "nodeType": "YulFunctionCall", + "src": "177:24:3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "165:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "165:37:3" + }, + "nodeType": "YulExpressionStatement", + "src": "165:37:3" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "143:5:3", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "150:3:3", + "type": "" + } + ], + "src": "90:118:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "312:124:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "322:26:3", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "334:9:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "345:2:3", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "330:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "330:18:3" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "322:4:3" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "402:6:3" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "415:9:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "426:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "411:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "411:17:3" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "358:43:3" + }, + "nodeType": "YulFunctionCall", + "src": "358:71:3" + }, + "nodeType": "YulExpressionStatement", + "src": "358:71:3" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "284:9:3", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "296:6:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "307:4:3", + "type": "" + } + ], + "src": "214:222:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "482:35:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "492:19:3", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "508:2:3", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "502:5:3" + }, + "nodeType": "YulFunctionCall", + "src": "502:9:3" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "492:6:3" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "475:6:3", + "type": "" + } + ], + "src": "442:75:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "612:28:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "629:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "632:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "622:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "622:12:3" + }, + "nodeType": "YulExpressionStatement", + "src": "622:12:3" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "523:117:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "735:28:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "752:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "755:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "745:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "745:12:3" + }, + "nodeType": "YulExpressionStatement", + "src": "745:12:3" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "646:117:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "812:79:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "869:16:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "878:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "881:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "871:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "871:12:3" + }, + "nodeType": "YulExpressionStatement", + "src": "871:12:3" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "835:5:3" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "860:5:3" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "842:17:3" + }, + "nodeType": "YulFunctionCall", + "src": "842:24:3" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "832:2:3" + }, + "nodeType": "YulFunctionCall", + "src": "832:35:3" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "825:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "825:43:3" + }, + "nodeType": "YulIf", + "src": "822:63:3" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "805:5:3", + "type": "" + } + ], + "src": "769:122:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "949:87:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "959:29:3", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "981:6:3" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "968:12:3" + }, + "nodeType": "YulFunctionCall", + "src": "968:20:3" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "959:5:3" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1024:5:3" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "997:26:3" + }, + "nodeType": "YulFunctionCall", + "src": "997:33:3" + }, + "nodeType": "YulExpressionStatement", + "src": "997:33:3" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "927:6:3", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "935:3:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "943:5:3", + "type": "" + } + ], + "src": "897:139:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1108:263:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1154:83:3", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "1156:77:3" + }, + "nodeType": "YulFunctionCall", + "src": "1156:79:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1156:79:3" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1129:7:3" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1138:9:3" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1125:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1125:23:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1150:2:3", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1121:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1121:32:3" + }, + "nodeType": "YulIf", + "src": "1118:119:3" + }, + { + "nodeType": "YulBlock", + "src": "1247:117:3", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "1262:15:3", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1276:1:3", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1266:6:3", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1291:63:3", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1326:9:3" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1337:6:3" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1322:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1322:22:3" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1346:7:3" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "1301:20:3" + }, + "nodeType": "YulFunctionCall", + "src": "1301:53:3" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1291:6:3" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1078:9:3", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1089:7:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1101:6:3", + "type": "" + } + ], + "src": "1042:329:3" + } + ] + }, + "contents": "{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", + "id": 3, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600436106100385760003560e01c806353a57b4a14610044578063673b6d911461006f57806392b4bb8a1461008b5761003f565b3661003f57005b600080fd5b34801561005057600080fd5b506100596100b4565b6040516100669190610117565b60405180910390f35b61008960048036038101906100849190610163565b6100ba565b005b34801561009757600080fd5b506100b260048036038101906100ad9190610163565b6100c4565b005b60005481565b8060008190555050565b7fb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a2816040516100f39190610117565b60405180910390a150565b6000819050919050565b610111816100fe565b82525050565b600060208201905061012c6000830184610108565b92915050565b600080fd5b610140816100fe565b811461014b57600080fd5b50565b60008135905061015d81610137565b92915050565b60006020828403121561017957610178610132565b5b60006101878482850161014e565b9150509291505056fea26469706673582212206e9f7ed083b7ba69491f350d1fbdd13154b9f3f71c1da0a8b9df128918bb821f64736f6c63430008110033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x53A57B4A EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x673B6D91 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x92B4BB8A EQ PUSH2 0x8B JUMPI PUSH2 0x3F JUMP JUMPDEST CALLDATASIZE PUSH2 0x3F JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x59 PUSH2 0xB4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x89 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x163 JUMP JUMPDEST PUSH2 0xBA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xAD SWAP2 SWAP1 PUSH2 0x163 JUMP JUMPDEST PUSH2 0xC4 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH32 0xB532177E7C269FCC7B98812C0FC27F2DD1970AD68F68CEA8C18F0191848377A2 DUP2 PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x111 DUP2 PUSH2 0xFE JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x12C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x108 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x140 DUP2 PUSH2 0xFE JUMP JUMPDEST DUP2 EQ PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x15D DUP2 PUSH2 0x137 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x179 JUMPI PUSH2 0x178 PUSH2 0x132 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x187 DUP5 DUP3 DUP6 ADD PUSH2 0x14E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x9F7ED083B7BA69491F350D1FBDD131 SLOAD 0xB9 RETURN 0xF7 SHR SAR LOG0 0xA8 0xB9 0xDF SLT DUP10 XOR 0xBB DUP3 0x1F PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ", + "sourceMap": "140:477:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;167:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;542:73;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;261:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;167:20;;;;:::o;542:73::-;607:3;596:8;:14;;;;542:73;:::o;261:277::-;514:19;525:7;514:19;;;;;;:::i;:::-;;;;;;;;261:277;:::o;7:77:3:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o" + }, + "methodIdentifiers": { + "basicFunction(uint256)": "92b4bb8a", + "otherFunction(uint256)": "673b6d91", + "savedArg()": "53a57b4a" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eventArg\",\"type\":\"uint256\"}],\"name\":\"BasicEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"funcArg\",\"type\":\"uint256\"}],\"name\":\"basicFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"arg\",\"type\":\"uint256\"}],\"name\":\"otherFunction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"savedArg\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BasicContract.sol\":\"BasicContract\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/BasicContract.sol\":{\"keccak256\":\"0x4b0487815d3bbb1f6918f45cf7c0ceed07a7d8d33793d618e1c9e0eb326dba0f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d5bcacee361cb0e8635f756fb98d92b90a554dccd72cfa576b4011f32571333\",\"dweb:/ipfs/QmXRizHFsYdFyZ3QJntS3jmigaYi3MZnKcB5Y8mpbDt9rR\"]}},\"version\":1}" + } + }, + "contracts/BasicLibrary.sol": { + "BasicLibrary": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "self", + "type": "uint256" + } + ], + "name": "addTwo", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "6101ab610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cae579131461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006002826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b925082820190508082111561016f5761016e610112565b5b9291505056fea264697066735822122082ed7a81ce855fb874f96d949594ec96c01bee23c154e3d112e6d8b6a31f1cc064736f6c63430008110033", + "opcodes": "PUSH2 0x1AB PUSH2 0x53 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x46 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCAE57913 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4F SWAP2 SWAP1 PUSH2 0xBB JUMP JUMPDEST PUSH2 0x6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x61 SWAP2 SWAP1 PUSH2 0xF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 PUSH2 0x79 SWAP2 SWAP1 PUSH2 0x141 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x98 DUP2 PUSH2 0x85 JUMP JUMPDEST DUP2 EQ PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB5 DUP2 PUSH2 0x8F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD1 JUMPI PUSH2 0xD0 PUSH2 0x80 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP5 DUP3 DUP6 ADD PUSH2 0xA6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xF1 DUP2 PUSH2 0x85 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x10C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x14C DUP3 PUSH2 0x85 JUMP JUMPDEST SWAP2 POP PUSH2 0x157 DUP4 PUSH2 0x85 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x16F JUMPI PUSH2 0x16E PUSH2 0x112 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP3 0xED PUSH27 0x81CE855FB874F96D949594EC96C01BEE23C154E3D112E6D8B6A31F SHR 0xC0 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ", + "sourceMap": "64:107:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@addTwo_46": { + "entryPoint": 106, + "id": 46, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_t_uint256": { + "entryPoint": 166, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 187, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack_library": { + "entryPoint": 232, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed": { + "entryPoint": 247, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 321, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 133, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 274, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 128, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 143, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:1781:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:3", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:3", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:3" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:3" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:3" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:3", + "type": "" + } + ], + "src": "7:75:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:3" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:3" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:3" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:3" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:32:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:16:3", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "400:5:3" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:3" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:3", + "type": "" + } + ], + "src": "334:77:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "460:79:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "517:16:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "526:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "529:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "519:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "519:12:3" + }, + "nodeType": "YulExpressionStatement", + "src": "519:12:3" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "483:5:3" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "508:5:3" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "490:17:3" + }, + "nodeType": "YulFunctionCall", + "src": "490:24:3" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "480:2:3" + }, + "nodeType": "YulFunctionCall", + "src": "480:35:3" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "473:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "473:43:3" + }, + "nodeType": "YulIf", + "src": "470:63:3" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "453:5:3", + "type": "" + } + ], + "src": "417:122:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "597:87:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "607:29:3", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "629:6:3" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "616:12:3" + }, + "nodeType": "YulFunctionCall", + "src": "616:20:3" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "607:5:3" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "672:5:3" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "645:26:3" + }, + "nodeType": "YulFunctionCall", + "src": "645:33:3" + }, + "nodeType": "YulExpressionStatement", + "src": "645:33:3" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "575:6:3", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "583:3:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "591:5:3", + "type": "" + } + ], + "src": "545:139:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "756:263:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "802:83:3", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "804:77:3" + }, + "nodeType": "YulFunctionCall", + "src": "804:79:3" + }, + "nodeType": "YulExpressionStatement", + "src": "804:79:3" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "777:7:3" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "786:9:3" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "773:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "773:23:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "798:2:3", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "769:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "769:32:3" + }, + "nodeType": "YulIf", + "src": "766:119:3" + }, + { + "nodeType": "YulBlock", + "src": "895:117:3", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "910:15:3", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "924:1:3", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "914:6:3", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "939:63:3", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "974:9:3" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "985:6:3" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "970:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "970:22:3" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "994:7:3" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "949:20:3" + }, + "nodeType": "YulFunctionCall", + "src": "949:53:3" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "939:6:3" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "726:9:3", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "737:7:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "749:6:3", + "type": "" + } + ], + "src": "690:329:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1098:53:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1115:3:3" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1138:5:3" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1120:17:3" + }, + "nodeType": "YulFunctionCall", + "src": "1120:24:3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1108:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "1108:37:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1108:37:3" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack_library", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1086:5:3", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1093:3:3", + "type": "" + } + ], + "src": "1025:126:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1263:132:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1273:26:3", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1285:9:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1296:2:3", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1281:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1281:18:3" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1273:4:3" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1361:6:3" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1374:9:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1385:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1370:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1370:17:3" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack_library", + "nodeType": "YulIdentifier", + "src": "1309:51:3" + }, + "nodeType": "YulFunctionCall", + "src": "1309:79:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1309:79:3" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1235:9:3", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1247:6:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1258:4:3", + "type": "" + } + ], + "src": "1157:238:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1429:152:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1446:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1449:77:3", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1439:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "1439:88:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1439:88:3" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1543:1:3", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1546:4:3", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1536:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "1536:15:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1536:15:3" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1567:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1570:4:3", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1560:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "1560:15:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1560:15:3" + } + ] + }, + "name": "panic_error_0x11", + "nodeType": "YulFunctionDefinition", + "src": "1401:180:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1631:147:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1641:25:3", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1664:1:3" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1646:17:3" + }, + "nodeType": "YulFunctionCall", + "src": "1646:20:3" + }, + "variableNames": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1641:1:3" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1675:25:3", + "value": { + "arguments": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1698:1:3" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1680:17:3" + }, + "nodeType": "YulFunctionCall", + "src": "1680:20:3" + }, + "variableNames": [ + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1675:1:3" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1709:16:3", + "value": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1720:1:3" + }, + { + "name": "y", + "nodeType": "YulIdentifier", + "src": "1723:1:3" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1716:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1716:9:3" + }, + "variableNames": [ + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "1709:3:3" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1749:22:3", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nodeType": "YulIdentifier", + "src": "1751:16:3" + }, + "nodeType": "YulFunctionCall", + "src": "1751:18:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1751:18:3" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nodeType": "YulIdentifier", + "src": "1741:1:3" + }, + { + "name": "sum", + "nodeType": "YulIdentifier", + "src": "1744:3:3" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1738:2:3" + }, + "nodeType": "YulFunctionCall", + "src": "1738:10:3" + }, + "nodeType": "YulIf", + "src": "1735:36:3" + } + ] + }, + "name": "checked_add_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nodeType": "YulTypedName", + "src": "1618:1:3", + "type": "" + }, + { + "name": "y", + "nodeType": "YulTypedName", + "src": "1621:1:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nodeType": "YulTypedName", + "src": "1627:3:3", + "type": "" + } + ], + "src": "1587:191:3" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack_library(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n}\n", + "id": 3, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cae579131461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006002826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b925082820190508082111561016f5761016e610112565b5b9291505056fea264697066735822122082ed7a81ce855fb874f96d949594ec96c01bee23c154e3d112e6d8b6a31f1cc064736f6c63430008110033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCAE57913 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x54 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4F SWAP2 SWAP1 PUSH2 0xBB JUMP JUMPDEST PUSH2 0x6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x61 SWAP2 SWAP1 PUSH2 0xF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 PUSH2 0x79 SWAP2 SWAP1 PUSH2 0x141 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x98 DUP2 PUSH2 0x85 JUMP JUMPDEST DUP2 EQ PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xB5 DUP2 PUSH2 0x8F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD1 JUMPI PUSH2 0xD0 PUSH2 0x80 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xDF DUP5 DUP3 DUP6 ADD PUSH2 0xA6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xF1 DUP2 PUSH2 0x85 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x10C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xE8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x14C DUP3 PUSH2 0x85 JUMP JUMPDEST SWAP2 POP PUSH2 0x157 DUP4 PUSH2 0x85 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x16F JUMPI PUSH2 0x16E PUSH2 0x112 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP3 0xED PUSH27 0x81CE855FB874F96D949594EC96C01BEE23C154E3D112E6D8B6A31F SHR 0xC0 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ", + "sourceMap": "64:107:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;89:80;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;137:4;163:1;156:4;:8;;;;:::i;:::-;149:15;;89:80;;;:::o;88:117:3:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:126::-;1120:24;1138:5;1120:24;:::i;:::-;1115:3;1108:37;1025:126;;:::o;1157:238::-;1258:4;1296:2;1285:9;1281:18;1273:26;;1309:79;1385:1;1374:9;1370:17;1361:6;1309:79;:::i;:::-;1157:238;;;;:::o;1401:180::-;1449:77;1446:1;1439:88;1546:4;1543:1;1536:15;1570:4;1567:1;1560:15;1587:191;1627:3;1646:20;1664:1;1646:20;:::i;:::-;1641:25;;1680:20;1698:1;1680:20;:::i;:::-;1675:25;;1723:1;1720;1716:9;1709:16;;1744:3;1741:1;1738:10;1735:36;;;1751:18;;:::i;:::-;1735:36;1587:191;;;;:::o" + }, + "methodIdentifiers": { + "addTwo(uint256)": "cae57913" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"self\",\"type\":\"uint256\"}],\"name\":\"addTwo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BasicLibrary.sol\":\"BasicLibrary\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/BasicLibrary.sol\":{\"keccak256\":\"0xa72a9b8f7d1ae9be8365c2cce358b5cf76781bf54d7c6666af19b9aa9bef4320\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7bb28a90a7872497ada155bd4c3d280fd7c591a3679e875254ef52e8df99a2c9\",\"dweb:/ipfs/QmeJHNu8zCaM2aLcghHiJSN67tH8Q8Qpfr9z3yVBogMHWe\"]}},\"version\":1}" + } + }, + "contracts/ContractWithLibrary.sol": { + "ContractWithLibrary": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "num", + "type": "uint256" + } + ], + "name": "readonlyFunction", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": { + "contracts/BasicLibrary.sol": { + "BasicLibrary": [ + { + "length": 20, + "start": 133 + } + ] + } + }, + "object": "608060405234801561001057600080fd5b50610217806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630689b57e14610030575b600080fd5b61004a6004803603810190610045919061011e565b610060565b604051610057919061015a565b60405180910390f35b60008173__$e24d6032859d6fb940f423f951556f4c34$__63cae5791390916040518263ffffffff1660e01b815260040161009b9190610184565b602060405180830381865af41580156100b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100dc91906101b4565b9050919050565b600080fd5b6000819050919050565b6100fb816100e8565b811461010657600080fd5b50565b600081359050610118816100f2565b92915050565b600060208284031215610134576101336100e3565b5b600061014284828501610109565b91505092915050565b610154816100e8565b82525050565b600060208201905061016f600083018461014b565b92915050565b61017e816100e8565b82525050565b60006020820190506101996000830184610175565b92915050565b6000815190506101ae816100f2565b92915050565b6000602082840312156101ca576101c96100e3565b5b60006101d88482850161019f565b9150509291505056fea2646970667358221220a3a849397d571d3d782cdd91156f39592312b69527e5b81a1c01414165a298c964736f6c63430008110033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x217 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x689B57E EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45 SWAP2 SWAP1 PUSH2 0x11E JUMP JUMPDEST PUSH2 0x60 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x57 SWAP2 SWAP1 PUSH2 0x15A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH20 0x0 PUSH4 0xCAE57913 SWAP1 SWAP2 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B SWAP2 SWAP1 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDC SWAP2 SWAP1 PUSH2 0x1B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFB DUP2 PUSH2 0xE8 JUMP JUMPDEST DUP2 EQ PUSH2 0x106 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x118 DUP2 PUSH2 0xF2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x134 JUMPI PUSH2 0x133 PUSH2 0xE3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x142 DUP5 DUP3 DUP6 ADD PUSH2 0x109 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x154 DUP2 PUSH2 0xE8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x16F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x14B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x17E DUP2 PUSH2 0xE8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x199 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x175 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1AE DUP2 PUSH2 0xF2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1CA JUMPI PUSH2 0x1C9 PUSH2 0xE3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D8 DUP5 DUP3 DUP6 ADD PUSH2 0x19F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xA8 0x49 CODECOPY PUSH30 0x571D3D782CDD91156F39592312B69527E5B81A1C01414165A298C964736F PUSH13 0x63430008110033000000000000 ", + "sourceMap": "124:128:2:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@readonlyFunction_65": { + "entryPoint": 96, + "id": 65, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_t_uint256": { + "entryPoint": 265, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256_fromMemory": { + "entryPoint": 415, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 286, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 436, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 331, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack_library": { + "entryPoint": 373, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed": { + "entryPoint": 388, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 346, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 232, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 227, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 242, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:2256:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "47:35:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "57:19:3", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "73:2:3", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "67:5:3" + }, + "nodeType": "YulFunctionCall", + "src": "67:9:3" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "57:6:3" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "40:6:3", + "type": "" + } + ], + "src": "7:75:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "177:28:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "194:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "197:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "187:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "187:12:3" + }, + "nodeType": "YulExpressionStatement", + "src": "187:12:3" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulFunctionDefinition", + "src": "88:117:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "300:28:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "317:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "320:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "310:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "310:12:3" + }, + "nodeType": "YulExpressionStatement", + "src": "310:12:3" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nodeType": "YulFunctionDefinition", + "src": "211:117:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "379:32:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "389:16:3", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "400:5:3" + }, + "variableNames": [ + { + "name": "cleaned", + "nodeType": "YulIdentifier", + "src": "389:7:3" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "361:5:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nodeType": "YulTypedName", + "src": "371:7:3", + "type": "" + } + ], + "src": "334:77:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "460:79:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "517:16:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "526:1:3", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "529:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "519:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "519:12:3" + }, + "nodeType": "YulExpressionStatement", + "src": "519:12:3" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "483:5:3" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "508:5:3" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "490:17:3" + }, + "nodeType": "YulFunctionCall", + "src": "490:24:3" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "480:2:3" + }, + "nodeType": "YulFunctionCall", + "src": "480:35:3" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "473:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "473:43:3" + }, + "nodeType": "YulIf", + "src": "470:63:3" + } + ] + }, + "name": "validator_revert_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "453:5:3", + "type": "" + } + ], + "src": "417:122:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "597:87:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "607:29:3", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "629:6:3" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "616:12:3" + }, + "nodeType": "YulFunctionCall", + "src": "616:20:3" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "607:5:3" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "672:5:3" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "645:26:3" + }, + "nodeType": "YulFunctionCall", + "src": "645:33:3" + }, + "nodeType": "YulExpressionStatement", + "src": "645:33:3" + } + ] + }, + "name": "abi_decode_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "575:6:3", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "583:3:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "591:5:3", + "type": "" + } + ], + "src": "545:139:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "756:263:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "802:83:3", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "804:77:3" + }, + "nodeType": "YulFunctionCall", + "src": "804:79:3" + }, + "nodeType": "YulExpressionStatement", + "src": "804:79:3" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "777:7:3" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "786:9:3" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "773:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "773:23:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "798:2:3", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "769:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "769:32:3" + }, + "nodeType": "YulIf", + "src": "766:119:3" + }, + { + "nodeType": "YulBlock", + "src": "895:117:3", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "910:15:3", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "924:1:3", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "914:6:3", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "939:63:3", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "974:9:3" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "985:6:3" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "970:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "970:22:3" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "994:7:3" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nodeType": "YulIdentifier", + "src": "949:20:3" + }, + "nodeType": "YulFunctionCall", + "src": "949:53:3" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "939:6:3" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "726:9:3", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "737:7:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "749:6:3", + "type": "" + } + ], + "src": "690:329:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1090:53:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1107:3:3" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1130:5:3" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1112:17:3" + }, + "nodeType": "YulFunctionCall", + "src": "1112:24:3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1100:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "1100:37:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1100:37:3" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1078:5:3", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1085:3:3", + "type": "" + } + ], + "src": "1025:118:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1247:124:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1257:26:3", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1269:9:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1280:2:3", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1265:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1265:18:3" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1257:4:3" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1337:6:3" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1350:9:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1361:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1346:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1346:17:3" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nodeType": "YulIdentifier", + "src": "1293:43:3" + }, + "nodeType": "YulFunctionCall", + "src": "1293:71:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1293:71:3" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1219:9:3", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1231:6:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1242:4:3", + "type": "" + } + ], + "src": "1149:222:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1450:53:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "1467:3:3" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1490:5:3" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nodeType": "YulIdentifier", + "src": "1472:17:3" + }, + "nodeType": "YulFunctionCall", + "src": "1472:24:3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "1460:6:3" + }, + "nodeType": "YulFunctionCall", + "src": "1460:37:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1460:37:3" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack_library", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1438:5:3", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "1445:3:3", + "type": "" + } + ], + "src": "1377:126:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1615:132:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1625:26:3", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1637:9:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1648:2:3", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1633:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1633:18:3" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "1625:4:3" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1713:6:3" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1726:9:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1737:1:3", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1722:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1722:17:3" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack_library", + "nodeType": "YulIdentifier", + "src": "1661:51:3" + }, + "nodeType": "YulFunctionCall", + "src": "1661:79:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1661:79:3" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1587:9:3", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1599:6:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "1610:4:3", + "type": "" + } + ], + "src": "1509:238:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1816:80:3", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1826:22:3", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1841:6:3" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1835:5:3" + }, + "nodeType": "YulFunctionCall", + "src": "1835:13:3" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1826:5:3" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1884:5:3" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nodeType": "YulIdentifier", + "src": "1857:26:3" + }, + "nodeType": "YulFunctionCall", + "src": "1857:33:3" + }, + "nodeType": "YulExpressionStatement", + "src": "1857:33:3" + } + ] + }, + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1794:6:3", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "1802:3:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1810:5:3", + "type": "" + } + ], + "src": "1753:143:3" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1979:274:3", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2025:83:3", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nodeType": "YulIdentifier", + "src": "2027:77:3" + }, + "nodeType": "YulFunctionCall", + "src": "2027:79:3" + }, + "nodeType": "YulExpressionStatement", + "src": "2027:79:3" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2000:7:3" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2009:9:3" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1996:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1996:23:3" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2021:2:3", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1992:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "1992:32:3" + }, + "nodeType": "YulIf", + "src": "1989:119:3" + }, + { + "nodeType": "YulBlock", + "src": "2118:128:3", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "2133:15:3", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2147:1:3", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "2137:6:3", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2162:74:3", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2208:9:3" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "2219:6:3" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2204:3:3" + }, + "nodeType": "YulFunctionCall", + "src": "2204:22:3" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2228:7:3" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nodeType": "YulIdentifier", + "src": "2172:31:3" + }, + "nodeType": "YulFunctionCall", + "src": "2172:64:3" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2162:6:3" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1949:9:3", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1960:7:3", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1972:6:3", + "type": "" + } + ], + "src": "1902:351:3" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack_library(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack_library(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n", + "id": 3, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": { + "contracts/BasicLibrary.sol": { + "BasicLibrary": [ + { + "length": 20, + "start": 101 + } + ] + } + }, + "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80630689b57e14610030575b600080fd5b61004a6004803603810190610045919061011e565b610060565b604051610057919061015a565b60405180910390f35b60008173__$e24d6032859d6fb940f423f951556f4c34$__63cae5791390916040518263ffffffff1660e01b815260040161009b9190610184565b602060405180830381865af41580156100b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100dc91906101b4565b9050919050565b600080fd5b6000819050919050565b6100fb816100e8565b811461010657600080fd5b50565b600081359050610118816100f2565b92915050565b600060208284031215610134576101336100e3565b5b600061014284828501610109565b91505092915050565b610154816100e8565b82525050565b600060208201905061016f600083018461014b565b92915050565b61017e816100e8565b82525050565b60006020820190506101996000830184610175565b92915050565b6000815190506101ae816100f2565b92915050565b6000602082840312156101ca576101c96100e3565b5b60006101d88482850161019f565b9150509291505056fea2646970667358221220a3a849397d571d3d782cdd91156f39592312b69527e5b81a1c01414165a298c964736f6c63430008110033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x689B57E EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45 SWAP2 SWAP1 PUSH2 0x11E JUMP JUMPDEST PUSH2 0x60 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x57 SWAP2 SWAP1 PUSH2 0x15A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH20 0x0 PUSH4 0xCAE57913 SWAP1 SWAP2 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B SWAP2 SWAP1 PUSH2 0x184 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDC SWAP2 SWAP1 PUSH2 0x1B4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xFB DUP2 PUSH2 0xE8 JUMP JUMPDEST DUP2 EQ PUSH2 0x106 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x118 DUP2 PUSH2 0xF2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x134 JUMPI PUSH2 0x133 PUSH2 0xE3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x142 DUP5 DUP3 DUP6 ADD PUSH2 0x109 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x154 DUP2 PUSH2 0xE8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x16F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x14B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x17E DUP2 PUSH2 0xE8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x199 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x175 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1AE DUP2 PUSH2 0xF2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1CA JUMPI PUSH2 0x1C9 PUSH2 0xE3 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D8 DUP5 DUP3 DUP6 ADD PUSH2 0x19F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xA8 0x49 CODECOPY PUSH30 0x571D3D782CDD91156F39592312B69527E5B81A1C01414165A298C964736F PUSH13 0x63430008110033000000000000 ", + "sourceMap": "124:128:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;157:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;214:4;233:3;:10;;;;:12;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;226:19;;157:93;;;:::o;88:117:3:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:222::-;1242:4;1280:2;1269:9;1265:18;1257:26;;1293:71;1361:1;1350:9;1346:17;1337:6;1293:71;:::i;:::-;1149:222;;;;:::o;1377:126::-;1472:24;1490:5;1472:24;:::i;:::-;1467:3;1460:37;1377:126;;:::o;1509:238::-;1610:4;1648:2;1637:9;1633:18;1625:26;;1661:79;1737:1;1726:9;1722:17;1713:6;1661:79;:::i;:::-;1509:238;;;;:::o;1753:143::-;1810:5;1841:6;1835:13;1826:22;;1857:33;1884:5;1857:33;:::i;:::-;1753:143;;;;:::o;1902:351::-;1972:6;2021:2;2009:9;2000:7;1996:23;1992:32;1989:119;;;2027:79;;:::i;:::-;1989:119;2147:1;2172:64;2228:7;2219:6;2208:9;2204:22;2172:64;:::i;:::-;2162:74;;2118:128;1902:351;;;;:::o" + }, + "methodIdentifiers": { + "readonlyFunction(uint256)": "0689b57e" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"}],\"name\":\"readonlyFunction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ContractWithLibrary.sol\":\"ContractWithLibrary\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/BasicLibrary.sol\":{\"keccak256\":\"0xa72a9b8f7d1ae9be8365c2cce358b5cf76781bf54d7c6666af19b9aa9bef4320\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7bb28a90a7872497ada155bd4c3d280fd7c591a3679e875254ef52e8df99a2c9\",\"dweb:/ipfs/QmeJHNu8zCaM2aLcghHiJSN67tH8Q8Qpfr9z3yVBogMHWe\"]},\"contracts/ContractWithLibrary.sol\":{\"keccak256\":\"0x8ce80dd77898f9cdb269ac1d3273d6f648c0257494a35bcf6a7dc6dd9f9736ba\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8bae9c4f54c946144c6de277f07f91b8c915ac9344277507ac3172f2929a1f49\",\"dweb:/ipfs/QmecMsGPWnDtmQMFX1f4wQn8mhuyK3u3XnaCSFja6nXaDT\"]}},\"version\":1}" + } + } + } + } +} \ No newline at end of file diff --git a/packages/core/test/mocks/listTransactions/success/deployed_addresses.json b/packages/core/test/mocks/listTransactions/success/deployed_addresses.json new file mode 100644 index 000000000..c2ac2ad37 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/deployed_addresses.json @@ -0,0 +1,8 @@ +{ + "CompleteModule#BasicContract": "0x74e720c9B362ae3A65fF356ad62866511486BBBc", + "CompleteModule#BasicLibrary": "0x1c947344BA932fC7f3D622600dA0199520A67EFd", + "CompleteModule#BasicLibrary2": "0xBdAce15b3211019E272418B8014971c1cefbC8f0", + "CompleteModule#BasicContract2": "0x74e720c9B362ae3A65fF356ad62866511486BBBc", + "CompleteModule#ContractWithLibrary": "0xD369D9aB22D85C2A12bEabc0B581a419789E3755", + "CompleteModule#ContractWithLibrary2": "0xD369D9aB22D85C2A12bEabc0B581a419789E3755" +} diff --git a/packages/core/test/mocks/listTransactions/success/journal.jsonl b/packages/core/test/mocks/listTransactions/success/journal.jsonl new file mode 100644 index 000000000..f5dd3cc74 --- /dev/null +++ b/packages/core/test/mocks/listTransactions/success/journal.jsonl @@ -0,0 +1,40 @@ + +{"chainId":31337,"type":"DEPLOYMENT_INITIALIZE"} +{"artifactId":"CompleteModule#BasicContract","constructorArgs":["0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"contractName":"BasicContract","dependencies":[],"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","futureId":"CompleteModule#BasicContract","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"CompleteModule#BasicContract","networkInteraction":{"data":"0x26307668729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003b6608060405234801561001057600080fd5b50604051610396380380610396833981810160405281019061003291906100dc565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610109565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100a98261007e565b9050919050565b6100b98161009e565b81146100c457600080fd5b50565b6000815190506100d6816100b0565b92915050565b6000602082840312156100f2576100f1610079565b5b6000610100848285016100c7565b91505092915050565b61027e806101186000396000f3fe6080604052600436106100435760003560e01c806353a57b4a1461004f578063673b6d911461007a57806367e404ce1461009657806392b4bb8a146100c15761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100646100ea565b6040516100719190610173565b60405180910390f35b610094600480360381019061008f91906101bf565b6100f0565b005b3480156100a257600080fd5b506100ab6100fa565b6040516100b8919061022d565b60405180910390f35b3480156100cd57600080fd5b506100e860048036038101906100e391906101bf565b610120565b005b60005481565b8060008190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a28160405161014f9190610173565b60405180910390a150565b6000819050919050565b61016d8161015a565b82525050565b60006020820190506101886000830184610164565b92915050565b600080fd5b61019c8161015a565b81146101a757600080fd5b50565b6000813590506101b981610193565b92915050565b6000602082840312156101d5576101d461018e565b5b60006101e3848285016101aa565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610217826101ec565b9050919050565b6102278161020c565b82525050565b6000602082019050610242600083018461021e565b9291505056fea264697066735822122048e0c12634eed4d08b9eb753088008b374f8c695ef56c03075052e85d43f691f64736f6c63430008110033000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"CompleteModule#BasicContract","networkInteractionId":1,"nonce":0,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"2750000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0x65c7c0850d014fe44aced2249b3b3523c3a29e5e40b6388b6d84b28c0345b9e1"},"type":"TRANSACTION_SEND"} +{"futureId":"CompleteModule#BasicContract","hash":"0x65c7c0850d014fe44aced2249b3b3523c3a29e5e40b6388b6d84b28c0345b9e1","networkInteractionId":1,"receipt":{"blockHash":"0x5f764ccb78af004b771dde189d72a9d349fd2aa84b560ac90931fe08c89dcfbb","blockNumber":2,"logs":[{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":0,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x00000000000000000000000074e720c9b362ae3a65ff356ad62866511486bbbc","0xdc43bef9d0efaa64b8649ff96652ff258384fa41f6451a6f05f6921f08d6a37b"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"CompleteModule#BasicContract","result":{"address":"0x74e720c9B362ae3A65fF356ad62866511486BBBc","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"artifactId":"CompleteModule#BasicLibrary","constructorArgs":[],"contractName":"BasicLibrary","dependencies":[],"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","futureId":"CompleteModule#BasicLibrary","futureType":"NAMED_ARTIFACT_LIBRARY_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"CompleteModule#BasicLibrary","networkInteraction":{"data":"0x26307668729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001fe6101ab610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cae579131461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006002826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b925082820190508082111561016f5761016e610112565b5b9291505056fea264697066735822122082ed7a81ce855fb874f96d949594ec96c01bee23c154e3d112e6d8b6a31f1cc064736f6c634300081100330000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"CompleteModule#BasicLibrary","networkInteractionId":1,"nonce":1,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"2568888156"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0xee331a69f69646d8b551a1ee6514760763cb7b1c332dadb2f0d05c730e554a28"},"type":"TRANSACTION_SEND"} +{"futureId":"CompleteModule#BasicLibrary","hash":"0xee331a69f69646d8b551a1ee6514760763cb7b1c332dadb2f0d05c730e554a28","networkInteractionId":1,"receipt":{"blockHash":"0x305a19a05a5d21db008de80a62e910f1bb8801271c5842998b3fcc30bfdb4d9a","blockNumber":3,"logs":[{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":0,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x0000000000000000000000001c947344ba932fc7f3d622600da0199520a67efd","0xdc43bef9d0efaa64b8649ff96652ff258384fa41f6451a6f05f6921f08d6a37b"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"CompleteModule#BasicLibrary","result":{"address":"0x1c947344BA932fC7f3D622600dA0199520A67EFd","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"artifactId":"CompleteModule#BasicLibrary2","constructorArgs":[],"contractName":"BasicLibrary","dependencies":[],"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","futureId":"CompleteModule#BasicLibrary2","futureType":"LIBRARY_DEPLOYMENT","libraries":{},"strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"CompleteModule#BasicLibrary2","networkInteraction":{"data":"0x26307668729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001fe6101ab610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cae579131461003a575b600080fd5b610054600480360381019061004f91906100bb565b61006a565b60405161006191906100f7565b60405180910390f35b60006002826100799190610141565b9050919050565b600080fd5b6000819050919050565b61009881610085565b81146100a357600080fd5b50565b6000813590506100b58161008f565b92915050565b6000602082840312156100d1576100d0610080565b5b60006100df848285016100a6565b91505092915050565b6100f181610085565b82525050565b600060208201905061010c60008301846100e8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061014c82610085565b915061015783610085565b925082820190508082111561016f5761016e610112565b5b9291505056fea26469706673582212206a544cfc8f986be3fb0a207e85759e54cc759f3023d890241105de48c3f5db1d64736f6c634300081100330000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"CompleteModule#BasicLibrary2","networkInteractionId":1,"nonce":2,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"2375686798"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0x6f06b87969f7543887e7cda4b0cf82426b6712a57c915593adf2dd6168f9f283"},"type":"TRANSACTION_SEND"} +{"futureId":"CompleteModule#BasicLibrary2","hash":"0x6f06b87969f7543887e7cda4b0cf82426b6712a57c915593adf2dd6168f9f283","networkInteractionId":1,"receipt":{"blockHash":"0x0bbf4721ec67591c0929dad6f9f769bb8b6ed3cbfc4393a466c86ed9a8a51bc3","blockNumber":4,"logs":[{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":0,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x000000000000000000000000bdace15b3211019e272418b8014971c1cefbc8f0","0xdc43bef9d0efaa64b8649ff96652ff258384fa41f6451a6f05f6921f08d6a37b"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"CompleteModule#BasicLibrary2","result":{"address":"0xBdAce15b3211019E272418B8014971c1cefbC8f0","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"args":[40],"artifactId":"CompleteModule#BasicContract","contractAddress":"0x74e720c9B362ae3A65fF356ad62866511486BBBc","dependencies":["CompleteModule#BasicContract"],"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","functionName":"basicFunction","futureId":"CompleteModule#BasicContract.basicFunction","strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"CompleteModule#BasicContract.basicFunction","networkInteraction":{"data":"0x92b4bb8a0000000000000000000000000000000000000000000000000000000000000028","id":1,"to":"0x74e720c9B362ae3A65fF356ad62866511486BBBc","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"CompleteModule#BasicContract.basicFunction","networkInteractionId":1,"nonce":3,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"2205446750"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0xb7b49d16087ab6351e26b2358ae211e5dac335441f323a28c6c26f0bc0c3a0a3"},"type":"TRANSACTION_SEND"} +{"futureId":"CompleteModule#BasicContract.basicFunction","hash":"0xb7b49d16087ab6351e26b2358ae211e5dac335441f323a28c6c26f0bc0c3a0a3","networkInteractionId":1,"receipt":{"blockHash":"0xb35970ed89204452f0bb732ec1d177e4b540e1d63f40fcd13251761d5e5f7763","blockNumber":5,"logs":[{"address":"0x74e720c9B362ae3A65fF356ad62866511486BBBc","data":"0x0000000000000000000000000000000000000000000000000000000000000028","logIndex":0,"topics":["0xb532177e7c269fcc7b98812c0fc27f2dd1970ad68f68cea8c18f0191848377a2"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"CompleteModule#BasicContract.basicFunction","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} +{"artifactId":"CompleteModule#BasicContract2","contractAddress":"0x74e720c9B362ae3A65fF356ad62866511486BBBc","contractName":"BasicContract","dependencies":["CompleteModule#BasicContract"],"futureId":"CompleteModule#BasicContract2","futureType":"NAMED_ARTIFACT_CONTRACT_AT","strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"artifactId":"CompleteModule#ContractWithLibrary","constructorArgs":[],"contractName":"ContractWithLibrary","dependencies":["CompleteModule#BasicLibrary"],"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","futureId":"CompleteModule#ContractWithLibrary","futureType":"CONTRACT_DEPLOYMENT","libraries":{"BasicLibrary":"0x1c947344BA932fC7f3D622600dA0199520A67EFd"},"strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"CompleteModule#ContractWithLibrary","networkInteraction":{"data":"0x26307668729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc56500000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000237608060405234801561001057600080fd5b50610217806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630689b57e14610030575b600080fd5b61004a6004803603810190610045919061011e565b610060565b604051610057919061015a565b60405180910390f35b600081731c947344ba932fc7f3d622600da0199520a67efd63cae5791390916040518263ffffffff1660e01b815260040161009b9190610184565b602060405180830381865af41580156100b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100dc91906101b4565b9050919050565b600080fd5b6000819050919050565b6100fb816100e8565b811461010657600080fd5b50565b600081359050610118816100f2565b92915050565b600060208284031215610134576101336100e3565b5b600061014284828501610109565b91505092915050565b610154816100e8565b82525050565b600060208201905061016f600083018461014b565b92915050565b61017e816100e8565b82525050565b60006020820190506101996000830184610175565b92915050565b6000815190506101ae816100f2565b92915050565b6000602082840312156101ca576101c96100e3565b5b60006101d88482850161019f565b9150509291505056fea2646970667358221220c633fa737297b0a691bd22eff28934afa87e280f9bf9fd4a81f88e8748974b5564736f6c63430008110033000000000000000000","id":1,"to":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"CompleteModule#ContractWithLibrary","networkInteractionId":1,"nonce":4,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"2056273760"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0x7542503401d0ad31f0c8de576c8d524535538c25050bd20f77562ecab25c4c8d"},"type":"TRANSACTION_SEND"} +{"futureId":"CompleteModule#ContractWithLibrary","hash":"0x7542503401d0ad31f0c8de576c8d524535538c25050bd20f77562ecab25c4c8d","networkInteractionId":1,"receipt":{"blockHash":"0x800e5ccf449539b1e9eda058906a07299e50d436c72eea58cb472bc9dc42fb1d","blockNumber":6,"logs":[{"address":"0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed","data":"0x","logIndex":0,"topics":["0xb8fda7e00c6b06a2b54e58521bc5894fee35f1090e5a3bb6390bfe2b98b497f7","0x000000000000000000000000d369d9ab22d85c2a12beabc0b581a419789e3755","0xdc43bef9d0efaa64b8649ff96652ff258384fa41f6451a6f05f6921f08d6a37b"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"CompleteModule#ContractWithLibrary","result":{"address":"0xD369D9aB22D85C2A12bEabc0B581a419789E3755","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"artifactId":"CompleteModule#BasicContract","dependencies":["CompleteModule#BasicContract.basicFunction"],"emitterAddress":"0x74e720c9B362ae3A65fF356ad62866511486BBBc","eventIndex":0,"eventName":"BasicEvent","futureId":"CompleteModule#BasicContract.BasicEvent.eventArg.0","nameOrIndex":"eventArg","result":{"_kind":"bigint","value":"40"},"strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"txToReadFrom":"0xb7b49d16087ab6351e26b2358ae211e5dac335441f323a28c6c26f0bc0c3a0a3","type":"READ_EVENT_ARGUMENT_EXECUTION_STATE_INITIALIZE"} +{"artifactId":"CompleteModule#ContractWithLibrary2","contractAddress":"0xD369D9aB22D85C2A12bEabc0B581a419789E3755","contractName":"ContractWithLibrary","dependencies":["CompleteModule#ContractWithLibrary"],"futureId":"CompleteModule#ContractWithLibrary2","futureType":"CONTRACT_AT","strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"args":[{"_kind":"bigint","value":"42"}],"artifactId":"CompleteModule#BasicContract2","dependencies":["CompleteModule#BasicContract2"],"functionName":"otherFunction","futureId":"CompleteModule#encodeFunctionCall(CompleteModule#BasicContract2.otherFunction)","result":"0x673b6d91000000000000000000000000000000000000000000000000000000000000002a","strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"type":"ENCODE_FUNCTION_CALL_EXECUTION_STATE_INITIALIZE"} +{"args":[{"_kind":"bigint","value":"40"}],"artifactId":"CompleteModule#ContractWithLibrary","contractAddress":"0xD369D9aB22D85C2A12bEabc0B581a419789E3755","dependencies":["CompleteModule#ContractWithLibrary","CompleteModule#BasicContract.BasicEvent.eventArg.0"],"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","functionName":"readonlyFunction","futureId":"CompleteModule#ContractWithLibrary.readonlyFunction","nameOrIndex":0,"strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"type":"STATIC_CALL_EXECUTION_STATE_INITIALIZE"} +{"futureId":"CompleteModule#ContractWithLibrary.readonlyFunction","networkInteraction":{"data":"0x0689b57e0000000000000000000000000000000000000000000000000000000000000028","from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","id":1,"to":"0xD369D9aB22D85C2A12bEabc0B581a419789E3755","type":"STATIC_CALL","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"CompleteModule#ContractWithLibrary.readonlyFunction","networkInteractionId":1,"result":{"customErrorReported":false,"returnData":"0x000000000000000000000000000000000000000000000000000000000000002a","success":true},"type":"STATIC_CALL_COMPLETE"} +{"futureId":"CompleteModule#ContractWithLibrary.readonlyFunction","result":{"type":"SUCCESS","value":{"_kind":"bigint","value":"42"}},"type":"STATIC_CALL_EXECUTION_STATE_COMPLETE"} +{"data":"0x673b6d91000000000000000000000000000000000000000000000000000000000000002a","dependencies":["CompleteModule#BasicContract2","CompleteModule#encodeFunctionCall(CompleteModule#BasicContract2.otherFunction)"],"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","futureId":"CompleteModule#test_send","strategy":"create2","strategyConfig":{"salt":"0x729d584e6db2fae1c6f27fee4536b75ef94a91ddae53a9411159b36c1dafc565"},"to":"0x74e720c9B362ae3A65fF356ad62866511486BBBc","type":"SEND_DATA_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"123"}} +{"futureId":"CompleteModule#test_send","networkInteraction":{"data":"0x673b6d91000000000000000000000000000000000000000000000000000000000000002a","id":1,"to":"0x74e720c9B362ae3A65fF356ad62866511486BBBc","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"123"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"CompleteModule#test_send","networkInteractionId":1,"nonce":5,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"1924440630"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000000"}},"hash":"0x2870c7d9f84122caba3739be0dc2246343a87d1b216b57002654b3bd413fe8e2"},"type":"TRANSACTION_SEND"} +{"futureId":"CompleteModule#test_send","hash":"0x2870c7d9f84122caba3739be0dc2246343a87d1b216b57002654b3bd413fe8e2","networkInteractionId":1,"receipt":{"blockHash":"0x031962492abb9b013b57c06654b935fa672301daa7500b4ff332f1bfe8bfddfe","blockNumber":7,"logs":[],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"CompleteModule#test_send","result":{"type":"SUCCESS"},"type":"SEND_DATA_EXECUTION_STATE_COMPLETE"} \ No newline at end of file diff --git a/packages/hardhat-plugin/src/index.ts b/packages/hardhat-plugin/src/index.ts index c1b0593bb..478e3e235 100644 --- a/packages/hardhat-plugin/src/index.ts +++ b/packages/hardhat-plugin/src/index.ts @@ -3,6 +3,7 @@ import { Etherscan } from "@nomicfoundation/hardhat-verify/etherscan"; import { DeploymentParameters, IgnitionError, + ListTransactionsResult, StatusResult, } from "@nomicfoundation/ignition-core"; import debug from "debug"; @@ -668,6 +669,50 @@ ignitionScope } ); +ignitionScope + .task("transactions") + .addPositionalParam( + "deploymentId", + "The id of the deployment to show transactions for" + ) + .setDescription("Show all transactions for a given deployment") + .setAction(async ({ deploymentId }: { deploymentId: string }, hre) => { + const { listTransactions } = await import("@nomicfoundation/ignition-core"); + + const { HardhatArtifactResolver } = await import( + "./hardhat-artifact-resolver" + ); + const { calculateListTransactionsDisplay } = await import( + "./ui/helpers/calculate-list-transactions-display" + ); + + const deploymentDir = path.join( + hre.config.paths.ignition, + "deployments", + deploymentId + ); + + const artifactResolver = new HardhatArtifactResolver(hre); + + let listTransactionsResult: ListTransactionsResult; + try { + listTransactionsResult = await listTransactions( + deploymentDir, + artifactResolver + ); + } catch (e) { + if (e instanceof IgnitionError && shouldBeHardhatPluginError(e)) { + throw new NomicLabsHardhatPluginError("hardhat-ignition", e.message, e); + } + + throw e; + } + + console.log( + calculateListTransactionsDisplay(deploymentId, listTransactionsResult) + ); + }); + async function resolveParametersFromModuleName( moduleName: string, ignitionPath: string diff --git a/packages/hardhat-plugin/src/ui/helpers/calculate-list-transactions-display.ts b/packages/hardhat-plugin/src/ui/helpers/calculate-list-transactions-display.ts new file mode 100644 index 000000000..abf583504 --- /dev/null +++ b/packages/hardhat-plugin/src/ui/helpers/calculate-list-transactions-display.ts @@ -0,0 +1,57 @@ +import { ListTransactionsResult } from "@nomicfoundation/ignition-core"; +import { NomicLabsHardhatPluginError } from "hardhat/plugins"; + +export function calculateListTransactionsDisplay( + deploymentId: string, + listTransactionsResult: ListTransactionsResult +): string { + let text = `Logging transactions for deployment ${deploymentId}\n\n`; + + for (const [index, transaction] of listTransactionsResult.entries()) { + text += `Transaction ${index + 1}:\n`; + text += ` - Type: ${transactionTypeToDisplayType(transaction.type)}\n`; + text += ` - Status: ${transaction.status}\n`; + text += ` - TxHash: ${transaction.txHash}\n`; + text += ` - From: ${transaction.from}\n`; + + if (transaction.to !== undefined) { + text += ` - To: ${transaction.to}\n`; + } + + if (transaction.name !== undefined) { + text += ` - Name: ${transaction.name}\n`; + } + + if (transaction.address !== undefined) { + text += ` - Address: ${transaction.address}\n`; + } + + if (transaction.params !== undefined) { + text += ` - Params: ${JSON.stringify(transaction.params)}\n`; + } + + if (transaction.value !== undefined) { + text += ` - Value: ${transaction.value}\n`; + } + + text += "\n"; + } + + return text; +} + +function transactionTypeToDisplayType(type: string): string { + switch (type) { + case "DEPLOYMENT_EXECUTION_STATE": + return "Contract Deployment"; + case "CALL_EXECUTION_STATE": + return "Function Call"; + case "SEND_DATA_EXECUTION_STATE": + return "Generic Transaction"; + default: + throw new NomicLabsHardhatPluginError( + "hardhat-ignition", + `Unknown transaction type: ${type}` + ); + } +}