Jovian 하드포크에서 도입된 데이터 가용성(DA) footprint 블록 제한, DA footprint 계산 방식, 그리고 기본 gas scalar가 400인 이유를 이해합니다.
데이터 가용성(DA) Footprint 블록 제한은 **Jovian 하드포크**에서 도입되었으며, 트랜잭션 데이터의 압축 크기(또는 “데이터 가용성 footprint”)에 대한 스케일링된 추정치를 기반으로 블록에 들어갈 수 있는 트랜잭션 데이터의 총량을 제한합니다.
이 페이지는 이 제한이 해결하는 문제, DA footprint의 계산 방식, 그리고 daFootprintGasScalar 파라미터가 제한을 어떻게 형성하는지 설명합니다.
체인에서 scalar를 변경하려면 DA footprint 설정 가이드를 따르세요.
OP Stack 체인이 L1의 사용 가능한 blob 공간에 들어갈 수 있는 것보다 많은 calldata 중심 트랜잭션을 받으면, batcher가 체인의 처리량을 스로틀링할 수 있습니다.그러나 batcher 스로틀링이 지속되면 base fee가 최소 base fee까지 떨어질 수 있으며,
이는 체인 운영자에게 불필요한 손실을 초래하고 priority fee 경매와 같은 부정적인 사용자 경험을 유발합니다.
반대로 스로틀링이 없으면 batcher는 blob 공간에 배치할 체인 데이터에 압도될 위험이 있습니다.
블록 내 트랜잭션이 차지하는 (추정 압축) calldata의 양을 총 DA footprint로 제한하면 batcher 스로틀링의 필요성과 그에 따른 문제를 줄일 수 있습니다.
OP Stack 체인이 처리하는 모든 비입금(non-deposit) 트랜잭션에 대해 트랜잭션의 gas 사용량과 함께 DA footprint 값이 기록됩니다.
DA footprint는 L1 체인의 SystemConfig 컨트랙트에 있는 daFootprintGasScalar 변수로 구성할 수 있습니다.
DA footprint는 모든 트랜잭션에 대해 자동으로 계산되며, 먼저 해당 트랜잭션의 daUsageEstimate를 계산합니다.
여기서 minTransactionSize, intercept, fastlzCoef, tx.fastlzSize는 Fjord 스펙에 명시된 대로입니다.
그런 다음 daUsageEstimate에 daFootprintGasScalar를 곱하여 개별 트랜잭션의 daFootprint를 구합니다.
_DA footprint gas scalar_는 _바이트 단위의 추정 DA 사용량_을 gas 차원으로 스케일링하며, 이렇게 스케일링된 DA 사용량 추정치를 _DA footprint_라고 합니다.
이를 통해 블록의 gasLimit을 사용하여 추정 DA 사용량을 제한할 수 있습니다. 블록당 추정 DA 사용량의 실질적인 한도는 gasLimit / daFootprintGasScalar 바이트입니다.
따라서 이 scalar를 높이면 DA 사용에 더 많은 gas가 필요해지므로 한도가 낮아지며, 그 반대도 마찬가지입니다.이는 0이 아닌 바이트당 40 gas의 calldata (floor) 비용이 블록 내 calldata의 총량을 제한하는 방식과 밀접하게 관련되어 있습니다.
DA footprint gas scalar가 400이면 DA footprint 블록 제한이 없을 때의 한도에 비해 압축 불가능한 calldata를 사실상 10배 더 제한합니다.
따라서 이 기능은 기존 calldata 제한의 확장으로 볼 수 있습니다.
다만 calldata (floor) gas 비용을 재조정하는 대신, 이 제한은 EVM 실행 gas와 병렬로 계산되며, 단순히 0인 바이트와 0이 아닌 바이트를 세는 대신 더 적절한 FastLZ 기반 DA 사용량 추정치를 기반으로 합니다.
기본 scalar 400은 최악의 DA 스팸 시나리오에서 체인을 보호하면서도 정상 운영 중에는 영향이 거의 또는 전혀 없도록 선택되었습니다.
현재 OP Stack 체인에 미치는 영향을 추정하고 적절한 기본값을 선택하기 위해 신중한 분석이 수행되었습니다.
처리량이 높은 체인만이 결과적인 DA footprint 제한으로 인해 가끔 작은 영향(base fee가 약간 더 빠르게 상승)을 받을 수 있습니다. DA footprint 제한은 대부분 눈에 띄지 않습니다.
처리량이 중간 이하인 체인에서는 정상적인 사용 조건에서 이 기능이 영향을 미치지 않을 것으로 예상됩니다.
이는 최악의 압축 불가능한 DA 스팸에 대비한 보험에 가깝습니다.
SystemConfig의 daFootprintGasScalar 값 0은 기본값 400으로 처리됩니다. 제한을 사실상 비활성화하려면 scalar를 1과 같은 매우 낮은 값으로 설정하세요.
{"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/reference/da-footprint","slug":"/ko/chain-operators/reference/da-footprint","pageMetadata":{"title":"DA footprint 블록 제한의 작동 방식","description":"Jovian 하드포크에서 도입된 데이터 가용성(DA) footprint 블록 제한, DA footprint 계산 방식, 그리고 기본 gas scalar가 400인 이유를 이해합니다.","diataxis":"explanation","href":"/ko/chain-operators/reference/da-footprint"},"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: \"Jovian 하드포크에서 도입된 데이터 가용성(DA) footprint 블록 제한, DA footprint 계산 방식, 그리고 기본 gas scalar가 400인 이유를 이해합니다.\"\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`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`데이터 가용성(DA) Footprint 블록 제한`}),`은 **`,_jsx(_components.a,{href:`https://docs.optimism.io/notices/upgrade-17`,children:`Jovian 하드포크`}),`**에서 도입되었으며, 트랜잭션 데이터의 압축 크기(또는 “데이터 가용성 footprint”)에 대한 스케일링된 추정치를 기반으로 블록에 들어갈 수 있는 트랜잭션 데이터의 총량을 제한합니다.\n이 페이지는 이 제한이 해결하는 문제, DA footprint의 계산 방식, 그리고 `,_jsx(_components.code,{children:`daFootprintGasScalar`}),` 파라미터가 제한을 어떻게 형성하는지 설명합니다.\n체인에서 scalar를 변경하려면 `,_jsx(_components.a,{href:`/ko/chain-operators/guides/features/setting-da-footprint`,children:`DA footprint 설정 가이드`}),`를 따르세요.`]}),`\n`,_jsx(Heading,{level:`2`,id:`da-footprint-제한이-존재하는-이유`,children:`DA footprint 제한이 존재하는 이유`}),`\n`,_jsxs(_components.p,{children:[`OP Stack 체인이 L1의 사용 가능한 blob 공간에 들어갈 수 있는 것보다 많은 calldata 중심 트랜잭션을 받으면, `,_jsx(_components.a,{href:`https://docs.optimism.io/chain-operators/guides/configuration/batcher#batcher-sequencer-throttling`,children:`batcher가 체인의 처리량을 스로틀링할 수 있습니다`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`그러나 batcher 스로틀링이 지속되면 base fee가 `,_jsx(_components.a,{href:`https://docs.optimism.io/chain-operators/guides/features/setting-min-base-fee`,children:`최소 base fee`}),`까지 떨어질 수 있으며,\n이는 체인 운영자에게 불필요한 손실을 초래하고 priority fee 경매와 같은 부정적인 사용자 경험을 유발합니다.\n반대로 스로틀링이 없으면 batcher는 blob 공간에 배치할 체인 데이터에 압도될 위험이 있습니다.\n블록 내 트랜잭션이 차지하는 (추정 압축) calldata의 양을 총 DA footprint로 제한하면 batcher 스로틀링의 필요성과 그에 따른 문제를 줄일 수 있습니다.`]}),`\n`,_jsx(Heading,{level:`2`,id:`da-footprint-계산-방식`,children:`DA footprint 계산 방식`}),`\n`,_jsxs(_components.p,{children:[`OP Stack 체인이 처리하는 모든 `,_jsx(_components.a,{href:`https://docs.optimism.io/reference/glossary#deposited-transaction`,children:`비입금(non-deposit) 트랜잭션`}),`에 대해 트랜잭션의 gas 사용량과 함께 DA footprint 값이 기록됩니다.\nDA footprint는 L1 체인의 `,_jsx(_components.code,{children:`SystemConfig`}),` 컨트랙트에 있는 `,_jsx(_components.code,{children:`daFootprintGasScalar`}),` 변수로 구성할 수 있습니다.\nDA footprint는 모든 트랜잭션에 대해 자동으로 계산되며, 먼저 해당 트랜잭션의 `,_jsx(_components.code,{children:`daUsageEstimate`}),`를 계산합니다.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`python`,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:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`daUsageEstimate `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` max`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` minTransactionSize,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (intercept `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`+`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` fastlzCoef `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` tx.fastlzSize) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`//`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1e6`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`여기서 `,_jsx(_components.code,{children:`minTransactionSize`}),`, `,_jsx(_components.code,{children:`intercept`}),`, `,_jsx(_components.code,{children:`fastlzCoef`}),`, `,_jsx(_components.code,{children:`tx.fastlzSize`}),`는 `,_jsx(_components.a,{href:`https://specs.optimism.io/protocol/fjord/exec-engine.html#fees`,children:`Fjord 스펙`}),`에 명시된 대로입니다.\n그런 다음 `,_jsx(_components.code,{children:`daUsageEstimate`}),`에 `,_jsx(_components.code,{children:`daFootprintGasScalar`}),`를 곱하여 개별 트랜잭션의 `,_jsx(_components.code,{children:`daFootprint`}),`를 구합니다.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,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:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` daFootprint `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`+=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` daUsageEstimate `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` daFootprintGasScalar`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`그런 다음 블록 내 모든 트랜잭션의 `,_jsx(_components.code,{children:`daFootprint`}),`를 합산하여 해당 블록의 총 `,_jsx(_components.code,{children:`daFootprint`}),`를 계산합니다.\n블록의 총 `,_jsx(_components.code,{children:`daFootprint`}),`가 계산되면 다음이 적용됩니다.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`블록의 총 `,_jsx(_components.code,{children:`daFootprint`}),`는 해당 블록의 `,_jsx(_components.code,{children:`gasLimit`}),` 미만으로 유지되어야 합니다.`]}),`\n`,_jsxs(_components.li,{children:[`각 블록 헤더의 `,_jsx(_components.code,{children:`blobGasUsed`}),` 속성은 해당 블록의 `,_jsx(_components.code,{children:`daFootprint`}),`로 설정됩니다.`]}),`\n`,_jsxs(_components.li,{children:[`base fee 업데이트 계산은 `,_jsx(_components.code,{children:`gasUsed`}),` 변수 대신 `,_jsx(_components.code,{children:`gasMetered := max(gasUsed, blobGasUsed)`}),`를 사용합니다.`]}),`\n`]})}),`\n`,_jsxs(_components.p,{children:[`Jovian부터 트랜잭션 영수증에도 영수증의 `,_jsx(_components.code,{children:`blobGasUsed`}),` 필드에 트랜잭션의 DA Footprint가 기록되며, 같은 이름의 새 필드에 블록의 `,_jsx(_components.code,{children:`daFootprintGasScalar`}),`가 기록됩니다.`]}),`\n`,_jsx(Heading,{level:`2`,id:`da-footprint-gas-scalar가-제어하는-것`,children:`DA footprint gas scalar가 제어하는 것`}),`\n`,_jsxs(_components.p,{children:[`_DA footprint gas scalar_는 _바이트 단위의 추정 DA 사용량_을 gas 차원으로 스케일링하며, 이렇게 스케일링된 DA 사용량 추정치를 _DA footprint_라고 합니다.\n이를 통해 블록의 `,_jsx(_components.code,{children:`gasLimit`}),`을 사용하여 추정 DA 사용량을 제한할 수 있습니다. 블록당 추정 DA 사용량의 실질적인 한도는 `,_jsx(_components.code,{children:`gasLimit / daFootprintGasScalar`}),` 바이트입니다.\n따라서 이 scalar를 `,_jsx(_components.em,{children:`높이면`}),` DA 사용에 더 많은 gas가 필요해지므로 한도가 `,_jsx(_components.em,{children:`낮아지며`}),`, 그 반대도 마찬가지입니다.`]}),`\n`,_jsxs(_components.p,{children:[`이는 0이 아닌 바이트당 `,_jsx(_components.code,{children:`40`}),` gas의 calldata (floor) 비용이 블록 내 calldata의 총량을 제한하는 방식과 밀접하게 관련되어 있습니다.\nDA footprint gas scalar가 `,_jsx(_components.code,{children:`400`}),`이면 DA footprint 블록 제한이 없을 때의 한도에 비해 `,_jsx(_components.em,{children:`압축 불가능한`}),` calldata를 사실상 `,_jsx(_components.code,{children:`10`}),`배 더 제한합니다.\n따라서 이 기능은 기존 calldata 제한의 확장으로 볼 수 있습니다.\n다만 calldata (floor) gas 비용을 재조정하는 대신, 이 제한은 EVM 실행 gas와 병렬로 계산되며, 단순히 0인 바이트와 0이 아닌 바이트를 세는 대신 더 적절한 FastLZ 기반 DA 사용량 추정치를 기반으로 합니다.`]}),`\n`,_jsx(Heading,{level:`2`,id:`기본값이-400인-이유`,children:`기본값이 400인 이유`}),`\n`,_jsxs(_components.p,{children:[`기본 scalar `,_jsx(_components.code,{children:`400`}),`은 최악의 DA 스팸 시나리오에서 체인을 보호하면서도 정상 운영 중에는 영향이 거의 또는 전혀 없도록 선택되었습니다.\n현재 OP Stack 체인에 미치는 영향을 추정하고 적절한 기본값을 선택하기 위해 신중한 `,_jsx(_components.a,{href:`https://github.com/ethereum-optimism/design-docs/blob/main/protocol/da-footprint-block-limit.md`,children:`분석`}),`이 수행되었습니다.\n처리량이 높은 체인만이 결과적인 DA footprint 제한으로 인해 가끔 작은 영향(base fee가 약간 더 빠르게 상승)을 받을 수 있습니다. DA footprint 제한은 대부분 눈에 띄지 않습니다.\n처리량이 중간 이하인 체인에서는 정상적인 사용 조건에서 이 기능이 영향을 미치지 않을 것으로 예상됩니다.\n이는 최악의 `,_jsx(_components.em,{children:`압축 불가능한`}),` DA 스팸에 대비한 보험에 가깝습니다.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`SystemConfig`}),`의 `,_jsx(_components.code,{children:`daFootprintGasScalar`}),` 값 `,_jsx(_components.code,{children:`0`}),`은 기본값 `,_jsx(_components.code,{children:`400`}),`으로 처리됩니다. 제한을 사실상 비활성화하려면 scalar를 `,_jsx(_components.code,{children:`1`}),`과 같은 매우 낮은 값으로 설정하세요.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`다음-단계`,children:`다음 단계`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`체인에서 scalar를 설정하거나 변경하려면 `,_jsx(_components.a,{href:`/ko/chain-operators/guides/features/setting-da-footprint`,children:`DA Footprint Gas Scalar 설정`}),`을 따르세요.`]}),`\n`,_jsxs(_components.li,{children:[`수수료 관련 `,_jsx(_components.code,{children:`SystemConfig`}),` 파라미터 전체는 `,_jsx(_components.a,{href:`/ko/chain-operators/reference/fee-parameters`,children:`수수료 파라미터 레퍼런스`}),`를 참조하세요.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`참고-자료`,children:`참고 자료`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://specs.optimism.io/protocol/jovian/system-config.html#da-footprint-configuration`,children:`DA Footprint 구성 스펙`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://specs.optimism.io/protocol/jovian/overview.html`,children:`Jovian 업그레이드 스펙`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://specs.optimism.io/protocol/system-config.html`,children:`SystemConfig 컨트랙트 스펙`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/ethereum-optimism/design-docs/blob/main/protocol/da-footprint-block-limit.md`,children:`설계 문서`})}),`\n`]})]})}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":"DA footprint 블록 제한의 작동 방식","description":"Jovian 하드포크에서 도입된 데이터 가용성(DA) footprint 블록 제한, DA footprint 계산 방식, 그리고 기본 gas scalar가 400인 이유를 이해합니다.","diataxis":"explanation","href":"/ko/chain-operators/reference/da-footprint"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"DA footprint 제한이 존재하는 이유","slug":"da-footprint-제한이-존재하는-이유","depth":2,"children":[]},{"title":"DA footprint 계산 방식","slug":"da-footprint-계산-방식","depth":2,"children":[]},{"title":"DA footprint gas scalar가 제어하는 것","slug":"da-footprint-gas-scalar가-제어하는-것","depth":2,"children":[]},{"title":"기본값이 400인 이유","slug":"기본값이-400인-이유","depth":2,"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/reference/da-footprint","matchLevel":1},"ko":{"href":"/ko/chain-operators/reference/da-footprint","matchLevel":0}}},"lastModified":"2026-11-03T00:40:58.247Z","originalFileLocation":"ko/chain-operators/reference/da-footprint.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=\"Jovian 하드포크에서 도입된 데이터 가용성(DA) footprint 블록 제한, DA footprint 계산 방식, 그리고 기본 gas scalar가 400인 이유를 이해합니다.\">\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=\"Jovian 하드포크에서 도입된 데이터 가용성(DA) footprint 블록 제한, DA footprint 계산 방식, 그리고 기본 gas scalar가 400인 이유를 이해합니다.\">\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/reference/da-footprint\">\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=DA+footprint+%EB%B8%94%EB%A1%9D+%EC%A0%9C%ED%95%9C%EC%9D%98+%EC%9E%91%EB%8F%99+%EB%B0%A9%EC%8B%9D\u0026amp;description=Jovian+%ED%95%98%EB%93%9C%ED%8F%AC%ED%81%AC%EC%97%90%EC%84%9C+%EB%8F%84%EC%9E%85%EB%90%9C+%EB%8D%B0%EC%9D%B4%ED%84%B0+%EA%B0%80%EC%9A%A9%EC%84%B1%28DA%29+footprint+%EB%B8%94%EB%A1%9D+%EC%A0%9C%ED%95%9C%2C+DA+footprint+%EA%B3%84%EC%82%B0+%EB%B0%A9%EC%8B%9D%2C+%EA%B7%B8%EB%A6%AC%EA%B3%A0+%EA%B8%B0%EB%B3%B8+gas+scalar%EA%B0%80+400%EC%9D%B8+%EC%9D%B4%EC%9C%A0%EB%A5%BC+%EC%9D%B4%ED%95%B4%ED%95%A9%EB%8B%88%EB%8B%A4.\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=053451d5b5a615c700e8a9f7df69ce6f113d376b45b0e5cc6adf58471abacfd8\">\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=\"Jovian 하드포크에서 도입된 데이터 가용성(DA) footprint 블록 제한, DA footprint 계산 방식, 그리고 기본 gas scalar가 400인 이유를 이해합니다.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://optimism-373f39ad.mintlify.app/_mintlify/api/og/v2?title=DA+footprint+%EB%B8%94%EB%A1%9D+%EC%A0%9C%ED%95%9C%EC%9D%98+%EC%9E%91%EB%8F%99+%EB%B0%A9%EC%8B%9D\u0026amp;description=Jovian+%ED%95%98%EB%93%9C%ED%8F%AC%ED%81%AC%EC%97%90%EC%84%9C+%EB%8F%84%EC%9E%85%EB%90%9C+%EB%8D%B0%EC%9D%B4%ED%84%B0+%EA%B0%80%EC%9A%A9%EC%84%B1%28DA%29+footprint+%EB%B8%94%EB%A1%9D+%EC%A0%9C%ED%95%9C%2C+DA+footprint+%EA%B3%84%EC%82%B0+%EB%B0%A9%EC%8B%9D%2C+%EA%B7%B8%EB%A6%AC%EA%B3%A0+%EA%B8%B0%EB%B3%B8+gas+scalar%EA%B0%80+400%EC%9D%B8+%EC%9D%B4%EC%9C%A0%EB%A5%BC+%EC%9D%B4%ED%95%B4%ED%95%A9%EB%8B%88%EB%8B%A4.\u0026amp;theme=f64aba71940449e3ce8f3efe\u0026amp;signature=053451d5b5a615c700e8a9f7df69ce6f113d376b45b0e5cc6adf58471abacfd8\">\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/reference/da-footprint\">\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/reference/da-footprint.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.optimism.io//ko/chain-operators/reference/da-footprint\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.optimism.io//chain-operators/reference/da-footprint\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.optimism.io//chain-operators/reference/da-footprint\">\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/reference/da-footprint#webpage\",\"url\":\"https://docs.optimism.io//ko/chain-operators/reference/da-footprint\",\"name\":\"DA footprint 블록 제한의 작동 방식\",\"description\":\"Jovian 하드포크에서 도입된 데이터 가용성(DA) footprint 블록 제한, DA footprint 계산 방식, 그리고 기본 gas scalar가 400인 이유를 이해합니다.\",\"dateModified\":\"2026-11-03T00:40:58.247Z\",\"isPartOf\":{\"@id\":\"https://docs.optimism.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.optimism.io//ko/chain-operators/reference/da-footprint#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.optimism.io//ko/chain-operators/reference/da-footprint#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"참조\",\"item\":\"https://docs.optimism.io/ko/chain-operators/reference/batcher-configuration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DA footprint 블록 제한의 작동 방식\",\"item\":\"https://docs.optimism.io//ko/chain-operators/reference/da-footprint\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.optimism.io//ko/chain-operators/reference/da-footprint#article\",\"headline\":\"DA footprint 블록 제한의 작동 방식\",\"name\":\"DA footprint 블록 제한의 작동 방식\",\"description\":\"Jovian 하드포크에서 도입된 데이터 가용성(DA) footprint 블록 제한, DA footprint 계산 방식, 그리고 기본 gas scalar가 400인 이유를 이해합니다.\",\"url\":\"https://docs.optimism.io//ko/chain-operators/reference/da-footprint\",\"mainEntityOfPage\":{\"@id\":\"https://docs.optimism.io//ko/chain-operators/reference/da-footprint#webpage\"},\"dateModified\":\"2026-11-03T00:40:58.247Z\",\"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/reference/da-footprint"}]},{"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 명령","href":"/ko/chain-operators/tools/op-deployer/usage/verify"},{"title":"커스텀 배포","href":"/ko/chain-operators/tools/op-deployer/usage/custom-deployments"},{"title":"릴리스 워크플로","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":"수수료 파라미터","description":"OP Stack 체인의 수수료 관련 SystemConfig 파라미터에 대한 레퍼런스로, 각 파라미터가 제어하는 내용, setter와 getter, OP Mainnet 값을 설명합니다.","href":"/ko/chain-operators/reference/fee-parameters"},{"title":"DA footprint 블록 제한의 작동 방식","href":"/ko/chain-operators/reference/da-footprint"}]},{"group":"아카이브","pages":[{"title":"op-program absolute prestate 생성(보관됨)","description":"보관됨: 진행 중인 CANNON 게임 유형 1 분쟁을 해결하는 체인을 위한 레거시 op-program 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":[]}