OP Deployer는 주로 Optimism이 거버넌스를 담당하는 체인에서 사용하도록 설계되었지만, 커스텀 배포 관리도
지원합니다. 이는 특히 RaaS 제공업체에서 흔하며, 이들의 고객은 커스텀 L1(L3의 경우 L2)이나 거버넌스를 사용하는
배포를 요청하는 경우가 많습니다. 이 가이드에서는 OP Deployer를 사용하여 이러한 체인을 관리하는 과정을
안내합니다.
이 방식으로 배포된 체인은 Optimism Governance의 적용을 받지 않습니다. 커스터마이징되었거나 감사를 받지 않은
코드를 실행하고 있을 수 있습니다. 사용에 따른 위험은 본인이 부담해야 합니다.
모든 OP Chain은 논리적인 배포 그룹에 속합니다. 이 그룹은 OP Chain 그룹의 동작을 제어하는 공유 컨트랙트
집합으로 구성됩니다. 여기에는 다음이 포함됩니다.
bridge 일시 정지
필수 및 권장 프로토콜 버전 신호 전달
각 OP Chain마다 새로운 공유 컨트랙트 집합을 배포할 수도 있고, 한 번 배포한 후 여러 OP Chain에서 공유할 수도
있습니다. 선택은 배포자에게 달려 있습니다. 단, 공유 컨트랙트 집합을 여러 L1에서 공유하는 것은 불가능합니다.먼저 다음 명령으로 선택한 L1에 공유 컨트랙트를 bootstrap합니다.
OP Chain의 스마트 컨트랙트는 사전 배포된 구현 집합을 가리키는 factory를 사용하여 배포됩니다. 새로운 L1에
배포할 때마다, 그리고 새로운 스마트 컨트랙트 버전이 릴리스될 때마다 factory와 구현을 배포해야 합니다.
구현은 CREATE2를 사용하여 배포되므로, L1에 이미 존재하는 경우 주소가 재사용될 수 있습니다.
배포하는 컨트랙트 버전에 따라 다른 버전의 OP Deployer를 사용해야 할 수 있습니다. 올바른 릴리스를 선택하는
방법에 대한 자세한 내용은 릴리스 가이드를 참고하십시오.
구현을 배포하려면 다음 명령을 사용합니다.
op-deployer bootstrap implementations \ --artifacts-locator="<locator, should be the same as the one used in bootstrap superchain>" \ --l1-rpc-url="<rpc url>" \ --outfile="<path to outfile>" \ --mips-version="2" \ --private-key="<contract deployer private key>" \ --superchain-config-proxy="<address output from bootstrap superchain>" \ --upgrade-controller="<superchain-proxy-admin-owner used in bootstrap superchain>"
bootstrap superchain 명령과 마찬가지로, 이 명령은 관련 컨트랙트의 주소가 포함된 JSON 파일을 출력합니다.
이 파일도 잘 보관하십시오.구현 파일에서 가장 중요한 주소는 OPCM(OP Contracts Manager)입니다. 이 컨트랙트는 이 배포 그룹에 속하는 모든
OP Chain을 배포할 factory입니다. 또한 서로 다른 컨트랙트 버전 간의 업그레이드도 담당합니다. OPCM과 관련된
다음의 매우 중요한 불변 조건을 명심하십시오.
각 OPCM과 컨트랙트 버전 사이에는 일대일 대응 관계가 있습니다.
각 OPCM은 정확히 하나의 배포 그룹과 연결됩니다. 즉, 관리하는 새 배포 그룹마다 bootstrap implementations
명령을 사용하여 새 OPCM을 반드시 배포해야 합니다.
컨트랙트와 구현을 bootstrap한 후에는 apply 명령으로 L2 체인을 배포할 수 있습니다. intent에서 configType을
standard-overrides로 지정하고 opcmAddress 필드를 위의 OPCM 주소로 설정해야 합니다. 올바른 OPCM을 호출하는지
반드시 확인하십시오. 올바른 OPCM을 호출하지 않으면 잘못된 컨트랙트 버전이 배포되거나 체인이 잘못된 배포와
연결될 수 있습니다.
bootstrap 명령에서 사용한 것과 동일한 l1ContractsLocator 및 l2ContractsLocator를 사용해야 합니다. 그렇지 않으면
배포 오류가 발생할 수 있습니다.
다음 구성 예시를 참고하십시오.
configType = "standard-overrides"l1ChainID = 11155420opcmAddress = "0x..."l1ContractsLocator = "tag://..." # must match the one used in bootstrapl2ContractsLocator = "tag://..."[[chains]]# Chain configs...
apply가 성공적으로 완료되면 inspect 계열 명령을 사용하여 체인의 L2 제네시스 및 rollup 구성 파일을 다운로드할
수 있습니다.
op-deployer upgrade 명령은 op-contracts/v5.0.0까지의 업그레이드만 지원합니다. op-contracts/v5.0.0에서
op-contracts/v6.0.0으로의 업그레이드는 지원하지 않습니다. v5.0.0 이후의 업그레이드에는
superchain-ops를 사용하거나 OPCM과 직접
상호작용하십시오. 자세한 내용은 공지를 참고하십시오.
이 페이지가 도움이 되었나요?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Optimism Documentation","colors":{"primary":"#FF0420","light":"#FF0420","dark":"#FF0420"},"logo":{"light":"https://mintcdn.com/optimism-373f39ad/Vw5vY8zA-CRjBsUF/public/logos/Lockup_docs_dark.svg?fit=max\u0026auto=format\u0026n=Vw5vY8zA-CRjBsUF\u0026q=85\u0026s=a1ab18aecbec09fe5ad40222ce76f00c","dark":"https://mintcdn.com/optimism-373f39ad/Vw5vY8zA-CRjBsUF/public/logos/Lockup_docs_light.svg?fit=max\u0026auto=format\u0026n=Vw5vY8zA-CRjBsUF\u0026q=85\u0026s=edf965cc513f1a46b1897e2a6494b43b"},"favicon":"https://mintcdn.com/optimism-373f39ad/x8TXRvd2PF-Wx1yv/public/favicon.png?fit=max\u0026auto=format\u0026n=x8TXRvd2PF-Wx1yv\u0026q=85\u0026s=7b7a602bd267ee638c0167179f41737c","navbar":{"links":[{"href":"https://www.optimism.io/blog","label":"Blog"},{"href":"https://github.com/ethereum-optimism/optimism/tree/develop/docs/public-docs","label":"GitHub"}]},"footer":{"socials":{"twitter":"https://twitter.com/optimism","github":"https://github.com/ethereum-optimism"}},"seo":{"metatags":{"canonical":"https://docs.optimism.io/","og:title":"Optimism Documentation","og:type":"website","twitter:card":"summary_large_image"}},"integrations":{"mixpanel":{"projectToken":"807e42c62989ff12427a35baa12b6218"}},"contextual":{"options":["copy","chatgpt","claude","mcp"],"display":"header"},"thumbnails":{"preset":"classic","appearance":"dark","surface":"neutral","background":"https://mintcdn.com/optimism-373f39ad/ZyL9bbNrDzMQhMLM/public/img/thumbnail-bg.png?fit=max\u0026auto=format\u0026n=ZyL9bbNrDzMQhMLM\u0026q=85\u0026s=5baf50afc7e4f4e6288de49b3df19d52","fonts":{"family":"Riforma LL","source":"public/fonts/RiformaLL-Regular.woff","format":"woff"},"eyebrow":{"source":"none"}},"interaction":{"drilldown":false},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Status","icon":"signal-bars","href":"https://status.optimism.io"},{"anchor":"Faucet","icon":"gas-pump","href":"https://console.optimism.io/faucet"},{"anchor":"Bridge","icon":"bridge-water","href":"https://app.optimism.io/bridge/deposit"}]},"languages":[{"language":"en","href":""},{"language":"ko","href":"ko"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"optimism-373f39ad","hasAudioNarration":false,"actualSubdomain":"optimism-373f39ad","customDomains":["docs.optimism.io"],"gitSource":{"type":"github","owner":"ethereum-optimism","repo":"optimism","deployBranch":"develop","contentDirectory":"docs/public-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae92d842d72e31fdbcf58ca","collectionId":"5f428d64-929a-4b8a-a758-22093ef9aeb7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae92d842d72e31fdbcf58ca"},"feedback":{"thumbs":true,"issues":false,"edits":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae92d842d72e31fdbcf58ca","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"en","tag":"Reference","count":136},{"language":"ko","tag":"참조","count":136},{"language":"en","tag":"Node Operators","count":119},{"language":"ko","tag":"노드 운영자","count":119},{"language":"en","tag":"Protocol","count":98},{"language":"ko","tag":"프로토콜","count":98},{"language":"en","tag":"Chain Operators","count":75},{"language":"ko","tag":"체인 운영자","count":75},{"language":"en","tag":"op-reth","count":74},{"language":"ko","tag":"op-reth","count":74},{"language":"en","tag":"op-reth CLI reference","count":73},{"language":"ko","tag":"op-reth CLI reference","count":73},{"language":"en","tag":"App Developers","count":68},{"language":"ko","tag":"앱 개발자","count":68},{"language":"en","tag":"Guides","count":52},{"language":"ko","tag":"가이드","count":52},{"language":"en","tag":"Tutorials","count":42},{"language":"ko","tag":"튜토리얼","count":42},{"language":"en","tag":"How the protocol works","count":41},{"language":"ko","tag":"프로토콜 작동 방식","count":41}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles/homepage.css","content":"@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Italic.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Medium.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-MediumItalic.woff2) format('woff2');font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-BoldItalic.woff2) format('woff2');font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Heavy.woff2) format('woff2');font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-HeavyItalic.woff2) format('woff2');font-weight:900;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Light.woff2) format('woff2');font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-LightItalic.woff2) format('woff2');font-weight:300;font-style:italic;font-display:swap}.nx-prose,.nx-prose h1,.nx-prose h2,.nx-prose h3,.nx-prose h4,.nx-prose h5,.nx-prose h6,.nx-prose p,[data-page-id=index] h1,body{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif!important}[data-page-id=index] h1+p,[data-page-id=index]>p:first-of-type{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif!important;font-family:var(--font-riforma)!important;font-size:1.25rem!important;line-height:1.6!important;color:#6b7280!important;margin-bottom:2rem!important;margin-top:0!important;max-width:100%!important}html[class*=dark] [data-page-id=index] h1+p,html[class*=dark] [data-page-id=index]>p:first-of-type{color:#9ca3af!important}body{font-family:var(--font-riforma)!important}html[class*=dark] body{background:#0f172a!important}.btn-primary,.btn-secondary,.hero-content h1,.hero-content p{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}html[class*=dark] .hero-content p{color:#9ca3af}.btn-primary,.btn-secondary{border-radius:6px}@media (max-width:768px){.hero-section{flex-direction:column;text-align:center;min-height:auto;padding:2rem 0}.hero-content{padding-right:0;margin-bottom:2rem}.hero-content h1{font-size:1.75rem}.hero-buttons{justify-content:center}}.home-card .home-card__title{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif!important}.card-list-item__description,.card-list-item__title{font-family:'Riforma LL',-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}@media (max-width:768px){.hero-section{padding:4rem 2rem;flex-direction:column;text-align:center;min-height:auto}.hero-content{margin-bottom:2rem;max-width:none}.home-cards{grid-template-columns:1fr!important;padding:0 2rem}.nx-prose{padding-left:2rem!important;padding-right:2rem!important}.card-list-item__header{flex-direction:column;align-items:flex-start;gap:.5rem}}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:block}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Italic.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Medium.woff2) format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-MediumItalic.woff2) format('woff2');font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-BoldItalic.woff2) format('woff2');font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Heavy.woff2) format('woff2');font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-HeavyItalic.woff2) format('woff2');font-weight:900;font-style:italic;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-Light.woff2) format('woff2');font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:'Riforma LL';src:url(/fonts/RiformaLL-LightItalic.woff2) format('woff2');font-weight:300;font-style:italic;font-display:swap}.nx-logo img,a[href=\"/\"] img,header img[src*=logo],img[alt*=logo],nav img{max-height:13px!important;width:auto!important;height:13px!important}:root{--font-riforma:'Riforma LL', -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;--font-mono:'Roboto Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}.nx-prose,.nx-prose blockquote,.nx-prose h1,.nx-prose h2,.nx-prose h3,.nx-prose h4,.nx-prose h5,.nx-prose h6,.nx-prose li,.nx-prose p,.nx-prose td,.nx-prose th,a:not(pre a):not(code a),body,button,div:not([class*=language-]):not(pre):not(code),html,span:not([class*=language-]):not([class*=token]){font-family:var(--font-riforma)!important}.boolean,.cdata,.class-name,.comment,.constant,.deleted,.doctype,.function,.important,.keyword,.language-bash,.language-javascript,.language-json,.language-python,.language-sh,.language-shell,.language-solidity,.language-typescript,.language-yaml,.language-yml,.number,.nx-bg-primary-700\\/5,.nx-code-block,.nx-code-block *,.nx-code-block span,.nx-font-mono,.operator,.prolog,.property,.punctuation,.regex,.symbol,.tag,.token,.variable,[class*=language-],[class*=language-] *,[class*=language-] span,code,code *,code span,div[data-language],div[data-language] *,div[data-language] span,div[data-theme*=dark],div[data-theme*=light],pre,pre *,pre span,span[class*=token]{font-family:var(--font-mono)!important;font-feature-settings:normal!important}.nx-prose h1,.nx-prose h2,.nx-prose h3,h1,h2,h3{font-family:var(--font-riforma)!important;font-weight:400!important}[data-page-id=index]{max-width:1400px!important;margin-left:auto!important;margin-right:auto!important;padding-left:2rem!important;padding-right:2rem!important}[data-page-id=index] h1{font-size:3rem!important;font-weight:400!important;line-height:1.1!important;margin-bottom:1rem!important;margin-top:0!important;padding-top:0!important;color:#111827!important;letter-spacing:-.02em!important}html[class*=dark] [data-page-id=index] h1{color:#f9fafb!important}[data-page-id=index] .nx-prose{padding-top:0!important;padding-left:0!important;padding-right:0!important;max-width:100%!important}.nx-container{max-width:none!important;padding:0!important}[data-page-id=index] h1,[data-page-id=index]>div>div{max-width:100%!important}body{background:#fff!important}.nx-bg-gradient-to-b,.nx-bg-gradient-to-bl,.nx-bg-gradient-to-br,.nx-bg-gradient-to-l,.nx-bg-gradient-to-r,.nx-bg-gradient-to-t,.nx-bg-gradient-to-tl,.nx-bg-gradient-to-tr,.nx-container{background:0 0!important}.hero-section{display:flex;align-items:center;justify-content:space-between;min-height:auto;padding:0;margin-bottom:2.5rem;max-width:100%;margin-left:0;margin-right:0;background:0 0}.hero-content{flex:1;max-width:505px}.hero-content h1,.hero-content p,[data-page-id=index] h1{font-family:var(--font-riforma)!important}.hero-content h1{font-size:2.5rem;font-weight:600;line-height:1.2;margin-bottom:.75rem;color:#111827;letter-spacing:-.025em}html[class*=dark] .hero-content h1{color:#f9fafb}.hero-content p{font-size:1.125rem;font-weight:400;line-height:1.6;margin-bottom:1rem;color:#6b7280}.hero-visual{flex:1;display:flex;justify-content:center;align-items:center}.hero-visual img{max-width:100%;height:auto}.hero-buttons{display:flex;gap:1rem}.btn-primary{font-family:var(--font-riforma)!important;background-color:#ff0420;color:#fff;padding:.75rem 1.5rem;border:0;border-radius:.75rem;font-weight:500;cursor:pointer;transition:background-color .2s;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;text-align:center}.btn-primary:hover,.btn-secondary{background-color:#e00320;color:#fff;text-decoration:none}.btn-secondary{font-family:var(--font-riforma)!important;background-color:transparent;color:#1f2937;padding:.75rem 1.5rem;border:1px solid #d1d5db;border-radius:.75rem;font-weight:500;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;justify-content:center;text-align:center}.btn-secondary:hover{background-color:#f9fafb;border-color:#9ca3af;color:#1f2937;text-decoration:none}html[class*=dark] .btn-secondary{color:#f9fafb;border-color:#4b5563}html[class*=dark] .btn-secondary:hover{background-color:#374151;border-color:#6b7280;color:#f9fafb}@media (max-width:768px){.hero-section{flex-direction:column;text-align:center;min-height:auto;padding:2rem 0}.hero-content{padding-right:0;margin-bottom:2rem}.hero-content h1{font-size:1.75rem}.hero-buttons{justify-content:center}}.home-cards{width:100%;margin-bottom:2.5rem;margin-top:0;max-width:100%;margin-left:0;margin-right:0;padding:0}.home-card{display:flex;flex-direction:column;padding:1.75rem;background:0 0;border:1px solid #e2e8f0;border-radius:12px;transition:all .2s ease}html[class*=dark] .home-card{background:#1e293b;border-color:#334155}.home-card .home-card__title{font-family:var(--font-riforma)!important;font-size:1.5rem!important;font-weight:400!important;margin:0 0 1.5rem;color:#0f172a;letter-spacing:-.01em}html[class*=dark] .home-card .home-card__title{color:#f1f5f9}.home-card__footer{margin-top:auto;padding-top:1.5rem}.home-card__footer-link{color:#64748b;text-decoration:none;font-size:.875rem;font-weight:500;transition:color .2s ease}.home-card__footer-link:hover{color:#475569;text-decoration:none}html[class*=dark] .home-card__footer-link{color:#94a3b8}html[class*=dark] .card-list-item:hover .card-list-item__description,html[class*=dark] .home-card__footer-link:hover{color:#cbd5e1}.card-list{display:flex;flex-direction:column;gap:0}.card-list-item{display:flex;align-items:flex-start;gap:1rem;padding:.875rem 0;border-radius:6px;text-decoration:none;color:inherit;transition:all .2s ease;border-bottom:1px solid #f1f5f9}.card-list-item:last-child{border-bottom:none}html[class*=dark] .card-list-item{border-bottom-color:#334155}.card-list-item:hover .card-list-item__title,html[class*=dark] .card-list-item:hover .card-list-item__arrow{color:#ef4444}.card-list-item:hover .card-list-item__description{color:#475569}.card-list-item__number{width:2rem;height:2rem;border-radius:50%;background:#f1f5f9;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.875rem;flex-shrink:0;color:#475569}html[class*=dark] .card-list-item__number{background:#334155;color:#cbd5e1}.card-list-item__content{flex:1}.card-list-item__header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.card-list-item__description,.card-list-item__title{font-family:var(--font-riforma)!important;margin:0;transition:color .2s ease}.card-list-item__title{font-size:1rem;font-weight:400;color:#0f172a;letter-spacing:-.01em}html[class*=dark] .card-list-item__title{color:#f1f5f9}.card-list-item__description{font-size:.875rem;color:#64748b;line-height:1.5}html[class*=dark] .card-list-item__description{color:#94a3b8}.card-list-item__badge{padding:.25rem .75rem;border-radius:16px;font-size:.75rem;font-weight:600;text-transform:capitalize}.card-list-item__badge--easy{background:#dcfce7;color:#166534}.card-list-item__badge--medium{background:#fef3c7;color:#92400e}.card-list-item__badge--hard{background:#fee2e2;color:#991b1b}html[class*=dark] .card-list-item__badge--easy{background:#14532d;color:#bbf7d0}html[class*=dark] .card-list-item__badge--medium{background:#92400e;color:#fef3c7}html[class*=dark] .card-list-item__badge--hard{background:#991b1b;color:#fecaca}.card-list-item__arrow{color:#cbd5e1;font-size:1.25rem;transition:all .2s ease;display:flex;align-items:center;justify-content:center;margin-top:.25rem}.card-list-item:hover .card-list-item__arrow{transform:translateX(4px);color:#ef4444}html[class*=dark] .card-list-item__arrow{color:#64748b}.nx-prose:not([data-page-id=index] .nx-prose){max-width:1400px!important;margin-left:auto!important;margin-right:auto!important;padding-left:2rem!important;padding-right:2rem!important}@media (max-width:768px){.hero-section{padding:4rem 2rem;flex-direction:column;text-align:center;min-height:auto}.hero-content{margin-bottom:2rem;max-width:none}.home-cards{grid-template-columns:1fr!important;padding:0 2rem}.nx-prose{padding-left:2rem!important;padding-right:2rem!important}.card-list-item__header{flex-direction:column;align-items:flex-start;gap:.5rem}}.nx-card img,[class*=card] img[src*=\"/public/img/\"]{background:0 0!important}"}],"page":{"pagePath":"ko/chain-operators/tools/op-deployer/usage/custom-deployments","slug":"/ko/chain-operators/tools/op-deployer/usage/custom-deployments","pageMetadata":{"title":"커스텀 배포","description":"OP Deployer로 커스텀 배포를 관리하는 방법을 알아봅니다.","diataxis":"how-to","href":"/ko/chain-operators/tools/op-deployer/usage/custom-deployments"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"OP Deployer로 커스텀 배포를 관리하는 방법을 알아봅니다.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`OP Deployer는 주로 Optimism이 거버넌스를 담당하는 체인에서 사용하도록 설계되었지만, 커스텀 배포 관리도\n지원합니다. 이는 특히 RaaS 제공업체에서 흔하며, 이들의 고객은 커스텀 L1(L3의 경우 L2)이나 거버넌스를 사용하는\n배포를 요청하는 경우가 많습니다. 이 가이드에서는 OP Deployer를 사용하여 이러한 체인을 관리하는 과정을\n안내합니다.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`이 방식으로 배포된 체인은 Optimism Governance의 적용을 받지 않습니다. 커스터마이징되었거나 감사를 받지 않은\n코드를 실행하고 있을 수 있습니다. 사용에 따른 위험은 본인이 부담해야 합니다.`})}),`\n`,_jsx(Heading,{level:`2`,id:`bootstrap`,children:`Bootstrap`}),`\n`,_jsx(_components.p,{children:`커스텀 OP Stack을 배포하는 첫 번째 단계는 L1에 bootstrap하는 것입니다. 이 과정에서 다음 작업이 수행됩니다.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SuperchainConfig`}),` 및 `,_jsx(_components.code,{children:`SuperchainVersions`}),`와 같은 공유 관리 컨트랙트를 배포합니다.`]}),`\n`,_jsx(_components.li,{children:`이 배포의 모든 OP Chain이 공유할 컨트랙트 구현을 배포합니다.`}),`\n`,_jsx(_components.li,{children:`배포를 제어할 수 있도록 소유권을 설정합니다.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`이를 위해 `,_jsx(_components.code,{children:`op-deployer`}),`의 `,_jsx(_components.a,{href:`/ko/chain-operators/tools/op-deployer/usage/bootstrap`,children:_jsx(_components.code,{children:`bootstrap`})}),` 계열 명령을 사용합니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`공유-컨트랙트-bootstrap`,children:`공유 컨트랙트 Bootstrap`}),`\n`,_jsx(_components.p,{children:`모든 OP Chain은 논리적인 배포 그룹에 속합니다. 이 그룹은 OP Chain 그룹의 동작을 제어하는 공유 컨트랙트\n집합으로 구성됩니다. 여기에는 다음이 포함됩니다.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`bridge 일시 정지`}),`\n`,_jsx(_components.li,{children:`필수 및 권장 프로토콜 버전 신호 전달`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`각 OP Chain마다 새로운 공유 컨트랙트 집합을 배포할 수도 있고, 한 번 배포한 후 여러 OP Chain에서 공유할 수도\n있습니다. 선택은 배포자에게 달려 있습니다. 단, 공유 컨트랙트 집합을 여러 L1에서 공유하는 것은 `,_jsx(_components.strong,{children:`불가능`}),`합니다.`]}),`\n`,_jsx(_components.p,{children:`먼저 다음 명령으로 선택한 L1에 공유 컨트랙트를 bootstrap합니다.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`op-deployer`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` bootstrap`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` superchain`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l1-rpc-url=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003crpc url>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --private-key=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003ccontract deployer private key>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --artifacts-locator=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003clocator>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --outfile=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cpath to outfile>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --superchain-proxy-admin-owner=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003crole address>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --guardian=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003crole address>\"`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`이 명령은 관련 컨트랙트의 주소가 포함된 JSON 파일을 출력합니다. 이후 단계에서 필요하므로 이 파일을 잘\n보관하십시오.`}),`\n`,_jsx(_components.p,{children:`bootstrap할 때는 다음 모범 사례를 따르는 것을 권장합니다.`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`guardian`}),` 및 `,_jsx(_components.code,{children:`superchain-proxy-admin-owner`}),`와 같은 소유권 역할에는 Gnosis SAFE를 사용하십시오. 향후 업그레이드를\n지원하려면 소유자는 `,_jsx(_components.strong,{children:`반드시`}),` 스마트 컨트랙트여야 하므로, SAFE가 합리적인 기본 선택입니다.`]}),`\n`,_jsx(_components.li,{children:`배포자로는 일반 EOA를 사용하십시오. 배포가 완료되면 배포자는 배포에 대한 어떠한 제어 권한도 갖지 않습니다.`}),`\n`,_jsxs(_components.li,{children:[`표준 컨트랙트 태그(예: `,_jsx(_components.code,{children:`tag://op-contracts/v2.0.0`}),`)를 사용하십시오. 이렇게 하면 업그레이드가 더 쉬워집니다.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`구현-bootstrap`,children:`구현 Bootstrap`}),`\n`,_jsxs(_components.p,{children:[`OP Chain의 스마트 컨트랙트는 사전 배포된 구현 집합을 가리키는 factory를 사용하여 배포됩니다. 새로운 L1에\n배포할 때마다, 그리고 새로운 스마트 컨트랙트 버전이 릴리스될 때마다 factory와 구현을 배포해야 합니다.\n구현은 `,_jsx(_components.code,{children:`CREATE2`}),`를 사용하여 배포되므로, L1에 이미 존재하는 경우 주소가 재사용될 수 있습니다.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`배포하는 컨트랙트 버전에 따라 다른 버전의 OP Deployer를 사용해야 할 수 있습니다. 올바른 릴리스를 선택하는\n방법에 대한 자세한 내용은 `,_jsx(_components.a,{href:`/ko/chain-operators/tools/op-deployer/reference/releases`,children:`릴리스 가이드`}),`를 참고하십시오.`]})}),`\n`,_jsx(_components.p,{children:`구현을 배포하려면 다음 명령을 사용합니다.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`op-deployer`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` bootstrap`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` implementations`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --artifacts-locator=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003clocator, should be the same as the one used in bootstrap superchain>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l1-rpc-url=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003crpc url>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --outfile=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cpath to outfile>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --mips-version=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --private-key=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003ccontract deployer private key>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --superchain-config-proxy=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003caddress output from bootstrap superchain>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --upgrade-controller=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003csuperchain-proxy-admin-owner used in bootstrap superchain>\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`bootstrap superchain`}),` 명령과 마찬가지로, 이 명령은 관련 컨트랙트의 주소가 포함된 JSON 파일을 출력합니다.\n이 파일도 잘 보관하십시오.`]}),`\n`,_jsxs(_components.p,{children:[`구현 파일에서 가장 중요한 주소는 OPCM(OP Contracts Manager)입니다. 이 컨트랙트는 이 배포 그룹에 속하는 모든\nOP Chain을 배포할 factory입니다. 또한 서로 다른 컨트랙트 버전 간의 업그레이드도 담당합니다. OPCM과 관련된\n다음의 `,_jsx(_components.strong,{children:`매우 중요한`}),` 불변 조건을 명심하십시오.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`각 OPCM과 컨트랙트 버전 사이에는 일대일 대응 관계가 있습니다.`}),`\n`,_jsxs(_components.li,{children:[`각 OPCM은 `,_jsx(_components.strong,{children:`정확히 하나의`}),` 배포 그룹과 연결됩니다. 즉, 관리하는 새 배포 그룹마다 `,_jsx(_components.code,{children:`bootstrap implementations`}),`\n명령을 사용하여 새 OPCM을 `,_jsx(_components.strong,{children:`반드시`}),` 배포해야 합니다.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`배포`,children:`배포`}),`\n`,_jsxs(_components.p,{children:[`컨트랙트와 구현을 bootstrap한 후에는 `,_jsx(_components.code,{children:`apply`}),` 명령으로 L2 체인을 배포할 수 있습니다. intent에서 `,_jsx(_components.code,{children:`configType`}),`을\n`,_jsx(_components.code,{children:`standard-overrides`}),`로 지정하고 `,_jsx(_components.code,{children:`opcmAddress`}),` 필드를 위의 OPCM 주소로 설정해야 합니다. `,_jsx(_components.strong,{children:`올바른 OPCM을 호출하는지\n반드시 확인하십시오.`}),` 올바른 OPCM을 호출하지 않으면 잘못된 컨트랙트 버전이 배포되거나 체인이 잘못된 배포와\n연결될 수 있습니다.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`bootstrap 명령에서 사용한 것과 동일한 `,_jsx(_components.code,{children:`l1ContractsLocator`}),` 및 `,_jsx(_components.code,{children:`l2ContractsLocator`}),`를 사용해야 합니다. 그렇지 않으면\n배포 오류가 발생할 수 있습니다.`]})}),`\n`,_jsx(_components.p,{children:`다음 구성 예시를 참고하십시오.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`toml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`toml`,children:_jsxs(_components.code,{language:`toml`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`configType`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"standard-overrides\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`l1ChainID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`11155420`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`opcmAddress`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0x...\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`l1ContractsLocator`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tag://...\"`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # must match the one used in bootstrap`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`l2ContractsLocator`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tag://...\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[[`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`chains`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Chain configs...`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`apply`}),`가 성공적으로 완료되면 `,_jsx(_components.code,{children:`inspect`}),` 계열 명령을 사용하여 체인의 L2 제네시스 및 rollup 구성 파일을 다운로드할\n수 있습니다.`]}),`\n`,_jsx(Heading,{level:`2`,id:`업그레이드`,children:`업그레이드`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`op-deployer upgrade`}),` 명령은 `,_jsx(_components.code,{children:`op-contracts/v5.0.0`}),`까지의 업그레이드만 지원합니다. `,_jsx(_components.code,{children:`op-contracts/v5.0.0`}),`에서\n`,_jsx(_components.code,{children:`op-contracts/v6.0.0`}),`으로의 업그레이드는 지원하지 `,_jsx(_components.strong,{children:`않습니다`}),`. v5.0.0 이후의 업그레이드에는\n`,_jsx(_components.a,{href:`/ko/chain-operators/tutorials/l1-contract-upgrades/superchain-ops-guide`,children:`superchain-ops`}),`를 사용하거나 OPCM과 직접\n상호작용하십시오. 자세한 내용은 `,_jsx(_components.a,{href:`/ko/notices/archive/op-deployer-upgrade-deprecation`,children:`공지`}),`를 참고하십시오.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"커스텀 배포","description":"OP Deployer로 커스텀 배포를 관리하는 방법을 알아봅니다.","diataxis":"how-to","href":"/ko/chain-operators/tools/op-deployer/usage/custom-deployments"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Bootstrap","slug":"bootstrap","depth":2,"children":[{"title":"공유 컨트랙트 Bootstrap","slug":"공유-컨트랙트-bootstrap","depth":3,"children":[]},{"title":"구현 Bootstrap","slug":"구현-bootstrap","depth":3,"children":[]}]},{"title":"배포","slug":"배포","depth":2,"children":[]},{"title":"업그레이드","slug":"업그레이드","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/optimism-373f39ad/6b11b6c32a46a09b/public/mixpanel-custom.js"],"subdomain":"optimism-373f39ad","siteName":"Optimism Documentation","title":"Optimism Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/chain-operators/tools/op-deployer/usage/custom-deployments","matchLevel":1},"ko":{"href":"/ko/chain-operators/tools/op-deployer/usage/custom-deployments","matchLevel":0}}},"lastModified":"2026-11-03T00:40:57.790Z","originalFileLocation":"ko/chain-operators/tools/op-deployer/usage/custom-deployments.mdx","locale":"ko"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"OP Deployer로 커스텀 배포를 관리하는 방법을 알아봅니다.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Optimism Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Optimism Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"OP Deployer로 커스텀 배포를 관리하는 방법을 알아봅니다.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Optimism Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://optimism-373f39ad.mintlify.app/_mintlify/api/og/v2?title=%EC%BB%A4%EC%8A%A4%ED%85%80+%EB%B0%B0%ED%8F%AC\u0026amp;description=OP+Deployer%EB%A1%9C+%EC%BB%A4%EC%8A%A4%ED%85%80+%EB%B0%B0%ED%8F%AC%EB%A5%BC+%EA%B4%80%EB%A6%AC%ED%95%98%EB%8A%94+%EB%B0%A9%EB%B2%95%EC%9D%84+%EC%95%8C%EC%95%84%EB%B4%85%EB%8B%88%EB%8B%A4.\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=c690ed4febc0c83dbc4fb3a1147854263fabe0a5ad8760d8e9d53cf28fd48bf6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Optimism Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"OP Deployer로 커스텀 배포를 관리하는 방법을 알아봅니다.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://optimism-373f39ad.mintlify.app/_mintlify/api/og/v2?title=%EC%BB%A4%EC%8A%A4%ED%85%80+%EB%B0%B0%ED%8F%AC\u0026amp;description=OP+Deployer%EB%A1%9C+%EC%BB%A4%EC%8A%A4%ED%85%80+%EB%B0%B0%ED%8F%AC%EB%A5%BC+%EA%B4%80%EB%A6%AC%ED%95%98%EB%8A%94+%EB%B0%A9%EB%B2%95%EC%9D%84+%EC%95%8C%EC%95%84%EB%B4%85%EB%8B%88%EB%8B%A4.\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=c690ed4febc0c83dbc4fb3a1147854263fabe0a5ad8760d8e9d53cf28fd48bf6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/optimism-373f39ad/v3BpzhmZ-un_k_ZG/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Optimism Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF0420\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/ko/chain-operators/tools/op-deployer/usage/custom-deployments.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.optimism.io//chain-operators/tools/op-deployer/usage/custom-deployments\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.optimism.io//chain-operators/tools/op-deployer/usage/custom-deployments\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.optimism.io/#organization\",\"name\":\"Optimism Documentation\",\"url\":\"https://docs.optimism.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/optimism-373f39ad/Vw5vY8zA-CRjBsUF/public/logos/Lockup_docs_dark.svg?fit=max\u0026auto=format\u0026n=Vw5vY8zA-CRjBsUF\u0026q=85\u0026s=a1ab18aecbec09fe5ad40222ce76f00c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.optimism.io#website\",\"name\":\"Optimism Documentation\",\"url\":\"https://docs.optimism.io\",\"publisher\":{\"@id\":\"https://docs.optimism.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments#webpage\",\"url\":\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments\",\"name\":\"커스텀 배포\",\"description\":\"OP Deployer로 커스텀 배포를 관리하는 방법을 알아봅니다.\",\"dateModified\":\"2026-11-03T00:40:57.790Z\",\"isPartOf\":{\"@id\":\"https://docs.optimism.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"도구\",\"item\":\"https://docs.optimism.io/ko/chain-operators/tools/chain-monitoring\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OP Deployer\",\"item\":\"https://docs.optimism.io/ko/chain-operators/tools/op-deployer/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"사용법\",\"item\":\"https://docs.optimism.io/ko/chain-operators/tools/op-deployer/usage/bootstrap\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"커스텀 배포\",\"item\":\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments#article\",\"headline\":\"커스텀 배포\",\"name\":\"커스텀 배포\",\"description\":\"OP Deployer로 커스텀 배포를 관리하는 방법을 알아봅니다.\",\"url\":\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments\",\"mainEntityOfPage\":{\"@id\":\"https://docs.optimism.io//ko/chain-operators/tools/op-deployer/usage/custom-deployments#webpage\"},\"dateModified\":\"2026-11-03T00:40:57.790Z\",\"publisher\":{\"@id\":\"https://docs.optimism.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.optimism.io#website\"}}]}\u003c/script>","siteName":"Optimism Documentation","nav":{"global":{"anchors":[{"anchor":"Status","icon":"signal-bars","href":"https://status.optimism.io"},{"anchor":"Faucet","icon":"gas-pump","href":"https://console.optimism.io/faucet"},{"anchor":"Bridge","icon":"bridge-water","href":"https://app.optimism.io/bridge/deposit"}]},"languages":[{"language":"en","pages":[{"title":"en","href":"/chain-operators/tools/op-deployer/usage/custom-deployments"}]},{"language":"ko","tabs":[{"tab":"시작하기","pages":[{"title":"시작하기","href":"/ko"}]},{"tab":"체인 운영자","groups":[{"group":"체인 출시","pages":[{"title":"체인 운영자","sidebarTitle":"개요","href":"/ko/chain-operators"}]},{"group":"가이드","pages":[{"group":"구성","pages":[{"title":"체인 운영자 구성","href":"/ko/chain-operators/guides/configuration/getting-started"},{"title":"batcher 구성하기","href":"/ko/chain-operators/guides/configuration/batcher"},{"title":"Proposer 구성","href":"/ko/chain-operators/guides/configuration/proposer"},{"title":"체인의 challenger 구성 방법","href":"/ko/chain-operators/guides/configuration/op-challenger-config-guide"}]},{"group":"기능","pages":[{"title":"Custom Gas Token 체인 배포하기","href":"/ko/chain-operators/guides/features/custom-gas-token-guide"},{"title":"Kona 증명으로 전환","href":"/ko/chain-operators/guides/features/switching-to-kona-proofs"},{"title":"최소 Base Fee 설정하기","href":"/ko/chain-operators/guides/features/setting-min-base-fee"},{"title":"Operator Fee 설정","href":"/ko/chain-operators/guides/features/setting-operator-fee"},{"title":"DA Footprint Gas Scalar 설정하기","href":"/ko/chain-operators/guides/features/setting-da-footprint"},{"title":"Subblocks 활성화","href":"/ko/chain-operators/guides/features/subblocks-guide"},{"title":"Sequencer Defined Metering 활성화하기","href":"/ko/chain-operators/guides/features/sequencer-defined-metering"},{"title":"Alt-DA 모드 체인 실행 방법","href":"/ko/chain-operators/guides/features/alt-da-mode-guide"},{"title":"배치 데이터를 blob으로 게시하기","href":"/ko/chain-operators/guides/features/blobs"},{"title":"span batch 활성화하기","href":"/ko/chain-operators/guides/features/enable-span-batches"},{"title":"체인 운영자를 위한 snap sync 사용","href":"/ko/chain-operators/guides/features/snap-sync"}]},{"group":"관리","pages":[{"title":"체인 운영자 모범 사례","href":"/ko/chain-operators/guides/management/best-practices"},{"title":"네트워크 설계 예시","href":"/ko/chain-operators/guides/management/network-architecture"},{"title":"Gas target/limit 변경","href":"/ko/chain-operators/guides/management/gas-target-limit"},{"title":"키 관리","href":"/ko/chain-operators/guides/management/key-management"},{"title":"Rollup 운영","href":"/ko/chain-operators/guides/management/operations"},{"title":"트랜잭션 수수료 101","href":"/ko/chain-operators/guides/management/transaction-fees-101"},{"title":"Fee vault 운영","href":"/ko/chain-operators/guides/management/fee-vaults"},{"title":"체인 운영 문제 해결","href":"/ko/chain-operators/guides/management/troubleshooting"}]},{"title":"Superchain Registry 가입","href":"/ko/chain-operators/guides/join-superchain-registry"}]},{"group":"튜토리얼","pages":[{"group":"L2 Rollup 생성","pages":[{"title":"나만의 L2 rollup testnet 만들기","href":"/ko/chain-operators/tutorials/create-l2-rollup/index"},{"title":"op-deployer로 L1 컨트랙트 배포","href":"/ko/chain-operators/tutorials/create-l2-rollup/op-deployer-setup"},{"title":"sequencer 실행하기","href":"/ko/chain-operators/tutorials/create-l2-rollup/op-reth-setup"},{"title":"batcher 실행","href":"/ko/chain-operators/tutorials/create-l2-rollup/op-batcher-setup"},{"title":"proposer 실행하기","href":"/ko/chain-operators/tutorials/create-l2-rollup/op-proposer-setup"},{"title":"challenger 실행","href":"/ko/chain-operators/tutorials/create-l2-rollup/op-challenger-setup"},{"title":"L2 Rollup 코드 예제","href":"/ko/chain-operators/tutorials/create-l2-rollup/code-setup"}]},{"group":"L1 컨트랙트 업그레이드","pages":[{"title":"op-deployer를 사용하여 L1 컨트랙트 업그레이드하기","href":"/ko/chain-operators/tutorials/l1-contract-upgrades/op-deployer-upgrade"},{"title":"superchain-ops를 사용하여 업그레이드하기","href":"/ko/chain-operators/tutorials/l1-contract-upgrades/superchain-ops-guide"},{"title":"스마트 컨트랙트를 v1.3.0에서 v1.8.0으로 업그레이드하기","href":"/ko/chain-operators/tutorials/l1-contract-upgrades/upgrade-op-contracts-1-3-1-8"}]},{"group":"체인 사용자 지정","pages":[{"title":"프리컴파일 추가하기","href":"/ko/chain-operators/tutorials/adding-precompiles"},{"title":"사전 배포된 컨트랙트 수정하기","href":"/ko/chain-operators/tutorials/modifying-predeploys"},{"title":"파생 함수에 속성 추가하기","href":"/ko/chain-operators/tutorials/adding-derivation-attributes"},{"title":"Alt-DA로 새 DA 계층 통합하기","href":"/ko/chain-operators/tutorials/integrating-da-layer"}]},{"group":"증명 및 분쟁","pages":[{"title":"absolute prestate 및 preimage 파일 생성","href":"/ko/chain-operators/tutorials/absolute-prestate"},{"title":"사용자 지정 kona-client 절대 사전 상태 생성하기","href":"/ko/chain-operators/tutorials/kona-custom-prestate"},{"title":"OPCM으로 새 분쟁 게임 배포하기","href":"/ko/chain-operators/tutorials/dispute-games"},{"title":"OP Stack에서 permissionless 결함 증명으로 마이그레이션하기","href":"/ko/chain-operators/tutorials/migrating-permissionless"},{"title":"두 체인을 공유 분쟁 게임으로 병합하기","href":"/ko/chain-operators/tutorials/merge-shared-dispute-game"}]},{"group":"운영","pages":[{"title":"op-geth 되감기 방법","href":"/ko/chain-operators/tutorials/rewind-op-geth"},{"title":"체인을 Output Root에서 Super Root로 업그레이드하기","href":"/ko/chain-operators/tutorials/upgrade-chain-to-super-roots"}]}]},{"group":"도구","pages":[{"title":"체인 모니터링 옵션","href":"/ko/chain-operators/tools/chain-monitoring"},{"title":"Blockscout 블록 탐색기","href":"/ko/chain-operators/tools/explorer"},{"group":"OP Conductor","pages":[{"title":"OP Conductor","href":"/ko/chain-operators/tools/op-conductor"},{"title":"설정","href":"/ko/chain-operators/tools/op-conductor/setup"},{"title":"구성 및 RPC","href":"/ko/chain-operators/tools/op-conductor/reference"}]},{"group":"OP Deployer","pages":[{"title":"OP Deployer","href":"/ko/chain-operators/tools/op-deployer/overview"},{"title":"op-deployer 설치","href":"/ko/chain-operators/tools/op-deployer/installation"},{"group":"사용법","pages":[{"title":"Bootstrap 명령","href":"/ko/chain-operators/tools/op-deployer/usage/bootstrap"},{"title":"Init 명령","href":"/ko/chain-operators/tools/op-deployer/usage/init"},{"title":"Apply 명령","href":"/ko/chain-operators/tools/op-deployer/usage/apply"},{"title":"Verify 명령","description":"블록 탐색기에서 배포된 컨트랙트 소스 코드를 검증하는 방법을 알아봅니다.","href":"/ko/chain-operators/tools/op-deployer/usage/verify"},{"title":"커스텀 배포","href":"/ko/chain-operators/tools/op-deployer/usage/custom-deployments"},{"title":"릴리스 워크플로","description":"이전 OP Deployer 버전에 수정 사항을 백포트하고 새 컨트랙트 버전 지원을 추가하는 방법을 알아봅니다.","href":"/ko/chain-operators/tools/op-deployer/usage/release-workflows"}]},{"title":"알려진 제한 사항","href":"/ko/chain-operators/tools/op-deployer/known-limitations"},{"group":"참조","pages":[{"group":"아키텍처","pages":[{"title":"아키텍처","href":"/ko/chain-operators/tools/op-deployer/reference/architecture/overview"},{"title":"배포 파이프라인","href":"/ko/chain-operators/tools/op-deployer/reference/architecture/pipeline"},{"title":"스크립팅 엔진","href":"/ko/chain-operators/tools/op-deployer/reference/architecture/engine"}]},{"title":"Artifacts Locator","href":"/ko/chain-operators/tools/op-deployer/reference/artifacts-locators"},{"title":"op-deployer 버전 관리 및 릴리스","href":"/ko/chain-operators/tools/op-deployer/reference/releases"}]}]},{"title":"OP Interop Filter","href":"/ko/chain-operators/tools/op-interop-filter"},{"title":"OP Txproxy","href":"/ko/chain-operators/tools/op-txproxy"},{"title":"proxyd 실행","href":"/ko/chain-operators/tools/proxyd"}]},{"group":"참조","pages":[{"title":"Batcher 구성 레퍼런스","href":"/ko/chain-operators/reference/batcher-configuration"},{"title":"Challenger 구성 레퍼런스","href":"/ko/chain-operators/reference/challenger-configuration"},{"title":"OP Contracts Manager","href":"/ko/chain-operators/reference/opcm"},{"title":"롤업 배포 구성","href":"/ko/chain-operators/reference/rollup-deployment-configuration"},{"title":"수수료 파라미터","href":"/ko/chain-operators/reference/fee-parameters"},{"title":"DA footprint 블록 제한의 작동 방식","href":"/ko/chain-operators/reference/da-footprint"}]},{"group":"아카이브","pages":[{"title":"op-program absolute prestate 생성(보관됨)","href":"/ko/chain-operators/tutorials/archive/op-program-prestate"}]}]},{"tab":"노드 운영자","pages":[{"title":"노드 운영자","href":"/ko/node-operators/overview"}]},{"tab":"앱 개발자","pages":[{"title":"앱 개발자","href":"/ko/app-developers"}]},{"tab":"프로토콜","pages":[{"title":"프로토콜","href":"/ko/op-stack/introduction/op-stack"}]},{"tab":"OP Mainnet","pages":[{"title":"OP Mainnet","href":"/ko/op-mainnet"}]},{"tab":"거버넌스","pages":[{"title":"거버넌스","href":"/ko/governance/protocol-upgrades"}]},{"tab":"공지","pages":[{"title":"공지","href":"/ko/notices"}]}]}]},"basePath":"","title":"Optimism Documentation","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}