{"_id":"@eth-optimism/contracts","_rev":"198-5ac9b8f0b66c452e13256f83b3ac09a2","name":"@eth-optimism/contracts","dist-tags":{"canary":"0.0.0-20230601165341","latest":"0.6.0"},"versions":{"0.0.1":{"name":"@eth-optimism/contracts","version":"0.0.1","license":"MIT","_id":"@eth-optimism/contracts@0.0.1","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"9541d56557ef8d5e3e2da2ec4a01b2978fe801f6","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.1.tgz","fileCount":137,"integrity":"sha512-qjZRaLrPFTfM0MPGoD6ksuTA0xe0bgs2iMIkEJzZnad0aZ5EqGqcoL6HZp3uO98blaih9zedK025sXBMG2ONDQ==","signatures":[{"sig":"MEQCIFo/OhU0+nUKkirg9hGVE7myxwBDPIbdypH/pm3qh2IkAiBUCVnFKR5QhbygMnowqgr+CrtHXtw7xzc8WQJbBOZDQw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1392809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhIJACRA9TVsSAnZWagAA+OEP/jXtMOmJUckFTcS1bBmU\nHXekyVQX5sO8zFGzE3//nm+gQmnWoo1wPavY2h/zYZP1jIxQ6ffTnJ3Wesp6\nRylJsRYny1bugGui+jfD28T8e/+P27Kw4bVxZ5FIh0zz24oSKXzAx4QAC+d3\nw20HGGr2H1TpxKfEJwZVveiX4benoUBnXAIpEKaTRTHf5O9xapCjbZgxI4pW\n3gzJt0cSp6O2HpGgkrmRnEUuTT180nB91NBQrxnapYDQ435gj9Em4Xlj1czd\nxJMrje0lemFDff/rhkOlsSvRBWyWd88qWPwcGDSfXzpKBkAMaQZRGlS5BkEL\n8VIakTuNVDk654zDzPtLr362oWhiZcXHRUqgIDv3gR7Gwa7/rEVIHRQT0OaU\nKpMqsolEilOVq48BiwZUbEA/YFty1Jn5KjF4ZSa0i9zCOYzBMVMUebOZMLZe\nNH7q0QRX327/Cdm+bOtyBQsxCj6QVGrHlZbL0J8vArTeJT1t+OF9RM7tB5oW\npUSHrCtXnFooun6JUYhzmvfx4XHYa3euW7WXWlvE0wd90FrNcjzY7hV7T2h/\ntAw2518sbzFaMiOPnLm5gaYMhrpv5kNpok30xdqOCUflgHswa1vm1PUeY54o\nBepL2WBCxkZb8LuBydrtiJgYq2H7M9ri25hBLuNHq+6Dc5vdTLyJ/Dp/feaf\n902u\r\n=w7Om\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"0560ca31e512a809d4a8f74853a21ca1533c962b","scripts":{"lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump","clean":"rm -rf ./artifacts ./build ./cache","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"tynes","email":"tyneway12@gmail.com"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.0","_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","ethers":"5.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.1_1602519616521_0.09289262319882718","host":"s3://npm-registry-packages"}},"0.0.2-alpha.0":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.0","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.0","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"1b7c2f28a425d4c89799a44ac4870036d1d122b3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.0.tgz","fileCount":139,"integrity":"sha512-jWzbPWAfsAWMm7I2ORpZ9kWLsILeoQdA/uL09oUEQp4d8/e1BsWLI8YWc7b/CykS3sIx/YogUT9Wq2Y2AE/xrw==","signatures":[{"sig":"MEUCIQCyLU6Vf/xfrIrPCt0nGlCa/90gOzUVGYNYHgv26fgLuAIgbhz+6ybbxC0GuXtq+dUOvcjfK2oF/w34tWxyUaRR6bw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1457533,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhInxCRA9TVsSAnZWagAAPDkP/jh1AqR/fZe5q1LXC8p4\n/n/MuQf/9YScL2FSTBUVqa/lRpMx4kVAWa8nZF+CU+u7iSWHVoFE+QECC3/1\nMsqzk0UMxIUsulj4MB8chTZjqp/YHybwlA3ADwI4YKALta06k0KPbBLteBDb\nh7Dfg3L0JkEu7oxzA6nE/q+huap8PM+Dcv9Tz9V34DSJrWg5cVXM2db9icoM\nUdmWvWz7zmog56NxZmdkc2ELrTKIOyt5cFVBS2kygskJ+paH3bvWw9mSTYwO\n9NiVO1RtRXde+zvTaceJzafl8grM8xfy/1oKUWO6qicS5lKXTf8sJ9lEIHEK\nDtDnHg4E/5oxVW1CiR+wwlYHMr53eEiRIpHnVU65blNqFyWRTv24RpPiv8v+\n8OsbGxG3mDGcHKqXop7+qci36oqWCu+H74FAGaSAHeu51tFcJGykqNcqdIyW\nKWj26GmOuCg7301365fJ9Qr0uudOSQ5FqDh3mketqfxJdqHlq3FOsStBrd77\nHJOzj0lagEZtEpWsp0EOPVy0Ti9ra2NhKHz7m+gExUse9wdVzrXUBajySn1W\nGb8z+vFCR74otAUfWFe92p7EyV66qRRD6uffZmnDAM/26qdO2mojEgf4sozu\nOLpTUNpjnkeWeaFEhqSgmd0MhOPtR02g0nCQ65ZysJHdxRum7qPdoneXhYpm\n2ghs\r\n=8MP6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"7b762b65cf67c6b7767f7672c03975a0ebcf143c","scripts":{"lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump","clean":"rm -rf ./artifacts ./build ./cache","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},"_npmVersion":"6.7.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"11.10.1","dependencies":{"ethers":"5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.0_1602521585025_0.6295636357921419","host":"s3://npm-registry-packages"}},"0.0.2-alpha.1":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.1","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.1","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"3b8219dd684929c977c301cc0de51ce11d5d7c65","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.1.tgz","fileCount":139,"integrity":"sha512-JCOytXK2Iq86C//oo8LotagqaTtQZAXkTW7bxI4Dpnk97YrMhwkhFaDR+91jTqgkPX+6Wul+2xxvMtsca3sCtg==","signatures":[{"sig":"MEQCID0211IK+yV2lB8mGkBBXPBxPFa9zXudtuqiYj23bVnGAiBenF98suBIzgc+qJYMcD3n2BVudia9dp5LiLXHp868Gg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1457376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhIqcCRA9TVsSAnZWagAAy2QP/j4ONyRDuBTIUmlfWWAe\nmeHrZU7qUT50pQpw5q+WZJOyPYh5yljVDoGTEBohgJOlqkvV52ZF9pDisQOI\nS0cZAnPfg/fLcvZev+vPgSuX5w3nFUrsH3IPGrPih3l+qzTdhP4OY+8J9xeu\n53QGVuA3qMZh0roqtnAIzW7asKnGMWh7wqRoqaQOiGRVQ+priTFqutnXzoFs\nnU7mfNPCvJmLpJrGq7tRBS6n9unLUtbQ3wQGhRGBQVWErdhSPi0pKBR+ZsvP\nV5AwKfOJUmf6+PYgi13wzQCjkHujB5YeiWEXm7W8j42AhY43DhrUo+957G4Q\nloLxk8qvZbLmYj1+rwH0RcyMCvVCbYx2cNtzreo0ulsPRnsrfrNSGwS71L1F\nUw4QEU8ktEkRNCGi53yyd9UylyU6QfVkFRLouj/2Wa3qLV6YIjZv4g/QRZOS\ngaZrDbNAFLsRPqDBi6cqgd+6tmMjt9yPSLichRO32Mrk5L+evrJajSwYRuIZ\n2939ruBw5YFYEvemRqI2MvH6gveHMHLQmNC6wSVB76K5I91ozxpjcAT6awhj\nH8ea4FeK2a3/E5bdLl2jFwsUDo1izvpf4A95ra9xsRMwTZOsXku+jJRMd/fm\n3pzWvuRfHDEw5JrzMjINX0rzSKJxCR2ndnuneVTK7aBO4FT0TH9U9E2lgDkw\ncg+Y\r\n=siW6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"7b762b65cf67c6b7767f7672c03975a0ebcf143c","scripts":{"lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump","clean":"rm -rf ./artifacts ./build ./cache","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},"_npmVersion":"6.7.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"11.10.1","dependencies":{"ethers":"5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.1_1602521755970_0.2742632089128332","host":"s3://npm-registry-packages"}},"0.0.2-alpha.2":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.2","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.2","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"3b69c4d4055d508f13c7c30c930a514a36215ce4","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.2.tgz","fileCount":139,"integrity":"sha512-5L+owINbxyDIQUCZo+TSFriD4MjXNI6aniUS3TV2PkE4svPesCdKJiz2cV0P28+AIrMxQ+wa+KofTywyo+ZihA==","signatures":[{"sig":"MEUCIQDNyBfk9GYD1hJJPQCIMbjgG+wsBk5YA1Bx4VUW+7Ga8QIgTd0FdEZpE42IWh041rWUXbRjJ3GFtmc479jDGmVbFgc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1607616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkf+lCRA9TVsSAnZWagAAHyIQAJ1P6jt5uAyMB0pOAmxd\nIn+2I8Z1gMMM7R3rV8CBQnTndDMg5Qo3YohzvllTnNq54a1EL0bTcKZCtzUJ\nw1qndSrqclvLsbx+2+HHZy5BbX6OPZ1r1hLhVNTR1s3oGu74cMzsDsW6qJS8\nSVTEfM0KSKpNhtglXOWQ4d0NPH/4Kv4odlijX2BD8RVFdyJ+wMIz/D+mU4rI\nQG/ftQ/kp6dzleb5yCNu1aAQjfxedEKTRGnsPyQePdyTNW7C/htAtlhfqHYD\nIRSKdajjk9ULmJFBpnBOYYyobx2NS6aC0g1iYlZa8xCnO+nrrovCTuDueQJs\nL6rvNY63nM6Buw5FFkI78LmGII+4/YRbn3+668ccoRLV/sJI/alD641LCyrc\n/wbsCwEMQ7r6ES7M6t9KwLHDhx5v3SUfqzTraznsqnSmzyXxdffSZPI1vGMw\nbW+75fccI/Pz92fACPDNQI0BgXrD3rV4WKNd7iMu8Q0g0BbuA5unzXDY8SNV\n3NzMhpl9iZ/P7wc5XvSSrrsITV264kilpdMNjN9AEO7U4Y3Ep5xcwsz+dE/I\nmXlynwXhmAeQZ5xAeEIZ7NkXQhllQsF5FbBYz7M1ZsWf/sbZ84vJACr2ti11\no9fA7wP3ioqZIR8I9HJbb9KDQzNuy2kxYNVitTHKo0CbXv3RkDUVJolv2beb\nsOio\r\n=y2Ae\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"c5d822585e352bd92f5482747697e92254b9ebd6","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"k-ho","email":"kevin@optimism.io"},"_npmVersion":"6.9.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.16.0","dependencies":{"ethers":"5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.2_1603403684597_0.9553390662022527","host":"s3://npm-registry-packages"}},"0.0.2-alpha.3":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.3","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.3","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"01cf0fe95389b84f98a8e57cc0b89097c8823241","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.3.tgz","fileCount":139,"integrity":"sha512-ek7gOFX43monrv7GV4G61HXJ+GnjAWYdY4nHkUhPVid/2mlAVJ6fDJ4fP7XQdLJ4bqUGIBc34lAX2O5eDLbO+A==","signatures":[{"sig":"MEQCIDo/e7rd4V4p4UlHrBRPSA36wbQzgNbwDzxqOSiszAcnAiA/+7Uxzax3X4fl1ziy8x2+Rk1d1z+kBt+hXZ6V8INwFQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1608374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfla72CRA9TVsSAnZWagAAk4EQAIWgXR3yr6+KNj2bprcE\npd/J63cmGu6b58xU9c7y/p8bQjaQ1bmBMqLDulTTgPkYp9hAEKGcOLMlbnI8\n+lYy0eIZ4A1NceEKU3BPpqKo2E3jMdHPTL1oafchccU36bbtKjmgWfl92g60\nWkIFYpd+FoknWq5odfLXD29y4bBVNnDXz7F+VV6R3406Bssxz5l4qokaeHKh\nli+JGhmpRnfgBVqq0DC8TRUiElnI7gptcnec3tFZiH9g6U4v8p27PjC0LVc9\nhJn69gLhAv+fQhuXuMF81t/nJgbvLRY5So7MwcxwBjm8cdJd99aZaf+TRy/6\n/FwCXo1niIaprc5kEvxyRxBFO82btCsUaVXdxbSQHEMDkp6dgUh3dfW07awT\n7sVTSRsIdI/P88I0YRpyAcINqovIzBGph/oFdB3PqVmHo+aU2gUVZN9APkq/\nFFGryE2euhA3AglmgxSQtgiYNCv7hVEeMOsGvSq+2JyPMkeQJD+CWKFuPbMG\ncymJoO/ljj0UBcaInmWzmZ9kQWC5gZ/NEf8AzZoL4MuaWuhSHLjnKjkJGl2p\nqXIVmqxta8bcpiABwax5EGq8GJzz8J27AKzLSrt3rRoYXxuoemncAv+Xt0R7\nMAKL1IErzm6PTzZ7jt+sQaWL3lf0VLr3XMr4BnJHo7ZxRveQw+dD+cc0MAvH\nuFj1\r\n=lPH4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"23c6728a331c66fe57fbec3331ebfe04907dc215","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"ethers":"5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.3_1603645173809_0.7987091131123649","host":"s3://npm-registry-packages"}},"0.0.2-alpha.4":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.4","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.4","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"db41173b575992fc82a2910c67530b87f607772c","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.4.tgz","fileCount":139,"integrity":"sha512-1eeOOj7cCdWfRhJEk9OfsG5mJHw2jlynN5Uc7UQIX0gjgpY6Qo4AIMfsnxlPDSRzEx17z48OtfxxaVLabV7BMA==","signatures":[{"sig":"MEYCIQCIbX5NJiLjUq/aTbOfQw8N3G2WpU+uJIPfwiQ1YOJFfAIhAKW0J0fIqY4MCSnjp4gDAvXjE2OiWFRexgXuJ37q9zoz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1610105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflys6CRA9TVsSAnZWagAAxBYP/AzVS813ObIeFIwvcYDL\nvlgPNTXxxNb0hBH85RQUT13S1NgLuMyN6kCN+pawUsgt4hQxc+RxrKjGLz7A\nt6Tx9lbbuIKLYQXR8NC/0ZistgF9XVwkMISucKe19PZCWvMemOyuVon6z21H\n9WBe/a9Apw5upwRHx/d5BwKImyH9g6FXl3FloxOg7eqBlldYyLUpGKqSTRYO\n8/wVcnJWMmJLdnrAiYU7PmqLm99Iy3hipAXueUxfv9f54tRyH98dLcUDodi3\np3JqwrL5tKYdOTCGTVPW67wXe4wkIHo/5kcD5JAU8zzxOCihCpnk7Rrtwd+b\n0lbZHFiipci/m6TG7pwEvAcpi+blxHPaAuz6sq2CN/RNawA7y8n7p/6/kjBl\npjk847snkLYtMWnjP09HBkfEXCaTps6DamZOyy8Ftn9bkdqkTIvL4ZD1v7Qa\ne0T0N3/4Nx4JN5l6CTa6GuIa7Lk6IMyJkUsQafJfQ6eM3+aYXnzBV500Plcu\nW79NX88CBtBjSWC5zw6CVyld1DXfH+gVhVjKVeMXO6IZCR+TX5HIm9Y+9sJA\nv9VsDrWSa32NLNr8W73ZQ6HJdYfk2gAkxwqn5mrRrjgRqrszgOwNth/yyYLG\nHY8lkcsAFq8eBSaQqhp6FjYZN5HgSeW/dj7VEStvRNTv/Ns5XHNW3zgFH8Pn\nw7U3\r\n=5geG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"c82c9e5e16a177768d1cb4eed8bae3119e9f6d94","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"12.18.4","dependencies":{"ethers":"5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.4_1603742522237_0.10259975291936829","host":"s3://npm-registry-packages"}},"0.0.2-alpha.5":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.5","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.5","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"a3c53bfdc1a89231906b682b2c273c1fc76b0958","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.5.tgz","fileCount":140,"integrity":"sha512-J9/dNen359SCNiozTVoyPu2MC+5/jvmk1FU7Mcvxy6o1EGrGnvndIS8VM5lHGsjZUCkIkkhauIqij7suuyKDvQ==","signatures":[{"sig":"MEUCIQDSW2VPwid+g9MRIGahHY8pPolj6nMIaVUN8hxVj/mntAIgdRxLtGGuU7RzCB93+nF2DKI8AVA3tHa3w3hMUmbq0s4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1610821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfl6KDCRA9TVsSAnZWagAAtpsQAIws8hwbgTHKThGM6ONa\nyVlwcShpIrCioqceTJvn44SV6UwwYBWcN2DutkfER9IKPBm3E5vtFs55vGc1\nV4hnqzxL7/BIeetBVGcLdggPe5jMeJnjt/WeUkLEcSxJdkILCd4p3V4/a3xl\nJozDAXtMG8kZxbpnxhU2RwAp7QP9ikBGhJ1r6Dpm6XK5UTI6dqLwgE/lO+Au\nJrStUY+a6HCNKwaiM0WV8koki5wczZj5SRX/RJTcAr4QMU5jmbVYW2VWfLQk\nyHeO+/YeZqTOn2yaEYABNDqyM/RhZEpvcVv1vby3V+tIwn62EF2jFtm3v5cV\nxDNWOxjO0dGSLV/rruwSFCmAFbXpXECeazLCG/5f6ouDxaz9M6+9MEVZqCl7\nT9JAWYJ6PzN9UQmsyOxEOtEsfaevc0jL86J+9FKcfVRl1343sjTCEWMAC2nB\nheGAyvCjO9+STVTv6riO4vqUbf5rUuE75TK5af0eUoyGVAwGnFqxEXj83CDi\nI0A3cTi7AML6brTwSvRP+8ysilCl3hs79UQd9rcIXWZ+TF2JOjjytp+eRF5n\ni6NXAKE7kZbnTbzdmhvy1pe+9n60LNzMiEZPy7rk9koHI7/Xgwv4p668njrN\nikU86Bcv62n5GelrXMxNs3eiMftdoKGMOfUJub0QW6MDHXeInW1ZV3j7vY8C\nv7t+\r\n=1n20\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"d9948fb856ac5a1f80cc1f107157e1ca4f0553e1","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"k-ho","email":"kevin@optimism.io"},"_npmVersion":"6.9.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.16.0","dependencies":{"ethers":"5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.5_1603773058777_0.7310699051799627","host":"s3://npm-registry-packages"}},"0.0.2-alpha.6":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.6","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.6","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"f724237eb94ade7204b50d029c9a7e11936474f9","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.6.tgz","fileCount":140,"integrity":"sha512-HeCC2VKZ+tz7ix1KKm82Ljz7XIKD6wgylle/k4TPnsxMgg4+A518NPF260SLC3/rmS0Csdz7/jCmti3jxhf3fw==","signatures":[{"sig":"MEUCIGKebQ+Cv6+4URJWuxFRfQvZ6wXn+aNaOVg1IvXdTwSBAiEA8oiG1NIhUGGMm4oTETX1gSmQe6KOn3IHPbZDbxgRt2k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1613710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmeyOCRA9TVsSAnZWagAA3ioP/1Dj5bdtZD6C/fH5bFzD\nLhjnvJ4EWT0qpJ0VyOVTjURQGvEF10Gib4Ffg2bgkNYe5zfJmDr8fGHIDeDk\n43cKPEiStnTUleRm8R+RZESolLpkvloDHfMiVL8Ss/SXD/Ka14ziJ/FQGxCW\nvqVzwSX/daYtMClMo0V1JXwZNvPctqm87SVwxitPaViJGgqYg2vRP6/rPpuN\nOsLvuaVVv5HFvi+pxm8hoCAAFzph/2iwcP7oXwUZ+LVVEmjHuaGbap4fM3lE\ncosHTD8WK75WVuLz/B5bzMjReFUue087p02I/7Zp5UHA9TQ2i4yYThsV/spR\nQmnDrPBefbBg1c94hHQpX9WII+Rn0vBMCvMTv7ciZMp5ou6T+JzU22EYn7Ip\nELjlJu9LLdti5P/Ustk+upBiOERkeUzdErCdUGjGet+DuDDb6KEOm7cGh38v\nS0QqZVRNrDjV8c3/pOrCMV3YBgsGPm4rqvjS7NY/+kQ+MqB2nupx659odm/N\nJM7HLTFVEcErsLxhjpUJyWvaBemmfzo4AbQA3YmswowOkhjPSoS8kxAbt8PD\nZf4XkD31/gzPr+zDlnKIhbHmUcZpc7u01CmPrm79apvCksgl2weX7e41tNJb\nwLO0Q9b0WAp4jivWUi9H8QHDvRFNVBCj5QU2jefCn/f1kaxOxd2x6fw5iHUw\nC0du\r\n=1gvd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"548846d364cdef60ce67890835cd3b3e14f919ae","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"k-ho","email":"kevin@optimism.io"},"_npmVersion":"6.9.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.16.0","dependencies":{"ethers":"5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.6_1603923086032_0.678659334345227","host":"s3://npm-registry-packages"}},"0.0.2-alpha.7":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.7","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.7","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"1d77b59f504ee94d9f2f46e0d4c01889ba8f9fd5","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.7.tgz","fileCount":146,"integrity":"sha512-nl+UsKPTPEyKS6p5E5g4U5SAqOK8Cj24o0GXtxERuVW/+eaBqbc5IEM50/wL5e/XiW4DjUOAMZl01GYiE8mIfA==","signatures":[{"sig":"MEQCIENeQyRgbSX4+7SPSOtBSa49XlTEepnBNNJkxd7VOSYGAiBUrf6FgB25oIM75T4LE6EJ41E8/vtLVQMFJ98nvwZ4cA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1650805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoEgaCRA9TVsSAnZWagAAZLQQAKISu0V/8N6qvaExzaIz\nuCedc2ENDFXIhyAlL3BWR5yDAbRQ2N34ni4xUhldOMOcMDfOCRYb4rUy4uN9\n6kAm42H0z3WP12DwLoHpFlF/QUsDwAkwPdM6chFCBebqdjfwpuJLDVciQUdY\nY5FGlU3UR0Lxc2gyUUH8rmFMj/KVaoc8DkeiQafeTHlPx5ioH9ws2fdyv8u6\nVsOPshyLokcp6e+hSId+lvZEnWUyN5qq8AU3N1ccOfqDhsnQigkWCujcT4rZ\nF3iT/wEekAc+5/+2lkDhTsclLDrj/QXAMANhiswbxHJg6juyYG+dQVk6bDSC\nZeHcNsdmFbH+A95fph0hTySpWTNEAYHUfVhiJHTABqvkwmOoikeTAcPokGVP\nf7ZFVEBLRvzgC1K6Ez3/pelbxJhSA8qaeyL8oDbJPe6uiyuJi8DclQ8vWvAV\nUTHsX6ZVfcTgCca6g3DIrfvp9s7t+JVYNbc6tS0Od8dispxmeCglhn/w/bUC\ngg3zSpN05WDFs1UfGkNW8H3ZS4Rn4o7J0gsEk5dt5+PVgxCybHjYdZ/VnNhP\nBSxIPqGJQvPTp+YGFlzdc78ZwflIpxFsHEGjvmvC/RJXPLiSPyVs5qkD0jO2\nbtZfMsFPXW2ioapBxxfWbfhiptXvXqhafXr5nchOq4qFICm1F5bDPH8Z9hGj\nNBve\r\n=unpu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"9a22b40bf96d1b704017181e7e6d2b7c5f3b1d04","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"k-ho","email":"kevin@optimism.io"},"_npmVersion":"6.9.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.16.0","dependencies":{"ethers":"5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.7_1604339738168_0.16396675632275493","host":"s3://npm-registry-packages"}},"0.0.2-alpha.8":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.8","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.8","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"662a3ff33f613169f88bdb4a3f0926d0c3934ce7","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.8.tgz","fileCount":146,"integrity":"sha512-KvuoEOWgINPf5Ev5B0yq8DIsxBoqFrr1H+NNPyAGdGh4Svcp3MBY2Ue5ACICyUo4Qwf5Al0RTAvzn1u3EPRnHw==","signatures":[{"sig":"MEYCIQDaM823pHQ1ghGw2aEKuG+/bKwkAmgTNu56sHOFTeJ+zAIhAL2zu9xD/KK7HJas28gWrO3CdbN2wzofIVC0vJjP6/1e","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1587891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpLJhCRA9TVsSAnZWagAAtG8P/0O/YU5jj72Ey72z7UJ7\ng3vhsvCAsZlJ6UOB9+dMhAYMspD3/DvsuaLbv4EFuA6hryn/p2yjRwSdy8lj\nUarBliogXCL2yKetiUAkQWb3T+M8B/x8AHVEf3y3tbMBoGwYMr3QVitV77zx\nJKVoN6zsuPdiEACuMQVSgpGTWcOVRLm+fAfkL479R59gRU08A1XhL26DZk9k\npNo5x9Roc2+cVyanIqnPvCuLPOZkTI13ZlhW7wxOOvE852afH1V25i+7Ynd5\nA26Uhj//K46SMxmLpW1NGOLKSs4UwZdJcr0m4dwnNxWc09Cz/9GEn8yPUQYQ\nThhpDdjlah8Es7wR2UpEw8aUQFv7WLEMOP8eCJutK3fiUSUukBDScVsgaq5p\nyH7a0vtgT7LAFQsjP4wwaxvBmklCxx8Cju9qhbzr+xVJx1KeXx0Lqj42LHo5\ntJB1t/ygL+uucX+L+Tc6VPTz+BHSaj73ZC8rheAdUjLZ5w5WBwgOKkfyrGvu\nD0biK1d8cuO+Mfo120CQdyNIgh//VQY4UhBJ5rgLMeykWHIx9N7/r9/MlxiV\ncu9I3KH+Qe0TMexSljDPmCA3QcBQl54g2pqpFGF2s1BMBsN1FuAfL98tl7LB\nQkfiggMQoL3G6hnSUi7dHDdHx0wa/TvaysQwD7j3FhCSk2QFmuE2ejAkX58l\nSZKj\r\n=OVcc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"d4ea98a305523befc7ba49bbee26dea163123edb","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"k-ho","email":"kevin@optimism.io"},"_npmVersion":"6.9.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.16.0","dependencies":{"ethers":"5.0.0","@ethersproject/hardware-wallets":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.8_1604629088412_0.8078964521139564","host":"s3://npm-registry-packages"}},"0.0.2-alpha.9":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.9","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.9","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"d6187d2ad15e181f50e091198ea9b714271762e4","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.9.tgz","fileCount":146,"integrity":"sha512-CI7lwWRZu53b757htgBHCfBo+Y4GqkHRCUDltFN3FFubED6R03sslOe+sV6I12/GuErnbax8AihEZ7/x61hImw==","signatures":[{"sig":"MEUCIEeMDAkCu1zQ1TwDzJ1cMwC8cM6eVrNAD6R+5D9iqCz4AiEA+BCK2WqUM3PbwgLj8sNPO3xhRrDns0n5UAFe7wjYeDw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1589385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqf0bCRA9TVsSAnZWagAApnIQAIE4kjWWnXUfhaLa4+J8\ntCg2fV1wCD9CNo0CcGDS44DJ6au728OrvTodRril7qZcpTavVMJWWwXMTFKw\nsROLwTT4YM9KlUK0u3fwpcx8BPzemuhXS7lwnn8R1nKYXDqDslizkDKYkzBk\nBfoaU2ickhuI7+UrvrqMHbDrG/aC+26pvrdTLEoHn/g5wcY0WIOVwuPY8Cud\nmFWnCJATohpcMStalsr2tTNPiMEtG21sKjVCBhFp2uqqt6B8b6y24Fh06EZO\n+BQ4rYf2oEBzmyGWM3QUpQplt989ysJ2WVRnhtbrU2sfp0IimPmM9QUk1C1Z\nmci+tHgUo+WY3/cwEJ8UZ/Qf23aMAiF/HJ5cqLnU2B1ihE1SkHYfBYj9KW9V\nVC9Je5cyAoBpa3vasCGTjs5fvptOlWWjqs2QvujIja/RtNYBe4JHgxMJ8DLf\n8rz2UX5BcZN7GpsdDTZzielr5z5N3BR1ywZgi4DG/XBbswOGq5dzKtYZr2dB\nrj7avCdoDOkvFMt8ttbZPb56yHFMW/fnCjx2hBbFVQTYVttga66Suacle7uJ\n/UPKZ1YwqWpUOWzesSlZqfwWMoMaa2aWM75cjX8ojbBy0vzUpre3HSdnFDhc\nTzZMh1oq1DUhsIXsYdQjAosH/UUQ/92T1UhwozM/kooXHLQugRczH8tSDYM4\n3Ki1\r\n=VK8B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"529db5c569430faedc17cb700eec53f1e4a97a2f","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"k-ho","email":"kevin@optimism.io"},"_npmVersion":"6.9.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.16.0","dependencies":{"ethers":"5.0.0","@ethersproject/hardware-wallets":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.9_1604975899049_0.9007699122821744","host":"s3://npm-registry-packages"}},"0.0.2-alpha.10":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.10","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.10","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"45356257f67a362d351779354130b7cacbfd674f","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.10.tgz","fileCount":146,"integrity":"sha512-0Z0Jmga0Aqt6tUG9Lux9ubPpyrD8XrHN15nF+IJdRBc34Nk6hdtXiNW65rAdQcBlS+ubfNDC72J4LWNulTZiAg==","signatures":[{"sig":"MEYCIQChJgQjMcLJeHODDwrrLE5rh8By9cVMAo63XVELdG2RXgIhALERmKkYpS+WodKF5z0RDrv+m80Ez+prHyhihPR2su8u","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1587751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqhJuCRA9TVsSAnZWagAA0eQP/RxU2oyAY7Ot7Z/HR65I\n90ZrBOh+akvD3LvS64qM83p9XPqhsB+eJBL6l1Li2OOlWb2/O6MPSuzWIuqU\nsHS0hzC3SU9YibOMzchI2lrYqkFx7mS6qnds3M6d+Sjcc+TDrwy/6p0DxqxG\nQOOSfWQ0GV+xAYRe2JHVeKW5xIiLWRaos2uaF8Wh10kEV43MA9uwl7CVig1w\n9XC6K9GDJc9WJ3tB8IFUuao/Tw7O/70O900ArJFgjFaZxXxc4hQPB+ygx4qp\nBJiH6C1ObXHCFhIlBXYIgnhd1QoIdZi/v1qs2EUvUN3ZH54jKtaVdhDhzu2E\nuFHM1BArF1nJFSCrYWCrGnBRZWA9ByaGmKZI1NS8IsmCYZ9aNNxQbr8AT8f+\nHBSVbFY178vUqi/Fyz4Z2DxqIyF8ZnM6H9KNn7SlNVPii+zAUKKA9epVWrj6\nOaE8sAHnyttX7x2CpZts2r9AIy5YHl8oQbHNyfJLhGgalvhHCXKk2cj4WjyU\nQbDflsMOs7jTjAJ8A0LaHknaltkZFERn9CI+2xmCgWKG2EeQtx+NZfN67+C0\ncAJUm5sYBqzB7UFsfoRVHBSOd8/k2U8HXlYRkg4WHBcAR+H94qqqwaSXXAEL\n6iFMJHHbXw+D3C7ViolNMKTPXJq5v2PvA0OsqdfYG1l67RNPp4427xKz5Xe6\nOe8Y\r\n=/4DB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"529db5c569430faedc17cb700eec53f1e4a97a2f","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"k-ho","email":"kevin@optimism.io"},"_npmVersion":"6.9.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.16.0","dependencies":{"ethers":"5.0.0","@ethersproject/hardware-wallets":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.10_1604981357663_0.5911132669907171","host":"s3://npm-registry-packages"}},"0.0.2-alpha.11":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.11","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.11","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"4dabd2f94b47416bd399edd116054907a2b16811","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.11.tgz","fileCount":156,"integrity":"sha512-kq1j2wA6X4pySkbB7xUI1NroDPKKmwCtdUBlJkP9Gkem8JXecal09nWvR+WtA78YaAQLGE55SEN6OydMUg5MEg==","signatures":[{"sig":"MEYCIQCQCmNOGpaDwCSge/5BLo8KIwu2uZDuLxHQ+uFa2et+SgIhALS2ccSbYGXU5O8R0Ilj02LpeiZcRmY1zlBXysNjnclf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1675150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuF5/CRA9TVsSAnZWagAAhzIP/3kCcJtbHbRZFiETmTKg\nHx/GiCb9qCEclLx1ZzGgIHzP6sRFcUUsIXZwl77NPr9+gGWm+uAzu+NtfclH\neo0dqt2SMfd5pPsJB22TMpMHZE+zrxArJaDQJREgWndqMgb4kJv11mdKXfRN\nU8jz+3m9EWYjROeXPVPFfP5ML0eu1Z0KvSE2q1LBUA3aCbuswWZ7RdmT8CJv\n806gHWFNB0wxlJKQ+y+z6DksKHkmb/fOunk8FE8Ct6FALWg1uC1IsNajVl+C\nzSsCX/gp8m1DAlNBkrLOpYTHuX0wpTdnMGp4d+PNjvlzTf3avTqGbuUGnqM6\n+eKqGtoBNPegetA8k56Qpdtd7x9568yrNIFXa5kMUGgsQrCQQSwSKo2NcHs5\nS+u02BvJJaCGgVa4m1zevBocY9c9zHNiMf6tOQDyizeQIB6yq3GbE50rK28z\nWNI4ylVHmBZhXhdYbQI3o0Ef4cIQOL8JbwqZQxXV7Bju3wSGfehHGk8Pn0Xq\nXmmGyr1wP63bF9jZ1rFmCuyyQCY6pbgjwxYx8FpR23oWvjigiHfiDh2hlC94\njpxCT+IdURrWl7reOAVgt/fmR0y1rlgb86Mb/TR8TBsPblHdywOh15mHStuk\nnuZQ9MowpDkXVELn7lUsodkrpyzGdLPLq4neHjwb1CZm3IzQr2e2D3vBnX5o\nQZ4T\r\n=kx+x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"8b7c4e8a90dcede2fc485e4b515b0f76608358e5","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.1","dependencies":{"ethers":"5.0.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.11_1605918334471_0.46492738432235403","host":"s3://npm-registry-packages"}},"0.0.2-alpha.12":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.12","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.12","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"759325eb8e2a9b0fcf4524b7db4148a3cb579e48","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.12.tgz","fileCount":156,"integrity":"sha512-LmStuxoaI1nBo2v5IREdqGmkTdw9sxAeFrlbN9dd+MdW5jSUvs1umnzRnJJBly5a3sjvdFvI5YkyqkXrTnkwOA==","signatures":[{"sig":"MEUCIQCF3zeq0EcQ8HUAPJmbceqJ+ZunjOw/ydhVbwfv5WSutQIgeWPWDnOyznazBBTGf8EEm6A3Eb4BBx4SMGogjQ4bn7c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1675244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvBYfCRA9TVsSAnZWagAAKSUP/3JdKoVm6nGk4Cnb043r\noEFt5tZo3E7jm/gpk3t2prG+UkszFhG3WquL8zKucCBW6fbxxEbVUpoFDw3c\niTS/PEojBKpwzb3W/Z9q1uMGCQJPWZpc55C4Boa9TOHIpaR0pvxwAazZYnbt\n1FSrkgBfNwye+RzEe1LbOxB9QSizqUIWdNjMQh5qeTeu3NZMr1CQb5MyLELt\nN3AVwPvn4RnVt77d6iAbxmJJ+w52Y34toLWcOgG1AcarDCmDFOcrKYwE6DGR\n7EvKDd2CsmKY2MFXYzbyBiltwDw8N5QxeTVO3oKZDYzLVE7x3CcKdFLCcGhx\nuslU9yX3yKHnSMOQg6pJi72nfAsEYafv0bn6gYClqvxzCvSv8phSlSPj2nMZ\nr7FrjBvu33OI986tt+z9Z5/BFcv83C1KxSAHVM4OIpQh3sWTzdMl1K9ozpmC\n5aGkFdGSnTRWK2skgmOgYiSW51p/lGrR6i5d0vmZFU5iaFFKXZi5Ad4UbNy7\nqbecmRc0lyxpVv1Q0aTJabI279S9g+CEgh/5m30+vvqKJmaj/G/z4ReZtMcS\nicq0cM9pTmmAjyQaoWuUBhG9jNPUiwTKLtNU11v2KMXdoMEv7kNKfjTHvhos\nwVVbA6/zOQd86kLBrQoKp/wmW0PaWf4IdD8RmuJFbb0xQHql5cFVaDDtcQ4i\nmB/8\r\n=vMsF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"2750b94a9ba4cc0326c8d6bb05e12e28654ceed6","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.1","dependencies":{"ethers":"5.0.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.12_1606161950925_0.11225729710459675","host":"s3://npm-registry-packages"}},"0.0.2-alpha.13":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.13","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.13","maintainers":[{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"karlfloersch","email":"karl@karl.tech"}],"dist":{"shasum":"4c404d7ee5778cad3b24d827426bfc020ad9cd39","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.13.tgz","fileCount":150,"integrity":"sha512-Kk+cUA4RdUGrRQKkIyoAgj8FMFza/puxT4eOjcwDkSFbUcBSgqfEh8/34r5BCIEg//roZbK2xiKNJBVZ6p/igA==","signatures":[{"sig":"MEUCIQDghZFnoX31LWti9PMTMGAXsZSpqIk7nc9NQ2LmQHufJQIgBgmuLANZzoBBGoP39uIEgqy54A8JDxR92f6EhlHfjrI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1669093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvBeaCRA9TVsSAnZWagAAv6QP/37X/n025IXJr6ItOd9o\n6bkzP5ATIsohuikG2X4HBsS8i+O47XAgmc3bRg1XYGmQC3jtRednh6XVBz/h\n/ft13LtnPtgLNme0lslxUHb1/fpMutJPodMk/PAmZmCeSXm1/qW7JBaDMWXq\nUgLhfiAIJRkeVA0OhajK6E/4zaxJLu37XhRT5YAEGzbQS8dsS2eP3JT08q+/\nTaOgeqWFreRzS+PuVEyuOmiE+d8kyb8T3M1a8OSWrlFxRcA/apJAEm6GoFL3\nrKVRFK15gUlcsgjcz0F7mZJqglZTO5a+9lF0pE9TOafCGoQhjMBjNfNCT0V4\nQUL9T8WvnVMaPw1P6TCUhWwBUctF9rZwQE06Y5vFUaj/0GtFyrWXZvMlgmPN\nXtZTpNG/KR81ooCH0ydsku1kNk4/oBiKj1HU2ZIr4FF95F9BFlCfRpJQiZTH\np8IhZxj5TNHHFPLFLmaKeLIKDMqNrB1+WyIHmN8GADHteaXE3PMz2aOqMPsV\n3TghDpaLapc8QV0hIR8VkYuMWoT4k8jo5zlrYgmJLVsclC7oXOi5tE9WJgQN\n2mo2OAH+EkUsJbMIo7613vDjLw/0FJySkwyvn6NkWubBdgIrv/j5j18LYJSo\nz4TthCoafZjiIT3txyX4iZe/NCgNIyB3AGlZreOs4vw5v6hfj8tfhfU3PpN5\nMt/r\r\n=ehPr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"a8ecc4ecbbc01889f607dc050eafea9e397d3694","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.1","dependencies":{"ethers":"5.0.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ganache-core":"^2.12.1","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.13_1606162329987_0.27557641085335205","host":"s3://npm-registry-packages"}},"0.0.2-alpha.14":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.14","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.14","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"382ae9250e7d89e7729bcfe73ffdb85897e385c2","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.14.tgz","fileCount":171,"integrity":"sha512-EeOKiQ+Tu/bZqlq2bsXJegRYHhBXlcDO+fNXG1NJyies23rcLrjR7LMocJmw/F9TpYJ08UqvOHttD5w//cntpg==","signatures":[{"sig":"MEQCID+SLonnhLdAEkV84mGLzpa2BGNXIehEcw+VHaklNU5PAiAIXzHw3wYFmQWnpaT9eX0KNkJU/uYbKBrOjDkKaLydow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1785238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf176GCRA9TVsSAnZWagAAVjYP/i1kyIiG0Tu2WKlPSlVI\nOxJewpp2k/uoYclH75PI+G7AixBigRQDHwZgQlhmEcTqo0eXWF6+YffXdV8o\nghjK+wkOikWBW2fWtqpbxIS2F6uTQ5QuKRQPz6kZa7mu8xyelh+WWxIBbKG2\nSewlYfuhBr/az/70mCy7yJevFvWNkZYTxFfGrWQq2MWML7Gjud90LZF7ES5T\nNEDEKHmfTUpQWRT/SBA3MWyU9Ohxa81MaohYa5pYGI0wSf5MhgeWl6LERDVw\nVdqi0qT9BdW1L/4AwZ3t0f7ix0nIHNYHKQs3aAbs5OxpGmzOC7MuCI5mIEep\nJSkB5Eu/jCNHoLjOdTKi0j5fz+JXXRoGpTET7iMu/Ie8NxlyxCbQO8dBmU7r\n/v8CBK2dOkqsct9GqdmqL5sBxFrFx4QIFEdOF+lhN80Iyqx+Z7Sd2zevotXA\nRkncFOu2kev/KaRo4kxz1KBr1+tvirZMqrbjHwgC2nNNKX5fBFmsDmDakcyM\ncWhuUqB/HlLMJeU9puvtvP8yVWokZ+OZhhCyYDcBMxW+OYGNXkHY+AAnU/6W\nGuboNRbqxuLkmlyL6REHKfBEg57aY6S8tQjnf1re5C6EMPlhBrrnHHkJdEsR\nCDfIaJ+Vbu9Y6K2nlM6rK/GlQwkaZviQR/v3he7sVJ7PhuvOAWP/0pVdm+y5\nJAry\r\n=VVqG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"dabee6357c3d316d7d51cbc6fabf27086ddb745a","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test,plugins}/**/*.ts\""},"_npmUser":{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},"_npmVersion":"6.14.8","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.23.0","dependencies":{"ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.14_1607974534209_0.3755492333201953","host":"s3://npm-registry-packages"}},"0.0.2-alpha.15":{"name":"@eth-optimism/contracts","version":"0.0.2-alpha.15","license":"MIT","_id":"@eth-optimism/contracts@0.0.2-alpha.15","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"d602bdb6f1186d111ce9f7c282fc80e023086892","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.2-alpha.15.tgz","fileCount":175,"integrity":"sha512-upJfYHDWQY7nM0AYT9MKQiuOus2uMUhvqS962qiBq3Ly/9GUq5mS0UALynsrZBGbzT6pflOMKFFEv7jQEORGmA==","signatures":[{"sig":"MEUCIFNkc3Fjgcsdkoek3eTScQHB41r1APAoC3vxLUrzb1ENAiEAgim8/ixOL41dMdXyQOyDhdm4H0gmxgxEeqgePq3uc2o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1825399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2We5CRA9TVsSAnZWagAADyEQAJyyq/QyF9f+uaQQYrkE\nvHSWd3JzzFMPIK9jPvdgJBClL90ExTUFyH4wRLEIs57CfBUzDGh9aReyuypZ\n/fqgeda6vZ4wak29WbckDX51R8XTrSQ2axKHjTLKNfrQZMbWZsKmxd5g5Yuu\nFEqbWxpFKMiSQq8rZqz6EpGx189LENx2qufwO4/yXwj/6vTKwI5A2h8xTZ1w\nZfZD7TXVNQVUhKRJL5xuoIj90BpF1UwhzoZlRBnqAzG5Z+mHc/AMBLtw5j31\njCsVFjKIbmElfNqjc1gdincuRvrimrGxquc1zAtTqX/uCJ0jqjagxoZglQ64\nv7Q7/6Cfe/U9Xe2PmMm3vWD8SRrIe6WNnkFpQhfjzIS4AsQb6mxBJZlOUuEG\nkeWI58tUl/Ev6iB64MAFmKTsjNFtWKLWbXSLKiaiphfAanGLQ76gUqfKBYVX\nl+BurWzfPUE7j9j6gLcPlZXtpmEoF9gLohtLwumJuOvG7Oq+CZVZzjRFnh35\nq3VdkG+GRbZJQv7kuDbbVWMn2GI5NDSmTkR340dNlwWTpspBCtCp2n7vqiVl\nI79O0m6+/DWiVEFWEb2a2cb6nEfvoFthWUUX0RJW604MiUgwz5Wv0IHVpUJs\n2PQrqhyDdbnudOEFrOC1w9r9mff9lzzMUWJjvol27p9CNbd2DTxPJ5JyHC2M\n0LkI\r\n=jPRp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"c1851bac8114e1e600a98d143b977c5a026ba20e","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},"_npmVersion":"6.14.8","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.23.0","dependencies":{"ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.2-alpha.15_1608083384654_0.9222455385209853","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@eth-optimism/contracts","version":"0.1.0","license":"MIT","_id":"@eth-optimism/contracts@0.1.0","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"3a8db11063fed4ee1d6d86244a0308bd271af5f4","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.0.tgz","fileCount":166,"integrity":"sha512-TlD35VNadVnDUnwIrdgkE3E1zLw8NnSoQ+X6X+l7sVUvMRK880kJ9hQ6tRT8F0mH4GgLZ+2Qi2gM9EEW1YroFA==","signatures":[{"sig":"MEYCIQDHrSRlO1S9BiQLpsdFYyIfMwLw2S8+kmIXA5vLWbplZwIhAOryXJD9QufkYlFzJq3p/2IyzjIM9Nt+tfLPZS+7VGPc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1826011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf90S1CRA9TVsSAnZWagAAJhMP/3mmLO2eMf1awa9KNl3j\nhwdCJncAyw34LY6NHdkMP4VnabUjzYsNkF3xWkCyiXhmkXeyAr/yHsOBGQpT\nQNhhwmgqZ2/QBqni8Wn5lgUaRpwLWs6XMOC9krq3Ax01KeWrqiyiLAd3QfXe\na1+FLkJ07VWEe8gkCtrnI6YuJE+yD5LhpDGlUL52eONhxM444HLtoxQ8ZIKJ\nAh9mPq8/FYYdWT4kpbJm3s4FRFNrIsfas6YWIonaCBnU8lgwO2lAghwzAwh8\n7QqPQLK1o5eWWICSrstNx1MAAAbbtLJHKjqLCI/zbLpMuSZN90p1ZI9Jsqb8\n4hdKOb6dEdBkcJ7w60eSqnvCiPbE+yD51DRi4foPP57ThbQMbi/8t8CwbVqZ\nOxo7VdGRq3bO+j9uH3pMvG4YalKXiMMW2qWmoOYM7p4zqubcSrREJ4+R3EUd\n6Kx37BTbwQpOLA6ftWHoZigzmY1WI/EzirOWONN7QO45fbqdEGUZOCf5zevK\nqfIklLRiIc6Q+q801jmUzdKEmxdJXmjHLHLtP3lyn0f1vGIfZ7JYNGAl7YkF\nMt9sl2AC+GbSXQ9q+Z81mkwHtQD2N1+6RCHBgBMFmUzELp6t9aO7sTxpo6G6\n5d14vO9EGlGRjx6w1jF9HK/+BBDkl2RR7PlUKJWHqDKJ00IX/ni/LirMlvIx\nFH4o\r\n=jjx3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"25a2349b7839411677e397b507964a4e45497ee6","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"tynes","email":"tyneway12@gmail.com"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.0","dependencies":{"ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.0_1610040500629_0.009594229792054154","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@eth-optimism/contracts","version":"0.1.1","license":"MIT","_id":"@eth-optimism/contracts@0.1.1","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"26082a9f616c261f13bf200b57f5f1112e2e43d6","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.1.tgz","fileCount":171,"integrity":"sha512-dke0RCNQexbOg4xPIpAasyjmHeJBjeRDRywUuIkHapiV/iUES/MtCt2gc48ILb1SPBTycRJczaGVfXJDOccZuA==","signatures":[{"sig":"MEUCIE+LR54XDuL7dGxgT7X+Fv+q+DCWbYT9gqB4hZ1KNKdrAiEAkswUpE5VLp4KvdFYIFOBV1w15j7vVZPVD8awLsGnCzg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1875515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/oLkCRA9TVsSAnZWagAA9uYP/0J2+wZ8OyD9y0MXtOsE\nMw0oYOQsZS4tteLQ1P19NcurRI3QksExNLkMVImG7gI7uvV7FxD+BRlvD/iN\n7YreSeDxpwnKfm66sv9I5UUuU398rESTfIM/RRqqDXNuT8DHmW4G//dkHO89\n0LBRev9mbWsXbe1kbO1eReuoPNZhRmsBEGvEbsgwITNcUSgsMmjSMfvlDR7t\nG3OsKYM31RiT0SFD9hxqcqVmnkrYZD8qFceX2q3eVwbt8Uou68qDvQ6FU5Rl\nfEmkUCyKS1yYli0A5IQBsE0jqBlchPwcGnMja3r8Xq0DROxwQAb0v8+tWkKb\naKyrjPeL3l917b/aCfWONRf50pbnZO2xTDfhzJ5xxwzbqgJ477P10IHdposO\n6lfuXjW590P+1KQ5VZMmuEnRdPlDJ04cruw+sittq3si3M5whO1bCIxERCiK\ndJHOM0PjNF6dsvOOASqHBK3AfGsW5xjDZImXilo+HwN1/rQldYX4/6NeQT2J\nEUb2+eQsamcdFFaf8DbfgymQnhFUZyhKTzBtJ5Laplm5H7s/A6N/Yo3tk7bh\n/VYOQid8Q/1Efxr6koRdn88V8PA2Q6lCPYJ2ohT+AS8mvboto8LJ7h+uiHkf\n98WVX1CZu8RdR2hfvOVdwERPt9rm0X41kDnz16L9OsELpcHAh9JqaSSFGEdZ\n0Qnq\r\n=tflj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"794574ec22872148428517f06d762f49c1b36c23","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=422 yarn run build:dump && yarn run build:typechain","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.1","dependencies":{"ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.1_1610515171673_0.8759201843664659","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@eth-optimism/contracts","version":"0.1.2","license":"MIT","_id":"@eth-optimism/contracts@0.1.2","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"be032b2007026a04e6e6e54ea468bc0c3ed949af","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.2.tgz","fileCount":166,"integrity":"sha512-bjU3EyOUkCs/Mxek7UwpeLfKDzukMVfGhJ/+4deYEmosPwSvxjlZbGdGz3fGZX/wA+8LeuD+rOTqaSRCZilHjg==","signatures":[{"sig":"MEQCICi+4N/wI4D0aboUopfihyGFIedPod52uqSqBQhZdTq4AiBPhZMr+Sd59nazAHavE2bXyS+m+VjbiZ/4HDt9Ihs9rA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1861077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/oT1CRA9TVsSAnZWagAALsMP/1G2B2k0WlfW+PG32MRf\n90LV/mBgU8GYb0JvNLP0Z9K23ADqZ3/5nanRbsX8zA/Ud9Y0WCSy5K83AhmL\nrcFkCXZ/KSfNqB8OYxPCv9x5vyTSrMqtGbu2OmoxpxXuy/G8tGUArPaJ6PjT\nCmo3sWtMWM9iAUXGOTYDF8HDVg8Hoi21ufjBgaWvKOVkIgtFu5oKXIs4tYqA\nFGTqlT6hLEOzT8V3LaKVVu7J4pZaLpuWvmwLGATojbBqklzpOPcynmUHkwc4\nFnODCN6jZmfjPy1NmCymlAnm+mF3cS7/3JX0EhYQNnFZXrdZcSn7qzCr7QXK\n11F8Zk5c8fplLgQ2rUDaxi+gLLWRTdD/VGAyJ5QWEpaQKV9pcozD+G28VYDY\ngqj5EAhNobChUU/MUtR5FnaoBWI2PX5afkqYuXVQSs9sjt+qfeZWckVhin13\naMQcd6XM8cjs9TDWUUEcCup2ThUC8WUoCU+w7trX4fXOB962MXcpssszkP9G\nRABH89OsSi3slG2An2KJ157TD/MhUus14r/niPjH3qJHYFz1XxrsPWzZefNG\n1on+nJQ6IKMPcjSmEwCru0Gyah5tqMj8zXhR5QQ2vzxYEUIUe1OUdr8iHPBV\nwLT2Cbx3kPMbDqF0K8F0cUQulybyibHJpYQ8b1m0S/4mfmlQWTVwK0QCLbQG\n/pGl\r\n=2dGh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"64b6b5e50d91bfb168d15e8a4d9ff3135027d349","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=422 yarn run build:dump && yarn run build:typechain","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.1","dependencies":{"ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.2_1610515701058_0.7307202638421229","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"@eth-optimism/contracts","version":"0.1.3","license":"MIT","_id":"@eth-optimism/contracts@0.1.3","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"6d0d5e651118e6142d9ecabaafc212fc38dfa5a4","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.3.tgz","fileCount":166,"integrity":"sha512-krLTgqFvZiUM3FG0g4DF67dmQaspAiT/BEoiRitMsPAZ6OCQOPPbBDaPh6Pe7hQ/oUAHRGMQAwYIpJSWPGrveg==","signatures":[{"sig":"MEYCIQDzfWwkTe5HTAD5QpN+SDOWh86RYoheTacfTpi31G+i6wIhAMsMbJB31Da8oUsB3Z0K0MJ9sMNqO37ikLfhujFoyytO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1866163,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/zCQCRA9TVsSAnZWagAAYEsP/0gWpg7UxSkub/zu2NrR\njY6ClViYQkMxQck0OrOAhNPb7KDXoVMJMkQM6NkTjDQV9opnWn5ZX7MvVcqE\nMFpE1hW+k+PbQnT+J6CGwBKzfirAn18xy6mXeM+lPmvmhrAecKM+Rci6E/rT\nhD3jO8xf3kaQ42vmzYggJyDZobkgm5EDEwoNd33Mat21ZwKNQyQl2VnyXlzg\n03lpdZbBez1cSFYzCW8KMyBxYbsj1DKAq7/2SL1+/QAcxeNa4OnI9Or8Zgny\nERHGw63W1k+femBzTbPJbqyVfpY7Rk3koEChdq0iY6cryJdXwNvqiQU+JY6X\nUlpACBKabUKTvv1prd3VP4Ydb7W+kMKnIQHm75KXJqcu4xozal3HaS4pPxlK\n3b1JOQjfYm45LGH3nZ5ltWX1CURDttiGSC2vq3jaMZSBEy+Jb7bOK5h/8/Zw\nR4QLQAvgEKDnutujR+0W8K7m6Ve+Ib2kllmMh6WnkZawRBMpXBeTzS1nN5jQ\neAnqbvRkn+q0bgwruEdMiq65LkMvBVNiyYwBXTvfPFHsSCQjT20xrsxWVDwX\n4UVJ8OiDKyONm0QS1afv+pcI/4f05hjUTXVEVqZGbezd1Amz91MCx62Ennbn\nJTjAlAq4VXgSILnZ9staf26AYfDkWi0Hz1OTsAyx511MeMTIVBDFDCZaeUFg\nfEen\r\n=8xfP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"2d30c113fe3d79c0f6d0cb02490d5d3ba3596cd2","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=422 yarn run build:dump && yarn run build:typechain","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.1","dependencies":{"ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.3_1610559631904_0.508971037428551","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"@eth-optimism/contracts","version":"0.1.4","license":"MIT","_id":"@eth-optimism/contracts@0.1.4","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a918bffcdfa0ce22c1af3b091a81af732f58a294","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.4.tgz","fileCount":166,"integrity":"sha512-JlbhPkYDgurQwlar1L90XTAG0QK8Sd2WCU8Zaa6BXn+Bg1mVe3g80samE0YaOFNHmSscjtvjXqy3B/d0tzIH7w==","signatures":[{"sig":"MEQCIGhFZ1QobHw/SLD6BRXg4I0I8dXo3uqQw/D0O2e5G4GNAiBC+/tKQ6wSYeeJMHWddJYzGcZAiwuc2Alrjx2xorERyg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1866252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAOugCRA9TVsSAnZWagAAJDEP/3myIGZdtWqNb8ZyS+oP\nI5V4xKc5EgtM+MOktT86e3WSFTl8l8F2EGx+s2sLYJmJF8xpreAjQOTMBKVe\ncyZHHKFwZJ0RZ02hipiQUlHpcAf8Jghel1Ch/360ljxQxTaZwnlXV5mKgRIO\n9Scz6qQTzoCd7xDsTyF6cuNJmGWUHTEweTpMI5AQPxhiVrp7/oBtPCq22tNn\n+qN6QCz9/xyzwhH/8/J97CSCAZ0WQ6zbJyueqPvxoxHPqahPf+V6UAF/SqC3\nscPtCNUZYOE+7jqJ9qXlWHmApuqIc1Kd1SZNeADidh81y1s79h88sC21uE9a\n/5zGLQ3rGXzB9Md+Sl6n2d/fXKiTKK2Bir+sVl8ERws2tBaizI3WG+tOHKrz\n0B3TVrQ0spbnxl/kh8qCctUOe/wY9erIOd1Fl10xV+whnp7RArNsjDfFvffq\nkN7O9vZEHwuDDzPHkxTPTBDW+i5XroDaP6rEy8WKbKiMqV7Cp8dopQFjUfF8\njIXtrk5bwbtJjfqCc/24XUHTBK+m1sYXYEHwJHPnx0p4mvSLPVK3+37r6l2o\nolBDYScQaBn6EcJ/p3IvjEGOw8Vlix8ylpcmNaMXcc7oNeRuIVxq0FqLf4ft\nAuHMY3xdJrEgHtBVHiHK9YbwyKjvQjXlxHfdnR7eA2TrmFuwEF51JEIseyW2\n+s79\r\n=MAKU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"ad5e11860a2b1b25e886e5fdec46b1afb7a5372d","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"buidler test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"buidler test --show-stack-traces","build:contracts":"buidler compile --show-stack-traces","build:typechain":"buidler typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p tsconfig.prod.json","lint:fix:typescript":"prettier --config prettier-config.json --write \"buidler.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.1","dependencies":{"ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","buidler-typechain":"^0.2.1","random-bytes-seed":"^1.0.3","@nomiclabs/buidler":"^1.4.4","@eth-optimism/smock":"^0.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/buidler-ethers":"^2.0.0","@nomiclabs/buidler-waffle":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.4_1610673055582_0.6834604231420542","host":"s3://npm-registry-packages"}},"0.0.0-alpha.0":{"name":"@eth-optimism/contracts","version":"0.0.0-alpha.0","license":"MIT","_id":"@eth-optimism/contracts@0.0.0-alpha.0","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"948882166aa83fc7830414c79cc064425b09d874","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-alpha.0.tgz","fileCount":146,"integrity":"sha512-zOWTBhIsppd4VLfPnGkpo8TI5nvZ5xMayvDx3pzXBXkpDy4OGe7pqH/sqPW9k4P+XHUngH+3Bj5PjYNSLSDMbA==","signatures":[{"sig":"MEQCIFIC+I3QYWToriVb0mSlMsk+M4Zwyd88aGI76PlMyb03AiBn00yssIPW6W+OrFZoRsZDCnIxc9LnPaIg5N9/A3PnYA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1031730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGjr2CRA9TVsSAnZWagAAD0cQAIKoXNu3GzIQ+CeRCerw\nETGlJMFhC8H/A07cUh3DsHaAPwzn8f3S8UifrWNttGvtw7VnCAAV1bvAJE+b\nJveLw9w3SzOQtRu1icCDCN8+XO5Z2ryVqUwZJxNfDRdnFd1Q23wxUGi/pP8X\nV635dVb0bnJPkbT22glwEqdXgRgqiWP/aar06MGZlof5p8HvSvz4v+ovDofO\nH9VaPv0rQBIzudkWDVKZM1Cvz3W2ELpelWYApFtHmYaPmQa3Ey1JTIVBVhCa\nrH8klTYfkCoobP0MU0/Pc7cOunwkFxHkh7sBBt2VU0fM1CMKBN1T9yIcvEdX\nPzzNfmrezLPoH4hODldOTkk3RrzGVhp92H7ZVW1HcPrXJ/NUq6rTvsTOY6w+\nydv+xhm0jiqKlIvY7ikb8DKyEzYn2EbmXRxAVWtu8rSDFUB+EOwEn7NiCuQn\nTWbByEg0po8QtVnt4IUkCpS7umX84rOz90QysnaHwvnKBk4QHFSYTrzuLfvy\nduhZEvYXqzHr3FxoaTsJDdVdBX58C6poMsiKRAA7/QRPlLqY7sw5BAWad7z3\nlN4EBDdhlxR7UUCWlwz85r6A+LJ9cs1aVZxg/tCN6m8yNvrRt4G9hTJ6pkDA\nu0yCReNYcJiQK51zoW6KNUvB0iXMib6x1svzv4jr+BiYro0HJSFFRa8UOmvW\noGyv\r\n=4Pgv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"c74bbe20429a851dfbdbb3fae169a21890027ef3","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\""},"_npmUser":{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},"_npmVersion":"6.14.8","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.23.0","dependencies":{"glob":"^7.1.6","ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.0.8","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/glob":"^7.1.3","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","hardhat-typechain":"^0.3.4","random-bytes-seed":"^1.0.3","@eth-optimism/smock":"0.2.1-alpha.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"^0.0.10","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-alpha.0_1612331766351_0.9484839986166163","host":"s3://npm-registry-packages"}},"0.0.0-alpha.1":{"name":"@eth-optimism/contracts","version":"0.0.0-alpha.1","license":"MIT","_id":"@eth-optimism/contracts@0.0.0-alpha.1","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"0b794eb765b4eb5788c196bf26af29aaed90bdfb","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-alpha.1.tgz","fileCount":496,"integrity":"sha512-+DJkjbfnyGOo+qTEX9SadgqlcH9fEQaiQzOWzJ8kxiWZocpXlr2+DtEdJYCuJ7RHmDdgLOJt1IM68/2as2E5tA==","signatures":[{"sig":"MEUCIQC+AhOtlzQaIn6d3yUm17pe7s31QhQ4jdImiG9eRga2cwIgdKtt1beHBGdcZRkoJACIfKe5EE39D4vTP3aHe75SL+Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40746506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGkE0CRA9TVsSAnZWagAAo4MP/1hcKDnVgiCeqiIzEtwS\nrlisFFjwZfZCDbboipTD3ENDmkpsw2+NoFyg833XyjW/DfnE+5JNnb/phyQd\nWhVElXBoMFODXzUsZKPGMSGZREwJsyLO+FPEK46ZV2n4Z0dZygq4Kq36SROj\nlSocrLK02Y2AUwjTS9VL7k5pAbnPvg+X3+TMrOynTJPMmlmOug+1vZIJUSzP\ntFJY1lMeOoX/8kdnjy9ZfHCDaeBMupr5G3fawTCmSL8mDHDm4siqo9mq+Wqi\nZr7YHjoIPYVvHRHyJzb5dcx9yC13KRGM5PS6R75G8J7+a8HWT4BgdxqCBWoX\nv70PessOPHHlq3mRrcGw65jV68fIiXfV2y3PcKSDZSoskjqDc6ts0TGHSb5b\niL+2HqC/zXKopQqUlNu0IjIkMjmD+pgzf9i7HmSQqwJJzrK6NggF/MgiDiy4\nGqOaxyXDfV4Vfna+nqVf2cD6NF5aCVTYWDmq37yLtTnZ6aw3b2ms3rIIYNQp\nFRFkBgTBfS6aX1DQ4vA+yGW89wI9xlWg6o04IHzI9siczoVAXzwEY2UfogJN\nAIbf1YkPh0XHKkfvTtaOWb8pNCTBdu+HdUbzcTdnjaFNKHIE3lY0Gw9LacN0\nowaHcMT6PIsIQ/jy9tuSw5ZqnimUAdvlV3+gfd0TAHB//BEcNF/r8GeTHiI3\neqhc\r\n=hvlS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"c74bbe20429a851dfbdbb3fae169a21890027ef3","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\""},"_npmUser":{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},"_npmVersion":"6.14.8","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.23.0","dependencies":{"glob":"^7.1.6","ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.0.8","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/glob":"^7.1.3","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","hardhat-typechain":"^0.3.4","random-bytes-seed":"^1.0.3","@eth-optimism/smock":"0.2.1-alpha.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"^0.0.10","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-alpha.1_1612333363934_0.7182757665317068","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"@eth-optimism/contracts","version":"0.1.5","license":"MIT","_id":"@eth-optimism/contracts@0.1.5","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"e1e9b5d1f207c8b627a3ef3e2c509bd4b50a7b68","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.5.tgz","fileCount":148,"integrity":"sha512-moWebiYRk14SOlqB1K1NQOfGiI69C+77KP3uVYepGAkqTrhFa/KqUzdYDI4lOC73xIXIgF3kwu3MaEYf96OU+Q==","signatures":[{"sig":"MEQCIAcP+XCnMNr2Wo1eyLsaVZpLm+gEVoTj3SrIyZjtFjbcAiBuxocZxPIuVqFZImtiqNF8AcUVPgaCuKIIVv/mhfa8nQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1040832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIswUCRA9TVsSAnZWagAAa48P/3YHjxS3RMcX8Dixfw2m\n8QlgJtkduUEoo5SjnzjI63U7Iixn8fmPAWf6tGvh7li4rGNrE9MhcYHyG5yN\nuv1fCrTL2y7QeiT8s1jjLhSrx+bSo+tDvtuaBFia8y1XaZXgNQSNcJeP2HQu\nqIRRMgHAy3ce4hegN3BXQtE5GvJtRd4xQJTTh/VmwmjBbZKhPiNhnikjMo9T\nhmw7Uv3LOOdF75Da7bsil9DZ+SFhOcIdIGz1SkeRKrGYwsTCLCaJ4seqxF5g\nSlgsLPJW5lwrr5ydICoEQIIHtbp4LyCqje/OA+U1KpUlSAgYZPMvCPDhll2P\nn8gAuCej4AJR2hFBupJMzTrkCOMaM2Z/ABKVqwEnrd5sAVPQrq32dA8nP69/\nfiHNMXy+iihPcJG2PaPDgYdkE5prjO/M26zA+zNa36eS62KWeJcWIATZo6+s\nOgCVnR+qtoH1NVnPidlFC0PnsKMdS//vND8P58plNOynxAciuIcKFfv1zZJJ\nzUcQeNk1kFVQYVtvNnWZ0bSperrqx3yQecHhG4vscffRmkac7M3Pctd6kBMD\nM7+ZLL8WpU6hBuNgHY3F33fdeHvA1cenlPnZmji3N0KtFIOzEJP7vM8ZT4qY\n4FHjhM0jbXjpHkiA85TNv7Pl5Ro2DLKKCf3ckcOO+Ez8ohQWRE8sTFHaEtT/\nSo79\r\n=rfwq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"c15a57afcb749871b5af0f4f8dd479018c21d425","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\""},"_npmUser":{"name":"ben-chain","email":"ben@optimism.io"},"_npmVersion":"7.5.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"12.20.1","dependencies":{"glob":"^7.1.6","ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.0.8","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/glob":"^7.1.3","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","hardhat-typechain":"^0.3.4","random-bytes-seed":"^1.0.3","@eth-optimism/smock":"0.2.1-alpha.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"^0.0.10","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.5_1612893203518_0.5934365561598407","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"@eth-optimism/contracts","version":"0.1.6","license":"MIT","_id":"@eth-optimism/contracts@0.1.6","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"5efac4718dfb2c2c9edffd03841ab0956cab35a8","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.6.tgz","fileCount":504,"integrity":"sha512-lZwaUBqzlntXGa9QCXokT1ICE6zezVktyNdwFLI6qxhQkIRdTMyXaVdBR6E+21/34Rx+bQ5yhcEQDJdNx51jCQ==","signatures":[{"sig":"MEUCIQDpk66QI+jfEbWWCiJLfF7CzHGP1bCcVtCdYLQikwLHVAIgFOroWSQKRmI1GP8XPZQU4PjfrRGwSI+9WIlKFvsreUI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41429601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLW4ECRA9TVsSAnZWagAA1WsQAJ0PbVg6HeY/h7+qs9Sk\nOvtHKdm0uJfZmnQdFL3hEv3jW4nPL2LvirzYQXGnxAezdhUxxhhlena2quRf\nfiHzx5yOyW1nbnCKKp9JToUihCsXyp2pArhq6H1n7rhYGC5mfWfgOjVrfq0A\nDG6SVJcliVICiqe/r8k51lyQCz1dCiqsBc1QcnaWe0kQKGjdU91fAwNqESx7\no270wCx4raPw5CxFw0qapPp31p6S3eq+gHIcG7PyxIbehTKyyfK6wIJcvHnC\n0C/7eNwwC6lCPqBQxdjGjMUZztD75tdRTSGSZdcehQ2pyMw8NQZTnU4Px9Qg\nUVOHuqPR2NGAdoc1jOXaFQEHrIhgXMH3LzmZwby+nV5E/r+r+OvzutErr+Uy\ncWCU2JKVkMN2DjXn4sUtvRS2sJFN8i/jLz04vAff/j3k4W8X2mqGlv1khjkB\nMsY54btJvvC1ULr8yFm7oWCY6Fuu/1q1+RFjieq7AkQsS7VnWjY0qu1VcS5i\nYui8ipLNt/DNtCf/JCns/6M3LjO0q46qMyNErKSPX81zDiN8v5Unund+5MXd\nN0keJu0eKAVj0gbsnARHu2cXUmZPj9O8kKJA/UawZMM0cjguUsAIfErDjmu6\ndEaExBraGJyfl7/fjkWsxRD/ehmyDIFArU8fCq8oLH9bWvcKoyxJpHCGg2ah\nMqHv\r\n=O+SB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"bb2005ab071aa3f0b8b143168500d4edfc0fab29","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\""},"_npmUser":{"name":"tynes","email":"tyneway12@gmail.com"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.0","dependencies":{"glob":"^7.1.6","ethers":"5.0.0","ganache-core":"^2.12.1","@eth-optimism/solc":"^0.6.12-alpha.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.0.8","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/glob":"^7.1.3","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","hardhat-typechain":"^0.3.4","random-bytes-seed":"^1.0.3","@eth-optimism/smock":"0.2.1-alpha.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"^0.0.10","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.6_1613590020085_0.5645508560824626","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"@eth-optimism/contracts","version":"0.1.7","license":"MIT","_id":"@eth-optimism/contracts@0.1.7","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"187d62b7bfa86fea8788850ba44a122dcbc83280","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.7.tgz","fileCount":504,"integrity":"sha512-W1kkYOQv7dEWHhOUdPuzMUeXP8f6vtUij0Z5os4YOwJNNH4GgSar5LPnhMcM54v1QjxHPXrlcqSdB4CalwWhdg==","signatures":[{"sig":"MEUCIQCjfj9Uj3sJKR/0EhNFy2ooSLBD+cdnF/VU++Z1Q43O/gIgZHxoAqItyBBoYn6tqtopG7E3XD+e8kYzQaceiWevaVI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41522634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMDPzCRA9TVsSAnZWagAA0bAQAJyZ+1No30jYz7ru3guh\n1z7VEy3nReDzkahW7I3DQHFtfuqZ1iMTP2/CIhM9HG+NZJBfssDZRlJzKWQ+\nH4BxvQcj6E/gMJSoa8RawiwMAlOTxxbuc2yyFN0SXGPEJMOS2FzzI89iAOow\nvB/yMF6eBpeXjmI2TwnM6dxNXqbr3T48mAK/ZiH1SI5/VnlovJ67n/pQ1qbI\n74TWiNjLLYWlF4vf2nE5uoo1aYk0bw7l8XAFhhgklbJBriA1+C65+pPuireF\noN9pw30VfYaVG8Dg078RbDOH6dpjnfl8a+EaEqtZBUPjPR7UPjhbRDkXhAMK\nzV4FUxJ7ax+hB7f6A8DtquYa83yhzLdbINm3nfpyjBXpsY9xV9nM7HtX5yZh\n7zhMnJu5V6k8xuABYK6y8QdH1zzSp9xXreYBrunq5s2bgh6VYDfFrkRGpr03\nCo3yUZvNXtqiQHeVlQDdRJr1KD3d9kmKmhSHA8UIHGzpIiYMDSe6QZWnRduf\nht8UDhidcQRYsZxzfHU3fBYMcIfzLpxhsv7YskCPiQyv6fL64S3ZrmPRGOkG\ncxMSqXzkdk84c0pwRVjJu2DnnU/q9pvR3FxsA9zJVYT0zagS+pHjIN2hbAOW\nGHDa+y+FCnVWyfHdFe9Qgg7zqvy79bS22SdwxQ/bMLcn/sgQSO4CADVL4FTz\nPEX7\r\n=iHfW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"9d7342a7a2baa411e9dec7aa42d743c7a57c10e0","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\""},"_npmUser":{"name":"tynes","email":"tyneway12@gmail.com"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.0","dependencies":{"glob":"^7.1.6","ganache-core":"^2.12.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.0.8","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/glob":"^7.1.3","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","hardhat-typechain":"^0.3.4","random-bytes-seed":"^1.0.3","@eth-optimism/smock":"0.2.1-alpha.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"^0.0.16","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.7_1613771762556_0.40785030120681043","host":"s3://npm-registry-packages"}},"0.1.8":{"name":"@eth-optimism/contracts","version":"0.1.8","license":"MIT","_id":"@eth-optimism/contracts@0.1.8","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"02a90f68753be8b5c62b3156fed91195f2ad59f1","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.8.tgz","fileCount":504,"integrity":"sha512-rs1kyQAdVBGL83dP2Pd2M73JmPkuEiAD3xH00AJv+kXOQYKgVVy4H1x4SV1a7SG1u9MBjxMQPdC2Ct6p1qHvnQ==","signatures":[{"sig":"MEQCIEPUdUo2XQcpI6WYnhhdPXUGjC6kyN3ESVTSDnGZSCbZAiBcUk90Mss7MdpOPanVNNdD8trqJkrKwTb70QD1Fa47kg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41606267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNDv5CRA9TVsSAnZWagAA/JMP/0rMzw53Ajacusg5L2P4\n1M4Mf1no4rrqIp4dvG/KSf4AeuuBxKRtXbM9zYyMcCFztR+kFc8xYKz7u5+P\n9JXJx0yjkPbQndTc0pE+c+8D8mpg9jQnEXNEwB81FZmMi9DLVVo2nkW+VIHW\n0g1SpnLEt34lC8WaKMTKseYlStXbIrGzCAk7j/6xklwF/DOogsnhCFCQEVcb\nB1YMc+r9iEjxXnGuXfvS0qsqELnfa1AAvo41l5qs+xL2762qyx9XNs9/l4yK\nMYAK83vyVMEQcVxUS81JbkGXclAlSYWLWmxd15Ow2zXF9C15Pfz6UjB2VGgc\nrGAji5/mL1FwZ4ao8V5VnsmEoYOB/RH1XbaTeUPxTUs4Rg1eqkcAABtBmKde\nA14x3qwBL+MTcLWbA6ipIebfRlCvuILWHPrWPI3cNtvxWyOOL0SmgvfJfhfi\ne4PqGkvffhFPwuEwAOcIMdn0N25Wcoln+P53omARO0RygQ4PURHehM8TvnAT\nLCf1L6dHfpDHtZG3+LE+SOz3JZTPbOU+kBgRvQv4i8qSWCsR7j2v0wjMzDei\n8E1WRS0TstAWbspAIaOZcrX9FHRDpKZbLIy5JuV1gTttHJqXuykL53M1Fcav\nyi24on6ST2xW77XnTDZWFfv3iaSAIjbaNhOe0y9YMQIx1OVLJiod9h9H1pVZ\n2DzV\r\n=fjxI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"55167711ed2658ff22ccba3a5a466c4298049f4c","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\""},"_npmUser":{"name":"tynes","email":"tyneway12@gmail.com"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.0","dependencies":{"glob":"^7.1.6","ganache-core":"^2.12.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.0.8","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/glob":"^7.1.3","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","hardhat-typechain":"^0.3.4","random-bytes-seed":"^1.0.3","@eth-optimism/smock":"0.2.1-alpha.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"^0.0.16","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.8_1614035961115_0.3220714116714649","host":"s3://npm-registry-packages"}},"0.1.9":{"name":"@eth-optimism/contracts","version":"0.1.9","license":"MIT","_id":"@eth-optimism/contracts@0.1.9","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"01a8b7816b2fcc8408c102d81e455868e4a09bc3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.9.tgz","fileCount":554,"integrity":"sha512-vLW6vnFymdSWveF7qMUwYNFGSOYI90qosOJLxalOLi2dvJ6Glh7wtnCF6GvXMb3bNQ1fS5eFwHzjhWIbBMvWRA==","signatures":[{"sig":"MEYCIQCR9vvJB9KRFSvnYmlb1iLH9wVaGeaa47A0TJEW5vEkwwIhALMiMxbBmoFUdzzZLWQk1ZVOMOI0v4J7VUFA7Oi4qxVd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44048913,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNE3nCRA9TVsSAnZWagAAxgoP/0x6gKOFLOtk/d7k+p+7\nyzl4rp46vwkwrYaWZAlwLol+57cMNpOGL+ARPPraRiPQOyHUlg6s1ElxSOaV\nrGVLSMC5VlMiVvSEBOjkx2fiR4DiWbkOwAvNVQzsRurNDTOUaxCVjafIX8hT\ndRxz1CB8RYJaocuiLsrKvvKexaDK9H2lWxjaO1L1Ak4voZXUvX27ZgC7EOsi\n2b2Z8HkBihlgOTMCcQOHmhFy2ZfMfbzgzUAbJsLxLv0tCWyHkOgSHkiSrZu9\nUXMWGVEqp77uCRAxnHqO4k0raBfxxu2xCOT1ZnlBRYnPKvG9f9yiFQbVAeH0\num/3OGAUrBaWKPsqpIhheQoYPMW9FuROyMGnEilkiXHRLqDdZ8dHRPJnbqVn\n5q9IotmvJuevJddvk9CzGnpg7rs0U/BhRmrfgnj/RImk6vdSEM8LJrBgq49L\nizylDfa34iRaRlO8Ddmgya+hCIiPz74a20a4zeHRvI7I8CvFRV+4E18R1b89\naZ6HoB7JHFNUOEnpv1O2QK6Dr678xVtQVRc7FTkqJr3M+TTo6/aOZg7Bu13n\n0sfiE6XYvq6OzseWyOAjEp9pvq4frjc1P1QILZB5XJ5eMAZ7UpQ4w8EOivmh\n/MAVXv7VQhW4QT4aWlyUyuVxClg3GOTqxWXdNFtF4OziQiFLZGYwnqO42fRv\nP6mj\r\n=jjku\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.6","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.22.1","dependencies":{"glob":"^7.1.6","ganache-core":"^2.12.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.0.8","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/glob":"^7.1.3","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","hardhat-typechain":"^0.3.4","random-bytes-seed":"^1.0.3","@eth-optimism/smock":"0.2.1-alpha.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"^0.0.16","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.9_1614040551048_0.6876988894686475","host":"s3://npm-registry-packages"}},"0.1.10":{"name":"@eth-optimism/contracts","version":"0.1.10","license":"MIT","_id":"@eth-optimism/contracts@0.1.10","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"4f03d9d4a6ed4ff6c277b439adb109e09bb2a7a5","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.10.tgz","fileCount":566,"integrity":"sha512-6d26oCnywfqo181vetS6oEzvZyxhvSVRfkWx7sA1gySuxfZMIhwsvUWIebOsPpT/VQwmx2BwkPeu60ms4pgoXg==","signatures":[{"sig":"MEUCIHxWW9WeSiHHYfNgjv6YU1rewio4MDYxk8FQ5+Df4HBbAiEA7IBu7YrnUDWSXVf8xkoAJgav6BhGztyuizYAUnNZGJ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44162517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPynDCRA9TVsSAnZWagAAe5UP/ihmz+06sR0X36SNOrHf\nPeDM5TtcvGFAQyry9/ziV82d8fhXBIYrxRUs2hUUwZh+xdqeKhQCQan+9Slv\nVdn2Ld1HfX2gQecAxUAVgUBWi5oscsa0RqUlv1QHz16weuSUGpEPQWzsHfGk\nQPIZhTdAfTWz9b1ASwtSvvzgKVyB0KHc79UpmCrnWsRbMGFDsbe/rylJf28o\nRa9aGGk5yDY0anjiXGICvyW86MLKtXg2ih4MbJUwB+6YxBCs1BPmMQXo78ey\n5TnVh4brkc8jy4n38DHQYgf2lJwcIwAYU8nfo5cQVT5Rngw2+ew88kia51ID\ngVnYB+QvqPzi9xSJiQeoQdKj0yxLOwoS38LwtcYw2eDJ6uXyNwyuLnsPDzIS\ntiKXElX+knkC1moQTXlyOqBNWQjiImriJurrDNWQSxyvbSFOVtCpEwqU6Qyh\nzT0eVI5uIxDhTIEyzr5AGXbxzr8wWL5DO4xPPSqX5zwd6AVxWz3qw+QVwioC\nLYA0saRGyLeRha2fuSfEeYklYopSabF0goEVOReYvW42WRYGquqouPuxap3P\n1e+DTp5HWvpdDS6tG8iYlFuRAYZic1EkNM8rF6GQ3GrwF8P+e1v3BT6QTua3\nXQrQx7hIu4XMfHfRs7pVFRbJYM0cgSgFIyAnPqrQiqXnCcqsGD5lBVyWjPGW\nyQc3\r\n=CNtn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"15b7b5c3ea85a36ed3b7dbf740aad3ae53465b25","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\""},"_npmUser":{"name":"k-ho","email":"kevin@optimism.io"},"_npmVersion":"6.9.0","description":"This package contains the various Ethereum smart contracts that make up the Layer 1 component of Optimism's Optimistic Rollup construction.","directories":{},"_nodeVersion":"10.16.0","dependencies":{"glob":"^7.1.6","ganache-core":"^2.12.1","@openzeppelin/contracts":"^3.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.2.0","mocha":"^8.1.1","assert":"^2.0.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.0.8","ts-node":"^9.0.0","fs-extra":"^9.0.1","prettier":"^2.1.2","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","seedrandom":"^3.0.5","typescript":"^4.0.2","@types/chai":"^4.2.12","@types/glob":"^7.1.3","@types/node":"^14.6.0","@types/mocha":"^8.0.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","hardhat-typechain":"^0.3.4","random-bytes-seed":"^1.0.3","@eth-optimism/smock":"0.2.1-alpha.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"^0.0.16","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.10_1614752194999_0.5781055100903949","host":"s3://npm-registry-packages"}},"0.1.11":{"name":"@eth-optimism/contracts","version":"0.1.11","license":"MIT","_id":"@eth-optimism/contracts@0.1.11","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"d33354b69e1bdaf11eac799a1f4dfb17295a04e7","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.1.11.tgz","fileCount":574,"integrity":"sha512-Ak4VoPwn9ZTH7Th5Ioh9HxGt9mtriOuiH1YuOtRihnhmmsJ0DO5k5dqdzbckUKYDW1s3sA7N6Yw3pbtZ9qiVWw==","signatures":[{"sig":"MEYCIQDcuXYPyPC9MGUtVaj0k42HrDrY2W0+v0DgtMdVyKRB4QIhAOapYGNXKmxxlEcEptWJB7tu8bjDr1quivQp3TPzZub/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44805546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR6ynCRA9TVsSAnZWagAAVvEP/3xuFq+7+/WIqwYDeA/b\n2ef0c8r2X1LWtSoAkpFXnLZ1zdCRq0vPM/wA4D/q9P9CN8zydcRwiWcUZNPJ\n/7Kb63SdWOZFILkGooUdJbxZJ+EXHnC4uFH7fZalmclOlZdL47Ak3VFnfUYy\ns+SyJq2Jl1JGS5EFkYYvkB86l6j55qyNnsisPfwSUEF8f8aFJFLd0mqKrlZS\nyRTBhHAXuLMKsvOo/7JpIvjZCnF6a72JRI6+EODHi4aJT471ly8nV6UMot9V\nIB6uGNdDdoXVKTp02jPQzPDkfwyTJ5n1gGDVb57z3ZfKIS9H5wGDSRXknoYL\nSeCOTBI3Iwf2EKWnMyhSKiN+pQeDboq8uWT4VrW8lk5gjxhpL237/yctyFiM\nYEKCiXvx4oZOZNgmMNfYiMIEQU6nvsdvAAQIHkng2KqY4Al9laA4Pm5P7I/U\nDkVd1o9Gnps0KBs6HIkK/mb+7AicXt5XtRwO99lj94NtiH/9WJNvUYMseelO\naFWeOM4T4/JyGwk+7IsvSOJXrATpljyYDy86ki9obYQHQKGS92bB/42qEILk\nf4EZGQRQM2kfAwlNGYpRxJgq+BMb+GOxuFSDirnN7ryvr3ZtB0VrfNM99CAU\ntPU28vsv2QWbS+zmKzG18YV//UzfHBlZ6HpbomtUBcjJD8aZASwzuNXl5FPJ\nFuk1\r\n=tsid\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"1d0d1d4630114afd67ad2f39b5bbc42163e5e842","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && yarn run build:dump && yarn run build:typechain","clean":"rm -rf ./artifacts ./build ./cache","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.js","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p .","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\""},"_npmUser":{"name":"k-ho","email":"kevin@optimism.io"},"_npmVersion":"6.9.0","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"10.16.0","dependencies":{"glob":"^7.1.6","ganache-core":"^2.12.1","@eth-optimism/dev":"^1.1.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.1.8","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.0.8","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","ethereum-waffle":"3.0.0","hardhat-typechain":"^0.3.4","random-bytes-seed":"^1.0.3","@eth-optimism/smock":"0.2.1-alpha.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"^0.0.17","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.1.11_1615309991107_0.4516484454018619","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@eth-optimism/contracts","version":"0.2.0","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.2.0","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"bed0b86702e7a492e8a18ad9cb675fc29afd79b5","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.0.tgz","fileCount":781,"integrity":"sha512-v7TuRsCzJm7M7g9ogO17aZOYDQYUbW0uZfFeBGYNifMyVHqVNkaKw7+fAj8DkJe4ZJ2iDFuSSOJahqDm1vuc2w==","signatures":[{"sig":"MEUCIQDBtHaC+moplkwZXDZaS43pcIUXFRUMmh/zu25mLNaZSQIgNm96vHZGo5cqQDXJGtGG2AGMwt6lJJg+jNJtz/PQvR8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70176679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb8auCRA9TVsSAnZWagAAt3oP/AoZ+DVH5mYLNyRmCDEc\nHcWzYgsMoiDsP+gJXIgKyTb3qwRIxCdFPTBBYHkebShYUGzihnEAL3+FUWiW\nCB9LcpeKyaPR69gR0NBlURPfEVqfebbepfoSCNrwxmW5EsUZj9yrqjutfcmS\n/cUH7/u92E7n54+wfrS0IQfFWOs0U3XRUszT/vvU6XqNZIkFwYp9GP9TUDCX\nuhVaDKfWfriAnj4jmf+Dk+mXP882FwxywJn3lHTorKCin7ffflzoliOK41OO\n/X2aCeDBNj9r5akMW512t5ilFT9sgOCN2Sg06CRMb83zeBbw6FE767RkDw8n\nHgZtYosdKvAvhed3HOgO8pRzFfdwoB8k+FS+vW+NPsrHtPTnS+QFXvHjbHII\n2E8oQmjCieUiPJxpkvrcZYmxfLDIg9K8Uq3gs5rR22ZBJTorfHLCscjEj4pH\nHZulWKFmfLU98gS0RvvM3GC4d5D7bo+rv80mvA1xhWLqNgTGH2hfeF1+jlYM\noef4sAiN8G+xdf4azbe/erEBbSia9eKKqU4K9rqSIaZegJ4636cSK3l5CTHB\nk7oXJF62ZiTP561fdRMdBtSA7eyDdT2O+vYPe8wFW1q8HjUMmpQ/QmDkWcbX\nZ8nXRaSF+GcT11xdxczWZPft7nZYuupN5Pzdo8kCHaGJWW+GHxrez9hpZKXv\ntqpT\r\n=f/19\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","gitHead":"7283fd7c6fd72b1aa367cc7087a833ff498ba272","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn build:contracts:ovm && yarn build:typescript && yarn build:copy && yarn build:dump && yarn build:typechain","clean":"rm -rf ./build ./artifacts ./artifacts-ovm ./cache ./cache-ovm","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.js","lint:fix":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test,hh,deploy,bin}/**/*.ts\"","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn build:copy:artifacts && yarn build:copy:artifacts:ovm && yarn build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"tslint --format stylish --project .","build:kovan":"yarn build:contracts && yarn build:typescript && yarn build:copy && CHAIN_ID=69 yarn build:dump && yarn build:typechain","build:mainnet":"yarn build:contracts && yarn build:typescript && yarn build:copy && CHAIN_ID=10 yarn build:dump && yarn build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","build:typescript":"tsc -p .","build:contracts:ovm":"TARGET=ovm hardhat compile --show-stack-traces","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"build/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"build/contracts\"","build:copy:artifacts:ovm":"copyfiles -u 1 \"artifacts-ovm/**/*.json\" \"build/artifacts-ovm\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.11","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"14.16.0","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.1.10","@ethersproject/contracts":"^5.0.5","@ethersproject/hardware-wallets":"^5.0.8","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.0.8","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.0-beta.50","ethereum-waffle":"^3.3.0","@eth-optimism/dev":"^1.1.1","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"1.0.0-alpha.6","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/plugins":"1.0.0-alpha.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@ethersproject/abstract-signer":"^5.0.14"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.0_1617938093380_0.4622684569095161","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@eth-optimism/contracts","version":"0.2.2","license":"MIT","_id":"@eth-optimism/contracts@0.2.2","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"732eab74ce1189a73b2f2523ec862efde8750cbd","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.2.tgz","fileCount":4,"integrity":"sha512-DdSdrMGL1BHHv//zUWGv0a1daRSOwJUGdK7TvADkLezv/AvWOsdVGPnyBFERfYENgVuoCYGTPVRkEqwNn5aJ+Q==","signatures":[{"sig":"MEYCIQCo0cQC6rrIRdYtRENM6MTcKGE0xWV8miuVHx9oowhiKgIhAIqo7hizlrdsmlXATub8Zi7IXR5g7dLECXqmopuTocwM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdXdWCRA9TVsSAnZWagAAcIMP/jR+E6ksWGwxXV7j9bol\nrDHXTQKcQ8q+7TYmNwLjsq5rKeHgRUWmLYNbIos66evWVzdVIyBdZsHBUSDK\nfR8tAwFwRLPTmcAzfkimfHuNKdtdIqa48ML+4p1W2clQ/WPJePjNPAZjkNFg\n+3sMVG60Oj5J4FoI7hswLwG3G/9viv89XfP4UMPpcYcz8UWagMd/nATxZvy5\ncNzwvIFY3dwh38dGqhS3aVim03LvFzcMW/gv8UJWI5vndXCwyP7ctJ14PmHV\nm9aijdJ3IgIyt6csotYf8gHDPaoat5GeswziROoip5TQEoZHofk0qE+56NfP\nDX+E8xrKf3cjalvalnEtjyOijZ1Xv4fMYUc08dhvToJuwtMWmmBw3f0HYiDu\nPiNrL4ZHeTjNqnFt+CoikNLKaE3JZcc7gvC/bP1bWoaA51EJDXMsUfl4Vd6W\nRXBRaoJ+aNG1RdpAnMqbgLhekBP43qEVZSRSgKonNPIofXUKAbcqXjh+7DuO\nz/OeyXG9PtCIKcpx7qcJJ3PPX2kWBQTNeyZvlyW7bMRYemEsw0ogo7dvciEo\nuYswedvhLNZO46g+jirfUpbm07NKlzpW1xLGYMqhVCKhtLyyHjPG8sKF3uEI\nypGVSgd7z2c3x2u6dngp3W8NdsraKeyYdj3W0k4T52YiMvc98OUp5diH8YKK\ndjNm\r\n=ZBIe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn build:copy:artifacts:ovm && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","build:contracts:ovm":"hardhat compile --network optimism","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"dist/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"dist/contracts\"","build:copy:artifacts:ovm":"copyfiles -u 1 \"artifacts-ovm/**/*.json\" \"dist/artifacts-ovm\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.11","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"12.22.0","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","@eth-optimism/solc":"^0.6.12-alpha.1","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.2.0","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.0.8","ts-node":"^9.1.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@eth-optimism/smock":"^1.0.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/hardhat-ovm":"^0.0.1","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.2_1618310998058_0.6403157729144173","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@eth-optimism/contracts","version":"0.2.3","license":"MIT","_id":"@eth-optimism/contracts@0.2.3","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"e106c6c2499d142808abd29d59bc54c7331f7024","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.3.tgz","fileCount":682,"integrity":"sha512-sfciDwaKkNFkdwrwr/4qg1Jl2Rlzmyp5R+Jhenu5lHr6rbtxwYfhraaYj4FuWwg8OX1+nAG4SWnU3I9AIADvUA==","signatures":[{"sig":"MEUCIDfau37Yu8irzfyhKpjD6vqDDU6JDzba4qTIZGy9GmWhAiEA2OMRSzvDu0i5+6tA2QKD6QBvJkf9LNn+7Y+He4jQAzQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":69706304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdbDwCRA9TVsSAnZWagAAeVQP/1TOT1n17985EdfmVNU8\ntbybeQEY5z/oJ99Foz5Xd3WCnm3+30ZjzDhqQmpANPmPVAyQkqqFkKJ7CdYf\n8xIwwMXyid7xVJeHgYC6BtiOV367P6RN69p5TuITH7F0Vz5Q6fKJ5DchrElX\nuQWo3Fd/3Ufe5al8+xmdMRm6xgFY++BS25LoQf6RQ77F1wgLW78LylaRmiBw\nZoGdUqkJQd3Ge9M8tLK5k8DDTPZvj3Z46EvavIJLxyRBeWF6BLc8OCzGdGjE\n0MnyPVDcBnOHrbxfWxDc7sJi/3SaaIFNbO3H8qzsHH0+EnwVtv+QJcr3SeBF\n4q0w4DS4DYSINkLWvaV0iBtU0Sqf0jW4GOImJxnoeC2PZW55HUEAC37d/8Aq\nq9VnqzNN9gUxxWS2EcPO+0HB5eTp/VwpS6uelltChmeZKOWk8RgWMqKA9Hxd\nvW61z7nPe7zpFVnuWSQsAuMmDD5k8n67ZToy5ghOwbHSwxgK6JmTahDM19mL\n5gjJjEVRvgA0buCWReVcT/ulZvuXi7QHRNiTNRSUXzgS8RB/iw7cwgMvlkj9\nDMGUyW0w25+h52UGKY+3Iue/YkKvJqU/GYNoWiKYKwN8yA6iwS2yqvF/GR9m\nVF8f+ZX26AzZtxMqXJwuKxA0X3igWCUEF2cvJ129ON1RWWRVxpcrpxP0UlGj\nfQye\r\n=/wTX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts","lint:fix":"yarn run lint:fix:typescript","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:copy":"yarn run build:copy:artifacts && yarn build:copy:artifacts:ovm && yarn run build:copy:contracts","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","build:contracts:ovm":"hardhat compile --network optimism","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\"","build:copy:artifacts":"copyfiles -u 1 \"artifacts/**/*.json\" \"dist/artifacts\"","build:copy:contracts":"copyfiles -u 2 \"contracts/optimistic-ethereum/**/*.sol\" \"dist/contracts\"","build:copy:artifacts:ovm":"copyfiles -u 1 \"artifacts-ovm/**/*.json\" \"dist/artifacts-ovm\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.11","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"12.22.0","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","@eth-optimism/solc":"^0.6.12-alpha.1","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.2.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.0.8","ts-node":"^9.1.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@eth-optimism/smock":"^1.0.1","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/hardhat-ovm":"^0.0.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.3_1618325744349_0.057071011906452584","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"@eth-optimism/contracts","version":"0.2.4","license":"MIT","_id":"@eth-optimism/contracts@0.2.4","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"b54cc64c914cabc650942035556664eb003957ae","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.4.tgz","fileCount":511,"integrity":"sha512-ddYFjJ0aEGYY66/YvAI3zjEsHHxxOpUVK4yRQL1JGioNc/we+tkrUOtg6mgmNgEsZRJC5fQsQBsAVdkLDKyn6A==","signatures":[{"sig":"MEUCIQCuyQGizilKtVK21bVdT/JCkPGKz4XpUVctZqngpS6lIgIgKrFIo8qRrTCZBJU69eeQZmKrFE9zD8hvlNgmfuBsX0E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67752287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdqtHCRA9TVsSAnZWagAAKBYP/0wp9mgzhBOpuPVAcE3I\nqTI9S5Kn3TpDXK5Rmeeyfb+/SPHy7wYxoDYv3T2wU6hvlkKp8PL5TY6J3/6L\noV6it5iByEmfs40eGU6ffcLveG7FBP2zy9A5fk5orPZ4ZZPGTtsV+SUQrniP\navQ5IL8kTvK5AUPobpjOaHvlPOozpjlj1ZuwSdCJe1NaFL6hUdAX1iig6wef\nhrjkTznjuwqE8a9qXH4y2cyx4pzChbXKQncNPeUEhyuI8adWYTGf59185V3k\nVFGMgJjK5nruvEG+7HSUb387Vx4e4DMsHJK9M7+wEehRuwuK/bpI9yVzbDzM\n3DVmtWUuenIyVEpcZE1S1O4MzWwWQGyK0bczRdF1pnYyCNzxxwKGvkO3oDvn\nWgQ0Afjf3ZnDHyqaDADReHYK3Res7hLtBP2Z85gd7Aqdi/8L6wNSpx3SBW+B\nm2FLC3dAoXj4+Z3gn0icqgGXtH6iRYZYcYHk5ANu3rAjzWK1L/PxuBCyUOjq\nukNOEmbepXe2NeKzlCFwsGnI7y96mVsw0c2J28puyhIXJI1TdisMIOtRAUjR\nQr6qqBu3/8pYUFf/T6Kl26elK2ufwBDZr1vky5/JnnefYaX+zRCBiq6Q0Z9V\n50aRCgmnfh4qfWU7FQO/RLGrnQJOYR/gFAX3aWAO/MdRyptt5s6d5Up7u+yi\nBZgU\r\n=uo4A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","build:contracts:ovm":"hardhat compile --network optimism","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.11","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"12.22.0","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","@eth-optimism/solc":"^0.6.12-alpha.1","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.2.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.0.8","ts-node":"^9.1.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@eth-optimism/smock":"^1.0.1","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/hardhat-ovm":"^0.0.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.4_1618389830460_0.09338845498337744","host":"s3://npm-registry-packages"}},"0.2.5":{"name":"@eth-optimism/contracts","version":"0.2.5","license":"MIT","_id":"@eth-optimism/contracts@0.2.5","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"8637d2fb4b7fed3f3d4491af38e84e1427813c17","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.5.tgz","fileCount":511,"integrity":"sha512-GhwJTIYcheGEQQgtnOYus+xQ2g6kAl/HIh9c/fgacIRWoivRZylXzGuFEwoGsFbHJHomlYTh1HeINrITAJ1l2g==","signatures":[{"sig":"MEYCIQDMLq4nqZ0QjT1+Z4DmQWrxGbPyIUnb6pk3EOOiSSrqKwIhANumnfHoIIL8xocmcDrzc8lkQJEujIy8i0HT+df8Iqxq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67752539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggFx5CRA9TVsSAnZWagAAkd4P/225ccrksg/7tEY/Kd58\nqt3LonSgI2HM6SBVsJAXjsquGFjpi9JdqFViNei5jflhrGC+irZ0tuQ0Ev65\nGC/ibZjEwE2et5pVx/w4NrEmBKPtp6SJVbsWvNHjjvw/MtZ6Ek0B5i3GnJM1\nz4H1AhXcN/I/SYUNCh9qSIR+uRzW2YmfmBvQURYd3a+241Ac4OxcBiuEiCn0\nJ/4yQjEi23J4e6CpKjuAn8WrgxeWxSl87lVK8GU/10Vg38vDOEXL2mttC1Jn\nzadL01l7Wz9/cNlOGGrmuzeiCESlVHDH1wV8yt/Vey1WNXEuT8OLYYrVhDav\nzeC6fM/OSCff9U3gCFZ0oJ5RCmNNi5x+1bwbmg4+K4P4ZjoAzDIqtD9BGTWZ\nNcn6Lw9BCoUzjdNzAEi8T8M59Qk8ZHSus1UDp3/dWDzh0zsrStWrNr92CUp6\nc8vMW5Nhr9BUb/yaznzwgnhHXG/KiBD8tZ9vR1GdM+r7uc7qbHZ+4GjyXD0m\nwPrZNSpn2WQmZuyVwQLfDEZdBU3G7F13914bsOIXSbAa71Yn6jdhXt8xAzV0\n7zJcUg5cvDN3PucNKa4PoNPSEonCi843Qgf0zwRApJ50xtcaDKZBmbLpH5DY\nRtySvZVH1IrTPp2XInPgTLX1kybGzs60ZYqz2GTOb8EXWvZ1gladkEyC2ibx\nGwLY\r\n=nYr2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","@eth-optimism/solc":"^0.6.12-alpha.1","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.3.0","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.0.8","ts-node":"^9.1.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@eth-optimism/smock":"^1.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/hardhat-ovm":"^0.0.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.5_1619025017082_0.6762950519276831","host":"s3://npm-registry-packages"}},"0.2.6":{"name":"@eth-optimism/contracts","version":"0.2.6","license":"MIT","_id":"@eth-optimism/contracts@0.2.6","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"052b91af5d5f062b3077bd5d38c70421532f98e4","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.6.tgz","fileCount":488,"integrity":"sha512-4Xv7HnPeTmaJuxfF9I+H7lDZtVcJHXacz7AOs0jf6FK2kVqpW1K+n4FIAA0TkualVLAGCl8j8eeKlaLmLpksmA==","signatures":[{"sig":"MEYCIQD8sgh8J477Gzk0aMuTaYHDz8p45cV6A9AXrlCbztHyLQIhAPRcA/S5kFO4wmGjjsopXuk3sKQHo7qCv9D75qopGvqo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":63528587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggc7NCRA9TVsSAnZWagAAdDUP/RJd0YUGCfzmCP6poYnR\nZXbA7EYMlH2OaKJ0EHaHJWSZHqhFLmx7sqayTnN2C9MQ+byUrbga2x2KAjJ+\nU875w/x/9geaBYSqidxAx1D6P3JV/KMIWOpckrC2uXWmjD2Bs4ikK303cetx\nVF4CRj22Ot8MRWTBDvTU4SejksLwUmwnF8V6wjpezKNbVfqxo9ISYdIviGDY\nHe6MR8XsPbkbJuvzaj6FFTncu4Xii/xZN4HZsV8KLzUkjVnO5QeIPNyIA8+s\n4QUjymI4jY0B3Odatd4LmR+e5lC9jBvONy4qIWRmYl+0BWoffUIgK80KpJ/G\n4vdsMGR5onk4x5bYTlhD3p+t8o61ewgh/ky8nPwfwNWnw76TN8Z+zQ1rofig\nYRJaRuTSOuZ6sTeLCzTxwIEiJ7oLvup7jz9N96oyS0OaPwHA183qS8sVP7Hh\n5mXN+ntF62pcLrU9SnWhiE1bS+KTyi6Ff2CTwY9fjWqeuyOOXJxqPr/s07G/\nqj4+Qj9E+uiAv0wx8UoQfX0CQW8uUHKzgT8MbcSKFl7c9DZa8iqZOornIxDF\nphVzgTyXxDk4SQhtKVgBafoX907cJDU/wiIBTFURPHS+4X+dHU2DVTUu8jdR\nftWmhAhOCVCT5dcKJ6gHb2aDQB9A/UcxrzkhRTS1WfyGxrtqlvGM1yBJJuj5\numRO\r\n=2sPP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","@eth-optimism/solc":"^0.6.12-alpha.1","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.3.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.0.8","ts-node":"^9.1.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@eth-optimism/smock":"^1.0.2","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/hardhat-ovm":"^0.0.3","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.6_1619119821322_0.39308235444228834","host":"s3://npm-registry-packages"}},"0.2.7":{"name":"@eth-optimism/contracts","version":"0.2.7","license":"MIT","_id":"@eth-optimism/contracts@0.2.7","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"ab3b1f5e30f36d1f5fd4449e9031d8bb9a920ceb","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.7.tgz","fileCount":488,"integrity":"sha512-hPaMq+cqdzzXFGdaitlAo5vlUVPoui4zTfkqlXC1Rd12gHxObPYeY1Bhva67i6lQ4OQybmXAYi16fEYWdXTDzA==","signatures":[{"sig":"MEUCIEYUOtM5AbxLcJg0Y4PMtX4V9vAGumRzz96GHUj+CzFEAiEAqqzwPYnrf8SmS7KWY3JVHlAnGMZ2YMuYylLroytSxvs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":63525264,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggvMTCRA9TVsSAnZWagAA/dMP/3YOCckutWFg3d/8kiML\n5jym1Eh76md3Gi/kXBEe5m0UaXFHVjjS4Z9MgjaiKG59OFEeFJ1J7FB5thWF\n7gKMNqK45E+sF33j8U4lNRso3E+f4DnTNeLZW55HyEN07+xSvGbVNX91Cgbw\nDmkVHWfMM1EZDwxGrRdti/uvMuHVve2Pd22EWZxLbZwnQo7IIsf5prjElc1W\nnMqVLfHEW77wndF07gLem3vc+k+ZPANz1UW+TFQAgcGnaqxITXMLQ8CEe2H/\nxJboggZuiyo+6X13QIr8QdiA3oO/7TZWeGjWORTE2N5+ZBJLgs2DrQkjEDZY\nLdoWDSGGgvMwBGlq+Fmcjgfj22QDppNouvTH8SYf/VeaJIcbNH1RDiTv/aVM\n+LquufekPA9rnlxE2MuQFjcIPCA/y3DTxhM7vwNtY2dVNvvVc4RdIHlczjnT\nD/rBaT3/ONG0eGjCFoRj0vJ3WJpsemW1EBIyZ0nF7qmtxhBsYhhEtQPS2StL\n+5ETQ8KKgdNzNjLeywMMaF+NrHFymtj5UdvWllssOG/G2XFgw3N1ujwv5gX9\nplfzoxFuNbKgLut/DbfoCR8oHytWs7PIuXNJWm2hFKRqGVdbHRPba1pcV3VU\nwqu67Lhd+FI2xW/juN9fTin0lbOycBSOYgzIzIjApYNXUQbqBGAKnXCNRx/o\n5/mY\r\n=UQVi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","lint:fix:typescript":"prettier --config prettier-config.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","@eth-optimism/solc":"^0.6.12-alpha.1","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.3.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.0.8","ts-node":"^9.1.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@eth-optimism/smock":"^1.1.0","@typechain/ethers-v5":"1.0.0","merkle-patricia-tree":"^4.0.0","@eth-optimism/hardhat-ovm":"^0.0.3","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.7_1619194643225_0.47211865712793544","host":"s3://npm-registry-packages"}},"0.2.8":{"name":"@eth-optimism/contracts","version":"0.2.8","license":"MIT","_id":"@eth-optimism/contracts@0.2.8","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"4420a25ce15aef8e52e7a0ffcd35ba4302117db5","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.8.tgz","fileCount":779,"integrity":"sha512-oOY9/newM0qud4goTaXWCotatCiaH7MZFTuFrbNLqYUHl0Ia9H4MU4rI6Ruk+CdiOL6qRJiJVeO6M2S8vnemKQ==","signatures":[{"sig":"MEYCIQCbYSQnAxFakELNX+3qtal2JcZpD5mMjMBW/zubbKuUpwIhALjVevbTs7Hs+CXGeeIHgdNLr5UCr8YGUmopdlZUxygB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65527918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiclcCRA9TVsSAnZWagAAWSwP/jEDNwKD6LxYenJQ51/2\nclsjQB2TDKwU3tu9lnGJYVFRK03dMT3prB9kNT/oBUWHUhssrbUCgDgGRuY0\no1KIqs20i0ihPR1rl9JhMhuaiinTXvQZUGYmn+oh3F0W7B9Dk2JRCJpozOZS\naQJpFwcFM4cFwn9kC4yFqsOg6LQ70eMJuqG6bKtoG0hNFxMyWADoLycRyp8z\n+a6b09FY9fKrcnWO4oZBAHO7Er2NVk0ZTkS3vMkZ3H8C0Ou9BkHpT6qmfuC/\nhVUAu6niGzGkiIpDy9DmcMHX8V6JqG2QvkO8pRmYKVd0x216dLqHI8XRxUCn\nKtxDYpfD4Qu8M2ThuPgp41fIWoTHeU9fmfx2ElL0mUaQJknxzOMKLds/Qfwp\nzhRnBkxtx8NNEDmLgrdzTU93xPGhO0ePG3Y4OPD54g/WxRK98ZH+JFyGFonE\n/YDkbD0HiljKIfDbnl3WdNujp/YH1iMJiTO9KkNJ4Ho9QWPixpgvCVXxUEbq\nbZ3raJJKUnCHDa9XRoftdDTHrMrSFD7y9mBx+9NCtC+IYgxUuz/78Rvf/eAm\nouOpiT+CH+gSEejIMOxGLM69HqE3+qvEhfhc1RjOJby8K/pduObeBcxx/A0j\nyd8sxS6e4RfTjdbbNH5xe9ASYZr9o2MFZtQjh5C8a3Ez6YylbEHKIYy2wH9z\n8gfX\r\n=EIA2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn run lint:typescript","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","@eth-optimism/solc":"^0.6.12-alpha.1","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.3.2","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","ts-node":"^9.1.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@eth-optimism/smock":"^1.1.1","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@eth-optimism/hardhat-ovm":"^0.1.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.8_1619642715701_0.2947654104470774","host":"s3://npm-registry-packages"}},"0.2.9":{"name":"@eth-optimism/contracts","version":"0.2.9","license":"MIT","_id":"@eth-optimism/contracts@0.2.9","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"36a230decf46a8bb0b5aab49b944dace8f27cd65","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.9.tgz","fileCount":811,"integrity":"sha512-+Vjj+G+8TpZqEVH/T9gBLi9E+jAuP4XAaj8nkwf9yoFOLQpXy257J5JqtTB9Nz3hFmZa9JCt9JGjFcmIHkXBxA==","signatures":[{"sig":"MEQCIEkejXyC976Jys9w6wU8Dy/o6rBI6Xzdy7UQGVyM9m11AiATkFSuONfZUmC6J/CNEKlUUOdkP+j/8bA7PXvmJrk4Yg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66717733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkyDiCRA9TVsSAnZWagAAz98P/1D3UkGcCBpjXNnt+bkf\nxLuiG+FysCvLE2yMO4JewUROC0ON05/bwz2Rsn3CRFaoBYLWw5cSj6hGmq9z\nXBc6JND/2bBb7f4fSq7cWfnarBOFxXaXbEbDOwdecn4rTMYHolF6s538+xfP\nr7NHAKBsnfzihRMjulM7cRcD2hohwWhbdOUBdl/rYdXFTaO/Tzxxx9mnE8BO\nzbSBwS3V+jhFx1VqBE/Zn7W6G2ZQG98BNqIdrpegiHbORhIsBRCEk/d2xZKF\nZmvs6zhqe4fX+KBKl3KnCrHKaYWq7JIrwAlP9w9PfP16JsKu0pDuut7wjSHB\nvGatRQi0imniKA76+hR40eF1fItXrPAIRHKBUE2azKwW0rN/6UK0Not9IL0B\nbg7rqWqrXq3o1eGlnISWUtLdu7rO19Qz2jHW0NDHUqvlW1CHdt1Rvu20MooW\nKTdY8YvLRG6EbYgDdE6ixGuqyAKM7Uin7ig+nP79FKe/Zw0Jm+S/EIjox1TY\nEOFYaCzzauwpIBNJvm8bH9Fo0lo1JmLj+8P3uN58fJazIVSjp3AHVlThCjyJ\nlVPRrytJOmUoZKvT3CiZI85OizPsNK1wogfA1gqLPJNiYQe6ocMb6A+X4dfx\nxshqDfk84CKnOg+FL0cLxEsJbpGUecJkJUqSzaJsvfSa/un1wuFWOG7C6/s4\nhbrY\r\n=2RMZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system. Some of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","solidity-coverage":"^0.7.16","@eth-optimism/solc":"^0.6.12-alpha.1","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.4.0","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8","@openzeppelin/contracts-upgradeable":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","ts-node":"^9.1.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.10","@eth-optimism/smock":"^1.1.2","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@eth-optimism/hardhat-ovm":"^0.1.1","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.9_1620254945732_0.8086183776887241","host":"s3://npm-registry-packages"}},"0.2.10":{"name":"@eth-optimism/contracts","version":"0.2.10","license":"MIT","_id":"@eth-optimism/contracts@0.2.10","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"b09ec6a99c98a7d60b33f68e3b498a76f3c48484","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.10.tgz","fileCount":395,"integrity":"sha512-Q294X2Xc1lnISOlu5kFGdUgxsBD6T6mOgRWtL6TQbtIhVwKVGuq6meYuqQvIcvMJ4hxoOuGXNs4le50TnSvsow==","signatures":[{"sig":"MEQCIGrpybXsFZoFY7zM9nPkKtRam78pnzGX2+ghCridFh0kAiA02bPkbFBfDXVSW3Doy/6AokxacD+H34//mFnr4pB9DA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3745836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglQEZCRA9TVsSAnZWagAASl0QAInYGoyx81szKilcgbfm\njfZ/l5sYwaqji3BhEqCPJHTksQflM99pfxESoQOYwvEIIlzI0c3kUjIKfIJ0\ngUUj7Fcj1fv8jp+UvB31tG3b1VNH70WBgT9Y0H1PPLKI60M03ExE/NHViBwe\nqBR/xJE4raQ12nB8hs3CMPzCidikhRgvqZf16RR1eG750dlawM6ikTW1o3sv\no67Aq0gkELS7kLcwQ3krRH2yzrqXhdEd28qhxArVFDQOllY6wbft4ZhKU4Q8\nBs5csSTCGeFgDYRRYYihXm5gf60ElNqgYDcFbbigHF+6Okv6AiEHVP1HMkbk\nwpxZX6YuPG8pt4t+9C87H2RXfICs5V1H8lsOokGMMyzQjrKbuv61GgcpZsIY\nDDPJTDX5Cj1uqIIESsyM63AoCZMKSDe7FeVjM6dyw0S4I6F3zZ9TVPYNxFr4\nmBqYqcu82Fcej8X30QfhS8iJsjOC/X3uIEpgpj7lj0Fw36D/Tos6vx6/srj4\n7smQl7uSXbUiDD5Ji2LZ256wEkKOEiYb3ZWXEi2PncvtXSUmkKEkT/B2q4QC\n9UV38HPJeKwmtqiXVsPucZAIV+44mn9bPUf3QR1cp3k6pNjwOBWGISgGYI0u\n91fIO2+wTBRm2fPBCDWN3lO4DtLfXkOkYUj3wfpW7X1cW+WNMe2oAlzoGT2p\n4qX5\r\n=U24J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","solidity-coverage":"^0.7.16","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.4.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8","@openzeppelin/contracts-upgradeable":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@eth-optimism/hardhat-ovm":"^0.1.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.10_1620377880970_0.6583178187500172","host":"s3://npm-registry-packages"}},"0.2.11":{"name":"@eth-optimism/contracts","version":"0.2.11","license":"MIT","_id":"@eth-optimism/contracts@0.2.11","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"4f8f1eb6b3bf2b399f018a92827f96d4e446da04","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.2.11.tgz","fileCount":751,"integrity":"sha512-vbjFXgvikvaijDPZmmg9VthsjTCwsFtFskCqGWr7WjF+f+JtYk6aWLkM2udKuXArEy9WLjBN2JLWD3e43a+udQ==","signatures":[{"sig":"MEUCIBBcVE2SEqvpTY9S5REvXZ2U6dnuU2Fq0rvGq38njM2lAiEAorsM4RNdN3qTQOSHNcHpioic27JP5WBdyC0AV8s3fO4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5938564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglcjrCRA9TVsSAnZWagAAjEAP/R7sZmHBZkLtmUDAokze\nBsVl7obMvpb0MsXZ4qOBnYXK003E5+yCdGeKZ9+9DfwlVKr/CdDkTv64O+xr\nttiHnaAq4zoyrPtYODeJ5zf8a+iIDUU90vnm2o55P6twJwqGWKdc4qse4ptu\nCqEYVI4624FyiLNAXDicf17KXzvv9BDHiAT5tx0p6cCrl0ftZ96GjEcbUEHd\n9ednOU5oywDm8NyZoqBIwDH5IX5gv1YOCBBBlYtIQy1DgOxvCpeQTZGw0Uyv\n+lYNW7f3oVmcRfbeEl+trrC08Cn05Xr9KenAGDlabYEBSiII5E2PlmNLZ6V8\nMdvh0X3iNP6VZORiuk50P4LIUKc2mE58/jOQzBzCohD3vNhYqCH2cJEHXj29\nowlbgjpCOsQNcQXv/xtEJFQQcN+BQCH9fg2pES/UlKmu1OnuVTefpjJGrteq\n3tTH9TXvGCDGT7KSPAQF3qBjsqciga2bnkWe8vdgGF0dikN+KmfJZSg/m+wG\n0/CbQl8wxc1cAuL74EzChSLn80HpPLOxxlGugYk9n/WHApdNJ8j3HcAyMiGW\nL3ujjmTYcvkuwxviZNI1swHWQqDReOPBSVsNF1Uc4RldYRzl3pz8hjNH6/Us\ntu2HDfVIfhSYHfQEGGYsnYEBWbDN/2PRSJPmcmTfFPEN6YH+jw0PUy1B8yPk\n5YkM\r\n=7A5z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","ganache-core":"^2.13.2","solidity-coverage":"^0.7.16","@typechain/hardhat":"^1.0.1","@openzeppelin/contracts":"^3.3.0","@eth-optimism/core-utils":"^0.4.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8","@openzeppelin/contracts-upgradeable":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/glob":"^7.1.3","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@eth-optimism/hardhat-ovm":"^0.1.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.2.11_1620429034806_0.5307443822231923","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@eth-optimism/contracts","version":"0.3.0","license":"MIT","_id":"@eth-optimism/contracts@0.3.0","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"0c34ceb048bdbdb5956b29bdbf1d6e4c09af00eb","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.3.0.tgz","fileCount":751,"integrity":"sha512-pJcH2gjhp48Nw9rw1OrfOKyH0RWdoWoNoIRGnfxLhleFbABwqhRnJG+QhUSgjxtaA+mGqcqz4DDMAv62FWvM6w==","signatures":[{"sig":"MEUCIBV7z2BXIgiF3suZRlFMyVO60uxx/mdps0+jQEYrnWgxAiEA7dUOMTPonJD0SP5Mymiv+iH2HPNJRf4qSzLft+Jmafo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6009653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmapuCRA9TVsSAnZWagAAu2wQAIC2PXJBCtjJaeQIHP22\nOOpj2ZeMambrmxjVr9aAbXHI2INxcmvsQv2k8qYnWZxK5beVCRzznI0NqSCe\nS/a747XlS0Ieb1fbwwAlYr7D/37+qsUyh/zmSsQ6Z0zQ1KKlSN5R6jylYONq\nh4HoEcBJzjuWPr+ijEd54CAiTzAQuVQzouvEsTcxnHrjJ58v+tx0YXQ62Ceq\njlKE74PUzNNTMXuI26RV+rK00MAyUj2Z+MJ6tBXYYfWBuWopaVRfDvIfC3TN\nrzaNPZrOw3rLn8NS7K3Ipl+IVswsjg0FFp96uJjZTQPHcOr9ZRU5/EQHu27f\nKygVKSa5hjb7CQuh1ChimAoaEEM4FOgPpQgCZyyKWEeJTB06w8nOWokQtlYv\nkg9GHGP4DkSgQaFF9yFy9AH+uWjCn2rATRVw9KQxzLq6QK1aUJfozNILRiLg\nGxPn+ZRRL1repGxhUxePYyWNvKyHsExOERpynQ9gjqg69vLgoWiMLiiwPekj\n+pj/EgyRWKNHD2k+ZFG5pJlj54E+ik+hOaXvZjU1Y4flKKE6QfMmdaw8Y3GF\n3wVVfXULoI5mhDY0r5DSUX7uC4cEjHoUgk7s9N/OTIImVRVNmFGja6jhmcIC\nobwIHEJep8HAe0Xh55wO+NbNOmOzjD3tnKO5AWqBnenvmmEB3IxMYvTUXB1n\nba+q\r\n=6MQP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.2","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.3.0_1620683374069_0.6855084566117591","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"@eth-optimism/contracts","version":"0.3.1","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.3.1","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"10f6b83fc68033554b046c1572282a169f1d1c7c","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.3.1.tgz","fileCount":807,"integrity":"sha512-T5WdIzEoh+wzxTKoydp7cgtf49CW7KVvmidfAFtDnm7AkklFwTdaV9bYYMfE/hSniTHlqLfyIt4jaBM+vkh9PA==","signatures":[{"sig":"MEUCIEz00Edxeg0TdOJBOITh06ol6OpRyiKDKGJr3GL4/czbAiEA//cajda6aNkaaPzBqrmx8/pTNh+yjmhGiMV6FMahB8U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13188544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgncCVCRA9TVsSAnZWagAAB2EP/0HwIZjSrAMOd/3AV0VY\nCfY1ADElAzubGaL+PzWyNEsJUc8y3xOVVTgG1zLeH/ppBtJ3YkIukz+qMSCh\n+fzYiknMdJSTduAbq7yKW9C1NRNIzYZv0VoKDWd3iNd/rQCGS2B0kEmlrtda\nu+RHnW3xih1szanDiBhRwRZH5PID6TnXnDLYJJFGs5FTFA2rOCNS+tqsM8jd\n7Ck1el7J3yKIZD+a/MHd2kkxeQWjrskmmuxkd5fKjWMjsl4MM3czKgsIQfzp\nzQY92PXKFBgTUm6JjbiRmcNs67QuluvMkLqFzq5MKhIwtYRLLNznN5bBKyOR\nogoV5yZbHV/wYRKHiAIkGNQo3mdzl+d8AubGxkod5eNXO2m+2r7cevMBw62g\nXD5j3Q6rIk0hMvHE1Clot5s3alWEp1MOyZXYIPV4NE3gm6X2tmynscpuHEwQ\nV0RIxE+Cw+LCFEAolMQ0AV2ikrMopr3VzA/82un+213klJlh0j6sSGwighdB\ncz2rwvxHzMr+PHl8FUnr+FIJBZ1AzKErWllGQvNOZLDEN6UcyL6CWEcLbZut\njJ9fdAhFRRD2WO4Q+Iq+7XHYJEDRL1JgPBvw1Mcjo2ch0LrMN2Tblv3Sz5HC\nlJK2GPJ61+QjD7PbdP0OG1XzMpHLqZgwsr5qdjKUag57n4K2GcBo3Egi20U/\nCVii\r\n=rkL6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.3","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.3.1_1620951188581_0.03178796001718531","host":"s3://npm-registry-packages"}},"0.3.2":{"name":"@eth-optimism/contracts","version":"0.3.2","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.3.2","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"acc2928d377f17ccaf5c7dc83b92f4ed2af56e09","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.3.2.tgz","fileCount":807,"integrity":"sha512-8k5vIXgEeKHZSzvISdFk4d/GpFcazcH06PuFRHhXI2grtLhTULAJ36s3YXlNz5x8dnxHnNKO0pPzJicB3CHhNA==","signatures":[{"sig":"MEUCIQD+8PeqcT+DPHz2XKpI1zw0hSSo23JhJVqVMoQzfN6T8wIgVghJCRMPwyq7GT3t7OWDDqeVLkYb/I5uW+Iiim1sD8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13188521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgntgnCRA9TVsSAnZWagAAm+UP+wevnylfF2Z6AM5rEziU\nTqe+RHNWWtx/Tboh4NDRgsqNbmAUoPsEyJqS8kAbf4Ka8QWuxhQu/HCl5ZDM\nlxj39+pJCaJELmSYOH31sUmYo1MISb/UMz+vaj+q054+f6uwHMCvkNA87wIT\nTuyePl7YyuAOT4KzXvPGkPeLoYTQDd/NHqVRtWqHL6bbGt0565R53VynmwRM\nA1xlWOyf6zs8MdZBa64c/jZiD34MAS9/xQrQax0Vwg3jCJ/rkNZwQ+4X7K5J\nTV3+fTq3pmM9cqTpbQ1SRQWowPuvMYPvA/dFzc35KFHVnE0Q17EAlWY87y6d\nETgcw2vzWVulVuhqNK0RU7IhzRxjS6HZlLctzG1ZDYqpXp5xGsuFK/jXTwQF\nm+16AYciBDifPQiOMqPU5zm9oj0ON0iGjvtChbrw2SHnDj7Wt5aor611WmIP\n71u0lYNTpOyZw68mjcNErJ/uzT7A63VGXWFTr23guh2Tg1cECfFLN6puYjPV\ncNMFNRjfoytTvSLWV58zfOrOxgEQ4dmsgPmkjilw5ZwLNxEiBAIpGIfcqtn5\nJ7oRaCjyFsrLbn/TJqvLbR+nAf+fPmCc4xiNho+EBD9d1CqQjctT0ViDwp5I\ner2GzOaYRVA0mfMAD3QH+69SvhN64HfiGSwu/5KFTOn1CE/ZWihbyhI2OnFV\nKpFU\r\n=6Rfe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.3","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.3.2_1621022758687_0.33460995607135513","host":"s3://npm-registry-packages"}},"0.0.0-202142517154":{"name":"@eth-optimism/contracts","version":"0.0.0-202142517154","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202142517154","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"69920e3198cd8ac45897d74b4effeae97bc76ab8","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202142517154.tgz","fileCount":808,"integrity":"sha512-KmuQ+Xy2e3BZOYS5AfA7rFHumgIl9O2k7K0ATxvCscyH89H+54b4jfHeFeOWb0bVztroiYq/MAAmWrzJ96gbmQ==","signatures":[{"sig":"MEUCIBYJjnCx5HQw7E1e0eKR4ZnvzE2KfGR9hDyeZ0gbzeSQAiEAyrayC67UHqAz6IE7Ebiq5qpm7NmyT+yiXOvRnhwx8kI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13189914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrS2LCRA9TVsSAnZWagAAW/gP/1xhTJZBoImylgUOqKWc\nZshTPpZVZJbEuE02F6MEiwj/Y28RtWf0WmgJ7xGeMQotqTy7Nh8Vmso3dFTe\nB/sOhiJ5n1v+VIKXivcOYoH/5rcKLlKTdDyLRe+w24UgjMSbX7J39uizOED5\nhrXVpJBS/xqTG3vBqTtI5AD/V2uDxSc+u0wjYU1c+lhaHXauPDEOMSNF7EUw\n6ks8MvqscfUbbkPn5XPAChv7DmV9ZElHzK57r1/1RK/8O6kqbKXAMI1+zBjN\ny3FuVQqbO4yUWDNelA5OIMXhm76UJantwLkKG8oqdbUs+XUW/uN6zq1rsyCm\nm0BqVm0UNyywk/XUY1bkm9MU0/V+jseaH0q9JGJgCCPPuYqQzxoJnEpLAyGv\nq+D6sw5sgjA/63PpE5nHE6gIhUaQVCFxXOqs2HaFbpzuo/CtJQIfmMZDAy/e\n+SJ903xTYPx9uio8FOlBiTUreY+I0UJMbTe5JciAli2VvaSssXDNn8gZEiPI\nw83lB4ydDfSOwCGZH/Y41D7uPIwnLE2h0GHl2pTsX0dUi+y5ZNguglxPyi1v\nDlVnkweHn8xbYSmeZVh3zEl8EDiRl+G7Y2jy3t+saW4nBMA3tdauBqEx9Er+\n9N1xvCc0oDXoQaa9u1ap/mlnvb0J25FwX2qDtyLdvJ4WHW98MVMvUGl5xZMa\nrKPk\r\n=gsvq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.3","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.0.0-202142517154","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202142517154_1621962123280_0.45662589166277634","host":"s3://npm-registry-packages"}},"0.0.0-202142517250":{"name":"@eth-optimism/contracts","version":"0.0.0-202142517250","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202142517250","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"ee73496e914a2346303c38decb28c4d6a35dff48","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202142517250.tgz","fileCount":808,"integrity":"sha512-yphHew1CrYWN+gZFfCkiolk4p+XqcRr3z0dZwEMywowif1n/DHkf9NND0AJoojVY52QWD6icZCsZD6oPp2rR3g==","signatures":[{"sig":"MEYCIQCDM3jB64AiNU1JCITwtUgj43ERF+PSavhP7jST/62u7gIhAJjvrrvejp7OakPpCuoAABFWWUe8An8hSKHSXrRsMS2k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13189914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrS3FCRA9TVsSAnZWagAAqxQQAI2sE5ol+eWNl2QVJ9sr\nlTuRSE44Xx3iaQjAxE6ooERn7TfPfedyMGUb6IuO12a6p1hRbsJTm87LnJxC\nh1YMBV3YvJVR3/v2YWq7AVqgtdCNJw/M27kvB64yEamMBITNRmij4Z6cIuAz\nP6mWc+m3rlY08k0C677b/EpSk8GbcMDrupFo0Xa+pR8EzXbVPAcwPUS7ZS0z\np+bE/rqEFLPnPEy3wVfEnbzT1JkDg+vjsoGZHPnHd8/rhKjYm3WiErbRU1Xq\n71nVcihXnh0Yw3Pc9TvurgrKphqmJMaFLywo//LneF8jEoxmnZ5GSM2zwfOI\nfZvPER18yvzElfHvphj/HqzxIYxgl4s/FJrnctpRs1s61DAv8cEweJnrd8ce\nGYeGbGwdMGl94yyqB48ZHWaHDAJIp/2rQmd3FRQZaQ4Gn9YtBatE45ZmGJ5I\n1vySWDcEyF35nbL+lHkwSEaJ7x0fvzlPQ8+t6RH/odueUVqGhHivud1hxGCL\nKz7mfqKtJ3dKCsoDvoNNXaJ0tC5bHjxHplybYaAm0jK3lx3K4Y14EtSnoEzm\nMDRW3IxQ/Poho3PQy2fRtxZe2HukMrG4Se/SNJ0OUs99iOAfb51zmxDB2ufL\nfpkpcgrrmTY/Nb81st0eXIHOss4r5sMyJ4P/bII3pmYp/lcsi90Vh6MbNncF\nTGte\r\n=xXpq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.3","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.0.0-202142517250","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202142517250_1621962180838_0.5245743842720958","host":"s3://npm-registry-packages"}},"0.0.0-202142518936":{"name":"@eth-optimism/contracts","version":"0.0.0-202142518936","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202142518936","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"239267bb660cfea8e46eefb18fb0b087a554e5ea","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202142518936.tgz","fileCount":808,"integrity":"sha512-R8op9AyjdwDe4k/a/XZ0SNoyZJQRkKcPCnao1qH1x9UuTHkHBk8puWJflNp+hEqCY1pZ8uyGZbrvc488M7uCqA==","signatures":[{"sig":"MEUCID5BJyQCYWUX1RLrjVzg6zeQrt5xhltvtWL0DQrKhIksAiEA2h1rIxeXljrtqF42bOcGCNenxlahjeiXS8ZCZzXmFNA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13189914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrT1rCRA9TVsSAnZWagAA2x8QAIwVJxnr4XTX6bIgNT5z\n0gSBUhk/9P/qmEsgFnfShgRoApt2BWjhADTtnzWF3dCzA08WhEnMX8jHgcfE\n80TMdKSVoV3aD8Km0iKGuj1th6cA7HTqA0YbNxZyk+BtjHG+ZjCbhk35wKCx\nhgXozoRGqW5y1/c/SgKJ9E0xN8Zj7QqQernfvgKW9kKyUIR9jyFlFJ4BONMO\nbzp9IKvVXYohEsBoUPMb52RHD1F2CaoLLHlKoi2vvZfebLySSBfT7BdymJYa\nPj3OKqrOmOb6GSmIpETR7yAvyKebheG0gqpblerqpo6IFRBRmkB9zc5sT0rR\nrXvVHFC6H9m/VVYc6VZzmh1FKGIAeURveh4LMa9QDtSSW6FAFNx/Jxw5cuV3\ndNiWhzE/+LUflXO1Q7+qHyWSJRcDDHrAr48UjCwb6GAw/cie6puxM18m/s6P\nXX6mcQGwMD0EZoysOf6addQKVR/g5MxAxP0xwluT95nKf0vwQTwv/7O5FSDs\nXs+LUcbjLrNIJ8TomASMHoD0ixJtuO9XFmwil36+4syQtZluK06MBKV8yJ+t\nqW/d3uiULPeQVYJWKOtZaHxZL8f+DmGFNoYGhSOoRU6+exvApl1ZXPhpEfCM\n8n9ItMt2EsbfVvUxSOG/op5SrZ8BTC3pdUr0GU3bcm4/KObbzSJpSqDgjTth\nUTnM\r\n=ywcn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.3","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.0.0-202142518936","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202142518936_1621966187339_0.24645772182843495","host":"s3://npm-registry-packages"}},"0.0.0-202142624425":{"name":"@eth-optimism/contracts","version":"0.0.0-202142624425","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202142624425","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"6da3e317036781441eddaac19de417a5fed52389","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202142624425.tgz","fileCount":808,"integrity":"sha512-nvRU3WCTsvvCm1YGMCqWSAmvFuv93j4hrzhI82owD47u7mHkiaFSFk8/0d3Bz30rZQ5D64R6KVokCs5kwr1J3g==","signatures":[{"sig":"MEYCIQClom4Itwf+na1ctWmkaMvam3k3VDryiNtHK3e2YGn1iAIhAJuFI80bMrbWOydnBgEOQzBhin8IiL56/nA+7W1Z+0Oy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13190071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrbYWCRA9TVsSAnZWagAA2r4P/RvbOJ6BRtMwrj5jhg+G\nTWFiDNxUOy2+hEqwRoM2V39tXQevcYWvPaTPff0fSLWdvmBefRNr8hNXB03g\nvIQGMEigKZ5JjNeuhS3uKKeGXt6ftgjHlQYofPjKpFq39PQEN/skh9W5h8Ax\ncxJDIX5qwo2cpv4BkUX+hxX5/XjxuB0RrOhx3hcHcaHHoQpxamqvNN6ULZeN\nyaVE/TuGJWeJK0k1BYfbAShVEu79ZpEDpE4q3xsPFXBDOJ29CR66+rEsbHi+\nXnmwDRotK1HOkYrfDylETQqepM0rQ12eAFWIeDfwFb1D6qk6WjIPcgAkGZUp\nzxhTq34AnYCGmO+tfJXfHoHncNycXy1B7PffTJ5I4B9/9M77Gk7GxkIj2tt8\nBVVOSwfUgH5XmTKK+qEnmn5XU8qnhskYMc+zOt05bH2/BsQqkeEJacyehYLw\nx42GoOFkFj+uYuWBqfsyuhgiIugUUYWFeochrVzgvD+nbU1G8muTIaI7NU1a\n2sbW+wU04THKT35zpDsnTPHymBIczsmjlOvOcpBxPeJrDOkHa3JOnab3fwTR\nssbZZTEuanSp/kteq4xFilJdKDGoTLCngby45dD4ToOnvXb53ZzI+q3abh5U\nXO8jkUd/ZJ8Kc3MZN5eg/iLvhHj+cMjFDavqvYv3aN1AnTaZpI1dKWPgsxzU\nnBdV\r\n=r4/6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.0.0-202142624425","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.0.0-202142624425","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202142624425_1621997077415_0.7187988720577589","host":"s3://npm-registry-packages"}},"0.3.4":{"name":"@eth-optimism/contracts","version":"0.3.4","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.3.4","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"869dffcfd47994c556185090dd0814ea8d13ced7","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.3.4.tgz","fileCount":808,"integrity":"sha512-GTmyf+MR/LWadlm4ff5spA6pyZOGnmpNBRMZ8ecvOzjszhFVT1J1DTxuqcvrEt/UIk53j5OQT5tNZHmyovNvQQ==","signatures":[{"sig":"MEYCIQCRl5OWL0JbzySC2A4q+Z+nTWYsos7UfvAPxIk/GuMtDwIhAKzEZlTFDbPh14HnkKGwrs0pFiH2WmEPREtpSjvp1Qyw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13190006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrk/1CRA9TVsSAnZWagAA83UP/3oogFZeGVspnEPRLqSE\nrfMz2veTeX4Kng4vnbv4D/y3T+k5qEQLtlLw2MmIs9rfrrNmt6i4e2HO7mPE\ncv+2JDf4sF9xbD/XFMhs1YHflUxt9akDMhZr2WFpkGmAh9+IaoJ9B09VAO6e\nxMmqYe72xHwI7JL89xABJGShIKxFVxkkWch4gFW/GvilIEyYInRnSuhNXAas\nhpXZoPaOi3O42IN4v0BfRIda5eQpLAQHX5imzwOXxIyqYQeK/vx9K/1cB/vt\nivopS7V0qknM2TreUs6Db00FswfRVheatM2V0+BQVmTxb8pmZbL7k+cV2L1A\nMFyr1E5qpBfofRjFYTGwaOH0jdm3sxzCvD9SA++KyQYWF5KIP5HBIpD6zCqU\nr4C/D5qcs02j21JM1CTGFfraUKG71K9Zx8wl+hJyr/3hJygeXDycsmwF0l3B\n6hBUhdNmGbDvJMHtilpq601/n6NAUf+5Ol3w9R4fSlRCTR60UjDBGSwkgBMK\ngbHq4aighQzepiX6ZFXlc/B4yV2WFuQeN2hkqDr571yefzyMZaSo+0cCgIEx\ns+2bSaghiYqYl4sCnYkgVoy+5xIvrdDj/0aVgboJC163aVBKMZ0Cx72b2Bju\nabY+OPX7IkzVeu3tDoNawXTsNVBoNkEOL7kyRGgEiupWdqJbz3EXtkOD8zaF\nyxgo\r\n=1F6T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"./bin/deploy.ts && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node scripts/generate-markdown.js","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.4","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.3.4_1622036468902_0.058103606073662384","host":"s3://npm-registry-packages"}},"0.0.0-20214293928":{"name":"@eth-optimism/contracts","version":"0.0.0-20214293928","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20214293928","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"6e0e080345baf443e0d4aa620b06748e493bdd53","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20214293928.tgz","fileCount":808,"integrity":"sha512-G6CcJbPcZ/Ggf5M1aysm0BflTh4vFAkjT1MpRy2aBPLGCjaJxbeRGlcJqOb3+MZc0gL/y8jUkmhqOW8bTDGG/g==","signatures":[{"sig":"MEUCIQDABwq+ndM0dva/lDU5qoROwR3yTvPYhV68/a/OxF180gIgBa+skhjKDRlPQD0VPcqIE4Sh0eBErDbi4Hdz4Qhu0XI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13194576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsbByCRA9TVsSAnZWagAAlPkP/3XdF509/4G+e4o2ixX8\n39OGW0m7rmnCKeCxntqlRQE8kdTbTMoCMNJToeINdTX6JOS86FuLAe3/lyiG\nt1A8PbjWPU1yePs5hWwOmxrQyZJZuRI/zMAjJLBneKZTorroHBMFSXvjx4hg\nYWU7H8rmY7PRIHhfgsw5chPyWo/yFk6frQQTzTxnCHHuLWRz7/yJBMQypcmb\ngQMS8Q+/aymvpkHMQR2iP4kSG2MtvpbCFXQiSNHe8hxs3YW3nldv9cSlb0yn\nT23+vT7iadqL7VqemnSHlSPwdgFhf7FW8b0sqY/jnFQDLCA+/X+4x1HEsKav\nsaS94ECZ/inD9rG9P9PraQRs1wkKVeN/phETWhaG13szCDaFX8eKwOGfW0cp\nEwjFdU2xGnsSv/acI4bIU1oKOp3ap9KjoW4pjXRxSXYmIH0gjizXy7v14V+V\nblFn3rwDKpEKT2fL2DqWDuibfYV9Rc2QqxBsO3Kq9VLkoDD1H9Udn4bfmeZT\nTmNh59y8Y36EUuu2yxr+wOC8KIcIJGW1+0gCOgNIIuHS8SEN8rg3n5sVjuk3\nbKz4+GqrGC1sk4CPsJC8WUBRwxq2SFzu2isFif7cgrHPHbY0rw8iIRXbMN3L\nV3de0uDUU0t091E/NcZSubAttz/bjvg8VBbcscGJqdgExerI5gVAuCnziNFc\nlx5/\r\n=AI8Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.0.0-20214293928","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^0.0.0-20214293928","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20214293928_1622257778063_0.12256631411981433","host":"s3://npm-registry-packages"}},"0.0.0-202142944631":{"name":"@eth-optimism/contracts","version":"0.0.0-202142944631","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202142944631","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a1c27710dc0f65eb608ee29f5082e2d15370ca80","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202142944631.tgz","fileCount":808,"integrity":"sha512-VIXt72fw/PWTY75epLDiQZXB6bSAVaoIijRsnjTXfUzgU3V7mjJy2BJNg/1ehwWv2vNjjQomnxrNKtob4weU+g==","signatures":[{"sig":"MEUCIQC6/xxnAyFEbJhpop+bu2qLruxQc6QQwPsUae+fmbyljgIgE9DmvQ7Z8NNtGn1x0fkDZj9+Pohbvps7EsiAly4a63M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13194581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsccxCRA9TVsSAnZWagAA3D0P/jZJs+mj1xXEkbXdvIP5\nsspfCrHBbShXkCTFepN604oHeEk3/S/UBF/XZ06TabuXpM3o9miOoMdoWFRt\nEYLrt4r0md7aLLeiXjMid31ZzBsQtlreeLTZJWrTLDjsbo37uiGLM8ZLz10H\nNz2/DSF2ApZ2K5GReqWy1JTirZWPRq2HkrhUyKT4MpHME2XPGnTcLGnqMCGy\nuTMlEODeFls2RRrk5ePIiiVmdp/kQqPmI7s7xzmVvAW/HjB2ogRT/MpBNCPJ\nR9SZ8k0c0RNUCOmt4NQL9mkrLUm9cNB0A+Fpn60DMTjtlCkyGebGHDWU120n\nN9p+AwRvrCZC778p6iOLdvou8/c70r7XBfBp9vxzdEA6+TyGp7dKbwkGMrCo\nNUiVdUFUh8fntk83iAltmFjWd+meyAM/otFe+XemE9VQ/K6VrO7BFOi3v3Ht\nHk1F8cq22nvtuXDWlNZkNMpb81m+cn3nuxWXM+litsMqcP9eRSotNPnL+irk\ngHNorQxgTQ9TTaOR9sRaWCFA6LmTc5pQoM4Qd4KSolFA947t7VKSLzlBSbZi\nRbX+kZ2izihc+AaybAHh3VOOPPLnUMjzc1VBGgu9hNo7OSyz6nwGCYRPxMRp\nM0KkCIFzWf/Ylc43OjdmL/D51Fjw2N01hwYKC5eapmFXf7xxx8OIWiLTfTLj\numMV\r\n=wx7C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","build:typescript":"tsc -p ./tsconfig.build.json","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.0.0-202142944631","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^0.0.0-202142944631","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202142944631_1622263601049_0.6129406457500304","host":"s3://npm-registry-packages"}},"0.0.0-202152182635":{"name":"@eth-optimism/contracts","version":"0.0.0-202152182635","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202152182635","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"d814fb9e6d9b38a4633e6d3809e9eea2387eb655","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202152182635.tgz","fileCount":808,"integrity":"sha512-mLtDxytcP3vzEChH5Vp4YTTNqcFpyGQ2jB5ORgIXMz4po1sse9V2hfMRhkAgNgwhw7XhxPvYvcvbof/EFvnTow==","signatures":[{"sig":"MEQCIHpDPfDmKGAG6bfHa95mUy/uzD9gCpQddrzbHEKu3YXfAiA2FUOyFgION0VNB71sPw2H4E3PSw30nIx+pNE74qCapQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13194975,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt81mCRA9TVsSAnZWagAAh/cP+QDtDZ56Y4hUdzVNkufo\nL+TStIxhZtTbTrYc1Uxz1E5nkzN5vm/+ksDPu7preovocVQmOoN8zoHGl7gC\nEqEKrUc4kEFrwOD0zDIv0AfXv7MzSfc1+0VfNw6SP4kK8RctL75im0c5p77U\nXjEuN1SJaA3i6QFF6D63p+oykrITwdKhKIFzxziVzhoGlbHcgCOA00s54GI4\nA6Z3J/LYj6JDwM3giTenNle4j+DENCNmIklvBR6uZekDYph8mDp3oZ8aDoNx\nXgVDJIC4hcoHB3SHpoV5IW5bpr0T1T9I3Y8xNOSdzD0Mz/EXnFlRym0AEgnv\nUeadobdQaem3/iYo5qgSNyYtDzsTQ/V2eMwlvE5t1qtznip75KVEEBi99iVo\nPzhJetIxT+q+nZBFhyUAVcrsBQAja7bk5JtuQNi9maCv9W5D+UroTp6BcImf\nuYK5UxE2uykB9uuKUvF/OyaeAnxu6JcCr4N/jEkrK4f6AEsE4OE3hFTo/LaY\n/RELZsNN9xFKE8/lJ2G7/R2cKjPLw3zouTII1N+cd/zxo0x6Lp0ZfY3HDcYU\nd00WGDmJabVXvKpjHmzhrra8iOt41isU05Ah38RTAUxhVpWhnR3FWP7QR1qq\nuH6UA6BMci3++0cuIdH+O0kevO8M0KznVE5nCJ65QTi5KUDzTxFojpccYkuL\n0LfD\r\n=E3Gw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.0.0-202152182635","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^0.0.0-202152182635","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202152182635_1622658406079_0.20312808886056333","host":"s3://npm-registry-packages"}},"0.3.5":{"name":"@eth-optimism/contracts","version":"0.3.5","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.3.5","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"f63ff93bffde7310a5b990aea599dbb8395d2c0e","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.3.5.tgz","fileCount":818,"integrity":"sha512-tjRadNBjbB/5uj5Boidl0d8f3k6pB+N7jP0JH6LQOk59aAGL4oY1F4Tetr0Igz+r7PZMjulen5rSP1UbCHPbNw==","signatures":[{"sig":"MEUCIQCMju8I+biltCqkJJbTaqjkoBpjSmFi7D/gyd/vgUhyZQIgbHOqDAO08JZcwaf1j5FOoWJGRp/s71ELmphGeeSX3Bk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13256867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgv39ZCRA9TVsSAnZWagAASaMP/2aZgjf1VM6ADhTzQ4ak\ndBVEhYKij+hLL0QATTVB3RKiO3SUHLlmWs0ACQQJDH9DgiNh7Im9TnHurBVv\nwVV+VRmmUIC2HWRX9h+AYVVxin4+IXEQpsumjmkMDH5iVhLt/Y6NVlD3OlYN\nwmsWMQ4AEcjwe2t4d6tYif+nVIjttxkwqcUHdo+9fWvGZOSz/W+TiRkg9dRA\nl+z60Cl7/EiE0KDFKXKLUhp2Ge+DFsOsqscwgfB+RFh5u5wNS89qhzxnfe1j\n2PFwStG3I1aZHEluq5OaqDvCMCyzHWl4/6n6Ers7oe/0jdwtno8zBFciFqbs\nuKm6rnWdD8BQWOlS+fl03694CvuBPGcy2D9hCCCPl0H5WHB8CTVGL6t5PVEd\nzsVHix4JfMUeXjDvT7sMf8uwwoWGWI0KAbei0Va5TWDPrWa0VJBmPDiSPGIL\nQEHeRM4LqMK4lOtDFrxCS1qv3DtDCDkk+UEdFHVqY/jBLLQzO0Sfq89iWthj\n9NrgeOhkPdcJJKr8tL6wWUD4jLyD5d5670Tg/g79QeKNDoDo2nsTRY3q21vm\nI4LUvdeSuHrY7sCt0VP+MwB2m7FZsGnGx3iWP/24sLxSe6kqLSQSHRYelhnz\neN3XX+kgY45dAicywt1BVbDYsUFI5IgzTiNwdI33SDjac3EuTzipk/O33TmK\navE5\r\n=JU7S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.5","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.3.5_1623162713057_0.24445450156714","host":"s3://npm-registry-packages"}},"0.0.0-2021515123836":{"name":"@eth-optimism/contracts","version":"0.0.0-2021515123836","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021515123836","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"ad35e616f7ca6f7da9208867a4f75f2a365c556e","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021515123836.tgz","fileCount":838,"integrity":"sha512-ZhyYoUuJf7s48L6wWYExrUVBeHZKGl0UiQ/ZYNk9ZGSpCFFhL37r5UCra/aUr0d8mFQvTyDEOW5bnL1kb7nvsw==","signatures":[{"sig":"MEQCIC1iICqw9U/ECVbGtgE6HuWadjG+jWdwUtP8Siz4biYiAiA5QBFNkuknT1gpS9VjukxiEESc5iZgwp1HBRVwbJjXNA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13455627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyJ9VCRA9TVsSAnZWagAAS8QP/3KPodVaIjDo5irtyk96\ninOJ5TmqEexFqKxkGXKJgdwhFJ8whwtF5W95qCrgOIJdqIZgTZB5HUCQdRI+\nRAK1dHIfFoM172HMmood75JUNq8UjGiheiFIP+ov5MWzsuVwCTI9XI0vPSWG\nmNDi/yeWjN1jpbFQirZZehcfD7NxFN7cXfHYY9nqj4EIXXA1ZJsyLFXmciD4\nx00KdKugiCAKqX2vCss9FbR4nzRNHxfHuXHq6OEXtWNEi+Eim4bL09KpHRzW\nAs4Ul1LevyXJa8fFa+Hb/qFIhcXjcI1W2CohVCd12UYEhckSfCC0sYuTmeHk\nMvlMbvxJpFhlg5Jgg3MsO3ni3OJ+UxCP1KPEO3rr4fUbgVwZie+KVSVacHHt\nvLRXDcEb5wEcNE2UEqBCcI5GzboGyLrSjIKmZsat35JlYFJ8e0q4Na9F6oG6\ni7KcRUAVZbCC9BrmRE5FStwb78tpvKBGkDTBFeujAkTc0ZDgUkMddvzX6kzr\nezkFAsC998Rz2vmr1WawkEvoULvKe7jQjVdzGI8n8AIia9pnYzf/oXtl9C51\ntp1TEDjxIO1/0gfWY2uA+3Ua/xCgtexTDuT3BS4/DQCsYO0ekaWmsPZ1MdTi\nbjW85FzXqtyT0mDaZ/mFbVz9Ji3Oiqu8J5Lac3wz+7xkJaJINoCom/T/xAnI\nL4Qt\r\n=Kyi7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test,deploy}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@ethersproject/transactions":"^5.0.31","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021515123836_1623760725544_0.35798784789053406","host":"s3://npm-registry-packages"}},"0.0.0-2021515165439":{"name":"@eth-optimism/contracts","version":"0.0.0-2021515165439","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021515165439","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a561cdaf7696398dc074fce8971778d91ff38599","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021515165439.tgz","fileCount":847,"integrity":"sha512-lXuGLaejQdPRkYJaHggFFMj4v8Q5moO7csFID+blf11iDu8OPEcLt9YLRBQKtcHt5+eCqoumogzwcw3TTbUZ4Q==","signatures":[{"sig":"MEUCIQDFUGDtUtw/pr1mEnl1uRodO3sgQt0DpXsdUnco3idQngIgaPw4VC8YMf5G8vdXHLykcUfsfQMTOdqbxTll5fyTimU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13521125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyNtYCRA9TVsSAnZWagAAHTwP/07d8Z+n2iW/b0LE8Q1L\nE/fExtcpsrfAKY/zNW0yTRR2bAuxHQCSximbSN26Qcrc7lRKSXTo5zHN5OgV\nUG00qmZcqoiO8bfkQWxU2eZYMNf5lM7cax/mbSuK8MMEzDH0NFtbfTyqk2hs\nNUtDA223VimvMNmBoM6s2xlZoXkLsgOn7yXZq9/H3JwQ9s/zP2ow2jdnFnIg\nFWglxaKUW8Ane9jDPQ+RfJjNcmfVji3CTjvwhO++MQub8UlF/TmA0zhaLTxq\nayT0l/Ya4vynbPnRP3PlPK93m5TeY2L9gd01C7auNXRTuvxHlJko3rVTEAL7\nU5XaRYZZkYFchW0RO3Bgc74Jr+2DpHJmhVclPx4PgiQjg6G0D8MsvoZF1tHM\nzAulF91+Dx08iB7BJ17x5fGcOkXZr9aCvVh2NV7CRyYyZDhhzgkjEUAROrSG\nC9JFLKCwf1fe37eQZTH64UULODnhWKjoquw1/57ifNKoJmFna/PILdi7rGBo\nkrJcGe1Hs/hvLGkyjzIPSJQyyQXd1AhyvM2s2Z1kA4sADcm8sXpoQx01FnQT\nZat9nj1/2E5T/z0o293hrdbw76bCruU8Qj67D4mz9ezyz6T8e0yvRudX1NK1\naIz8bGXe3Vh55tjFX5NBqunWuxT0Ul2GJnN/zKonAxSBLBs9eZa3M5z14jxa\nOsOK\r\n=qzs7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test,deploy}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@ethersproject/transactions":"^5.0.31","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021515165439_1623776088648_0.029612062457681","host":"s3://npm-registry-packages"}},"0.0.0-2021515173619":{"name":"@eth-optimism/contracts","version":"0.0.0-2021515173619","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021515173619","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"2458eb9e2c31b9dec18e1e6a38498cbae97f7fd8","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021515173619.tgz","fileCount":847,"integrity":"sha512-f01ZybwuuroThv6o5l9OVT2K2Cm0Z5XF34qCIuHqxYif5lt+MbzBAUwMSEOxlJW9wlv2Wz5WBNaK1tBYwTluKw==","signatures":[{"sig":"MEYCIQDRSoU/3Fdi1xWmFL4wTSQJhkVzBlnt3X/EjwBi3drWdwIhAJt9w+x1u2ymo8t1C6MtBr0xmiNyWHWiCtNNNKrJWMmj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13521125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyOUeCRA9TVsSAnZWagAA1ScQAIK4hIgNqvKzCYb3SFPF\n0AkegC6Wa57kHLPySGP2JK+DNmJ38K6ArpnqzeTi3nNIkq7uKl/KM6GZPqZJ\nIZFPHDNDFAuZzRUJNHNuIO784YcCKNuTtgx+GkItrK5li4+iZBlM1ubFzCs0\nStGwFRJKAsrwHN/sH0ziVX+jlp7sE+JEzrJ7hjcIwBXV1TT0zswoDGuPoVDb\nbH4ocrviotQw3uA1ZmLqLWtRfsfe1aq9AqIPx4FJQ6yXeGtbsx4H5jKFYDLH\nzn+eQdmUuwHeuJdae/ge4OMEnVVNeb3m1iIbbS5XxIVERfuJYKsc0ounl3Rf\nwTR0//M+SOPnrjUdxOI83adr1TbxVLfty3dDRttvph3g77khLowEpaSKv7os\nOHzp/uWShC7YWfsaD6BQ5D/wF1My/e0ueq8P10OZLFb1ARt1++N5Za3EE+Wf\nixcuoTZkswga4v+9L+0WH7Mz4ZaWXR/VcqjwFBQZXc1UIHoutRGb0HdxSNEn\n0YCXAkx6F5V4Yi0aJC3Iwxxwe6+K2yBIRir4cAwtiC9hDSozcve9bHYCTITE\nVk4Jt+0ZvYtOgYCLRarD7KxIMRy9xVrysBUMbuuyNVE6/RPbLfpkfuC6GVQW\nIhs2HpmpURNjgLvgtXGH9MnYbCC6wcf0sPOawchDzLMFBL2u2AzOaxM5XO6H\nO9UP\r\n=ZekJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test,deploy}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@ethersproject/transactions":"^5.0.31","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021515173619_1623778590094_0.413835964993603","host":"s3://npm-registry-packages"}},"0.0.0-2021515174945":{"name":"@eth-optimism/contracts","version":"0.0.0-2021515174945","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021515174945","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"7d5beaaa0fd480436d5b1ace601fa6d7eb7758f0","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021515174945.tgz","fileCount":847,"integrity":"sha512-py3OdeNeVN5BOaA33K4d7dFz643V0on/W9jDBnYa1hZF+qLzZ90dr9nNFi/VTOFjEWNRezCL67v7Yd1Enr6AJg==","signatures":[{"sig":"MEQCIHC8LIaCyGwEzEmsE/PSGOkAHxmKP8uYQOwPE+KihpRAAiB9wC1nGQsrYFt9HMAs0SUjQ1H2YwONb8cpkCoa+4kccw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13521125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyOhCCRA9TVsSAnZWagAAsIYP/A/WoP4zVytOLMthrC13\nz/Y9CVUCZk++XFsZkwk1hUlZoNVR18ey1zjapWr1BhR2jFEFiTFNuAYMkVTH\n617IkcXeGzaJJzNj/STKzqNcS58aytgXcIybKD3eeM+5pg3funBIZSj/eSur\nrQC6rr/Yekx+RqmTBrZoWz+7ZqJr7CxzCMQ6FHSibj7a48EGgsMPRrjf/lFS\nPi59m/ZVy050QAJvK3UCYACVQika7/o755KOrvqO3ApVvUSnsF3ep0kpGE5g\nUcrMmalB2Rq9Y0aS7dvE7V4oihH2KQ3mCZPZLYSeSfjiSYgNPFNbsu46xO/B\nSvgFlNfUcsJ/vglb2qqgWBe+W5P0rE5zYGXA4t/rFr1t0ubriI8wvKFE7qBs\nqHDa53YrTmq/Ql3pCfcjHXzCxIp4R7HxNLgNkBxfBtxf266MTwlt2kV4gAso\n/837M/NJdQImXNkS2EI7zlxOB9Gd7cRqqUFocOaxJr/ITeqvkm4Attd19ZMz\ncrOMtYmVW4RUwNAhu9NsUdAfUbCX/3SANMUxLSGYRPhOoLv9txVPQ8BVvO7B\nBYqOxWFjWAW1/53j1VGHzSD5Vj+anIteO8uVF/WMxC1i5Gu4WNdk/zyrCW9v\nBbLP/nuXM9el7n4GdLAS26pqp1DUr/XpKJuo4wMtWdxYwoo3C2+KvmFfIpWq\n2NSE\r\n=VOOw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"tslint --format stylish --project .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test,deploy}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","tslint":"^6.1.3","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","@typechain/ethers-v5":"1.0.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","tslint-config-prettier":"^1.18.0","tslint-no-focused-test":"^0.5.0","tslint-plugin-prettier":"^2.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@ethersproject/transactions":"^5.0.31","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021515174945_1623779394509_0.11227924342516404","host":"s3://npm-registry-packages"}},"0.0.0-20215180366":{"name":"@eth-optimism/contracts","version":"0.0.0-20215180366","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20215180366","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"edffc464c4e37f7069531df0045046a0fa34c0da","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20215180366.tgz","fileCount":818,"integrity":"sha512-QMZodzyW07ia6nQIf14x9dpZf0Xx7LijwXWaPGXZdn+ZK+jYKks07LvC0kzTGsTb0Gkef9v7j0ogz4WLUwwGRA==","signatures":[{"sig":"MEUCIDjd7BLGSoZ3oRHIqNFNyPhTXEq0cpV3JCoToLxu/SMhAiEAmao5J1KsavX3J+xbdfCssgH2howNZy3yYhXSQ+jWcQU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13257344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgy+qACRA9TVsSAnZWagAAZnMQAI7cYD8Gp9PmI7789Pon\nxMrwTHN/A2NK5w/4Xru/6Rs9tVvxACW1DqTqgt0HQFgSEd+QfZnkx8I8u7Yq\n9Y6qEonXuJR8bbog4s6Nxx/nUxCGSPSLR0DDcfQWIPxAUqvQz1YyRdcMmQJx\nDYQcongEqns7ufkXkq/g55yfSeqqKC19T9V/mPx4yd4nWb/Ma53lPGU8wb3u\nyQA5NLEiX602FXXxLMYp0dkmbw3CNtCtTiFbysm086lEO0fnfSBLyUpj5AlI\nAHF9oWHByizQw6a6VCvnUWaBvex3eVqlPtBgo6GSS5aIQNlnd+auTQHjUIRZ\nk/62cOfqfqBTBD1mYgUlRnRxgR1L2mJtso27reulYuwG+bLEdZ166QX1V0IZ\nhvCG3rVR5hUkJNt9PGzVv72BwAYPR8og64/yDLwuAbH5Nq0vuq4y2Gb1drVq\nc9rMsWxHvXbAopp541W+GRCtdSe2ie4tURKXgPIv2hg8hWd8rXL+HsHb8NjL\nIB7HIB8kE0v01/4QRFp9KajpEo2CFsNBZAWbpEPDvktkIotZbldCBrROM/75\nGxYqtC2FEdRGeaf0wcJW6cbU31ySn3AzYMB8MHZQzvaTjm8JMU7bEY6FsSxd\nnebhByH1lk7KIl+kpkJxqVQCAmPqgq72aOomd6aySiJUNbTQea3IXFRK97ks\nVL0y\r\n=BaRX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"eslint -c .eslintrc.js --ext .ts --format stylish .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^0.0.0-20215180366","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20215180366_1623976575846_0.0503346901196704","host":"s3://npm-registry-packages"}},"0.0.0-2021518202014":{"name":"@eth-optimism/contracts","version":"0.0.0-2021518202014","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021518202014","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"350ef7b667ffe27799cc9ab371a514f444f7ceb7","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021518202014.tgz","fileCount":853,"integrity":"sha512-43ZIt7jUw2As63zPbCMCBcR6o1OGOvyrnphCVCU+sSRrM6CfiEejZAn8mX56wCfz1RLH68PP12/qlRFqz/tJCQ==","signatures":[{"sig":"MEUCIQD9qn/dEpI6QxLF4bn/lnwRcWuFssSHplfmgahn/ntVjgIgPUWZcGxk6L5RF2EI68GH4uXb6oKJ6DnAbl32IvTg7Lw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14762751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzQAICRA9TVsSAnZWagAANUsP/R8vbrKqu+hoA9qwAUms\nL9kwyihprmniAk4y//J7YR17aqK9DdHtA2OEoz6u0056ntpI6Ro2ckye1q9X\nLj5S4rhFaUE5Zw0/iBJjMfi3/MhFJVhf/6NbKMphK8z5tsopYMKgnmOP4dAH\nqu+SEDDAW9RS5MHFfCFpz9rkxGDllezogIzNKTP7TxcHqLb8O+eqf09gTpd4\nsbOId5iewVgZqIpVHb+mP+/UPTBgUYVqOjUiCdy/CpZ/5NHElXGrdHu3LFGe\nCSso01Pb7yRZbb9XeDzCYkJrfAcZ7AOXzDhiYmFjuYJv5LZ1ufrIEja8A/HS\nTgYcTQAE/eVnpvToveo+dRfTioDeomroJxWHzrVNgHwzA+LYic0FpeFjY8Jn\nTPAi1Jk1jjuKgcWcG41S8lUr+M50KBJMbRLfWzLGUhNOpEckF8h63dgetHs0\nMoL+14ctKEfzkp+DkNQmJmtDQErb6GMVBXpPLJ4BHpxnLN+oqjJa5rPFOgpk\nFTbEo3XdgRT3pY+yKG84cr4YeyqDyia9siqhKY/ktl/WVBHJNbwScQmrwJEw\nxrKZQZcrofpatQdcQsnVKsHlHqbfPFIo9D04cFRD1whBGPRQgCQPwKbyjhhX\n+u2fFCnAf3PIPy/Mj/fXNngFfb3N3DMtS6AywD5rsco89I4JxhhCQWIfaAx+\nm9r/\r\n=MfLG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"eslint -c .eslintrc.js --ext .ts --format stylish .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test,deploy}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.3","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021518202014_1624047624472_0.16576490728639293","host":"s3://npm-registry-packages"}},"0.0.0-2021521195659":{"name":"@eth-optimism/contracts","version":"0.0.0-2021521195659","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021521195659","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"61cf7a62427ed957cdd7bb0cd60b83259fb6b3a6","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021521195659.tgz","fileCount":853,"integrity":"sha512-0DhAiPZjDCT8eoTne2JNENx0DeAu/Y1N8E09ysgyTTkycFNaj4swIo2pFiDLFejT3jeE08bWedmHtcvaGdFeXQ==","signatures":[{"sig":"MEQCIBf1pWHSntCIDodqXkqsgPZhxkLRQLbELjSQ2NEydHNsAiAI6+xM9f4IxlkKyPOm2s5JylaKVYDp/wWG0jZWR1dshg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14762765,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0O8WCRA9TVsSAnZWagAAw0gP/1OZj3i/EU1hwf4ZQCsT\n0dfM/1Ck3i1ypJVTEmhLhJmEn4MsTb5HT23ZqMaIFsbBZfJnHUdh6XhC324w\nqCz5JGfyYZbYnGjChKZ7EQc23adW3JIrvolnzCd3EmUpNd+4QXfujJ2Ze8dO\n1ibQo3VARXMndAyn0s+d+S7kpnEIQE+dZadM6GGy6F++WVxuVh0w9r/TL5kA\noRWDJqa9cB3Y/VP8rSo31regU0EGK5I1dBZsrKTmRXrFKEEaRbbvFnVtkqDz\nM4fRx/jcYfG31w02ZWbdZRFhvm14SjlPpVbnZQmrk97r83Nxyq7SIvKcn+kN\n2uw728RWT8oLOb5Ih2oste1NiTkLtQqA01gVo1iivw/Fss/Z5xCVZOHkjZlj\nlH9D9ptV3TanQykqsWdTQoqp6gr5mvm3pjqEyI7mYzLKcGTL9WWwhEt+Fb6d\nsYWJ6w5P71ET98qFXmHSOS99x6YVVcmm88//wqanTt0FIA2/Eo/zL8x0cZ8r\nzV75TH1c4sk1FXfcXIeMhrYw8gJ5hs0MUFlBAqh5FYRo8gltLAe+2G6FbclF\nkZgRVjAnmbsG63zt7Rs0N7f2F5+hdtwrtWeCWCxQ4nuPe3PGCF1DURkxXJmR\nvCgoEiFO4U80sDiA1kneXf9QopG5/Ie6TNjEaM4CPLsDBXLgPpjVk7LwQ4au\noM2o\r\n=JspB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"eslint -c .eslintrc.js --ext .ts --format stylish .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test,deploy}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^0.0.0-2021521195659","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021521195659_1624305430083_0.7556055572295406","host":"s3://npm-registry-packages"}},"0.0.0-2021521205826":{"name":"@eth-optimism/contracts","version":"0.0.0-2021521205826","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021521205826","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a4bf76a632e7897c858b136f8ee4828cb1a87dde","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021521205826.tgz","fileCount":820,"integrity":"sha512-+YbYmE8MmaRSBQhpuHUMHWVJCt7G6zWK+IUAyQORplJVaYOXkpBEJsuytgIlbivxGUJ4STpvjiqaBb/mj244Hg==","signatures":[{"sig":"MEYCIQDVrh//+2VHYE250Gt27QY4/C9r0mvG+quiEGp8MzGztwIhAJApB0dw0VnHVj54upeue1SCBMkzbTtYXgBzVB5ZXUaB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13271038,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0P19CRA9TVsSAnZWagAAmSIP/3kHmwVi1+rr7Rjhfa31\nenqjVtBMXBGTVnxszzOesfOxRFtuT62SAYYyzFr1Qg4+PbBDx4/mR7tX2rtV\nR0oE0WnCYpjhUyZ0JMPcv4R7xonLjKOSs6x3osGBDAADveKOO80WXiuKha5o\navSpVYJQ6G8HkdPJyyx2ohC4MSF3lG8wIb6ajb/nNvsDCKnJMg1PGxewv4zk\nj7Z0dh7MXhsH2yvH6ghvbnq/YAPzxZ3/XH0VD71V+NVfkLo2nmHVlRarEEZv\nmypZmTFbfjJlYXr/UcaeXN2U9UoCRjrSEDs449JRr/BmxNWuYe6ccRwcGAJn\nGnjAJmGxgvyuVW8Xopx7FLeij99IZVZTGo0xUwwWovjLoAbnyOmEWgS8RNj8\n16bxgOhbusf1cmOBrb78Cu3AU+wujGZ4FIOeSewUHQfLnUtbwQfbECM0i6vZ\nykjb425CmTi61BiCYikuSebXezcCOSPCTV2PbA2UrrqJ0NxlQK6vDNg0BHWl\n2A/dPuR4lufQw2S2a2AMkVmjrmipDcrYwEXovmtMqy1Nmm5XUqN9Bb9t4f83\n4WcqyS76fsYWeLmjTwr66WUYrkOLmxBgmoBAPcuvRUqsjvlzGRLEXfMR6I3t\nCRGx6qC5mFsEPxG+8RZRSq+IGSnxthKf4FoRU109JHk4arkxlX2u6Pz3PM7J\nXjHc\r\n=heq6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"eslint -c .eslintrc.js --ext .ts --format stylish .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^0.0.0-2021521205826","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021521205826_1624309117132_0.9258943320704036","host":"s3://npm-registry-packages"}},"0.0.0-2021521222130":{"name":"@eth-optimism/contracts","version":"0.0.0-2021521222130","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021521222130","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"2589d2fb9b3460e8d5fb3d8ada85885affd91bdc","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021521222130.tgz","fileCount":820,"integrity":"sha512-SQzIhIhu96TPLMXSOUgo5TeNRp4VVxpPCG/UvJN/XMaeNyCn+Cm1ZDwFI/1ySUs+/DKinGgqObzMsImFBbjzrQ==","signatures":[{"sig":"MEUCIQDHlohdZNnEukmRBGESWX/xXaADVo2MJhpJamPaty6WXwIgcgAXtGZhhqLcO+T+p7en71CcrOgx1yfcCofrl75pr6k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13271038,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0RD1CRA9TVsSAnZWagAA0jQQAJp9C6rDcjeXn1S88ppL\nhwXRvlY2N/j7ig+yGney62kubiGLD6KrXOCKDVLLcQ2CNLOezZNg30CSq37Q\nXHUsABSFI6tEmxxKJIs3YkEjDg8X8weJl1nXSvp4N7J0gqmeiG9XYJjzb69t\ntYu5sguvPsZuFbIaV5P1JhVqXaCFhEne969+oGf5SiRlIRnA8Oif1hFtiU6K\ntI6ljNSKF1DUlOnmR7/+f4ciUE8xwegiRLNLADWPL0QjTOeipoMsWn4UZOxv\n9o7ch8sF1XPhL47r1skj/WkH89RFjyWE7vO75I0P7pxrehlGmQm2WDAsSg4m\nmsxAOTEJ+95nkE15w4CePAJe+yQAM1XiIHC6J/3R3nZKYo47PS+JfaXaXFAi\nm5enhKjKuz+RflRHhmWEsF+5yi1pCI0Xr7bv1iWajmxVsvhPsn1hOqSmQzwj\ni8VS0pMrhNstI8Oa6txKFdbgDngfXRno/yprYkUF1sdjgTJjPzLjhJjlED/H\nZYzMzt04rQ7+y2g7XFjWlT9EbugQFCPc/n01i0HzW3k6Da3SkTOf2j7kOiyh\nPQyXz/+rPbAU5a1cslnYn1uW7L+b0B7zYQGUjW0Xg1bQhvCK+l1EbuVGULeI\n6eu8H/paGuHvYiyO+c7MW45z2g5qSGCS+/4Lf9v3nuKXIkvNVgWDpNMh/+sC\nA7Bb\r\n=++Tu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"eslint -c .eslintrc.js --ext .ts --format stylish .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.5","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^0.0.0-2021521222130","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021521222130_1624314100579_0.3287450739706641","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@eth-optimism/contracts","version":"0.4.0","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.0","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"aff389a116fc0344e80da365328534655f70ce06","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.0.tgz","fileCount":855,"integrity":"sha512-sRLfBdURgLYtl3yJgK7o+jvA+ZKBLMsBPsCaDyzZ7GNokFEzllgIQq9YyXW3EX99FX8Q2G8BAThYawz5Lp2SKA==","signatures":[{"sig":"MEUCIBX7y/RhW8Q3eHJUhbdE9MB7iXLDh9Y9/bNKmoqfFP9eAiEAsTixiPJvRGCYgz+gqcwrLm2HQeMh7peuK9MlxI1xZnA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14776785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0kDBCRA9TVsSAnZWagAAf0oP/3ofHYJoi0zL/hKrXlKh\nFxg3h802clqGV+Ly22H34VHJuL0r2myu4vDXzxSwv/2qdvoUgm93LynwNYjA\n3O/DAOWsdRMR0xYGu5WXjpyB31fqWPb3IhxKQlDaa/SB0TY59tO0XkDOuMkQ\nCAtKLZPfpQOJQ8RIcWlXsUIvq4eUs66+90rxPZu8JSGMtBXss3jEOMOisueS\nI0+LCsK2SziQBqDf51KsKJFzUwUd14ZPcYSAppHdZlD7oCZPwKf5WlhFJuiA\naH7Q7uj3uOFx0AO9LTXdR8MpX8cnSG8xlO0H0sjsYkJTN2Sx8s2IU9CmSfX9\nMjuNHCdTV56k5q2sVNElmcN96UHMH6SpmuSmMcpjiWPOKhAgvJaFJoEIDpeA\n2j8eul3cSXjcK+x00uAG4wX0g75tDYG1XRFR7dWiepJW9Pf/mDS6KasMAe3c\nvB4KFUaTQ1OE0VUGCsqp7Ag8+UCGHRdbx2G9YE+ACJQCTYxz1IyPkdsPBFA3\n2RYdONLHl0Tt1ggDwv4T0VFCiWhhobNpWI+nL9URAsb/7WtU+kxzSq1FhRi5\n+Hpbr5/aV7WBg579GE9lfJw+DuHQL7GkodIbH/OyzsTiJFJYIMJ7HRKysH3B\ndzQ14uqP7Oo37iekabwxdnrxSv81oSuGDiOW5oh4NmbP9/6vdSvsLpEQxvGO\n620E\r\n=AYOB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"eslint -c .eslintrc.js --ext .ts --format stylish .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test,deploy}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.6","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.6","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.0_1624391873386_0.8826300424311373","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@eth-optimism/contracts","version":"0.4.1","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.1","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"c01dbc61d16aa28748a38dc6bdf627e2769191d9","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.1.tgz","fileCount":854,"integrity":"sha512-oXHNUFUMVL0hLJfuquj9/8PKdCQPSVCxg3vCGbjgeWA3PAsMUn3JCg15dsw+9qhcADt8CaE0brF/OJbarFWD8g==","signatures":[{"sig":"MEUCIQCAGRzeK7OLLRsgX8EWXqh2w/8psJZ7HrW675zgb6PywQIgENkPl2D+7+CuPquinDxlTqKO+G1xrrtMq73nFs9T7cM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14332455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg05DbCRA9TVsSAnZWagAAM98P/Rs5Pjp6OLP+oYqgg3Ve\nO3xA0LImubvt1bfYNODXXuzCHZtkbvr8eoiPNgE9Her34i5VYYhdroLUtJdL\nHinCkdnN0IllBQkp6J2J4bIjYp72W7RwRPxxlN9oA6ilbs6szfRbyDVWHGsW\nngxquN/nQAjQV3zy7nKJwE1WHxyJkdX9JgT6mwGuK52Fi5jzL9ul/+lxzN/B\nlNe1Go4do6tIaHpBn3eBytBVKPtCI5ViTGQd8GEFIh1SH2yoCVJtZlYOhrN5\n1i+vTZo+FBVlfbl6JJqFLktgE2bc1Z/DMDbDCqZWJ7mOsTDAJ66DEK/BvOj7\nFUmYvO/7cjOcDPfpV4ZB50VYKxogJ+9QwkvqgwHKpatCvy446x/3OSP/nmI4\n4wzjxWyLy3NkVw3Ss9vyIZr2VcO78tit76RDXoWxywwIH62O/iex1jKV1MfH\nJaVzjl5G5bBHqT96N3kmdyfreKiDbMVbA8HsEjuObC1t4/e0zOo6OcEE/k5f\nooNPwu6qeQgkVieS60W6EH7VAjICkFdvamnRbRB8AScsXvjXfQxF7uM8KYxQ\n40Mb1lufKzW2Lr1kq7JcjCB928JsCIGf9k+iXZpJdVNDgcovoA/43Nb7d/Q4\nNfgopUMWEVEquH2iu7tA4j/TQDCroXRS46iKYxMItdlOLodBOMV1eHZGZ9P4\nC+56\r\n=5iCi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","lint":"yarn lint:fix && yarn lint:check","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn run lint:fix:typescript","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"yarn run lint:typescript","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","lint:typescript":"eslint -c .eslintrc.js --ext .ts --format stylish .","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain","lint:fix:typescript":"prettier --config .prettierrc.json --write \"hardhat.config.ts\" \"{src,test,deploy}/**/*.ts\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.4.6","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","@types/chai":"^4.2.17","@types/glob":"^7.1.3","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.6","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.1_1624477914936_0.20011262840826594","host":"s3://npm-registry-packages"}},"0.4.2":{"name":"@eth-optimism/contracts","version":"0.4.2","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.2","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"c3b7b91d43d5e467b4ae46db45f7a1acb0c7ab4c","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.2.tgz","fileCount":863,"integrity":"sha512-goXOgbCf6DrLnOlZ6WgFGIkdDvg6UhH6RcXADM11AVwd5LsLw2VBHZabmK4ggJOmlHxYbXVrd6/EZCu9LjQAWg==","signatures":[{"sig":"MEYCIQCj1qDzohoKO+sL12Z2QOkma2cyptBqZYI9Mh40OT9UiQIhAKdy6E8qIQNO7nrc4rDRvwdQPe3aJEE3JlZkGFvSuIGA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15458122,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5JJrCRA9TVsSAnZWagAAAqcP/An6DjsbNPq3pQuvwvOb\nN1hHdvED71WGAw7fYNQ0Mn1RtjTGk7qauOJRsLuhQyryPcf1DHO1yVEaNuJM\nCN6N6EJLFtfl9V9NCpQ1l9ULyZz+3CejYdhxGpVaaPpqaVXurj00nsZANg+L\nY8dPwTFoz5vpl2tqD5ZXiDlXLLT6D4+Jgl5NjiPD+oRMIKt91PAIew4XA/NJ\ndZkTLW76nl6l2j1CnYUawQQ9tQ2bzxJnvXGwPP35VwwLOOp750OZ9ktzwf3f\n1CFhuVKiJI6sRb5wppewE3FDLYphbds5mSBg2LqShWrH0/BDP2Ejs2t3m6cO\naEVDbL/jk5Ob3RoB0JXG4gQ34Rs47FFRqtbVB05PHsVeYLiwRrxMdb72EFm4\n4y94azHpR5juPZH0zkC8OKgRUwAR7uws/vDDfN0t9UiQTxZXDl2zWORJLXrB\ne0/JHVcVE2jynAgPua2SBzvYEcjjVFb+J4e/oJUPRHEuiP6MDkPKEseqC7LN\nu+P/7rYSzn0Ki5tUOBYhACG9k4rFkDxqK2NQSrmN/5D6n3pcrEErHz7unIYb\noSCDTMcUZOI0jS16rnpAujR0qMlwl5EwvU3tu3qkGMG3QD7tAKyS59VWVC/4\nON1Fhtt6mqyF2Ankl0QWdOxNWjtfaj0j4pNQXZD3tBFq/IxufpaFrQFCptKZ\njRpJ\r\n=X+NI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.0","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.7","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.2_1625592426547_0.7285508020069604","host":"s3://npm-registry-packages"}},"0.4.4":{"name":"@eth-optimism/contracts","version":"0.4.4","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.4","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"81c5276ad7a3e4a4803685bf0edec697290ae2c5","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.4.tgz","fileCount":863,"integrity":"sha512-odbIWJpA7Efym5LWSbgA+ePvlUq1Nu+F0j2CbikeoqGGIIrLoHCUybMMv/eUIF24ZriuootE8A/qU+t/ONxXYA==","signatures":[{"sig":"MEUCIE14WUxbH3gTTeDdbKN8kXSHoSXDhbvvYkq7ftSh3ricAiEAgq1Z/7GmkJ0s6+sq4KEGjCz01P6ZKzGo6J+TJPMMRN0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15458288,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6MdyCRA9TVsSAnZWagAAsQMQAI9sWzI8ykbgu6i6WVAe\ndWCm7xYj3gbzZ7bv8Qjo6zHEDrtfK+iinQ6Xk+eKhC2Gnc8SSS9YNU/iVNvH\nNMahJRpExc/QR79qUbC71OdoUTLdZjErhUyMBe6VVGjj6HY7gNK/gZQxIKRe\nkLA75mKzt62+eM4ua5q26vIyZLwE7utZCjF+48R7C2Cnlrc6dXYSHUyT848c\nDdm7pzXUs7RZMCeyN0WPM8gE4MIoPeNzKCVOBNexm4KXhN3pt9WTdBGsqwLD\nvYpbxgkLfEsH6q7qgqbQdpNMFgeC9WEWOImVTsW/uE3n5He/kd6su58Ea3RM\nBFsKl3J9NTa1H5Pf4avsGxn36LLxHJtvqOqC8P3FKEZP9y1N7KwyC+PksGtm\nD7st0q0jMnoYS0vL4tVVW9vbg049p8E2T/rP4z+kHaNaDJxkxS4eLqe69xcs\nhHYyi9/u/fXibZITr3H+7dpzuU5yWFDMBtpcezog+/L7z8sWsXQp/61dz9/Q\nxlAo2YxGeaNEYuuXpjaVs0PPb4m3WOmlpLIJTAjKBTOhF78DVa+lXGEldgfC\nqmYE/LRrMTtsz2vR4YAF5Oj5o7GXLCbRLXO/7uDJnDBbUgtHlixlYwu1z8Gt\nXhMCJ8uTjRpTR8gEW2lww7AD5y3mh75OQeFzE0QfrMld8jajO1W46kgRyT/2\nXH3i\r\n=LB+r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.0","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.7","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.4_1625868145926_0.6719680110825754","host":"s3://npm-registry-packages"}},"0.4.5":{"name":"@eth-optimism/contracts","version":"0.4.5","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.5","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"182d5a4097b7aa61c9b4e1289ccd173c44fde4e3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.5.tgz","fileCount":863,"integrity":"sha512-GB7V0KuhvBRI533C2r3Zf/DYKewpwRc0YaIDdYzBKIsMEupZWbXvLzKMX9ZFsoqw+knPhYFEXnTZlT/09VGThg==","signatures":[{"sig":"MEYCIQCc935HB1eOW3RmAcV3aMauj0PqSM+IZPf1n2shcEPhBAIhAO+Y+mkQyBLzfnJNoYpj2ca9AUsrFSAxR60bcFQ/T7Sg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15458688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7Ng/CRA9TVsSAnZWagAAOAUP/1k1bRqRnW+vJC+wOOQH\nYmuFOHj/kPNiQZ9UpgcYaOBvzn1OI7kShhrs4q+8AQn8BTB7fZ8hCoLY1mR7\n7qmdsvAP5oikHA7MOH9eC+i8ZeEPe6npT5yfs0Lf7J3WaXvPSf/DjlUEz69c\neOblfHbhRttyqbVA9EPQDcPN0ghhfSclhmzdGonJ4gWucn1htcsahrgLdBDR\nB4zOkcpDcbUPy7xjqmfUI0g9XuOT39veRKR4Uog42OqQKn9S1dE4olPIiHEE\nhKpgiD715nbyi11kdVm5H6bk2RTtRWKgdq55Q/zL3d1r4/WmF2Sj7PbgQgRQ\nsg5gcq7yeSfVj/BCTeHx9xjKDvVtxH+4R+neLwdxX+UwlgS3XLtiCKPC86E2\nNwj3j6br6mayMzI36RFWn6p+uFZq4MlS0BAycHXe0jhsv6TotKFa1/VEeC8w\nNm7S4gVfwiAghO1/GIFmurofZN6csyAcyQI9J8eVGCDyySgnn1yXmL+2Hscz\nLZz8RQhUugK1Jk6qzQFW2MOA4haM8sQq5H6/evr4dZRtvQZ1fXXAnhra5R+O\n3x6EmsPPCFomWXTEqm/ADCFGnaxo6B5y2GsCh+KxD2rpDF1Rj9Dc1DD1Cudi\n+JIEpN1dtEZvuL3GIECQ0xgGGuO1cqFDSmwu0Qwbvf0p181Dmv1GKE7QFZTA\nnaeP\r\n=9Ite\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.12","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.1","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.9","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.5_1626134590734_0.01696118577571215","host":"s3://npm-registry-packages"}},"0.4.6":{"name":"@eth-optimism/contracts","version":"0.4.6","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.6","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"47448c3ebcc8611fd6b5dd31632a28a2cb7f8710","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.6.tgz","fileCount":863,"integrity":"sha512-xsTGJ/eD/FZKbZhfX+WmpVLqTBYe36WK2FKpPovg+u0iMMXVFOZYUDOaGcxkAE5PA/3OjnNAtq44lnOGNUJ4hg==","signatures":[{"sig":"MEYCIQCju9ghEzh0NN8vfb2uCt6BHAkIp5H0zoSzXJXi3pcx+QIhAK5AnkkjwOFqs4W0laEuj7UEEcu9HwRE0OhzhZDgj135","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15458920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAG9JCRA9TVsSAnZWagAAbg4QAJhCDombG3ncNX2OUQCx\nSx5M7ZC74UqaTzkrOqdg/7+Jx2yXbUrNiD5hYHGmfgm2R9HkUxEdNwv3SGNK\nXVsg2GN0atouNhA9QCjdgUPI9SfzPf6057iUfDPPtWOylUnGUpsW7VnGlb0M\nA9/6WkFomEcqK2mszhHX7W+wE6nI0WWR72sQAgOYyu04Imhb9dSfYFE1X/yX\nwhsW9H3kc3XMBvWYCeqjvOqf2gXEpZ2NxAoSnrRy/h0Y9ugsY2+cXaJ3Rigz\now26vCqsPbqYOFW3jtGt3DfUw8QrFF5n1L1S3BOmyiR5cODrednC3pOso8fp\nwvG4cQuROeYFhWccrVEaAEVKZEbKp9VxTXu1TmzNeO9yjl/DpjxM65HZ8H/U\nqBUlg1yjyVQUv/4RlVkUf+U0qmKIx5qr71EdVPaMpxz/YPs7TfGGd6NGVU1W\nbCYwvQO7v4Ys6jSWvr92iYjYxz50B2McLAua8zqNgiu+Kdk6RKxvYWT24pyP\nX+x6QYbGdSMHc6IBM+9HmEANEqV+gvBVO8k4tglkx1zK/2OCB9jeUGBV7ZNS\nROYfeHUXPit4rYdiWvIebma5+05YgjFIFajrEl1G5+u/gVWCo76HqcExvCVL\ng9gVxUlgszMTnj1WNZ6IbSj8WleQOsQJANg56/MvYldunRd1tt04YtEbocC0\n0Doz\r\n=XZwr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.13","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.3","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.6_1627418441016_0.2568321510624363","host":"s3://npm-registry-packages"}},"0.4.7":{"name":"@eth-optimism/contracts","version":"0.4.7","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.7","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"bf81cd77a3b392de70d9f89d8a6f635593fe7df0","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.7.tgz","fileCount":863,"integrity":"sha512-dXSELnIECLMLkmgXYsxGZUuDrt9brugNuRofU5q5iIQMnVsjenMr7R1TI3s5BTD4qEkM4yhGQe0Y5PX2Vps4SQ==","signatures":[{"sig":"MEYCIQDa25+9ilvUGEy4wtWhOBm5VwX1E9gw9hqkoPujfHAxIQIhALwVFfwVQ6i++IwUz0o4T8feA+5WkLPJh5GzrUsoVCWc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15459589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFZrGCRA9TVsSAnZWagAAUwoP/2ZOs+OR3Mqq+PthDb4C\nJb69DfhAiU2FCe/wa+NbMAw1GkAMXT2bj0hLhSp+debeBqIVZU8E0QlRHu88\nLBi4wB1mVorjdfpE0hLY3vSNmHajuMbld/VUTOr65qRHA9Uea0HVkIl4vLhg\nvZI/Ei8+U7JSbfUxDHy98y/icTeeft8SakaMKi2NDHKBzgvL0NL3Wg8EsNs9\nMPQGpfQJPd8BIoQ+IIrmOQPtmSn7AzpWr9e9i3UjuKH/qKX8XhqAgcoTw4h4\n55vQwWrNIbz9RctkrX2IuckdzDaQcgrDBDWQEHVhcOJU2pIcKM7NZJ1pSdSP\nJYZMsECeCBkwwVKoHLo4PXesyRpfzmr6DxIPv1fm+cQFt7oH2OeKyTZC2XP7\nyIHV91Z3ELFPkhcnOsulTuYQ+4pf6TntC2+bJ7yMwqVfRHR5R1dzW/dhhhyW\nD8Qa94iLSwQ6VEnM2GFV2cXQI0aNEAK7eRPioAzrOsHsQTomBPiGH/usG1jF\nceC3vXWXH8JB1U6xMpQCKignryIhK1KB/Ly+13C89qlCggfZQxKHcpQaROPD\nKakbg3l4QllW50+IqP1r+JshBAGyuXpkDW1r0alqmc/0XvQmkZssOEKB+fiL\nQgf55tbCihMRiEhTinzj95hCUvf87EUTjC/q7fPNTArgaX5Vxu1Moz9BVPvW\n3CMw\r\n=y8x9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate-markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate-markdown":"node \"./scripts/generate-markdown.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.14","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.4","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.7_1628805830640_0.06656288305724956","host":"s3://npm-registry-packages"}},"0.0.0-2021716194424":{"name":"@eth-optimism/contracts","version":"0.0.0-2021716194424","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021716194424","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a906804b2dae6e234c65f9436c9228991f1846ef","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021716194424.tgz","fileCount":865,"integrity":"sha512-DsE+A85nWUAMpDqzEkGwBTKz8L3uUoJZ+5EbvPBmc7YWMyfgvDjNlToHlU+xBbvT6pfYm5r7xDx/WKAmRnCGpg==","signatures":[{"sig":"MEUCIQDzwSql1qOQqvrgnx0P4o6lMd6eJ1rDoSw0pdMN4KsZugIgN9qnU21qaldf7JvF9QPZ26TwoP36EY74UE/UDI0Ut9M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15537021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGsAkCRA9TVsSAnZWagAARp0P/A50nQifv4gQVFBCNsna\nh0pzJ0VPznaxU7xJPtX8h/52+z8gEitKxMw1aAQz3o1YtW1LcqBWvKtLOsiB\nobhS0PWaQ1eZX2349H4XM4ZxACrPdhGzFK6HtGLp5qQj7h3Klf0mrPW7hoKM\nuNp0ZT5EJ/aiRea0PrfpaneLHsxE/yuqVUDWkuFU0TgyEC37so9OKDLHpJ/a\nBJmz4eBBNC4/KVo6uE3QY0+FhCZr4MtWDf6uEK3yl/wTmev0GmKGWgRVhSdT\nkLL0z+ZoVcKnNJE78jZmCSppt5hfz2L/qJU+28KwUPw8HSobWFut9ys1Fa/2\nRZYftQhErxynYfdJhx4JVxC/r9MSSQX3jBXG7j6VNYMWjttfP08rTlGe94Ue\nM+Y7zf7zCvZSZuuFbV/SIJRQMkJ/vUzN9BR3ARQrUI/Gx1uTKJDcQ19a73ye\nUNCmedBPUc+oOtpij8N8+X8lHbAHoYRgTesbhZjV7c9e1q5zLiXqZC+0rbnX\niSpN5NWRC+Vdq1TCuVZOttCYKSDJjoMyubsUnZgPdPEiyzdUCSLwNQp94MU9\nbqzENBmvsm0SasIucYxK4ALMNbLZf5Ns3kvJcUXmwODrcSC3Ad9ZMCffKeWM\nS1QJgCXGquMNI34ric1DnM/8IVCzzbz2mLdl33uGWYaxV2fFaikIjOPmb0Kb\nWBMI\r\n=wCaY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"yarn clean && yarn build && node \"./scripts/generate-artifacts.js\" && yarn lint:fix","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.14","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.4","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021716194424_1629143076091_0.2316987411592475","host":"s3://npm-registry-packages"}},"0.0.0-2021716204957":{"name":"@eth-optimism/contracts","version":"0.0.0-2021716204957","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021716204957","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"d8ca63f030086345619bd25e51d73d34805a0af1","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021716204957.tgz","fileCount":865,"integrity":"sha512-5sBbLT5LPDYTrnKE/ti1yHxEbUfqiSvNl7Oi8ToVesK/jGdSIsZRI2GCniIqREnQbclrBwuhThFbB3Jp2R6VqQ==","signatures":[{"sig":"MEUCIASfEseN6Y3Z8/8VE9RyDnuzE6CfDe4D09beM0Nz9IcrAiEAokv/ogdS3zNqV+sEO/3RmmdroEh2Aj0NLBSKbX0sizs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15537021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGs+ACRA9TVsSAnZWagAAnxoP/1WYEKkEqje/C1j0asu4\n+73FGjhBVUy/KT9BgBJP/j31PzldWCMlQmIhQb16PgmJWDVNJAKqI9VziWtp\nUdIeCZwmL9S1NoZjCiCpZJwRVKkL7e49RRz93pEnvAl9l5Lbuxj65WFP3ARY\nqs+jad8/JBScpMXw1CKtbjlw80DRLAjMDUp1hZIL7LPJjCZOhIoeiln6RfZ2\nHx0658nONkGSDDm5mc1tSElrywCR8KSF8ZcVQAi6E3AqmKuoH+UrM3sxqDNJ\nToqWDIW9gZFs9TEQ9+BU6BrqdDE5hwyOs+Dyg3OtWhK9EfZIq+/DbhiSfUKb\ndx/JjuKlNQa3j6LETYoS7fgWoU7YmA6VrgQhIWZ3awANY9ceKAvNbGfRbyhf\ng7KXQxgxFirNJmrkR516Ueo97buwMzV0KlH2B51l+I33H1El3E4BB+izZP7Z\n1GeTq3RQhC9zBDONoFPEiI+f3XxDAc8KM2hmll/1GPs9EL9h7a9o8+Tr2vMx\ndEfF+8FiE6QSpaGtFIrRMrbyAiGalJdY6SyzZ18+t+i6V7uZpVAacO+nvZow\n99Wp4h2QQDRkeogtriRfCQX9HygeECO+FDu4DSXUIzX6hUbE1JGDCRxbf2xP\noWzdf+rZQrEewg67l6ncufgwWAPHeVjEtFy44usw8AK+7/FMt3LSvjVHWfl2\ninLa\r\n=Lv05\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"yarn clean && yarn build && node \"./scripts/generate-artifacts.js\" && yarn lint:fix","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.14","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.4","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021716204957_1629147008696_0.8117171246511887","host":"s3://npm-registry-packages"}},"0.4.8":{"name":"@eth-optimism/contracts","version":"0.4.8","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.8","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"9576572e72e7101320d7d2228dc3233750b4f99d","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.8.tgz","fileCount":865,"integrity":"sha512-Ny4Lh08c59gltJCXaTUHrZjl/Oozylcf0mcYGLxl4E0/pNJZ+pwUCwNJuLRNqOwE+pZppZdSE02+M5u9zdTpBg==","signatures":[{"sig":"MEYCIQDkLmAXzmG2hMJKepi51f14IjTPH8aR8MY1eMLpl26SXAIhAMo7JF/lE4+9psjWGQTKrF/rtvPhvnpbVniUK7cYwyH1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15539034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHtUZCRA9TVsSAnZWagAAHIoP/0iY+gZTIeyIN7bQwM3G\nO3DXpB++T6gNXmA0Ym5hRmX+XQWR11qeztF2p7nXettpDZN9vPXphL6pgCGS\nHx9b1qmI+fg/mcl8/NsOu2NmR4V4xiAhYmu0Gj8WI6TsEwlw9JBtRVUaChOr\nn2OqxPcSSvDZ8ylmyrSctRbOmY+oeqb2xJI1SqwnSHNG09YgNYPTu/y2FdQH\neIesezLnfP77G8JOjk8VU4L3YNVGCnt2//hDRrn8BGyQAHdFHvWdy9G7f0W9\noE6U1QIV697PEGLwyN06mpCH9B24nMXdKETBL7PaFiR6HMLXJAd7TgZ59qJd\nCa8DA7HS3zZKBc99+eDS7OkoBvOZSMaYQzAki5CvoDy/9+gAunoQs58V4W+y\ns18m+turxn3RcTPwcHson227S278YoevJHKEDlCyupkAAwlz/A4VgtBjHHTW\nCSZy3X6UanbUeEYQx3gtHNSkiAK62O5gnMMV2Xo3Rckcb4C6ABUWj4fWFPYt\nI/65C+Lkmv0L+BYCqms+Vf+CtK+1+df0CXmD1yYj/Xf5x7ezx36QDVBRe3X/\nKYd6V/LacAo1ddO5jry6wd3hJC1U8LbgTspQbW9b/GA5uWIp/jED7Y8CqJ4i\n8auzLP2WKKv9hgQ3hgmzL1aY+Nd2op/Th4uCcavTqDg8UkKKL1ZDd0ISm6zX\nAkqu\r\n=I5Yb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"node \"./scripts/generate-artifacts.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.14","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.5","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.8_1629410585397_0.47803747630263804","host":"s3://npm-registry-packages"}},"0.4.9":{"name":"@eth-optimism/contracts","version":"0.4.9","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.9","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a4f5d01bd86e8a6821674899f3a8eedd7cbfc986","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.9.tgz","fileCount":865,"integrity":"sha512-q3WovTbLgYSKeZfQJo57HkGFYWxk3OJs3fCl0PZmbK3TS5qaqUyQWbr4VQTnf6j6jqcJJ+iTbjztKO2RpM+Ehw==","signatures":[{"sig":"MEUCIA0643I+XN8v0bhkGerBiypWzjFjjuG5IAgPK0Dhj3mKAiEArfVHnjB/4RJdjeYu4grUDLx1Vi0O2k8nDEiIRClxAu0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15538182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJBVXCRA9TVsSAnZWagAAsjgP/RJY4rIiIWLP+7h5iA6w\nVRl2RBxD8lwcjP95+WtZS7BRytMexqU4qzfjPiQz1Kz5flJBjXpITMTIUfj3\n4x4ltFR4rNQLIiszxBTWFWJi6IxovNBBgWUcXtPkq2kuQNJSf5O7LdwZ+rpP\n05eDiKv8VDFXjRVRfY3n+GlAZplJ7WRzpq1+z33dcTxTNuMjRMB5JzP5UnW8\nL3hy6H1Lw0YKNHkgnxZpTzheOa9khafNcudEZpxofFvkDdIq1Uu0ZnSVNtAS\nPrpgnqNEGiDRp9R9WVT2GD+3MODZH/sYpfQfPCxh4vQ0dcXc/v+LMqISjwpK\n1Yacot9WKbgaA0UllkUBampwflZebH7ABbttQik/D8f97iyKNMt8XSrMiB1h\ntJf5dwnC/9Kz8IjtaePd8F7HBL+b8rKJjHcIkRNiaswrrvW188CCbh33xMAB\n/DX7qhWFOX1nAOdVzo8naoX1vyQV/3PsEXkoROYqzpvLOLDQ/ZxQTB/9gdX1\nnFLX1+6COgYwjUDYxPCMSXogoDQF9dDN5qTL+DCbZqov5elsIHTIYfHfUi3+\nCv9atbsLkafeCNvlcXS3NLt5ZrrEudT9S4wIvKL43wSg0/v3l+yH4b5ihWxH\nuisqsdbwqZvkTPIes2svMAIdoFN9exOEfEzDSV6f8fdrCS+cVv9LB7gPWftg\nLa2a\r\n=3nnf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"node \"./scripts/generate-artifacts.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.14","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.5","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.1","@ethersproject/contracts":"^5.0.5","@ethersproject/abstract-signer":"^5.1.0","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.0.8"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.0.31","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"2.0.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^1.0.1","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"1.0.0","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.0.31","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.9_1629754711006_0.3190108313336719","host":"s3://npm-registry-packages"}},"0.4.10":{"name":"@eth-optimism/contracts","version":"0.4.10","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.10","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"536055ae8ad5c74ea3490245a217d1029ba51699","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.10.tgz","fileCount":703,"integrity":"sha512-DjLFp7y4HAHfn4OYGKKVx7v+zpncVeg6Iro9tPevIRK9YT+8iplfrQ1JjUqxX/XG22EglqvlQiX04l5qg4ycbg==","signatures":[{"sig":"MEQCIAm8Hga3WJ6bW33uI98McNcIzH0T/0/bQKE+ZLEgrn9zAiAIMnS5NROWgvI8N91dS1M+AZGVI3jggREFUX9fJA+Ekg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13619722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJCzkCRA9TVsSAnZWagAA/7QP/3RwA7xdUunWjIsv2nF4\ntjUIWnh1CIytMKnukDTsh3gZULzGMh37JJV3gS8s4vJ58m8MEuoeKIx9X/wS\nDzo8Hn79E3pJfraFOTgt/4wPNV5mW0NjAuRrB0Uzuo+Cp2tei8OSo5xtRgDH\nX2S/35POD9nm8r6uhBQTepl7gaTIuvXPdMPKKTS9FZpIpU3tyt8uPBzJeune\n5AoSlEi+2lprXtpeNjwVhNoon3WVJfVIJKWnD6lsKikpaweTi2pg/bgTNoso\neTFQKHNRqSQSGahroqt1ABcWmXOTa3Xlgx2ufmPW9W4lqEQ0PVPZJcSIt70z\nuO7JE9Awezxvs9TEYoIOhFi4WuMvBzofYiNlmxwue++0M1uNrXGiTtud8Gs1\nyxOv12dNwfSUEY3VDHP7fKLzgyYDuupu6CGt3FSUXHpYhUmSB/VsjX7+9AyL\nn/mhlmUN/5gZNkg3LparIvg6C8kxBw+/QNo3Leqy0wwRaTO2XBWGxAwnnbnb\n7FPSRnqtfaMIF3eCsgYHg0cbeePmXvt0630w7cjpMRHYAq6h+0o1K/d8Roha\nnj+0wsqvtVRhtpomaQapeQ+fu/rtGp1jeGf719eInY+HfzcDdOEpHr0UNl3V\nhm3vxUftAKEDctZVMcaoW1XmSGOHw/kRmrNhkTYIMEDJNOlfuHtbEG0TVFfM\nOH9l\r\n=4t/m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"node \"./scripts/generate-artifacts.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.14","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.5","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.2","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.3","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.10_1629760740500_0.8344872745177174","host":"s3://npm-registry-packages"}},"0.0.0-2021727214650":{"name":"@eth-optimism/contracts","version":"0.0.0-2021727214650","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021727214650","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"e93a981ccd43c02d160e8df94205aa9097384bbc","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021727214650.tgz","fileCount":309,"integrity":"sha512-PC9XV1Duxw94aW0r9cFAXKYET++usichTMwVDtohznypj5FIZEyAiI/dTGH5xzPf+xhLVLj2SW1OtIgPBim5lw==","signatures":[{"sig":"MEYCIQDOjd0KQpiPwjf7qbRh7GUs9tqocc3o269TlL9fuC7QDQIhALyGcCozZ1AyhF+h7ksb2bT9yQamRrYS+A6q83+P9tmT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10530801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKV1SCRA9TVsSAnZWagAAO9kP/R3jdfHavqHG5DCMvrt5\nm885OkRJkPPvbiuAR7G6lgssLkUHupIehDKEWCXY91j3ZULk1r1Aa/DcOc8z\nmWGouV3kboFJWouMWmUMnrff+FtIikUCPeySu0YCy2VjqDcDTj6yl4fpbPKi\n4BEV8ochwmGHgEeISD+uk6Vocgrf+7fk7kkGMhkiKc4Bc33liROWQLVjq74Z\nTVNHBJGHwTg4yWwIXDBpr81dKGCcKcy9HBlRGKq5vL5Clwzd48E2ayIyjc1O\nOyvCQwjAhodKbG4GaYI3B6qZrANgWZtexUb7x0iY8XSfNZNWBzkRtNHkd+o4\nj4deXSDEB1Bjpkm6OHx/K0wZtGEVnMa+J1Bee5Watbf/jcVj7gsAKUyKPwMD\n9s7m7a/5iQClS2uGCb7XFRqVK9LwriCKawMeXD9eQ6fmbiBuSNuOqEzE9xB4\nIlw/GlxGokLyE11fpONwMtLeY6Zfsw6xV5QufO4pka+nf9WkjkqdVgq8S7hT\nGRi+UfZBtDhtnpN7p00itP5+4eT1s/8TCy9aaMrBGfn529R2FHaqF9fhJuzK\n9KpoyC+sHk9IoiNOOVBIZXohB1DCfHPc3JVNlx0j1KHfIOGqSEnKT1MpBMXH\nBNURSLSfs23BoTLgx7EN9cV/eahtIDMe8ruhtpmEM8TvbdXm6NmPbAAWD8hh\n8MZ5\r\n=BB51\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"node \"./scripts/generate-artifacts.js\""},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.14","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.5","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.2","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021727214650_1630100818569_0.18167088634074058","host":"s3://npm-registry-packages"}},"0.4.11":{"name":"@eth-optimism/contracts","version":"0.4.11","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.11","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"862be720e7ca83ac8fd9a492ff120d6f86a14a9d","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.11.tgz","fileCount":703,"integrity":"sha512-qozlTA1sDiEaq8zYHrfintap1DZPLRD5bIaIi+5+FlmQJq9pHHTEdJdIIxllPsXZppPQsG6BZmW3jPC/lhZHAw==","signatures":[{"sig":"MEUCIGxjhzA30GK2FDxOwvqOwYBll2fb5TunRD/CfpxOEAqPAiEAtOY5R2v+neE6tX0PmAnF8Y8966zwsdcBMi+vlmeDE6Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13619998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOTJeCRA9TVsSAnZWagAAdGAP/2uLmRI3sHBk5GlM7kfi\nqMTKw1MzOr+rHLtGojBpXgNVtGsFOSbthnMPWuJS6KwQFnTvqkgIW19q0XNU\nowi9t500/adP2F+g+S+IqD8UzUk2X2TBOoHcyrwGdqvp4JughYedn68qC/UQ\n0WVvvqnfkYPI+u7jpNyTt4/9C58qVN5IrFQW5ISfqEJyDbTDXJorJOMAmA+f\nQpOxFYgM6m2330gv7BN+7wRJr2jefq47AAZDvwqTT1c7f8snbk2K0H5N2d16\nTovcJ6oiq29JzlXx/ZOOEL2GcfoMHA0z5TCucFwX2fBKnimNXioluT5ABcXc\n67P6/Oa9TG7QYH7Q03lBN/itaDsSnlJM3R1/Zt+vUx3P+qESOQbDQNgmi3W6\nQaeEf4pqG4naU3ZgVPkPtIcVFQyv2FDPoHkAjT3PABOn4oSt3bfLgsq33znK\nMUADY6pX4zm+pZV95ijdPRo/uaWuJhJHnbWgTLvHnhhoW1wJfR1ntOlDYsyX\n4jWmvME8aKWgoBsRTGqPNAssEUcY9+GW47WBb1Me61xL/q9LH2raoF+kt4H6\nlqCCgNqkbc2/cyiqRfCxLQ29EGv0/eenEdkIKomZLNjVWYKD1RAXxpokX4ps\nSLphJ7gwqNnFjFtkvtvqC9m+u4btMVLWWNAsQKP76WJDaXdMQ7/nZtG/nu4U\nfoCV\r\n=gv/j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"node \"./scripts/generate-artifacts.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.5","@ethersproject/contracts":"^5.4.1","@nomiclabs/hardhat-etherscan":"^2.1.5","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.3","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.11_1631138397879_0.5952927310418468","host":"s3://npm-registry-packages"}},"0.4.12":{"name":"@eth-optimism/contracts","version":"0.4.12","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.12","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"be093a3bab55ead6502666d0495d28f65a85f6cd","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.12.tgz","fileCount":703,"integrity":"sha512-lA3GWtqvKq4viUYvJqGqF5ZEPnWKVmcSXaLvn/kb+/M2gqNFQEF0qZzSPUJjmTis5sJSJ3Q4ZFI6WMhOA9z9fw==","signatures":[{"sig":"MEYCIQDTGKpQ5pD14ZGZcth3t6KKZxpKF0QHAovvW7h42SxLZgIhALgj7nqyWaxdvlsAKQm//comHI6fwIjdUrfujaWLNxKP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13626807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQkb0CRA9TVsSAnZWagAAWKQP+wcnJZeb4cbnhKNE/aqj\nQMXjvwIrZxkMl1jWKeqK2IuzH3S/tADTUj+uZHiNrNAUoqFMYciFnBa45ix+\nsaMzUpYoyzkBU3MW96aT+Nd+7PKOF2fLPunAA9hdnxDj14QZcneELv0B9eFm\nN8BM3g9UEhYGonrDI6bM0/uAuVyO9Lx47I0BsZpTpjYkNQhgcPm+jTlldg7K\n/dyr5cKfUTmyOD48agwn2hiqkmiNUpI04eeyWRYNXX2Hs195JMUsH7wmdBjB\naQw1Jfj690Bey/0T8XQr1IJL+liQqiOfPS8+KZjMuR4kizV0+mGeR4aGUewI\nbb0YQr5QcQUsaNibRN8Fx9vubPqG+LR9AuMQSxT6Qwr4My0IFR2YdQEMXUPT\ngFnqDYll5KmVVtEBZ0oO0YXFp1HCEh7Wk9eptkTi2gUUxzXxByXT+CmbUf7B\nmQYCyFJSzaJbCRaq0ViKI/40X52ggikeWZuCt2+vcioKH/FRy+71DanD1RuH\nWJtoRRf6WO3mD/A/uiyiRw0QtCNRSsJDSRrGn/52l+4sjblcqzo6smYoaDy6\nfz4NZmexzmiBQea5nUXUE87YRgV4hy+nXHZn23LNsXvSHNXlJQJaVJH9knSP\nF3aIqWDmwbgvZvq3K+oCEh+DZ9SZbJyGxuB4OrlQkNxRocf1ahTU7OwYU28p\nkBbx\r\n=b++M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"node \"./scripts/generate-artifacts.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.5.5","@ethersproject/contracts":"^5.4.1","@nomiclabs/hardhat-etherscan":"^2.1.5","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.3","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.12_1631733492309_0.625813783955534","host":"s3://npm-registry-packages"}},"0.4.13":{"name":"@eth-optimism/contracts","version":"0.4.13","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.13","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"37bf157d481b0d904fe02591f3c0b99b32b254aa","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.13.tgz","fileCount":703,"integrity":"sha512-p1EVhl9xvkcLkkXsfHyu7qixumhugmklzmxiZtBfBdZ4uVI9TGp4hH1YxnRY4DaG/65lqTcyEPzfcyh0e3JErA==","signatures":[{"sig":"MEQCIBpHZkMb18kHaa9z69VkHYH4Nf1Ac7poKGNlVSNh2fSxAiBA0csedHMT7JIngtyr0dYXQoj0SaN5VuQ+wKlafJRHkQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13622137},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"node \"./scripts/generate-artifacts.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.6.0","@ethersproject/contracts":"^5.4.1","@nomiclabs/hardhat-etherscan":"^2.1.5","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","buffer-xor":"^2.0.2","typescript":"^4.2.3","@types/chai":"^4.2.17","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.3","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.13_1633120757872_0.8100773001359676","host":"s3://npm-registry-packages"}},"0.0.0-202191205311":{"name":"@eth-optimism/contracts","version":"0.0.0-202191205311","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202191205311","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"7b2c0b461b1aa054fd314547ce6c731caa27a60e","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202191205311.tgz","fileCount":301,"integrity":"sha512-NsuBA0S40mK2ld61oX/WO73Gfi+oWGR9KcWeVS/7XN8Bu9whxWXP6EhCoP7jPLLHi6PNWpcCjlSnUJtLzuYg4w==","signatures":[{"sig":"MEYCIQD/KP5Iyc+GZ8woQ9/c9/kCR9YagBwoqYlBZGd4OvwlPgIhAJmwLGwJcp8Q2u9JCB6HqXSoEcRe0WJ01nE9AiCxzwot","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10587979},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202191205311","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202191205311_1633121601599_0.9038406376408317","host":"s3://npm-registry-packages"}},"0.0.0-202193179":{"name":"@eth-optimism/contracts","version":"0.0.0-202193179","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202193179","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"ddd3e9404792ecd0f186a9b50e6fb51f8db66cf0","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202193179.tgz","fileCount":301,"integrity":"sha512-6EinPKoE/ps3+8mQyO+vOzBCcIHzCiXzFE55gBoNPC+2OJq3XO4xLVV6FpZlY1pTIDpefjjmWX4m3/PJYJEAjA==","signatures":[{"sig":"MEUCIB0infq/cY37p9bLFE+G4pstt4KgmEgl3XMMHKkk+8GsAiEAqMwLQ28+ZwYcNMvQnWqfRIzoIgvdFOm+2Mu9ip+zWN8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10587967},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202193179","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202193179_1633223239502_0.7546567328581837","host":"s3://npm-registry-packages"}},"0.0.0-202194195336":{"name":"@eth-optimism/contracts","version":"0.0.0-202194195336","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202194195336","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"24ab1fceeca89d83f988d502ed685ce54103a94c","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202194195336.tgz","fileCount":301,"integrity":"sha512-A6bO9cQg/SAniWW8RW7OdNAc393GPajFSN1AXmg64rNhN8XnRu3di863wyfFRrsq8mBTEC6D6KkcqqiXPkP/Ow==","signatures":[{"sig":"MEYCIQCKoNLLIDQrt4bOJ90mC04lGqJbLWPHuJla0G1BgyRAmgIhALLQsiVCNVpeK1HXWOxvgT3MksMJNVKlqOAVA3FLzADV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10588244},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202194195336","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202194195336_1633377227069_0.3664999656423511","host":"s3://npm-registry-packages"}},"0.0.0-202194201812":{"name":"@eth-optimism/contracts","version":"0.0.0-202194201812","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202194201812","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"5cf5e7bc30a63ebe733233721033f952015eb3ad","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202194201812.tgz","fileCount":301,"integrity":"sha512-83q6woPCgvC2kkXmCf3Q7zedtszDlQzMnSbOeugsDzLd2PLe8A/DqVPcJ00+lj4uamNMXHAaccZAjYTfOeZflQ==","signatures":[{"sig":"MEQCIDJcmYufog+tfXwX/S7zk98vv1Hd0KJpyJkdc8nsDBsuAiBFRNxS5CLYvwSq9MdUtqs0BarzyZrcXZ+K8NS9LaQUBw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10588244},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202194201812","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202194201812_1633378702888_0.296508782052479","host":"s3://npm-registry-packages"}},"0.0.0-20219516434":{"name":"@eth-optimism/contracts","version":"0.0.0-20219516434","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20219516434","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"880c69a4f2b42c85a291aea95b6ed3dc380392d4","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20219516434.tgz","fileCount":301,"integrity":"sha512-guLZ7BsEk+KdVwcWJRVTl0m8TStfTBnYFNuVpjsJaOtApHluV1PCjCDkh+KVvvh+g8qcLuwI6Q0VfxLSAUZPCg==","signatures":[{"sig":"MEQCIENUikG/qVPcil9eIy3xf5P/1wBJR3WlgK//WXUf2q2JAiAsx7l6AgfQbkNiORQBjrroHXHmUqNHqV3QdKVBA0s5Fg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10588770},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-20219516434","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20219516434_1633452195204_0.15053246114959196","host":"s3://npm-registry-packages"}},"0.0.0-2021951810":{"name":"@eth-optimism/contracts","version":"0.0.0-2021951810","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021951810","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"9fb43f31a4cb3d7625a4c04db934cf86eda9b745","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021951810.tgz","fileCount":301,"integrity":"sha512-mUeGTuxTUf8TcCrOJMBwUrn9Fwhh+30nUMkaHvXY2Fsv392IqkDW5e4yOOV0TmHKYF0NtSJT92ODxLBCN6D17g==","signatures":[{"sig":"MEQCIBYM9vAXNgZbLaxK+CSZ+4EVeJNBl1Ifrc18JTFpdJ3dAiARoS6v0yqnY7IsTJFURMF++cP2knJ3X+S/Om3nq+8S6Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10588766},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021951810","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021951810_1633456872229_0.334178138809885","host":"s3://npm-registry-packages"}},"0.0.0-20219518165":{"name":"@eth-optimism/contracts","version":"0.0.0-20219518165","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20219518165","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"e0389e1d43a0951c0cc3515eab140a03fd8eae78","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20219518165.tgz","fileCount":301,"integrity":"sha512-Fu9BmCrKy/socLGrAGwdgEZ7F+dNFVlAXvRUCTWCXH3+5X31W1AnliKljcwhjb0gdEFP3bk5as6g9zq+86lcxg==","signatures":[{"sig":"MEYCIQCOoORgMuiiWbv7+VfPGdmgSuQh9RvvcPb0CNdamRIrawIhAI1TFc5WPU+XrbrSzvqaPI9jyiy2BFGcoIl1S/b26CUu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10589500},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-20219518165","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20219518165_1633457775072_0.9049293171290029","host":"s3://npm-registry-packages"}},"0.0.0-202197182350":{"name":"@eth-optimism/contracts","version":"0.0.0-202197182350","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202197182350","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"7c0516cbc52bf5474a7ff000a4c92f027e0d2f9d","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202197182350.tgz","fileCount":290,"integrity":"sha512-shLInoLJNsNB1e+nFdZr6YoyeWwS25VIAw6jhz0nO0oJClg+wtF5CqB98StnMVe3OqPoHgBBFQU5FGYocsRTHg==","signatures":[{"sig":"MEYCIQCmXm7BZuKRr08UB0XCY+U8RFfs33ztZCET3J6DeMdz7QIhAJnlQ6jlx40hMOK6HTqlpe/OX044m5ymWAgcvQg+f8rU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8768960},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202197182350","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202197182350_1633631041237_0.14016450662354107","host":"s3://npm-registry-packages"}},"0.0.0-202197212329":{"name":"@eth-optimism/contracts","version":"0.0.0-202197212329","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202197212329","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"ea25b67669f32874f512a298cf611aab5875a899","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202197212329.tgz","fileCount":290,"integrity":"sha512-u+Xtsd5FhqqrrrjcAz/980sqd2fxuMg2xvCQ+/STKbqOX/ZpAxwd24KswXnReckcGoILZ+fKM069fjpgln++Bw==","signatures":[{"sig":"MEUCIQDTBVVELGN6fdX1N4xG9R8Upjsw1wmPpDnZvdok+jPQAAIgNpDod6yHSQBQYZjuJQCXebp6zMk18k5a+nhiyVT6v0s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8768960},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202197212329","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202197212329_1633641819277_0.9173088763061785","host":"s3://npm-registry-packages"}},"0.0.0-20219803928":{"name":"@eth-optimism/contracts","version":"0.0.0-20219803928","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20219803928","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a0bfd2d30d41a74faab7738f9d2d40359cb0070d","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20219803928.tgz","fileCount":290,"integrity":"sha512-fpWaQBm7xZbCQ5SSioOjAL/D9dHd0z8Qeq0fBPqWF8RCv0uW0BNPgVvI++STbaDxh0Iu6IebXATqmUtWYkxOBg==","signatures":[{"sig":"MEYCIQCMZ6Q5Tv9mD/Y9wvmlI1ickp1aLfltpLlqChg4CT2gLAIhALoCUqchOgjvcPblNaqwBlrGsHBmANiopeBpi3//eoIE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8768956},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-20219803928","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20219803928_1633653576869_0.9045814523557087","host":"s3://npm-registry-packages"}},"0.0.0-2021911164126":{"name":"@eth-optimism/contracts","version":"0.0.0-2021911164126","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021911164126","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"49d09e529e8bbe73452f5eb03efcb0da2fb8c5f8","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021911164126.tgz","fileCount":290,"integrity":"sha512-Fc2Hm1M3YoG1DzCr94KEphDZ92AKaEAWRkPCKOaLZo148dxerXdBL1mX+IiuXEle0UVcdZxTwZpQIuHFSrvVlg==","signatures":[{"sig":"MEYCIQDihRIiQfP6mrNlbrRa9ryDE6XsAFGW/O/4UgfeqCVNdgIhANhpxBWvIVuBYJTkH4Noj8LncBrgnP/gNVZqDUApYX0s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8768964},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"eslint .","pre-commit":"lint-staged","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/**/*.sol","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021911164126","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","prettier":"^2.2.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021911164126_1633970496443_0.06759593200394698","host":"s3://npm-registry-packages"}},"0.0.0-2021914184730":{"name":"@eth-optimism/contracts","version":"0.0.0-2021914184730","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021914184730","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"e3d7e701557b50f25a53f78bfc581bbe83902912","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021914184730.tgz","fileCount":301,"integrity":"sha512-Th8LmuvFVcqLPi+9rgLxz3bEfSQwTWS2HjYf1RtlgWnsV4YQmIUsJhM431NRuLzqReCli77devki0zwLoaxJ1w==","signatures":[{"sig":"MEUCIEjqquRhKg15OkZxjV8j62zAcrsaov/rck7poLcT3xBDAiEA49BJ5mRTqet9OO/oh/aZqCs+GUGQj2Exz9hN7Qzrvu0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9792875},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021914184730","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.1","glob":"^7.1.6","mocha":"^8.3.0","yargs":"^16.2.0","dotenv":"^8.2.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.20","mkdirp":"^1.0.4","hardhat":"^2.2.1","solhint":"^3.3.6","ts-node":"^9.1.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.2.3","@types/chai":"^4.2.17","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.12","ts-generator":"0.0.8","@types/lodash":"^4.14.161","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"0.1.10-beta","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.1","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021914184730_1634237259810_0.2942852557479054","host":"s3://npm-registry-packages"}},"0.0.0-2021915175358":{"name":"@eth-optimism/contracts","version":"0.0.0-2021915175358","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021915175358","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"ec0142b4e53d8a74654941170a8e18b33c0a174d","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021915175358.tgz","fileCount":313,"integrity":"sha512-v6WwM49mPzN/RCdYclqnuXWXH1CZtB3W1Gyvr8lKij9pUxa6YhWPD7LjmQOFzgsAa981YxQvq03iIP9XYiAvVw==","signatures":[{"sig":"MEUCIQCV+Bt46oYCj30IfwkaE0rUv3liU7n5gb6EV/l+cUQWaAIgZslb4M1LPAV3720sp8WQzd+wGBT7uEliM8lrJpiDBsw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9801071},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021915175358","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021915175358_1634320449174_0.16152839800215024","host":"s3://npm-registry-packages"}},"0.0.0-202191518746":{"name":"@eth-optimism/contracts","version":"0.0.0-202191518746","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202191518746","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"0522b7c23ad7aec2b3c58c6ba8f244d13e90ebd7","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202191518746.tgz","fileCount":313,"integrity":"sha512-cQRm7Wbjd984RkystmdTwHILJ7xDEO/vV+U2UFDCBFbMcF4qgqswN0TqEqJIZtFlcMjQJoHAy2/cZIGria+s8w==","signatures":[{"sig":"MEUCIQC7IMosq7c6/s7KDkwEgEtEygrORdkJnB+l4MkJ8+jJOwIgAKszums3ic9bLmfWqJJSYB7RgdTb7N4A+cexB/EDdvw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9801101},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202191518746","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202191518746_1634321277532_0.02159880290210414","host":"s3://npm-registry-packages"}},"0.0.0-2021915193618":{"name":"@eth-optimism/contracts","version":"0.0.0-2021915193618","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021915193618","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"d722929ca1356c259e3c983db45cb93eb7d3c1f4","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021915193618.tgz","fileCount":293,"integrity":"sha512-/dFZLvXVl/ztX9lJBRKUogbvqkYk0AiiAaM+In+RV7FVCPfjz0Y+1MH5knzKKTlFaB57wKO/jDnPzMjiNsqkiQ==","signatures":[{"sig":"MEYCIQDyDJ5gi9lQHFvdlzysGpnmMsbgELfSikGXp9MumYmPgAIhANkzhi93A/VqZ/wD/jLqv0HxYwtP+E3iP32ddXts/0px","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6422549},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021915193618","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021915193618_1634326591415_0.6545856575339419","host":"s3://npm-registry-packages"}},"0.0.0-2021919175625":{"name":"@eth-optimism/contracts","version":"0.0.0-2021919175625","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021919175625","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"551ed5d98ac4405596e97f723c28ee6376e65546","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021919175625.tgz","fileCount":293,"integrity":"sha512-vf/rH0lUk5TRvY7/Rq8jAYXfJvAixcgnYyHVPPBdPUdWlOPfnUx1bG5N1xfaBI/zKJ1zen5gsJW4zaM+rUVKsQ==","signatures":[{"sig":"MEUCIQD15tBHf5x6IJV8qn4Me+xKAfUVCW+1ce+xT482MQ5DiQIgZBCSGGcHmBzLmwq0fXgwE8bOifu0tx/CyzUxwKQBQPI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6422549},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.6","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021919175625","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021919175625_1634666196124_0.47272113380522063","host":"s3://npm-registry-packages"}},"0.0.0-202192122614":{"name":"@eth-optimism/contracts","version":"0.0.0-202192122614","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202192122614","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"cb1de99eb0fb8a8ea2d41f22ed502c711a5de001","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202192122614.tgz","fileCount":293,"integrity":"sha512-mfRQ9sG7jtf2mK4eXQPLHetFIFBBqU+UpgxHgOejOISBo3iEz+clAPa6PuomW0DOyfI8Xhcn+amYIBTHAacNSQ==","signatures":[{"sig":"MEUCIFM5dM7DwppMZDcRLhN6YL1j48mEOUqYEwq7PpkvpwsYAiEAs1FcbXQVHNpB5mZ34kKHrUKedk+vsSk+nnhiEgGZc28=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6423877},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202192122614","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202192122614_1634853984127_0.6024652221945141","host":"s3://npm-registry-packages"}},"0.0.0-2021925185318":{"name":"@eth-optimism/contracts","version":"0.0.0-2021925185318","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021925185318","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"d8ae691b2fb860dec6e1035c0f0221f16411cbb4","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021925185318.tgz","fileCount":293,"integrity":"sha512-ShPcVttIq7+vzeVabs7WezLOomUNomieRBDUgEBH/KSIe0VZQ+8mKylx3lh1IIlGpfhclMsbG2eoDtcdJicGMA==","signatures":[{"sig":"MEUCIHtmnut/oWTLbhDLY+ej7ZCRuuXJhs+loZ/8g8AehCH7AiEAoG03UVU4vWIMtjwSDUcxhLsaUq++zYmYmR9rxj9vkKU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6423922},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021925185318","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021925185318_1635188008976_0.3223633200513423","host":"s3://npm-registry-packages"}},"0.0.0-2021926233112":{"name":"@eth-optimism/contracts","version":"0.0.0-2021926233112","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021926233112","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"74d8b46a1407ac3b41172b7649a0965f5213c08d","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021926233112.tgz","fileCount":293,"integrity":"sha512-/vASoKFTgfDjDNGmF+AvX7WgWPJ+Lc2s230MSenh5OpFPSd0C4QwEqlDdwdIo8epZHGDdFyvQyO1Anxfz7ZqCA==","signatures":[{"sig":"MEUCIQC0hTGs8hJ7cA9L3duT9dYCynSvtaOrHE/Ozfe2Tqme9QIga7FgUthan4jHGe2OvrhUylPDifcNB6J7nM63SRCMPdU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6422636},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021926233112","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021926233112_1635291084881_0.4678359288981706","host":"s3://npm-registry-packages"}},"0.0.0-2021926235122":{"name":"@eth-optimism/contracts","version":"0.0.0-2021926235122","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021926235122","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"fcb0f6e5644f87297ed49d3982c670c13a756054","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021926235122.tgz","fileCount":293,"integrity":"sha512-Eyg7YIBCZgoJDhwmy8TpxIl4vg2PJh6YunW8JlCrPexfeSzQKb2afL4wZNx1doLt+1oMjqVw0KmmQaUO7w15og==","signatures":[{"sig":"MEUCIDUW01RfhHIv5S8DcfauMrJuQFXcVMpYQQttSDUraJhlAiEA/iPvchaV467ustjEc6jc9JYJvXEtwi6NixNvsjIqXuY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6422636},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021926235122","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021926235122_1635292294665_0.10426256893706332","host":"s3://npm-registry-packages"}},"0.0.0-202192701014":{"name":"@eth-optimism/contracts","version":"0.0.0-202192701014","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202192701014","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a7e7d63f55f0690c09c28bc47f4d7b30dc46eaa3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202192701014.tgz","fileCount":293,"integrity":"sha512-4HWgzJuNM2uRoR1/GpzitLj9LqoV3xh2HApU4TsPInU9su2P5YDxpYbaXUeHOd/CE6sQrGhuWbCxCCQNvDtnDw==","signatures":[{"sig":"MEYCIQCs+M6NhDSm+dwJkbWmbAbJL+0FfILIl+mM9j16SwhPBgIhAO2P0TC8k3XH6JqTzWy2bUUv8vZXbJuz6Aw1WUplsQqK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6422632},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202192701014","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202192701014_1635293426332_0.21681918431503955","host":"s3://npm-registry-packages"}},"0.0.0-2021927192249":{"name":"@eth-optimism/contracts","version":"0.0.0-2021927192249","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021927192249","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"5897c1108288367599958e7c7adfeec883894409","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021927192249.tgz","fileCount":301,"integrity":"sha512-/dmfsTqpoI2/eSjiTPxXgnfsU0SFg5LVucHMG2lVyxJkB+amt97bIgNf7AS7S9Bm/9sPdi4q50TBMOkI7q3X7A==","signatures":[{"sig":"MEUCID+JItKDI8tSVK2tlLdzqIT3MxkT28qPOItnRrFrFykFAiEAudx0XlO4BIWH1FEcimlbXMzMBK8qHhtbO4yqUQuN+V0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6467437},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"^0.0.0-2021927192249","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021927192249_1635362592229_0.5230285658684195","host":"s3://npm-registry-packages"}},"0.0.0-202192720115":{"name":"@eth-optimism/contracts","version":"0.0.0-202192720115","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202192720115","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"8f7987bdd606db9a3c215d224c6b839f374fceee","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202192720115.tgz","fileCount":301,"integrity":"sha512-YNo1wTM/FTpki6Q3sbZ29E+vQiHI2FFLd/2yHusGP+eW8SaBM1047ODBLY+WQjH54U0GKJQLMA/kCUcAVy/4yg==","signatures":[{"sig":"MEYCIQCxZ8mhYc6mntKWFP4mq4WXQ4Z4fNrfH7qPmLNE04tCuQIhAOBwP1dITzayRiefEh8rzpYVeHC5/UzwFzpWqN26uWnf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6467433},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202192720115","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202192720115_1635365478944_0.6731334865022749","host":"s3://npm-registry-packages"}},"0.4.14":{"name":"@eth-optimism/contracts","version":"0.4.14","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.4.14","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"e9b29f84e85d3db37e956c0df07c8af3d99e766d","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.4.14.tgz","fileCount":703,"integrity":"sha512-E2IfkevM6DbTPhVpEvEo3Ws5tDWz5qmtGMzWZGSgZvcyC/GY0t0XKkZUUOrYDzYjOK9lAO21fa7WCPYP6Ay2IA==","signatures":[{"sig":"MEUCIQCYb0X0fVbAxdtC6kA/4V7FHNCLDkcocNqyDpzLEQRQ9gIgLsKWDRP5BEOGRQNiyGYCacxr9HwkYhnrZb8cNIpyjG0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13622301},"main":"dist/index","types":"dist/index","scripts":{"all":"yarn clean && yarn build && yarn test && yarn lint:fix && yarn lint","test":"yarn run test:contracts","build":"./scripts/build.sh","clean":"rm -rf ./dist ./artifacts ./artifacts-ovm ./cache ./cache-ovm ./tsconfig.build.tsbuildinfo","serve":"./bin/serve_dump.sh","deploy":"ts-node \"./bin/deploy.ts\" && yarn generate:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:check --fix","postpack":"yarn postpublish","test:gas":"hardhat test \"test/contracts/OVM/execution/OVM_StateManager.gas-spec.ts\" --no-compile --show-stack-traces","build:dump":"ts-node \"bin/take-dump.ts\"","lint:check":"eslint .","pre-commit":"lint-staged","build:kovan":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=69 yarn run build:dump && yarn run build:typechain","postpublish":"rimraf OVM iOVM libraries mockOVM","test:slither":"slither .","build:mainnet":"yarn run build:contracts && yarn run build:typescript && yarn run build:copy && CHAIN_ID=10 yarn run build:dump && yarn run build:typechain","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage","lint:contracts":"yarn solhint -f table contracts/optimistic-ethereum/**/*.sol","prepublishOnly":"yarn copyfiles -u 2 \"contracts/optimistic-ethereum/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","build:typechain":"hardhat typechain","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","generate:markdown":"node \"./scripts/generate-markdown.js\"","generate:artifacts":"node \"./scripts/generate-artifacts.js\"","build:contracts:ovm":"hardhat compile --network optimism","build:typechain:ovm":"hardhat --network optimism typechain"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"glob":"^7.1.6","@eth-optimism/core-utils":"^0.6.1","@ethersproject/contracts":"^5.4.1","@nomiclabs/hardhat-etherscan":"^2.1.5","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","buffer-xor":"^2.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","@types/glob":"^7.1.3","lint-staged":"11.0.0","@types/mocha":"^8.2.2","@types/yargs":"^16.0.1","babel-eslint":"^10.1.0","ganache-core":"^2.13.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.7.4","ethereum-waffle":"^3.3.0","@types/copyfiles":"^2.4.0","@types/buffer-xor":"^2.0.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.16","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"^3.3.0","@eth-optimism/hardhat-ovm":"^0.2.4","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"^3.3.0"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.4.14_1635532935519_0.695829294719587","host":"s3://npm-registry-packages"}},"0.0.0-202110320390":{"name":"@eth-optimism/contracts","version":"0.0.0-202110320390","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202110320390","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a33130ad11771a4bf3e0bf1187bc39725aba39d9","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202110320390.tgz","fileCount":322,"integrity":"sha512-WqHjE5CMWJoyQmJ+20qZUgSv8dFXGsDgjSg4KU4wib0+9SX9l3fb1lJYgjJDh3SzB6akERUs1NFrWQuPdm/GwQ==","signatures":[{"sig":"MEUCIF2JFhamCvQCpRx5bYOUS8Gq5tNAJxx7zzX0lrdfTuE8AiEAvybqBYPbwXbNK6GNhQ0z9gkLJhZp8aELbdQStRPPuLk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9078390},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"^0.0.0-202110320390","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"^1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202110320390_1635971953781_0.5914787858654253","host":"s3://npm-registry-packages"}},"0.0.0-2021104172230":{"name":"@eth-optimism/contracts","version":"0.0.0-2021104172230","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021104172230","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"0c881b0a64a60eaee4135a05102d8c2d0d410324","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021104172230.tgz","fileCount":322,"integrity":"sha512-gyr6hsnFgd7KAPlJdLX/L0pZGjxJL1LxJ/sgyR56ESi6jOi2XvTU650Bi9RBHn0saySVUZTw7Aoghby0XX88lw==","signatures":[{"sig":"MEUCIQC1FKAo1/ojAZoCWjmRU0Ho9Qwc2EuWoLcUrPo1u5HapgIgW2/xCCXPJwHFsFyrC5hozUnAIBjlKT9YCsYwe1iAR8Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9078492},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.0.0-2021104172230","@ethersproject/contracts":"^5.4.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021104172230_1636046563519_0.18779820842606987","host":"s3://npm-registry-packages"}},"0.0.0-2021105214732":{"name":"@eth-optimism/contracts","version":"0.0.0-2021105214732","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021105214732","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"489aeffb5b7db91aad4caf3f02d7d393e681beaf","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021105214732.tgz","fileCount":322,"integrity":"sha512-jgnmIslrQxy+5MM7IBXCYOKwMD44VgQnmouHc5XQS+KtXo4+DHSMMLrJMU8aI7rOTUkeuda90FizlEFaNI3PIw==","signatures":[{"sig":"MEYCIQCD5+N8E7Y9B82Jq2maTHHzsf2nk6zuek/P0Xd7+5PDNQIhAJ8B1WRi2IEYcMULRlR1FX00PHedZ2S7qrzkxFEPfwzO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9078625},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.0.0-2021105214732","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021105214732_1636148865791_0.16975775711517138","host":"s3://npm-registry-packages"}},"0.0.0-20211094526":{"name":"@eth-optimism/contracts","version":"0.0.0-20211094526","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20211094526","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"f2992614eb6ecc77ddade8ecc31aa076eba5c022","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20211094526.tgz","fileCount":322,"integrity":"sha512-Sa99gyxGJh/F8e1stSTS2k4zKYOr6Uv/QyXtTe2m7NyFh92F6ArTQJfg4BqGs3X49m9ehiCg73wQPME0SZJHuA==","signatures":[{"sig":"MEUCICa8ppFjUzgE2+00qoIxMbCQaGuQRPIqcbvz2HSdO7p5AiEAqM0hDEPkX7HT1u2s7ig66iYYO7sW3bc6XE/Pghjb8dM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9078617},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.0.0-20211094526","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20211094526_1636433540592_0.28244499201566864","host":"s3://npm-registry-packages"}},"0.0.0-202110951139":{"name":"@eth-optimism/contracts","version":"0.0.0-202110951139","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202110951139","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"c37ca3abfb833a3701fe92f8f230fde6bc67afe4","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202110951139.tgz","fileCount":322,"integrity":"sha512-MAdbxvIEHbzFAMShG6JlNgExMVWYDyn38poRuxFcjY6B3batOA82eow0SKzOf6FkTSMtGafABM0MAmYZy6WpmQ==","signatures":[{"sig":"MEYCIQDIyxBKpN1Uh77/bgmnmn+/q6IlFCD5I6wE1BouF+DvmQIhAPzQoIhZq+1LqcAhEHnEzsqmvoADjC1Z7RWNJmF0YVUx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9078621},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.0.0-202110951139","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202110951139_1636434710733_0.6647324865156055","host":"s3://npm-registry-packages"}},"0.0.0-20211095345":{"name":"@eth-optimism/contracts","version":"0.0.0-20211095345","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20211095345","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"77312eeb3e19be6fdde0ddd328e743289206a4ef","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20211095345.tgz","fileCount":322,"integrity":"sha512-o22qLTU+ma6rIUJ4i6Pr/tukaqFA0w1fpsTz6qQ2/lf1XLZ/RHMwo6RNbYDQ4Dfrk6qXjKkKOm5urliLQS4bcQ==","signatures":[{"sig":"MEUCIAJgfdqgGD5AoAulSpL7wNDQudDJ02S6A4I7MwNP/q+IAiEAuRDc4JdIepegDTMa0LFbDON/H/D0nCYlCFMR1oe8EHU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9078617},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.0.0-20211095345","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20211095345_1636436057710_0.7313956169784608","host":"s3://npm-registry-packages"}},"0.0.0-20211097365":{"name":"@eth-optimism/contracts","version":"0.0.0-20211097365","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20211097365","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"6ada68eb0f7b2c2a880350a9c862e2d5bc40fa96","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20211097365.tgz","fileCount":322,"integrity":"sha512-MxPqPYTver1dLaGm/PK2LrPEyl83L2iN442DldA9xoywrKs2RL/HTECvvXbiPvOVl3j56vh+yTMkjMn+FY895w==","signatures":[{"sig":"MEYCIQCmTkakOHcN7CXkMekuIQ7/0N77yxD0kdTjynScbabQmwIhAK2nRbpuroPX0vQ8QC2vFrWpKnwxHbEQfrAPWpchP+2L","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9078617},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.0.0-20211097365","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20211097365_1636443380094_0.17197130860582677","host":"s3://npm-registry-packages"}},"0.0.0-202110923028":{"name":"@eth-optimism/contracts","version":"0.0.0-202110923028","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202110923028","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"will_optimism","email":"will@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"a66fa9b0ac923abb75c402a903ff254f1082cd04","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202110923028.tgz","fileCount":341,"integrity":"sha512-myBcafCZXm7i/Rl5TRqMsTKPksnznB2MSG9ozfHqoSbVQ91yNdHVJ5hs2DUc1rANhh0cUyHwwpWEOJLtv0LJbw==","signatures":[{"sig":"MEQCIHSlWS4al71TYm+Ry01/vpPPmBzfCQ7y6R2jsryMreZyAiArLqqAe7CGtkSumDJRbUKXUIOkGZDZOAM5v0uOsMjYOg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11301050},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.0.0-202110923028","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202110923028_1636498841571_0.3429673453137605","host":"s3://npm-registry-packages"}},"0.0.0-2021101045412":{"name":"@eth-optimism/contracts","version":"0.0.0-2021101045412","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021101045412","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"98d5d74187eee2d7f6425bb945bb6846c4af4d1b","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021101045412.tgz","fileCount":341,"integrity":"sha512-IobU6g5PAr16m3AOxfFX0VRPCmjX2GqhuIke+0d1RbwREg0l6aXBu6DutAiIDLzM+vHeTpZ8HOssQFkZmCo6uQ==","signatures":[{"sig":"MEYCIQCFOHAtVTQVRPPoMi1KzTs1V6Kw+41BsSvX26PkkDpKFAIhAKiWysYm/LnprXYTuuYwprcfQ2zFw7gKyR1V0lG2aAiE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11301054},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.0.0-2021101045412","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021101045412_1636520064612_0.2899315499360893","host":"s3://npm-registry-packages"}},"0.0.0-202110106434":{"name":"@eth-optimism/contracts","version":"0.0.0-202110106434","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202110106434","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"877e56699e45d27f0c32020f96114afe8ca0dcc1","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202110106434.tgz","fileCount":341,"integrity":"sha512-qatjM/GlCzZSWwdEYGN3NAezRi9TaMMrSGA61usFmbc5dnXSJ5VkUu2O1+HXDW86VU4RdM0UTUnaBjElD6Xy3Q==","signatures":[{"sig":"MEUCIEQy1POeV78nhqFpmQC1sXvcAlkYLcqIcH+Mb9GsYQMsAiEA97IsSxsQFffGic8KOEFSrfZ/4fP1H0iq+t8kCf+7lNM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11301050},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.0.0-202110106434","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202110106434_1636526596426_0.5559162856271889","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@eth-optimism/contracts","version":"0.5.0","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.0","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"c0b22dba8b744f112b04dcd20855d661490032b2","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.0.tgz","fileCount":341,"integrity":"sha512-gtItr+KhJmeeDIOvGbNxMa9ne8hADnJ1KBhRd5U4kXPj0DtSroD/sClY5mURUojV5FSAyzdgJ4o01baVIrbd7Q==","signatures":[{"sig":"MEYCIQCZzIbQ6KlVBFLi+QIDtoHCIEfU3NzFWQTT9g8+ooFS+gIhAMcGcVUD1UsyPFmhEIhEljHfDuCnyfKURs3IRMufoViK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11301178},"main":"dist/index","types":"dist/index","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.7.0","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.0_1636588512271_0.7199591143661037","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"@eth-optimism/contracts","version":"0.5.1","author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.1","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"dist":{"shasum":"f9f4a10bbf997709800e749403ddb899a5c3386e","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.1.tgz","fileCount":342,"integrity":"sha512-x2gxwhaIam7tOakpAvm6kB4lTC/XJbXb5GS5RBnLv5hoZh8LR3zmYf8Qq7GH7PNI2d6PaDdvShbbFtioo2RKJw==","signatures":[{"sig":"MEUCIQDNC96Nr0OohggPBsUwW20yriA5Tl1Ii0IOjbUcAOWVhAIgF9roElu1cOeLRoM3aF4R9uZwJsCn1zaQ2Y9fYuswO6s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10937156},"main":"dist/index","types":"dist/index","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"_npmVersion":"6.14.15","description":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.7.0","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.1_1636685529354_0.8969447320763995","host":"s3://npm-registry-packages"}},"0.5.2":{"name":"@eth-optimism/contracts","version":"0.5.2","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.2","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"462db48e5247fe73ac80fb85f7c9d3fd125015d7","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.2.tgz","fileCount":342,"integrity":"sha512-vfVfZOtjye2chfOtZLUHT59aK/h6jMQiYN4kA7e9wln2QMEOyMHeq0WNLql0dTpUmMWOiYLZc8d8c9oX+6OAcQ==","signatures":[{"sig":"MEUCIDRfN/iVwhQMrEFkdYFNfhJdzVIDE7cAuBTLOHuYURP8AiEA0jFjE0yPKRDdIVwuO+Hcm+yuSTCmmQpX/rU1QVIUI0w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10937489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlYWcCRA9TVsSAnZWagAAercP/3FHuV1JJtigiYX1kxT2\n3UHabynADUT6eRMnJQ9KgJ9eIZjBQDO3Vri6EzOCBpKqZ5YFlBnM9nZ8Xv8N\niWlc1OH7iqYpnm4OkM50srDNdwgern4030z12r675+OOXwm4OBYJilp1alPz\ngluXrL8Xo+sGBB5hf5PKJp13x3e4RjWoOR6lr2/IwzVX4JJryES+F/4zNt6v\ntVzBkJkFCHjOrRMLwdhZly4bVgM+xN9U07+9CRBVPp6nMe2IhBUpXQKw1IF/\nLSQWgsU/sVutDt2LYIOeDQszY5mlu2fjOHnBQPGPUjEwYOu1knOKuv/+p93o\nvt8JoLZQxAvZjn3iMRUbyBsiksVJ6xawxyZSeii5KIZLWpqUYk707iyF7rJz\nG6fDyT/f89JrkpWzC/XDUrIrf2IeFjoxXj9D6H0kamLkc4JWhgHv4EYVaox3\nR4oNpGeNJehxuLnG9FlchU4ub3dJOhh4nNusq5C4bwugxi7DApghvTseqP5S\nQm6Vr/W942tLcTF6hErQ0keiSQOpoiAUgJOVljAf1+j6pwcgsxrFyGPFA2ae\nmulybg9sGPy7udebyYGouevJXudt2tzsJ318ikkwzoAp6WGdPdmwRr+YWSr2\nlEjjCtiWWtTFtiUZjl/zm/7D0i9vzwIGkkcNYfg5nb8Pzug4dHNyyBwLj9xT\nuTmP\r\n=j/Wa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"6.14.15","description":"[Optimism] L1 and L2 smart contracts for Optimistic Ethereum","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.7.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.2_1637189020266_0.8156064814392796","host":"s3://npm-registry-packages"}},"0.5.3":{"name":"@eth-optimism/contracts","version":"0.5.3","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.3","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"b4312c3e9af2c9e527a231dc3c337b2c46c56e28","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.3.tgz","fileCount":342,"integrity":"sha512-hJapXGyIL/rQDoI92KzOPNyZJ2XC346r18DVwDrET08FqOGQ5KqSYgyrKybE7nkJzBq4GiZ/btLDg2ww7NePIw==","signatures":[{"sig":"MEUCIQC6bDoklb0CPE/4HBuryP5X9kAgH5xGpK9LG0shUU3mMgIgbceah4sf7E5uG6FG+RNda0bfRlsNbUa5pq6ncAe0TRY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10937795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmBhFCRA9TVsSAnZWagAAMkIP/iliyXGPkJViqU3Xs3JC\nKbqk1KtF4NEGhb71GkDBtv4/NbUnSLdo6Z+IYShOXAQGz6spU3Z54UH3i740\nfPKzv0cfvX71TvtYFiSK6g/GsjQnXbSR23tx3siYcLzZ5MjYUizNdxPNaHJ3\nqMjahTX/HvSIug/WdXNUIR98GlD5D38CZB46+XjwKKgz0sVdUvlgPJPfG20y\nwo2PTkngsmV5lb9VtQaWjkppfeQX8T8cLX3J9PNyfHA57Vb590BQgGjdKToS\nrwu4gkDOUH4sOuUJnvL3TTgLPM+Y7xCtSYYCGEvgTzrTQokSgQPOc0aeTG9E\n6YjOZ9EO24ul1mKuqpDksV99i+PgUoq5Etdt2rA9QdXHwzMOhstGjTYggzbD\n3cN5LX53+cKmbs+3boj6qHia3q+ikItjnfLFeFSg2Wd5VKoa2wg9IZsjmfDt\nVL21pzLODLTmiopxAuc5NoVeSmtf3YkrN9RkqzbhWHJACOOWCxWTE/e7bfBv\n0Csk/ahRPNrgavSR9QC4+yyiGiTvqRSUOn3e/k/k/FQnWg4Ba739An0zDVIt\ntaOquohWjHaW/dUO3tAhyCAyHSTqLLOKNSOT7URbhcBqLNjTfj/Ssr4+A2q7\nqw4QhBAP2pq+wcrmiKG+yJw8Nqa2/EWESLkxYYVbvGFB4608S0cowuKWJxEI\ntVIR\r\n=s39c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"node scripts/generate-artifacts.js && node scripts/generate-deployed-artifacts.js","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"6.14.15","description":"[Optimism] L1 and L2 smart contracts for Optimistic Ethereum","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.7.1","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.3_1637357637020_0.5623169569434432","host":"s3://npm-registry-packages"}},"0.5.4":{"name":"@eth-optimism/contracts","version":"0.5.4","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.4","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"0ec4cb2b9fe39bdfd4003ad5283348ef4ff7116f","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.4.tgz","fileCount":342,"integrity":"sha512-OZEW0jG6SijWRZheEDVbK6xT9y/VsQ5yzR7Xy9RFzlGd3ZTvyu0Xi6Mm5J4egwiJYcaeKOJZRjpq3GWGrDeHTw==","signatures":[{"sig":"MEUCIGhIURMj5ddC/y+4gYaLB8RG712NiLPWdfdJTv/jKYXqAiEAyUMb/10hcnSopKf63P/II3FTx3sluPhMoPSkT7QoUV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10934446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm9/HCRA9TVsSAnZWagAA0XUP/AqtnLGN4a5pzc76gQQx\nlk8nTAZVMpKDGdRrBgImAEB4/BCZpTm4XM+NmIlwUAE0WpWnCBdEpmJk5MxN\n4k5WJkW46YkWPiKEnUWGJ8a1+wVSmRSi1+eZ4/KbYppWuUEQn9Zy4FCw81KL\nvX0UIt6qzW7UuAJf29MsVvfwB3pMeYQ4hQZU2YW2a4JVKhKKPpHaaNYOsIXm\nVV7+ZWdVFq0oUQVdCAGiU5DYOaLdONTBzCTcAeeSMpKahlWOhmVJd1/MwOI/\nU9cfex4jaEoBs1l3IyZnusUO0PmennlcokIaLI+zObmxx+x3G0dQ+m9OtADb\nvhfWO4JdrKfp/Sf4GH6JPOYb9f5fOs+2TMc8wNl1bqHs+U54SWXnlulQXS7A\n1AhB59qq22M6wxiMld1t/reRBHYzAmlV284+kBAkbmNqaE5MGNCR+CtjddF3\nOBTuX5xnwhr0lnGhx25kl+C68bGo1xnwewHWGBUlLCCGhJPuM3B6bvNxcI1q\nxdPe70okH+rcn2Q/DTsdePoCo04uxrqQfWh9ksJNgfDbQz7uDL2VBXimVdF5\nhUoFg/59JYaA/SdyLeLY7/ILwjcrfWVooM3jo34glABPH4koEbjxXls02gAy\n7xXqNNVokDk9MmGZZKMN5ZpjldDXps72szlcBRZt90bDv1whqwJ4rPq/U1Xj\nueox\r\n=1Y5n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"node scripts/generate-markdown.js","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"6.14.15","description":"[Optimism] L1 and L2 smart contracts for Optimistic Ethereum","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.7.2","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^5.1.0","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^2.3.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^7.0.1","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.4_1637605319225_0.9066036059000953","host":"s3://npm-registry-packages"}},"0.5.5":{"name":"@eth-optimism/contracts","version":"0.5.5","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.5","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"7a58d11a4f0586eb5d4df5a71ffa45f9a3623d27","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.5.tgz","fileCount":311,"integrity":"sha512-s1qLXx70hjIt83uJZPM7sqU3jLfC4+U+W9la2HVeMP2G4csn5eYJlSux+TQxTzZMnMgQ7Y4f3Y0xcKKGEXbMlw==","signatures":[{"sig":"MEQCICpcmsaH7x1LBfCIgQliePMsCc00T3A2PEEwErmGpT4HAiBXIHQS0+h3RYBFBBOKVaqDYBRDU6eB6ACJKJW6ZGm4wQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6465501,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpW7eCRA9TVsSAnZWagAAYLQP/1yPU76ClYTB9NscVg/y\n1ZlGESN3+7Iru87UoGLALXu7dPWqvJ+FCAme6up7raCp7YfspdfZc7PtyDsG\nBNl6L8ZGHtBUKorVnqigoIqz5H5GqRpBFx7/iLwKrQNiGV8Td40ySZJWLe6b\nTs00WcuoMO0nyIrhhjhM+RgYeivJrwZZRdxJtwntJ8JfriLSF8wViKftF33i\n2I23/2DjxxFPChiJu7OmpW0VVwZIDTWganBQ0yVrsvp7OqpeyYWPgEJGTljk\nhk+J43040kIH3ttrf+pLex5uSdQncs65AJqOgMZ4/aBykfmgHrZR+KKSdjYU\nWGg0OnwjoRHG1I8Lq4Nn0YLJvLpkiLhjBIq1LtrHkAyo9I5WfCWiIkSHHpPs\nJADLCgRTF6iVVuOTtpbCyDGn6pes4RsHFORd4kOUcAMznI+GIxA/OeQbw3+T\nxPkhq3FS6qo3NjWl8ciXv/H0TMUInwSXFRI/iHf/c6/u2I20Dqd0MXEzOrd4\n1Et5RqwZ34YxFnvtqAhss7+Js1VCMk9BoDvVDCIvGBE67lGIiMNk8BVOkyNw\ngZ2jkUapj7jmttV6Id6kjnPHIW64DYJkwCY2N+B66nLyVar/y5+Yg6XvRGco\nfMBUcl/bD/BIxRDhMDBowbMMlhasImO+2U67BAU6X0sMCdRFmIDm/x3tgoYj\n9fN2\r\n=VpF2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"6.14.15","description":"[Optimism] L1 and L2 smart contracts for Optimistic Ethereum","directories":{},"_nodeVersion":"12.22.7","dependencies":{"@eth-optimism/core-utils":"0.7.3","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.5_1638231774438_0.7320546686741944","host":"s3://npm-registry-packages"}},"0.0.0-202111722448":{"name":"@eth-optimism/contracts","version":"0.0.0-202111722448","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202111722448","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"b86bf90f93e417558203902f198b1d9a83361120","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202111722448.tgz","fileCount":306,"integrity":"sha512-ASyu/7MA6ksgo4o3OOxp5iyw9+wtVNNpC1hZjI1KikYAI1fB25rLp8YzmY7ShOpEn1POIIrt5BuJbkmzE0UIHg==","signatures":[{"sig":"MEUCICOJ/GnUEyK7Zo5pSx7Hn6rLREfwlXkfMcMKu4y3BvfBAiEAok2Z5OJNcC5eUp29eCeCDBJMmlwdhADbCLFrbLY0b3s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6442241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhr9qKCRA9TVsSAnZWagAAzTcQAIeZUKANC76M4XSMWczg\n7a4h5Gucjr7DBzcHjMMVs2H9bYU36b8TWzSOiE7aO6cHna/fRk30ymfAwVLT\no7ULotCSNRld6oTMeSAio+5fzvWW+JdCB5bDVZ83LQN/1Fv6c/7OSQR1+1ir\nRhHGDJRKutpd7+thcB+PPhtIOvhVqzo4uiT/TDvaAaL677r0n5xVJ3BHMKmk\nWvgKVJ807phSR9L1d1kz4/PeLcp1JTPTpz9g1ZASMzde1smioQzmtVbYCYti\nJVmUFqmpnYht87T9r5vlcbdePfTSzxVauu+kt+2OEdboR0kq7IYdg1dIbwZv\n/l8Z0oY7HZbHuvMz2a3/n4VE4hc6gJ2fzFfQRJP2wh6t1plOfTZuLO0HiVxU\nSCzt1jn4KzeGSLaDf3vMiKBFyz87eP8qn8dRWG5eX/8JwZW8EJDol05qKJWa\ngBFVDlwsz1zItkYWXjRD9cbUwT3m0iaZaoBsnMD+3XJq4oe5GEHcPSnc7SHP\ngsiuTnoyYuFTdalxO7VeG1zv9rrYyRrjsVsBESETbnZYUtJfYQ6J4urj0Z7p\nmzG3SXanP52UrEIvGe/dPt5ADZfa3MqTilbQv/lDpIyW7tkVHX/OFFNMoTjC\nTUAVOccvhFO/L/r4GGeLM8uIefY2H+JiVMtGx+4/3UtPZNsoHiXdayPluJw0\nZUrY\r\n=hEM5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","gitHead":"3f5634202b402cf9e6c8eba8517ed9644d835724","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.0","description":"[Optimism] L1 and L2 smart contracts for Optimistic Ethereum","directories":{},"_nodeVersion":"16.13.0","dependencies":{"@eth-optimism/core-utils":"0.7.3","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202111722448_1638914698197_0.49573156162678167","host":"s3://npm-registry-packages"}},"0.0.0-2021117221042":{"name":"@eth-optimism/contracts","version":"0.0.0-2021117221042","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2021117221042","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"cf975f418e74ef38bc73753114ae94449720e618","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2021117221042.tgz","fileCount":306,"integrity":"sha512-J5fmFQhSkLzWBq7w7Ua925oQfMhYVhLs0gH/tlfaGueeggN7E42Mggdj31O4JBepLVau1Hh+J1qvMTSIGNY0sw==","signatures":[{"sig":"MEYCIQD2XZPnBAw/cL3tWLODZbq2ueHTGoe3sjDEd1TmTiFI1AIhAIncTM25KP3uCyEgv1HYNdo5oEldel4A/syH42FSHl89","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6442242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhr9vuCRA9TVsSAnZWagAAodcP/AtiLIOmb/YP9OIgLtUg\nRxb2wQ4UYVq6LqO4VtPUM+3C9mrM57a+xNfwiyG19goBpn4IbAzb+fHO+ETN\nPVxSnn+v39B1G1YczLc73Vlrge5xbvmXK/8AItpkF3CRCJMCJPIsvIi/WAJq\nX/WUzn1vxqLj+RFsSA2SDjY7alqfU18/9rZmvNiMh6SOn3PX3HhGEtR/6Y3g\n9akXeMSTQQa2rOY3w4x4gYOZjDvSNGYt2tQoZazkqfhwwNhbBPGO1P2Xe2GV\niuh+3d5rs0EUWMgey+SV4XgLwMSnC2ZOAe6pXveHH9x3S+MlxtdGUvkoibR/\nHnOTuTPllle0DzBtAtmUizO4eHTLuSL1z103i1cki3yuvmDvUqnu45Bh/+jp\nEfJT6ho5QUJkYPvAnkOfoS1DMEnOzru6M5gKtYuN1ZniJVzPuhokIi5vBfTj\n1FPSsionxX6zLEXws4SaxI6BW/E2ioAxPf4sxjekNMhBgv+ojoA4U/6H7nLg\n8s7lWYNcyPGemMoE/vS8RP/1tsDmcrXQxc93RUXusKOfqxPkcZpSGRRPWatN\nZsS6RRWmA/JDPF+zO8zy6pF25g2JXs/NmNFL+tUCp3AH/UYlgNfZW2gvKWmM\nrnN5D6zqzoOGmEG2pSNrJhGbwXfInAjTCRsAbGPx2cWoI85OqOBHT2aXac89\nQ21m\r\n=HsPW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimistic Ethereum Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimistic Ethereum system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimistic Ethereum (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\nA more detailed overview of these contracts can be found on the [community hub](http://community.optimism.io/docs/protocol/protocol.html#system-overview).\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","gitHead":"6f610282b2f1a886124487c673e4ceb9f151431b","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.0","description":"[Optimism] L1 and L2 smart contracts for Optimistic Ethereum","directories":{},"_nodeVersion":"16.13.0","dependencies":{"@eth-optimism/core-utils":"0.7.3","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2021117221042_1638915054170_0.5599901430952667","host":"s3://npm-registry-packages"}},"0.5.6":{"name":"@eth-optimism/contracts","version":"0.5.6","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.6","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"bb6a611b96b68749b087d29afae10f82ce26b4df","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.6.tgz","fileCount":306,"integrity":"sha512-2jkJKrWnnILhBfcFDrDAoRvDPWA+LHGDYBHiw81YciIlzKRVgUhrO1FMHd33Idk4df+VJ7TKxYX14wggXl++aA==","signatures":[{"sig":"MEYCIQDi8u/AX3qZiBQpsUevIXMH0UvAK+ONOgDoYqvaPAHbkgIhAK/Fwx260vP8VDKMIxl2oZ2c4IYPnJMz58CO21qhFm/b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6442687,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsTZiCRA9TVsSAnZWagAAvNQP/iURVJOog9VdqX037kqT\nS46P3q7i98Gz1L2znS2XgmylopCAX/Xjv+mQiIRYpVm2hzTrCzXARMheCbeX\nXPlAxhIj6h17CY7+BS/TYy/ENBbU0qtfoQn93x30bV4/pvsru8ig+BwKxfbZ\nUM202kJzJ9IaAXNHmZySFrdhKi8Vp46Et2oF+Z81gKQeWCf+VGqhezKYiKq7\nEd/ouS3o0WVtAJPEj+hpLkYQzCCdC7uaT/P/JdcmrleFgijnneOybH25/tJR\n/xP/JTUSfo6TVtPdTKOHsAWasqjfQ/FYfQz5PhjbMvllqvBz2tuoLbdBndip\nygB56ePva8afLiiSiOceNewSZIa/WXrkuun5uP+rDPIMOG5S3RfoNMd8bohN\na22XDhhn33merJVnozsH4vMzB1wKr6ZcB3EJuoX+92ShDxbr5DQ0LlBUSLsh\nBH/YeGbX5uir0ZvMdnixxjYcbRt1LfkQteSd606MCm3W4lDKoNPvKnA1Xwaa\ndunCyI48AoNK1jG0F/C1vXO8BnITH7HfcYrMSnxNWTb6eQDaTTiwsuKSXiQd\n6y9dljoYisTlchGK8F6u4QZJN4DtvR+1cyQpT8cl1B6lB9obpWbJB2pwGO2P\nbDHC93rhGUhJf6UM3l5lt3hubqdixUu++oTT4wSvBhC6JNyv172ABpcO38DC\nJtaB\r\n=SuEJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"941a6a6d3e71af32064102a6657203a922b8f67d","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.0","description":"[Optimism] L1 and L2 smart contracts for Optimistic Ethereum","directories":{},"_nodeVersion":"16.13.0","dependencies":{"@eth-optimism/core-utils":"0.7.3","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.6_1639003746263_0.7460795388032941","host":"s3://npm-registry-packages"}},"0.5.7":{"name":"@eth-optimism/contracts","version":"0.5.7","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.7","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"1e0b59d0a0f689ab947ed9aced2ea514a104b0af","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.7.tgz","fileCount":309,"integrity":"sha512-/+qsYTuHSvSbmqBwakmxjmh1X2z7A3Q/bpv8YN/Mu/wNvehXD7RrmEpd6UMrI5Rov4Fsaa8LSS7D1IXpZzso7w==","signatures":[{"sig":"MEYCIQDXy/Cb6CR9Yr6SITLZV4UQqBgRJGdCjvr8OPVALboEHwIhAPAvuzM/1URJxAOFAEvrU4QWFc4RJtVlFVzg0Or+iFN6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6451094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhs64OCRA9TVsSAnZWagAAT64P/j72748cjOgUq3VzNlV1\nELtVe73mwRKDgFpbTBUVXQFawnMqd35M0ARvkyoHtWa6Ion4uPzwI1G8dSSU\nY0tVpBewMAQSnzHYOczO+V62fX1vDISz0kS3c7xjtNxfwyGhtXmv4lpjIoNi\n52IcW2ZdYXamfOyGdLsFvBcmFvcN8tDk04thwQW9w9xBC3ulB20aGT4KvK5z\ny400TzHev/YHwCUaMB6+X0hhxU81awyuPgrhDPG5+hZ8BZd3tUCnA4ylwH+O\n/ld+SYMwqI4qhb3x9xwV3miGDfYOejCBN0e7PShHHXTr2Wb/Eg4H6MaOx3C5\n/Sd49kVZBedeXE9q/YYDhVgW6BOHTaMOsZEpFH8o8tbimC2A4wOERzzgjccX\nyBlcDRpNkYaMiRw5LbmBWDj5msML0+nBnPYPqzDFhFlWKb15N/EBm00EKLr0\nDWWxgW4pOlFKgODFUIMpsK4zpOE3nkgHjoLiNvt70ocrwjOuS3hAZYKYPI8G\nhN5FuhSRk/d7gTKIQ4TDbqtITd2aDdGN9Nm4sZ1CeFCQsLEu3rAoAFQuBhHP\nbSd4FpkMUhJ5iqFdq6FLhiL2BZ1gttyoXPUlp6r9cAQESj9zCBkyeb0ywCJB\nSyhObIPTrbYGP/QGt+9+HTK6PJjQVLqsRKGwpa9OhDJ2U/sht0ZVSZMM4sGc\ntcBQ\r\n=9tmU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"ead3fd27ea3412f28f2c708632a9e38f04df85e8","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","deploy":"ts-node bin/deploy.ts && yarn autogen:markdown","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","lint:ts:check":"eslint .","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 88 --branches 76 --functions 84 --lines 88","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.0","description":"[Optimism] L1 and L2 smart contracts for Optimistic Ethereum","directories":{},"_nodeVersion":"16.13.0","dependencies":{"@eth-optimism/core-utils":"0.7.3","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","eslint-plugin-ban":"^1.5.2","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.7_1639165454474_0.1495747133387848","host":"s3://npm-registry-packages"}},"0.5.8":{"name":"@eth-optimism/contracts","version":"0.5.8","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.8","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"975313a219b5537bad7f4f98f8841c98592882d0","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.8.tgz","fileCount":305,"integrity":"sha512-INvIMiE72Y6tjxm+BZyN9f3+LiMKJgmNpR0qEimrvpg49hK8gOXQTnI+0C7/qIIGvgaQgDyejG9AfkxZizjLVQ==","signatures":[{"sig":"MEUCIQD4nmGTt9bl38tRZyeuddwrLW36adec6V/sAN9DRlRROgIgFRwrG20qFYJfY0nk7akQGYwXQMWUVpkTKjaUyOQPymQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6442632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5xRYCRA9TVsSAnZWagAA+EoQAJqZWgUxeI0saKim45ZE\nnME5mDSBQTh3MCpG1YTx6Nt5yoaeSigFsJUNlXPEtx/PfJMw8Z2p2O3KdQXb\nfpqqkkS+e0JoMrS0xV4o10wVhizQjJn5DdkHzT8P42qwmcBxDMMl+iWi2E21\np3LbQRl9sET2Ym0AVPJ9YwWspbP+HIGVUXpeMaw5HwS0v7ay7woNH+LzAzyF\nEf/TDqB2tenToBk9PfbIEmT+dg8ewLUl/MjWUSaS0r0bjc+x46SnArUaeh7j\nI2sSGKvUiJKtKxERx68DjQ/S2yGsxCTZwXVwC/o0wWUNOwMPYukcM7QdALY/\nFX7O0iSZND+jO4sil1I2Y+83jfIptEUuJKHYbXmj4Eq7ux5Qcr9I8ohF/cms\n86HXsN2CUqUnCxn29Fx8usW07YE0uX0I71R2sJtZs7ws9aFnzLrw8L8/xyRg\nqxAgiCatJQkMlBcUxTbwWL46wTdeT/NCzJ6KGM/aM/w+llihV8pOaP3Qu0fm\nNtzOLGoWtPCkiBptvEWUIQBr+LQIG+MMxzGpAxyZ2Bjub4FylyB+ksLXmFLV\n9eW+aFSg8YSKxI4sib2cno13a0v6xBV68zI1RpTxMH7ppvQxGWAXhGE+IfRF\nzyjtrSmmCbrG1C1wFBayo2PH7dcoFyca/9YlRVEpBBYA4Uhx6QVXJnazijTJ\nSD8B\r\n=B4pC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"8ef347100a5d7d506737c2687338ea1c6bfb837a","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.13.2","dependencies":{"@eth-optimism/core-utils":"0.7.3","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.8_1642533975806_0.5863337623253009","host":"s3://npm-registry-packages"}},"0.5.9":{"name":"@eth-optimism/contracts","version":"0.5.9","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.9","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"7e4f8687b1539c35aa8888e15f64bd97b4499cbc","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.9.tgz","fileCount":305,"integrity":"sha512-kYhemHp9V6BjL/c3I7gJziBucGEecTRGd7OHAhm/FtbExF4Rt3PkO3vJ9rt43+v4pBL+SJjVRVPlZnSNggai/A==","signatures":[{"sig":"MEUCIQCVqxJouA9zkP7nzdHDfCGFCca6JT0jOnU1ErGOAQoHYgIgf9M4OJ/PBBlXjGbRv5gBFxILSGMctGTGWgKIkv26XBg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6442632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8DW+CRA9TVsSAnZWagAAWngQAIN+Bf50AKX75Uoj+UqM\naIjGiiWKVCLYZY0ppPlkcSJ0WiKUC9rqTxkd9NrtsdhEnw0fQush/Lo+oor+\nLdOemPLZcFgU/nQtWf1yiiQxo/3Pi8H5SGuz9kzjVhn6ZxkKrQ3BGgYA4T5j\nXrIRQbFRvjIJTJ6uwxRoXmvmzCwKuJ1Qk7Ug73/36tzVqpWrzuQwZFLDyIu5\nLxBn0ihp2JtqaaSddUzmoKdo41HwBhjdteDJsKI2BSTXOz5pBBR3mKo/YmY9\nSdEuXaA/yfVDIco91vDZemekywlhkLGWxNEm9kW7zNm6sUji/fVK204hsLs/\nQl0a6EMuLUZaV2RjrymoMQt6ydsfFQHen/WGPP3D+gk+hGXKHDu3zFwmqQTR\nsVulxUgIzguOlhst43smbbxVCrwg3N7tznMwPVezV5EqOWuzJD4BPLkehYxa\nr8ouoXq9n3efaHQRTrLsAZZWJXW3laAsX2sbxUVaYln5ssqTd2etyoo0/7Dk\nY9Q25BGzp8MRJS1KKtw/FYX+HjWFcnOiwXFZRJgZhTZjrtuJJQUcJHSXPFYQ\nAcOvAWM2EFz3aDl9BekoKDWQ70Fjw3BdvvvTocqKTfKRwjenrY8ZNYsv6L1J\nHgoO0w1lamml9zMgPkU9YhKf+Kf4EgV8P0yY4fPcFLgGGB22GMCW62nT3KUb\nWDCf\r\n=gSnz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"3a79a2d51c062e6c564423e9e107350c343d1086","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.13.2","dependencies":{"@eth-optimism/core-utils":"0.7.4","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.9_1643132350061_0.5050603555922693","host":"s3://npm-registry-packages"}},"0.5.10":{"name":"@eth-optimism/contracts","version":"0.5.10","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.10","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"dbada4d6e7dcad3c8cdda7e8b178f83e85258881","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.10.tgz","fileCount":305,"integrity":"sha512-XJE4smjQpCWpz49mWa8ugV/AB4Y0yWGskzALPXJlqGrMY5eypwxPcJKM0PVkO1jD8TfdW1LtfLVatfDJaInEMg==","signatures":[{"sig":"MEUCIQDTD4PgTlIfxNPxVcALSyJxmK+1rsF1zVCslA0lhOaGPQIgCwN2rexNA8s51jg49xBhpaAyrSZk9ZdO9JvxVttMnvA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6442477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9HWnCRA9TVsSAnZWagAAaFYP/RjKrqAbCjl0xOglQLky\n4ggBLb3utbi5jv8gY1XltZqii8clkIUtTZL32kG4BggdAASsaRX75Gu/w5ay\nSvjv2+8+evbo2g5maVRicrFalq1n7JpsV5LJ3PNybcMAcg8mNPLkchcX9g4D\nQe5vh7SPesOl2XXo9kLf8dT0yPEz01NBheoEt2fu4QFFkpPBTNgVUOi+ayXZ\nAOKrMPmr8Ijx3l+/TbqwDy4/OCoXYBg3K0Awr10F2DdsW1S4j6axNwAIVLrz\n8Yoj/EiOJMpz/grsS1qZby9p+vUFdghqi68Ingg4iXCF8MA/FJ+lD76pFW0Y\nvUP0s0xOKyUPKoL9LPY4kbhJgmWC/KF7GbDiFwfCdZ47MfSLKiPss8hRoLcB\nsZOQLrE3A+MxJ+iwrNSNsgZgCxl/M/Op5BDB6HZ1ge9IRV84mSXHfJ1k1vyn\nwipLgFqko+QW2JrTviGhYMiBxMYuDX09iTty8QyKV1zA+OzfKxP2ELgmwJ7m\nTTxwtjoe1Lg2zS1pZ9hlXYWZN66GYtKVZKmZSjipqJudUXFP4921TsxwoW9h\nryVFe6HPUwjUHX2L7zNFXtWfwN7f31FgiuSiL2EtsVBtGC/KXkHkmp6lrt1Z\nOrI5r29+DXDdaDbJUlpwz1i6gf/heXozBMFBXOmoairwedHNwSHeLygmMgPs\ncb0G\r\n=3yVY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"ce0462d170c378567a142759f0fe4438adcfb880","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.13.2","dependencies":{"@eth-optimism/core-utils":"0.7.5","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.10_1643410855387_0.03589242841072515","host":"s3://npm-registry-packages"}},"0.5.11":{"name":"@eth-optimism/contracts","version":"0.5.11","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.11","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"935a776be3f0d27dd26fa9e892c02c6b0fe86e93","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.11.tgz","fileCount":305,"integrity":"sha512-W1xgY4qgJO9IHG1qOe98kjDMOH0mqpO3oiaSxeIFmzzshNiWGw3XSDbEvHqdsAapFYzfrmwavY3FAg7G5iqGEA==","signatures":[{"sig":"MEYCIQCMM9u/uy8Iu+JViXHYJ0BEWNhlnRio01pWBhFV3X1WjAIhAIspYYOw3ULJqLI7D71E2IwdmhhPS/y/2U9WjkpGCJpf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6442544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+CeCCRA9TVsSAnZWagAADkwP/32/AVkdkBU8ruyEnK7x\nIy55Om3tg4I7iZodZvWlUgiJoRyt7HhqJqyRSRk6nGB/72jJ8mR+Rr6UKLpv\nQrooMIFiTES5ncqz8XgDU0LdW7o1uYeWy3u0Kz+M9eY2yiZGB19y+luvWaOL\neZvcBDZwK+fzS3ACKSVeJ07WdRkeFLFkl9lroiApW3Eug1mJtg85zFwEzPoR\nMmzo2xau0gciJ772eKjDPLY/pFOga+rrTDXV7RERWFHhSwiXcaaVlF1Tzzku\n4StglOT9KyCLsOGp8I85OksqLJRTPSzHyU0m9i3M/yu9PQebJKJ8lAQEG7u3\nQDbiAySQ4CyHC2VW6A9OzNB+178zAUBMXsswAApByB0JMwG+GJ9vtCkMcAEU\nqXS27IUmWhWBgwO/fv/4DXO8FLSJlcQtD6JbiZBu33ZXXZ9WTfx3YFqc5PcG\njM3JLvFWCtW2VRGry0ampnuG1/cvivw3OlO7HGOCNf6YjsgSgYw0/Q9+CoFS\nTRmVgWWkX4iDE6OHKGuEzw9utNFhB8qJuaRj2G7v9PTFKAJBbGm8dfd7kAbP\nGyCXnp6DxoIQIznRpU6gKL/uJc6dpROkL0ShxoLyijlvWuNWoPgj8nU1Is6e\nSOHLMPD7bYG203VzowdsnSKlivJ2vEkOvB3CzORoMoO/XL0xqutapg2TfNgL\nXCWJ\r\n=qaGO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"34649132e619e4ef4e1dbd01f3766c195fb29871","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.13.2","dependencies":{"@eth-optimism/core-utils":"0.7.5","@ethersproject/abstract-signer":"^5.4.1","@ethersproject/hardware-wallets":"^5.4.0","@ethersproject/abstract-provider":"^5.4.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.4.5","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@ethersproject/transactions":"^5.4.0","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5.4.5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.11_1643652994230_0.3204404706242949","host":"s3://npm-registry-packages"}},"0.5.12":{"name":"@eth-optimism/contracts","version":"0.5.12","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.12","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"e40212dd1311fe94b73800e52cc3bdce97df5af1","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.12.tgz","fileCount":305,"integrity":"sha512-sIQQQYMUs2G0sfmGJOENY111Dgo0Z2ld3ESslmMpFuhfPgbBHfDNK02jJc70Q5lNNW8eSpC+jeqKQ8C9UgHUrg==","signatures":[{"sig":"MEQCIEkuIteOGe1by6pYnlkCUHYa0Essf8V/BnO58FeBV91fAiB5vDTLjcgu3X/QPlLbuDUhF3yelidGQ1Pna2dYeObvDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6442495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/Y2YCRA9TVsSAnZWagAAkgEP/1FZUzy9tYR6Vr/BWi0d\nyw3FrWJ1IU2FhGXlIWgP5nzd4iBA0wWi1Ij+FxLt2WwIYgwv6OvgOjYh2Rxb\n46mM/Zg0HkLG6lS8swJwCT0d02mJChBu7q1cluudxi+x+pM0quHSpaciQCO4\nNYd8rrSuL1eMsEpuPRbfDbqCmHdJ1ZjypZYEfK03U/bdy/3Dr1sDjNGF73tr\ntc2FzAQi4XQpWA8/GDdZS+EhOf8be6kCY57pX60S1ymXJsVWn8fSG/33WKtn\nxzhToSSfItX6Q+h7RArrBa9gkkcRF6Kjl5akBc8NdbKhvHLK1QoPVhrAXOp6\ngL5ySEjAdE9zvJO3tAADaJ6Rrq+juAKhA3TtcK5REthbKjN7mzOFrYzprfPF\nmUsG6QY9fuPsjQekhZhH1bPjHSrw5rySSO5j0eR/4Lp5xCYyc4M+xGH+ElUv\nXeqAb3wJAlhwZ1cp3j+cpd5npm0pfoAxzTMmIKu18ENkRn1XrqN4crcLoqhV\nRvtK3lZGP/odmsCxJFsaCJtFthJQdSgKVslENRS5gGHuoCpqbyotrPCHH8wq\n74G7ptQF0Bh8GYIXnhOi/4szrLBHVFwFKoyPR8Mf298X94fLE7z2hzxuiGSp\nCETAuJ1sFiQoB8GkOXQiuO7bkZKpRe7Ad3UuDGJ+eQfVtUxkhiZWgjbIwjTE\nd5+i\r\n=dPVg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"17287cc491a1a8d70dddb0f05d7766e46e8d5b2f","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.13.2","dependencies":{"@eth-optimism/core-utils":"0.7.6","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.12_1644006808243_0.39085582378119965","host":"s3://npm-registry-packages"}},"0.5.13":{"name":"@eth-optimism/contracts","version":"0.5.13","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.13","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"bacc21b91c6a651002b630d677b96b9274fa5368","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.13.tgz","fileCount":302,"integrity":"sha512-uOzo5NUyoXThLcIxm5+B/QUEez2vKPFZtP5St1KKGg+WX5WJ/o3qc/BcFTFcQG15DRtAvHmNG6zYoRZiOWV35Q==","signatures":[{"sig":"MEUCIQC7PSh0YbIxGfwev55eVxGiFBsJtsJKkgNQrhzY31xoCgIgLhLI52kDbEMqSc9fS1t+kkeCmWZBuDl0pvQHbw4Y0wM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6435185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/zGUCRA9TVsSAnZWagAAIHQP/ibwoiSywLLcoVmHp0L6\ngkTH24ydOtBt/MMpsYoXjS6utoVN2p9J2VJIC5/QZtwlBP2K4Myv7N3uMWM1\nGwhwjlggibz8E0dsdR4JReKyIPyh1nqjieEgjPDgzqspCjmwZ8pH6gi1MJQ7\nKlJ9rnFGWObcx1ExKd/kGZappG/SzVvxwxJOehOWXMjPC1MdaodxRjRk47ET\nfDSEhtgfONYrTeHydNhTsaSNtA0rQ9Y4lUM4PqtFDl7BXzbRAdJQxWfmOZuf\ng/W39rOANz4ZKbD4LaqV2ccuKaY18GBS2OJgfyIrSbJe5d2KFvrUXwcvyl73\nZGblLwHFpQwumu6f0X6qiyqbUCHgd92EjCnffDOQiwqYeBzrnF1g61eoNs92\niIZkvKNjjBv1t1NKCL5PdyoDJWTXViRaQCesl0Gi+K/udsLWQVgBeYxkzUwu\ncOd0oux6NpxPQd8T4vUn29EIl8O1SV2gdHmetuo7rQWpQ/e/68aTeHD0t04p\nHv3HAJIfk3QTwdR7ASM3eqGdk42jsyi3H8lO0lELqWf7ETJqq2VeXtDwLr3O\nVXnzUgIiDUP4H0GY0K/5J0TnhCnX5dKJMhy7uycKbcrV+LQEXUPwTDZ16j4p\n9Uu3Fz95GyH8bbdUkZuzY23qaSrCWa7sFuuSCRrxQCw2DTDIf+STf9LYMXUH\nMewB\r\n=i9yp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"d10e31996aca39bc9529dcbe69a57aa46e6a84e9","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.13.2","dependencies":{"@eth-optimism/core-utils":"0.7.6","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.13_1644114324094_0.9440377170061234","host":"s3://npm-registry-packages"}},"0.5.14":{"name":"@eth-optimism/contracts","version":"0.5.14","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.14","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"8d48e7bed29f38863db0ed1fe9c6e658d32883e9","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.14.tgz","fileCount":302,"integrity":"sha512-Uan2Ldk7r7K6DiAH2hb/1f7zkY5Lh0ppF2KCfOwEZTItfo3gBQa3SG+XfdrB5wBdIt+QDTVjinD/Cg3WfbxenQ==","signatures":[{"sig":"MEYCIQCAs8v8HVY4mqLqKSHYHYd2TqsjPfIMnSSQeNQKzDbgSwIhAKIUdQeLNgblbOh7CfHeqsjBuz3KBiNX6b3hKGpe3mqL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6435185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBVAxCRA9TVsSAnZWagAAD0cP/j2NuesG9XVTqTPhT1Il\ndgoTjTJNgHZhQk4XUy7kxkMUz4F2mzml+Wl5Ax6tEi/z7D0NlmO3VgQG3e4V\nhbp/hiGK5CW5p+oFqqqDPZkXkcpxYyM+K+nbRvyQ3TW/+JN6Dtfm15iX4MCg\nYVThwc1l5vzmLKPtaMjQlCeuSCcOTn1utpnRl4gzjacoF3CQ1cW8MDwY+51E\nSpOQLQan/6hLtg5FYexmqoX8kt8vXnW6h8bBOh+8Yy491g1aiRimnip+64/i\nrRQJDtTQ8c5skBMC03Tltg/EwWiZBR8CCtEqMgStKFrtDXhWZmiKLm22cHOV\ndLL5SqORadF8XKRXlNoi5RQNuScBJtdjdAdMUpUCgK5Otd1+G7kVqrVfgZBu\nfF5tDptLja6qpG0d7GczsaUldkkdFIotmC0W2tWCqurioYpBenNcRZ3yR0xI\n2/1oKJJfalI5pogx/BcCRa+NZVnHG5iV0mgnzzU733BBLPJKs/TizWYbJ/WP\nmGaTIWO+bqoBMLlAQeeUL2n9ggVdrcH0dtBP2uwbDNU6E5E7+tQdSl6yG4vD\nXtTmgICBis69HvenBUi9pnDrPIfrhfZWfs5sPW1+ZoKh9l4q6bgNiPxfOxK+\nZhEsSFbadGItTZuVGHdIix/7KLQ5YNpkwMOhEZANYNbSmwHB2YUXC/jXaFSx\n6z5l\r\n=pVWG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"68913c1a052a291a6b256ac6848156bfdab44ac6","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.13.2","dependencies":{"@eth-optimism/core-utils":"0.7.7","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.14_1644515377285_0.08112482863558479","host":"s3://npm-registry-packages"}},"0.0.0-2022111165616":{"name":"@eth-optimism/contracts","version":"0.0.0-2022111165616","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2022111165616","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"70aa76e999b6738f5139fb50c07daa40cf35ed7c","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2022111165616.tgz","fileCount":302,"integrity":"sha512-uv2pQhfNBLfXXwGYBWZwioLMrROIIfhZBAPnpIVysIoX4p2vKWBPaaE4ukcqJDRBhZqEYPFdLcsYRF7xBwzlag==","signatures":[{"sig":"MEUCIQCZ+fspS4BoDJ0Bgjkdr/3vLjFCMowGtaanL0h37W/vswIgNvMUTW2SdewwZxcBOJDi3atjLLgfz+iw2KZtGhpnFxw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6435254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBpU6CRA9TVsSAnZWagAAje8P/j5Vp+xEBMJmWZg++OR2\nzBi75XfQx2iZTL1PtGDMCAI0ZYYCuguj2poN961SdFAJRTmPUE7UoiDLe+96\nkEDCbKCvE+t/vI7DesPV64kaUTK+U4sCBS6h569aF4LwKlMX2YVTQWAGZALX\nxSJ50n5wb9dzboruvv0P0WFB6c2LK7dpVVdqQAqRiL0AtiO7NWkzQvtYFfYT\n9Wp1aycNmG7uYqlE35U04umyn6S7JyuPE7eI0a7S/pDo6GLyklx1QPhMk4za\nq70lpQowEI+zXGfVXEhtJTK87TCxmDWREo6a6oA2VhECq3yGlNwJggWCN4XG\nNpL8R4G6OEdl55l+mozPn8+lXT5UokgN1ddLoNQuI+7SOMZTQoGqZtzHBwhP\nYnZIisN9Zv8s+ypFSPMZAlzmqfaRyxk1li/KDq0Do96IvuQDVkL2ZwIM4tqU\n2dt5vnDREkq1NOSredYwLPKCW+ZWd/b0F0hzEW7WCBAo9ygy1ZDQUS+fgG7s\nw7jAsBlZD7Gf/MQpjFwh4+qAosgSs08XVDu9OUPyWG8B9w7HrOBURoIWYthp\nGZNweG0GMbl1PkObJFdsBiKgQBfMTExIreyaT6YHpNvTsX7OcaTRFkeGUNUa\nbz+7mAyBCXAPFxEQ0pg+lV3ATjfTnLrBp8LYtntwUqNCaMYm8dWu7qDqtgxE\n+4uP\r\n=3gzF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimism (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","gitHead":"275eb818c0da86d029df09bcf14e75dd884aabdf","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.1.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.13.2","dependencies":{"@eth-optimism/core-utils":"0.0.0-2022111165616","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2022111165616_1644598586651_0.9491311275496508","host":"s3://npm-registry-packages"}},"0.0.0-202212020516":{"name":"@eth-optimism/contracts","version":"0.0.0-202212020516","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202212020516","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"49e54496994b17bb386024b036f0baedf78b40a8","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202212020516.tgz","fileCount":302,"integrity":"sha512-AY8PQ3BLRTihg+uSGIVtmQ23sC74FR2GeX90nR1oXyX2CQI9Ixm9qJn5BR8CSAWzLZxFGPvIb04MhYgrzKtHSg==","signatures":[{"sig":"MEUCIQDdXujKvfcWW5zisPxnbUua4mS33BEgp6KxISNcJT+29gIgHcCu1VtztGy5uuWXsGz2CVprSb1xPE46WOI5bWZBoi8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6435616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiEp8JACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpL/g//V4Aywkv3Vv63qjuEB01zJvzu+K04o+IEPuDdRJJ4NchEPoas\r\ngM4FdIZiOdKNBdZIQTJf2cRyM3dxOarxl7pCmhQhfZIZmb1mwF9iBOYf6Dcv\r\nqBYnkLaoUulXa4OEjX5cxTw0VIp9ADTnP807R6KAYsS3jx7ZCzIZocEE4bTd\r\nworkFgbYHISgOjg7pjBaWXE5xekDor84wG+Ne+9w8TNsqP+G5fRqku2tSmGV\r\nYjMpGWsEQ8LODD+R6ynrAT7CLksPZkrl5qYKDEyVQLicEonQ/lWK9vQbGIdj\r\nCQjREGWUnD9xlpqvrB73TeNtlvxQSOA5IuX6ATGoTER+wPdG16wH8ch5N42f\r\na2BX6S/q+Rj7Vy2yGqZLqEGFjPbeXxBdbui6AHynZkVItNv0DIyWDJsLsPcR\r\nLNb8w/icmOSppPNJww2YscOEVtkFkvA3MNSHY5m9qcsczf4sN5F1F1LgceOm\r\nQx8bKpIBYygKaYC0CBM7sOosPwnjsNJR5H5+wq4c5fc/Wd2RVzzNX+/CSXoD\r\nS6R58pZBqTAcRmRZ5yYz/MhiZANjmDWH48y0yIqfk/Etoa3lpk0guCrPKUiD\r\n2mepwZ8w/Nif0b0E1z2GODfzz+AjwoP3nG6JSzZK+/fP21Igh8e4HzuSjsRE\r\nKeRQbPPgQZY73j2WMRhb3W2B03P+8edEvMc=\r\n=qapD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimism (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","gitHead":"2400ffc113ee1e09a963465613e6d65a2bbda4df","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.3.1","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-202212020516","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202212020516_1645387529526_0.2906521855719131","host":"s3://npm-registry-packages"}},"0.5.15":{"name":"@eth-optimism/contracts","version":"0.5.15","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.15","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"71f538172acc1bab0894ead13468a7063b078adf","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.15.tgz","fileCount":313,"integrity":"sha512-UP3YnxuYebZS4Py2KMTE5AbkuEu/Yk/EtX9AOm0xLCxh+htet2oQ/GahwleLIq8mW2pFtchzc4zARYUJal49ug==","signatures":[{"sig":"MEUCIQC02Rj8Nvdv/YUb9lGFw353vHikLAyxpKElZzrVd+r52AIgL0PY3kKdIMbwRV/AA3Wt3rf8EZ8oInDBSK8JHwkc88g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6504165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFTQAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrlzw/5AWEmiNReHUrIRp0tez/9+UQojtKpslI8E48IGO3DEC281TwT\r\n8kVxlXWr7apwzFsduH2RZ+/unQBcKOWt30zZnXT4dmOyPEKjgcPQsVZUlKSW\r\n2OwjCWdvhxYwGKSEAqN+dn40vbQrjbJTeJRvplhpbOUutDpVHAABhK9uDPoE\r\nDYVBnpqY9qPdL8BjpLQPrWVUjLLmSCUo20cef9sJkoKwvVT9OVxSEggZZjhj\r\n3C7lYqSeUh7vmi5yUHFh9f7mTXGfn+7ThjphI34ePGIpwQt9auYu3RwbZUBR\r\nI9fZj/1apeQ4Y5gRdTDsMwGp0tu7ZnA7Xk8a5K3TCpPdVr67OdKSHVgavvUL\r\naoZpXzep0RglHqGnLDE/i5X08Qy6+UXGGTWPvToOyw5uXQODXB41Pqm0LFcP\r\nJDM3WjKdk9sU3y52waywtKE5yt3hkut4llWzbSVAqrbpWJFa9s04/+2H7e8+\r\nVdqJmqAtDAUo0IjURx+lSdo5iBQZP9uMT+rp7bi9MkHEMdHCbvYPUrPHpHfU\r\n+znl48HXCNXKlVeNXrXRMiJA2SmR+771eWjdVCdP/ibYXf5zvS/wW0TxZI9v\r\n/6Ci1bXitymSeBX4OOqebOyjjT3nfBJ05EfBwv4FY57RhlJMGt+9fXBGj95/\r\nfmMUtG3qVl/01eMPsHEciQz3YW2H2T9hc1w=\r\n=K3eG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"bce23b77982afac7d45fe03ca9ac300fb1b56f66","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.3.1","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@eth-optimism/core-utils":"0.8.0","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.15_1645556735871_0.06610932406475056","host":"s3://npm-registry-packages"}},"0.0.0-20222319056":{"name":"@eth-optimism/contracts","version":"0.0.0-20222319056","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20222319056","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"4b50cb649c004da855627fdf037d5b7a9c2baaa1","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20222319056.tgz","fileCount":313,"integrity":"sha512-S40jX/CUb0ErgRq2rzj4UAZY2TATDk0hw2VTZGK/gtZIIZKQm2f23PsqqZR89KcKaRrMPbVOyX3czzqMBIU5lQ==","signatures":[{"sig":"MEQCID89mqicUNRLuKjoYd4PqwRFZv7B0VCvHAYuoeOoPt3KAiATVAk9J1thiFv1rR9qnfZBEIfvhhRUheAfU5AP2QW9IA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6504188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiIRCkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoRxw/+LAeUQBVL/n6bEvKjz2x3LrzyKGk695hS/75rv11Pi/odlxXx\r\nUjLly7PMmGZ3f24Y3Ir5b56xx90SF3W0o2izc90ee5pM1NFDG6aLtNySKawq\r\nveNG1Ku8OEjxMhck6pGgO2FC6qH0sbP/fr098FJsWdPHABXJXGiOjIiatib0\r\ns2lfLyoRDsuuVVPf7B92SpTx2vdNEXppq//LAYg0oY7p+Tn7Mbwyyak/OKO8\r\nlE5j998NaHbEBFnj7hnFrSBAS7xGpO0dgzFHAplYxsuTYkkq9rPcnJbX+8Oy\r\nxAiOQMXAemLlx6mk6vXkuO1uDxU0YBQvUuhq4sMg7uuGyqacd7dhv4ZuPA0W\r\nTIzM3DxawHVq2nkFqhb8YBspCQ2bcnahzdhYJcLOZQOfDbYfwEsQZIT7Q1WV\r\nAWgipGlGDnKaRYOBw8cUCTsplUP/VgyuQ9dXhd0mfMH07skWJ1JWRVZ0bEJo\r\ngBtolCEbu352WWVW5ZqvyLzjNxxotGx0l57HUw5w35a67ueiupX4kLYhuGG+\r\nBHqm9CjBxmqBXZIY1TW3mZn2vQmXFeoiew/5O8XAmb8jDnszcBe74l7NVhgG\r\nL561qwLr2D0caByGkBADHx3SO/yeil/ofUjWGQWgYL2iKq6ekUObX5wVOob+\r\nOpaSlEK4lteDtOgsbezyVZ7VU0s4kf6w5zQ=\r\n=dPgm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimism (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","gitHead":"d7af537f505848d6657088f837ef6a926cff79c0","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.3.1","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-20222319056","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20222319056_1646334116276_0.28427504707329065","host":"s3://npm-registry-packages"}},"0.0.0-202223213144":{"name":"@eth-optimism/contracts","version":"0.0.0-202223213144","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202223213144","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"ed168195f7101d25d4f2936e08d545f390dbee70","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202223213144.tgz","fileCount":313,"integrity":"sha512-ehEIgxpJiwwYM9Urpx3IhfCKcwwt9igNV/FcCVCuK1q3Cz9cvZbZ/jQXMb8XQjhXrLestkLxHTTRjouXSyaCHQ==","signatures":[{"sig":"MEUCIQD+lkgsiftEi5rAju/lDD31wQpJ4AnI4moQeP6+WlHt9AIgU70jaXUUMDvhltLcnRpvTI75y/l22h2xY2wFN/mXUAc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6504190,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiITPJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo9phAAiUowZh3JyA+S+p/bX2esOyY8+jMvokxZQtOvlcAGoLbVq1Jl\r\nA4CWh9cxdvpGyhv7/SMtYNI4Cq6SNTxqe+NzRQbXgDhKz+CKj+9q9i8G04Th\r\n9d8xKZBP+jGpxo5EPs3vBPEceMtxvq2BglD7m0L96v05K/cGMcuKTcWfgIXi\r\nQDaVq455Csfi3E7vAClRtsmD2ixnTMjGLEt9HE1Xj74I15rX5FpGfRXOafJu\r\npqhmMWnFi9PPhM88gz1jW6ytYgqxShZw8osDfk5CGfLdVV3qR9eVjKW4NUUK\r\ncH/gGaMgzMZgYBC34FhSU+/D75AkiqyHYj0gh0d69BNun2l4HblOKh64qXQF\r\nl+HRzdTJaZOs8/HsGXWtdH6N8pjVFIIQGLKsj3IMk+GjR1t9LSjbo+Rlxnws\r\nH3LxZgI2rWk/X2MNiQ4Hk2XUEinC29zOOlJ6iApnBImTooyi/nfUk/zUTOKx\r\n3H7kRWbvh1c8iSQx5THmviyd1qxCko0Qlf4fMlTnHI01RkiO6s88bCWU2pNU\r\n5AwfGsEkciwSWvr9UfkjAqstOeSQsImSlGaAjnuIp1rRNUftBTlvYZ/zfo3W\r\nh/eDkfn2JHhy2z4cVKGqxIOZWfhi7EUtbUCqlBvmmqXaaTT53BiceBKdXBYg\r\nXFH64IyHyd6u6Pzh+qMEVlsNFQD//z8pE/E=\r\n=gJEF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are deployed on Ethereum (\"Layer 1\"), while others are meant to be deployed to Optimism (\"Layer 2\").\n\nWithin each contract file you'll find a comment that lists:\n1. The compiler with which a contract is intended to be compiled, `solc` or `optimistic-solc`.\n2. The network upon to which the contract will be deployed, `OVM` or `EVM`.\n\n<!-- TODO: Add link to final contract docs here when finished. -->\n\n## Usage (npm)\nIf your development stack is based on Node/npm:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/SomeContract.sol\";\n```\n\n## Guide for Developers\n### Setup\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n```shell\nyarn install\n```\n\n### Running Tests\nTests are executed via `yarn`:\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\nEasiest way is to run the primary build script:\n```shell\nyarn build\n```\n\nRunning the full build command will perform the following actions:\n1. `build:contracts` - Compile all Solidity contracts with both the EVM and OVM compilers.\n2. `build:typescript` - Builds the typescript files that are used to export utilities into js.\n3. `build:copy` - Copies various other files into the dist folder.\n4. `build:dump` - Generates a genesis state from the contracts that L2 geth will use.\n5. `build:typechain` - Generates [TypeChain](https://github.com/ethereum-ts/TypeChain) artifacts.\n\nYou can also build specific components as follows:\n```shell\nyarn build:contracts\n```\n\n### Deploying the Contracts\nTo deploy the contracts first clone, install, and build the contracts package.\n\nNext set the following env vars:\n\n```bash\nCONTRACTS_TARGET_NETWORK=...\nCONTRACTS_DEPLOYER_KEY=...\nCONTRACTS_RPC_URL=...\n```\n\nThen to perform the actual deployment run:\n\n```bash\nnpx hardhat deploy \\\n  --network ... \\  # `network` MUST equal your env var `CONTRACTS_TARGET_NETWORK`\n  --ovm-address-manager-owner ... \\\n  --ovm-proposer-address ... \\\n  --ovm-relayer-address ... \\\n  --ovm-sequencer-address ... \\\n  --scc-fraud-proof-window ... \\\n  --scc-sequencer-publish-window ...\n```\n\nThis will deploy the contracts to the network specified in your env and create\nan artifacts directory in `./deployments`.\n\nTo view all deployment options run:\n\n```bash\nnpx hardhat deploy --help\n\nHardhat version 2.2.1\n\nUsage: hardhat [GLOBAL OPTIONS] deploy [--ctc-force-inclusion-period-seconds <INT>] [--ctc-max-transaction-gas-limit <INT>] --deploy-scripts <STRING> [--em-max-gas-per-queue-per-epoch <INT>] [--em-max-transaction-gas-limit <INT>] [--em-min-transaction-gas-limit <INT>] [--em-ovm-chain-id <INT>] [--em-seconds-per-epoch <INT>] --export <STRING> --export-all <STRING> --gasprice <STRING> [--l1-block-time-seconds <INT>] [--no-compile] [--no-impersonation] --ovm-address-manager-owner <STRING> --ovm-proposer-address <STRING> --ovm-relayer-address <STRING> --ovm-sequencer-address <STRING> [--reset] [--scc-fraud-proof-window <INT>] [--scc-sequencer-publish-window <INT>] [--silent] --tags <STRING> [--watch] --write <BOOLEAN>\n\nOPTIONS:\n\n  --ctc-force-inclusion-period-seconds  Number of seconds that the sequencer has to include transactions before the L1 queue. (default: 2592000)\n  --ctc-max-transaction-gas-limit       Max gas limit for L1 queue transactions. (default: 9000000)\n  --deploy-scripts                      override deploy script folder path\n  --em-max-gas-per-queue-per-epoch      Maximum gas allowed in a given queue for each epoch. (default: 250000000)\n  --em-max-transaction-gas-limit        Maximum allowed transaction gas limit. (default: 9000000)\n  --em-min-transaction-gas-limit        Minimum allowed transaction gas limit. (default: 50000)\n  --em-ovm-chain-id                     Chain ID for the L2 network. (default: 420)\n  --em-seconds-per-epoch                Number of seconds in each epoch. (default: 0)\n  --export                              export current network deployments\n  --export-all                          export all deployments into one file\n  --gasprice                            gas price to use for transactions\n  --l1-block-time-seconds               Number of seconds on average between every L1 block. (default: 15)\n  --no-compile                          disable pre compilation\n  --no-impersonation                    do not impersonate unknown accounts\n  --ovm-address-manager-owner           Address that will own the Lib_AddressManager. Must be provided or this deployment will fail.\n  --ovm-proposer-address                Address of the account that will propose state roots. Must be provided or this deployment will fail.\n  --ovm-relayer-address                 Address of the message relayer. Must be provided or this deployment will fail.\n  --ovm-sequencer-address               Address of the sequencer. Must be provided or this deployment will fail.\n  --reset                               whether to delete deployments files first\n  --scc-fraud-proof-window              Number of seconds until a transaction is considered finalized. (default: 604800)\n  --scc-sequencer-publish-window        Number of seconds that the sequencer is exclusively allowed to post state roots. (default: 1800)\n  --silent                              whether to remove log\n  --tags                                specify which deploy script to execute via tags, separated by commas\n  --watch                               redeploy on every change of contract or deploy script\n  --write                               whether to write deployments to file\n\ndeploy: Deploy contracts\n\nFor global options help run: hardhat help\n```\n\n### Verifying Deployments on Etherscan\nIf you are using a network which Etherscan supports you can verify your contracts with:\n\n```bash\nnpx hardhat etherscan-verify --api-key ... --network ...\n```\n\n### Other hardhat tasks\n\nTo whitelist deployers on Mainnet you must have the whitelist Owner wallet connected, then run:\n```bash\nnpx hardhat whitelist \\\n  --use-ledger true \\\n  --contracts-rpc-url https://mainnet.optimism.io \\\n  --address ... \\ # address to whitelist\n```\n\nTo withdraw ETH fees to L1 on Mainnet, run:\n```bash\nnpx hardhat withdraw-fees \\\n  --use-ledger \\  # The ledger to withdraw fees with. Ensure this wallet has ETH on L2 to pay the tx fee.\n  --contracts-rpc-url https://mainnet.optimism.io \\\n```\n\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\n","gitHead":"9ac6e309817604374222f2bf5b03de62f1774929","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.3.1","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-202223213144","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","yargs":"^16.2.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202223213144_1646343113371_0.7092385057609063","host":"s3://npm-registry-packages"}},"0.5.16":{"name":"@eth-optimism/contracts","version":"0.5.16","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.16","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"eb76a8dcb749d92aef1c12e27a74a192f5780215","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.16.tgz","fileCount":313,"integrity":"sha512-4nufUjQpCyCKCnaPQ9HXEkgnDEOsd2+tat7pCkU0syfLbhrHuPwLXWHa4B0rBN/4ZDbo7fy2P9HvwiKzX2khSw==","signatures":[{"sig":"MEUCIQCvC6rxk3QLd56tGB1OYhiSllXub/SI/xwheuhPv6N9jAIgNkD5YSjcJNWDhwkizrUy56/CrUB/Xv5CKXBgKxRWvD8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6508583,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJbnOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo4PA/+JFxTr4YcjwaCDyZbvpvVMiGgmHbUnfj4xUMmAVaRonWdDCDc\r\n/vtZZyBLfquJJ4sTWj7r5+DW8qGoeWLEDZ2Audj4tzSMJVrNVeMXjbjTMCql\r\ns4gjWjHHoIGBzgdQhERF4io6cXdMT3CGt5MGpDiXjI/pqoeayKJ1Q5m3vt3h\r\nlCirE7SbGuOZ1qIpLOppQ3nBEgudkcapnnoGeVbubfr56275zy/mpzUcpuZf\r\nLVJxOfNq7ecBNXCKe/wFkRsi+SwVpKaFl87dHjSX48plQykg3REZg768oga5\r\nofKXYYZRAZVPTFcluRh4hstCP+7wEcyWj0m4o/4508atQ32GNemOTzWGHvfN\r\nt4/+yRi2pZSLOq6X2j82nZTKHhy68spGjt1feCXdz5d4LTTXGoPf9QwlG8+q\r\nJDM1cUy26co+NdpM8SIVjz3fQywdYLan3czHQVzDiFrwiK53+QiDuK1PDWuP\r\nymISMgrgmy0NzsDphdQTwgk3vejP/i+zyDDDHYg/JL+IxYE6smulO0P3/zQC\r\nOx3pilx0/5/1MFemoFgf0drngD3nQjUaDPC3cwAcqhHzNesqu7+z3qE8iEyw\r\ncNm3FVUatJDP3469KHr7Ynig6fwX/Mr2NO96RYmjd3NJHyWQr1xeeVo3vxoR\r\nDoJ/jssuYuQ4GjnodoOslC+uUzv/Y/1zUw4=\r\n=R3MH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"a3a5b11dae44a35bcca383172ded4cbc80e54a34","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.3.1","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@eth-optimism/core-utils":"0.8.1","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","@eth-optimism/smock":"1.1.10","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.16_1646639566144_0.7620036896241966","host":"s3://npm-registry-packages"}},"0.5.17":{"name":"@eth-optimism/contracts","version":"0.5.17","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.17","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"7a14618797c354486f2263a1d5dfab6c28a46458","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.17.tgz","fileCount":313,"integrity":"sha512-mkey2YjRQ2O+85qeDhkiicAiukWfKixw/vktFO1KqLQ9K2phozJu/79dgBCABjyJfhE5kqJDSn5fBrtgIfc3hQ==","signatures":[{"sig":"MEUCIQDmpjaQCQRowbt6AR5sAu8vY1tF2NW8lOc84Xv3W+ICpQIgMqBDE/MqZoqIiaW2dba2FI0uUKGhUTRHJrh1jhnI1js=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6508570,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKkwWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpFhg/+J+UYU7Kci/UJrtu3I1Fm3jueK1VYAUBzfavVyrqTKTh0OnsB\r\nkmOpe1NQHelVsltIq5n2iLDrQ+KeSMKa0nLHOP8NoUYrQg+f/IoLx1Nm6ckA\r\nvEFRLl6XzIqMHi0hJ+xlFsgTZvQHRF13rrhI36qaW606zBPMYkVNsa+spsd7\r\nzJs4Sb2hmKfGUpJ/aC5Q/BH2v4U0F3ynzXURsH6emg7JD79qyXX6/kkPf0Cx\r\nS7k5ACJzT/Dkpzcr7RGhSXkUUvybqZIG6NgQQkUeG0AuPcsOaQHqZbU9L5PR\r\noVsblndCeioQVGl1+YoI0fazQ2a54LsLol1GA93ZzQH946ULSGZ3jDUdEQLm\r\nKxtnkT+tIWovztS+d4oNHCVm4a+wmwxwXJcx+RNTHJNjR84PLVlBtaysyQ17\r\nT/rZnn/OeKsyD25oKa3Uo7S6ncKe3oCWKs4oZBZCOhUH18cTtCDz4ftbX025\r\nBYn+UxZn9gFuXMgcjddQFrgdBHJRjDJ5bTmwqy2L1KYEB7vuGWTF9uTdE1eH\r\n4CW5Ki0Iy1B7Nm3CgbN7MGFADFVF39cULNZv3Wmln+ELJn8IyT5u/0yjEbPX\r\nInqwJj3VAycVTBrZRF5kHFmyKR82CsaEIHwPDM5ujwyyFUoW7/Zw/bwxq8j0\r\noQFYr/bx0e2rAEfVFvracMbsRNv92hgIN6o=\r\n=3/Vc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"c74649cd2cf1bdef290a9f503f79bd16b7b9fd99","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.3.1","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@eth-optimism/core-utils":"0.8.1","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","typescript":"^4.3.5","@types/chai":"^4.2.18","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.17_1646939157743_0.23273449561815984","host":"s3://npm-registry-packages"}},"0.5.18":{"name":"@eth-optimism/contracts","version":"0.5.18","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.18","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"54b3d05ef95e68dc5154786c7c4dd252f5ce1706","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.18.tgz","fileCount":313,"integrity":"sha512-1GyPR2raj/BR1isujE4dlJeHpt2+PVkGzwXCslSwFcgy/A0K0/z/u2j77qiUVVTcseV9MYmdYJiTWdlo/Df2Ew==","signatures":[{"sig":"MEUCIDq5XbPw7LLJR4DQs9yeDHALtNUt/K0tAKBN/puyEemYAiEA2RVCBUA5V/CNmvT08cjuT+zRcT1z2EIBbE3aJGApjGc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6508840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOdcUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/8Q//d7L0/7sf2JMbbOK75wsBFelyM38GIebe4Vo+yMqqtNufpqsd\r\nVqNr+MYe1gZxHCrtz77G/sIdMZaMqjAEcQ+TjrV5z2Oe3cvHoizWGa2JeNad\r\niBXnwSlN++fg48xZrsNZvEi1og5FMb+3tpn1L8YW4/hTrkifc3Vytx0Kc1qt\r\nHMfFBZ/EsLhEc2TKV4DzQpNfF8hEPeyowTuT1cBgrV1zjgFgE0QvL1NKuO9A\r\nRTPa+2dDF7yKkDUwAaEozlxaWOv9ExYOeM1m6S6wOv3OxxBaj8H25iKPBSOU\r\n5UWUpG/Ee+mDhmyIuCCB6JZmvvBPhC84VSQ4rVIPUbWbnnR1jbVnhAKCYchg\r\nDPaBFZ4Lp4erNaslEVwh3cRJw90sMsQhBJV+2fNCS0Yl4EPjQQPFYRsi/bfd\r\nK5S2zylG6kuCEoQddW3OqCmG0TZ32V3feI+TRPnUmGdMjUNyu5cNGu6Ep/Gf\r\nA7W50P0HdgfxoZxVdeNJtylqh3dZZ+r5G64QHjYx9kOl90i5aOQif4PxKrha\r\nj9j99TSQKRU82NWhm93dQP9+RpCM3DpkFS1BiAoBEzeMQyxerh6kFKc0o1sX\r\nDcYoMipyETOuefsEpItnK90VFb3I+XUxuh35QYCrawiKXWRiydLAYJ+oHbWC\r\n3hHJ2MPfAtNCQgXKt8Tx2Yho1YGuqaGwV4Q=\r\n=Yns3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"1c858502f9d1b6c08227e0f6512d85f55f82e377","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","build:dump":"ts-node bin/take-dump.ts","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.3.1","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@eth-optimism/core-utils":"0.8.1","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.3.0","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.3.5","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.0","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.18_1647957779807_0.436670072321248","host":"s3://npm-registry-packages"}},"0.0.0-2022310341":{"name":"@eth-optimism/contracts","version":"0.0.0-2022310341","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2022310341","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"5d34996ca73c341792a0dbda6dd60ce86ca12c62","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2022310341.tgz","fileCount":317,"integrity":"sha512-DyogHJKYuABHgOZgV1sv00i3Wmyt5eFOxlN2HPN+BcWk91rerAONS6c124FFpDVhf6FLmG9VJdye+ElledcrAQ==","signatures":[{"sig":"MEYCIQCHxX9dRsNEXbM6TEdMj/2zIpyH6vzytNPDNIPss99EfwIhAJWuBEc+3rHHJxdE3a/6Z5mw9hnB7KQLY0UcZxNMSqcJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7674459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRkFrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrm5hAAiy+8lvKlHc54HegNbxb/tg7qG5T3mHYtAlvHVBttvcPw+vIz\r\nSKL1+JsIOVoL7OfTcW1bj8nQFNMuE1QKjJ+1QA1bOJ0Oe0YF28s240w1ccDS\r\nKnd2jpKXBK+09gD33ZjdC9TvECp5yhOEhDY5KEX5vlR5iVmRz9IGuK6KtQdF\r\nLfiPgxskbuVjWU5U6/di4kD1eJiXhhhMdFaJBbs10Z3B6+mgQH2Xa+tCLJ87\r\nNxd2dRI/b9/07tq7BqeYIrEN3YhacMzILXDVs42Jl3/CJ5nMPB7Qvc5DtfG6\r\njHqYR4wUYwUYvbhFEE8W2hCVvwf/ZP+0qPN1eHerj851EUrhWmPKLHwCfFak\r\nOSlRjHfGjNc4XHcLOk4R9B4hkf04iTPH/i5sV+dcoAUxFd/Tb3hI1+4WOIjb\r\n2dnPDbxPrWZv+CaFo1DCOdDCTy5l+96saNyM0NGrLbKJnFH7QAZj+JDGyQBI\r\niXCfhECETwwOuwu864Sc9PaouLXrw52Xh/ODuV6Drci8jcwz64VNajPBOfw9\r\nEDDYNqkKWY/XyRdw7bhVHMyzEhgek0eEFUjBFDmUV3KMt2ZgD/60dBJi9vjF\r\nhld56IPsoAxCbF9jJvrqa5mjK/OlqIosDJCa2Sx4+nvM76h05Ejz7C66CgHJ\r\nvOpLLYyRKQupZ2CnhwrCXMTlEAEhopBvqYo=\r\n=0GtQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"ef1b11e91f268a1b0807e30f75ec344b20752b73","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.3.1","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-2022310341","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.2","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.3.5","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.0","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2022310341_1648771435202_0.82591149154094","host":"s3://npm-registry-packages"}},"0.5.19":{"name":"@eth-optimism/contracts","version":"0.5.19","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.19","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"447af74fce3cdaee0f7107b72e4ff4a64bfe1473","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.19.tgz","fileCount":317,"integrity":"sha512-sws52KfpE6HfFZ2tRIb+C8P32IPlcOQMDXaJMtJiUNXGvVNECaTHTZVYJIWXMO5bU5mALkfFnEu4qu713KWRyQ==","signatures":[{"sig":"MEUCIBktK1AVUM8NER6OfDFmbtoR9zYW+AANipZdcmUu+AodAiEA21dGwdkfFasRNYfmZQWBfzfX5H5jYA6L+7XT4bzy7KA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7674438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRllxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWDA/+P54/6EPWsGp6FrxGsbiDW9XcjzOLzn6EGEjGWJAQ8j5IbMcv\r\nR2xQYHn+kiHNpmtaF9ipBU8BjJqRzFV4Ub0qf7yEJDu5aIXvgJypRyc3nCxY\r\nlUktWTZNRL30YG52TDN6c3pwcet8o/ec6RP6X6DGX5Dk+RmpxwuGfkxIyIDh\r\nGdHdcYk2Co1nackeluj/LxmWZJcGC1BizZQ47mbtuFpBtLOzvOY/aiKvyhdA\r\nFCX138f1SBbH3+ixKEgZrILv6juDZkq3Yzat33kJVVDM2MqF1fMB2aMemR7F\r\n7BUwCUsOv9pZpVjn6lSJrtvGGwXG8SS6cNVt4t9A125/qRfcxLgWAhcNWkmo\r\nlgYUhh3nBDicUXz8g7QgVOysM143mkJp7LvesVc4/tJCbBOgjplDguZJV8t2\r\ncKlHNrGE/6hv0QmlOgbtqcG+8jM/NXJkC0GtqTnFfpiZkQZB/b2YoonHHBXT\r\nQ0jba1HbAfFBzXZp7BHGaFB4AAe5A4/MYS1iULwlMXeEUHR0FtBJ1dY7Rwyo\r\neo+0CQKlpTkGbEi5JfIEcFqnANcKFaCjLxSU6YMJBi0RYkE6D4+Z3sZxb+m8\r\neUGZsi0raItD83Ucs1b8AQxqbcCRJ6n1G7phWYa6FCN6FMlbIxzDpUwq9Gd0\r\n5N5pirBi6Qc6mSbCzhaEwARdvrp4teftbsk=\r\n=YnuV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"49115fbd09c50048e21da7db31b131c6b4ba2c6e","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.3.1","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.0","dependencies":{"@eth-optimism/core-utils":"0.8.2","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.2","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.3.5","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.0","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.19_1648777585530_0.9980635192876235","host":"s3://npm-registry-packages"}},"0.5.20":{"name":"@eth-optimism/contracts","version":"0.5.20","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.20","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"3cc9d97dbc924d629bb4446237b8a54b32676533","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.20.tgz","fileCount":317,"integrity":"sha512-HliboXKsiCFJdtiOlqJH2ZS+u9lkvXqCufpSnNCOrvxD4J3O8VkGUZib2Zelaz6srIX+23z9zM5JvqLYX/bubA==","signatures":[{"sig":"MEUCIQC5Xg2Ox8ykdlUL6ZtLXTWENiQVHgYUwM27uPSthZCxNwIgGsWn5Gofmh1dnhsI1B/lC5k/xg3JDfAFbp6lUPLOhKs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7597413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiS17ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoXkg/+Kw8Q2o2+ps91ZIFRwf7aU9lsFJXsjnX9LnAWRSAWUEMpCQyW\r\n4ySaXe2qVvSSZckh/IQs6eBlkrpRMGGv5NerpEEi+tsmHNS3yUM1NvlxTqOx\r\nLs84/D+8Z67hNMRk9+qYqXyuXpDvoyr4MeYSyFD9Bn7SbNPUSn5KYnGwNmmp\r\nEx+NcjLiF0bEjP5xJnjI5yvmKiEFmjYO5STrgEskaUIUX4nD/DYxsIor55Rc\r\n2KX6/4R+H8PBVtDn7yidA1bmXiNy5ezub3IY/GopCNmC780myuspPSdCR8CL\r\nIptK3uJrP6AppTVuFv9VoZ/VqHUNsyWYnxAJfn/t6y6Tdcl4yBzM7kLQfrJ7\r\nZiXBrglM3+HvSmDNk+dr9n55+RiSjthMaJCge4um9HMnjBB/5PP+eyvEYCGx\r\nJ5NazbiF4KdnhZsigzpTyfMq5KCKEO3TBm8OZlerqazpsRcRqM79peWU2m7A\r\nU3s8Myrn7XDV7e+qOu7dUyyJ1eFim4NaAsvDWmTF5dDzQwxfSKNc59XwSmlU\r\na2jCGWrERv6jTrYywIHpa6RKk6cxlglWRaj8loiYzIrWOr6hflJuCkYlRB20\r\n8Pjmw5LP0Duw8nEo2UVk+jaQPs1IqshQaQ+IXXhbONFYvLLzkm6q4n7CqKiP\r\n2S1oBh0uBjcgCjxWRguw4LdMbk1lmsnpzwU=\r\n=VkgT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"71240b1d9db330232361f2bab7669b95874ea650","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.2","dependencies":{"@eth-optimism/core-utils":"0.8.3","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.2","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.0","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.20_1649106649646_0.24727217289836556","host":"s3://npm-registry-packages"}},"0.5.21":{"name":"@eth-optimism/contracts","version":"0.5.21","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.21","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"8f7d4ab8ca19fce9f4e18397a4b7c94e5c86e169","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.21.tgz","fileCount":317,"integrity":"sha512-cVHL95buBeeeHxA35g9Dz9zauw9XNOBgcFNDOkKm/3HGNyOlmcfkjZbSlxfAUzUrmXE1EdQz+Y9nLd05GHI6gw==","signatures":[{"sig":"MEQCIAnV76vrtrrwWhAkw8cYjeIOoXrniCdzbdxMiw0j8SsyAiB2F/Rsq2iRkVG9+DFq260IgWFi/31EUG4zENnzS8npZQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7597413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTbPNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqr0BAAleeTCXp000EjzxO/PL9A72aGjHz3SQ91kzqPRIS9UEXy3O1S\r\n45ZbGfoR7AKrdLbVefqVeHBvMZwD1BZbquyNQAI6XFqHGqFITQo7NEBLKgz9\r\n0XHnAfQonyb2q0cyBwhNsEfRjnjGof279l8cmpEs2wWzJ5xf4WmdQkXDyD+a\r\nJxVG8v/OE1Xi/q+ZM0CmqMTHhVkwMSJQQ+IYAdDYxefWSw4s35wcbvOjS9F9\r\naa26MKfqWE0ymYdlBTnSi52CmYjPuuYIo1X7WH0DIJ5dHVY+cW3b/ZXc587s\r\nPn/icStIUNYLUVSnHp6M1Uy5FUfS8fEqM39vSsU9fM1kQIj5E3Q8onSRfowq\r\ngW0lkLdHagq5wHdNitmyvyjzRjhpA1gfL1cZ0McUqadvUDmNtJ3eLI4O3D6P\r\nZYlPH8s57grWhtPcvuq9vn96Ifw2GD6fjqVrXzhlGetxI/yfpZU0SFW5JNYU\r\n6Fl3CNfy0kkj/J4zSe5KnfF0R+n8ydzhljIU4ybcnmHqPt+D2cSaSJXxg0gu\r\nb8uoj+KJ/k/wq5gt5zUUKa1npsik/iT7Jt0EhXX4fxGhI/ehEk9j7Qty4/tY\r\nlUScy7kHy0U36rVi34znT9iXqpjy+DTpj46KbC5t/Fl+OkbTjxG91YnYfJpX\r\n+Ywf6AEauZAD2pnjO7YeZYV6grNxRgZ15IY=\r\n=cc7M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"2c4e4b30839ae2988217642541e73566eb4f82b3","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.2","dependencies":{"@eth-optimism/core-utils":"0.8.3","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.2","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.0","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^2.1.6","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.21_1649259468912_0.7925419978543189","host":"s3://npm-registry-packages"}},"0.5.22":{"name":"@eth-optimism/contracts","version":"0.5.22","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.22","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"0027bc9d6b95727086b0b6a605c7902813fcefc3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.22.tgz","fileCount":346,"integrity":"sha512-sq3qlS3n64zEzJ11jhUHyMpcu6uoeinoRjlaiSpkCyRFJHsuKDQeCAghqVw4z3KxcMye+7kTr02y3+7i6i+vBQ==","signatures":[{"sig":"MEQCIG1LIXgln6uVLf6ks2+bLmrxKkHuMHLfZu0m0RQOOqZQAiANyCj/VDaSST6N6OS7iPnrfh6RhH1Zv2JnnfjshVWzYA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12468885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJib/DoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrcnRAAgX+SBj6NpIGmAR6jaNY3cBaTx0XY0j0pjOvAO9gS9hStQn8Z\r\nsFFl69DaDPbr1ptnNdKYY9M92+pPSj+hF/HeZhR+4G1K9+831iEpxktUHxmv\r\n4borcXsTX5N5y2JddASTAcNrRZ0AVGVSAlKeSwXEHxK8CZjBvUoVEzOvDgiw\r\nvqBAyWdgo3OO9hBtlei5B0EDz7hYTRJSydbgbjexEHXUs/9yd2xnYpX6V8Mp\r\nTiEHsM7nDEa0nw2++qubfw8VVd7WMxRecVdl0F6isl7FeVQZW59iH/9u0l1b\r\nwKF7uvJRXGFuV2IAebp3WXupb42EfXVxMjt5yMCLS+ESRZQ8jtjYA3/vAUkY\r\nrifiuyqxV0/aotqVWpRhEaTC71TmZkY0njD4zYzQE3qvoTH3H4j110i+IYrQ\r\nI4zAXlY6DwD9Xgd5KiaDzw2/P9qbWOHQIBTJpKSaGV2lwHRtx06Ff2ufwiT4\r\n9D3tgznTSOA8bs/Q8Cv5355meBSMwy4zFzFQrPgNPWwvBNBP00n5JplXYqvP\r\nIjpDBHAXoTj/ERRZhsbkHYt1z/Xln9d/06MvKZ26myvKYShVETPANBShXxJL\r\nJF2LUgNCNXgb/O/HZfHNftqPYFObGA/uqej6focdTMfQjgQoF5nZzWQvibdp\r\nhEvnyBtfUxajreHwW2gS6U8nhN+0w9uhfT8=\r\n=scFx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"0ba3204fe0023de095161b68aa2a7ddb44ce84ba","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.14.2","dependencies":{"@eth-optimism/core-utils":"0.8.4","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.2","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.0","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.22_1651503335850_0.4530816801873643","host":"s3://npm-registry-packages"}},"0.5.23":{"name":"@eth-optimism/contracts","version":"0.5.23","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.23","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"630243486a583bd12f9116c871df8453b1c979fc","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.23.tgz","fileCount":343,"integrity":"sha512-XSeRhYRyWGebItoBr0pXJNNhbzCerJJDqG9V9jNPuTJ5H18sAGm8jmrdIp4gj3bZnV41qOa4qd7BonHLlgzw0w==","signatures":[{"sig":"MEQCIFo0a5kJz9ONyZDuMnUj5YiYrryKjRGTlnz5SPyNkEyuAiAWfu5nP+9IzxWRbnTz05LrpxuRHulj9WCRo+Cd/BfvlA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12462239,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidBjlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoi6g//XH7y3e0GMNGlgGhS3KuS0rDx6dlJ9Nbxu6wEZRIANXQFksBp\r\nY4UsdH8cr5aa1M4uZaPCl3tUhJtDGR1Ea7oZp7EpqaY6SwIZFsLrqTAlelgu\r\nBb9GGA++7HMQtpZV5iK9XbwssfUQvuu3yyCBWEv4t7P4MWNehai23sFCguS0\r\ndrigmHd1K6T57j513gzE7K1okdsxRSPXO4/Zbjvvco6IQ4XJN68saD65vNuu\r\nrZd+CiaUF7s7vV1eSr2CQGqbNXNeuxY0GmpPxTBS0tY/8hWsbhEI8JPdsPRl\r\nwhSUtGnOGXlmIKG4G7TzJ8OMkJrHDDGNYivNC4AaoMCbcuz7oHV5bhWFPjRX\r\nzbZZ4za6UTTLR966U7ArrBaUvBM+n3PLBuFIqWLuRJDQzvJM/BRWMDV2gMhx\r\nL/zktOsWyMb7qwuA0/obu2kGgNBsdNiJRpYVPyNxLTOq+WAcvLaDw7LBKSI5\r\nzzg5WM/lThf08TPyr5Rw2F9v44JgMyoyL6l6UHUIZwBrm1db2nHWma+ju4cl\r\no0D/NAFeBTH4HvjKSJzV+IWtIAHknwaA9O740JSpQe1VOSKMWkA89ckoYj3u\r\nyOerPuqSJyw4OpRK+i4TKM4dS8jPx/cG1yeLKbbDoNBPNoP9P//StHUDItdi\r\n88UzKBSA5y1jlE6tPvCe2N325Eywhu8+QvA=\r\n=pFBN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"936033efcf0fcbd9c2592f3d558a863622deca6d","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.5","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.0","dependencies":{"@eth-optimism/core-utils":"0.8.4","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.2","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.0","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.23_1651775717333_0.9563881302037474","host":"s3://npm-registry-packages"}},"0.5.24":{"name":"@eth-optimism/contracts","version":"0.5.24","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.24","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"7a71fb530327b8af54824acedcc6fdb4676a993a","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.24.tgz","fileCount":343,"integrity":"sha512-9Z+KUMYAxYZyIZHvpn5Yngz787DzNw1E8HUBib27iPtJ5gAWdKXisuScEkP2gnt4bDcUQ8qtMfGZ9Z7FARbuvQ==","signatures":[{"sig":"MEQCIFP2drlx6xYwIEwHMyyUMiFeOwiJzgMsiHLgvq8YL5tcAiBYJm0fpJ9f/tRvsE9g6PVo7/Pq8A2f2+sYwoAGFnkFTQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12462172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJieeYPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp2Jg/+N13AMt02BUXaA3cuN4zSvrnVxQWuymp71fACn8l5leSdKn9n\r\nHqokW80hHELQnDQozHJPhHmXl8mUUmdzVsp5WD/2LET1QzXr9TiZv1QAJ/kt\r\nM9jiA72uq7LPiz3A5ToPnIsas67w5mtfVO5+ivnESoIrRSkc2pgAVPYU1tVb\r\nhJgWx9ua8w0aFKmm/X7pPYibA+3bFRnaYgu7OmctrUbNSzkpt7iopk8haBfF\r\nz5HMuH2Tfuy73QyyU77eyr2VBQusuyz9T9btwH6FYDtYFcUqFh4gKtldLfA7\r\nbPJWYURmnQrS+ZU9u6m+Are6Ix1w7tTAwVEZo2wdnkYEcQH0lVZx82JQ0N8d\r\nOb0cTxWPI5OzIOnSgTBXKb3wQj2GRl6HipfINjdgFxul2EA4oY8duDsQDveI\r\nUsN/zygBB1Js7UcbNHkDya3vH8HxHtdX6rnPTaYhGX7PL4RGDFtppCL2hzZE\r\n2gp8ef8LM55b7liAjJHuc216RTu2iU0JzpNDWVnvNzMsEfGePGkma6L99j21\r\n3sXdTnfV0hEn9Ch8kKz0NjdGb3nuAyrAoi4f80t0oMgk9TyKKyiYdh3+JMEl\r\nJQ9XD5mB2RmfjZRUcQGale0zE0YnXgHdVY/dm1N//tWzhQwEbiF299yQnA6k\r\nuQ6T/Csgg+oUspvAss9xKrs5bbabxHqrMuM=\r\n=79nb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"52cbb56aed460aab564d60d0248f1f64c8e4bb67","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.5","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.0","dependencies":{"@eth-optimism/core-utils":"0.8.4","@ethersproject/abstract-signer":"^5.5.0","@ethersproject/hardware-wallets":"^5.5.0","@ethersproject/abstract-provider":"^5.5.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.5.4","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.2","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.9.3","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.0","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.0","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.24_1652155919640_0.8329698473276226","host":"s3://npm-registry-packages"}},"0.0.0-202242865913":{"name":"@eth-optimism/contracts","version":"0.0.0-202242865913","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202242865913","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"3628abf0b6004f89b4edbdf878a74c775be877d8","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202242865913.tgz","fileCount":343,"integrity":"sha512-Z/SCxMyyB267BhY2AcPSbUow0Bo9lyeiM+d6EX28/uTVVMbCgOcZD/7caRpZ+lu8LEAWWOmLUfs+o1t3noQuUA==","signatures":[{"sig":"MEYCIQDzZeYVbLfs8FQoxwX4RSpRSiu3ccNLPV+5BW7vMV3y1QIhAKqom4JfWNOLGScu9tSUfFJTukPkOj7pGc9wWsb4w6Qu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12482416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikchMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrhCg/+OR3z3e9EZ2pdyUTrbCgPd508m20wdwfCj+k7mjD0aLzkrfPN\r\nHRBJ71uHy03aw+f9a8uMqkzGtyWTrKbZiRrsZE09dzNe5fzOX4cGVREK20/d\r\nanK4lpw8IfMP4vQHOZlvxEOfnYKM92HieJuIifHjxoFYr+pz7A/KliJFGLpI\r\nT3/wzGbGFFhLS3Iea0dggDGXIv3iYPbFMvuXILhUCLNpgXZ58Cop1/qzxfCc\r\n2zvuqSJUHVjKSROHjex7/KZHaRTjMgdtAADoV13/r35aDkqBUEVQYdiegs7N\r\no5k+73/lsDOFvdHCySHsZ+YeJBGXGSpOAm3w1HF8+h65IWORIgAWgOOCPMAh\r\n1ZiTwA1erwOwv2SX8oiodO0jGzz83G0ujIxuItiVvtn6ssC0FD2XJxPbRm3f\r\n+Aafg5yjuoACQLqIS/7MkT0HQcFDnWSic1gmXQI8/N23YBBTUAbN2Bg4fVMj\r\nSdj6WyGMT1LcjSgPvU16VLKdg15cVyY7RLclOaXHlBRXcqN/1N/gdc7qgpBY\r\nOgPe6eoDo/vWixyhanUe7680xiJ1Te2JhPwwJpytErTDEFQnvzEh4aVPYBZe\r\n94mFi4+GDCUZ46/mzKeS6mrj6ncz4tAsRBGYLoRAwFOCfDjsVuHtMSdBpuNs\r\nReDFWL/mhsu5SDoranm8CSfPVRaEaa0F8AA=\r\n=zbfa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"02d6ec938c5022cbe9cbfd317f871766734f8720","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.5","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-202242865913","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202242865913_1653721164760_0.49025739075560004","host":"s3://npm-registry-packages"}},"0.0.0-202242872411":{"name":"@eth-optimism/contracts","version":"0.0.0-202242872411","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202242872411","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"6fc01282c507b85945984f7c93cd1f9a0bac8885","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202242872411.tgz","fileCount":343,"integrity":"sha512-yP+qIAXfrZMXndSLihCBFOyTpTcVWNWcvQRExINJkOkSfuM3SeaUiAlpqMXv6u8hUWB71jcCLmY4rHtHZJNvSA==","signatures":[{"sig":"MEUCIAkYA/YdrV6uNGCZ0g3qJxD4cqaf+lUyi5rguoY/UelLAiEAhVJ9bwj8+ubcLdA0K8TF3F6wbQ6UEyDpgUdJrfdA3zY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12482416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikc4oACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmox9A//ded3ZHcMoaZrHM0x4BznTN38b/DKkCu3NVMkDFwVtGhK1iSY\r\n4nXRZPIarrIVQleuXSYqFLdJZORoCfPX3zfQVwFyRRegs/YwkUI6N+KBYWal\r\nYXNeUbK6gWIEZpYbEceEvFvdK/6lcITU50hD9zTTbiBbe1WIE8S17nuMNYzr\r\nNoF84rL2LCgN/qEdXPXAQhbUB1nPZpSAStx9uvP9D/qcxFv1vEeGk72FkTSE\r\nLpDPDW9cpaCSWBVjHoqeJMCZBZ2DPzT03IjgaWF8HF9gH/RL8orrYIiA6c/y\r\n5C+ME7InGUIu9hzzFEPrgiKCipW7BcVWQ4YHtJptzKxOJr8Z2Wr5BFOHukKi\r\n+o/agNtkcNGpjjjwdYk0rmf2pQBPWgvc5hqbbionV/qfsKYnV9aK0NBE/Ox1\r\nEPVMjDmi99DiXUjebwpW3wMkcFBTCFTJ5zB8oz8RVRQvF8uM303EteVgTxD/\r\nytjyxJ02X9TT3dGwR1/tb3p5ukYvqLJYyx+Sx87tn8TlFegE8FDur4fNBiD0\r\nJLT5ypLQuwWEJW1deQ0IegY3ub280DobiGDp3k2jSpE0VaWMpjikvYqGpdw8\r\n5eZ1ZUJ5WYBmaRbAInCzKwHsq/6vypc1KuSuEFybc3XOWoKVZaLKLlYyPo//\r\nize/ai+jq6GiQsbLL4xGfVL3RZZEEcBEddc=\r\n=cfsJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"de8893f25327d77f7a237e022bd1275576f4cc93","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.5","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-202242872411","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202242872411_1653722663779_0.6145966539918244","host":"s3://npm-registry-packages"}},"0.0.0-202251153718":{"name":"@eth-optimism/contracts","version":"0.0.0-202251153718","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202251153718","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"fcf6c7cb7e6e10467b5a818968326bb63ce2f758","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202251153718.tgz","fileCount":343,"integrity":"sha512-HDLNuJHL6buJ2BKZqnOB+XuXTmkb+qhC6q8QD7f9NF6scS5J3X+SIytOlYj++jW61wE24VgNFOdHIM1UZqlZaA==","signatures":[{"sig":"MEUCIQD6lipLKRYNeJ2sOBZFd32Cb7I16v1w86vBvlDEPdguBgIgEEPdJKSFppV5eOKkpncNwIOr979RopSuDwriuuFEUEs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12482416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil4e7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoqfw//Sy9JSlVaecrerCoPErFzqqs7rdDMA/hKTABPtrrUKvbtYqRs\r\nlbFexkPLZVFw8Y02N72mklnApQgWuPPtEwIkzoQgArYDl77nKYqIFeHwYIPp\r\nE4DI+TfVNin6ppI+8Lbv1ZuN3DWBUJhl8aa98ycxaV247aMic41HnSfD5L3B\r\n6K4GEL3g4dnAnbsFNTBo+0jO+IzhxO/zcXiv9djTZX7NvMFd345o3tZz3kGv\r\nAXg3x4sBPo34f9Nr4Xx4Byo81GXm1W7gbrHzYcQglCjjCR8gIH924YKA7EfJ\r\nN9Jd6rS1v18P9pDl25xg38pSlSo5EsXApxKLloZbkc0cBxFBSoCTaYUsrEpY\r\nSo0CYirxPEQwX7CfZZNg9bcJBU9Wl9GyMpQSZEUuugov3JQA/SGynIn6F12n\r\nKv7IZIDwgMxOxjnaOz2LcBJfUd6Zxk8O6jQ1zQXNLn6voySccRBQZAF3aBga\r\n99gjc5tbeSh7DbKmrPoTimHWAxW1XAojV5hGSg9bQ4/Kx0JPUiKVYQDcPxkq\r\nsLCk9JjI+/3kAdOdtNNlcl/8BH2kHm99sVP1PHwHX+pXFKDMPUCwx3V+GQ/+\r\nacNdoD+NVZdeQMho3Iz6t09xp1pVLyjCU0Rqxk0nfwGfeVP0GUmjWM5HKpos\r\ng2pn7vZWBMMOXwuu0uV/kOuF6Qe1GquhJfM=\r\n=Ne2A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"fd81e59122784c10cd97583bc321f26c4a512175","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.5","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-202251153718","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202251153718_1654097851129_0.6938417137729538","host":"s3://npm-registry-packages"}},"0.0.0-20225116021":{"name":"@eth-optimism/contracts","version":"0.0.0-20225116021","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20225116021","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"43ecf25c74c620b76e67e0752385f75d45ec046a","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20225116021.tgz","fileCount":343,"integrity":"sha512-yFA3g4XOM9O43uzCl9+xq2rdrj7Lu4qodwLDidPdlGxnwJAbuc0S9mubikPjCu0xHoOKpiYYuWoXYChuKcbong==","signatures":[{"sig":"MEYCIQDkJ+z0vsrRXqQ/Le+/pemcv4gfiggsvs+7DrvdvyrVKAIhALIVlNa+RsW4WmdzbMd+Ki7gIe78gh+xr2cbF0nMV/4C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12482414,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil40jACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmocWA//cqOf84xkN9eZa8Ru7KhnFRKHFpFIH0C29EA+HIyIsFifjU43\r\nwGTNo2fFSgaLxeXuN/0WbT2PReoBhDXw9+HCTDVELVWuymMRFDZci19GMnr/\r\nYaUvp+X1tr60h1VQZ7AbqPtuFHqiXfAsKs0lcS2bDC4yhJVvwKJzXUY+9VHd\r\n451HfGUxmhDSWQnVwlFKaWSUelntI3IlqVNzIsKQgBmk8gOyAQLbJ4cK0KxD\r\nU8qK4O2CsaCacPQi4bckVU7dfbBEOwkWjOim7zvKIZ/jmEolmU9KS0rEddKd\r\ngrjKimIA8OAsud6kJm2p4y6JSarWKQuYAoxKwUwJJ7oiW7JQLqMjus9Y1wiR\r\nDLg1iHWN5MnfAMFWC7n955Cm/f0EvjolmHam3an43gx+QIb+ENKPwvyhgxTF\r\nzJ0hEKnfPMcJt+WF0oPnfWDRPGdLjodqtZembIHYXgbdub1fXQ6+y5+97YvA\r\n6OdH5AL/aP9JZy6QdPAlkR8zFsFcUlluoJ0N0h/ovxzdO76qo345TlWJ/hH3\r\nqPJXOQS2ldmGavxFwnpCjyAieaA41wbYH4d/TXkydITZNuQzuZ8Ou2YcW21P\r\nIUPHos7wmT4uTIY+8rM+k1EeGrNH8nVzTZk3lAzsERZqV+Fh9JVPyrPK5GpO\r\nHW1FUNVxY/TConpLc7Xzk8rB9XNPo26qTo0=\r\n=0QTT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"03df84b6efab3f38bee09ddd3ae867cc4f0132b9","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.5","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-20225116021","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20225116021_1654099235059_0.5209485440705262","host":"s3://npm-registry-packages"}},"0.5.25":{"name":"@eth-optimism/contracts","version":"0.5.25","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.25","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"524d5a9e8d32a6dcbcf357ed9cf8413090e49a2a","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.25.tgz","fileCount":343,"integrity":"sha512-mOMY8tV83FYfvsqpYQuLz+S8L4CxNvvkXZ/m5EszD5DxD4qWKNQ1+jstP1pxbzFnhzC4ubPCGtUhjW8/R06GzA==","signatures":[{"sig":"MEYCIQDCoathZ+2RzUJHaGWOsss2V1t/kFNRDvn3yN6Qf2uLRAIhAPzgvFNMPbFKN56LiiZYu7W8gHk+diAZnJGxDaQQ+4p0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12482391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJil9pzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmquEA/8DJuZCcsUNNRZ0NpK2xODDfVvk9UtSVL5eWgRVgx/Sywt51XB\r\nKQPzAhAB2N9Anuw0z3GfsroDZ9f0HxfeIFiDhb6sr9JmO4271FEkDjeuWmJU\r\nFZDEr551NcT5jyFkjzLKJhWZYi/18yfkqRqTc6mVNlvEkE2gseclsy9jLcEl\r\n47UPAWbGCxDDhS5ZfDd+kjZnua2zHMV5MyLoKDX+RANsV6bKRMmENs8Afl/m\r\nDyT0rFbsBzlvBO8KZxKgjvTEciG0G417b2fE39ZjHDo4ea4A00ZGdoPFq7y3\r\nFiLYT3JM6oRUnGNFRsTAoppYxMsCDKshGOKLhTEUDAeYgCCx+NvHLfSmmIgw\r\nHDvY3YbZE6kVrlYmuDj4MUUJPZzb9MqhJYc9N5M0JIEsM47I2RANBidzDnnz\r\n7jNIAxinBVuXRklh5gpWzth3jCLpjqv1xqJ/5G9fMw6KOsEQTtN10nEAhr1r\r\nBk7kc82xe2iHhQL1aHHrhHNcJthqF8zMKYdmuvoY3m0vX6PI1r82hfyrmk4Z\r\n99jQRZKslIGTrZ315cnjoE7I7iRQm7nsD6lb7tA5sqll+gkw/msle8w98eGY\r\nrCIbfRl3zyDjk9H/Iy6ERJgr1fGokN6L+7MURuNgqYRa7aIwoD22aKZJRBXR\r\nvW3l2132eFbTho9A4M+YhMuuwhVolmr5It4=\r\n=krjc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"65b06a39edbde8e4ed61d56760814626968b71d7","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.build.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.build.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.5","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.0","dependencies":{"@eth-optimism/core-utils":"0.8.5","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","eslint":"^7.27.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","babel-eslint":"^10.1.0","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^3.0.0","eslint-plugin-jsdoc":"^35.1.2","eslint-plugin-react":"^7.24.0","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^8.0.2","eslint-plugin-import":"^2.23.4","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","eslint-plugin-unicorn":"^32.0.1","@defi-wonderland/smock":"^2.0.2","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^3.4.0","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@typescript-eslint/parser":"^4.26.0","@primitivefi/hardhat-dodoc":"^0.1.3","eslint-plugin-prefer-arrow":"^1.2.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@typescript-eslint/eslint-plugin":"^4.26.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.25_1654119027365_0.5955115940290794","host":"s3://npm-registry-packages"}},"0.5.26":{"name":"@eth-optimism/contracts","version":"0.5.26","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.26","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"60fb8943b6a920bdadf3740674c6e540eb9798a3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.26.tgz","fileCount":343,"integrity":"sha512-2X59p+V9069sgLloEuCteqUIXOghixCA8jzEvy0ufvqlRD0vpR4jWljmaTzkYUYa4+bjOCeglcQIvdGe5WyTWw==","signatures":[{"sig":"MEUCICp7JMuUs3IgpKvoNeHIw58CwOrMsOeTIe7ZOgXLZz2eAiEAzwE5BnwFNRpT7/ZdiLyvthVsNZEhqTO8U/e1eU3oILQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12481595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimUm2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpMmQ//asy0AgdybvofnKyNtek59F3ulnqMAwCnpMlMBH6hA2aW4zPo\r\nuKESgdZ1JN4leq8UVQWM4aJ/Myic/L7UJObSDSaXCePjpu0aBJeG3AMXQeVW\r\nIuLVrkwE9TqMCXmF043sROf1XcZKLYZepZ9L2yT5Qzqtdm1909F7FuO9Tfw0\r\n5aJq+WMokU17/X5FdBTGDCNmFH2SIZPTTPVCDDtP33g3PVo0EgKiSwo/t3CD\r\nAWfA3drcCwONjOwHGYHwQcKFIqC9hu4TDxTOgX/wyQX3znvSYAXDyRhNg6Fw\r\nJw+pIxu13/Af+bVT+/Wm35Fe9korrR2nh6tvui6DV1Uf24xDjD2M2PNNj7dX\r\n54bD6Jahynx4a2HcN9zaO8eeElRuvWeCCjHhjQvXSnCx10OvRhNAuXfOI6aE\r\nJmpSE+S+5vCQQYMe1FUjQ61KJfdudKZg84ovdxni/fbiGO00XFO+l9CzfHmB\r\n4vm6nCUs0OfFNInwp1fYKc2Gx7Bxv7lGDMC6Rvyv/SIxeQKKPBG4GsFdTLeO\r\nSryTROjFD8S4E8NFXIoWlH/efSnEf0ueu+9mBsv/UuhtPorxpb0uAaiWoO7p\r\nhQbh4YeuuPUX4d+8I/jP69Z89+hAFjzghAKpIBC2j7ahgxiSBJgqbQRZmebm\r\n0cjO0EunHgvn8x4nahLsSZw6bd1K5Tfk1hI=\r\n=1XDC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"313042466c25c67a8425e932e2ab7867e2d339cd","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.5","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.0","dependencies":{"@eth-optimism/core-utils":"0.8.6","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^3.0.0","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^8.0.2","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.26_1654213045788_0.6305073771906","host":"s3://npm-registry-packages"}},"0.5.27":{"name":"@eth-optimism/contracts","version":"0.5.27","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.27","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"d607fdb324c068ce541bbc4c7499cb2c651d9917","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.27.tgz","fileCount":352,"integrity":"sha512-wvGL5LcsycjuQZ4FYRT0A/3JGR6o1BKpEu5460whiWCMBrI3Jm+TuWXweHcAAwcOpRubhk5m04zr0AhrN4msqQ==","signatures":[{"sig":"MEYCIQCl8B9DVk8hvOJ9ClAlb4H745c77kkCHTuBZvIthCJrLwIhALoW6KUCh8G2iwR9JLlYRvhAUDJCyk53v6dO3d+1DN4w","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14093327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioQ0bACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpa7g/9FaGAf0eQ9fiy0lt7x5pEaMW1W6cZHjfxRMYrklbtfseBcLpJ\r\nq5IVlBOUjQtLF2NXai+k6cpz83x6wa3lReFHGmhAUYMQkoAWHimHPmsgK/NO\r\ngcUO3vy/AunK0v2kQvyeOnCWiYHPhJAAQ8viWtyOz7AI/cBgH9r5cyk1n4MZ\r\nmSM7jutMOU+WgNb+a5ca3Nnqlfq6QzaqyYbWI5WglP3unKogXHXIuGekvUnO\r\nzfOEn1lxHJ3AVPnQPbDUrykNyOeNru4NChJ7i2u1knrjBN37Cav9aTp3l5Cj\r\nuGotbDmmkizoE/oLPyRAo0agUzer+h9DrtcqCqGqmIA9QdrF6uRqVzL1A1pO\r\nVRWL337i2kc7d5K1r23yBBGE+ho8HNUmGhJa8hcxnv3ay+7xrlCmVkdhevNC\r\n/1Enm5CaHlCudcG5KgymNFl91ZT36IUNX8J+FX+vzX3NTQh+J83fpm+1FGDB\r\ne4WBu56BUBKn+PrUGrDeFFu3KRx75hXKAjOmqrSlcwWumkEVSsUomzbrJfYB\r\nud33T3klnz3STLRN3Dp4fmf66xLtY7x/2fpR6hCVt6XyW7kZmFMqy3CxdcnM\r\naYTwTrHHpwekvKs/QeOXORLqzVyVl2wNQ2k2/GMhgnZeymQgI9AX1Wa03KZR\r\nUMB5sYU1EmEdrtGjt9gpBglPFsCuqABYzbc=\r\n=oI0Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"85c1658313b8029f23584f8ab82fe19ea2cc05ad","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.5.5","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.0","dependencies":{"@eth-optimism/core-utils":"0.8.6","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^3.0.0","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^8.0.2","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.27_1654721818744_0.9229787080134779","host":"s3://npm-registry-packages"}},"0.5.28":{"name":"@eth-optimism/contracts","version":"0.5.28","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.28","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"b6bc717db366cb34a5db7fdc814ba84fed763686","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.28.tgz","fileCount":352,"integrity":"sha512-3PEafAuED8lxiDSvAg5tttX8OuseJA42MHqV/gX0yZqdx90vFaWjUObqqUJSl8A8V6jGs8ruooJTIzsxxqRmmQ==","signatures":[{"sig":"MEYCIQCS6CRDHp1PHZOHwSTae2Zb6IAkF/s/CJrIk6QZ6D5GWgIhAN8FMl0vg8q8A/Ae/+PwcdrefrR6/fNa3xPt9WGFcTgO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14093351,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqimHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq8iRAAkrPCBmHL8ufgMRNbw8y6/67CNhgTyVSNiKdpC7k2Zs3S22dS\r\n0Ga50yt0s7lLIea5QYEReL3KOdfy3aWaTPx3akNzvYOPvBNVsDRSj+v4BMNK\r\nfg7hKMTcHG3AEoPnV8P4vfgNqKq6cgTf4ZBKLNSDPqL8Qp8+SXW/z82qWQyw\r\nP/Gg3+RFNcHEPJ3wyHEhB7QbEfC9u/KCJmjl9HxgNH30BXtc78aBGPXHKTWZ\r\nautmRta4Uqo06oBymEdpKPo06yJYQurTk47rYmPwPxd4os3cXkUyv6yeAXb1\r\nUXf6ieDbiuZkvgJzo/8PiH8SjnH8CQfT5CHStatvRd0ldhPVghZZqKZ7ppC7\r\nnfuhR99KCJye8v2mHDGxJwmqE8S3QlZaedri6urOF1bgWSUAUxdgXJUZOdxF\r\n4t24zMxRG7KTIQBsO8/xsO+miVGxZDVkxgFwT3z39MsRK38WA87N0pp+Wy3r\r\njLzG3z5EPd0u/NtVu8X8RHturxtn9+znG9eyMA05anoaUT+VCXTmEWLGFGmz\r\nNJMuVln9iP5NyX84Dr6w9rDobt2bS4Q77U/erqasC1HtxxheSEgEO357fjeW\r\ninTGblO1pxb7tOrewcjUeuqr0aPBHdKVA5t2bxGyFbgWKjkZSmd1U6RrGllO\r\nG/X54dwPx+ArdB0XWAysEne7KzfR9pJ8MAU=\r\n=vsLr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"645d26a78d6d495b3e418aad06daf95ceefead49","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.1","dependencies":{"@eth-optimism/core-utils":"0.8.7","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^3.0.0","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^8.0.2","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.28_1655318918887_0.9341840344211838","host":"s3://npm-registry-packages"}},"0.5.29":{"name":"@eth-optimism/contracts","version":"0.5.29","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.29","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"e795ccd94cdbd3ac34d726456529ac892fd3dc77","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.29.tgz","fileCount":352,"integrity":"sha512-uYUfxqPjEl1VABD5EUNA+NI5ZRmfQVEuIvAV1uUPvNP0w+GdsEeYrYIPhR6e+EhsUV2Ko4EKVAPYTYoJmI9GkQ==","signatures":[{"sig":"MEUCIGa/0vwMsjYAft/HrArD6crTj9dqSFTdrrvdJkMl1zymAiEAlh/MymCumLlhJeG8rxO7PjhxRr9U+qPXoT3rDdhglIk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14093344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitJ8/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoMDxAAkaGycrvjysOKdvl5aqAzoSgxT/jV18RPzfYnoe2h0V5IFmXc\r\nQ2G+FNAwKs55llPWhJP4LoCztZmEIjafRSZtU9Ah0vP45u/TYXNxd7zxZ886\r\nIEDKg6Uq5M+bW75uys+x/0Ksh9E+lwMul/CQKcznxBs1DToTvGA1ce4gEOD/\r\noa9bUcHDHzV4oMi0oC7MkLCM1aylry4BTyW6CknmYLbHsfwLoqF6v4pUr0bJ\r\nga+pIRp8N9R4sjRWpTZogo5z9+Y2T6N+nDslPAQeOfkViAIfNzOUruCPfV7W\r\nbmNH6DGUMW5SmiXseE4HKFx8nZpjvVbDiXfLC/yZE3u4PhsULRFeL50A6sm/\r\n1//a4brV2kzsRsZdrq6uNd3YS2/GAQtLXgrq2qJ6k1d/txONS5owmQxloD0F\r\nrRyANQ0+smbChjakxrCCXfgOJOJGBQUiwMsOdAbKu21o/XZd9SteEy1VJTv6\r\n0/vLJD/+HJenrqGjw7uscnBHyDfAQCEZhw/WTsnnT57MqBRfEK7VdZurxt8q\r\nclT7V9PbMuCK8eMjgIQ4eDCdgYfOZoMda3Ezm8ZWBhf+VJmkeCYXtqNfbLWq\r\nMAJwpGPusZcIAVF2yGBQREJdZfvd2MitlcVomM0hvrhAssOFY//OiTL6pXa8\r\ntqga1K4+Oh8saTdZG/aFzo5hEGQdsWopE8A=\r\n=Joq/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"6552bdcae3db4fbe82f88f570b67736e7b6c6373","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.15.1","dependencies":{"@eth-optimism/core-utils":"0.9.0","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^6.0.2","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^3.0.0","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^8.0.2","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.0","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.29_1656004415127_0.47851657117776214","host":"s3://npm-registry-packages"}},"0.5.30":{"name":"@eth-optimism/contracts","version":"0.5.30","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.30","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"855c3c0a47e7bab54c91459592312699947b71a0","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.30.tgz","fileCount":484,"integrity":"sha512-mmB/PeK7ADcQVqLzT7NaDG9tpuPnv7WAF9fcqM8GLIGuVCcyPSWR3TE/MN0fAnQ2Vyffd84+YDjyBLmL1gKepA==","signatures":[{"sig":"MEYCIQC3gq1LV7hhp0JLrSLqtWPDQ+bZftITR5d8sU8/yojO0QIhAIo6EbsQgL29xOcErE5JkV/+cqBSyCKPN1RChJwsP8Lo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14746926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizeJSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpdRRAApL/Hw2B/PodjN65FZSqE/iSSS3Uve2NWmVluloxKPMC/p4FV\r\nO2avgAKdiLl2vL7VzGIUnR5xG9facQlsgDyDFomjGcYCEEmu2byHIbMBG130\r\nJY7OS0a9pjxbPuHjSSFe5zOR+8Z3MJxKhawjYfubf2lkt3rdKjpGZZR1eubB\r\nV1GVD3OdVNLyxkV+eIXPtG4FIsLPRzS+YClFORG9iUdb9srBp+EhN5p6Keza\r\nBUeLkutsEX8eAE7hU7eHc+8dImFWjvH7FyVMtvumTo8TQXakuBhnArc5e5a5\r\nKHcKy+/FcRzQtaZJ8s5Tn18ZeNMo5rsFcp7qpaGHCdCOLUFBj0dKKOj2JPuB\r\ni6fMWJ/wDgoZRe2LYPuEhmNVPSd9OeWMfFZ9hlyCyqKBCpaVqA0vEXidydU0\r\nwyBDxOWhNANsQKvCm699xvTFMeN5Z8bpYWnQ15SX2jAKC75yba9zFP3F0tW7\r\nPRvQ6sR5C89MrOTbKAb+H/NVQF35IVAM1Q+nHMK06upuf/EmWzHRI4lIdFwx\r\nWWYl2zVEq0e47HqvqLnl0tq7hxvinxXtSzMaczwu/iej9U2qlvjRUe/XejP8\r\nfGsVrlzIp9l//FpNer5SlrYKeyq5DdbKYlKsF3FGd9LqRnXv3EDegQkF+EmR\r\ni0kO6xBX48GYw4nmo47GnaJA6sBtUz0Si30=\r\n=Pf/N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"9c0f26541988e8435f51b11697322e6f3c02cffa","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.16.0","dependencies":{"@eth-optimism/core-utils":"0.9.1","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.1","@openzeppelin/contracts-upgradeable":"4.3.2"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.30_1657659985858_0.5619696992448782","host":"s3://npm-registry-packages"}},"0.5.31":{"name":"@eth-optimism/contracts","version":"0.5.31","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.31","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"2f5a9be37b4c309909d8206c877710e9769af858","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.31.tgz","fileCount":498,"integrity":"sha512-I07EeyBBWwSsB6I/GodOLRydDtefWx4sdL3wCvNLSoCIUl2hUyisMmtTojOBXeT6vvfbiYkWc8jZlfXdbyJ7fA==","signatures":[{"sig":"MEUCIE8UZSFTCr5wVxcF28ClT9/IGOgl++zdtRdXqvw+GFXZAiEA9Kq21IiNRseT0B30W4tGaS73qsnWFTWc3HA1tkbZBFM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15273354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3t7RACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrasg//cvdfQRnRuk2tuGFfHosxRCzfH2cYe4mqlQnRwkPPn+qW4pt9\r\nBV4ZVVIRwGk1H8LNydn+zDEAQzUNsVOX/4zepgAHbBDYXZS9zyz1NQfOHS44\r\nnVLwm16A0RExrpkFgxauieIUAeFNUw3LCKpdX+nq5+b4xhAQl7OWWcAXcRuI\r\nC/J2fncfG7SC6oee7u54xIr51KuARKz8iKobleQ5Z6CbD1ekN4IRZtuQLsbT\r\nlgO0wtqZ49LUsNWWhkozg24wgY++YveKUP/i5WgqaMih2BzSxMUuDESo7dk7\r\nNQTzqZreZZIYlCnqmAkofZ0TwGzPoH+C9oVvqqgSHQ2d+HtoiDHndaTaeVVG\r\nruC+uD3I+6ohjDM3Zid2vlE9LTuTA0rZJmvp4q9bMlW0svBVSwdMIBeVlre7\r\nQTtFwc9sZjvaZsUv+X5NNk2m2XgiMYjRJMQmd7XBb2KnNSFDWSqbpD0nOSXr\r\nWqE7CkGlDz5iB2Mc40Kx6Xir0FC5E7z+2QSLmpoVBItZMW6uIIFVPWTf4J//\r\nIKxRWveoqUBo3LUfchGsEdXMdmkKpR+a9x0Q/+g+YhK1EZ4Ya8j0fr1JJ4ms\r\nTzLKpnQaO8fe5YgrMSudlxP+jvp83IfwqLnK/X/HCag0stfRuUvh31mM34iJ\r\nXHZttXqk9X1C8H/n5CCojcjkcjd2RmWwfKU=\r\n=EVeQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"907ef2ee21db7f1e7ef438095ece1537178f7559","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.16.0","dependencies":{"@eth-optimism/core-utils":"0.9.2","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.1","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.31_1658773200776_0.9546478412962409","host":"s3://npm-registry-packages"}},"0.5.32":{"name":"@eth-optimism/contracts","version":"0.5.32","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.32","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"3cc1ba823e9e71662954321025267522b0e928b8","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.32.tgz","fileCount":498,"integrity":"sha512-wHcilwbQGxllfl43Has5l8PAOghtukRgwdhnQqrdR+XshHwlgnNH5lE5/48BjqSJDykxovmqP9rjQvHEWd5qSw==","signatures":[{"sig":"MEYCIQCiMazFgRZI1yK4OYorNv7Ye4mGY2lnutJ0jYBqK9vBggIhAKkj8JOLXtL8iNT58Nls6gRjk4cUV/NHdVAcHMey5AQ8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15273354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7AjzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpeDA/8DeKEqrRXH1ZBMUmyWFOchvrbPJMTe9a9gB8e5mEl/4Q0Sqt1\r\n93q3q/rOSi8A/iCHU7bMEqqj+GUzJHLNyNylXUs6oBPCF7qe1pg2apXcYfXc\r\nCXibXy0+lZl6aWbHfYbj007KenujE9p6qo7TXTxv5LyjTkcA814vBN/38RhL\r\ngUYbaxZWefn92Ob5O1NlzBMoZC9MF+0PWHA9w+AZkJ/QIfFgQ6N00rWxiq4b\r\nVrJwe8kztj6h8IFcsoMzFofL2ur9Bd/4p9tlqwFYHZOTAg+d5KQ//Ij7cwYw\r\nFpBdNATwc5gehVBtftJlqYATjoxjl+c0ajHuPtC/H8ylKXgayY/FNreBcwNn\r\nSbcaZh95kKaIxiL12jEw/QF9fRbdEhR3wFJwfYhl/qi7JfQ28zSc9Y/rbz1U\r\nmmg3pk/lKT+KPzjns2SwIAM4CTWNhO6YNw3EDE+PX3O0x4PEKxLcwElgFCHt\r\nnE5L0gRDeM3sMHXeoJRBJzWiE3CL1Evo2FtNyQgKTZ3gClTN9RsUUkTj0n8P\r\nPctplINHlk7qzmeOHkYYUjW5HHp/wGXQiAMEIsieyILFZVG8wmk6eVxP+nG9\r\naTMI1wwM1gQfVHiDy+45u12brvCM9UwaP0qeyqsoSn0HuAEC7XVf5e+paTkS\r\nmOzoRROSfL/9AoSqTDnDZKbsr2rBXVF4tXA=\r\n=YchQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"afdd0201c620d84a4f9d9d3f0d26c2b032279f6b","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.16.0","dependencies":{"@eth-optimism/core-utils":"0.9.3","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.32_1659635955213_0.28847654641292575","host":"s3://npm-registry-packages"}},"0.0.0-202272320426":{"name":"@eth-optimism/contracts","version":"0.0.0-202272320426","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202272320426","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"f8ff07f8a0d0bf6a64edb360a129e8ff8aade51f","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202272320426.tgz","fileCount":498,"integrity":"sha512-Y+L77qF/YUxbbYOOc+saZ5NWGl+18XPxwt7MxG9mu5yQ/jh+sC1MNqNlt/RKapSvf6qdw3XsyInVGRfFCT8bHA==","signatures":[{"sig":"MEYCIQCIaz3qjiYJVA29+xkH5sQ1AJ5ebgpHMIwSivoQOt/qowIhANehexKQHtl+LAdfs4fh9H+m9IfDAuNtkWWg6TL3EFtq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15273940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBTuwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWyA/9H0cHnuS15owiTVnBlMVeuJOJfZtwBgOXDxctSsnFXt7j9C9e\r\nxqPKBOW63RsD/ixS9ruCiAOr8YkZw8Cd7xPmLcXU9uo22dRQtz7WFuqu9Kou\r\ntDriqcjGJi8S3Cu0Khk5LZgEqRCoKesELlWJ+dE+Aybqfd8eR12KCeuw7psj\r\nPtsANxGpo1wAwRspZZReqsqJmHZRmqNtl6DsRJsuN25YdtCk7ysSbRnZyg8O\r\nufkEj8yK/qM+dESWx+4oaRolZKKTyQjNHE46rUYUDF2kIg7tbNVTAWNAdwTj\r\nm7cPjEa6SYP/vCJGeUrLjkZmgc5/Szz0M39nTAumqvxo5hTHjrpSpCFXRyPA\r\nMoyXs7jtuDy7cENW3TPfZOjeeEM3rU/7saxig9LJFbAcTlnzAOCC8AQB45MB\r\neFQq3pH2kecz8eLI/kkv3/G6koJBT7kLLWrbXPNKOXlXqBeT646d0Ywg8fTp\r\nAkze8ZPKQ8ZyfCk7GzlCjejhmfRElCiSEVePy17+4vvNEZ/9JjXaQjoohDWN\r\nDg/hVqidCyu7AoZybfGzf/TVFSsxEdvts9/P+oiUnwNOrIKtLXYKBoEDEeDA\r\nuDnja92sT8x0bAauGHXwtA8aQI8859QYs13Fdb1BM0BDTy9ma8yfTC8oPWNx\r\ntdua5L/EUwqnBi8h5E8+PorqpioWHs0BbVg=\r\n=OnTk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"f54c8f62034def0c93ce3252d2585f00c76035b5","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.16.0","dependencies":{"@eth-optimism/core-utils":"0.9.3","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202272320426_1661287344298_0.9162088187517328","host":"s3://npm-registry-packages"}},"0.0.0-2022724212719":{"name":"@eth-optimism/contracts","version":"0.0.0-2022724212719","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2022724212719","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"c8c921325750fe5cf6c19208a10557588bd2515e","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2022724212719.tgz","fileCount":498,"integrity":"sha512-owc4Pql2XNtH8t7GRhaZI52OGZXhr7TXVM+SdcDHJiFXfhBe9c9guKyL8WVa+xbgYfBeZmz9RM7VQE+KHEXzRA==","signatures":[{"sig":"MEUCIQD1X8hLrDk40FYE2cp4UADro3fJ5DbBuJbm8jnXJs6PxgIgHX4SMA1U1wED7tO11Lv40ed6e6cbCONqEufJfE2Bl3Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15273941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBpfJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpW9Q/9H7qm7oe4AuJfa0n/nTVMYmMYAwz1TATa1lPaG5eZxUn3mU5y\r\ng079e31FCEGw/DBJij3q42UXR1qnqp0R8PWu3TpvrZCEVOEpGOHwmy66swAI\r\n/eATlEGuJq4vBUDDu3I90Wj57yowdQA+y/PJeqYmexDM/OVC78+6mEBoyIkb\r\nM4rB4xONcZinepsqRCjRk/P7c/0Jc+qp7BMvp18McNjAoCEayo0CeYxqLqh7\r\nbJ+AgoyOJA2K6eqkIz8m1NCDR8/L9Zmb6tnEm2ObrRPVLK4RlsmBjdHlA6Yi\r\nq7UJmLeKWekhFRPyGG/CO26MghShd+YC8OdzWR2Mqr6vdxludbLSVjKC5xKg\r\n5WsGhi5Xzqzj4W1gRwdDnKXLAeMX2SbSEk+oDc/Q+DEItG9tOioO2NyGEvah\r\nXDO2uUOqpqU3wTHT5eVmZEpr4Nu8jZjIvOfLBJslTmu3M0QwEFNjXkAhtPLZ\r\nZRNZb89EwCHb1kqgwxlA2p8LjE5O8vX9l/E5m9zfZlOZPNBn7wc+l4GQe2CF\r\nU5v3jktvh7QZokgb0yHTuaCH/Bx2l/ELCcj4g+UzkrjuroUGgYYFIxznTDC9\r\nqNq9dFpcgTkbQgWaKfNq3WwXc/STa2YzkSxs3oDpRJFkAct2XmH9nBS6MaBc\r\ncMSb1QDruKdcmtLrZcDxJjG7nBPKookCMa4=\r\n=Nlyg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"72170de4e0b583a11a07170c08043d3f004e574f","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.16.0","dependencies":{"@eth-optimism/core-utils":"0.9.3","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2022724212719_1661376456771_0.3107720111024104","host":"s3://npm-registry-packages"}},"0.0.0-2022725173131":{"name":"@eth-optimism/contracts","version":"0.0.0-2022725173131","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2022725173131","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"2aca2f5726f58dd47e45898350d5076797aa3aa3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2022725173131.tgz","fileCount":498,"integrity":"sha512-R+7QXcqT6F58bvqnWK3c4wQ4TCqR2O1P59/4DrPv25wURtKL/cJdYJ7p2RHjV5jVBOLOnHQrNmopjUML1r1sTg==","signatures":[{"sig":"MEQCIErK4FtUUhXpBGaQWxyO4w+PujWcprAYaIY/Hv9Anna4AiBhPawI0JelZcnBTqweuV13gje3rRmfr7fFGN6V2pORvw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15273941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjB7IGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXkQ/8D8SRUGmNGjzPf7l/ryt9PD+SOVvNeJAQdczRwA5Jp0sI5N8/\r\nGjETA6jo0Y0PTnHMF+QUyTq178d0+9qJB3dqKlDhC1ATh6TOl2EWC88XMBLi\r\nshczbBx9kQWtgc4eFWC+wJvICorm20QtUyyQ+EqkJIUfDleFTYQjdSF+53vX\r\nFfnfBePbmImtzQ45RhA+muRSFSyBvxn1jtMa7/DqBGNK1gr5zhz3ACyiYFkt\r\nEM20H+O2I5LegY1qZSuEw3zezS8iiKZwhbtjx84qJKD+DENEzbd8J+xNh485\r\nIkNrdaXu1Q3UCFm2YRY20XaOtEqTztIJjBS1JiFjb+S3S9UYmQfTHVkWBFII\r\nC3wJ5oVLUnuBdJxqA+57rZOwvxF8h42ru3Wqsbu4Mv1Jb2uro3jNk80JDhsr\r\n+p64pbpbAmEM9S9w6x5O/tX9J69NtWDglsDxXpf4VQDHMCujyjNyrispvAB9\r\nJJFCQwtiTcGsxmrH9+/B0LMU/7N+2L+7r/JIwglXIPoniv1qV9H4OjqYeJh5\r\nPEzLLWQNmA3nq9ytONm4Uys8l6zuzP/paXY1u3dO1Pj85sGWW9hYxYOb3gDN\r\nV3mbOvf8zbkBauH2kUF6MDbHqQwW77KJqIFCgvx6niwJny8z7VgHpw50ePKc\r\nBQj4C90nHTy8XBSTtjfDoBSk8NuZMmnzEkA=\r\n=AB0Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"4fa3d8635ee4c697611bd73120bec6c007cf63ad","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.16.0","dependencies":{"@eth-optimism/core-utils":"0.9.3","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2022725173131_1661448709675_0.7278766216160293","host":"s3://npm-registry-packages"}},"0.5.33":{"name":"@eth-optimism/contracts","version":"0.5.33","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.33","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"1adeb902ff849152ecdb8639af5ba76dfc27c213","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.33.tgz","fileCount":498,"integrity":"sha512-lOj0psjl/7oydUXuSXhZ3P55zAXBNSgK6OzZeCW6JQ+drN+1OEdyp/MYKrSh8Cw8fW2k9MMdWbOuTa7/Blb0hA==","signatures":[{"sig":"MEYCIQDgvmx/WskznBKzLpw5GwNJxUUAFbAzLQEVRU+4WHreTwIhAO+p2HBc+CNCzCWhxIVf51jyCUXH6n487cNdDVrQ61hp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15273928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjB+2KACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoIlhAAg85rQeSmY2RKQNvuST2p+HGYxOsNGUv/D9U/FZIHC8uMK3Pl\r\nVzrmo1V7XCC1zNhJ3qKRqJOZYL6HHNrHH4xn8WzLqQXXR1IQ7JCC9Aiis3y4\r\nOPnkXgCWALCpTQmEJoyz+ILJqf1E4ySTQx3C0KaS2T3LrCeoAp7mKQzdKHoZ\r\nr7mTWewGjBTCbTjPNApN9LPe///G46jF0mSltkzEdub3eLGQMQxGCMIWh+uj\r\nryuyUlU05O5zL7rVL1icXj7us5338UjnCGkz8/0MagGb9pq5HW8sktM7FL3a\r\nCqfvL6bf/9hKupccRKhM8vTACkwfKU3wTnZOFZajI8GEt2Tubdvqn0S4MFIM\r\njNBrRJspJzInPFqt/zX/NPgF0fEvAPxa9fv9/j8sgz35ZrmISkakxtARn77d\r\nLm1BAv+o0O7IrpBcChGy81X1gytiIdiCJ9zPoC/KhpDoMRW0MXk9p8qZ4u3o\r\n4gH+CDhz7tcqIHgfFQp3lBThc/PcyM0rSbuWjFZcbo0dNn0GhsLh3+ciHZEg\r\nuSOf+xSVKoHS3FfrJyHljaIQ40Tv1iJfanstheDdRJwVhwNK9sBGBaG/Bire\r\nxdGM8r/nyBXrnnVMf0TREubZP9FFp+9I4P1vpaayH9qa6kU9ulOb7eX/NSH+\r\n0KB+eIfKDl1V0ZD76/91TMYFPxNHgEGBFDU=\r\n=Kkg4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"2c80ff285fba25dc6789ee3acc03f11b9383cf38","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.16.0","dependencies":{"@eth-optimism/core-utils":"0.9.3","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.33_1661463945668_0.6008488140050825","host":"s3://npm-registry-packages"}},"0.0.0-2022726221713":{"name":"@eth-optimism/contracts","version":"0.0.0-2022726221713","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2022726221713","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"0e22b59cd56938f0b7009fdc02b4e3c97e318f49","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2022726221713.tgz","fileCount":498,"integrity":"sha512-KXs0fXhPVqccQNGBn3YpFs15UY64VutoUFaBbdWmjQLvUoYIyWYvjhGd3RQ81sfbvbbgNjIJlL2AdlNrHCbzSA==","signatures":[{"sig":"MEUCIQD7UBry1l4mea2kF7H0wcrbUyBxZAEgyHsBUxDAt/0cTwIgBwSbEeTNDf5tikMKV0RFI0Ay4a+3zBW8Kcb164OlyG8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15273941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCUZ8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqdMw//frGJ9nxngBYkzR1orZVlK7MWvuhIOvGbBu3RE0VHjQoqlrvq\r\ndJbASBIjdrME6KL1lv/VjNhz5vjcc1veajV42v/nWCX92Quu8g+P4aQAVXea\r\nrm0n8sANX8n25UwE3PS9JLbo09MgClt2k8vRvQnupslubj9KTTSxuKT3CRuG\r\n1XeJyop2ibJEG/YWB8CncJQapc8GFHVHlsj714J/Z+SS5B0xnq6ClVG/ltX4\r\nm/pU0w2cGtt4iK6vNorJkE9CByUpH11CdTTfWMOIFcbEBhGrvz+o35cTpWyN\r\n8aum84gU0VWPKxDSpXu1I+DF2KZO/OK0yswHx+z98Kybp6qCbbGup7lplM1/\r\nApOc3yYcHAKrlqyF/hRWaEDoPoxRCwAfFkeQLuVRRzjJZmnhqBXNNstNJjfn\r\ng6iXxKbe47NdfyWJ+EH7WGhwoHSBbFfk/14He1VGqcsSTIyCKpQGyJoTo2YG\r\nYL3ybWiy2X9+FlUrGArfWicAGfCirFgjhn7OtoJ4YapA2bC/R+9ZqxY8/oQY\r\nyVGVY4LgElc0srQKe4P+eO7IN7uCxI3RJ+afUH5fsEXj4dPu7Re1JS2cJb2G\r\nhYcanpaNbyfmFkENn5G5TZR7+OP5Sqa91bi5VxXKvho03gWPUGAUDa1M2tvx\r\nlIm/Jnyx/W8YUeEhJ+Y16CK/ooVeEesA5vY=\r\n=jWby\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"cc106ebb5fdeb50e6a0880a000a49e7364ec5d2b","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.11.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.16.0","dependencies":{"@eth-optimism/core-utils":"0.9.3","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2022726221713_1661552251854_0.18100392528924392","host":"s3://npm-registry-packages"}},"0.0.0-20228823182":{"name":"@eth-optimism/contracts","version":"0.0.0-20228823182","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20228823182","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"c2b621d97e24a6ebeac9796caa3b49d84cb3984f","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20228823182.tgz","fileCount":383,"integrity":"sha512-q+CuQuWV/Qia6POH4kF2sVTA8VgT5lr4gdSOCADtyGtVhG1yMWecbhCj41IGvWQUURXVzNl3SSn65y1yIlb5bQ==","signatures":[{"sig":"MEYCIQC0y/JutvVUfjh2hl201WRXA6UCMG5I97BzM9VJjwAKqAIhANgwxu06m6utIpGKGm8DnCoeO02ELuZ9hxNMzNsBHZ9e","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2154618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGng6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrCZg//aj7JkBXakV2t+JZxrG5CkhDUaUIKOpIeTtLyzpUuWEiWVXcJ\r\n/JjnL+SCJiJx2YT/6xXUWwvde1kdg59oPYeIKAE4knTxCaINVAFiqv42U9Gf\r\nXdItHbXSV23zmjROfKtWzpinfHlZb1HJ7N7GatFUUyB/m07AH0Bq43GpU0EK\r\nLhRYRWPOQxIj9jWLAvPqPsm7vw5BAON4beltPCwa6rPuOosCogIS8hndTs3/\r\nb/vLRs4c0p5oaARUcR5iD0w0AWxdRiNwSee15b/hLIsYN4xHUfEfQnb5MEzL\r\nsqDyCNCcs/JiITS/VEZidZknoALANsWLH9krLH3Lt5N5YR4xyN/Q9kDwzx62\r\nfg6MiOMDccNn6fQNt7sNQimTF4dp2mXzaxecZwJVCe/rKy7UA36YHy+Z0dYZ\r\n4UDuuQo7OWyXwXWeai+kfQE5md6avKt7KiElHv9ZZFsTnr/Pr5GLOq2fvBn0\r\nGFY66azknyP7MTlvAa0lItr3zcGitiuvADcmcf5wOfZF9poOge/MvThIc6ku\r\n1vAlQiu9kTyKE+KQYTol8w+hI01n+F+UpLknDjLb/uZgx+zl1FojtkSUB74S\r\nozBt9ZinKBOaCCX3BlqGUZ0yJJ7wptRfvZ4LYdSaY/5d6yQkgMyfuJMlf7AR\r\n266m6IdDer5o0mhTjuN19VvwD8MOQ6xQbpw=\r\n=nB6V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"2aef2d47549cbdf14bc5c023f5e559f4a2b57ca6","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.15.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.17.0","dependencies":{"@eth-optimism/core-utils":"0.9.3","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","rimraf":"^3.0.2","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20228823182_1662679098116_0.06648661801430777","host":"s3://npm-registry-packages"}},"0.5.34":{"name":"@eth-optimism/contracts","version":"0.5.34","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.34","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"36d904a2c6809cbd49309534936d714506edd55a","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.34.tgz","fileCount":383,"integrity":"sha512-TgMvzevw14bkPbrVp3XqSrEI0SEyyzs69rQiurHpeY72tmN+8XBcTOF00tnfjqQA6MVPQvoQf1hQLnEPzmRpdQ==","signatures":[{"sig":"MEYCIQCaLyUbqWCopZMPbp5ChA+tBqWfP/QjmIm3ep8QIfiaRgIhAJjpi5lYJApXbWMnaAkJ7vw2Egx4AhONe6kpbRlACaX9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2154514,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjHyNSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqtVg//Z4BzzPiOveuZAnbVxj0Wo/NHAqUgxvdvX0VNpZePMp/3B06u\r\n4TERwVfJV6/1hqp4oEQKmD8OcZTZbDEle5Z7mBiUrbSAHk6jFYjM4+OK+O7A\r\nq7K5Sn0xhyG8MI29yIxJXu6jPFp/7QeSflqO+yoZYkIUWpjlBspKz+bis3oO\r\nBFMAChp205xnT40+83IjSGqfjOSSdFY+qop/46CghlJe8FOt5/SVoAjOWllg\r\nUguuhkh5NHXcjlRw1ZE99ODiUWXipFzRLH7i2zyt4xzTSgFcMaKkRjI4LG12\r\ngyGCPCbfOF1vJfYVe5rJiw0l4DQiDZuPC5h+1RTPUmWuNRxcPBlsSEA6RyeM\r\nV6Qtn01DUE0HMOyUW/SGITe+IpXoRUq1xzlwETzHl7xAABHeuqqx1EX39MmZ\r\nt5RcP8FWsj9GMvwQE6HcUrg6Dmnm2eH+0x8U4P+l0yYTSvCBe/pNqbvfsC/c\r\n7ClDyLbjssjMNPcUHW0vTfZXKKU7sbvBnucaPiyni3uLb0gL1n29t66l6hN3\r\na8xI2zPEJNSZfqExaW+nQOkeDFjdQEBwSSxTBOO1lgLImRp6Xe4s8BqA7yVI\r\ncA0LgDj3xWaGSuC5Q9uQJl3+F2PYBQgIzcJaShxQSNbCbW0nVb09llrlJvhT\r\nE5xcCuTnPkA0EkiHGvd28NEw37N7Sj7FzNw=\r\n=USMx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"530e586ee2ed1e8802b6d90b2d920df2db8e3f22","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.15.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.17.0","dependencies":{"@eth-optimism/core-utils":"0.10.0","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.34_1662985042520_0.566831932187988","host":"s3://npm-registry-packages"}},"0.0.0-2022812163333":{"name":"@eth-optimism/contracts","version":"0.0.0-2022812163333","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2022812163333","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"57ab4fd08509f0d768ed0d5a8ab7c2e7b84772f3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2022812163333.tgz","fileCount":383,"integrity":"sha512-Jrl1o4oXsDOaVth//xZaRY9wdeOZ59Dz0EHdGWI4sZuV9/TgYvyYc9oXpLCw2KEOEKiDhahTWBXcVokS9A/Mgw==","signatures":[{"sig":"MEQCIGFQN4y53CQyuUg82uMs21odLLveSKOVXpy0QDiK7fPyAiBqgPUhIj9GZUP0k8UZODCIhHkq9mgv+C+TYiuagJVrEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2151882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjH19pACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqiLg/+JP2cei93aK/mSQBgUnwkb1gr8KO7wNubiRI1KK/Gsx6rka9b\r\n3bM6grh+GK1OEEknFNJ4uCjq+NsfpbsaBNZNyiI8mMcennpO5QL3g0vqVKDV\r\nvhuU1A4BXpoHDXV+RUy8WG3cvn4cHeB+jfIeXsZ2mVlr1Ie1hAWLbOVuhxJG\r\nj/e5KYltfJTUhHVSARsJA+2Rr1Spwp2zK1Cww0qXN1ECfPEeDkQ1UHM2FnEO\r\nf6Y9AuMfLEasC8HXWNkT2P33K/kX8F4Q19Tfab1S9W8w0hPd5X2399mMkPj1\r\nMA22Pitnlw4KGX3KqzDxE7qltRMS8rouj7Eo2V4TO0DikcI9Ol1edP2B4EZo\r\nZ928xMpkMMMOywXaliAn35AGqkpc2zriaUfK6rPQqb2TJNGiOerPsAMyCWMy\r\nFzaObwuROviLEi3gPK5DPh7FBWhylPTB4GEJOASIJo+/a6WxmeP0ZvPX512q\r\nJPdNuesxhIPlYs6f5dS8f3pRMMNKq82b0oAYSviyc7Ws/cxcVMUrc/94YTnz\r\nz2PwR1vj5W8lYrClRQRYGTJRKONRNpe8DWQWXT+gWTD0uVBJm22WGpYwhaiq\r\n2nw8G+zKqg6WIy4OpUmpzJUj7BohXIgYyAyy5JtfH52L2im+s+pG1hbSf3js\r\nAtOgatv2DdlAAWOse9OEVK+2FH1ToMMzzeo=\r\n=+0hw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"9c2700f4f9bb6ecde0cdb238816067341802fbff","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.15.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.17.0","dependencies":{"@eth-optimism/core-utils":"0.10.0","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2022812163333_1663000425665_0.6367712413788489","host":"s3://npm-registry-packages"}},"0.0.0-2022813172428":{"name":"@eth-optimism/contracts","version":"0.0.0-2022813172428","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2022813172428","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"a39eb808be32517a16a6369288549dca547b5cd0","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2022813172428.tgz","fileCount":498,"integrity":"sha512-Rl9pUfsrt9MT5WkLtvpZQ6VW2W5JXY8TVCN2ICkjUlHeYmDpQXe2NJKXLUhZnKJu8INJiYv2kVk8cMn4QQib7w==","signatures":[{"sig":"MEYCIQDTzi+BuMMOnCqrPn7uZPmP5J8G/e9i2QzfZ0L9uS408gIhAOp3PSf7AA+6bGTYlIIf1s0YmMB8c1DdozGUl3pnC/5p","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15273941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjILzcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmou4g/+JOLBoe2kv0zPqFC/zhiYwYYECOkxtGGUcpJ/Ne6FivEPSnVj\r\nXoW+5TyOufCqDoY/F0MpOajmnix5DGIvZ5eRnEbEwltASHNCGJxpv7kl3OkI\r\nXHNn0OZo2QcHrX0MqmeCus5U/I42h7ce2QckvHQpXTZORDmMzYtESfxZxDyQ\r\nw5SmKddKKmh15Ym8bfjtDL1dGbMR1EDWMEJc9Ly3TodxwS4jMhDiKtdftsEb\r\nDH/GM7+p0RYR2/iPVBf+7xIUww+GTdP6FnzF4nelxDxJCL2ur3+4O150oTDb\r\nilXYj6PZR8ewtNSNsw7gK8k4ybRgbLkuV3nSXW7d7FzrU/mWYFDhGodJJ6SM\r\n9VYXebO6QYhOSr8SgXetvf/GxeN1VydH8xRajMIZ2grM2DYMwPwe+hy59cVz\r\no5SE/fACm2iUsEXdM90Dk4ZiryqeW4z/9gHPNAKqnVx8gmJF4zDFipcUZzEc\r\nvEphTrkHNl4xxyHt2D8xt1Fop0Zjyi89VNnxvazYUS71Hee3nA2MZRdI0u8j\r\nFNZEbP/5J/UUHqN41SU/9IJDArB4aqp5xgd3qkk3wHFcr9xnx3BZp3Ia4XRP\r\nheVkGTCJRBX8Z+om39cWRGNYdgoXqKAvXnMV5K2arEHetJmIjP5jkKvg4Gzk\r\nvfwUR8XGYaU8kwgzmTyDEZ2rbB1bJBG9xt0=\r\n=r8hB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"0716409ed6c6478a85f92162ae76f79e1833fbce","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo","prepack":"yarn prepublishOnly","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","postpack":"yarn postpublish","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","postpublish":"rimraf chugsplash L1 L2 libraries standards","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","prepublishOnly":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.15.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.17.0","dependencies":{"@eth-optimism/core-utils":"0.9.3","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2022813172428_1663089884505_0.5396405268144815","host":"s3://npm-registry-packages"}},"0.5.35":{"name":"@eth-optimism/contracts","version":"0.5.35","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.35","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"1691cb8c971a4492cd8722aee007a335977dd6a3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.35.tgz","fileCount":383,"integrity":"sha512-cVtzGKQkxRGps8CWKagpH5Q9AKQ1pKK9uTHZ1mUSwUD5LUWYDJ/HHtlToz2on/arR2Yb+PyK0kERWM4RThe2aw==","signatures":[{"sig":"MEYCIQC/OtkoGd4n0yZow5xbM04jpeFCFSLFnaxcC9YojUa7dAIhANgNexdRvneNseoHc7rFNb0hG+ZEvsY/pAcJD4gUxd9T","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2151869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIfntACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYDA/7BQwJ2aqH8B+5+zbst0Gc2lLp2I3HWBnLSNDGlRoYZNJ3Ob6k\r\n6xky8BDu/Y9eFxnpwyCZTfNLB5mOZfhByGnN64D8wRx6YpxYBYNVf3dyoLHN\r\nZZy6PxU/vpRxmugSF/fZHbV9ImiaOqEz0dRAKZzLQWpTH52+2LPB3hKoYNnR\r\nmmi9nOltcjF9xIS8//59pOY24UgcizsNMn2AqWtWlgqEjG7Om+8oHcQqiyr9\r\nWlyG7Q2gBf2suZawGIWGw660TJkZ/4yxb6mK74cf8tJljikoXP5ds//6FU1h\r\nR4m1fUK2Q7Ez6bfZUwA/qkDvRbkTPJqcsjPA0dVuLeu7GLxh5NjpwdCC16Iv\r\na4mJd0cv5MFuaiG+xGwJY761tOdBhDaNzuW8P/QIuObryKn0/vDrngQ1qcRQ\r\nXvFJ/fsgxhMFGlNtDd53xzxIaK2axMAY9q33w4hJs5LgnZjlPBNGHt+El1rl\r\nyW7/j4QMYxIJ85hAU+uIvkjeiPccVRNt/sNi/zf4aS4hu9y9C9S2XwZmtLcM\r\ntIyTw+h7s0wzzgk6z77JaCJPfeYkYTEnjkeNT/TOgzP5oGcWB6+cBH4fr4fe\r\njk0LZQXrQ8Tj1iNwz52gPMvlwhdkUirzqEW5fsPGqaqvdFNA+gTklXvT9aKi\r\niDw4kBQUimpnKRGT01W6+lVXYtxVAvKnZlw=\r\n=lVWr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"3fe480d4db9aca287bc89d7bda4421615296d35b","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.15.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.17.0","dependencies":{"@eth-optimism/core-utils":"0.10.0","@ethersproject/abstract-signer":"^5.6.2","@ethersproject/abstract-provider":"^5.6.1"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.6.8","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.6.3","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.6.1","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.6.8","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.6.1","@eth-optimism/hardhat-deploy-config":"^0.2.2","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.35_1663171052890_0.37322411369643205","host":"s3://npm-registry-packages"}},"0.0.0-2022819193354":{"name":"@eth-optimism/contracts","version":"0.0.0-2022819193354","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-2022819193354","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"d4f38e03de089ebbca5a4824ac4ab39cafcfa3d3","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-2022819193354.tgz","fileCount":383,"integrity":"sha512-9Vya9p2naYxs+A1k5Xt1NasxhB02ZMJbS9WFo9cu+aYJELzBdfzkcyDM4AMKZJekA5zAeNPgb0zdtRaKJYIQhA==","signatures":[{"sig":"MEUCIErwpgM1IGdLAoosjbMe/mOcEfQPbhFE2wW7dgyhQlMiAiEA6DnOuadZMSV5OoDhz2gPt8J1w9hRBtAtGQZaG3vXBRs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2151909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKMQwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoXlA//WC7H7zRz8S0CkyxLkMCEzRuB6/0inueckO5vkroTfD2n4jOZ\r\n1WBqUvgd7+yJnxYlKkyB3aW9D1j+bzBz31vs/t6qvKjsJ0w9QaDdBSyLixma\r\nIneJnZrwO8EcLwtxN8oKSt08BYGAxi3OZPr1vqLjb4CTsYpZLj+EHJYSIRat\r\n3MZmzAvHqs1HhUn1Hc2oSQHvUZZVsNpOluK2/62t8buQAvBGSmpC2RFHkvpF\r\nN/9QPRS4VP1h8PPxrux8LWWiinX2uyKrWHmG7uH71eX4NAK4MLiWnPlBNDYD\r\nGoDjvn+LhNicUFAfzkJbVbpIiEO+EtzruLsk3ZUT+AnEuhol9hWr1NNfVShm\r\nCy3lTLDkJZIGVeX9taht5N229zXAlquukzZfoG9AsKKBpjvucCVuu41lYoov\r\neSzDUd2fR9nAy156dyLI2yZDArD5v2CrZ5pJ8280XmdSc12qTX7r+8Pc/UQH\r\nRJg5lyxweD4bh9ArQOg/DN8033QRjfK6YbWt/k8DBzo6b5cvZk8FOjzn12Bd\r\nl12zdwBLi0gkN+YsiLtjcaf6GUQhpsbviUD+64tBWA43RW321e1BFQJlwc4e\r\nYHp6ODbon38NA4XOuJerYxTVXR2tsVNKTGAXHUjQ1Fg6xVx3msSb+rEpQqhF\r\nbTgt2mCelTtmx09vNXGZWozYDBmzJ5Pd50c=\r\n=75vE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n# Optimism Smart Contracts\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"c877eaad07ed9a055e794201b72e832f4024d732","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.15.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.17.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-2022819193354","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.0.0-2022819193354","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-2022819193354_1663616048004_0.20188217331596547","host":"s3://npm-registry-packages"}},"0.5.36":{"name":"@eth-optimism/contracts","version":"0.5.36","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.36","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"993be54587f1a1ca78d41ad92fb7314500a45095","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.36.tgz","fileCount":383,"integrity":"sha512-yOXtp/MBQFHPGbB7sGmMB6A6dxuKj8Figj2aS/5gJVXyV6wKPsvbQI5EBG3AE31qdi5C52lUqlR5EsJyMhqWBw==","signatures":[{"sig":"MEYCIQC7+m1yzshPlHj/gSO3sd06XrBTihnKV0Pedb9jzjVJYgIhAMqhhSyvzw8OSITBcDjjNfMe/efzi78wgG3JxAPHwICl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2151869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjKdzsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWDg/9GCDV6ncwEi/QdJHFFCqLtAqF2pCsLGFuhHd3JAZA+90xJtFV\r\nwtitquP+Mn7KfXGamoFbnAV8S0B+cWNK/Xtzjk9ViwwaxITbiZBIeo7zIRr5\r\nOwqnkhU3tLH7y5z+YWMj5IIyoP0OOiSrXMgfP/Bgw14axCTas4++HYxH1/AM\r\nwVPD2KkXfR9kIWGP91jAVGZfiZpSqgHlNaDkDzLMo7TWbtluaqUO5P+bgt3j\r\nz1zQQqDbHcizhh5MnarUtZbjZQW+TgYssYDudleXIop9z/Tlx6kmfXs2vT5g\r\n+o91txbS4jaRWAj98Cos9onaWUCS9S1pBX2c1fsThRMJEBdKReS7eI/e1xd+\r\nv8ff68YHAmFp91TjgET3pxEmza3uXkX9sOoL7UB9TqDa7ViV9kwrXC/N0GjL\r\nF516m6jtOSv0+bj6NF0aoNinIwqbeR/jMF8Ih/9EsoFujhdf8ys7sJuzC3si\r\nHKDN8jBA4I7mjoc004PfnwVj7hfKB1R+1nFbCcsZlRAf/N/dp4PPJP406H4U\r\nEM9Gsv5C04CE9SHTt4DK8u18KWgJ/wvTqLg6FFqnlR61zvr1IjbAyLErnTJQ\r\n2aRJYh5gcrCYWb3LH70xm90+eQA1K6T0XUEu0M5nWUUPs5FpiFNrWe31pcIm\r\n3ruMAscUxEizYGtvWXJhWhdt3fAHE601Buc=\r\n=+mAR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"798cf02c0903c4c283a87088988850c6c03ca4fb","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.15.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.17.0","dependencies":{"@eth-optimism/core-utils":"0.10.1","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.3","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.36_1663687915837_0.24783106018201062","host":"s3://npm-registry-packages"}},"0.5.37":{"name":"@eth-optimism/contracts","version":"0.5.37","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.37","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"3aaca1ca1f49ef895d4165cc7bf29c8d1f5b0f56","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.37.tgz","fileCount":383,"integrity":"sha512-HbNUUDIM1dUAM0hWPfGp3l9/Zte40zi8QhVbUSIwdYRA7jG7cZgbteqavrjW8wwFqxkWX9IrtA0KAR7pNlSAIQ==","signatures":[{"sig":"MEUCIQD5Qr/kb2gvIqIeVH0U8/0dRo7QHzhcg+l2pF8xmv9K7gIgeH4eKObLTgWuHHYM9ce74S6uYvk+KSFaLFDd+G2Jw04=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2151869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNPgOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo3WQ//YBrU3IU/Q2T11U+OlKC+ueJ3Yad4REQQShP2OLmrloWfeswv\r\nVZG7LGVL2YlgVakvt3GJtuYwm8dsxX9GozoNeMVtSI0HPNlnYvsvYQR/sAiZ\r\nfd83JtNWIZE1MtSu0RCxjoLNIIzugYUp1QULGGj3f4RyhLxgqrshqOZlLE5q\r\n/IcbLsTYu5UGrcz+/ECs+BXM1Gslto+nliz35Rm/REPmxHlkFOCBqCHpJbpd\r\n8ABSx/Its/gNlrGulke6q+jgD8OmVLIB+nmEuUpF8e5Qta7QI2/SIQbBVt3c\r\n4tbdog2lYOzhrMyEaBQTRZ/+MsD7TUJvOLCzfg9vl8P+7EJuH2WPn88J7VgL\r\n+S9WykcdFaHPQtx9+sUeTNdwmiIlo4O4bzSCCVPBxWEvgN9MCYzV/S357jLT\r\ng7NbZzRyz+zZS1WY+6IPIXR/MUXaLLmt5Nb6yC9LrtzVpXm9655Fn+iTPFDB\r\nPkQRxna0UcsyFvkBd86awecS+oJXkRX2SHjvu9R1xWU46jeaFkbnpP/sZFJK\r\nWVCkzc07fqom2wB/XTrl9pf1v9e/4mIQ7tJR6spjLOgHBMg1pCN5yp1/6CWf\r\nYCb7KZh8m4aoDypPCIZBaZHdHwT+SsCMbDsJwjAhN0RPP1uZEsuE1tDqOiJE\r\nXFhwpvLW+tcDArPZEdi7lQmRAO6NNv3Wfyw=\r\n=R7pD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"302700d694ad448befadc23760a9e5b448e3754d","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.15.0","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.17.0","dependencies":{"@eth-optimism/core-utils":"0.10.1","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.4","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.37_1664415757989_0.5278097709328129","host":"s3://npm-registry-packages"}},"0.5.38":{"name":"@eth-optimism/contracts","version":"0.5.38","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.38","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"9c55725a253a0c6be351b4823ec1f0af62df8315","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.38.tgz","fileCount":383,"integrity":"sha512-VvPvTD6AKFIPZVwGRK1eDuhRS+WyUGemIiu7h9txpKitkXKpTqb4DscR6cul5Dl+JhonX36ZvnJmDIfF+KBY5A==","signatures":[{"sig":"MEUCIQDyvRNK7OnEy9tKGNY9fr67KFumBONej+WXBB1GMZ/X+AIgNTgUIX76NRqhdqBzbiB1bSWYm22/+KhGqlBUhNuTNsU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2152705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZXbBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmri+g/9HRdrq7pjaq/gCWV6Hb3d2TxIyK3nSnLyUY87evpWueZt1Vpy\r\n1kxEN4EsLqcr8RtW4Ts0WVB1H19GQHHz8H259ALjbzqZtU7MgA0quKINewTN\r\nkIlhpDYRsIDfGWtFVMzt8Tbfi1q8skhumxhHAe6Fo0Tl2UVpuIGuf/SfwUPM\r\n0KazdZpb0sshfynX5maGn7Zeh8/h0DOt9c4e2o5N3rpBq3QFzDD1jZ06AQ41\r\nMlMLubssaQKpUPtb/IyHLAj0OjRcS4tSmJbREvowULMCGkLTJf+ilcN3BPGS\r\nGi9L3jgufRNMuPAIAZpchXXDmrtnFn1KNBDKqYmmuZfrMI2Iv3ayB2l4ZNS1\r\nuV71Pa7OWb6xEwCrVorM3/7wDh86UaWNkvW9Om/GyUoGB5/B782kgqw+6Qki\r\nPMpaYFqmEMne3+ZQ1xtjhTzeZg6j2iBVUob9c96yyW+k6A8nmP9GBBw4fQZy\r\nJ29eT4W3PfjnX8+QIeRv8CLiDpijl3MY9jRICJ2MJQuXxGedk1bGviQ9BKe/\r\nUpzDgKHWbx4msJHnpz8UWJ91Yx7Lj3nVH5AP8WdMgJGP60KilumGfVXenkoq\r\nez+W5wYfTiphXDBEUPTDK5m9Jhsrq+y4zoLCd3wArkGj8dpHatSC1OV4x6zf\r\n/vYK5T/FdskQ8on0hbcgyZ/HCBgvrH0PEPM=\r\n=x7BL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"6528ae75b6d261e1478c8125b9d27062f4254721","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.0","dependencies":{"@eth-optimism/core-utils":"0.11.0","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.4","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.38_1667593921359_0.46391568818909623","host":"s3://npm-registry-packages"}},"0.0.0-202211121340":{"name":"@eth-optimism/contracts","version":"0.0.0-202211121340","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202211121340","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"a04844cd7a4d7f828d998d6fa2df4945019dee41","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202211121340.tgz","fileCount":369,"integrity":"sha512-nMjP1mSBlKHCZSWSqjZl8RhrEKTwaQ5ZYqoOKoeY1FawYMN+gfWnYLeEp3zPzxcNsY/9HfbdjX9EcwRAvAA1SQ==","signatures":[{"sig":"MEQCIHjjlIeuG+UpLGotz9mLT5RlF10JDi5J62L2JXU4b9zxAiADfaJ9QQiNfp8s+ztJnCnl+05GwvoDY+9q8gtQEw4cXQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2102200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjiA3hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmollA//RSNs9JRVeMi6r3scbyTV4gGapiVc1k6VrAWeonq8xXnlqfet\r\nLnOQSWMyltffnQ26yGHiQcMjy3ifYKeXfnxQi92QMcf8DZSwd6UweWR2ZzCr\r\nH5DEljsZMC1y2AXfUWXXHGSqmnNDVRV6ur2xFBxgZV3Ww2cidKNyWdvxeUq7\r\n26wpeeVf4YJVTsd31LQhzY5zJBWsCotfymfM5j0SP/9ORY6P4XxAJwxf+UtQ\r\nrsALtUasrslW0BPEBDirjG9mp1WAWQTbU7F0T3DagqB9cWJcezKcm8lES2eT\r\n3tMAFdhYurdOfMIGAOAMjyaBDfIL5CjPz17ysaa85+KlImaattb2X8lM9iOv\r\nB11+KHqUDaRHFhZCrwApcmzdsV0EfXeTvdgmO+ksrOdrTXhKOKBZ04/kraO2\r\niSFoVqAf9RhKfvyECErTOHIyA35lapd4EGsepNiUTlBONolOvVbZmhH7+hXd\r\noPacZ4kLrm2HPZgumzelzyvnjIZx6145pmqcK7E/QP2isx/dXCewKD0ZP4Z8\r\nruOsOCSBeC4RsvXCvVjQksuPUjkMP8PJNG1/G5N8hwzwwxz24AOVJuh8AwTP\r\nq+Ig/flz2i4KDfKwXwRjYypJAZh8CVWsPTdSW9fYQD4Huna87fbMPXmj3W8n\r\nfjr+TswKeljrwBmNJw7spfJ6hufq1htPuk8=\r\n=/4i/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"092a36cb23b4ba2ad801341af82064ec8f2c5eae","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.0.0-202211121340","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.4","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202211121340_1669860833455_0.03000420594351172","host":"s3://npm-registry-packages"}},"0.0.0-202211220335":{"name":"@eth-optimism/contracts","version":"0.0.0-202211220335","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202211220335","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"76d0d3a4edea317a0d81458106f2dd48bafea1f5","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202211220335.tgz","fileCount":369,"integrity":"sha512-wou5tC5a2ktRN0kTcZKN3UEKbh1AR6GOS2WyAAzHFetmj/A684/WWzR1A49uRrMHuILcazU+GmK3zsfy7VjWVg==","signatures":[{"sig":"MEYCIQCSoAcfvCmu/sstXEholqlfOmy5/EI74hyHBZn5DRv+ugIhAMULe90X0KOX4DrdIA+6IHf19hh10rd4xPSe0XGUzOeQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2102200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjimENACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpHgA/9GJEeZ8BkSjI23fYjuNKFRIdcOylCHbqsLt39CiBlw10V/gDc\r\ntWuKK+3U4Uo4OrgjDqpkLHT7qSI+Iq6tIKUPqOb1sIo2EeAc9i/Ztt0acJYV\r\nG48oKqbH+l/UHHtgv5DT4xshaeFhv6kXUANnHEGyn/kttTcW0PNbW94aarjs\r\nda61AqS6kHQqwA5mMDyAHHm6k8bcFUku74JMa4uR58xa2qmqJ6XBGWhWUXGw\r\ndycPh6MwyV4vlPfuocrJOeQNly4J9HOrxYob/18tYgKrXrsM3tPKgkFIbxec\r\nxQhizkQJb1Sy1JEnDCJzCkEPSbH+Ls3tG4dmPGjfG6dKAHH6PWo1u2WpegGk\r\ndlOaldJa5uXVr6PXLqUGZ5ItHf0cTKxTd3qV1/0aD2ZPcYESbHc2hEaROgBR\r\nfOifQlZnCZ1in6KXbPWdm0oxuEhIeEAxhiVPOqkJnIpMSWPe5i5k1LK8vU8s\r\nsDtjCzuj5hLB2LDwS/Ezu0Bx94gbfFyBPXZVCUDN1GRgleUdyvSiI6kCL4er\r\nmu5oYt+jAygUPJR/qtJQ2F+o9MXKV1EtbqfpUIpuebWlot2eOfqQaSExJkqd\r\n53WhkMrK4uNfFAKUPoPozEhXKpOof6c6uBd8RuNpl+LiL3Euup2z52jDfN3/\r\nkvef3OiNCbohthStGllh/BDU6YjQikHh1nA=\r\n=Buwt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"26406af1ed83539f77834f436c90d48a923c44cb","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.0.0-202211220335","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.4","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202211220335_1670013197624_0.8742264540157016","host":"s3://npm-registry-packages"}},"0.0.0-202211534330":{"name":"@eth-optimism/contracts","version":"0.0.0-202211534330","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202211534330","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"f6a11e340c763f8deb7e4d235b4cb48faf2b8992","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202211534330.tgz","fileCount":369,"integrity":"sha512-eJKH8t7Xk7IN2cwgOBFkzNYN3b9K4P487ExTk7PfWdiDcJm1n1g1r3DaGj0vmxicQ4Sk0O4TT91uAse0DBqreA==","signatures":[{"sig":"MEYCIQDLJgoccyw0tsWz1qbj4HaJV3Tpmpe1IR6L3mGk8UlgZQIhALdasSAYaKTeomBinCUC8Z50DJH3lBTG04a65pZSHalN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2102200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjWjuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrCSRAAl8C/+45iL9MgAMsPr8Cp9SsC8Nuvg9U5DwPt1023pJYveK0D\r\nmbdPyPoM3p8UtLKg8/n960YIY0XNfK/dpTE7UwXaEATjINjX83VFEGPyBX4p\r\nsKeb4ZTSDUeIZ2ECbWH2HmL3uzKPw31FsdYnBPXo3733Gv+pl6Kftkcjq2zE\r\nZ8xwQ+zbnKddz1Khm2Lt+yY80d6WLyx5mjqXt10uRJuXDupPjVCUGudDOZ0q\r\nFDgXgMylKNR2Bc2ZPsBuKWMo0Es29aIjEKp1ZHD+KuSwvjNLfY9+xy5G4G7A\r\nRseYBEMyXASCekY8rwCk5459EUKc2FJl5MgUvy7fuSswdF9jf6FEaGkcpB5e\r\nV4BccZnl/MGmdUF6vT0HLzscCg4e8LBWfNxwgT+S7oR1/6g+pS/bN8q7a+Wu\r\nqXZc4BoI2JZIb86DRhOn9LhElSdFLxbSOC7vcCQjtBEpJXlC7/h07PHfBlw0\r\nt0pgffDbIR6e0ZUjdLp4E9XlQhMEqKPIH0dYonSgUpNmklvggdkNFUyiVCtp\r\n/Vs5Phw6utBCAGJQKOSnGsjbPLKH9YAt9psjqgl32haWJjyFJjQ4u9RqVOPQ\r\nVvrnF40ZyqcJyLTLhxtEhWyenD4JZNHQQII4tVOLgOIscFjKScgd6FRmIRPz\r\n/JcEAwYptbF3Bdalc5kS3izXSrqTpysoU/I=\r\n=kS8M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"a52a80a205798cbdeb7338acdb70d20b596534bf","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.0.0-202211534330","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.4","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202211534330_1670211822448_0.9546399851967164","host":"s3://npm-registry-packages"}},"0.0.0-202211542835":{"name":"@eth-optimism/contracts","version":"0.0.0-202211542835","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202211542835","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"615a49ae069e0e8be7aef145a8d4992f02dc4e82","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202211542835.tgz","fileCount":369,"integrity":"sha512-i8oBJFQNlLleNjn2axZyVGaixrm9hQ7wEe4VEl8wv+bYjynRZN/As0ge4M4gvzQw10JQqe16zZ2yJgiz5i0Nxw==","signatures":[{"sig":"MEQCIGXB2TMi/fYQu9PHhKUz4l/pHV6BVEDG4piEuNtK0V72AiBNetblYs3UsIP60gxjhELtBx/wBbLdPp5V7Jhhg5ar7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2102200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjXOEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmosyg/9EJDprvodUZsG/Ym6E2on2N6TUCsAzu3pzK0mvA6xbfnZJavO\r\nwTxI9yC/DsVLyLRP3eKJ4IH+bvW+lxA3amzGWtoWCvyWXxAequoBV1Q6drwU\r\n25oNYvDLBySftEQS1UOXBpeyHJKJxUtDy+mE+OrMEUO2FssnLH8Hx67z4dp5\r\nA1g7BHR4oBE588+8b8KYKaWK9QC05kBYUMA9pmQqqXGpPqvGvEarfs7sWCN4\r\nF65/+W/lyEZxZNtFREgMpwQ6/j1qpXEVZ8eWqUd43GQi8IjK3kxqUdQ5Ksmv\r\nKlehIWjYJlB13AMUXLnOAIHCmiR6exEbxTghxJ4KPvbYDaHq8zoMU+KEnp6C\r\nKW9UahDiOhHrE+JEHB5VqPmb4DCpleeLQYyKf/oPtkTTdxdhG5ibXDVngqKO\r\nI35ltZz3zbDqE5gnAEexOY9q07vLnc0HxScXXpJiL96ovhS38y2uLlaoc3/P\r\nQN9tiIYOto2511oCVdv47Ok49thPYnU1A/BqnvWQDFuYmACbzWg59i8n/HN+\r\nuJRkiNuKr1MLDRhURC4hSNe8mzDGpG35QaK4YYxRBYLk8DIH76Uj7S8r6CcG\r\nMq8ibz41t9KXLOV5OxmCIoFrMBbbcg7uLLn2COVk4VY7QEHTxnmgDkrTggiO\r\nCs3TO2lmrYn/ZLDspPV6VdPnkY5pu6SN9Ps=\r\n=AFYq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"6ad383bb6ddf8c1218b6b5519531250a84b72f0b","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.0.0-202211542835","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.4","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202211542835_1670214532109_0.984493450728056","host":"s3://npm-registry-packages"}},"0.0.0-202211517735":{"name":"@eth-optimism/contracts","version":"0.0.0-202211517735","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202211517735","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"b92d1b921f7d2102f84309f90f51a3144510819d","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202211517735.tgz","fileCount":369,"integrity":"sha512-V9rMffTVWDcTCd7t2Hf/A2umCQCOhYDzhWrnU3sB1eK06qyCs8rdzRTB1gKbJ4kQzwB0vPmHh4ja5e1gqDu4ag==","signatures":[{"sig":"MEUCIHWYXYm9vk64Fy2CEn4R+aLUxRSheHvT70bt46+XTJd8AiEA7/QMXDuzIa6tlRVtthebLaeD6Sf9uighfuA2Rxs/Idc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2102200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjiVnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWnBAAmhndVzUX69edpbaW8wCMoPYYMgSfMnXEGZc8jf0jwhf6W6R+\r\ne4qY8FZSny/AWRJc6WerT84bZWSN0F5wsHKOgAWziTBAjWfjCpRmmuXobbV9\r\n0S/pPow5VgFJzdv0F97pCmHHxCpNlWt9fhFk0zokmYRaMG+AZLKCC6jPHSoG\r\n3ExtBrjNAijMaJX9ywIFDBwt6txGO7yHkE3+QO+Vv0H0dt8CyX/fdHyB5ldF\r\nKpwd6WDk7AMXV6OvDoxX4Fkg482945zHmAy//sNiwYiZuK8x0FeEAn+IIeIE\r\nod8TiFcrDOnLWUx1zaCK+lKZWNihLaei+/7E9IDl9xCkGWf+rzKX7qoz1y3p\r\nMbW/3WM7eGlMYGd4FpqLeCr9iqysiNq4rEV+Aw6zhEoN1UIScSXAP3zzzW3E\r\nlbBEgkY4AI5w9BPYRcei5JRU3mMq96woo7utF12S5TcwTgbFhe6Pj1djbO+d\r\nqwHTTiFTUS+7dz0X4SySja8DLKeNHZWJT9um/0VmnwlmmcQ+p+sDqx4X/w/s\r\nYXzG5XZhLccssTnZAqgJukC99mHhbI3/HlA6w1K8VSPhcvbP098L/hJvfYlI\r\nYp+90jhLGaBl2Ll6BYLx/LGG5rlhhYqNBBcuf42wcmH8u1hEfbrLk5Cyb5V4\r\nYkpE+17B3Azq9PdGXEtqu36+SxD8y66pM+I=\r\n=SkHl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"4faf5b0f0379e695488f61702d9a7c37b1f3e19a","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.0.0-202211517735","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.4","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202211517735_1670260071529_0.42819246245589104","host":"s3://npm-registry-packages"}},"0.0.0-202211521918":{"name":"@eth-optimism/contracts","version":"0.0.0-202211521918","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-202211521918","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"48f3cf67e94c0d68e66695a39ed8f9504574c05b","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-202211521918.tgz","fileCount":369,"integrity":"sha512-KxQ/OwO7o/YQO7+B9lXrCEhL9QLmlCJ3Gb99qBQf0sh+YQkHCh1rw8xyAVv4Vpd0nFh59lFxlSPFUDACssX8DQ==","signatures":[{"sig":"MEMCH0PQ+4y7ihpt2mS+yuIWRtTkJeLhkHL8v9VePGFtHS8CIFPw3fB4jFoEqGcve0ZleULtSCGzePrGw7jmB/V3JLhr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2102200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjjl4LACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq7HQ/6Au9kudywySQq4Zo2hrQsrhv2oIHdsaOEHLGwkLZ1AXP/bqu4\r\nmAB5BvnsL8vsOOQSRVcyDU1Nkt/fToTbB7tsH5w/lmsezhhyGzH237JWIFx/\r\nrpGiaXVGuajuzRSmKIPKlMSg4uv+JXQF+IdnLUiIJobHYTH0bQe1O8IwfSLT\r\n1VBUhtaiXgFgmfrjAXL8g61ccSIR4I8DT9j7Eh4rtqN1PH7Cy+SeU+u27jIz\r\nVywtZRLH/WVCYQlnfUQEj2gXweMIxtzW6Evq+KYHaEVxybA2v/IqFKO0NZNh\r\nfdJQM930+VMUuvtrierW+qt9Paeh9H9G9CwAf8lZo/sXeMdWyW9s5T24TFyP\r\nbNPUP5xLIImBVebSy4keMJXdDGuxQsk7EqNRpluvtPOZ7K7dvVM6DrHPkToU\r\nOamEwhe1CvOT+SMoRvu+qURGqSjRlI+cW3C6SShS6cdhZKY0fs4kw99A1KCV\r\nWrhYdGRNoj8BUDuk5QAHuKWbRkblR8QB7irFP5RuKAN+XxbtYYZn8zmTO9u+\r\nrbvCNO0LzidYs2SZ31cA4Ap7SSubttkGMluwuwHXubG1FUVtdK/IN4wnDqkh\r\nkR1IDmkcXtfyuFlqpnkOydWER5Jh/gsXXd8IF/6D2lG5W1aGXcOqyv8+Nffg\r\nTRDY95ylQNIPEFkPFitXd1rECTE0EKhkUgg=\r\n=kEZK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"d563f6cf7a843d8f66c4b43b4942b87522e3120d","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.0.0-202211521918","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.0.0","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.6.2","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.4","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-202211521918_1670274570987_0.6203843450848139","host":"s3://npm-registry-packages"}},"0.5.39":{"name":"@eth-optimism/contracts","version":"0.5.39","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.39","maintainers":[{"name":"karlfloersch","email":"karl@karl.tech"},{"name":"ben-chain","email":"ben@optimism.io"},{"name":"k-ho","email":"kevin@optimism.io"},{"name":"tynes","email":"tyneway12@gmail.com"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"a312a0a0b2d5853cd417c5e8969e87288e166fcb","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.39.tgz","fileCount":369,"integrity":"sha512-u3UufuZFzgidRN2/cC3mhRxX+M6VsMV9tauIKu8D5pym5/UO4pZr85WP3KxHFfLh1i8zmkdj+pN/GRQsNYCqMg==","signatures":[{"sig":"MEYCIQDLIvtiOE91AKzcCFW5pcOk7yiq/rA0H6m+doi2Dvsj8QIhAJn0vLnLJkeIysCj+vHkeQyAjSnnFbRvolr/U5pwCYS6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2102176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjkYweACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrCmg//XrAS+LtHaH/n+LTf1rjTVoTUcHIeRLfqTxS/I5JNGE1tITsG\r\nsEPyHsucjTnZD28ceggRsqb8eB8jAId8ZWqM9X8kNKLtng5Ij1qbDW1Jvxmv\r\nzbldOdRbAmzuE8TrymiShZXv1gSzUIaw8/vzaYtdAbBMADdfI8Ti+wc4Bcau\r\nLOCCHqwpkdQwlbeQhmWhR0sZqFembJjL/bb8xA7YhyZclfl/2Kyeme/bqvpM\r\nr4Rl+PTPH77jP13XPXENijbF0bj+xA3Orj9ZPpwsVoOYiQOpBFmdTDz9hiDv\r\njQONMTzI1vOoVphJvoZF779DRt5YCQ1wnJYjs3/jipHm5J9VnjhplAHRYFwQ\r\nTFSVJ6g+TVfI89CA60Njh6P2vrLehDlAH5NxGktgVWvNsncaOzayLrNbf9sV\r\n1ZkRqTRAB9oId1x7W9MWfN2F1R6eIxF+2CayNOQlYFMmn0xu3bS0X9SRnyGh\r\nm2msvSwsoE67LdYMJlWl6nm6+/inCO7CnNQaDcLFeN87mSjX+/vvJisCPHJt\r\ni/D1ziZW8HqdpjYBjwGxZsxAPIbSie1RsWA/89CSngqyQcKdZkD0OrIHjD/r\r\nQmDULa3ag/deo5UGt64nh+lkyNu20a7YCRiijibwjtn4s5tpZki6NbbKIzrO\r\nxD44c5w1CEzoAkHvZWrCd3A2Zpje+rmByRw=\r\n=0eS5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"266897a9598117a683b436bfbb7374ece3707c49","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"karlfloersch","email":"karl@karl.tech"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.12.0","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.3.1","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.39_1670482974190_0.7028864320714614","host":"s3://npm-registry-packages"}},"0.0.0-20221115223117":{"name":"@eth-optimism/contracts","version":"0.0.0-20221115223117","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20221115223117","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"9cf7b045d970c8c3787fa9400a545fb014ee93be","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20221115223117.tgz","fileCount":369,"integrity":"sha512-V2LVuN2tSEaP+SU5KHTHG6Z7YRFT7DS217Db6v+CyHu+zzXfEWAVn6XP6L+s0Jk4BAOHkPc2U10q3BOnM1RCmA==","signatures":[{"sig":"MEQCIB+/pDF78+TMM0vBTMKT9vUnKC2SEjRjcaDjkxo2m8vuAiAzCuuwM3U0R/A57huZ6aKd90V8+R0UVQgvN+8tUUiOlQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1974960,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjm6BCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJ0hAAoEcD42RPXTp+L7peReDMWKJhevPEGdhx5mD5Z81WoMvAPN9f\r\nNPP255ECBXulq6yskWer8Lv9djuPyVrGulYkxu5WnmoZtj3TbbkU3TIkvrEz\r\nD2s4GGqxqMHEMbPXhZaCPYleZUluGOeXQO6mmx9rqfkXjHOOtLxO0Ba0uFGv\r\nLy/LVA37MpwDmOyRqrCRG1SXWqmIXB7Rg4sB3emtmf6j4YJYz+Grc+seTJTo\r\nWW7LEP1ajf9rbv1w9x3la/1tNSNcVGhmFwdwRfCeojd4WjQxCgWKiQMC8I+V\r\nv5dsF+4uT+6tdRWlS+MvfeGWhgoe8FDEwLHsEPfZU3nUehVnoU7yhFP80ez4\r\nB0w4w93QW+9JYROkGt6L55FglrbhA7g9iQbMiC3+ff8l9zy5bpG2oXE8tCst\r\n1NhFatSDlLMFlHkru46WzEDMAgdQRD6ac9PVArGMFYrHOsrf14EHIWG1GeRE\r\n2LZkmbxwaS4fla2RmsfpvAcgNV4n93w7ywS6dQJzylU65qBeX9VE0vIwx4ZE\r\ndmrsa3aWHP++SekOmB12RXnDJiOCtY0NvvQzaWQrg6A9/VhRZeBE/oU88MtY\r\naKLyjehrBZw2TEMNbZS1hBhCdbnRVn+e/jMJ3B/n1CB0ekLfSdALoYTKkiNj\r\nq00RMMLAomnHiO5+nTencgTgZcjPMAJhzyE=\r\n=oRKr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"7aa347e853c0062143c92f2c88e7f2b49d92a9e2","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.0.0-20221115223117","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20221115223117_1671143489737_0.06892746746609157","host":"s3://npm-registry-packages"}},"0.0.0-20221116233743":{"name":"@eth-optimism/contracts","version":"0.0.0-20221116233743","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20221116233743","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"f4cd6daa828f77a20bb888572100329eb77b3aae","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20221116233743.tgz","fileCount":369,"integrity":"sha512-cS32D8AKF6h4AnbdiqxfSTu0VgumDBWjADJTbZlLhf8Vaku1qWP+OBaVkSUeOZmKUFLyYt01yng7IlJItIxLsQ==","signatures":[{"sig":"MEYCIQCb62XaN6tb3KD6iCMjL0zd+4diIQjJSrmQDV233Ko7dgIhAIUZ/YFIbT3XQ156vZ9dA1Mj/TVOHVsKTEwT+KukCixk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1974946,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnQFUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpJiQ/6A7WpnJNxH3u5QToSHsVWQVVCqWy51DbrJMGQnT+Qknkgiw3k\r\nL1HaMFHw+LKLGtW0P3pennXJYUNBTviQf1OAAzT1NcV4b0gMjE1HAsqiwWnN\r\nWvrR5qgixmFMyt5tfGOlZ+fiXt8PyelfnbTMZt4Wlz8i4vAetHFsOPAC1f4N\r\nxF7xj/ONsq9V1gpObeIGmgSliMXdf3N51AdIAcHdpCXCt75ZK9fdF/PjK/vo\r\nr48QNAiCbn/CcxjgRLU5ZIldXDut9zs1naiMTGHfww0ct4QbyQcy00E/Hcu2\r\nUkHN0vK4GcvHfpC9QG9B35uZXtflsQntvKPC2ma3v2rDO1MkuyJ1DKgQsHZh\r\n+Bxpdx4Rh4VrUkQ+rmij+VKFL18azSFs9EEHRq1hwJRJvMRp9nm4D4j0KZX3\r\nHlfQp/nyGCaoBs9TraKSXocSdznqoX6bdajOsekH+6d01mqejAwfXanUrxDJ\r\nYXhTuJcwUT8XHe3DqgQgfRF3zqAhYs1B3+VcrDTl82R07GdFIhL85tzRLG1T\r\nLDL29TGFwy8pv6iiX4NV7SYulmTwlySP0GNINnhJUWPBK22unkX83j0qol8G\r\nEhUhQncfluNzi+9dtOzea11eRlDp3W/R+rWvJ8obmesQYGOvwaa9RG/UWd2P\r\n5FEF6elIhDFp5j1D/CyvEfAIzM2JHudWBd8=\r\n=dCzi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"e103aa8e50658aef06ec890094dd6c4d4150f137","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.12.0","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20221116233743_1671233876275_0.5441070586659071","host":"s3://npm-registry-packages"}},"0.5.40":{"name":"@eth-optimism/contracts","version":"0.5.40","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.5.40","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"d13a04a15ea947a69055e6fc74d87e215d4c936a","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.40.tgz","fileCount":369,"integrity":"sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==","signatures":[{"sig":"MEUCIBZ6pf6Y5PMCMBFQeug2Hw9nWk3fPEPVYSO8rmRI47Y+AiEAoPgYtDjkNUEYOGCox6SFOlpxBIVBgxqfvB816LRf7gQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1974932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvwiyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo8Kg//dLGK439gFGbAqPyrX1GANrNiguEjx4cKtin2A5uFe1M3ChYC\r\nXe0YcVreryOm97yGchbs6DfcuPxdCuBMGP+egEIwqnmJv4LtFtZ87sr5NmYt\r\nhVWw033RHuXUK0Pudiau39OquqpU+QySqUfP+chop++Jo9zNnncdykAZhX2S\r\n/eiw3/wvF3wNvrn+CmQR07864Os8Yys6dl/vUAvd89JZq38+uRCP4oDeFm8w\r\nYSihtRpoJcBrNqtcO7RdmG4GxXBtggDxk6tJVNADa+e0Li44t68a3JHw+Ovk\r\nzkshXumQ3W1u+Qodx6N+DW1wSjidQT7EKJ52NiXzbR4oEFCxoT6jg5SklbLU\r\nPs78M2A1ONLW7aFTG1oPA+aPK6BSr86S2PJ55iPy6gpLYZ3Z/aqV7b/PX/Dc\r\nizEUDWpwuhUT2vMHd2Bg9Vl0aZkAmfb8XciqMTjfoqpzKOAUMCtoQJWd+FrP\r\ndTVcgBqkDvvKPiUpI45I2lAzYVZqJGJx/n/37b72uTnwDgUD3xXqQBlLYp9s\r\nUnaFcgcY6ebJ0fMF4X/MnCZL/5XrLBDwHWAMbo8XZ9AnE/0JUjFiwA5pzHaR\r\nVctDy4FpLB1Mjg22exoZIkfeK52uHmUry9oq33uFep/fu7x1PDWKAtokh2Vu\r\neD3yCHm8jpwVo9CucBfxS/r3Bwa7nJCLtR8=\r\n=xLwv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","types":"dist/index","gitHead":"295991b22bf4d572cf006578311346ba4ee48ee1","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.2","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.18.1","dependencies":{"@eth-optimism/core-utils":"0.12.0","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.5.40_1673463986222_0.9618072455209425","host":"s3://npm-registry-packages"}},"0.0.0-20230203220206":{"name":"@eth-optimism/contracts","version":"0.0.0-20230203220206","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20230203220206","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"58b5a54b26f0aabce9d435e6e93e00fcc4dce204","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20230203220206.tgz","fileCount":369,"integrity":"sha512-hdQUMTbi8nzyd69l3l+IznQ862GQ3V9GJ5zsen2hXkr0s2LWAjNWSM7QIeIL2khHy615j0vHXzy360iIIUwC3A==","signatures":[{"sig":"MEYCIQDtzVkxM/kutLjFX0Ji9QbItvkS9oz4NGGGa+URS+fFCAIhAKgOFkUTHK7LNpNLk5/vIQVP1X9EPeZMLk4mk0uIVSDm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1974982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3YRoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTOw//SM5OC9L+qXRjGcvBAUqLlMDylolUi+PQlW+enFto9csGtI9e\r\nt4mJXpnwzzy6g5NULNUhM79vCLYrV7wwgUHtlx6IKvNomFaUav4cHpxWTr//\r\nhqlXQjsxdI5uLMCu3IKx8L7LA529eLDs6dnEKbWZK1BXa0hwy4SDYhJEt5Dc\r\nsKhwt+hc8bVd9ZL7MIUyl6tZXHlrO47a3hQmpYTG63HkQPGDBJ+5+DspBvD1\r\nz2rUyAOfoD6yoQ0tFxFq3ccBNQ2c5W0nyVGmdpNTeCU6JqwzjuI6+XyO0qpS\r\n4CPUCtjjMImq834Cv4Z0cK3+kYZqEhbuNrsKB01xach6BnueKPtKXokA4SZG\r\n0sVBJ3jObg5Sr947ixxA+CG3tQsIyFviU+aIz4UC0qEnod+gkef0phXMY6i/\r\nGgIWx4+OEegjE2AFLoxKfjfLqvQuMbGlUC1Wd7Q58QQLZsP3kFyQZyMJKAbY\r\n9oS7bjAbe575YsOnC979L8Gc7jaQJOJFUO5OCCofm5QadYrh6kWmE0SN3eai\r\nRd1se0/lU5YwreEgJRxJYKc2mmrBVQ4b1zuW7qGjeKX5g3bSolbac5jM76aE\r\nlEQyyyvuB5MOQJZwqWdnHIvvqnMF2YjI/FXdPekp5n/860USIDd6CvwcphfF\r\ny4r9qC8gpIOhNE3HvPl9A0Ddgy0mHeyX0C0=\r\n=pZ4o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index","type":"commonjs","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"977d0ed4e55fb098fc8065c7ad76c4adc95009ab","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.3","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.19.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-20230203220206","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20230203220206_1675461736462_0.7367849587317605","host":"s3://npm-registry-packages"}},"0.0.0-20230206212406":{"name":"@eth-optimism/contracts","version":"0.0.0-20230206212406","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20230206212406","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"769f45e88b2fc754ebe11e8afd5d07e6b9874a95","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20230206212406.tgz","fileCount":369,"integrity":"sha512-8x0op88FNNhM9bGFVffQR9Glzt2mcFHcpUhhlr6OlfmNSEL0Vvp0HawBNN75H1A+WopOxpZbYU6u5YEOcxXfww==","signatures":[{"sig":"MEUCIQDW+KmLHp+BuyPX9vn8ZF2KvsXlLRFJXe92bLNJ8IlryAIgPzfARG9kif1lgllxnWWDHMD6haQI1K9T+36SeTbWNos=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1975028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4W//ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp3MxAAjpyYAf/39KnZKqw2FK1n/8+Kea8bNHFS2ypreI1BGWbRIOJX\r\nKLvu5UvgYpw+lU1WaJDtP/T5vHSyiJRkPAE9Seofg/xrW6NIpYnfFWBmyfI0\r\nBAfeKaPwc7hoo8Fu1OyxsFQn3WFTmccCr07gDmi4iD2uf6oPNFe1vknf3HR7\r\n1cBMLXyHXCK4FCYNXVjl8nvnVybbhfucQ5pL+AvqkR/FN1tRLCzArVmS2Dd/\r\nqiI5sCDH4O2aCMQuiISgSKLD6KOi3XOmoKnRJUYvnLLY+S3VnvkHRVp0T1Rk\r\niYrQ7YUpYWv8YWUoGo/NbvHQp7iEoNk1WPwTXAZItTqD8mvFONd0pqD+jpzi\r\nE+pmSnX1+YTpH+GVL/JZiI6VkUFZuXwCKAv6+bPp+nxVY0+6Y7EwVoQhbUor\r\npHTdAKR1oGprilt66htvRKnBy+bBM6ksf/NZhcoAAwXKKLnHEev+Z5c6l8xg\r\nVorW+byryVSc63OVh3A1E+di2R1MLHo3Wh8G/zvaBoCYCLIawEH8m0Ja/On3\r\ntVu9D6PoPmW/TolIva7Y/Vaex1EJ6LyfP+eWM9p84q4VtBkMO+vtVuCRKGaD\r\neC09h3k0WcrQasPuxlhfsJVSmEBq2Qs3QMjME77Mab9eDS+fW5FXbAkIGY+L\r\nfZe1cDNhY+WeNEkDxKD+iBvwpnd42XioU4U=\r\n=DbCQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"e1e8265af7e5a3bb4798b27f8fa9f7590bd06e73","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsup && tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.3","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.19.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-20230206212406","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","tsup":"^6.5.0","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20230206212406_1675718655008_0.8853162083243835","host":"s3://npm-registry-packages"}},"0.0.0-20230206212811":{"name":"@eth-optimism/contracts","version":"0.0.0-20230206212811","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20230206212811","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"d8ef84b40b26278e4327e59f7d57b277ce431929","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20230206212811.tgz","fileCount":369,"integrity":"sha512-Bg9/pLi2npRHQcXHp4eOxcc/4gMH9JGOlDR7lUZStarrjtbf/KQm7hWuCcEcaJAKpnTRLg502du2FPDzd2BovQ==","signatures":[{"sig":"MEUCIAzwNx6S8kjmBJwizvQdSgZArzbsuyG6mgQ9RplCTru9AiEA4nlGLc4c8CnudE1TRIZOyjb2bLO0dD7FBtOuKO2KJkY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1975028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4XD1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo27w//ejmu/j8afGrqRBGu60+xhRk0MUFL3+zcNKF0zqMvIQcAXZiq\r\njihbYpYGjYhbc/yT46FwJr0U145kmiT6ZSiFq8muEa1vd31G/RsmgDgS4fyB\r\nMSR50ihiYcijgNntJQ17N4MDRhoqzakrSecJv+s1vFluG8jQ3lKLAHeyBmKl\r\nvKifexaWM+RtnxizAv0bTLAcA5VAEybXIoveLevgHRji67AtDbyyOTJJ0RSe\r\naqjdwwbRGWcazDRuGjKhRu0VdzL/uGh4f2dPoj0YS341F8lbGoGnoEroPuYf\r\n1GJ2UQVjYww1//PJu2ncz+iwowtQtfs+LBauWw6R6AE4zBR3MMI1QDX0U0eR\r\nVilKAYHqW+FtDgnAYtvYkV7zxDUU14yrDWUlcTY7uO0I2C7kRA4RL73MYUAj\r\nqwOT3V92pbFnKRlSmVzbZ9IQozoKKY3n2SW0sinHmPVaw5zeeS04r3PEvHED\r\nx4KzF3ZAA/Qr5kRqibKmyWuuFCz0xjwTh8VK+IWHpcJK6XoiFA8pPJQid/gG\r\nHbr4dGbsaK1VBDT9qNofb0+Ov7tO8oELwFdH80UYVMvtAyobaKEl33HU5gmf\r\nIHoTfmMCIZmLYOEwBtSgdUf+Z/hFo0gD4ufNmntHe2Ewd6EeL7NqzgTLpWmB\r\nHW+cvqwxOdP2StCTGALIL/KLnmonMfoXWXU=\r\n=/Kz5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"e1e8265af7e5a3bb4798b27f8fa9f7590bd06e73","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsup && tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.3","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.19.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-20230206212811","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","tsup":"^6.5.0","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20230206212811_1675718901166_0.8404808167000968","host":"s3://npm-registry-packages"}},"0.0.0-20230206220540":{"name":"@eth-optimism/contracts","version":"0.0.0-20230206220540","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20230206220540","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"046198b22cc14842838e88bd507dea15f5cba5c6","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20230206220540.tgz","fileCount":369,"integrity":"sha512-s7rJv0PqKkAqThBdoOWX5tGhR/c49ramQuwOAP0J5ySD1nf59YCSjU7EJpSTreb/RZzSe01JyxO2nfwNsBcAgA==","signatures":[{"sig":"MEYCIQDw3t9jQgaDLON6F5V5KPnCmSZdryh4VUPCkpF/erkPlAIhAMRjfFHkCZg7MAjA0EPl+AFe3z6OsRtnpw4ov5V50MUE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1975028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4XnAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrqIA//UT7ocsyvB3uSf2Ie6b5DHvB0yPnQyDj7+jycD2rbchUHLhN9\r\n9qw9GVeGqyNbVlGQHKxKV5SX7/G0gk02WRz6EqJxRhTfbwY2ciBeaOFC5V4a\r\nYZYmEPUEfBJNwSCBfZSLM0Y80JBjE8xugZ1Y631T9yLP7aCQeSV2N8APY8cW\r\nwZU89scHpBiaxMX/LXa84369C/2AcEJPp4rQ7e1iAPmhUzov4kkpFP2qqC+G\r\nyIZbVfaVDlLXtfCYOThhxx2GeBqJ09diaXRaAnqRrxIcFf5qnrhXyiioV8/q\r\nqR64HJ2xcG4BBxa3kENfCSPyoCyGVJonYzdLyVa8FC8MbRp47355hUFtaZlS\r\nKBjvqCzA/1igK65VpzZE26A+DOeKF5ihxYrhXCv7iVx08L/npqeExmRF880w\r\nhOIcTRDHamEuU2yM2NYeIh1TNycIQIFz87qIDMHuzoytWjIcGrlNSdFJkkVt\r\nKAtUzTG9M8Vk+S4HJQg8q1+dTc1xIzasw1Ln3cq5ORrbZ/0VpzA4/brT0LWX\r\nqV9G9M7LwcestPeo30OwOE5QCFcfqnEed4aQNsXFSHg932PRYzFRHOm1KCiL\r\n84C99RprgEDqw7KmO4NMiR7Ae/8naw1m09MkmJNrF3BpZ/m6E1Pb66tiiewu\r\ny/56MmndG4x/GR8O+2q+KHtl/pWqyXCiWCE=\r\n=NvCP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"0a82de01c3d97d4ea4b7e4dea92cb89dbd4eb77b","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsup && tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.3","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.19.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-20230206220540","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","tsup":"^6.5.0","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20230206220540_1675721151984_0.3843901498565887","host":"s3://npm-registry-packages"}},"0.0.0-20230206222914":{"name":"@eth-optimism/contracts","version":"0.0.0-20230206222914","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20230206222914","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"dda7e9ea5089d78c503f342670815ea15565f183","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20230206222914.tgz","fileCount":369,"integrity":"sha512-9s/N5ahB1CkZMCPR//RfOdfKxVKtTfRDjACkPWSGRMSVWtWeDI3t6VLH0QgftYYaCOtDnXKBawVJ9nfIijPLCQ==","signatures":[{"sig":"MEQCIHCtpxcnwFm1Rebxa+02hJag7glkplovnc4wHkJrsnjeAiBHW0Jh4L09Pqe6KpoJT9L6yb4YZFFW+ZKrjTmLUcS+Xw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1975028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4X9FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqeLA//QytRTg4+/OtF5Um9KfzMTKJnjiF7SR1Gn8ymQVa3LlLgEcVp\r\ngsIV8hk/hlccnheY8hlyTiuhxRAlhAc3Ef264/lhy53jp4hHQjt7Is8Kcscc\r\n7KzXSEiJ2b5G4V52v9kICmnRXYjI0XRsHZOLQ9kBnS1xHXH8DJZZMT5yWU3Z\r\nGO5ElgGfc/qncC2NN64IQw/1RL5+2d1ln9wnKkZHrC0xQOOejwZdQ82uM2Nl\r\nuV0qHurpIzn0LrRvbKhJ0JQO8kQk8wy0QXNcrmdVyR1reja779oEe4mqiDoy\r\nLgj2KR+Lbxu6Cl+vh7uWxGjH8TsZab7Do6Ew4ALze1NQzW7t+XMQDBNvo+Qy\r\nbkvca0BZExWz3YPjceB4Nv593iPIrwdBe7BE1biKCvYuz43Cz0VQUCzEl0LO\r\n9eb49z1oGsljCH3QoWNmCe0qJj19Q+ZUMLKDBP0cc8greXBSniQiZuN5R/H7\r\nqRGpmVGtmmImUJAdQbskynIwd0FH1jmXtIv2sy51ax17zmqAsJDEDkXdswMq\r\nYs6jex9hutGFrCimBCCEXwG4+k8lUKJ6IQidgyQiB9Nth1IUBynUQKASRd73\r\nhNFhfMpAyCEmQWuQrRea/B040kvkaEtF93vDiIRBcdYpx6emukbY7KtTyhZK\r\ngiAZVG9E2LKKudgCPWJFY2dpoZFhwfG8aY0=\r\n=LmvF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"0a82de01c3d97d4ea4b7e4dea92cb89dbd4eb77b","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsup && tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.3","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.19.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-20230206222914","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","tsup":"^6.5.0","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20230206222914_1675722565339_0.8515254642199024","host":"s3://npm-registry-packages"}},"0.0.0-20230206224602":{"name":"@eth-optimism/contracts","version":"0.0.0-20230206224602","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20230206224602","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"6bc6acf3a3e5b90664e8cafa5592de583cadf26e","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20230206224602.tgz","fileCount":369,"integrity":"sha512-tKLcX9MUrBrywgmhCEK4YURhtRArDHxMCiOSkKs+jUhv1gW4uTA3bHADL0GEWRbZwxWyna9vemi+lgJraut88g==","signatures":[{"sig":"MEYCIQCifIyRb1O3HcNCn08S1gc4GGUzO0yQS1HaGrc6WB1ShgIhAOVZwQrfwkTyhAJw2UwpqEXGlkbCDAiOTZwlpqd3/FHg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1975028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4YMzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp9Iw/+PiD0qDE3yh7ZwyKOFsv0Gc1R5JGPp4aMmMOe8J7JLvJvV0fX\r\nyn2NMHm8Okv2HDs/1dI5Dw29+Sao0+1hH7W4o0fIFeY5T9TVMX3OV9l6hR4Q\r\nHUybwQkoJV3xcFOa54zEi82S0LRBDKzOV3sA16ecCUTom74UIlrjq//0ShZs\r\nH13Wb56EveiGGlsZph+nKqZvhd7OfgHoSqTq4AXqEVB7GTFlhBL+CjDVYfXx\r\niYgcHKO7acvfKCSHLPD85+vbPBoyf/CfBrOvKshZC2pdbOfEDqcT1tD55dTu\r\nZxKJo8ccDX+QFK1lH9tywrOugquPR03RZzTNfbzebASJ/cTAfXShJNSfr2WK\r\nFywp0aRkYk/E4J4B2ykYl2inQ6Zfp6POjLD1x2qmgljqPQNalJccdA42Q7P6\r\nw8g3oZCEents4+Oz5lVgWhDO80Lmzb8Piq8SPofBwB2j9njpeA3T1YN6C5wL\r\nh2ezWs72gxB7hvef/BTtAztldXBoMtMYcbmKEB5RJ8NPs8gkwhQ1BubNmEVH\r\nDrfaos+WYNpQ6BNvE5iu02oHJJzNHaWMw3aF9JgFEIx86TQKJGPPy1EmiE/x\r\nKiwcHSj8yVvA0vzcFVGbtKufxENkL+LdO42F7xpaGm8iKWoWnSXAtvnoATyT\r\nOsnIN9Q8K2kBN24CMkSg52jZr/qbvIaTN00=\r\n=/EWh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"1d260c60d731214164c2e321d29e9d4a0620f256","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsup && tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.3","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.19.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-20230206224602","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","tsup":"^6.5.0","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20230206224602_1675723571090_0.5384563514105598","host":"s3://npm-registry-packages"}},"0.0.0-20230206230656":{"name":"@eth-optimism/contracts","version":"0.0.0-20230206230656","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20230206230656","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"e1e9b39a3871e69f5e79724c2cc1cf46366a5945","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20230206230656.tgz","fileCount":370,"integrity":"sha512-l5RqyvdpCwxwbyMw1oZIfTXVyWHB1/eZf9q+Wnz2GP0NBHa1gdg8lveQXMQfSBCoktZ/MvYJ5v4C8SRHj/Uw3Q==","signatures":[{"sig":"MEUCIQCuMd2GoJ2CWHlyrx/5hMagsXexCAGbOCEHmHx0EUc8rwIgI1bZLDeYOWnCkIn5fC3eaPI6T5w1aiONsq2IiRX7HG8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2605332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4YgbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoHbw//SDn8n6W7bkrOXkMvPlXuhtG8i/d/aneMzScqJwe4JZWkUgQ+\r\n7rupPgDxHJE8ty8DknZU7pAsxecIf/wHtWXOD6kELvwnQV6gNBRRnzOBr7cy\r\nN7d9HTSyeBxd/+iIK3r6Mgdi9le8mb3N6rd374wO3ZFH+S8H0hRfErD9t9QK\r\nx0VgTmFe+Si5m4wkIh0BBpNXcbXXfnvIK8ZNH3frjlpvahbSZN6z8V52fWq7\r\nGM1EiLyjTyRlVMOogWzmBgwdgV0sM8YfPBOFvI8S4ysuQzrtwl4orTfDtwUX\r\neHvZvilL7Ej1L/nHpTO9TGoVVljjq0CqboxRHOxPYvI9LIftuJHLC2mAuvcv\r\njAlhvpLNSseVDj3x+XH6iyKbMtynPpONpJRWJNUvkPRAV3DmlwGeYWisGW58\r\ny1aqQh02Iy3pYT0DZh0KJv/BIshFGHtBBEs1E9CWimeuVZtiCrKvC6ESQaz+\r\n2T2gc5kRAFQ6tAslzyHqAO7MpLH24oWAJZspA43/Xmr80b2lPE7fKQX92Jfu\r\nw1ZwWlFGeXPGSOF39X+vh2lBUZRN97g86fHNp02KKVwfC9x63C16erdeTRjs\r\nULZcwF/qL0bqhOFsiJ4PMknLg1ZLO03TTu4VszwySybDkDO1MLOj9XPrDIt5\r\ngJ9YfWQ/UqLhKVyP793o9VAj+nX5wfc018c=\r\n=fEhZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"be5c6014c4cf582c4b15b170abfa3cf00e60f966","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsup && tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.3","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.19.0","dependencies":{"@eth-optimism/core-utils":"0.0.0-20230206230656","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","tsup":"^6.5.0","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20230206230656_1675724827181_0.7806461412068246","host":"s3://npm-registry-packages"}},"0.0.0-20230601165341":{"name":"@eth-optimism/contracts","version":"0.0.0-20230601165341","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.0.0-20230601165341","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"5a907f6d5de6766e9e2aabf00cd972dbb6173706","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.0.0-20230601165341.tgz","fileCount":369,"integrity":"sha512-puI8tR26Z8ikbMiJNQ5VaFv/K+OsnEHOm2E16sMgxaIwbviak8SR2KP7k2fGwRk3otH/Iviz/fUpPcgEF33LGQ==","signatures":[{"sig":"MEUCIQDHReDX+b3f89DgnD6Qjyh9nsnmMxeMOiOYBDY/Ru2uDgIgBQMqUIBFzB8AruUC70tGUaKY1UQ2g0z1ENnK4hw4/tA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1975036},"main":"dist/index","types":"dist/index","readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","gitHead":"f1146c8dae2b36686cc573b8f7c76ed3e63aee9f","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","build:bindings":"./scripts/legacy-bindings.sh ./../../op-bindings/legacy-bindings","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.4","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.20.0","dependencies":{"@eth-optimism/core-utils":"0.12.0","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.0.0-20230601165341_1685638434012_0.2914997496853762","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"@eth-optimism/contracts","version":"0.6.0","keywords":["optimism","ethereum","contracts","solidity"],"author":{"name":"Optimism PBC"},"license":"MIT","_id":"@eth-optimism/contracts@0.6.0","maintainers":[{"name":"optibot","email":"optibot@oplabs.co"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"}],"homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"dist":{"shasum":"15ae76222a9b4d958a550cafb1960923af613a31","tarball":"https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.6.0.tgz","fileCount":369,"integrity":"sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==","signatures":[{"sig":"MEUCIAqyoiLK0KiUQh3nmfHu12oygFy3oR3q/n8FeuUis3sGAiEAuV+nplcYFMTZbugf9SPgjNYPfqufUhfSBEadNnFIenI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1975021},"main":"dist/index","types":"dist/index","gitHead":"9d1be2dab809f5a80a3927ed84fd9cda49a82c47","scripts":{"lint":"yarn lint:fix && yarn lint:check","test":"yarn test:contracts","build":"yarn build:contracts && yarn copy:contracts && yarn autogen:artifacts && yarn build:typescript","clean":"rm -rf ./dist ./artifacts ./cache ./coverage ./tsconfig.tsbuildinfo ./chugsplash ./L1 ./L2 ./libraries ./standards","lint:fix":"yarn lint:contracts:fix && yarn lint:ts:fix","lint:check":"yarn lint:contracts:check && yarn lint:ts:check","pre-commit":"lint-staged","lint:ts:fix":"eslint --fix .","test:slither":"slither .","validateDocs":"hardhat validateOutput","lint:ts:check":"eslint . --max-warnings=0","test:coverage":"NODE_OPTIONS=--max_old_space_size=8192 hardhat coverage && istanbul check-coverage --statements 90 --branches 84 --functions 88 --lines 90","build:bindings":"./scripts/legacy-bindings.sh ./../../op-bindings/legacy-bindings","copy:contracts":"yarn copyfiles -u 1 -e \"**/test-*/**/*\" \"contracts/**/*\" ./","test:contracts":"hardhat test --show-stack-traces","build:contracts":"hardhat compile --show-stack-traces","pretest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat && ln -s ../../node_modules/@openzeppelin @openzeppelin && ln -s ../../node_modules/@ens @ens && ln -s ../../node_modules/hardhat hardhat","autogen:markdown":"ts-node scripts/generate-markdown.ts","build:typescript":"tsc -p ./tsconfig.json","posttest:slither":"rm -f @openzeppelin && rm -f @ens && rm -f hardhat","autogen:artifacts":"ts-node scripts/generate-artifacts.ts && ts-node scripts/generate-deployed-artifacts.ts","lint:contracts:fix":"yarn prettier --write 'contracts/**/*.sol'","lint:contracts:check":"yarn solhint -f table 'contracts/**/*.sol'"},"_npmUser":{"name":"optibot","email":"optibot@oplabs.co"},"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"_npmVersion":"8.19.4","description":"[Optimism] L1 and L2 smart contracts for Optimism","directories":{},"_nodeVersion":"16.20.0","dependencies":{"@eth-optimism/core-utils":"0.12.0","@ethersproject/abstract-signer":"^5.7.0","@ethersproject/abstract-provider":"^5.7.0"},"_hasShrinkwrap":false,"devDependencies":{"rlp":"^2.2.6","chai":"^4.3.4","glob":"^7.1.6","mocha":"^8.4.0","dotenv":"^10.0.0","ethers":"^5.7.0","lodash":"^4.17.21","mkdirp":"^1.0.4","hardhat":"^2.9.6","solhint":"^3.3.6","ts-node":"^10.9.1","istanbul":"^0.4.5","prettier":"^2.8.0","copyfiles":"^2.3.0","typechain":"^8.1.0","squirrelly":"^8.0.8","typescript":"^4.9.3","@types/chai":"^4.2.18","@types/node":"^17.0.21","lint-staged":"11.0.0","@types/mocha":"^8.2.2","merkletreejs":"^0.2.18","ts-generator":"0.0.8","@types/lodash":"^4.14.168","@types/mkdirp":"^1.0.1","directory-tree":"^2.2.7","hardhat-deploy":"^0.11.10","ethereum-waffle":"^3.3.0","random-bytes-seed":"^1.0.3","solidity-coverage":"^0.7.17","@codechecks/client":"^0.1.11","@ethersproject/abi":"^5.7.0","@typechain/hardhat":"^6.1.2","@ethersproject/bytes":"^5.7.0","@typechain/ethers-v5":"^10.1.0","hardhat-gas-reporter":"^1.0.4","merkle-patricia-tree":"^4.0.0","@defi-wonderland/smock":"^2.0.2","@openzeppelin/contracts":"4.3.2","solhint-plugin-prettier":"^0.0.5","@ethersproject/providers":"^5.7.0","@nomiclabs/ethereumjs-vm":"^4.2.2","hardhat-output-validator":"^0.1.18","prettier-plugin-solidity":"^1.0.0-beta.18","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1","@primitivefi/hardhat-dodoc":"^0.1.3","@nomiclabs/hardhat-etherscan":"^3.0.3","@ethersproject/hardware-wallets":"^5.7.0","@eth-optimism/hardhat-deploy-config":"^0.2.5","@openzeppelin/contracts-upgradeable":"4.7.1"},"peerDependencies":{"ethers":"^5"},"_npmOperationalInternal":{"tmp":"tmp/contracts_0.6.0_1685991980514_0.11829282168716104","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-10-12T16:20:16.265Z","modified":"2026-07-24T15:35:05.771Z","0.0.1":"2020-10-12T16:20:16.668Z","0.0.2-alpha.0":"2020-10-12T16:53:05.247Z","0.0.2-alpha.1":"2020-10-12T16:55:56.173Z","0.0.2-alpha.2":"2020-10-22T21:54:44.763Z","0.0.2-alpha.3":"2020-10-25T16:59:33.971Z","0.0.2-alpha.4":"2020-10-26T20:02:02.401Z","0.0.2-alpha.5":"2020-10-27T04:30:59.000Z","0.0.2-alpha.6":"2020-10-28T22:11:26.270Z","0.0.2-alpha.7":"2020-11-02T17:55:38.345Z","0.0.2-alpha.8":"2020-11-06T02:18:08.620Z","0.0.2-alpha.9":"2020-11-10T02:38:19.343Z","0.0.2-alpha.10":"2020-11-10T04:09:17.905Z","0.0.2-alpha.11":"2020-11-21T00:25:34.792Z","0.0.2-alpha.12":"2020-11-23T20:05:51.180Z","0.0.2-alpha.13":"2020-11-23T20:12:10.261Z","0.0.2-alpha.14":"2020-12-14T19:35:34.325Z","0.0.2-alpha.15":"2020-12-16T01:49:44.841Z","0.1.0":"2021-01-07T17:28:20.975Z","0.1.1":"2021-01-13T05:19:31.962Z","0.1.2":"2021-01-13T05:28:21.306Z","0.1.3":"2021-01-13T17:40:32.220Z","0.1.4":"2021-01-15T01:10:55.821Z","0.0.0-alpha.0":"2021-02-03T05:56:06.650Z","0.0.0-alpha.1":"2021-02-03T06:22:44.167Z","0.1.5":"2021-02-09T17:53:23.675Z","0.1.6":"2021-02-17T19:27:00.389Z","0.1.7":"2021-02-19T21:56:02.816Z","0.1.8":"2021-02-22T23:19:21.373Z","0.1.9":"2021-02-23T00:35:51.376Z","0.1.10":"2021-03-03T06:16:35.317Z","0.1.11":"2021-03-09T17:13:11.406Z","0.2.0":"2021-04-09T03:14:53.769Z","0.2.2":"2021-04-13T10:49:58.180Z","0.2.3":"2021-04-13T14:55:44.613Z","0.2.4":"2021-04-14T08:43:50.798Z","0.2.5":"2021-04-21T17:10:17.347Z","0.2.6":"2021-04-22T19:30:21.603Z","0.2.7":"2021-04-23T16:17:23.525Z","0.2.8":"2021-04-28T20:45:15.966Z","0.2.9":"2021-05-05T22:49:05.958Z","0.2.10":"2021-05-07T08:58:01.167Z","0.2.11":"2021-05-07T23:10:35.032Z","0.3.0":"2021-05-10T21:49:34.344Z","0.3.1":"2021-05-14T00:13:08.803Z","0.3.2":"2021-05-14T20:05:58.875Z","0.0.0-202142517154":"2021-05-25T17:02:03.512Z","0.0.0-202142517250":"2021-05-25T17:03:01.183Z","0.0.0-202142518936":"2021-05-25T18:09:47.665Z","0.0.0-202142624425":"2021-05-26T02:44:37.700Z","0.3.4":"2021-05-26T13:41:09.098Z","0.0.0-20214293928":"2021-05-29T03:09:38.372Z","0.0.0-202142944631":"2021-05-29T04:46:41.325Z","0.0.0-202152182635":"2021-06-02T18:26:46.360Z","0.3.5":"2021-06-08T14:31:53.367Z","0.0.0-2021515123836":"2021-06-15T12:38:45.788Z","0.0.0-2021515165439":"2021-06-15T16:54:48.839Z","0.0.0-2021515173619":"2021-06-15T17:36:30.336Z","0.0.0-2021515174945":"2021-06-15T17:49:54.934Z","0.0.0-20215180366":"2021-06-18T00:36:16.053Z","0.0.0-2021518202014":"2021-06-18T20:20:24.667Z","0.0.0-2021521195659":"2021-06-21T19:57:10.499Z","0.0.0-2021521205826":"2021-06-21T20:58:37.478Z","0.0.0-2021521222130":"2021-06-21T22:21:40.803Z","0.4.0":"2021-06-22T19:57:53.623Z","0.4.1":"2021-06-23T19:51:55.167Z","0.4.2":"2021-07-06T17:27:06.832Z","0.4.4":"2021-07-09T22:02:26.338Z","0.4.5":"2021-07-13T00:03:10.947Z","0.4.6":"2021-07-27T20:40:41.311Z","0.4.7":"2021-08-12T22:03:50.891Z","0.0.0-2021716194424":"2021-08-16T19:44:36.388Z","0.0.0-2021716204957":"2021-08-16T20:50:08.869Z","0.4.8":"2021-08-19T22:03:05.589Z","0.4.9":"2021-08-23T21:38:31.283Z","0.4.10":"2021-08-23T23:19:00.740Z","0.0.0-2021727214650":"2021-08-27T21:46:58.857Z","0.4.11":"2021-09-08T21:59:58.356Z","0.4.12":"2021-09-15T19:18:12.479Z","0.4.13":"2021-10-01T20:39:18.181Z","0.0.0-202191205311":"2021-10-01T20:53:21.840Z","0.0.0-202193179":"2021-10-03T01:07:19.828Z","0.0.0-202194195336":"2021-10-04T19:53:47.339Z","0.0.0-202194201812":"2021-10-04T20:18:23.108Z","0.0.0-20219516434":"2021-10-05T16:43:15.599Z","0.0.0-2021951810":"2021-10-05T18:01:12.495Z","0.0.0-20219518165":"2021-10-05T18:16:15.269Z","0.0.0-202197182350":"2021-10-07T18:24:01.428Z","0.0.0-202197212329":"2021-10-07T21:23:39.593Z","0.0.0-20219803928":"2021-10-08T00:39:37.128Z","0.0.0-2021911164126":"2021-10-11T16:41:36.657Z","0.0.0-2021914184730":"2021-10-14T18:47:40.085Z","0.0.0-2021915175358":"2021-10-15T17:54:09.455Z","0.0.0-202191518746":"2021-10-15T18:07:57.840Z","0.0.0-2021915193618":"2021-10-15T19:36:31.823Z","0.0.0-2021919175625":"2021-10-19T17:56:36.336Z","0.0.0-202192122614":"2021-10-21T22:06:24.527Z","0.0.0-2021925185318":"2021-10-25T18:53:29.248Z","0.0.0-2021926233112":"2021-10-26T23:31:25.086Z","0.0.0-2021926235122":"2021-10-26T23:51:34.923Z","0.0.0-202192701014":"2021-10-27T00:10:26.631Z","0.0.0-2021927192249":"2021-10-27T19:23:12.441Z","0.0.0-202192720115":"2021-10-27T20:11:19.307Z","0.4.14":"2021-10-29T18:42:15.772Z","0.0.0-202110320390":"2021-11-03T20:39:14.050Z","0.0.0-2021104172230":"2021-11-04T17:22:43.856Z","0.0.0-2021105214732":"2021-11-05T21:47:46.046Z","0.0.0-20211094526":"2021-11-09T04:52:20.848Z","0.0.0-202110951139":"2021-11-09T05:11:50.939Z","0.0.0-20211095345":"2021-11-09T05:34:17.912Z","0.0.0-20211097365":"2021-11-09T07:36:20.372Z","0.0.0-202110923028":"2021-11-09T23:00:41.779Z","0.0.0-2021101045412":"2021-11-10T04:54:24.828Z","0.0.0-202110106434":"2021-11-10T06:43:16.691Z","0.5.0":"2021-11-10T23:55:12.560Z","0.5.1":"2021-11-12T02:52:09.539Z","0.5.2":"2021-11-17T22:43:40.639Z","0.5.3":"2021-11-19T21:33:57.256Z","0.5.4":"2021-11-22T18:21:59.549Z","0.5.5":"2021-11-30T00:22:54.767Z","0.0.0-202111722448":"2021-12-07T22:04:58.449Z","0.0.0-2021117221042":"2021-12-07T22:10:54.386Z","0.5.6":"2021-12-08T22:49:06.532Z","0.5.7":"2021-12-10T19:44:14.682Z","0.5.8":"2022-01-18T19:26:16.103Z","0.5.9":"2022-01-25T17:39:10.278Z","0.5.10":"2022-01-28T23:00:55.626Z","0.5.11":"2022-01-31T18:16:34.449Z","0.5.12":"2022-02-04T20:33:28.724Z","0.5.13":"2022-02-06T02:25:24.262Z","0.5.14":"2022-02-10T17:49:37.532Z","0.0.0-2022111165616":"2022-02-11T16:56:26.954Z","0.0.0-202212020516":"2022-02-20T20:05:29.751Z","0.5.15":"2022-02-22T19:05:36.046Z","0.0.0-20222319056":"2022-03-03T19:01:56.660Z","0.0.0-202223213144":"2022-03-03T21:31:53.614Z","0.5.16":"2022-03-07T07:52:46.323Z","0.5.17":"2022-03-10T19:05:58.003Z","0.5.18":"2022-03-22T14:03:00.046Z","0.0.0-2022310341":"2022-04-01T00:03:55.475Z","0.5.19":"2022-04-01T01:46:25.803Z","0.5.20":"2022-04-04T21:10:49.940Z","0.5.21":"2022-04-06T15:37:49.159Z","0.5.22":"2022-05-02T14:55:36.142Z","0.5.23":"2022-05-05T18:35:17.538Z","0.5.24":"2022-05-10T04:11:59.939Z","0.0.0-202242865913":"2022-05-28T06:59:24.925Z","0.0.0-202242872411":"2022-05-28T07:24:24.153Z","0.0.0-202251153718":"2022-06-01T15:37:31.398Z","0.0.0-20225116021":"2022-06-01T16:00:35.547Z","0.5.25":"2022-06-01T21:30:27.646Z","0.5.26":"2022-06-02T23:37:26.010Z","0.5.27":"2022-06-08T20:56:59.033Z","0.5.28":"2022-06-15T18:48:39.113Z","0.5.29":"2022-06-23T17:13:35.428Z","0.5.30":"2022-07-12T21:06:26.187Z","0.5.31":"2022-07-25T18:20:01.098Z","0.5.32":"2022-08-04T17:59:15.539Z","0.0.0-202272320426":"2022-08-23T20:42:24.611Z","0.0.0-2022724212719":"2022-08-24T21:27:37.228Z","0.0.0-2022725173131":"2022-08-25T17:31:50.338Z","0.5.33":"2022-08-25T21:45:46.007Z","0.0.0-2022726221713":"2022-08-26T22:17:32.184Z","0.0.0-20228823182":"2022-09-08T23:18:18.387Z","0.5.34":"2022-09-12T12:17:22.920Z","0.0.0-2022812163333":"2022-09-12T16:33:45.899Z","0.0.0-2022813172428":"2022-09-13T17:24:44.756Z","0.5.35":"2022-09-14T15:57:33.222Z","0.0.0-2022819193354":"2022-09-19T19:34:08.252Z","0.5.36":"2022-09-20T15:31:56.071Z","0.5.37":"2022-09-29T01:42:38.182Z","0.5.38":"2022-11-04T20:32:01.681Z","0.0.0-202211121340":"2022-12-01T02:13:53.711Z","0.0.0-202211220335":"2022-12-02T20:33:17.879Z","0.0.0-202211534330":"2022-12-05T03:43:42.761Z","0.0.0-202211542835":"2022-12-05T04:28:52.329Z","0.0.0-202211517735":"2022-12-05T17:07:51.844Z","0.0.0-202211521918":"2022-12-05T21:09:31.262Z","0.5.39":"2022-12-08T07:02:54.450Z","0.0.0-20221115223117":"2022-12-15T22:31:30.004Z","0.0.0-20221116233743":"2022-12-16T23:37:56.543Z","0.5.40":"2023-01-11T19:06:26.512Z","0.0.0-20230203220206":"2023-02-03T22:02:16.681Z","0.0.0-20230206212406":"2023-02-06T21:24:15.316Z","0.0.0-20230206212811":"2023-02-06T21:28:21.370Z","0.0.0-20230206220540":"2023-02-06T22:05:52.233Z","0.0.0-20230206222914":"2023-02-06T22:29:25.659Z","0.0.0-20230206224602":"2023-02-06T22:46:11.321Z","0.0.0-20230206230656":"2023-02-06T23:07:07.430Z","0.0.0-20230601165341":"2023-06-01T16:53:54.369Z","0.6.0":"2023-06-05T19:06:20.920Z"},"bugs":{"url":"https://github.com/ethereum-optimism/optimism/issues"},"author":{"name":"Optimism PBC"},"license":"MIT","homepage":"https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts#readme","keywords":["optimism","ethereum","contracts","solidity"],"repository":{"url":"git+https://github.com/ethereum-optimism/optimism.git","type":"git"},"description":"[Optimism] L1 and L2 smart contracts for Optimism","maintainers":[{"email":"optibot@oplabs.co","name":"optibot"},{"email":"raffaele@oplabs.co","name":"raffaele-oplabs"},{"email":"falco@oplabs.co","name":"falcorocksoplabs"},{"email":"matt@mattsolomon.dev","name":"mds1"}],"readme":"# Optimism Smart Contracts\n\n[![codecov](https://codecov.io/gh/ethereum-optimism/optimism/branch/master/graph/badge.svg?token=0VTG7PG7YR&flag=contracts-tests)](https://codecov.io/gh/ethereum-optimism/optimism)\n\n`@eth-optimism/contracts` contains the various Solidity smart contracts used within the Optimism system.\nSome of these contracts are [meant to be deployed to Ethereum (\"Layer 1\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L1), while others are [meant to be deployed to Optimism (\"Layer 2\")](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts/L2).\nWithin each contract file you'll find the network upon which the contract is meant to be deloyed, listed as either `EVM` (for Ethereum) or `OVM` (for Optimism).\nIf neither `EVM` nor `OVM` are listed, the contract is likely intended to be used on either network.\n\n## Usage (npm)\n\nYou can import `@eth-optimism/contracts` to use the Optimism contracts within your own codebase.\nInstall via `npm` or `yarn`:\n\n```shell\nnpm install @eth-optimism/contracts\n```\n\nWithin your contracts:\n\n```solidity\nimport { SomeContract } from \"@eth-optimism/contracts/path/to/SomeContract.sol\";\n```\n\nNote that the `/path/to/SomeContract.sol` is the path to the target contract within the [contracts folder](https://github.com/ethereum-optimism/optimism/tree/develop/packages/contracts/contracts) inside of this package.\nFor example, the [L1CrossDomainMessenger](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol) contract is located at `packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol`, relative to this README.\nYou would therefore import the contract as:\n\n\n```solidity\nimport { L1CrossDomainMessenger } from \"@eth-optimism/contracts/L1/messaging/L1CrossDomainMessenger.sol\";\n```\n\n## Guide for Developers\n\n### Setup\n\nInstall the following:\n- [`Node.js` (14+)](https://nodejs.org/en/)\n- [`npm`](https://www.npmjs.com/get-npm)\n- [`yarn`](https://classic.yarnpkg.com/en/docs/install/)\n\nClone the repo:\n\n```shell\ngit clone https://github.com/ethereum-optimism/contracts.git\ncd contracts\n```\n\nInstall `npm` packages:\n\n```shell\nyarn install\n```\n\n### Running Tests\n\nTests are executed via `yarn`:\n\n```shell\nyarn test\n```\n\nRun specific tests by giving a path to the file you want to run:\n\n```shell\nyarn test ./test/path/to/my/test.spec.ts\n```\n\n### Measuring test coverage:\n\n```shell\nyarn test:coverage\n```\n\nThe output is most easily viewable by opening the html file in your browser:\n\n```shell\nopen ./coverage/index.html\n```\n\n### Compiling and Building\n\nCompile and build the various required with the `build` command:\n\n```shell\nyarn build\n```\n\n### Deploying the Contracts\n\n#### Required environment variables\n\nYou must set several required environment variables before you can execute a deployment.\nDuplicate the file [`.env.example`](./.env.example) and rename your duplicate to `.env`.\nFill out each of the environment variables before continuing.\n\n#### Creating a deployment configuration\n\nBefore you can carry out a deployment, you must create a deployment configuration file inside of the [deploy-config](./deploy-config/) folder.\nDeployment configuration files are TypeScript files that export an object that conforms to the `DeployConfig` type.\nSee [mainnet.ts](./deploy-config/mainnet.ts) for an example deployment configuration.\nWe recommend duplicating an existing deployment config and modifying it to satisfy your requirements.\n\n#### Executing a deployment\n\nOnce you've created your deploy config, you can execute a deployment with the following command:\n\n```\nnpx hardhat deploy --network <my network name>\n```\n\nNote that this only applies to fresh deployments.\nIf you want to upgrade an existing system (instead of deploying a new system from scratch), you must use the following command instead:\n\n```\nnpx hardhat deploy --network <my network name> --tags upgrade\n```\n\nDuring the deployment process, you will be asked to transfer ownership of several contracts to a special contract address.\nYou will also be asked to verify various configuration values.\nThis is a safety mechanism to make sure that actions within an upgrade are performed atomically.\nOwnership of these addresses will be automatically returned to the original owner address once the upgrade is complete.\nThe original owner can always recover ownership from the upgrade contract in an emergency.\nPlease read these instructions carefully, verify each of the presented configuration values, and carefully confirm that the contract you are giving ownership to has not been compromised (e.g., check the code on Etherscan).\n\nAfter your deployment is complete, your new contracts will be written to an artifacts directory in `./deployments/<my network name>`.\n\n#### Verifying contract source code\n\nContracts will be automatically verified via both [Etherscan](https://etherscan.io) and [Sourcify](https://sourcify.dev/) during the deployment process.\nIf there was an issue with verification during the deployment, you can manually verify your contracts with the command:\n\n```\nnpx hardhat etherscan-verify --network <my network name>\n```\n\n#### Creating a genesis file\n\nOptimism expects that certain contracts (called \"predeploys\") be deployed to the L2 network at pre-determined addresses.\nWe guarantee this by creating a genesis file in which certain contracts are already within the L2 state at the genesis block.\nTo create the genesis file for your network, you must first deploy the L1 contracts using the appropriate commands from above.\nOnce you've deployed your contracts, run the following command:\n\n```\nnpx hardhat take-dump --network <my network name>\n```\n\nA genesis file will be created for you at `/genesis/<my network name>.json`.\nYou can then ingest this file via `geth init`.\n\n### Hardhat tasks\n\n#### Whitelisting\n\nOptimism has removed the whitelist from the Optimism mainnet.\nHowever, if you are running your own network and still wish to use the whitelist, you can manage the whitelist with the `whitelist` task.\nRun the following to get help text for the `whitelist` command:\n\n```\nnpx hardhat whitelist --help\n```\n\n#### Withdrawing fees\n\nAny wallet can trigger a withdrawal of fees within the `SequencerFeeWallet` contract on L2 back to L1 as long as a threshold balance has been reached.\nFees within the wallet will return to a fixed address on L1.\nRun the following to get help text for the `withdraw-fees` command:\n\n```\nnpx hardhat withdraw-fees --help\n```\n\n## Security\nPlease refer to our [Security Policy](https://github.com/ethereum-optimism/.github/security/policy) for information about how to disclose security issues with this code.\nWe also maintain a [bug bounty program via Immunefi](https://immunefi.com/bounty/optimism/) with a maximum payout of $2,000,042 for critical bug reports.\n","readmeFilename":"README.md"}