{
  "schemaVersion": 1,
  "article": {
    "wpId": 6033,
    "permalink": "/archives/6033",
    "sourceIssue": 175
  },
  "environment": {
    "foundry": "1.8.0",
    "foundryCommit": "61ae26af36320d4fa1020f7db53785885e29eeb5",
    "solidity": "0.8.36+commit.8a079791",
    "evmVersion": "prague",
    "network": "local compiler and Foundry test VM only"
  },
  "buildManifest": {
    "source": "examples/verified-source-rebuild/src/VerificationFixture.sol",
    "sourceSha256": "87323718f58f3f95040fd7620f1568fc69fd68e14d6b7b2cfd9a4659caeb365c",
    "foundryConfigSha256": "78b71888aa0838fcb55527da9a654c868ac7ad40ee943811d87ab5667b73ef47",
    "contract": "src/VerificationFixture.sol:VerifiedBuild",
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "viaIR": false,
      "evmVersion": "prague",
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "libraries": {
        "src/VerificationFixture.sol:BuildLibrary": "0x0000000000000000000000000000000000001001"
      }
    },
    "constructor": {
      "types": [
        "address",
        "uint256"
      ],
      "values": [
        "0x000000000000000000000000000000000000beef",
        "7"
      ],
      "encoded": "0x000000000000000000000000000000000000000000000000000000000000beef0000000000000000000000000000000000000000000000000000000000000007"
    },
    "profiles": {
      "exact": {
        "optimizer": true,
        "runs": 200,
        "bytecodeHash": "ipfs"
      },
      "metadataMismatch": {
        "optimizer": true,
        "runs": 200,
        "bytecodeHash": "none"
      },
      "functionalMismatch": {
        "optimizer": false,
        "runs": 200,
        "bytecodeHash": "ipfs"
      },
      "unlinked": {
        "optimizer": true,
        "runs": 200,
        "bytecodeHash": "ipfs",
        "libraries": {}
      }
    }
  },
  "rawBytecodeComparison": {
    "creation": {
      "compiledBytes": 693,
      "constructorArgumentBytes": 64,
      "transactionInputBytes": 757,
      "transactionInputSha256": "cc51695f4ccd6ae3e93a600b06049b82d0b02291dcfc69118f45a649e3e1acc1",
      "sample": "0x60c060405234801561000f575f5ffd5b…00000000000000000000000000000007",
      "relationship": "transaction input = linked creation bytecode + ABI-encoded constructor arguments"
    },
    "runtime": {
      "compiledBytes": 522,
      "functionalBytes": 469,
      "metadataTrailerBytes": 53,
      "metadataCborBytes": 51,
      "compiledSha256": "9eac5d196dec8ae107ed8adb7e1effffbc69d5fd0746337d67ceded4ced3f660",
      "deployedSampleSha256": "0d86711cf9d44821710232614ec6bc79c60e9d96021408ed5e39d120122a1fc7",
      "alternateImmutableSha256": "d82534153ed31b71cdfddbd505383e6324760e35b28c270e73e6cf54c105ffe4",
      "immutableReferences": [
        {
          "astId": "68",
          "start": 130,
          "length": 32
        },
        {
          "astId": "68",
          "start": 214,
          "length": 32
        },
        {
          "astId": "70",
          "start": 72,
          "length": 32
        },
        {
          "astId": "70",
          "start": 256,
          "length": 32
        }
      ],
      "sample": "0x608060405234801561000f575f5ffd5b…0468235f4664736f6c63430008240033"
    },
    "library": {
      "address": "0x0000000000000000000000000000000000001001",
      "unlinkedCreationReferences": {
        "src/VerificationFixture.sol": {
          "BuildLibrary": [
            {
              "start": 495,
              "length": 20
            }
          ]
        }
      },
      "unlinkedRuntimeReferences": {
        "src/VerificationFixture.sol": {
          "BuildLibrary": [
            {
              "start": 324,
              "length": 20
            }
          ]
        }
      },
      "compileTimeLinkedRawMatch": true,
      "manualLinkFunctionalMatch": true,
      "manualLinkRawMatch": false,
      "reason": "manual linking changes executable bytes but does not update Solidity metadata"
    }
  },
  "matchCases": [
    {
      "id": "exact-match",
      "sourceAndSettings": "exact",
      "functionalBytecodeMatch": true,
      "metadataFingerprintMatch": true,
      "rawMatchAfterKnownTransformations": true,
      "result": "exact_match"
    },
    {
      "id": "metadata-only-match",
      "sourceAndSettings": "bytecodeHash none instead of ipfs",
      "functionalBytecodeMatch": true,
      "metadataFingerprintMatch": false,
      "rawMatchAfterKnownTransformations": false,
      "result": "match"
    },
    {
      "id": "optimizer-mismatch",
      "sourceAndSettings": "optimizer disabled instead of enabled with 200 runs",
      "functionalBytecodeMatch": false,
      "metadataFingerprintMatch": false,
      "rawMatchAfterKnownTransformations": false,
      "result": "mismatch"
    },
    {
      "id": "similar-contract-candidate",
      "sourceAndSettings": "another deployment with a different immutable minimum",
      "functionalBytecodeMatch": true,
      "metadataFingerprintMatch": true,
      "rawMatchAfterKnownTransformations": true,
      "result": "candidate_must_be_fully_verified",
      "exactMatchNotInferredFromSimilarity": true
    }
  ],
  "proxyBoundary": {
    "proxyContract": "src/VerificationFixture.sol:VerificationProxy",
    "implementationContract": "src/VerificationFixture.sol:VerifiedBuild",
    "proxyRuntimeSha256": "624b7d11af9238591fc735f4740837fbad86ef4763ce2823f05d1ea8c329d492",
    "implementationRuntimeSha256": "9eac5d196dec8ae107ed8adb7e1effffbc69d5fd0746337d67ceded4ced3f660",
    "runtimeBytecodesDiffer": true,
    "verifySeparately": [
      "proxy runtime and source",
      "current implementation runtime and source",
      "admin or upgrade authority"
    ]
  },
  "safety": {
    "verifiedSourceProvesSafety": false,
    "auditProvesNoAdminRisk": false,
    "sponsorBadgeAffectsMatch": false,
    "publicRpcUsed": false,
    "realWalletUsed": false,
    "publicTransactionSent": false,
    "externalAssetUsed": false
  }
}
