├── bun.lockb ├── ts ├── index.ts ├── abis │ ├── index.ts │ └── Witness.ts ├── build.mjs ├── genAbis.ts ├── utils.ts ├── deployments.ts └── genDocs.ts ├── remappings.txt ├── .prettierrc.yml ├── .vscode └── settings.json ├── .prettierignore ├── .gitignore ├── .gas-snapshot ├── .gitpod.yml ├── .editorconfig ├── .solhint.json ├── tsconfig.json ├── script ├── Deploy.s.sol └── Base.s.sol ├── .env.example ├── foundry.toml ├── src ├── WitnessConsumer.sol └── interfaces │ ├── IWitnessConsumer.sol │ └── IWitness.sol ├── test └── MockWitnessConsumer.sol ├── package.json ├── docs ├── interfaces │ ├── IWitnessConsumer.sol.md │ └── IWitness.sol.md ├── WitnessConsumer.sol.md ├── Witness.sol.md └── WitnessUtils.sol.md ├── examples └── ERC721P │ ├── IERC721P.sol │ └── ERC721P.sol ├── .github └── workflows │ └── ci.yml ├── LICENSE.md └── broadcast └── Deploy.s.sol ├── 5 ├── run-1695702573.json ├── run-1695702793.json ├── run-1695704696.json ├── run-1695709315.json ├── run-1695720511.json ├── run-1696377332.json ├── run-1695694078.json ├── run-1694729441.json └── run-1694729666.json ├── 84531 ├── run-1700622296.json ├── run-1700622350.json ├── run-1700622362.json └── run-1700622385.json ├── 534351 └── run-1703814775.json └── 11155111 └── dry-run ├── run-latest.json └── run-1698882430.json /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WitnessCo/contracts-core/HEAD/bun.lockb -------------------------------------------------------------------------------- /ts/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./abis"; 2 | export * from "./deployments"; 3 | export * from "./utils"; 4 | -------------------------------------------------------------------------------- /ts/abis/index.ts: -------------------------------------------------------------------------------- 1 | import { abi as Witness } from "./Witness"; 2 | 3 | export const abis = { Witness } as const; 4 | -------------------------------------------------------------------------------- /remappings.txt: -------------------------------------------------------------------------------- 1 | solady/src/=node_modules/solady/src/ 2 | @prb/test/=node_modules/@prb/test/ 3 | forge-std/=node_modules/forge-std/ 4 | -------------------------------------------------------------------------------- /.prettierrc.yml: -------------------------------------------------------------------------------- 1 | bracketSpacing: true 2 | printWidth: 120 3 | proseWrap: "always" 4 | singleQuote: false 5 | tabWidth: 2 6 | trailingComma: "all" 7 | useTabs: false 8 | -------------------------------------------------------------------------------- /ts/build.mjs: -------------------------------------------------------------------------------- 1 | import dts from "bun-plugin-dts"; 2 | 3 | await Bun.build({ 4 | entrypoints: ["./ts/index.ts"], 5 | outdir: "./dist", 6 | minify: true, 7 | plugins: [dts()], 8 | }); 9 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "[solidity]": { 3 | "editor.defaultFormatter": "NomicFoundation.hardhat-solidity" 4 | }, 5 | "[toml]": { 6 | "editor.defaultFormatter": "tamasfe.even-better-toml" 7 | }, 8 | "solidity.formatter": "forge" 9 | } 10 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # directories 2 | broadcast 3 | cache 4 | coverage 5 | node_modules 6 | out 7 | dist 8 | 9 | # files 10 | *.env 11 | *.log 12 | .DS_Store 13 | .pnp.* 14 | bun.lockb 15 | lcov.info 16 | package.json 17 | package-lock.json 18 | pnpm-lock.yaml 19 | yarn.lock 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # directories 2 | cache 3 | coverage 4 | node_modules 5 | out 6 | dist 7 | docsTemp 8 | 9 | # files 10 | *.env 11 | *.log 12 | .DS_Store 13 | .pnp.* 14 | lcov.info 15 | package-lock.json 16 | pnpm-lock.yaml 17 | yarn.lock 18 | 19 | # broadcasts 20 | broadcast/*/31337/ 21 | -------------------------------------------------------------------------------- /.gas-snapshot: -------------------------------------------------------------------------------- 1 | DeployTest:testRunCorrectness() (gas: 3133152) 2 | WitnessTest:testEmptyToSizeOne() (gas: 131390) 3 | WitnessTest:testEmptyToSizeTwo() (gas: 139383) 4 | WitnessTest:testFuzzedTreeUpdate(uint256,uint256,uint256) (runs: 1000, μ: 4033376, ~: 4055140) 5 | WitnessTest:testManuallysafeVerifyProofsForSizeTen() (gas: 805120) -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: "gitpod/workspace-bun" 2 | 3 | tasks: 4 | - name: "Install dependencies" 5 | before: | 6 | curl -L https://foundry.paradigm.xyz | bash 7 | source ~/.bashrc 8 | foundryup 9 | init: "bun install" 10 | 11 | vscode: 12 | extensions: 13 | - "esbenp.prettier-vscode" 14 | - "NomicFoundation.hardhat-solidity" 15 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # All files 7 | [*] 8 | charset = utf-8 9 | end_of_line = lf 10 | indent_size = 2 11 | indent_style = space 12 | insert_final_newline = true 13 | trim_trailing_whitespace = true 14 | 15 | [*.sol] 16 | indent_size = 4 17 | 18 | [*.tree] 19 | indent_size = 1 20 | -------------------------------------------------------------------------------- /.solhint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "solhint:recommended", 3 | "rules": { 4 | "code-complexity": ["error", 8], 5 | "compiler-version": ["error", ">=0.8.0"], 6 | "func-name-mixedcase": "off", 7 | "func-visibility": ["error", { "ignoreConstructors": true }], 8 | "max-line-length": ["error", 120], 9 | "named-parameters-mapping": "warn", 10 | "no-console": "off", 11 | "not-rely-on-time": "off", 12 | "one-contract-per-file": "off" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "compilerOptions": { 4 | "target": "ESNext", 5 | "lib": ["dom", "dom.iterable", "esnext"], 6 | "allowJs": true, 7 | "checkJs": true, 8 | "skipLibCheck": true, 9 | "strict": true, 10 | "forceConsistentCasingInFileNames": true, 11 | "noEmit": true, 12 | "esModuleInterop": true, 13 | "module": "esnext", 14 | "moduleResolution": "node", 15 | "resolveJsonModule": true, 16 | "isolatedModules": true, 17 | "jsx": "preserve", 18 | "incremental": true 19 | }, 20 | "include": ["ts", "broadcast", "out"], 21 | "exclude": ["node_modules"] 22 | } 23 | -------------------------------------------------------------------------------- /script/Deploy.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity 0.8.18; 3 | 4 | import { Witness } from "src/Witness.sol"; 5 | import { BaseScript } from "./Base.s.sol"; 6 | 7 | /// @dev See the Solidity Scripting tutorial: https://book.getfoundry.sh/tutorials/solidity-scripting 8 | contract Deploy is BaseScript { 9 | function run() public returns (Witness witness) { 10 | uint256 deployerKey = vm.envUint("DEPLOYMENT_PRIVATE_KEY"); 11 | bytes32 salt = vm.envBytes32("DEPLOYMENT_SALT"); 12 | address owner = vm.envAddress("OWNER_ADDRESS"); 13 | vm.broadcast(deployerKey); 14 | witness = new Witness{ salt: salt }(owner); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | MNEMONIC="test test test test test test test test test test test junk" 2 | FOUNDRY_PROFILE="default" 3 | 4 | # !NOTE: Provided values are unsafe in a production env, do NOT use. 5 | OWNER_ADDRESS="0xF554f6e21094aDB06680bD49aAB99b622c68CEc0" 6 | DEPLOYMENT_PRIVATE_KEY="0xd3880916cb069854e7e139772fa9ac87a473df12028952ca906415032876359b" 7 | # Calculate your own salt using `bun run initcodehash` with the OWNER_ADDRESS variable above set. 8 | DEPLOYMENT_SALT="0x6a529534ed37e3d7f3e5109010c7d75b9710d0b998c405e3c92739ff5232a483" 9 | # Verifier settings 10 | ETHERSCAN_API_KEY=1VJ4C4K2HJ9CZC4ASDF123XYZDRAQIAOPZMHGDJ 11 | VERIFIER=blockscout 12 | VERIFIER_URL=https://base-sepolia.blockscout.com/api 13 | -------------------------------------------------------------------------------- /foundry.toml: -------------------------------------------------------------------------------- 1 | # Full reference https://github.com/foundry-rs/foundry/tree/master/crates/config 2 | 3 | [profile.default] 4 | auto_detect_solc = false 5 | block_timestamp = 1_680_220_800 # March 31, 2023 at 00:00 GMT 6 | bytecode_hash = "none" 7 | fuzz = { runs = 1_000 } 8 | gas_reports = ["*"] 9 | optimizer = true 10 | optimizer_runs = 10_000 11 | out = "out" 12 | script = "script" 13 | solc = "0.8.18" 14 | src = "src" 15 | test = "test" 16 | via_ir = true 17 | 18 | [profile.ci] 19 | fuzz = { runs = 10_000 } 20 | verbosity = 4 21 | 22 | [fmt] 23 | bracket_spacing = true 24 | int_types = "long" 25 | line_length = 120 26 | multiline_func_header = "all" 27 | number_underscore = "thousands" 28 | quote_style = "double" 29 | tab_width = 4 30 | wrap_comments = true 31 | 32 | [doc] 33 | repository = "https://github.com/WitnessCo/contracts-core" 34 | -------------------------------------------------------------------------------- /ts/genAbis.ts: -------------------------------------------------------------------------------- 1 | import fs from "node:fs/promises"; 2 | import { desiredContracts } from "./utils"; 3 | 4 | const processContract = async (contractName: string) => { 5 | const inputPath = `out/${contractName}.sol/${contractName}.json`; 6 | const outputPath = `ts/abis/${contractName}.ts`; 7 | try { 8 | // Read the JSON file 9 | const data = await fs.readFile(inputPath, "utf8"); 10 | const { abi } = JSON.parse(data); 11 | // Generate the TypeScript content 12 | const tsContent = `export const abi = ${JSON.stringify(abi)} as const;\n`; 13 | // Write the TypeScript file 14 | await fs.writeFile(outputPath, tsContent, "utf8"); 15 | console.log(`Successfully wrote to ${outputPath}`); 16 | } catch (err) { 17 | console.error(`Failed to process file: ${contractName}`); 18 | } 19 | }; 20 | 21 | await Promise.all(desiredContracts.map(processContract)); 22 | -------------------------------------------------------------------------------- /ts/utils.ts: -------------------------------------------------------------------------------- 1 | import { baseGoerli, baseSepolia, goerli, optimismSepolia, scrollSepolia, sepolia } from "viem/chains"; 2 | import { z, type ZodEffects, type ZodNumber } from "zod"; 3 | 4 | export const supportedChains = [baseSepolia, sepolia, optimismSepolia, scrollSepolia, goerli, baseGoerli] as const; 5 | export type SupportedChainType = (typeof supportedChains)[number]; 6 | export const supportedChainIds = supportedChains.map((c) => c.id); 7 | export type SupportedChainIdType = (typeof supportedChainIds)[number]; 8 | export const defaultChainId = supportedChainIds[0]; 9 | export const numberToSupportedChainIdSchema = z.number().refine( 10 | (val): val is SupportedChainIdType => supportedChainIds.some((id) => id === val), 11 | (val) => ({ message: `${val} is not a supported chain id` }), 12 | ); 13 | export const supportedChainIdToNumberSchema = z.preprocess((val, ctx) => { 14 | if (typeof val === "number") { 15 | return val; 16 | } 17 | ctx.addIssue({ 18 | code: z.ZodIssueCode.custom, 19 | message: `${val} is not a valid chain id`, 20 | }); 21 | return z.NEVER; 22 | }, z.number()) as ZodEffects; 23 | 24 | export const getChainFromChainId = (chainId: number) => { 25 | const res = supportedChains.find((c) => c.id === chainId); 26 | if (!res) throw new Error(`Unsupported chain: ${chainId}`); 27 | return res; 28 | }; 29 | 30 | export const desiredContracts = ["Witness"] as const; 31 | -------------------------------------------------------------------------------- /src/WitnessConsumer.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity ^0.8.0; 3 | 4 | import { IWitness, Proof } from "./interfaces/IWitness.sol"; 5 | import { IWitnessConsumer } from "./interfaces/IWitnessConsumer.sol"; 6 | 7 | /// @title WitnessConsumer 8 | /// @author sina.eth 9 | /// @custom:coauthor runtheblocks.eth 10 | /// @notice Utility mixin for contracts that want to consume provenance. 11 | /// @dev See IWitnessConsumer.sol for more information. 12 | abstract contract WitnessConsumer is IWitnessConsumer { 13 | /*////////////////////////////////////////////////////////////// 14 | READ METHODS 15 | //////////////////////////////////////////////////////////////*/ 16 | 17 | /// @notice The Witness contract that this contract uses to verify provenance. 18 | /// @inheritdoc IWitnessConsumer 19 | function WITNESS() public view virtual returns (IWitness); 20 | 21 | /// @inheritdoc IWitnessConsumer 22 | function getProvenanceHash(bytes calldata data) external view virtual returns (bytes32) { 23 | return keccak256(data); 24 | } 25 | 26 | /// @inheritdoc IWitnessConsumer 27 | function verifyProof(Proof calldata proof) external view virtual { 28 | WITNESS().verifyProof(proof); 29 | } 30 | 31 | /// @inheritdoc IWitnessConsumer 32 | function safeVerifyProof(Proof calldata proof) external view virtual returns (bool) { 33 | return WITNESS().safeVerifyProof(proof); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /script/Base.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity 0.8.18; 3 | 4 | import { Script } from "forge-std/src/Script.sol"; 5 | 6 | abstract contract BaseScript is Script { 7 | /// @dev Included to enable compilation of the script without a $MNEMONIC environment variable. 8 | string internal constant TEST_MNEMONIC = "test test test test test test test test test test test junk"; 9 | 10 | /// @dev Needed for the deterministic deployments. 11 | bytes32 internal constant ZERO_SALT = bytes32(0); 12 | 13 | /// @dev The address of the transaction broadcaster. 14 | address internal broadcaster; 15 | 16 | /// @dev Used to derive the broadcaster's address if $ETH_FROM is not defined. 17 | string internal mnemonic; 18 | 19 | /// @dev Initializes the transaction broadcaster like this: 20 | /// 21 | /// - If $ETH_FROM is defined, use it. 22 | /// - Otherwise, derive the broadcaster address from $MNEMONIC. 23 | /// - If $MNEMONIC is not defined, default to a test mnemonic. 24 | /// 25 | /// The use case for $ETH_FROM is to specify the broadcaster key and its address via the command line. 26 | constructor() { 27 | address from = vm.envOr({ name: "ETH_FROM", defaultValue: address(0) }); 28 | if (from != address(0)) { 29 | broadcaster = from; 30 | } else { 31 | mnemonic = vm.envOr({ name: "MNEMONIC", defaultValue: TEST_MNEMONIC }); 32 | (broadcaster,) = deriveRememberKey({ mnemonic: mnemonic, index: 0 }); 33 | } 34 | } 35 | 36 | modifier broadcast() { 37 | vm.startBroadcast(broadcaster); 38 | _; 39 | vm.stopBroadcast(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /test/MockWitnessConsumer.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity 0.8.18; 3 | 4 | import { IWitness, Proof } from "../src/interfaces/IWitness.sol"; 5 | import { IWitnessConsumer } from "../src/interfaces/IWitnessConsumer.sol"; 6 | 7 | /// General error for invalid proof. 8 | error InvalidMockProof(); 9 | 10 | /// @title MockWitnessConsumer 11 | /// @author sina.eth 12 | /// @custom:coauthor runtheblocks.eth 13 | /// @notice Test and prototyping utility for contracts that want to consume provenance. 14 | /// @dev See IWitnessConsumer.sol for more information. 15 | abstract contract MockWitnessConsumer is IWitnessConsumer { 16 | /*////////////////////////////////////////////////////////////////////////// 17 | PUBLIC STORAGE 18 | //////////////////////////////////////////////////////////////////////////*/ 19 | 20 | /// @inheritdoc IWitnessConsumer 21 | IWitness public constant WITNESS = IWitness(address(0)); 22 | 23 | /// @dev Value to return from mock verify functions. 24 | bool public mockVal = true; 25 | 26 | /// @dev Function to set mockVal. 27 | function setMockVal(bool _mockVal) external { 28 | mockVal = _mockVal; 29 | } 30 | 31 | /// @inheritdoc IWitnessConsumer 32 | function getProvenanceHash(bytes calldata data) public view virtual returns (bytes32) { 33 | return keccak256(data); 34 | } 35 | 36 | /// @inheritdoc IWitnessConsumer 37 | function verifyProof(Proof calldata) public view { 38 | if (!mockVal) revert InvalidMockProof(); 39 | } 40 | 41 | /// @inheritdoc IWitnessConsumer 42 | function safeVerifyProof(Proof calldata) public view returns (bool) { 43 | return mockVal; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@witnessco/contracts-core", 3 | "description": "Core Solidity contracts for WitnessCo", 4 | "version": "1.0.0", 5 | "author": { 6 | "name": "Sina Sabet", 7 | "email": "sina@chroniclelabs.xyz", 8 | "url": "https://github.com/WitnessCo/contracts-core" 9 | }, 10 | "license": "BUSL-1.1", 11 | "dependencies": { 12 | "solady": "^0.0.167" 13 | }, 14 | "devDependencies": { 15 | "@prb/test": "^0.6.4", 16 | "@types/bun": "^1.0.0", 17 | "bun-plugin-dts": "^0.2.1", 18 | "forge-std": "github:foundry-rs/forge-std#v1.7.5", 19 | "prettier": "^3.0.0", 20 | "solhint": "^3.6.2", 21 | "viem": "^2.7.6", 22 | "zod": "^3.22.4" 23 | }, 24 | "peerDependencies": { 25 | "viem": "^2.7.6", 26 | "zod": "^3.22.4" 27 | }, 28 | "scripts": { 29 | "clean": "rm -rf cache out node_modules dist", 30 | "build": "bun run build:sol && bun run build:ts", 31 | "build:sol": "forge build", 32 | "build:ts": "bun run ts/build.mjs", 33 | "lint": "bun run lint:sol && bun run prettier:check", 34 | "lint:sol": "forge fmt --check && bun solhint {script,src,test}/**/*.sol", 35 | "prettier:check": "prettier --check **/*.{json,md,yml,ts,mjs} --ignore-path=.prettierignore", 36 | "prettier:write": "prettier --write **/*.{json,md,yml,ts,mjs} --ignore-path=.prettierignore", 37 | "generate:abis": "bun run ts/genAbis.ts", 38 | "generate:docs": "forge doc --out docsTemp && bun run ts/genDocs.ts && bun prettier:write", 39 | "test": "forge test", 40 | "ctest": "clear && forge test", 41 | "test:coverage": "forge coverage", 42 | "test:coverage:report": "forge coverage --report lcov && genhtml lcov.info --branch-coverage --output-dir coverage", 43 | "initcodehash": "source .env && cast keccak $(cast concat-hex \"$(forge inspect --silent Witness bytecode)\" \"$(cast abi-encode 'abi.encode(address)' \"$OWNER_ADDRESS\")\")" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ts/deployments.ts: -------------------------------------------------------------------------------- 1 | import { type Address, isHex } from "viem"; 2 | 3 | // First manually import the deployment artifacts for all chains and organize them. 4 | import baseGoerliArtifact from "../broadcast/Deploy.s.sol/84531/run-latest.json"; 5 | import goerliArtifact from "../broadcast/Deploy.s.sol/5/run-latest.json"; 6 | import sepoliaArtifact from "../broadcast/Deploy.s.sol/11155111/run-latest.json"; 7 | import opSepoliaArtifact from "../broadcast/Deploy.s.sol/11155420/run-latest.json"; 8 | import baseSepoliaArtifact from "../broadcast/Deploy.s.sol/84532/run-latest.json"; 9 | import scrollSepoliaArtifact from "../broadcast/Deploy.s.sol/534351/run-latest.json"; 10 | import { desiredContracts, supportedChains } from "./utils"; 11 | 12 | const artifacts = [ 13 | baseGoerliArtifact, 14 | goerliArtifact, 15 | sepoliaArtifact, 16 | opSepoliaArtifact, 17 | baseSepoliaArtifact, 18 | scrollSepoliaArtifact, 19 | ]; 20 | 21 | // Then, organize them into a single object that can be exported. 22 | export const deployments: Record< 23 | (typeof desiredContracts)[number], 24 | Record<(typeof supportedChains)[number]["id"], Address> 25 | > = artifacts.reduce( 26 | (acc, artifact) => { 27 | const { chain, transactions } = artifact; 28 | return transactions.reduce((acc, transaction) => { 29 | const { contractName, contractAddress } = transaction; 30 | if (!isHex(contractAddress)) { 31 | throw new Error(`Contract address ${contractAddress} is not a valid hex string`); 32 | } 33 | const refinedContractName = desiredContracts.find((c) => c === contractName); 34 | if (!refinedContractName) { 35 | throw new Error(`Contract name ${contractName} is not supported`); 36 | } 37 | acc[refinedContractName] = { 38 | ...acc[refinedContractName], 39 | [chain]: contractAddress, 40 | }; 41 | return acc; 42 | }, acc); 43 | }, 44 | {} as Record<(typeof desiredContracts)[number], Record<(typeof supportedChains)[number]["id"], Address>>, 45 | ); 46 | -------------------------------------------------------------------------------- /docs/interfaces/IWitnessConsumer.sol.md: -------------------------------------------------------------------------------- 1 | # IWitnessConsumer 2 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitnessConsumer.sol) 3 | 4 | **Author:** 5 | sina.eth 6 | 7 | Utility mixin for contracts that want to consume provenance. 8 | 9 | *See the core Witness.sol contract for more information.* 10 | 11 | 12 | ## Functions 13 | ### WITNESS 14 | 15 | Read method for the Witness contract that this contract stores & uses to verify provenance. 16 | 17 | 18 | ```solidity 19 | function WITNESS() external view returns (IWitness); 20 | ``` 21 | 22 | ### getProvenanceHash 23 | 24 | Maps the given bridgeData to its provenance hash representation for verification. 25 | 26 | *A default implementation is given here, but it may be overridden by subclasses. 27 | Provenance hash refers to the hash that Witness uses to verify the provenance of 28 | some data payload. Intuitively a provenance hash may be a hard-link from the 29 | bridgeData, like a hash, or perhaps something more sophisticated for certain usecases.* 30 | 31 | 32 | ```solidity 33 | function getProvenanceHash(bytes calldata data) external view returns (bytes32); 34 | ``` 35 | **Parameters** 36 | 37 | |Name|Type|Description| 38 | |----|----|-----------| 39 | |`data`|`bytes`|The data to be mapped to a provenance hash.| 40 | 41 | **Returns** 42 | 43 | |Name|Type|Description| 44 | |----|----|-----------| 45 | |``|`bytes32`|hash The provenanceHash corresponding to the data.| 46 | 47 | 48 | ### verifyProof 49 | 50 | Checks provenance of a leaf via Witness. 51 | 52 | *This method will throw if the proof is invalid, with a custom error 53 | describing how the verification failed.* 54 | 55 | 56 | ```solidity 57 | function verifyProof(Proof calldata proof) external view; 58 | ``` 59 | **Parameters** 60 | 61 | |Name|Type|Description| 62 | |----|----|-----------| 63 | |`proof`|`Proof`|The proof to be verified.| 64 | 65 | 66 | ### safeVerifyProof 67 | 68 | Checks provenance of a leaf via Witness, returning a boolean instead of throwing for invalid proofs. 69 | 70 | *This method is the same as `verifyProof`, except it returns false instead of throwing.* 71 | 72 | 73 | ```solidity 74 | function safeVerifyProof(Proof calldata proof) external view returns (bool); 75 | ``` 76 | 77 | -------------------------------------------------------------------------------- /ts/genDocs.ts: -------------------------------------------------------------------------------- 1 | import fs from "node:fs/promises"; 2 | 3 | const baseInputDocsPath = "docsTemp/src/src"; 4 | const interfacesBasePath = `${baseInputDocsPath}/interfaces`; 5 | 6 | const baseOutputDocsPath = "docs"; 7 | 8 | const contents = await fs.readdir(baseInputDocsPath); 9 | 10 | await handleInterfaces(); 11 | await Promise.all( 12 | contents 13 | .filter((c) => c !== "README.md") 14 | .filter((c) => c !== "interfaces") 15 | .map(handleContractFolder), 16 | ); 17 | 18 | async function handleInterfaces() { 19 | const files = await fs.readdir(interfacesBasePath); 20 | await Promise.all(files.filter((f) => f !== "README.md").map(handleInterfaceFolder)); 21 | } 22 | 23 | async function handleInterfaceFolder(fileName: string) { 24 | const base = `${interfacesBasePath}/${fileName}`; 25 | const innerFiles = await fs.readdir(base); 26 | // Read all the inner file contents: 27 | const innerFileContents = await Promise.all( 28 | innerFiles.map((innerFile) => fs.readFile(`${base}/${innerFile}`, "utf-8")), 29 | ); 30 | // Concat all the inner file contents into one long string. 31 | const contents = innerFileContents.join("\n"); 32 | // Clean 33 | const cleanedContents = rmBrokenLinks(contents); 34 | // Write the file. 35 | await fs.writeFile(`${baseOutputDocsPath}/interfaces/${fileName}.md`, cleanedContents); 36 | } 37 | 38 | async function handleContractFolder(dirName: string) { 39 | const path = `${baseInputDocsPath}/${dirName}`; 40 | // Concat all files in the directory into one long string. 41 | const files = await fs.readdir(path); 42 | const fileContents = await Promise.all(files.map((file) => fs.readFile(`${path}/${file}`, "utf-8"))); 43 | const contents = rmBrokenLinks(fileContents.join("\n")); 44 | // Write the file. 45 | await fs.writeFile(`${baseOutputDocsPath}/${dirName}.md`, contents); 46 | } 47 | 48 | function rmBrokenLinks(fileContents: string) { 49 | // Remove crosslinks as the URL structure doesn't match the folder structure. 50 | // Here's an example: 51 | // Source string: [RootUpdated](/src/IWitness.sol/interface.IWitness.md#rootupdated) 52 | // Replacement string: RootUpdated 53 | const regex = /\[([^\]]+)\]\(\/src\/([^\)]+)\)/g; 54 | const updatedContents = fileContents.replace(regex, "$1"); 55 | return updatedContents; 56 | } 57 | -------------------------------------------------------------------------------- /examples/ERC721P/IERC721P.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity ^0.8.23; 3 | 4 | /// @title IERC721P 5 | /// @author sina.eth 6 | /// @custom:coauthor runtheblocks.eth 7 | /// @notice Utility mixin for ERC721 adding provenance-related utility methods. 8 | /// @dev ERC721-P[rovenance] is a 721 token that supports "bridging" in provenance of lazy mints via Witness. 9 | abstract contract IERC721P { 10 | /*////////////////////////////////////////////////////////////// 11 | READ METHODS 12 | //////////////////////////////////////////////////////////////*/ 13 | 14 | /// @notice Identifies the owner of the tokenId given its bridgeData. 15 | /// 16 | /// @dev May optionally throw when called for a token that already exists, but callers should not 17 | /// rely on this and instead cross-check with whether the token has already been bridged. 18 | /// 19 | /// @param bridgeData The bridgeData to use to identify the owner. 20 | /// @return owner The owner of the token. 21 | function getBridgedOwner(bytes calldata bridgeData) public view virtual returns (address); 22 | 23 | /// @notice Returns the metadata URI for the tokenId given its bridgeData. 24 | /// 25 | /// @dev May optionally throw when called for a token that already exists, but callers should not 26 | /// rely on this and instead cross-check with whether the token has already been bridged. 27 | /// 28 | /// @param bridgeData The bridgeData to use to construct the metadata URI. 29 | /// @return tokenURI The metadata URI for the token. 30 | function bridgedTokenURI(bytes calldata bridgeData) public view virtual returns (string memory); 31 | 32 | /// @notice Bridge the provenance of and mint an NFT. 33 | /// 34 | /// @param bridgeData The data of the NFT, to be converted to a leaf. 35 | /// @param leafIndex The index of the leaf to be verified in the tree. 36 | /// @param leftProof The left range of the proof. 37 | /// @param rightProof The right range of the proof. 38 | /// @param targetRoot The root of the tree the proof is being verified against. 39 | function bridge( 40 | bytes calldata bridgeData, 41 | uint256 leafIndex, 42 | bytes32[] calldata leftProof, 43 | bytes32[] calldata rightProof, 44 | bytes32 targetRoot 45 | ) 46 | public 47 | virtual; 48 | } 49 | -------------------------------------------------------------------------------- /src/interfaces/IWitnessConsumer.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity ^0.8.0; 3 | 4 | import { IWitness, Proof } from "./IWitness.sol"; 5 | 6 | /// @title IWitnessConsumer 7 | /// @author sina.eth 8 | /// @custom:coauthor runtheblocks.eth 9 | /// @notice Utility mixin for contracts that want to consume provenance. 10 | /// @dev See the core Witness.sol contract for more information. 11 | interface IWitnessConsumer { 12 | /*////////////////////////////////////////////////////////////////////////// 13 | PUBLIC STORAGE 14 | //////////////////////////////////////////////////////////////////////////*/ 15 | 16 | /// @notice Read method for the Witness contract that this contract stores & uses to verify provenance. 17 | function WITNESS() external view returns (IWitness); 18 | 19 | /*////////////////////////////////////////////////////////////// 20 | READ METHODS 21 | //////////////////////////////////////////////////////////////*/ 22 | 23 | /// @notice Maps the given bridgeData to its provenance hash representation for verification. 24 | /// 25 | /// @dev A default implementation is given here, but it may be overridden by subclasses. 26 | /// 27 | /// Provenance hash refers to the hash that Witness uses to verify the provenance of 28 | /// some data payload. Intuitively a provenance hash may be a hard-link from the 29 | /// bridgeData, like a hash, or perhaps something more sophisticated for certain usecases. 30 | /// 31 | /// @param data The data to be mapped to a provenance hash. 32 | /// @return hash The provenanceHash corresponding to the data. 33 | function getProvenanceHash(bytes calldata data) external view returns (bytes32); 34 | 35 | /// @notice Checks provenance of a leaf via Witness. 36 | /// 37 | /// @dev This method will throw if the proof is invalid, with a custom error 38 | /// describing how the verification failed. 39 | /// 40 | /// @param proof The proof to be verified. 41 | function verifyProof(Proof calldata proof) external view; 42 | 43 | /// @notice Checks provenance of a leaf via Witness, returning a boolean instead of throwing for invalid proofs. 44 | /// 45 | /// @dev This method is the same as `verifyProof`, except it returns false instead of throwing. 46 | function safeVerifyProof(Proof calldata proof) external view returns (bool); 47 | } 48 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: "CI" 2 | 3 | concurrency: 4 | cancel-in-progress: true 5 | group: ${{github.workflow}}-${{github.ref}} 6 | 7 | env: 8 | FOUNDRY_PROFILE: "ci" 9 | 10 | on: 11 | workflow_dispatch: 12 | pull_request: 13 | push: 14 | branches: 15 | - "main" 16 | 17 | jobs: 18 | lint: 19 | runs-on: "ubuntu-latest" 20 | steps: 21 | - name: "Check out the repo" 22 | uses: "actions/checkout@v4" 23 | 24 | - name: "Install Foundry" 25 | uses: "foundry-rs/foundry-toolchain@v1" 26 | 27 | - name: "Install Bun" 28 | uses: "oven-sh/setup-bun@v1" 29 | 30 | - name: "Install the Node.js dependencies" 31 | run: "bun install" 32 | 33 | - name: "Lint the code" 34 | run: "bun run lint" 35 | 36 | - name: "Add lint summary" 37 | run: | 38 | echo "## Lint result" >> $GITHUB_STEP_SUMMARY 39 | echo "✅ Passed" >> $GITHUB_STEP_SUMMARY 40 | 41 | build: 42 | runs-on: "ubuntu-latest" 43 | steps: 44 | - name: "Check out the repo" 45 | uses: "actions/checkout@v4" 46 | 47 | - name: "Install Foundry" 48 | uses: "foundry-rs/foundry-toolchain@v1" 49 | 50 | - name: "Install Bun" 51 | uses: "oven-sh/setup-bun@v1" 52 | 53 | - name: "Install the Node.js dependencies" 54 | run: "bun install" 55 | 56 | - name: "Build the contracts and print their size" 57 | run: "forge build --sizes" 58 | 59 | - name: "Add build summary" 60 | run: | 61 | echo "## Build result" >> $GITHUB_STEP_SUMMARY 62 | echo "✅ Passed" >> $GITHUB_STEP_SUMMARY 63 | 64 | test: 65 | needs: ["lint", "build"] 66 | runs-on: "ubuntu-latest" 67 | steps: 68 | - name: "Check out the repo" 69 | uses: "actions/checkout@v4" 70 | 71 | - name: "Install Foundry" 72 | uses: "foundry-rs/foundry-toolchain@v1" 73 | 74 | - name: "Install Bun" 75 | uses: "oven-sh/setup-bun@v1" 76 | 77 | - name: "Install the Node.js dependencies" 78 | run: "bun install" 79 | 80 | - name: "Show the Foundry config" 81 | run: "forge config" 82 | 83 | - name: "Generate a fuzz seed that changes weekly to avoid burning through RPC allowance" 84 | run: > 85 | echo "FOUNDRY_FUZZ_SEED=$( 86 | echo $(($EPOCHSECONDS - $EPOCHSECONDS % 604800)) 87 | )" >> $GITHUB_ENV 88 | 89 | - name: "Run the tests" 90 | run: "forge test" 91 | 92 | - name: "Add test summary" 93 | run: | 94 | echo "## Tests result" >> $GITHUB_STEP_SUMMARY 95 | echo "✅ Passed" >> $GITHUB_STEP_SUMMARY 96 | -------------------------------------------------------------------------------- /docs/WitnessConsumer.sol.md: -------------------------------------------------------------------------------- 1 | # WitnessConsumer 2 | 3 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/WitnessConsumer.sol) 4 | 5 | **Inherits:** IWitnessConsumer 6 | 7 | **Author:** sina.eth 8 | 9 | Utility mixin for contracts that want to consume provenance. 10 | 11 | _See IWitnessConsumer.sol for more information._ 12 | 13 | ## State Variables 14 | 15 | ### WITNESS 16 | 17 | The Witness contract that this contract uses to verify provenance. 18 | 19 | ```solidity 20 | IWitness public immutable WITNESS; 21 | ``` 22 | 23 | ## Functions 24 | 25 | ### constructor 26 | 27 | _Immutably sets the Witness address._ 28 | 29 | ```solidity 30 | constructor(IWitness _witness); 31 | ``` 32 | 33 | **Parameters** 34 | 35 | | Name | Type | Description | 36 | | ---------- | ---------- | -------------------------------------------------------------------- | 37 | | `_witness` | `IWitness` | The address that's used as the Witness to verify provenance against. | 38 | 39 | ### getProvenanceHash 40 | 41 | Maps the given bridgeData to its provenance hash representation for verification. 42 | 43 | _A default implementation is given here, but it may be overridden by subclasses. Provenance hash refers to the hash that 44 | Witness uses to verify the provenance of some data payload. Intuitively a provenance hash may be a hard-link from the 45 | bridgeData, like a hash, or perhaps something more sophisticated for certain usecases._ 46 | 47 | ```solidity 48 | function getProvenanceHash(bytes calldata data) public view virtual returns (bytes32); 49 | ``` 50 | 51 | **Parameters** 52 | 53 | | Name | Type | Description | 54 | | ------ | ------- | ------------------------------------------- | 55 | | `data` | `bytes` | The data to be mapped to a provenance hash. | 56 | 57 | **Returns** 58 | 59 | | Name | Type | Description | 60 | | -------- | --------- | -------------------------------------------------- | 61 | | `` | `bytes32` | hash The provenanceHash corresponding to the data. | 62 | 63 | ### verifyProof 64 | 65 | Checks provenance of a leaf via Witness. 66 | 67 | _This method will throw if the proof is invalid, with a custom error describing how the verification failed._ 68 | 69 | ```solidity 70 | function verifyProof(Proof calldata proof) public view virtual; 71 | ``` 72 | 73 | **Parameters** 74 | 75 | | Name | Type | Description | 76 | | ------- | ------- | ------------------------- | 77 | | `proof` | `Proof` | The proof to be verified. | 78 | 79 | ### safeVerifyProof 80 | 81 | Checks provenance of a leaf via Witness, returning a boolean instead of throwing for invalid proofs. 82 | 83 | _This method is the same as `verifyProof`, except it returns false instead of throwing._ 84 | 85 | ```solidity 86 | function safeVerifyProof(Proof calldata proof) public view virtual returns (bool); 87 | ``` 88 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Business Source License 1.1 2 | 3 | License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. 4 | "Business Source License" is a trademark of MariaDB Corporation Ab. 5 | 6 | ----------------------------------------------------------------------------- 7 | 8 | Parameters 9 | 10 | Licensor: Chronicle Labs, Inc. 11 | 12 | Licensed Work: Witness Protocol v1 Core 13 | The Licensed Work is (c) 2024 Chronicle Labs, Inc. 14 | 15 | Additional Use Grant: Please view `../license` for additional use grants 16 | 17 | Change Date: 2027-02-15 18 | 19 | Change License: GNU General Public License v3.0 or later 20 | 21 | For information about alternative licensing arrangements for the Software, 22 | please visit: https://witness.co 23 | 24 | ----------------------------------------------------------------------------- 25 | 26 | Terms 27 | 28 | The Licensor hereby grants you the right to copy, modify, create derivative 29 | works, redistribute, and make non-production use of the Licensed Work. The 30 | Licensor may make an Additional Use Grant, above, permitting limited 31 | production use. 32 | 33 | Effective on the Change Date, or the fourth anniversary of the first publicly 34 | available distribution of a specific version of the Licensed Work under this 35 | License, whichever comes first, the Licensor hereby grants you rights under 36 | the terms of the Change License, and the rights granted in the paragraph 37 | above terminate. 38 | 39 | If your use of the Licensed Work does not comply with the requirements 40 | currently in effect as described in this License, you must purchase a 41 | commercial license from the Licensor, its affiliated entities, or authorized 42 | resellers, or you must refrain from using the Licensed Work. 43 | 44 | All copies of the original and modified Licensed Work, and derivative works 45 | of the Licensed Work, are subject to this License. This License applies 46 | separately for each version of the Licensed Work and the Change Date may vary 47 | for each version of the Licensed Work released by Licensor. 48 | 49 | You must conspicuously display this License on each original or modified copy 50 | of the Licensed Work. If you receive the Licensed Work in original or 51 | modified form from a third party, the terms and conditions set forth in this 52 | License apply to your use of that work. 53 | 54 | Any use of the Licensed Work in violation of this License will automatically 55 | terminate your rights under this License for the current and all other 56 | versions of the Licensed Work. 57 | 58 | This License does not grant you any right in any trademark or logo of 59 | Licensor or its affiliates (provided that you may use a trademark or logo of 60 | Licensor as expressly required by this License). 61 | 62 | TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON 63 | AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, 64 | EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF 65 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND 66 | TITLE. 67 | 68 | MariaDB hereby grants you permission to use this License’s text to license 69 | your works, and to refer to it using the trademark "Business Source License", 70 | as long as you comply with the Covenants of Licensor below. 71 | 72 | ----------------------------------------------------------------------------- 73 | 74 | Covenants of Licensor 75 | 76 | In consideration of the right to use this License’s text and the "Business 77 | Source License" name and trademark, Licensor covenants to MariaDB, and to all 78 | other recipients of the licensed work to be provided by Licensor: 79 | 80 | 1. To specify as the Change License the GPL Version 2.0 or any later version, 81 | or a license that is compatible with GPL Version 2.0 or a later version, 82 | where "compatible" means that software provided under the Change License can 83 | be included in a program with software provided under GPL Version 2.0 or a 84 | later version. Licensor may specify additional Change Licenses without 85 | limitation. 86 | 87 | 2. To either: (a) specify an additional grant of rights to use that does not 88 | impose any additional restriction on the right granted in this License, as 89 | the Additional Use Grant; or (b) insert the text "None". 90 | 91 | 3. To specify a Change Date. 92 | 93 | 4. Not to modify this License in any other way. 94 | 95 | ----------------------------------------------------------------------------- 96 | 97 | Notice 98 | 99 | The Business Source License (this document, or the "License") is not an Open 100 | Source license. However, the Licensed Work will eventually be made available 101 | under an Open Source License, as stated in this License. -------------------------------------------------------------------------------- /examples/ERC721P/ERC721P.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity ^0.8.23; 3 | 4 | import { ERC721 } from "solady/tokens/ERC721.sol"; 5 | 6 | import { IWitness, Proof } from "src/interfaces/IWitness.sol"; 7 | import { WitnessConsumer } from "src/WitnessConsumer.sol"; 8 | import { IERC721P } from "./IERC721P.sol"; 9 | 10 | /// @title ERC721P 11 | /// @author sina.eth 12 | /// @custom:coauthor runtheblocks.eth 13 | /// @notice Simple example implementation of ERC721P. 14 | /// @dev A simple implementation of IERC721P. 15 | contract ERC721P is ERC721, IERC721P, WitnessConsumer { 16 | /*////////////////////////////////////////////////////////////////////////// 17 | PUBLIC STORAGE 18 | //////////////////////////////////////////////////////////////////////////*/ 19 | 20 | /// @notice A mapping of tokenIds to their corresponding bridgeData. 21 | mapping(uint256 tokenId => bytes bridgeData) public idToBridgeData; 22 | 23 | /*////////////////////////////////////////////////////////////////////////// 24 | CONSTRUCTOR 25 | //////////////////////////////////////////////////////////////////////////*/ 26 | 27 | /// @dev Immutably sets the Witness address. 28 | /// @param _witness The address that's used as the Witness to verify provenance against. 29 | constructor(IWitness _witness) WitnessConsumer(_witness) { } 30 | 31 | /*////////////////////////////////////////////////////////////// 32 | READ METHODS - ERC721 OVERRIDES 33 | //////////////////////////////////////////////////////////////*/ 34 | 35 | /// @dev Returns the token collection name. 36 | function name() public pure virtual override returns (string memory) { 37 | return "ERC721P"; 38 | } 39 | 40 | /// @dev Returns the token collection symbol. 41 | function symbol() public pure virtual override returns (string memory) { 42 | return "ERC721P"; 43 | } 44 | 45 | /// @dev Returns the Uniform Resource Identifier (URI) for token `id`. 46 | /// For this sample implementation, the tokenURI is taken to immutably be the 47 | /// bridgedTokenURI for the given tokenId and bridgeData. 48 | /// @param tokenId The token to query the URI for. 49 | /// @return uri The URI for the given token. 50 | function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { 51 | return this.bridgedTokenURI(idToBridgeData[tokenId]); 52 | } 53 | 54 | /*////////////////////////////////////////////////////////////// 55 | IERC721P OVERRIDES 56 | //////////////////////////////////////////////////////////////*/ 57 | 58 | /// @dev Returns the hash used for the provenance of the token's data. 59 | /// In this sample implementation, we simply use the keccak256 hash of the bridgeData. 60 | /// @inheritdoc WitnessConsumer 61 | function getProvenanceHash(bytes calldata bridgeData) public view virtual override returns (bytes32) { 62 | return keccak256(bridgeData); 63 | } 64 | 65 | /// @dev Returns the owner of the token given the bridgeData. 66 | /// In this sample implementation, we simply decode the owner from the bridgeData. 67 | /// @inheritdoc IERC721P 68 | function getBridgedOwner(bytes calldata bridgeData) public view virtual override returns (address owner) { 69 | (owner,) = abi.decode(bridgeData, (address, string)); 70 | } 71 | 72 | /// @dev Returns the metadata URI for the token, as if it were minted to this contract. 73 | /// In this sample implementation, we simply decode the metadata URI from the bridgeData. 74 | /// @inheritdoc IERC721P 75 | function bridgedTokenURI(bytes calldata bridgeData) public view virtual override returns (string memory uri) { 76 | (, uri) = abi.decode(bridgeData, (address, string)); 77 | } 78 | 79 | /// @dev Bridges the provenance of and mints an NFT. 80 | /// In this sample implementation, we simply store the bridgeData as the NFT's data. 81 | /// @inheritdoc IERC721P 82 | function bridge( 83 | bytes calldata bridgeData, 84 | uint256 leafIndex, 85 | bytes32[] calldata leftProof, 86 | bytes32[] calldata rightProof, 87 | bytes32 targetRoot 88 | ) 89 | public 90 | override 91 | { 92 | // NOTICE: this example implementation doesn't impose additional validity checks on the bridgeData. 93 | // In a real implementation, you should consider using something like EIP712 or EIP191 for 94 | // validating things like: 95 | // - the data is allowed to be used in this contract 96 | // - the data was intended to be used in this contract 97 | // - the data hasn’t been used already 98 | // - the data was intended to be used on this chain 99 | // - the data was intended to be used by this version of the contract 100 | // - etc. 101 | this.verifyProof(Proof(leafIndex, getProvenanceHash(bridgeData), leftProof, rightProof, targetRoot)); 102 | idToBridgeData[leafIndex] = bridgeData; 103 | // Solady's `_safeMint` reverts if the token already exists. 104 | // @ 105 | // https://github.com/Vectorized/solady/blob/dac54a8b24a2e6f598813a613bb3a272ea6dd4f3/src/tokens/ERC721.sol#L500 106 | _safeMint(getBridgedOwner(bridgeData), leafIndex); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /ts/abis/Witness.ts: -------------------------------------------------------------------------------- 1 | export const abi = [{"type":"constructor","inputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"UPDATER_ROLE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"cancelOwnershipHandover","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"completeOwnershipHandover","inputs":[{"name":"pendingOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"currentRoot","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getCurrentTreeState","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"grantRoles","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"roles","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"hasAllRoles","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"roles","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hasAnyRole","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"roles","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"result","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ownershipHandoverExpiresAt","inputs":[{"name":"pendingOwner","type":"address","internalType":"address"}],"outputs":[{"name":"result","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"renounceRoles","inputs":[{"name":"roles","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"requestOwnershipHandover","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"revokeRoles","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"roles","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"rolesOf","inputs":[{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"roles","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"rootCache","inputs":[{"name":"rootHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"treeSize","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"safeVerifyProof","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"leaf","type":"bytes32","internalType":"bytes32"},{"name":"leftRange","type":"bytes32[]","internalType":"bytes32[]"},{"name":"rightRange","type":"bytes32[]","internalType":"bytes32[]"},{"name":"targetRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"isValid","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"updateTreeRoot","inputs":[{"name":"newSize","type":"uint256","internalType":"uint256"},{"name":"oldRange","type":"bytes32[]","internalType":"bytes32[]"},{"name":"newRange","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyProof","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"leaf","type":"bytes32","internalType":"bytes32"},{"name":"leftRange","type":"bytes32[]","internalType":"bytes32[]"},{"name":"rightRange","type":"bytes32[]","internalType":"bytes32[]"},{"name":"targetRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"view"},{"type":"event","name":"OwnershipHandoverCanceled","inputs":[{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipHandoverRequested","inputs":[{"name":"pendingOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"oldOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RolesUpdated","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"roles","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RootUpdated","inputs":[{"name":"newRoot","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newSize","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AlreadyInitialized","inputs":[]},{"type":"error","name":"InvalidProofBadLeftRange","inputs":[]},{"type":"error","name":"InvalidProofBadRightRange","inputs":[]},{"type":"error","name":"InvalidProofLeafIdxOutOfBounds","inputs":[]},{"type":"error","name":"InvalidProofUnrecognizedRoot","inputs":[]},{"type":"error","name":"InvalidUpdateNewRangeMismatchWrongLength","inputs":[]},{"type":"error","name":"InvalidUpdateOldRangeMismatchShouldBeEmpty","inputs":[]},{"type":"error","name":"InvalidUpdateOldRangeMismatchWrongCurrentRoot","inputs":[]},{"type":"error","name":"InvalidUpdateOldRangeMismatchWrongLength","inputs":[]},{"type":"error","name":"InvalidUpdateTreeSizeMustGrow","inputs":[]},{"type":"error","name":"NewOwnerIsZeroAddress","inputs":[]},{"type":"error","name":"NoHandoverRequest","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]}] as const; 2 | -------------------------------------------------------------------------------- /src/interfaces/IWitness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity ^0.8.0; 3 | 4 | /*////////////////////////////////////////////////////////////// 5 | CUSTOM ERRORS 6 | //////////////////////////////////////////////////////////////*/ 7 | /// Proof verification errors. 8 | error InvalidProofLeafIdxOutOfBounds(); 9 | error InvalidProofBadLeftRange(); 10 | error InvalidProofBadRightRange(); 11 | error InvalidProofUnrecognizedRoot(); 12 | 13 | /// Tree update errors. 14 | error InvalidUpdateOldRangeMismatchShouldBeEmpty(); 15 | error InvalidUpdateOldRangeMismatchWrongCurrentRoot(); 16 | error InvalidUpdateOldRangeMismatchWrongLength(); 17 | error InvalidUpdateTreeSizeMustGrow(); 18 | error InvalidUpdateNewRangeMismatchWrongLength(); 19 | 20 | /// @title Proof 21 | /// @notice A proof for a given leaf in a merkle mountain range. 22 | struct Proof { 23 | // The index of the leaf to be verified in the tree. 24 | uint256 index; 25 | // The leaf to be verified. 26 | bytes32 leaf; 27 | // The left range of the proof. 28 | bytes32[] leftRange; 29 | // The right range of the proof. 30 | bytes32[] rightRange; 31 | // The root of the tree the proof is being verified against. 32 | bytes32 targetRoot; 33 | } 34 | 35 | /// @title RootInfo 36 | /// @notice A packed 32 byte value containing info for any given root. 37 | struct RootInfo { 38 | // Max value = 2**176 - 1 = ~9.5e52 39 | uint176 treeSize; 40 | // Max value = 2**40 - 1 = ~1.1e12 = 1099511627775 seconds = tens-of-thousands of years into the future 41 | uint40 timestamp; 42 | // Max value = 2**40 - 1 = ~1.1e12 = 1099511627775 = thousands of years' worth of sub-second blocks into the future 43 | uint40 height; 44 | } 45 | 46 | /// @title IWitness 47 | /// @author sina.eth 48 | /// @custom:coauthor runtheblocks.eth 49 | /// @notice Interface for the core Witness smart contract. 50 | /// @dev Base interface for the Witness contract. 51 | interface IWitness { 52 | /*////////////////////////////////////////////////////////////// 53 | EVENTS 54 | //////////////////////////////////////////////////////////////*/ 55 | 56 | /// @notice Emitted when the root is updated. 57 | /// @param newRoot The newly accepted tree root hash. 58 | /// @param newSize The newly accepted tree size. 59 | event RootUpdated(bytes32 indexed newRoot, uint256 indexed newSize); 60 | 61 | /*////////////////////////////////////////////////////////////////////////// 62 | PUBLIC STORAGE 63 | //////////////////////////////////////////////////////////////////////////*/ 64 | 65 | /// @notice The current root hash. 66 | /// @dev This is the root hash of the most recently accepted update. 67 | function currentRoot() external view returns (bytes32); 68 | 69 | /// @notice A Mapping of checkpointed root hashes to their corresponding tree data. 70 | /// @param root The root hash for the checkpoint. 71 | /// @return info The `RootInfo` struct containing info about the root hash checkpoint. 72 | function rootInfo(bytes32 root) external view returns (RootInfo memory); 73 | 74 | /// @notice A mapping of checkpointed root hashes to their corresponding tree sizes. 75 | /// @dev This mapping is used to keep track of the tree size corresponding to when 76 | /// the contract accepted a given root hash. 77 | /// @dev Returns 0 if the root hash is not in the mapping. 78 | /// @param root The root hash for the checkpoint. 79 | /// @return treeSize The tree size corresponding to the root. 80 | function rootCache(bytes32 root) external view returns (uint256); 81 | 82 | /*////////////////////////////////////////////////////////////// 83 | READ METHODS 84 | //////////////////////////////////////////////////////////////*/ 85 | 86 | /// @notice Helper util to get the current tree state. 87 | /// 88 | /// @return currentRoot The current root of the tree. 89 | /// @return treeSize The current size of the tree. 90 | function getCurrentTreeState() external view returns (bytes32, uint256); 91 | 92 | /// @notice Helper util to get the last `block.timestamp` the tree was updated. 93 | /// 94 | /// @return timestamp The `block.timestamp` the update was made. 95 | function getLastUpdateTime() external view returns (uint256); 96 | 97 | /// @notice Helper util to get the last `block.number` the tree was updated. 98 | /// 99 | /// @return block The `block.timestamp` the update was made. 100 | function getLastUpdateBlock() external view returns (uint256); 101 | 102 | /// @notice Verifies a proof for a given leaf. Throws an error if the proof is invalid. 103 | /// 104 | /// @dev Notes: 105 | /// - For invalid proofs, this method will throw with an error indicating why the proof failed to validate. 106 | /// - The proof must validate against a checkpoint the contract has previously accepted. 107 | /// 108 | /// @param proof The proof to be verified. 109 | function verifyProof(Proof calldata proof) external view; 110 | 111 | /// @notice Verifies a proof for a given leaf, returning a boolean instead of throwing for invalid proofs. 112 | /// 113 | /// @dev This method is a wrapper around `verifyProof` that catches any errors and returns false instead. 114 | /// The params and logic are otherwise the same as `verifyProof`. 115 | /// 116 | /// @param proof The proof to be verified. 117 | function safeVerifyProof(Proof calldata proof) external view returns (bool isValid); 118 | 119 | /*////////////////////////////////////////////////////////////// 120 | WRITE METHODS 121 | //////////////////////////////////////////////////////////////*/ 122 | 123 | /// @notice Updates the tree root to a larger tree. 124 | /// 125 | /// @dev Emits a {RootUpdated} event. 126 | /// 127 | /// Notes: 128 | /// - A range proof is verified to ensure the new root is consistent with the previous root. 129 | /// - Roots are stored in storage for easier retrieval in the future, along with the treeSize 130 | /// they correspond to. 131 | /// 132 | /// Requirements: 133 | /// - `msg.sender` must be the contract owner. 134 | /// - `newSize` must be greater than the current tree size. 135 | /// - `oldRange` must correspond to the current tree root and size. 136 | /// - size check must pass on `newRange`. 137 | /// 138 | /// After these checks are verified, the new root is calculated based on `oldRange` and `newRange`. 139 | /// 140 | /// @param newSize The size of the updated tree. 141 | /// @param oldRange A compact range representing the current root. 142 | /// @param newRange A compact range representing the diff between oldRange and the new root's coverage. 143 | function updateTreeRoot(uint256 newSize, bytes32[] calldata oldRange, bytes32[] calldata newRange) external; 144 | } 145 | -------------------------------------------------------------------------------- /docs/Witness.sol.md: -------------------------------------------------------------------------------- 1 | # Witness 2 | 3 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/Witness.sol) 4 | 5 | **Inherits:** IWitness, OwnableRoles 6 | 7 | **Author:** sina.eth 8 | 9 | The core Witness smart contract. 10 | 11 | _The Witness smart contract tracks a merkle mountain range and enforces that any newly posted merkle root is consistent 12 | with the previous root._ 13 | 14 | ## State Variables 15 | 16 | ### UPDATER_ROLE 17 | 18 | ```solidity 19 | uint256 public constant UPDATER_ROLE = _ROLE_0; 20 | ``` 21 | 22 | ### currentRoot 23 | 24 | The current root hash. 25 | 26 | _This is the root hash of the most recently accepted update._ 27 | 28 | ```solidity 29 | bytes32 public currentRoot; 30 | ``` 31 | 32 | ### \_rootInfo 33 | 34 | ```solidity 35 | mapping(bytes32 root => RootInfo cache) internal _rootInfo; 36 | ``` 37 | 38 | ## Functions 39 | 40 | ### rootInfo 41 | 42 | A Mapping of checkpointed root hashes to their corresponding tree data. 43 | 44 | ```solidity 45 | function rootInfo(bytes32 root) public view virtual returns (RootInfo memory); 46 | ``` 47 | 48 | **Parameters** 49 | 50 | | Name | Type | Description | 51 | | ------ | --------- | --------------------------------- | 52 | | `root` | `bytes32` | The root hash for the checkpoint. | 53 | 54 | **Returns** 55 | 56 | | Name | Type | Description | 57 | | -------- | ---------- | -------------------------------------------------------------------------- | 58 | | `` | `RootInfo` | info The `RootInfo` struct containing info about the root hash checkpoint. | 59 | 60 | ### rootCache 61 | 62 | A mapping of checkpointed root hashes to their corresponding tree sizes. 63 | 64 | _This mapping is used to keep track of the tree size corresponding to when the contract accepted a given root hash._ 65 | 66 | ```solidity 67 | function rootCache(bytes32 root) public view virtual returns (uint256); 68 | ``` 69 | 70 | **Parameters** 71 | 72 | | Name | Type | Description | 73 | | ------ | --------- | --------------------------------- | 74 | | `root` | `bytes32` | The root hash for the checkpoint. | 75 | 76 | **Returns** 77 | 78 | | Name | Type | Description | 79 | | -------- | --------- | ------------------------------------------------- | 80 | | `` | `uint256` | treeSize The tree size corresponding to the root. | 81 | 82 | ### constructor 83 | 84 | _Emits an {OwnableRoles.OwnershipTransferred} event._ 85 | 86 | ```solidity 87 | constructor(address owner); 88 | ``` 89 | 90 | **Parameters** 91 | 92 | | Name | Type | Description | 93 | | ------- | --------- | ------------------------------------------------------------- | 94 | | `owner` | `address` | The address that should be set as the initial contract owner. | 95 | 96 | ### getCurrentTreeState 97 | 98 | Helper util to get the current tree state. 99 | 100 | ```solidity 101 | function getCurrentTreeState() external view virtual returns (bytes32, uint256); 102 | ``` 103 | 104 | **Returns** 105 | 106 | | Name | Type | Description | 107 | | -------- | --------- | ----------------------------------------- | 108 | | `` | `bytes32` | currentRoot The current root of the tree. | 109 | | `` | `uint256` | treeSize The current size of the tree. | 110 | 111 | ### getLastUpdateTime 112 | 113 | Helper util to get the last `block.timestamp` the tree was updated. 114 | 115 | ```solidity 116 | function getLastUpdateTime() external view virtual returns (uint256); 117 | ``` 118 | 119 | **Returns** 120 | 121 | | Name | Type | Description | 122 | | -------- | --------- | ---------------------------------------------------- | 123 | | `` | `uint256` | timestamp The `block.timestamp` the update was made. | 124 | 125 | ### getLastUpdateBlock 126 | 127 | Helper util to get the last `block.number` the tree was updated. 128 | 129 | ```solidity 130 | function getLastUpdateBlock() external view virtual returns (uint256); 131 | ``` 132 | 133 | **Returns** 134 | 135 | | Name | Type | Description | 136 | | -------- | --------- | ------------------------------------------------ | 137 | | `` | `uint256` | block The `block.timestamp` the update was made. | 138 | 139 | ### verifyProof 140 | 141 | Verifies a proof for a given leaf. Throws an error if the proof is invalid. 142 | 143 | \*Notes: 144 | 145 | - For invalid proofs, this method will throw with an error indicating why the proof failed to validate. 146 | - The proof must validate against a checkpoint the contract has previously accepted.\* 147 | 148 | ```solidity 149 | function verifyProof(Proof calldata proof) external view virtual; 150 | ``` 151 | 152 | **Parameters** 153 | 154 | | Name | Type | Description | 155 | | ------- | ------- | ------------------------- | 156 | | `proof` | `Proof` | The proof to be verified. | 157 | 158 | ### safeVerifyProof 159 | 160 | Verifies a proof for a given leaf, returning a boolean instead of throwing for invalid proofs. 161 | 162 | _This method is a wrapper around `verifyProof` that catches any errors and returns false instead. The params and logic 163 | are otherwise the same as `verifyProof`._ 164 | 165 | ```solidity 166 | function safeVerifyProof(Proof calldata proof) external view returns (bool isValid); 167 | ``` 168 | 169 | **Parameters** 170 | 171 | | Name | Type | Description | 172 | | ------- | ------- | ------------------------- | 173 | | `proof` | `Proof` | The proof to be verified. | 174 | 175 | ### updateTreeRoot 176 | 177 | Updates the tree root to a larger tree. 178 | 179 | \*Emits a {RootUpdated} event. Notes: 180 | 181 | - A range proof is verified to ensure the new root is consistent with the previous root. 182 | - Roots are stored in storage for easier retrieval in the future, along with the treeSize they correspond to. 183 | Requirements: 184 | - `msg.sender` must be the contract owner. 185 | - `newSize` must be greater than the current tree size. 186 | - `oldRange` must correspond to the current tree root and size. 187 | - size check must pass on `newRange`. After these checks are verified, the new root is calculated based on `oldRange` 188 | and `newRange`.\* 189 | 190 | ```solidity 191 | function updateTreeRoot( 192 | uint256 newSize, 193 | bytes32[] calldata oldRange, 194 | bytes32[] calldata newRange 195 | ) 196 | external 197 | virtual 198 | onlyRoles(UPDATER_ROLE); 199 | ``` 200 | 201 | **Parameters** 202 | 203 | | Name | Type | Description | 204 | | ---------- | ----------- | ----------------------------------------------------------------------------------- | 205 | | `newSize` | `uint256` | The size of the updated tree. | 206 | | `oldRange` | `bytes32[]` | A compact range representing the current root. | 207 | | `newRange` | `bytes32[]` | A compact range representing the diff between oldRange and the new root's coverage. | 208 | 209 | ### fallback 210 | 211 | _Used for L2 calldata optimization. For efficiency, this function will directly return the results, terminating the 212 | context. If called internally, it must be called at the end of the function._ 213 | 214 | ```solidity 215 | fallback() external virtual; 216 | ``` 217 | -------------------------------------------------------------------------------- /docs/WitnessUtils.sol.md: -------------------------------------------------------------------------------- 1 | # ProofError 2 | 3 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/WitnessUtils.sol) 4 | 5 | ```solidity 6 | enum ProofError { 7 | NONE, 8 | InvalidProofLeafIdxOutOfBounds, 9 | InvalidProofBadLeftRange, 10 | InvalidProofBadRightRange, 11 | InvalidProofUnrecognizedRoot 12 | } 13 | ``` 14 | 15 | # decomposeNonZeroInterval 16 | 17 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/WitnessUtils.sol) 18 | 19 | seedHeight= 20 | 21 | Helper for calculating range size for a non-zero-starting interval. 22 | 23 | _The bitmath here decomposes the interval into two parts that in combination represent the compact range needed to 24 | express the interval._ 25 | 26 | ```solidity 27 | function decomposeNonZeroInterval(uint256 begin, uint256 end) pure returns (uint256 left, uint256 right); 28 | ``` 29 | 30 | **Parameters** 31 | 32 | | Name | Type | Description | 33 | | ------- | --------- | -------------------------------------------------------------- | 34 | | `begin` | `uint256` | The start of the interval of the range's coverage (inclusive). | 35 | | `end` | `uint256` | The end of the interval of the range's coverage (exclusive). | 36 | 37 | **Returns** 38 | 39 | | Name | Type | Description | 40 | | ------- | --------- | --------------------------------------------------- | 41 | | `left` | `uint256` | Bitmap representing the left part of the interval. | 42 | | `right` | `uint256` | Bitmap representing the right part of the interval. | 43 | 44 | # validateProof 45 | 46 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/WitnessUtils.sol) 47 | 48 | ```solidity 49 | function validateProof(Proof calldata proof, uint256 targetTreeSize) pure returns (ProofError); 50 | ``` 51 | 52 | # merge 53 | 54 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/WitnessUtils.sol) 55 | 56 | Merges two compact ranges along a given seed node. 57 | 58 | _Merge folds hashes in from leftRange and rightRange into seed in order to create a combined compact range. The merged 59 | range is left + seed + right. leftRange is assumed to start its coverage at index 0._ 60 | 61 | ```solidity 62 | function merge( 63 | bytes32[] calldata leftRange, 64 | bytes32 seed, 65 | uint256 seedHeight, 66 | uint256 seedIndex, 67 | bytes32[] calldata rightRange, 68 | uint256 rightRangeEnd 69 | ) 70 | pure 71 | returns (bytes32[] calldata left, bytes32 newSeed, bytes32[] calldata right); 72 | ``` 73 | 74 | **Parameters** 75 | 76 | | Name | Type | Description | 77 | | --------------- | ----------- | -------------------------------------- | 78 | | `leftRange` | `bytes32[]` | The left compact range to merge. | 79 | | `seed` | `bytes32` | The seed node to merge along. | 80 | | `seedHeight` | `uint256` | The height of the seed node. | 81 | | `seedIndex` | `uint256` | The index of the seed node. | 82 | | `rightRange` | `bytes32[]` | The right compact range to merge. | 83 | | `rightRangeEnd` | `uint256` | The end of the right range's coverage. | 84 | 85 | **Returns** 86 | 87 | | Name | Type | Description | 88 | | --------- | ----------- | ---------------------------------------------- | 89 | | `left` | `bytes32[]` | The left portion of the merged compact range. | 90 | | `newSeed` | `bytes32` | The new seed node of the merged range. | 91 | | `right` | `bytes32[]` | The right portion of the merged compact range. | 92 | 93 | # getRangeSizeForNonZeroBeginningInterval 94 | 95 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/WitnessUtils.sol) 96 | 97 | Returns the expected size of a compact range needed to express a non-zero-starting interval. 98 | 99 | ```solidity 100 | function getRangeSizeForNonZeroBeginningInterval(uint256 start, uint256 end) pure returns (uint256); 101 | ``` 102 | 103 | **Parameters** 104 | 105 | | Name | Type | Description | 106 | | ------- | --------- | -------------------------------------------------------------- | 107 | | `start` | `uint256` | The start of the interval of the range's coverage (inclusive). | 108 | | `end` | `uint256` | The end of the interval of the range's coverage (exclusive). | 109 | 110 | **Returns** 111 | 112 | | Name | Type | Description | 113 | | -------- | --------- | ------------------------------------------------------------------------------- | 114 | | `` | `uint256` | size The size of the compact range needed to express the interval [start, end). | 115 | 116 | # hashToParent 117 | 118 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/WitnessUtils.sol) 119 | 120 | Hashes two bytes32s together as into a merkle parent. 121 | 122 | ```solidity 123 | function hashToParent(bytes32 left, bytes32 right) pure returns (bytes32 parent); 124 | ``` 125 | 126 | **Parameters** 127 | 128 | | Name | Type | Description | 129 | | ------- | --------- | ------------------------ | 130 | | `left` | `bytes32` | The left child to hash. | 131 | | `right` | `bytes32` | The right child to hash. | 132 | 133 | **Returns** 134 | 135 | | Name | Type | Description | 136 | | -------- | --------- | ---------------- | 137 | | `parent` | `bytes32` | The parent hash. | 138 | 139 | # ProofErrors 140 | 141 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/b447da1c16ceeae400729571cf336a5657613573/src/WitnessUtils.sol) 142 | 143 | ```solidity 144 | enum ProofErrors { 145 | NONE, 146 | InvalidProofLeafIdxOutOfBounds, 147 | InvalidProofBadLeftRange, 148 | InvalidProofBadRightRange, 149 | InvalidProofUnrecognizedRoot 150 | } 151 | ``` 152 | 153 | # getRoot 154 | 155 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/WitnessUtils.sol) 156 | 157 | Returns the root for a given compact range. 158 | 159 | _This method "bags the peaks" of the compact range, folding in from R2L._ 160 | 161 | ```solidity 162 | function getRoot(bytes32[] calldata hashes) pure returns (bytes32 root); 163 | ``` 164 | 165 | **Parameters** 166 | 167 | | Name | Type | Description | 168 | | -------- | ----------- | ---------------------------------------------------------- | 169 | | `hashes` | `bytes32[]` | The hashes of the compact range to calculate the root for. | 170 | 171 | **Returns** 172 | 173 | | Name | Type | Description | 174 | | ------ | --------- | ------------------------------ | 175 | | `root` | `bytes32` | The root of the compact range. | 176 | 177 | # getRootForMergedRange 178 | 179 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/WitnessUtils.sol) 180 | 181 | Utility for calculating the root of a compact range provided in a gas-convenient representation. 182 | 183 | ```solidity 184 | function getRootForMergedRange( 185 | bytes32[] calldata leftRange, 186 | bytes32 seed, 187 | bytes32[] calldata rightRange 188 | ) 189 | pure 190 | returns (bytes32 root); 191 | ``` 192 | 193 | **Parameters** 194 | 195 | | Name | Type | Description | 196 | | ------------ | ----------- | ------------------------------------------------- | 197 | | `leftRange` | `bytes32[]` | The left portion of the compact range to merge. | 198 | | `seed` | `bytes32` | The middle portion of the compact range to merge. | 199 | | `rightRange` | `bytes32[]` | The right portion of the compact range to merge. | 200 | 201 | **Returns** 202 | 203 | | Name | Type | Description | 204 | | ------ | --------- | ----------------------------------------- | 205 | | `root` | `bytes32` | The calculated root of the compact range. | 206 | -------------------------------------------------------------------------------- /docs/interfaces/IWitness.sol.md: -------------------------------------------------------------------------------- 1 | # InvalidProofBadRightRange 2 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 3 | 4 | 5 | ```solidity 6 | error InvalidProofBadRightRange(); 7 | ``` 8 | 9 | 10 | # InvalidUpdateOldRangeMismatchWrongCurrentRoot 11 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 12 | 13 | 14 | ```solidity 15 | error InvalidUpdateOldRangeMismatchWrongCurrentRoot(); 16 | ``` 17 | 18 | 19 | # InvalidUpdateNewRangeMismatchWrongLength 20 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 21 | 22 | 23 | ```solidity 24 | error InvalidUpdateNewRangeMismatchWrongLength(); 25 | ``` 26 | 27 | 28 | # InvalidProofBadLeftRange 29 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 30 | 31 | 32 | ```solidity 33 | error InvalidProofBadLeftRange(); 34 | ``` 35 | 36 | 37 | # InvalidProofLeafIdxOutOfBounds 38 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 39 | 40 | Proof verification errors. 41 | 42 | 43 | ```solidity 44 | error InvalidProofLeafIdxOutOfBounds(); 45 | ``` 46 | 47 | 48 | # IWitness 49 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 50 | 51 | **Author:** 52 | sina.eth 53 | 54 | Interface for the core Witness smart contract. 55 | 56 | *Base interface for the Witness contract.* 57 | 58 | 59 | ## Functions 60 | ### currentRoot 61 | 62 | The current root hash. 63 | 64 | *This is the root hash of the most recently accepted update.* 65 | 66 | 67 | ```solidity 68 | function currentRoot() external view returns (bytes32); 69 | ``` 70 | 71 | ### rootInfo 72 | 73 | A Mapping of checkpointed root hashes to their corresponding tree data. 74 | 75 | 76 | ```solidity 77 | function rootInfo(bytes32 root) external view returns (RootInfo memory); 78 | ``` 79 | **Parameters** 80 | 81 | |Name|Type|Description| 82 | |----|----|-----------| 83 | |`root`|`bytes32`|The root hash for the checkpoint.| 84 | 85 | **Returns** 86 | 87 | |Name|Type|Description| 88 | |----|----|-----------| 89 | |``|`RootInfo`|info The `RootInfo` struct containing info about the root hash checkpoint.| 90 | 91 | 92 | ### rootCache 93 | 94 | A mapping of checkpointed root hashes to their corresponding tree sizes. 95 | 96 | *This mapping is used to keep track of the tree size corresponding to when 97 | the contract accepted a given root hash.* 98 | 99 | *Returns 0 if the root hash is not in the mapping.* 100 | 101 | 102 | ```solidity 103 | function rootCache(bytes32 root) external view returns (uint256); 104 | ``` 105 | **Parameters** 106 | 107 | |Name|Type|Description| 108 | |----|----|-----------| 109 | |`root`|`bytes32`|The root hash for the checkpoint.| 110 | 111 | **Returns** 112 | 113 | |Name|Type|Description| 114 | |----|----|-----------| 115 | |``|`uint256`|treeSize The tree size corresponding to the root.| 116 | 117 | 118 | ### getCurrentTreeState 119 | 120 | Helper util to get the current tree state. 121 | 122 | 123 | ```solidity 124 | function getCurrentTreeState() external view returns (bytes32, uint256); 125 | ``` 126 | **Returns** 127 | 128 | |Name|Type|Description| 129 | |----|----|-----------| 130 | |``|`bytes32`|currentRoot The current root of the tree.| 131 | |``|`uint256`|treeSize The current size of the tree.| 132 | 133 | 134 | ### getLastUpdateTime 135 | 136 | Helper util to get the last `block.timestamp` the tree was updated. 137 | 138 | 139 | ```solidity 140 | function getLastUpdateTime() external view returns (uint256); 141 | ``` 142 | **Returns** 143 | 144 | |Name|Type|Description| 145 | |----|----|-----------| 146 | |``|`uint256`|timestamp The `block.timestamp` the update was made.| 147 | 148 | 149 | ### getLastUpdateBlock 150 | 151 | Helper util to get the last `block.number` the tree was updated. 152 | 153 | 154 | ```solidity 155 | function getLastUpdateBlock() external view returns (uint256); 156 | ``` 157 | **Returns** 158 | 159 | |Name|Type|Description| 160 | |----|----|-----------| 161 | |``|`uint256`|block The `block.timestamp` the update was made.| 162 | 163 | 164 | ### verifyProof 165 | 166 | Verifies a proof for a given leaf. Throws an error if the proof is invalid. 167 | 168 | *Notes: 169 | - For invalid proofs, this method will throw with an error indicating why the proof failed to validate. 170 | - The proof must validate against a checkpoint the contract has previously accepted.* 171 | 172 | 173 | ```solidity 174 | function verifyProof(Proof calldata proof) external view; 175 | ``` 176 | **Parameters** 177 | 178 | |Name|Type|Description| 179 | |----|----|-----------| 180 | |`proof`|`Proof`|The proof to be verified.| 181 | 182 | 183 | ### safeVerifyProof 184 | 185 | Verifies a proof for a given leaf, returning a boolean instead of throwing for invalid proofs. 186 | 187 | *This method is a wrapper around `verifyProof` that catches any errors and returns false instead. 188 | The params and logic are otherwise the same as `verifyProof`.* 189 | 190 | 191 | ```solidity 192 | function safeVerifyProof(Proof calldata proof) external view returns (bool isValid); 193 | ``` 194 | **Parameters** 195 | 196 | |Name|Type|Description| 197 | |----|----|-----------| 198 | |`proof`|`Proof`|The proof to be verified.| 199 | 200 | 201 | ### updateTreeRoot 202 | 203 | Updates the tree root to a larger tree. 204 | 205 | *Emits a RootUpdated event. 206 | Notes: 207 | - A range proof is verified to ensure the new root is consistent with the previous root. 208 | - Roots are stored in storage for easier retrieval in the future, along with the treeSize 209 | they correspond to. 210 | Requirements: 211 | - `msg.sender` must be the contract owner. 212 | - `newSize` must be greater than the current tree size. 213 | - `oldRange` must correspond to the current tree root and size. 214 | - size check must pass on `newRange`. 215 | After these checks are verified, the new root is calculated based on `oldRange` and `newRange`.* 216 | 217 | 218 | ```solidity 219 | function updateTreeRoot(uint256 newSize, bytes32[] calldata oldRange, bytes32[] calldata newRange) external; 220 | ``` 221 | **Parameters** 222 | 223 | |Name|Type|Description| 224 | |----|----|-----------| 225 | |`newSize`|`uint256`|The size of the updated tree.| 226 | |`oldRange`|`bytes32[]`|A compact range representing the current root.| 227 | |`newRange`|`bytes32[]`|A compact range representing the diff between oldRange and the new root's coverage.| 228 | 229 | 230 | ## Events 231 | ### RootUpdated 232 | Emitted when the root is updated. 233 | 234 | 235 | ```solidity 236 | event RootUpdated(bytes32 indexed newRoot, uint256 indexed newSize); 237 | ``` 238 | 239 | **Parameters** 240 | 241 | |Name|Type|Description| 242 | |----|----|-----------| 243 | |`newRoot`|`bytes32`|The newly accepted tree root hash.| 244 | |`newSize`|`uint256`|The newly accepted tree size.| 245 | 246 | 247 | # InvalidUpdateOldRangeMismatchWrongLength 248 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 249 | 250 | 251 | ```solidity 252 | error InvalidUpdateOldRangeMismatchWrongLength(); 253 | ``` 254 | 255 | 256 | # InvalidUpdateTreeSizeMustGrow 257 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 258 | 259 | 260 | ```solidity 261 | error InvalidUpdateTreeSizeMustGrow(); 262 | ``` 263 | 264 | 265 | # InvalidProofUnrecognizedRoot 266 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 267 | 268 | 269 | ```solidity 270 | error InvalidProofUnrecognizedRoot(); 271 | ``` 272 | 273 | 274 | # RootInfo 275 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 276 | 277 | A packed 32 byte value containing info for any given root. 278 | 279 | 280 | ```solidity 281 | struct RootInfo { 282 | uint176 treeSize; 283 | uint40 timestamp; 284 | uint40 height; 285 | } 286 | ``` 287 | 288 | 289 | # Proof 290 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 291 | 292 | A proof for a given leaf in a merkle mountain range. 293 | 294 | 295 | ```solidity 296 | struct Proof { 297 | uint256 index; 298 | bytes32 leaf; 299 | bytes32[] leftRange; 300 | bytes32[] rightRange; 301 | bytes32 targetRoot; 302 | } 303 | ``` 304 | 305 | 306 | # InvalidUpdateOldRangeMismatchShouldBeEmpty 307 | [Git Source](https://github.com/WitnessCo/contracts-core/blob/5728ca18b700df861b9d2e351ca5ee93737de005/src/interfaces/IWitness.sol) 308 | 309 | Tree update errors. 310 | 311 | 312 | ```solidity 313 | error InvalidUpdateOldRangeMismatchShouldBeEmpty(); 314 | ``` 315 | 316 | -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/11155111/dry-run/run-latest.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": null, 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x0956d2f3e904B87BaFeF7560C1b26F497f725EEa", 8 | "function": null, 9 | "arguments": [ 10 | "0xd7db685f44CCDe17C966A16528d94942b497EBfE" 11 | ], 12 | "transaction": { 13 | "type": "0x02", 14 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 15 | "gas": "0x133bdb", 16 | "value": "0x0", 17 | "data": "0x60803461008e57601f6110c038819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101690816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610721578063274c701a146106585780632fac691a146105ef57806354d1f13d146105a9578063715018a61461056357806374715f48146105345780638da5cb5b1461050757806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107f9565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107f9565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a2565b959492868a5289602052878a2054808710156104c4578161025e88610839565b03610468576001908188018089116104555761027b828692610db1565b036103f857908b96959493929188889184999a8080048514811517156103e357919392905b610100821061030b575b50505050508511610307576102cb95816102c39361099e565b939092610ebc565b036102d4578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610390576002841b9081871c0361037a57826103378e9287610816565b11610373576103699161035861035061035f939f610fd1565b9e8a8c610978565b3590610f86565b985b851c92610fd1565b90939291936102a0565b50976102aa565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d6578b96959493926103ca8c6103c26103bc610369966103d09661096b565b98610e69565b9e8f91610978565b35610f86565b98610361565b50819850849a95506102aa565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610560578060031936011261056057816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610560576105776107f9565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105605763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610623903690830161076c565b60449291923593841161065457610640610651943690840161076c565b93909261064b6107f9565b356109b9565b80f35b8480fd5b5091903461010d57610669366107a2565b8896949093303b1561071d5792879594926106ad6106bf938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e3565b858103600319016064870152916108e3565b9060848301520381305afa91826106ed575b5050602093506106e4575b519015158152f35b600191506106dc565b67ffffffffffffffff821161070a575060209450825238806106d1565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105605763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079d5782359167ffffffffffffffff831161079d576020808501948460051b01011161079d57565b600080fd5b60a060031982011261079d57600435916024359167ffffffffffffffff9160443583811161079d57826107d79160040161076c565b9390939260643591821161079d576107f19160040161076c565b909160843590565b638b78c6d81954330361080857565b6382b429006000526004601cfd5b9190820180921161082357565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079d5760209260051b809284830137010190565b1561090e57565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082357565b91908110156109885760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079d57841161079d578160051b01920390565b9391906001938454938415610d14576109d28484610e76565b8503610cb857600094855284602052604085205491846109f184610839565b03610c575782881115610bf557610a1282610a0c8a86610db1565b14610907565b6000199081860195808711610be15786610a2c9187610978565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610be15787928791811c80821b81158c841b838304141715610bcd5790915b6101008110610b17575b5050508611610b1357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610aff96946102c39361099e565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b8c576002841b80921c03610b7857610b408e9185610816565b11610b7257610b60610b6a91610358610b5889610fd1565b988a89610978565b975b8c1c91610fd1565b919091610ab8565b96610ac2565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bc357610bb1610bab610b6a93610bbd9361096b565b94610e69565b9a6103ca8c878d610978565b97610b62565b5082999750610ac2565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9291509250610d6d57610d3391610d2e82610a0c87610839565b610e76565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6257600019918083019081116108235760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108235782610e52610e5f94610e59931916610839565b9216610839565b90610816565b90565b5050600090565b8015610823576000190190565b91610e8082610e69565b9282610e8e85809584610978565b35935b610e9c575050909150565b610ea8610eb695610e69565b9485946103ca868486610978565b93610e91565b9294939190948215600014610f1b5750905092905b81825b610edd57505050565b9091936000198501858111610f0657610efe916103ca610bab928587610978565b919082610ed4565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108235793929190610f38848684610978565b359394855b610f5557505050610f4e9250610f86565b9290610ed1565b90919293828601868111610f0657610f7b916103ca610f75928588610978565b95610e69565b949392919085610f3d565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fbb5760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610823576001019056fea2646970667358221220bf0f74b8ebea53480915c20ef70b5f1de574d66e5c2636037afeb4320af6b5f164736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 18 | "nonce": "0xbc", 19 | "accessList": [] 20 | }, 21 | "additionalContracts": [], 22 | "isFixedGasLimit": false 23 | } 24 | ], 25 | "receipts": [], 26 | "libraries": [], 27 | "pending": [], 28 | "returns": {}, 29 | "timestamp": 1698882430, 30 | "chain": 11155111, 31 | "multi": false, 32 | "commit": "5677663" 33 | } -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/11155111/dry-run/run-1698882430.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": null, 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x0956d2f3e904B87BaFeF7560C1b26F497f725EEa", 8 | "function": null, 9 | "arguments": [ 10 | "0xd7db685f44CCDe17C966A16528d94942b497EBfE" 11 | ], 12 | "transaction": { 13 | "type": "0x02", 14 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 15 | "gas": "0x133bdb", 16 | "value": "0x0", 17 | "data": "0x60803461008e57601f6110c038819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101690816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610721578063274c701a146106585780632fac691a146105ef57806354d1f13d146105a9578063715018a61461056357806374715f48146105345780638da5cb5b1461050757806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107f9565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107f9565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a2565b959492868a5289602052878a2054808710156104c4578161025e88610839565b03610468576001908188018089116104555761027b828692610db1565b036103f857908b96959493929188889184999a8080048514811517156103e357919392905b610100821061030b575b50505050508511610307576102cb95816102c39361099e565b939092610ebc565b036102d4578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610390576002841b9081871c0361037a57826103378e9287610816565b11610373576103699161035861035061035f939f610fd1565b9e8a8c610978565b3590610f86565b985b851c92610fd1565b90939291936102a0565b50976102aa565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d6578b96959493926103ca8c6103c26103bc610369966103d09661096b565b98610e69565b9e8f91610978565b35610f86565b98610361565b50819850849a95506102aa565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610560578060031936011261056057816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610560576105776107f9565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105605763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610623903690830161076c565b60449291923593841161065457610640610651943690840161076c565b93909261064b6107f9565b356109b9565b80f35b8480fd5b5091903461010d57610669366107a2565b8896949093303b1561071d5792879594926106ad6106bf938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e3565b858103600319016064870152916108e3565b9060848301520381305afa91826106ed575b5050602093506106e4575b519015158152f35b600191506106dc565b67ffffffffffffffff821161070a575060209450825238806106d1565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105605763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079d5782359167ffffffffffffffff831161079d576020808501948460051b01011161079d57565b600080fd5b60a060031982011261079d57600435916024359167ffffffffffffffff9160443583811161079d57826107d79160040161076c565b9390939260643591821161079d576107f19160040161076c565b909160843590565b638b78c6d81954330361080857565b6382b429006000526004601cfd5b9190820180921161082357565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079d5760209260051b809284830137010190565b1561090e57565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082357565b91908110156109885760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079d57841161079d578160051b01920390565b9391906001938454938415610d14576109d28484610e76565b8503610cb857600094855284602052604085205491846109f184610839565b03610c575782881115610bf557610a1282610a0c8a86610db1565b14610907565b6000199081860195808711610be15786610a2c9187610978565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610be15787928791811c80821b81158c841b838304141715610bcd5790915b6101008110610b17575b5050508611610b1357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610aff96946102c39361099e565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b8c576002841b80921c03610b7857610b408e9185610816565b11610b7257610b60610b6a91610358610b5889610fd1565b988a89610978565b975b8c1c91610fd1565b919091610ab8565b96610ac2565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bc357610bb1610bab610b6a93610bbd9361096b565b94610e69565b9a6103ca8c878d610978565b97610b62565b5082999750610ac2565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9291509250610d6d57610d3391610d2e82610a0c87610839565b610e76565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6257600019918083019081116108235760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108235782610e52610e5f94610e59931916610839565b9216610839565b90610816565b90565b5050600090565b8015610823576000190190565b91610e8082610e69565b9282610e8e85809584610978565b35935b610e9c575050909150565b610ea8610eb695610e69565b9485946103ca868486610978565b93610e91565b9294939190948215600014610f1b5750905092905b81825b610edd57505050565b9091936000198501858111610f0657610efe916103ca610bab928587610978565b919082610ed4565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108235793929190610f38848684610978565b359394855b610f5557505050610f4e9250610f86565b9290610ed1565b90919293828601868111610f0657610f7b916103ca610f75928588610978565b95610e69565b949392919085610f3d565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fbb5760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610823576001019056fea2646970667358221220bf0f74b8ebea53480915c20ef70b5f1de574d66e5c2636037afeb4320af6b5f164736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 18 | "nonce": "0xbc", 19 | "accessList": [] 20 | }, 21 | "additionalContracts": [], 22 | "isFixedGasLimit": false 23 | } 24 | ], 25 | "receipts": [], 26 | "libraries": [], 27 | "pending": [], 28 | "returns": {}, 29 | "timestamp": 1698882430, 30 | "chain": 11155111, 31 | "multi": false, 32 | "commit": "5677663" 33 | } -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/84531/run-1700622296.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": null, 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x9556E237316bf77aD61BE3E59C8271764564bcD0", 8 | "function": null, 9 | "arguments": [ 10 | "0xd7db685f44CCDe17C966A16528d94942b497EBfE" 11 | ], 12 | "transaction": { 13 | "type": "0x02", 14 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 15 | "gas": "0x137934", 16 | "value": "0x0", 17 | "data": "0x6080346100d257601f6110c938819003918201601f19168301916001600160401b038311848410176100d7578084926020946040528339810103126100d257516001600160a01b038116908181036100d25781638b78c6d81955600091827f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3638b78c6d8600c5281526020600c209060018254178092557f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600c5160601c9180a3604051610fdb90816100ee8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163183a4f6e1461082b5781631c10893f146107ca5781631cd64df4146107915781632569296214610746578163274c701a1461067e5781632de948071461064a5781632fac691a146105bb57816347e633801461059f5781634a4ee7b114610574578163514e62fc1461053b57816354d1f13d146104f5578163715018a6146104af57816374715f48146104805781638da5cb5b1461045357816394a5ab221461026b578163e5b046f214610240578163f04e283e146101c0578163f2fde38b1461015357508063fdab463d146101355763fee81cf4146100ff57600080fd5b346101315760203660031901126101315760209161011b610844565b9063389a75e1600c525281600c20549051908152f35b5080fd5b50346101315781600319360112610131576020906001549051908152f35b8390602036600319011261013157610169610844565b90610172610f88565b8160601b156101b5575060018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b83906020366003190112610131576101d6610844565b906101df610f88565b63389a75e1600c528183526020600c209081544211610235575082905560018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b90503461026757602036600319011261026757602092829135815280845220549051908152f35b8280fd5b919050346102675761027c36610890565b959492868a5289602052878a205480871015610443578161029c88610951565b0361043357600190818801808911610420576102b9828692610d59565b0361041057908b96959493929188889184999a8080048514811517156103fb57919392905b6101008210610323575b5050505050851161031f57610309958161030193610a52565b939092610e64565b03610312578280f35b5163a2dbd26960e01b8152fd5b8980fd5b909192939784831b858a16156000146103a8576002841b9081871c03610392578261034f8e928761092e565b1161038b5761038191610370610368610377939f610f79565b9e8a8c610a2c565b3590610f2e565b985b851c92610f79565b90939291936102de565b50976102e8565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103ee578b96959493926103e28c6103da6103d4610381966103e896610a1f565b98610e11565b9e8f91610a2c565b35610f2e565b98610379565b50819850849a95506102e8565b5050634e487b7160e01b8e5260118d5260248efd5b895163e5f5ab4d60e01b81528b90fd5b634e487b7160e01b8d5260118c5260248dfd5b885163616e11bd60e01b81528a90fd5b88516374842dbb60e01b81528a90fd5b505034610131578160031936011261013157638b78c6d8195490516001600160a01b039091168152602090f35b8284346104ac57806003193601126104ac57816001549182815280602052205482519182526020820152f35b80fd5b83806003193601126104ac576104c3610f88565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126104ac5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b505034610131578060031936011261013157602091610558610844565b90638b78c6d8600c525260243582600c20541615159051908152f35b50503660031901126104ac5761059c61058b610844565b610593610f88565b602435906108e7565b80f35b5050346101315781600319360112610131576020905160018152f35b83346104ac5760603660031901126104ac5767ffffffffffffffff602435818111610267576105ed903690850161085f565b9160443590811161064657610605903690860161085f565b929091638b78c6d8600c5233855260016020600c2054161561062d575b61059c949535610a6d565b638b78c6d81954331461062257856382b429008652601cfd5b8380fd5b50503461013157602036600319011261013157602091610668610844565b90638b78c6d8600c525281600c20549051908152f35b8383346101315761068e36610890565b8896949093303b156107425792879594926106d26106e4938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916109fb565b858103600319016064870152916109fb565b9060848301520381305afa9182610712575b505060209350610709575b519015158152f35b60019150610701565b67ffffffffffffffff821161072f575060209450825284806106f6565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126104ac5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b5050346101315780600319360112610131576020916107ae610844565b60243591638b78c6d8600c52528083600c205416149051908152f35b50503660031901126104ac576107de610844565b6107e6610f88565b638b78c6d8600c5281526020600c20602435815417809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe268380a380f35b839060203660031901126101315761059c9035336108e7565b600435906001600160a01b038216820361085a57565b600080fd5b9181601f8401121561085a5782359167ffffffffffffffff831161085a576020808501948460051b01011161085a57565b60a060031982011261085a57600435916024359167ffffffffffffffff9160443583811161085a57826108c59160040161085f565b9390939260643591821161085a576108df9160040161085f565b909160843590565b638b78c6d8600c526000526020600c2090815490811618809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3565b9190820180921161093b57565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161085a5760209260051b809284830137010190565b9190820391821161093b57565b9190811015610a3c5760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161085a57841161085a578160051b01920390565b9391906001938454938415610cec57610a868484610e1e565b8503610cdb5760009485528460205260408520549184610aa584610951565b03610cc95782881115610cb75781610abd8985610d59565b03610ca5576000199081860195808711610c915786610adc9187610a2c565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610c915787928791811c80821b81158c841b838304141715610c7d5790915b6101008110610bc7575b5050508611610bc357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610baf969461030193610a52565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610c3c576002841b80921c03610c2857610bf08e918561092e565b11610c2257610c10610c1a91610370610c0889610f79565b988a89610a2c565b975b8c1c91610f79565b919091610b68565b96610b72565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610c7357610c61610c5b610c1a93610c6d93610a1f565b94610e11565b9a6103e28c878d610a2c565b97610c12565b5082999750610b72565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b6040516360f2a33f60e11b8152600490fd5b60405163dc9e24a360e01b8152600490fd5b604051636582d14760e11b8152600490fd5b6040516234392960e11b8152600490fd5b9291509250610d475780610cff85610951565b03610ca557610d0d91610e1e565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b604051630770135160e01b8152600490fd5b90808214610e0a576000199180830190811161093b5760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b92830192831161093b5782610dfa610e0794610e01931916610951565b9216610951565b9061092e565b90565b5050600090565b801561093b576000190190565b91610e2882610e11565b9282610e3685809584610a2c565b35935b610e44575050909150565b610e50610e5e95610e11565b9485946103e2868486610a2c565b93610e39565b9294939190948215600014610ec35750905092905b81825b610e8557505050565b9091936000198501858111610eae57610ea6916103e2610c5b928587610a2c565b919082610e7c565b60246000634e487b7160e01b81526011600452fd5b6000198381019380851161093b5793929190610ee0848684610a2c565b359394855b610efd57505050610ef69250610f2e565b9290610e79565b90919293828601868111610eae57610f23916103e2610f1d928588610a2c565b95610e11565b949392919085610ee5565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610f635760405251902090565b634e487b7160e01b600052604160045260246000fd5b600019811461093b5760010190565b638b78c6d819543303610f9757565b6382b429006000526004601cfdfea2646970667358221220bd003adabc835bfedb8068dcc99db1f9b963f84bf589633439c1f8d5dd5b8d0664736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 18 | "nonce": "0x0", 19 | "accessList": [] 20 | }, 21 | "additionalContracts": [], 22 | "isFixedGasLimit": false 23 | } 24 | ], 25 | "receipts": [], 26 | "libraries": [], 27 | "pending": [], 28 | "returns": {}, 29 | "timestamp": 1700622296, 30 | "chain": 84531, 31 | "multi": false, 32 | "commit": "2ba38ab" 33 | } -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/84531/run-1700622350.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": null, 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x9556E237316bf77aD61BE3E59C8271764564bcD0", 8 | "function": null, 9 | "arguments": [ 10 | "0xd7db685f44CCDe17C966A16528d94942b497EBfE" 11 | ], 12 | "transaction": { 13 | "type": "0x02", 14 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 15 | "gas": "0x137934", 16 | "value": "0x0", 17 | "data": "0x6080346100d257601f6110c938819003918201601f19168301916001600160401b038311848410176100d7578084926020946040528339810103126100d257516001600160a01b038116908181036100d25781638b78c6d81955600091827f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3638b78c6d8600c5281526020600c209060018254178092557f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600c5160601c9180a3604051610fdb90816100ee8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163183a4f6e1461082b5781631c10893f146107ca5781631cd64df4146107915781632569296214610746578163274c701a1461067e5781632de948071461064a5781632fac691a146105bb57816347e633801461059f5781634a4ee7b114610574578163514e62fc1461053b57816354d1f13d146104f5578163715018a6146104af57816374715f48146104805781638da5cb5b1461045357816394a5ab221461026b578163e5b046f214610240578163f04e283e146101c0578163f2fde38b1461015357508063fdab463d146101355763fee81cf4146100ff57600080fd5b346101315760203660031901126101315760209161011b610844565b9063389a75e1600c525281600c20549051908152f35b5080fd5b50346101315781600319360112610131576020906001549051908152f35b8390602036600319011261013157610169610844565b90610172610f88565b8160601b156101b5575060018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b83906020366003190112610131576101d6610844565b906101df610f88565b63389a75e1600c528183526020600c209081544211610235575082905560018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b90503461026757602036600319011261026757602092829135815280845220549051908152f35b8280fd5b919050346102675761027c36610890565b959492868a5289602052878a205480871015610443578161029c88610951565b0361043357600190818801808911610420576102b9828692610d59565b0361041057908b96959493929188889184999a8080048514811517156103fb57919392905b6101008210610323575b5050505050851161031f57610309958161030193610a52565b939092610e64565b03610312578280f35b5163a2dbd26960e01b8152fd5b8980fd5b909192939784831b858a16156000146103a8576002841b9081871c03610392578261034f8e928761092e565b1161038b5761038191610370610368610377939f610f79565b9e8a8c610a2c565b3590610f2e565b985b851c92610f79565b90939291936102de565b50976102e8565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103ee578b96959493926103e28c6103da6103d4610381966103e896610a1f565b98610e11565b9e8f91610a2c565b35610f2e565b98610379565b50819850849a95506102e8565b5050634e487b7160e01b8e5260118d5260248efd5b895163e5f5ab4d60e01b81528b90fd5b634e487b7160e01b8d5260118c5260248dfd5b885163616e11bd60e01b81528a90fd5b88516374842dbb60e01b81528a90fd5b505034610131578160031936011261013157638b78c6d8195490516001600160a01b039091168152602090f35b8284346104ac57806003193601126104ac57816001549182815280602052205482519182526020820152f35b80fd5b83806003193601126104ac576104c3610f88565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126104ac5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b505034610131578060031936011261013157602091610558610844565b90638b78c6d8600c525260243582600c20541615159051908152f35b50503660031901126104ac5761059c61058b610844565b610593610f88565b602435906108e7565b80f35b5050346101315781600319360112610131576020905160018152f35b83346104ac5760603660031901126104ac5767ffffffffffffffff602435818111610267576105ed903690850161085f565b9160443590811161064657610605903690860161085f565b929091638b78c6d8600c5233855260016020600c2054161561062d575b61059c949535610a6d565b638b78c6d81954331461062257856382b429008652601cfd5b8380fd5b50503461013157602036600319011261013157602091610668610844565b90638b78c6d8600c525281600c20549051908152f35b8383346101315761068e36610890565b8896949093303b156107425792879594926106d26106e4938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916109fb565b858103600319016064870152916109fb565b9060848301520381305afa9182610712575b505060209350610709575b519015158152f35b60019150610701565b67ffffffffffffffff821161072f575060209450825284806106f6565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126104ac5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b5050346101315780600319360112610131576020916107ae610844565b60243591638b78c6d8600c52528083600c205416149051908152f35b50503660031901126104ac576107de610844565b6107e6610f88565b638b78c6d8600c5281526020600c20602435815417809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe268380a380f35b839060203660031901126101315761059c9035336108e7565b600435906001600160a01b038216820361085a57565b600080fd5b9181601f8401121561085a5782359167ffffffffffffffff831161085a576020808501948460051b01011161085a57565b60a060031982011261085a57600435916024359167ffffffffffffffff9160443583811161085a57826108c59160040161085f565b9390939260643591821161085a576108df9160040161085f565b909160843590565b638b78c6d8600c526000526020600c2090815490811618809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3565b9190820180921161093b57565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161085a5760209260051b809284830137010190565b9190820391821161093b57565b9190811015610a3c5760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161085a57841161085a578160051b01920390565b9391906001938454938415610cec57610a868484610e1e565b8503610cdb5760009485528460205260408520549184610aa584610951565b03610cc95782881115610cb75781610abd8985610d59565b03610ca5576000199081860195808711610c915786610adc9187610a2c565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610c915787928791811c80821b81158c841b838304141715610c7d5790915b6101008110610bc7575b5050508611610bc357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610baf969461030193610a52565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610c3c576002841b80921c03610c2857610bf08e918561092e565b11610c2257610c10610c1a91610370610c0889610f79565b988a89610a2c565b975b8c1c91610f79565b919091610b68565b96610b72565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610c7357610c61610c5b610c1a93610c6d93610a1f565b94610e11565b9a6103e28c878d610a2c565b97610c12565b5082999750610b72565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b6040516360f2a33f60e11b8152600490fd5b60405163dc9e24a360e01b8152600490fd5b604051636582d14760e11b8152600490fd5b6040516234392960e11b8152600490fd5b9291509250610d475780610cff85610951565b03610ca557610d0d91610e1e565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b604051630770135160e01b8152600490fd5b90808214610e0a576000199180830190811161093b5760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b92830192831161093b5782610dfa610e0794610e01931916610951565b9216610951565b9061092e565b90565b5050600090565b801561093b576000190190565b91610e2882610e11565b9282610e3685809584610a2c565b35935b610e44575050909150565b610e50610e5e95610e11565b9485946103e2868486610a2c565b93610e39565b9294939190948215600014610ec35750905092905b81825b610e8557505050565b9091936000198501858111610eae57610ea6916103e2610c5b928587610a2c565b919082610e7c565b60246000634e487b7160e01b81526011600452fd5b6000198381019380851161093b5793929190610ee0848684610a2c565b359394855b610efd57505050610ef69250610f2e565b9290610e79565b90919293828601868111610eae57610f23916103e2610f1d928588610a2c565b95610e11565b949392919085610ee5565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610f635760405251902090565b634e487b7160e01b600052604160045260246000fd5b600019811461093b5760010190565b638b78c6d819543303610f9757565b6382b429006000526004601cfdfea2646970667358221220bd003adabc835bfedb8068dcc99db1f9b963f84bf589633439c1f8d5dd5b8d0664736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 18 | "nonce": "0x0", 19 | "accessList": [] 20 | }, 21 | "additionalContracts": [], 22 | "isFixedGasLimit": false 23 | } 24 | ], 25 | "receipts": [], 26 | "libraries": [], 27 | "pending": [], 28 | "returns": {}, 29 | "timestamp": 1700622350, 30 | "chain": 84531, 31 | "multi": false, 32 | "commit": "2ba38ab" 33 | } -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/84531/run-1700622362.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": null, 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x9556E237316bf77aD61BE3E59C8271764564bcD0", 8 | "function": null, 9 | "arguments": [ 10 | "0xd7db685f44CCDe17C966A16528d94942b497EBfE" 11 | ], 12 | "transaction": { 13 | "type": "0x02", 14 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 15 | "gas": "0x137934", 16 | "value": "0x0", 17 | "data": "0x6080346100d257601f6110c938819003918201601f19168301916001600160401b038311848410176100d7578084926020946040528339810103126100d257516001600160a01b038116908181036100d25781638b78c6d81955600091827f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3638b78c6d8600c5281526020600c209060018254178092557f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600c5160601c9180a3604051610fdb90816100ee8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163183a4f6e1461082b5781631c10893f146107ca5781631cd64df4146107915781632569296214610746578163274c701a1461067e5781632de948071461064a5781632fac691a146105bb57816347e633801461059f5781634a4ee7b114610574578163514e62fc1461053b57816354d1f13d146104f5578163715018a6146104af57816374715f48146104805781638da5cb5b1461045357816394a5ab221461026b578163e5b046f214610240578163f04e283e146101c0578163f2fde38b1461015357508063fdab463d146101355763fee81cf4146100ff57600080fd5b346101315760203660031901126101315760209161011b610844565b9063389a75e1600c525281600c20549051908152f35b5080fd5b50346101315781600319360112610131576020906001549051908152f35b8390602036600319011261013157610169610844565b90610172610f88565b8160601b156101b5575060018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b83906020366003190112610131576101d6610844565b906101df610f88565b63389a75e1600c528183526020600c209081544211610235575082905560018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b90503461026757602036600319011261026757602092829135815280845220549051908152f35b8280fd5b919050346102675761027c36610890565b959492868a5289602052878a205480871015610443578161029c88610951565b0361043357600190818801808911610420576102b9828692610d59565b0361041057908b96959493929188889184999a8080048514811517156103fb57919392905b6101008210610323575b5050505050851161031f57610309958161030193610a52565b939092610e64565b03610312578280f35b5163a2dbd26960e01b8152fd5b8980fd5b909192939784831b858a16156000146103a8576002841b9081871c03610392578261034f8e928761092e565b1161038b5761038191610370610368610377939f610f79565b9e8a8c610a2c565b3590610f2e565b985b851c92610f79565b90939291936102de565b50976102e8565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103ee578b96959493926103e28c6103da6103d4610381966103e896610a1f565b98610e11565b9e8f91610a2c565b35610f2e565b98610379565b50819850849a95506102e8565b5050634e487b7160e01b8e5260118d5260248efd5b895163e5f5ab4d60e01b81528b90fd5b634e487b7160e01b8d5260118c5260248dfd5b885163616e11bd60e01b81528a90fd5b88516374842dbb60e01b81528a90fd5b505034610131578160031936011261013157638b78c6d8195490516001600160a01b039091168152602090f35b8284346104ac57806003193601126104ac57816001549182815280602052205482519182526020820152f35b80fd5b83806003193601126104ac576104c3610f88565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126104ac5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b505034610131578060031936011261013157602091610558610844565b90638b78c6d8600c525260243582600c20541615159051908152f35b50503660031901126104ac5761059c61058b610844565b610593610f88565b602435906108e7565b80f35b5050346101315781600319360112610131576020905160018152f35b83346104ac5760603660031901126104ac5767ffffffffffffffff602435818111610267576105ed903690850161085f565b9160443590811161064657610605903690860161085f565b929091638b78c6d8600c5233855260016020600c2054161561062d575b61059c949535610a6d565b638b78c6d81954331461062257856382b429008652601cfd5b8380fd5b50503461013157602036600319011261013157602091610668610844565b90638b78c6d8600c525281600c20549051908152f35b8383346101315761068e36610890565b8896949093303b156107425792879594926106d26106e4938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916109fb565b858103600319016064870152916109fb565b9060848301520381305afa9182610712575b505060209350610709575b519015158152f35b60019150610701565b67ffffffffffffffff821161072f575060209450825284806106f6565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126104ac5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b5050346101315780600319360112610131576020916107ae610844565b60243591638b78c6d8600c52528083600c205416149051908152f35b50503660031901126104ac576107de610844565b6107e6610f88565b638b78c6d8600c5281526020600c20602435815417809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe268380a380f35b839060203660031901126101315761059c9035336108e7565b600435906001600160a01b038216820361085a57565b600080fd5b9181601f8401121561085a5782359167ffffffffffffffff831161085a576020808501948460051b01011161085a57565b60a060031982011261085a57600435916024359167ffffffffffffffff9160443583811161085a57826108c59160040161085f565b9390939260643591821161085a576108df9160040161085f565b909160843590565b638b78c6d8600c526000526020600c2090815490811618809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3565b9190820180921161093b57565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161085a5760209260051b809284830137010190565b9190820391821161093b57565b9190811015610a3c5760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161085a57841161085a578160051b01920390565b9391906001938454938415610cec57610a868484610e1e565b8503610cdb5760009485528460205260408520549184610aa584610951565b03610cc95782881115610cb75781610abd8985610d59565b03610ca5576000199081860195808711610c915786610adc9187610a2c565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610c915787928791811c80821b81158c841b838304141715610c7d5790915b6101008110610bc7575b5050508611610bc357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610baf969461030193610a52565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610c3c576002841b80921c03610c2857610bf08e918561092e565b11610c2257610c10610c1a91610370610c0889610f79565b988a89610a2c565b975b8c1c91610f79565b919091610b68565b96610b72565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610c7357610c61610c5b610c1a93610c6d93610a1f565b94610e11565b9a6103e28c878d610a2c565b97610c12565b5082999750610b72565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b6040516360f2a33f60e11b8152600490fd5b60405163dc9e24a360e01b8152600490fd5b604051636582d14760e11b8152600490fd5b6040516234392960e11b8152600490fd5b9291509250610d475780610cff85610951565b03610ca557610d0d91610e1e565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b604051630770135160e01b8152600490fd5b90808214610e0a576000199180830190811161093b5760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b92830192831161093b5782610dfa610e0794610e01931916610951565b9216610951565b9061092e565b90565b5050600090565b801561093b576000190190565b91610e2882610e11565b9282610e3685809584610a2c565b35935b610e44575050909150565b610e50610e5e95610e11565b9485946103e2868486610a2c565b93610e39565b9294939190948215600014610ec35750905092905b81825b610e8557505050565b9091936000198501858111610eae57610ea6916103e2610c5b928587610a2c565b919082610e7c565b60246000634e487b7160e01b81526011600452fd5b6000198381019380851161093b5793929190610ee0848684610a2c565b359394855b610efd57505050610ef69250610f2e565b9290610e79565b90919293828601868111610eae57610f23916103e2610f1d928588610a2c565b95610e11565b949392919085610ee5565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610f635760405251902090565b634e487b7160e01b600052604160045260246000fd5b600019811461093b5760010190565b638b78c6d819543303610f9757565b6382b429006000526004601cfdfea2646970667358221220bd003adabc835bfedb8068dcc99db1f9b963f84bf589633439c1f8d5dd5b8d0664736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 18 | "nonce": "0x0", 19 | "accessList": [] 20 | }, 21 | "additionalContracts": [], 22 | "isFixedGasLimit": false 23 | } 24 | ], 25 | "receipts": [], 26 | "libraries": [], 27 | "pending": [], 28 | "returns": {}, 29 | "timestamp": 1700622362, 30 | "chain": 84531, 31 | "multi": false, 32 | "commit": "2ba38ab" 33 | } -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/84531/run-1700622385.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": null, 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x9556E237316bf77aD61BE3E59C8271764564bcD0", 8 | "function": null, 9 | "arguments": [ 10 | "0xd7db685f44CCDe17C966A16528d94942b497EBfE" 11 | ], 12 | "transaction": { 13 | "type": "0x02", 14 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 15 | "gas": "0x137934", 16 | "value": "0x0", 17 | "data": "0x6080346100d257601f6110c938819003918201601f19168301916001600160401b038311848410176100d7578084926020946040528339810103126100d257516001600160a01b038116908181036100d25781638b78c6d81955600091827f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3638b78c6d8600c5281526020600c209060018254178092557f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600c5160601c9180a3604051610fdb90816100ee8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163183a4f6e1461082b5781631c10893f146107ca5781631cd64df4146107915781632569296214610746578163274c701a1461067e5781632de948071461064a5781632fac691a146105bb57816347e633801461059f5781634a4ee7b114610574578163514e62fc1461053b57816354d1f13d146104f5578163715018a6146104af57816374715f48146104805781638da5cb5b1461045357816394a5ab221461026b578163e5b046f214610240578163f04e283e146101c0578163f2fde38b1461015357508063fdab463d146101355763fee81cf4146100ff57600080fd5b346101315760203660031901126101315760209161011b610844565b9063389a75e1600c525281600c20549051908152f35b5080fd5b50346101315781600319360112610131576020906001549051908152f35b8390602036600319011261013157610169610844565b90610172610f88565b8160601b156101b5575060018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b83906020366003190112610131576101d6610844565b906101df610f88565b63389a75e1600c528183526020600c209081544211610235575082905560018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b90503461026757602036600319011261026757602092829135815280845220549051908152f35b8280fd5b919050346102675761027c36610890565b959492868a5289602052878a205480871015610443578161029c88610951565b0361043357600190818801808911610420576102b9828692610d59565b0361041057908b96959493929188889184999a8080048514811517156103fb57919392905b6101008210610323575b5050505050851161031f57610309958161030193610a52565b939092610e64565b03610312578280f35b5163a2dbd26960e01b8152fd5b8980fd5b909192939784831b858a16156000146103a8576002841b9081871c03610392578261034f8e928761092e565b1161038b5761038191610370610368610377939f610f79565b9e8a8c610a2c565b3590610f2e565b985b851c92610f79565b90939291936102de565b50976102e8565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103ee578b96959493926103e28c6103da6103d4610381966103e896610a1f565b98610e11565b9e8f91610a2c565b35610f2e565b98610379565b50819850849a95506102e8565b5050634e487b7160e01b8e5260118d5260248efd5b895163e5f5ab4d60e01b81528b90fd5b634e487b7160e01b8d5260118c5260248dfd5b885163616e11bd60e01b81528a90fd5b88516374842dbb60e01b81528a90fd5b505034610131578160031936011261013157638b78c6d8195490516001600160a01b039091168152602090f35b8284346104ac57806003193601126104ac57816001549182815280602052205482519182526020820152f35b80fd5b83806003193601126104ac576104c3610f88565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126104ac5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b505034610131578060031936011261013157602091610558610844565b90638b78c6d8600c525260243582600c20541615159051908152f35b50503660031901126104ac5761059c61058b610844565b610593610f88565b602435906108e7565b80f35b5050346101315781600319360112610131576020905160018152f35b83346104ac5760603660031901126104ac5767ffffffffffffffff602435818111610267576105ed903690850161085f565b9160443590811161064657610605903690860161085f565b929091638b78c6d8600c5233855260016020600c2054161561062d575b61059c949535610a6d565b638b78c6d81954331461062257856382b429008652601cfd5b8380fd5b50503461013157602036600319011261013157602091610668610844565b90638b78c6d8600c525281600c20549051908152f35b8383346101315761068e36610890565b8896949093303b156107425792879594926106d26106e4938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916109fb565b858103600319016064870152916109fb565b9060848301520381305afa9182610712575b505060209350610709575b519015158152f35b60019150610701565b67ffffffffffffffff821161072f575060209450825284806106f6565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126104ac5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b5050346101315780600319360112610131576020916107ae610844565b60243591638b78c6d8600c52528083600c205416149051908152f35b50503660031901126104ac576107de610844565b6107e6610f88565b638b78c6d8600c5281526020600c20602435815417809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe268380a380f35b839060203660031901126101315761059c9035336108e7565b600435906001600160a01b038216820361085a57565b600080fd5b9181601f8401121561085a5782359167ffffffffffffffff831161085a576020808501948460051b01011161085a57565b60a060031982011261085a57600435916024359167ffffffffffffffff9160443583811161085a57826108c59160040161085f565b9390939260643591821161085a576108df9160040161085f565b909160843590565b638b78c6d8600c526000526020600c2090815490811618809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3565b9190820180921161093b57565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161085a5760209260051b809284830137010190565b9190820391821161093b57565b9190811015610a3c5760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161085a57841161085a578160051b01920390565b9391906001938454938415610cec57610a868484610e1e565b8503610cdb5760009485528460205260408520549184610aa584610951565b03610cc95782881115610cb75781610abd8985610d59565b03610ca5576000199081860195808711610c915786610adc9187610a2c565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610c915787928791811c80821b81158c841b838304141715610c7d5790915b6101008110610bc7575b5050508611610bc357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610baf969461030193610a52565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610c3c576002841b80921c03610c2857610bf08e918561092e565b11610c2257610c10610c1a91610370610c0889610f79565b988a89610a2c565b975b8c1c91610f79565b919091610b68565b96610b72565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610c7357610c61610c5b610c1a93610c6d93610a1f565b94610e11565b9a6103e28c878d610a2c565b97610c12565b5082999750610b72565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b6040516360f2a33f60e11b8152600490fd5b60405163dc9e24a360e01b8152600490fd5b604051636582d14760e11b8152600490fd5b6040516234392960e11b8152600490fd5b9291509250610d475780610cff85610951565b03610ca557610d0d91610e1e565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b604051630770135160e01b8152600490fd5b90808214610e0a576000199180830190811161093b5760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b92830192831161093b5782610dfa610e0794610e01931916610951565b9216610951565b9061092e565b90565b5050600090565b801561093b576000190190565b91610e2882610e11565b9282610e3685809584610a2c565b35935b610e44575050909150565b610e50610e5e95610e11565b9485946103e2868486610a2c565b93610e39565b9294939190948215600014610ec35750905092905b81825b610e8557505050565b9091936000198501858111610eae57610ea6916103e2610c5b928587610a2c565b919082610e7c565b60246000634e487b7160e01b81526011600452fd5b6000198381019380851161093b5793929190610ee0848684610a2c565b359394855b610efd57505050610ef69250610f2e565b9290610e79565b90919293828601868111610eae57610f23916103e2610f1d928588610a2c565b95610e11565b949392919085610ee5565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610f635760405251902090565b634e487b7160e01b600052604160045260246000fd5b600019811461093b5760010190565b638b78c6d819543303610f9757565b6382b429006000526004601cfdfea2646970667358221220bd003adabc835bfedb8068dcc99db1f9b963f84bf589633439c1f8d5dd5b8d0664736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 18 | "nonce": "0x0", 19 | "accessList": [] 20 | }, 21 | "additionalContracts": [], 22 | "isFixedGasLimit": false 23 | } 24 | ], 25 | "receipts": [], 26 | "libraries": [], 27 | "pending": [], 28 | "returns": {}, 29 | "timestamp": 1700622385, 30 | "chain": 84531, 31 | "multi": false, 32 | "commit": "2ba38ab" 33 | } -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/534351/run-1703814775.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0xbc6dde1ae5e12b38a00f907654b11ebf328f4e037f8c75387e03318712aa3476", 5 | "transactionType": "CREATE", 6 | "contractName": "Witness", 7 | "contractAddress": "0x9556E237316bf77aD61BE3E59C8271764564bcD0", 8 | "function": null, 9 | "arguments": [ 10 | "0xd7db685f44CCDe17C966A16528d94942b497EBfE" 11 | ], 12 | "transaction": { 13 | "type": "0x00", 14 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 15 | "gas": "0x1367a7", 16 | "value": "0x0", 17 | "data": "0x6080346100d257601f6110b938819003918201601f19168301916001600160401b038311848410176100d7578084926020946040528339810103126100d257516001600160a01b038116908181036100d25781638b78c6d81955600091827f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3638b78c6d8600c5281526020600c209060018254178092557f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600c5160601c9180a3604051610fcb90816100ee8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c908163183a4f6e1461081c5781631c10893f146107bb5781631cd64df4146107825781632569296214610737578163274c701a1461066f5781632de948071461063b5781632fac691a146105ba57816347e633801461059e5781634a4ee7b114610573578163514e62fc1461053a57816354d1f13d146104f4578163715018a6146104ae57816374715f481461047f5781638da5cb5b1461045257816394a5ab221461026b578163e5b046f214610240578163f04e283e146101c0578163f2fde38b1461015357508063fdab463d146101355763fee81cf4146100ff57600080fd5b346101315760203660031901126101315760209161011b610835565b9063389a75e1600c525281600c20549051908152f35b5080fd5b50346101315781600319360112610131576020906001549051908152f35b8390602036600319011261013157610169610835565b90610172610f78565b8160601b156101b5575060018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b83906020366003190112610131576101d6610835565b906101df610f78565b63389a75e1600c528183526020600c209081544211610235575082905560018060a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b90503461026757602036600319011261026757602092829135815280845220549051908152f35b8280fd5b919050346102675761027c36610881565b959492868a5289602052878a205480871015610442578161029c88610942565b036104325760019081880180891161041f576102b9828692610d49565b0361040f57908b96959493929188889184999a8080048514811517156103fa57919392905b60ff8210610322575b5050505050851161031e57610308958161030093610a43565b939092610e54565b03610311578280f35b5163a2dbd26960e01b8152fd5b8980fd5b909192939784831b858a16156000146103a7576002841b9081871c03610391578261034e8e928761091f565b1161038a576103809161036f610367610376939f610f69565b9e8a8c610a1d565b3590610f1e565b985b851c92610f69565b90939291936102de565b50976102e7565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103ed578b96959493926103e18c6103d96103d3610380966103e796610a10565b98610e01565b9e8f91610a1d565b35610f1e565b98610378565b50819850849a95506102e7565b5050634e487b7160e01b8e5260118d5260248efd5b895163e5f5ab4d60e01b81528b90fd5b634e487b7160e01b8d5260118c5260248dfd5b885163616e11bd60e01b81528a90fd5b88516374842dbb60e01b81528a90fd5b505034610131578160031936011261013157638b78c6d8195490516001600160a01b039091168152602090f35b8284346104ab57806003193601126104ab57816001549182815280602052205482519182526020820152f35b80fd5b83806003193601126104ab576104c2610f78565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126104ab5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b505034610131578060031936011261013157602091610557610835565b90638b78c6d8600c525260243582600c20541615159051908152f35b50503660031901126104ab5761059b61058a610835565b610592610f78565b602435906108d8565b80f35b5050346101315781600319360112610131576020905160018152f35b83346104ab5760603660031901126104ab5767ffffffffffffffff602435818111610267576105ec9036908501610850565b91604435908111610637576106049036908601610850565b929091638b78c6d8600c5233855260016020600c2054161561062b5761059b949535610a5e565b856382b429008652601cfd5b8380fd5b50503461013157602036600319011261013157602091610659610835565b90638b78c6d8600c525281600c20549051908152f35b8383346101315761067f36610881565b8896949093303b156107335792879594926106c36106d5938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916109ec565b858103600319016064870152916109ec565b9060848301520381305afa9182610703575b5050602093506106fa575b519015158152f35b600191506106f2565b67ffffffffffffffff8211610720575060209450825284806106e7565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126104ab5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b50503461013157806003193601126101315760209161079f610835565b60243591638b78c6d8600c52528083600c205416149051908152f35b50503660031901126104ab576107cf610835565b6107d7610f78565b638b78c6d8600c5281526020600c20602435815417809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe268380a380f35b839060203660031901126101315761059b9035336108d8565b600435906001600160a01b038216820361084b57565b600080fd5b9181601f8401121561084b5782359167ffffffffffffffff831161084b576020808501948460051b01011161084b57565b60a060031982011261084b57600435916024359167ffffffffffffffff9160443583811161084b57826108b691600401610850565b9390939260643591821161084b576108d091600401610850565b909160843590565b638b78c6d8600c526000526020600c2090815490811618809155600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3565b9190820180921161092c57565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161084b5760209260051b809284830137010190565b9190820391821161092c57565b9190811015610a2d5760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161084b57841161084b578160051b01920390565b9391906001938454938415610cdc57610a778484610e0e565b8503610ccb5760009485528460205260408520549184610a9684610942565b03610cb95782881115610ca75781610aae8985610d49565b03610c95576000199081860195808711610c815786610acd9187610a1d565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610c815787928791811c80821b81158c841b838304141715610c6d5790915b60ff8110610bb7575b5050508611610bb357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610b9f969461030093610a43565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610c2c576002841b80921c03610c1857610be08e918561091f565b11610c1257610c00610c0a9161036f610bf889610f69565b988a89610a1d565b975b8c1c91610f69565b919091610b59565b96610b62565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610c6357610c51610c4b610c0a93610c5d93610a10565b94610e01565b9a6103e18c878d610a1d565b97610c02565b5082999750610b62565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b6040516360f2a33f60e11b8152600490fd5b60405163dc9e24a360e01b8152600490fd5b604051636582d14760e11b8152600490fd5b6040516234392960e11b8152600490fd5b9291509250610d375780610cef85610942565b03610c9557610cfd91610e0e565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b604051630770135160e01b8152600490fd5b90808214610dfa576000199180830190811161092c5760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b92830192831161092c5782610dea610df794610df1931916610942565b9216610942565b9061091f565b90565b5050600090565b801561092c576000190190565b91610e1882610e01565b9282610e2685809584610a1d565b35935b610e34575050909150565b610e40610e4e95610e01565b9485946103e1868486610a1d565b93610e29565b9294939190948215600014610eb35750905092905b81825b610e7557505050565b9091936000198501858111610e9e57610e96916103e1610c4b928587610a1d565b919082610e6c565b60246000634e487b7160e01b81526011600452fd5b6000198381019380851161092c5793929190610ed0848684610a1d565b359394855b610eed57505050610ee69250610f1e565b9290610e69565b90919293828601868111610e9e57610f13916103e1610f0d928588610a1d565b95610e01565b949392919085610ed5565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610f535760405251902090565b634e487b7160e01b600052604160045260246000fd5b600019811461092c5760010190565b638b78c6d819543303610f8757565b6382b429006000526004601cfdfea264697066735822122076e6626c9f943aa3c0c6ebd479862f3de9d5481e454cb7c7be72338dd28310c764736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 18 | "nonce": "0x0" 19 | }, 20 | "additionalContracts": [], 21 | "isFixedGasLimit": false 22 | } 23 | ], 24 | "receipts": [], 25 | "libraries": [], 26 | "pending": [ 27 | "0xbc6dde1ae5e12b38a00f907654b11ebf328f4e037f8c75387e03318712aa3476" 28 | ], 29 | "returns": {}, 30 | "timestamp": 1703814775, 31 | "chain": 534351, 32 | "multi": false, 33 | "commit": "91d2f2a" 34 | } -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/5/run-1695702573.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0x219b10c505b74e4a87e48249bda25381706a5965f99ff982e077b7ac935bc4e8", 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0xbF3DbB4C2614Dd769FAe5f4AD40edfF4d03E9646", 8 | "function": null, 9 | "arguments": ["0xd7db685f44CCDe17C966A16528d94942b497EBfE"], 10 | "transaction": { 11 | "type": "0x02", 12 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 13 | "gas": "0x133bdb", 14 | "value": "0x0", 15 | "data": "0x60803461008e57601f6110c038819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101690816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610721578063274c701a146106585780632fac691a146105ef57806354d1f13d146105a9578063715018a61461056357806374715f48146105345780638da5cb5b1461050757806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107f9565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107f9565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a2565b959492868a5289602052878a2054808710156104c4578161025e88610839565b03610468576001908188018089116104555761027b828692610db1565b036103f857908b96959493929188889184999a8080048514811517156103e357919392905b610100821061030b575b50505050508511610307576102cb95816102c39361099e565b939092610ebc565b036102d4578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610390576002841b9081871c0361037a57826103378e9287610816565b11610373576103699161035861035061035f939f610fd1565b9e8a8c610978565b3590610f86565b985b851c92610fd1565b90939291936102a0565b50976102aa565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d6578b96959493926103ca8c6103c26103bc610369966103d09661096b565b98610e69565b9e8f91610978565b35610f86565b98610361565b50819850849a95506102aa565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610560578060031936011261056057816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610560576105776107f9565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105605763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610623903690830161076c565b60449291923593841161065457610640610651943690840161076c565b93909261064b6107f9565b356109b9565b80f35b8480fd5b5091903461010d57610669366107a2565b8896949093303b1561071d5792879594926106ad6106bf938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e3565b858103600319016064870152916108e3565b9060848301520381305afa91826106ed575b5050602093506106e4575b519015158152f35b600191506106dc565b67ffffffffffffffff821161070a575060209450825238806106d1565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105605763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079d5782359167ffffffffffffffff831161079d576020808501948460051b01011161079d57565b600080fd5b60a060031982011261079d57600435916024359167ffffffffffffffff9160443583811161079d57826107d79160040161076c565b9390939260643591821161079d576107f19160040161076c565b909160843590565b638b78c6d81954330361080857565b6382b429006000526004601cfd5b9190820180921161082357565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079d5760209260051b809284830137010190565b1561090e57565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082357565b91908110156109885760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079d57841161079d578160051b01920390565b9391906001938454938415610d14576109d28484610e76565b8503610cb857600094855284602052604085205491846109f184610839565b03610c575782881115610bf557610a1282610a0c8a86610db1565b14610907565b6000199081860195808711610be15786610a2c9187610978565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610be15787928791811c80821b81158c841b838304141715610bcd5790915b6101008110610b17575b5050508611610b1357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610aff96946102c39361099e565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b8c576002841b80921c03610b7857610b408e9185610816565b11610b7257610b60610b6a91610358610b5889610fd1565b988a89610978565b975b8c1c91610fd1565b919091610ab8565b96610ac2565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bc357610bb1610bab610b6a93610bbd9361096b565b94610e69565b9a6103ca8c878d610978565b97610b62565b5082999750610ac2565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9291509250610d6d57610d3391610d2e82610a0c87610839565b610e76565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6257600019918083019081116108235760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108235782610e52610e5f94610e59931916610839565b9216610839565b90610816565b90565b5050600090565b8015610823576000190190565b91610e8082610e69565b9282610e8e85809584610978565b35935b610e9c575050909150565b610ea8610eb695610e69565b9485946103ca868486610978565b93610e91565b9294939190948215600014610f1b5750905092905b81825b610edd57505050565b9091936000198501858111610f0657610efe916103ca610bab928587610978565b919082610ed4565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108235793929190610f38848684610978565b359394855b610f5557505050610f4e9250610f86565b9290610ed1565b90919293828601868111610f0657610f7b916103ca610f75928588610978565b95610e69565b949392919085610f3d565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fbb5760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610823576001019056fea2646970667358221220f22ed5946bc45e57084a0f18fc60f01755af488448af4a8b7ca4d733c153c14164736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 16 | "nonce": "0xde", 17 | "accessList": [] 18 | }, 19 | "additionalContracts": [], 20 | "isFixedGasLimit": false 21 | } 22 | ], 23 | "receipts": [], 24 | "libraries": [], 25 | "pending": [ 26 | "0x219b10c505b74e4a87e48249bda25381706a5965f99ff982e077b7ac935bc4e8" 27 | ], 28 | "returns": {}, 29 | "timestamp": 1695702573, 30 | "chain": 5, 31 | "multi": false, 32 | "commit": "02abe0e" 33 | } 34 | -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/5/run-1695702793.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0x1f067168cd3f3bad1ce043366b984407d712f8cc921022870223da000f20e5a1", 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x7c1b74925E21b53f59Dd0056164ea2c32ed5c2A0", 8 | "function": null, 9 | "arguments": ["0xd7db685f44CCDe17C966A16528d94942b497EBfE"], 10 | "transaction": { 11 | "type": "0x02", 12 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 13 | "gas": "0x133bdb", 14 | "value": "0x0", 15 | "data": "0x60803461008e57601f6110c038819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101690816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610721578063274c701a146106585780632fac691a146105ef57806354d1f13d146105a9578063715018a61461056357806374715f48146105345780638da5cb5b1461050757806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107f9565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107f9565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a2565b959492868a5289602052878a2054808710156104c4578161025e88610839565b03610468576001908188018089116104555761027b828692610db1565b036103f857908b96959493929188889184999a8080048514811517156103e357919392905b610100821061030b575b50505050508511610307576102cb95816102c39361099e565b939092610ebc565b036102d4578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610390576002841b9081871c0361037a57826103378e9287610816565b11610373576103699161035861035061035f939f610fd1565b9e8a8c610978565b3590610f86565b985b851c92610fd1565b90939291936102a0565b50976102aa565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d6578b96959493926103ca8c6103c26103bc610369966103d09661096b565b98610e69565b9e8f91610978565b35610f86565b98610361565b50819850849a95506102aa565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610560578060031936011261056057816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610560576105776107f9565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105605763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610623903690830161076c565b60449291923593841161065457610640610651943690840161076c565b93909261064b6107f9565b356109b9565b80f35b8480fd5b5091903461010d57610669366107a2565b8896949093303b1561071d5792879594926106ad6106bf938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e3565b858103600319016064870152916108e3565b9060848301520381305afa91826106ed575b5050602093506106e4575b519015158152f35b600191506106dc565b67ffffffffffffffff821161070a575060209450825238806106d1565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105605763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079d5782359167ffffffffffffffff831161079d576020808501948460051b01011161079d57565b600080fd5b60a060031982011261079d57600435916024359167ffffffffffffffff9160443583811161079d57826107d79160040161076c565b9390939260643591821161079d576107f19160040161076c565b909160843590565b638b78c6d81954330361080857565b6382b429006000526004601cfd5b9190820180921161082357565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079d5760209260051b809284830137010190565b1561090e57565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082357565b91908110156109885760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079d57841161079d578160051b01920390565b9391906001938454938415610d14576109d28484610e76565b8503610cb857600094855284602052604085205491846109f184610839565b03610c575782881115610bf557610a1282610a0c8a86610db1565b14610907565b6000199081860195808711610be15786610a2c9187610978565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610be15787928791811c80821b81158c841b838304141715610bcd5790915b6101008110610b17575b5050508611610b1357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610aff96946102c39361099e565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b8c576002841b80921c03610b7857610b408e9185610816565b11610b7257610b60610b6a91610358610b5889610fd1565b988a89610978565b975b8c1c91610fd1565b919091610ab8565b96610ac2565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bc357610bb1610bab610b6a93610bbd9361096b565b94610e69565b9a6103ca8c878d610978565b97610b62565b5082999750610ac2565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9291509250610d6d57610d3391610d2e82610a0c87610839565b610e76565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6257600019918083019081116108235760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108235782610e52610e5f94610e59931916610839565b9216610839565b90610816565b90565b5050600090565b8015610823576000190190565b91610e8082610e69565b9282610e8e85809584610978565b35935b610e9c575050909150565b610ea8610eb695610e69565b9485946103ca868486610978565b93610e91565b9294939190948215600014610f1b5750905092905b81825b610edd57505050565b9091936000198501858111610f0657610efe916103ca610bab928587610978565b919082610ed4565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108235793929190610f38848684610978565b359394855b610f5557505050610f4e9250610f86565b9290610ed1565b90919293828601868111610f0657610f7b916103ca610f75928588610978565b95610e69565b949392919085610f3d565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fbb5760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610823576001019056fea2646970667358221220f22ed5946bc45e57084a0f18fc60f01755af488448af4a8b7ca4d733c153c14164736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 16 | "nonce": "0xe1", 17 | "accessList": [] 18 | }, 19 | "additionalContracts": [], 20 | "isFixedGasLimit": false 21 | } 22 | ], 23 | "receipts": [], 24 | "libraries": [], 25 | "pending": [ 26 | "0x1f067168cd3f3bad1ce043366b984407d712f8cc921022870223da000f20e5a1" 27 | ], 28 | "returns": {}, 29 | "timestamp": 1695702793, 30 | "chain": 5, 31 | "multi": false, 32 | "commit": "8234206" 33 | } 34 | -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/5/run-1695704696.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0x1c9f4e0d90eb465c218f627625e88f92d2aba21b7eb0ec1483582f453c08ed21", 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x6C02784460a1d7e33936De23d7ebc76e33b28102", 8 | "function": null, 9 | "arguments": ["0xd7db685f44CCDe17C966A16528d94942b497EBfE"], 10 | "transaction": { 11 | "type": "0x02", 12 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 13 | "gas": "0x133bdb", 14 | "value": "0x0", 15 | "data": "0x60803461008e57601f6110c038819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101690816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610721578063274c701a146106585780632fac691a146105ef57806354d1f13d146105a9578063715018a61461056357806374715f48146105345780638da5cb5b1461050757806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107f9565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107f9565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a2565b959492868a5289602052878a2054808710156104c4578161025e88610839565b03610468576001908188018089116104555761027b828692610db1565b036103f857908b96959493929188889184999a8080048514811517156103e357919392905b610100821061030b575b50505050508511610307576102cb95816102c39361099e565b939092610ebc565b036102d4578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610390576002841b9081871c0361037a57826103378e9287610816565b11610373576103699161035861035061035f939f610fd1565b9e8a8c610978565b3590610f86565b985b851c92610fd1565b90939291936102a0565b50976102aa565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d6578b96959493926103ca8c6103c26103bc610369966103d09661096b565b98610e69565b9e8f91610978565b35610f86565b98610361565b50819850849a95506102aa565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610560578060031936011261056057816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610560576105776107f9565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105605763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610623903690830161076c565b60449291923593841161065457610640610651943690840161076c565b93909261064b6107f9565b356109b9565b80f35b8480fd5b5091903461010d57610669366107a2565b8896949093303b1561071d5792879594926106ad6106bf938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e3565b858103600319016064870152916108e3565b9060848301520381305afa91826106ed575b5050602093506106e4575b519015158152f35b600191506106dc565b67ffffffffffffffff821161070a575060209450825238806106d1565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105605763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079d5782359167ffffffffffffffff831161079d576020808501948460051b01011161079d57565b600080fd5b60a060031982011261079d57600435916024359167ffffffffffffffff9160443583811161079d57826107d79160040161076c565b9390939260643591821161079d576107f19160040161076c565b909160843590565b638b78c6d81954330361080857565b6382b429006000526004601cfd5b9190820180921161082357565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079d5760209260051b809284830137010190565b1561090e57565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082357565b91908110156109885760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079d57841161079d578160051b01920390565b9391906001938454938415610d14576109d28484610e76565b8503610cb857600094855284602052604085205491846109f184610839565b03610c575782881115610bf557610a1282610a0c8a86610db1565b14610907565b6000199081860195808711610be15786610a2c9187610978565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610be15787928791811c80821b81158c841b838304141715610bcd5790915b6101008110610b17575b5050508611610b1357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610aff96946102c39361099e565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b8c576002841b80921c03610b7857610b408e9185610816565b11610b7257610b60610b6a91610358610b5889610fd1565b988a89610978565b975b8c1c91610fd1565b919091610ab8565b96610ac2565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bc357610bb1610bab610b6a93610bbd9361096b565b94610e69565b9a6103ca8c878d610978565b97610b62565b5082999750610ac2565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9291509250610d6d57610d3391610d2e82610a0c87610839565b610e76565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6257600019918083019081116108235760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108235782610e52610e5f94610e59931916610839565b9216610839565b90610816565b90565b5050600090565b8015610823576000190190565b91610e8082610e69565b9282610e8e85809584610978565b35935b610e9c575050909150565b610ea8610eb695610e69565b9485946103ca868486610978565b93610e91565b9294939190948215600014610f1b5750905092905b81825b610edd57505050565b9091936000198501858111610f0657610efe916103ca610bab928587610978565b919082610ed4565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108235793929190610f38848684610978565b359394855b610f5557505050610f4e9250610f86565b9290610ed1565b90919293828601868111610f0657610f7b916103ca610f75928588610978565b95610e69565b949392919085610f3d565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fbb5760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610823576001019056fea2646970667358221220f22ed5946bc45e57084a0f18fc60f01755af488448af4a8b7ca4d733c153c14164736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 16 | "nonce": "0xe5", 17 | "accessList": [] 18 | }, 19 | "additionalContracts": [], 20 | "isFixedGasLimit": false 21 | } 22 | ], 23 | "receipts": [], 24 | "libraries": [], 25 | "pending": [ 26 | "0x1c9f4e0d90eb465c218f627625e88f92d2aba21b7eb0ec1483582f453c08ed21" 27 | ], 28 | "returns": {}, 29 | "timestamp": 1695704696, 30 | "chain": 5, 31 | "multi": false, 32 | "commit": "e50a327" 33 | } 34 | -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/5/run-1695709315.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0xd724160a3d1cb5f5c7cbf3322183d7134a6618855e40c753be11da446573233b", 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0xCadfC5C0d0019e8B3ef0F3110957Ead0a0385E3e", 8 | "function": null, 9 | "arguments": ["0xd7db685f44CCDe17C966A16528d94942b497EBfE"], 10 | "transaction": { 11 | "type": "0x02", 12 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 13 | "gas": "0x133bdb", 14 | "value": "0x0", 15 | "data": "0x60803461008e57601f6110c038819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101690816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610721578063274c701a146106585780632fac691a146105ef57806354d1f13d146105a9578063715018a61461056357806374715f48146105345780638da5cb5b1461050757806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107f9565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107f9565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a2565b959492868a5289602052878a2054808710156104c4578161025e88610839565b03610468576001908188018089116104555761027b828692610db1565b036103f857908b96959493929188889184999a8080048514811517156103e357919392905b610100821061030b575b50505050508511610307576102cb95816102c39361099e565b939092610ebc565b036102d4578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610390576002841b9081871c0361037a57826103378e9287610816565b11610373576103699161035861035061035f939f610fd1565b9e8a8c610978565b3590610f86565b985b851c92610fd1565b90939291936102a0565b50976102aa565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d6578b96959493926103ca8c6103c26103bc610369966103d09661096b565b98610e69565b9e8f91610978565b35610f86565b98610361565b50819850849a95506102aa565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610560578060031936011261056057816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610560576105776107f9565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105605763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610623903690830161076c565b60449291923593841161065457610640610651943690840161076c565b93909261064b6107f9565b356109b9565b80f35b8480fd5b5091903461010d57610669366107a2565b8896949093303b1561071d5792879594926106ad6106bf938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e3565b858103600319016064870152916108e3565b9060848301520381305afa91826106ed575b5050602093506106e4575b519015158152f35b600191506106dc565b67ffffffffffffffff821161070a575060209450825238806106d1565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105605763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079d5782359167ffffffffffffffff831161079d576020808501948460051b01011161079d57565b600080fd5b60a060031982011261079d57600435916024359167ffffffffffffffff9160443583811161079d57826107d79160040161076c565b9390939260643591821161079d576107f19160040161076c565b909160843590565b638b78c6d81954330361080857565b6382b429006000526004601cfd5b9190820180921161082357565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079d5760209260051b809284830137010190565b1561090e57565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082357565b91908110156109885760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079d57841161079d578160051b01920390565b9391906001938454938415610d14576109d28484610e76565b8503610cb857600094855284602052604085205491846109f184610839565b03610c575782881115610bf557610a1282610a0c8a86610db1565b14610907565b6000199081860195808711610be15786610a2c9187610978565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610be15787928791811c80821b81158c841b838304141715610bcd5790915b6101008110610b17575b5050508611610b1357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610aff96946102c39361099e565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b8c576002841b80921c03610b7857610b408e9185610816565b11610b7257610b60610b6a91610358610b5889610fd1565b988a89610978565b975b8c1c91610fd1565b919091610ab8565b96610ac2565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bc357610bb1610bab610b6a93610bbd9361096b565b94610e69565b9a6103ca8c878d610978565b97610b62565b5082999750610ac2565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9291509250610d6d57610d3391610d2e82610a0c87610839565b610e76565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6257600019918083019081116108235760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108235782610e52610e5f94610e59931916610839565b9216610839565b90610816565b90565b5050600090565b8015610823576000190190565b91610e8082610e69565b9282610e8e85809584610978565b35935b610e9c575050909150565b610ea8610eb695610e69565b9485946103ca868486610978565b93610e91565b9294939190948215600014610f1b5750905092905b81825b610edd57505050565b9091936000198501858111610f0657610efe916103ca610bab928587610978565b919082610ed4565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108235793929190610f38848684610978565b359394855b610f5557505050610f4e9250610f86565b9290610ed1565b90919293828601868111610f0657610f7b916103ca610f75928588610978565b95610e69565b949392919085610f3d565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fbb5760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610823576001019056fea2646970667358221220f22ed5946bc45e57084a0f18fc60f01755af488448af4a8b7ca4d733c153c14164736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 16 | "nonce": "0x196", 17 | "accessList": [] 18 | }, 19 | "additionalContracts": [], 20 | "isFixedGasLimit": false 21 | } 22 | ], 23 | "receipts": [], 24 | "libraries": [], 25 | "pending": [ 26 | "0xd724160a3d1cb5f5c7cbf3322183d7134a6618855e40c753be11da446573233b" 27 | ], 28 | "returns": {}, 29 | "timestamp": 1695709315, 30 | "chain": 5, 31 | "multi": false, 32 | "commit": "357d6f7" 33 | } 34 | -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/5/run-1695720511.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0xbca68c279bc4415a67a0375bac4787877bab0a5a2006c49237fb4904bc22f699", 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x8fE474E5c481e9330881b575677f121A7520Dd2B", 8 | "function": null, 9 | "arguments": ["0xd7db685f44CCDe17C966A16528d94942b497EBfE"], 10 | "transaction": { 11 | "type": "0x02", 12 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 13 | "gas": "0x133bdb", 14 | "value": "0x0", 15 | "data": "0x60803461008e57601f6110c038819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101690816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610721578063274c701a146106585780632fac691a146105ef57806354d1f13d146105a9578063715018a61461056357806374715f48146105345780638da5cb5b1461050757806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107f9565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107f9565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a2565b959492868a5289602052878a2054808710156104c4578161025e88610839565b03610468576001908188018089116104555761027b828692610db1565b036103f857908b96959493929188889184999a8080048514811517156103e357919392905b610100821061030b575b50505050508511610307576102cb95816102c39361099e565b939092610ebc565b036102d4578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610390576002841b9081871c0361037a57826103378e9287610816565b11610373576103699161035861035061035f939f610fd1565b9e8a8c610978565b3590610f86565b985b851c92610fd1565b90939291936102a0565b50976102aa565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d6578b96959493926103ca8c6103c26103bc610369966103d09661096b565b98610e69565b9e8f91610978565b35610f86565b98610361565b50819850849a95506102aa565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610560578060031936011261056057816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610560576105776107f9565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105605763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610623903690830161076c565b60449291923593841161065457610640610651943690840161076c565b93909261064b6107f9565b356109b9565b80f35b8480fd5b5091903461010d57610669366107a2565b8896949093303b1561071d5792879594926106ad6106bf938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e3565b858103600319016064870152916108e3565b9060848301520381305afa91826106ed575b5050602093506106e4575b519015158152f35b600191506106dc565b67ffffffffffffffff821161070a575060209450825238806106d1565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105605763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079d5782359167ffffffffffffffff831161079d576020808501948460051b01011161079d57565b600080fd5b60a060031982011261079d57600435916024359167ffffffffffffffff9160443583811161079d57826107d79160040161076c565b9390939260643591821161079d576107f19160040161076c565b909160843590565b638b78c6d81954330361080857565b6382b429006000526004601cfd5b9190820180921161082357565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079d5760209260051b809284830137010190565b1561090e57565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082357565b91908110156109885760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079d57841161079d578160051b01920390565b9391906001938454938415610d14576109d28484610e76565b8503610cb857600094855284602052604085205491846109f184610839565b03610c575782881115610bf557610a1282610a0c8a86610db1565b14610907565b6000199081860195808711610be15786610a2c9187610978565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610be15787928791811c80821b81158c841b838304141715610bcd5790915b6101008110610b17575b5050508611610b1357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610aff96946102c39361099e565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b8c576002841b80921c03610b7857610b408e9185610816565b11610b7257610b60610b6a91610358610b5889610fd1565b988a89610978565b975b8c1c91610fd1565b919091610ab8565b96610ac2565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bc357610bb1610bab610b6a93610bbd9361096b565b94610e69565b9a6103ca8c878d610978565b97610b62565b5082999750610ac2565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9291509250610d6d57610d3391610d2e82610a0c87610839565b610e76565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6257600019918083019081116108235760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108235782610e52610e5f94610e59931916610839565b9216610839565b90610816565b90565b5050600090565b8015610823576000190190565b91610e8082610e69565b9282610e8e85809584610978565b35935b610e9c575050909150565b610ea8610eb695610e69565b9485946103ca868486610978565b93610e91565b9294939190948215600014610f1b5750905092905b81825b610edd57505050565b9091936000198501858111610f0657610efe916103ca610bab928587610978565b919082610ed4565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108235793929190610f38848684610978565b359394855b610f5557505050610f4e9250610f86565b9290610ed1565b90919293828601868111610f0657610f7b916103ca610f75928588610978565b95610e69565b949392919085610f3d565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fbb5760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610823576001019056fea2646970667358221220f22ed5946bc45e57084a0f18fc60f01755af488448af4a8b7ca4d733c153c14164736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 16 | "nonce": "0x27b", 17 | "accessList": [] 18 | }, 19 | "additionalContracts": [], 20 | "isFixedGasLimit": false 21 | } 22 | ], 23 | "receipts": [], 24 | "libraries": [], 25 | "pending": [ 26 | "0xbca68c279bc4415a67a0375bac4787877bab0a5a2006c49237fb4904bc22f699" 27 | ], 28 | "returns": {}, 29 | "timestamp": 1695720511, 30 | "chain": 5, 31 | "multi": false, 32 | "commit": "3ee887c" 33 | } 34 | -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/5/run-1696377332.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0x7434ddc81e620f9e10589af67572eefde58a6fa00f285c5ca12da687da4cea95", 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0xc3D5148a3f840AF893245190104375E88B896155", 8 | "function": null, 9 | "arguments": ["0xd7db685f44CCDe17C966A16528d94942b497EBfE"], 10 | "transaction": { 11 | "type": "0x02", 12 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 13 | "gas": "0x133bdb", 14 | "value": "0x0", 15 | "data": "0x60803461008e57601f6110c038819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101690816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610721578063274c701a146106585780632fac691a146105ef57806354d1f13d146105a9578063715018a61461056357806374715f48146105345780638da5cb5b1461050757806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107f9565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107f9565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a2565b959492868a5289602052878a2054808710156104c4578161025e88610839565b03610468576001908188018089116104555761027b828692610db1565b036103f857908b96959493929188889184999a8080048514811517156103e357919392905b610100821061030b575b50505050508511610307576102cb95816102c39361099e565b939092610ebc565b036102d4578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610390576002841b9081871c0361037a57826103378e9287610816565b11610373576103699161035861035061035f939f610fd1565b9e8a8c610978565b3590610f86565b985b851c92610fd1565b90939291936102a0565b50976102aa565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d6578b96959493926103ca8c6103c26103bc610369966103d09661096b565b98610e69565b9e8f91610978565b35610f86565b98610361565b50819850849a95506102aa565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610560578060031936011261056057816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610560576105776107f9565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105605763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610623903690830161076c565b60449291923593841161065457610640610651943690840161076c565b93909261064b6107f9565b356109b9565b80f35b8480fd5b5091903461010d57610669366107a2565b8896949093303b1561071d5792879594926106ad6106bf938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e3565b858103600319016064870152916108e3565b9060848301520381305afa91826106ed575b5050602093506106e4575b519015158152f35b600191506106dc565b67ffffffffffffffff821161070a575060209450825238806106d1565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105605763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079d5782359167ffffffffffffffff831161079d576020808501948460051b01011161079d57565b600080fd5b60a060031982011261079d57600435916024359167ffffffffffffffff9160443583811161079d57826107d79160040161076c565b9390939260643591821161079d576107f19160040161076c565b909160843590565b638b78c6d81954330361080857565b6382b429006000526004601cfd5b9190820180921161082357565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079d5760209260051b809284830137010190565b1561090e57565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082357565b91908110156109885760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079d57841161079d578160051b01920390565b9391906001938454938415610d14576109d28484610e76565b8503610cb857600094855284602052604085205491846109f184610839565b03610c575782881115610bf557610a1282610a0c8a86610db1565b14610907565b6000199081860195808711610be15786610a2c9187610978565b35938881190181167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c63d76453e004161a17928101908111610be15787928791811c80821b81158c841b838304141715610bcd5790915b6101008110610b17575b5050508611610b1357827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610aff96946102c39361099e565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b8c576002841b80921c03610b7857610b408e9185610816565b11610b7257610b60610b6a91610358610b5889610fd1565b988a89610978565b975b8c1c91610fd1565b919091610ab8565b96610ac2565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bc357610bb1610bab610b6a93610bbd9361096b565b94610e69565b9a6103ca8c878d610978565b97610b62565b5082999750610ac2565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9291509250610d6d57610d3391610d2e82610a0c87610839565b610e76565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6257600019918083019081116108235760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108235782610e52610e5f94610e59931916610839565b9216610839565b90610816565b90565b5050600090565b8015610823576000190190565b91610e8082610e69565b9282610e8e85809584610978565b35935b610e9c575050909150565b610ea8610eb695610e69565b9485946103ca868486610978565b93610e91565b9294939190948215600014610f1b5750905092905b81825b610edd57505050565b9091936000198501858111610f0657610efe916103ca610bab928587610978565b919082610ed4565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108235793929190610f38848684610978565b359394855b610f5557505050610f4e9250610f86565b9290610ed1565b90919293828601868111610f0657610f7b916103ca610f75928588610978565b95610e69565b949392919085610f3d565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fbb5760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610823576001019056fea2646970667358221220f22ed5946bc45e57084a0f18fc60f01755af488448af4a8b7ca4d733c153c14164736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 16 | "nonce": "0x447f", 17 | "accessList": [] 18 | }, 19 | "additionalContracts": [], 20 | "isFixedGasLimit": false 21 | } 22 | ], 23 | "receipts": [], 24 | "libraries": [], 25 | "pending": [ 26 | "0x7434ddc81e620f9e10589af67572eefde58a6fa00f285c5ca12da687da4cea95" 27 | ], 28 | "returns": {}, 29 | "timestamp": 1696377332, 30 | "chain": 5, 31 | "multi": false, 32 | "commit": "c65764c" 33 | } 34 | -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/5/run-1695694078.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0x2c596fdca30949c36a13db6eb1493cd56b2d85ab5cb30ea1202de5302c427ca2", 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x18D69D4Bb14cf9BCa184b0A911e4cE7C215b291D", 8 | "function": null, 9 | "arguments": ["0xd7db685f44CCDe17C966A16528d94942b497EBfE"], 10 | "transaction": { 11 | "type": "0x02", 12 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 13 | "gas": "0x133f25", 14 | "value": "0x0", 15 | "data": "0x60803461008e57601f6110c338819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101990816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610721578063274c701a146106585780632fac691a146105ef57806354d1f13d146105a9578063715018a61461056357806374715f48146105345780638da5cb5b1461050757806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107f9565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107f9565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a2565b959492868a5289602052878a2054808710156104c4578161025e88610839565b03610468576001908188018089116104555761027b828692610db4565b036103f857908b96959493929188889184999a8080048514811517156103e357919392905b610100821061030b575b50505050508511610307576102cb95816102c39361099e565b939092610ebf565b036102d4578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610390576002841b9081871c0361037a57826103378e9287610816565b11610373576103699161035861035061035f939f610fd4565b9e8a8c610978565b3590610f89565b985b851c92610fd4565b90939291936102a0565b50976102aa565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d6578b96959493926103ca8c6103c26103bc610369966103d09661096b565b98610e6c565b9e8f91610978565b35610f89565b98610361565b50819850849a95506102aa565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610560578060031936011261056057816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610560576105776107f9565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105605763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610623903690830161076c565b60449291923593841161065457610640610651943690840161076c565b93909261064b6107f9565b356109b9565b80f35b8480fd5b5091903461010d57610669366107a2565b8896949093303b1561071d5792879594926106ad6106bf938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e3565b858103600319016064870152916108e3565b9060848301520381305afa91826106ed575b5050602093506106e4575b519015158152f35b600191506106dc565b67ffffffffffffffff821161070a575060209450825238806106d1565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105605763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079d5782359167ffffffffffffffff831161079d576020808501948460051b01011161079d57565b600080fd5b60a060031982011261079d57600435916024359167ffffffffffffffff9160443583811161079d57826107d79160040161076c565b9390939260643591821161079d576107f19160040161076c565b909160843590565b638b78c6d81954330361080857565b6382b429006000526004601cfd5b9190820180921161082357565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079d5760209260051b809284830137010190565b1561090e57565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082357565b91908110156109885760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079d57841161079d578160051b01920390565b9391906001938454938415610d17576109d28484610e79565b8503610cbb57600094855284602052604085205491846109f184610839565b03610c5a5782881115610bf857610a1282610a0c8a86610db4565b14610907565b6000199081860195808711610be45786610a2c9187610978565b35938881190181167e011c021d0e18031e16140f191104081f1b0d17151310071a0c12060b050a0963077cb53160e01b826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c0260fb1c1a17928101908111610be45787928791811c80821b81158c841b838304141715610bd05790915b6101008110610b1a575b5050508611610b1657827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610b0296946102c39361099e565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b8f576002841b80921c03610b7b57610b438e9185610816565b11610b7557610b63610b6d91610358610b5b89610fd4565b988a89610978565b975b8c1c91610fd4565b919091610abb565b96610ac5565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bc657610bb4610bae610b6d93610bc09361096b565b94610e6c565b9a6103ca8c878d610978565b97610b65565b5082999750610ac5565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9291509250610d7057610d3691610d3182610a0c87610839565b610e79565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6557600019918083019081116108235760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108235782610e55610e6294610e5c931916610839565b9216610839565b90610816565b90565b5050600090565b8015610823576000190190565b91610e8382610e6c565b9282610e9185809584610978565b35935b610e9f575050909150565b610eab610eb995610e6c565b9485946103ca868486610978565b93610e94565b9294939190948215600014610f1e5750905092905b81825b610ee057505050565b9091936000198501858111610f0957610f01916103ca610bae928587610978565b919082610ed7565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108235793929190610f3b848684610978565b359394855b610f5857505050610f519250610f89565b9290610ed4565b90919293828601868111610f0957610f7e916103ca610f78928588610978565b95610e6c565b949392919085610f40565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fbe5760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610823576001019056fea264697066735822122046a836a622f5c33d0c557b03bfd0d70e7908f67191142835ddfb800ed95b9ffd64736f6c63430008150033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 16 | "nonce": "0xda", 17 | "accessList": [] 18 | }, 19 | "additionalContracts": [], 20 | "isFixedGasLimit": false 21 | } 22 | ], 23 | "receipts": [], 24 | "libraries": [], 25 | "pending": [ 26 | "0x2c596fdca30949c36a13db6eb1493cd56b2d85ab5cb30ea1202de5302c427ca2" 27 | ], 28 | "returns": {}, 29 | "timestamp": 1695694078, 30 | "chain": 5, 31 | "multi": false, 32 | "commit": "7b06431" 33 | } 34 | -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/5/run-1694729441.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0xd068959f87127ab3330ba2e001b44d374b8e64f095ca239fe00d632a993a4890", 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x0BfB09958D991B3D80104B3Ce210b396FB5378fC", 8 | "function": null, 9 | "arguments": ["0xd7db685f44CCDe17C966A16528d94942b497EBfE"], 10 | "transaction": { 11 | "type": "0x02", 12 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 13 | "gas": "0x1345aa", 14 | "value": "0x0", 15 | "data": "0x60803461008e57601f6110c938819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101f90816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610723578063274c701a1461065a5780632fac691a146105f157806354d1f13d146105ab578063715018a61461056557806374715f48146105365780638da5cb5b1461050957806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107fb565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107fb565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a4565b959492868a5289602052878a205493848710156104c6578161025f8861083b565b0361046a576001908188018089116104575761027c878692610dba565b036103fa57908b9695949392919488889184999a8080048514811517156103e557919392905b610100821061030d575b50505050508511610309576102cd95816102c5936109a0565b939092610ec5565b036102d6578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610392576002841b9081871c0361037c57826103398e9287610818565b116103755761036b9161035a610352610361939f610fda565b9e8a8c61097a565b3590610f8f565b985b851c92610fda565b90939291936102a2565b50976102ac565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d8578b96959493926103cc8c6103c46103be61036b966103d29661096d565b98610e72565b9e8f9161097a565b35610f8f565b98610363565b50819850849a95506102ac565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610562578060031936011261056257816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610562576105796107fb565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105625763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610625903690830161076e565b60449291923593841161065657610642610653943690840161076e565b93909261064d6107fb565b356109bb565b80f35b8480fd5b5091903461010d5761066b366107a4565b8896949093303b1561071f5792879594926106af6106c1938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e5565b858103600319016064870152916108e5565b9060848301520381305afa91826106ef575b5050602093506106e6575b519015158152f35b600191506106de565b67ffffffffffffffff821161070c575060209450825238806106d3565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105625763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079f5782359167ffffffffffffffff831161079f576020808501948460051b01011161079f57565b600080fd5b60a060031982011261079f57600435916024359167ffffffffffffffff9160443583811161079f57826107d99160040161076e565b9390939260643591821161079f576107f39160040161076e565b909160843590565b638b78c6d81954330361080a57565b6382b429006000526004601cfd5b9190820180921161082557565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079f5760209260051b809284830137010190565b1561091057565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082557565b919081101561098a5760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079f57841161079f578160051b01920390565b939192906001938454938415610d1d576109d58284610e7f565b8503610cc1576000948552846020526040852054826109f38261083b565b03610c605780881115610bfe57610a1482610a0e8a84610dba565b14610909565b6000199483860193808511610bea5784610a2e918761097a565b35918881190181167e011c021d0e18031e16140f191104081f1b0d17151310071a0c12060b050a0963077cb53160e01b826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c0260fb1c1a17968101908111610bea579395919387928791811c80821b81158c841b838304141715610bd65790915b6101008110610b20575b5050508611610b1c57827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610b0896946102c5936109a0565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b95576002841b80921c03610b8157610b498e9185610818565b11610b7b57610b69610b739161035a610b6189610fda565b988a8961097a565b975b8c1c91610fda565b919091610ac1565b96610acb565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bcc57610bba610bb4610b7393610bc69361096d565b94610e72565b9a6103cc8c878d61097a565b97610b6b565b5082999750610acb565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9293509050610d7657610d3c91610d3782610a0e8761083b565b610e7f565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6b57600019918083019081116108255760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108255782610e5b610e6894610e6293191661083b565b921661083b565b90610818565b90565b5050600090565b8015610825576000190190565b91610e8982610e72565b9282610e978580958461097a565b35935b610ea5575050909150565b610eb1610ebf95610e72565b9485946103cc86848661097a565b93610e9a565b9294939190948215600014610f245750905092905b81825b610ee657505050565b9091936000198501858111610f0f57610f07916103cc610bb492858761097a565b919082610edd565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108255793929190610f4184868461097a565b359394855b610f5e57505050610f579250610f8f565b9290610eda565b90919293828601868111610f0f57610f84916103cc610f7e92858861097a565b95610e72565b949392919085610f46565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fc45760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610825576001019056fea26469706673582212201725e0effa00c3578abd49526a9bd663574f633f7806327bc2b69e6ff84967d764736f6c63430008140033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 16 | "nonce": "0xb3", 17 | "accessList": [] 18 | }, 19 | "additionalContracts": [], 20 | "isFixedGasLimit": false 21 | } 22 | ], 23 | "receipts": [], 24 | "libraries": [], 25 | "pending": [ 26 | "0xd068959f87127ab3330ba2e001b44d374b8e64f095ca239fe00d632a993a4890" 27 | ], 28 | "returns": {}, 29 | "timestamp": 1694729441, 30 | "chain": 5, 31 | "multi": false, 32 | "commit": "c113723" 33 | } 34 | -------------------------------------------------------------------------------- /broadcast/Deploy.s.sol/5/run-1694729666.json: -------------------------------------------------------------------------------- 1 | { 2 | "transactions": [ 3 | { 4 | "hash": "0xc16487971ae557448cd3ab09dd1967dd855fce7e02a38aea154447bb8e0d04dc", 5 | "transactionType": "CREATE", 6 | "contractName": "Chronicle", 7 | "contractAddress": "0x633aC42DD5327Ad81edCa91f7F4D2D3739bcC3DC", 8 | "function": null, 9 | "arguments": ["0xd7db685f44CCDe17C966A16528d94942b497EBfE"], 10 | "transaction": { 11 | "type": "0x02", 12 | "from": "0xd7db685f44ccde17c966a16528d94942b497ebfe", 13 | "gas": "0x1345aa", 14 | "value": "0x0", 15 | "data": "0x60803461008e57601f6110c938819003918201601f19168301916001600160401b038311848410176100935780849260209460405283398101031261008e57516001600160a01b0381169081900361008e5780638b78c6d8195560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a360405161101f90816100aa8239f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6040608081526004908136101561001557600080fd5b600091823560e01c80632569296214610723578063274c701a1461065a5780632fac691a146105f157806354d1f13d146105ab578063715018a61461056557806374715f48146105365780638da5cb5b1461050957806394a5ab221461022e578063e5b046f214610208578063f04e283e14610185578063f2fde38b14610111578063fdab463d146100ee5763fee81cf4146100b057600080fd5b346100ea5760203660031901126100ea57356001600160a01b03811681036100ea5760209263389a75e1600c525281600c20549051908152f35b8280fd5b50503461010d578160031936011261010d576020906001549051908152f35b5080fd5b8382602036600319011261010d5780356001600160a01b03811691908281036101815761013c6107fb565b60601b156101765750638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8380fd5b8382602036600319011261010d5780356001600160a01b0381169190828103610181576101b06107fb565b63389a75e1600c5283526020600c2090815442116101fd5750829055638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188452601cfd5b50346100ea5760203660031901126100ea57602092829135815280845220549051908152f35b5090346100ea5761023e366107a4565b959492868a5289602052878a205493848710156104c6578161025f8861083b565b0361046a576001908188018089116104575761027c878692610dba565b036103fa57908b9695949392919488889184999a8080048514811517156103e557919392905b610100821061030d575b50505050508511610309576102cd95816102c5936109a0565b939092610ec5565b036102d6578280f35b906020606492519162461bcd60e51b8352820152600d60248201526c0a4dedee840dad2e6dac2e8c6d609b1b6044820152fd5b8980fd5b909192939784831b858a1615600014610392576002841b9081871c0361037c57826103398e9287610818565b116103755761036b9161035a610352610361939f610fda565b9e8a8c61097a565b3590610f8f565b985b851c92610fda565b90939291936102a2565b50976102ac565b5050634e487b7160e01b8f525060118d5260248efd5b9091929380829c96979c116103d8578b96959493926103cc8c6103c46103be61036b966103d29661096d565b98610e72565b9e8f9161097a565b35610f8f565b98610363565b50819850849a95506102ac565b5050634e487b7160e01b8e5260118d5260248efd5b895162461bcd60e51b81526020818d0152603160248201527f50726f76696465642072696768742072616e676520646f6573206e6f74206d616044820152707463682065787065637465642073697a6560781b6064820152608490fd5b634e487b7160e01b8d5260118c5260248dfd5b885162461bcd60e51b81526020818c0152603060248201527f50726f7669646564206c6566742072616e676520646f6573206e6f74206d617460448201526f63682065787065637465642073697a6560801b6064820152608490fd5b885162461bcd60e51b81526020818c0152601f60248201527f50726f766964656420696e646578206973206f7574206f6620626f756e6473006044820152606490fd5b50503461010d578160031936011261010d57638b78c6d8195490516001600160a01b039091168152602090f35b828434610562578060031936011261056257816001549182815280602052205482519182526020820152f35b80fd5b8380600319360112610562576105796107fb565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b83806003193601126105625763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b83823461010d57606036600319011261010d5767ffffffffffffffff9060243582811161018157610625903690830161076e565b60449291923593841161065657610642610653943690840161076e565b93909261064d6107fb565b356109bb565b80f35b8480fd5b5091903461010d5761066b366107a4565b8896949093303b1561071f5792879594926106af6106c1938d968c519a8b998a99634a52d59160e11b8b528a0152602489015260a0604489015260a48801916108e5565b858103600319016064870152916108e5565b9060848301520381305afa91826106ef575b5050602093506106e6575b519015158152f35b600191506106de565b67ffffffffffffffff821161070c575060209450825238806106d3565b634e487b7160e01b815260418652602490fd5b8780fd5b83806003193601126105625763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b9181601f8401121561079f5782359167ffffffffffffffff831161079f576020808501948460051b01011161079f57565b600080fd5b60a060031982011261079f57600435916024359167ffffffffffffffff9160443583811161079f57826107d99160040161076e565b9390939260643591821161079f576107f39160040161076e565b909160843590565b638b78c6d81954330361080a57565b6382b429006000526004601cfd5b9190820180921161082557565b634e487b7160e01b600052601160045260246000fd5b7f01010101010101010101010101010101010101010101010101010101010101017f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f55555555555555555555555555555555555555555555555555555555555555558360011c1683037f3333333333333333333333333333333333333333333333333333333333333333808260021c169116018060041c01160260f81c906000191460081b1790565b81835290916001600160fb1b03831161079f5760209260051b809284830137010190565b1561091057565b60405162461bcd60e51b815260206004820152602f60248201527f50726f7669646564206e65772072616e676520646f6573206e6f74206d61746360448201526e682065787065637465642073697a6560881b6064820152608490fd5b9190820391821161082557565b919081101561098a5760051b0190565b634e487b7160e01b600052603260045260246000fd5b9093929384831161079f57841161079f578160051b01920390565b939192906001938454938415610d1d576109d58284610e7f565b8503610cc1576000948552846020526040852054826109f38261083b565b03610c605780881115610bfe57610a1482610a0e8a84610dba565b14610909565b6000199483860193808511610bea5784610a2e918761097a565b35918881190181167e011c021d0e18031e16140f191104081f1b0d17151310071a0c12060b050a0963077cb53160e01b826001600160801b031060071b841560081b1783811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1792831c0260fb1c1a17968101908111610bea579395919387928791811c80821b81158c841b838304141715610bd65790915b6101008110610b20575b5050508611610b1c57827ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af1697969492610b0896946102c5936109a0565b8093558281528060205283604082205580a3565b8680fd5b9091968b80831b818a1615600014610b95576002841b80921c03610b8157610b498e9185610818565b11610b7b57610b69610b739161035a610b6189610fda565b988a8961097a565b975b8c1c91610fda565b919091610ac1565b96610acb565b634e487b7160e01b8c52601160045260248cfd5b919a938091508211610bcc57610bba610bb4610b7393610bc69361096d565b94610e72565b9a6103cc8c878d61097a565b97610b6b565b5082999750610acb565b634e487b7160e01b8b52601160045260248bfd5b634e487b7160e01b88526011600452602488fd5b60405162461bcd60e51b815260206004820152603460248201527f4e657720747265652073697a65206d7573742062652067726561746572207468604482015273616e2063757272656e7420747265652073697a6560601b6064820152608490fd5b60405162461bcd60e51b815260206004820152603360248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d617463604482015272682063757272656e7420747265652073697a6560681b6064820152608490fd5b60405162461bcd60e51b815260206004820152602e60248201527f50726f7669646564206f6c642072616e676520646f6573206e6f74206d61746360448201526d1a0818dd5c9c995b9d081c9bdbdd60921b6064820152608490fd5b9293509050610d7657610d3c91610d3782610a0e8761083b565b610e7f565b809155806000526000602052816040600020557ff9443a8c8ce8cb7bee33999ea495dd8a7d58561562af63f686750774a190af16600080a3565b606460405162461bcd60e51b815260206004820152602060248201527f50726f7669646564206f6c642072616e6765206d75737420626520656d7074796044820152fd5b90808214610e6b57600019918083019081116108255760018282186d010102020202030303030303030360801b816001600160801b031060071b85851460081b1782811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff1060031b1782811c600f1060021b1791821c1a171b9283019283116108255782610e5b610e6894610e6293191661083b565b921661083b565b90610818565b90565b5050600090565b8015610825576000190190565b91610e8982610e72565b9282610e978580958461097a565b35935b610ea5575050909150565b610eb1610ebf95610e72565b9485946103cc86848661097a565b93610e9a565b9294939190948215600014610f245750905092905b81825b610ee657505050565b9091936000198501858111610f0f57610f07916103cc610bb492858761097a565b919082610edd565b60246000634e487b7160e01b81526011600452fd5b600019838101938085116108255793929190610f4184868461097a565b359394855b610f5e57505050610f579250610f8f565b9290610eda565b90919293828601868111610f0f57610f84916103cc610f7e92858861097a565b95610e72565b949392919085610f46565b9060405190602082019283526040820152604081526060810181811067ffffffffffffffff821117610fc45760405251902090565b634e487b7160e01b600052604160045260246000fd5b6000198114610825576001019056fea26469706673582212201725e0effa00c3578abd49526a9bd663574f633f7806327bc2b69e6ff84967d764736f6c63430008140033000000000000000000000000d7db685f44ccde17c966a16528d94942b497ebfe", 16 | "nonce": "0xb4", 17 | "accessList": [] 18 | }, 19 | "additionalContracts": [], 20 | "isFixedGasLimit": false 21 | } 22 | ], 23 | "receipts": [], 24 | "libraries": [], 25 | "pending": [ 26 | "0xc16487971ae557448cd3ab09dd1967dd855fce7e02a38aea154447bb8e0d04dc" 27 | ], 28 | "returns": {}, 29 | "timestamp": 1694729666, 30 | "chain": 5, 31 | "multi": false, 32 | "commit": "c113723" 33 | } 34 | --------------------------------------------------------------------------------