{"abi":[{"type":"function","name":"calculateApplicationAddress","inputs":[{"name":"outputsMerkleRootValidator","type":"address","internalType":"contract IOutputsMerkleRootValidator"},{"name":"appOwner","type":"address","internalType":"address"},{"name":"templateHash","type":"bytes32","internalType":"bytes32"},{"name":"dataAvailability","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"newApplication","inputs":[{"name":"outputsMerkleRootValidator","type":"address","internalType":"contract IOutputsMerkleRootValidator"},{"name":"appOwner","type":"address","internalType":"address"},{"name":"templateHash","type":"bytes32","internalType":"bytes32"},{"name":"dataAvailability","type":"bytes","internalType":"bytes"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"contract IApplication"}],"stateMutability":"nonpayable"},{"type":"function","name":"newApplication","inputs":[{"name":"outputsMerkleRootValidator","type":"address","internalType":"contract IOutputsMerkleRootValidator"},{"name":"appOwner","type":"address","internalType":"address"},{"name":"templateHash","type":"bytes32","internalType":"bytes32"},{"name":"dataAvailability","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"address","internalType":"contract IApplication"}],"stateMutability":"nonpayable"},{"type":"event","name":"ApplicationCreated","inputs":[{"name":"outputsMerkleRootValidator","type":"address","indexed":true,"internalType":"contract IOutputsMerkleRootValidator"},{"name":"appOwner","type":"address","indexed":false,"internalType":"address"},{"name":"templateHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"dataAvailability","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"appContract","type":"address","indexed":false,"internalType":"contract IApplication"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"calculateApplicationAddress(address,address,bytes32,bytes,bytes32)":"4269667b","newApplication(address,address,bytes32,bytes)":"8d02370d","newApplication(address,address,bytes32,bytes,bytes32)":"2cc3ef7c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IOutputsMerkleRootValidator\",\"name\":\"outputsMerkleRootValidator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"appOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"templateHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"dataAvailability\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"contract IApplication\",\"name\":\"appContract\",\"type\":\"address\"}],\"name\":\"ApplicationCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IOutputsMerkleRootValidator\",\"name\":\"outputsMerkleRootValidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"appOwner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"templateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"dataAvailability\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"calculateApplicationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IOutputsMerkleRootValidator\",\"name\":\"outputsMerkleRootValidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"appOwner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"templateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"dataAvailability\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"newApplication\",\"outputs\":[{\"internalType\":\"contract IApplication\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IOutputsMerkleRootValidator\",\"name\":\"outputsMerkleRootValidator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"appOwner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"templateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"dataAvailability\",\"type\":\"bytes\"}],\"name\":\"newApplication\",\"outputs\":[{\"internalType\":\"contract IApplication\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ApplicationCreated(address,address,bytes32,bytes,address)\":{\"details\":\"MUST be triggered on a successful call to `newApplication`.\",\"params\":{\"appContract\":\"The application contract\",\"appOwner\":\"The initial application owner\",\"outputsMerkleRootValidator\":\"The initial outputs Merkle root validator contract\",\"templateHash\":\"The initial machine state hash\"}}},\"kind\":\"dev\",\"methods\":{\"calculateApplicationAddress(address,address,bytes32,bytes,bytes32)\":{\"details\":\"Beware that only the `newApplication` function with the `salt` parameter      is able to deterministically deploy an application.\",\"params\":{\"appOwner\":\"The initial application owner\",\"outputsMerkleRootValidator\":\"The initial outputs Merkle root validator contract\",\"salt\":\"The salt used to deterministically generate the application contract address\",\"templateHash\":\"The initial machine state hash\"},\"returns\":{\"_0\":\"The deterministic application contract address\"}},\"newApplication(address,address,bytes32,bytes)\":{\"details\":\"On success, MUST emit an `ApplicationCreated` event.Reverts if the application owner address is zero.\",\"params\":{\"appOwner\":\"The initial application owner\",\"outputsMerkleRootValidator\":\"The initial outputs Merkle root validator contract\",\"templateHash\":\"The initial machine state hash\"},\"returns\":{\"_0\":\"The application\"}},\"newApplication(address,address,bytes32,bytes,bytes32)\":{\"details\":\"On success, MUST emit an `ApplicationCreated` event.Reverts if the application owner address is zero.\",\"params\":{\"appOwner\":\"The initial application owner\",\"outputsMerkleRootValidator\":\"The initial outputs Merkle root validator contract\",\"salt\":\"The salt used to deterministically generate the application contract address\",\"templateHash\":\"The initial machine state hash\"},\"returns\":{\"_0\":\"The application\"}}},\"title\":\"Application Factory interface\",\"version\":1},\"userdoc\":{\"events\":{\"ApplicationCreated(address,address,bytes32,bytes,address)\":{\"notice\":\"A new application was deployed.\"}},\"kind\":\"user\",\"methods\":{\"calculateApplicationAddress(address,address,bytes32,bytes,bytes32)\":{\"notice\":\"Calculate the address of an application contract to be deployed deterministically.\"},\"newApplication(address,address,bytes32,bytes)\":{\"notice\":\"Deploy a new application.\"},\"newApplication(address,address,bytes32,bytes,bytes32)\":{\"notice\":\"Deploy a new application deterministically.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/dapp/IApplicationFactory.sol\":\"IApplicationFactory\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-contracts-5.2.0/=dependencies/@openzeppelin-contracts-5.2.0/\",\":forge-std-1.9.6/=dependencies/forge-std-1.9.6/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/access/IOwnable.sol\":{\"keccak256\":\"0x826f366603fe6fd715bd912d40e9b4e851c110aea5895522523d800015532f6d\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://bb115a4a30824bf77e10b63727cea83e7e1e9bf4c3079ed65e3e7c0eaa290272\",\"dweb:/ipfs/QmYpjBNmELeX1NKdPjXcqnssz65pgYpX2g6ahKXisr9aWM\"]},\"src/common/OutputValidityProof.sol\":{\"keccak256\":\"0x3bd009e3b744e160f92a84624f8c325b5a6abc8f4e8e02e4a1b8a6de73779c1c\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://73da0a877327888a637d739a49ec807a48b65fff96b9c20472b6a8a926d46ff7\",\"dweb:/ipfs/QmaHmqdhJX4RpR3xK15hhuMdVFc47GtvcUkny9ffyzD5K6\"]},\"src/consensus/IOutputsMerkleRootValidator.sol\":{\"keccak256\":\"0x133dfa71847fd6478489e983d53b08b22f5f578634c2103e96a11cd128e81d68\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://eb43c0a4aa7cd21753a3b92820da37ef58cf29aa4ef5c18a6f2face3e6e94e25\",\"dweb:/ipfs/QmezZmVZV1cfygDYPC8XheVVxaSZt92xQNdEpnRV6Xdh3M\"]},\"src/dapp/IApplication.sol\":{\"keccak256\":\"0x2f8e32fd984129fa6e95ff57a6eae42f84a5613643289af75b68f9fedda26e86\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://7b334fc95577418cdbb323118b6078cec1289075b8b72fb794828150fbc681e5\",\"dweb:/ipfs/QmNpyKbFyNdmpPXfzfH4bPj4we1A3Q1qKxGpY18rJpgx3Y\"]},\"src/dapp/IApplicationFactory.sol\":{\"keccak256\":\"0x4fce0e0577b43d9269f1b4f481b9f763096266075143d8bb83719a1358f04ce2\",\"license\":\"Apache-2.0 (see LICENSE)\",\"urls\":[\"bzz-raw://d14f5a4221fb227761fa43c4348e6c93a4d9b8491e0f2d02c8944de108a48290\",\"dweb:/ipfs/QmbxidJZ4UKxCePMqkuLKFcinRcMcDkSgFJMPwsgDFDM9j\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.30+commit.73712a01"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IOutputsMerkleRootValidator","name":"outputsMerkleRootValidator","type":"address","indexed":true},{"internalType":"address","name":"appOwner","type":"address","indexed":false},{"internalType":"bytes32","name":"templateHash","type":"bytes32","indexed":false},{"internalType":"bytes","name":"dataAvailability","type":"bytes","indexed":false},{"internalType":"contract IApplication","name":"appContract","type":"address","indexed":false}],"type":"event","name":"ApplicationCreated","anonymous":false},{"inputs":[{"internalType":"contract IOutputsMerkleRootValidator","name":"outputsMerkleRootValidator","type":"address"},{"internalType":"address","name":"appOwner","type":"address"},{"internalType":"bytes32","name":"templateHash","type":"bytes32"},{"internalType":"bytes","name":"dataAvailability","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"view","type":"function","name":"calculateApplicationAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IOutputsMerkleRootValidator","name":"outputsMerkleRootValidator","type":"address"},{"internalType":"address","name":"appOwner","type":"address"},{"internalType":"bytes32","name":"templateHash","type":"bytes32"},{"internalType":"bytes","name":"dataAvailability","type":"bytes"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"newApplication","outputs":[{"internalType":"contract IApplication","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IOutputsMerkleRootValidator","name":"outputsMerkleRootValidator","type":"address"},{"internalType":"address","name":"appOwner","type":"address"},{"internalType":"bytes32","name":"templateHash","type":"bytes32"},{"internalType":"bytes","name":"dataAvailability","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"newApplication","outputs":[{"internalType":"contract IApplication","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"calculateApplicationAddress(address,address,bytes32,bytes,bytes32)":{"details":"Beware that only the `newApplication` function with the `salt` parameter      is able to deterministically deploy an application.","params":{"appOwner":"The initial application owner","outputsMerkleRootValidator":"The initial outputs Merkle root validator contract","salt":"The salt used to deterministically generate the application contract address","templateHash":"The initial machine state hash"},"returns":{"_0":"The deterministic application contract address"}},"newApplication(address,address,bytes32,bytes)":{"details":"On success, MUST emit an `ApplicationCreated` event.Reverts if the application owner address is zero.","params":{"appOwner":"The initial application owner","outputsMerkleRootValidator":"The initial outputs Merkle root validator contract","templateHash":"The initial machine state hash"},"returns":{"_0":"The application"}},"newApplication(address,address,bytes32,bytes,bytes32)":{"details":"On success, MUST emit an `ApplicationCreated` event.Reverts if the application owner address is zero.","params":{"appOwner":"The initial application owner","outputsMerkleRootValidator":"The initial outputs Merkle root validator contract","salt":"The salt used to deterministically generate the application contract address","templateHash":"The initial machine state hash"},"returns":{"_0":"The application"}}},"version":1},"userdoc":{"kind":"user","methods":{"calculateApplicationAddress(address,address,bytes32,bytes,bytes32)":{"notice":"Calculate the address of an application contract to be deployed deterministically."},"newApplication(address,address,bytes32,bytes)":{"notice":"Deploy a new application."},"newApplication(address,address,bytes32,bytes,bytes32)":{"notice":"Deploy a new application deterministically."}},"version":1}},"settings":{"remappings":["@openzeppelin-contracts-5.2.0/=dependencies/@openzeppelin-contracts-5.2.0/","forge-std-1.9.6/=dependencies/forge-std-1.9.6/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/dapp/IApplicationFactory.sol":"IApplicationFactory"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.2.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/access/IOwnable.sol":{"keccak256":"0x826f366603fe6fd715bd912d40e9b4e851c110aea5895522523d800015532f6d","urls":["bzz-raw://bb115a4a30824bf77e10b63727cea83e7e1e9bf4c3079ed65e3e7c0eaa290272","dweb:/ipfs/QmYpjBNmELeX1NKdPjXcqnssz65pgYpX2g6ahKXisr9aWM"],"license":"Apache-2.0 (see LICENSE)"},"src/common/OutputValidityProof.sol":{"keccak256":"0x3bd009e3b744e160f92a84624f8c325b5a6abc8f4e8e02e4a1b8a6de73779c1c","urls":["bzz-raw://73da0a877327888a637d739a49ec807a48b65fff96b9c20472b6a8a926d46ff7","dweb:/ipfs/QmaHmqdhJX4RpR3xK15hhuMdVFc47GtvcUkny9ffyzD5K6"],"license":"Apache-2.0 (see LICENSE)"},"src/consensus/IOutputsMerkleRootValidator.sol":{"keccak256":"0x133dfa71847fd6478489e983d53b08b22f5f578634c2103e96a11cd128e81d68","urls":["bzz-raw://eb43c0a4aa7cd21753a3b92820da37ef58cf29aa4ef5c18a6f2face3e6e94e25","dweb:/ipfs/QmezZmVZV1cfygDYPC8XheVVxaSZt92xQNdEpnRV6Xdh3M"],"license":"Apache-2.0 (see LICENSE)"},"src/dapp/IApplication.sol":{"keccak256":"0x2f8e32fd984129fa6e95ff57a6eae42f84a5613643289af75b68f9fedda26e86","urls":["bzz-raw://7b334fc95577418cdbb323118b6078cec1289075b8b72fb794828150fbc681e5","dweb:/ipfs/QmNpyKbFyNdmpPXfzfH4bPj4we1A3Q1qKxGpY18rJpgx3Y"],"license":"Apache-2.0 (see LICENSE)"},"src/dapp/IApplicationFactory.sol":{"keccak256":"0x4fce0e0577b43d9269f1b4f481b9f763096266075143d8bb83719a1358f04ce2","urls":["bzz-raw://d14f5a4221fb227761fa43c4348e6c93a4d9b8491e0f2d02c8944de108a48290","dweb:/ipfs/QmbxidJZ4UKxCePMqkuLKFcinRcMcDkSgFJMPwsgDFDM9j"],"license":"Apache-2.0 (see LICENSE)"}},"version":1},"id":40}