diff --git a/.all-contributorsrc b/.all-contributorsrc index a5c01829b06..ce3c46929f0 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -91,7 +91,6 @@ "login": "ajsantander", "name": "Alejandro Santander", "avatar_url": "https://avatars2.githubusercontent.com/u/550409?v=4", - "profile": "http://ajsantander.github.io/", "contributions": [ "content" ] @@ -423,7 +422,6 @@ "login": "carumusan", "name": "carumusan", "avatar_url": "https://avatars1.githubusercontent.com/u/879525?v=4", - "profile": "https://github.com/carumusan", "contributions": [ "content" ] @@ -1076,7 +1074,6 @@ "login": "its-VSP", "name": "SAI PRASHANTH VUPPALA", "avatar_url": "https://avatars0.githubusercontent.com/u/22447085?v=4", - "profile": "https://github.com/its-VSP", "contributions": [ "content", "translation" @@ -1160,7 +1157,6 @@ "login": "Sesamestrong", "name": "Sesamestrong", "avatar_url": "https://avatars3.githubusercontent.com/u/26335275?v=4", - "profile": "https://github.com/Sesamestrong", "contributions": [ "code" ] @@ -1178,7 +1174,6 @@ "login": "svanas", "name": "Stefan van As", "avatar_url": "https://avatars1.githubusercontent.com/u/787861?v=4", - "profile": "https://stackoverflow.com/story/svanas", "contributions": [ "content" ] @@ -1373,7 +1368,6 @@ "login": "mhatvan", "name": "Markus Hatvan", "avatar_url": "https://avatars2.githubusercontent.com/u/16797721?v=4", - "profile": "https://github.com/mhatvan", "contributions": [ "code" ] @@ -1886,7 +1880,6 @@ "login": "jcamilli", "name": "jcamilli", "avatar_url": "https://avatars3.githubusercontent.com/u/1952742?v=4", - "profile": "https://github.com/jcamilli", "contributions": [ "content" ] @@ -2031,7 +2024,6 @@ "login": "shreyashariharan3", "name": "shreyashariharan3", "avatar_url": "https://avatars3.githubusercontent.com/u/48186822?v=4", - "profile": "https://github.com/shreyashariharan3", "contributions": [ "content" ] @@ -2150,7 +2142,6 @@ "login": "mustafawm", "name": "mustafa", "avatar_url": "https://avatars0.githubusercontent.com/u/13101565?v=4", - "profile": "https://github.com/mustafawm", "contributions": [ "content" ] @@ -2190,7 +2181,6 @@ "login": "DrMad92", "name": "DrMad92", "avatar_url": "https://avatars2.githubusercontent.com/u/28419987?v=4", - "profile": "https://github.com/DrMad92", "contributions": [ "bug" ] @@ -2379,7 +2369,6 @@ "login": "Arnor1711", "name": "Alwin Stockinger", "avatar_url": "https://avatars2.githubusercontent.com/u/23365186?v=4", - "profile": "https://github.com/Arnor1711", "contributions": [ "bug", "content" @@ -2511,7 +2500,6 @@ "login": "Kristiyan96", "name": "Kristiyan", "avatar_url": "https://avatars3.githubusercontent.com/u/15987117?v=4", - "profile": "https://github.com/Kristiyan96", "contributions": [ "bug", "code" @@ -2968,7 +2956,6 @@ "login": "vemuez", "name": "Yussuf Elarif", "avatar_url": "https://avatars.githubusercontent.com/u/9627828?v=4", - "profile": "https://github.com/vemuez", "contributions": [ "bug" ] @@ -3088,7 +3075,6 @@ "login": "stuz5000", "name": "Stuart Reynolds", "avatar_url": "https://avatars.githubusercontent.com/u/7799980?v=4", - "profile": "https://github.com/stuz5000", "contributions": [ "ideas" ] @@ -3827,7 +3813,6 @@ "login": "davidplutus", "name": "davidplutus", "avatar_url": "https://avatars.githubusercontent.com/u/63456936?v=4", - "profile": "https://github.com/DavidPlutus", "contributions": [ "ideas" ] @@ -3909,7 +3894,6 @@ "login": "Uttam-Singhh", "name": "Uttam Singh", "avatar_url": "https://avatars.githubusercontent.com/u/63050765?v=4", - "profile": "https://uttam-singhh.github.io/Portfolio/", "contributions": [ "bug" ] @@ -4412,7 +4396,6 @@ "login": "smudgil", "name": "smudgil", "avatar_url": "https://avatars.githubusercontent.com/u/38195323?v=4", - "profile": "https://github.com/smudgil", "contributions": [ "content" ] @@ -4469,7 +4452,6 @@ "login": "matthewrkula", "name": "Matt Kula", "avatar_url": "https://avatars.githubusercontent.com/u/1483546?v=4", - "profile": "https://github.com/matthewrkula", "contributions": [ "bug" ] @@ -4920,7 +4902,6 @@ "login": "phatngluu", "name": "Phat Nguyen Luu", "avatar_url": "https://avatars.githubusercontent.com/u/44693107?v=4", - "profile": "https://github.com/phatngluu", "contributions": [ "doc" ] @@ -4929,7 +4910,6 @@ "login": "Andrew-Sofos", "name": "Andreas Sofos", "avatar_url": "https://avatars.githubusercontent.com/u/56540744?v=4", - "profile": "https://github.com/Andrew-Sofos", "contributions": [ "code" ] @@ -5159,7 +5139,6 @@ "login": "solarpunklabs", "name": "solarpunklabs", "avatar_url": "https://avatars.githubusercontent.com/u/84196983?v=4", - "profile": "https://github.com/solarpunklabs", "contributions": [ "ideas" ] @@ -5177,7 +5156,6 @@ "login": "shryasss", "name": "Shreyas Londhe", "avatar_url": "https://avatars.githubusercontent.com/u/62744899?v=4", - "profile": "https://github.com/shryasss", "contributions": [ "content" ] @@ -5370,7 +5348,6 @@ "login": "RedWolf4845", "name": "Samrat", "avatar_url": "https://avatars.githubusercontent.com/u/93679609?v=4", - "profile": "https://github.com/RedWolf4845", "contributions": [ "content" ] @@ -5577,7 +5554,6 @@ "login": "eulerbeat", "name": "Minimalist Optimalist", "avatar_url": "https://avatars.githubusercontent.com/u/52531715?v=4", - "profile": "https://github.com/eulerbeat", "contributions": [ "bug" ] @@ -5861,7 +5837,6 @@ "login": "decipherer2", "name": "decifer", "avatar_url": "https://avatars.githubusercontent.com/u/16278986?v=4", - "profile": "https://github.com/decipherer2", "contributions": [ "ideas" ] @@ -5908,7 +5883,6 @@ "login": "kum9748ar", "name": "Kumar Kalyan", "avatar_url": "https://avatars.githubusercontent.com/u/67071462?v=4", - "profile": "https://linktr.ee/kumarkalyan", "contributions": [ "bug", "doc", @@ -5920,7 +5894,6 @@ "login": "0xdie", "name": "0xdie", "avatar_url": "https://avatars.githubusercontent.com/u/94481845?v=4", - "profile": "https://github.com/0xdie", "contributions": [ "doc" ] @@ -6070,7 +6043,6 @@ "login": "neozapatista", "name": "neozapatista", "avatar_url": "https://avatars.githubusercontent.com/u/44417247?v=4", - "profile": "https://github.com/neozapatista", "contributions": [ "doc" ] @@ -6119,7 +6091,6 @@ "login": "Gobljn", "name": "Nicola Bonsi", "avatar_url": "https://avatars.githubusercontent.com/u/44135563?v=4", - "profile": "https://github.com/Gobljn", "contributions": [ "ideas" ] @@ -6194,7 +6165,6 @@ "login": "stefan-wuest", "name": "SW", "avatar_url": "https://avatars.githubusercontent.com/u/20667579?v=4", - "profile": "https://github.com/stefan-wuest", "contributions": [ "doc" ] @@ -6212,7 +6182,6 @@ "login": "Qazalin", "name": "Qazal Samani", "avatar_url": "https://avatars.githubusercontent.com/u/77887910?v=4", - "profile": "https://portfolio-qazalin.vercel.app/", "contributions": [ "doc" ] @@ -6490,7 +6459,6 @@ "login": "chuyeow", "name": "Cheah Chu Yeow", "avatar_url": "https://avatars.githubusercontent.com/u/213?v=4", - "profile": "http://blog.codefront.net/", "contributions": [ "content" ] @@ -6667,7 +6635,6 @@ "login": "bestpilotingalaxy", "name": "bestpilotingalaxy", "avatar_url": "https://avatars.githubusercontent.com/u/59182467?v=4", - "profile": "https://github.com/bestpilotingalaxy", "contributions": [ "doc" ] @@ -6686,7 +6653,6 @@ "login": "jamongeon1", "name": "jamongeon1", "avatar_url": "https://avatars.githubusercontent.com/u/94926423?v=4", - "profile": "https://github.com/jamongeon1", "contributions": [ "doc" ] @@ -6740,7 +6706,6 @@ "login": "Medzhidov-Omardibir", "name": "Medzhidov-Omardibir", "avatar_url": "https://avatars.githubusercontent.com/u/95706785?v=4", - "profile": "https://github.com/Medzhidov-Omardibir", "contributions": [ "doc" ] @@ -6749,7 +6714,6 @@ "login": "ApostolisGaros", "name": "ApoGrs", "avatar_url": "https://avatars.githubusercontent.com/u/45716978?v=4", - "profile": "https://github.com/ApostolisGaros", "contributions": [ "ideas" ] @@ -6911,7 +6875,6 @@ "login": "polarpunklabs", "name": "polarpunklabs", "avatar_url": "https://avatars.githubusercontent.com/u/84196983?v=4", - "profile": "https://github.com/polarpunklabs", "contributions": [ "doc" ] @@ -7283,7 +7246,6 @@ "login": "LieAlbertTriAdrian", "name": "Albert Lie Adrian", "avatar_url": "https://avatars.githubusercontent.com/u/12984659?v=4", - "profile": "https://github.com/LieAlbertTriAdrian", "contributions": [ "doc" ] @@ -7390,7 +7352,6 @@ "login": "JasonYan2015", "name": "Jason Yan", "avatar_url": "https://avatars.githubusercontent.com/u/17684609?v=4", - "profile": "https://github.com/JasonYan2015", "contributions": [ "doc", "translation" @@ -7505,7 +7466,6 @@ "login": "chadlohrli", "name": "chadlohrli", "avatar_url": "https://avatars.githubusercontent.com/u/9952172?v=4", - "profile": "https://github.com/chadlohrli", "contributions": [ "content" ] @@ -7551,7 +7511,6 @@ "login": "Choi-Jinhong", "name": "GNONG", "avatar_url": "https://avatars.githubusercontent.com/u/65050483?v=4", - "profile": "https://jinhongdev.tistory.com/", "contributions": [ "doc" ] @@ -7614,7 +7573,6 @@ "login": "LichuAcu", "name": "Lichu Acuña", "avatar_url": "https://avatars.githubusercontent.com/u/54295410?v=4", - "profile": "https://www.linkedin.com/in/lisandroea/?locale=en_US", "contributions": [ "doc" ] @@ -7635,7 +7593,8 @@ "avatar_url": "https://avatars.githubusercontent.com/u/65976143?v=4", "profile": "https://github.com/skaunov", "contributions": [ - "doc" + "doc", + "bug" ] }, { @@ -7849,7 +7808,6 @@ "login": "Seek4samurai", "name": "Gourav Singh Rawat", "avatar_url": "https://avatars.githubusercontent.com/u/69115613?v=4", - "profile": "https://seek4samurai.vercel.app/", "contributions": [ "doc", "ideas" @@ -7896,7 +7854,6 @@ "login": "TimGrey998", "name": "XOF", "avatar_url": "https://avatars.githubusercontent.com/u/57596934?v=4", - "profile": "https://github.com/TimGrey998", "contributions": [ "doc", "translation", @@ -7961,7 +7918,6 @@ "login": "tadeodao", "name": "tadeo", "avatar_url": "https://avatars.githubusercontent.com/u/94108039?v=4", - "profile": "https://github.com/tadeodao", "contributions": [ "doc" ] @@ -8120,7 +8076,6 @@ "login": "shelleyolivia", "name": "shelleyolivia", "avatar_url": "https://avatars.githubusercontent.com/u/108895606?v=4", - "profile": "https://github.com/shelleyolivia", "contributions": [ "doc", "ideas" @@ -8411,7 +8366,6 @@ "login": "linhuatan", "name": "linhuatan", "avatar_url": "https://avatars.githubusercontent.com/u/94831627?v=4", - "profile": "https://github.com/linhuatan", "contributions": [ "doc" ] @@ -8621,7 +8575,6 @@ "login": "ldlsalazar", "name": "Lorena De Leon Salazar", "avatar_url": "https://avatars.githubusercontent.com/u/112458077?v=4", - "profile": "https://github.com/ldlsalazar", "contributions": [ "translation" ] @@ -8827,7 +8780,6 @@ "login": "MHMasoon", "name": "MohammadHosein Masoon", "avatar_url": "https://avatars.githubusercontent.com/u/63204823?v=4", - "profile": "https://github.com/MHMasoon", "contributions": [ "doc" ] @@ -8890,7 +8842,6 @@ "login": "marcellamalune", "name": "Marcella", "avatar_url": "https://avatars.githubusercontent.com/u/63505124?v=4", - "profile": "https://github.com/marcellamalune", "contributions": [ "code" ] @@ -8917,7 +8868,6 @@ "login": "YasshhYadav", "name": "Yash Yadav", "avatar_url": "https://avatars.githubusercontent.com/u/91071840?v=4", - "profile": "https://github.com/YasshhYadav", "contributions": [ "doc" ] @@ -8935,7 +8885,6 @@ "login": "Master7130", "name": "Master7130", "avatar_url": "https://avatars.githubusercontent.com/u/85327930?v=4", - "profile": "https://github.com/Master7130", "contributions": [ "code" ] @@ -8971,7 +8920,6 @@ "login": "d1onys1us", "name": "d1onys1us", "avatar_url": "https://avatars.githubusercontent.com/u/13951458?v=4", - "profile": "https://github.com/d1onys1us", "contributions": [ "doc" ] @@ -8980,7 +8928,6 @@ "login": "thib-web3", "name": "Thibaut", "avatar_url": "https://avatars.githubusercontent.com/u/66329321?v=4", - "profile": "https://github.com/thib-web3", "contributions": [ "doc" ] @@ -9045,7 +8992,6 @@ "login": "bt3gl", "name": "♡", "avatar_url": "https://avatars.githubusercontent.com/u/1130416?v=4", - "profile": "https://github.com/bt3gl", "contributions": [ "doc" ] @@ -9189,7 +9135,6 @@ "login": "KurtMerbeth", "name": "KurtMerbeth", "avatar_url": "https://avatars.githubusercontent.com/u/22886639?v=4", - "profile": "https://github.com/KurtMerbeth", "contributions": [ "content" ] @@ -9742,7 +9687,6 @@ "login": "aguzmant103", "name": "aguzmant103", "avatar_url": "https://avatars.githubusercontent.com/u/67167307?v=4", - "profile": "https://github.com/aguzmant103", "contributions": [ "doc" ] @@ -9917,7 +9861,6 @@ "login": "machin3boy", "name": "machin3boy", "avatar_url": "https://avatars.githubusercontent.com/u/78896694?v=4", - "profile": "https://github.com/machin3boy", "contributions": [ "content" ] @@ -10246,7 +10189,6 @@ "login": "Tyler-233", "name": "Tyler-233", "avatar_url": "https://avatars.githubusercontent.com/u/44740396?v=4", - "profile": "https://github.com/Tyler-233", "contributions": [ "translation", "content" @@ -10383,7 +10325,6 @@ "login": "MwitahJob", "name": "Mwitah ", "avatar_url": "https://avatars.githubusercontent.com/u/136892656?v=4", - "profile": "https://github.com/MwitahJob", "contributions": [ "content" ] @@ -10438,7 +10379,6 @@ "login": "LadyDhaga", "name": "chinaman123", "avatar_url": "https://avatars.githubusercontent.com/u/106376368?v=4", - "profile": "https://github.com/LadyDhaga", "contributions": [ "ideas" ] @@ -10676,7 +10616,6 @@ "login": "Wilson-Wu1", "name": "Wilson Wu", "avatar_url": "https://avatars.githubusercontent.com/u/41039035?v=4", - "profile": "https://www.linkedin.com/in/wilson-wu-2021/", "contributions": [ "doc" ] @@ -10884,7 +10823,6 @@ "login": "fuzheng1998", "name": "Zheng Fu", "avatar_url": "https://avatars.githubusercontent.com/u/24203166?v=4", - "profile": "https://github.com/fuzheng1998", "contributions": [ "code" ] @@ -10992,7 +10930,6 @@ "login": "sminempepe", "name": "sminempepe", "avatar_url": "https://avatars.githubusercontent.com/u/76882704?v=4", - "profile": "https://github.com/sminempepe", "contributions": [ "doc" ] @@ -11821,7 +11758,6 @@ "login": "writegr", "name": "writegr", "avatar_url": "https://avatars.githubusercontent.com/u/167099595?v=4", - "profile": "https://github.com/writegr", "contributions": [ "bug" ] @@ -11958,7 +11894,6 @@ "login": "AbiPrescott", "name": "Abi Prescott", "avatar_url": "https://avatars.githubusercontent.com/u/140613896?v=4", - "profile": "https://github.com/AbiPrescott", "contributions": [ "bug" ] @@ -12084,7 +12019,6 @@ "login": "VikVM", "name": "VikVM", "avatar_url": "https://avatars.githubusercontent.com/u/60881781?v=4", - "profile": "https://github.com/VikVM", "contributions": [ "content" ] @@ -12734,7 +12668,6 @@ "login": "iusx", "name": "iusx", "avatar_url": "https://avatars.githubusercontent.com/u/57232813?v=4", - "profile": "https://jiangxue.org/~ritsu", "contributions": [ "code" ] @@ -12863,7 +12796,6 @@ "login": "CXYZTW", "name": "@karelxfi", "avatar_url": "https://avatars.githubusercontent.com/u/54091831?v=4", - "profile": "https://github.com/CXYZTW", "contributions": [ "tool" ] @@ -13075,7 +13007,6 @@ "login": "alcueca", "name": "Alberto Cuesta Cañada", "avatar_url": "https://avatars.githubusercontent.com/u/38806121?v=4", - "profile": "https://www.linkedin.com/in/albertocuesta/", "contributions": [ "maintenance" ] @@ -13513,7 +13444,6 @@ "login": "Parizval", "name": "Anmol Goyal", "avatar_url": "https://avatars.githubusercontent.com/u/48042530?v=4", - "profile": "https://github.com/Parizval", "contributions": [ "tool", "code", @@ -13942,7 +13872,8 @@ "avatar_url": "https://avatars.githubusercontent.com/u/139675749?v=4", "profile": "https://github.com/codebyankita", "contributions": [ - "content" + "content", + "research" ] }, { diff --git a/.eslintrc.json b/.eslintrc.json index 190ff1656e4..0c959230cb3 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,4 +1,5 @@ { + "root": true, "extends": ["eslint:recommended", "next/core-web-vitals", "prettier"], "env": { "es6": true, diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f6c945e5f27..a11dfed8c53 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -8,5 +8,5 @@ * @wackerow @pettinarip @minimalsm # Owners of specific files -/src/data/consensus-bounty-hunters.json @asanso @fredriksvantes +/src/data/*-bounty-hunters.json @fredriksvantes @0xMushow @bshastry @0xTylerHolmes /src/data/wallets/new-to-crypto.ts @konopkja @minimalsm diff --git a/README.md b/README.md index 901487b1306..c83fb6bb20f 100644 --- a/README.md +++ b/README.md @@ -236,7 +236,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
{t(descriptionKey)}
{t(ctaKey)}
@@ -434,11 +440,7 @@ const Page = async ({ params }: { params: PageParams }) => {+ {t("page-community-support-hero-subtitle-1")} +
++ {t.rich("page-community-support-hero-subtitle-2", { + a: (chunks) => {chunks}, + })} +
++ {t("page-community-support-something-went-wrong-description")} +
+ + {t("page-community-support-lost-funds-scam")} + + + {t("page-community-support-secure-remaining-funds")} + + + {t("page-community-support-report-scam")} + + + {t("page-community-support-trace-funds")} + + + {t("page-community-support-sent-wrong-address")} + + + {t("page-community-support-lost-wallet-access")} + + + {t("page-community-support-stuck-transaction")} + ++ {t("page-community-support-protect-yourself-description")} +
+ + {t("page-community-support-common-scam-tactics")} + + + {t("page-community-support-recovery-experts-scams")} + + + {t("page-community-support-identify-scam-tokens")} + + + {t("page-community-support-full-security-guide")} + + + {t("page-community-support-revoke-approvals")} + ++ {t("page-community-support-using-ethereum-description")} +
+ + {t("page-community-support-create-account")} + + + {t("page-community-support-use-wallet")} + + + {t("page-community-support-swap-tokens")} + + + {t("page-community-support-bridge-tokens")} + + + {t("page-community-support-revoke-token-access")} + ++ {t( + "page-community-support-common-misconceptions-description" + )} +
+ + {t("page-community-support-is-ethereum-company")} + + + {t("page-community-support-recover-freeze-funds")} + + + {t("page-community-support-mine-ethereum")} + + + {t("page-community-support-is-support-team")} + ++ {t("page-community-support-still-need-help-description")} +
+Last updated by { + lastSetterAddress === account.address ? "you" : lastSetterAddress + }
+ )} ``` -We don't want to clutter the UI with all the information, so to make it possible to view them or close them, we use a [`details`](https://www.w3schools.com/tags/tag_details.asp) tag. +If we know who set the greeting last, display that information. `Greeter` does not keep track of this information, and we don't want to look back for `SetGreeting` events, so we only get it once the greeting is changed while we are running. ```tsx -
- {JSON.stringify(attrs.object, null, 2)}
+
+
+
```
-Most of the fields are displayed using [`JSON.stringify`](https://www.w3schools.com/js/js_json_stringify.asp).
+This is the input text field where the user can set a new greeting. Every time the user presses a key, we call `greetingChange`, which calls `setNewGreeting`. Since `setNewGreeting` comes from `useState`, it causes the `Greeter` component to be re-rendered. This means that:
+
+- We need to specify `value` to keep the value of the new greeting, because otherwise it would turn back into the default, the empty string.
+- `simulation` is also updated every time `newGreeting` changes, which means that we'll get a simulation with the correct greeting. This could be relevant because the gas cost depends on the size of the call data, which depends on the length of the string.
```tsx
-
- { funs.length > 0 &&
- <>
- Functions:
- Updated
유용한 정보
+AI 에이전트 및 관련 도구는 아직 초기 개발 단계이며 실험적인 성격이 강하므로 사용에 주의하십시오.
+`nonce``
+
+`` - _코드 스니펫을 포함하는 여는 태그_
+
+nonce - _번역 불가능한 텍스트_
+
+`` - _닫는 태그_
+
+
+
+원문 텍스트에는 숫자만 포함된 단축 태그도 포함되어 있어 해당 기능이 즉시 명확하지 않습니다. 이러한 태그 위에 마우스 커서를 올려놓으면 해당 태그가 어떤 기능을 제공하는지 정확하게 확인할 수 있습니다.
+
+아래 예시에서 `<0>` 태그에 마우스를 올리면 해당 태그가 ``를 나타내며 코드 스니펫을 포함하고 있음을 알 수 있으므로, 이 태그 내부의 내용은 번역해서는 안 됩니다.
+
+
+
+## 약어 대 전체 형식 {#short-vs-full-forms}
+
+웹사이트에는 dapps, NFT, DAO, DeFi 등 많은 약어가 사용됩니다. 이러한 약어는 일반적으로 영어로 사용되며 웹사이트 방문자 대부분이 친숙한 표현입니다.
+
+일반적으로 다른 언어로 정해진 번역이 없기 때문에, 이러한 용어와 유사한 용어에 접근하는 가장 좋은 방법은 전체 형식을 설명하는 번역을 제공하고 괄호 안에 영어 약어를 추가하는 것입니다.
+
+대부분의 사람들이 이러한 약어에 친숙하지 않을 것입니다. 그리고 지역화된 설명들은 대부분의 방문자들에게 별로 의미가 없을 것이기 때문에, 이러한 약어를 번역하지 마세요.
+
+dapps 번역 예시:
+
+- 탈중앙화 애플리케이션(dapps) → _번역된 전체 형식(괄호 안에 영어 약어)_
+
+## 정립된 번역어가 없는 용어 {#terms-without-established-translations}
+
+일부 용어는 다른 언어로 번역되지 않았을 수 있으며 원래 영어 용어로 널리 알려져 있습니다. 이러한 용어에는 proof-of-work, proof-of-stake, Beacon Chain, staking 등과 같은 새로운 개념이 대부분 포함됩니다.
+
+이러한 용어들을 번역하는 것은 부자연스럽게 들릴 수 있지만, 영어 설명은 다른 언어에서도 일반적으로 사용되기 때문에 번역하는 것을 강력하게 추천합니다.
+
+이러한 용어들을 번역할 때 자유롭게 창의력을 발휘하거나 설명적인 번역을 해보세요. 또는 단순히 직역하세요.
+
+**일부만 영어로 남기지 않고 대부분의 용어를 번역해야 하는 이유는 앞으로 이더리움과 관련 기술을 사용하는 사람들이 늘어나면서 이 새로운 용어가 더욱 널리 보급될 것이라는 사실 때문입니다. 그래서 전 세계의 더 많은 사람들이 이더리움에 합류하려면, 우리가 직접 용어를 만들 필요가 있더라도 가능한 많은 언어로 이해할 수 있는 용어로 제공해야 합니다.**
+
+## 버튼 및 CTA {#buttons-and-ctas}
+
+웹사이트에는 다른 콘텐츠와 다르게 번역되어야 하는 수많은 버튼들이 있습니다.
+
+버튼 텍스트는 대부분의 문자열과 연결된 문맥 스크린샷을 보거나 "버튼(button)" 단어가 포함된 맥락을 에디터에서 확인하여 식별할 수 있습니다.
+
+버튼의 번역은 형식 불일치를 방지하기 위해 가능한 짧아야 합니다. 또한 버튼 번역은 명령형, 즉 명령이나 요청을 나타내야 합니다.
+
+
+
+## 포용성을 위한 번역 {#translating-for-inclusivity}
+
+Ethereum.org 방문자들은 전 세계와 다른 환경에서 옵니다. 따라서 웹사이트의 언어는 중립적이어야 합니다. 그리고 모두를 환영해야 하며 배타적이지 않아야 합니다.
+
+공정성을 위한 번역의 중요한 측면은 성 중립성입니다. 이는 격식적인 표현 형식을 사용하고 번역에서 성별에 따른 단어를 지양함으로써 쉽게 달성할 수 있습니다.
+
+공정성의 또 다른 형태는 특정 국가, 인종 또는 지역이 아닌 전 세계 사용자를 대상으로 번역을 시도해보는 겁니다.
+
+마지막으로 언어는 모든 청중과 연령대에 적합해야 합니다.
+
+## 언어별 번역 {#language-specific-translations}
+
+번역할 때 원본에서 복사하는 것과는 달리 모국어에서 사용되는 문법 규칙, 관례와 형식을 따르는 것이 중요합니다. 하지만 원문 텍스트는 다른 언어에는 적용되지 않는 영어 문법 규칙 및 관례를 따릅니다.
+
+그래서 모국어에 대한 규칙을 알고 그에 알맞게 번역해야 합니다. 도움이 필요하면 저희에게 연락해 주세요. 그러면 모국어에서 이러한 요소를 어떻게 사용해야 하는지에 대한 몇 가지 자료를 찾아보실 수 있도록 도와드리겠습니다.
+
+특히 주의해야 할 몇 가지 예시:
+
+### 구두점 및 서식 {#punctuation-and-formatting}
+
+**대문자**
+
+- 다른 언어에서는 대문자 사용에 큰 차이가 있습니다.
+- 영어에서는 제목과 이름, 월과 일, 언어 이름, 공휴일 등의 모든 단어를 대문자로 시작하는 것이 일반적입니다. 다른 많은 언어에서는 대문자 사용 규칙이 다르기 때문에 문법적으로 올바르지 않습니다.
+- 어떤 언어에는 영어에서 대문자가 아닌 인칭 대명사, 명사, 특정 형용사를 대문자로 표기하는 규칙이 있습니다.
+
+**띄어쓰기**
+
+- 맞춤법 규칙은 각 언어에 대한 띄어쓰기를 정의합니다. 왜냐하면 띄어쓰기는 모든 곳에서 사용되기 때문입니다. 맞춤법 규칙은 가장 구별되는 요소 중 일부이며 띄어쓰기는 가장 잘못 번역된 요소 중 일부입니다.
+- 영어와 다른 언어 사이의 띄어쓰기의 몇 가지 일반적인 차이점:
+ - 측정 단위 및 통화 앞 띄어쓰기(예: USD, EUR, kB, MB)
+ - 온도 기호 앞 띄어쓰기(예: °C, ℉)
+ - 일부 구두점 앞 띄어쓰기, 특히 줄임표(…)
+ - 빗금(/) 앞뒤 띄어쓰기
+
+**목록**
+
+- 모든 언어에는 목록 작성에 대한 다양하고 복합한 규칙이 있습니다. 목록 작성은 영어와 상당히 다를 수 있습니다.
+- 일부 언어는 각 새 행의 첫 단어를 대문자로 써야 하는 반면, 다른 언어에서는 새 행은 소문자로 시작해야 합니다. 또한 많은 언어는 각 행의 길이에 따라 목록의 대문자에 대한 다른 규칙을 가지고 있습니다.
+- 행 항목의 구두점도 동일하게 적용됩니다. 목록의 끝 구두점은 언어에 따라 마침표(.), 쉼표(,) 또는 쌍반점(;)일 수 있습니다.
+
+**따옴표**
+
+- 언어는 다양한 따옴표를 사용합니다. 단순히 원문에서 영어 따옴표를 복사하는 것은 종종 부정확합니다.
+- 따옴표의 가장 일반적인 유형은 다음과 같습니다:
+ - „예시 텍스트“
+ - ‚예시 텍스트’
+ - »예시 텍스트«
+ - “예시 텍스트”
+ - ‘예시 텍스트’
+ - «예시 텍스트»
+
+**붙임표와 줄표**
+
+- 영어에서 붙임표(-)는 단어나 단어의 다른 부분을 연결하는 데 사용되며 줄표(–)는 범위 또는 일시 중지를 나타내는 데 사용됩니다.
+- 많은 언어에는 준수해야 하는 붙임표와 줄표 사용에 대한 다른 규칙이 있습니다.
+
+### 형식 {#formats}
+
+**숫자**
+
+- 다른 언어로 숫자를 쓸 때의 주요 차이점은 소수와 천 단위에 사용되는 구분 기호입니다. 숫자 천의 경우 마침표, 쉼표 또는 띄어쓰기가 될 수 있습니다. 유사하게 일부 언어에서는 소수점을 사용하는 반면 다른 언어에서는 소수점 쉼표를 사용합니다.
+ - 큰 숫자의 몇 가지 예시:
+ - 영어 – **1,000.50**
+ - 스페인어 – **1.000,50**
+ - 프랑스어 – **1 000,50**
+- 숫자를 번역할 때 고려해야 할 또 다른 중요한 사항은 백분율 기호입니다. **100%**, **100 %** 또는 %100과 같이 다양한 방식으로 표기할 수 있습니다.
+- 마지막으로, 음수는 언어에 따라 다르게 표시될 수 있습니다.: -100, 100-, (100) 또는 [100]
+
+**날짜**
+
+- 날짜를 번역할 때 언어에 따라 여러 고려 사항과 차이점이 있습니다. 여기에는 날짜 형식, 구분 기호, 대문자 및 숫자 앞에 0으로 채우기가 포함됩니다. 또한 전체 날짜와 숫자 날짜 사이에는 차이가 있습니다.
+ - 다른 날짜 형식의 몇 가지 예시:
+ - 영어 - 영국 (dd/mm/yyyy) – 1st January, 2022
+ - 영어 - 미국 (mm/dd/yyyy) – January 1st, 2022
+ - 중국어 (yyyy-mm-dd) – 2022 年 1 月 1 日
+ - 프랑스어 (dd/mm/yyyy) – 1er janvier 2022
+ - 이탈리아어 (dd/mm/yyyy) – 1º gennaio 2022
+ - 독일어 (dd/mm/yyyy) – 1. Januar 2022
+
+**통화**
+
+- 다른 형식, 관례 및 환율으로 인해 통화를 번역하는 것이 어려울 수 있습니다. 원칙적으로, 통화는 출처와 동일하게 유지하세요. 하지만 독자의 편의를 위해 대괄호 안에 현지 통화 및 환율을 추가할 수 있습니다.
+- 언어별로 통화를 쓸 때의 주요 차이점은 기호 배치, 소수점 기호: 쉼표 vs. 마침표, 띄어쓰기, 약어 vs. 기호가 있습니다.
+ - 기호 배치: $100 또는 100$
+ - 소수점 기호: 100,50$ 또는 100.50$
+ - 띄어쓰기: 100$ 또는 100 $
+ - 약어 vs. 기호: 100 $ 또는 100 USD
+
+**측정 단위**
+
+- 원칙적으로, 측정 단위는 출처와 동일하게 유지하세요. 국가에서 다른 시스템을 사용하는 경우 대괄호 안에 환산값을 포함할 수 있습니다.
+- 측정 단위는 현지화와는 별도로 언어가 이러한 단위에 접근하는 방식의 차이에 주목하는 것도 중요합니다. 가장 큰 차이점은 숫자와 단위 사이의 띄어쓰기이며 언어에 따라 다를 수 있습니다. 예를 들면 100kB vs. 100 kB or 50ºF vs. 50 ºF가 있습니다.
+
+## 결론 {#conclusion}
+
+Ethereum.org를 번역한다는 것은 이더리움의 다른면을 배우는데 매우 좋은 기회입니다.
+
+번역을 할 때, 성급하게 하려 하지 마세요. 편하게 즐기시면 됩니다!
+
+번역 프로그램에 참여해 주셔서 감사드리며 더 많은 대중들이 이 웹사이트를 이용할 수 있도록 도와주셔서 감사합니다. 이더리움 커뮤니티는 글로벌적이며, 저희는 번역가님이 그 중 하나의 일원이 되주셔서 기쁩니다.
diff --git a/public/content/translations/ko/dao/index.md b/public/content/translations/ko/dao/index.md
index c62a4b51b7c..0a83e9b70a4 100644
--- a/public/content/translations/ko/dao/index.md
+++ b/public/content/translations/ko/dao/index.md
@@ -1,24 +1,25 @@
---
-title: 탈중앙화 자율 조직(DAO)
-description: 이더리움의 DAO 개요
+title: "다오란 무엇인가요?"
+metaTitle: "다오란 무엇인가요? | 탈중앙화된 자율 조직"
+description: "이더리움의 DAO 개요"
lang: ko
template: use-cases
emoji: ":handshake:"
sidebarDepth: 2
image: /images/use-cases/dao-2.png
-alt: 제안에 투표하는 DAO의 표현.
-summaryPoint1: 중앙화된 리더십이 없는 회원 소유 커뮤니티.
-summaryPoint2: 인터넷에서 낯선 사람과 협업할 수 있는 안전한 방법.
-summaryPoint3: 특정 목적을 위해 자금을 넣을 수 있는 안전한 장소.
+alt: "제안에 투표하는 DAO의 표현."
+summaryPoint1: "중앙화된 리더십이 없는 회원 소유 커뮤니티."
+summaryPoint2: "인터넷에서 낯선 사람과 협업할 수 있는 안전한 방법."
+summaryPoint3: "특정 목적을 위해 자금을 넣을 수 있는 안전한 장소."
---
-## DAO란 무엇입니까? {#what-are-daos}
+## DAO란 무엇인가요? {#what-are-daos}
-DAO는 공동의 사명을 위해 일하는 집단 소유의, 블록체인 관리 조직입니다.
+DAO는 공통된 사명을 위해서 일하는 공동 소유의 조직입니다.
DAO는 자금이나 운영을 관리하는 자비로운 리더를 신뢰하지 않고도, 우리가 전 세계의 비슷한 생각을 가진 사람들과 함께 일할 수 있게 해줍니다. 변덕스럽게 자금을 쓸 수 있는 CEO나 장부를 조작할 수 있는 CFO는 없습니다. 대신, 코드에 적용된 블록체인 기반 규칙은 조직의 작동 방식과 자금 사용 방식을 정의합니다.
-DAO는 그룹의 승인 없이는 누구도 접근할 수 없는 내장된 자산을 가지고 있습니다. 결정은 조직의 모든 사람이 목소리를 낼 수 있도록 하기 위해 제안과 투표를 통해 이루어지며, 모든 것이 온체인에서 투명하게 진행됩니다.
+DAO는 그룹의 승인 없이는 누구도 접근할 수 없는 내장된 자산을 가지고 있습니다. 의사 결정은 제안과 투표에 따라 관리되어 조직의 모든 구성원이 목소리를 낼 수 있도록 보장하며, 모든 과정은 [온체인](/glossary/#onchain)에서 투명하게 진행됩니다.
## DAO가 필요한 이유는 무엇입니까? {#why-dao}
@@ -28,37 +29,35 @@ DAO는 그룹의 승인 없이는 누구도 접근할 수 없는 내장된 자
### 비교 {#dao-comparison}
-| 탈중앙화 자율 조직 | 기존의 조직 |
-| ------------------------------------------- | ------------------------------------------------- |
-| 일반적으로 수평적이고, 완전히 민주화되어 있습니다. | 일반적으로 계층적입니다. |
-| 변경 사항을 구현하려면 회원의 투표가 필요합니다. | 구조에 따라 단독 주체가 변경을 요구하거나 투표가 제안될 수 있습니다. |
-| 투표가 집계되고, 결과는 신뢰할 수 있는 중개자 없이 자동으로 구현됩니다. | 투표가 시행되는 경우, 투표는 내부적으로 집계되고 투표 결과는 수동으로 처리해야 합니다. |
+| 탈중앙화 자율 조직 | 기존의 조직 |
+| ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
+| 일반적으로 수평적이고, 완전히 민주화되어 있습니다. | 일반적으로 계층적입니다. |
+| 변경 사항을 구현하려면 회원의 투표가 필요합니다. | 구조에 따라 단독 주체가 변경을 요구하거나 투표가 제안될 수 있습니다. |
+| 투표가 집계되고, 결과는 신뢰할 수 있는 중개자 없이 자동으로 구현됩니다. | 투표가 시행되는 경우, 투표는 내부적으로 집계되고 투표 결과는 수동으로 처리해야 합니다. |
| 제공되는 서비스는 탈중앙화된 방식으로 자동 처리됩니다(예: 자선 기금 분배). | 사람이 직접 처리하거나 중앙에서 제어되는 자동화가 필요하며 조작하기 쉽습니다. |
-| 모든 활동은 투명하고 완전히 공개됩니다. | 활동은 일반적으로 비공개로 이루어지며 공개에 제한적입니다. |
+| 모든 활동은 투명하고 완전히 공개됩니다. | 활동은 일반적으로 비공개로 이루어지며 공개에 제한적입니다. |
### DAO 예시 {#dao-examples}
이해를 더 돕기 위해 다음은 DAO를 사용하는 방법에 대한 몇 가지 예시입니다.
-- 자선 활동 – 전 세계 모든 사람의 기부를 수락하고 기금의 원천에 대해 투표할 수 있습니다.
-- 집합적 소유권 – 물리적 또는 디지털 자산을 구매할 수 있으며, 회원은 사용 방법에 대해 투표할 수 있습니다.
-- 벤처 및 보조금 - 투자 자본을 모으고 벤처에 대한 투표를 지원하는 벤처 펀드를 만들 수 있습니다. 상환된 금액은 나중에 DAO 회원들에게 재분배될 수 있습니다.
+- **자선 단체** – 전 세계 누구에게나 기부를 받고 어떤 활동에 자금을 지원할지 투표할 수 있습니다.
+- **집단 소유권** – 물리적 또는 디지털 자산을 구매하고 구성원들은 그것을 어떻게 사용할 것인지에 대해 투표할 수 있습니다.
+- **벤처 및 보조금** – 투자 자금을 모아 지원할 벤처를 투표로 결정하는 벤처 펀드를 만들 수 있습니다. 상환된 금액은 나중에 DAO 회원들에게 재분배될 수 있습니다.
+
+
## DAO는 어떻게 작동하나요? {#how-daos-work}
-DAO의 중추는 조직의 규칙을 정의하고 그룹의 자금을 보유하는 스마트 계약입니다. 이더리움에서 계약이 실행되면 투표 외에는 누구도 규칙을 변경할 수 없습니다. 코드에 있는 규칙과 논리에서 다루지 않는 작업을 누군가 실행하려고 하면 실패합니다. 재무 또한 스마트 계약에 의해 정의되기 때문에 그룹의 승인 없이는 누구도 돈을 쓸 수 없습니다. 이는 DAO가 중앙 권한을 필요로 하지 않는다는 것을 의미합니다. 대신 그룹에서 공동으로 결정을 내리며 투표에서 통과되면 결제는 자동으로 승인됩니다.
+DAO의 핵심은 조직의 규칙을 정의하고 그룹의 자금을 보관하는 [스마트 계약](/glossary/#smart-contract)입니다. 이더리움에서 계약이 실행되면 투표 외에는 누구도 규칙을 변경할 수 없습니다. 코드에 있는 규칙과 논리에서 다루지 않는 작업을 누군가 실행하려고 하면 실패합니다. 재무 또한 스마트 계약에 의해 정의되기 때문에 그룹의 승인 없이는 누구도 돈을 쓸 수 없습니다. 이는 DAO가 중앙 권한을 필요로 하지 않는다는 것을 의미합니다. 대신 그룹에서 공동으로 결정을 내리며 투표에서 통과되면 결제는 자동으로 승인됩니다.
이것은 스마트 계약이 이더리움에서 실행되면 변조가 불가능하기 때문에 가능합니다. 모든 것은 공개되어 있기 때문에 다른 사람들이 눈치채지 못하게 코드(DAO 규칙)를 편집할 수 없습니다.
-
- 스마트 계약에 대한 자세한 정보
-
-
## 이더리움과 DAO {#ethereum-and-daos}
이더리움은 여러 가지 이유로 DAO의 완벽한 기반입니다.
-- 이더리움 자체의 합의는 조직이 네트워크를 신뢰할 수 있을 만큼 충분히 분산되어있고, 형성되어 있습니다.
+- 이더리움의 자체 합의는 탈중앙화되어 있으며, 조직들이 네트워크를 신뢰할 만큼 충분히 확립되어 있습니다.
- 스마트 계약 코드는 이더리움에서 일단 활성화되면 소유자일지라도 수정할 수 없습니다. 이는 DAO가 프로그래밍된 규칙에 따라 실행될 수 있게 합니다.
- 스마트 계약은 자금을 보내고 받을 수 있습니다. 이것이 없다면 그룹 자금을 관리하기 위해 신뢰할 수 있는 중개자가 필요합니다.
- 이더리움 커뮤니티는 경쟁보다 협력적임이 입증되었으며, 모범 사례와 지원 시스템이 빠르게 등장할 수 있게 합니다.
@@ -73,27 +72,25 @@ DAO의 중추는 조직의 규칙을 정의하고 그룹의 자금을 보유하
#### 유명한 예시 {#governance-example}
-[ENS](https://claim.ens.domains/delegate-ranking) – ENS 보유자는 그들을 대표할 참여 커뮤니티 구성원에게 투표를 위임할 수 있습니다.
-
-### 자동 거래 거버넌스 {#governance-example}
+### 자동 트랜잭션 거버넌스 {#governance-example}
많은 DAO에서는 구성원의 정족수가 찬성하면 거래가 자동으로 실행됩니다.
#### 유명한 예시 {#governance-example}
-[Noun](https://nouns.wtf) –Noun DAO에서는 설립자가 거부하지 않는 한 투표 정족수가 충족되고 과반수가 찬성하면 트랜잭션이 자동으로 실행됩니다.
+[Nouns](https://nouns.wtf) – Nouns DAO에서는 투표 정족수가 충족되고 과반수가 찬성하면, 창립자가 거부권을 행사하지 않는 한 트랜잭션이 자동으로 실행됩니다.
-### 다중서명 거버넌스 {#governance-example}
+### 다중 서명 거버넌스 {#governance-example}
-DAO에는 수천 명의 의결권을 가진 회원이 있을 수 있지만, 자금은 신뢰할 수 있고 일반적으로 공개된(커뮤니티에 알려진 공개 ID) 5~20명의 활동적인 커뮤니티 회원이 공유하는 지갑에 있을 수 있습니다. 투표이후에 다중서명자가 커뮤니티의 의지를 실행하게 됩니다.
+DAO에는 수천 명의 투표 구성원이 있을 수 있지만, 자금은 신뢰할 수 있고 일반적으로 신원이 공개된(커뮤니티에 알려진 공개 신원) 5-20명의 활성 커뮤니티 구성원이 공유하는 [지갑](/glossary/#wallet)에 보관될 수 있습니다. 투표 후, [다중 서명](/glossary/#multisig) 서명자들이 커뮤니티의 의사를 실행합니다.
-## DAO 법 {#dao-laws}
+## DAO 법률 {#dao-laws}
1977년 와이오밍 주에서 기업가를 보호하고 책임을 제한하는 유한책임회사를 고안했습니다. 더 최근에는 DAO의 법적 상태를 확립하는 DAO 법을 제정하기도 했습니다. 현재 와이오밍, 버몬트 및 버진 아일랜드에는 어떤 형태로든 DAO 법률이 존재합니다.
### 유명한 예시 {#law-example}
-[CityDAO](https://citizen.citydao.io/) - CityDAO는 와이오밍의 DAO 법을 사용하여 옐로스톤 국립공원 근처의 40에이커의 땅을 구입했습니다.
+[CityDAO](https://citizen.citydao.io/) – CityDAO는 와이오밍의 DAO 법을 이용해 옐로스톤 국립공원 근처의 토지 40에이커를 매입했습니다.
## DAO 멤버십 {#dao-membership}
@@ -101,15 +98,15 @@ DAO 멤버십에는 다양한 모델이 있습니다. 멤버십은 투표 방식
### 토큰 기반 멤버십 {#token-based-membership}
-사용되는 토큰에 따라 일반적으로 완전한 권한이 없습니다. 대부분 이러한 거버넌스 토큰은 탈중앙화 거래소에서 허가 없이 거래될 수 있습니다. 나머지는 유동성 또는 기타 '작업 증명'을 제공하여 벌어야 합니다. 어느 방식이든, 단순히 토큰을 보유하면 투표에 대한 접근 권한이 부여됩니다.
+사용되는 토큰에 따라 일반적으로 완전히 [무허가형](/glossary/#permissionless)입니다. 대부분의 경우 이러한 거버넌스 토큰은 [탈중앙화 거래소](/glossary/#dex)에서 무허가로 거래될 수 있습니다. 나머지는 유동성 또는 기타 '작업 증명'을 제공하여 벌어야 합니다. 어느 방식이든, 단순히 토큰을 보유하면 투표에 대한 접근 권한이 부여됩니다.
_일반적으로 광범위한 분산 프로토콜 및/또는 토큰 자체를 관리하는 데 사용됩니다._
#### 유명한 예시 {#token-example}
-[MakerDAO](https://makerdao.com) – MakerDAO의 토큰 MKR은 탈중앙화 거래소에서 널리 사용 가능하며, 누구나 구매하여 Maker 프로토콜의 미래에 대한 투표권을 가질 수 있습니다.
+[MakerDAO](https://makerdao.com) – MakerDAO의 토큰 MKR은 탈중앙화 거래소에서 널리 사용 가능하며, 누구나 구매를 통해 Maker 프로토콜의 미래에 대한 투표권을 가질 수 있습니다.
-### 주식 기반 멤버십 {#share-based-membership}
+### 지분 기반 멤버십 {#share-based-membership}
주식 기반 DAO는 더 많은 권한이 있지만, 여전히 열려 있습니다. DAO 가입 희망자는 누구나 DAO에 가입하기 위한 제안을 제출할 수 있으며, 보통 토큰이나 작업의 형태로 어느 정도의 가치를 제공할 수 있습니다. 주식은 직접 의결권과 소유권을 나타냅니다. 회원들은 비례적 지분을 가지고 언제든지 탈퇴할 수 있습니다.
@@ -117,49 +114,54 @@ _일반적으로 자선 단체, 근로자 집단 및 투자 클럽과 같이 보
#### 유명한 예시 {#share-example}
-[MolochDAO](http://molochdao.com/) - MolochDAO는 이더리움 프로젝트 펀딩에 중점을 두고 있습니다. 그룹에서는 잠재적 수혜자가 정보를 바탕으로 판단을 하는 데 필요한 전문 지식과 자본이 있는지 평가할 수 있도록 멤버십 제안을 요구합니다. 공개 시장에서 단순히 DAO에 대한 액세스 권한을 구매할 수는 없습니다.
+[MolochDAO](http://molochdao.com/) – MolochDAO는 이더리움 프로젝트 자금 지원에 중점을 둡니다. 그룹에서는 잠재적 수혜자가 정보를 바탕으로 판단을 하는 데 필요한 전문 지식과 자본이 있는지 평가할 수 있도록 멤버십 제안을 요구합니다. 공개 시장에서 단순히 DAO에 대한 액세스 권한을 구매할 수는 없습니다.
### 평판 기반 멤버십 {#reputation-based-membership}
-평판은 참여 사실을 나타내며 DAO에서 투표할 수 있는 권한을 제공합니다. 토큰 또는 주식 기반 멤버십과 다르게 평판 기반 DAO는 기여자에게 소유권을 이전하지 않습니다. 평판은 구매하거나 이전 또는 임의로 부여될 수 없으며 DAO 구성원이 참여를 통해 직접 획득해야 합니다. 온체인 투표에는 권한이 필요하지 않아 원하는 구성원은 자유롭게 DAO 가입 신청을 제출하고 기여에 대한 보상으로 거래소에서 평판과 토큰을 받도록 요청할 수 있습니다.
+평판은 참여 사실을 나타내며 DAO에서 투표할 수 있는 권한을 제공합니다. 토큰 또는 주식 기반 멤버십과 다르게 평판 기반 DAO는 기여자에게 소유권을 이전하지 않습니다. 평판은 구매하거나 이전 또는 임의로 부여될 수 없으며 DAO 구성원이 참여를 통해 직접 획득해야 합니다. 온체인 투표는 별도 허가 없이 진행되며, 예비 회원은 자유롭게 다오 가입과 관련된 제안을 제출할 수 있습니다. 또한, 기여에 따라 명성과 토큰을 보상으로 받을 수 있도록 요청할 수 있습니다.
-_보통은 분산형 개발 및 프로토콜, 디앱의 운영 방식에 사용되지만, 자선 단체, 노동자 집단, 투자 동아리 등의 다양한 용도의 조직에도 적합합니다._
+_일반적으로 프로토콜과 [탈중앙화앱](/glossary/#dapp)의 탈중앙화된 개발 및 거버넌스에 사용되지만, 자선 단체, 노동자 조합, 투자 클럽 등 다양한 조직에도 적합합니다._
#### 유명한 예시 {#reputation-example}
-[DXdao](https://DXdao.eth.link) – DXdao는 세계적인 주권 집합체이며 2019년부터 분산형 프로토콜 및 애플리케이션을 운영해오고 있습니다. 자금을 조정하고 관리하기 위해 평판 기반 운영 방식과 홀로그래픽 합의 메커니즘을 활용하는데, 이는 그 누구도 미래에 영향을 미칠 수 없음을 의미합니다.
+[DXdao](https://DXdao.eth.limo) – DXdao는 2019년부터 탈중앙화 프로토콜과 애플리케이션을 구축하고 관리하는 글로벌 주권 집단이었습니다. 평판 기반 거버넌스와 [홀로그래픽 합의](/glossary/#holographic-consensus)를 활용하여 자금을 조정하고 관리했으며, 이는 누구도 돈으로 미래나 거버넌스에 영향력을 행사할 수 없음을 의미합니다.
-## DAO 가입/시작 {#join-start-a-dao}
+## DAO 가입 / 시작하기 {#join-start-a-dao}
### DAO 가입하기 {#join-a-dao}
- [이더리움 커뮤니티 DAO](/community/get-involved/#decentralized-autonomous-organizations-daos)
- [DAOHaus의 DAO 목록](https://app.daohaus.club/explore)
-- [Tally.xyz DAO 명단](https://www.tally.xyz)
+- [Tally.xyz의 DAO 목록](https://www.tally.xyz/explore)
+- [DeGov.AI의 DAO 목록](https://apps.degov.ai/)
### DAO 시작하기 {#start-a-dao}
-- [DAOHaus로 DAO 호출](https://app.daohaus.club/summon)
-- [Tally로 거버너 DAO 시작하기](https://www.tally.xyz/add-a-dao)
-- [Aragon 기반 DAO 만들기](https://aragon.org/product)
+- [DAOHaus로 DAO 소환하기](https://app.daohaus.club/summon)
+- [Tally로 거버너 DAO 시작하기](https://www.tally.xyz/get-started)
+- [Aragon으로 DAO 생성하기](https://aragon.org/product)
- [콜로니 시작하기](https://colony.io/)
-- [DAOstack의 홀로그램 합의를 이용하여 DAO 만들기](https://alchemy.daostack.io/daos/create)
+- [DAOstack의 홀로그래픽 합의로 DAO 생성하기](https://alchemy.daostack.io/daos/create)
+- [DeGov Launcher로 DAO 실행하기](https://docs.degov.ai/integration/deploy)
+
+## 더 읽어보기 {#further-reading}
+
+### DAO 관련 문서 {#dao-articles}
-## 더 읽을거리 {#further-reading}
+- [DAO란 무엇인가?](https://aragon.org/dao) – [Aragon](https://aragon.org/)
+- [House of DAOs](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
+- [DAO란 무엇이며, 어떤 용도로 사용되는가?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/)
+- [DAO 기반 디지털 커뮤니티 시작하는 방법](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/)
+- [DAO란 무엇인가?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com)
+- [홀로그래픽 합의란 무엇인가?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/)
+- [DAO는 기업이 아니다: 자율 조직에서 탈중앙화가 중요한 이유 by Vitalik](https://vitalik.eth.limo/general/2022/09/20/daos.html)
+- [DAO, DAC, DA 등: 불완전한 용어 안내서](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [이더리움 블로그](https://blog.ethereum.org)
-### DAO 기사 {#dao-articles}
+### 동영상 {#videos}
-- [DAO란?](https://aragon.org/dao) – [Aragon](https://aragon.org/)
-- [DAO 핸드북](https://daohandbook.xyz)
-- [DAO의 집](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
-- [DAO란 무엇이며 무엇을 위한 것일까요?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/)
-- [DAO 기반 디지털 커뮤니티를 시작하는 방법](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/)
-- [DAO란?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com)
-- [홀로그램 합의란 무엇인가요?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/)
-- [DAO는 기업이 아닙니다: 비탈릭의 자율적 조직의 탈중앙화가 중요한 이유](https://vitalik.eth.limo/general/2022/09/20/daos.html)
-- [DAO, DAC, DA 그리고...: 완성되지 않은 용어 가이드](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [이더리움 블로그](https://blog.ethereum.org)
+- [암호화폐에서 DAO란 무엇인가?](https://youtu.be/KHm0uUPqmVE)
+- [DAO가 도시를 건설할 수 있을까?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/)
-### 영상 {#videos}
+
-- [암호화에서 DAO란 무엇입니까?](https://youtu.be/KHm0uUPqmVE)
-- [DAO가 도시를 건설할 수 있을까요?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) - [TED](https://www.ted.com/)
+
diff --git a/public/content/translations/ko/decentralized-identity/index.md b/public/content/translations/ko/decentralized-identity/index.md
index 3a10643af6a..aec48bc60f2 100644
--- a/public/content/translations/ko/decentralized-identity/index.md
+++ b/public/content/translations/ko/decentralized-identity/index.md
@@ -1,25 +1,27 @@
---
-title: 분산 신원 증명
-description: 분산 신원 증명이란 무엇이며, 왜 중요할까요?
+title: "분산 신원 증명"
+description: "분산 신원 증명이란 무엇이며, 왜 중요할까요?"
lang: ko
template: use-cases
emoji: ":id:"
sidebarDepth: 2
image: /images/eth-gif-cat.png
-summaryPoint1: 기존의 신원 증명 시스템은 식별자의 발급, 점검, 제어를 한 곳으로 집중시켰습니다.
-summaryPoint2: 분산 신원 증명을 사용하면 더 이상 중앙화된 제3자에 의존할 필요가 없어집니다.
-summaryPoint3: 암호화폐 덕분에 사용자는 다시 한 번 자신의 식별자와 증명 정보를 발급, 소유, 제어할 도구를 갖게 되었습니다.
+summaryPoint1: "기존의 신원 증명 시스템은 식별자의 발급, 점검, 제어를 한 곳으로 집중시켰습니다."
+summaryPoint2: "분산 신원 증명을 사용하면 더 이상 중앙화된 제3자에 의존할 필요가 없어집니다."
+summaryPoint3: "암호화폐 덕분에 사용자는 다시 한 번 자신의 식별자와 증명 정보를 발급, 소유, 제어할 도구를 갖게 되었습니다."
---
오늘날 신원 증명은 사실상 삶의 모든 부분을 뒷받침하고 있습니다. 온라인 서비스 이용, 은행 계좌 개설, 선거 투표, 재산 구매, 고용 보장 등 이 모든 활동에는 신원 증명이 필요합니다.
-그러나 기존 신원 관리 시스템은 오랜 기간동안 중앙 집권적인 중개자에게 의존해 왔으며, 중개자가 귀하의 신원과 인증 정보를 발급, 소유 및 [증명](#what-are-attestations)했습니다. 즉, 귀하의 신원 관련 정보를 직접 관리하거나 개인 식별 정보(PII)에 누가 얼마나 접근할 수 있는지 또한 귀하가 제어할 수 없다는 것을 의미합니다.
+그러나 기존의 신원 관리 시스템은 오랫동안 사용자의 식별자와 [증명](/glossary/#attestation)을 발급, 보유, 관리하는 중앙화된 중개 기관에 의존해 왔습니다. 즉, 귀하의 신원 관련 정보를 직접 관리하거나 개인 식별 정보(PII)에 누가 얼마나 접근할 수 있는지 또한 귀하가 제어할 수 없다는 것을 의미합니다.
-이 문제를 해결하기 위해 이더리움과 같은 공개 블록체인에 분산 신원 증명 시스템이 도입되었습니다. 분산 신원 증명으로 개인이 직접 자신의 신원 관련 정보를 관리할 수 있습니다. 분산 신원 증명 솔루션을 통해 서비스 제공자나 정부 등 중앙 기관에 의존하지 않고도 자신의 식별자를 *직접* 제작하고 인증 정보를 획득, 소유할 수 있습니다.
+이 문제를 해결하기 위해 이더리움과 같은 공개 블록체인에 분산 신원 증명 시스템이 도입되었습니다. 분산 신원 증명으로 개인이 직접 자신의 신원 관련 정보를 관리할 수 있습니다. 탈중앙화 신원 솔루션을 사용하면 서비스 제공업체나 정부와 같은 중앙 기관에 의존하지 않고도 사용자가 직접 식별자를 만들고 증명을 요청하고 보유할 수 있습니다.
## 신원이란 무엇인가요? {#what-is-identity}
-신원은 개인의 고유한 정보를 바탕으로 정의되는 개인 증명 수단입니다. 신원은 _개인_, 즉 구별되는 인간 개체를 의미합니다. 또한 신원은 조직이나 기관과 같은 인간이 아닌 주체를 의미할 수도 있습니다.
+신원은 개인의 고유한 정보를 바탕으로 정의되는 개인 증명 수단입니다. 신원은 _개인_, 즉 구별되는 인간 개체임을 의미합니다. 또한 신원은 조직이나 기관과 같은 인간이 아닌 주체를 의미할 수도 있습니다.
+
+
## 식별자란 무엇인가요? {#what-are-identifiers}
@@ -31,31 +33,97 @@ summaryPoint3: 암호화폐 덕분에 사용자는 다시 한 번 자신의 식
- 생년월일 및 출생지
- 이메일 주소, 사용자 이름, 프로필 사진 등의 디지털 신원 정보
-이러한 기존 식별자는 중앙 기관에 의해 발급, 소유, 관리됩니다. 이름을 바꾸기 위해서는 정부의 허가가 필요하고, 닉네임을 바꾸기 위해서는 소셜 미디어 플랫폼의 허가를 받아야 합니다.
+이러한 기존 식별자는 중앙 기관에 의해 발급, 소유, 관리됩니다. 이름을 바꾸기 위해서는 정부의 허가가 필요하고, 핸들을 바꾸기 위해서는 소셜 미디어 플랫폼의 허가를 받아야 합니다.
+
+## 탈중앙화 신원의 이점 {#benefits-of-decentralized-identity}
+
+1. 분산형 신원 증명은 식별하는 정보에 대한 개인의 관리 권한을 강화합니다. 분산형 식별 정보 및 증명은 중앙 집권적인 기관이나 제3자 서비스에 의존하지 않고도 확인될 수 있습니다.
+
+2. 탈중앙화 신원 솔루션은 사용자 신원을 확인하고 관리하기 위한 무신뢰, 원활, 개인 정보 보호 방법을 용이하게 합니다.
+
+3. 분산형 신원 증명은 블록체인 기술을 활용함으로써, 서로 다른 주체 간에 신뢰 관계를 구축하고, 증명의 유효성을 검증할 수 있는 암호화 기법을 제공합니다.
+
+4. 분산형 신원 증명은 신원 데이터를 휴대 가능하도록 합니다. 사용자는 모바일 지갑에 증명과 식별자를 저장하고 원하는 모든 당사자와 공유할 수 있습니다. 분산형 식별 정보와 증명은 발행 기관의 특정 데이터베이스에 고정되지 않습니다.
+
+5. 탈중앙화 신원은 개인이 소유하거나 수행한 것을 공개하지 않고도 증명할 수 있게 해주는 새로운 [영지식](/glossary/#zk-proof) 기술과 잘 작동해야 합니다. 이는 투표와 같은 애플리케이션에 대한 신뢰와 개인 정보를 결합하는 강력한 방법이 될 수 있습니다.
+
+6. 탈중앙화 신원은 한 명의 개인이 시스템을 악용하거나 스팸을 보내기 위해 여러 사람인 척하는 경우를 식별하는 [안티시빌](/glossary/#anti-sybil) 메커니즘을 가능하게 합니다.
+
+## 탈중앙화 신원 사용 사례 {#decentralized-identity-use-cases}
+
+분산형 신원 증명은 다양한 곳에 사용될 수 있습니다.
+
+### 1. 범용 로그인 {#universal-dapp-logins}
+
+분산형 신원 증명은 비밀번호 기반 로그인을 탈중앙화 인증으로 대체할 수 있게 합니다. 서비스 제공자는 사용자에게 증명을 발행할 수 있으며, 해당 증명은 이더리움 지갑에 저장됩니다. 증명의 예시로는 보유자에게 온라인 커뮤니티에 대한 접근 권한을 부여하는 [NFT](/glossary/#nft)가 있습니다.
+
+[이더리움으로 로그인](https://siwe.xyz/) 기능은 서버가 사용자의 이더리움 계정을 확인하고 계정 주소에서 필요한 증명을 가져올 수 있도록 합니다. 즉, 사용자는 긴 비밀번호를 기억하지 않고도 플랫폼이나 웹사이트에 액세스할 수 있으며, 이는 사용자의 온라인 환경을 향상합니다.
+
+### 2. KYC 인증 {#kyc-authentication}
+
+다양한 온라인 서비스를 사용하려면 개인은 운전면허증이나 여권과 같은 증명을 제공해야 합니다. 이러한 방식은 사용자의 개인 정보가 노출될 수 있고, 서비스 제공 업체가 자체적으로 증명을 인증할 수 없다는 문제가 있을 수 있습니다.
+
+탈중앙화 신원을 통해 회사는 기존의 [고객신원확인(KYC)](https://en.wikipedia.org/wiki/Know_your_customer) 절차를 건너뛰고 검증 가능한 자격 증명을 통해 사용자 신원을 인증할 수 있습니다. 이는 신원 관리 비용을 절감하는 한편 허위 문서의 사용 등을 방지합니다.
+
+### 3. 투표 및 온라인 커뮤니티 {#voting-and-online-communities}
+
+온라인 투표와 소셜 미디어는 분산형 신원 증명을 사용한 가장 놀라운 예시입니다. 온라인 투표는 특히 악의적인 사용자가 허위 신원을 만들어서 투표할 수 있기 때문에 조작에 취약합니다. 이때 개인이 온체인 증명을 제공하도록 요청한다면 온라인 투표 과정의 신뢰도를 개선할 수 있을 것입니다.
+
+분산형 신원 증명은 허위 계정이 불가능한 온라인 커뮤니티를 만들 수 있게 지원합니다. 예를 들어, 각 사용자가 ENS(이더리움 이름 서비스) 등의 온체인 신원 증명 시스템을 사용하여 신원을 증명하게 함으로써 허위 계정을 막을 수 있습니다.
+
+### 4. 안티시빌 보호 {#sybil-protection}
+
+[이차 투표](/glossary/#quadratic-voting)를 사용하는 보조금 지급 애플리케이션은 더 많은 개인이 투표할수록 보조금의 가치가 증가하여 사용자가 여러 신원으로 기여를 분할하도록 유도하므로 [시빌 공격](/glossary/#sybil-attack)에 취약합니다. 분산형 신원 증명은 특정 개인 정보를 공개하도록 요구하지 않는 경우가 많지만, 각 참가자가 실제 사용자임을 증명해야 하는 부담을 줌으로써 이를 방지하는 데 도움이 됩니다.
+
+### 5. 국가 및 정부 ID {#national-and-government-id}
+
+정부는 탈중앙화 신원의 원칙을 사용하여 국가 ID, 여권 또는 운전면허증과 같은 기본적인 신원 문서를 이더리움에서 검증 가능한 자격 증명으로 발급하여 온라인 신원 확인에서 사기 및 위조를 줄이기 위한 강력한 암호학적 진위 보증을 제공할 수 있습니다. 시민은 이러한 증명을 개인 [지갑](/wallets/)에 저장하고 이를 사용하여 자신의 신원, 연령 또는 투표권을 증명할 수 있습니다.
+
+이 모델은 특히 [영지식 증명(ZKP)](/zero-knowledge-proofs/) 개인정보 보호 기술과 결합될 때 선택적 공개를 허용합니다. 예를 들어, 시민은 연령 제한 서비스에 접근하기 위해 정확한 생년월일을 공개하지 않고도 18세 이상임을 암호학적으로 증명할 수 있으며, 이는 기존 ID보다 더 큰 개인정보 보호를 제공합니다.
+
+#### 💡사례 연구: 이더리움 기반 부탄 국가 디지털 ID(NDI) {#case-study-bhutan-ndi}
+
+- 부탄의 약 80만 시민에게 검증 가능한 신원 자격 증명에 대한 접근을 제공합니다.
+- 2025년 10월에 폴리곤 네트워크에서 [이더리움 메인넷](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878)으로 마이그레이션했습니다.
+- 2025년 3월 기준 [234,000개 이상의 디지털 ID](https://www.blockchain-council.org/blockchain/bhutan-uses-blockchain-in-digital-id-project/) 발급
+
+부탄 왕국은 2025년 10월에 [국가 디지털 신원(NDI) 시스템을 이더리움으로 마이그레이션했습니다](https://www.bhutanndi.com/article/bhutan-adopts-ethereum-for-national-identity-a-new-chapter-in-digital-sovereignty_2d0c7ec2-5605-4c42-b258-bd9361ae8878). 탈중앙화 신원 및 자기 주권 신원의 원칙에 따라 구축된 부탄의 NDI 시스템은 탈중앙화 식별자와 검증 가능한 자격 증명을 사용하여 시민의 개인 지갑에 직접 디지털 서명된 자격 증명을 발급합니다. 이러한 자격 증명의 암호학적 증명을 이더리움에 고정함으로써 시스템은 자격 증명이 진짜이고 변조 방지되며 중앙 기관에 질의하지 않고도 모든 당사자가 확인할 수 있도록 보장합니다.
+
+이 시스템의 아키텍처는 [영지식 증명(ZKP)](/zero-knowledge-proofs/) 기술을 사용하여 개인정보 보호를 강조합니다. 이 '선택적 공개' 구현을 통해 시민은 전체 ID 번호나 정확한 생년월일과 같은 기본 개인 데이터를 공개하지 않고도 특정 사실(예: '나는 18세 이상입니다' 또는 '나는 시민입니다')을 증명하여 서비스에 접근할 수 있습니다. 이는 안전하고 사용자 중심적이며 개인정보를 보호하는 국가 ID 시스템을 위한 이더리움의 강력한 실제 사용 사례를 보여줍니다.
+
+#### 💡사례 연구: 이더리움 [레이어 2](/layer-2/) ZKSync Era 기반 부에노스아이레스시 QuarkID {#case-study-buenos-aires-quarkid}
+
+- 출시 시점에 [360만 명 이상의 사용자](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo)에게 탈중앙화 신원 자격 증명 발급
+- QuarkID는 UN 지속가능발전목표에 따라 [디지털 공공재](https://www.digitalpublicgoods.net/r/quarkid)로 인정받은 오픈 소스 프로토콜입니다.
+- 시가 프로토콜을 소유하지 않고 시민에게 완전한 데이터 소유권과 개인정보 보호를 제공하는 '[사용자로서의 정부](https://buenosaires.gob.ar/innovacionytransformaciondigital/miba-con-tecnologia-quarkid-la-ciudad-de-buenos-aires-incorporo)' 모델을 강조합니다.
+
+2024년 부에노스아이레스시 정부(GCBA)는 GCBA의 혁신 및 디지털 전환 사무국이 구축한 오픈 소스 '디지털 신뢰 프레임워크'인 QuarkID를 주민들이 정부 서비스 및 공식 문서에 접근하기 위한 시의 공식 앱인 miBA에 통합했습니다. 출시 시점에 miBA의 360만 명 이상의 모든 사용자에게는 시민권 증명서, 출생, 결혼 및 사망 증명서, 세금 기록, 예방 접종 기록 등을 포함한 검증 가능한 디지털 문서와 인증서를 온체인에서 관리하고 공유할 수 있는 탈중앙화 디지털 신원이 발급되었습니다.
+
+이더리움 [레이어 2](/layer-2/) 네트워크 ZKSync Era에 구축된 QuarkID 시스템은 ZKP 기술을 사용하여 시민이 불필요한 개인 데이터를 노출하지 않고도 모바일 장치를 통해 P2P로 개인 자격 증명을 확인할 수 있도록 합니다. 이 프로그램은 GCBA가 중앙화된 소유자 역할을 하는 대신 오픈 소스, 상호 운용 가능한 QuarkID 프로토콜의 한 명의 사용자 역할을 하는 '사용자로서의 정부' 모델을 강조합니다. 이 ZKP 지원 아키텍처는 핵심적인 개인정보 보호 기능을 제공합니다. 즉, 제3자, 심지어 GCBA조차도 시민이 언제, 어떻게, 왜 자격 증명을 사용하는지 추적할 수 없습니다. 이 성공적인 프로그램은 시민에게 완전한 자기 주권 신원과 민감한 데이터에 대한 통제권을 제공하며, 이 모든 것은 이더리움의 전 세계적으로 분산된 네트워크에 의해 보호됩니다.
## 증명이란 무엇인가요? {#what-are-attestations}
증명이란 한 개체에 의해 만들어진 다른 개체에 대한 주장입니다. 예를 들어, 미국에 거주하는 경우 미국의 도로 교통 공단(한 주체)에서 발급한 운전 면허증은 본인(다른 주체)이 법적으로 자동차를 운전할 수 있음을 증명합니다.
-증명은 식별자와 다릅니다. 증명은 특정 신원을 파악할 수 있도록 신원 정보를 *포함*하며 그 신원과 관련된 정보를 주장합니다. 즉, 운전 면허증은 식별자(성명, 생년월일, 주소)를 포함할 뿐만 아니라 운전할 수 있는 법적 권리에 대한 증명이기도 합니다.
+증명은 식별자와 다릅니다. 증명은 특정 신원을 참조하기 위한 식별자를 _포함하며_, 이 신원과 관련된 속성에 대한 주장을 합니다. 즉, 운전 면허증은 식별자(성명, 생년월일, 주소)를 포함할 뿐만 아니라 운전할 수 있는 법적 권리에 대한 증명이기도 합니다.
### 분산 식별자는 무엇인가요? {#what-are-decentralized-identifiers}
법적 이름 또는 이메일 주소 같은 기존 식별자는 정부와 이메일 제공자 같은 제3자에 의존합니다. 분산 식별자(DID)는 다릅니다. 중앙 개체에 의해 발급, 관리, 제어되지 않습니다.
-분산 식별자는 개인이 발급, 소유, 관리합니다. [이더리움 계정](/developers/docs/accounts/)은 분산 식별자의 예시입니다. 누군가의 허락 없이 원하는 만큼 많은 계정을 만들 수 있으며, 중앙 저장소에 보관해야 할 필요도 없습니다.
+분산 식별자는 개인이 발급, 소유, 관리합니다. [이더리움 계정](/glossary/#account)은 탈중앙화 식별자의 예시입니다. 누군가의 허락 없이 원하는 만큼 많은 계정을 만들 수 있으며, 중앙 저장소에 보관해야 할 필요도 없습니다.
-분산 식별자는 분산 원장(블록체인) 또는 P2P 네트워크에 저장됩니다. 이는 DID를 [유일하고, 높은 가용성과 활용성을 지니며, 암호화 검증이 가능](https://w3c-ccg.github.io/did-primer/)하게 만듭니다. 분산 식별자는 개인, 조직 또는 정부 등 다른 개체와 연결될 수 있습니다.
+탈중앙화 식별자는 분산 원장([블록체인](/glossary/#blockchain)) 또는 [P2P 네트워크](/glossary/#peer-to-peer-network)에 저장됩니다. 이를 통해 DID는 [전 세계적으로 고유하고, 높은 가용성으로 확인 가능하며, 암호학적으로 검증 가능하게 됩니다](https://w3c-ccg.github.io/did-primer/). 분산 식별자는 개인, 조직 또는 정부 등 다른 개체와 연결될 수 있습니다.
## 분산 식별자는 어떻게 가능한가요? {#what-makes-decentralized-identifiers-possible}
-### 1. 공개 키 기반 구조(PKI) {#public-key-cryptography}
+### 1. 공개 키 암호화 {#public-key-cryptography}
-공개 키 기반 구조(PKI)는 특정 주체를 위해 [공개 키](/glossary/#public-key) 와 [개인 키](/glossary/#private-key)를 생성하는 정보 보안 장치입니다. 공개 키 암호화 기법은 블록체인 네트워크에서 사용자의 신원을 인증하고 디지털 자산의 소유권을 증명하는 용도로 사용됩니다.
+공개 키 암호화는 개체를 위해 [공개 키](/glossary/#public-key)와 [개인 키](/glossary/#private-key)를 생성하는 정보 보안 조치입니다. 공개 키 [암호화](/glossary/#cryptography)는 블록체인 네트워크에서 사용자 신원을 인증하고 디지털 자산의 소유권을 증명하는 데 사용됩니다.
-이더리움 계정과 같은 일부 분산 식별자에는 공개 키와 개인 키가 있습니다. 공개 키는 계정의 제어자를 식별하는 반면, 개인 키는 이 계정의 메시지에 서명하거나 메시지를 해독할 수 있습니다. PKI는 주체를 인증하는 데 필요한 증명을 제공하고, [암호화 서명](https://andersbrownworth.com/blockchain/public-private-keys/)을 통해 모든 주장을 검증함으로써 명의 도용 및 허위 신원 사용을 방지합니다.
+이더리움 계정과 같은 일부 분산 식별자에는 공개 키와 개인 키가 있습니다. 공개 키는 계정의 제어자를 식별하는 반면, 개인 키는 이 계정의 메시지에 서명하거나 메시지를 해독할 수 있습니다. 공개 키 암호화는 [암호화 서명](https://andersbrownworth.com/blockchain/public-private-keys/)을 사용하여 모든 주장을 검증함으로써, 개체를 인증하고 명의 도용 및 가짜 신원 사용을 방지하는 데 필요한 증명을 제공합니다.
-### 2. 분산형 데이터 보관 {#decentralized-datastores}
+### 2. 탈중앙화 데이터 저장소 {#decentralized-datastores}
블록체인은 검증 가능한 데이터 레지스트리의 역할을 합니다. 즉, 개방되어 있고, (주로 중앙 집권적인) 특정 주체를 신뢰하지 않아도 되며, 탈중앙화된 정보 저장소입니다. 공용 블록체인은 중앙 집권적인 레지스트리에 식별 정보를 저장해야 할 필요를 제거합니다.
@@ -65,7 +133,7 @@ summaryPoint3: 암호화폐 덕분에 사용자는 다시 한 번 자신의 식
분산형 신원 증명은 신원 관련 정보는 소유자 본인이 제어하고 보호 및 이동 가능한 형태여야 한다는 아이디어를 분산형 식별 정보와 증명을 주요 기반으로 구현한 것입니다.
-분산형 신원 증명의 관점에서 증명(= [검증 가능한 인증 정보](https://www.w3.org/TR/vc-data-model/))이란, 발행자가 만든 위조 불가능하고 암호학적으로 검증 가능한 주장을 말합니다. 한 주체(예: 조직)에서 발급하는 모든 증명 또는 검증 가능한 인증 정보는 해당하는 DID에 연계됩니다.
+탈중앙화 신원의 맥락에서, 증명([검증 가능한 자격 증명](https://www.w3.org/TR/vc-data-model/)이라고도 함)은 발행자가 만든 변조 방지 및 암호학적으로 검증 가능한 주장입니다. 한 주체(예: 조직)에서 발급하는 모든 증명 또는 검증 가능한 인증 정보는 해당하는 DID에 연계됩니다.
DID는 블록체인에 저장되기 때문에 누구든지 이더리움에서 발급자의 DID를 대조하여 증명의 유효성을 검증할 수 있습니다. 본질적으로 이더리움 블록체인은 특정 주체에 연계된 DID를 인증할 수 있게 하는 글로벌 디렉터리와 같은 역할을 합니다.
@@ -73,31 +141,31 @@ DID는 블록체인에 저장되기 때문에 누구든지 이더리움에서
분산형 식별 정보는 또한 분산형 신원 증명을 통해 개인 정보를 보호하는 데에도 중요한 역할을 합니다. 예를 들어, 개인이 증명(운전 면허증 등)을 제출하는 경우 검증하는 주체는 증명에 포함된 정보의 유효성을 확인하지 않아도 됩니다. 대신, 검증자는 증명의 진위와 발급 기관의 신원에 대한 암호화 보증만 확인하면 증명이 유효한지 판단할 수 있습니다.
-## 분산형 신원 증명에서 증명 방식의 종류 {#types-of-attestations-in-decentralized-identity}
+## 탈중앙화 신원의 증명 유형 {#types-of-attestations-in-decentralized-identity}
이더리움 기반 신원 증명 생태계에서 증명 정보가 보관되고 제공되는 방법은 기존의 신원 관리 시스템과 다릅니다. 분산형 신원 증명 시스템에서 증명을 발급, 저장 및 인증하기 위한 다양한 접근 방식은 다음과 같습니다.
-### 오프체인 증명 {#off-chain-attestations}
+### 오프체인 증명 {#offchain-attestations}
-온체인으로 증명을 저장할 때 발생하는 문제점 중 하나는 해당 정보에 개인이 비공개로 유지하고자 하는 정보가 포함될 수도 있다는 부분입니다. 이더리움 블록체인은 공개적이라는 특성이 있기 때문에 이러한 증명을 저장하기에 부적절해 보일 수 있습니다.
+온체인으로 증명을 저장할 때 발생하는 문제점 중 하나는 해당 정보에 개인이 비공개로 유지하고자 하는 정보가 포함될 수도 있다는 것 입니다. 이더리움 블록체인은 공개적이라는 특성이 있기 때문에 이러한 증명을 저장하기에 부적절해 보일 수 있습니다.
-이 문제는 사용자가 디지털 지갑에서 오프체인으로 보유하고 있지만 온체인에 저장된 발급자의 DID로 서명된 증명을 발급함으로써 해결할 수 있습니다. 해당하는 증명은 [JSON 웹 토큰](https://en.wikipedia.org/wiki/JSON_Web_Token)으로 인코딩되고 발급자의 디지털 서명을 포함하므로, 간편하게 오프체인 클레임의 인증에 사용될 수 있습니다.
+해결책은 사용자들이 오프체인에서 디지털 지갑에 보관할 수 있는 증명을 발급하되, 발급자의 DID(탈중앙화 식별자)는 온체인에 저장하도록 하는 것입니다 이러한 증명은 [JSON 웹 토큰](https://en.wikipedia.org/wiki/JSON_Web_Token)으로 인코딩되며 발행자의 디지털 서명을 포함하므로 오프체인 주장을 쉽게 확인할 수 있습니다.
-다음은 오프체인 증명을 설명하는 가상 시나리오입니다.
+다음은 오프체인 증명을 설명하는 가상 시나리오입니다:
1. 한 대학교(발급자)가 증명(디지털 학위 증명서)을 생성한 후 대학교의 키로 서명하고, 이를 Bob(ID의 소유자)에게 발급합니다.
2. Bob이 회사에 지원하기 위해 학위를 증명해야 할 때 모바일 지갑에서 해당 증명을 꺼내 회사에 제출할 수 있습니다. 회사(검증자)는 발급자의 DID(예: 이더리움 상의 공개 키)를 확인하여 증명의 유효성을 검증할 수 있습니다.
-### 영구 액세스 권한이 있는 오프체인 증명 {#offchain-attestations-with-persistent-access}
+### 영구적 접근 권한이 있는 오프체인 증명 {#offchain-attestations-with-persistent-access}
-오프체인 인증 방식에서 증명은 JSON 파일로 변환된 후 오프체인(이상적으로는 IPFS 또는 Swarm과 같은 [탈중앙화된 클라우드 스토리지](/developers/docs/storage/) 플랫폼)에 저장됩니다. 한편, 해당 JSON 파일의 [해시](/glossary/#hash) 값은 온체인으로 저장되며 온체인 레지스트리를 통해 DID에 링크됩니다. 연계되는 DID는 해당 증명의 발급자의 것이거나 수신인의 것일 수도 있습니다.
+이 방식에서는 증명이 JSON 파일로 변환되어 오프체인(이상적으로는 IPFS 또는 Swarm과 같은 [탈중앙화 클라우드 스토리지](/developers/docs/storage/) 플랫폼)에 저장됩니다. 그러나 JSON 파일의 [해시](/glossary/#hash)는 온체인에 저장되고 온체인 레지스트리를 통해 DID에 연결됩니다. 연계되는 DID는 해당 증명의 발급자의 것이거나 수신인의 것일 수도 있습니다.
이러한 방식은 증명이 블록체인 기반으로 영구 보관되는 동시에 민감한 정보는 암호화되어 필요시 검증할 수 있게 합니다. 또한 해당 증명은 개인 키의 소유자만이 복호화하여 정보를 확인할 수 있으므로, 선택적인 공개를 가능하게 합니다.
### 온체인 증명 {#onchain-attestations}
-온체인 증명은 이더리움 블록체인의 [스마트 계약](/developers/docs/smart-contracts/)에서 이루어집니다. 스마트 계약(레지스트리 역할)은 해당하는 온체인의 분산형 식별 정보(공개 키)에 증명을 매핑합니다.
+온체인 증명은 이더리움 블록체인의 [스마트 계약](/glossary/#smart-contract)에 보관됩니다. 스마트 컨트랙트(레지스트리 역할)는 해당하는 온 체인의 분산형 식별 정보(공개 키)에 증명을 매핑합니다.
아래는 온체인 증명이 실제로 어떻게 작동하는지를 보여주는 예시입니다.
@@ -107,79 +175,44 @@ DID는 블록체인에 저장되기 때문에 누구든지 이더리움에서
3. 주식을 판매하는 스마트 계약은 레지스트리 계약에서 선별된 구매자의 신원을 확인할 수 있으므로 스마트 계약이 누가 주식을 살 수 있는지 여부를 결정할 수 있습니다.
-### 소울바운드 토큰과 신원 증명 {#soulbound}
-
-[소울바운드 토큰](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)(양도 불가한 NFT)은 특정 지갑에 국한된 고유한 정보를 수집하는 데 사용될 수 있습니다. 이는 개인적인 성취(특정 온라인 강의 완료 또는 게임에서 높은 점수 획득 등)나 특정 커뮤니티에 참여 등을 증명하기 위한 토큰과 같은 온체인 신원 증명이 특정 이더리움 주소에만 고유하게 소속될 수 있게 만듭니다.
-
-## 분산형 신원 증명의 장점 {#benefits-of-decentralized-identity}
-
-1. 분산형 신원 증명은 식별하는 정보에 대한 개인의 관리 권한을 강화합니다. 분산형 식별 정보 및 증명은 중앙 집권적인 기관이나 제3자 서비스에 의존하지 않고도 확인될 수 있습니다.
-
-2. 분산형 신원 증명 솔루션은 사용자 신원 관리 및 검증이 더욱 원활하고, 보호적이며, 특정 기관에 대한 신뢰 없이 이루어질 수 있게 합니다.
-
-3. 분산형 신원 증명은 블록체인 기술을 활용함으로써, 서로 다른 주체 간에 신뢰 관계를 구축하고, 증명의 유효성을 검증할 수 있는 암호화 기법을 제공합니다.
-
-4. 분산형 신원 증명은 신원 데이터를 휴대 가능하도록 합니다. 사용자는 증명 및 식별 정보를 모바일 지갑에 저장하고, 필요할 때 원하는 상대방과 공유할 수 있습니다. 분산형 식별 정보와 증명은 발행 기관의 특정 데이터베이스에 고정되지 않습니다.
-
-5. 분산형 신원 증명은 개인이 특정 정보를 공개하지 않고도 자신이 소유하거나 실행한 작업을 증명할 수 있게 하는 새로운 영지식 기술과 원활하게 작동합니다. 이는 투표와 같은 애플리케이션에 대한 신뢰와 개인 정보를 결합하는 강력한 방법이 될 수 있습니다.
-
-6. 분산형 신원 증명을 통해 반시빌(anti-Sybil) 메커니즘을 사용하여 한 사람이 게임 상에서 여러 사람인 것처럼 속이거나 특정 시스템을 스팸하는 행위를 식별할 수 있습니다.
-
-## 분산형 신원 증명 사용 사례 {#decentralized-identity-use-cases}
-
-분산형 신원 증명은 다양한 곳에 사용될 수 있습니다.
-
-### 1. 보편적 로그인 {#universal-dapp-logins}
-
-분산형 신원 증명은 비밀번호 기반 로그인을 [탈중앙화 인증](https://docs.verify.ibm.com/verify/docs/use-cases-decentralized-identity)으로 대체할 수 있게 합니다. 서비스 제공자는 사용자에게 증명을 발행할 수 있으며, 해당 증명은 이더리움 지갑에 저장됩니다. 증명의 예시로, 소유자가 특정 온라인 커뮤니티에 액세스할 수 있게 하는 [NFT](/nft/)가 있을 수 있습니다.
-
-그 후 [이더리움 로그인](https://siwe.xyz/) 기능은 서버가 사용자의 이더리움 계정을 확인하고 해당 계정 주소로부터 필요한 증명 정보를 가져올 수 있도록 합니다. 즉, 사용자는 긴 비밀번호를 기억하지 않고도 플랫폼이나 웹사이트에 액세스할 수 있으며, 이는 사용자의 온라인 환경을 향상합니다.
-
-### 2. KYC 인증 {#kyc-authentication}
-
-다양한 온라인 서비스를 사용하려면 개인은 운전면허증이나 여권과 같은 증명을 제공해야 합니다. 이러한 방식은 사용자의 개인 정보가 노출될 수 있고, 서비스 제공 업체가 자체적으로 증명을 인증할 수 없다는 문제가 있을 수 있습니다.
-
-분산형 신원 증명을 통해 회사는 기존의 [KYC(Know-Your-Customer)](https://en.wikipedia.org/wiki/Know_your_customer) 절차를 건너뛰고, 이른바 "검증 가능한 인증 정보"를 통해 사용자 인증을 진행할 수 있습니다. 이는 신원 관리 비용을 절감하는 한편 허위 문서의 사용 등을 방지합니다.
-
-### 3. 투표 및 온라인 커뮤니티 {#voting-and-online-communities}
-
-온라인 투표와 소셜 미디어는 분산형 신원 증명을 사용한 가장 놀라운 예시입니다. 온라인 투표는 특히 악의적인 사용자가 허위 신원을 만들어서 투표할 수 있기 때문에 조작에 취약합니다. 이때 개인이 온체인 증명을 제공하도록 요청한다면 온라인 투표 과정의 신뢰도를 개선할 수 있을 것입니다.
-
-분산형 신원 증명은 허위 계정이 불가능한 온라인 커뮤니티를 만들 수 있게 지원합니다. 예를 들어, 각 사용자가 ENS(이더리움 이름 서비스) 등의 온체인 신원 증명 시스템을 사용하여 신원을 증명하게 함으로써 허위 계정을 막을 수 있습니다.
-
-### 4. 반시빌(Anti-Sybil) 보호 {#sybil-protection}
+### 소울바운드 토큰 및 신원 {#soulbound}
-시빌(Sybil) 공격은 개인이 자신의 영향력을 늘리기 위해 여러 사람인 것처럼 시스템을 속이는 행위를 말합니다. [2차 투표](https://www.radicalxchange.org/concepts/plural-voting/)를 사용하는 [보조금 제공 애플리케이션](https://gitcoin.co/grants/)은 이러한 시빌 공격에 취약합니다. 더 많은 개인이 투표할 때 보조금의 가치가 증가하므로 사용자가 기여금을 여러 ID로 분할하도록 유도하기 때문입니다. 분산형 신원 증명은 특정 개인 정보를 공개하도록 요구하지 않는 경우가 많지만, 각 참가자가 실제 사용자임을 증명해야 하는 부담을 줌으로써 이를 방지하는 데 도움이 됩니다.
+[소울바운드 토큰](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)(양도 불가능한 [NFT](/glossary/#nft))은 특정 지갑에 고유한 정보를 수집하는 데 사용될 수 있습니다. 이는 성취(예: 특정 온라인 과정 수료 또는 게임에서 기준 점수 통과)나 커뮤니티 참여를 나타내는 토큰을 포함할 수 있는 특정 이더리움 주소에 귀속된 고유한 온체인 신원을 효과적으로 생성합니다.
-## 분산 신원 증명을 사용하세요 {#use-decentralized-identity}
+## 탈중앙화 신원 사용하기 {#use-decentralized-identity}
분산 신원 증명 솔루션을 위한 기반으로 이더리움을 사용하는 야심 찬 프로젝트가 많이 있습니다.
-- **[이더리움 이름 서비스(ENS)](https://ens.domains/)** - _이더리움 지갑 주소, 콘텐츠 해시, 메타데이터 등 온체인 기반 컴퓨터용 식별 정보를 위한 탈중앙화 이름 시스템입니다._
-- **[SpruceID](https://www.spruceid.com/)** - _사용자가 제3자 서비스에 의존하지 않고 이더리움 계정과 ENS 프로필을 이용하여 디지털 신원을 직접 관리할 수 있도록 하는 분산 신원 증명 프로젝트입니다._
-- **[EAS(Ethereum Attestation Service)](https://attest.sh/)** - _모든 것에 대한 온체인 또는 오프체인 증명을 만들 수 있는 탈중앙화된 장부/프로토콜입니다._
-- **[인간 증명](https://www.proofofhumanity.id)** - _인간 증명(PoH: Proof of Humanity)은 이더리움 기반의 소셜 신원 증명 시스템입니다._
-- **[BrightID](https://www.brightid.org/)** - _소셜 그래프를 만들고 분석함으로써 신원 증명을 개혁하고자 하는 탈중앙화된 오픈소스의 소셜 신원 증명 네트워크입니다._
-- **[개인 증명 여권](https://passport.human.tech/)** - _탈중앙화 디지털 신원 정보 종합 플랫폼입니다._
+- **[Ethereum Name Service(ENS)](https://ens.domains/)** - _이더리움 지갑 주소, 콘텐츠 해시, 메타데이터와 같은 온체인, 기계 판독 가능 식별자를 위한 탈중앙화 이름 지정 시스템입니다._
+- **[이더리움으로 로그인(SIWE)](https://siwe.xyz/)** - _이더리움 계정으로 인증하기 위한 공개 표준입니다._
+- **[SpruceID](https://www.spruceid.com/)** - _사용자가 제3자 서비스에 의존하지 않고 이더리움 계정과 ENS 프로필로 디지털 신원을 제어할 수 있도록 하는 탈중앙화 신원 프로젝트입니다._
+- **[이더리움 증명 서비스(EAS)](https://attest.org/)** - _어떤 것에 대해서든 온체인 또는 오프체인 증명을 생성하기 위한 탈중앙화 원장/프로토콜입니다._
+- **[Proof of Humanity](https://www.proofofhumanity.id)** - _Proof of Humanity(또는 PoH)는 이더리움에 구축된 소셜 신원 확인 시스템입니다._
+- **[BrightID](https://www.brightid.org/)** - _소셜 그래프의 생성 및 분석을 통해 신원 확인을 개혁하고자 하는 탈중앙화 오픈 소스 소셜 신원 네트워크입니다._
+- **[walt.id](https://walt.id)** — _개발자와 조직이 자기 주권 신원 및 NFT/SBT를 활용할 수 있도록 지원하는 오픈 소스 탈중앙화 신원 및 지갑 인프라입니다._
+- **[Veramo](https://veramo.io/)** - _누구나 애플리케이션에서 암호학적으로 검증 가능한 데이터를 쉽게 사용할 수 있도록 하는 JavaScript 프레임워크입니다._
-## 더 읽을 거리 {#further-reading}
+## 더 읽어보기 {#further-reading}
-### 문서 {#articles}
+### 관련 기사 {#articles}
-- [블록체인 사용 사례: 디지털 신원 증명 블록체인](https://consensys.net/blockchain-use-cases/digital-identity/) — *ConsenSys*
-- [이더리움 ERC725란 무엇인가요? 블록체인의 자기 주권 신원 관리](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — *Sam Town*
-- [블록체인은 어떻게 디지털 신원 문제를 해결하는가](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_
-- [분산 신원이란 무엇이며, 왜 중요한가?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
+- [블록체인 사용 사례: 디지털 신원에서의 블록체인](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_
+- [이더리움 ERC725란 무엇인가요? 블록체인에서의 자기 주권 신원 관리](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Sam Town_
+- [블록체인이 디지털 신원 문제를 해결할 수 있는 방법](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_
+- [탈중앙화 신원이란 무엇이며 왜 관심을 가져야 하는가?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
+- [탈중앙화 신원 소개](https://walt.id/white-paper/digital-identity) — _Dominik Beron_
-### 영상 {#videos}
+### 동영상 {#videos}
-- [분산 신원 증명 (보너스 실시간 세션)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s): _Andreas Antonopolous의 분산 신원 증명에 대한 설명 영상_
-- [Ceramic, IDX, React, 3ID Connect를 사용하여 이더리움과 분산 신원 증명에 로그인하기](https://www.youtube.com/watch?v=t9gWZYJxk7c): *Nader Dabit의 이더리움 지갑을 사용하여 사용자 프로필을 생성, 조회, 업데이트하기 위한 신원 관리 시스템을 구축하는 유튜브 튜토리얼*
-- [BrightID - 이더리움의 분산 신원 증명](https://www.youtube.com/watch?v=D3DbMFYGRoM): *이더리움을 위한 분산 신원 증명 솔루션인 BrightID에 대해 얘기하는 Bankless 팟캐스트 에피소드*
-- [오프체인 인터넷: 분산 신원 증명 & 검증 가능한 증명서](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — Evin McMullen의 2022년 EthDenver 발표
+- [탈중앙화 신원(보너스 라이브스트림 세션)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) — _Andreas Antonopolous의 탈중앙화 신원에 대한 훌륭한 설명 영상_
+- [Ceramic, IDX, React, 3ID Connect를 사용하여 이더리움으로 로그인 및 탈중앙화 신원 구현하기](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _Nader Dabit이 이더리움 지갑을 사용하여 사용자 프로필을 생성, 읽기 및 업데이트하는 신원 관리 시스템을 구축하는 방법에 대한 YouTube 튜토리얼_
+- [BrightID - 이더리움의 탈중앙화 신원](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _이더리움을 위한 탈중앙화 신원 솔루션인 BrightID에 대해 논의하는 Bankless 팟캐스트 에피소드_
+- [오프체인 인터넷: 탈중앙화 신원 및 검증 가능한 자격 증명](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — Evin McMullen의 EthDenver 2022 발표
+- [검증 가능한 자격 증명 설명](https://www.youtube.com/watch?v=ce1IdSr-Kig) - Tamino Baumann의 데모가 포함된 YouTube 설명 영상
### 커뮤니티 {#communities}
-- [GitHub의 ERC-725 연합](https://github.com/erc725alliance): *이더리움 블록체인에서 신원 관리를 위한 ERC 725 표준의 지원자*
-- [EthID 디스코드 서버](https://discord.com/invite/ZUyG3mSXFD): *이더리움 로그인을 개발 중인 개발자와 매니아의 커뮤니티*
-- [Veramo Labs](https://discord.gg/sYBUXpACh4): *애플리케이션의 검증 가능한 데이터를 위한 프레임워크 개발자의 커뮤니티*
+- [GitHub의 ERC-725 얼라이언스](https://github.com/erc725alliance) — _이더리움 블록체인에서 신원을 관리하기 위한 ERC725 표준 지지자_
+- [EthID 디스코드 서버](https://discord.com/invite/ZUyG3mSXFD) — _이더리움으로 로그인 및 이더리움 팔로우 프로토콜을 개발하는 열성팬 및 개발자 커뮤니티_
+- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _애플리케이션을 위한 검증 가능한 데이터 프레임워크를 구축하는 데 기여하는 개발자 커뮤니티_
+- [walt.id](https://discord.com/invite/AW8AgqJthZ) — _다양한 산업 분야에서 탈중앙화 신원 사용 사례를 연구하는 개발자 및 빌더 커뮤니티_
diff --git a/public/content/translations/ko/defi/index.md b/public/content/translations/ko/defi/index.md
index eff3d768d69..b9607e4ad81 100644
--- a/public/content/translations/ko/defi/index.md
+++ b/public/content/translations/ko/defi/index.md
@@ -1,18 +1,19 @@
---
-title: 탈중앙화 금융(DeFi)
-description: 이더리움의 디파이 개요
+title: "탈중앙화 금융(DeFi)"
+metaTitle: "디파이란 무엇인가요? | 탈중앙화 금융의 혜택과 활용"
+description: "이더리움의 디파이 개요"
lang: ko
template: use-cases
emoji: ":money_with_wings:"
image: /images/use-cases/defi.png
-alt: 레고 블록으로 만든 이더리움 로고.
+alt: "레고 블록으로 만든 이더리움 로고."
sidebarDepth: 2
-summaryPoint1: 현재 금융 시스템에 대한 글로벌하고 개방적인 대안입니다.
-summaryPoint2: 대출, 저축, 투자, 거래 등을 할 수 있는 제품입니다.
-summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을 기반으로 합니다.
+summaryPoint1: "현재 금융 시스템에 대한 글로벌하고 개방적인 대안입니다."
+summaryPoint2: "대출, 저축, 투자, 거래 등을 할 수 있는 제품입니다."
+summaryPoint3: "누구나 프로그래밍할 수 있는 오픈 소스 기술을 기반으로 합니다."
---
-디파이는 인터넷 시대에 맞게 구축된 개방적이고 글로벌한 금융 시스템이며, 수십 년 된 인프라와 프로세스에 의해 불투명하며 엄격하게 통제되어 함께 유지되는 시스템의 대안입니다. 그것은 당신에게 당신의 돈에 대한 통제력과 가시성을 제공합니다. 글로벌 시장으로의 진출과 현지 통화나 은행 옵션에 대한 대안도 제공합니다. 디파이 제품은 인터넷 연결이 되는 모든 사람에게 금융 서비스를 제공하며 대체로 사용자가 소유하고 관리합니다. 지금까지 수십억 달러 가치의 암호화폐가 디파이 애플리케이션을 통해 유입되었으며 매일 성장하고 있습니다.
+디파이는 인터넷 시대에 맞게 구축된 개방적이고 글로벌한 금융 시스템이며, 수십 년 된 인프라와 프로세스에 의해 불투명하며 엄격하게 통제되어 함께 유지되는 시스템의 대안입니다. 그것은 당신에게 당신의 돈에 대한 통제력과 가시성을 제공합니다. 글로벌 시장으로의 진출과 현지 통화나 은행 옵션에 대한 대안도 제공합니다. 디파이 제품은 인터넷 연결이 되는 모든 사람에게 금융 서비스를 제공하며 대체로 사용자가 소유하고 관리합니다. 지금까지 수백억 달러 상당의 암호화폐가 디파이 애플리케이션을 통해 유입되었으며, 그 규모는 매일 성장하고 있습니다.
## 디파이가 무엇인가요? {#what-is-defi}
@@ -37,14 +38,14 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
### 비교 {#defi-comparison}
-| 디파이 | 기존 금융 |
-| ----------------------------------------------------------- | ------------------------------------------------------- |
-| 당신이 돈을 소유합니다. | 기업이 당신의 돈을 소유합니다. |
-| 당신이 돈이 어디로 송금되고 어떻게 소비되는지 통제합니다. | 미상환 위험이 있는 차용자에게 대출 등 기업이 돈을 잘못 관리하지 않으리라고 신뢰해야 합니다. |
-| 자금 이체가 몇 분 내로 이루어집니다. | 결제는 수동 프로세스로 인해 며칠이 소요될 수 있습니다. |
-| 트랜잭션 활동이 가명입니다. | 금융 활동은 당신의 신원과 밀접하게 연관되어 있습니다. |
-| 디파이는 모두에게 열려 있습니다. | 금융 서비스를 이용하려면 신청해야 합니다. |
-| 시장이 항상 열려 있습니다. | 직원들에게 휴식이 필요하기 때문에 시장이 문을 닫습니다. |
+| 디파이 | 기존 금융 |
+| --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
+| 당신이 돈을 소유합니다. | 기업이 당신의 돈을 소유합니다. |
+| 당신이 돈이 어디로 송금되고 어떻게 소비되는지 통제합니다. | 미상환 위험이 있는 차용자에게 대출 등 기업이 돈을 잘못 관리하지 않으리라고 신뢰해야 합니다. |
+| 자금 이체가 몇 분 내로 이루어집니다. | 결제는 수동 프로세스로 인해 며칠이 소요될 수 있습니다. |
+| 트랜잭션 활동이 가명입니다. | 금융 활동은 당신의 신원과 밀접하게 연관되어 있습니다. |
+| 디파이는 모두에게 열려 있습니다. | 금융 서비스를 이용하려면 신청해야 합니다. |
+| 시장이 항상 열려 있습니다. | 직원들에게 휴식이 필요하기 때문에 시장이 문을 닫습니다. |
| 투명성을 기반으로 구축되었으며, 누구나 제품 데이터를 보고 시스템이 어떻게 작동하는지 검사할 수 있습니다. | 금융 기관은 알 수 없는 미스터리입니다. 대출 내역, 관리 자산에 대한 기록 등을 볼 수 없습니다. |
@@ -55,17 +56,17 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
여러 면에서 비트코인은 최초의 디파이 애플리케이션이었습니다. 비트코인으로 가치를 소유하고 통제하며 전 세계 어디서든 보낼 수 있습니다. 이것은 서로를 믿지 않는 많은 사람들에게 신뢰할 수 있는 중개자가 없이도 계정 장부에 합의할 수 있도록 방법을 제공하는 것으로 이뤄집니다. 비트코인은 누구에게나 열려 있으며 누구도 규칙을 변경할 권한이 없습니다. 희소성 및 개방성과 같은 비트코인의 규칙은 기술에 포함되어 있습니다. 정부가 화폐를 찍어내 개인이 저축한 돈의 가치가 낮아지고 기업이 시장을 폐쇄할 수 있는 기존 금융과는 다릅니다.
-이더리움은 이를 기반으로 합니다. 비트코인과 마찬가지로 규칙을 변경할 수 없으며 모든 사람이 액세스할 수 있습니다. 또한 [스마트 계약](/glossary/#smart-contract)을 사용하여 이 디지털 화폐를 프로그래밍할 수 있으며, 가치를 저장하고 보내는 것 이상의 작업이 가능합니다.
+이더리움은 이를 기반으로 합니다. 비트코인과 마찬가지로 규칙을 변경할 수 없으며 모든 사람이 액세스할 수 있습니다. 또한 [스마트 계약](/glossary/#smart-contract)을 사용하여 이 디지털 화폐를 프로그래밍할 수 있으므로, 가치를 저장하고 전송하는 것 이상의 작업을 할 수 있습니다.
-## 프로그래밍 가능한 돈 {#programmable-money}
+## 프로그래밍 가능한 화폐 {#programmable-money}
-이건 이상하게 들립니다. "왜 제가 돈을 프로그래밍하고 싶겠어요?" 그러나 이것은 이더리움 토큰의 기본 기능일 뿐입니다. 누구나 로직을 지불금으로 프로그래밍할 수 있습니다. 그래서 당신은 금융기관이 제공하는 서비스와 함께 비트코인의 통제권과 보안을 얻을 수 있습니다. 이것을 통해 비트코인으로 할 수 없는 대부와 대출, 결제 일정 수립, 인덱스 펀드에 투자하기 등과 같은 것들을 암호화폐로 할 수 있습니다.
+이상하게 들릴 수 있습니다... "왜 내 돈을 프로그래밍해야 하지?" 하지만 이는 이더리움 토큰의 기본 기능 그 이상입니다. 누구나 로직을 지불금으로 프로그래밍할 수 있습니다. 그래서 당신은 금융기관이 제공하는 서비스와 함께 비트코인의 통제권과 보안을 얻을 수 있습니다. 이것을 통해 비트코인으로 할 수 없는 대부와 대출, 결제 일정 수립, 인덱스 펀드에 투자하기 등과 같은 것들을 암호화폐로 할 수 있습니다.
-
+
이더리움이 처음이시면 디파이 애플리케이션에 대한 제안을 살펴보세요.
디파이 앱 둘러보기
@@ -78,43 +79,43 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
대부분의 금융 서비스에는 탈중앙화된 대안이 있습니다. 그러나 이더리움은 완전히 새로운 금융 상품을 만들 수 있는 기회도 제공합니다. 이 목록은 계속 늘어납니다.
- [전 세계로 송금하기](#send-money)
-- [전 세계로 돈을 스트리밍하기](#stream-money)
-- [안정적인 통화에 액세스하기](#stablecoins)
+- [전 세계로 자금 스트리밍하기](#stream-money)
+- [스테이블코인 이용하기](#stablecoins)
- [담보로 자금 대출하기](#lending)
- [무담보 대출하기](#flash-loans)
- [암호화폐 저축 시작하기](#saving)
- [토큰 거래하기](#swaps)
-- [포트폴리오 확장하기](#investing)
-- [아이디어 자금 모으기](#crowdfunding)
+- [포트폴리오 성장시키기](#investing)
+- [아이디어에 자금 지원하기](#crowdfunding)
- [보험 가입하기](#insurance)
- [포트폴리오 관리하기](#aggregators)
-### 전 세계로 빠르게 송금하세요 {#send-money}
+### 전 세계로 빠르게 송금하기 {#send-money}
-이더리움은 블록체인으로서 안전하고 글로벌하게 트랜잭션을 전송할 수 있도록 설계되었습니다. 비트코인과 마찬가지로 이더리움은 이메일을 보내는 것만큼 쉽게 전 세계로 돈을 송금할 수 있습니다. 수령인의 [ENS 이름](/glossary/#ens)(예: bob.eth) 또는 지갑의 계정 주소를 입력하기만 하면 (일반적으로) 몇 분 내에 수령인에게 직접 지급됩니다. 지불금을 보내거나 받으려면 [지갑](/wallets/)이 필요합니다.
+이더리움은 블록체인으로서 안전하고 글로벌하게 트랜잭션을 전송할 수 있도록 설계되었습니다. 비트코인과 마찬가지로 이더리움은 이메일을 보내는 것만큼 쉽게 전 세계로 돈을 송금할 수 있습니다. 수령인의 [ENS 이름](/glossary/#ens)(예: bob.eth) 또는 지갑에 있는 계정 주소를 입력하기만 하면 일반적으로 몇 분 내에 결제 금액이 수령인에게 직접 전달됩니다. 결제를 보내거나 받으려면 [지갑](/wallets/)이 필요합니다.
- 결제 디앱 보기
+ 결제 탈중앙화앱 보기
#### 전 세계로 돈을 스트리밍하세요... {#stream-money}
이더리움으로 돈을 스트리밍할 수도 있습니다. 이렇게 하면 누군가에게 초 단위로 월급을 지급하여 필요할 때마다 돈을 받을 수 있습니다. 또는 초 단위로 보관 사물함이나 전기 스쿠터를 빌릴 수 있습니다.
-이더리움의 가치 변동 때문에 [이더](/glossary/#ether)를 전송하거나 스트리밍하고 싶지 않다면, 이더리움의 대체 화폐인 [스테이블코인](/glossary/#stablecoin)을 사용해 볼 수 있습니다.
+가치 변동 때문에 [ETH](/glossary/#ether)를 전송하거나 스트리밍하고 싶지 않다면, 이더리움에 대한 대체 통화인 [스테이블코인](/glossary/#stablecoin)이 있습니다.
-### 안정적인 화폐에 액세스하세요 {#stablecoins}
+### 스테이블코인 이용하기 {#stablecoins}
암호 화폐 변동성은 많은 금융상품과 일반 지출에 문제가 됩니다. 디파이 커뮤니티는 스테이블 코인으로 이 문제를 해결했습니다. 그것의 가치는 보통 달러처럼 인기 있는 통화인 또 다른 자산에 고정되어 있습니다.
다이 또는 USDC와 같은 코인의 가치는 몇 센트 이내입니다. 이런 점 때문에 스테이블 코인은 돈 버는 것 또는 소매업에 적합합니다. 라틴 아메리카의 많은 사람들은 정부가 발행한 화폐로 매우 불확실한 시기에 저축한 돈을 지키는 방법으로 스테이블 코인을 사용했습니다.
- 스테이블 코인에 대해 더 보기
+스테이블코인에 대한 자세한 내용
@@ -127,26 +128,26 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
- 대출 기관에서 자산을 대출자가 대출할 수 있는 풀로 지급하는(유동성) 풀 기반.
- 대출용 디앱 보기
+ 대출 탈중앙화앱 보기
탈중앙화된 대출 기관을 사용하는 것은 이점이 많습니다.
-#### 개인 정보 보호를 통한 대출 {#borrowing-privacy}
+#### 개인 정보 보호 대출 {#borrowing-privacy}
오늘날, 돈을 빌려주고 대출하는 것은 모두 관련된 개인들을 중심으로 돌아갑니다. 은행은 돈을 빌려주기 전에 당신이 대출을 상환할 수 있는지 알아야 합니다.
-탈중앙화 대출은 어느 당사자도 신원을 확인할 필요 없이 가능합니다. 대신 차주는 대출이 상환되지 않을 경우 대주에게 자동으로 지급되는 담보를 설정해야 합니다. 일부 대출 기관은 [NFT](/glossary/#nft)를 담보로 받기도 합니다. NFT는 그림과 같은 고유 자산에 대한 증서입니다. [NFT에 대해 더 보기](/nft/)
+탈중앙화 대출은 어느 당사자도 신원을 확인할 필요 없이 가능합니다. 대신 차주는 대출이 상환되지 않을 경우 대주에게 자동으로 지급되는 담보를 설정해야 합니다. 일부 대출 기관에서는 [NFT](/glossary/#nft)를 담보로 받기도 합니다. NFT는 그림과 같은 고유 자산에 대한 증서입니다. [NFT에 대해 더 알아보기](/nft/)
이를 통해 신용 확인이나 개인 정보 양도 없이 돈을 빌릴 수 있습니다.
-#### 글로벌 펀드에 대한 액세스 {#access-global-funds}
+#### 글로벌 자금 접근성 {#access-global-funds}
-탈중앙화된 대출 기관을 이용하면 선택하신 은행이나 기관에서 보관하는 자금뿐만 아니라 전 세계에 예치된 자산에 액세스할 수 있게 됩니다. 이를 통해 대출을 더 쉽게 실행하고 금리를 향상합니다.
+탈중앙화된 대출 기관을 이용하면 선택하신 은행이나 기관에서 보관하는 자금뿐만 아니라 전 세계에 예치된 자산에 액세스할 수 있게 됩니다. 이를 통해 대출 접근성이 높아지고 이자율이 개선됩니다.
-#### 조세 효율성 {#tax-efficiencies}
+#### 세금 효율성 {#tax-efficiencies}
-대출을 통해 ETH(과세 대상 이벤트)를 판매하지 않고도 필요한 자금을 이용할 수 있습니다. 대신 스테이블 코인 대출을 위한 담보로 ETH를 사용할 수 있습니다. 이렇게 하면 필요한 현금 흐름이 생기고 ETH를 유지할 수 있습니다. 스테이블 코인은 ETH처럼 가치가 변동하지 않아 현금이 필요할 때 훨씬 좋은 토큰입니다. [스테이블 코인에 대해 더 보기](#stablecoins)
+대출을 통해 ETH(과세 대상 이벤트)를 판매하지 않고도 필요한 자금을 이용할 수 있습니다. 대신 스테이블 코인 대출을 위한 담보로 ETH를 사용할 수 있습니다. 이렇게 하면 필요한 현금 흐름이 생기고 ETH를 유지할 수 있습니다. 스테이블 코인은 ETH처럼 가치가 변동하지 않아 현금이 필요할 때 훨씬 좋은 토큰입니다. [스테이블코인에 대해 더 알아보기](#stablecoins)
#### 플래시 론 {#flash-loans}
@@ -172,24 +173,24 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
전형적인 금융 세계에서 위의 예시를 가능하게 하려면 엄청난 돈이 필요합니다. 이러한 돈벌이 전략은 기존의 부를 가진 사람들만이 접근할 수 있습니다. 플래시 론은 돈을 버는 것의 전제 조건이 돈을 소유하는 것이 아니라는 미래의 예시입니다.
- 플래시 론에 대해 더 보기
+ 플래시 론에 대해 더 알아보기
-### 암호화폐로 저축을 시작하세요 {#saving}
+### 암호화폐로 저축 시작하기 {#saving}
#### 대출 {#lending}
빌려주는 것으로 암호화폐의 이자를 벌어 실시간으로 자산이 늘어가는 걸 볼 수 있습니다. 현재 이자율은 지역 은행에서 얻을 수 있는 것보다 훨씬 높습니다(운 좋게 은행에 갈 수 있다면). 예시는 다음과 같습니다.
-- Aave와 같은 제품에 [스테이블 코인](/stablecoins/)인 100다이를 빌려줍니다.
+- Aave와 같은 제품에 [스테이블코인](/stablecoins/)인 100 다이를 대여합니다.
- 대출한 다이를 상징하는 토큰인 Aave 다이(aDai) 백 개를 받습니다.
-- 이자율에 따라 aDai는 증가하고 지갑에서 잔고가 늘어가는 걸 보실 수 있습니다. [연이율](/glossary/#apr)에 따라 지갑 잔액에는 며칠 또는 몇 시간 후에 100.1234와 같은 수치가 표시됩니다!
+- 이자율에 따라 aDai는 증가하고 지갑에서 잔고가 늘어가는 걸 보실 수 있습니다. [APR](/glossary/#apr)에 따라, 며칠 또는 몇 시간 후 지갑 잔액이 100.1234와 같이 표시됩니다!
- 언제든지 aDai 잔액과 동일한 금액의 일반 다이를 인출할 수 있습니다.
- 대출 디앱 보기
+ 대출 탈중앙화앱 보기
#### 무손실 복권 {#no-loss-lotteries}
@@ -205,12 +206,12 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
상금 풀은 위의 대출 예시와 같이 티켓 예금을 대출하여 발생하는 모든 이자로 생성됩니다.
- 풀투게더 사용해보기
+ PoolTogether 사용해 보기
-### 토큰을 교환하세요 {#swaps}
+### 토큰 교환 {#swaps}
이더리움에는 수천 개의 토큰이 있습니다. 탈중앙화 거래소(DEX)를 사용하면 원할 때마다 다른 토큰을 거래할 수 있습니다. 자산에 대한 통제권을 포기하지 마세요. 이것은 마치 다른 나라를 방문할 때 환전소를 이용하는 것과 같습니다. 하지만 디파이 버전은 절대 문을 닫지 않습니다. 시장은 연중무휴로 365일 운영되며 기술 덕에 거래를 수락할 사람을 항상 구할 수 있습니다.
@@ -229,24 +230,24 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
중앙화 거래소를 이용하면 거래 전에 자산을 예치해야 하고, 그 자산을 책임질 거래소를 신뢰해야 합니다. 자산이 예치되어 있으면 중앙화 거래소는 해커에게 매력적인 대상이기 때문에 자산이 위험합니다.
- 거래 디앱 보기
+ 거래 탈중앙화앱 보기
-### 포트폴리오를 확장하세요 {#investing}
+### 포트폴리오 성장시키기 {#investing}
이더리움에는 선택한 전략에 따라 포트폴리오를 확장하는 펀드 관리 제품이 있습니다. 이것은 자동적이고 모두에게 공개되며, 수익의 일부를 가져가는 인간 관리자가 필요 없습니다.
-좋은 예가 [디파이 펄스 인덱스 펀드(DPI)](https://defipulse.com/blog/defi-pulse-index/)입니다. 이 펀드는 포트폴리오에 항상 시가총액 기준 상위 디파이 토큰이 포함되도록 자동으로 편입 종목을 재조정합니다. 세부 사항을 관리할 필요가 없으며 원할 때마다 펀드에서 인출할 수 있습니다.
+좋은 예로 [DeFi Pulse Index fund (DPI)](https://defipulse.com/blog/defi-pulse-index/)가 있습니다. 이 펀드는 포트폴리오에 항상 시가총액 기준 상위 디파이 토큰이 포함되도록 자동으로 편입 종목을 재조정합니다. 세부 사항을 관리할 필요가 없으며 원할 때마다 펀드에서 인출할 수 있습니다.
- 투자 디앱 보기
+ 투자 탈중앙화앱 보기
-### 아이디어 자금을 모으세요 {#crowdfunding}
+### 아이디어에 자금 지원하기 {#crowdfunding}
이더리움은 크라우드 펀딩을 위한 이상적인 플랫폼입니다.
@@ -255,10 +256,10 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
- 예를 들면 모금자는 구체적인 기한과 최소 금액이 충족되지 않는 경우 자동 환불을 설정할 수 있습니다.
- 크라우드 펀딩 디앱 보기
+ 크라우드펀딩 탈중앙화앱 보기
-#### 2차 펀딩 {#quadratic-funding}
+#### 이차 펀딩 {#quadratic-funding}
이더리움은 오픈 소스 소프트웨어이며 지금까지의 많은 작업물이 커뮤니티에서 자금을 지원받았습니다. 이는 2차 펀딩이라는 흥미롭고 새로운 모금 모델의 성장으로 이어졌습니다. 2차 펀딩은 미래에 모든 공공재 유형에 자금을 지원하는 방식을 개선할 잠재력이 있습니다.
@@ -272,7 +273,7 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
이는 1달러의 기부를 100번 받은 프로젝트 A가 만 달러 기부를 한 번 받은 프로젝트 B보다 더 많은 펀딩을 받았다는 것을 의미합니다(매칭 풀의 크기에 따라 다름).
- 2차 펀딩에 대해 더 보기
+ 이차 펀딩에 대해 더 알아보기
@@ -281,10 +282,10 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
탈중앙화 보험은 보험을 더 싸고, 더 빠르게 돈을 지불할 수 있고, 더 투명하게 하는 것을 목표로 합니다. 더 많은 자동화가 이뤄지면 보험이 더욱 저렴해지고 지불도 훨씬 빨라집니다. 당신의 청구를 결정하는 데 사용되는 데이터는 완전히 투명합니다.
-이더리움 제품은 다른 소프트웨어와 마찬가지로 버그와 악용에 시달릴 수 있습니다. 그래서 현재 이 분야의 많은 보험 상품들은 자금 손실로부터 사용자를 보호하는 데 초점을 맞추고 있습니다. 그러나 살면서 발생할 수 있는 모든 사안으로 보장 범위를 확장하는 프로젝트가 있습니다. 이것의 좋은 예는 [케냐의 소규모 농부들을 가뭄과 홍수로부터 보호하는 것](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc)을 목표로 하는 이더리스크의 농작물 보험입니다. 탈중앙화 보험은 종종 일반적인 보험에서 제외되는 농부들에게 더 저렴한 보험을 제공할 수 있습니다.
+이더리움 제품은 다른 소프트웨어와 마찬가지로 버그와 악용에 시달릴 수 있습니다. 그래서 현재 이 분야의 많은 보험 상품들은 자금 손실로부터 사용자를 보호하는 데 초점을 맞추고 있습니다. 그러나 살면서 발생할 수 있는 모든 사안으로 보장 범위를 확장하는 프로젝트가 있습니다. 좋은 예로 [케냐의 소규모 자작농을 가뭄과 홍수로부터 보호](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc)하는 것을 목표로 하는 Etherisc의 농작물 보험이 있습니다. 탈중앙화 보험은 종종 일반적인 보험에서 제외되는 농부들에게 더 저렴한 보험을 제공할 수 있습니다.
- 보험 디앱 보기
+ 보험 탈중앙화앱 보기
@@ -294,14 +295,14 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
많은 일이 진행됨에 따라 모든 투자, 대출 및 거래를 추적할 수 있는 방법이 필요할 것입니다. 한 곳에서 디파이 활동을 조율할 수 있는 여러 제품이 있습니다. 이것이 디파이의 개방형 아키텍처의 아름다움입니다. 팀에서 여러 제품 간의 잔액을 볼 수 있는 인터페이스를 구축할 수 있을 뿐만 아니라 기능을 사용할 수도 있습니다. 디파이에 대해 더 알아갈 수록 이것이 유용할 것입니다.
- 포트폴리오 디앱 보기
+ 포트폴리오 탈중앙화앱 보기
## 디파이는 어떻게 작동하나요? {#how-defi-works}
-디파이는 암호화폐와 스마트 계약으로 중개인이 필요 없는 서비스를 제공합니다. 오늘날의 금융 세계에서 금융 기관은 거래의 보증인 역할을 합니다. 돈이 금융 기관을 통해 흐르기 때문에 금융 기관이 엄청난 힘을 갖게 됩니다. 게다가 전 세계 수십억 명의 사람들은 은행 계좌에 접근할 수도 없습니다.
+디파이는 암호화폐와 스마트 계약으로 중개인이 필요 없는 서비스를 제공합니다. 오늘날의 금융 세계에서 금융 기관은 거래의 보증인 역할을 합니다. 돈이 금융 기관을 통해 흐르기 때문에 금융 기관이 엄청난 힘을 갖게 됩니다. 게다가 전 세계 수십억 명의 사람들이 은행 계좌조차 이용할 수 없습니다.
디파이에서는 거래 시에 스마트 계약이 금융 기관을 대신합니다. 스마트 계약은 자금을 보유할 수 있고 특정 조건에 따라 송금/환불할 수 있는 일종의 이더리움 계정입니다. 스마트 계약이 실행 중에는 아무도 변경할 수 없습니다. 항상 프로그래밍된 대로 실행됩니다.
@@ -323,38 +324,43 @@ summaryPoint3: 누구나 프로그래밍할 수 있는 오픈 소스 기술을
디파이를 레이어 구조로 생각해 볼 수 있습니다.
1. 블록체인 – 이더리움에 거래 내역과 계정 상태가 들어있습니다.
-2. 자산 – [ETH](/what-is-ether/) 및 기타 토큰(화폐)입니다.
-3. 프로토콜 – 예를 들어 자산의 탈중앙화 대출을 제공하는 서비스와 같은 기능을 제공하는 [스마트 계약](/glossary/#smart-contract)입니다.
+2. 자산 – [ETH](/what-is-ether/) 및 기타 토큰(통화).
+3. 프로토콜 – 예를 들어 자산의 탈중앙화 대출을 허용하는 서비스와 같이 기능을 제공하는 [스마트 계약](/glossary/#smart-contract)입니다.
4. [애플리케이션](/apps/) – 프로토콜을 관리하고 액세스하는 데 사용하는 제품입니다.
-참고: 대부분의 탈중앙 금융은 [ERC-20 표준](/glossary/#erc-20)을 사용합니다. 디파이 애플리케이션은 랩드 이더(WETH)라는 이더리움 래퍼를 사용합니다. [랩드이더에 대해 자세히 알아보세요](/wrapped-eth).
+참고: 디파이의 상당 부분은 [ERC-20 표준](/glossary/#erc-20)을 사용합니다. 디파이 애플리케이션은 랩드 이더(WETH)라는 ETH용 래퍼를 사용합니다. [랩트 이더에 대해 더 알아보기](/wrapped-eth).
-## 디파이를 구축하세요 {#build-defi}
+## 디파이 구축하기 {#build-defi}
디파이는 오픈 소스 캠페인입니다. 디파이 프로토콜과 애플리케이션은 검사하고, 포크하고, 혁신할 수 있도록 누구에게나 열려 있습니다. 이러한 계층화된 스택(모두 동일한 베이스 블록체인과 자산을 공유함)으로 인해 프로토콜을 합치고 맞춰서 독특한 콤보 기회를 열 수 있습니다.
- 디앱 구축에 대해 더 보기
+ 탈중앙화앱 구축에 대해 더 알아보기
-## 부록 {#further-reading}
+## 더 읽어보기 {#further-reading}
### 디파이 데이터 {#defi-data}
-- [디파이 프라임](https://defiprime.com/)
-- [디파이 라마](https://defillama.com/)
+- [DeFi Prime](https://defiprime.com/)
+- [DeFi Llama](https://defillama.com/)
-### 디파이 기사 {#defi-articles}
+### 디파이 관련 기사 {#defi-articles}
-- [디파이 초보자 가이드](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _시드 코엘로-프라부, 2020년 1월 6일_
+- [디파이 초보자 가이드](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu, 2020년 1월 6일_
+- [EEA 디파이 위험 평가 가이드라인](https://entethalliance.org/specs/defi-risks/) – 디파이 프로토콜의 주요 위험을 식별하고 평가하는 방법에 대한 업계 지원 개요입니다.
-### 영상 {#videos}
+### 동영상 {#videos}
-- [Finematics - 탈중앙화 금융 교육](https://finematics.com/) – _디파이에 대한 영상_
-- [디파이언트](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _디파이 기초: 가끔은 혼란스러운 이곳에서 시작하려면 알아야 할 모든 것._
-- [화이트보드 크립토](https://youtu.be/17QRFlml4pA) _디파이란 무엇인가요?_
+- [Finematics - 탈중앙화 금융 교육](https://finematics.com/) – _DeFi에 관한 영상_
+- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _디파이 기초: 가끔은 난해한 이 분야를 시작하기 위해 알아야 할 모든 것._
+- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA) _디파이란 무엇인가?_
### 커뮤니티 {#communities}
-- [디파이 라마 디스코드 서버](https://discord.defillama.com/)
-- [디파이 펄스 디스코드 서버](https://discord.gg/Gx4TCTk)
+- [DeFi Llama 디스코드 서버](https://discord.defillama.com/)
+- [DeFi Pulse 디스코드 서버](https://discord.gg/Gx4TCTk)
+
+
+
+
diff --git a/public/content/translations/ko/desci/index.md b/public/content/translations/ko/desci/index.md
index 97b0c809ef4..52b2f5ee7f9 100644
--- a/public/content/translations/ko/desci/index.md
+++ b/public/content/translations/ko/desci/index.md
@@ -1,88 +1,89 @@
---
-title: 탈중앙화 과학(DeSci)
-description: 이더리움의 탈중앙화 과학 개요
+title: "탈중앙화 과학(DeSci)"
+description: "이더리움의 탈중앙화 과학 개요"
lang: ko
template: use-cases
emoji: ":microscope:"
sidebarDepth: 2
image: /images/future_transparent.png
alt: ""
-summaryPoint1: 현재 금융 시스템에 대한 글로벌하고 개방적인 대안입니다.
-summaryPoint2: 과학자들이 자금을 모으고, 실험을 실행하고, 데이터를 공유하고, 통찰력을 배포할 수 있게 하는 기술.
-summaryPoint3: 열린 과학 운동을 기반으로 합니다.
+summaryPoint1: "현재 과학 시스템에 대한 글로벌하고 개방적인 대안입니다."
+summaryPoint2: "과학자들이 자금을 모으고, 실험을 실행하고, 데이터를 공유하고, 통찰력을 배포할 수 있게 하는 기술."
+summaryPoint3: "열린 과학 운동을 기반으로 합니다."
---
## 탈중앙화 과학(DeSci)이란 무엇인가요? {#what-is-desci}
-탈중앙화 과학(DeSci)은 Web3 스택을 사용하여 과학 지식을 공정하고 공평하게 자금 조달, 생성, 검토, 신용, 저장 및 보급하기 위한 공공 인프라를 구축하는 것을 목표로 하는 운동입니다.
+탈중앙화 과학(DeSci)은 [Web3](/glossary/#web3) 스택을 사용하여 과학적 지식을 공정하고 공평하게 지원, 생성, 검토, 인정, 저장, 배포하기 위한 공공 인프라를 구축하려는 운동입니다.
DeSci는 과학자들이 그들의 연구를 공개적으로 공유하고 그들의 작업에 대한 공로를 인정받도록 장려하는 동시에 누구나 연구에 쉽게 접근하고 기여할 수 있는 생태계를 만드는 것을 목표로 합니다. DeSci는 과학적 지식은 모든 사람이 접근할 수 있어야 하며 과학 연구 과정은 투명해야 한다는 생각을 바탕으로 합니다. DeSci는 더 탈중앙화 과학 연구 모델을 만들고 있으며, 중앙 당국의 검열과 통제에 더 저항하고 있습니다. DeSci는 자금, 과학 도구 및 통신 채널에 대한 접근을 탈중앙화 시킴으로써 새롭고 틀에 얽매이지 않는 아이디어가 번창할 수 있는 환경을 조성하기를 희망합니다.
-탈중앙화 과학은 더 다양한 자금을 허용합니다 ([다오](/dao/), [ 펀딩 등에 대한 이차 기부](https://papers.ssrn.com/sol3/papers.cfm?Abstract_id=2003531)), 더 접근 가능한 접근 데이터와 방법, 그리고 재현에 대한 보상 제공함으로써.
+탈중앙화 과학은 ([DAO](/glossary/#dao), [이차 기부](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), 크라우드펀딩 등) 더 다양한 자금 출처를 허용하고, 데이터와 방법에 더 쉽게 접근할 수 있게 하며, 재현성에 대한 인센티브를 제공합니다.
### Juan Benet - DeSci 운동
-## DeSci가 과학을 개선시키는 방법 {#desci-improves-science}
+## DeSci가 과학을 개선하는 방법 {#desci-improves-science}
과학의 주요 문제에 대한 불완전한 목록과 탈중앙화 과학이 이러한 문제를 해결하는 데 어떻게 도움이 될 수 있는지
-| **탈중앙화된 과학** | **기존 과학** |
-| --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
-| 자금 분배는 이차 기부 또는 DAO와 같은 메커니즘을 사용하여 대중에 의해 결정됩니다. | 작고 폐쇄된 중앙 집권 그룹이 자금 분배를 통제합니다. |
-| 여러분은 역동적인 팀으로 전 세계의 동료들과 협력합니다. | 자금 조달 기관과 가정 기관은 당신의 협력을 제한합니다. |
-| 자금 조달 결정은 온라인에서 투명하게 이루어집니다. 새로운 자금 조달 메커니즘이 탐구되었습니다. | 자금 조달 결정은 긴 처리 시간과 제한된 투명성으로 이루어집니다. 자금 조달 메커니즘은 거의 존재하지 않습니다. |
-| 실험실 서비스 공유는 Web3 기초 요소를 사용하여 더 쉽고 투명하게 만들어졌습니다. | 실험실 자원을 공유하는 것은 종종 느리고 불투명합니다. |
-| 신뢰, 투명성 및 보편적 접근을 위해 Web3 기초 요소를 사용하는 새로운 출판 모델을 개발할 수 있습니다. | 여러분은 비효율적이고 편향적이고 착취적인 것으로 자주 인정되는 확립된 경로를 통해 출판합니다. |
-| 동료 검토 작업으로 토큰과 명성을 얻을 수 있습니다. | 동료 검토 작업은 무급이며, 영리 출판사에 도움이 됩니다. |
-| 여러분은 투명한 조건에 따라 생성하고 배포하는 지적 재산권(IP) 을 소유합니다. | 여러분의 홈 기관은 여러분이 생성한 IP를 소유합니다. IP에 대한 접근은 투명하지 않습니다. |
-| 모든 단계를 체인에 연결함으로써 실패한 노력의 데이터를 포함한 모든 연구를 공유합니다. | 출판 편향은 연구자들이 성공적인 결과를 얻은 실험을 공유할 가능성이 더 높다는 것을 의미합니다. |
+| **탈중앙화된 과학** | **기존 과학** |
+| ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
+| 자금 분배는 이차 기부 또는 DAO와 같은 메커니즘을 사용하여 대중이 결정합니다. | 작고, 폐쇄적이며, 중앙화된 그룹이 자금 분배를 통제합니다. |
+| 전 세계의 동료들과 역동적인 팀에서 협력합니다. | 자금 지원 기관과 소속 기관이 협업을 제한합니다. |
+| 자금 지원 결정은 온라인에서 **투명하게** 이루어집니다. 새로운 자금 조달 메커니즘이 탐구되었습니다. | 자금 지원 결정은 처리 시간이 길고 투명성이 제한적입니다. 자금 조달 메커니즘은 거의 존재하지 않습니다. |
+| [Web3](/glossary/#web3) 기술을 사용하여 실험실 서비스를 더 쉽고 투명하게 공유할 수 있습니다. | 실험실 자원 공유는 종종 느리고 불투명합니다. |
+| 신뢰, 투명성, 보편적 접근을 위해 Web3 프리미티브를 사용하는 새로운 퍼블리싱 모델을 개발할 수 있습니다. | 자주 비효율적이고, 편향되며, 착취적이라고 인정받는 기존 경로를 통해 출판합니다. |
+| 동료 검토 작업을 통해 **토큰과 평판을 얻을 수 있습니다**. | 동료 검토 작업은 무급이며 영리 목적의 출판사에 이익이 됩니다. |
+| 투명한 조건에 따라 생성하고 배포하는 지적 재산(IP)을 소유합니다. | 생성한 IP는 소속 기관이 소유합니다. IP에 대한 접근은 투명하지 않습니다. |
+| 모든 단계를 온체인에 기록하여 실패한 노력의 데이터를 포함한 모든 연구를 공유합니다. | 게재 편향은 연구자들이 성공적인 결과를 얻은 실험을 공유할 가능성이 더 높다는 것을 의미합니다. |
## 이더리움과 DeSci {#ethereum-and-desci}
-탈중앙화 과학 시스템은 강력한 보안, 최소한의 통화 및 거래 비용, 그리고 애플리케이션 개발을 위한 풍부한 생태계를 요구할 것입니다. 이더리움은 탈중앙화 과학 스택을 구축하는 데 필요한 모든 것을 제공합니다.
+탈중앙화 과학 시스템은 강력한 보안, 최소한의 통화 및 거래 비용, 그리고 애플리케이션 개발을 위한 풍부한 생태계를 요구할 것입니다. 이더리움은 탈중앙화 과학 기술을 구축하는 데 필요한 모든 것을 제공합니다.
## DeSci 사용 사례 {#use-cases}
-DeSci는 Web2 학계를 디지털 세계로 전환하기 위한 과학적 도구 세트를 구축하고 있습니다. 아래는 Web3가 과학계에 제공할 수 있는 사용 사례 샘플입니다.
+DeSci는 기존 학계를 디지털 세계로 온보딩하기 위한 과학적 툴셋을 구축하고 있습니다. 아래는 Web3가 과학계에 제공할 수 있는 사용 사례 샘플입니다.
-### 출판 사업 {#publishing}
+### 퍼블리싱 {#publishing}
-과학 출판은 논문을 생성하기 위해 과학자, 평론가 및 편집자의 무료 노동에 의존하지만 엄청난 출판 비용을 부과하는 출판사에 의해 관리되기 때문에 문제가 있는 것으로 유명합니다. 보통 세금을 통해 작품과 출판 비용을 간접적으로 지불한 대중은 종종 출판사에 다시 지불하지 않고는 같은 작품에 접근할 수 없습니다. 개별 과학 논문 출판에 드는 총 비용은 종종 5자리 숫자($USD)이며, 이는 과학 지식의 전체 개념을 [ 공익](https://www.econlib.org/library/Enc/PublicGoods.html)과 동시에 소수의 출판사에게 막대한 이익을 창출합니다.
+과학 출판은 논문을 생성하기 위해 과학자, 평론가 및 편집자의 무료 노동에 의존하지만 엄청난 출판 비용을 부과하는 출판사에 의해 관리되기 때문에 문제가 있는 것으로 유명합니다. 보통 세금을 통해 작품과 출판 비용을 간접적으로 지불한 대중은 종종 출판사에 다시 지불하지 않고는 같은 작품에 접근할 수 없습니다. 개별 과학 논문을 출판하는 데 드는 총비용은 종종 5자리 숫자(USD)에 달하며, 이는 소수의 출판사에 막대한 이익을 창출하는 동시에 과학적 지식을 [공공재](/glossary/#public-goods)로 보는 전체 개념을 훼손합니다.
-무료 및 오픈 액세스 플랫폼은 [ArXiv와 같은](https://arxiv.org/) 사전 인쇄 서버의 형태로 존재합니다. 그러나 이러한 플랫폼은 품질 관리, [반시빌(anti-sybil) 메커니즘 mechanisms](https://csrc.nist.gov/glossary/term/sybil_attack)이 부족하며 일반적으로 기사 수준의 글을 추적하지 않습니다. 즉, 일반적으로 전통적인 출판사에 제출하기 전에 작업을 홍보하는 데만 사용됩니다. 탈중앙화 허브 는 또한 출판된 논문에 무료로 접근할 수 있도록 하지만, 법적으로는 접근하지 않으며, 출판사가 이미 지불을 받고 엄격한 저작권법으로 작품을 포장한 후에만 가능합니다. 이것은 내장된 합법 메커니즘과 보상 모델로 접근 가능한 과학 논문과 데이터에 중요한 격차를 남깁니다. 그러한 시스템을 구축하기 위한 도구는 Web3에 존재합니다.
+무료 오픈 액세스 플랫폼은 [ArXiv](https://arxiv.org/)와 같은 사전 인쇄 서버의 형태로 존재합니다. 그러나 이러한 플랫폼은 품질 관리, [시빌 방지 메커니즘](/glossary/#anti-sybil)이 부족하고 일반적으로 논문 수준의 메트릭을 추적하지 않으므로, 보통 전통적인 출판사에 제출하기 전에 작업을 홍보하는 데만 사용됩니다. 탈중앙화 허브 는 또한 출판된 논문에 무료로 접근할 수 있도록 하지만, 법적으로는 접근하지 않으며, 출판사가 이미 지불을 받고 엄격한 저작권법으로 작품을 포장한 후에만 가능합니다. 이것은 내장된 합법 메커니즘과 보상 모델로 접근 가능한 과학 논문과 데이터에 중요한 격차를 남깁니다. 그러한 시스템을 구축하기 위한 도구는 Web3에 존재합니다.
-### 재생 가능성과 복제 가능성 {#reproducibility-and-replicability}
+### 재현성 및 복제성 {#reproducibility-and-replicability}
재생 가능성과 복제 가능성은 양질의 과학적 발견의 기초입니다.
- 재현 가능한 결과는 동일한 방법론을 사용하여 동일한 팀에서 연속으로 여러 번 달성할 수 있습니다.
- 동일한 실험 설정을 사용하여 다른 그룹에서 복제 가능한 결과를 얻을 수 있습니다.
-새로운 Web3 네이티브 도구는 재생 가능성과 복제 가능성이 검색의 기반이 되도록 보장할 수 있습니다. 우리는 학계의 기술 구조에 양질의 과학을 엮을 수 있습니다. Web3는 원시 데이터, 계산 엔진 및 응용 프로그램 결과와 같은 각 분석 구성 요소에 대한 증명을 만들 수 있는 기능을 제공합니다. 합의 시스템의 장점은 이러한 구성 요소를 유지하기 위해 신뢰할 수 있는 네트워크가 생성될 때, 각 네트워크 참가자는 계산을 재현하고 각 결과를 검증할 책임이 있다는 것입니다.
+새로운 Web3 네이티브 도구는 재생 가능성과 복제 가능성이 검색의 기반이 되도록 보장할 수 있습니다. 우리는 학계의 기술 구조에 양질의 과학을 엮을 수 있습니다. Web3는 원시 데이터, 계산 엔진, 애플리케이션 결과 등 각 분석 구성 요소에 대한 [증명](/glossary/#attestation)을 생성하는 기능을 제공합니다. 합의 시스템의 장점은 이러한 구성 요소를 유지하기 위해 신뢰할 수 있는 네트워크가 생성될 때, 각 네트워크 참가자는 계산을 재현하고 각 결과를 검증할 책임이 있다는 것입니다.
-### 펀딩 {#funding}
+### 자금 지원 {#funding}
-과학 자금 조달을 위한 현재 표준 모델은 개인이나 과학자 그룹이 자금 조달 기관에 서면 신청서를 작성하는 것입니다. 신뢰할 수 있는 개인으로 구성된 소규모 패널이 응용 프로그램을 평가한 다음 지원자 중 일부에게 기금을 수여하기 전에 지원자를 인터뷰합니다. 보조금 신청과 수령 사이에 때때로 수년의 대기 시간으로 이어지는 병목 현상을 제외하고 이 모델은 검토 패널의 편견, 이기심 및 정치에 매우 취약한 것으로 알려져 있습니다.
+과학 자금 조달을 위한 현재 표준 모델은 개인이나 과학자 그룹이 자금 조달 기관에 서면 신청서를 작성하는 것입니다. 신뢰할 수 있는 개인으로 구성된 소규모 패널이 응용 프로그램을 평가한 다음 지원자 중 일부에게 기금을 수여하기 전에 지원자를 인터뷰합니다. 보조금을 신청하고 수령하기까지 때로는 **수년을 기다려야** 하는 병목 현상을 만드는 것 외에도, 이 모델은 심사위원단의 편견, 사리사욕, 정치에 매우 취약한 것으로 알려져 있습니다.
연구에 따르면 보조금 검토 패널은 다른 패널에 주어진 동일한 제안이 매우 다른 결과를 가지고 있기 때문에 고품질 제안을 선택하는 데 열악한 역할을 합니다. 자금이 더 부족해짐에 따라, 그것은 더 지적으로 보수적인 프로젝트를 가진 더 많은 고위 연구자들의 더 작은 풀에 집중되었습니다. 그 효과는 비뚤어진 보상을 확고히 하고 혁신을 억누르는 경쟁적인 자금 조달 환경을 조성했습니다.
-Web3는 DAO와 Web3가 광범위하게 개발한 다양한 보상 모델을 실험함으로써 이 깨진 자금 조달 모델을 혼란에 빠뜨릴 가능성이 있습니다. [소급 공공재 자금 조달](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), [이차 자금 조달](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), [다오 운영 방식](https://www.antler.co/blog/daos-and-web3-governance-the-promise-implications-and-challenges-ahead) 그리고 [토큰화된 보상구조](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design)는 과학 자금에 혁명을 일으킬 수 있는 Web3 도구 중 일부입니다.
+Web3는 DAO와 Web3가 광범위하게 개발한 다양한 보상 모델을 실험함으로써 이 깨진 자금 조달 모델을 혼란에 빠뜨릴 가능성이 있습니다. [소급적 공공재 자금 지원](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), [이차 펀딩](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), [DAO 거버넌스](https://www.antler.co/blog/daos-and-web3-governance-the-promise-implications-and-challenges-ahead), [토큰화된 인센티브 구조](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design)는 과학 자금 지원에 혁명을 일으킬 수 있는 Web3 도구의 일부입니다.
### IP 소유권 및 개발 {#ip-ownership}
-지적 재산권(IP)은 대학에 갇히거나 생명공학에 사용되지 않는 것부터 평가하기 어려운 악명 높은 것까지 전통적인 과학에서 큰 문제입니다. 그러나 디지털 자산(과학 데이터 또는 기사와 같은) 의 소유권은 Web3가 [대체 불가능한 토큰(NFT)](/nft/)을 사용하여 예외적으로 잘 하는 것입니다.
+지적 재산권(IP)은 대학에 갇히거나 생명공학에 사용되지 않는 것부터 평가하기 어려운 악명 높은 것까지 전통적인 과학에서 큰 문제입니다. 그러나 과학 데이터나 논문과 같은 디지털 자산의 소유권은 Web3가 [대체 불가능한 토큰(NFT)](/glossary/#nft)을 사용하여 특히 잘 처리하는 부분입니다.
NFT가 향후 거래에 대한 수익을 원래 작성자에게 다시 전달할 수 있는 것과 같은 방식으로 연구자, 관리 기관(예: DAO) 또는 데이터를 수집한 주체에게 보상하기 위해 투명한 가치 귀속 체인을 설정할 수 있습니다.
-[IP-NFT](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6)는 또한 수행 중인 연구 실험의 분산된 데이터 저장소의 열쇠 역할을 할 수 있으며 NFT 및 [DeFi](/defi/) 금융화(금융에서 대출 풀 및 가치 평가까지)에 연결할 수 있습니다. 또한 [VitaDAO](https://www.vitadao.com/)와 같은 DAO와 같은 본질적으로 온체인 단체가 온 체인에서 직접 연구를 수행할 수 있습니다. 양도할 수 없는 ["soulbound" 토큰](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)의 출현은 또한 개인이 이더리움 주소와 연결된 경험과 자격 증명을 증명할 수 있도록 함으로써 DeFi 에서 중요한 역할을 할 수 있습니다.
+[IP-NFT](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6)는 수행 중인 연구 실험의 탈중앙화된 데이터 저장소에 대한 키 역할을 할 수도 있으며, NFT 및 [DeFi](/glossary/#defi) 금융화(분할부터 대출 풀 및 가치 평가까지)에 연결할 수 있습니다. 또한 [VitaDAO](https://www.vitadao.com/)와 같은 DAO와 같은 네이티브 온체인 엔티티가 온체인에서 직접 연구를 수행할 수 있도록 합니다.
+양도 불가능한 ["소울바운드" 토큰](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)의 등장은 개인이 자신의 이더리움 주소에 연결된 경험과 자격 증명을 증명할 수 있도록 하여 DeSci에서 중요한 역할을 할 수 있습니다.
### 데이터 저장, 액세스 및 아키텍처 {#data-storage}
과학적 데이터는 Web3 패턴을 사용하여 훨씬 더 쉽게 접근할 수 있으며, 분산 저장은 연구가 무시무시한 사건에서 살아남을 수 있게 해줍니다.
-출발점은 적절한 검증 가능한 자격 증명을 보유한 탈중앙화된 신원이 접근할 수 있는 시스템이어야 합니다. 이를 통해 신뢰할 수 있는 당사자가 민감한 데이터를 안전하게 복제할 수 있으며, 중복 및 검열 저항, 결과 재현, 심지어 여러 당사자가 협력하고 데이터 세트에 새로운 데이터를 추가할 수 있습니다. [Compute-to-data](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol)와 같은 기밀 컴퓨팅 방법은 원시 데이터 복제에 대한 대체 액세스 메커니즘을 제공하여 대부분의 민감한 데이터에 대한 신뢰할 수 있는 연구 환경을 조성합니다. 신뢰할 수 있는 연구 환경은 [NHS에 의해 인용되었으며](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb) 연구자들이 코드와 관행을 공유하기 위해 표준화 환경을 사용하여 현장에서 데이터와 안전하게 작업할 수 있는 생태계를 만드는 데이터 개인정보 보호 및 협업에 대한 미래 지향적인 솔루션입니다.
+출발점은 적절한 검증 가능한 자격 증명을 보유한 탈중앙화된 신원이 접근할 수 있는 시스템이어야 합니다. 이를 통해 신뢰할 수 있는 당사자가 민감한 데이터를 안전하게 복제할 수 있으며, 중복 및 검열 저항, 결과 재현, 심지어 여러 당사자가 협력하고 데이터 세트에 새로운 데이터를 추가할 수 있습니다. [컴퓨트 투 데이터](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol)와 같은 기밀 컴퓨팅 방법은 원시 데이터 복제에 대한 대안적인 액세스 메커니즘을 제공하여 가장 민감한 데이터에 대한 신뢰할 수 있는 연구 환경을 만듭니다. 신뢰할 수 있는 연구 환경은 연구자가 코드 및 관행 공유를 위해 표준화된 환경을 사용하여 현장에서 데이터를 안전하게 사용할 수 있는 생태계를 조성함으로써 데이터 개인 정보 보호 및 협업을 위한 미래 지향적인 솔루션으로 [NHS에 의해 인용되었습니다](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb).
유연한 Web3 데이터 해결책은 위의 시나리오를 지원하고 연구자가 액세스 권한이나 수수료 없이 공공재 만들 수 있는 진정한 개방형 과학의 기반을 제공합니다. IPFS, Arweave 및 Filecoin과 같은 Web3 공용 데이터 해결책은 탈중앙화에 최적화되어 있습니다. 예를 들어, 기후변화는 기상 관측소와 예측 기후 모델을 포함한 기후 및 날씨 데이터에 대한 보편적인 접근을 제공합니다.
@@ -90,48 +91,49 @@ NFT가 향후 거래에 대한 수익을 원래 작성자에게 다시 전달할
프로젝트를 탐색하고 DeSci 커뮤니티에 가입하세요.
-- [DeSci.Global: 글로벌 이벤트 및 모임 일정](https://desci.global)
-- [과학을 위한 블록체인 Telegram](https://t.me/BlockchainForScience)
-- [Molecule: 연구 프로젝트에 자금을 지원하고 자금을 지원받으세요](https://discover.molecule.to/)
-- [VitaDAO: 장수 연구를 위한 후원 연구 계약을 통해 자금을 받으세요](https://www.vitadao.com/)
-- [ResearchHub: 과학적 결과를 게시하고 동료들과 대화에 참여하세요](https://www.researchhub.com/)
-- [dClimate API: 분산된 커뮤니티에서 수집한 기후 데이터 쿼리](https://www.dclimate.net/)
-- [DeFi Foundation: DeFi 게시 도구 빌더](https://descifoundation.org/)
-- [DeSci.World: 사용자가 보고, 탈중앙화 과학에 참여할 수 있는 원스톱 상점](https://desci.world)
-- [플레밍 프로토콜: 협업 생물 의학 발견을 촉진하는 오픈 소스 데이터 경제](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd)
-- [OceanDAO: DAO에서 관리하는 데이터 관련 과학을 위한 펀딩](https://oceanprotocol.com/dao)
-- [Opscientia: 개방형 탈중앙화 과학 작업 흐름](https://opsci.io/research/)
-- [Bio.xyz: 생명공학 DAO 또는 desci 프로젝트에 자금을 지원받으세요](https://www.molecule.to/)
-- [ResearchHub: 과학적 결과를 게시하고 동료들과 대화에 참여하세요](https://www.researchhub.com/)
-- [VitaDAO: 장수 연구를 위한 후원 연구 계약을 통해 자금을 받으세요](https://www.vitadao.com/)
-- [플레밍 프로토콜: 협업 생물 의학 발견을 촉진하는 오픈 소스 데이터 경제](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd)
-- [능동적 추론 실험실](https://www.activeinference.org/)
-- [CureDAO: 지역 사회 소유의 정밀 건강 플랫폼.](https://docs.curedao.org/)
-- [IdeaMarkets: 탈중앙화 과학적 신뢰성을 가능하게 합니다.](https://ideamarket.io/)
+- [DeSci.Global: 글로벌 이벤트 및 밋업 캘린더](https://desci.global)
+- [Blockchain for Science 텔레그램](https://t.me/BlockchainForScience)
+- [Molecule: 연구 프로젝트에 자금을 지원하고 자금 지원받기](https://www.molecule.xyz/)
+- [VitaDAO: 수명 연장 연구를 위한 후원 연구 계약을 통해 자금 지원받기](https://www.vitadao.com/)
+- [ResearchHub: 과학적 결과를 게시하고 동료들과 대화하기](https://www.researchhub.com/)
+- [dClimate API: 탈중앙화 커뮤니티에서 수집한 기후 데이터 쿼리](https://www.dclimate.net/)
+- [DeSci Foundation: DeSci 퍼블리싱 도구 빌더](https://descifoundation.org/)
+- [DeSci.World: 사용자가 탈중앙화 과학을 보고 참여할 수 있는 원스톱 숍](https://desci.world)
+- [OceanDAO: 데이터 관련 과학을 위한 DAO 거버넌스 펀딩](https://oceanprotocol.com/)
+- [Opscientia: 개방형 탈중앙화 과학 워크플로](https://opsci.io/research/)
+- [Bio.xyz: 생명공학 DAO 또는 desci 프로젝트를 위한 자금 지원받기](https://www.bio.xyz/)
+- [Fleming Protocol: 협업 생물의학 발견을 촉진하는 오픈 소스 데이터 경제](http://flemingprotocol.io/)
+- [Active Inference Institute](https://www.activeinference.org/)
+- [IdeaMarkets: 탈중앙화된 과학적 신뢰성 지원](https://ideamarket.io/)
- [DeSci Labs](https://www.desci.com/)
+- [ValleyDAO: 합성 생물학 연구를 위한 자금 및 중개 연구를 지원하는 개방형 글로벌 커뮤니티](https://www.valleydao.bio)
+- [Cerebrum DAO: 뇌 건강을 증진하고 신경 퇴행을 예방하기 위한 솔루션 소싱 및 육성](https://www.cerebrumdao.com/)
+- [CryoDAO: 동결 보존 분야의 문샷 연구에 자금 지원](https://www.cryodao.org)
+- [Elata: 정신과 의학의 미래에 목소리를 내세요](https://www.elata.bio/)
-우리는 새로운 프로젝트에 대한 제안을 환영합니다 - 시작하려면 [목록 정책](/contributing/adding-desci-projects/)을 보세요!
+등록할 새로운 프로젝트에 대한 제안을 환영합니다. 시작하려면 [등록 정책](/contributing/adding-desci-projects/)을 확인해 주세요!
-## 더 읽을거리 {#further-reading}
+## 더 읽어보기 {#further-reading}
-- [Jocelynn Pearl과 Ultrarare의 DeSci Wiki](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#)
-- [A16z 미래를 위한 Jocelynn Pearl의 분산형 생명공학 가이드](https://future.a16z.com/a-guide-to-decentralized-biotech/)
-- [DeSci의 사례](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/)
+- [Jocelynn Pearl 및 Ultrarare의 DeSci 위키](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#)
+- [a16z future를 위해 Jocelynn Pearl이 작성한 탈중앙화 생명공학 가이드](https://future.a16z.com/a-guide-to-decentralized-biotech/)
+- [DeSci를 지지하는 이유](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/)
- [DeSci 가이드](https://future.com/what-is-decentralized-science-aka-desci/)
-- [탈중앙화 과학 참고 자료](https://www.vincentweisser.com/desci)
-- [분자의 바이오제약회사 IP-NFT - 기술 설명](https://molecule.to/blog/molecules-biopharma-ip-nfts-a-technical-description)
-- [존 스타의 신뢰할 수 없는 과학 시스템 구축](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673)
-- [생명공학 DAO의 출현](https://molecule.to/blog/the-emergence-of-biotech-daos)
-- [Paul Kohlhaas - DeSci: 분산 과학의 미래(팟캐스트)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a)
-- [분산 과학을 위한 적극적인 추론 존재론: 위치한 감각 만들기에서 Epistemic Commons까지](https://zenodo.org/record/6320575)
-- [DeSci: 사무엘 아키노쇼의 연구의 미래](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec)
-- [나디아의 과학 자금 조달 (끝맺음말: DeSci 및 새로운 암호화 기초 요소)](https://nadia.xyz/science-funding)
-- [탈중앙화는 약물 개발을 방해하고 있습니다.](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f)
-
-### 영상 {#videos}
-
-- [탈중앙화 과학이란 무엇인가요?](https://www.youtube.com/watch?v=-DeMklVWNdA)
-- [장수 연구와 암호화폐의 교차점에 대한 비탈릭 부테린과 과학자 오브리 드 그레이의 대화](https://www.youtube.com/watch?v=x9TSJK1widA)
-- [과학 출판이 망가졌습니다. Web3가 고칠 수 있나요?](https://www.youtube.com/watch?v=WkvzYgCvWj8)
-- [후안 베넷 - DeSci, 독립 연구소 및 대규모 데이터 과학](https://www.youtube.com/watch?v=zkXM9H90g_E)
-- [Sebastian Brunemeier - DeSci가 생물 의학 연구 및 벤처 캐피탈을 변화시킬 수 있는 방법](https://www.youtube.com/watch?v=qB4Tc3FcVbM)
+- [탈중앙화 과학 리소스](https://www.vincentweisser.com/desci)
+- [Molecule의 바이오제약 IP-NFT - 기술 설명](https://www.molecule.xyz/blog/molecules-biopharma-ip-nfts-a-technical-description)
+- [Jon Starr의 신뢰가 필요 없는 과학 시스템 구축](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673)
+- [Paul Kohlhaas - DeSci: 탈중앙화 과학의 미래(팟캐스트)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a)
+- [탈중앙화 과학을 위한 능동적 추론 온톨로지: 상황 기반 의미 형성에서 인식적 공유지로](https://zenodo.org/record/6320575)
+- [Samuel Akinosho의 DeSci: 연구의 미래](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec)
+- [Nadia의 과학 자금 지원(에필로그: DeSci와 새로운 암호화 프리미티브)](https://nadia.xyz/science-funding)
+- [탈중앙화가 신약 개발을 혁신하다](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f)
+- [DeSci란 무엇인가 – 탈중앙화 과학?](https://usadailytimes.com/2022/09/12/what-is-desci-decentralized-science/)
+
+### 동영상 {#videos}
+
+- [탈중앙화 과학이란?](https://www.youtube.com/watch?v=-DeMklVWNdA)
+- [장수 연구와 암호화폐의 교차점에 대한 Vitalik Buterin과 과학자 Aubrey de Grey의 대화](https://www.youtube.com/watch?v=x9TSJK1widA)
+- [과학 출판이 망가졌습니다. Web3가 해결할 수 있을까?](https://www.youtube.com/watch?v=WkvzYgCvWj8)
+- [Juan Benet - DeSci, 독립 연구소 및 대규모 데이터 과학](https://www.youtube.com/watch?v=zkXM9H90g_E)
+- [Sebastian Brunemeier - DeSci가 생물의학 연구 및 벤처 캐피털을 혁신하는 방법](https://www.youtube.com/watch?v=qB4Tc3FcVbM)
+- [Paige Donner - Web3 및 블록체인을 이용한 오픈 사이언스 툴링](https://www.youtube.com/watch?v=nC-2QWQ-lgw&t=17s)
diff --git a/public/content/translations/ko/developers/docs/accounts/index.md b/public/content/translations/ko/developers/docs/accounts/index.md
new file mode 100644
index 00000000000..bdf4271142d
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/accounts/index.md
@@ -0,0 +1,137 @@
+---
+title: "이더리움 계정"
+description: "이더리움 계정에 대한 설명 - 이더리움 데이터 구조와 주요 키 페어 크립토그래피들의 관계"
+lang: ko
+---
+
+이더리움 계정은 이더(ETH) 잔액이 있으며 이더리움에 메시지를 전송할 수 있는 개체입니다. 계정은 사용자가 직접 제어하거나 스마트 계약을 통해 배포할 수도 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [이더리움 소개](/developers/docs/intro-to-ethereum/)를 읽어보시는 것을 권장합니다.
+
+## 계정 유형 {#types-of-account}
+
+이더리움에는 두 가지의 계정 종류가 있습니다.
+
+- 외부 계정 - 해당 계정의 개인 키가 있는 사람이라면 누구나 제어할 수 있습니다
+- 컨트랙트 계정 - 네트워크에 배포된 스마트 계약이며 코드를 통해 제어합니다 [스마트 계약](/developers/docs/smart-contracts/)에 대해 알아보기
+
+두 가지의 계정 종류 모두 아래와 같은 기능이 있습니다.
+
+- ETH 및 토큰 수령, 보유, 전송
+- 배포된 스마트 계약과 상호작용
+
+### 주요 차이점 {#key-differences}
+
+**외부 소유 계정**
+
+- 비용 없이 계정을 만들 수 있습니다.
+- 트랜잭션을 개시할 수 있습니다.
+- 외부 소유 계정 간에는 ETH 또는 토큰 전송 거래만 가능합니다.
+- 계정 활동을 제어하는 공개키와 비밀키로 만들어집니다.
+
+**컨트랙트 계정**
+
+- 네트워크 스토리지를 사용하기 때문에 계정을 만들 때 비용이 듭니다.
+- 트랜잭션 수신에 대한 응답으로만 메시지를 전송할 수 있습니다.
+- 외부 소유 계정에서 컨트랙트 계정으로의 트랜잭션은 토큰 전송이나 더 나아가 신규 컨트랙트 생성과 같은 다양한 작업을 실행할 수 있는 코드를 트리거 할 수 있습니다.
+- 컨트랙트 계정은 비밀키를 갖고 있지 않습니다. 대신, 스마트 컨트랙트 로직에 의해 제어됩니다.
+
+## 계정 살펴보기 {#an-account-examined}
+
+이더리움 계정에는 네 가지의 값이 있습니다.
+
+- `nonce` – 외부 소유 계정에서 전송한 트랜잭션 수 또는 컨트랙트 계정으로 생성된 컨트랙트 수를 나타내는 카운터입니다. 주어진 논스로는 한 계정당 하나의 트랜잭션만 수행될 수 있으며, 이는 이미 수행된 트랜잭션의 반복적인 전송과 수행을 이용한 반복 공격을 방지할 수 있습니다.
+- `balance` – 해당 주소가 보유하고 있는 wei의 값입니다. 웨이(Wei)는 ETH의 단위이며 100경 Wei는 1 ETH를 나타냅니다.
+- `codeHash` – 이 해시는 이더리움 가상 머신(EVM)에 있는 계정의 코드를 나타냅니다. 계약 계정에는 서로 다른 작업을 실행할 수 있도록 프로그램된 코드 조각들이 있습니다. 이 EVM 코드는 계정이 메시지 콜을 받았을 때 실행됩니다. 이 값은 다른 계정 값과는 다르게 바꿀 수 없습니다. 추후 검색을 위해 모든 코드 조각들은 상태 데이터베이스 내에 그에 해당하는 해쉬값 아래 보관됩니다. 이 해쉬값이 바로 codeHash입니다. 외부 소유 계정의 경우, codeHash 필드는 빈 문자열 해시입니다.
+- `storageRoot` – 스토리지 해시라고도 합니다. 계정의 스토리지 콘텐츠(256비트 정수 값 간의 매핑)를 인코딩하는 [머클 패트리샤 트리](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) 루트 노드의 256비트 해시입니다. 이는 256비트 정수 키의 Keccak-256 해시에서 RLP로 인코딩된 256비트 정수 값으로의 매핑으로 트라이에 인코딩됩니다. 이 트리는 계정에 저장된 내용을 해시로 인코딩한 것으로, 기본적으로는 비어 있습니다.
+
+
+_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)에서 발췌한 다이어그램_
+
+## 외부 소유 계정과 키 쌍 {#externally-owned-accounts-and-key-pairs}
+
+계정은 공개 및 비공개 암호화 키 쌍으로 구성됩니다. 이러한 키 쌍들로 발송인이 실제로 트랜잭션에 서명하였는 지 증명하고 위조를 방지할 수 있습니다. 개인 키는 트랜잭션에 서명하는 데 쓰이며, 계정과 연결된 자금을 보관할 수 있도록 합니다. 본인은 실제로 암호화폐를 소유하지 않으며, 개인 키만을 가지고 있다는 사실을 기억하세요. 자금은 언제나 이더리움 원장 상에 존재합니다.
+
+트랜잭션 전송인을 항상 검증할 수 있기 때문에 의심스러운 사용자들이 가짜 트랜잭션을 전송하는 것을 방지할 수 있습니다.
+
+앨리스가 계정에서 밥의 계정으로 이더를 보내려면 엘리스는 트랜잭션 요청을 생성한 후 검증을 위해 트랜잭션을 네트워크로 보내야 합니다. 이더리움의 공개 키 암호 사용은 앨리스가 그 트랜잭션 요청을 처음 개시함을 증명할 수 있음을 보장합니다. 암호화 메커니즘이 없다면, 악의적 상대방인 이브가 "앨리스의 계정에서 이브의 계정으로 5 ETH 전송"과 같은 요청을 그냥 공개적으로 퍼뜨릴 수 있고 아무도 그러한 요청이 앨리스로부터 오지 않았음을 검증할 수 없을 겁니다.
+
+## 계정 생성 {#account-creation}
+
+계정을 생성하려면 대부분의 라이브러리가 무작위 비공개 키를 생성해 줍니다.
+
+개인 키는 64개의 16진수 문자로 이루어져 있고 비밀번호로 암호화 가능합니다.
+
+예시:
+
+`fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f`
+
+[타원 곡선 디지털 서명 알고리즘](https://wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm)을 사용하여 개인 키에서 공개 키가 생성됩니다. 공개 키의 Keccak-256 해시값 중 마지막 20바이트를 가져와 맨 앞에 `0x`를 추가하면 계정의 공개 주소를 얻을 수 있습니다.
+
+즉, 외부 소유 계정(EOA)은 42자의 주소(20바이트 세그먼트, 40개의 16진수 문자와 `0x` 접두사)로 구성됩니다.
+
+예시:
+
+`0x5e97870f263700f46aa00d967821199b9bc5a120`
+
+다음 예제는 [Clef](https://geth.ethereum.org/docs/tools/clef/introduction)라는 서명 도구를 사용하여 새 계정을 생성하는 방법을 보여줍니다. Clef는 계정 관리 및 서명 도구로 이더리움 클라이언트인 [Geth](https://geth.ethereum.org)와 함께 제공됩니다. `clef newaccount` 명령어는 새로운 키 쌍을 생성하고 암호화된 키스토어에 저장합니다.
+
+```
+> clef newaccount --keystore
+
+생성할 새 계정의 암호를 입력하세요:
+>
+
+------------
+INFO [10-28|16:19:09.156] 새 키가 생성되었습니다 address=0x5e97870f263700f46aa00d967821199b9bc5a120
+WARN [10-28|16:19:09.306] 키 파일을 백업하세요 path=/home/user/go-ethereum/data/keystore/UTC--2022-10-28T15-19-08.000825927Z--5e97870f263700f46aa00d967821199b9bc5a120
+WARN [10-28|16:19:09.306] 암호를 꼭 기억하세요!
+생성된 계정 0x5e97870f263700f46aa00d967821199b9bc5a120
+```
+
+[Geth 문서](https://geth.ethereum.org/docs)
+
+개인 키로부터 새 공개 키를 파생하는 것은 가능하지만, 공개 키로부터 개인 키를 파생할 수는 없습니다. 개인 키를 안전하게 보관하고 이름 그대로 비공개(PRIVATE)로 유지하는 것이 중요합니다.
+
+여러분은 메세지와 트랜잭션을 서명해서 서명을 만들기 위해서 개인 키가 필요합니다. 그러면 다른이들은 여러분의 공개 키를 도출해서 그 메시지의 작성자를 증명하기 위해서 그 서명을 획득 할 수 있습니다. 애플리케이션에서 JavaScript 라이브러리를 사용하여 네트워크에 트랜잭션을 전송할 수 있습니다.
+
+## 컨트랙트 계정 {#contract-accounts}
+
+컨트랙트 계정 또한 42개 문자로 이루어진 16진수 주소를 갖습니다.
+
+예시:
+
+`0x06012c8cf97bead5deae237070f9587f8e7a266d`
+
+컨트랙트 주소는 대개 컨트랙트가 이더리움 블록체인에 배포되는 시점에 주어집니다. 이 주소는 그 생성자의 주소와 그 주소로부터 전송된 트랜잭션 번호("논스") 에서 추출됩니다.
+
+## 검증자 키 {#validators-keys}
+
+이더리움이 작업 증명에서 합의에 기반한 지분증명으로 바뀌면서 다른 타입의 키가 만들어집니다. 일명 BLS라는 키로, 이 키는 누가 검증자인지 구별하는데 쓰입니다. 이러한 키를 효율적으로 집계하여 네트워크가 합의에 도달하는 데 필요한 대역폭을 줄일 수 있습니다. 이 키 집계가 없으면 검증자의 최소 지분은 훨씬 더 높아질 것입니다.
+
+[검증자 키에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos/keys/).
+
+## 지갑에 대한 참고 사항 {#a-note-on-wallets}
+
+계정은 지갑이 아닙니다. 지갑은 외부 소유 계정 또는 계약 계정과 상호작용할 수 있게 해주는 인터페이스 또는 애플리케이션입니다.
+
+## 시각적 데모 {#a-visual-demo}
+
+오스틴이 해시 함수와 키 쌍에 대해 설명하는 것을 보세요.
+
+
+
+
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 계정 이해하기](https://info.etherscan.com/understanding-ethereum-accounts/) - etherscan
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [스마트 계약](/developers/docs/smart-contracts/)
+- [트랜잭션](/developers/docs/transactions/)
diff --git a/public/content/translations/ko/developers/docs/apis/backend/index.md b/public/content/translations/ko/developers/docs/apis/backend/index.md
new file mode 100644
index 00000000000..2c7018becdc
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/apis/backend/index.md
@@ -0,0 +1,211 @@
+---
+title: "백엔드 API 라이브러리"
+description: "사용자의 애플리케이션에서 블록체인과 상호작용 할 수 있는 이더리움 클라이언트 API에 대한 소개."
+lang: ko
+---
+
+소프트웨어 애플리케이션이 이더리움 블록체인과 상호작용하려면(즉, 블록체인 데이터를 읽거나 네트워크에 트랜잭션을 보내려면) 이더리움 노드에 연결해야 합니다.
+
+이러한 목적을 위해 모든 이더리움 클라이언트는 [JSON-RPC](/developers/docs/apis/json-rpc/) 사양을 구현하므로 애플리케이션이 의존할 수 있는 통일된 [메서드](/developers/docs/apis/json-rpc/#json-rpc-methods) 세트가 있습니다.
+
+특수 프로그래밍 언어를 사용하여 이더리움 노드과 연결하려는 경우, 생태계 내부에 이러한 작업을 훨씬 용이하게 하는 편리한 라이브러리가 많이 있습니다. 개발자는 이러한 라이브러리를 사용하여 이더리움과 상호작용하는 JSON-RPC 요청(후드 아래)을 초기화하는 직관적인 단일 방법을 작성할 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[이더리움 스택](/developers/docs/ethereum-stack/)과 [이더리움 클라이언트](/developers/docs/nodes-and-clients/)를 이해하면 도움이 될 수 있습니다.
+
+## 라이브러리를 왜 사용할까요? {#why-use-a-library}
+
+이러한 라이브러리는 이더리움 노드와 직접적으로 상호작용하는 많은 복잡성을 일반화합니다. 또한 유틸리티 함수(예: ETH를 Gwei로 변환)도 제공하므로 개발자는 이더리움 클라이언트의 복잡성을 처리하는 데 시간을 덜 들이고 애플리케이션의 고유 기능에 더 집중할 수 있습니다.
+
+## 사용 가능한 라이브러리 {#available-libraries}
+
+### 인프라 및 노드 서비스 {#infrastructure-and-node-services}
+
+**Alchemy -** **_이더리움 개발 플랫폼입니다._**
+
+- [alchemy.com](https://www.alchemy.com/)
+- [개발문서](https://www.alchemy.com/docs/)
+- [GitHub](https://github.com/alchemyplatform)
+- [Discord](https://discord.com/invite/alchemyplatform)
+
+**All That Node -** **_서비스형 노드._**
+
+- [All That Node.com](https://www.allthatnode.com/)
+- [개발문서](https://docs.allthatnode.com)
+- [Discord](https://discord.gg/GmcdVEUbJM)
+
+**Blast by Bware Labs -** **_이더리움 메인넷 및 테스트넷을 위한 탈중앙화 API._**
+
+- [blastapi.io](https://blastapi.io/)
+- [개발문서](https://docs.blastapi.io)
+- [Discord](https://discord.gg/SaRqmRUjjQ)
+
+**BlockPi -** **_보다 효율적이고 빠른 RPC 서비스 제공_**
+
+- [blockpi.io](https://blockpi.io/)
+- [개발문서](https://docs.blockpi.io/)
+- [GitHub](https://github.com/BlockPILabs)
+- [Discord](https://discord.com/invite/xTvGVrGVZv)
+
+** Cloudflare Ethereum 게이트웨이. **
+
+- [cloudflare-eth.com](https://www.cloudflare.com/application-services/products/web3/)
+
+**Etherscan - 블록 탐색기 및 거래 API**
+
+- [개발문서](https://docs.etherscan.io/)
+
+**Blockscout - 오픈소스 블록 탐색기**
+
+- [개발문서](https://docs.blockscout.com/)
+
+**GetBlock-** **_Web3 개발을 위한 서비스형 블록체인_**
+
+- [GetBlock.io](https://getblock.io/)
+- [개발문서](https://docs.getblock.io/)
+
+**Infura -** **_서비스형 이더리움 API._**
+
+- [infura.io](https://infura.io)
+- [개발문서](https://docs.infura.io/api)
+- [GitHub](https://github.com/INFURA)
+
+**Node RPC - _저비용의 EVM JSON-RPC 제공업체_**
+
+- [noderpc.xyz](https://www.noderpc.xyz/)
+- [개발문서](https://docs.noderpc.xyz/node-rpc)
+
+**NOWNodes - _풀노드 및 블록 탐색기._**
+
+- [NOWNodes.io](https://nownodes.io/)
+- [개발문서](https://nownodes.gitbook.io/documentation)
+
+**QuickNode -** **_서비스형 블록체인 인프라._**
+
+- [quicknode.com](https://quicknode.com)
+- [개발문서](https://www.quicknode.com/docs/welcome)
+- [Discord](https://discord.gg/quicknode)
+
+**Rivet -** **_오픈소스 소프트웨어로 구동되는 서비스형 이더리움 및 이더리움 클래식 API._**
+
+- [rivet.cloud](https://rivet.cloud)
+- [개발문서](https://rivet.cloud/docs/)
+- [GitHub](https://github.com/openrelayxyz/ethercattle-deployment)
+
+**Zmok -** **_속도 중심의 이더리움 노드인 JSON-RPC/WebSockets API._**
+
+- [zmok.io](https://zmok.io/)
+- [GitHub](https://github.com/zmok-io)
+- [개발문서](https://docs.zmok.io/)
+- [Discord](https://discord.gg/fAHeh3ka6s)
+
+### 개발 도구 {#development-tools}
+
+**ethers-kt -** **_EVM 기반 블록체인을 위한 비동기, 고성능 Kotlin/Java/Android 라이브러리입니다._**
+
+- [GitHub](https://github.com/Kr1ptal/ethers-kt)
+- [예제](https://github.com/Kr1ptal/ethers-kt/tree/master/examples)
+- [Discord](https://discord.gg/rx35NzQGSb)
+
+**Nethereum -** **_블록체인을 위한 오픈소스 .NET 통합 라이브러리._**
+
+- [GitHub](https://github.com/Nethereum/Nethereum)
+- [개발문서](http://docs.nethereum.com/en/latest/)
+- [Discord](https://discord.com/invite/jQPrR58FxX)
+
+**Python Tooling -** **_Python을 통해 이더리움과 상호작용하기 위한 다양한 라이브러리._**
+
+- [py.ethereum.org](https://snakecharmers.ethereum.org/)
+- [web3.py GitHub](https://github.com/ethereum/web3.py)
+- [web3.py Chat](https://gitter.im/ethereum/web3.py)
+
+**Tatum -** **_최고의 블록체인 개발 플랫폼._**
+
+- [Tatum](https://tatum.io/)
+- [GitHub](https://github.com/tatumio/)
+- [개발문서](https://docs.tatum.io/)
+- [Discord](https://discord.gg/EDmW3kjTC9)
+
+**web3j -** **_이더리움을 위한 Java/Android/Kotlin/Scala 통합 라이브러리._**
+
+- [GitHub](https://github.com/web3j/web3j)
+- [개발문서](https://docs.web3j.io/)
+- [Gitter](https://gitter.im/web3j/web3j)
+
+### 블록체인 서비스 {#blockchain-services}
+
+**BlockCypher -** **_이더리움 웹 API._**
+
+- [blockcypher.com](https://www.blockcypher.com/)
+- [개발문서](https://www.blockcypher.com/dev/ethereum/)
+
+**Chainbase -** **_이더리움을 위한 올인원 web3 데이터 인프라._**
+
+- [chainbase.com](https://chainbase.com/)
+- [개발문서](https://docs.chainbase.com/)
+- [Discord](https://discord.gg/Wx6qpqz4AF)
+
+**Chainstack -** **_서비스형 탄력적 및 전용 이더리움 노드._**
+
+- [chainstack.com](https://chainstack.com)
+- [개발문서](https://docs.chainstack.com/)
+- [이더리움 API 레퍼런스](https://docs.chainstack.com/reference/ethereum-getting-started)
+
+**Coinbase Cloud Node -** **_블록체인 인프라 API._**
+
+- [Coinbase Cloud Node](https://www.coinbase.com/developer-platform)
+- [개발문서](https://docs.cdp.coinbase.com/)
+
+**DataHub by Figment -** **_이더리움 메인넷 및 테스트넷을 갖춘 Web3 API 서비스._**
+
+- [DataHub](https://www.figment.io/)
+- [개발문서](https://docs.figment.io/)
+
+**Moralis -** **_엔터프라이즈급 EVM API 제공업체._**
+
+- [moralis.io](https://moralis.io)
+- [개발문서](https://docs.moralis.io/)
+- [GitHub](https://github.com/MoralisWeb3)
+- [Discord](https://moralis.io/joindiscord/)
+- [포럼](https://forum.moralis.io/)
+
+**NFTPort -** **_이더리움 데이터 및 민팅 API._**
+
+- [nftport.xyz](https://www.nftport.xyz/)
+- [개발문서](https://docs.nftport.xyz/)
+- [GitHub](https://github.com/nftport/)
+- [Discord](https://discord.com/invite/K8nNrEgqhE)
+
+**Tokenview -** **_범용 멀티 암호화폐 블록체인 API 플랫폼._**
+
+- [services.tokenview.io](https://services.tokenview.io/)
+- [개발문서](https://services.tokenview.io/docs?type=api)
+- [GitHub](https://github.com/Tokenview)
+
+**Watchdata -** **_이더리움 블록체인에 간단하고 신뢰할 수 있는 API 액세스를 제공합니다._**
+
+- [Watchdata](https://watchdata.io/)
+- [개발문서](https://docs.watchdata.io/)
+- [Discord](https://discord.com/invite/TZRJbZ6bdn)
+
+**Covalent -** **_200개 이상의 체인을 위한 풍부한 기능의 블록체인 API._**
+
+- [covalenthq.com](https://www.covalenthq.com/)
+- [개발문서](https://www.covalenthq.com/docs/api/)
+- [GitHub](https://github.com/covalenthq)
+- [Discord](https://www.covalenthq.com/discord/)
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [노드 및 클라이언트](/developers/docs/nodes-and-clients/)
+- [개발 프레임워크](/developers/docs/frameworks/)
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [JavaScript에서 이더리움 블록체인을 사용하도록 Web3js 설정하기](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– 프로젝트에 web3.js를 설정하는 방법에 대한 안내입니다._
+- [JavaScript에서 스마트 계약 호출하기](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– DAI 토큰을 사용하여 JavaScript로 계약 함수를 호출하는 방법을 알아보세요._
diff --git a/public/content/translations/ko/developers/docs/apis/javascript/index.md b/public/content/translations/ko/developers/docs/apis/javascript/index.md
new file mode 100644
index 00000000000..6a4255a9ac5
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/apis/javascript/index.md
@@ -0,0 +1,289 @@
+---
+title: "자바스크립트 API 라이브러리"
+description: "애플리케이션에서 블록체인과 상호작용할 수 있는 자바스크립트 클라이언트 라이브러리를 소개합니다."
+lang: ko
+---
+
+웹 앱이 이더리움 블록체인과 상호작용하려면(즉, 블록체인 데이터를 읽거나 네트워크에 트랜잭션을 보내려면) 이더리움 노드에 연결해야 합니다.
+
+이를 위해 모든 이더리움 클라이언트는 [JSON-RPC](/developers/docs/apis/json-rpc/) 사양을 구현하므로 애플리케이션이 의존할 수 있는 통일된 [메서드](/developers/docs/apis/json-rpc/#json-rpc-methods) 집합이 있습니다.
+
+자바스크립트를 사용하여 이더리움 노드에 연결하려는 경우, 바닐라 자바스크립트를 사용할 수도 있지만, 생태계 내에 이를 훨씬 쉽게 만들어주는 여러 편의 라이브러리가 존재합니다. 개발자는 이러한 라이브러리를 사용하여 이더리움과 상호작용하는 JSON-RPC 요청(후드 아래)을 초기화하는 직관적인 단일 방법을 작성할 수 있습니다.
+
+[병합](/roadmap/merge/) 이후, 노드를 실행하려면 실행 클라이언트와 합의 클라이언트라는 두 개의 연결된 이더리움 소프트웨어가 필요하다는 점에 유의하세요. 노드에 실행 클라이언트와 합의 클라이언트가 모두 포함되어 있는지 확인하세요. 노드가 로컬 컴퓨터에 없는 경우(예: AWS 인스턴스에서 노드가 실행되는 경우), 튜토리얼의 IP 주소를 적절하게 업데이트하세요. 자세한 내용은 [노드 실행하기](/developers/docs/nodes-and-clients/run-a-node/) 페이지를 참조하세요.
+
+## 필수 구성 요소 {#prerequisites}
+
+자바스크립트를 이해하는 것 외에도 [이더리움 스택](/developers/docs/ethereum-stack/)과 [이더리움 클라이언트](/developers/docs/nodes-and-clients/)를 이해하는 것이 도움이 될 수 있습니다.
+
+## 라이브러리를 왜 사용할까요? {#why-use-a-library}
+
+이러한 라이브러리는 이더리움 노드와 직접적으로 상호작용하는 많은 복잡성을 일반화합니다. 또한 유틸리티 함수(예: ETH를 Gwei로 변환)도 제공하므로 개발자는 이더리움 클라이언트의 복잡성을 처리하는 데 시간을 덜 들이고 애플리케이션의 고유 기능에 더 집중할 수 있습니다.
+
+## 라이브러리 기능 {#library-features}
+
+### 이더리움 노드에 연결 {#connect-to-ethereum-nodes}
+
+이 라이브러리는 공급자를 사용하여 JSON-RPC, INFURA, Etherscan, Alchemy 또는 MetaMask를 통해 이더리움에 연결하고 데이터를 읽을 수 있게 해줍니다.
+
+> **경고:** Web3.js는 2025년 3월 4일에 아카이브되었습니다. [공지 사항 읽기](https://blog.chainsafe.io/web3-js-sunset/). 새로운 프로젝트에는 [ethers.js](https://ethers.org) 또는 [viem](https://viem.sh)과 같은 대체 라이브러리를 사용하는 것을 고려해 보세요.
+
+**Ethers 예시**
+
+```js
+// BrowserProvider는 표준 Web3 공급자를 래핑하며,
+// 이는 MetaMask가 각 페이지에 window.ethereum으로 주입하는 것입니다
+const provider = new ethers.BrowserProvider(window.ethereum)
+
+// MetaMask 플러그인을 사용하면 트랜잭션에 서명하여
+// 이더를 전송하고 블록체인 내 상태를 변경하기 위해 지불할 수 있습니다.
+// 이를 위해 계정 서명자가 필요합니다...
+const signer = provider.getSigner()
+```
+
+**Web3js 예시**
+
+```js
+var web3 = new Web3("http://localhost:8545")
+// 또는
+var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
+
+// 공급자 변경
+web3.setProvider("ws://localhost:8546")
+// 또는
+web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))
+
+// node.js에서 IPC 공급자 사용
+var net = require("net")
+var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os 경로
+// 또는
+var web3 = new Web3(
+ new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)
+) // mac os 경로
+// windows에서의 경로는 다음과 같습니다: "\\\\.\\pipe\\geth.ipc"
+// linux에서의 경로는 다음과 같습니다: "/users/myuser/.ethereum/geth.ipc"
+```
+
+설정이 완료되면 블록체인에 다음을 쿼리할 수 있습니다.
+
+- 블록 번호
+- 가스 추정치
+- 스마트 계약 이벤트
+- 네트워크 ID
+- 그 이상 많은것들...
+
+### 지갑 기능 {#wallet-functionality}
+
+이 라이브러리들은 지갑을 만들고, 키를 관리하고, 트랜잭션에 서명하는 기능을 제공합니다.
+
+다음은 Ethers의 예시입니다
+
+```js
+// 니모닉으로 지갑 인스턴스를 생성합니다...
+mnemonic =
+ "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
+walletMnemonic = Wallet.fromPhrase(mnemonic)
+
+// ...또는 개인 키로 생성합니다
+walletPrivateKey = new Wallet(walletMnemonic.privateKey)
+
+walletMnemonic.address === walletPrivateKey.address
+// 참
+
+// 서명자 API에 따른 Promise로서의 주소
+walletMnemonic.getAddress()
+// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
+
+// 지갑 주소는 동기적으로도 사용할 수 있습니다
+walletMnemonic.address
+// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
+
+// 내부 암호화 구성 요소
+walletMnemonic.privateKey
+// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
+walletMnemonic.publicKey
+// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
+
+// 지갑 니모닉
+walletMnemonic.mnemonic
+// {
+// locale: 'en',
+// path: 'm/44\'/60\'/0\'/0/0',
+// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'
+// }
+
+// 참고: 개인 키로 생성된 지갑은
+// 니모닉을 가지지 않습니다(파생 과정에서 이를 방지함)
+walletPrivateKey.mnemonic
+// null
+
+// 메시지 서명
+walletMnemonic.signMessage("Hello World")
+// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
+
+tx = {
+ to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
+ value: utils.parseEther("1.0"),
+}
+
+// 트랜잭션 서명
+walletMnemonic.signTransaction(tx)
+// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
+
+// connect 메서드는 공급자에 연결된
+// 지갑의 새 인스턴스를 반환합니다
+wallet = walletMnemonic.connect(provider)
+
+// 네트워크 쿼리
+wallet.getBalance()
+// { Promise: { BigNumber: "42" } }
+wallet.getTransactionCount()
+// { Promise: 0 }
+
+// 이더 전송
+wallet.sendTransaction(tx)
+```
+
+[전체 문서 읽기](https://docs.ethers.io/v5/api/signer/#Wallet)
+
+설정이 완료되면 다음을 수행할 수 있습니다.
+
+- 계정 생성
+- 트랜잭션 전송
+- 트랜잭션 서명
+- 그 이상 많은것들...
+
+### 스마트 계약 함수와 상호작용하기 {#interact-with-smart-contract-functions}
+
+자바스크립트 클라이언트 라이브러리를 사용하면 애플리케이션에서 컴파일된 계약의 애플리케이션 바이너리 인터페이스(ABI)를 읽어 스마트 계약 함수를 호출할 수 있습니다.
+
+ABI는 기본적으로 계약의 함수를 JSON 형식으로 설명하며, 이를 일반적인 자바스크립트 객체처럼 사용할 수 있게 해줍니다.
+
+따라서 다음 솔리디티 계약은:
+
+```solidity
+contract Test {
+ uint a;
+ address d = 0x12345678901234567890123456789012;
+
+ constructor(uint testInt) { a = testInt;}
+
+ event Event(uint indexed b, bytes32 c);
+
+ event Event2(uint indexed b, bytes32 c);
+
+ function foo(uint b, bytes32 c) returns(address) {
+ Event(b, c);
+ return d;
+ }
+}
+```
+
+다음과 같은 JSON이 생성됩니다.
+
+```json
+[{
+ "type":"constructor",
+ "payable":false,
+ "stateMutability":"nonpayable"
+ "inputs":[{"name":"testInt","type":"uint256"}],
+ },{
+ "type":"function",
+ "name":"foo",
+ "constant":false,
+ "payable":false,
+ "stateMutability":"nonpayable",
+ "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],
+ "outputs":[{"name":"","type":"address"}]
+ },{
+ "type":"event",
+ "name":"Event",
+ "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],
+ "anonymous":false
+ },{
+ "type":"event",
+ "name":"Event2",
+ "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],
+ "anonymous":false
+}]
+```
+
+즉, 다음을 수행할 수 있습니다.
+
+- 스마트 계약에 트랜잭션을 보내고 메서드를 실행합니다
+- EVM에서 실행될 때 메서드 실행에 소요될 가스를 추정하기 위해 호출합니다
+- 계약 배포
+- 기타 등등...
+
+### 유틸리티 함수 {#utility-functions}
+
+유틸리티 함수는 이더리움 기반의 빌드를 좀 더 쉽게 만들어주는 편리한 단축 기능을 제공합니다.
+
+ETH 값은 기본적으로 Wei 단위입니다. 1 ETH = 1,000,000,000,000,000,000 WEI – 이는 매우 큰 숫자를 다룬다는 의미입니다! `web3.utils.toWei`는 이더를 Wei로 변환해 줍니다.
+
+그리고 ethers에서는 다음과 같습니다.
+
+```js
+// 계정의 잔액을 가져옵니다(주소 또는 ENS 이름으로)
+balance = await provider.getBalance("ethers.eth")
+// { BigNumber: "2337132817842795605" }
+
+// 종종 사용자에게 보여주기 위해 출력을 포맷해야 합니다
+// 사용자는 wei 대신 이더 단위의 값을 선호합니다
+ethers.utils.formatEther(balance)
+// '2.337132817842795605'
+```
+
+- [Web3js 유틸리티 함수](https://docs.web3js.org/api/web3-utils)
+- [Ethers 유틸리티 함수](https://docs.ethers.org/v6/api/utils/)
+
+## 사용 가능한 라이브러리 {#available-libraries}
+
+**Web3.js -** **_이더리움 자바스크립트 API._**
+
+- [개발문서](https://docs.web3js.org)
+- [GitHub](https://github.com/ethereum/web3.js)
+
+**Ethers.js -** **_자바스크립트 및 타입스크립트의 완전한 이더리움 지갑 구현 및 유틸리티._**
+
+- [Ethers.js 홈](https://ethers.org/)
+- [개발문서](https://docs.ethers.io)
+- [GitHub](https://github.com/ethers-io/ethers.js)
+
+**The Graph -** **_이더리움 및 IPFS 데이터를 인덱싱하고 GraphQL을 사용하여 쿼리하기 위한 프로토콜입니다._**
+
+- [The Graph](https://thegraph.com)
+- [그래프 탐색기](https://thegraph.com/explorer)
+- [개발문서](https://thegraph.com/docs)
+- [GitHub](https://github.com/graphprotocol)
+- [Discord](https://thegraph.com/discord)
+
+**Alchemy SDK -** **_향상된 API가 포함된 Ethers.js 래퍼._**
+
+- [개발문서](https://www.alchemy.com/docs)
+- [GitHub](https://github.com/alchemyplatform/alchemy-sdk-js)
+
+**viem -** **_이더리움을 위한 타입스크립트 인터페이스._**
+
+- [개발문서](https://viem.sh)
+- [GitHub](https://github.com/wagmi-dev/viem)
+
+**Drift -** **_내장 캐싱, 후크, 테스트 목(mock)이 포함된 타입스크립트 메타 라이브러리._**
+
+- [개발문서](https://ryangoree.github.io/drift/)
+- [GitHub](https://github.com/ryangoree/drift/)
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [노드 및 클라이언트](/developers/docs/nodes-and-clients/)
+- [개발 프레임워크](/developers/docs/frameworks/)
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [JavaScript에서 이더리움 블록체인을 사용하도록 Web3js 설정하기](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– 프로젝트에 web3.js를 설정하는 방법에 대한 안내입니다._
+- [JavaScript에서 스마트 계약 호출하기](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– DAI 토큰을 사용하여 JavaScript로 계약 함수를 호출하는 방법을 알아보세요._
+- [web3와 Alchemy를 사용하여 트랜잭션 보내기](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _– 백엔드에서 트랜잭션을 보내는 단계별 안내입니다._
diff --git a/public/content/translations/ko/developers/docs/apis/json-rpc/index.md b/public/content/translations/ko/developers/docs/apis/json-rpc/index.md
new file mode 100644
index 00000000000..745877ea96e
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/apis/json-rpc/index.md
@@ -0,0 +1,1898 @@
+---
+title: JSON-RPC APIs
+description: "이더리움 클라이언트를 위한, 무상태성 경량 RPC(원격 프로시저 호출) 프로토콜"
+lang: ko
+---
+
+소프트웨어 애플리케이션이 블록체인 데이터를 읽거나 네트워크에 트랜잭션을 전송하여 이더리움 블록체인과 상호작용하려면 이더리움 노드에 연결해야 합니다.
+
+이를 위해 모든 [이더리움 클라이언트](/developers/docs/nodes-and-clients/#execution-clients)는 [JSON-RPC 사양](https://github.com/ethereum/execution-apis)을 구현하므로 애플리케이션은 특정 노드나 클라이언트 구현에 관계없이 의존할 수 있는 통일된 메서드 집합이 있습니다.
+
+[JSON-RPC](https://www.jsonrpc.org/specification)는 무상태, 경량 원격 프로시저 호출(RPC) 프로토콜입니다. 여러 데이터 구조와 그 처리에 관한 규칙을 정의합니다. 소켓이나 HTTP 또는 다양한 메시지 전달 환경을 포함한 동일한 프로세스 내에서 개념을 사용할 수 있다는 점에서 전송의 추상화가 잘 이루어져 있습니다. (원문: agnostic; 불가지론자; 어떤 운영 체제나 프로세서의 조합에 대한 지식 없이도 기능을 수행할 수 있는, 여기에서는 추상화로 대체) 데이터 형식은 JSON(RFC 4627)으로 사용합니다.
+
+## 클라이언트 구현 {#client-implementations}
+
+이더리움 클라이언트는 JSON-RPC 사양을 구현할 때 각기 다른 프로그래밍 언어를 사용할 수 있습니다. 특정 프로그래밍 언어와 관련된 자세한 내용은 개별 [클라이언트 문서](/developers/docs/nodes-and-clients/#execution-clients)를 참조하세요. 최신 API 지원 정보는 각 클라이언트의 문서를 확인하는 게 좋습니다.
+
+## 편의성 라이브러리 {#convenience-libraries}
+
+JSON-RPC API를 통해 이더리움 클라이언트와 직접 상호 작용하는 방식을 선택할 수 있습니다. 그러나 dapp 개발자를 위한 더 쉬운 옵션도 있습니다. JSON-RPC API 위에 래퍼를 제공하기 위해 많은 [JavaScript](/developers/docs/apis/javascript/#available-libraries) 및 [백엔드 API](/developers/docs/apis/backend/#available-libraries) 라이브러리가 존재합니다. 개발자는 이런 라이브러리를 사용하여 이더리움과 상호 작용하는 JSON-RPC 요청을 초기화할 수 있습니다. 라이브러리를 잘 사용하면 개발을 위해 선택한 프로그래밍 언어로, 직관적인 한 줄 메서드를 작성할 수 있습니다.
+
+## 합의 클라이언트 API {#consensus-clients}
+
+이 페이지는 주로 이더리움 실행 클라이언트에서 사용하는 JSON-RPC API를 다룹니다. 그러나 합의 클라이언트에는 사용자가 노드에 대한 정보를 쿼리하고, 비콘 블록, 비콘 상태 및 기타 합의 관련 정보를 노드에서 직접 요청할 수 있는 RPC API도 있습니다. 이 API는 [Beacon API 웹페이지](https://ethereum.github.io/beacon-APIs/#/)에 문서화되어 있습니다.
+
+내부 API는 노드 내의 클라이언트 간 통신에도 사용됩니다. 즉, 합의 클라이언트와 실행 클라이언트가 데이터를 교환할 수 있게 해줍니다. 이를 '엔진 API'라고 하며 사양은 [GitHub](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)에서 확인할 수 있습니다.
+
+## 실행 클라이언트 사양 {#spec}
+
+[GitHub에서 전체 JSON-RPC API 사양 읽기](https://github.com/ethereum/execution-apis). 이 API는 [실행 API 웹페이지](https://ethereum.github.io/execution-apis/)에 문서화되어 있으며 사용 가능한 모든 방법을 시험해 볼 수 있는 검사기를 포함합니다.
+
+## 규칙 {#conventions}
+
+### 16진수 값 인코딩 {#hex-encoding}
+
+형식이 지정되지 않은 바이트 배열과 수량이라는 두 가지 주요 데이터 유형이 JSON을 통해 전달됩니다. 둘 다 16진수 인코딩으로 전달되지만 형식 지정에 대한 요구 사항은 다릅니다.
+
+#### 수량 {#quantities-encoding}
+
+수량(정수, 숫자)을 인코딩할 때: 16진수로 인코딩하고, "0x"를 접두사로 붙이며, 가장 간결한 표현을 사용합니다(약간의 예외: 0은 "0x0"으로 표현해야 함).
+
+몇 가지 예는 다음과 같습니다.
+
+- 0x41 (10진수로 65)
+- 0x400 (10진수로 1024)
+- 잘못됨: 0x (항상 하나 이상의 숫자가 있어야 함 - 0은 "0x0")
+- 잘못됨: 0x0400 (앞에 0을 붙일 수 없음)
+- 잘못됨: ff (접두사 0x가 있어야 함)
+
+### 형식 없는 데이터 {#unformatted-data-encoding}
+
+형식 없는 데이터(바이트 배열, 계정 주소, 해시, 바이트코드 배열)를 인코딩할 때: 16진수로 인코딩하고, 접두사 "0x"를 붙이며, 바이트당 2개의 16진수 숫자를 사용합니다.
+
+몇 가지 예는 다음과 같습니다.
+
+- 0x41 (크기 1, "A")
+- 0x004200 (크기 3, "0B0")
+- 0x (크기 0, "")
+- 잘못됨: 0xf0f0f (짝수 개의 숫자여야 함)
+- 잘못됨: 004200 (접두사 0x가 있어야 함)
+
+### 블록 매개변수 {#block-parameter}
+
+다음 메서드에는 블록 매개변수가 있습니다:
+
+- [eth_getBalance](#eth_getbalance)
+- [eth_getCode](#eth_getcode)
+- [eth_getTransactionCount](#eth_gettransactioncount)
+- [eth_getStorageAt](#eth_getstorageat)
+- [eth_call](#eth_call)
+
+이더리움의 상태를 쿼리하는 요청이 이루어지면 제공된 블록 매개변수가 블록의 높이를 결정합니다.
+
+블록 매개변수에 대해 다음 옵션을 사용할 수 있습니다:
+
+- `16진수 문자열` - 정수 블록 번호
+- `문자열 "earliest"` - 가장 오래된/제네시스 블록
+- `문자열 "latest"` - 최신 제안 블록
+- `문자열 "safe"` - 최신 안전 헤드 블록
+- `문자열 "finalized"` - 최신 확정 블록
+- `문자열 "pending"` - 보류 중인 상태/트랜잭션
+
+## 예시
+
+이 페이지에서는 명령줄 도구인 [curl](https://curl.se)을 사용하여 개별 JSON_RPC API 엔드포인트를 사용하는 방법에 대한 예를 제공합니다. 이러한 개별 엔드포인트 예는 아래의 [Curl 예제](#curl-examples) 섹션에서 찾을 수 있습니다. 페이지의 뒷부분에서는 Geth 노드, JSON_RPC API 및 curl을 사용하여 스마트 계약을 컴파일하고 배포하는 [엔드투엔드 예제](#usage-example)도 제공합니다.
+
+## Curl 예제 {#curl-examples}
+
+이더리움 노드에 [curl](https://curl.se) 요청을 하여 JSON_RPC API를 사용하는 예제가 아래에 제공됩니다. 각 예제에는
+특정 엔드포인트에 대한 설명, 매개변수, 반환 유형 및 사용 방법에 대한 실제 예제가 포함됩니다.
+
+curl 요청은 콘텐츠 유형과 관련된 오류 메시지를 반환할 수 있습니다. 이는 `--data` 옵션이 콘텐츠 유형을 `application/x-www-form-urlencoded`로 설정하기 때문입니다. 노드에서 이와 관련하여 불만을 제기하는 경우, 호출 시작 부분에 `-H "Content-Type: application/json"`을 배치하여 헤더를 수동으로 설정하세요. 예제에는 curl에 마지막 인수로 제공되어야 하는 URL/IP 및 포트 조합(예: `127.0.0.1:8545`)도 포함되어 있지 않습니다. 이러한 추가 데이터를 포함하는 전체 curl 요청은 다음 형식을 취합니다:
+
+```shell
+curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545
+```
+
+## 가십, 상태, 기록 {#gossip-state-history}
+
+소수의 핵심 JSON-RPC 메서드는 이더리움 네트워크의 데이터가 필요하며, 가십, 상태, 기록이라는 세 가지 주요 범주로 깔끔하게 분류됩니다. 이 섹션의 링크를 사용하여 각 메서드로 이동하거나 목차를 사용하여 전체 메서드 목록을 탐색하세요.
+
+### 가십 메서드 {#gossip-methods}
+
+> 이 메서드들은 체인의 헤드를 추적합니다. 이것이 트랜잭션이 네트워크를 돌아다니고, 블록으로 들어가며, 클라이언트가 새로운 블록에 대해 알게 되는 방식입니다.
+
+- [eth_blockNumber](#eth_blocknumber)
+- [eth_sendRawTransaction](#eth_sendrawtransaction)
+
+### 상태 메서드 {#state_methods}
+
+> 저장된 모든 데이터의 현재 상태를 보고하는 메서드입니다. '상태'는 하나의 큰 공유 RAM 조각과 같으며 계정 잔액, 계약 데이터 및 가스 추정치를 포함합니다.
+
+- [eth_getBalance](#eth_getbalance)
+- [eth_getStorageAt](#eth_getstorageat)
+- [eth_getTransactionCount](#eth_gettransactioncount)
+- [eth_getCode](#eth_getcode)
+- [eth_call](#eth_call)
+- [eth_estimateGas](#eth_estimategas)
+
+### 기록 메서드 {#history_methods}
+
+> 제네시스까지 모든 블록의 과거 기록을 가져옵니다. 이것은 하나의 큰 추가 전용 파일과 같으며 모든 블록 헤더, 블록 본문, 엉클 블록 및 트랜잭션 영수증을 포함합니다.
+
+- [eth_getBlockTransactionCountByHash](#eth_getblocktransactioncountbyhash)
+- [eth_getBlockTransactionCountByNumber](#eth_getblocktransactioncountbynumber)
+- [eth_getUncleCountByBlockHash](#eth_getunclecountbyblockhash)
+- [eth_getUncleCountByBlockNumber](#eth_getunclecountbyblocknumber)
+- [eth_getBlockByHash](#eth_getblockbyhash)
+- [eth_getBlockByNumber](#eth_getblockbynumber)
+- [eth_getTransactionByHash](#eth_gettransactionbyhash)
+- [eth_getTransactionByBlockHashAndIndex](#eth_gettransactionbyblockhashandindex)
+- [eth_getTransactionByBlockNumberAndIndex](#eth_gettransactionbyblocknumberandindex)
+- [eth_getTransactionReceipt](#eth_gettransactionreceipt)
+- [eth_getUncleByBlockHashAndIndex](#eth_getunclebyblockhashandindex)
+- [eth_getUncleByBlockNumberAndIndex](#eth_getunclebyblocknumberandindex)
+
+## JSON-RPC API 플레이그라운드
+
+[플레이그라운드 도구](https://ethereum-json-rpc.com)를 사용하여 API 메서드를 검색하고 사용해 볼 수 있습니다. 또한 다양한 노드 제공업체에서 지원하는 메서드와 네트워크를 보여줍니다.
+
+## JSON-RPC API 메서드 {#json-rpc-methods}
+
+### web3_clientVersion {#web3_clientversion}
+
+현재 클라이언트의 버전을 반환합니다.
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`문자열` - 현재 클라이언트 버전
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}'
+// 결과
+{
+ "id":67,
+ "jsonrpc":"2.0",
+ "result": "Geth/v1.12.1-stable/linux-amd64/go1.19.1"
+}
+```
+
+### web3_sha3 {#web3_sha3}
+
+주어진 데이터의 Keccak-256(표준화된 SHA3-256이 _아님_)을 반환합니다.
+
+**매개변수**
+
+1. `DATA` - SHA3 해시로 변환할 데이터
+
+```js
+params: ["0x68656c6c6f20776f726c64"]
+```
+
+**반환 값**
+
+`DATA` - 주어진 문자열의 SHA3 결과입니다.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}'
+// 결과
+{
+ "id":64,
+ "jsonrpc": "2.0",
+ "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"
+}
+```
+
+### net_version {#net_version}
+
+현재 네트워크 ID를 반환합니다.
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`문자열` - 현재 네트워크 ID입니다.
+
+현재 네트워크 ID의 전체 목록은 [chainlist.org](https://chainlist.org)에서 확인할 수 있습니다. 일반적인 몇 가지 예는 다음과 같습니다:
+
+- `1`: 이더리움 메인넷
+- `11155111`: 세폴리아 테스트넷
+- `560048` : Hoodi 테스트넷
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}'
+// 결과
+{
+ "id":67,
+ "jsonrpc": "2.0",
+ "result": "3"
+}
+```
+
+### net_listening {#net_listening}
+
+클라이언트가 네트워크 연결을 활발하게 수신하고 있으면 `true`를 반환합니다.
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`부울` - 수신 중일 때는 `true`, 그렇지 않으면 `false`입니다.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}'
+// 결과
+{
+ "id":67,
+ "jsonrpc":"2.0",
+ "result":true
+}
+```
+
+### net_peerCount {#net_peercount}
+
+현재 클라이언트에 연결된 피어 수를 반환합니다.
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`QUANTITY` - 연결된 피어 수의 정수입니다.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}'
+// 결과
+{
+ "id":74,
+ "jsonrpc": "2.0",
+ "result": "0x2" // 2
+}
+```
+
+### eth_protocolVersion {#eth_protocolversion}
+
+현재 이더리움 프로토콜 버전을 반환합니다. 이 메서드는 [Geth에서 사용할 수 없음](https://github.com/ethereum/go-ethereum/pull/22064#issuecomment-788682924)에 유의하세요.
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`문자열` - 현재 이더리움 프로토콜 버전
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}'
+// 결과
+{
+ "id":67,
+ "jsonrpc": "2.0",
+ "result": "54"
+}
+```
+
+### eth_syncing {#eth_syncing}
+
+동기화 상태에 대한 데이터가 있는 객체 또는 `false`를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+정확한 반환 데이터는 클라이언트 구현에 따라 다릅니다. 모든 클라이언트는 노드가 동기화되지 않을 때 `False`를 반환하고, 모든 클라이언트는 다음 필드를 반환합니다.
+
+`객체|부울`, 동기화 상태 데이터가 있는 객체 또는 동기화되지 않을 때 `FALSE`:
+
+- `startingBlock`: `QUANTITY` - 가져오기가 시작된 블록(동기화가 헤드에 도달한 후에만 재설정됨)
+- `currentBlock`: `QUANTITY` - 현재 블록, eth_blockNumber와 동일
+- `highestBlock`: `QUANTITY` - 추정된 가장 높은 블록
+
+그러나 개별 클라이언트는 추가 데이터를 제공할 수도 있습니다. 예를 들어 Geth는 다음을 반환합니다:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "currentBlock": "0x3cf522",
+ "healedBytecodeBytes": "0x0",
+ "healedBytecodes": "0x0",
+ "healedTrienodes": "0x0",
+ "healingBytecode": "0x0",
+ "healingTrienodes": "0x0",
+ "highestBlock": "0x3e0e41",
+ "startingBlock": "0x3cbed5",
+ "syncedAccountBytes": "0x0",
+ "syncedAccounts": "0x0",
+ "syncedBytecodeBytes": "0x0",
+ "syncedBytecodes": "0x0",
+ "syncedStorage": "0x0",
+ "syncedStorageBytes": "0x0"
+ }
+}
+```
+
+반면에 Besu는 다음을 반환합니다:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 51,
+ "result": {
+ "startingBlock": "0x0",
+ "currentBlock": "0x1518",
+ "highestBlock": "0x9567a3",
+ "pulledStates": "0x203ca",
+ "knownStates": "0x200636"
+ }
+}
+```
+
+자세한 내용은 특정 클라이언트의 설명서를 참조하세요.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": {
+ startingBlock: '0x384',
+ currentBlock: '0x386',
+ highestBlock: '0x454'
+ }
+}
+// 또는 동기화되지 않을 때
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": false
+}
+```
+
+### eth_coinbase {#eth_coinbase}
+
+클라이언트 코인베이스 주소를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+> **참고:** 이 메서드는 v1.14.0부터 더 이상 사용되지 않으며 지원되지 않습니다. 이 메서드를 사용하려고 하면 "메서드가 지원되지 않음" 오류가 발생합니다.
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`DATA`, 20바이트 - 현재 코인베이스 주소.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}'
+// 결과
+{
+ "id":64,
+ "jsonrpc": "2.0",
+ "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
+}
+```
+
+### eth_chainId {#eth_chainId}
+
+재생 보호 트랜잭션 서명에 사용되는 체인 ID를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`chainId`, 현재 체인 ID의 정수를 나타내는 문자열로서의 16진수 값.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":67}'
+// 결과
+{
+ "id":67,
+ "jsonrpc": "2.0",
+ "result": "0x1"
+}
+```
+
+### eth_mining {#eth_mining}
+
+클라이언트가 새 블록을 활발하게 채굴하는 경우 `true`를 반환합니다. 이것은 작업 증명 네트워크에 대해서만 `true`를 반환할 수 있으며 [병합](/roadmap/merge/) 이후 일부 클라이언트에서는 사용할 수 없을 수도 있습니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`부울` - 클라이언트가 채굴 중이면 `true`, 그렇지 않으면 `false`를 반환합니다.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}'
+//
+{
+ "id":71,
+ "jsonrpc": "2.0",
+ "result": true
+}
+```
+
+### eth_hashrate {#eth_hashrate}
+
+노드가 채굴 중인 초당 해시 수를 반환합니다. 이것은 작업 증명 네트워크에 대해서만 `true`를 반환할 수 있으며 [병합](/roadmap/merge/) 이후 일부 클라이언트에서는 사용할 수 없을 수도 있습니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`QUANTITY` - 초당 해시 수.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}'
+// 결과
+{
+ "id":71,
+ "jsonrpc": "2.0",
+ "result": "0x38a"
+}
+```
+
+### eth_gasPrice {#eth_gasprice}
+
+웨이 단위의 가스당 현재 가격 추정치를 반환합니다. 예를 들어, Besu 클라이언트는 마지막 100개 블록을 검사하고 기본적으로 중간 가스 단가를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`QUANTITY` - 웨이 단위의 현재 가스 가격의 정수.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
+// 결과
+{
+ "id":73,
+ "jsonrpc": "2.0",
+ "result": "0x1dfd14000" // 8049999872 웨이
+}
+```
+
+### eth_accounts {#eth_accounts}
+
+클라이언트가 소유한 주소 목록을 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`DATA 배열`, 20바이트 - 클라이언트가 소유한 주소.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
+}
+```
+
+### eth_blockNumber {#eth_blocknumber}
+
+가장 최신 블록의 번호를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+없음
+
+**반환 값**
+
+`QUANTITY` - 클라이언트가 있는 현재 블록 번호의 정수.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}'
+// 결과
+{
+ "id":83,
+ "jsonrpc": "2.0",
+ "result": "0x4b7" // 1207
+}
+```
+
+### eth_getBalance {#eth_getbalance}
+
+지정된 주소에 있는 계정의 잔액을 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 20바이트 - 잔액을 확인할 주소.
+2. `QUANTITY|TAG` - 정수 블록 번호 또는 문자열 `"latest"`, `"earliest"`, `"pending"`, `"safe"` 또는 `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter) 참조
+
+```js
+params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]
+```
+
+**반환 값**
+
+`QUANTITY` - 웨이 단위의 현재 잔액의 정수.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x0234c8a3397aab58" // 158972490234375000
+}
+```
+
+### eth_getStorageAt {#eth_getstorageat}
+
+지정된 주소의 스토리지 위치에서 값을 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 20바이트 - 스토리지 주소.
+2. `QUANTITY` - 스토리지 내 위치의 정수.
+3. `QUANTITY|TAG` - 정수 블록 번호 또는 문자열 `"latest"`, `"earliest"`, `"pending"`, `"safe"`, `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter) 참조
+
+**반환 값**
+
+`DATA` - 이 스토리지 위치의 값.
+
+**예제**
+올바른 위치 계산은 검색할 스토리지에 따라 다릅니다. 주소 `0x391694e7e0b0cce554cb130d723a9d27458f9298`에 의해 `0x295a70b2de5e3953354a6a8344e616ed314d7251`에 배포된 다음 계약을 고려해 보세요.
+
+```
+contract Storage {
+ uint pos0;
+ mapping(address => uint) pos1;
+ constructor() {
+ pos0 = 1234;
+ pos1[msg.sender] = 5678;
+ }
+}
+```
+
+pos0의 값을 검색하는 것은 간단합니다.
+
+```js
+curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545
+{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"}
+```
+
+맵의 요소를 검색하는 것은 더 어렵습니다. 맵에 있는 요소의 위치는 다음과 같이 계산됩니다:
+
+```js
+keccak(LeftPad32(key, 0), LeftPad32(map position, 0))
+```
+
+즉, pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"]의 스토리지를 검색하려면 다음을 사용하여 위치를 계산해야 합니다:
+
+```js
+keccak(
+ decodeHex(
+ "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" +
+ "0000000000000000000000000000000000000000000000000000000000000001"
+ )
+)
+```
+
+web3 라이브러리와 함께 제공되는 geth 콘솔을 사용하여 계산할 수 있습니다:
+
+```js
+> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"
+undefined
+> web3.sha3(key, {"encoding": "hex"})
+"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"
+```
+
+이제 스토리지를 가져옵니다:
+
+```js
+curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545
+{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}
+```
+
+### eth_getTransactionCount {#eth_gettransactioncount}
+
+주소에서 _보낸_ 트랜잭션 수를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 20바이트 - 주소.
+2. `QUANTITY|TAG` - 정수 블록 번호 또는 문자열 `"latest"`, `"earliest"`, `"pending"`, `"safe"` 또는 `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter) 참조
+
+```js
+params: [
+ "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
+ "latest", // 최신 블록의 상태
+]
+```
+
+**반환 값**
+
+`QUANTITY` - 이 주소에서 보낸 트랜잭션 수의 정수입니다.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_getBlockTransactionCountByHash {#eth_getblocktransactioncountbyhash}
+
+주어진 블록 해시와 일치하는 블록의 트랜잭션 수를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 32바이트 - 블록의 해시
+
+```js
+params: ["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"]
+```
+
+**반환 값**
+
+`QUANTITY` - 이 블록의 트랜잭션 수의 정수.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x8b" // 139
+}
+```
+
+### eth_getBlockTransactionCountByNumber {#eth_getblocktransactioncountbynumber}
+
+주어진 블록 번호와 일치하는 블록의 트랜잭션 수를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `QUANTITY|TAG` - 블록 번호의 정수, 또는 문자열 `"earliest"`, `"latest"`, `"pending"`, `"safe"` 또는 `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter)에서와 같이.
+
+```js
+params: [
+ "0x13738ca", // 20396234
+]
+```
+
+**반환 값**
+
+`QUANTITY` - 이 블록의 트랜잭션 수의 정수.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0x13738ca"],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x8b" // 139
+}
+```
+
+### eth_getUncleCountByBlockHash {#eth_getunclecountbyblockhash}
+
+주어진 블록 해시와 일치하는 블록의 엉클 수를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 32바이트 - 블록의 해시
+
+```js
+params: ["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"]
+```
+
+**반환 값**
+
+`QUANTITY` - 이 블록의 엉클 수의 정수.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_getUncleCountByBlockNumber {#eth_getunclecountbyblocknumber}
+
+주어진 블록 번호와 일치하는 블록의 엉클 수를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `QUANTITY|TAG` - 정수 블록 번호, 또는 문자열 `"latest"`, `"earliest"`, `"pending"`, `"safe"` 또는 `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter) 참조
+
+```js
+params: [
+ "0xe8", // 232
+]
+```
+
+**반환 값**
+
+`QUANTITY` - 이 블록의 엉클 수의 정수.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x0" // 0
+}
+```
+
+### eth_getCode {#eth_getcode}
+
+지정된 주소의 코드를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 20바이트 - 주소
+2. `QUANTITY|TAG` - 정수 블록 번호 또는 문자열 `"latest"`, `"earliest"`, `"pending"`, `"safe"` 또는 `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter) 참조
+
+```js
+params: [
+ "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+ "0x5daf3b", // 6139707
+]
+```
+
+**반환 값**
+
+`DATA` - 지정된 주소의 코드.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x5daf3b"],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029"
+}
+```
+
+### eth_sign {#eth_sign}
+
+sign 메서드는 `sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))`로 이더리움 특정 서명을 계산합니다.
+
+메시지에 접두사를 추가하면 계산된 서명을 이더리움 특정 서명으로 인식할 수 있습니다. 이를 통해 악의적인 탈중앙화앱이 임의의 데이터(예: 트랜잭션)에 서명하고 서명을 사용하여 피해자를 사칭하는 오용을 방지할 수 있습니다.
+
+참고: 서명할 주소는 잠금 해제되어야 합니다.
+
+**매개변수**
+
+1. `DATA`, 20바이트 - 주소
+2. `DATA`, N 바이트 - 서명할 메시지
+
+**반환 값**
+
+`DATA`: 서명
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
+}
+```
+
+### eth_signTransaction {#eth_signtransaction}
+
+[eth_sendRawTransaction](#eth_sendrawtransaction)을 사용하여 나중에 네트워크에 제출할 수 있는 트랜잭션에 서명합니다.
+
+**매개변수**
+
+1. `객체` - 트랜잭션 객체
+
+- `type`:
+- `from`: `DATA`, 20바이트 - 트랜잭션이 전송된 주소.
+- `to`: `DATA`, 20바이트 - (새 계약 생성 시 선택 사항) 트랜잭션이 보내지는 주소.
+- `gas`: `QUANTITY` - (선택 사항, 기본값: 90000) 트랜잭션 실행을 위해 제공된 가스의 정수. 사용하지 않은 가스를 반환합니다.
+- `gasPrice`: `QUANTITY` - (선택 사항, 기본값: 추후 결정) 지불된 각 가스에 사용되는 가스 가격의 정수(웨이 단위).
+- `value`: `QUANTITY` - (선택 사항) 이 트랜잭션과 함께 전송된 값의 정수(웨이 단위).
+- `data`: `DATA` - 계약의 컴파일된 코드 또는 호출된 메서드 서명의 해시 및 인코딩된 매개변수.
+- `nonce`: `QUANTITY` - (선택 사항) 논스의 정수. 이를 통해 동일한 논스를 사용하는 자신의 보류 중인 트랜잭션을 덮어쓸 수 있습니다.
+
+**반환 값**
+
+`DATA`, 지정된 계정으로 서명된 RLP 인코딩 트랜잭션 객체.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"id": 1,"jsonrpc": "2.0","method": "eth_signTransaction","params": [{"data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","gas": "0x76c0","gasPrice": "0x9184e72a000","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","value": "0x9184e72a"}]}'
+// 결과
+{
+ "id": 1,
+ "jsonrpc": "2.0",
+ "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
+}
+```
+
+### eth_sendTransaction {#eth_sendtransaction}
+
+데이터 필드에 코드가 포함된 경우 새 메시지 호출 트랜잭션 또는 계약 생성을 만들고 `from`에 지정된 계정을 사용하여 서명합니다.
+
+**매개변수**
+
+1. `객체` - 트랜잭션 객체
+
+- `from`: `DATA`, 20바이트 - 트랜잭션이 전송된 주소.
+- `to`: `DATA`, 20바이트 - (새 계약 생성 시 선택 사항) 트랜잭션이 보내지는 주소.
+- `gas`: `QUANTITY` - (선택 사항, 기본값: 90000) 트랜잭션 실행을 위해 제공된 가스의 정수. 사용하지 않은 가스를 반환합니다.
+- `gasPrice`: `QUANTITY` - (선택 사항, 기본값: 추후 결정) 지불된 각 가스에 사용되는 가스 가격의 정수.
+- `value`: `QUANTITY` - (선택 사항) 이 트랜잭션과 함께 전송된 값의 정수.
+- `input`: `DATA` - 계약의 컴파일된 코드 또는 호출된 메서드 서명의 해시 및 인코딩된 매개변수.
+- `nonce`: `QUANTITY` - (선택 사항) 논스의 정수. 이를 통해 동일한 논스를 사용하는 자신의 보류 중인 트랜잭션을 덮어쓸 수 있습니다.
+
+```js
+params: [
+ {
+ from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
+ to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
+ gas: "0x76c0", // 30400
+ gasPrice: "0x9184e72a000", // 10000000000000
+ value: "0x9184e72a", // 2441406250
+ input:
+ "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
+ },
+]
+```
+
+**반환 값**
+
+`DATA`, 32바이트 - 트랜잭션 해시, 또는 트랜잭션을 아직 사용할 수 없는 경우 0 해시.
+
+계약을 생성했을 때 트랜잭션이 블록에 제안된 후 [eth_getTransactionReceipt](#eth_gettransactionreceipt)를 사용하여 계약 주소를 가져옵니다.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{위 참조}],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
+}
+```
+
+### eth_sendRawTransaction {#eth_sendrawtransaction}
+
+서명된 트랜잭션에 대한 새 메시지 호출 트랜잭션 또는 계약 생성을 만듭니다.
+
+**매개변수**
+
+1. `DATA`, 서명된 트랜잭션 데이터.
+
+```js
+params: [
+ "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
+]
+```
+
+**반환 값**
+
+`DATA`, 32바이트 - 트랜잭션 해시, 또는 트랜잭션을 아직 사용할 수 없는 경우 0 해시.
+
+계약을 생성했을 때 트랜잭션이 블록에 제안된 후 [eth_getTransactionReceipt](#eth_gettransactionreceipt)를 사용하여 계약 주소를 가져옵니다.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{위 참조}],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
+}
+```
+
+### eth_call {#eth_call}
+
+블록체인에 트랜잭션을 생성하지 않고 즉시 새 메시지 호출을 실행합니다. ERC-20 계약의 `balanceOf`와 같이 읽기 전용 스마트 계약 함수를 실행하는 데 자주 사용됩니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `객체` - 트랜잭션 호출 객체
+
+- `from`: `DATA`, 20바이트 - (선택 사항) 트랜잭션이 전송된 주소.
+- `to`: `DATA`, 20바이트 - 트랜잭션이 보내지는 주소.
+- `gas`: `QUANTITY` - (선택 사항) 트랜잭션 실행을 위해 제공된 가스의 정수. eth_call은 가스를 소비하지 않지만 일부 실행에서는 이 매개변수가 필요할 수 있습니다.
+- `gasPrice`: `QUANTITY` - (선택 사항) 지불된 각 가스에 사용되는 가스 가격의 정수
+- `value`: `QUANTITY` - (선택 사항) 이 트랜잭션과 함께 전송된 값의 정수
+- `input`: `DATA` - (선택 사항) 메서드 서명의 해시 및 인코딩된 매개변수. 자세한 내용은 [솔리디티 문서의 이더리움 계약 ABI](https://docs.soliditylang.org/en/latest/abi-spec.html)를 참조하세요.
+
+2. `QUANTITY|TAG` - 정수 블록 번호 또는 문자열 `"latest"`, `"earliest"`, `"pending"`, `"safe"` 또는 `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter) 참조
+
+**반환 값**
+
+`DATA` - 실행된 계약의 반환 값.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{위 참조}],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x"
+}
+```
+
+### eth_estimateGas {#eth_estimategas}
+
+트랜잭션이 완료되는 데 필요한 가스 양에 대한 추정치를 생성하고 반환합니다. 트랜잭션은 블록체인에 추가되지 않습니다. EVM 메커니즘 및 노드 성능을 포함한 다양한 이유로 인해 추정치가 트랜잭션에서 실제로 사용된 가스 양보다 훨씬 많을 수 있다는 점에 유의하세요.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+모든 속성이 선택 사항이라는 점을 제외하고 [eth_call](#eth_call) 매개변수를 참조하세요. 가스 한도가 지정되지 않은 경우 geth는 보류 중인 블록의 블록 가스 한도를 상한으로 사용합니다. 결과적으로 가스 양이 보류 중인 블록 가스 한도보다 높을 경우 반환된 추정치가 호출/트랜잭션을 실행하기에 충분하지 않을 수 있습니다.
+
+**반환 값**
+
+`QUANTITY` - 사용된 가스의 양.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{위 참조}],"id":1}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x5208" // 21000
+}
+```
+
+### eth_getBlockByHash {#eth_getblockbyhash}
+
+해시로 블록에 대한 정보를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 32바이트 - 블록의 해시.
+2. `부울` - `true`이면 전체 트랜잭션 객체를 반환하고, `false`이면 트랜잭션의 해시만 반환합니다.
+
+```js
+params: [
+ "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",
+ false,
+]
+```
+
+**반환 값**
+
+`객체` - 블록 객체, 또는 블록을 찾을 수 없는 경우 `null`:
+
+- `number`: `QUANTITY` - 블록 번호. 보류 중인 블록인 경우 `null`.
+- `hash`: `DATA`, 32바이트 - 블록의 해시. 보류 중인 블록인 경우 `null`.
+- `parentHash`: `DATA`, 32바이트 - 부모 블록의 해시.
+- `nonce`: `DATA`, 8바이트 - 생성된 작업 증명의 해시. 보류 중인 블록인 경우 `null`, 지분 증명 블록의 경우 `0x0`(병합 이후)
+- `sha3Uncles`: `DATA`, 32바이트 - 블록에 있는 엉클 데이터의 SHA3.
+- `logsBloom`: `DATA`, 256바이트 - 블록의 로그에 대한 블룸 필터. 보류 중인 블록인 경우 `null`.
+- `transactionsRoot`: `DATA`, 32바이트 - 블록의 트랜잭션 트리의 루트.
+- `stateRoot`: `DATA`, 32바이트 - 블록의 최종 상태 트리의 루트.
+- `receiptsRoot`: `DATA`, 32바이트 - 블록의 영수증 트리의 루트.
+- `miner`: `DATA`, 20바이트 - 블록 보상을 받은 수혜자의 주소.
+- `difficulty`: `QUANTITY` - 이 블록의 난이도 정수.
+- `totalDifficulty`: `QUANTITY` - 이 블록까지의 체인 총 난이도 정수.
+- `extraData`: `DATA` - 이 블록의 "추가 데이터" 필드.
+- `size`: `QUANTITY` - 이 블록의 크기(바이트) 정수.
+- `gasLimit`: `QUANTITY` - 이 블록에서 허용되는 최대 가스.
+- `gasUsed`: `QUANTITY` - 이 블록의 모든 트랜잭션에서 사용된 총 가스.
+- `timestamp`: `QUANTITY` - 블록이 수집된 유닉스 타임스탬프.
+- `transactions`: `배열` - 트랜잭션 객체의 배열, 또는 마지막으로 주어진 매개변수에 따라 32바이트 트랜잭션 해시.
+- `uncles`: `배열` - 엉클 해시의 배열.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", false],"id":1}'
+// 결과
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "difficulty": "0x4ea3f27bc",
+ "extraData": "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32",
+ "gasLimit": "0x1388",
+ "gasUsed": "0x0",
+ "hash": "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "miner": "0xbb7b8287f3f0a933474a79eae42cbca977791171",
+ "mixHash": "0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843",
+ "nonce": "0x689056015818adbe",
+ "number": "0x1b4",
+ "parentHash": "0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54",
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "size": "0x220",
+ "stateRoot": "0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d",
+ "timestamp": "0x55ba467c",
+ "totalDifficulty": "0x78ed983323d",
+ "transactions": [
+ ],
+ "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncles": [
+ ]
+ }
+}
+```
+
+### eth_getBlockByNumber {#eth_getblockbynumber}
+
+블록 번호로 블록에 대한 정보를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `QUANTITY|TAG` - 블록 번호의 정수, 또는 문자열 `"earliest"`, `"latest"`, `"pending"`, `"safe"` 또는 `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter)에서와 같이.
+2. `부울` - `true`이면 전체 트랜잭션 객체를 반환하고, `false`이면 트랜잭션의 해시만 반환합니다.
+
+```js
+params: [
+ "0x1b4", // 436
+ true,
+]
+```
+
+**반환 값**
+[eth_getBlockByHash](#eth_getblockbyhash)를 참조하세요
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}'
+```
+
+결과는 [eth_getBlockByHash](#eth_getblockbyhash)를 참조하세요
+
+### eth_getTransactionByHash {#eth_gettransactionbyhash}
+
+트랜잭션 해시로 요청된 트랜잭션에 대한 정보를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 32바이트 - 트랜잭션의 해시
+
+```js
+params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]
+```
+
+**반환 값**
+
+`객체` - 트랜잭션 객체, 또는 트랜잭션을 찾을 수 없는 경우 `null`:
+
+- `blockHash`: `DATA`, 32바이트 - 이 트랜잭션이 포함된 블록의 해시. 보류 중일 때 `null`.
+- `blockNumber`: `QUANTITY` - 이 트랜잭션이 포함된 블록 번호. 보류 중일 때 `null`.
+- `from`: `DATA`, 20바이트 - 발신자의 주소.
+- `gas`: `QUANTITY` - 발신자가 제공한 가스.
+- `gasPrice`: `QUANTITY` - 발신자가 웨이 단위로 제공한 가스 가격.
+- `hash`: `DATA`, 32바이트 - 트랜잭션의 해시.
+- `input`: `DATA` - 트랜잭션과 함께 전송된 데이터.
+- `nonce`: `QUANTITY` - 이 트랜잭션 이전에 발신자가 수행한 트랜잭션 수.
+- `to`: `DATA`, 20바이트 - 수신자의 주소. 계약 생성 트랜잭션인 경우 `null`.
+- `transactionIndex`: `QUANTITY` - 블록 내 트랜잭션 인덱스 위치의 정수. 보류 중일 때 `null`.
+- `value`: `QUANTITY` - 웨이 단위로 전송된 값.
+- `v`: `QUANTITY` - ECDSA 복구 ID
+- `r`: `QUANTITY` - ECDSA 서명 r
+- `s`: `QUANTITY` - ECDSA 서명 s
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],"id":1}'
+// 결과
+{
+ "jsonrpc":"2.0",
+ "id":1,
+ "result":{
+ "blockHash":"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
+ "blockNumber":"0x5daf3b", // 6139707
+ "from":"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d",
+ "gas":"0xc350", // 50000
+ "gasPrice":"0x4a817c800", // 20000000000
+ "hash":"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b",
+ "input":"0x68656c6c6f21",
+ "nonce":"0x15", // 21
+ "to":"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb",
+ "transactionIndex":"0x41", // 65
+ "value":"0xf3dbb76162000", // 4290000000000000
+ "v":"0x25", // 37
+ "r":"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",
+ "s":"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"
+ }
+}
+```
+
+### eth_getTransactionByBlockHashAndIndex {#eth_gettransactionbyblockhashandindex}
+
+블록 해시 및 트랜잭션 인덱스 위치로 트랜잭션에 대한 정보를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 32바이트 - 블록의 해시.
+2. `QUANTITY` - 트랜잭션 인덱스 위치의 정수.
+
+```js
+params: [
+ "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
+ "0x0", // 0
+]
+```
+
+**반환 값**
+[eth_getTransactionByHash](#eth_gettransactionbyhash)를 참조하세요
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'
+```
+
+결과는 [eth_getTransactionByHash](#eth_gettransactionbyhash)를 참조하세요
+
+### eth_getTransactionByBlockNumberAndIndex {#eth_gettransactionbyblocknumberandindex}
+
+블록 번호 및 트랜잭션 인덱스 위치로 트랜잭션에 대한 정보를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `QUANTITY|TAG` - 블록 번호 또는 문자열 `"earliest"`, `"latest"`, `"pending"`, `"safe"` 또는 `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter)에서와 같이.
+2. `QUANTITY` - 트랜잭션 인덱스 위치.
+
+```js
+params: [
+ "0x9c47cf", // 10241999
+ "0x24", // 36
+]
+```
+
+**반환 값**
+[eth_getTransactionByHash](#eth_gettransactionbyhash)를 참조하세요
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x9c47cf", "0x24"],"id":1}'
+```
+
+결과는 [eth_getTransactionByHash](#eth_gettransactionbyhash)를 참조하세요
+
+### eth_getTransactionReceipt {#eth_gettransactionreceipt}
+
+트랜잭션 해시로 트랜잭션의 영수증을 반환합니다.
+
+**참고** 보류 중인 트랜잭션에 대해서는 영수증을 사용할 수 없습니다.
+
+**매개변수**
+
+1. `DATA`, 32바이트 - 트랜잭션의 해시
+
+```js
+params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"]
+```
+
+**반환 값**
+`객체` - 트랜잭션 영수증 객체, 또는 영수증을 찾을 수 없는 경우 `null`:
+
+- `transactionHash `: `DATA`, 32바이트 - 트랜잭션의 해시.
+- `transactionIndex`: `QUANTITY` - 블록 내 트랜잭션 인덱스 위치의 정수.
+- `blockHash`: `DATA`, 32바이트 - 이 트랜잭션이 포함된 블록의 해시.
+- `blockNumber`: `QUANTITY` - 이 트랜잭션이 포함된 블록 번호.
+- `from`: `DATA`, 20바이트 - 발신자의 주소.
+- `to`: `DATA`, 20바이트 - 수신자의 주소. 계약 생성 트랜잭션인 경우 null.
+- `cumulativeGasUsed` : `QUANTITY` - 이 트랜잭션이 블록에서 실행되었을 때 사용된 총 가스 양.
+- `effectiveGasPrice` : `QUANTITY` - 가스 단위당 지불된 기본 수수료와 팁의 합계.
+- `gasUsed `: `QUANTITY` - 이 특정 트랜잭션에서만 사용된 가스 양.
+- `contractAddress `: `DATA`, 20바이트 - 트랜잭션이 계약 생성인 경우 생성된 계약 주소, 그렇지 않으면 `null`.
+- `logs`: `배열` - 이 트랜잭션이 생성한 로그 객체의 배열.
+- `logsBloom`: `DATA`, 256바이트 - 라이트 클라이언트가 관련 로그를 빠르게 검색할 수 있도록 하는 블룸 필터.
+- `type`: `QUANTITY` - 트랜잭션 유형의 정수, 레거시 트랜잭션의 경우 `0x0`, 액세스 목록 유형의 경우 `0x1`, 동적 수수료의 경우 `0x2`.
+
+또한 다음 중 하나를 반환합니다.
+
+- `root` : `DATA` 트랜잭션 후 상태 루트의 32바이트(비잔티움 이전)
+- `status`: `QUANTITY` `1`(성공) 또는 `0`(실패)
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"],"id":1}'
+// 결과
+{
+ "jsonrpc": "2.0",
+ "id": 1,
+ "result": {
+ "blockHash":
+ "0xa957d47df264a31badc3ae823e10ac1d444b098d9b73d204c40426e57f47e8c3",
+ "blockNumber": "0xeff35f",
+ "contractAddress": null, // 생성된 경우 주소 문자열
+ "cumulativeGasUsed": "0xa12515",
+ "effectiveGasPrice": "0x5a9c688d4",
+ "from": "0x6221a9c005f6e47eb398fd867784cacfdcfff4e7",
+ "gasUsed": "0xb4c8",
+ "logs": [{
+ // getFilterLogs 등이 반환한 로그
+ }],
+ "logsBloom": "0x00...0", // 256바이트 블룸 필터
+ "status": "0x1",
+ "to": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
+ "transactionHash":
+ "0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5",
+ "transactionIndex": "0x66",
+ "type": "0x2"
+ }
+}
+```
+
+### eth_getUncleByBlockHashAndIndex {#eth_getunclebyblockhashandindex}
+
+해시 및 엉클 인덱스 위치로 블록의 엉클에 대한 정보를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `DATA`, 32바이트 - 블록의 해시.
+2. `QUANTITY` - 엉클의 인덱스 위치.
+
+```js
+params: [
+ "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
+ "0x0", // 0
+]
+```
+
+**반환 값**
+[eth_getBlockByHash](#eth_getblockbyhash)를 참조하세요
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'
+```
+
+결과는 [eth_getBlockByHash](#eth_getblockbyhash)를 참조하세요
+
+**참고**: 엉클은 개별 트랜잭션을 포함하지 않습니다.
+
+### eth_getUncleByBlockNumberAndIndex {#eth_getunclebyblocknumberandindex}
+
+번호 및 엉클 인덱스 위치로 블록의 엉클에 대한 정보를 반환합니다.
+
+
+ 플레이그라운드에서 엔드포인트 시도하기
+
+
+**매개변수**
+
+1. `QUANTITY|TAG` - 블록 번호 또는 문자열 `"earliest"`, `"latest"`, `"pending"`, `"safe"`, `"finalized"`, [블록 매개변수](/developers/docs/apis/json-rpc/#block-parameter)에서와 같이.
+2. `QUANTITY` - 엉클의 인덱스 위치.
+
+```js
+params: [
+ "0x29c", // 668
+ "0x0", // 0
+]
+```
+
+**반환 값**
+[eth_getBlockByHash](#eth_getblockbyhash)를 참조하세요
+
+**참고**: 엉클은 개별 트랜잭션을 포함하지 않습니다.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}'
+```
+
+결과는 [eth_getBlockByHash](#eth_getblockbyhash)를 참조하세요
+
+### eth_newFilter {#eth_newfilter}
+
+필터 옵션을 기반으로 필터 객체를 생성하여 상태가 변경될 때(로그) 알립니다.
+상태가 변경되었는지 확인하려면 [eth_getFilterChanges](#eth_getfilterchanges)를 호출하세요.
+
+**토픽 필터 지정에 대한 참고 사항:**
+토픽은 순서에 따라 다릅니다. 토픽 [A, B]가 있는 로그가 포함된 트랜잭션은 다음 토픽 필터와 일치합니다:
+
+- `[]` "모든 것"
+- `[A]` "첫 번째 위치에 A(그리고 그 뒤에 모든 것)"
+- `[null, B]` "첫 번째 위치에 모든 것 AND 두 번째 위치에 B(그리고 그 뒤에 모든 것)"
+- `[A, B]` "첫 번째 위치에 A AND 두 번째 위치에 B(그리고 그 뒤에 모든 것)"
+- `[[A, B], [A, B]]` "첫 번째 위치에 (A 또는 B) AND 두 번째 위치에 (A 또는 B)(그리고 그 뒤에 모든 것)"
+- **매개변수**
+
+1. `객체` - 필터 옵션:
+
+- `fromBlock`: `QUANTITY|TAG` - (선택 사항, 기본값: `"latest"`) 정수 블록 번호 또는 `"latest"`(최신 제안 블록), `"safe"`(최신 안전 블록), `"finalized"`(최신 확정 블록), `"pending"`, `"earliest"`(아직 블록에 포함되지 않은 트랜잭션).
+- `toBlock`: `QUANTITY|TAG` - (선택 사항, 기본값: `"latest"`) 정수 블록 번호 또는 `"latest"`(최신 제안 블록), `"safe"`(최신 안전 블록), `"finalized"`(최신 확정 블록), `"pending"`, `"earliest"`(아직 블록에 포함되지 않은 트랜잭션).
+- `address`: `DATA|배열`, 20바이트 - (선택 사항) 로그가 발생해야 하는 계약 주소 또는 주소 목록.
+- `topics`: `DATA 배열` - (선택 사항) 32바이트 `DATA` 토픽의 배열. 토픽은 순서에 따라 다릅니다. 각 토픽은 "or" 옵션이 있는 DATA 배열일 수도 있습니다.
+
+```js
+params: [
+ {
+ fromBlock: "0x1",
+ toBlock: "0x2",
+ address: "0x8888f1f195afa192cfee860698584c030f4c9db1",
+ topics: [
+ "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ null,
+ [
+ "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "0x0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc",
+ ],
+ ],
+ },
+]
+```
+
+**반환 값**
+`QUANTITY` - 필터 ID.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_newBlockFilter {#eth_newblockfilter}
+
+새 블록이 도착하면 알림을 보내도록 노드에 필터를 생성합니다.
+상태가 변경되었는지 확인하려면 [eth_getFilterChanges](#eth_getfilterchanges)를 호출하세요.
+
+**매개변수**
+없음
+
+**반환 값**
+`QUANTITY` - 필터 ID.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_newPendingTransactionFilter {#eth_newpendingtransactionfilter}
+
+새로운 보류 중인 트랜잭션이 도착하면 알림을 보내도록 노드에 필터를 생성합니다.
+상태가 변경되었는지 확인하려면 [eth_getFilterChanges](#eth_getfilterchanges)를 호출하세요.
+
+**매개변수**
+없음
+
+**반환 값**
+`QUANTITY` - 필터 ID.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_uninstallFilter {#eth_uninstallfilter}
+
+지정된 ID의 필터를 제거합니다. 감시가 더 이상 필요하지 않을 때 항상 호출해야 합니다.
+또한 필터는 일정 기간 동안 [eth_getFilterChanges](#eth_getfilterchanges)로 요청되지 않으면 시간 초과됩니다.
+
+**매개변수**
+
+1. `QUANTITY` - 필터 ID.
+
+```js
+params: [
+ "0xb", // 11
+]
+```
+
+**반환 값**
+`부울` - 필터가 성공적으로 제거되면 `true`, 그렇지 않으면 `false`입니다.
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}'
+// 결과
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": true
+}
+```
+
+### eth_getFilterChanges {#eth_getfilterchanges}
+
+마지막 폴링 이후 발생한 로그 배열을 반환하는 필터용 폴링 메서드입니다.
+
+**매개변수**
+
+1. `QUANTITY` - 필터 ID.
+
+```js
+params: [
+ "0x16", // 22
+]
+```
+
+**반환 값**
+`배열` - 로그 객체의 배열, 또는 마지막 폴링 이후 변경된 사항이 없는 경우 빈 배열.
+
+- `eth_newBlockFilter`로 생성된 필터의 경우 반환값은 블록 해시(`DATA`, 32바이트)입니다. 예: `["0x3454645634534..."]`.
+
+- `eth_newPendingTransactionFilter`로 생성된 필터의 경우 반환값은 트랜잭션 해시(`DATA`, 32바이트)입니다. 예: `["0x6345343454645..."]`.
+
+- `eth_newFilter`로 생성된 필터의 경우 로그는 다음 매개변수가 있는 객체입니다:
+ - `removed`: `TAG` - 체인 재구성으로 인해 로그가 제거된 경우 `true`입니다. 유효한 로그인 경우 `false`입니다.
+ - `logIndex`: `QUANTITY` - 블록 내 로그 인덱스 위치의 정수. 보류 중인 로그일 때 `null`.
+ - `transactionIndex`: `QUANTITY` - 로그가 생성된 트랜잭션 인덱스 위치의 정수. 보류 중인 로그일 때 `null`.
+ - `transactionHash`: `DATA`, 32바이트 - 이 로그가 생성된 트랜잭션의 해시. 보류 중인 로그일 때 `null`.
+ - `blockHash`: `DATA`, 32바이트 - 이 로그가 포함된 블록의 해시. 보류 중일 때 `null`. 보류 중인 로그일 때 `null`.
+ - `blockNumber`: `QUANTITY` - 이 로그가 포함된 블록 번호. 보류 중일 때 `null`. 보류 중인 로그일 때 `null`.
+ - `address`: `DATA`, 20바이트 - 이 로그가 시작된 주소.
+ - `data`: `DATA` - 가변 길이의 인덱싱되지 않은 로그 데이터. (solidity에서: 0개 이상의 32바이트 비인덱싱 로그 인수.)
+ - `topics`: `DATA 배열` - 인덱싱된 로그 인수의 0에서 4개의 32바이트 `DATA` 배열. (solidity에서: `anonymous` 지정자로 이벤트를 선언한 경우를 제외하고 첫 번째 토픽은 이벤트 서명의 해시입니다(예: `Deposit(address,bytes32,uint256)`).
+
+- **예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x16"],"id":73}'
+// 결과
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": [{
+ "logIndex": "0x1", // 1
+ "blockNumber":"0x1b4", // 436
+ "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d",
+ "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf",
+ "transactionIndex": "0x0", // 0
+ "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d",
+ "data":"0x0000000000000000000000000000000000000000000000000000000000000000",
+ "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"]
+ },{
+ ...
+ }]
+}
+```
+
+### eth_getFilterLogs {#eth_getfilterlogs}
+
+지정된 ID와 일치하는 필터의 모든 로그 배열을 반환합니다.
+
+**매개변수**
+
+1. `QUANTITY` - 필터 ID.
+
+```js
+params: [
+ "0x16", // 22
+]
+```
+
+**반환 값**
+[eth_getFilterChanges](#eth_getfilterchanges)를 참조하세요
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}'
+```
+
+결과는 [eth_getFilterChanges](#eth_getfilterchanges)를 참조하세요
+
+### eth_getLogs {#eth_getlogs}
+
+지정된 필터 객체와 일치하는 모든 로그의 배열을 반환합니다.
+
+**매개변수**
+
+1. `객체` - 필터 옵션:
+
+- `fromBlock`: `QUANTITY|TAG` - (선택 사항, 기본값: `"latest"`) 정수 블록 번호 또는 `"latest"`(최신 제안 블록), `"safe"`(최신 안전 블록), `"finalized"`(최신 확정 블록), `"pending"`, `"earliest"`(아직 블록에 포함되지 않은 트랜잭션).
+- `toBlock`: `QUANTITY|TAG` - (선택 사항, 기본값: `"latest"`) 정수 블록 번호 또는 `"latest"`(최신 제안 블록), `"safe"`(최신 안전 블록), `"finalized"`(최신 확정 블록), `"pending"`, `"earliest"`(아직 블록에 포함되지 않은 트랜잭션).
+- `address`: `DATA|배열`, 20바이트 - (선택 사항) 로그가 발생해야 하는 계약 주소 또는 주소 목록.
+- `topics`: `DATA 배열` - (선택 사항) 32바이트 `DATA` 토픽의 배열. 토픽은 순서에 따라 다릅니다. 각 토픽은 "or" 옵션이 있는 DATA 배열일 수도 있습니다.
+- `blockHash`: `DATA`, 32바이트 - (선택 사항, **향후**) EIP-234가 추가되면서 `blockHash`는 반환되는 로그를 32바이트 해시 `blockHash`가 있는 단일 블록으로 제한하는 새로운 필터 옵션이 될 것입니다. `blockHash`를 사용하는 것은 `fromBlock` = `toBlock` = 해시 `blockHash`가 있는 블록 번호와 동일합니다. 필터 기준에 `blockHash`가 있는 경우 `fromBlock`이나 `toBlock`은 허용되지 않습니다.
+
+```js
+params: [
+ {
+ topics: [
+ "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ ],
+ },
+]
+```
+
+**반환 값**
+[eth_getFilterChanges](#eth_getfilterchanges)를 참조하세요
+
+**예시**
+
+```js
+// 요청
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}'
+```
+
+결과는 [eth_getFilterChanges](#eth_getfilterchanges)를 참조하세요
+
+## 사용 예제 {#usage-example}
+
+### JSON_RPC를 사용하여 계약 배포하기 {#deploying-contract}
+
+이 섹션에서는 RPC 인터페이스만 사용하여 계약을 배포하는 방법에 대한 시연을 포함합니다. 이러한 복잡성이 추상화된 계약 배포를 위한 대체 경로가 있습니다. 예를 들어, [web3.js](https://web3js.readthedocs.io/) 및 [web3.py](https://github.com/ethereum/web3.py)와 같이 RPC 인터페이스 위에 구축된 라이브러리를 사용하는 것입니다. 이러한 추상화는 일반적으로 이해하기 쉽고 오류가 발생할 가능성이 적지만, 내부에서 어떤 일이 일어나고 있는지 이해하는 것은 여전히 유용합니다.
+
+다음은 이더리움 노드에 JSON-RPC 인터페이스를 사용하여 배포될 `Multiply7`이라는 간단한 스마트 계약입니다. 이 튜토리얼은 독자가 이미 Geth 노드를 실행하고 있다고 가정합니다. 노드와 클라이언트에 대한 자세한 정보는 [여기](/developers/docs/nodes-and-clients/run-a-node)에서 확인할 수 있습니다. Geth가 아닌 클라이언트의 경우 HTTP JSON-RPC를 시작하는 방법을 보려면 개별 [클라이언트](/developers/docs/nodes-and-clients/) 문서를 참조하세요. 대부분의 클라이언트는 기본적으로 `localhost:8545`에서 제공됩니다.
+
+```javascript
+contract Multiply7 {
+ event Print(uint);
+ function multiply(uint input) returns (uint) {
+ Print(input * 7);
+ return input * 7;
+ }
+}
+```
+
+가장 먼저 할 일은 HTTP RPC 인터페이스가 활성화되었는지 확인하는 것입니다. 즉, 시작 시 Geth에 `--http` 플래그를 제공합니다. 이 예에서는 비공개 개발 체인에서 Geth 노드를 사용합니다. 이 방법을 사용하면 실제 네트워크에서 이더가 필요하지 않습니다.
+
+```bash
+geth --http --dev console 2>>geth.log
+```
+
+이렇게 하면 `http://localhost:8545`에서 HTTP RPC 인터페이스가 시작됩니다.
+
+[curl](https://curl.se)을 사용하여 코인베이스 주소(계정 배열에서 첫 번째 주소를 가져옴)와 잔액을 검색하여 인터페이스가 실행 중인지 확인할 수 있습니다. 이 예제의 데이터는 로컬 노드에서 다를 수 있다는 점에 유의하세요. 이 명령을 사용해 보려면 두 번째 curl 요청의 요청 매개변수를 첫 번째 요청에서 반환된 결과로 바꾸세요.
+
+```bash
+curl --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[], "id":1}' -H "Content-Type: application/json" localhost:8545
+{"id":1,"jsonrpc":"2.0","result":["0x9b1d35635cc34752ca54713bb99d38614f63c955"]}
+
+curl --data '{"jsonrpc":"2.0","method":"eth_getBalance", "params": ["0x9b1d35635cc34752ca54713bb99d38614f63c955", "latest"], "id":2}' -H "Content-Type: application/json" localhost:8545
+{"id":2,"jsonrpc":"2.0","result":"0x1639e49bba16280000"}
+```
+
+숫자는 16진수로 인코딩되므로 잔액은 웨이 단위의 16진수 문자열로 반환됩니다. 잔액을 이더 단위의 숫자로 갖고 싶다면 Geth 콘솔에서 web3를 사용할 수 있습니다.
+
+```javascript
+web3.fromWei("0x1639e49bba16280000", "ether")
+// "410"
+```
+
+이제 비공개 개발 체인에 이더가 있으므로 계약을 배포할 수 있습니다. 첫 번째 단계는 Multiply7 계약을 EVM으로 보낼 수 있는 바이트 코드로 컴파일하는 것입니다. 솔리디티 컴파일러인 solc를 설치하려면 [솔리디티 문서](https://docs.soliditylang.org/en/latest/installing-solidity.html)를 따르세요. (예제에 사용된 컴파일러 버전](https://github.com/ethereum/solidity/releases/tag/v0.4.20)과 일치시키기 위해 이전 `solc` 릴리스를 사용하고 싶을 수도 있습니다.)
+
+다음 단계는 Multiply7 계약을 EVM으로 보낼 수 있는 바이트 코드로 컴파일하는 것입니다.
+
+```bash
+echo 'pragma solidity ^0.4.16; contract Multiply7 { event Print(uint); function multiply(uint input) public returns (uint) { Print(input * 7); return input * 7; } }' | solc --bin
+
+======= :Multiply7 =======
+Binary:
+6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029
+```
+
+이제 컴파일된 코드가 있으므로 이를 배포하는 데 드는 가스 비용을 결정해야 합니다. RPC 인터페이스에는 추정치를 제공하는 `eth_estimateGas` 메서드가 있습니다.
+
+```bash
+curl --data '{"jsonrpc":"2.0","method": "eth_estimateGas", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 5}' -H "Content-Type: application/json" localhost:8545
+{"jsonrpc":"2.0","id":5,"result":"0x1c31e"}
+```
+
+그리고 마지막으로 계약을 배포합니다.
+
+```bash
+curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "gas": "0x1c31e", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 6}' -H "Content-Type: application/json" localhost:8545
+{"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"}
+```
+
+트랜잭션이 노드에 의해 수락되고 트랜잭션 해시가 반환됩니다. 이 해시는 트랜잭션을 추적하는 데 사용할 수 있습니다. 다음 단계는 계약이 배포된 주소를 결정하는 것입니다. 실행된 각 트랜잭션은 영수증을 생성합니다. 이 영수증에는 트랜잭션이 포함된 블록과 EVM에서 사용한 가스 양과 같은 트랜잭션에 대한 다양한 정보가 포함되어 있습니다. 트랜잭션이
+계약을 생성하는 경우 계약 주소도 포함됩니다. `eth_getTransactionReceipt` RPC 메서드로 영수증을 검색할 수 있습니다.
+
+```bash
+curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545
+{"jsonrpc":"2.0","id":7,"result":{"blockHash":"0x77b1a4f6872b9066312de3744f60020cbd8102af68b1f6512a05b7619d527a4f","blockNumber":"0x1","contractAddress":"0x4d03d617d700cf81935d7f797f4e2ae719648262","cumulativeGasUsed":"0x1c31e","from":"0x9b1d35635cc34752ca54713bb99d38614f63c955","gasUsed":"0x1c31e","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":null,"transactionHash":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf","transactionIndex":"0x0"}}
+```
+
+우리의 계약은 `0x4d03d617d700cf81935d7f797f4e2ae719648262`에서 생성되었습니다. 영수증 대신 null 결과가 나오면 트랜잭션이 아직 블록에 포함되지 않았다는 의미입니다. 잠시 기다린 후 합의 클라이언트가 실행 중인지 확인하고 다시 시도하십시오.
+
+#### 스마트 계약과 상호작용하기 {#interacting-with-smart-contract}
+
+이 예제에서는 `eth_sendTransaction`을 사용하여 `multiply` 계약의 메서드에 트랜잭션을 전송합니다.
+
+`eth_sendTransaction`에는 `from`, `to`, `data`와 같은 여러 인수가 필요합니다. `From`은 우리 계정의 공개 주소이고 `to`는 계약 주소입니다. `data` 인수는 어떤 메서드를 어떤 인수로 호출해야 하는지를 정의하는 페이로드를 포함합니다. 이것이 [ABI(애플리케이션 바이너리 인터페이스)](https://docs.soliditylang.org/en/latest/abi-spec.html)가 사용되는 부분입니다. ABI는 EVM에 대한 데이터를 정의하고 인코딩하는 방법을 정의하는 JSON 파일입니다.
+
+페이로드의 바이트는 계약에서 호출되는 메서드를 정의합니다. 이것은 함수 이름과 인수 유형에 대한 Keccak 해시의 처음 4바이트를 16진수로 인코딩한 것입니다. multiply 함수는 uint256의 별칭인 uint를 허용합니다. 그러면 다음과 같이 됩니다.
+
+```javascript
+web3.sha3("multiply(uint256)").substring(0, 10)
+// "0xc6888fa1"
+```
+
+다음으로 인수를 인코딩해 보겠습니다. 값 6과 같은 uint256이 하나만 있습니다. ABI에는 uint256 유형을 인코딩하는 방법을 지정하는 섹션이 있습니다.
+
+`int: enc(X)`는 X의 빅엔디언 2의 보수 인코딩으로, 음수 X의 경우 상위(왼쪽)에 0xff를, 양수 X의 경우 0바이트를 채워 길이가 32바이트의 배수가 되도록 합니다.
+
+이것은 `0000000000000000000000000000000000000000000000000000000000000006`으로 인코딩됩니다.
+
+함수 선택기와 인코딩된 인수를 결합하면 데이터는 `0xc6888fa10000000000000000000000000000000000000000000000000000000000000006`이 됩니다.
+
+이제 이것을 노드로 보낼 수 있습니다.
+
+```bash
+curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeb85a5557e5bdc18ee1934a89d8bb402398ee26a", "to": "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", "data": "0xc6888fa10000000000000000000000000000000000000000000000000000000000000006"}], "id": 8}' -H "Content-Type: application/json" localhost:8545
+{"id":8,"jsonrpc":"2.0","result":"0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74"}
+```
+
+트랜잭션이 전송되었으므로 트랜잭션 해시가 반환되었습니다. 영수증을 검색하면 다음과 같이 표시됩니다.
+
+```javascript
+{
+ blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55",
+ blockNumber: 268,
+ contractAddress: null,
+ cumulativeGasUsed: 22631,
+ gasUsed: 22631,
+ logs: [{
+ address: "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d",
+ blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55",
+ blockNumber: 268,
+ data: "0x000000000000000000000000000000000000000000000000000000000000002a",
+ logIndex: 0,
+ topics: ["0x24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"],
+ transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74",
+ transactionIndex: 0
+ }],
+ transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74",
+ transactionIndex: 0
+}
+```
+
+영수증에는 로그가 포함되어 있습니다. 이 로그는 트랜잭션 실행 시 EVM에 의해 생성되어 영수증에 포함되었습니다. `multiply` 함수는 입력값에 7을 곱한 값으로 `Print` 이벤트가 발생했음을 보여줍니다. `Print` 이벤트의 인수가 uint256이었으므로 ABI 규칙에 따라 디코딩하면 예상되는 10진수 42를 얻을 수 있습니다. 데이터 외에도 토픽을 사용하여 어떤 이벤트가 로그를 생성했는지 확인할 수 있다는 점에 주목할 가치가 있습니다.
+
+```javascript
+web3.sha3("Print(uint256)")
+// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"
+```
+
+이것은 JSON-RPC의 직접적인 사용을 보여주는 가장 일반적인 작업 중 일부에 대한 간략한 소개였습니다.
+
+## 관련 주제 {#related-topics}
+
+- [JSON-RPC 사양](http://www.jsonrpc.org/specification)
+- [노드 및 클라이언트](/developers/docs/nodes-and-clients/)
+- [JavaScript API](/developers/docs/apis/javascript/)
+- [백엔드 API](/developers/docs/apis/backend/)
+- [실행 클라이언트](/developers/docs/nodes-and-clients/#execution-clients)
diff --git a/public/content/translations/ko/developers/docs/blocks/index.md b/public/content/translations/ko/developers/docs/blocks/index.md
new file mode 100644
index 00000000000..acd4581d457
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/blocks/index.md
@@ -0,0 +1,153 @@
+---
+title: "블록"
+description: "이더리움 블록체인 내의 블록 개요 - 데이터 구조, 왜 필요한지 그리고 어떻게 만들어지는지"
+lang: ko
+---
+
+블록은 이전 블록의 해시를 포함하는 체인 내의 트랜잭션의 묶음입니다. 블록을 체인으로 연결하는 이유는 해시는 암호화 방식으로 블록 데이터에서 파생되기 때문입니다. 이것은 이전의 어느 블록의 하나의 변경이 모든 이어지는 해시를 바꾸면서 그 다음의 모든 블록을 무효화하고, 블록체인을 실행하는 모두에게 알리기 때문에 사기를 막는다.
+
+## 필수 구성 요소 {#prerequisites}
+
+블록은 입문자에게 매우 친근한 주제입니다. 하지만 이 페이지를 더 잘 이해하는 데 도움이 되도록 먼저 [계정](/developers/docs/accounts/), [트랜잭션](/developers/docs/transactions/), [이더리움 소개](/developers/docs/intro-to-ethereum/)를 읽어보시는 것을 추천합니다.
+
+## 블록을 사용하는 이유 {#why-blocks}
+
+이더리움 네트워크의 모든 참여자가 동기화된 상태를 유지하고 정확한 트랜잭션 기록에 동의할 수 있도록 트랜잭션을 블록으로 일괄 처리합니다. 이는 수십(수백) 개의 트랜잭션이 제출되고, 합의하며, 한번에 동기화된다는 것을 의미합니다.
+
+
+_다이어그램은 [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)에서 발췌_
+
+제출 간격을 두어, 모든 네트워크 참여자들에게 합의할 수 있는 충분한 시간을 줍니다. 요청 트랜잭션이 초당 수십개가 발생하더라도, 블록은 매 12초마다 한번 생성되어 제출됩니다.
+
+## 블록 작동 방식 {#how-blocks-work}
+
+트랜잭션 기록을 보존하기 위해서, 블록은 엄격히 순서를 정하고 (모든 생성된 새로운 블록은 그 부모 블록의 참조를 갖는다), 블록 내의 트랜잭션도 엄격히 순서가 잘 정해진다. 드문 경우를 제외하고, 언제나 네트워크 상의 모든 참여자들은 정확한 숫자와 블록 기록 상에서 합의되어 있고, 현재 라이브 트랜잭션 요청을 다음 블록으로 묶기 위해 동작 중이다.
+
+네트워크에서 무작위로 선택된 검증인이 블록을 구성하면 해당 블록은 네트워크의 나머지 부분으로 전파됩니다. 모든 노드는 이 블록을 블록체인 끝에 추가하고 다음 블록을 생성하기 위해 새로운 검증자가 선택됩니다 정확한 블록-구성 과정과 제출/합의 과정은 현재 이더리움의 "작업증명" 프로토콜에 명시되어있다.
+
+## 지분 증명 프로토콜 {#proof-of-stake-protocol}
+
+작업 증명은 다음을 의미합니다.
+
+- 검증 노드는 나쁜 행동에 대한 담보로 예금 계좌에 32 ETH를 스테이킹해야 한다. 이는 부정직한 활동으로 인해 해당 지분의 일부 또는 전부가 파괴될 수 있으므로 네트워크를 보호하는 데 도움이 된다.
+- 모든 슬롯(12초 간격) 에서 검증인은 블록 제안자로 무작위로 선택된다. 그들은 트랜잭션들을 하나로 묶어서 실행하고 새로운 'state'를 결정한다. 그들은 정보를 블럭에 담아 다른 검증자에게 전달한다.
+- 새로운 블록에 대한 소식을 들은 다른 검증인은 트랜잭션을 다시 실행하여 글로벌 상태에 대한 제안된 변경 사항에 동의하는지 확인합니다. 블록이 유효하다고 가정하면 이를 자신의 데이터베이스에 추가합니다.
+- 검증인이 동일한 슬롯에서 두 개의 충돌하는 블록에 대해 듣게 되면 포크 선택 알고리즘을 사용하여 가장 많이 스테이킹된 ETH가 지원하는 블록을 선택합니다.
+
+[지분 증명에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos)
+
+## 블록 내에 무엇이 있나요? {#block-anatomy}
+
+블록은 수많은 정보를 담고 있습니다. 가장 높은 레벨의 블록에는 다음 필드가 포함됩니다:
+
+| 필드 | 설명 |
+| :--------------- | :--------------------- |
+| `슬롯` | 블록이 속한 슬롯 |
+| `proposer_index` | 블록을 제안하는 검증자의 ID |
+| `parent_root` | 이전 블록의 해시 |
+| `state_root` | 상태 객체의 루트 해시 |
+| `본문` | 아래에 정의된 여러 필드를 포함하는 객체 |
+
+블록 `body`는 자체적으로 여러 필드를 포함합니다:
+
+| 필드 | 설명 |
+| :------------------- | :------------------------------------- |
+| `randao_reveal` | 다음 블록 제안자를 선택하는 데 사용되는 값 |
+| `eth1_data` | 예금 계약에 대한 정보 |
+| `graffiti` | 블록에 태그를 지정하는 데 사용되는 임의의 데이터 |
+| `proposer_slashings` | 슬래싱될 검증자 목록 |
+| `attester_slashings` | 슬래싱될 인증자 목록 |
+| `인증` | 이전 슬롯에 대해 이루어진 인증 목록 |
+| `입금` | 예금 계약에 대한 새로운 예금 목록 |
+| `voluntary_exits` | 네트워크를 나가는 검증자 목록 |
+| `sync_aggregate` | 라이트 클라이언트에 서비스를 제공하는 데 사용되는 검증자의 하위 집합 |
+| `execution_payload` | 실행 클라이언트에서 전달된 트랜잭션 |
+
+`attestations` 필드에는 블록에 있는 모든 인증 목록이 포함됩니다. 인증서에는 데이터 타입과 여러 조각의 데이터가 포함됩니다. 각 인증에는 다음이 포함됩니다.
+
+| 필드 | 설명 |
+| :----------------- | :-------------------------- |
+| `aggregation_bits` | 이 인증에 참여한 검증자 목록 |
+| `데이터` | 여러 하위 필드가 있는 컨테이너 |
+| `signature` | `data` 부분에 대한 검증자 집합의 집계 서명 |
+
+`attestation`의 `data` 필드에는 다음이 포함됩니다.
+
+| 필드 | 설명 |
+| :------------------ | :------------------------ |
+| `슬롯` | 인증과 관련된 슬롯 |
+| `index` | 인증하는 검증자의 인덱스 |
+| `beacon_block_root` | 체인의 헤드로 간주되는 비콘 블록의 루트 해시 |
+| `출처` | 마지막으로 정당화된 체크포인트 |
+| `target` | 최신 에폭 경계 블록 |
+
+`execution_payload`에서 트랜잭션을 실행하면 전역 상태가 업데이트됩니다. 모든 클라이언트는 `execution_payload`의 트랜잭션을 다시 실행하여 새로운 상태가 새 블록의 `state_root` 필드에 있는 상태와 일치하는지 확인합니다. 이것이 클라이언트가 새 블록이 유효하고 블록체인에 안전하게 추가할 수 있는지 알 수 있는 방법입니다. `execution payload` 자체는 여러 필드가 있는 객체입니다. 또한 실행 데이터에 대한 중요한 요약 정보가 포함된 `execution_payload_header`가 있습니다. 이러한 데이터 구조는 다음과 같이 구성됩니다.
+
+`execution_payload_header`에는 다음 필드가 포함됩니다.
+
+| 필드 | 설명 |
+| :------------------ | :---------------------------------- |
+| `parent_hash` | 부모 블록의 해시 |
+| `fee_recipient` | 거래 수수료를 지불할 계정 주소 |
+| `state_root` | 이 블록의 변경 사항을 적용한 후의 전역 상태에 대한 루트 해시 |
+| `receipts_root` | 거래 영수증 트리의 해시 |
+| `logs_bloom` | 이벤트 로그를 포함하는 데이터 구조 |
+| `prev_randao` | 임의 검증자 선택에 사용되는 값 |
+| `block_number` | 현재 블록의 번호 |
+| `gas_limit` | 이 블록에서 허용되는 최대 가스 |
+| `gas_used` | 이 블록에서 실제 사용된 가스량 |
+| `timestamp` | 블록 시간 |
+| `extra_data` | 원시 바이트로서의 임의의 추가 데이터 |
+| `base_fee_per_gas` | 기본 수수료 값 |
+| `block_hash` | 실행 블록의 해시 |
+| `transactions_root` | 페이로드에 있는 트랜잭션의 루트 해시 |
+| `withdrawal_root` | 페이로드에 있는 인출의 루트 해시 |
+
+`execution_payload` 자체에는 다음이 포함됩니다(트랜잭션의 루트 해시 대신 실제 트랜잭션 목록 및 인출 정보가 포함된다는 점을 제외하면 헤더와 동일합니다):
+
+| 필드 | 설명 |
+| :----------------- | :---------------------------------- |
+| `parent_hash` | 부모 블록의 해시 |
+| `fee_recipient` | 거래 수수료를 지불할 계정 주소 |
+| `state_root` | 이 블록의 변경 사항을 적용한 후의 전역 상태에 대한 루트 해시 |
+| `receipts_root` | 거래 영수증 트리의 해시 |
+| `logs_bloom` | 이벤트 로그를 포함하는 데이터 구조 |
+| `prev_randao` | 임의 검증자 선택에 사용되는 값 |
+| `block_number` | 현재 블록의 번호 |
+| `gas_limit` | 이 블록에서 허용되는 최대 가스 |
+| `gas_used` | 이 블록에서 실제 사용된 가스량 |
+| `timestamp` | 블록 시간 |
+| `extra_data` | 원시 바이트로서의 임의의 추가 데이터 |
+| `base_fee_per_gas` | 기본 수수료 값 |
+| `block_hash` | 실행 블록의 해시 |
+| `트랜잭션` | 실행할 트랜잭션 목록 |
+| `출금` | 인출 객체 목록 |
+
+`withdrawals` 목록에는 다음과 같이 구성된 `withdrawal` 객체가 포함됩니다.
+
+| 필드 | 설명 |
+| :--------------- | :-------- |
+| `주소` | 인출한 계정 주소 |
+| `amount` | 인출 금액 |
+| `index` | 인출 인덱스 값 |
+| `validatorIndex` | 검증자 인덱스 값 |
+
+## 블록 시간 {#block-time}
+
+블록 시간이란 블록 사이의 시간을 의미합니다. 이더리움에서 시간은 '슬롯'이라고 하는 12초 단위로 나뉩니다. 각 슬롯에서 단일 검증자가 블록을 제안하도록 선택됩니다. 모든 검증자가 온라인 상태이고 완벽하게 작동한다고 가정하면 모든 슬롯에 블록이 존재하게 되며, 이는 블록 시간이 12초임을 의미합니다. 그러나 때로는 검증자가 블록을 제안하도록 호출되었을 때 오프라인 상태일 수 있으며, 이는 슬롯이 비어 있을 수 있음을 의미합니다.
+
+이 구현은 블록 시간이 확률적이며 프로토콜의 목표 채굴 난이도에 따라 조정되는 작업 증명 기반 시스템과 다릅니다. 이더리움의 [평균 블록 시간](https://etherscan.io/chart/blocktime)은 작업 증명에서 지분 증명으로의 전환이 새로운 12초 블록 시간의 일관성을 기반으로 명확하게 추론될 수 있는 완벽한 예입니다.
+
+## 블록 크기 {#block-size}
+
+마지막 중요한 유의점은 블록 그 자체가 크기 한계를 가진다는 것이다. 각 블록의 목표 크기는 3,000만 가스이지만, 네트워크 수요에 따라 블록 크기는 6,000만 가스(목표 블록 크기의 2배) 한도까지 증가하거나 감소합니다. 블록 가스 한도는 이전 블록의 가스 한도에서 1/1024만큼 상향 또는 하향 조정될 수 있습니다. 결과적으로, 검증자는 합의를 통해 블록 가스 한도를 변경할 수 있습니다. 블록 내 모든 트랜잭션에서 소비된 총 가스량은 블록 가스 한도보다 작아야 합니다. 블록이 제멋대로 커질 수 없도록 보장하기 때문에 이는 중요하다. 블록이 제멋대로 커질 수 있다면, 적은 성능 기준의 풀 노드들이 공간과 시간적 요구 사항으로 인해 네트워크 유지를 차츰 멈출 것이다. 블록이 클수록 다음 슬롯 시간에 맞춰 처리하는 데 더 큰 컴퓨팅 파워가 필요합니다. 이는 중앙화 요인이며, 블록 크기를 제한함으로써 이를 방지합니다.
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [트랜잭션](/developers/docs/transactions/)
+- [가스](/developers/docs/gas/)
+- [지분 증명](/developers/docs/consensus-mechanisms/pos)
diff --git a/public/content/translations/ko/developers/docs/bridges/index.md b/public/content/translations/ko/developers/docs/bridges/index.md
new file mode 100644
index 00000000000..03b17b1d992
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/bridges/index.md
@@ -0,0 +1,138 @@
+---
+title: "브릿지"
+description: "개발자를 위한 브리징 개요"
+lang: ko
+---
+
+L1 블록체인과 L2 [확장](/developers/docs/scaling/) 솔루션이 확산되고, 점점 더 많은 탈중앙화 애플리케이션이 크로스체인으로 전환됨에 따라, 체인 간 통신 및 자산 이동의 필요성은 네트워크 인프라의 필수적인 부분이 되었습니다. 이를 가능하게 하기 위해 다양한 유형의 브리지가 존재합니다.
+
+## 브리지의 필요성 {#need-for-bridges}
+
+브리지는 블록체인 네트워크를 연결하기 위해 존재합니다. 브리지는 블록체인 간의 연결성과 상호운용성을 가능하게 합니다.
+
+블록체인은 분리된 환경에 존재하므로, 블록체인이 다른 블록체인과 자연스럽게 거래하고 통신할 방법이 없습니다. 결과적으로, 한 생태계 내에서 상당한 활동과 혁신이 있을 수 있지만, 다른 생태계와의 연결성 및 상호운용성 부족으로 인해 제한됩니다.
+
+브리지는 고립된 블록체인 환경이 서로 연결될 수 있는 방법을 제공합니다. 브리지는 토큰, 메시지, 임의의 데이터, 심지어 [스마트 계약](/developers/docs/smart-contracts/) 호출까지 한 체인에서 다른 체인으로 전송할 수 있는 블록체인 간의 전송 경로를 설정합니다.
+
+## 브리지의 이점 {#benefits-of-bridges}
+
+간단히 말해, 브리지는 블록체인 네트워크가 데이터를 교환하고 자산을 이동할 수 있도록 하여 수많은 사용 사례를 가능하게 합니다.
+
+블록체인은 애플리케이션 구축에 있어 고유한 강점, 약점, 접근 방식(예: 속도, 처리량, 비용 등)을 가지고 있습니다. 브리지는 블록체인이 서로의 혁신을 활용할 수 있도록 하여 전체 암호화폐 생태계의 발전에 기여합니다.
+
+개발자에게 브리지는 다음을 가능하게 합니다.
+
+- 체인 간 모든 데이터, 정보 및 자산의 전송.
+- 브리지가 프로토콜이 제공할 수 있는 설계 공간을 확장함에 따라 프로토콜에 대한 새로운 기능과 사용 사례를 발굴합니다. 예를 들어, 원래 이더리움 메인넷에 배포된 이자 농사 프로토콜은 모든 EVM 호환 체인에 유동성 풀을 제공할 수 있습니다.
+- 다양한 블록체인의 강점을 활용할 기회. 예를 들어, 개발자는 롤업 및 사이드체인 전반에 탈중앙화앱을 배포하여 다양한 L2 솔루션이 제공하는 더 낮은 수수료의 이점을 누릴 수 있으며, 사용자는 이를 통해 브리지를 이용할 수 있습니다.
+- 다양한 블록체인 생태계의 개발자 간 협력을 통해 새로운 제품을 구축합니다.
+- 다양한 생태계의 사용자와 커뮤니티를 자신의 탈중앙화앱으로 유치합니다.
+
+## 브리지는 어떻게 작동하나요? {#how-do-bridges-work}
+
+다양한 [유형의 브리지 설계](https://li.fi/knowledge-hub/blockchain-bridges-and-classification/)가 있지만, 자산의 크로스체인 전송을 용이하게 하는 세 가지 방법이 두드러집니다.
+
+- **잠금 및 발행 –** 소스 체인에서 자산을 잠그고 대상 체인에서 자산을 발행합니다.
+- **소각 및 발행 –** 소스 체인에서 자산을 소각하고 대상 체인에서 자산을 발행합니다.
+- **아토믹 스왑 –** 다른 당사자와 소스 체인의 자산을 대상 체인의 자산으로 교환합니다.
+
+## 브리지 유형 {#bridge-types}
+
+브리지는 일반적으로 다음 유형 중 하나로 분류할 수 있습니다.
+
+- **네이티브 브리지 –** 이 브리지는 일반적으로 특정 블록체인의 유동성을 부트스트랩하기 위해 구축되어 사용자가 생태계로 자금을 쉽게 이동할 수 있도록 합니다. 예를 들어, [Arbitrum Bridge](https://bridge.arbitrum.io/)는 사용자가 이더리움 메인넷에서 Arbitrum으로 편리하게 브리징할 수 있도록 구축되었습니다. 이러한 브리지에는 Polygon PoS Bridge, [Optimism Gateway](https://app.optimism.io/bridge) 등이 있습니다.
+- **검증자 또는 오라클 기반 브리지 –** 이 브리지는 외부 검증자 세트 또는 오라클에 의존하여 크로스체인 전송을 검증합니다. 예: Multichain 및 Across.
+- **일반화된 메시지 전달 브리지 –** 이 브리지는 메시지 및 임의의 데이터와 함께 자산을 체인 간에 전송할 수 있습니다. 예: Axelar, LayerZero, Nomad.
+- **유동성 네트워크 –** 이 브리지는 주로 아토믹 스왑을 통해 한 체인에서 다른 체인으로 자산을 전송하는 데 중점을 둡니다. 일반적으로 크로스체인 메시지 전달을 지원하지 않습니다. 예: Connext 및 Hop.
+
+## 고려해야 할 절충안 {#trade-offs}
+
+브리지에는 완벽한 해결책이 없습니다. 오히려 목적을 달성하기 위한 절충안만 있을 뿐입니다. 개발자와 사용자는 다음 요소를 기반으로 브리지를 평가할 수 있습니다.
+
+- **보안 –** 누가 시스템을 검증하나요? 외부 검증자에 의해 보호되는 브리지는 일반적으로 블록체인의 검증자에 의해 로컬 또는 네이티브로 보호되는 브리지보다 안전하지 않습니다.
+- **편의성 –** 트랜잭션을 완료하는 데 얼마나 걸리며, 사용자는 몇 개의 트랜잭션에 서명해야 했나요? 개발자의 경우, 브리지를 통합하는 데 얼마나 걸리며 그 과정은 얼마나 복잡한가요?
+- **연결성 –** 브리지가 연결할 수 있는 대상 체인(예: 롤업, 사이드체인, 기타 레이어 1 블록체인 등)은 무엇이며, 새로운 블록체인을 통합하는 것은 얼마나 어려운가요?
+- **더 복잡한 데이터 전달 능력 –** 브리지가 체인 간에 메시지와 더 복잡한 임의의 데이터를 전송할 수 있나요, 아니면 크로스체인 자산 전송만 지원하나요?
+- **비용 효율성 –** 브리지를 통해 체인 간 자산을 전송하는 데 드는 비용은 얼마인가요? 일반적으로 브리지는 가스 비용 및 특정 경로의 유동성에 따라 고정 또는 가변 수수료를 부과합니다. 또한 보안을 보장하는 데 필요한 자본을 기반으로 브리지의 비용 효율성을 평가하는 것도 중요합니다.
+
+크게 보면, 브리지는 신뢰 기반과 무신뢰 기반으로 분류할 수 있습니다.
+
+- **신뢰 기반 –** 신뢰 기반 브리지는 외부에서 검증됩니다. 이들은 외부 검증자 세트(다중 서명 연합, 다자간 컴퓨팅 시스템, 오라클 네트워크)를 사용하여 체인 간 데이터를 전송합니다. 결과적으로, 이들은 뛰어난 연결성을 제공하고 체인 간에 완전히 일반화된 메시지 전달을 가능하게 할 수 있습니다. 또한 속도와 비용 효율성 측면에서도 우수한 성능을 보이는 경향이 있습니다. 이는 사용자가 브리지의 보안에 의존해야 하므로 보안을 희생하는 대가로 이루어집니다.
+- **무신뢰 기반 –** 이 브리지는 연결하는 블록체인과 해당 검증자에 의존하여 메시지와 토큰을 전송합니다. 이들은 (블록체인 외에) 새로운 신뢰 가정을 추가하지 않기 때문에 '무신뢰'입니다. 결과적으로 무신뢰 기반 브리지는 신뢰 기반 브리지보다 더 안전한 것으로 간주됩니다.
+
+다른 요소를 기반으로 무신뢰 기반 브리지를 평가하려면, 이를 일반화된 메시지 전달 브리지와 유동성 네트워크로 나누어야 합니다.
+
+- **일반화된 메시지 전달 브리지 –** 이 브리지는 보안과 체인 간에 더 복잡한 데이터를 전송하는 능력에서 뛰어납니다. 일반적으로 비용 효율성도 우수합니다. 그러나 이러한 강점은 일반적으로 라이트 클라이언트 브리지(예: IBC)의 연결성 저하와 사기 증명을 사용하는 낙관적 브리지(예: Nomad)의 속도 저하를 대가로 합니다.
+- **유동성 네트워크 –** 이 브리지는 아토믹 스왑을 사용하여 자산을 전송하며 로컬에서 검증되는 시스템입니다(즉, 기본 블록체인의 검증자를 사용하여 트랜잭션을 검증합니다). 결과적으로, 이들은 보안과 속도에서 뛰어납니다. 또한, 비교적 비용 효율적이며 우수한 연결성을 제공하는 것으로 간주됩니다. 그러나 주요 절충안은 크로스체인 메시지 전달을 지원하지 않기 때문에 더 복잡한 데이터를 전달할 수 없다는 것입니다.
+
+## 브리지의 위험성 {#risk-with-bridges}
+
+브리지는 [DeFi에서 가장 큰 해킹](https://rekt.news/leaderboard/) 상위 3건을 차지하며, 아직 개발 초기 단계에 있습니다. 어떤 브리지를 사용하든 다음과 같은 위험이 따릅니다.
+
+- **스마트 계약 위험 –** 많은 브리지가 성공적으로 감사를 통과했지만, 스마트 계약의 단 하나의 결함만으로도 자산이 해킹에 노출될 수 있습니다(예: [솔라나의 웜홀 브리지](https://rekt.news/wormhole-rekt/)).
+- **시스템적 금융 위험** – 많은 브리지가 래핑된 자산을 사용하여 새 체인에서 원본 자산의 표준 버전을 발행합니다. 이는 생태계를 시스템적 위험에 노출시키는데, 우리는 래핑된 버전의 토큰이 악용되는 것을 보았습니다.
+- **거래 상대방 위험 –** 일부 브리지는 사용자가 검증자들이 공모하여 사용자 자금을 훔치지 않을 것이라는 가정에 의존해야 하는 신뢰 기반 설계를 사용합니다. 사용자가 이러한 제3자 행위자를 신뢰해야 할 필요성은 러그 풀, 검열 및 기타 악의적인 활동과 같은 위험에 노출시킵니다.
+- **미해결 문제 –** 브리지가 개발 초기 단계에 있다는 점을 감안할 때, 네트워크 혼잡 시나 네트워크 수준 공격 또는 상태 롤백과 같은 예기치 않은 이벤트 동안 브리지가 다양한 시장 상황에서 어떻게 작동할지에 대한 많은 미해결 질문이 있습니다. 이러한 불확실성은 특정 위험을 제기하며, 그 정도는 아직 알려지지 않았습니다.
+
+## 탈중앙화앱은 브리지를 어떻게 사용할 수 있나요? {#how-can-dapps-use-bridges}
+
+다음은 개발자가 브리지 및 탈중앙화앱의 크로스체인 전환에 대해 고려할 수 있는 몇 가지 실용적인 애플리케이션입니다.
+
+### 브리지 통합하기 {#integrating-bridges}
+
+개발자를 위해 브리지 지원을 추가하는 방법은 여러 가지가 있습니다.
+
+1. **자체 브리지 구축 –** 안전하고 신뢰할 수 있는 브리지를 구축하는 것은 쉽지 않으며, 특히 신뢰를 최소화하는 경로를 택하는 경우 더욱 그렇습니다. 또한, 확장성 및 상호운용성 연구와 관련된 수년간의 경험과 기술 전문 지식이 필요합니다. 또한, 브리지를 유지하고 실행 가능하게 만들기 위해 충분한 유동성을 유치할 실무 팀이 필요합니다.
+
+2. **사용자에게 여러 브리지 옵션 표시 –** 많은 [탈중앙화앱](/developers/docs/dapps/)은 사용자가 상호 작용하기 위해 네이티브 토큰을 보유해야 합니다. 사용자가 자신의 토큰에 액세스할 수 있도록 웹사이트에서 다양한 브리지 옵션을 제공합니다. 그러나 이 방법은 사용자를 탈중앙화앱 인터페이스에서 벗어나게 하고 다른 탈중앙화앱 및 브리지와 상호 작용해야 하므로 문제에 대한 임시방편입니다. 이는 실수를 할 가능성이 높아지는 번거로운 온보딩 경험입니다.
+
+3. **브리지 통합 –** 이 솔루션은 탈중앙화앱이 사용자를 외부 브리지 및 DEX 인터페이스로 보낼 필요가 없습니다. 이를 통해 탈중앙화앱은 사용자 온보딩 경험을 개선할 수 있습니다. 하지만 이 접근 방식에는 한계가 있습니다.
+
+ - 브리지의 평가 및 유지 관리는 어렵고 시간이 많이 소요됩니다.
+ - 하나의 브리지를 선택하면 단일 장애점과 종속성이 발생합니다.
+ - 탈중앙화앱은 브리지의 기능에 의해 제한됩니다.
+ - 브리지만으로는 충분하지 않을 수 있습니다. 탈중앙화앱은 크로스체인 스왑과 같은 더 많은 기능을 제공하기 위해 DEX가 필요할 수 있습니다.
+
+4. **여러 브리지 통합 –** 이 솔루션은 단일 브리지 통합과 관련된 많은 문제를 해결합니다. 그러나 여러 브리지를 통합하는 것은 리소스를 많이 소모하고 개발자에게 기술 및 통신 오버헤드를 발생시키기 때문에 한계가 있습니다. 이는 암호화폐에서 가장 부족한 리소스입니다.
+
+5. **브리지 애그리게이터 통합 –** 탈중앙화앱을 위한 또 다른 옵션은 여러 브리지에 대한 액세스를 제공하는 브리지 애그리게이터 솔루션을 통합하는 것입니다. 브리지 애그리게이터는 모든 브리지의 강점을 상속하므로 단일 브리지의 기능에 의해 제한되지 않습니다. 특히, 브리지 애그리게이터는 일반적으로 브리지 통합을 유지 관리하므로 탈중앙화앱이 브리지 통합의 기술 및 운영 측면을 파악해야 하는 번거로움을 덜어줍니다.
+
+그렇긴 하지만, 브리지 애그리게이터에도 한계가 있습니다. 예를 들어, 더 많은 브리지 옵션을 제공할 수 있지만, 일반적으로 시장에는 애그리게이터 플랫폼에서 제공하는 것 외에 더 많은 브리지가 있습니다. 또한, 브리지와 마찬가지로 브리지 애그리게이터도 스마트 계약 및 기술 위험에 노출됩니다(더 많은 스마트 계약 = 더 많은 위험).
+
+탈중앙화앱이 브리지 또는 애그리게이터를 통합하는 경로를 택하는 경우, 통합의 깊이에 따라 다양한 옵션이 있습니다. 예를 들어, 사용자 온보딩 경험을 개선하기 위한 프런트엔드 통합일 뿐이라면 탈중앙화앱은 위젯을 통합할 것입니다. 그러나 통합이 스테이킹, 이자 농사 등과 같은 더 깊은 크로스체인 전략을 탐색하기 위한 것이라면 탈중앙화앱은 SDK 또는 API를 통합합니다.
+
+### 여러 체인에 탈중앙화앱 배포하기 {#deploying-a-dapp-on-multiple-chains}
+
+여러 체인에 탈중앙화앱을 배포하기 위해 개발자는 [Alchemy](https://www.alchemy.com/), [Hardhat](https://hardhat.org/), [Moralis](https://moralis.io/) 등과 같은 개발 플랫폼을 사용할 수 있습니다. 일반적으로 이러한 플랫폼에는 탈중앙화앱이 크로스체인으로 전환할 수 있도록 하는 구성 가능한 플러그인이 함께 제공됩니다. 예를 들어, 개발자는 [hardhat-deploy plugin](https://github.com/wighawag/hardhat-deploy)에서 제공하는 결정론적 배포 프록시를 사용할 수 있습니다.
+
+#### 예시:
+
+- [크로스체인 탈중앙화앱을 구축하는 방법](https://moralis.io/how-to-build-cross-chain-dapps/)
+- [크로스체인 NFT 마켓플레이스 구축하기](https://youtu.be/WZWCzsB1xUE)
+- [Moralis: 크로스체인 NFT 탈중앙화앱 구축하기](https://www.youtube.com/watch?v=ehv70kE1QYo)
+
+### 체인 간 계약 활동 모니터링하기 {#monitoring-contract-activity-across-chains}
+
+체인 간 계약 활동을 모니터링하기 위해 개발자는 서브그래프 및 Tenderly와 같은 개발자 플랫폼을 사용하여 스마트 계약을 실시간으로 관찰할 수 있습니다. 이러한 플랫폼에는 [계약에서 발생한 이벤트](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events) 확인 등 크로스체인 활동에 대한 더 큰 데이터 모니터링 기능을 제공하는 도구도 있습니다.
+
+#### 도구
+
+- [The Graph](https://thegraph.com/en/)
+- [Tenderly](https://tenderly.co/)
+
+## 더 읽어보기 {#further-reading}
+
+- [블록체인 브리지](/bridges/) – ethereum.org
+- [L2Beat 브리지 위험 프레임워크](https://l2beat.com/bridges/summary)
+- [블록체인 브리지: 암호화폐 네트워크의 네트워크 구축](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) - 2021년 9월 8일 – Dmitriy Berenzon
+- [상호운용성 트릴레마](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) - 2021년 10월 1일 – Arjun Bhuptani
+- [클러스터: 신뢰 기반 및 신뢰 최소화 브리지가 멀티체인 환경을 형성하는 방법](https://blog.celestia.org/clusters/) - 2021년 10월 4일 – Mustafa Al-Bassam
+- [LI.FI: 브리지에서 신뢰는 스펙트럼입니다](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) - 2022년 4월 28일 – Arjun Chand
+- [롤업 상호운용성 솔루션의 현황](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - 2024년 6월 20일 – Alex Hook
+- [안전한 크로스체인 상호운용성을 위한 공유 보안 활용: Lagrange State Committees 등](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - 2024년 6월 12일 – Emmanuel Awosika
+
+또한, [James Prestwich](https://twitter.com/_prestwich)가 브리지에 대한 더 깊은 이해를 돕기 위해 제공한 통찰력 있는 발표 자료가 있습니다.
+
+- [벽으로 둘러싸인 정원이 아닌 브리지 구축하기](https://youtu.be/ZQJWMiX4hT0)
+- [브리지 분석하기](https://youtu.be/b0mC-ZqN8Oo)
+- [브리지는 왜 불타고 있는가](https://youtu.be/c7cm2kd20j8)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/index.md
new file mode 100644
index 00000000000..f08c1a23da0
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/index.md
@@ -0,0 +1,92 @@
+---
+title: "합의 메커니즘"
+description: "분산 시스템에서 합의 프로토콜에 대한 설명과 이더리움에서의 역할."
+lang: ko
+---
+
+'합의 메커니즘'이라는 용어는 일반적으로 '지분 증명', '작업 증명' 또는 '권위 증명' 프로토콜을 지칭할 때 사용됩니다. 하지만 이는 [시빌 공격](/glossary/#sybil-attack)으로부터 보호하는 합의 메커니즘의 구성 요소일 뿐입니다. 합의 메커니즘은 분산된 노드들이 블록체인의 상태에 동의할 수 있게 해주는 아이디어, 프로토콜 및 인센티브의 전체 스택입니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [이더리움 소개](/developers/docs/intro-to-ethereum/)를 읽어보시는 것을 추천합니다.
+
+## 합의란 무엇인가요? {#what-is-consensus}
+
+합의를 통해 기본적인 동의가 완료됩니다. 영화관에 가려고 하는 사람들을 사람들을 생각해 봅시다. 같이 보려고 하는 영화에 대해 누구도 거부하지 않는다면 합의가 이루어진 것입니다. 누군가가 거부한다면 사람들은 어떤 영화를 볼 지 정해야 합니다. 심한 경우에는 결국 사람들이 나뉠 수 있습니다.
+
+이더리움 블록체인에서 이 프로세스는 정형화되어 있으며, 합의에 도달한다는 것은 네트워크 노드의 66% 이상이 네트워크의 글로벌 상태에 동의한다는 것을 의미합니다.
+
+## 합의 메커니즘이란 무엇인가요? 합의 메커니즘이란? {#what-is-a-consensus-mechanism}
+
+합의 메커니즘은 노드 네트워크가 블록체인의 상태에 동의할 수 있도록 하는 모든 프로토콜, 인센티브 및 아이디어의 집합체입니다.
+
+이더리움은 지분 증명 기반의 합의 메커니즘을 사용하여 스테이커가 잠근 자본에 적용된 일련의 보상 및 불이익을 통해 암호화폐 경제의 보안을 유지합니다. 이러한 인센티브 구조를 통해 개인 스테이커는 검증자를 정직하게 운영하도록 하고, 그러지 않는 사람에게 불이익을 가하며, 네트워크 공격에 필요한 가격을 극도로 높입니다.
+
+또한, 정직한 검증자가 블록을 제안하거나 검증하도록 선택되는 프로토콜이 있습니다. 드문 상황에서 여러 블록이 체인의 맨 앞에 있는 경우, 포크 선택 메커니즘이 검증자가 지분한 이더 잔액에 따라 블록을 선택합니다.
+
+코드로 명시적으로 정의되지 않은 추가 보안 개념은 네트워크 공격에 대한 마지막 방어 수단으로 작동할 수 있습니다.
+
+이러한 구성 요소들이 합쳐져 합의 메커니즘을 형성합니다.
+
+## 합의 메커니즘의 유형 {#types-of-consensus-mechanisms}
+
+### 작업 증명 기반 {#proof-of-work}
+
+비트코인처럼 이더리움은 한때 **작업 증명(PoW)** 기반 합의 프로토콜을 사용했습니다.
+
+#### 블록 생성 {#pow-block-creation}
+
+채굴자들이 처리된 트랜잭션으로 가득 찬 새 블록을 만들기 위해 경쟁합니다. 승자는 새 블록을 네트워크에 공유하고 새로 발행된 ETH를 얻습니다. 수학 문제를 가장 빠르게 푸는 컴퓨터가 경주에서 이깁니다. 이 과정이 현재 블록과 이전 블록 간의 암호학적 연결을 만듭니다. 이 퍼즐을 푸는 것이 작업 증명에서의 '작업'입니다. 정통 체인은 채굴된 블록에 가장 많은 작업이 들어간 블록 세트를 선택하는 포크 선택 규칙에 의해 결정됩니다.
+
+#### 보안 {#pow-security}
+
+네트워크는 체인을 속이려면 네트워크의 51% 컴퓨팅 파워가 필요하기 때문에 안전하게 유지됩니다. 이 정도의 장비와 에너지를 투자하면 얻는 것보다 더 많은 돈을 쓸 가능성이 큽니다.
+
+[작업 증명](/developers/docs/consensus-mechanisms/pow/)에 대한 자세한 정보
+
+### 지분 증명 기반 {#proof-of-stake}
+
+현재 이더리움은 **지분 증명(PoS)** 기반 합의 프로토콜을 사용합니다.
+
+#### 블록 생성 {#pos-block-creation}
+
+검증자가 블록을 생성합니다. 각 슬롯에서 무작위로 선택된 한 명의 검증자가 블록 제안자가 됩니다. 그들의 합의 클라이언트는 쌍을 이루는 실행 클라이언트에서 '실행 페이로드'로 트랜잭션 번들을 요청합니다. 검증자는 이를 합의 데이터로 감싸 블록을 생성하고, 이를 이더리움 네트워크의 다른 노드에 보냅니다. 이 블록 생성은 ETH로 보상받습니다. 드문 경우지만 여러 가능한 블록이 존재할 경우, 포크 선택 알고리즘은 가장 많은 검증자의 지지를 받은 블록을 선택합니다.
+
+#### 보안 {#pos-security}
+
+지분 증명 시스템은 경제적으로 안전합니다. 공격자가 체인을 장악하려면 막대한 양의 ETH를 잃어야 하기 때문입니다. 보상 시스템은 개별 스테이커가 정직하게 행동하도록 인센티브를 제공하며, 처벌은 악의적 행동을 억제합니다.
+
+[지분 증명](/developers/docs/consensus-mechanisms/pos/)에 대한 자세한 정보
+
+### 시각적 가이드 {#types-of-consensus-video}
+
+이더리움에서 사용되는 다양한 합의 메커니즘에 대해 자세히 알아보세요.
+
+
+
+### 시빌 저항 및 체인 선택 {#sybil-chain}
+
+작업 증명과 지분 증명은 실제로는 합의 프로토콜이 아니지만, 간단하게 설명하기 위해 종종 그렇게 불립니다. 사실, 이들은 시빌 저항 메커니즘이자 블록 작성자를 선택하는 방법입니다. 체인 선택(또는 포크 선택) 알고리즘은 여러 블록이 동일한 위치에 있을 때 한 블록을 선택하는 데 사용됩니다.
+
+시빌 저항성은 프로토콜이 시빌 공격에 얼마나 잘 대처하는지를 측정합니다. 탈중앙화된 블록체인의 핵심인 시빌 저항은 채굴자와 검증자가 자원 투입에 따라 공정하게 보상받도록 합니다. 작업 증명과 지분 증명은 사용자가 많은 에너지를 소비하거나 많은 담보를 걸도록 하여 시빌 공격을 방어합니다. 이러한 보호 장치는 시빌 공격에 대한 경제적 억제책입니다.
+
+체인 선택 규칙은 어떤 체인이 "올바른" 체인인지 결정하는 데 사용됩니다. 비트코인은 "가장 긴 체인" 규칙을 사용합니다. 즉, 가장 긴 블록체인이 나머지 노드가 유효하다고 인식하고 작업할 블록체인입니다. 작업증명 체인에서는 체인의 총 누적 작업증명 난이도로 가장 긴 체인이 결정됩니다. 이전에는 이더리움도 가장 긴 체인 규칙을 사용했으나, 현재 이더리움은 작업증명에서 지분증명으로 전환되어 '체인의 무게'를 측정하는 업데이트된 포크 선택 알고리즘을 채택했습니다. 이 무게는 검증자의 지분-이더리움 잔액에 의해 가중된 검증자 투표의 누적 합계입니다.
+
+이더리움은 [Casper FFG 지분 증명](https://arxiv.org/abs/1710.09437)과 [GHOST 포크 선택 규칙](https://arxiv.org/abs/2003.03052)을 결합한 [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/)라는 합의 메커니즘을 사용합니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [블록체인 합의 알고리즘이란?](https://academy.binance.com/en/articles/what-is-a-blockchain-consensus-algorithm)
+- [나카모토 합의란 무엇인가요? 완전 초보자 가이드](https://blockonomi.com/nakamoto-consensus/)
+- [Casper는 어떻게 작동하는가?](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d)
+- [작업 증명 블록체인의 보안 및 성능에 관하여](https://eprint.iacr.org/2016/555.pdf)
+- [비잔틴 장애](https://en.wikipedia.org/wiki/Byzantine_fault)
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [작업 증명](/developers/docs/consensus-mechanisms/pow/)
+- [채굴](/developers/docs/consensus-mechanisms/pow/mining/)
+- [지분 증명](/developers/docs/consensus-mechanisms/pos/)
+- [권위 증명](/developers/docs/consensus-mechanisms/poa/)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/poa/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/poa/index.md
new file mode 100644
index 00000000000..4410af084d2
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/poa/index.md
@@ -0,0 +1,80 @@
+---
+title: "권한 증명(Proof-of-authority, PoA)"
+description: "권위 증명 합의 프로토콜과 블록체인 생태계에서의 역할에 대한 설명입니다."
+lang: ko
+---
+
+권위 증명(PoA)은 [지분 증명](/developers/docs/consensus-mechanisms/pos/)을 수정한 버전으로, 평판 기반의 합의 알고리즘입니다. 주로 프라이빗 체인, 테스트넷 및 로컬 개발 네트워크에서 사용됩니다. PoA는 지분 증명(PoS)의 지분 기반 메커니즘 대신 승인된 서명자 집합을 신뢰하여 블록을 생성해야 하는 평판 기반 합의 알고리즘입니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [트랜잭션](/developers/docs/transactions/), [블록](/developers/docs/blocks/), [합의 메커니즘](/developers/docs/consensus-mechanisms/)에 대해 읽어보시는 것을 추천합니다.
+
+## 권위 증명(PoA)이란 무엇인가요? {#what-is-poa}
+
+권위 증명은 [지분 증명](/developers/docs/consensus-mechanisms/pos/)(PoS)의 수정된 버전으로, PoS의 지분 기반 메커니즘 대신 평판 기반의 합의 알고리즘을 사용합니다. 이 용어는 2017년 개빈 우드(Gavin Wood)가 처음 소개했으며, 이 합의 알고리즘은 작업 증명(PoW)처럼 고품질의 리소스를 필요로 하지 않고 블록체인을 저장하고 블록을 생성하는 노드의 작은 하위 집합을 통해 지분 증명(PoS)의 확장성 문제를 극복하므로 주로 프라이빗 체인, 테스트넷, 로컬 개발 네트워크에서 사용되어 왔습니다.
+
+권위 증명은 [제네시스 블록](/glossary/#genesis-block)에 설정된 승인된 서명자 집합을 신뢰해야 합니다. 대부분의 현재 구현에서 모든 승인된 서명자는 체인의 합의를 결정할 때 동등한 권한과 특권을 보유합니다. 평판 스테이킹의 기본 아이디어는 고객 신원 확인(KYC) 등을 통해 모든 승인된 검증자가 모든 사람에게 잘 알려져 있거나, 잘 알려진 조직이 유일한 검증자가 되는 것입니다. 이렇게 하면 검증자가 잘못된 행동을 할 경우 신원이 알려집니다.
+
+PoA에는 여러 구현이 있지만, 표준 이더리움 구현은 [EIP-225](https://eips.ethereum.org/EIPS/eip-225)를 구현하는 clique입니다. Clique는 개발자 친화적이고 구현하기 쉬운 표준이며, 모든 클라이언트 동기화 유형을 지원합니다. 다른 구현으로는 [IBFT 2.0](https://besu.hyperledger.org/private-networks/concepts/poa) 및 [Aura](https://openethereum.github.io/Chain-specification)가 있습니다.
+
+## 작동 방식 {#how-it-works}
+
+PoA에서는 승인된 서명자 집합이 새 블록을 생성하도록 선택됩니다. 서명자는 평판에 따라 선택되며, 새 블록을 생성할 수 있는 유일한 주체입니다. 서명자는 라운드 로빈 방식으로 선택되며, 각 서명자는 특정 시간 프레임 내에 블록을 생성할 수 있습니다. 블록 생성 시간은 고정되어 있으며, 서명자는 해당 시간 프레임 내에 블록을 생성해야 합니다.
+
+이 맥락에서 평판은 정량화된 것이 아니라 Microsoft나 Google과 같은 잘 알려진 기업의 평판을 의미합니다. 따라서 신뢰할 수 있는 서명자를 선택하는 방식은 알고리즘적인 것이 아니라, 예를 들어 Microsoft가 수백 또는 수천 개의 스타트업 간에 PoA 프라이빗 네트워크를 생성하고 유일하게 신뢰할 수 있는 서명자로서 역할을 수행하며 향후 Google과 같은 다른 잘 알려진 서명자를 추가할 가능성을 두는 것과 같이 신뢰라는 일반적인 인간의 행위입니다. 스타트업들은 의심의 여지 없이 Microsoft가 항상 정직하게 행동하고 네트워크를 사용할 것이라고 신뢰할 것입니다. 이는 많은 전력과 리소스를 소비하는 채굴자의 필요성과 함께, 서로 다른 목적으로 구축된 다양한 소규모/프라이빗 네트워크를 분산화되고 기능하도록 유지하기 위해 스테이킹할 필요를 해결합니다. VeChain과 같은 일부 프라이빗 네트워크는 PoA 표준을 그대로 사용하고, Binance와 같은 일부는 PoA와 지분 증명(PoS)의 맞춤형 수정 버전인 [PoSA](https://academy.binance.com/en/glossary/proof-of-staked-authority-posa)를 사용하여 이를 수정합니다.
+
+투표 과정은 서명자 자신에 의해 수행됩니다. 각 서명자는 새 블록을 생성할 때 자신의 블록에서 서명자의 추가 또는 제거에 투표합니다. 투표는 노드에 의해 집계되며, 투표가 특정 임계값 `SIGNER_LIMIT`에 도달하면 서명자가 추가되거나 제거됩니다.
+
+작은 포크가 발생하는 상황이 있을 수 있으며, 블록의 난이도는 블록이 순서대로 서명되었는지 또는 순서에 맞지 않게 서명되었는지에 따라 달라집니다. “순서대로” 서명된 블록은 난이도 2를 갖고, “순서에 맞지 않게” 서명된 블록은 난이도 1을 갖습니다. 작은 포크의 경우, 대부분의 서명자가 “순서대로” 블록을 봉인하는 체인이 가장 높은 난이도를 축적하여 승리하게 됩니다.
+
+## 공격 벡터 {#attack-vectors}
+
+### 악의적인 서명자 {#malicious-signers}
+
+악의적인 사용자가 서명자 목록에 추가되거나 서명 키/기기가 손상될 수 있습니다. 이러한 시나리오에서 프로토콜은 재구성과 스팸으로부터 자신을 방어할 수 있어야 합니다. 제안된 해결책은 N명의 승인된 서명자 목록이 주어졌을 때, 모든 서명자는 K 블록마다 1개의 블록만 발행할 수 있다는 것입니다. 이를 통해 피해를 제한하고 나머지 검증자가 악의적인 사용자를 투표로 퇴출시킬 수 있습니다.
+
+### 검열 {#censorship-attack}
+
+또 다른 흥미로운 공격 벡터는 서명자(또는 서명자 그룹)가 승인 목록에서 자신을 제거하는 데 투표하는 블록을 검열하려고 시도하는 경우입니다. 이 문제를 해결하기 위해 서명자의 허용된 발행 빈도는 N/2 중 1로 제한됩니다. 이를 통해 악의적인 서명자는 서명 계정의 최소 51%를 제어해야 하며, 이 시점에서 이들은 사실상 체인의 새로운 신뢰의 원천이 됩니다.
+
+### 스팸 {#spam-attack}
+
+또 다른 작은 공격 벡터는 악의적인 서명자가 발행하는 모든 블록 내에 새로운 투표 제안을 주입하는 것입니다. 노드는 실제 승인된 서명자 목록을 생성하기 위해 모든 투표를 집계해야 하므로 시간이 지남에 따라 모든 투표를 기록해야 합니다. 투표 창에 제한을 두지 않으면 이 목록은 느리지만 무한정으로 증가할 수 있습니다. 해결책은 W 블록의 _이동_ 창을 두어 그 이후의 투표는 오래된 것으로 간주하는 것입니다. _합리적인 창은 1\~2 에폭이 될 수 있습니다._
+
+### 동시 블록 {#concurrent-blocks}
+
+PoA 네트워크에서 N명의 승인된 서명자가 있을 때 각 서명자는 K 블록 중 1개의 블록을 발행할 수 있습니다. 이는 특정 시점에 N-K+1명의 검증자가 발행할 수 있음을 의미합니다. 이러한 검증자들이 블록 경쟁을 하는 것을 방지하기 위해 각 서명자는 새 블록을 릴리스하는 시간에 작은 무작위 "오프셋"을 추가해야 합니다. 이 프로세스는 작은 포크를 드물게 만들지만, 메인넷처럼 가끔 포크가 발생할 수 있습니다. 서명자가 권력을 남용하고 혼란을 야기하는 것이 발견되면 다른 서명자들이 투표를 통해 퇴출시킬 수 있습니다.
+
+예를 들어, 10명의 승인된 서명자가 있고 각 서명자가 20개의 블록 중 1개의 블록을 생성할 수 있다면, 특정 시점에 11명의 검증자가 블록을 생성할 수 있습니다. 그들이 블록 생성을 위해 경쟁하는 것을 방지하기 위해 각 서명자는 새 블록을 릴리스하는 시간에 작은 무작위 "오프셋"을 추가합니다. 이는 작은 포크의 발생을 줄이지만 이더리움 메인넷에서 볼 수 있듯이 가끔 포크가 발생할 수 있습니다. 서명자가 자신의 권한을 오용하고 혼란을 야기하면 네트워크에서 투표로 퇴출될 수 있습니다.
+
+## 장단점 {#pros-and-cons}
+
+| 장점 | 단점 |
+| ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 제한된 수의 블록 서명자를 기반으로 하므로 지분 증명(PoS) 및 작업 증명(PoW)과 같은 다른 인기 있는 메커니즘보다 확장성이 뛰어납니다. | PoA 네트워크는 일반적으로 상대적으로 적은 수의 검증 노드를 가집니다. 이로 인해 PoA 네트워크는 더 중앙화됩니다. |
+| PoA 블록체인은 운영 및 유지 비용이 매우 저렴합니다. | 블록체인은 확립된 평판을 가진 주체를 요구하기 때문에, 일반인이 승인된 서명자가 되는 것은 일반적으로 어렵습니다. |
+| 새 블록을 검증하는 데 제한된 수의 서명자만 필요하기 때문에 트랜잭션이 1초 이내로 매우 빠르게 확인될 수 있습니다. | 악의적인 서명자는 네트워크에서 재구성을 하거나, 이중 지불을 하거나, 트랜잭션을 검열할 수 있으며, 이러한 공격은 완화되었지만 여전히 가능합니다. |
+
+## 더 읽어보기 {#further-reading}
+
+- [EIP-225](https://eips.ethereum.org/EIPS/eip-225) _Clique 표준_
+- [권위 증명 연구](https://github.com/cryptoeconomics-study/website/blob/master/docs/sync/2.4-lecture.md) _Cryptoeconomics_
+- [권위 증명이란 무엇인가](https://forum.openzeppelin.com/t/proof-of-authority/3577) _OpenZeppelin_
+- [권위 증명 설명](https://academy.binance.com/en/articles/proof-of-authority-explained) _binance_
+- [블록체인의 PoA](https://medium.com/techskill-brew/proof-of-authority-or-poa-in-blockchain-part-11-blockchain-series-be15b3321cba)
+- [Clique 설명](https://medium.com/@Destiner/clique-cross-client-proof-of-authority-algorithm-for-ethereum-8b2a135201d)
+- [더 이상 사용되지 않는 PoA, Aura 사양](https://openethereum.github.io/Chain-specification)
+- [IBFT 2.0, 또 다른 PoA 구현](https://besu.hyperledger.org/private-networks/concepts/poa)
+
+### 시각 자료를 찾고 있나요? 시각적 학습자
+
+권위 증명에 대한 시각적 설명을 시청하세요:
+
+
+
+## 관련 주제 {#related-topics}
+
+- [작업 증명](/developers/docs/consensus-mechanisms/pow/)
+- [지분 증명](/developers/docs/consensus-mechanisms/pos/)
+
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
new file mode 100644
index 00000000000..498d7d35bbf
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md
@@ -0,0 +1,166 @@
+---
+title: "이더리움 지분 증명 공격과 방어"
+description: "지분 증명 이더리움에 대해 알려진 공격 벡터와 방어 방법에 대해 알아보세요."
+lang: ko
+---
+
+도둑과 사보타주들은 이더리움의 클라이언트 소프트웨어를 공격할 기회를 끊임없이 찾고 있습니다. 이 페이지에서는 이더리움의 합의 레이어에 대해 알려진 공격 벡터와 해당 공격을 방어하는 방법을 간략하게 설명합니다. 이 페이지의 정보는 [더 긴 버전](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)에서 발췌한 것입니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[지분 증명](/developers/docs/consensus-mechanisms/pos/)에 대한 몇 가지 기본 지식이 필요합니다. 또한 이더리움의 [인센티브 레이어](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)와 포크 선택 알고리즘인 [LMD-GHOST](/developers/docs/consensus-mechanisms/pos/gasper)에 대한 기본적 이해가 있으면 도움이 될 것입니다.
+
+## 공격자는 무엇을 원할까요? {#what-do-attackers-want}
+
+성공적인 공격자가 새로운 이더를 생성하거나 임의의 계정에서 이더를 빼낼 수 있다는 것은 일반적인 오해입니다. 네트워크의 모든 실행 클라이언트가 모든 트랜잭션을 실행하기 때문에 이 두 가지 모두 불가능합니다. 유효성의 기본 조건(예: 발신자의 개인 키로 트랜잭션이 서명되었는지, 발신자에게 충분한 잔액이 있는지 등)을 충족해야 하며, 그렇지 않으면 간단히 되돌려집니다. 공격자가 현실적으로 목표로 삼을 수 있는 결과에는 재구성(reorgs), 이중 최종 승인 또는 최종 승인 지연의 세 가지 종류가 있습니다.
+
+“재구성(reorg)”은 정규 체인에 일부 블록이 추가되거나 제거되면서 블록이 새로운 순서로 재조정되는 것입니다. 악의적인 재구성은 특정 블록이 포함되거나 제외되도록 보장하여 이중 지불 또는 선행 매매 및 후행 매매 트랜잭션(MEV)을 통한 가치 추출을 허용할 수 있습니다. 재구성은 특정 트랜잭션이 정규 체인에 포함되는 것을 막는 데 사용될 수도 있는데, 이는 일종의 검열입니다. 재구성의 가장 극단적인 형태는 이전에 최종 승인된 블록을 제거하거나 대체하는 "최종 승인 되돌리기(finality reversion)"입니다. 이는 공격자에 의해 전체 스테이킹된 이더의 ⅓ 이상이 파괴되어야만 가능하며, 이 보증은 "경제적 최종 승인(economic finality)"으로 알려져 있습니다. 이에 대해서는 나중에 자세히 설명하겠습니다.
+
+이중 최종 승인은 두 개의 포크가 동시에 최종 승인될 수 있는, 가능성은 낮지만 심각한 상태로, 체인에 영구적인 분열을 일으킵니다. 이것은 전체 스테이킹된 이더의 34%를 감수할 의향이 있는 공격자에게 이론적으로 가능합니다. 커뮤니티는 오프체인에서 협력하여 어떤 체인을 따를지에 대한 합의에 도달해야 하며, 이를 위해서는 소셜 레이어의 힘이 필요합니다.
+
+**최종 승인 지연** 공격은 네트워크가 체인의 섹션을 최종 승인하는 데 필요한 조건에 도달하는 것을 방해합니다. 최종 승인이 없으면 이더리움 위에 구축된 금융 애플리케이션을 신뢰하기 어렵습니다. 최종 승인 지연 공격의 목표는 공격자가 전략적 공매도 포지션을 가지고 있지 않는 한 직접적인 이익을 얻기보다는 단순히 이더리움을 방해하는 것일 가능성이 높습니다.
+
+소셜 레이어에 대한 공격은 이더리움에 대한 대중의 신뢰를 약화시키고, 이더의 가치를 떨어뜨리고, 채택을 줄이거나, 이더리움 커뮤니티를 약화시켜 대역 외(out-of-band) 조정을 더 어렵게 만드는 것을 목표로 할 수 있습니다.
+
+적대자가 이더리움을 공격할 수 있는 이유를 확인했으므로 다음 섹션에서는 그들이 _어떻게_ 공격할 수 있는지 살펴봅니다.
+
+## 공격 방법 {#methods-of-attack}
+
+### 레이어 0 공격 {#layer-0}
+
+우선, 이더리움에 적극적으로 참여하지 않는 개인(클라이언트 소프트웨어를 실행하여)은 소셜 레이어(레이어 0)를 표적으로 삼아 공격할 수 있습니다. 레이어 0은 이더리움이 구축된 기반이며, 따라서 스택의 나머지 부분에 파급 효과를 미치는 공격에 대한 잠재적인 공격 표면을 나타냅니다. 몇 가지 예는 다음과 같습니다.
+
+- 잘못된 정보 캠페인은 커뮤니티가 이더리움의 로드맵, 개발자 팀, 앱 등에 대해 가지고 있는 신뢰를 약화시킬 수 있습니다. 이는 네트워크 보안에 기꺼이 참여하려는 개인의 수를 감소시켜 탈중앙화와 암호 경제적 보안을 모두 저하시킬 수 있습니다.
+
+- 개발자 커뮤니티를 대상으로 한 표적 공격 및/또는 위협. 이는 개발자의 자발적인 이탈로 이어져 이더리움의 발전을 늦출 수 있습니다.
+
+- 지나치게 열성적인 규제 또한 레이어 0에 대한 공격으로 간주될 수 있는데, 이는 참여와 채택을 급격히 저해할 수 있기 때문입니다.
+
+- 자전거 보관소 논쟁(bike-shedding)으로 진행을 늦추고, 핵심 결정을 지연시키며, 스팸을 생성하는 등을 목표로 하는 지식이 있지만 악의적인 행위자가 개발자 커뮤니티에 침투하는 것.
+
+- 의사 결정에 영향을 미치기 위해 이더리움 생태계의 핵심 인물에게 제공되는 뇌물.
+
+이러한 공격이 특히 위험한 이유는 많은 경우에 자본이나 기술적 노하우가 거의 필요하지 않기 때문입니다. 레이어 0 공격은 암호 경제적 공격에 대한 승수(multiplier)가 될 수 있습니다. 예를 들어, 악의적인 대다수 지분 보유자에 의해 검열이나 최종 승인 되돌리기가 달성되면, 소셜 레이어를 약화시켜 커뮤니티가 대역 외로 대응을 조정하기가 더 어려워질 수 있습니다.
+
+레이어 0 공격에 대한 방어는 아마도 간단하지 않겠지만, 몇 가지 기본 원칙을 수립할 수 있습니다. 한 가지는 블로그, 디스코드 서버, 주석이 달린 사양, 책, 팟캐스트, 유튜브를 통해 커뮤니티의 정직한 구성원들이 생성하고 전파하는 이더리움에 대한 공개 정보에 대해 전반적으로 높은 신호 대 잡음비를 유지하는 것입니다. 저희 ethereum.org에서는 정확한 정보를 유지하고 가능한 한 많은 언어로 번역하기 위해 열심히 노력하고 있습니다. 공간을 고품질 정보와 밈(meme)으로 채우는 것은 잘못된 정보에 대한 효과적인 방어입니다.
+
+소셜 레이어 공격에 대한 또 다른 중요한 방어책은 명확한 사명 선언문과 거버넌스 프로토콜입니다. 이더리움은 스마트 계약 레이어 1 중에서 탈중앙화 및 보안의 챔피언으로 자리매김했으며 확장성과 지속 가능성도 매우 중요하게 생각합니다. 이더리움 커뮤니티에서 어떤 의견 차이가 발생하더라도 이러한 핵심 원칙은 최소한으로만 훼손됩니다. 이러한 핵심 원칙에 비추어 내러티브를 평가하고 EIP(이더리움 개선 제안) 프로세스에서 연속적인 검토 라운드를 통해 이를 검토하면 커뮤니티가 선한 행위자와 악의적인 행위자를 구별하고 악의적인 행위자가 이더리움의 미래 방향에 영향을 미칠 수 있는 범위를 제한하는 데 도움이 될 수 있습니다.
+
+마지막으로, 이더리움 커뮤니티가 모든 참여자에게 개방적이고 환영하는 자세를 유지하는 것이 중요합니다. 문지기(gatekeeper)와 배타성이 있는 커뮤니티는 "우리와 그들"이라는 내러티브를 구축하기 쉽기 때문에 사회적 공격에 특히 취약합니다. 부족주의와 유해한 극단주의는 커뮤니티에 해를 끼치고 레이어 0의 보안을 약화시킵니다. 네트워크 보안에 기득권을 가진 이더리안은 온라인과 현실 세계(meatspace)에서의 행동을 이더리움 레이어 0의 보안에 직접적인 기여자로 보아야 합니다.
+
+### 프로토콜 공격 {#attacking-the-protocol}
+
+누구나 이더리움의 클라이언트 소프트웨어를 실행할 수 있습니다. 클라이언트에 검증자를 추가하려면 사용자는 예치 계약에 32 이더를 스테이킹해야 합니다. 검증자를 통해 사용자는 새로운 블록을 제안하고 증명함으로써 이더리움의 네트워크 보안에 적극적으로 참여할 수 있습니다. 검증자는 이제 블록체인의 미래 내용에 영향을 미칠 수 있는 목소리를 갖게 됩니다. 그들은 정직하게 그렇게 하여 보상을 통해 이더 보유량을 늘리거나, 자신의 스테이킹을 위험에 빠뜨리면서 자신의 이익을 위해 프로세스를 조작하려고 시도할 수 있습니다. 공격을 감행하는 한 가지 방법은 총 스테이킹의 더 큰 비율을 축적한 다음 이를 사용하여 정직한 검증자를 투표로 이기는 것입니다. 공격자가 통제하는 스테이킹의 비율이 클수록 투표권이 커지며, 특히 나중에 살펴볼 특정 경제적 이정표에서 더욱 그렇습니다. 그러나 대부분의 공격자는 이런 방식으로 공격할 만큼 충분한 이더를 축적할 수 없으므로, 대신 정직한 다수가 특정 방식으로 행동하도록 조종하기 위해 미묘한 기술을 사용해야 합니다.
+
+기본적으로 모든 소규모 스테이킹 공격은 두 가지 유형의 검증자 부정 행위에 대한 미묘한 변형입니다. 즉, 활동 부족(증명/제안 실패 또는 늦게 수행) 또는 과잉 활동(슬롯에서 너무 여러 번 제안/증명)입니다. 가장 기본적인 형태에서 이러한 행동은 포크 선택 알고리즘과 인센티브 레이어에서 쉽게 처리되지만, 공격자의 이익을 위해 시스템을 이용하는 영리한 방법이 있습니다.
+
+### 소량의 ETH를 사용한 공격 {#attacks-by-small-stakeholders}
+
+#### 재구성(reorgs) {#reorgs}
+
+몇몇 논문에서는 총 스테이킹된 이더의 일부만으로 재구성 또는 최종 승인 지연을 달성하는 이더리움에 대한 공격을 설명했습니다. 이러한 공격은 일반적으로 공격자가 다른 검증자로부터 일부 정보를 보류한 다음 미묘한 방식으로 및/또는 적절한 순간에 공개하는 것에 의존합니다. 일반적으로 정규 체인에서 일부 정직한 블록을 대체하는 것을 목표로 합니다. [Neuder 외 2020](https://arxiv.org/pdf/2102.02247.pdf)은 공격하는 검증자가 특정 슬롯 `n+1`에 대한 블록(`B`)을 생성하고 증명할 수 있지만 네트워크의 다른 노드에 전파하는 것을 자제하는 방법을 보여주었습니다. 대신, 다음 슬롯 `n+2`까지 증명된 블록을 보유합니다. 정직한 검증자는 슬롯 `n+2`에 대한 블록(`C`)을 제안합니다. 거의 동시에 공격자는 보류된 블록(`B`)과 그에 대한 보류된 인증을 공개하고, 슬롯 `n+2`에 대한 투표로 `B`가 체인의 헤드임을 증명하여 정직한 블록 `C`의 존재를 효과적으로 부정할 수 있습니다. 정직한 블록 `D`가 공개되면 포크 선택 알고리즘은 `B` 위에 구축된 `D`가 `C` 위에 구축된 `D`보다 더 무겁다고 봅니다. 따라서 공격자는 1블록 사전 재구성(ex ante reorg)을 사용하여 슬롯 `n+2`의 정직한 블록 `C`를 정규 체인에서 제거하는 데 성공했습니다. [이 노트](https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair)에 설명된 바와 같이, [34%의 스테이킹을 가진 공격자](https://www.youtube.com/watch?v=6vzXwwk12ZE)는 이 공격에 성공할 가능성이 매우 높습니다. 하지만 이론적으로는 더 작은 스테이킹으로도 이 공격을 시도할 수 있습니다. [Neuder 외 2020](https://arxiv.org/pdf/2102.02247.pdf)은 30%의 스테이킹으로 이 공격이 작동한다고 설명했지만, 나중에 [총 스테이킹의 2%](https://arxiv.org/pdf/2009.04987.pdf)로도 가능하며, 다음 섹션에서 살펴볼 균형 조정 기술을 사용하여 [단일 검증자](https://arxiv.org/abs/2110.10086#)에 대해서도 가능하다는 것이 밝혀졌습니다.
+
+
+
+위에 설명된 1블록 재구성 공격의 개념도(https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair에서 발췌)
+
+더 정교한 공격은 정직한 검증자 집합을 체인의 헤드에 대해 서로 다른 견해를 가진 개별 그룹으로 분할할 수 있습니다. 이를 균형 공격(balancing attack)이라고 합니다. 공격자는 블록을 제안할 기회를 기다리다가 기회가 오면 이중 제안을 합니다. 그들은 한 블록을 정직한 검증자 집합의 절반에 보내고 다른 블록을 나머지 절반에 보냅니다. 이중 제안은 포크 선택 알고리즘에 의해 감지되고 블록 제안자는 슬래싱되어 네트워크에서 퇴출되지만, 두 블록은 여전히 존재하며 각 포크에 대해 약 절반의 검증자 집합이 증명하게 됩니다. 한편, 나머지 악의적인 검증자들은 자신의 인증을 보류합니다. 그런 다음 포크 선택 알고리즘이 실행될 때 한쪽 또는 다른 쪽 포크를 선호하는 인증을 필요한 만큼의 검증자에게만 선택적으로 공개함으로써 누적된 인증 가중치를 한쪽 또는 다른 쪽 포크에 유리하도록 기울입니다. 이는 공격하는 검증자들이 두 포크에 걸쳐 검증자들을 균등하게 분할하여 무기한 계속될 수 있습니다. 어느 포크도 2/3의 절대다수를 확보할 수 없으므로 네트워크는 최종 승인되지 않습니다.
+
+바운싱 공격(Bouncing attack)도 비슷합니다. 공격하는 검증자들은 다시 투표를 보류합니다. 두 포크 간에 균등한 분할을 유지하기 위해 투표를 공개하는 대신, 그들은 적절한 순간에 투표를 사용하여 포크 A와 포크 B 사이를 번갈아 가며 체크포인트를 정당화합니다. 두 포크 간에 이러한 정당화의 번복은 어느 체인에서도 최종 승인될 수 있는 정당화된 소스 및 타겟 체크포인트 쌍이 존재하는 것을 막아 최종 승인을 중단시킵니다.
+
+
+
+바운싱 및 균형 공격 모두 공격자가 네트워크 전체의 메시지 타이밍을 매우 정밀하게 제어하는 데 의존하며, 이는 가능성이 낮습니다. 그럼에도 불구하고, 느린 메시지에 비해 신속한 메시지에 추가 가중치를 부여하는 형태로 프로토콜에 방어 기능이 내장되어 있습니다. 이는 [제안자 가중치 부스팅](https://github.com/ethereum/consensus-specs/pull/2730)으로 알려져 있습니다. 바운싱 공격을 방어하기 위해 포크 선택 알고리즘이 업데이트되어, 최신 정당화된 체크포인트는 [각 에포크의 슬롯 중 처음 1/3 동안](https://ethresear.ch/t/prevention-of-bouncing-attack-on-ffg/6114)에만 대체 체인의 체크포인트로 전환될 수 있습니다. 이 조건은 공격자가 나중에 배포하기 위해 투표를 저장하는 것을 방지합니다. 포크 선택 알고리즘은 대부분의 정직한 검증자가 투표했을 에포크의 처음 1/3 동안 선택한 체크포인트에 충실하게 유지됩니다.
+
+종합적으로, 이러한 조치들은 정직한 블록 제안자가 슬롯 시작 직후 매우 빠르게 블록을 내보내고, 그 다음 약 1/3 슬롯(4초) 동안 해당 새 블록이 포크 선택 알고리즘을 다른 체인으로 전환하게 할 수 있는 시나리오를 만듭니다. 해당 마감 시간 이후에 느린 검증자로부터 도착하는 인증은 더 일찍 도착한 인증에 비해 가중치가 낮아집니다. 이는 체인의 헤드를 결정하는 데 있어 신속한 제안자와 검증자에게 강력하게 유리하며, 성공적인 균형 또는 바운싱 공격의 가능성을 크게 줄입니다.
+
+제안자 부스팅만으로는 "저렴한 재구성(cheap reorgs)", 즉 소규모 스테이킹을 가진 공격자가 시도하는 재구성에만 방어한다는 점에 유의할 가치가 있습니다. 사실, 제안자 부스팅 자체는 더 큰 지분 보유자에 의해 이용될 수 있습니다. [이 게시물](https://ethresear.ch/t/change-fork-choice-rule-to-mitigate-balancing-and-reorging-attacks/11127)의 저자들은 7%의 스테이킹을 가진 공격자가 정직한 블록을 재구성하여 정직한 검증자를 속여 자신의 포크 위에 구축하도록 전략적으로 투표를 배포하는 방법을 설명합니다. 이 공격은 매우 가능성이 낮은 이상적인 지연 시간 조건을 가정하여 고안되었습니다. 공격자의 성공 확률은 여전히 매우 낮으며, 더 큰 스테이킹은 더 많은 자본이 위험에 처해 있고 더 강력한 경제적 저해 요인이 있음을 의미합니다.
+
+제안자 부스팅에도 불구하고 실행 가능하다고 제안된 [LMD 규칙을 구체적으로 겨냥한 균형 공격](https://ethresear.ch/t/balancing-attack-lmd-edition/11853)도 제안되었습니다. 공격자는 블록 제안을 이중으로 하고 각 블록을 네트워크의 약 절반에 전파하여 두 개의 경쟁 체인을 설정하고 포크 간에 대략적인 균형을 맞춥니다. 그런 다음, 공모하는 검증자들은 투표를 이중으로 하여 네트워크의 절반이 포크 `A`에 대한 투표를 먼저 받고 나머지 절반이 포크 `B`에 대한 투표를 먼저 받도록 시간을 맞춥니다. LMD 규칙은 두 번째 인증을 버리고 각 검증자에 대해 첫 번째 인증만 유지하므로, 네트워크의 절반은 `A`에 대한 투표를 보고 `B`에 대한 투표는 보지 못하며, 나머지 절반은 `B`에 대한 투표를 보고 `A`에 대한 투표는 보지 못합니다. 저자들은 LMD 규칙이 적에게 균형 공격을 감행할 "놀라운 힘"을 준다고 설명합니다.
+
+이 LMD 공격 벡터는 [포크 선택 알고리즘을 업데이트](https://github.com/ethereum/consensus-specs/pull/2845)하여 이중 투표하는 검증자를 포크 선택 고려에서 완전히 제외함으로써 해결되었습니다. 이중 투표하는 검증자는 또한 포크 선택 알고리즘에 의해 미래의 영향력이 할인됩니다. 이는 위에서 설명한 균형 공격을 방지하는 동시에 애벌랜치 공격에 대한 복원력을 유지합니다.
+
+[**애벌랜치 공격**](https://ethresear.ch/t/avalanche-attack-on-proof-of-stake-ghost/11854/3)이라는 또 다른 종류의 공격은 [2022년 3월 논문](https://arxiv.org/pdf/2203.01315.pdf)에서 설명되었습니다. 애벌랜치 공격을 감행하려면 공격자는 여러 연속적인 블록 제안자를 제어해야 합니다. 각 블록 제안 슬롯에서 공격자는 자신의 블록을 보류하고 정직한 체인이 보류된 블록과 동일한 하위 트리 가중치에 도달할 때까지 수집합니다. 그런 다음, 보류된 블록은 최대한 이중 제안되도록 공개됩니다. 저자들은 균형 및 바운싱 공격에 대한 주요 방어책인 제안자 부스팅이 일부 애벌랜치 공격 변종에 대해서는 보호하지 못한다고 제안합니다. 그러나 저자들은 또한 이더리움의 포크 선택 알고리즘의 매우 이상화된 버전(LMD 없이 GHOST를 사용)에서만 공격을 시연했습니다.
+
+애벌랜치 공격은 LMD-GHOST 포크 선택 알고리즘의 LMD 부분에 의해 완화됩니다. LMD는 “최신 메시지 기반(latest-message-driven)”을 의미하며, 각 검증자가 다른 검증자로부터 받은 최신 메시지를 포함하는 테이블을 참조합니다. 해당 필드는 새 메시지가 특정 검증자에 대해 테이블에 이미 있는 슬롯보다 더 늦은 슬롯에서 온 경우에만 업데이트됩니다. 실제로 이는 각 슬롯에서 수신된 첫 번째 메시지가 수락된 메시지이며 추가 메시지는 무시해야 할 이중 제안임을 의미합니다. 다시 말해, 합의 클라이언트는 이중 제안을 계산하지 않습니다. 각 검증자로부터 처음 도착한 메시지를 사용하고 이중 제안은 단순히 폐기되어 애벌랜치 공격을 방지합니다.
+
+제안자 부스트가 제공하는 보안에 추가될 수 있는 포크 선택 규칙에 대한 몇 가지 다른 잠재적인 미래 업그레이드가 있습니다. 하나는 [뷰 병합](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739)으로, 증명자는 슬롯 시작 `n`초 전에 포크 선택에 대한 뷰를 동결하고 제안자는 네트워크 전체에서 체인 뷰를 동기화하는 데 도움을 줍니다. 또 다른 잠재적인 업그레이드는 [단일 슬롯 최종 승인](https://notes.ethereum.org/@vbuterin/single_slot_finality)으로, 단 하나의 슬롯 후에 체인을 최종 승인함으로써 메시지 타이밍에 기반한 공격으로부터 보호합니다.
+
+#### 최종 승인 지연 {#finality-delay}
+
+저비용 단일 블록 재구성 공격을 처음 설명한 [같은 논문](https://econcs.pku.edu.cn/wine2020/wine2020/Workshop/GTiB20_paper_8.pdf)은 또한 공격자가 에포크 경계 블록의 블록 제안자가 되는 것에 의존하는 최종 승인 지연(일명 “활성 실패(liveness failure)”) 공격을 설명했습니다. 이러한 에포크 경계 블록은 Casper FFG가 체인의 일부를 최종 승인하는 데 사용하는 체크포인트가 되기 때문에 중요합니다. 공격자는 충분한 수의 정직한 검증자가 현재 최종 승인 대상으로 이전 에포크 경계 블록을 선호하는 FFG 투표를 사용할 때까지 단순히 블록을 보류합니다. 그런 다음 보류된 블록을 공개합니다. 그들은 자신의 블록을 증명하고 나머지 정직한 검증자들도 그렇게 하여 다른 타겟 체크포인트를 가진 포크를 생성합니다. 타이밍을 제대로 맞추면 어느 포크에도 2/3의 절대다수가 증명하지 않기 때문에 최종 승인을 막을 수 있습니다. 스테이킹이 작을수록 공격자가 직접 제어하는 인증 수가 적고, 주어진 에포크 경계 블록을 제안하는 검증자를 공격자가 제어할 확률이 낮기 때문에 타이밍이 더 정확해야 합니다.
+
+#### 장기 공격 {#long-range-attacks}
+
+또한 제네시스 블록에 참여한 검증자가 정직한 블록체인과 함께 별도의 블록체인 포크를 유지하다가 훨씬 나중에 적절한 시기에 정직한 검증자 집합을 해당 포크로 전환하도록 설득하는 것과 관련된 지분 증명 블록체인에 특정한 공격 유형이 있습니다. 이러한 유형의 공격은 모든 검증자가 정기적인 간격("체크포인트")으로 정직한 체인의 상태에 동의하도록 보장하는 최종 승인 장치 때문에 이더리움에서는 불가능합니다. 이 간단한 메커니즘은 이더리움 클라이언트가 최종 승인된 블록을 재구성하지 않기 때문에 장거리 공격자를 무력화합니다. 네트워크에 참여하는 새로운 노드는 신뢰할 수 있는 최근 상태 해시("[약한 주관성](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) 체크포인트")를 찾아 이를 의사 제네시스 블록으로 사용하여 그 위에 구축함으로써 그렇게 합니다. 이는 네트워크에 진입하는 새로운 노드가 스스로 정보를 확인하기 전에 '신뢰 게이트웨이'를 생성합니다.
+
+#### 서비스 거부 {#denial-of-service}
+
+이더리움의 지분 증명 메커니즘은 각 슬롯에서 전체 검증자 집합에서 단일 검증자를 블록 제안자로 선택합니다. 이는 공개적으로 알려진 함수를 사용하여 계산할 수 있으며, 적이 블록 제안 약간 전에 다음 블록 제안자를 식별하는 것이 가능합니다. 그런 다음 공격자는 블록 제안자에게 스팸을 보내 동료와 정보를 교환하는 것을 방지할 수 있습니다. 네트워크의 나머지 부분에는 블록 제안자가 오프라인인 것처럼 보이고 슬롯은 단순히 비어 있게 됩니다. 이는 특정 검증자에 대한 검열의 한 형태로, 그들이 블록체인에 정보를 추가하는 것을 막을 수 있습니다. 단일 비밀 리더 선출(SSLE) 또는 비단일 비밀 리더 선출을 구현하면 블록 제안자만이 자신이 선택되었음을 알고 선택이 사전에 알려지지 않기 때문에 서비스 거부(DoS) 위험을 완화할 수 있습니다. 이는 아직 구현되지 않았지만 활발한 [연구 개발](https://ethresear.ch/t/secret-non-single-leader-election/11789) 분야입니다.
+
+이 모든 것은 적은 스테이킹으로 이더리움을 성공적으로 공격하기가 매우 어렵다는 사실을 가리킵니다. 여기에 설명된 실행 가능한 공격은 이상적인 포크 선택 알고리즘, 비현실적인 네트워크 조건을 요구하거나, 클라이언트 소프트웨어에 대한 비교적 사소한 패치로 이미 공격 벡터가 닫혔습니다. 물론 이것이 제로데이 공격이 실제로 존재할 가능성을 배제하는 것은 아니지만, 소수 지분 공격자가 효과적이 되기 위해 요구되는 기술적 적성, 합의 레이어 지식 및 운의 매우 높은 기준을 보여줍니다. 공격자의 관점에서 최선의 방법은 가능한 한 많은 이더를 축적하고 총 스테이킹의 더 큰 비율로 무장하여 돌아오는 것일 수 있습니다.
+
+### 총 스테이킹의 >= 33%를 사용하는 공격자 {#attackers-with-33-stake}
+
+이 글에서 앞서 언급한 모든 공격은 공격자가 투표할 스테이킹된 이더가 더 많고 각 슬롯에서 블록을 제안하도록 선택될 수 있는 검증자가 더 많을 때 성공할 가능성이 더 높아집니다. 따라서 악의적인 검증자는 가능한 한 많은 스테이킹된 이더를 제어하는 것을 목표로 할 수 있습니다.
+
+스테이킹된 이더의 33%는 공격자의 벤치마크입니다. 왜냐하면 이 양보다 많으면 다른 검증자의 행동을 미세하게 제어할 필요 없이 체인이 최종 승인되는 것을 막을 수 있기 때문입니다. 그들은 단순히 함께 사라질 수 있습니다. 스테이킹된 이더의 1/3 이상이 악의적으로 증명하거나 증명에 실패하면 2/3의 절대다수가 존재할 수 없으며 체인은 최종 승인될 수 없습니다. 이에 대한 방어는 비활동 유출입니다. 비활동 유출은 증명에 실패하거나 다수와 반대로 증명하는 검증자를 식별합니다. 이러한 비증명 검증자가 소유한 스테이킹된 이더는 점차적으로 소멸되어 결국 전체의 1/3 미만을 차지하게 되어 체인이 다시 최종 승인될 수 있도록 합니다.
+
+비활동 유출의 목적은 체인이 다시 최종 승인되도록 하는 것입니다. 그러나 공격자도 스테이킹된 이더의 일부를 잃게 됩니다. 검증자가 슬래싱되지 않더라도 총 스테이킹된 이더의 33%를 차지하는 검증자들의 지속적인 비활동은 매우 비용이 많이 듭니다.
+
+이더리움 네트워크가 비동기적(즉, 메시지가 전송되고 수신되는 사이에 지연이 있음)이라고 가정하면, 총 스테이킹의 34%를 제어하는 공격자는 이중 최종 승인을 유발할 수 있습니다. 이는 공격자가 블록 생산자로 선택되었을 때 이중 제안을 한 다음 모든 검증자로 이중 투표를 할 수 있기 때문입니다. 이는 블록체인의 포크가 존재하는 상황을 만들며, 각 포크는 스테이킹된 이더의 34%가 투표합니다. 각 포크는 나머지 검증자의 50%만 찬성 투표하면 두 포크 모두 절대다수의 지지를 받게 되며, 이 경우 두 체인 모두 최종 승인될 수 있습니다(공격자 검증자의 34% + 나머지 66%의 절반 = 각 포크당 67%). 경쟁하는 블록은 각각 정직한 검증자의 약 50%에 의해 수신되어야 하므로 이 공격은 공격자가 네트워크를 통해 전파되는 메시지의 타이밍을 어느 정도 제어하여 정직한 검증자의 절반을 각 체인으로 유도할 수 있을 때만 실행 가능합니다. 공격자는 이 이중 최종 승인을 달성하기 위해 전체 스테이킹(오늘날의 검증자 집합으로 약 천만 이더의 34%)을 필연적으로 파괴할 것입니다. 왜냐하면 검증자의 34%가 동시에 이중 투표를 하기 때문이며, 이는 최대 상관 관계 페널티가 부과되는 슬래싱 가능한 위반입니다. 이 공격에 대한 방어는 총 스테이킹된 이더의 34%를 파괴하는 데 드는 막대한 비용입니다. 이 공격에서 복구하려면 이더리움 커뮤니티가 "대역 외"로 조정하여 한 포크 또는 다른 포크를 따르고 다른 포크를 무시하는 데 동의해야 합니다.
+
+### 총 스테이킹의 ~50%를 사용하는 공격자 {#attackers-with-50-stake}
+
+스테이킹된 이더의 50%에서 악의적인 검증자 그룹은 이론적으로 체인을 두 개의 동일한 크기의 포크로 분할한 다음 전체 50% 스테이킹을 사용하여 정직한 검증자 집합과 반대로 투표하여 두 포크를 유지하고 최종 승인을 막을 수 있습니다. 두 포크의 비활동 유출은 결국 두 체인 모두 최종 승인으로 이어질 것입니다. 이 시점에서 유일한 선택은 사회적 복구에 의존하는 것입니다.
+
+정직한 검증자 수, 네트워크 지연 시간 등의 변동을 고려할 때 적대적인 검증자 그룹이 총 스테이킹의 정확히 50%를 지속적으로 제어할 가능성은 매우 낮습니다. 이러한 공격을 감행하는 데 드는 막대한 비용과 성공 가능성이 낮은 점은 이성적인 공격자에게 강력한 저해 요인으로 보이며, 특히 50%를 초과하여 얻는 데 약간의 추가 투자를 하면 훨씬 더 많은 힘을 얻을 수 있습니다.
+
+총 스테이킹의 50% 이상에서 공격자는 포크 선택 알고리즘을 지배할 수 있습니다. 이 경우 공격자는 다수 투표로 증명할 수 있으므로 정직한 클라이언트를 속일 필요 없이 짧은 재구성을 할 수 있는 충분한 제어권을 갖게 됩니다. 정직한 검증자들의 포크 선택 알고리즘도 공격자가 선호하는 체인을 가장 무겁게 볼 것이므로 체인은 최종 승인될 수 있습니다. 이를 통해 공격자는 특정 트랜잭션을 검열하고, 단거리 재구성을 수행하며, 자신에게 유리하도록 블록을 재정렬하여 최대 MEV를 추출할 수 있습니다. 이에 대한 방어는 다수 스테이킹의 막대한 비용(현재 약 190억 달러)이며, 소셜 레이어가 개입하여 정직한 소수 포크를 채택하고 공격자의 스테이킹 가치를 극적으로 떨어뜨릴 가능성이 있기 때문에 공격자에 의해 위험에 처하게 됩니다.
+
+### 총 스테이킹의 >=66%를 사용하는 공격자 {#attackers-with-66-stake}
+
+총 스테이킹된 이더의 66% 이상을 가진 공격자는 정직한 검증자를 강요할 필요 없이 선호하는 체인을 최종 승인할 수 있습니다. 공격자는 단순히 선호하는 포크에 투표한 다음 최종 승인할 수 있습니다. 이는 그들이 부정직한 절대다수로 투표할 수 있기 때문입니다. 절대다수 지분 보유자로서 공격자는 항상 최종 승인된 블록의 내용을 제어하며, 지출, 되감기, 재지출, 특정 트랜잭션 검열, 의지에 따라 체인 재구성 등의 권한을 갖게 됩니다. 51% 대신 66%를 제어하기 위해 추가 이더를 구매함으로써 공격자는 사실상 사후 재구성 및 최종 승인 되돌리기(즉, 미래를 제어할 뿐만 아니라 과거를 변경하는 능력)를 구매하는 것입니다. 여기서 유일한 실제 방어책은 총 스테이킹된 이더의 66%에 달하는 막대한 비용과 대체 포크의 채택을 조정하기 위해 소셜 레이어로 돌아가는 옵션입니다. 다음 섹션에서 이에 대해 더 자세히 살펴볼 수 있습니다.
+
+## 사람: 최후의 방어선 {#people-the-last-line-of-defense}
+
+부정직한 검증자들이 선호하는 버전의 체인을 최종 승인하는 데 성공하면 이더리움 커뮤니티는 어려운 상황에 처하게 됩니다. 정규 체인에는 역사에 부정직한 부분이 포함되어 있는 반면, 정직한 검증자들은 대체(정직한) 체인에 증명한 것에 대해 처벌을 받을 수 있습니다. 최종 승인되었지만 잘못된 체인은 다수 클라이언트의 버그로 인해 발생할 수도 있습니다. 결국 궁극적인 대안은 소셜 레이어, 즉 레이어 0에 의존하여 상황을 해결하는 것입니다.
+
+이더리움의 지분 증명 합의의 강점 중 하나는 공격에 직면했을 때 커뮤니티가 사용할 수 있는 [다양한 방어 전략](https://youtu.be/1m12zgJ42dI?t=1712)이 있다는 것입니다. 최소한의 대응은 추가적인 페널티 없이 공격자의 검증자를 네트워크에서 강제로 퇴출시키는 것일 수 있습니다. 네트워크에 다시 참여하려면 공격자는 검증자 집합이 점진적으로 증가하도록 보장하는 활성화 대기열에 참여해야 합니다. 예를 들어, 스테이킹된 이더의 양을 두 배로 늘리기에 충분한 검증자를 추가하는 데는 약 200일이 걸리며, 이는 공격자가 또 다른 51% 공격을 시도하기 전에 정직한 검증자에게 200일을 벌어줍니다. 그러나 커뮤니티는 과거 보상을 취소하거나 스테이킹된 자본의 일부(최대 100%)를 소각하는 등 공격자를 더 가혹하게 처벌하기로 결정할 수도 있습니다.
+
+공격자에게 부과되는 페널티가 무엇이든, 커뮤니티는 또한 이더리움 클라이언트에 코딩된 포크 선택 알고리즘이 선호하는 체인임에도 불구하고 부정직한 체인이 사실상 유효하지 않으며 커뮤니티가 대신 정직한 체인 위에 구축해야 하는지 여부를 함께 결정해야 합니다. 정직한 검증자들은 예를 들어 공격이 시작되기 전에 정규 체인에서 포크되었거나 공격자의 검증자가 강제로 제거된, 커뮤니티가 수용한 이더리움 블록체인의 포크 위에 집합적으로 구축하기로 동의할 수 있습니다. 정직한 검증자들은 공격자의 체인에 (당연히) 증명하지 못한 것에 대해 적용되는 페널티를 피할 수 있기 때문에 이 체인 위에 구축하도록 인센티브를 받을 것입니다. 이더리움 위에 구축된 거래소, 온램프 및 애플리케이션은 아마도 정직한 체인에 있기를 선호할 것이며 정직한 검증자를 따라 정직한 블록체인으로 이동할 것입니다.
+
+그러나 이것은 상당한 거버넌스 과제가 될 것입니다. 일부 사용자와 검증자는 의심할 여지 없이 정직한 체인으로 다시 전환한 결과 손실을 입을 것이며, 공격 후 검증된 블록의 트랜잭션은 잠재적으로 롤백되어 애플리케이션 레이어를 방해할 수 있으며, 이는 단순히 "코드가 법이다"라고 믿는 경향이 있는 일부 사용자의 윤리를 훼손합니다. 거래소와 애플리케이션은 이제 롤백될 수 있는 온체인 트랜잭션에 오프체인 작업을 연결했을 가능성이 높으며, 이는 특히 부당 이득이 혼합되거나 DeFi 또는 다른 파생 상품에 예치되어 정직한 사용자에게 부차적인 영향을 미치는 경우 공정하게 풀기 어려운 취소 및 수정의 연쇄 반응을 시작할 것입니다. 의심할 여지 없이 일부 사용자, 아마도 기관 사용자조차도 약삭빠르거나 우연에 의해 부정직한 체인으로부터 이미 이익을 얻었을 것이며, 자신의 이익을 보호하기 위해 포크에 반대할 수 있습니다. 합리적이고 조정된 완화 조치가 신속하게 실행될 수 있도록 51% 초과 공격에 대한 커뮤니티 대응을 연습하라는 요구가 있었습니다. Vitalik이 ethresear.ch에서 [여기](https://ethresear.ch/t/timeliness-detectors-and-51-attack-recovery-in-blockchains/6925)와 [여기](https://ethresear.ch/t/responding-to-51-attacks-in-casper-ffg/6363), 그리고 트위터에서 [여기](https://twitter.com/skylar_eth/status/1551798684727508992?s=20&t=oHZ1xv8QZdOgAXhxZKtHEw)에 유용한 논의가 있습니다. 조정된 사회적 대응의 목표는 공격자를 처벌하고 다른 사용자에 대한 영향을 최소화하는 데 매우 표적화되고 구체적이어야 합니다.
+
+거버넌스는 이미 복잡한 주제입니다. 부정직한 최종 승인 체인에 대한 레이어-0 비상 대응을 관리하는 것은 의심할 여지 없이 이더리움 커뮤니티에 어려운 일이겠지만, 이더리움 역사상 [두 번](/ethereum-forks/#tangerine-whistle)이나 [일어난 일](/ethereum-forks/#dao-fork-summary)입니다.
+
+그럼에도 불구하고, 최종적인 대안이 현실 세계에 있다는 것은 상당히 만족스러운 일입니다. 궁극적으로, 우리 위에 이 경이로운 기술 스택이 있더라도, 최악의 상황이 발생하면 실제 사람들이 협력하여 해결해야 할 것입니다.
+
+## 요약 {#summary}
+
+이 페이지에서는 공격자가 이더리움의 지분 증명 합의 프로토콜을 악용하려는 몇 가지 방법을 탐구했습니다. 총 스테이킹된 이더의 비율이 증가하는 공격자에 대한 재구성 및 최종 승인 지연이 탐구되었습니다. 전반적으로, 더 부유한 공격자는 자신의 스테이킹이 미래 블록의 내용에 영향을 미치는 데 사용할 수 있는 투표권으로 변환되기 때문에 성공할 가능성이 더 높습니다. 특정 임계값의 스테이킹된 이더에서 공격자의 힘은 다음과 같이 레벨업됩니다.
+
+33%: 최종 승인 지연
+
+34%: 최종 승인 지연, 이중 최종 승인
+
+51%: 최종 승인 지연, 이중 최종 승인, 검열, 블록체인 미래에 대한 통제권
+
+66%: 최종 승인 지연, 이중 최종 승인, 검열, 블록체인 미래와 과거에 대한 통제권
+
+또한 적은 양의 스테이킹된 이더를 필요로 하지만 매우 정교한 공격자가 메시지 타이밍을 정밀하게 제어하여 정직한 검증자 집합을 자신에게 유리하게 흔드는 데 의존하는 더 정교한 공격도 있습니다.
+
+전반적으로, 이러한 잠재적인 공격 벡터에도 불구하고 성공적인 공격의 위험은 낮으며, 확실히 작업 증명에 상응하는 것보다 낮습니다. 이는 투표력으로 정직한 검증자를 압도하려는 공격자가 위험에 빠뜨리는 스테이킹된 이더의 막대한 비용 때문입니다. 내장된 “당근과 채찍” 인센티브 레이어는 특히 낮은 스테이킹 공격자에 대해 대부분의 부정 행위로부터 보호합니다. 실제 네트워크 조건에서는 특정 검증자 하위 집합에 대한 메시지 전달의 정밀한 제어를 달성하기가 매우 어렵고, 클라이언트 팀이 알려진 바운싱, 균형 및 애벌랜치 공격 벡터를 간단한 패치로 신속하게 닫았기 때문에 더 미묘한 바운싱 및 균형 공격도 성공할 가능성이 낮습니다.
+
+34%, 51% 또는 66% 공격은 해결하기 위해 대역 외 사회적 조정이 필요할 가능성이 높습니다. 이것이 커뮤니티에 고통스러울 수 있지만, 커뮤니티가 대역 외로 대응할 수 있는 능력은 공격자에게 강력한 저해 요인입니다. 이더리움 소셜 레이어는 궁극적인 방어책입니다. 기술적으로 성공한 공격이라도 커뮤니티가 정직한 포크를 채택하기로 동의하면 무력화될 수 있습니다. 공격자와 이더리움 커뮤니티 사이에는 경쟁이 있을 것입니다. 66% 공격에 지출된 수십억 달러는 충분히 신속하게 전달된다면 성공적인 사회적 조정 공격에 의해 아마도 소멸될 것이며, 공격자는 이더리움 커뮤니티가 무시하는 알려진 부정직한 체인에 비유동적인 스테이킹된 이더의 무거운 가방을 남기게 될 것입니다. 이것이 공격자에게 수익성이 있을 가능성은 효과적인 억제책이 될 만큼 충분히 낮습니다. 이것이 바로 긴밀하게 정렬된 가치를 가진 응집력 있는 소셜 레이어를 유지하는 데 투자하는 것이 중요한 이유입니다.
+
+## 추가 정보 {#further-reading}
+
+- [이 페이지의 더 자세한 버전](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
+- [Vitalik의 결제 최종 승인에 대하여](https://blog.ethereum.org/2016/05/09/on-settlement-finality/)
+- [LMD GHOST 논문](https://arxiv.org/abs/2003.03052)
+- [Casper-FFG 논문](https://arxiv.org/abs/1710.09437)
+- [Gasper 논문](https://arxiv.org/pdf/2003.03052.pdf)
+- [제안자 가중치 부스팅 합의 사양](https://github.com/ethereum/consensus-specs/pull/2730)
+- [ethresear.ch의 바운싱 공격](https://ethresear.ch/t/prevention-of-bouncing-attack-on-ffg/6114)
+- [SSLE 연구](https://ethresear.ch/t/secret-non-single-leader-election/11789)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/attestations/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/attestations/index.md
new file mode 100644
index 00000000000..76335c48502
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/attestations/index.md
@@ -0,0 +1,92 @@
+---
+title: "인증"
+description: "지분 증명 이더리움의 인증에 대한 설명입니다."
+lang: ko
+---
+
+검증자는 매 에폭마다 인증을 생성, 서명 및 브로드캐스트해야 합니다. 이 페이지에서는 이러한 인증의 형태와 합의 클라이언트 간에 처리되고 통신되는 방식에 대해 간략히 설명합니다.
+
+## 인증이란 무엇인가요? {#what-is-an-attestation}
+
+매 [에폭](/glossary/#epoch)(6.4분)마다 검증자는 네트워크에 인증을 제안합니다. 인증은 에폭의 특정 슬롯에 대한 것입니다. 인증의 목적은 검증자의 체인에 대한 관점, 특히 가장 최근에 정당화된 블록과 현재 에폭의 첫 번째 블록(`소스` 및 `타깃` 체크포인트라고 함)에 찬성하여 투표하는 것입니다. 이 정보는 참여하는 모든 검증자에 대해 결합되어 네트워크가 블록체인의 상태에 대한 합의에 도달할 수 있도록 합니다.
+
+인증에는 다음 구성 요소가 포함됩니다.
+
+- `aggregation_bits`: 검증자들의 비트 리스트로, 위치는 위원회 내 검증자 인덱스에 매핑됩니다. 값(0/1)은 검증자가 `data`에 서명했는지 여부(즉, 활성 상태이고 블록 제안자에 동의하는지 여부)를 나타냅니다.
+- `data`: 아래에 정의된 인증 관련 세부 정보
+- `signature`: 개별 검증자의 서명을 집계하는 BLS 서명
+
+인증하는 검증자의 첫 번째 작업은 `data`를 구축하는 것입니다. `data`에는 다음 정보가 포함됩니다.
+
+- `slot`: 인증이 참조하는 슬롯 번호
+- `index`: 주어진 슬롯에서 검증자가 속한 위원회를 식별하는 번호
+- `beacon_block_root`: 검증자가 체인의 헤드에서 보는 블록의 루트 해시(포크 선택 알고리즘을 적용한 결과)
+- `source`: 검증자가 가장 최근에 정당화된 블록으로 보는 것을 나타내는 최종성 투표의 일부
+- `target`: 검증자가 현재 에폭의 첫 번째 블록으로 보는 것을 나타내는 최종성 투표의 일부
+
+`data`가 구축되면 검증자는 자신의 검증자 인덱스에 해당하는 `aggregation_bits`의 비트를 0에서 1로 뒤집어 참여했음을 표시할 수 있습니다.
+
+마지막으로 검증자는 인증에 서명하고 네트워크에 브로드캐스트합니다.
+
+### 집계된 인증 {#aggregated-attestation}
+
+모든 검증자에 대해 이 데이터를 네트워크를 통해 전달하는 데 상당한 오버헤드가 있습니다. 따라서 개별 검증자의 인증은 더 광범위하게 브로드캐스트되기 전에 서브넷 내에서 집계됩니다. 여기에는 서명을 함께 집계하여 브로드캐스트되는 인증에 합의 `data`와 해당 `data`에 동의하는 모든 검증자의 서명을 결합하여 형성된 단일 서명이 포함되도록 하는 작업이 포함됩니다. `aggregation_bits`를 사용하여 이를 확인할 수 있습니다. 왜냐하면 이는 위원회에 있는 각 검증자의 인덱스(ID는 `data`에 제공됨)를 제공하며, 이를 사용하여 개별 서명을 쿼리할 수 있기 때문입니다.
+
+각 에폭에서 각 서브넷의 16개 검증자가 `수집자`로 선택됩니다. 수집자는 가십 네트워크를 통해 들은 모든 인증 중 자신의 `data`와 동일한 `data`를 가진 인증을 수집합니다. 일치하는 각 인증의 발신자는 `aggregation_bits`에 기록됩니다. 그런 다음 수집자는 인증 집계를 더 넓은 네트워크에 브로드캐스트합니다.
+
+검증자가 블록 제안자로 선택되면 서브넷의 집계 인증을 새 블록의 최신 슬롯까지 패키징합니다.
+
+### 인증 포함 라이프사이클 {#attestation-inclusion-lifecycle}
+
+1. 생성
+2. 전파
+3. 집계
+4. 전파
+5. 포함
+
+인증 라이프사이클은 아래 도식에 요약되어 있습니다.
+
+
+
+## 보상 {#rewards}
+
+검증자는 인증을 제출하면 보상을 받습니다. 인증 보상은 참여 플래그(소스, 타깃 및 헤드), 기본 보상 및 참여율에 따라 달라집니다.
+
+각 참여 플래그는 제출된 인증 및 포함 지연에 따라 참 또는 거짓이 될 수 있습니다.
+
+세 플래그가 모두 참일 때 최상의 시나리오가 발생하며, 이 경우 검증자는 (올바른 플래그당) 다음과 같이 보상을 받습니다.
+
+`보상 += 기본 보상 * 플래그 가중치 * 플래그 인증 비율 / 64`
+
+플래그 인증 비율은 주어진 플래그에 대한 모든 인증 검증자의 유효 잔액 합계를 총 활성 유효 잔액과 비교하여 측정됩니다.
+
+### 기본 보상 {#base-reward}
+
+기본 보상은 인증 검증자의 수와 이들의 유효 스테이킹 이더 잔액에 따라 계산됩니다.
+
+`기본 보상 = 검증자 유효 잔액 x 2^6 / SQRT(모든 활성 검증자의 유효 잔액)`
+
+#### 포함 지연 {#inclusion-delay}
+
+검증자가 체인의 헤드(`블록 n`)에 투표할 때 `블록 n+1`은 아직 제안되지 않았습니다. 따라서 인증은 자연스럽게 **한 블록 후에** 포함되므로 체인 헤드가 `블록 n`이라고 투표한 모든 인증은 `블록 n+1`에 포함되며, 포함 지연은 1이 됩니다. 포함 지연이 두 슬롯으로 두 배가 되면 인증 보상은 절반으로 줄어듭니다. 왜냐하면 인증 보상을 계산하기 위해 기본 보상에 포함 지연의 역수를 곱하기 때문입니다.
+
+### 인증 시나리오 {#attestation-scenarios}
+
+#### 투표 검증자 누락 {#missing-voting-validator}
+
+검증자는 인증을 제출하기까지 최대 1 에폭의 시간이 있습니다. 에폭 0에서 인증을 놓친 경우, 에폭 1에서 포함 지연과 함께 제출할 수 있습니다.
+
+#### 수집자 누락 {#missing-aggregator}
+
+에폭당 총 16개의 수집자가 있습니다. 또한, 무작위 검증자들은 **256 에폭 동안 두 개의 서브넷에** 구독하여 수집자가 누락될 경우 백업 역할을 합니다.
+
+#### 블록 제안자 누락 {#missing-block-proposer}
+
+경우에 따라 운 좋은 수집자가 블록 제안자가 될 수도 있다는 점에 유의하세요. 블록 제안자가 누락되어 인증이 포함되지 않은 경우, 다음 블록 제안자가 집계된 인증을 선택하여 다음 블록에 포함시킵니다. 그러나 포함 지연은 1만큼 증가합니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [Vitalik의 주석이 달린 합의 사양의 인증](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
+- [eth2book.info의 인증](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/block-proposal/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
new file mode 100644
index 00000000000..8836280f1a2
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/block-proposal/index.md
@@ -0,0 +1,69 @@
+---
+title: "블록 제안"
+description: "지분 증명 이더리움에서 블록이 제안되는 방법에 대한 설명입니다."
+lang: ko
+---
+
+블록은 블록체인의 기본 단위입니다. 블록은 노드 간에 전달되고 합의를 거쳐 각 노드의 데이터베이스에 추가되는 개별 정보 단위입니다. 이 페이지에서는 블록이 어떻게 생성되는지 설명합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+블록 제안은 지분 증명 프로토콜의 일부입니다. 이 페이지를 이해하는 데 도움이 되도록 [지분 증명](/developers/docs/consensus-mechanisms/pos/) 및 [블록 아키텍처](/developers/docs/blocks/)에 대해 읽어보시는 것을 권장합니다.
+
+## 누가 블록을 생성하나요? {#who-produces-blocks}
+
+검증자 계정이 블록을 제안합니다. 검증자 계정은 실행 클라이언트와 합의 클라이언트의 일부로 검증자 소프트웨어를 실행하고 예치 계약에 최소 32 ETH를 예치한 노드 운영자가 관리합니다. 그러나 각 검증자는 가끔씩만 블록 제안을 담당합니다. 이더리움은 시간을 슬롯과 에폭 단위로 측정합니다. 각 슬롯은 12초이며, 32개의 슬롯(6.4분)이 하나의 에폭을 구성합니다. 모든 슬롯은 이더리움에 새로운 블록을 추가할 수 있는 기회입니다.
+
+### 무작위 선택 {#random-selection}
+
+각 슬롯에서 단일 검증자가 의사 난수 방식으로 선택되어 블록을 제안합니다. 각 노드가 진정한 난수를 생성할 경우 합의에 도달할 수 없기 때문에 블록체인에는 진정한 의미의 무작위성이란 존재하지 않습니다. 대신, 검증자 선택 과정을 예측할 수 없도록 만드는 것이 목표입니다. 이더리움에서는 블록 제안자의 해시와 매 블록마다 업데이트되는 시드를 혼합하는 RANDAO라는 알고리즘을 사용하여 무작위성을 구현합니다. 이 값은 전체 검증자 집합에서 특정 검증자를 선택하는 데 사용됩니다. 검증자 선택은 특정 종류의 시드 조작을 방지하기 위해 두 에폭 전에 미리 고정됩니다.
+
+검증자는 각 슬롯에서 RANDAO에 추가하지만, 전역 RANDAO 값은 에폭당 한 번만 업데이트됩니다. 다음 블록 제안자의 인덱스를 계산하기 위해 RANDAO 값과 슬롯 번호를 혼합하여 각 슬롯에서 고유한 값을 생성합니다. 개별 검증자가 선택될 확률은 단순히 `1/N`(여기서 `N` = 총 활성 검증자 수)이 아닙니다. 대신, 각 검증자의 유효 ETH 잔액에 따라 가중치가 부여됩니다. 최대 유효 잔액은 32 ETH입니다(즉, `잔액 < 32 ETH`는 `잔액 == 32 ETH`보다 가중치가 낮지만, `잔액 > 32 ETH`는 `잔액 == 32 ETH`보다 가중치가 높지 않다는 것을 의미합니다).
+
+각 슬롯에서 단 하나의 블록 제안자만 선택됩니다. 정상적인 조건에서는 단일 블록 생성자가 할당된 슬롯에서 단일 블록을 생성하고 배포합니다. 동일한 슬롯에 두 개의 블록을 생성하는 것은 슬래싱 대상이 되는 위반 행위이며, 종종 "이중 서명(equivocation)"으로 알려져 있습니다.
+
+## 블록은 어떻게 생성되나요? {#how-is-a-block-created}
+
+블록 제안자는 자체적으로 로컬에서 실행되는 포크 선택 알고리즘의 관점에 따라 체인의 가장 최근 헤드 위에 구축되는 서명된 비콘 블록을 브로드캐스트해야 합니다. 포크 선택 알고리즘은 이전 슬롯에 남아 있는 대기 중인 증명을 적용한 다음, 기록에서 증명의 누적 가중치가 가장 큰 블록을 찾습니다. 해당 블록은 제안자가 생성한 새 블록의 부모가 됩니다.
+
+블록 제안자는 자체 로컬 데이터베이스와 체인 뷰에서 데이터를 수집하여 블록을 생성합니다. 블록의 내용은 아래 코드 조각에 나와 있습니다.
+
+```rust
+class BeaconBlockBody(Container):
+ randao_reveal: BLSSignature
+ eth1_data: Eth1Data
+ graffiti: Bytes32
+ proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS]
+ attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS]
+ attestations: List[Attestation, MAX_ATTESTATIONS]
+ deposits: List[Deposit, MAX_DEPOSITS]
+ voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS]
+ sync_aggregate: SyncAggregate
+ execution_payload: ExecutionPayload
+```
+
+`randao_reveal` 필드는 블록 제안자가 현재 에폭 번호에 서명하여 생성하는 검증 가능한 무작위 값을 포함합니다. `eth1_data`는 예치 계약에 대한 블록 제안자의 관점에 대한 투표이며, 여기에는 예치 머클 트리의 루트와 새로운 예치의 검증을 가능하게 하는 총 예치 수가 포함됩니다. `graffiti`는 블록에 메시지를 추가하는 데 사용할 수 있는 선택적 필드입니다. `proposer_slashings`와 `attester_slashings`는 제안자의 체인 관점에 따라 특정 검증자가 슬래싱 가능한 위반 행위를 저질렀다는 증거를 포함하는 필드입니다. `deposits`는 블록 제안자가 인지하고 있는 새로운 검증자 예치 목록이고, `voluntary_exits`는 블록 제안자가 합의 레이어 가십 네트워크를 통해 알게 된, 탈퇴를 희망하는 검증자 목록입니다. `sync_aggregate`는 이전에 동기화 위원회(라이트 클라이언트 데이터를 제공하는 검증자 하위 집합)에 할당되어 데이터 서명에 참여했던 검증자를 보여주는 벡터입니다.
+
+`execution_payload`는 실행 클라이언트와 합의 클라이언트 간에 트랜잭션 관련 정보가 전달되도록 합니다. `execution_payload`는 비콘 블록 내부에 중첩되는 실행 데이터 블록입니다. `execution_payload` 내부의 필드는 이더리움 황서에 요약된 블록 구조를 반영하지만, 오머(ommer)가 없고 `difficulty` 대신 `prev_randao`가 있다는 점이 다릅니다. 실행 클라이언트는 자체 가십 네트워크를 통해 수신한 로컬 트랜잭션 풀에 접근할 수 있습니다. 이러한 트랜잭션은 로컬에서 실행되어 사후 상태(post-state)라고 하는 업데이트된 상태 트라이를 생성합니다. 트랜잭션은 `transactions`라는 목록으로 `execution_payload`에 포함되며, 사후 상태(post-state)는 `state-root` 필드에 제공됩니다.
+
+이 모든 데이터는 비콘 블록으로 수집 및 서명되어 블록 제안자의 피어에게 브로드캐스트되고, 피어는 이를 다시 자신의 피어에게 전파하는 식으로 계속됩니다.
+
+[블록의 구조](/developers/docs/blocks)에 대해 자세히 알아보세요.
+
+## 블록은 어떻게 되나요? {#what-happens-to-blocks}
+
+블록은 블록 제안자의 로컬 데이터베이스에 추가되고 합의 레이어 가십 네트워크를 통해 피어에게 브로드캐스트됩니다. 검증자는 블록을 수신하면 해당 블록이 올바른 부모를 가졌는지, 올바른 슬롯에 해당하는지, 제안자 인덱스가 예상과 일치하는지, RANDAO 공개 값이 유효한지, 제안자가 슬래싱되지 않았는지 등을 포함하여 내부 데이터를 검증합니다. `execution_payload`가 분리되고, 검증자의 실행 클라이언트는 목록에 있는 트랜잭션을 재실행하여 제안된 상태 변경을 확인합니다. 블록이 이 모든 검사를 통과하면 각 검증자는 블록을 자신의 정식 체인에 추가합니다. 그러면 다음 슬롯에서 프로세스가 다시 시작됩니다.
+
+## 블록 보상 {#block-rewards}
+
+블록 제안자는 자신의 작업에 대한 보상을 받습니다. 활성 검증자 수와 그들의 유효 잔액의 함수로 계산되는 `base_reward`가 있습니다. 그러면 블록 제안자는 블록에 포함된 모든 유효한 증명에 대해 `base_reward`의 일부를 받습니다. 블록을 증명하는 검증자가 많을수록 블록 제안자의 보상도 커집니다. 또한 슬래싱되어야 할 검증자를 보고하면 슬래싱된 각 검증자에 대해 `유효 잔액 * 1/512`에 해당하는 보상을 받습니다.
+
+[보상 및 페널티에 대한 추가 정보](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)
+
+## 더 읽어보기 {#further-reading}
+
+- [블록 소개](/developers/docs/blocks/)
+- [지분 증명 소개](/developers/docs/consensus-mechanisms/pos/)
+- [이더리움 합의 사양](https://github.com/ethereum/consensus-specs)
+- [Gasper 소개](/developers/docs/consensus-mechanisms/pos/gasper/)
+- [이더리움 업그레이드](https://eth2book.info/)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/faqs/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/faqs/index.md
new file mode 100644
index 00000000000..69a8863366c
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/faqs/index.md
@@ -0,0 +1,172 @@
+---
+title: "자주 묻는 질문"
+description: "지분 증명 이더리움에 대해 자주 묻는 질문입니다."
+lang: ko
+---
+
+## 지분 증명이란 무엇인가요? {#what-is-proof-of-stake}
+
+지분 증명은 부정직하게 행동하는 공격자가 가치 있는 자산을 잃도록 보장함으로써 블록체인에 보안을 제공할 수 있는 알고리즘의 한 종류입니다. 지분 증명 시스템은 검증자가 증명 가능한 부정직한 행동에 가담할 경우 파기될 수 있는 일부 자산을 제공하기 위해 검증자 집합을 필요로 합니다. 이더리움은 블록체인을 보호하기 위해 지분 증명 메커니즘을 사용합니다.
+
+## 지분 증명은 작업 증명과 어떻게 다른가요? {#comparison-to-proof-of-work}
+
+작업 증명과 지분 증명은 모두 악의적인 행위자가 네트워크에 스팸을 보내거나 사기를 치는 것을 경제적으로 막는 메커니즘입니다. 두 경우 모두 합의에 적극적으로 참여하는 노드는 잘못된 행동을 할 경우 잃게 될 일부 자산을 "네트워크에" 투입합니다.
+
+작업 증명에서 이 자산은 에너지입니다. 채굴자로 알려진 노드는 다른 어떤 노드보다 빠르게 값을 계산하는 것을 목표로 하는 알고리즘을 실행합니다. 가장 빠른 노드는 체인에 블록을 제안할 권리를 가집니다. 체인의 기록을 변경하거나 블록 제안을 지배하려면 채굴자는 항상 경쟁에서 이길 수 있을 만큼의 많은 컴퓨팅 파워를 가져야 합니다. 이는 실행하기에 엄청나게 비싸고 어려우므로 공격으로부터 체인을 보호합니다. 작업 증명을 사용하여 "채굴"하는 데 필요한 에너지는 채굴자가 비용을 지불하는 실제 자산입니다.
+
+지분 증명은 검증자로 알려진 노드가 스마트 계약에 암호화폐 자산을 명시적으로 제출해야 합니다. 검증자가 잘못 행동하면 에너지 소비를 통해 간접적으로가 아닌 체인에 직접 자산을 "스테이킹"하기 때문에 이 암호화폐는 파기될 수 있습니다.
+
+작업 증명은 채굴 과정에서 전기가 소모되기 때문에 훨씬 더 많은 에너지를 소비합니다. 반면 지분 증명은 아주 적은 양의 에너지만 필요로 합니다. 이더리움 검증자는 라즈베리 파이와 같은 저전력 장치에서도 실행할 수 있습니다. 이더리움의 지분 증명 메커니즘은 공격 비용이 더 크고 공격자에 대한 결과가 더 심각하기 때문에 작업 증명보다 더 안전한 것으로 간주됩니다.
+
+작업 증명 대 지분 증명은 논란의 여지가 있는 주제입니다. [Vitalik Buterin의 블로그](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-are-the-benefits-of-proof-of-stake-as-opposed-to-proof-of-work)와 Justin Drake와 Lyn Alden 간의 토론은 주장에 대한 좋은 요약을 제공합니다.
+
+
+
+## 지분 증명은 에너지 효율적인가요? {#is-pos-energy-efficient}
+
+네. 지분 증명 네트워크의 노드는 아주 적은 양의 에너지를 사용합니다. 제3자 연구에 따르면 전체 지분 증명 이더리움 네트워크는 연간 약 0.0026 TWh를 소비하며, 이는 미국 내 게임 소비량보다 약 13,000배 적은 수치입니다.
+
+[이더리움의 에너지 소비에 대해 더 알아보기](/energy-consumption/).
+
+## 지분 증명은 안전한가요? {#is-pos-secure}
+
+이더리움의 지분 증명은 매우 안전합니다. 이 메커니즘은 출시되기 전 8년 동안 엄격하게 연구, 개발 및 테스트되었습니다. 보안 보장은 작업 증명 블록체인과 다릅니다. 지분 증명에서는 악의적인 검증자가 적극적으로 처벌("슬래싱")을 받고 검증자 집합에서 퇴출될 수 있으며, 상당한 양의 ETH 비용이 발생합니다. 작업 증명 하에서는 공격자가 충분한 해시 파워를 가지고 있는 동안 공격을 계속 반복할 수 있습니다. 또한 작업 증명보다 지분 증명 이더리움에 동등한 공격을 가하는 것이 더 비용이 많이 듭니다. 체인의 생동감에 영향을 미치려면 네트워크에 스테이킹된 총 이더의 최소 33%가 필요합니다(성공 가능성이 극히 낮은 매우 정교한 공격의 경우는 제외). 미래 블록의 내용을 제어하려면 총 스테이킹된 ETH의 최소 51%가 필요하며, 기록을 다시 쓰려면 총 스테이킹의 66% 이상이 필요합니다. 이더리움 프로토콜은 33% 또는 51% 공격 시나리오에서는 이러한 자산을 파기하고, 66% 공격 시나리오에서는 사회적 합의에 의해 파기합니다.
+
+- [공격자로부터 이더리움 지분 증명을 방어하는 방법에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
+- [지분 증명 설계에 대해 더 알아보기](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51)
+
+## 지분 증명은 이더리움을 더 저렴하게 만드나요? {#does-pos-make-ethereum-cheaper}
+
+아니요. 거래(가스 수수료) 전송 비용은 네트워크 수요가 증가함에 따라 증가하는 동적 수수료 시장에 의해 결정됩니다. 합의 메커니즘은 이에 직접적인 영향을 미치지 않습니다.
+
+[가스에 대해 더 알아보기](/developers/docs/gas).
+
+## 노드, 클라이언트, 검증자란 무엇인가요? {#what-are-nodes-clients-and-validators}
+
+노드는 이더리움 네트워크에 연결된 컴퓨터입니다. 클라이언트는 컴퓨터를 노드로 바꾸는 소프트웨어입니다. 클라이언트에는 실행 클라이언트와 합의 클라이언트의 두 가지 유형이 있습니다. 노드를 생성하려면 두 가지 모두 필요합니다. 검증자는 노드가 지분 증명 합의에 참여할 수 있도록 하는 합의 클라이언트에 대한 선택적 추가 기능입니다. 이는 선택되었을 때 블록을 생성 및 제안하고 네트워크에서 들은 블록에 대해 인증하는 것을 의미합니다. 검증자를 실행하려면 노드 운영자는 예금 계약에 32 ETH를 예치해야 합니다.
+
+- [노드 및 클라이언트에 대해 더 알아보기](/developers/docs/nodes-and-clients)
+- [스테이킹에 대해 더 알아보기](/staking)
+
+## 지분 증명은 새로운 아이디어인가요? {#is-pos-new}
+
+아니요. 2011년 BitcoinTalk의 한 사용자가 비트코인 업그레이드로 [지분 증명의 기본 아이디어를 제안했습니다](https://bitcointalk.org/index.php?topic=27787.0). 이더리움 메인넷에 구현할 준비가 되기까지 11년이 걸렸습니다. 다른 일부 체인들은 이더리움보다 먼저 지분 증명을 구현했지만, Gasper로 알려진 이더리움의 특정 메커니즘은 아니었습니다.
+
+## 이더리움의 지분 증명은 무엇이 특별한가요? {#why-is-ethereum-pos-special}
+
+이더리움의 지분 증명 메커니즘은 설계가 독특합니다. 설계 및 구현된 최초의 지분 증명 메커니즘은 아니지만 가장 견고합니다. 지분 증명 메커니즘은 "Casper"로 알려져 있습니다. Casper는 검증자가 블록을 제안하기 위해 어떻게 선택되는지, 인증이 언제 어떻게 이루어지는지, 인증이 어떻게 계산되는지, 검증자에게 주어지는 보상과 벌칙, 슬래싱 조건, 비활성 누출과 같은 안전장치 메커니즘, 그리고 "최종 승인"의 조건을 정의합니다. 최종 승인이란 블록이 정규 체인의 영구적인 일부로 간주되기 위해 네트워크에 스테이킹된 총 ETH의 최소 66%가 투표해야 하는 조건입니다. 연구원들은 이더리움을 위해 특별히 Casper를 개발했으며, 이더리움은 이를 구현한 최초이자 유일한 블록체인입니다.
+
+Casper 외에도 이더리움의 지분 증명은 LMD-GHOST라는 포크 선택 알고리즘을 사용합니다. 이는 동일한 슬롯에 대해 두 개의 블록이 존재하는 조건이 발생하는 경우에 필요합니다. 이는 블록체인의 두 개의 포크를 생성합니다. LMD-GHOST는 인증의 "가중치"가 가장 큰 것을 선택합니다. 가중치는 검증자의 유효 잔액으로 가중된 인증 수입니다. LMD-GHOST는 이더리움에 고유합니다.
+
+Casper와 LMD_GHOST의 조합은 Gasper로 알려져 있습니다.
+
+[Gasper에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos/gasper/)
+
+## 슬래싱이란 무엇인가요? {#what-is-slashing}
+
+슬래싱은 검증자 스테이킹의 일부를 파기하고 네트워크에서 검증자를 퇴출시키는 것을 의미하는 용어입니다. 슬래싱으로 잃는 ETH의 양은 슬래싱되는 검증자의 수에 따라 확장됩니다. 이는 공모하는 검증자가 개인보다 더 심하게 처벌받는다는 것을 의미합니다.
+
+[슬래싱에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties#slashing)
+
+## 검증자에게 32 ETH가 필요한 이유는 무엇인가요? {#why-32-eth}
+
+검증자는 잘못된 행동을 할 경우 잃을 것이 있도록 ETH를 스테이킹해야 합니다. 특히 32 ETH를 스테이킹해야 하는 이유는 노드가 적당한 하드웨어에서 실행될 수 있도록 하기 위함입니다. 검증자당 최소 ETH가 더 낮으면 검증자의 수, 따라서 각 슬롯에서 처리해야 하는 메시지의 수가 증가하여 노드를 실행하는 데 더 강력한 하드웨어가 필요하게 됩니다.
+
+## 검증자는 어떻게 선택되나요? {#how-are-validators-selected}
+
+단일 검증자는 블록 제안자의 해시와 매 블록마다 업데이트되는 시드를 혼합하는 RANDAO라는 알고리즘을 사용하여 각 슬롯에서 블록을 제안하기 위해 의사 무작위로 선택됩니다. 이 값은 전체 검증자 집합에서 특정 검증자를 선택하는 데 사용됩니다. 검증자 선택은 2 에폭 전에 고정됩니다.
+
+[검증자 선택에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos/block-proposal)
+
+## 스테이크 그라인딩이란 무엇인가요? {#what-is-stake-grinding}
+
+스테이크 그라인딩은 공격자가 자신의 검증자에게 유리하도록 검증자 선택 알고리즘을 편향시키려고 시도하는 지분 증명 네트워크에 대한 공격의 한 범주입니다. RANDAO에 대한 스테이크 그라인딩 공격에는 총 스테이킹된 ETH의 약 절반이 필요합니다.
+
+[스테이크 그라인딩에 대해 더 알아보기](https://eth2book.info/altair/part2/building_blocks/randomness/#randao-biasability)
+
+## 소셜 슬래싱이란 무엇인가요? {#what-is-social-slashing}
+
+소셜 슬래싱은 공격에 대응하여 블록체인의 포크를 조정하는 커뮤니티의 능력입니다. 이를 통해 커뮤니티는 부정직한 체인을 확정하는 공격자로부터 복구할 수 있습니다. 소셜 슬래싱은 검열 공격에 대해서도 사용될 수 있습니다.
+
+- [소셜 슬래싱에 대해 더 알아보기](https://ercwl.medium.com/the-case-for-social-slashing-59277ff4d9c7)
+- [소셜 슬래싱에 대한 Vitalik Buterin의 글](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake)
+
+## 제가 슬래싱될까요? {#will-i-get-slashed}
+
+검증자로서 고의로 악의적인 행동에 가담하지 않는 한 슬래싱당하기는 매우 어렵습니다. 슬래싱은 검증자가 동일한 슬롯에 대해 여러 블록을 제안하거나 자신의 증명과 모순되는 매우 특정한 시나리오에서만 구현됩니다. 이는 우연히 발생할 가능성이 거의 없습니다.
+
+[슬래싱 조건에 대해 더 알아보기](https://eth2book.info/altair/part2/incentives/slashing)
+
+## Nothing-at-stake 문제란 무엇인가요? {#what-is-nothing-at-stake-problem}
+
+Nothing-at-stake 문제는 보상만 있고 벌칙은 없는 일부 지분 증명 메커니즘의 개념적 문제입니다. 스테이킹된 것이 아무것도 없다면, 실용적인 검증자는 블록체인의 모든 또는 여러 포크를 증명하는 것을 똑같이 기뻐할 것입니다. 이는 보상을 증가시키기 때문입니다. 이더리움은 최종 승인 조건과 슬래싱을 사용하여 하나의 정규 체인을 보장함으로써 이 문제를 해결합니다.
+
+[Nothing-at-stake 문제에 대해 더 알아보기](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed)
+
+## 포크 선택 알고리즘이란 무엇인가요? {#what-is-a-fork-choice-algorithm}
+
+포크 선택 알고리즘은 어느 체인이 정규 체인인지를 결정하는 규칙을 구현합니다. 최적의 조건 하에서는 슬롯당 블록 제안자가 하나뿐이고 선택할 블록도 하나뿐이므로 포크 선택 규칙이 필요하지 않습니다. 하지만 가끔 동일한 슬롯에 여러 블록이 있거나 정보가 늦게 도착하는 경우 체인 헤드 근처의 블록이 구성되는 방식에 대해 여러 옵션이 생길 수 있습니다. 이러한 경우 모든 클라이언트는 모두 올바른 블록 시퀀스를 선택하도록 동일한 규칙을 구현해야 합니다. 포크 선택 알고리즘은 이러한 규칙을 인코딩합니다.
+
+이더리움의 포크 선택 알고리즘은 LMD-GHOST라고 불립니다. 가장 많은 스테이킹된 ETH가 투표한 포크, 즉 증명의 가중치가 가장 큰 포크를 선택합니다.
+
+[LMD-GHOST에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos/gasper/#fork-choice)
+
+## 지분 증명에서의 최종 승인이란 무엇인가요? {#what-is-finality}
+
+지분 증명에서의 최종 승인은 특정 블록이 정규 체인의 영구적인 부분이며 공격자가 총 스테이킹된 이더의 33%를 소각하는 합의 실패가 없는 한 되돌릴 수 없다는 보장입니다. 이는 작업 증명 블록체인과 관련된 "확률적 최종 승인"과 대조되는 "암호 경제학적" 최종 승인입니다. 확률적 최종 승인에서는 블록에 대한 명시적인 확정/미확정 상태가 없습니다. 블록이 오래될수록 체인에서 제거될 가능성이 점점 낮아지고, 사용자는 블록이 "안전하다"고 충분히 확신할 때 스스로 결정합니다. 암호 경제학적 최종 승인을 사용하면 체크포인트 블록 쌍은 스테이킹된 이더의 66%에 의해 투표되어야 합니다. 이 조건이 충족되면 해당 체크포인트 사이의 블록은 명시적으로 "확정"됩니다.
+
+[최종 승인에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos/#finality)
+
+## "약한 주관성"이란 무엇인가요? {#what-is-weak-subjectivity}
+
+약한 주관성은 블록체인의 현재 상태를 확인하기 위해 사회적 정보가 사용되는 지분 증명 네트워크의 특징입니다. 새로운 노드 또는 오랫동안 오프라인 상태였다가 네트워크에 다시 참여하는 노드에게는 최근 상태가 제공되어 노드가 올바른 체인에 있는지 즉시 확인할 수 있습니다. 이러한 상태는 "약한 주관성 체크포인트"로 알려져 있으며 다른 노드 운영자로부터 대역 외로, 또는 블록 탐색기나 여러 공용 엔드포인트에서 얻을 수 있습니다.
+
+[약한 주관성에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos/weak-subjectivity)
+
+## 지분 증명은 검열 저항성이 있나요? {#is-pos-censorship-resistant}
+
+검열 저항성은 현재 증명하기 어렵습니다. 하지만 작업 증명과 달리 지분 증명은 검열하는 검증자를 처벌하기 위해 슬래싱을 조정할 수 있는 옵션을 제공합니다. 블록 빌더와 블록 제안자를 분리하고 빌더가 각 블록에 포함해야 하는 거래 목록을 구현하는 프로토콜에 대한 변경 사항이 예정되어 있습니다. 이 제안은 제안자-빌더 분리로 알려져 있으며 검증자가 거래를 검열하는 것을 방지하는 데 도움이 됩니다.
+
+[제안자-빌더 분리에 대해 더 알아보기](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Original-basic-scheme)
+
+## 이더리움의 지분 증명 시스템이 51% 공격을 받을 수 있나요? {#pos-51-attack}
+
+네. 지분 증명은 작업 증명과 마찬가지로 51% 공격에 취약합니다. 공격자가 네트워크 해시 파워의 51%를 요구하는 대신, 총 스테이킹된 ETH의 51%를 요구합니다. 총 스테이크의 51%를 축적한 공격자는 포크 선택 알고리즘을 제어할 수 있게 됩니다. 이를 통해 공격자는 특정 거래를 검열하고, 단거리 재구성을 수행하며, 자신에게 유리하게 블록을 재정렬하여 MEV를 추출할 수 있습니다.
+
+[지분 증명 공격에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pos/attack-and-defense)
+
+## 사회적 조정이란 무엇이며 왜 필요한가요? {#what-is-social-coordination}
+
+사회적 조정은 이더리움의 마지막 방어선으로, 부정직한 블록을 확정한 공격으로부터 정직한 체인을 복구할 수 있게 합니다. 이 경우 이더리움 커뮤니티는 "대역 외"로 조정하고 정직한 소수 포크를 사용하는 데 동의해야 하며, 그 과정에서 공격자의 검증자를 슬래싱해야 합니다. 이는 앱과 거래소도 정직한 포크를 인식해야 함을 의미합니다.
+
+[사회적 조정에 대해 더 읽어보기](/developers/docs/consensus-mechanisms/pos/attack-and-defense#people-the-last-line-of-defense)
+
+## 지분 증명에서는 부자가 더 부유해지나요? {#do-rich-get-richer}
+
+누군가 스테이킹해야 할 ETH가 많을수록 더 많은 검증자를 운영할 수 있고 더 많은 보상을 얻을 수 있습니다. 보상은 스테이킹된 ETH의 양에 따라 선형적으로 확장되며, 모두가 동일한 비율의 수익을 얻습니다. 작업 증명은 대규모로 하드웨어를 구매하는 부유한 채굴자들이 규모의 경제로부터 이익을 얻기 때문에 지분 증명보다 부자를 더 부유하게 만듭니다. 즉, 부와 보상의 관계는 비선형적입니다.
+
+## 지분 증명은 작업 증명보다 더 중앙화되어 있나요? {#is-pos-decentralized}
+
+아니요, 작업 증명은 채굴 비용이 증가하고 개인을, 그리고 작은 회사를 몰아내는 등 중앙화되는 경향이 있습니다. 현재 지분 증명의 문제는 유동성 스테이킹 파생상품(LSD)의 영향입니다. 이는 일부 제공업체에 의해 스테이킹된 ETH를 나타내는 토큰으로, 실제 ETH를 언스테이킹하지 않고도 누구나 2차 시장에서 교환할 수 있습니다. LSD는 사용자가 32 ETH 미만으로 스테이킹할 수 있게 해주지만, 소수의 대규모 조직이 대부분의 스테이크를 통제하게 되는 중앙화 위험도 만듭니다. 이것이 [솔로 스테이킹](/staking/solo)이 이더리움을 위한 최상의 옵션인 이유입니다.
+
+[LSD의 스테이크 중앙화에 대해 더 알아보기](https://notes.ethereum.org/@djrtwo/risks-of-lsd)
+
+## 왜 ETH만 스테이킹할 수 있나요? {#why-can-i-only-stake-eth}
+
+이더는 이더리움 네트워크의 기본 통화입니다. 투표 가중치 및 보안을 위한 유효 잔액을 계산하기 위해 모든 스테이크가 표시되는 단일 통화를 갖는 것이 필수적입니다. ETH 자체는 스마트 계약이 아닌 이더리움의 기본 구성 요소입니다. 다른 통화를 통합하면 스테이킹의 복잡성이 크게 증가하고 보안이 감소합니다.
+
+## 이더리움이 유일한 지분 증명 블록체인인가요? {#is-ethereum-the-only-pos-blockchain}
+
+아니요, 여러 지분 증명 블록체인이 있습니다. 어떤 것도 이더리움과 동일하지 않습니다. 이더리움의 지분 증명 메커니즘은 독특합니다.
+
+## 병합이 무엇인가요? {#what-is-the-merge}
+
+머지는 이더리움이 작업 증명 기반 합의 메커니즘을 끄고 지분 증명 기반 합의 메커니즘을 켠 순간이었습니다. 머지는 2022년 9월 15일에 일어났습니다.
+
+[머지에 대해 더 알아보기](/roadmap/merge)
+
+## 생동감과 안전성이란 무엇인가요? {#what-are-liveness-and-safety}
+
+생동감과 안전성은 블록체인의 두 가지 기본 보안 문제입니다. 생동감은 최종 승인 체인의 가용성입니다. 체인이 최종 승인을 멈추거나 사용자가 쉽게 접근할 수 없는 경우, 이는 생동감 실패입니다. 매우 높은 접근 비용도 생동감 실패로 간주될 수 있습니다. 안전성은 체인을 공격하기 얼마나 어려운지, 즉 충돌하는 체크포인트를 최종 승인하는 것이 얼마나 어려운지를 나타냅니다.
+
+[Casper 논문에서 더 읽어보기](https://arxiv.org/pdf/1710.09437.pdf)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/gasper/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/gasper/index.md
new file mode 100644
index 00000000000..4228be39c3d
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/gasper/index.md
@@ -0,0 +1,52 @@
+---
+title: "가스퍼"
+description: "Gasper 지분 증명 메커니즘에 대한 설명입니다."
+lang: ko
+---
+
+Gasper는 Casper the Friendly Finality Gadget(Casper-FFG)과 LMD-GHOST 포크 선택 알고리즘의 조합입니다. 이 구성 요소들은 함께 지분 증명 이더리움을 보호하는 합의 메커니즘을 형성합니다. 캐스퍼는 특정 블록을 "최종 승인된" 상태로 업그레이드하여 네트워크에 새로 진입하는 참가자들이 정식 체인을 동기화하고 있음을 확신할 수 있도록 하는 메커니즘입니다. 포크 선택 알고리즘은 누적된 투표를 사용하여 블록체인에서 포크가 발생할 때 노드가 올바른 포크를 쉽게 선택할 수 있도록 합니다.
+
+**참고** Casper-FFG의 원래 정의는 Gasper에 포함되기 위해 약간 업데이트되었습니다. 이 페이지에서는 업데이트된 버전을 다룹니다.
+
+## 필수 자료
+
+이 자료를 이해하려면 [지분 증명](/developers/docs/consensus-mechanisms/pos/)에 대한 소개 페이지를 읽어야 합니다.
+
+## Gasper의 역할 {#role-of-gasper}
+
+Gasper는 지분 증명 블록체인 위에 위치하며, 노드는 블록을 제안하거나 검증하는 데 게으르거나 부정직할 경우 파기될 수 있는 보안 보증금으로 이더를 제공합니다. Gasper는 검증자가 보상과 처벌을 받는 방법, 수락하거나 거부할 블록, 그리고 구축할 블록체인의 포크를 결정하는 메커니즘입니다.
+
+## 최종 승인이란 무엇인가요? {#what-is-finality}
+
+최종 승인은 특정 블록의 속성으로, 심각한 합의 실패가 있었고 공격자가 총 스테이킹된 이더의 최소 1/3을 파괴하지 않는 한 되돌릴 수 없음을 의미합니다. 최종 승인된 블록은 블록체인이 확신하는 정보로 생각할 수 있습니다. 블록이 최종 승인되려면 2단계 업그레이드 절차를 거쳐야 합니다.
+
+1. 총 스테이킹된 이더의 3분의 2가 해당 블록이 정식 체인에 포함되는 것에 찬성 투표를 해야 합니다. 이 조건은 블록을 "정당화된" 상태로 업그레이드합니다. 정당화된 블록은 되돌려질 가능성이 낮지만, 특정 조건 하에서는 되돌려질 수 있습니다.
+2. 정당화된 블록 위에 다른 블록이 정당화되면 "최종 승인된" 상태로 업그레이드됩니다. 블록을 최종 승인하는 것은 해당 블록을 정식 체인에 포함시키겠다는 약속입니다. 공격자가 수백만 이더(수십억 달러)를 파괴하지 않는 한 되돌릴 수 없습니다.
+
+이러한 블록 업그레이드는 모든 슬롯에서 발생하는 것이 아닙니다. 대신, 에폭 경계 블록만이 정당화되고 최종 승인될 수 있습니다. 이 블록들은 "체크포인트"로 알려져 있습니다. 업그레이드는 체크포인트 쌍을 고려합니다. 더 오래된 체크포인트를 최종 승인하고 더 최신 블록을 정당화하려면 두 개의 연속된 체크포인트 사이에 "초과 과반수 링크"가 있어야 합니다(즉, 총 스테이킹된 이더의 3분의 2가 체크포인트 B가 체크포인트 A의 올바른 후손이라고 투표해야 합니다).
+
+최종 승인은 블록이 정식이라는 것에 대한 3분의 2의 동의를 필요로 하므로, 공격자는 다음 없이는 대체 최종 승인 체인을 생성할 수 없습니다.
+
+1. 총 스테이킹된 이더의 3분의 2를 소유하거나 조작하는 것.
+2. 총 스테이킹된 이더의 최소 3분의 1을 파괴하는 것.
+
+첫 번째 조건은 체인을 최종 승인하는 데 스테이킹된 이더의 3분의 2가 필요하기 때문에 발생합니다. 두 번째 조건은 총 스테이킹의 3분의 2가 두 포크 모두에 찬성 투표한 경우, 3분의 1은 두 포크 모두에 투표했음에 틀림없기 때문에 발생합니다. 이중 투표는 최대로 처벌되는 슬래싱 조건이며, 총 스테이킹의 3분의 1이 파괴됩니다. 2022년 5월 기준, 이를 위해서는 공격자가 약 100억 달러 상당의 이더를 소각해야 합니다. Gasper에서 블록을 정당화하고 최종 승인하는 알고리즘은 [Casper the Friendly Finality Gadget(Casper-FFG)](https://arxiv.org/pdf/1710.09437.pdf)을 약간 수정한 형태입니다.
+
+### 인센티브 및 슬래싱 {#incentives-and-slashing}
+
+검증자는 정직하게 블록을 제안하고 검증한 것에 대해 보상을 받습니다. 이더가 보상으로 지급되어 그들의 스테이킹에 추가됩니다. 반면에, 자리를 비우거나 호출되었을 때 행동하지 않는 검증자는 이러한 보상을 놓치고 때로는 기존 스테이킹의 일부를 잃게 됩니다. 하지만 오프라인 상태에 대한 페널티는 작으며, 대부분의 경우 보상을 놓치는 기회비용에 해당합니다. 그러나 일부 검증자 행동은 우발적으로 하기가 매우 어렵고 악의적인 의도를 나타냅니다. 예를 들어 동일한 슬롯에 여러 블록을 제안하거나, 동일한 슬롯에 대해 여러 블록을 증명하거나, 이전 체크포인트 투표와 모순되는 경우입니다. 이러한 행위는 더 엄격하게 처벌되는 "슬래싱 가능" 행위입니다. 슬래싱은 검증자 스테이킹의 일부를 소각하고 검증자를 검증자 네트워크에서 제거하는 결과를 낳습니다. 이 과정은 36일이 걸립니다. 첫째 날에는 최대 1 ETH의 초기 페널티가 부과됩니다. 그 후 슬래싱된 검증자의 이더는 출금 기간 동안 서서히 소진되지만, 18일째에는 "상관관계 페널티"를 받게 되는데, 이는 더 많은 검증자가 비슷한 시기에 슬래싱될 때 더 커집니다. 최대 페널티는 전체 스테이킹 금액입니다. 이러한 보상과 페널티는 정직한 검증자에게 인센티브를 제공하고 네트워크에 대한 공격을 억제하도록 설계되었습니다.
+
+### 비활성 누수 {#inactivity-leak}
+
+보안뿐만 아니라 Gasper는 "그럴듯한 활성"도 제공합니다. 이는 총 스테이킹된 이더의 3분의 2가 정직하게 투표하고 프로토콜을 따르는 한, 다른 어떤 활동(예: 공격, 지연 문제 또는 슬래싱)과 관계없이 체인이 최종 승인될 수 있다는 조건입니다. 다시 말해, 체인의 최종 승인을 막으려면 총 스테이킹된 이더의 3분의 1이 어떻게든 손상되어야 합니다. Gasper에는 "비활성 누수"로 알려진 활성 실패에 대한 추가 방어선이 있습니다. 이 메커니즘은 체인이 4 에폭 이상 최종 승인에 실패했을 때 활성화됩니다. 다수 체인을 활발히 증명하지 않는 검증자들의 스테이킹은 다수가 총 스테이킹의 3분의 2를 되찾을 때까지 점차 소진되어, 활성 실패가 일시적임을 보장합니다.
+
+### 포크 선택 {#fork-choice}
+
+Casper-FFG의 원래 정의에는 `가장 높은 높이를 가진 정당화된 체크포인트를 포함하는 체인을 따르라`는 규칙을 부과하는 포크 선택 알고리즘이 포함되어 있었으며, 여기서 높이는 제네시스 블록으로부터의 가장 큰 거리로 정의됩니다. Gasper에서는 원래의 포크 선택 규칙이 더 이상 사용되지 않으며, LMD-GHOST라는 더 정교한 알고리즘이 선호됩니다. 정상적인 조건에서는 포크 선택 규칙이 불필요하다는 것을 깨닫는 것이 중요합니다. 모든 슬롯에 대해 단일 블록 제안자가 있으며, 정직한 검증자들이 이를 증명합니다. 포크 선택 알고리즘은 네트워크 비동기성이 크거나 부정직한 블록 제안자가 모순된 정보를 제공한 경우에만 필요합니다. 하지만 그러한 경우가 발생할 때, 포크 선택 알고리즘은 올바른 체인을 보호하는 중요한 방어 수단입니다.
+
+LMD-GHOST는 "latest message-driven greedy heaviest observed sub-tree"의 약자입니다. 이는 증명의 누적 가중치가 가장 큰 포크를 정식 포크로 선택하고(greedy heaviest subtree), 검증자로부터 여러 메시지를 받은 경우 최신 메시지만 고려하는(latest-message driven) 알고리즘을 정의하는 전문 용어가 많은 방식입니다. 가장 무거운 블록을 자신의 정식 체인에 추가하기 전에, 모든 검증자는 이 규칙을 사용하여 각 블록을 평가합니다.
+
+## 추가 정보 {#further-reading}
+
+- [Gasper: GHOST와 Casper의 결합](https://arxiv.org/pdf/2003.03052.pdf)
+- [Casper the Friendly Finality Gadget](https://arxiv.org/pdf/1710.09437.pdf)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/index.md
new file mode 100644
index 00000000000..8df4bf22cc4
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/index.md
@@ -0,0 +1,99 @@
+---
+title: "지분 증명(PoS)"
+description: "지분 증명 합의 프로토콜과 이더리움 상에서 그 역할에 대한 설명"
+lang: ko
+---
+
+지분 증명(PoS)은 이더리움의 [합의 메커니즘](/developers/docs/consensus-mechanisms/)의 기반입니다. 이더리움은 이전의 [작업 증명](/developers/docs/consensus-mechanisms/pow) 아키텍처에 비해 더 안전하고, 에너지 집약도가 낮으며, 새로운 확장 솔루션을 구현하는 데 더 좋기 때문에 2022년에 지분 증명 메커니즘으로 전환했습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [합의 메커니즘](/developers/docs/consensus-mechanisms/)에 대해 읽어보시는 것을 권장합니다.
+
+## 지분 증명(PoS) 이란 무엇인가요? {#what-is-pos}
+
+지분 증명은 검증자가 부정직하게 행동할 경우 파괴될 수 있는 가치를 네트워크에 투입했음을 증명하는 방법입니다. 이더리움의 지분 증명에서는 검증자가 ETH 형태의 자본을 이더리움의 스마트 계약에 명시적으로 스테이킹합니다. Validator는 블록체인 네트워크에 새로 생성된 블록을 점검한다. 그리고 가끔씩 직접 블록을 생성하기도 한다. 만약 그들이 네트워크를 사기치려고 시도한다면 (예를 들어, 하나를 보내야 할 때 여러 블록을 제안하거나 상충되는 증명을 보내는 경우), 그들의 스테이킹된 ETH의 일부 또는 전부가 소각될 수 있습니다.
+
+## 검증자 {#validators}
+
+검증자로 참여하려면 사용자는 32 ETH를 예치 계약에 예치하고 실행 클라이언트, 합의 클라이언트, 검증 클라이언트의 세 가지 별도의 소프트웨어를 실행해야 합니다. 이더를 예치함으로서 활동 큐 (activation queue)에 참여하게 되며, 이는 새로 참여하려는 검증인들의 수를 제한하는 역할을 한다. 검증인은 이더리움 네트워크 상의 개개인들로부터 새 블록을 할당받는다. 블록에 전달된 거래는 제안된 이더리움 상태 변경이 유효한지 확인하기 위해 다시 실행되며, 블록 서명이 확인됩니다. 검증인은 네트워크로 해당 블록을 승인하는 투표를 보낸다. 이 투표는 attestation이라 부른다.
+
+PoW는 마이닝의 난이도에 따라 블록의 타이밍이 정해졌다면 지분 증명 PoS 는 이러한 타이밍은 고정되어 있다. 이더리움의 지분 증명 시간은 12초 슬롯이 32개 있는 에포크 (epoch) 로 구성되어 있다. 검증인은 각 슬롯마다 블록 제안자 (block proposer) 역할을 맡기 위해 랜덤하게 선택된다. 선택받은 검증인은 새로운 블록 생성과 네트워크 상 다른 노드들로 전송하는 일을 맡는다. 각 슬롯마다 검증인들이 모여 일종의 위원회를 구성하기 되고 각 검증인들의 투표로 제안되는 블록의 유효성을 검증하게 된다. 검증자 집합을 위원회로 나누는 것은 네트워크 부하를 관리 가능하게 유지하는 데 중요합니다. 위원회는 모든 활성 검증자가 모든 에포크에서 증명을 하지만, 모든 슬롯에서는 그렇지 않도록 검증자 집합을 나눕니다.
+
+## 이더리움 지분 증명(PoS)에서 트랜잭션이 실행되는 방법 {#transaction-execution-ethereum-pos}
+
+다음은 이더리움 지분 증명에서 트랜잭션이 어떻게 실행되는지에 대한 종합적인 설명입니다.
+
+1. 사용자는 개인 키로 [트랜잭션](/developers/docs/transactions/)을 생성하고 서명합니다. 이는 보통 [ethers.js](https://docs.ethers.org/v6/), [web3js](https://docs.web3js.org/), [web3py](https://web3py.readthedocs.io/en/v5/) 등과 같은 지갑 또는 라이브러리에서 처리하지만, 내부적으로는 사용자가 이더리움 [JSON-RPC API](/developers/docs/apis/json-rpc/)를 사용하여 노드에 요청을 보내는 것입니다. 사용자는 거래를 블록에 포함하도록 장려하기 위해 검증자에게 팁으로 지불할 준비가 된 가스 양을 정의합니다. [팁](/developers/docs/gas/#priority-fee)은 검증자에게 지급되고 [기본 수수료](/developers/docs/gas/#base-fee)는 소각됩니다.
+2. 트랜잭션은 유효성을 검증하는 이더리움 [실행 클라이언트](/developers/docs/nodes-and-clients/#execution-client)에 제출됩니다. 이는 발신자가 거래를 이행할 충분한 ETH를 가지고 있고, 올바른 키로 서명했는지를 확인하는 것을 의미합니다.
+3. 거래가 유효하면 실행 클라이언트는 이를 로컬 메모풀(보류 중인 거래 목록)에 추가하고 실행 계층의 가십 네트워크를 통해 다른 노드에 브로드캐스트합니다. 다른 노드들이 거래에 대해 알게 되면 그들도 이를 자신의 로컬 메모풀에 추가합니다. 고급 사용자는 트랜잭션을 브로드캐스팅하지 않고 [Flashbots Auction](https://docs.flashbots.net/flashbots-auction/overview)과 같은 전문 블록 빌더에게 전달할 수 있습니다. 이를 통해 그들은 최대 수익([MEV](/developers/docs/mev/#mev-extraction))을 위해 예정된 블록의 트랜잭션을 정리할 수 있습니다.
+4. 네트워크의 검증자 노드 중 하나가 현재 슬롯의 블록 제안자가 되며, 이전에 RANDAO를 사용하여 의사 난수로 선택되었습니다. 이 노드는 이더리움 블록체인에 추가될 다음 블록을 생성하고 브로드캐스트하며 글로벌 상태를 업데이트하는 역할을 담당합니다. 이 노드는 실행 클라이언트, 합의 클라이언트, 검증 클라이언트의 세 부분으로 구성됩니다. 실행 클라이언트는 로컬 메모풀의 거래를 "실행 페이로드"로 묶고 이를 로컬에서 실행하여 상태 변화를 생성합니다. 이 정보는 합의 클라이언트로 전달되며, 여기서 실행 페이로드는 네트워크가 체인의 최상위에 있는 블록 순서에 동의할 수 있도록 보상, 벌금, 슬래싱, 증명 등과 같은 정보를 포함하는 "비콘 블록"의 일부로 포장됩니다. 실행 클라이언트와 합의 클라이언트 간의 통신은 [합의 및 실행 클라이언트 연결하기](/developers/docs/networking-layer/#connecting-clients)에 더 자세히 설명되어 있습니다.
+5. 다른 노드들은 합의 계층의 가십 네트워크에서 새로운 비콘 블록을 받습니다. 그들은 이를 실행 클라이언트에 전달하여 거래가 로컬에서 다시 실행되어 제안된 상태 변경이 유효한지 확인합니다. 그러면 검증자 클라이언트는 해당 블록이 유효하고 체인 뷰에서 논리적인 다음 블록임을 증명합니다(이는 [포크 선택 규칙](/developers/docs/consensus-mechanisms/pos/#fork-choice)에 정의된 대로 증명 가중치가 가장 큰 체인 위에 구축됨을 의미합니다). 블록은 그것을 증명한 각 노드의 로컬 데이터베이스에 추가됩니다.
+6. 거래는 두 개의 체크포인트 사이에 "초과 다수 연결"이 있는 체인의 일부가 되면 "최종 확정"된 것으로 간주할 수 있습니다. 체크포인트는 각 에포크의 시작 시점에 발생하며, 각 슬롯에서 일부 활성 검증자만 증명하지만 모든 활성 검증자가 각 에포크 전체에서 증명한다는 사실을 고려하기 위해 존재합니다. 따라서 '초과 다수 연결'은 에포크 간에만 입증될 수 있습니다 (이는 네트워크에 스테이킹된 전체 ETH의 66%가 두 체크포인트에 동의하는 경우입니다).
+
+최종 확정성에 대한 자세한 내용은 아래에서 확인할 수 있습니다.
+
+## 최종 승인 {#finality}
+
+거래는 많은 양의 ETH가 소각되지 않으면 변경할 수 없는 블록의 일부일 때 분산 네트워크에서 "최종 확정성"을 가집니다. 지분 증명 이더리움에서 finality는 이른바 체크포인트 블록을 통해 관리된다. 각 에포크 epoch의 첫번째 블록이 체크포인트이다. 검증인들은 유효하다고 생각하는 체크포인트 쌍을 투표한다. 두 개의 체크포인트가 전체 스테이킹된 ETH의 최소 3분의 2를 나타내는 투표를 유치하면 체크포인트가 업그레이드됩니다. 둘 중 더 최근 것이 "justified" 된다. 그리고 둘 중 더 이전 것은 이미 justified 되었다고 볼 수 있는데 이는 이전 에포크에서 이미 타깃이었기 때문이다. 이제 "finalized"로 업그레이드 되었다. 체크포인트를 업그레이드하는 이 프로세스는 [Casper the Friendly Finality Gadget(Casper-FFG)](https://arxiv.org/pdf/1710.09437)에 의해 처리됩니다. Casper-FFG는 합의를 위한 블록 최종성 도구입니다. 블록이 한번 최종 확정되면, 과반수 스테이커의 슬래싱 없이는 되돌리거나 변경할 수 없으므로 경제적으로 불가능해집니다.
+
+최종 확정된 블록을 되돌리기 위해 공격자는 총 스테이킹된 ETH의 최소 3분의 1을 잃는 것을 감수해야 합니다. 이에 대한 정확한 이유는 이 [이더리움 재단 블로그 게시물](https://blog.ethereum.org/2016/05/09/on-settlement-finality/)에 설명되어 있습니다. 최종 승인 여부는 3분의 2 이상이 요구 되므로 네트워크가 최종 승인에 도달하지 않게 하려면 전체 지분의 3분의 1을 투표하면 된다. 이에 대항하기 위한 메커니즘이 있습니다. 바로 [미활동 유출](https://eth2book.info/bellatrix/part2/incentives/inactivity)입니다. 이는 블록체인이 4 에폭 연속으로 최종 승인에 실패할 경우 작동한다. 비활성 유출은 과반수에 반대하는 투표를 하는 검증자들로부터 스테이킹된 ETH를 소진시켜 과반수가 3분의 2 과반수를 회복하고 체인을 최종 확정할 수 있도록 합니다.
+
+## 암호경제학적 보안 {#crypto-economic-security}
+
+검증자는 책임이 따른다. 검증자는 블록 검증과 제안에 참여하기 위한 충분한 장비와 연결성이 있어야 한다. 그 대가로 검증자는 ETH로 보상을 받으며 (그들의 스테이킹 잔액이 증가합니다). 한편 검증자로 참여하는 일은 일반 사용자들이 개인적인 이익을 위해 또는 악한 감정을 품고 네트워크를 공격할 수 있는 루트가 될 수도 있다. 이 문제를 방지하기 위해, 검증자는 호출되었을 때 참여하지 않으면 ETH 보상을 받지 못하고, 부정행위를 할 경우 기존 지분이 소멸될 수 있습니다. 두 가지 주요 부정행위는 단일 슬롯에서 여러 블록을 제안하는 것(동시제안)과 상반되는 증명 제출입니다.
+
+잘못된 검증자가 동시에 많이 벌어질수록 ETH가 삭감되는 금액이 많아집니다. 이는 ["상관관계 페널티"](https://eth2book.info/bellatrix/part2/incentives/slashing#the-correlation-penalty)로 알려져 있으며, 단일 검증자가 단독으로 슬래싱되는 경우 약 1%의 지분으로 경미할 수도 있고, 검증자 지분의 100%가 소멸(대량 슬래싱 이벤트)될 수도 있습니다. 첫째 날은 최대 1 ETH 까지 벌금을 부과할 수 있으며, 18일 째 되는 날에는 상관 벌칙을 받게 되고, 끝으로 36일 째 되는 날에는 네트워크로부터 추방당하게 된다. 비록 네트워크에 있지만 투표를 제출하지 않기 때문에 매일 소량의 인증 벌칙 (attestation penalty) 가 부과된다. 따라서 부정 행위를 위해 여러 사람들끼리 협조하는 일이 매우 어렵게 된다.
+
+## 포크 선택 {#fork-choice}
+
+네트워크가 최상의 그리고 부정 행위가 없는 상태라면 블록체인의 최상단에는 단일의 블록이 있으며 모든 검증자들은 이를 검증한다. 그러나 검증자는 네트워크 속도라든지 거짓 블록 제안 등의 사유로 인해 체인의 최상단이 서로 다른 모습일 수 있다. 따라서 합의 클라이언트는 그들 중 어떤 것을 선택해야 하는지 알기 위해 일종의 알고리즘이 필요하다. 지분 증명 이더리움에 사용되는 알고리즘은 [LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf)라고 하며, 기록상 증명 가중치가 가장 큰 포크를 식별하는 방식으로 작동합니다.
+
+## 지분 증명과 보안 {#pos-and-security}
+
+[51% 공격](https://www.investopedia.com/terms/1/51-attack.asp)의 위협은 작업 증명과 마찬가지로 지분 증명에도 여전히 존재하지만, 공격자에게는 훨씬 더 위험합니다. 공격자는 스테이킹된 ETH의 51%가 필요합니다. 이렇게 51% 이상 지분이 있어야만 공격을 위해 원하는 포크를 선정할 수 있다. 합의 클라이언트는 누적 증명의 가중치를 이용하여 올바른 체인을 알 수 있으며, 해당 공격자는 포크를 인정된 것으로 만들 수 있다. 하지만 proof-of-stake가 proof-of-work를 넘어서게 되면서 커뮤니티는 더 쉽게 반격할 수 있게 되었다. 예컨대 진정한 검증자는 소수 체인을 진흥시키고 공격자의 포크를 승인하지 않게 한다. 부정행위를 하는 자를 네트워크에서 강제로 추방시키고 이더 보유량을 회수할 수도 있다. 이런 부분들이 이른바 "51% 공격"에 대항하는 방어막이라고 볼 수 있다.
+
+51% 공격 외에도 악의적인 행위자는 다음과 같은 다른 유형의 악의적인 활동을 시도할 수 있습니다:
+
+- 장거리 공격(그러나 결말 장치는 이 공격 벡터를 무력화함)
+- 단거리 '재조직' 공격(제안자 부스팅 및 증명 마감 기한이 이를 완화함)
+- 반동 및 균형 공격(제안자 부스팅으로 완화되며, 이러한 공격은 이상적인 네트워크 조건에서만 시연됨)
+- 눈사태 공격(포크 선택 알고리즘 규칙에 의해 무력화되며 최신 메시지만 고려)
+
+결론적으로 지분 증명 방식은 PoW 방식 보다 더 안전하다.
+
+## 장단점 {#pros-and-cons}
+
+| 장점 | 단점 |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
+| 스테이킹(staking)은 참가자들로 하여금 네트워크를 더 안전하게 해주며 이는 탈중앙화에 도움을 준다. 검증자 노드는 일반 노트북에서도 실행 가능하다. 스테이킹 풀(staking pool)은 일반 유저들이 32 ETH 씩이나 보유하지 않아도 지분(stake)를 가질 수 있도록 해준다. | 지분 증명 방식은 PoW방식보다 비교적 최신 방식이므로 실전 테스트가 덜 되어있을 수 있다. |
+| 스테이킹은 더 탈중앙화 되어 있다. PoW 마이닝에서 만큼의 시너지(규모의 경제)를 발휘하지 않는다. | 지분 증명은 PoW 방식보다 요건이 더 까다롭다. |
+| 지분 증명 방식은 PoW 방식보다 암호화폐 경제적으로 더 안전하다. | 이더리움 지분 증명 방식에 참여하기 위해서는 3개의 소프트웨어를 실행하여야 한다. |
+| 네트워크 참여자들에게 보상을 주기 위한 새로운 이더 발행량이 적다. | |
+
+### 작업 증명과의 비교 {#comparison-to-proof-of-work}
+
+이더리움은 원래 작업 증명(Proof of Work)을 사용했으나 2022년 9월에 지분 증명(Proof of Stake)으로 전환했습니다. 지분 증명(PoS)은 작업 증명(PoW)에 비해 여러 가지 장점이 있습니다.
+
+- 전력 소비 개선 - proof-of-work 식 연산에 필요한 전력 소비율보다 적은 전력이 필요하게 된다.
+- 더 낮은 진입 장벽 및 장비 요건 - 블록 생성 기회를 얻기 위해 값비싼 장비를 구입하지 않아도 된다.
+- 중앙화 리스크 개선 - 지분 증명 방식은 더 많은 노드가 참여하게 된다.
+- 전력 소비가 줄어들기 때문에 사람들의 참여를 촉진하기 위해 비교적 적은 이더 발행이 요구된다.
+- 악의적 행위에 대한 경제적 처벌은 작업 증명에 비해 공격자가 51% 공격을 더 비용이 많이 들게 만듭니다.
+- 51% 공격이 암호-경제적 방어를 넘을 경우에도 커뮤니티는 정직한 체인의 사회적 회복을 이룰 수 있다.
+
+## 더 읽어보기 {#further-reading}
+
+- [지분 증명 FAQ](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html) _비탈릭 부테린_
+- [지분 증명이란 무엇인가](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _ConsenSys_
+- [지분 증명이란 무엇이며 왜 중요한가](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _비탈릭 부테린_
+- [지분 증명이 필요한 이유(2020년 11월)](https://vitalik.eth.limo/general/2020/11/06/pos2020.html) _비탈릭 부테린_
+- [지분 증명: 약한 주관성을 사랑하게 된 계기](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) _비탈릭 부테린_
+- [지분 증명 이더리움 공격과 방어](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
+- [지분 증명 설계 철학](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _비탈릭 부테린_
+- [영상: 비탈릭 부테린이 렉스 프리드먼에게 설명하는 지분 증명](https://www.youtube.com/watch?v=3yrqBG-7EVE)
+
+## 관련 주제 {#related-topics}
+
+- [작업 증명](/developers/docs/consensus-mechanisms/pow/)
+- [권위 증명](/developers/docs/consensus-mechanisms/poa/)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/keys/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/keys/index.md
new file mode 100644
index 00000000000..63fee91be7c
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/keys/index.md
@@ -0,0 +1,102 @@
+---
+title: "지분 증명 이더리움의 키"
+description: "이더리움의 지분 증명 합의 메커니즘에서 사용되는 키에 대한 설명"
+lang: ko
+---
+
+이더리움은 공개-개인 키 암호학을 사용하여 사용자 자산을 보호합니다. 공개 키는 이더리움 주소의 기반으로 사용됩니다. 즉, 일반 대중에게 공개되며 고유 식별자로 사용됩니다. 개인(또는 '비밀') 키는 계정 소유자만 액세스할 수 있어야 합니다. 개인 키는 트랜잭션과 데이터에 '서명'하는 데 사용되며, 이를 통해 암호학은 특정 개인 키의 보유자가 일부 작업을 승인했음을 증명할 수 있습니다.
+
+이더리움의 키는 [타원 곡선 암호학](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography)을 사용하여 생성됩니다.
+
+하지만 이더리움이 [작업 증명](/developers/docs/consensus-mechanisms/pow)에서 [지분 증명](/developers/docs/consensus-mechanisms/pos)으로 전환되면서 새로운 유형의 키가 이더리움에 추가되었습니다. 기존 키는 이전과 똑같이 작동하며 계정을 보호하는 타원 곡선 기반 키에는 변경 사항이 없었습니다. 그러나 ETH를 스테이킹하고 검증자를 운영하여 지분 증명에 참여하려면 사용자에게 새로운 유형의 키가 필요했습니다. 이러한 필요성은 수많은 검증자 간에 오가는 많은 메시지로 인한 확장성 문제에서 비롯되었습니다. 네트워크가 합의에 도달하는 데 필요한 통신량을 줄이려면 쉽게 집계할 수 있는 암호화 방법이 필요했기 때문입니다.
+
+이 새로운 유형의 키는 [**Boneh-Lynn-Shacham(BLS)** 서명 체계](https://wikipedia.org/wiki/BLS_digital_signature)를 사용합니다. BLS는 매우 효율적인 서명 집계를 가능하게 하지만, 집계된 개별 검증자 키의 리버스 엔지니어링도 허용하므로 검증자 간의 작업을 관리하는 데 이상적입니다.
+
+## 두 가지 유형의 검증자 키 {#two-types-of-keys}
+
+지분 증명으로 전환하기 전 이더리움 사용자는 자금에 액세스하기 위한 단일 타원 곡선 기반 개인 키만 가지고 있었습니다. 지분 증명이 도입되면서 단독 스테이커가 되고자 하는 사용자는 검증자 키와 인출 키도 필요하게 되었습니다.
+
+### 검증자 키 {#validator-key}
+
+검증자 서명 키는 두 가지 요소로 구성됩니다.
+
+- 검증자 **개인** 키
+- 검증자 **공개** 키
+
+검증자 개인 키의 목적은 블록 제안 및 증명과 같은 온체인 작업에 서명하는 것입니다. 이 때문에 이 키는 핫월렛에 보관해야 합니다.
+
+이러한 유연성 덕분에 검증자 서명 키를 한 장치에서 다른 장치로 매우 빠르게 이동할 수 있다는 장점이 있지만, 키를 분실하거나 도난당한 경우 도둑이 다음과 같은 몇 가지 방법으로 악의적으로 행동할 수 있습니다.
+
+- 다음을 통해 검증자가 삭감되도록 합니다.
+ - 제안자로서 동일한 슬롯에 대해 서로 다른 두 개의 비콘 블록에 서명
+ - 증명자로서 다른 증명을 "둘러싸는" 증명에 서명
+ - 증명자로서 동일한 대상을 갖는 서로 다른 두 개의 증명에 서명
+- 자발적 출금을 강제하여 검증자의 스테이킹을 중단시키고, 인출 키 소유자에게 ETH 잔액에 대한 접근 권한을 부여합니다.
+
+사용자가 스테이킹 예치 계약에 ETH를 예치할 때 검증자 공개 키가 트랜잭션 데이터에 포함됩니다. 이는 예치 데이터라고 하며, 이더리움이 검증자를 식별할 수 있도록 합니다.
+
+### 인출 자격 증명 {#withdrawal-credentials}
+
+모든 검증자는 인출 자격 증명이라는 속성을 가집니다. 이 32바이트 필드의 첫 번째 바이트는 계정 유형을 식별합니다. `0x00`은 기존 BLS(샤펠라 이전, 인출 불가) 자격 증명을, `0x01`은 실행 주소를 가리키는 레거시 자격 증명을, `0x02`는 최신 복리 자격 증명 유형을 나타냅니다.
+
+`0x00` BLS 키를 가진 검증자는 초과 잔액 지급 또는 스테이킹에서 전체 인출을 활성화하기 위해 이러한 자격 증명을 실행 주소를 가리키도록 업데이트해야 합니다. 이는 초기 키 생성 시 예치 데이터에 실행 주소를 제공하거나, _또는_ 나중에 인출 키를 사용하여 `BLSToExecutionChange` 메시지에 서명하고 브로드캐스트함으로써 수행할 수 있습니다.
+
+[검증자 인출 자격 증명에 대한 추가 정보](/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/)
+
+### 인출 키 {#withdrawal-key}
+
+초기 예치 시 설정하지 않은 경우, 인출 자격 증명을 실행 주소를 가리키도록 업데이트하려면 인출 키가 필요합니다. 이를 통해 초과 잔액 지급 처리가 시작될 수 있으며, 사용자는 스테이킹된 ETH를 완전히 인출할 수 있게 됩니다.
+
+검증자 키와 마찬가지로 인출 키도 다음 두 가지 구성 요소로 이루어져 있습니다.
+
+- 인출 **개인** 키
+- 인출 **공개** 키
+
+인출 자격 증명을 `0x01` 유형으로 업데이트하기 전에 이 키를 분실하면 검증자 잔액에 대한 접근 권한을 잃게 됩니다. 이러한 작업에는 검증자의 개인 키가 필요하므로 검증자는 여전히 증명과 블록에 서명할 수 있지만, 인출 키를 분실하면 인센티브가 거의 또는 전혀 없습니다.
+
+검증자 키를 이더리움 계정 키와 분리하면 단일 사용자가 여러 검증자를 실행할 수 있습니다.
+
+
+
+**참고**: 스테이킹 의무를 종료하고 검증자 잔액을 인출하려면 현재 검증자 키로 [자발적 출금 메시지(VEM)](https://mirror.xyz/ladislaus.eth/wmoBbUBes2Wp1_6DvP6slPabkyujSU7MZOFOC3QpErs&1)에 서명해야 합니다. 그러나 [EIP-7002](https://eips.ethereum.org/EIPS/eip-7002)는 사용자가 향후 인출 키로 출금 메시지에 서명하여 검증자 출금을 트리거하고 잔액을 인출할 수 있도록 하는 제안입니다. 이를 통해 ETH를 [서비스형 스테이킹 제공자](/staking/saas/#what-is-staking-as-a-service)에게 위임하는 스테이커가 자신의 자금을 계속 통제할 수 있게 되어 신뢰 가정이 줄어들 것입니다.
+
+## 시드 문구에서 키 파생 {#deriving-keys-from-seed}
+
+스테이킹된 모든 32 ETH마다 완전히 독립적인 2개의 새로운 키 세트가 필요하다면, 특히 여러 검증자를 실행하는 사용자의 경우 키 관리가 금방 힘들어질 것입니다. 대신, 여러 검증자 키를 단일 공통 비밀에서 파생시킬 수 있으며, 그 단일 비밀을 저장하면 여러 검증자 키에 액세스할 수 있습니다.
+
+[니모닉](https://en.bitcoinwiki.org/wiki/Mnemonic_phrase)과 경로는 사용자가 지갑에 [액세스할 때](https://ethereum.stackexchange.com/questions/19055/what-is-the-difference-between-m-44-60-0-0-and-m-44-60-0) 자주 접하게 되는 두드러진 특징입니다. 니모닉은 개인 키의 초기 시드 역할을 하는 단어 시퀀스입니다. 추가 데이터와 결합하면 니모닉은 '마스터 키'라고 알려진 해시를 생성합니다. 이것은 트리의 루트로 생각할 수 있습니다. 이 루트의 브랜치는 계층적 경로를 사용하여 파생될 수 있으며, 이를 통해 자식 노드는 부모 노드의 해시와 트리 내 인덱스의 조합으로 존재할 수 있습니다. 니모닉 기반 키 생성에 대한 [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) 및 [BIP-19](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) 표준에 대해 읽어보세요.
+
+이러한 경로는 다음과 같은 구조를 가지며, 하드웨어 지갑과 상호 작용해 본 사용자에게는 익숙할 것입니다.
+
+```
+m/44'/60'/0'/0`
+```
+
+이 경로의 슬래시는 개인 키의 구성 요소를 다음과 같이 분리합니다.
+
+```
+마스터_키 / 용도 / 코인_타입 / 계정 / 변경 / 주소_인덱스
+```
+
+이 로직을 통해 사용자는 단일 니모닉 문구에 가능한 한 많은 검증자를 연결할 수 있습니다. 트리의 루트는 공통으로 사용할 수 있고, 브랜치에서 차별화가 일어날 수 있기 때문입니다. 사용자는 니모닉 문구에서 원하는 수의 키를 파생할 수 있습니다.
+
+```
+ [m / 0]
+ /
+ /
+[m] - [m / 1]
+ \
+ \
+ [m / 2]
+```
+
+각 브랜치는 `/`로 구분되므로 `m/2`는 마스터 키에서 시작하여 브랜치 2를 따른다는 의미입니다. 아래 개요에서는 단일 니모닉 문구를 사용하여 각각 두 개의 관련 검증자가 있는 세 개의 인출 키를 저장합니다.
+
+
+
+## 더 읽어보기 {#further-reading}
+
+- [Carl Beekhuizen의 이더리움 재단 블로그 게시물](https://blog.ethereum.org/2020/05/21/keys/)
+- [EIP-2333 BLS12-381 키 생성](https://eips.ethereum.org/EIPS/eip-2333)
+- [EIP-7002: 실행 레이어 트리거 출금](https://web.archive.org/web/20250125035123/https://research.2077.xyz/eip-7002-unpacking-improvements-to-staking-ux-post-merge)
+- [대규모 키 관리](https://docs.ethstaker.cc/ethstaker-knowledge-base/scaled-node-operators/key-management-at-scale)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md
new file mode 100644
index 00000000000..a40a8b6cf0f
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md
@@ -0,0 +1,69 @@
+---
+title: "지분 증명(Proof-of-stake) vs 작업 증명(Proof-of-work)"
+description: "이더리움의 지분 증명(proof-of-stake)과 작업 증명(proof-of-work) 기반 합의 메커니즘(consensus mechanism) 비교"
+lang: ko
+---
+
+이더리움이 출시되었을 당시, 지분 증명은 이더리움의 보안을 신뢰할 수 있을 만큼 충분한 연구와 개발이 필요한 상태였습니다. 작업 증명은 비트코인을 통해 이미 검증된 더 단순한 메커니즘이었기 때문에, 핵심 개발자들이 이더리움 출시를 위해 즉시 구현할 수 있었습니다. 지분 증명이 구현될 수 있는 수준까지 개발하는 데에는 8년이 더 걸렸습니다.
+
+이 페이지는 이더리움이 작업 증명에서 지분 증명으로 전환한 이유와 그에 따른 장단점을 설명합니다.
+
+## 보안 {#security}
+
+이더리움 연구원들은 지분 증명이 작업 증명보다 더 안전하다고 생각합니다. 하지만 실제 이더리움 메인넷에 최근에야 구현되었기 때문에, 작업 증명에 비해 시간의 검증을 덜 받았습니다. 다음 섹션에서는 지분 증명과 작업 증명의 보안 모델을 비교하여 장단점을 설명합니다.
+
+### 공격 비용 {#cost-to-attack}
+
+지분 증명에서 검증자들은 스마트 계약에 최소 32 ETH를 예치("스테이킹")해야 합니다. 이더리움은 부정행위를 하는 검증자들을 처벌하기 위해 스테이킹된 이더를 소각할 수 있습니다. 합의에 도달하기 위해서는 전체 스테이킹된 이더 중 최소 66%가 특정 블록 세트에 찬성해야 합니다. 지분의 66% 이상이 투표한 블록은 "최종 승인"되며, 이는 제거되거나 재구성될 수 없음을 의미합니다.
+
+네트워크 공격은 체인이 확정되는 것을 막거나, 공격자에게 이득이 되는 방식으로 정규 체인의 블록을 특정하게 구성하도록 하는 것을 의미할 수 있습니다. 이러한 공격을 하기 위해서는 공격자가 두 가지 방법 중 하나를 선택해야 합니다. 대량의 이더를 모아서 직접 투표하거나, 정직한 검증자들을 속여서 원하는 방향으로 투표하도록 만들어야 합니다. 정직한 검증자를 속이는 방식의 공격은 매우 복잡하고 성공하기 어렵습니다. 따라서 이더리움을 공격하기 위한 실질적인 비용은, 합의 과정에 영향을 미칠 만큼의 충분한 스테이크를 확보하는 데 필요한 비용이라고 볼 수 있습니다.
+
+가장 낮은 공격 비용은 전체 지분의 33%를 초과합니다. 전체 지분의 33%를 초과하여 보유한 공격자는 오프라인 상태가 되는 것만으로도 최종 승인 지연을 유발할 수 있습니다. 하지만 이는 네트워크에 큰 문제가 되지 않습니다. "비활성 누수(inactivity leak)"라는 보호 장치가 있기 때문입니다. 이 메커니즘은 오프라인 상태인 검증자들의 스테이크를 자동으로 줄여나갑니다. 이러한 감소는 온라인 상태를 유지하는 검증자들의 비중이 전체 스테이크의 66%가 되어 체인을 다시 확정할 수 있을 때까지 계속됩니다. 또한 이론적으로는, 전체 스테이크의 33%를 조금 넘게 보유한 공격자가 이중 투표 일으킬 수도 있습니다. 블록 생성자로 선택되었을 때 하나가 아닌 두 개의 블록을 생성하고, 자신이 가진 모든 검증자로 두 번 투표하는 방식입니다. 공격자가 만든 두 개의 블록은 각각 남아있는 정직한 검증자 중 50%가 해당 체인을 먼저 보기만 하면 유효해질 수 있습니다. 따라서 공격자가 메시지 전송 시점을 정확하게 조절할 수 있다면, 두 개의 다른 블록이 모두 최종 승인될 수 있습니다. 이런 방식의 공격은 성공하기가 매우 어렵습니다. 만약 공격자가 두 개의 블록을 모두 최종 승인하는 데 성공하더라도, 이더리움 커뮤니티는 결국 하나의 블만을 선택할 것입니다. 이때 공격자의 검증자들은 선택받지 않은 체인에서 자동으로 처벌을 받게 되어 스테이크를 잃게 됩니다.
+
+전체 지분의 33%를 초과하여 보유한 공격자는 이더리움 네트워크에 경미한(최종 승인 지연) 또는 더 심각한(이중 최종 승인) 영향을 미칠 수 있습니다. 네트워크에 14,000,000 ETH 이상이 스테이킹되어 있고 대표적인 가격이 $1000/ETH라고 가정할 때, 이러한 공격을 감행하는 데 드는 최소 비용은 `1000 x 14,000,000 x 0.33 = $4,620,000,000`입니다. 공격자는 처벌을 통해 이 금액을 잃게 되며 네트워크에서 퇴출됩니다. 다시 공격하려면 전체 지분의 33%를 초과하여 (다시) 축적하고 (다시) 소각해야 합니다. 네트워크를 공격하려는 각 시도는 46억 달러를 초과하는 비용이 듭니다($1000/ETH 및 1,400만 ETH 스테이킹 기준). 공격자는 처벌(슬래싱)을 받으면 네트워크에서 퇴출되며, 다시 참여하기 위해서는 활성화 대기열에 합류해야 합니다. 이는 반복 공격의 속도가 공격자가 전체 지분의 33%를 초과하여 축적하는 속도뿐만 아니라 모든 검증자를 네트워크에 온보딩하는 데 걸리는 시간에도 제한된다는 것을 의미합니다. 공격자가 공격을 시도할 때마다 발생하는 공급 충격으로 인해, 공격자는 점점 더 가난해지고 나머지 커뮤니티는 더 부유해집니다.
+
+51% 공격이나 전체 스테이크의 66%를 사용한 최종 승인 번복과 같은 다른 공격들은 훨씬 더 많은 ETH가 필요하며, 공격자에게 더 큰 비용이 듭니다.
+
+이를 작업 증명과 비교해보겠습니다. 작업 증명 이더리움에 대한 공격을 시작하는 비용은 전체 네트워크 해시율의 50%를 초과하여 지속적으로 소유하는 비용이었습니다. 이는 다른 채굴자들과 경쟁하여 작업 증명 솔루션을 지속적으로 계산할 수 있을 만큼 충분한 컴퓨팅 파워를 위한 하드웨어 구매 비용과 운영 비용을 의미했습니다. 이더리움은 ASIC 대신 주로 GPU로 채굴되었기 때문에 비용이 낮게 유지되었습니다(만약 이더리움이 작업 증명을 계속 사용했다면 ASIC 채굴이 더 보편화되었을 수 있습니다). 공격자는 작업 증명 이더리움 네트워크를 공격하기 위해 많은 하드웨어를 구매하고 전기 요금을 지불해야 했겠지만, 총 비용은 공격에 필요한 충분한 ETH를 확보하는 데 드는 비용보다는 적었을 것입니다. 51% 공격은 지분 증명보다 작업 증명에서 ~[20배 저렴](https://youtu.be/1m12zgJ42dI?t=1562)합니다. 만약 공격이 발견되어 체인이 하드포크를 통해 공격자의 변경사항을 제거하더라도, 공격자는 동일한 하드웨어를 사용하여 새로운 블록을 반복적으로 공격할 수 있었을 것입니다.
+
+### 복잡성 {#complexity}
+
+지분 증명은 작업 증명보다 훨씬 더 복잡합니다. 이는 더 단순한 프로토콜에서는 버그나 의도하지 않은 영향을 실수로 발생시킬 가능성이 낮기 때문에, 작업 증명에 유리한 점이 될 수 있습니다. 하지만 이러한 복잡성은 수년간의 연구 개발, 시뮬레이션, 테스트넷 구현을 통해 통제되어 왔습니다. 지분 증명 프로토콜은 5개의 서로 다른 팀이 각각 다른 프로그래밍 언어를 사용하여 실행 계층과 합의 계층을 독립적으로 개발했습니다. 이렇게 여러 팀이 다양한 방식으로 개발했기 때문에 한 클라이언트에서 버그가 발생하더라도 전체 시스템은 안전하게 유지될 수 있습니다.
+
+지분 증명 합의 로직을 안전하게 개발하고 테스트하기 위해, 비콘 체인은 이더리움 메인넷에 지분 증명이 구현되기 2년 전에 출시되었습니다. 비콘 체인은 지분 증명을 안전하게 테스트할 수 있는 격리된 시험 환경 역할(sandbox)을 했습니다. 실제 이더리움 거래는 처리하지 않으면서도 지분 증명 방식으로 작동하는 독립된 블록체인이었고, 이를 통해 새로운 합의 방식을 검증할 수 있었습니다. 이것이 충분한 시간 동안 안정적이고 버그 없이 운영된 후, 비콘 체인은 이더리움 메인넷과 '병합'되었습니다. 이 모든 과정은 지분 증명의 복잡성을 통제하는 데 기여했고, 그 결과 의도하지 않은 결과나 클라이언트 버그의 위험이 매우 낮아졌습니다.
+
+### 공격 표면 {#attack-surface}
+
+지분 증명은 작업 증명보다 더 복잡하기 때문에, 대비해야 할 잠재적인 공격 방법도 더 많습니다. 클라이언트를 연결하는 하나의 P2P 네트워크 대신, 각각 다른 프로토콜을 구현하는 두 개의 네트워크가 있습니다. 각 슬롯마다 블록을 제안할 특정 검증자가 미리 선택되는 방식은 서비스 거부 공격의 가능성을 만듭니다. 즉, 대량의 네트워크 트래픽으로 해당 검증자를 오프라인 상태로 만들 수 있습니다.
+
+또한 공격자들은 자신들의 블록이나 증명을 정직한 네트워크의 특정 비율에 도달하도록 시간을 교묘하게 조절하여, 네트워크가 특정 방식으로 투표하도록 영향을 미칠 수 있습니다. 마지막으로, 공격자는 단순히 충분한 ETH를 모아서 스테이킹함으로써 합의 메커니즘을 장악할 수 있습니다. 이러한 각 [공격 벡터에는 관련 방어책이 있지만](/developers/docs/consensus-mechanisms/pos/attack-and-defense), 작업 증명에서는 방어해야 할 필요가 없는 것들입니다.
+
+## 탈중앙화 {#decentralization}
+
+채굴 하드웨어 확보를 위한 경쟁으로 인해 비용이 높아져서 개인과 소규모 조직이 참여하기 어렵기 때문에, 지분 증명은 작업 증명보다 더 탈중앙화되어 있습니다. 기술적으로는 누구나 적당한 하드웨어로 채굴을 시작할 수 있지만, 대규모 채굴 기업들에 비해 보상을 받을 가능성은 극히 낮습니다 지분 증명에서는 스테이킹 비용과 그에 대한 수익률이 모든 사람에게 동일합니다. 현재 검증자가 되어서 운영하는데는 32 ETH가 필요합니다.
+
+반면, 유동적 스테이킹 파생상품의 등장으로 일부 대형 제공업체들이 대량의 스테이킹된 ETH를 관리하게 되면서 중앙화에 대한 우려가 생겼습니다. 이는 문제가 되며 최대한 빨리 해결되어야 하지만, 실제로는 더 복잡한 문제입니다. 중앙화된 스테이킹 제공업체가 반드시 검증자에 대한 중앙화된 통제권을 가지는 것은 아닙니다. 이는 종종 각각 32 ETH가 없는 참여자들도 독립적인 노드 운영자로 스테이킹할 수 있도록 ETH를 한곳에 모으는 방법일 뿐입니다.
+
+이더리움에게 가장 좋은 선택은 검증자들이 가정용 컴퓨터에서 로컬로 운영되어 탈중앙화를 극대화하는 것입니다. 이것이 이더리움이 노드/검증자 운영에 필요한 하드웨어 요구사항을 높이는 변경을 거부하는 이유입니다.
+
+## 지속 가능성 {#sustainability}
+
+지분 증명은 블록체인을 탄소 배출이 적은 방식으로 보호합니다. 작업 증명에서는 채굴자들이 블록을 채굴할 권리를 두고 경쟁합니다. 채굴자들은 계산을 더 빠르게 수행할수록 더 성공적이기 때문에, 하드웨어와 에너지 소비에 투자하게 됩니다. 이는 이더리움이 지분 증명으로 전환하기 전에보여진 현상입니다. 지분 증명으로 전환하기 직전, 이더리움은 약 78 TWh/yr(작은 국가와 맞먹는 수준)의 전력을 소비했습니다. 하지만 지분 증명으로 전환하면서 이 에너지 소비량이 약 99.98% 감소했습니다. 지분 증명은 이더리움을 에너지 효율적이고 탄소 배출이 적은 플랫폼으로 만들었습니다.
+
+[이더리움의 에너지 소비량에 대해 자세히 알아보기](/energy-consumption)
+
+## 발행 {#issuance}
+
+지분 증명 이더리움에서는 검증자들이 높은 전기 비용을 지불할 필요가 없기 때문에, 작업 증명 이더리움보다 훨씬 적은 코인을 발행하면서도 보안을 유지할 수 있습니다. 과적으로, 대량의 ETH가 소각될 때 ETH의 인플레이션율을 낮추거나 심지어 디플레이션이 될 수도 있습니다. 낮은 인플레이션율은 이더리움의 보안 비용이 작업 증명 때보다 더 저렴해졌다는 것을 의미합니다.
+
+## 시각 자료를 찾고 있나요? 시각적 학습자
+
+Justin Drake가 설명하는 작업 증명 대비 지분 증명의 장점 보기
+
+
+
+## 더 읽어보기 {#further-reading}
+
+- [Vitalik의 지분 증명 설계 철학](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51)
+- [Vitalik의 지분 증명 FAQ](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake)
+- [지분 증명 대 작업 증명에 대한 "Simply Explained" 영상](https://www.youtube.com/watch?v=M3EFi_POhps)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
new file mode 100644
index 00000000000..022a2c866b3
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md
@@ -0,0 +1,91 @@
+---
+title: "지분 증명 보상 및 페널티"
+description: "지분 증명 이더리움의 프로토콜 내 인센티브에 대해 알아보세요."
+lang: ko
+---
+
+이더리움은 자체 암호화폐인 이더(ETH)를 사용하여 보안을 유지합니다. 블록 검증 및 체인 헤드 식별에 참여하려는 노드 운영자는 이더를 이더리움의 [예금 계약](/staking/deposit-contract/)에 예치합니다. 그러면 P2P 네트워크를 통해 수신된 새 블록의 유효성을 확인하고 포크 선택 알고리즘을 적용하여 체인의 헤드를 식별하는 검증자 소프트웨어를 실행하는 대가로 이더를 지급받습니다.
+
+검증자의 주요 역할은 두 가지입니다. 1) 새 블록을 확인하고 유효한 경우 이를 '증명'하는 것, 2) 전체 검증자 풀에서 무작위로 선택되었을 때 새 블록을 제안하는 것입니다. 검증자가 요청 시 이러한 작업 중 하나를 수행하지 못하면 이더 지급을 받지 못합니다. 검증자는 때때로 서명 집계 및 동기화 위원회 참여 작업을 맡기도 합니다.
+
+또한 동일한 슬롯에 대해 여러 블록을 제안하거나 동일한 슬롯에 대해 여러 블록을 증명하는 등 우발적으로 수행하기 매우 어렵고 악의적인 의도를 나타내는 일부 작업도 있습니다. 이는 '삭감 가능한' 행동으로, 검증자가 네트워크에서 제거되기 전에 일정량의 이더(최대 1ETH)가 소각되며, 이 과정은 36일이 소요됩니다. 삭감된 검증자의 이더는 출금 기간 동안 서서히 소진되지만, 18일째 되는 날에는 '상관관계 페널티'를 받게 되는데, 이는 더 많은 검증자가 비슷한 시기에 삭감될수록 더 커집니다. 따라서 합의 메커니즘의 인센티브 구조는 정직성에 대한 보상을 제공하고 악의적인 행위자를 처벌합니다.
+
+모든 보상과 페널티는 에폭당 한 번씩 적용됩니다.
+
+자세한 내용은 계속 읽어보세요...
+
+## 보상 및 페널티 {#rewards}
+
+### 보상 {#rewards}
+
+검증자는 다른 검증자 대다수와 일치하는 투표를 하거나, 블록을 제안하거나, 동기화 위원회에 참여할 때 보상을 받습니다. 각 에폭의 보상 가치는 `base_reward`에서 계산됩니다. 이것은 다른 보상이 계산되는 기본 단위입니다. `base_reward`는 최적의 조건에서 검증자가 에폭당 받는 평균 보상을 나타냅니다. 이는 검증자의 유효 잔액과 총 활성 검증자 수에서 다음과 같이 계산됩니다.
+
+```
+base_reward = effective_balance * (base_reward_factor / (base_rewards_per_epoch * sqrt(sum(active_balance))))
+```
+
+여기서 `base_reward_factor`는 64, `base_rewards_per_epoch`는 4, `sum(active balance)`는 모든 활성 검증자에 걸친 총 스테이킹된 이더입니다.
+
+이는 기본 보상이 검증자의 유효 잔액에 비례하고 네트워크의 검증자 수에 반비례한다는 것을 의미합니다. 검증자가 많을수록 전체 발행량은 커지지만(`sqrt(N)`), 검증자당 `base_reward`는 작아집니다(`1/sqrt(N)`). 이러한 요소는 스테이킹 노드의 APR에 영향을 미칩니다. [Vitalik의 노트](https://notes.ethereum.org/@vbuterin/rkhCgQteN?type=view#Base-rewards)에서 이에 대한 근거를 읽어보세요.
+
+그런 다음 총 보상은 각 구성 요소가 총 보상에 얼마나 기여하는지를 결정하는 가중치를 갖는 5개 구성 요소의 합으로 계산됩니다. 구성 요소는 다음과 같습니다.
+
+```
+1. 소스 투표: 검증자가 올바른 소스 체크포인트에 대해 시기적절하게 투표했습니다.
+2. 타겟 투표: 검증자가 올바른 타겟 체크포인트에 대해 시기적절하게 투표했습니다.
+3. 헤드 투표: 검증자가 올바른 헤드 블록에 대해 시기적절하게 투표했습니다.
+4. 동기화 위원회 보상: 검증자가 동기화 위원회에 참여했습니다.
+5. 제안자 보상: 검증자가 올바른 슬롯에 블록을 제안했습니다.
+```
+
+각 구성 요소의 가중치는 다음과 같습니다.
+
+```
+TIMELY_SOURCE_WEIGHT uint64(14)
+TIMELY_TARGET_WEIGHT uint64(26)
+TIMELY_HEAD_WEIGHT uint64(14)
+SYNC_REWARD_WEIGHT uint64(2)
+PROPOSER_WEIGHT uint64(8)
+```
+
+이 가중치의 합은 64입니다. 보상은 적용 가능한 가중치의 합을 64로 나눈 값으로 계산됩니다. 시기적절한 소스, 타겟 및 헤드 투표를 하고 블록을 제안하고 동기화 위원회에 참여한 검증자는 `64/64 * base_reward == base_reward`를 받을 수 있습니다. 그러나 검증자는 일반적으로 블록 제안자가 아니므로 최대 보상은 `64-8 /64 * base_reward == 7/8 * base_reward`입니다. 블록 제안자도 아니고 동기화 위원회에도 속하지 않은 검증자는 `64-8-2 / 64 * base_reward == 6.75/8 * base_reward`를 받을 수 있습니다.
+
+신속한 증명을 장려하기 위해 추가 보상이 추가됩니다. 이것은 `inclusion_delay_reward`입니다. 이 값은 `base_reward`에 `1/delay`를 곱한 값과 같으며, 여기서 `delay`는 블록 제안과 증명 사이의 슬롯 수입니다. 예를 들어, 증명이 블록 제안의 한 슬롯 내에 제출되면 증명자는 `base_reward * 1/1 == base_reward`를 받습니다. 증명이 다음 슬롯에 도착하면 증명자는 `base_reward * 1/2`를 받는 식입니다.
+
+블록 제안자는 블록에 포함된 각 유효한 증명에 대해 `8 / 64 * base_reward`를 받으므로 보상의 실제 가치는 증명하는 검증자의 수에 따라 조정됩니다. 블록 제안자는 제안된 블록에 다른 검증자의 부정 행위 증거를 포함하여 보상을 늘릴 수도 있습니다. 이러한 보상은 검증자의 정직성을 장려하는 '당근'입니다. 삭감을 포함하는 블록 제안자는 `slashed_validators_effective_balance / 512`로 보상받습니다.
+
+### 페널티 {#penalties}
+
+지금까지는 완벽하게 잘 행동하는 검증자를 고려했지만, 시기적절하게 헤드, 소스, 타겟 투표를 하지 않거나 느리게 하는 검증자는 어떻게 될까요?
+
+타겟 및 소스 투표를 놓친 것에 대한 페널티는 증명자가 이를 제출했을 경우 받았을 보상과 동일합니다. 이는 보상이 잔액에 추가되는 대신 동일한 가치가 잔액에서 제거된다는 것을 의미합니다. 헤드 투표를 놓치는 것에 대한 페널티는 없습니다(즉, 헤드 투표는 보상만 받고 페널티는 받지 않습니다). `inclusion_delay`와 관련된 페널티는 없으며, 보상은 단순히 검증자의 잔액에 추가되지 않습니다. 블록 제안에 실패해도 페널티는 없습니다.
+
+[합의 사양](https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/beacon-chain.md)에서 보상 및 페널티에 대해 자세히 알아보세요. 보상 및 페널티는 벨라트릭스 업그레이드에서 조정되었습니다. Danny Ryan과 Vitalik이 이 [Peep an EIP 비디오](https://www.youtube.com/watch?v=iaAEGs1DMgQ)에서 이에 대해 논의하는 것을 시청하세요.
+
+## 삭감 {#slashing}
+
+삭감은 검증자를 네트워크에서 강제로 제거하고 관련 스테이킹된 이더를 잃게 되는 더 심각한 조치입니다. 검증자가 삭감될 수 있는 세 가지 방법이 있으며, 이 모든 것은 부정직한 블록 제안 또는 증명에 해당합니다.
+
+- 동일한 슬롯에 대해 두 개의 다른 블록을 제안하고 서명하는 경우
+- 다른 블록을 '둘러싸는' 블록을 증명하는 경우(효과적으로 기록을 변경)
+- 동일한 블록에 대해 두 후보에게 증명하여 '이중 투표'하는 경우
+
+이러한 행동이 감지되면 검증자는 삭감됩니다. 이는 32 ETH 검증자에 대해 0.0078125가 즉시 소각되고(활성 잔액에 따라 선형적으로 조정), 36일간의 제거 기간이 시작됨을 의미합니다. 이 제거 기간 동안 검증자의 지분은 점차 소진됩니다. 중간 지점(18일)에 추가 페널티가 적용되며, 그 크기는 삭감 이벤트 이전 36일 동안 삭감된 모든 검증자의 총 스테이킹된 이더에 따라 조정됩니다. 이는 더 많은 검증자가 삭감될수록 삭감의 크기가 증가한다는 것을 의미합니다. 최대 삭감액은 삭감된 모든 검증자의 전체 유효 잔액입니다(즉, 많은 검증자가 삭감되면 전체 지분을 잃을 수 있음). 반면에, 단일의 고립된 삭감 이벤트는 검증자 지분의 작은 부분만 소각합니다. 삭감된 검증자의 수에 따라 조정되는 이 중간 지점 페널티를 '상관관계 페널티'라고 합니다.
+
+## 비활동 유출 {#inactivity-leak}
+
+합의 레이어가 4 에폭 이상 최종화되지 않은 경우 '비활동 유출'이라는 비상 프로토콜이 활성화됩니다. 비활동 유출의 궁극적인 목표는 체인이 최종성을 회복하는 데 필요한 조건을 만드는 것입니다. 위에서 설명한 바와 같이, 최종성을 위해서는 총 스테이킹된 이더의 2/3 이상이 소스 및 타겟 체크포인트에 동의해야 합니다. 총 검증자의 1/3 이상을 대표하는 검증자가 오프라인 상태가 되거나 올바른 증명을 제출하지 못하면, 2/3의 절대 다수가 체크포인트를 최종화하는 것이 불가능합니다. 비활동 유출은 비활성 검증자에 속한 지분이 총 지분의 1/3 미만을 제어할 때까지 점차적으로 소진되도록 하여 나머지 활성 검증자가 체인을 최종화할 수 있도록 합니다. 비활성 검증자 풀이 아무리 크더라도, 나머지 활성 검증자는 결국 지분의 2/3 이상을 제어하게 됩니다. 지분 손실은 비활성 검증자가 가능한 한 빨리 다시 활성화하도록 하는 강력한 인센티브입니다! 활성 검증자의 66% 미만이 블록체인의 현재 헤드에 대해 합의에 도달했을 때 Medalla 테스트넷에서 비활동 유출 시나리오가 발생했습니다. 비활동 유출이 활성화되었고 결국 최종성이 회복되었습니다!
+
+합의 메커니즘의 보상, 페널티 및 삭감 설계는 개별 검증자가 올바르게 행동하도록 장려합니다. 그러나 이러한 설계 선택에서 여러 클라이언트에 걸쳐 검증자의 동등한 분배를 강력하게 장려하고 단일 클라이언트 지배를 강력하게 억제하는 시스템이 나타납니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 업그레이드: 인센티브 레이어](https://eth2book.info/altair/part2/incentives)
+- [이더리움의 하이브리드 캐스퍼 프로토콜의 인센티브](https://arxiv.org/pdf/1903.04205.pdf)
+- [Vitalik의 주석이 달린 사양](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#rewards-and-penalties-1)
+- [Eth2 삭감 방지 팁](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50)
+- [EIP-7251에 따른 삭감 페널티 분석](https://ethresear.ch/t/slashing-penalty-analysis-eip-7251/16509)
+
+_출처_
+
+- _[https://benjaminion.xyz/eth2-annotated-spec/phase0/beacon-chain/](https://benjaminion.xyz/eth2-annotated-spec/phase0/beacon-chain/)_
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
new file mode 100644
index 00000000000..855b9b46609
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md
@@ -0,0 +1,39 @@
+---
+title: "약한 주관성"
+description: "약한 주관성과 지분 증명 방식 이더리움에서의 역할에 대한 설명."
+lang: ko
+---
+
+블록체인에서 주관성이란 현재 상태를 알아내기 위해 사회적인 정보에 의존하는 것을 의미합니다. 네트워크에서 다른 피어로부터 수집된 정보에 따라 선택되는 유효한 포크가 여러 개 있을 수 있습니다. 반대로 모든 노드가 코드로 짜여진 규칙에 의해 하나의 유효한 체인만을 참조할 수 있는 속성을 객관성이라 부릅니다. 여기에 세 번째 속성인 약한 주관성도 있습니다. 약한 주관성은 일부 초기 정보가 사회적으로 받아들여진 뒤에 객관성을 가지고 진행될 수 있는 체인의 속성을 의미합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 이해하려면 먼저 [지분 증명](/developers/docs/consensus-mechanisms/pos/)의 기본 사항을 이해해야 합니다.
+
+## 약한 주관성이 풀고자 하는 문제는 무엇일까요? {#problems-ws-solves}
+
+지분 증명 방식은 약한 주관성을 내재하고 있는데, 그 이유는 여러 포크들 중에서 올바른 체인을 선택하기 위해 과거 투표 수를 계산하기 때문입니다. 이는 초기에 합의에 참여하던 노드들이 이득을 얻기 위해 과거 블록으로부터 새로운 포크를 만들어서 유지하다가 나중에 공개하는 장거리 공격(long-range attacks)을 포함한 여러 공격 벡터에 블록체인을 노출시킵니다. 또는 검증인의 33%가 지분을 철회했지만 계속해서 블록을 증명하고 생성함으로써 정통(canonical) 체인과 충돌하는 대체 포크를 만들 수 있습니다. 오랫동안 오프라인 상태였던 노드나 새로운 노드는 공격자가 자금을 인출했다는 사실을 인지하지 못할 수 있으므로 공격자는 그들이 잘못된 체인을 따르도록 속일 수 있습니다. 이더리움은 주관성을 최소한으로 줄이는 제약 조건을 적용하는 매커니즘을 통하여 이러한 공격 벡터를 해결할 수 있습니다.
+
+## 약한 주관성 체크포인트 {#ws-checkpoints}
+
+약한 주관성은 지분 증명 이더리움에서 "약한 주관성 체크포인트"를 통해 구현됩니다. 이는 네트워크의 모든 노드가 정통 체인에 속한다고 합의하는 상태 루트들을 말합니다. 이는 제네시스 블록과 동일한 "보편적 진실"의 목적을 수행하지만 블록체인의 제네시스 위치에 있지는 않다는 점이 다릅니다. 포크 선택 알고리즘은 해당 체크포인트에 정의된 블록체인 상태가 정확하다고 간주하고 그로부터 진행되는 체인을 독립적이고 객관적으로 검증한다고 가정합니다. 약한 주관성 체크포인트 이전에 생성된 블록들은 변경될 수 없기 때문에 체크포인트는 "한계 환원점"의 역할을 합니다. 이는 메커니즘 설계의 일부로 장거리 포크(long-range forks)를 유효하지 않은 것으로 정의하는 것만으로 장거리 공격(long-range attack)을 약화시킵니다. 약한 주관성 체크포인트가 검증자 인출 기간보다 더 짧은 간격으로 분리되도록 하면, 체인을 포크하는 검증자는 스테이킹을 인출하기 전에 최소 임계치 이상으로 슬래싱당하게 되며, 새로운 참여자는 스테이킹이 인출된 검증자에 의해 잘못된 포크로 유인되지 않게 됩니다.
+
+## 약한 주관성 체크포인트와 완결된 블록의 차이점 {#difference-between-ws-and-finalized-blocks}
+
+완결된 블록과 약한 주관성 체크포인트는 이더리움 노드에서 다르게 처리됩니다. 노드가 경쟁하는 두 개의 완결된 블록을 인지하게 되면, 둘 사이에서 결정을 내리지 못하게 됩니다. 즉, 어느 것이 정식 포크인지 자동으로 식별할 방법이 없습니다. 이는 합의 실패의 징후입니다. 반면에, 노드는 약한 주관성 체크포인트와 충돌하는 모든 블록을 거부합니다. 노드의 관점에서 약한 주관성 체크포인트는 피어로부터 얻는 새로운 정보에 의해 훼손될 수 없는 절대적인 진실을 나타냅니다.
+
+## 어느 정도로 약한가요? {#how-weak-is-weak}
+
+이더리움 지분 증명의 주관적인 측면은 동기화를 위해 신뢰할 수 있는 출처의 최신 상태(약한 주관성 체크포인트)가 필요하다는 점입니다. 블록 탐색기나 다수의 노드와 같은 여러 독립적인 공개 출처와 대조하여 확인할 수 있으므로, 잘못된 약한 주관성 체크포인트를 받을 위험은 매우 낮습니다. 하지만 모든 소프트웨어 애플리케이션을 실행하려면 어느 정도의 신뢰가 필요합니다. 예를 들어, 소프트웨어 개발자가 정직한 소프트웨어를 만들었다고 신뢰하는 것과 같습니다.
+
+약한 주관성 체크포인트는 클라이언트 소프트웨어의 일부로 제공될 수도 있습니다. 공격자는 소프트웨어의 체크포인트를 손상시킬 수 있으며, 마찬가지로 소프트웨어 자체도 쉽게 손상시킬 수 있다고 주장할 수 있습니다. 이 문제에 대한 실질적인 암호경제학적 해결책은 없지만, 이더리움에서는 여러 독립적인 클라이언트 팀을 둠으로써 신뢰할 수 없는 개발자의 영향을 최소화합니다. 각 팀은 서로 다른 언어로 동등한 소프트웨어를 구축하며, 모두 정직한 체인을 유지하는 데 이해관계가 있습니다. 블록 탐색기는 약한 주관성 체크포인트를 제공하거나, 다른 곳에서 얻은 체크포인트를 추가적인 출처와 교차 참조할 수 있는 방법을 제공할 수도 있습니다.
+
+마지막으로, 다른 노드에 체크포인트를 요청할 수 있습니다. 예를 들어, 풀노드를 실행하는 다른 이더리움 사용자가 체크포인트를 제공하면, 검증자는 블록 탐색기의 데이터와 대조하여 이를 확인할 수 있습니다. 전반적으로, 약한 주관성 체크포인트 제공자를 신뢰하는 것은 클라이언트 개발자를 신뢰하는 것만큼 문제가 될 수 있다고 간주할 수 있습니다. 필요한 전반적인 신뢰 수준은 낮습니다. 이러한 고려 사항은 대다수의 검증자가 공모하여 블록체인의 대체 포크를 생성하는, 발생 가능성이 매우 낮은 경우에만 중요해진다는 점에 유의해야 합니다. 그 외의 모든 상황에서는 선택할 수 있는 이더리움 체인은 단 하나뿐입니다.
+
+## 추가 정보 {#further-reading}
+
+- [Eth2의 약한 주관성](https://notes.ethereum.org/@adiasg/weak-subjectvity-eth2)
+- [비탈릭: 내가 어떻게 약한 주관성을 사랑하게 되었는가](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/)
+- [약한 주관성(Teku 문서)](https://docs.teku.consensys.io/concepts/weak-subjectivity)
+- [0단계 약한 주관성 가이드](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/weak-subjectivity.md)
+- [이더리움 2.0의 약한 주관성 분석](https://github.com/runtimeverification/beacon-chain-verification/blob/master/weak-subjectivity/weak-subjectivity-analysis.pdf)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md
new file mode 100644
index 00000000000..9d3a90a2672
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pos/withdrawal-credentials/index.md
@@ -0,0 +1,64 @@
+---
+title: "출금 자격 증명"
+description: "검증자 출금 증명서 유형(0x00, 0x01, 0x02)과 이더리움 스테이커에 대한 의미에 대한 설명입니다."
+lang: ko
+---
+
+모든 검증자는 스테이킹된 ETH와 보상을 어떻게 그리고 어디로 출금할 수 있는지를 결정하는 출금 증명서를 가지고 있습니다. 증명서 유형은 첫 번째 바이트 `0x00`, `0x01` 또는 `0x02`로 표시됩니다. 이러한 유형을 이해하는 것은 스테이킹을 관리하는 검증자에게 중요합니다.
+
+## 0x00: 샤펠라 이전 증명서 {#0x00-credentials}
+
+`0x00` 유형은 샤펠라 업그레이드(2023년 4월) 이전의 원래 출금 증명서 형식입니다. 이 증명서 유형을 가진 검증자는 실행 레이어 출금 주소가 설정되어 있지 않으므로 자금이 합의 레이어에 잠겨 있습니다. 만약 아직 `0x00` 증명서를 가지고 있다면, 출금을 받기 전에 `0x01` 또는 `0x02`로 업그레이드해야 합니다.
+
+## 0x01: 레거시 출금 증명서 {#0x01-credentials}
+
+`0x01` 유형은 샤펠라 업그레이드와 함께 도입되었으며, 실행 레이어 출금 주소를 설정하고자 하는 검증자를 위한 표준이 되었습니다. `0x01` 증명서의 경우:
+
+- 32 ETH를 초과하는 잔액은 출금 주소로 **자동으로 스윕됩니다**
+- 전체 출금은 표준 출금 대기열을 거칩니다.
+- 32 ETH를 초과하는 보상은 복리 적용이 불가능하며, 주기적으로 스윕됩니다.
+
+**일부 검증자가 0x01을 계속 사용하는 이유:** 더 간단하고 익숙하기 때문입니다. 많은 검증자들이 샤펠라 이후 예치하여 이미 이 유형을 가지고 있으며, 초과 잔액의 자동 출금을 원하는 사람들에게는 잘 작동합니다.
+
+**권장되지 않는 이유:** `0x01`을 사용하면 32 ETH를 초과하는 보상을 복리로 운용할 수 없게 됩니다. 모든 초과분은 자동으로 스윕되어 검증자의 수익 잠재력을 제한하고, 출금된 자금을 별도로 관리해야 합니다.
+
+## 0x02: 복리 출금 증명서 {#0x02-credentials}
+
+`0x02` 유형은 펙트라 업그레이드와 함께 도입되었으며, 오늘날 검증자들에게 권장되는 선택입니다. `0x02` 증명서를 가진 검증자는 때때로 "복리 검증자"라고 불립니다.
+
+`0x02` 증명서의 경우:
+
+- 32 ETH를 초과하는 보상은 최대 유효 잔액 2048 ETH까지 1 ETH 단위로 **복리** 적용됩니다.
+- 부분 출금은 수동으로 요청해야 합니다(자동 스윕은 2048 ETH 임계값을 초과하는 경우에만 발생합니다).
+- 검증자는 여러 32 ETH 검증자를 하나의 더 높은 잔액을 가진 검증자로 통합할 수 있습니다.
+- 전체 출금은 여전히 표준 출금 대기열을 통해 지원됩니다.
+
+부분 출금과 통합은 모두 [런치패드 검증자 작업](https://launchpad.ethereum.org/en/validator-actions)을 통해 수행할 수 있습니다.
+
+**검증자가 0x02를 선호해야 하는 이유:** 복리를 통한 더 나은 자본 효율성, 출금 시점에 대한 더 많은 제어, 그리고 검증자 통합을 지원하기 때문입니다. 시간이 지남에 따라 보상을 축적하는 단독 스테이커의 경우, 이는 수동 개입 없이 유효 잔액, 즉 보상이 32 ETH를 초과하여 증가할 수 있음을 의미합니다.
+
+**중요:** `0x01`에서 `0x02`로 전환하면 다시 되돌릴 수 없습니다.
+
+유형 2 증명서로 전환하는 방법과 MaxEB 기능에 대한 자세한 가이드는 [MaxEB 설명 페이지](/roadmap/pectra/maxeb/)를 참조하세요.
+
+## 무엇을 선택해야 할까요? {#what-should-i-pick}
+
+- **신규 검증자:** `0x02`를 선택하세요. 더 나은 복리 및 유연성을 갖춘 최신 표준입니다.
+- **기존 0x01 검증자:** 32 ETH를 초과하는 보상을 복리로 운용하거나 검증자를 통합할 계획이라면 `0x02`로의 전환을 고려해 보세요.
+- **기존 0x00 검증자:** 즉시 업그레이드하세요. 증명서를 업데이트하지 않으면 출금할 수 없습니다. 먼저 `0x01`로 전환한 다음 `0x02`로 전환해야 합니다.
+
+## 출금 증명서 관리 도구 {#withdrawal-credential-tools}
+
+몇 가지 도구가 증명서 유형 간의 선택 또는 전환을 지원합니다:
+
+- **[이더리움 스테이킹 런치패드](https://launchpad.ethereum.org/en/validator-actions)** - 증명서 전환 및 통합을 포함한 예금 및 검증자 관리를 위한 공식 도구입니다.
+- **[Pectra 스테이킹 매니저](https://pectrastaking.com)** - 전환 및 통합을 위한 지갑 연결을 지원하는 웹 UI
+- **[Pectra 검증자 운영 CLI 도구](https://github.com/Luganodes/Pectra-Batch-Contract)** - 일괄 전환을 위한 명령줄 도구
+- **[Ethereal](https://github.com/wealdtech/ethereal)** - 검증자 관리를 포함한 이더리움 운영을 위한 CLI 도구
+
+통합 도구의 전체 목록과 자세한 전환 지침은 [MaxEB 통합 툴링](/roadmap/pectra/maxeb/#consolidation-tooling)을 참조하세요.
+
+## 더 읽어보기 {#further-reading}
+
+- [지분 증명 이더리움의 키](/developers/docs/consensus-mechanisms/pos/keys/) - 검증자 키와 출금 증명서와의 관계에 대해 알아보세요.
+- [MaxEB](/roadmap/pectra/maxeb/) - 펙트라 업그레이드 및 최대 유효 잔액 기능에 대한 상세 가이드
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/index.md
new file mode 100644
index 00000000000..19b9d420a4d
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/index.md
@@ -0,0 +1,114 @@
+---
+title: "작업 증명(Proof-of-work, PoW)"
+description: "이더리움에서 작업 증명 합의 프로토콜과 그 역할에 대한 설명."
+lang: ko
+---
+
+이더리움 네트워크는 [작업 증명(PoW)](/developers/docs/consensus-mechanisms/pow)이 포함된 합의 메커니즘을 사용하여 시작되었습니다. 이를 통해 이더리움 네트워크의 노드들은 이더리움 블록체인에 기록된 모든 정보 상태에 대해 합의하고, 특정 경제적 공격을 방지할 수 있었습니다. 하지만 이더리움은 2022년에 작업 증명을 중단하고 대신 [지분 증명](/developers/docs/consensus-mechanisms/pos)을 사용하기 시작했습니다.
+
+
+
+
+
+ 작업 증명은 이제 더 이상 사용되지 않습니다. 이더리움은 더 이상 작업 증명을 합의 메커니즘으로 사용하지 않습니다. 대신 지분 증명을 사용합니다. [지분 증명](/developers/docs/consensus-mechanisms/pos/) 및 [스테이킹](/staking/)에 대해 자세히 알아보세요.
+
+
+
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [트랜잭션](/developers/docs/transactions/), [블록](/developers/docs/blocks/), [합의 메커니즘](/developers/docs/consensus-mechanisms/)에 대해 읽어보시는 것을 추천합니다.
+
+## 작업 증명(Proof-of-Work, PoW)이란 무엇입니까? {#what-is-pow}
+
+작업 증명을 활용하는 나카모토 합의는 한때 탈중앙화된 이더리움 네트워크가 계정 잔액 및 트랜잭션 순서와 같은 사항에 대해 합의(즉, 모든 노드가 동의)에 도달할 수 있도록 한 메커니즘이었습니다. 이는 사용자가 자신이 소유한 코인을 "이중 지출"하는 것을 방지하고, 이더리움 체인이 공격이나 조작이 매우 어려워지도록 보장했습니다. 이러한 보안 속성은 이제 [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/)로 알려진 합의 메커니즘을 사용하는 지분 증명에서 비롯됩니다.
+
+## 작업 증명과 채굴 {#pow-and-mining}
+
+작업 증명은 작업 증명 블록체인에서 채굴자들이 수행하는 작업의 난이도와 규칙을 설정하는 기본 알고리즘입니다. 채굴은 그 "작업" 자체입니다. 채굴은 유효한 블록을 체인에 추가하는 행위입니다. 이는 체인의 길이가 네트워크가 블록체인의 올바른 포크를 따르는 데 중요한 역할을 하기 때문입니다. 더 많은 "작업"이 수행될수록 체인은 더 길어지며, 블록 번호가 높아지고, 네트워크는 현재 상태에 대한 확신을 더 가질 수 있습니다.
+
+[채굴에 대한 자세한 정보](/developers/docs/consensus-mechanisms/pow/mining/)
+
+## 이더리움의 작업 증명은 어떻게 작동했습니까? {#how-it-works}
+
+이더리움 트랜잭션은 블록에 처리됩니다. 이제 더 이상 사용되지 않는 작업 증명 기반 이더리움에서 각 블록은 다음을 포함했습니다:
+
+- 블록 난이도 – 예시: 3,324,092,183,262,715
+- mixHash – 예시: `0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29`
+- nonce – 예시: `0xd3ee432b4fb3d26b`
+
+이 블록 데이터는 작업 증명과 직접적으로 관련이 있었습니다.
+
+### 작업 증명에서의 '작업' {#the-work}
+
+작업 증명 프로토콜인 Ethash는 채굴자들이 블록의 논스를 찾기 위해 강렬한 시도와 실패 과정을 거쳐야 했습니다. 유효한 논스를 가진 블록만 체인에 추가될 수 있었습니다.
+
+블록을 생성하는 과정에서 채굴자는 전체 체인을 다운로드하고 실행하여 얻을 수 있는 데이터 세트를 반복적으로 수학적 함수에 넣었습니다. 이 데이터 세트는 블록 난이도가 지시하는 목표 아래의 믹스해시를 생성하는 데 사용되었습니다. 이를 해결하는 가장 좋은 방법은 시행착오를 통한 것입니다.
+
+난이도가 해시 목표를 결정했습니다. 목표가 낮을수록 유효한 해시 집합이 작아집니다. 생성되면 다른 채굴자와 클라이언트가 이를 확인하는 것이 매우 쉬웠습니다. 하나의 트랜잭션이 변경되더라도 해시는 완전히 달라져 사기를 나타냅니다.
+
+해싱은 사기를 쉽게 발견하게 만듭니다. 그러나 작업 증명 과정은 체인을 공격하는 데 큰 방해 요소였습니다.
+
+### 작업 증명과 보안 {#security}
+
+채굴자들은 이더리움 메인 체인에서 이 작업을 수행할 인센티브를 받았습니다. 일부 채굴자가 독자적인 체인을 시작할 인센티브는 거의 없었습니다. 이는 시스템을 약화시킵니다. 블록체인은 진실의 원천으로서 단일 상태를 유지하는 것에 의존합니다.
+
+작업 증명의 목표는 체인을 확장하는 것이었습니다. 가장 긴 체인이 유효한 것으로 여겨졌습니다. 왜냐하면 그것을 생성하기 위해 가장 많은 계산 작업이 이루어졌기 때문입니다. 이더리움의 작업 증명 시스템 내에서는 트랜잭션을 삭제하거나 가짜 블록을 만들거나 두 번째 체인을 유지하는 것이 거의 불가능했습니다. 그 이유는 악의적인 채굴자가 항상 다른 사람들보다 더 빨리 블록 논스를 풀어야 했기 때문입니다.
+
+악의적인 채굴자가 일관되게 악의적인 유효 블록을 만들기 위해서는 네트워크 채굴 파워의 51% 이상이 필요했습니다. 그만큼의 "작업"에는 많은 비용이 드는 컴퓨팅 파워가 필요하며, 소모된 에너지가 공격으로 얻은 이익을 초과할 수도 있었습니다.
+
+### 작업 증명 경제학 {#economics}
+
+작업 증명은 또한 시스템에 새로운 화폐를 발행하고 채굴자들이 일을 하도록 인센티브를 제공했습니다.
+
+[콘스탄티노플 업그레이드](/ethereum-forks/#constantinople) 이후, 블록을 성공적으로 생성한 채굴자들은 새로 발행된 ETH 2개와 트랜잭션 수수료의 일부를 보상으로 받았습니다. 오머 블록은 또한 1.75 ETH를 보상받았습니다. 오머 블록은 다른 채굴자가 표준 블록을 생성한 것과 거의 동시에 생성된 유효한 블록이었으며, 결국 어떤 체인이 먼저 구축되었는지에 따라 결정되었습니다. 오머 블록은 주로 네트워크 지연으로 인해 발생했습니다.
+
+## 최종 승인 {#finality}
+
+트랜잭션은 변경될 수 없는 블록의 일부가 될 때 이더리움에서 "최종성"을 갖습니다.
+
+채굴자들이 분산된 방식으로 작업했기 때문에 두 개의 유효한 블록이 동시에 채굴될 수 있었습니다. 이는 일시적인 포크를 만듭니다. 결국, 후속 블록이 채굴되어 체인에 추가되면서 이 체인들 중 하나가 더 길어져서 승인된 체인이 됩니다.
+
+상황을 더 복잡하게 만드는 것은 임시 포크에서 거부된 트랜잭션이 승인된 체인에 포함되지 않았을 수 있다는 것입니다. 이는 되돌려질 수 있음을 의미합니다. 따라서 최종성은 트랜잭션이 되돌릴 수 없다고 간주하기 전에 기다려야 하는 시간을 나타냅니다. 이전의 작업 증명 이더리움에서는 특정 블록 `N` 위에 더 많은 블록이 채굴될수록 `N`의 트랜잭션이 성공적이며 되돌려지지 않을 것이라는 확신이 높아졌습니다. 이제 지분 증명에서는 블록의 최종성이 확률적 특성이 아니라 명시적 특성입니다.
+
+## 작업 증명의 에너지 사용량 {#energy}
+
+작업 증명에 대한 주요 비판은 네트워크를 안전하게 유지하는 데 필요한 에너지 소비량입니다. 보안과 탈중앙화를 유지하기 위해 작업 증명 방식의 이더리움은 많은 에너지를 소비했습니다. 지분 증명으로 전환하기 직전, 이더리움 채굴자들은 연간 약 70TWh(체코 공화국과 거의 같은 수준 - 2022년 7월 18일 [digiconomist](https://digiconomist.net/)에 따르면)를 집단적으로 소비하고 있었습니다.
+
+## 장단점 {#pros-and-cons}
+
+| 장점 | 단점 |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
+| 작업 증명은 중립적입니다. 시작할 때 ETH가 필요하지 않으며, 블록 보상을 통해 0ETH에서 긍정적인 잔고로 전환할 수 있습니다. [지분 증명](/developers/docs/consensus-mechanisms/pos/)을 사용하려면 시작하기 위해 ETH가 필요합니다. | 작업 증명은 너무 많은 에너지를 소모하여 환경에 해롭습니다. |
+| 작업 증명은 오랜 시간 동안 비트코인과 이더리움을 안전하고 탈중앙화된 상태로 유지한 입증된 합의 메커니즘입니다. | 채굴을 하려면 매우 특수한 장비가 필요하므로 초기 비용이 많이 듭니다. |
+| 지분증명과 비교했을 때 구현이 상대적으로 쉽습니다. | 필요한 계산량이 증가함에 따라, 채굴 풀들이 채굴 경쟁에서 우위를 점할 수 있으며, 이로 인해 중앙 집중화와 보안 위험이 발생할 수 있습니다. |
+
+## 지분 증명과의 비교 {#compared-to-pos}
+
+높은 수준에서 지분증명은 작업증명과 동일한 최종 목표를 가지고 있습니다: 분산 네트워크가 안전하게 합의에 도달하도록 돕는 것입니다. 그러나 프로세스와 참여자 측면에서 몇 가지 차이점이 있습니다:
+
+- 지분증명은 계산 능력의 중요성을 스테이킹된 ETH로 대체합니다.
+- 지분증명은 채굴자를 검증자로 대체합니다. 검증자는 자신의 ETH를 스테이킹하여 새 블록을 생성할 수 있는 능력을 활성화합니다.
+- 최종성은 더 명확해졌습니다: 특정 체크포인트에서 2/3의 검증자가 블록 상태에 동의하면 최종으로 간주됩니다.
+- 검증자는 전액을 걸어야 하므로, 나중에 결탁하려고 하면 전액을 잃게 됩니다. 검증자는 전체 스테이크를 걸어야 하며, 만약 나중에 공모를 시도한다면 전체 스테이크를 잃게 됩니다.
+
+[지분 증명에 대한 자세한 정보](/developers/docs/consensus-mechanisms/pos/)
+
+## 시각 자료를 찾고 있나요? 시각적 학습자
+
+
+
+## 추가 정보 {#further-reading}
+
+- [과반수 공격](https://en.bitcoin.it/wiki/Majority_attack)
+- [정산 최종 승인에 관하여](https://blog.ethereum.org/2016/05/09/on-settlement-finality/)
+
+### 동영상 {#videos}
+
+- [작업 증명 프로토콜에 대한 기술적 설명](https://youtu.be/9V1bipPkCTU)
+
+## 관련 주제 {#related-topics}
+
+- [채굴](/developers/docs/consensus-mechanisms/pow/mining/)
+- [지분 증명](/developers/docs/consensus-mechanisms/pos/)
+- [권위 증명](/developers/docs/consensus-mechanisms/poa/)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/index.md
new file mode 100644
index 00000000000..733c7a01a5a
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/index.md
@@ -0,0 +1,86 @@
+---
+title: "마이닝"
+description: "이더리움에서 채굴이 어떻게 작동했는지 설명합니다."
+lang: ko
+---
+
+
+
+
+
+작업증명은 더 이상 이더리움의 합의 메커니즘의 기초가 아니며, 채굴이 중단되었습니다. 대신, 이더리움은 ETH를 스테이킹하는 검증자에 의해 보안이 유지됩니다. 오늘부터 ETH 스테이킹을 시작할 수 있습니다. 더 알아보려면 The Merge, 지분증명, 그리고 스테이킹에 대해 읽어보세요. 이 페이지는 역사적인 참고만을 위한 것입니다.
+
+
+
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [트랜잭션](/developers/docs/transactions/), [블록](/developers/docs/blocks/) 및 [작업 증명](/developers/docs/consensus-mechanisms/pow/)에 대해 읽어보는 것을 권장합니다.
+
+## 이더리움 채굴이란 무엇인가요? {#what-is-ethereum-mining}
+
+채굴은 더 이상 이더리움의 작업증명 아키텍처에서 블록체인에 추가할 트랜잭션 블록을 생성하는 과정입니다.
+
+채굴이라는 단어는 암호화폐에 대한 금 비유에서 유래했습니다. 금이나 귀금속은 희소하듯이 디지털 토큰도 마찬가지이며, 작업증명 시스템에서는 채굴을 통해서만 총 발행량을 늘릴 수 있습니다. 작업증명 이더리움에서 유일한 발행 방법은 채굴을 통한 것이었습니다. 그러나 금이나 귀금속과 달리, 이더리움 채굴은 또한 블록체인에서 블록을 생성하고, 검증하고, 발표하며, 전파하는 방식으로 네트워크를 보안하는 방법이었습니다.
+
+이더 채굴은 네트워크 보안과 같습니다.
+
+채굴은 작업증명 블록체인의 핵심입니다. 이더리움 채굴자 - 소프트웨어를 실행하는 컴퓨터 - 는 이더리움이 지분증명으로 전환되기 전까지 트랜잭션을 처리하고 블록을 생성하기 위해 시간과 컴퓨팅 자원을 사용했습니다.
+
+## 채굴자는 왜 존재하나요? {#why-do-miners-exist}
+
+이더리움과 같은 분산 시스템에서는 모든 사람들이 트랜잭션 순서에 동의하는지 확인해야 합니다. 채굴자는 계산적으로 어려운 퍼즐을 풀어 블록을 생성함으로써 이 과정이 이루어지도록 돕고, 네트워크를 공격으로부터 보호했습니다.
+
+[작업 증명에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pow/)
+
+이전에는 누구나 자신의 컴퓨터로 이더리움 네트워크에서 채굴을 할 수 있었습니다. 그러나 모든 사람들이 ETH(이더)를 수익성 있게 채굴할 수 있는 것은 아니었습니다. 대부분의 경우, 채굴자는 전용 컴퓨터 하드웨어를 구입하고, 저렴한 에너지원을 이용해야 했습니다. 일반적인 컴퓨터로는 채굴에 필요한 블록 보상을 얻어 채굴 비용을 충당하기 어렵습니다.
+
+### 채굴 비용 {#cost-of-mining}
+
+- 채굴 장비를 구축하고 유지하는 데 필요한 하드웨어의 잠재적 비용
+- 채굴 장비를 운영하는 데 필요한 전기 비용
+- 채굴 풀에서 채굴하는 경우, 이러한 풀은 일반적으로 생성된 블록의 일정 비율을 수수료로 부과했습니다.
+- 채굴 장비를 지원하기 위한 장비 비용(환기 장치, 에너지 모니터링, 전기 배선 등)
+
+채굴 수익성을 더 자세히 알아보려면 [Etherscan](https://etherscan.io/ether-mining-calculator)에서 제공하는 채굴 계산기를 사용하세요.
+
+## 이더리움 트랜잭션 채굴 방법 {#how-ethereum-transactions-were-mined}
+
+다음은 이더리움 작업증명에서 트랜잭션이 어떻게 채굴되었는지에 대한 개요를 제공합니다. 이더리움 지분 증명 과정에 대한 유사한 설명은 [여기](/developers/docs/consensus-mechanisms/pos/#transaction-execution-ethereum-pos)에서 확인할 수 있습니다.
+
+1. 사용자는 일부 [계정](/developers/docs/accounts/)의 개인 키를 사용하여 [트랜잭션](/developers/docs/transactions/) 요청을 작성하고 서명합니다.
+2. 사용자는 특정 [노드](/developers/docs/nodes-and-clients/)에서 전체 이더리움 네트워크로 트랜잭션 요청을 브로드캐스트합니다.
+3. 이더리움 네트워크의 각 노드는 새로운 트랜잭션 요청에 대해 듣게 되면 해당 요청을 로컬 메모리 풀에 추가합니다. 이 목록은 아직 블록체인에 블록으로 기록되지 않은 모든 트랜잭션 요청을 포함합니다.
+4. 어느 시점에서 채굴 노드는 블록 가스 한도 내에서 획득하는 [거래 수수료](/developers/docs/gas/)를 최대화하는 방식으로 수십 또는 수백 개의 트랜잭션 요청을 잠재적 [블록](/developers/docs/blocks/)으로 집계합니다. 그 다음 채굴 노드는:
+ 1. 각 트랜잭션 요청의 유효성을 검증합니다(예: 서명이 없는 계정에서 이더를 전송하려 하지 않음, 요청이 올바르지 않음 등). 그런 다음 요청의 코드를 실행하여 로컬 EVM 복사본의 상태를 변경합니다. 채굴자는 각 트랜잭션 요청에 대한 수수료를 자신의 계정에 부여합니다.
+ 2. 블록 내의 모든 트랜잭션 요청이 검증되고 로컬 EVM 복사본에서 실행되면 잠재적인 블록에 대한 작업 증명 "합법성 증명서"를 생성하는 과정을 시작합니다.
+5. 결국, 채굴자는 특정 트랜잭션 요청을 포함하는 블록에 대한 증명서를 완성하게 됩니다. 그 다음 채굴자는 새로 주장된 EVM 상태의 증명서와 체크섬을 포함하는 완료된 블록을 브로드캐스트합니다.
+6. 다른 노드들은 새로운 블록에 대해 듣게 됩니다. 그들은 인증서를 확인하고, 블록 내 모든 트랜잭션을 직접 실행하며(사용자가 원래 전송한 트랜잭션 포함), 모든 트랜잭션을 실행한 후 새 EVM 상태의 체크섬이 채굴자가 제시한 블록의 상태 체크섬과 일치하는지 확인합니다. 그런 다음 이 노드들은 이 블록을 블록체인의 마지막에 추가하고, 새로운 EVM 상태를 표준 상태로 받아들입니다.
+7. 각 노드는 새 블록에 있는 모든 트랜잭션을 자신들의 미완료 트랜잭션 요청 메모리 풀에서 제거합니다.
+8. 네트워크에 새로 참여하는 노드들은 모든 블록을 순차적으로 다운로드하며, 여기에는 우리가 관심을 가지는 트랜잭션이 포함된 블록도 있습니다. 그들은 로컬 EVM 사본을 초기화한 후(빈 상태의 EVM으로 시작), 로컬 EVM 사본에서 각 블록의 상태 체크섬을 확인하면서 모든 블록의 트랜잭션을 실행합니다.
+
+모든 트랜잭션은 한 번 채굴되지만(새 블록에 포함되고 처음 전파됨), 표준 EVM 상태를 갱신하는 과정에서 모든 참가자가 트랜잭션을 실행하고 검증합니다. 이는 블록체인의 핵심 원칙 중 하나인 '신뢰하지 말고 검증하라'를 강조합니다.
+
+## 옴머(엉클) 블록 {#ommer-blocks}
+
+작업 증명(Proof-of-Work)에서 블록 채굴은 확률적이었으며, 네트워크 지연으로 인해 때때로 두 개의 유효한 블록이 동시에 게시되었습니다. 이 경우, 프로토콜은 가장 긴(따라서 가장 "유효한") 체인을 결정해야 했으며, 포함되지 않은 유효한 블록을 제안한 채굴자에게 부분적으로 보상하여 공정성을 유지했습니다. 이는 지연 시간이 더 길어질 수 있는 소규모 채굴자들이 [옴머](/glossary/#ommer) 블록 보상을 통해 계속해서 수익을 창출할 수 있게 하여 네트워크의 탈중앙화를 더욱 촉진했습니다.
+
+"옴머"라는 용어는 부모 블록의 형제 블록에 대한 성 중립적인 용어로 선호되지만, 때때로 "uncle"로도 불립니다. **이더리움이 지분 증명으로 전환된 이후에는 각 슬롯에서 단 한 명의 제안자만 선출되므로 옴머 블록은 더 이상 채굴되지 않습니다.** 채굴된 옴머 블록의 [과거 차트](https://ycharts.com/indicators/ethereum_uncle_rate)를 보면 이러한 변화를 확인할 수 있습니다.
+
+## 시각적 데모 {#a-visual-demo}
+
+오스틴이 작업 증명 블록체인을 채굴하는 과정을 안내하는 영상을 시청하세요.
+
+
+
+## 채굴 알고리즘 {#mining-algorithm}
+
+이더리움 메인넷은 오직 하나의 채굴 알고리즘인 ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/)만을 사용했습니다. Ethash는 ['Dagger-Hashimoto'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/)로 알려진 기존 R&D 알고리즘의 후속 버전이었습니다.
+
+[채굴 알고리즘에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/).
+
+## 관련 주제 {#related-topics}
+
+- [가스](/developers/docs/gas/)
+- [EVM](/developers/docs/evm/)
+- [작업 증명](/developers/docs/consensus-mechanisms/pow/)
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
new file mode 100644
index 00000000000..5c942b519b3
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md
@@ -0,0 +1,329 @@
+---
+title: Dagger-Hashimoto
+description: "Dagger-Hashimoto 알고리즘에 대한 상세 설명."
+lang: ko
+---
+
+Dagger-Hashimoto는 이더리움의 채굴 알고리즘에 대한 최초의 연구 구현이자 사양이었습니다. Dagger-Hashimoto는 [Ethash](#ethash)로 대체되었습니다. 2022년 9월 15일 [병합](/roadmap/merge/)으로 채굴이 완전히 중단되었습니다. 그 이후로 이더리움은 대신 [지분 증명](/developers/docs/consensus-mechanisms/pos) 메커니즘을 사용하여 보호되고 있습니다. 이 페이지는 역사적 관심사를 위한 것으로, 여기에 있는 정보는 병합 이후 이더리움과 더 이상 관련이 없습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하기 위해, 먼저 [작업 증명 합의](/developers/docs/consensus-mechanisms/pow), [채굴](/developers/docs/consensus-mechanisms/pow/mining), [채굴 알고리즘](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms)에 대해 읽어보시는 것을 권장합니다.
+
+## Dagger-Hashimoto {#dagger-hashimoto}
+
+Dagger-Hashimoto는 두 가지 목표를 만족시키는 것을 목표로 합니다.
+
+1. **ASIC 저항성**: 알고리즘을 위한 특수 하드웨어를 제작함으로써 얻는 이점은 가능한 한 작아야 합니다.
+2. **라이트 클라이언트 검증 가능성**: 블록은 라이트 클라이언트에 의해 효율적으로 검증될 수 있어야 합니다.
+
+추가적인 수정을 통해, 원할 경우 세 번째 목표를 달성하는 방법도 명시하지만, 추가적인 복잡성을 대가로 합니다:
+
+**전체 체인 저장**: 채굴은 전체 블록체인 상태의 저장을 요구해야 합니다(이더리움 상태 트라이의 불규칙한 구조로 인해, 특히 자주 사용되는 일부 계약에 대한 일부 가지치기가 가능할 것으로 예상하지만, 이를 최소화하고자 합니다).
+
+## DAG 생성 {#dag-generation}
+
+알고리즘 코드는 아래 Python으로 정의됩니다. 먼저, 지정된 정밀도의 부호 없는 정수를 문자열로 마샬링하기 위한 `encode_int`를 제공합니다. 그것의 역함수도 다음과 같습니다:
+
+```python
+NUM_BITS = 512
+
+def encode_int(x):
+ "빅 엔디안 방식을 사용하여 정수 x를 64자 문자열로 인코딩합니다"
+ o = ''
+ for _ in range(NUM_BITS / 8):
+ o = chr(x % 256) + o
+ x //= 256
+ return o
+
+def decode_int(s):
+ "빅 엔디안 방식을 사용하여 문자열에서 정수 x를 디코딩합니다"
+ x = 0
+ for c in s:
+ x *= 256
+ x += ord(c)
+ return x
+```
+
+다음으로, `sha3`는 정수를 입력받아 정수를 출력하는 함수이고, `dbl_sha3`는 double-sha3 함수라고 가정합니다. 이 참조 코드를 구현으로 변환하는 경우 다음을 사용하십시오.
+
+```python
+from pyethereum import utils
+def sha3(x):
+ if isinstance(x, (int, long)):
+ x = encode_int(x)
+ return decode_int(utils.sha3(x))
+
+def dbl_sha3(x):
+ if isinstance(x, (int, long)):
+ x = encode_int(x)
+ return decode_int(utils.sha3(utils.sha3(x)))
+```
+
+### 파라미터 {#parameters}
+
+알고리즘에 사용되는 파라미터는 다음과 같습니다.
+
+```python
+SAFE_PRIME_512 = 2**512 - 38117 # 2**512보다 작은 가장 큰 안전 소수
+
+params = {
+ "n": 4000055296 * 8 // NUM_BITS, # 데이터세트 크기 (4기가바이트); 65536의 배수여야 함
+ "n_inc": 65536, # 기간당 n 값의 증가량; 65536의 배수여야 함
+ # epochtime=20000이면 연간 882MB 성장
+ "cache_size": 2500, # 라이트 클라이언트의 캐시 크기 (라이트 클라이언트가 선택할 수 있음; 알고리즘 사양의 일부가 아님)
+ "diff": 2**14, # 난이도 (블록 평가 중 조정됨)
+ "epochtime": 100000, # 에폭의 길이(블록 단위) (데이터세트가 업데이트되는 빈도)
+ "k": 1, # 노드의 부모 수
+ "w": w, # 모듈러 지수화 해싱에 사용됨
+ "accesses": 200, # hashimoto 동안 데이터세트 접근 횟수
+ "P": SAFE_PRIME_512 # 해싱 및 난수 생성을 위한 안전 소수
+}
+```
+
+이 경우 `P`는 `log₂(P)`가 512보다 약간 작게 선택된 소수이며, 이는 우리가 숫자를 나타내는 데 사용해 온 512비트에 해당합니다. 실제로 DAG의 후반부만 저장하면 되므로 사실상의 RAM 요구 사항은 1GB에서 시작하여 매년 441MB씩 증가합니다.
+
+### Dagger 그래프 구축 {#dagger-graph-building}
+
+Dagger 그래프 구축 기본 요소는 다음과 같이 정의됩니다.
+
+```python
+def produce_dag(params, seed, length):
+ P = params["P"]
+ picker = init = pow(sha3(seed), params["w"], P)
+ o = [init]
+ for i in range(1, length):
+ x = picker = (picker * init) % P
+ for _ in range(params["k"]):
+ x ^= o[x % i]
+ o.append(pow(x, params["w"], P))
+ return o
+```
+
+기본적으로, 그래프는 단일 노드인 `sha3(seed)`로 시작하며, 거기서부터 무작위 이전 노드를 기반으로 순차적으로 다른 노드를 추가하기 시작합니다. 새 노드가 생성될 때, 시드의 모듈러 거듭제곱이 계산되어 `i`보다 작은 일부 인덱스를 무작위로 선택하고(위의 `x % i` 사용), 해당 인덱스의 노드 값은 `x`에 대한 새로운 값을 생성하기 위한 계산에 사용됩니다. 그런 다음 이 값은 작은 작업 증명(PoW) 함수(XOR 기반)에 입력되어 궁극적으로 인덱스 `i`에서 그래프의 값을 생성합니다. 이 특정 설계의 근거는 DAG의 순차적 접근을 강제하는 것입니다. 접근할 다음 DAG의 값은 현재 값이 알려질 때까지 결정될 수 없습니다. 마지막으로, 모듈러 지수화는 결과를 추가로 해시합니다.
+
+이 알고리즘은 수론의 여러 결과에 의존합니다. 자세한 내용은 아래 부록을 참조하십시오.
+
+## 라이트 클라이언트 평가 {#light-client-evaluation}
+
+위의 그래프 구성은 그래프의 각 노드가 적은 수의 노드로 구성된 하위 트리를 계산하고 소량의 보조 메모리만 필요로 하여 재구성될 수 있도록 합니다. k=1일 때 하위 트리는 DAG의 첫 번째 요소까지 올라가는 값의 체인일 뿐이라는 점에 유의하십시오.
+
+DAG에 대한 라이트 클라이언트 계산 함수는 다음과 같이 작동합니다.
+
+```python
+def quick_calc(params, seed, p):
+ w, P = params["w"], params["P"]
+ cache = {}
+
+ def quick_calc_cached(p):
+ if p in cache:
+ pass
+ elif p == 0:
+ cache[p] = pow(sha3(seed), w, P)
+ else:
+ x = pow(sha3(seed), (p + 1) * w, P)
+ for _ in range(params["k"]):
+ x ^= quick_calc_cached(x % p)
+ cache[p] = pow(x, w, P)
+ return cache[p]
+
+ return quick_calc_cached(p)
+```
+
+기본적으로 이것은 전체 DAG의 값을 계산하는 루프를 제거하고 이전 노드 조회를 재귀 호출 또는 캐시 조회로 대체하는 위 알고리즘의 재작성일 뿐입니다. `k=1`의 경우 캐시는 불필요하지만, 추가 최적화는 실제로 DAG의 처음 몇 천 개 값을 미리 계산하고 이를 계산을 위한 정적 캐시로 유지합니다. 이에 대한 코드 구현은 부록을 참조하십시오.
+
+## DAG의 이중 버퍼 {#double-buffer}
+
+풀 클라이언트에서는 위 공식에 의해 생성된 2개의 DAG로 구성된 [_이중 버퍼_](https://wikipedia.org/wiki/Multiple_buffering)가 사용됩니다. 아이디어는 위 파라미터에 따라 매 `epochtime` 수의 블록마다 DAG가 생성된다는 것입니다. 클라이언트는 가장 최근에 생성된 DAG를 사용하는 대신 이전 DAG를 사용합니다. 이것의 이점은 채굴자들이 갑자기 모든 데이터를 재계산해야 하는 단계를 통합할 필요 없이 시간이 지남에 따라 DAG를 교체할 수 있다는 것입니다. 그렇지 않으면, 일정한 간격으로 체인 처리 속도가 갑자기 일시적으로 느려지고 중앙화가 급격히 증가할 가능성이 있습니다. 따라서 모든 데이터가 재계산되기 전 몇 분 안에 51% 공격 위험이 있습니다.
+
+블록에 대한 작업을 계산하는 데 사용되는 DAG 세트를 생성하는 데 사용되는 알고리즘은 다음과 같습니다.
+
+```python
+def get_prevhash(n):
+ from pyethereum.blocks import GENESIS_PREVHASH
+ from pyethereum import chain_manager
+ if n <= 0:
+ return hash_to_int(GENESIS_PREVHASH)
+ else:
+ prevhash = chain_manager.index.get_block_by_number(n - 1)
+ return decode_int(prevhash)
+
+def get_seedset(params, block):
+ seedset = {}
+ seedset["back_number"] = block.number - (block.number % params["epochtime"])
+ seedset["back_hash"] = get_prevhash(seedset["back_number"])
+ seedset["front_number"] = max(seedset["back_number"] - params["epochtime"], 0)
+ seedset["front_hash"] = get_prevhash(seedset["front_number"])
+ return seedset
+
+def get_dagsize(params, block):
+ return params["n"] + (block.number // params["epochtime"]) * params["n_inc"]
+
+def get_daggerset(params, block):
+ dagsz = get_dagsize(params, block)
+ seedset = get_seedset(params, block)
+ if seedset["front_hash"] <= 0:
+ # 백 버퍼를 사용할 수 없으므로 프론트 버퍼만 만듭니다
+ return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
+ "block_number": 0}}
+ else:
+ return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz),
+ "block_number": seedset["front_number"]},
+ "back": {"dag": produce_dag(params, seedset["back_hash"], dagsz),
+ "block_number": seedset["back_number"]}}
+```
+
+## Hashimoto {#hashimoto}
+
+원래 Hashimoto의 아이디어는 블록체인을 데이터세트로 사용하여, 블록체인에서 N개의 인덱스를 선택하고, 해당 인덱스에서 트랜잭션을 수집하고, 이 데이터의 XOR을 수행한 다음 결과의 해시를 반환하는 계산을 수행하는 것입니다. 일관성을 위해 Python으로 번역된 Thaddeus Dryja의 원본 알고리즘은 다음과 같습니다.
+
+```python
+def orig_hashimoto(prev_hash, merkle_root, list_of_transactions, nonce):
+ hash_output_A = sha256(prev_hash + merkle_root + nonce)
+ txid_mix = 0
+ for i in range(64):
+ shifted_A = hash_output_A >> i
+ transaction = shifted_A % len(list_of_transactions)
+ txid_mix ^= list_of_transactions[transaction] << i
+ return txid_mix ^ (nonce << 192)
+```
+
+불행히도 Hashimoto는 RAM 하드로 간주되지만 256비트 산술에 의존하므로 상당한 계산 오버헤드가 발생합니다. 그러나 Dagger-Hashimoto는 이 문제를 해결하기 위해 데이터세트를 인덱싱할 때 최하위 64비트만 사용합니다.
+
+```python
+def hashimoto(dag, dagsize, params, header, nonce):
+ m = dagsize / 2
+ mix = sha3(encode_int(nonce) + header)
+ for _ in range(params["accesses"]):
+ mix ^= dag[m + (mix % 2**64) % m]
+ return dbl_sha3(mix)
+```
+
+이중 SHA3를 사용하면 제로 데이터, 거의 즉각적인 사전 검증이 가능하며, 올바른 중간값이 제공되었는지 여부만 확인합니다. 이 외부 작업 증명(PoW) 레이어는 ASIC 친화적이며 상당히 약하지만, 즉시 거부되지 않는 블록을 생성하기 위해 소량의 작업을 수행해야 하므로 DDoS 공격을 더욱 어렵게 만듭니다. 다음은 라이트 클라이언트 버전입니다.
+
+```python
+def quick_hashimoto(seed, dagsize, params, header, nonce):
+ m = dagsize // 2
+ mix = sha3(nonce + header)
+ for _ in range(params["accesses"]):
+ mix ^= quick_calc(params, seed, m + (mix % 2**64) % m)
+ return dbl_sha3(mix)
+```
+
+## 채굴 및 검증 {#mining-and-verifying}
+
+이제 이 모든 것을 채굴 알고리즘으로 종합해 보겠습니다.
+
+```python
+def mine(daggerset, params, block):
+ from random import randint
+ nonce = randint(0, 2**64)
+ while 1:
+ result = hashimoto(daggerset, get_dagsize(params, block),
+ params, decode_int(block.prevhash), nonce)
+ if result * params["diff"] < 2**256:
+ break
+ nonce += 1
+ if nonce >= 2**64:
+ nonce = 0
+ return nonce
+```
+
+다음은 검증 알고리즘입니다.
+
+```python
+def verify(daggerset, params, block, nonce):
+ result = hashimoto(daggerset, get_dagsize(params, block),
+ params, decode_int(block.prevhash), nonce)
+ return result * params["diff"] < 2**256
+```
+
+라이트 클라이언트 친화적인 검증:
+
+```python
+def light_verify(params, header, nonce):
+ seedset = get_seedset(params, block)
+ result = quick_hashimoto(seedset["front_hash"], get_dagsize(params, block),
+ params, decode_int(block.prevhash), nonce)
+ return result * params["diff"] < 2**256
+```
+
+또한 Dagger-Hashimoto는 블록 헤더에 추가 요구 사항을 부과합니다.
+
+- 2계층 검증이 작동하려면 블록 헤더에 Nonce와 pre-sha3 중간값이 모두 있어야 합니다.
+- 블록 헤더 어딘가에 현재 시드셋의 sha3을 저장해야 합니다.
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 부록 {#appendix}
+
+위에서 언급했듯이 DAG 생성에 사용되는 RNG는 수론의 몇 가지 결과에 의존합니다. 첫째, `picker` 변수의 기초가 되는 Lehmer RNG가 넓은 주기를 가짐을 보장합니다. 둘째, `x ∈ [2,P-2]`에서 시작하는 경우 `pow(x,3,P)`가 `x`를 `1` 또는 `P-1`에 매핑하지 않음을 보여줍니다. 마지막으로, `pow(x,3,P)`가 해싱 함수로 취급될 때 충돌률이 낮다는 것을 보여줍니다.
+
+### 레머 난수 생성기 {#lehmer-random-number}
+
+`produce_dag` 함수는 편향되지 않은 난수를 생성할 필요는 없지만, `seed**i % P`가 소수의 값만 취한다는 잠재적인 위협이 있습니다. 이는 패턴을 인식하는 채굴자에게 그렇지 않은 채굴자보다 이점을 제공할 수 있습니다.
+
+이를 피하기 위해 수론의 결과를 이용합니다. [_안전 소수_](https://en.wikipedia.org/wiki/Safe_prime)는 `(P-1)/2`도 소수인 소수 `P`로 정의됩니다. [곱셈 그룹](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n) `ℤ/nℤ`의 멤버 `x`의 위수는 xᵐ mod P ≡ 1
인 최소 `m`으로 정의됩니다.
+이러한 정의가 주어지면 다음과 같습니다.
+
+> 관찰 1. 안전 소수 `P`에 대해 `x`를 곱셈 그룹 `ℤ/Pℤ`의 멤버라고 합시다. 만약 `x mod P ≠ 1 mod P`이고 `x mod P ≠ P-1 mod P`이면, `x`의 위수는 `P-1` 또는 `(P-1)/2`입니다.
+
+_증명_. `P`가 안전 소수이므로 [라그랑주의 정리][lagrange]에 따라 `x`의 위수는 `1`, `2`, `(P-1)/2` 또는 `P-1` 중 하나입니다.
+
+`x`의 위수는 `1`이 될 수 없습니다. 페르마의 소정리에 따르면 다음과 같습니다.
+
+xP-1 mod P ≡ 1
+
+따라서 `x`는 `ℤ/nℤ`의 곱셈 항등원이어야 하며, 이는 유일합니다. 가정에 따라 `x ≠ 1`이라고 가정했으므로 이는 불가능합니다.
+
+`x`의 위수는 `x = P-1`이 아닌 한 `2`가 될 수 없습니다. 이는 `P`가 소수라는 사실에 위배되기 때문입니다.
+
+위의 명제로부터 `(picker * init) % P`를 반복하면 최소 `(P-1)/2`의 주기 길이를 가질 것임을 알 수 있습니다. 이는 우리가 `P`를 2의 거듭제곱에 가까운 안전 소수로 선택했고, `init`이 `[2,2**256+1]` 구간에 있기 때문입니다. `P`의 크기를 고려할 때, 모듈러 지수화에서 주기가 발생할 것으로 예상해서는 안 됩니다.
+
+DAG의 첫 번째 셀(변수 `init`)을 할당할 때, `pow(sha3(seed) + 2, 3, P)`를 계산합니다. 언뜻 보기에 이것은 결과가 `1`도 아니고 `P-1`도 아니라는 것을 보장하지 않습니다. 그러나 `P-1`이 안전 소수이므로, 관찰 1의 따름정리인 다음과 같은 추가적인 보장을 얻을 수 있습니다.
+
+> 관찰 2. 안전 소수 `P`에 대해 `x`를 곱셈 그룹 `ℤ/Pℤ`의 멤버라고 하고, `w`를 자연수라고 합시다. 만약 `x mod P ≠ 1 mod P`이고 `x mod P ≠ P-1 mod P`이며, `w mod P ≠ P-1 mod P`이고 `w mod P ≠ 0 mod P`이면, `xʷ mod P ≠ 1 mod P`이고 `xʷ mod P ≠ P-1 mod P`입니다.
+
+### 해시 함수로서의 모듈러 지수화 {#modular-exponentiation}
+
+특정 `P`와 `w` 값에 대해, `pow(x, w, P)` 함수는 많은 충돌을 가질 수 있습니다. 예를 들어, `pow(x,9,19)`는 `{1,18}` 값만 가집니다.
+
+`P`가 소수라는 점을 감안할 때, 모듈러 지수 해싱 함수에 적합한 `w`는 다음 결과를 사용하여 선택할 수 있습니다.
+
+> 관찰 3. `P`를 소수라고 할 때, `w`와 `P-1`이 서로소인 것은, `ℤ/Pℤ`에 있는 모든 `a`와 `b`에 대해 `aʷ mod P ≡ bʷ mod P`인 것이 `a mod P ≡ b mod P`인 것과 동치 라는 것입니다.
+
+따라서 `P`가 소수이고 `w`가 `P-1`과 서로소일 때, `|{pow(x, w, P) : x ∈ ℤ}| = P`가 성립하며, 이는 해싱 함수가 가능한 최소 충돌률을 가짐을 의미합니다.
+
+우리가 선택한 것처럼 `P`가 안전 소수인 특수한 경우, `P-1`은 1, 2, `(P-1)/2`, `P-1`만을 인수로 가집니다. `P` > 7이므로, 3은 `P-1`과 서로소이며, 따라서 `w=3`은 위 명제를 만족합니다.
+
+## 보다 효율적인 캐시 기반 평가 알고리즘 {#cache-based-evaluation}
+
+```python
+def quick_calc(params, seed, p):
+ cache = produce_dag(params, seed, params["cache_size"])
+ return quick_calc_cached(cache, params, p)
+
+def quick_calc_cached(cache, params, p):
+ P = params["P"]
+ if p < len(cache):
+ return cache[p]
+ else:
+ x = pow(cache[0], p + 1, P)
+ for _ in range(params["k"]):
+ x ^= quick_calc_cached(cache, params, x % p)
+ return pow(x, params["w"], P)
+
+def quick_hashimoto(seed, dagsize, params, header, nonce):
+ cache = produce_dag(params, seed, params["cache_size"])
+ return quick_hashimoto_cached(cache, dagsize, params, header, nonce)
+
+def quick_hashimoto_cached(cache, dagsize, params, header, nonce):
+ m = dagsize // 2
+ mask = 2**64 - 1
+ mix = sha3(encode_int(nonce) + header)
+ for _ in range(params["accesses"]):
+ mix ^= quick_calc_cached(cache, params, m + (mix & mask) % m)
+ return dbl_sha3(mix)
+```
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
new file mode 100644
index 00000000000..726c6954af0
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md
@@ -0,0 +1,1022 @@
+---
+title: Ethash
+description: "이더해시 알고리즘 자세히 살펴보기."
+lang: ko
+---
+
+
+
+
+
+ Ethash는 이더리움의 작업 증명 채굴 알고리즘이었습니다. 이제 작업 증명은 완전히 중단되었으며, 대신 [지분 증명](/developers/docs/consensus-mechanisms/pos/)을 사용하여 이더리움을 보호합니다. [병합](/roadmap/merge/), [지분 증명](/developers/docs/consensus-mechanisms/pos/), [스테이킹](/staking/)에 대해 자세히 알아보세요. 이 페이지는 역사적 참고 자료로만 제공됩니다!
+
+
+
+
+이더해시는 [Dagger-Hashimoto](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto) 알고리즘의 수정된 버전입니다. 이더해시 작업 증명은 [메모리 집약적](https://wikipedia.org/wiki/Memory-hard_function)이며, 이는 이 알고리즘을 ASIC 저항적으로 만든다고 여겨졌습니다. 결국 이더해시 ASIC가 개발되었지만, 작업 증명이 중단될 때까지 GPU 채굴은 여전히 실행 가능한 옵션이었습니다. 이더해시는 이더리움이 아닌 다른 작업 증명 네트워크에서 다른 코인을 채굴하는 데 여전히 사용됩니다.
+
+## 이더해시는 어떻게 작동하나요? {#how-does-ethash-work}
+
+메모리 집약성은 nonce 및 블록 헤더에 따라 고정된 리소스의 하위 집합을 선택해야 하는 작업 증명 알고리즘을 통해 달성됩니다. 이 리소스(크기는 수 기가바이트)를 DAG라고 합니다. DAG는 30,000 블록마다 변경되며, 에폭(약 5.2일)이라고 하는 약 125시간의 기간이며 생성하는 데 시간이 걸립니다. DAG는 블록 높이에만 의존하기 때문에 사전 생성이 가능하지만, 그렇지 않은 경우 클라이언트는 블록을 생성하기 위해 이 프로세스가 끝날 때까지 기다려야 합니다. 클라이언트가 미리 DAG를 생성하여 캐시하지 않으면 각 에폭 전환 시 네트워크에 엄청난 블록 지연이 발생할 수 있습니다. 작업 증명을 검증하기 위해 DAG를 생성할 필요가 없으므로 낮은 CPU와 적은 메모리로도 검증이 가능합니다.
+
+알고리즘이 따르는 일반적인 경로는 다음과 같습니다.
+
+1. 각 블록의 헤더를 해당 지점까지 스캔하여 계산할 수 있는 시드가 존재합니다.
+2. 시드에서 16MB 의사 난수 캐시를 계산할 수 있습니다. 라이트 클라이언트는 캐시를 저장합니다.
+3. 캐시에서 1GB 데이터세트를 생성할 수 있으며, 데이터세트의 각 항목은 캐시의 적은 수의 항목에만 종속된다는 속성이 있습니다. 풀 클라이언트와 채굴자는 데이터세트를 저장합니다. 데이터세트는 시간에 따라 선형적으로 증가합니다.
+4. 채굴에는 데이터세트의 무작위 슬라이스를 가져와 함께 해싱하는 작업이 포함됩니다. 캐시를 사용하여 필요한 데이터세트의 특정 부분을 재생성하여 적은 메모리로 검증할 수 있으므로 캐시만 저장하면 됩니다.
+
+대용량 데이터세트는 30,000 블록마다 한 번씩 업데이트되므로, 채굴자 노력의 대부분은 데이터세트를 변경하는 것이 아니라 읽는 데 사용됩니다.
+
+## 정의 {#definitions}
+
+다음과 같은 정의를 사용합니다.
+
+```
+WORD_BYTES = 4 # 워드의 바이트
+DATASET_BYTES_INIT = 2**30 # 제네시스의 데이터세트 바이트
+DATASET_BYTES_GROWTH = 2**23 # 에폭당 데이터세트 증가량
+CACHE_BYTES_INIT = 2**24 # 제네시스의 캐시 바이트
+CACHE_BYTES_GROWTH = 2**17 # 에폭당 캐시 증가량
+CACHE_MULTIPLIER=1024 # 캐시에 대한 DAG의 크기
+EPOCH_LENGTH = 30000 # 에폭당 블록 수
+MIX_BYTES = 128 # 믹스 너비
+HASH_BYTES = 64 # 해시 길이(바이트)
+DATASET_PARENTS = 256 # 각 데이터세트 요소의 부모 수
+CACHE_ROUNDS = 3 # 캐시 생성 라운드 수
+ACCESSES = 64 # 해시모토 루프의 액세스 수
+```
+
+### 'SHA3'의 사용 {#sha3}
+
+이더리움 개발은 SHA3 표준 개발과 동시에 이루어졌으며,
+표준화 과정에서 최종 해시 알고리즘의 패딩이 늦게 변경되어 이더리움의
+'sha3_256' 및 'sha3_512' 해시는 표준 sha3 해시가 아니라 다른 맥락에서 흔히
+'Keccak-256' 및 'Keccak-512'라고 불리는 변형입니다. 예를 들어 [여기](https://eips.ethereum.org/EIPS/eip-1803), [여기](http://ethereum.stackexchange.com/questions/550/which-cryptographic-hash-function-does-ethereum-use), 또는 [여기](http://bitcoin.stackexchange.com/questions/42055/what-is-the-approach-to-calculate-an-ethereum-address-from-a-256-bit-private-key/42057#42057)의 논의를 참조하세요.
+
+아래 알고리즘 설명에서 'sha3' 해시가 언급되므로 이 점을 유념해 주시기 바랍니다.
+
+## 파라미터 {#parameters}
+
+이더해시의 캐시 및 데이터세트 파라미터는 블록 번호에 따라 달라집니다. 캐시 크기와 데이터세트 크기는 모두 선형적으로 증가하지만, 주기적인 동작으로 이어지는 우발적인 규칙성의 위험을 줄이기 위해 선형적으로 증가하는 임계값보다 낮은 가장 높은 소수를 항상 사용합니다.
+
+```python
+def get_cache_size(block_number):
+ sz = CACHE_BYTES_INIT + CACHE_BYTES_GROWTH * (block_number // EPOCH_LENGTH)
+ sz -= HASH_BYTES
+ while not isprime(sz / HASH_BYTES):
+ sz -= 2 * HASH_BYTES
+ return sz
+
+def get_full_size(block_number):
+ sz = DATASET_BYTES_INIT + DATASET_BYTES_GROWTH * (block_number // EPOCH_LENGTH)
+ sz -= MIX_BYTES
+ while not isprime(sz / MIX_BYTES):
+ sz -= 2 * MIX_BYTES
+ return sz
+```
+
+데이터세트 및 캐시 크기 값의 표는 부록에 제공됩니다.
+
+## 캐시 생성 {#cache-generation}
+
+이제 캐시를 생성하는 함수를 지정합니다.
+
+```python
+def mkcache(cache_size, seed):
+ n = cache_size // HASH_BYTES
+
+ # 초기 데이터세트를 순차적으로 생성
+ o = [sha3_512(seed)]
+ for i in range(1, n):
+ o.append(sha3_512(o[-1]))
+
+ # randmemohash의 낮은 라운드 버전을 사용
+ for _ in range(CACHE_ROUNDS):
+ for i in range(n):
+ v = o[i][0] % n
+ o[i] = sha3_512(map(xor, o[(i-1+n) % n], o[v]))
+
+ return o
+```
+
+캐시 생성 과정은 먼저 32MB의 메모리를 순차적으로 채운 다음, [_엄격한 메모리 집약적 해싱 함수(Strict Memory Hard Hashing Functions)_ (2014)](http://www.hashcash.org/papers/memohash.pdf)에서 Sergio Demian Lerner의 _RandMemoHash_ 알고리즘을 두 번 통과시키는 것을 포함합니다. 출력은 524288개의 64바이트 값 집합입니다.
+
+## 데이터 집계 함수 {#date-aggregation-function}
+
+경우에 따라 XOR의 비결합적 대체물로 [FNV 해시](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function)에서 영감을 받은 알고리즘을 사용합니다. 소수에 차례로 1바이트(옥텟)를 곱하는 FNV-1 사양과 달리, 전체 32비트 입력에 소수를 곱한다는 점에 유의하세요.
+
+```python
+FNV_PRIME = 0x01000193
+
+def fnv(v1, v2):
+ return ((v1 * FNV_PRIME) ^ v2) % 2**32
+```
+
+옐로페이퍼에서는 fnv를 v1\*(FNV_PRIME ^ v2)로 지정하고 있지만, 현재 모든 구현에서는 일관되게 위의 정의를 사용하고 있습니다.
+
+## 전체 데이터세트 계산 {#full-dataset-calculation}
+
+전체 1GB 데이터세트의 각 64바이트 항목은 다음과 같이 계산됩니다.
+
+```python
+def calc_dataset_item(cache, i):
+ n = len(cache)
+ r = HASH_BYTES // WORD_BYTES
+ # 믹스 초기화
+ mix = copy.copy(cache[i % n])
+ mix[0] ^= i
+ mix = sha3_512(mix)
+ # i를 기반으로 하는 많은 무작위 캐시 노드로 fnv 수행
+ for j in range(DATASET_PARENTS):
+ cache_index = fnv(i ^ j, mix[j % r])
+ mix = map(fnv, mix, cache[cache_index % n])
+ return sha3_512(mix)
+```
+
+기본적으로 256개의 의사 난수적으로 선택된 캐시 노드의 데이터를 결합하고 이를 해싱하여 데이터세트 노드를 계산합니다. 그런 다음 전체 데이터세트는 다음에 의해 생성됩니다.
+
+```python
+def calc_dataset(full_size, cache):
+ return [calc_dataset_item(cache, i) for i in range(full_size // HASH_BYTES)]
+```
+
+## 메인 루프 {#main-loop}
+
+이제 특정 헤더와 nonce에 대한 최종 값을 생성하기 위해 전체 데이터세트의 데이터를 집계하는 메인 '해시모토'와 유사한 루프를 지정합니다. 아래 코드에서 `header`는 **mixHash** 및 **nonce** 필드를 제외한 _잘린_ 블록 헤더, 즉 RLP 표현의 SHA3-256 해시를 나타냅니다. `nonce`는 빅 엔디안 순서의 64비트 부호 없는 정수의 8바이트입니다. 따라서 `nonce[::-1]`는 해당 값의 8바이트 리틀 엔디안 표현입니다.
+
+```python
+def hashimoto(header, nonce, full_size, dataset_lookup):
+ n = full_size / HASH_BYTES
+ w = MIX_BYTES // WORD_BYTES
+ mixhashes = MIX_BYTES / HASH_BYTES
+ # 헤더+nonce를 64바이트 시드로 결합
+ s = sha3_512(header + nonce[::-1])
+ # 복제된 s로 믹스 시작
+ mix = []
+ for _ in range(MIX_BYTES / HASH_BYTES):
+ mix.extend(s)
+ # 무작위 데이터세트 노드에서 믹스
+ for i in range(ACCESSES):
+ p = fnv(i ^ s[0], mix[i % w]) % (n // mixhashes) * mixhashes
+ newdata = []
+ for j in range(MIX_BYTES / HASH_BYTES):
+ newdata.extend(dataset_lookup(p + j))
+ mix = map(fnv, mix, newdata)
+ # 믹스 압축
+ cmix = []
+ for i in range(0, len(mix), 4):
+ cmix.append(fnv(fnv(fnv(mix[i], mix[i+1]), mix[i+2]), mix[i+3]))
+ return {
+ "mix digest": serialize_hash(cmix),
+ "result": serialize_hash(sha3_256(s+cmix))
+ }
+
+def hashimoto_light(full_size, cache, header, nonce):
+ return hashimoto(header, nonce, full_size, lambda x: calc_dataset_item(cache, x))
+
+def hashimoto_full(full_size, dataset, header, nonce):
+ return hashimoto(header, nonce, full_size, lambda x: dataset[x])
+```
+
+기본적으로 128바이트 너비의 '믹스'를 유지하고 전체 데이터세트에서 128바이트를 반복적으로 순차적으로 가져와 `fnv` 함수를 사용하여 믹스와 결합합니다. 128바이트의 순차적 액세스는 알고리즘의 각 라운드가 항상 RAM에서 전체 페이지를 가져오도록 하여 이론적으로 ASIC이 피할 수 있는 변환 색인 버퍼(TLB) 누락을 최소화하는 데 사용됩니다.
+
+이 알고리즘의 출력이 원하는 대상보다 낮으면 nonce는 유효합니다. 마지막에 `sha3_256`을 추가로 적용하면 최소한의 작업이 수행되었음을 증명하기 위해 제공할 수 있는 중간 nonce가 존재하도록 보장합니다. 이 빠른 외부 PoW 검증은 안티-DDoS 목적으로 사용될 수 있습니다. 또한 결과가 편향되지 않은 256비트 숫자라는 통계적 보증을 제공하는 역할도 합니다.
+
+## 채굴 {#mining}
+
+채굴 알고리즘은 다음과 같이 정의됩니다.
+
+```python
+def mine(full_size, dataset, header, difficulty):
+ # 동일한 숫자의 해시와 비교하기 위해 대상에 0을 채움
+ target = zpad(encode_int(2**256 // difficulty), 64)[::-1]
+ from random import randint
+ nonce = randint(0, 2**64)
+ while hashimoto_full(full_size, dataset, header, nonce) > target:
+ nonce = (nonce + 1) % 2**64
+ return nonce
+```
+
+## 시드 해시 정의 {#seed-hash}
+
+주어진 블록 위에 채굴하는 데 사용될 시드 해시를 계산하기 위해 다음 알고리즘을 사용합니다.
+
+```python
+ def get_seedhash(block):
+ s = '\x00' * 32
+ for i in range(block.number // EPOCH_LENGTH):
+ s = serialize_hash(sha3_256(s))
+ return s
+```
+
+원활한 채굴 및 검증을 위해 별도의 스레드에서 향후 시드해시 및 데이터세트를 미리 계산하는 것을 권장합니다.
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 부록 {#appendix}
+
+위의 파이썬 사양을 코드로 실행하는 데 관심이 있다면 다음 코드를 앞에 추가해야 합니다.
+
+```python
+import sha3, copy
+
+# 리틀 엔디안 비트 순서를 가정합니다 (인텔 아키텍처와 동일)
+def decode_int(s):
+ return int(s[::-1].encode('hex'), 16) if s else 0
+
+def encode_int(s):
+ a = "%x" % s
+ return '' if s == 0 else ('0' * (len(a) % 2) + a).decode('hex')[::-1]
+
+def zpad(s, length):
+ return s + '\x00' * max(0, length - len(s))
+
+def serialize_hash(h):
+ return ''.join([zpad(encode_int(x), 4) for x in h])
+
+def deserialize_hash(h):
+ return [decode_int(h[i:i+WORD_BYTES]) for i in range(0, len(h), WORD_BYTES)]
+
+def hash_words(h, sz, x):
+ if isinstance(x, list):
+ x = serialize_hash(x)
+ y = h(x)
+ return deserialize_hash(y)
+
+def serialize_cache(ds):
+ return ''.join([serialize_hash(h) for h in ds])
+
+serialize_dataset = serialize_cache
+
+# sha3 해시 함수, 64바이트 출력
+def sha3_512(x):
+ return hash_words(lambda v: sha3.sha3_512(v).digest(), 64, x)
+
+def sha3_256(x):
+ return hash_words(lambda v: sha3.sha3_256(v).digest(), 32, x)
+
+def xor(a, b):
+ return a ^ b
+
+def isprime(x):
+ for i in range(2, int(x**0.5)):
+ if x % i == 0:
+ return False
+ return True
+```
+
+### 데이터 크기 {#data-sizes}
+
+다음 조회 테이블은 약 2048개의 표로 정리된 데이터 크기 및 캐시 크기의 에폭을 제공합니다.
+
+```python
+def get_datasize(block_number):
+ return data_sizes[block_number // EPOCH_LENGTH]
+
+def get_cachesize(block_number):
+ return cache_sizes[block_number // EPOCH_LENGTH]
+
+data_sizes = [
+1073739904, 1082130304, 1090514816, 1098906752, 1107293056,
+1115684224, 1124070016, 1132461952, 1140849536, 1149232768,
+1157627776, 1166013824, 1174404736, 1182786944, 1191180416,
+1199568512, 1207958912, 1216345216, 1224732032, 1233124736,
+1241513344, 1249902464, 1258290304, 1266673792, 1275067264,
+1283453312, 1291844992, 1300234112, 1308619904, 1317010048,
+1325397376, 1333787776, 1342176128, 1350561664, 1358954368,
+1367339392, 1375731584, 1384118144, 1392507008, 1400897408,
+1409284736, 1417673344, 1426062464, 1434451072, 1442839168,
+1451229056, 1459615616, 1468006016, 1476394112, 1484782976,
+1493171584, 1501559168, 1509948032, 1518337664, 1526726528,
+1535114624, 1543503488, 1551892096, 1560278656, 1568669056,
+1577056384, 1585446272, 1593831296, 1602219392, 1610610304,
+1619000192, 1627386752, 1635773824, 1644164224, 1652555648,
+1660943488, 1669332608, 1677721216, 1686109312, 1694497664,
+1702886272, 1711274624, 1719661184, 1728047744, 1736434816,
+1744829056, 1753218944, 1761606272, 1769995904, 1778382464,
+1786772864, 1795157888, 1803550592, 1811937664, 1820327552,
+1828711552, 1837102976, 1845488768, 1853879936, 1862269312,
+1870656896, 1879048064, 1887431552, 1895825024, 1904212096,
+1912601216, 1920988544, 1929379456, 1937765504, 1946156672,
+1954543232, 1962932096, 1971321728, 1979707264, 1988093056,
+1996487552, 2004874624, 2013262208, 2021653888, 2030039936,
+2038430848, 2046819968, 2055208576, 2063596672, 2071981952,
+2080373632, 2088762752, 2097149056, 2105539712, 2113928576,
+2122315136, 2130700672, 2139092608, 2147483264, 2155872128,
+2164257664, 2172642176, 2181035392, 2189426048, 2197814912,
+2206203008, 2214587264, 2222979712, 2231367808, 2239758208,
+2248145024, 2256527744, 2264922752, 2273312128, 2281701248,
+2290086272, 2298476672, 2306867072, 2315251072, 2323639168,
+2332032128, 2340420224, 2348808064, 2357196416, 2365580416,
+2373966976, 2382363008, 2390748544, 2399139968, 2407530368,
+2415918976, 2424307328, 2432695424, 2441084288, 2449472384,
+2457861248, 2466247808, 2474637184, 2483026816, 2491414144,
+2499803776, 2508191872, 2516582272, 2524970368, 2533359232,
+2541743488, 2550134144, 2558525056, 2566913408, 2575301504,
+2583686528, 2592073856, 2600467328, 2608856192, 2617240448,
+2625631616, 2634022016, 2642407552, 2650796416, 2659188352,
+2667574912, 2675965312, 2684352896, 2692738688, 2701130624,
+2709518464, 2717907328, 2726293376, 2734685056, 2743073152,
+2751462016, 2759851648, 2768232832, 2776625536, 2785017728,
+2793401984, 2801794432, 2810182016, 2818571648, 2826959488,
+2835349376, 2843734144, 2852121472, 2860514432, 2868900992,
+2877286784, 2885676928, 2894069632, 2902451584, 2910843008,
+2919234688, 2927622784, 2936011648, 2944400768, 2952789376,
+2961177728, 2969565568, 2977951616, 2986338944, 2994731392,
+3003120256, 3011508352, 3019895936, 3028287104, 3036675968,
+3045063808, 3053452928, 3061837696, 3070228352, 3078615424,
+3087003776, 3095394944, 3103782272, 3112173184, 3120562048,
+3128944768, 3137339264, 3145725056, 3154109312, 3162505088,
+3170893184, 3179280256, 3187669376, 3196056704, 3204445568,
+3212836736, 3221224064, 3229612928, 3238002304, 3246391168,
+3254778496, 3263165824, 3271556224, 3279944576, 3288332416,
+3296719232, 3305110912, 3313500032, 3321887104, 3330273152,
+3338658944, 3347053184, 3355440512, 3363827072, 3372220288,
+3380608384, 3388997504, 3397384576, 3405774208, 3414163072,
+3422551936, 3430937984, 3439328384, 3447714176, 3456104576,
+3464493952, 3472883584, 3481268864, 3489655168, 3498048896,
+3506434432, 3514826368, 3523213952, 3531603584, 3539987072,
+3548380288, 3556763264, 3565157248, 3573545344, 3581934464,
+3590324096, 3598712704, 3607098752, 3615488384, 3623877248,
+3632265856, 3640646528, 3649043584, 3657430144, 3665821568,
+3674207872, 3682597504, 3690984832, 3699367808, 3707764352,
+3716152448, 3724541056, 3732925568, 3741318016, 3749706368,
+3758091136, 3766481536, 3774872704, 3783260032, 3791650432,
+3800036224, 3808427648, 3816815488, 3825204608, 3833592704,
+3841981568, 3850370432, 3858755968, 3867147904, 3875536256,
+3883920512, 3892313728, 3900702592, 3909087872, 3917478784,
+3925868416, 3934256512, 3942645376, 3951032192, 3959422336,
+3967809152, 3976200064, 3984588416, 3992974976, 4001363584,
+4009751168, 4018141312, 4026530432, 4034911616, 4043308928,
+4051695488, 4060084352, 4068472448, 4076862848, 4085249408,
+4093640576, 4102028416, 4110413696, 4118805632, 4127194496,
+4135583104, 4143971968, 4152360832, 4160746112, 4169135744,
+4177525888, 4185912704, 4194303616, 4202691968, 4211076736,
+4219463552, 4227855488, 4236246656, 4244633728, 4253022848,
+4261412224, 4269799808, 4278184832, 4286578048, 4294962304,
+4303349632, 4311743104, 4320130432, 4328521088, 4336909184,
+4345295488, 4353687424, 4362073472, 4370458496, 4378852736,
+4387238528, 4395630208, 4404019072, 4412407424, 4420790656,
+4429182848, 4437571456, 4445962112, 4454344064, 4462738048,
+4471119232, 4479516544, 4487904128, 4496289664, 4504682368,
+4513068416, 4521459584, 4529846144, 4538232704, 4546619776,
+4555010176, 4563402112, 4571790208, 4580174464, 4588567936,
+4596957056, 4605344896, 4613734016, 4622119808, 4630511488,
+4638898816, 4647287936, 4655675264, 4664065664, 4672451968,
+4680842624, 4689231488, 4697620352, 4706007424, 4714397056,
+4722786176, 4731173248, 4739562368, 4747951744, 4756340608,
+4764727936, 4773114496, 4781504384, 4789894784, 4798283648,
+4806667648, 4815059584, 4823449472, 4831835776, 4840226176,
+4848612224, 4857003392, 4865391488, 4873780096, 4882169728,
+4890557312, 4898946944, 4907333248, 4915722368, 4924110976,
+4932499328, 4940889728, 4949276032, 4957666432, 4966054784,
+4974438016, 4982831488, 4991221376, 4999607168, 5007998848,
+5016386432, 5024763776, 5033164672, 5041544576, 5049941888,
+5058329728, 5066717056, 5075107456, 5083494272, 5091883904,
+5100273536, 5108662144, 5117048192, 5125436032, 5133827456,
+5142215296, 5150605184, 5158993024, 5167382144, 5175769472,
+5184157568, 5192543872, 5200936064, 5209324928, 5217711232,
+5226102656, 5234490496, 5242877312, 5251263872, 5259654016,
+5268040832, 5276434304, 5284819328, 5293209728, 5301598592,
+5309986688, 5318374784, 5326764416, 5335151488, 5343542144,
+5351929472, 5360319872, 5368706944, 5377096576, 5385484928,
+5393871232, 5402263424, 5410650496, 5419040384, 5427426944,
+5435816576, 5444205952, 5452594816, 5460981376, 5469367936,
+5477760896, 5486148736, 5494536832, 5502925952, 5511315328,
+5519703424, 5528089984, 5536481152, 5544869504, 5553256064,
+5561645696, 5570032768, 5578423936, 5586811264, 5595193216,
+5603585408, 5611972736, 5620366208, 5628750464, 5637143936,
+5645528192, 5653921408, 5662310272, 5670694784, 5679082624,
+5687474048, 5695864448, 5704251008, 5712641408, 5721030272,
+5729416832, 5737806208, 5746194304, 5754583936, 5762969984,
+5771358592, 5779748224, 5788137856, 5796527488, 5804911232,
+5813300608, 5821692544, 5830082176, 5838468992, 5846855552,
+5855247488, 5863636096, 5872024448, 5880411008, 5888799872,
+5897186432, 5905576832, 5913966976, 5922352768, 5930744704,
+5939132288, 5947522432, 5955911296, 5964299392, 5972688256,
+5981074304, 5989465472, 5997851008, 6006241408, 6014627968,
+6023015552, 6031408256, 6039796096, 6048185216, 6056574848,
+6064963456, 6073351808, 6081736064, 6090128768, 6098517632,
+6106906496, 6115289216, 6123680896, 6132070016, 6140459648,
+6148849024, 6157237376, 6165624704, 6174009728, 6182403712,
+6190792064, 6199176064, 6207569792, 6215952256, 6224345216,
+6232732544, 6241124224, 6249510272, 6257899136, 6266287744,
+6274676864, 6283065728, 6291454336, 6299843456, 6308232064,
+6316620928, 6325006208, 6333395584, 6341784704, 6350174848,
+6358562176, 6366951296, 6375337856, 6383729536, 6392119168,
+6400504192, 6408895616, 6417283456, 6425673344, 6434059136,
+6442444672, 6450837376, 6459223424, 6467613056, 6476004224,
+6484393088, 6492781952, 6501170048, 6509555072, 6517947008,
+6526336384, 6534725504, 6543112832, 6551500672, 6559888768,
+6568278656, 6576662912, 6585055616, 6593443456, 6601834112,
+6610219648, 6618610304, 6626999168, 6635385472, 6643777408,
+6652164224, 6660552832, 6668941952, 6677330048, 6685719424,
+6694107776, 6702493568, 6710882176, 6719274112, 6727662976,
+6736052096, 6744437632, 6752825984, 6761213824, 6769604224,
+6777993856, 6786383488, 6794770816, 6803158144, 6811549312,
+6819937664, 6828326528, 6836706176, 6845101696, 6853491328,
+6861880448, 6870269312, 6878655104, 6887046272, 6895433344,
+6903822208, 6912212864, 6920596864, 6928988288, 6937377152,
+6945764992, 6954149248, 6962544256, 6970928768, 6979317376,
+6987709312, 6996093824, 7004487296, 7012875392, 7021258624,
+7029652352, 7038038912, 7046427776, 7054818944, 7063207808,
+7071595136, 7079980928, 7088372608, 7096759424, 7105149824,
+7113536896, 7121928064, 7130315392, 7138699648, 7147092352,
+7155479168, 7163865728, 7172249984, 7180648064, 7189036672,
+7197424768, 7205810816, 7214196608, 7222589824, 7230975104,
+7239367552, 7247755904, 7256145536, 7264533376, 7272921472,
+7281308032, 7289694848, 7298088832, 7306471808, 7314864512,
+7323253888, 7331643008, 7340029568, 7348419712, 7356808832,
+7365196672, 7373585792, 7381973888, 7390362752, 7398750592,
+7407138944, 7415528576, 7423915648, 7432302208, 7440690304,
+7449080192, 7457472128, 7465860992, 7474249088, 7482635648,
+7491023744, 7499412608, 7507803008, 7516192384, 7524579968,
+7532967296, 7541358464, 7549745792, 7558134656, 7566524032,
+7574912896, 7583300992, 7591690112, 7600075136, 7608466816,
+7616854912, 7625244544, 7633629824, 7642020992, 7650410368,
+7658794112, 7667187328, 7675574912, 7683961984, 7692349568,
+7700739712, 7709130368, 7717519232, 7725905536, 7734295424,
+7742683264, 7751069056, 7759457408, 7767849088, 7776238208,
+7784626816, 7793014912, 7801405312, 7809792128, 7818179968,
+7826571136, 7834957184, 7843347328, 7851732352, 7860124544,
+7868512384, 7876902016, 7885287808, 7893679744, 7902067072,
+7910455936, 7918844288, 7927230848, 7935622784, 7944009344,
+7952400256, 7960786048, 7969176704, 7977565312, 7985953408,
+7994339968, 8002730368, 8011119488, 8019508096, 8027896192,
+8036285056, 8044674688, 8053062272, 8061448832, 8069838464,
+8078227328, 8086616704, 8095006592, 8103393664, 8111783552,
+8120171392, 8128560256, 8136949376, 8145336704, 8153726848,
+8162114944, 8170503296, 8178891904, 8187280768, 8195669632,
+8204058496, 8212444544, 8220834176, 8229222272, 8237612672,
+8246000768, 8254389376, 8262775168, 8271167104, 8279553664,
+8287944064, 8296333184, 8304715136, 8313108352, 8321497984,
+8329885568, 8338274432, 8346663296, 8355052928, 8363441536,
+8371828352, 8380217984, 8388606592, 8396996224, 8405384576,
+8413772672, 8422161536, 8430549376, 8438939008, 8447326592,
+8455715456, 8464104832, 8472492928, 8480882048, 8489270656,
+8497659776, 8506045312, 8514434944, 8522823808, 8531208832,
+8539602304, 8547990656, 8556378752, 8564768384, 8573154176,
+8581542784, 8589933952, 8598322816, 8606705024, 8615099264,
+8623487872, 8631876992, 8640264064, 8648653952, 8657040256,
+8665430656, 8673820544, 8682209152, 8690592128, 8698977152,
+8707374464, 8715763328, 8724151424, 8732540032, 8740928384,
+8749315712, 8757704576, 8766089344, 8774480768, 8782871936,
+8791260032, 8799645824, 8808034432, 8816426368, 8824812928,
+8833199488, 8841591424, 8849976448, 8858366336, 8866757248,
+8875147136, 8883532928, 8891923328, 8900306816, 8908700288,
+8917088384, 8925478784, 8933867392, 8942250368, 8950644608,
+8959032704, 8967420544, 8975809664, 8984197504, 8992584064,
+9000976256, 9009362048, 9017752448, 9026141312, 9034530688,
+9042917504, 9051307904, 9059694208, 9068084864, 9076471424,
+9084861824, 9093250688, 9101638528, 9110027648, 9118416512,
+9126803584, 9135188096, 9143581312, 9151969664, 9160356224,
+9168747136, 9177134464, 9185525632, 9193910144, 9202302848,
+9210690688, 9219079552, 9227465344, 9235854464, 9244244864,
+9252633472, 9261021824, 9269411456, 9277799296, 9286188928,
+9294574208, 9302965888, 9311351936, 9319740032, 9328131968,
+9336516736, 9344907392, 9353296768, 9361685888, 9370074752,
+9378463616, 9386849408, 9395239808, 9403629184, 9412016512,
+9420405376, 9428795008, 9437181568, 9445570688, 9453960832,
+9462346624, 9470738048, 9479121536, 9487515008, 9495903616,
+9504289664, 9512678528, 9521067904, 9529456256, 9537843584,
+9546233728, 9554621312, 9563011456, 9571398784, 9579788672,
+9588178304, 9596567168, 9604954496, 9613343104, 9621732992,
+9630121856, 9638508416, 9646898816, 9655283584, 9663675776,
+9672061312, 9680449664, 9688840064, 9697230464, 9705617536,
+9714003584, 9722393984, 9730772608, 9739172224, 9747561088,
+9755945344, 9764338816, 9772726144, 9781116544, 9789503872,
+9797892992, 9806282624, 9814670464, 9823056512, 9831439232,
+9839833984, 9848224384, 9856613504, 9865000576, 9873391232,
+9881772416, 9890162816, 9898556288, 9906940544, 9915333248,
+9923721088, 9932108672, 9940496512, 9948888448, 9957276544,
+9965666176, 9974048384, 9982441088, 9990830464, 9999219584,
+10007602816, 10015996544, 10024385152, 10032774016, 10041163648,
+10049548928, 10057940096, 10066329472, 10074717824, 10083105152,
+10091495296, 10099878784, 10108272256, 10116660608, 10125049216,
+10133437312, 10141825664, 10150213504, 10158601088, 10166991232,
+10175378816, 10183766144, 10192157312, 10200545408, 10208935552,
+10217322112, 10225712768, 10234099328, 10242489472, 10250876032,
+10259264896, 10267656064, 10276042624, 10284429184, 10292820352,
+10301209472, 10309598848, 10317987712, 10326375296, 10334763392,
+10343153536, 10351541632, 10359930752, 10368318592, 10376707456,
+10385096576, 10393484672, 10401867136, 10410262144, 10418647424,
+10427039104, 10435425664, 10443810176, 10452203648, 10460589952,
+10468982144, 10477369472, 10485759104, 10494147712, 10502533504,
+10510923392, 10519313536, 10527702656, 10536091264, 10544478592,
+10552867712, 10561255808, 10569642368, 10578032768, 10586423168,
+10594805632, 10603200128, 10611588992, 10619976064, 10628361344,
+10636754048, 10645143424, 10653531776, 10661920384, 10670307968,
+10678696832, 10687086464, 10695475072, 10703863168, 10712246144,
+10720639616, 10729026688, 10737414784, 10745806208, 10754190976,
+10762581376, 10770971264, 10779356288, 10787747456, 10796135552,
+10804525184, 10812915584, 10821301888, 10829692288, 10838078336,
+10846469248, 10854858368, 10863247232, 10871631488, 10880023424,
+10888412032, 10896799616, 10905188992, 10913574016, 10921964672,
+10930352768, 10938742912, 10947132544, 10955518592, 10963909504,
+10972298368, 10980687488, 10989074816, 10997462912, 11005851776,
+11014241152, 11022627712, 11031017344, 11039403904, 11047793024,
+11056184704, 11064570752, 11072960896, 11081343872, 11089737856,
+11098128256, 11106514816, 11114904448, 11123293568, 11131680128,
+11140065152, 11148458368, 11156845696, 11165236864, 11173624192,
+11182013824, 11190402688, 11198790784, 11207179136, 11215568768,
+11223957376, 11232345728, 11240734592, 11249122688, 11257511296,
+11265899648, 11274285952, 11282675584, 11291065472, 11299452544,
+11307842432, 11316231296, 11324616832, 11333009024, 11341395584,
+11349782656, 11358172288, 11366560384, 11374950016, 11383339648,
+11391721856, 11400117376, 11408504192, 11416893568, 11425283456,
+11433671552, 11442061184, 11450444672, 11458837888, 11467226752,
+11475611776, 11484003968, 11492392064, 11500780672, 11509169024,
+11517550976, 11525944448, 11534335616, 11542724224, 11551111808,
+11559500672, 11567890304, 11576277376, 11584667008, 11593056128,
+11601443456, 11609830016, 11618221952, 11626607488, 11634995072,
+11643387776, 11651775104, 11660161664, 11668552576, 11676940928,
+11685330304, 11693718656, 11702106496, 11710496128, 11718882688,
+11727273088, 11735660416, 11744050048, 11752437376, 11760824704,
+11769216128, 11777604736, 11785991296, 11794381952, 11802770048,
+11811157888, 11819548544, 11827932544, 11836324736, 11844713344,
+11853100928, 11861486464, 11869879936, 11878268032, 11886656896,
+11895044992, 11903433088, 11911822976, 11920210816, 11928600448,
+11936987264, 11945375872, 11953761152, 11962151296, 11970543488,
+11978928512, 11987320448, 11995708288, 12004095104, 12012486272,
+12020875136, 12029255552, 12037652096, 12046039168, 12054429568,
+12062813824, 12071206528, 12079594624, 12087983744, 12096371072,
+12104759936, 12113147264, 12121534592, 12129924992, 12138314624,
+12146703232, 12155091584, 12163481216, 12171864704, 12180255872,
+12188643968, 12197034112, 12205424512, 12213811328, 12222199424,
+12230590336, 12238977664, 12247365248, 12255755392, 12264143488,
+12272531584, 12280920448, 12289309568, 12297694592, 12306086528,
+12314475392, 12322865024, 12331253632, 12339640448, 12348029312,
+12356418944, 12364805248, 12373196672, 12381580928, 12389969024,
+12398357632, 12406750592, 12415138432, 12423527552, 12431916416,
+12440304512, 12448692352, 12457081216, 12465467776, 12473859968,
+12482245504, 12490636672, 12499025536, 12507411584, 12515801728,
+12524190592, 12532577152, 12540966272, 12549354368, 12557743232,
+12566129536, 12574523264, 12582911872, 12591299456, 12599688064,
+12608074624, 12616463488, 12624845696, 12633239936, 12641631616,
+12650019968, 12658407296, 12666795136, 12675183232, 12683574656,
+12691960192, 12700350592, 12708740224, 12717128576, 12725515904,
+12733906816, 12742295168, 12750680192, 12759071872, 12767460736,
+12775848832, 12784236928, 12792626816, 12801014656, 12809404288,
+12817789312, 12826181504, 12834568832, 12842954624, 12851345792,
+12859732352, 12868122496, 12876512128, 12884901248, 12893289088,
+12901672832, 12910067584, 12918455168, 12926842496, 12935232896,
+12943620736, 12952009856, 12960396928, 12968786816, 12977176192,
+12985563776, 12993951104, 13002341504, 13010730368, 13019115392,
+13027506304, 13035895168, 13044272512, 13052673152, 13061062528,
+13069446272, 13077838976, 13086227072, 13094613632, 13103000192,
+13111393664, 13119782528, 13128157568, 13136559232, 13144945024,
+13153329536, 13161724288, 13170111872, 13178502784, 13186884736,
+13195279744, 13203667072, 13212057472, 13220445824, 13228832128,
+13237221248, 13245610624, 13254000512, 13262388352, 13270777472,
+13279166336, 13287553408, 13295943296, 13304331904, 13312719488,
+13321108096, 13329494656, 13337885824, 13346274944, 13354663808,
+13363051136, 13371439232, 13379825024, 13388210816, 13396605056,
+13404995456, 13413380224, 13421771392, 13430159744, 13438546048,
+13446937216, 13455326848, 13463708288, 13472103808, 13480492672,
+13488875648, 13497269888, 13505657728, 13514045312, 13522435712,
+13530824576, 13539210112, 13547599232, 13555989376, 13564379008,
+13572766336, 13581154432, 13589544832, 13597932928, 13606320512,
+13614710656, 13623097472, 13631477632, 13639874944, 13648264064,
+13656652928, 13665041792, 13673430656, 13681818496, 13690207616,
+13698595712, 13706982272, 13715373184, 13723762048, 13732150144,
+13740536704, 13748926592, 13757316224, 13765700992, 13774090112,
+13782477952, 13790869376, 13799259008, 13807647872, 13816036736,
+13824425344, 13832814208, 13841202304, 13849591424, 13857978752,
+13866368896, 13874754688, 13883145344, 13891533184, 13899919232,
+13908311168, 13916692096, 13925085056, 13933473152, 13941866368,
+13950253696, 13958643584, 13967032192, 13975417216, 13983807616,
+13992197504, 14000582272, 14008973696, 14017363072, 14025752192,
+14034137984, 14042528384, 14050918016, 14059301504, 14067691648,
+14076083584, 14084470144, 14092852352, 14101249664, 14109635968,
+14118024832, 14126407552, 14134804352, 14143188608, 14151577984,
+14159968384, 14168357248, 14176741504, 14185127296, 14193521024,
+14201911424, 14210301824, 14218685056, 14227067264, 14235467392,
+14243855488, 14252243072, 14260630144, 14269021568, 14277409408,
+14285799296, 14294187904, 14302571392, 14310961792, 14319353728,
+14327738752, 14336130944, 14344518784, 14352906368, 14361296512,
+14369685376, 14378071424, 14386462592, 14394848128, 14403230848,
+14411627392, 14420013952, 14428402304, 14436793472, 14445181568,
+14453569664, 14461959808, 14470347904, 14478737024, 14487122816,
+14495511424, 14503901824, 14512291712, 14520677504, 14529064832,
+14537456768, 14545845632, 14554234496, 14562618496, 14571011456,
+14579398784, 14587789184, 14596172672, 14604564608, 14612953984,
+14621341312, 14629724288, 14638120832, 14646503296, 14654897536,
+14663284864, 14671675264, 14680061056, 14688447616, 14696835968,
+14705228416, 14713616768, 14722003328, 14730392192, 14738784128,
+14747172736, 14755561088, 14763947648, 14772336512, 14780725376,
+14789110144, 14797499776, 14805892736, 14814276992, 14822670208,
+14831056256, 14839444352, 14847836032, 14856222848, 14864612992,
+14872997504, 14881388672, 14889775744, 14898165376, 14906553472,
+14914944896, 14923329664, 14931721856, 14940109696, 14948497024,
+14956887424, 14965276544, 14973663616, 14982053248, 14990439808,
+14998830976, 15007216768, 15015605888, 15023995264, 15032385152,
+15040768384, 15049154944, 15057549184, 15065939072, 15074328448,
+15082715008, 15091104128, 15099493504, 15107879296, 15116269184,
+15124659584, 15133042304, 15141431936, 15149824384, 15158214272,
+15166602368, 15174991232, 15183378304, 15191760512, 15200154496,
+15208542592, 15216931712, 15225323392, 15233708416, 15242098048,
+15250489216, 15258875264, 15267265408, 15275654528, 15284043136,
+15292431488, 15300819584, 15309208192, 15317596544, 15325986176,
+15334374784, 15342763648, 15351151744, 15359540608, 15367929728,
+15376318336, 15384706432, 15393092992, 15401481856, 15409869952,
+15418258816, 15426649984, 15435037568, 15443425664, 15451815296,
+15460203392, 15468589184, 15476979328, 15485369216, 15493755776,
+15502146944, 15510534272, 15518924416, 15527311232, 15535699072,
+15544089472, 15552478336, 15560866688, 15569254528, 15577642624,
+15586031488, 15594419072, 15602809472, 15611199104, 15619586432,
+15627975296, 15636364928, 15644753792, 15653141888, 15661529216,
+15669918848, 15678305152, 15686696576, 15695083136, 15703474048,
+15711861632, 15720251264, 15728636288, 15737027456, 15745417088,
+15753804928, 15762194048, 15770582656, 15778971008, 15787358336,
+15795747712, 15804132224, 15812523392, 15820909696, 15829300096,
+15837691264, 15846071936, 15854466944, 15862855808, 15871244672,
+15879634816, 15888020608, 15896409728, 15904799104, 15913185152,
+15921577088, 15929966464, 15938354816, 15946743424, 15955129472,
+15963519872, 15971907968, 15980296064, 15988684928, 15997073024,
+16005460864, 16013851264, 16022241152, 16030629248, 16039012736,
+16047406976, 16055794816, 16064181376, 16072571264, 16080957824,
+16089346688, 16097737856, 16106125184, 16114514816, 16122904192,
+16131292544, 16139678848, 16148066944, 16156453504, 16164839552,
+16173236096, 16181623424, 16190012032, 16198401152, 16206790528,
+16215177344, 16223567744, 16231956352, 16240344704, 16248731008,
+16257117824, 16265504384, 16273898624, 16282281856, 16290668672,
+16299064192, 16307449216, 16315842176, 16324230016, 16332613504,
+16341006464, 16349394304, 16357783168, 16366172288, 16374561664,
+16382951296, 16391337856, 16399726208, 16408116352, 16416505472,
+16424892032, 16433282176, 16441668224, 16450058624, 16458448768,
+16466836864, 16475224448, 16483613056, 16492001408, 16500391808,
+16508779648, 16517166976, 16525555328, 16533944192, 16542330752,
+16550719616, 16559110528, 16567497088, 16575888512, 16584274816,
+16592665472, 16601051008, 16609442944, 16617832064, 16626218624,
+16634607488, 16642996096, 16651385728, 16659773824, 16668163712,
+16676552576, 16684938112, 16693328768, 16701718144, 16710095488,
+16718492288, 16726883968, 16735272832, 16743661184, 16752049792,
+16760436608, 16768827008, 16777214336, 16785599104, 16793992832,
+16802381696, 16810768768, 16819151744, 16827542656, 16835934848,
+16844323712, 16852711552, 16861101952, 16869489536, 16877876864,
+16886265728, 16894653056, 16903044736, 16911431296, 16919821696,
+16928207488, 16936592768, 16944987776, 16953375616, 16961763968,
+16970152832, 16978540928, 16986929536, 16995319168, 17003704448,
+17012096896, 17020481152, 17028870784, 17037262208, 17045649536,
+17054039936, 17062426496, 17070814336, 17079205504, 17087592064,
+17095978112, 17104369024, 17112759424, 17121147776, 17129536384,
+17137926016, 17146314368, 17154700928, 17163089792, 17171480192,
+17179864192, 17188256896, 17196644992, 17205033856, 17213423488,
+17221811072, 17230198912, 17238588032, 17246976896, 17255360384,
+17263754624, 17272143232, 17280530048, 17288918912, 17297309312,
+17305696384, 17314085504, 17322475136, 17330863744, 17339252096,
+17347640192, 17356026496, 17364413824, 17372796544, 17381190016,
+17389583488, 17397972608, 17406360704, 17414748544, 17423135872,
+17431527296, 17439915904, 17448303232, 17456691584, 17465081728,
+17473468288, 17481857408, 17490247552, 17498635904, 17507022464,
+17515409024, 17523801728, 17532189824, 17540577664, 17548966016,
+17557353344, 17565741184, 17574131584, 17582519168, 17590907008,
+17599296128, 17607687808, 17616076672, 17624455808, 17632852352,
+17641238656, 17649630848, 17658018944, 17666403968, 17674794112,
+17683178368, 17691573376, 17699962496, 17708350592, 17716739968,
+17725126528, 17733517184, 17741898112, 17750293888, 17758673024,
+17767070336, 17775458432, 17783848832, 17792236928, 17800625536,
+17809012352, 17817402752, 17825785984, 17834178944, 17842563968,
+17850955648, 17859344512, 17867732864, 17876119424, 17884511872,
+17892900224, 17901287296, 17909677696, 17918058112, 17926451072,
+17934843776, 17943230848, 17951609216, 17960008576, 17968397696,
+17976784256, 17985175424, 17993564032, 18001952128, 18010339712,
+18018728576, 18027116672, 18035503232, 18043894144, 18052283264,
+18060672128, 18069056384, 18077449856, 18085837184, 18094225792,
+18102613376, 18111004544, 18119388544, 18127781248, 18136170368,
+18144558976, 18152947328, 18161336192, 18169724288, 18178108544,
+18186498944, 18194886784, 18203275648, 18211666048, 18220048768,
+18228444544, 18236833408, 18245220736]
+
+cache_sizes = [
+16776896, 16907456, 17039296, 17170112, 17301056, 17432512, 17563072,
+17693888, 17824192, 17955904, 18087488, 18218176, 18349504, 18481088,
+18611392, 18742336, 18874304, 19004224, 19135936, 19267264, 19398208,
+19529408, 19660096, 19791424, 19922752, 20053952, 20184896, 20315968,
+20446912, 20576576, 20709184, 20840384, 20971072, 21102272, 21233216,
+21364544, 21494848, 21626816, 21757376, 21887552, 22019392, 22151104,
+22281536, 22412224, 22543936, 22675264, 22806464, 22935872, 23068096,
+23198272, 23330752, 23459008, 23592512, 23723968, 23854912, 23986112,
+24116672, 24247616, 24378688, 24509504, 24640832, 24772544, 24903488,
+25034432, 25165376, 25296704, 25427392, 25558592, 25690048, 25820096,
+25951936, 26081728, 26214208, 26345024, 26476096, 26606656, 26737472,
+26869184, 26998208, 27131584, 27262528, 27393728, 27523904, 27655744,
+27786688, 27917888, 28049344, 28179904, 28311488, 28441792, 28573504,
+28700864, 28835648, 28966208, 29096768, 29228608, 29359808, 29490752,
+29621824, 29752256, 29882816, 30014912, 30144448, 30273728, 30406976,
+30538432, 30670784, 30799936, 30932672, 31063744, 31195072, 31325248,
+31456192, 31588288, 31719232, 31850432, 31981504, 32110784, 32243392,
+32372672, 32505664, 32636608, 32767808, 32897344, 33029824, 33160768,
+33289664, 33423296, 33554368, 33683648, 33816512, 33947456, 34076992,
+34208704, 34340032, 34471744, 34600256, 34734016, 34864576, 34993984,
+35127104, 35258176, 35386688, 35518528, 35650624, 35782336, 35910976,
+36044608, 36175808, 36305728, 36436672, 36568384, 36699968, 36830656,
+36961984, 37093312, 37223488, 37355072, 37486528, 37617472, 37747904,
+37879232, 38009792, 38141888, 38272448, 38403392, 38535104, 38660672,
+38795584, 38925632, 39059264, 39190336, 39320768, 39452096, 39581632,
+39713984, 39844928, 39974848, 40107968, 40238144, 40367168, 40500032,
+40631744, 40762816, 40894144, 41023552, 41155904, 41286208, 41418304,
+41547712, 41680448, 41811904, 41942848, 42073792, 42204992, 42334912,
+42467008, 42597824, 42729152, 42860096, 42991552, 43122368, 43253696,
+43382848, 43515712, 43646912, 43777088, 43907648, 44039104, 44170432,
+44302144, 44433344, 44564288, 44694976, 44825152, 44956864, 45088448,
+45219008, 45350464, 45481024, 45612608, 45744064, 45874496, 46006208,
+46136768, 46267712, 46399424, 46529344, 46660672, 46791488, 46923328,
+47053504, 47185856, 47316928, 47447872, 47579072, 47710144, 47839936,
+47971648, 48103232, 48234176, 48365248, 48496192, 48627136, 48757312,
+48889664, 49020736, 49149248, 49283008, 49413824, 49545152, 49675712,
+49807168, 49938368, 50069056, 50200256, 50331584, 50462656, 50593472,
+50724032, 50853952, 50986048, 51117632, 51248576, 51379904, 51510848,
+51641792, 51773248, 51903296, 52035136, 52164032, 52297664, 52427968,
+52557376, 52690112, 52821952, 52952896, 53081536, 53213504, 53344576,
+53475776, 53608384, 53738816, 53870528, 54000832, 54131776, 54263744,
+54394688, 54525248, 54655936, 54787904, 54918592, 55049152, 55181248,
+55312064, 55442752, 55574336, 55705024, 55836224, 55967168, 56097856,
+56228672, 56358592, 56490176, 56621888, 56753728, 56884928, 57015488,
+57146816, 57278272, 57409216, 57540416, 57671104, 57802432, 57933632,
+58064576, 58195264, 58326976, 58457408, 58588864, 58720192, 58849984,
+58981696, 59113024, 59243456, 59375552, 59506624, 59637568, 59768512,
+59897792, 60030016, 60161984, 60293056, 60423872, 60554432, 60683968,
+60817216, 60948032, 61079488, 61209664, 61341376, 61471936, 61602752,
+61733696, 61865792, 61996736, 62127808, 62259136, 62389568, 62520512,
+62651584, 62781632, 62910784, 63045056, 63176128, 63307072, 63438656,
+63569216, 63700928, 63831616, 63960896, 64093888, 64225088, 64355392,
+64486976, 64617664, 64748608, 64879424, 65009216, 65142464, 65273792,
+65402816, 65535424, 65666752, 65797696, 65927744, 66060224, 66191296,
+66321344, 66453056, 66584384, 66715328, 66846656, 66977728, 67108672,
+67239104, 67370432, 67501888, 67631296, 67763776, 67895104, 68026304,
+68157248, 68287936, 68419264, 68548288, 68681408, 68811968, 68942912,
+69074624, 69205568, 69337024, 69467584, 69599168, 69729472, 69861184,
+69989824, 70122944, 70253888, 70385344, 70515904, 70647232, 70778816,
+70907968, 71040832, 71171648, 71303104, 71432512, 71564992, 71695168,
+71826368, 71958464, 72089536, 72219712, 72350144, 72482624, 72613568,
+72744512, 72875584, 73006144, 73138112, 73268672, 73400128, 73530944,
+73662272, 73793344, 73924544, 74055104, 74185792, 74316992, 74448832,
+74579392, 74710976, 74841664, 74972864, 75102784, 75233344, 75364544,
+75497024, 75627584, 75759296, 75890624, 76021696, 76152256, 76283072,
+76414144, 76545856, 76676672, 76806976, 76937792, 77070016, 77200832,
+77331392, 77462464, 77593664, 77725376, 77856448, 77987776, 78118336,
+78249664, 78380992, 78511424, 78642496, 78773056, 78905152, 79033664,
+79166656, 79297472, 79429568, 79560512, 79690816, 79822784, 79953472,
+80084672, 80214208, 80346944, 80477632, 80608576, 80740288, 80870848,
+81002048, 81133504, 81264448, 81395648, 81525952, 81657536, 81786304,
+81919808, 82050112, 82181312, 82311616, 82443968, 82573376, 82705984,
+82835776, 82967744, 83096768, 83230528, 83359552, 83491264, 83622464,
+83753536, 83886016, 84015296, 84147776, 84277184, 84409792, 84540608,
+84672064, 84803008, 84934336, 85065152, 85193792, 85326784, 85458496,
+85589312, 85721024, 85851968, 85982656, 86112448, 86244416, 86370112,
+86506688, 86637632, 86769344, 86900672, 87031744, 87162304, 87293632,
+87424576, 87555392, 87687104, 87816896, 87947968, 88079168, 88211264,
+88341824, 88473152, 88603712, 88735424, 88862912, 88996672, 89128384,
+89259712, 89390272, 89521984, 89652544, 89783872, 89914816, 90045376,
+90177088, 90307904, 90438848, 90569152, 90700096, 90832832, 90963776,
+91093696, 91223744, 91356992, 91486784, 91618496, 91749824, 91880384,
+92012224, 92143552, 92273344, 92405696, 92536768, 92666432, 92798912,
+92926016, 93060544, 93192128, 93322816, 93453632, 93583936, 93715136,
+93845056, 93977792, 94109504, 94240448, 94371776, 94501184, 94632896,
+94764224, 94895552, 95023424, 95158208, 95287744, 95420224, 95550016,
+95681216, 95811904, 95943872, 96075328, 96203584, 96337856, 96468544,
+96599744, 96731072, 96860992, 96992576, 97124288, 97254848, 97385536,
+97517248, 97647808, 97779392, 97910464, 98041408, 98172608, 98303168,
+98434496, 98565568, 98696768, 98827328, 98958784, 99089728, 99220928,
+99352384, 99482816, 99614272, 99745472, 99876416, 100007104,
+100138048, 100267072, 100401088, 100529984, 100662592, 100791872,
+100925248, 101056064, 101187392, 101317952, 101449408, 101580608,
+101711296, 101841728, 101973824, 102104896, 102235712, 102366016,
+102498112, 102628672, 102760384, 102890432, 103021888, 103153472,
+103284032, 103415744, 103545152, 103677248, 103808576, 103939648,
+104070976, 104201792, 104332736, 104462528, 104594752, 104725952,
+104854592, 104988608, 105118912, 105247808, 105381184, 105511232,
+105643072, 105774784, 105903296, 106037056, 106167872, 106298944,
+106429504, 106561472, 106691392, 106822592, 106954304, 107085376,
+107216576, 107346368, 107478464, 107609792, 107739712, 107872192,
+108003136, 108131392, 108265408, 108396224, 108527168, 108657344,
+108789568, 108920384, 109049792, 109182272, 109312576, 109444928,
+109572928, 109706944, 109837888, 109969088, 110099648, 110230976,
+110362432, 110492992, 110624704, 110755264, 110886208, 111017408,
+111148864, 111279296, 111410752, 111541952, 111673024, 111803456,
+111933632, 112066496, 112196416, 112328512, 112457792, 112590784,
+112715968, 112852672, 112983616, 113114944, 113244224, 113376448,
+113505472, 113639104, 113770304, 113901376, 114031552, 114163264,
+114294592, 114425536, 114556864, 114687424, 114818624, 114948544,
+115080512, 115212224, 115343296, 115473472, 115605184, 115736128,
+115867072, 115997248, 116128576, 116260288, 116391488, 116522944,
+116652992, 116784704, 116915648, 117046208, 117178304, 117308608,
+117440192, 117569728, 117701824, 117833024, 117964096, 118094656,
+118225984, 118357312, 118489024, 118617536, 118749632, 118882112,
+119012416, 119144384, 119275328, 119406016, 119537344, 119668672,
+119798464, 119928896, 120061376, 120192832, 120321728, 120454336,
+120584512, 120716608, 120848192, 120979136, 121109056, 121241408,
+121372352, 121502912, 121634752, 121764416, 121895744, 122027072,
+122157632, 122289088, 122421184, 122550592, 122682944, 122813888,
+122945344, 123075776, 123207488, 123338048, 123468736, 123600704,
+123731264, 123861952, 123993664, 124124608, 124256192, 124386368,
+124518208, 124649024, 124778048, 124911296, 125041088, 125173696,
+125303744, 125432896, 125566912, 125696576, 125829056, 125958592,
+126090304, 126221248, 126352832, 126483776, 126615232, 126746432,
+126876608, 127008704, 127139392, 127270336, 127401152, 127532224,
+127663552, 127794752, 127925696, 128055232, 128188096, 128319424,
+128449856, 128581312, 128712256, 128843584, 128973632, 129103808,
+129236288, 129365696, 129498944, 129629888, 129760832, 129892288,
+130023104, 130154048, 130283968, 130416448, 130547008, 130678336,
+130807616, 130939456, 131071552, 131202112, 131331776, 131464384,
+131594048, 131727296, 131858368, 131987392, 132120256, 132250816,
+132382528, 132513728, 132644672, 132774976, 132905792, 133038016,
+133168832, 133299392, 133429312, 133562048, 133692992, 133823296,
+133954624, 134086336, 134217152, 134348608, 134479808, 134607296,
+134741056, 134872384, 135002944, 135134144, 135265472, 135396544,
+135527872, 135659072, 135787712, 135921472, 136052416, 136182848,
+136313792, 136444864, 136576448, 136707904, 136837952, 136970048,
+137099584, 137232064, 137363392, 137494208, 137625536, 137755712,
+137887424, 138018368, 138149824, 138280256, 138411584, 138539584,
+138672832, 138804928, 138936128, 139066688, 139196864, 139328704,
+139460032, 139590208, 139721024, 139852864, 139984576, 140115776,
+140245696, 140376512, 140508352, 140640064, 140769856, 140902336,
+141032768, 141162688, 141294016, 141426496, 141556544, 141687488,
+141819584, 141949888, 142080448, 142212544, 142342336, 142474432,
+142606144, 142736192, 142868288, 142997824, 143129408, 143258944,
+143392448, 143523136, 143653696, 143785024, 143916992, 144045632,
+144177856, 144309184, 144440768, 144570688, 144701888, 144832448,
+144965056, 145096384, 145227584, 145358656, 145489856, 145620928,
+145751488, 145883072, 146011456, 146144704, 146275264, 146407232,
+146538176, 146668736, 146800448, 146931392, 147062336, 147193664,
+147324224, 147455936, 147586624, 147717056, 147848768, 147979456,
+148110784, 148242368, 148373312, 148503232, 148635584, 148766144,
+148897088, 149028416, 149159488, 149290688, 149420224, 149551552,
+149683136, 149814976, 149943616, 150076352, 150208064, 150338624,
+150470464, 150600256, 150732224, 150862784, 150993088, 151125952,
+151254976, 151388096, 151519168, 151649728, 151778752, 151911104,
+152042944, 152174144, 152304704, 152435648, 152567488, 152698816,
+152828992, 152960576, 153091648, 153222976, 153353792, 153484096,
+153616192, 153747008, 153878336, 154008256, 154139968, 154270912,
+154402624, 154533824, 154663616, 154795712, 154926272, 155057984,
+155188928, 155319872, 155450816, 155580608, 155712064, 155843392,
+155971136, 156106688, 156237376, 156367424, 156499264, 156630976,
+156761536, 156892352, 157024064, 157155008, 157284416, 157415872,
+157545536, 157677248, 157810496, 157938112, 158071744, 158203328,
+158334656, 158464832, 158596288, 158727616, 158858048, 158988992,
+159121216, 159252416, 159381568, 159513152, 159645632, 159776192,
+159906496, 160038464, 160169536, 160300352, 160430656, 160563008,
+160693952, 16082208, 160956352, 161086784, 161217344, 161349184,
+161480512, 161611456, 161742272, 161873216, 162002752, 162135872,
+162266432, 162397888, 162529216, 162660032, 162790976, 162922048,
+163052096, 163184576, 163314752, 163446592, 163577408, 163707968,
+163839296, 163969984, 164100928, 164233024, 164364224, 164494912,
+164625856, 164756672, 164887616, 165019072, 165150016, 165280064,
+165412672, 165543104, 165674944, 165805888, 165936832, 166067648,
+166198336, 166330048, 166461248, 166591552, 166722496, 166854208,
+166985408, 167116736, 167246656, 167378368, 167508416, 167641024,
+167771584, 167903168, 168034112, 168164032, 168295744, 168427456,
+168557632, 168688448, 168819136, 168951616, 169082176, 169213504,
+169344832, 169475648, 169605952, 169738048, 169866304, 169999552,
+170131264, 170262464, 170393536, 170524352, 170655424, 170782016,
+170917696, 171048896, 171179072, 171310784, 171439936, 171573184,
+171702976, 171835072, 171966272, 172097216, 172228288, 172359232,
+172489664, 172621376, 172747712, 172883264, 173014208, 173144512,
+173275072, 173407424, 173539136, 173669696, 173800768, 173931712,
+174063424, 174193472, 174325696, 174455744, 174586816, 174718912,
+174849728, 174977728, 175109696, 175242688, 175374272, 175504832,
+175636288, 175765696, 175898432, 176028992, 176159936, 176291264,
+176422592, 176552512, 176684864, 176815424, 176946496, 177076544,
+177209152, 177340096, 177470528, 177600704, 177731648, 177864256,
+177994816, 178126528, 178257472, 178387648, 178518464, 178650176,
+178781888, 178912064, 179044288, 179174848, 179305024, 179436736,
+179568448, 179698496, 179830208, 179960512, 180092608, 180223808,
+180354752, 180485696, 180617152, 180748096, 180877504, 181009984,
+181139264, 181272512, 181402688, 181532608, 181663168, 181795136,
+181926592, 182057536, 182190016, 182320192, 182451904, 182582336,
+182713792, 182843072, 182976064, 183107264, 183237056, 183368384,
+183494848, 183631424, 183762752, 183893824, 184024768, 184154816,
+184286656, 184417984, 184548928, 184680128, 184810816, 184941248,
+185072704, 185203904, 185335616, 185465408, 185596352, 185727296,
+185859904, 185989696, 186121664, 186252992, 186383552, 186514112,
+186645952, 186777152, 186907328, 187037504, 187170112, 187301824,
+187429184, 187562048, 187693504, 187825472, 187957184, 188087104,
+188218304, 188349376, 188481344, 188609728, 188743616, 188874304,
+189005248, 189136448, 189265088, 189396544, 189528128, 189660992,
+189791936, 189923264, 190054208, 190182848, 190315072, 190447424,
+190577984, 190709312, 190840768, 190971328, 191102656, 191233472,
+191364032, 191495872, 191626816, 191758016, 191888192, 192020288,
+192148928, 192282176, 192413504, 192542528, 192674752, 192805952,
+192937792, 193068608, 193198912, 193330496, 193462208, 193592384,
+193723456, 193854272, 193985984, 194116672, 194247232, 194379712,
+194508352, 194641856, 194772544, 194900672, 195035072, 195166016,
+195296704, 195428032, 195558592, 195690304, 195818176, 195952576,
+196083392, 196214336, 196345792, 196476736, 196607552, 196739008,
+196869952, 197000768, 197130688, 197262784, 197394368, 197523904,
+197656384, 197787584, 197916608, 198049472, 198180544, 198310208,
+198442432, 198573632, 198705088, 198834368, 198967232, 199097792,
+199228352, 199360192, 199491392, 199621696, 199751744, 199883968,
+200014016, 200146624, 200276672, 200408128, 200540096, 200671168,
+200801984, 200933312, 201062464, 201194944, 201326144, 201457472,
+201588544, 201719744, 201850816, 201981632, 202111552, 202244032,
+202374464, 202505152, 202636352, 202767808, 202898368, 203030336,
+203159872, 203292608, 203423296, 203553472, 203685824, 203816896,
+203947712, 204078272, 204208192, 204341056, 204472256, 204603328,
+204733888, 204864448, 204996544, 205125568, 205258304, 205388864,
+205517632, 205650112, 205782208, 205913536, 206044736, 206176192,
+206307008, 206434496, 206569024, 206700224, 206831168, 206961856,
+207093056, 207223616, 207355328, 207486784, 207616832, 207749056,
+207879104, 208010048, 208141888, 208273216, 208404032, 208534336,
+208666048, 208796864, 208927424, 209059264, 209189824, 209321792,
+209451584, 209582656, 209715136, 209845568, 209976896, 210106432,
+210239296, 210370112, 210501568, 210630976, 210763712, 210894272,
+211024832, 211156672, 211287616, 211418176, 211549376, 211679296,
+211812032, 211942592, 212074432, 212204864, 212334016, 212467648,
+212597824, 212727616, 212860352, 212991424, 213120832, 213253952,
+213385024, 213515584, 213645632, 213777728, 213909184, 214040128,
+214170688, 214302656, 214433728, 214564544, 214695232, 214826048,
+214956992, 215089088, 215219776, 215350592, 215482304, 215613248,
+215743552, 215874752, 216005312, 216137024, 216267328, 216399296,
+216530752, 216661696, 216790592, 216923968, 217054528, 217183168,
+217316672, 217448128, 217579072, 217709504, 217838912, 217972672,
+218102848, 218233024, 218364736, 218496832, 218627776, 218759104,
+218888896, 219021248, 219151936, 219281728, 219413056, 219545024,
+219675968, 219807296, 219938624, 220069312, 220200128, 220331456,
+220461632, 220592704, 220725184, 220855744, 220987072, 221117888,
+221249216, 221378368, 221510336, 221642048, 221772736, 221904832,
+222031808, 222166976, 222297536, 222428992, 222559936, 222690368,
+222820672, 222953152, 223083968, 223213376, 223345984, 223476928,
+223608512, 223738688, 223869376, 224001472, 224132672, 224262848,
+224394944, 224524864, 224657344, 224788288, 224919488, 225050432,
+225181504, 225312704, 225443776, 225574592, 225704768, 225834176,
+225966784, 226097216, 226229824, 226360384, 226491712, 226623424,
+226754368, 226885312, 227015104, 227147456, 227278528, 227409472,
+227539904, 227669696, 227802944, 227932352, 228065216, 228196288,
+228326464, 228457792, 228588736, 228720064, 228850112, 228981056,
+229113152, 229243328, 229375936, 229505344, 229636928, 229769152,
+229894976, 230030272, 230162368, 230292416, 230424512, 230553152,
+230684864, 230816704, 230948416, 231079616, 231210944, 231342016,
+231472448, 231603776, 231733952, 231866176, 231996736, 232127296,
+232259392, 232388672, 232521664, 232652608, 232782272, 232914496,
+233043904, 233175616, 233306816, 233438528, 233569984, 233699776,
+233830592, 233962688, 234092224, 234221888, 234353984, 234485312,
+234618304, 234749888, 234880832, 235011776, 235142464, 235274048,
+235403456, 235535936, 235667392, 235797568, 235928768, 236057152,
+236190272, 236322752, 236453312, 236583616, 236715712, 236846528,
+236976448, 237108544, 237239104, 237371072, 237501632, 237630784,
+237764416, 237895232, 238026688, 238157632, 238286912, 238419392,
+238548032, 238681024, 238812608, 238941632, 239075008, 239206336,
+239335232, 239466944, 239599168, 239730496, 239861312, 239992384,
+240122816, 240254656, 240385856, 240516928, 240647872, 240779072,
+240909632, 241040704, 241171904, 241302848, 241433408, 241565248,
+241696192, 241825984, 241958848, 242088256, 242220224, 242352064,
+242481856, 242611648, 242744896, 242876224, 243005632, 243138496,
+243268672, 243400384, 243531712, 243662656, 243793856, 243924544,
+244054592, 244187072, 244316608, 244448704, 244580032, 244710976,
+244841536, 244972864, 245104448, 245233984, 245365312, 245497792,
+245628736, 245759936, 245889856, 246021056, 246152512, 246284224,
+246415168, 246545344, 246675904, 246808384, 246939584, 247070144,
+247199552, 247331648, 247463872, 247593536, 247726016, 247857088,
+247987648, 248116928, 248249536, 248380736, 248512064, 248643008,
+248773312, 248901056, 249036608, 249167552, 249298624, 249429184,
+249560512, 249692096, 249822784, 249954112, 250085312, 250215488,
+250345792, 250478528, 250608704, 250739264, 250870976, 251002816,
+251133632, 251263552, 251395136, 251523904, 251657792, 251789248,
+251919424, 252051392, 252182464, 252313408, 252444224, 252575552,
+252706624, 252836032, 252968512, 253099712, 253227584, 253361728,
+253493056, 253623488, 253754432, 253885504, 254017216, 254148032,
+254279488, 254410432, 254541376, 254672576, 254803264, 254933824,
+255065792, 255196736, 255326528, 255458752, 255589952, 255721408,
+255851072, 255983296, 256114624, 256244416, 256374208, 256507712,
+256636096, 256768832, 256900544, 257031616, 257162176, 257294272,
+257424448, 257555776, 257686976, 257818432, 257949632, 258079552,
+258211136, 258342464, 258473408, 258603712, 258734656, 258867008,
+258996544, 259127744, 259260224, 259391296, 259522112, 259651904,
+259784384, 259915328, 260045888, 260175424, 260308544, 260438336,
+260570944, 260700992, 260832448, 260963776, 261092672, 261226304,
+261356864, 261487936, 261619648, 261750592, 261879872, 262011968,
+262143424, 262274752, 262404416, 262537024, 262667968, 262799296,
+262928704, 263061184, 263191744, 263322944, 263454656, 263585216,
+263716672, 263847872, 263978944, 264108608, 264241088, 264371648,
+264501184, 264632768, 264764096, 264895936, 265024576, 265158464,
+265287488, 265418432, 265550528, 265681216, 265813312, 265943488,
+266075968, 266206144, 266337728, 266468032, 266600384, 266731072,
+266862272, 266993344, 267124288, 267255616, 267386432, 267516992,
+267648704, 267777728, 267910592, 268040512, 268172096, 268302784,
+268435264, 268566208, 268696256, 268828096, 268959296, 269090368,
+269221312, 269352256, 269482688, 269614784, 269745856, 269876416,
+270007616, 270139328, 270270272, 270401216, 270531904, 270663616,
+270791744, 270924736, 271056832, 271186112, 271317184, 271449536,
+271580992, 271711936, 271843136, 271973056, 272105408, 272236352,
+272367296, 272498368, 272629568, 272759488, 272891456, 273022784,
+273153856, 273284672, 273415616, 273547072, 273677632, 273808448,
+273937088, 274071488, 274200896, 274332992, 274463296, 274595392,
+274726208, 274857536, 274988992, 275118656, 275250496, 275382208,
+275513024, 275643968, 275775296, 275906368, 276037184, 276167872,
+276297664, 276429376, 276560576, 276692672, 276822976, 276955072,
+277085632, 277216832, 277347008, 277478848, 277609664, 277740992,
+277868608, 278002624, 278134336, 278265536, 278395328, 278526784,
+278657728, 278789824, 278921152, 279052096, 279182912, 279313088,
+279443776, 279576256, 279706048, 279838528, 279969728, 280099648,
+280230976, 280361408, 280493632, 280622528, 280755392, 280887104,
+281018176, 281147968, 281278912, 281411392, 281542592, 281673152,
+281803712, 281935552, 282066496, 282197312, 282329024, 282458816,
+282590272, 282720832, 282853184, 282983744, 283115072, 283246144,
+283377344, 283508416, 283639744, 283770304, 283901504, 284032576,
+284163136, 284294848, 284426176, 284556992, 284687296, 284819264,
+284950208, 285081536]
+```
diff --git a/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
new file mode 100644
index 00000000000..98a54930350
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md
@@ -0,0 +1,42 @@
+---
+title: "채굴 알고리즘"
+description: "이더리움 채굴에 사용되는 알고리즘 자세히 살펴보기 "
+lang: ko
+---
+
+
+
+
+
+작업증명은 더 이상 이더리움의 합의 메커니즘의 기초가 아니며, 채굴이 중단되었습니다. 대신, 이더리움은 ETH를 스테이킹하는 검증자에 의해 보안이 유지됩니다. 오늘부터 ETH 스테이킹을 시작할 수 있습니다. 더 알아보려면 The Merge, 지분증명, 그리고 스테이킹에 대해 읽어보세요. 이 페이지는 역사적인 참고만을 위한 것입니다.
+
+
+
+
+이더리움 채굴은 Ethash라는 알고리즘을 사용했습니다. 이 알고리즘의 근본적 아이디어는 채굴자가 브루트 포스 계산-무작위 대입-을 통해 논스 입력값을 알아내려고 시도하여 그 결과 해쉬값이, 계산 난이도에 의해 결정된 임계값보다 작아지게 만드는 것입니다. 이 난이도는 동적으로 조절되어, 블록 생성이 일정한 주기로 이루어지도록 합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [작업 증명 합의](/developers/docs/consensus-mechanisms/pow) 및 [채굴](/developers/docs/consensus-mechanisms/pow/mining)에 대해 읽어보는 것을 권장합니다.
+
+## 대거-해시모토 {#dagger-hashimoto}
+
+대거-하시모토 알고리즘은 이더리움 채굴에 있어서 Ethash가 대체한 선행적 검색 알고리즘이었습니다. 두 개의 서로 다른 알고리즘: 대거와 하시모토의 결합이었습니다. 그것은 단지 연구 구현이었고 이더리움 메인넷이 출시되었을 때는 Ethash로 대체되었습니다.
+
+[Dagger](http://www.hashcash.org/papers/dagger.html)는 [방향성 비순환 그래프(Directed Acyclic Graph)](https://en.wikipedia.org/wiki/Directed_acyclic_graph)를 생성하고, 이 그래프의 임의의 조각들을 함께 해시하는 과정을 포함합니다. 핵심 원칙은 각 논스값은 오직 거대한 전체 데이터 트리의 일부만 필요로 한다는 것입니다. 논스 값 각각에 대한 서브트리를 다시 계산하는 것은 채굴에 매우 부담이 되므로, 트리를 저장할 필요가 있습니다. 하지만 단일 논스 값에 대한 검증 작업으로는 재계산이 충분히 가능합니다. 대거 알고리즘은 메모리 집약적이지만 메모리 부담이 안전한 수준으로 증가하면 검증하기 어려운 기존의 Scrypt 알고리즘의 대안으로 설계되었습니다. 하지만 대거 알고리즘은 공유 메모리 하드웨어 가속에 취약하여 다른 연구 방향들이 선호됨에 따라 사용이 감소했습니다.
+
+[Hashimoto](http://diyhpl.us/%7Ebryan/papers2/bitcoin/meh/hashimoto.pdf)는 I/O 바운드(즉, 메모리 읽기가 채굴 과정의 제한 요소가 됨) 방식을 통해 ASIC 저항성을 추가하는 알고리즘입니다. 그 이론은 RAM이 계산보다 더 쉽게 이용 가능하다는 것입니다. 이미 수십억 달러 가치의 연구가 다양한 목적을 위해 RAM을 최적화하는 방법을 조사해왔으며, 이들 연구는 종종 거의 무작위 접근 패턴(따라서 ‘랜덤 액세스 메모리’)을 포함합니다. 그 결과로, 기존의 RAM은 알고리즘을 평가하는 데 있어 상당히 최적에 가까운 상태라고 할 수 있습니다. 하시모토 알고리즘은 블록체인을 데이터 소스로 사용하면서 위에 있는 (1)과 (3)을 동시에 만족합니다.
+
+대거 하시모토 알고리즘은 대거 및 하시모토의 변경된 버전을 사용했습니다. 대거-하시모토 알고리즘과 하시모토 알고리즘의 차이점은, 하시모토 알고리즘이 블록체인을 데이터 소스로 사용하는 반면에, 대거-하시모토 알고리즘은 맞춤형으로 생성된 데이터 세트를 사용한다는 점입니다. 이 맞춤형 데이터 세트는 매 N개의 블록이 쌓일 때마다 블록 데이터에 기반하여 업데이트됩니다. 이 데이터 세트는 대거 알고리즘을 활용해 생성되고, 라이트 클라이언트 검증 알고리즘 검증 시 모든 논스값의 특정한 서브셋을 효율적으로 계산합니다. 대거-해시모토와 대거의 차이점은 기존 대거와 달리, 블록을 쿼리하는 데 사용되는 데이터 세트가 반영구적이며 간헐적인 간격(예: 주 1회)으로만 업데이트된다는 것입니다. 이는 데이터 세트를 생성하는 데 들어가는 노력이 거의 없다는 것을 의미하며, 이에 따라 공유 메모리 속도 향상과 관련한 세르지오 레르너의 주장은 크게 약화됩니다.
+
+[대거-해시모토](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto)에 대해 더 알아보기.
+
+## Ethash {#ethash}
+
+Ethash는 현재는 더 이상 사용되지 않는 작업 증명-PoW- 방식 하에서, 실제 이더리움 메인넷에서 사용된 채굴 알고리즘이었습니다. Ethash는 이전 버전의 기본 원칙을 계승하면서도, 알고리즘이 상당히 업데이트된 후 대거-하시모토 알고리즘의 특정한 버전으로써 새로운 이름이 붙여졌습니다. 이더리움 메인넷은 Ethash만 사용했습니다. 대거-해시모토는 채굴 알고리즘의 R&D 버전이었으며, 이더리움 메인넷에서 채굴이 시작되기 전에 대체되었습니다.
+
+[Ethash에 대해 더 알아보기](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash).
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/dapps/index.md b/public/content/translations/ko/developers/docs/dapps/index.md
new file mode 100644
index 00000000000..204cbff168a
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/dapps/index.md
@@ -0,0 +1,96 @@
+---
+title: "탈중앙화앱에 대한 기술적 소개"
+description:
+lang: ko
+---
+
+탈중앙화 애플리케이션(탈중앙화앱)은 [스마트 계약](/developers/docs/smart-contracts/)과 프런트엔드 사용자 인터페이스를 결합한 탈중앙화 네트워크상에 구축된 애플리케이션입니다. 이더리움에서 스마트 계약은 오픈 API처럼 접근하기 쉽고 투명합니다. 즉, 여러분의 디앱에는 다른 사람이 작성한 스마트 계약이 포함될 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+탈중앙화앱에 대해 배우기 전에 [블록체인 기초](/developers/docs/intro-to-ethereum/)를 다루고 이더리움 네트워크와 탈중앙화 방식에 대해 읽어보아야 합니다.
+
+## 탈중앙화앱의 정의 {#definition-of-a-dapp}
+
+디앱에는 분산형 피어-투-피어 네트워크 상에서 실행되는 백엔드 코드가 있습니다. 백엔드 코드가 중앙화된 서버에서 실행되는 앱과 이를 비교해보시기 바랍니다.
+
+디앱은 일반 앱처럼, 아떤 언어로 작성된 백엔드도 호출할 수 있는 프론트엔드 코드와 유저 인터페이스를 가지고 있다. 또한 프런트엔드는 [IPFS](https://ipfs.io/)와 같은 탈중앙화된 스토리지에서 호스팅될 수 있습니다.
+
+- **탈중앙화** - 탈중앙화앱은 어느 한 사람이나 그룹이 통제할 수 없는 개방형 공용 탈중앙화 플랫폼인 이더리움에서 작동합니다.
+- **결정적** - 탈중앙화앱은 실행되는 환경에 관계없이 동일한 기능을 수행합니다.
+- **튜링 완전** - 탈중앙화앱은 필요한 리소스가 주어지면 모든 작업을 수행할 수 있습니다.
+- **격리됨** - 탈중앙화앱은 이더리움 가상 머신으로 알려진 가상 환경에서 실행되므로 스마트 계약에 버그가 있더라도 블록체인 네트워크의 정상적인 기능을 방해하지 않습니다.
+
+### 스마트 계약에 대하여 {#on-smart-contracts}
+
+디앱을 소개하려면, 디앱의 백엔드인 스마트 컨트랙트를 이해할 필요가 있다. 자세한 개요는 [스마트 계약](/developers/docs/smart-contracts/)에 대한 섹션을 참조하세요.
+
+스마트 컨트랙트는 이더리움 블록체인 상에서 살아있는 그리고 프로그램된대로 정확히 실행하는 코드이다. 스마트 계약이 네트워크에 배포되면, 변경할 수 없습니다. 디앱은 그들이 개인이나 회사가 아닌 컨트랙트에 적힌 로직에 의해 제어되기 때문에 탈중앙화될 수 있다. 이는 또한 스마트 계약를 매우 조심해서 설계하고, 철저히 테스트할 필요가 있음을 의미한다.
+
+## 탈중앙화앱 개발의 이점 {#benefits-of-dapp-development}
+
+- **무중단** – 스마트 계약이 블록체인에 배포되면, 전체 네트워크는 계약과 상호 작용하려는 클라이언트에게 항상 서비스를 제공할 수 있습니다. 따라서 악의적인 의도를 가진 사람들은 개별 디앱에 서비스 거부 공격을 할 수 없습니다.
+- **개인정보보호** – 탈중앙화앱을 배포하거나 상호 작용하기 위해 실제 신원을 제공할 필요가 없습니다.
+- **검열 저항성** – 네트워크상의 단일 개체는 사용자가 트랜잭션을 제출하거나, 탈중앙화앱을 배포하거나, 블록체인에서 데이터를 읽는 것을 차단할 수 없습니다.
+- **완전한 데이터 무결성** – 블록체인에 저장된 데이터는 암호화 프리미티브 덕분에 불변하며 논쟁의 여지가 없습니다. 악의적인 행위자들은 이미 공개된 트랜잭션이나 다른 데이터를 위조할 수 없다.
+- **무신뢰 계산/검증 가능한 동작** – 스마트 계약은 중앙 기관을 신뢰할 필요 없이 분석할 수 있으며 예측 가능한 방식으로 실행되도록 보장됩니다. 이는 전통적인 모델에서는 불가능하다. 예를 들어, 우리가 온라인 뱅킹 시스템을 사용할 때 우리는 금융 기관들이 우리의 금융 데이터를 오용하거나, 기록을 함부로 조작하거나 해킹 당하지 않을 것이라고 믿어야 한다.
+
+## 탈중앙화앱 개발의 단점 {#drawbacks-of-dapp-development}
+
+- **유지보수** – 블록체인에 게시된 코드와 데이터는 수정하기가 더 어렵기 때문에 탈중앙화앱은 유지보수가 더 어려울 수 있습니다. 이전 버전에서 버그나 보안 위험이 식별되더라도, 배포된 후에는 디앱(또는 디엡에 저장된 기본 데이터) 을 업데이트하기가 어렵습니다.
+- **성능 오버헤드** – 상당한 성능 오버헤드가 있으며 확장이 정말 어렵습니다. 이더리움이 요구하는 보안성, 무결성, 투명성 그리고 신뢰성 레벨을 달성하기 위해서는 모든 노드가 실행하고, 모든 트랜잭션을 저장한다. 더욱이, 지분 증명 합의에도 시간이 걸립니다.
+- **네트워크 혼잡** – 하나의 탈중앙화앱이 너무 많은 계산 리소스를 사용하면 전체 네트워크가 정체됩니다. 현재 네트워크는 초당 약 10\~15 트랜잭션만 처리 가능하다; 트랜잭션들이 이보다 빠르게 보내지면, 컨펌되지 않은 트랜잭션 풀이 빠르게 불어날 수 있다.
+- **사용자 경험** – 평균적인 최종 사용자가 진정으로 안전한 방식으로 블록체인과 상호 작용하는 데 필요한 도구 스택을 설정하는 것이 너무 어렵다고 느낄 수 있으므로 사용자 친화적인 경험을 설계하는 것이 더 어려울 수 있습니다.
+- **중앙화** – 이더리움의 베이스 레이어 위에 구축된 사용자 친화적이고 개발자 친화적인 솔루션은 어쨌든 중앙화된 서비스처럼 보일 수 있습니다. 예를 들어, 이러한 서비스는 키 또는 기타 민감한 정보를 서버 측에 저장하거나, 중앙 집중식 서버를 사용하여 프런트엔드를 제공하거나, 블록체인에 쓰기 전에 중앙 집중식 서버에서 중요한 비즈니스 로직을 실행할 수 있습니다. 중앙 집중화는 블록체인의 많은 이점을 제거합니다.
+
+## 시각 자료를 찾고 있나요? 시각적 학습자
+
+
+
+## 탈중앙화앱 생성을 위한 도구 {#dapp-tools}
+
+**Scaffold-ETH _- 스마트 계약에 적응하는 프런트엔드를 사용하여 Solidity를 빠르게 실험합니다._**
+
+- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2)
+- [예시 탈중앙화앱](https://punkwallet.io/)
+
+**Create Eth App _- 한 가지 명령어로 이더리움 기반 앱을 만듭니다._**
+
+- [GitHub](https://github.com/paulrberg/create-eth-app)
+
+**One Click Dapp _- [ABI](/glossary/#abi)에서 탈중앙화앱 프런트엔드를 생성하기 위한 FOSS 도구._**
+
+- [oneclickdapp.com](https://oneclickdapp.com)
+- [GitHub](https://github.com/oneclickdapp/oneclickdapp-v1)
+
+**Etherflow _- 이더리움 개발자가 노드를 테스트하고 브라우저에서 RPC 호출을 구성 및 디버그하기 위한 FOSS 도구입니다._**
+
+- [etherflow.quiknode.io](https://etherflow.quiknode.io/)
+- [GitHub](https://github.com/abunsen/etherflow)
+
+**thirdweb _- 모든 언어의 SDK, 스마트 계약, 도구 및 web3 개발을 위한 인프라._**
+
+- [홈페이지](https://thirdweb.com/)
+- [개발문서](https://portal.thirdweb.com/)
+- [GitHub](https://github.com/thirdweb-dev/)
+
+**Crossmint _- 스마트 계약을 배포하고, 신용카드 및 교차 체인 결제를 활성화하고, API를 사용하여 NFT를 생성, 배포, 판매, 저장 및 편집할 수 있는 엔터프라이즈급 web3 개발 플랫폼입니다._**
+
+- [crossmint.com](https://www.crossmint.com)
+- [개발문서](https://docs.crossmint.com)
+- [Discord](https://discord.com/invite/crossmint)
+
+## 더 읽어보기 {#further-reading}
+
+- [탈중앙화앱 둘러보기](/apps)
+- [웹 3.0 애플리케이션의 아키텍처](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+- [탈중앙화 애플리케이션에 대한 2021년 가이드](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) - _LimeChain_
+- [탈중앙화앱이란 무엇인가?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) - _Gemini_
+- [인기 있는 탈중앙화앱](https://www.alchemy.com/dapps) - _Alchemy_
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [이더리움 스택 소개](/developers/docs/ethereum-stack/)
+- [개발 프레임워크](/developers/docs/frameworks/)
diff --git a/public/content/translations/ko/developers/docs/data-and-analytics/block-explorers/index.md b/public/content/translations/ko/developers/docs/data-and-analytics/block-explorers/index.md
new file mode 100644
index 00000000000..3d3768a4419
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/data-and-analytics/block-explorers/index.md
@@ -0,0 +1,254 @@
+---
+title: "블록 탐색기"
+description: "트랜잭션, 계정, 계약 등에 대한 정보를 쿼리할 수 있는 블록체인 데이터 세계로 연결되는 포털인 블록 탐색기에 대한 소개"
+lang: ko
+sidebarDepth: 3
+---
+
+블록 탐색기들은 이더리움 데이터로의 포털이다. 이를 사용하여 블록, 트랜잭션, 검증자, 계정 및 기타 온체인 활동에 대한 실시간 데이터를 볼 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+블록 탐색기의 데이터를 분석 할 수 있기 위해서는 이더리움에 대한 기본적인 개념을 이해해야 한다. [이더리움 소개](/developers/docs/intro-to-ethereum/)부터 시작해 보세요.
+
+## 서비스 {#services}
+
+- [Etherscan](https://etherscan.io/) -_중국어, 한국어, 러시아어, 일본어로도 제공_
+- [3xpl](https://3xpl.com/ethereum)
+- [Beaconcha.in](https://beaconcha.in/)
+- [Blockchair](https://blockchair.com/ethereum) -_스페인어, 프랑스어, 이탈리아어, 네덜란드어, 포르투갈어, 러시아어, 중국어, 페르시아어로도 제공_
+- [Blockscout](https://eth.blockscout.com/)
+- [Chainlens](https://www.chainlens.com/)
+- [DexGuru 블록 탐색기](https://ethereum.dex.guru/)
+- [Etherchain](https://www.etherchain.org/)
+- [Ethplorer](https://ethplorer.io/) -_중국어, 스페인어, 프랑스어, 터키어, 러시아어, 한국어, 베트남어로도 제공_
+- [EthVM](https://www.ethvm.com/)
+- [OKLink](https://www.oklink.com/eth)
+- [Ethseer](https://ethseer.io)
+
+## 오픈 소스 도구 {#open-source-tools}
+
+- [Otterscan](https://otterscan.io/)
+- [lazy-etherscan](https://github.com/woxjro/lazy-etherscan)
+
+## 데이터 {#data}
+
+이더리움은 설계상 투명하기 때문에 모든 것이 검증 가능하다. 블록 탐색기는 이 정보를 가져올 수 있는 인터페이스를 제공한다. 그리고 만약 그 데이터가 필요하다면 이는 메인 이더리움 네트워크와 테스트넷 모두를 위한것이다. 데이터는 실행 데이터와 합의 데이터로 나뉩니다. 실행 데이터는 특정 블록에서 실행된 트랜잭션을 나타냅니다. 합의 데이터는 블록 자체와 이를 제안한 검증자를 나타냅니다.
+
+다음은 블록 탐색기에서 얻을 수 있는 데이터 유형 요약이다.
+
+### 실행 데이터 {#execution-data}
+
+새로운 블록은 12초마다 이더리움에 추가되므로(블록 제안자가 자신의 차례를 놓치지 않는 한), 거의 일정한 데이터 스트림이 블록 탐색기에 추가됩니다. 블록에는 다음과 같은 유용한 데이터가 많이 포함되어 있다:
+
+**표준 데이터**
+
+- 블록 높이 - 현재 블록 생성 시 블록체인의 블록 번호 및 길이(블록 단위)
+- 타임스탬프 - 블록이 제안된 시간
+- 트랜잭션 - 블록에 포함된 트랜잭션의 수
+- 수수료 수령인 - 트랜잭션에서 가스 수수료 팁을 받은 주소
+- 블록 보상 - 블록을 제안한 검증자에게 수여된 ETH 금액
+- 크기 - 블록 내 데이터의 크기(바이트 단위로 측정)
+- 사용된 가스 - 블록의 트랜잭션에서 사용된 총 가스 단위
+- 가스 한도 - 블록의 트랜잭션에 의해 설정된 총 가스 한도
+- 가스당 기본 수수료 - 트랜잭션이 블록에 포함되기 위해 필요한 최소 승수
+- 소각된 수수료 - 블록에서 소각된 ETH의 양
+- 추가 데이터 - 빌더가 블록에 포함한 모든 추가 데이터
+
+**고급 데이터**
+
+- 해시 - 블록 헤더를 나타내는 암호화 해시(블록의 고유 식별자)
+- 상위 해시 - 현재 블록 이전 블록의 해시
+- 상태 루트 - 시스템의 전체 상태를 저장하는 머클 트라이의 루트 해시
+
+### 가스 {#gas}
+
+블록 탐색기는 트랜잭션 및 블록에서 가스 사용량에 대한 데이터를 제공할 뿐만 아니라 네트워크의 현재 가스 가격에 대한 정보도 제공한다. 이를 통해 네트워크 사용량을 파악하고, 안전한 트랜잭션을 제출하며, 가스 비용을 초과하지 않도록 할 수 있다. 프로덕트의 인터페이스로 이 정보를 가져오는 데 도움이 될 수 있는 API를 찾아보라. 가스 관련 데이터는 다음과 같다:
+
+- 안전하지만 느린 트랜잭션에 필요한 예상 가스 단위(+ 예상 가격 및 기간)
+- 평균 트랜잭션에 필요한 예상 가스 단위(+ 예상 가격 및 기간)
+- 빠른 트랜잭션에 필요한 예상 가스 단위(+ 예상 가격 및 기간)
+- 가스 가격에 따른 평균 확인 시간
+- 가스를 소비하는 계약 - 즉, 네트워크에서 사용량이 많은 인기 있는 제품
+- 가스를 소비하는 계정 - 즉, 빈번한 네트워크 사용자
+
+### 트랜잭션 {#transactions}
+
+블록 탐색기는 사람들이 트랜잭션의 진행 상태를 추적하는 일반적인 곳이 되었다. 이는 여러분이 얻을 수 있는 자세한 수준이 추가적인 확실성을 주기 때문이다. 트랜잭션 데이터는 다음을 포함한다.
+
+**표준 데이터**
+
+- 트랜잭션 해시 - 트랜잭션이 제출될 때 생성되는 해시
+- 상태 - 트랜잭션이 보류 중인지, 실패했는지 또는 성공했는지를 나타내는 표시
+- 블록 - 트랜잭션이 포함된 블록
+- 타임스탬프 - 트랜잭션이 검증자가 제안한 블록에 포함된 시간
+- 보낸 사람 - 트랜잭션을 제출한 계정의 주소
+- 받는 사람 - 트랜잭션이 상호 작용하는 수신자 또는 스마트 계약의 주소
+- 전송된 토큰 - 트랜잭션의 일부로 전송된 토큰 목록
+- 가치 - 전송되는 총 ETH 가치
+- 거래 수수료 - 트랜잭션을 처리하기 위해 검증자에게 지불된 금액(가스 가격\*사용된 가스로 계산)
+
+**고급 데이터**
+
+- 가스 한도 - 이 트랜잭션이 소비할 수 있는 최대 가스 단위 수
+- 사용된 가스 - 트랜잭션이 소비한 실제 가스 단위량
+- 가스 가격 - 가스 단위당 설정된 가격
+- 논스 - `from` 주소의 트랜잭션 번호(0부터 시작하므로 논스 `100`은 실제로는 이 계정에서 제출한 101번째 트랜잭션임)
+- 입력 데이터 - 트랜잭션에 필요한 모든 추가 정보
+
+### 계정 {#accounts}
+
+여러분이 계정에 관해 접근 가능한 수많은 데이터가 있다. 이것이 여러분의 자산과 가치가 쉽게 추적될 수 없도록 여러 계정을 사용할 것이 권장되는 이유이다. 트랜잭션과 계정 활동을 더 비밀스럽게 만들기 위해 여러 해결책이 또한 개발 중이다. 그러나 여기 계정에 이용 가능한 데이터가 있다.
+
+**사용자 계정**
+
+- 계정 주소 - 자금을 보낼 수 있는 공개 주소
+- ETH 잔액 - 해당 계정과 연결된 ETH 금액
+- 총 ETH 가치 - ETH의 가치
+- 토큰 - 계정과 관련된 토큰 및 그 가치
+- 거래 내역 - 이 계정이 발신자 또는 수신자였던 모든 거래 목록
+
+**스마트 컨트랙트**
+
+스마트 컨트랙트 계정들은 사용자 계정이 가지는 모든 데이터를 갖지만, 어떤 블록 탐색기들은 코드 정보까지 보여준다. 예로 다음을 포함한다:
+
+- 계약 생성자 - 메인넷에 계약을 배포한 주소
+- 생성 트랜잭션 - 메인넷으로의 배포를 포함한 트랜잭션
+- 소스 코드 - 스마트 계약의 솔리디티 또는 바이퍼 코드
+- 계약 ABI - 계약의 애플리케이션 바이너리 인터페이스—계약이 수행하는 호출과 수신된 데이터
+- 계약 생성 코드 - 스마트 계약의 컴파일된 바이트코드—솔리디티나 Vyper 등으로 작성된 스마트 계약을 컴파일할 때 생성됩니다.
+- 계약 이벤트 - 스마트 계약에서 호출된 메서드의 내역—기본적으로 계약이 어떻게, 얼마나 자주 사용되는지 확인할 수 있는 방법입니다.
+
+### 토큰 {#tokens}
+
+토큰은 계약의 한 종류이므로 스마트 계약과 유사한 데이터를 가집니다. 그러나 그들은 값을 갖고 거래될 수 있으므로, 그들은 추가 데이터 포인트를 갖는다:
+
+- 유형 - ERC-20, ERC-721 또는 다른 토큰 표준인지 여부
+- 가격 - ERC-20인 경우 현재 시장 가치를 가집니다.
+- 시가 총액 - ERC-20인 경우 시가 총액을 가집니다(가격\*총 공급량으로 계산).
+- 총 공급량 - 유통 중인 토큰의 수
+- 보유자 - 토큰을 보유하고 있는 주소의 수
+- 전송 - 계정 간에 토큰이 전송된 횟수
+- 거래 내역 - 토큰을 포함한 모든 거래의 내역
+- 계약 주소 - 메인넷에 배포된 토큰의 주소
+- 소수점 - ERC-20 토큰은 나눌 수 있으며 소수점을 가집니다.
+
+### 네트워크 {#network}
+
+일부 블록 데이터는 이더리움의 전반적인 상태와 관련이 있습니다.
+
+- 총 트랜잭션 - 이더리움이 생성된 이후의 트랜잭션 수
+- 초당 트랜잭션 - 1초 내에 처리할 수 있는 트랜잭션의 수
+- ETH 가격 - 1 ETH의 현재 가치
+- 총 ETH 공급량 - 유통 중인 ETH의 수—새로운 ETH는 블록 보상 형태로 모든 블록이 생성될 때 함께 생성된다는 점을 기억하세요.
+- 시가 총액 - 가격\*공급량으로 계산
+
+## 합의 레이어 데이터 {#consensus-layer-data}
+
+### 에포크 {#epoch}
+
+보안상의 이유로, 매 에포크(6.4분마다)가 끝날 때마다 무작위로 선정된 검증자 위원회가 생성됩니다. Epoch는 다음을 포함한다.
+
+- Epoch number
+- 완결 상태 - 에포크가 완결되었는지 여부(예/아니오)
+- 시간 - 에포크가 종료된 시간
+- 증명 - 에포크 내의 증명 수(슬롯 내 블록에 대한 투표)
+- 입금 - 에포크에 포함된 ETH 입금 수(검증자는 검증자가 되기 위해 ETH를 스테이킹해야 함)
+- 슬래싱 - 블록 제안자 또는 증명자에게 부과된 패널티 수
+- 투표 참여 - 블록을 증명하는 데 사용된 스테이킹된 ETH의 양
+- 검증자 - 해당 에포크에 활성화된 검증자 수
+- 평균 검증자 잔액 - 활성 검증자의 평균 잔액
+- 슬롯 - 에포크에 포함된 슬롯 수(슬롯은 하나의 유효한 블록을 포함)
+
+### 슬롯 {#slot}
+
+슬롯은 블록 생성을 위한 기회이며 각 슬롯에 사용할 수 있는 데이터는 다음과 같다.
+
+- 에포크 - 슬롯이 유효한 에포크
+- Slot number
+- 상태 - 슬롯의 상태(제안됨/놓침)
+- 시간 - 슬롯 타임스탬프
+- 제안자 - 슬롯에 대한 블록을 제안한 검증자
+- 블록 루트 - BeaconBlock의 해시 트리 루트
+- 상위 루트 - 이전에 온 블록의 해시
+- 상태 루트 - BeaconState의 해시 트리 루트
+- Signature
+- Randao reveal
+- 그래피티 - 블록 제안자는 블록 제안에 32바이트 길이의 메시지를 포함할 수 있습니다.
+- 실행 데이터
+ - Block hash
+ - Deposit count
+ - Deposit root
+- 증명 - 이 슬롯에 있는 블록에 대한 증명 수
+- 입금 - 이 슬롯 동안의 입금 수
+- 자발적 퇴장 - 슬롯 동안 퇴장한 검증자 수
+- 슬래싱 - 블록 제안자 또는 증명자에게 부과된 패널티 수
+- 투표 - 이 슬롯의 블록에 투표한 검증자
+
+### 블록 {#blocks-1}
+
+지분 증명은 시간을 슬롯과 에포크로 나눕니다. 즉, 새로운 데이터를 의미한다!
+
+- 제안자 - 새 블록을 제안하기 위해 알고리즘에 따라 선택된 검증자
+- 에포크 - 블록이 제안된 에포크
+- 슬롯 - 블록이 제안된 슬롯
+- 증명 - 슬롯에 포함된 증명 수—증명은 블록이 비콘 체인으로 갈 준비가 되었음을 나타내는 투표와 같습니다.
+
+### 검증자 {#validators}
+
+검증인은 블록을 제안하고 슬롯 내에서 이를 증명할 책임이 있다.
+
+- 검증자 번호 - 검증자를 나타내는 고유 번호
+- 현재 잔액 - 보상을 포함한 검증자의 잔액
+- 유효 잔액 - 스테이킹에 사용되는 검증자의 잔액
+- 수익 - 검증자가 받은 보상 또는 패널티
+- 상태 - 검증인이 현재 온라인 상태이고 활성 상태인지 여부
+- 증명 효율성 - 검증자의 증명이 체인에 포함되는 데 걸리는 평균 시간
+- 활성화 자격 - 검증자가 검증할 수 있게 된 날짜(및 에포크)
+- 활성화 시작 시점 - 검증자가 활성화된 날짜(및 에포크)
+- 제안된 블록 - 검증자가 제안한 블록
+- 증명 - 검증자가 제공한 증명
+- 입금 - 검증자가 수행한 스테이킹 입금의 `from` 주소, 트랜잭션 해시, 블록 번호, 타임스탬프, 금액 및 상태
+
+### 증명 {#attestations}
+
+증명은 블록을 체인에 포함하기 위한 "동의" 투표이다. 그들의 데이터는 증명 기록, 그리고 증명한 검증인과 관련이 있다.
+
+- 슬롯 - 증명이 이루어진 슬롯
+- 위원회 인덱스 - 주어진 슬롯의 위원회 인덱스
+- 집계 비트 - 증명에 참여하는 모든 검증자의 집계된 증명을 나타냅니다.
+- 검증자 - 증명을 제공한 검증자
+- 비콘 블록 루트 - 검증자가 증명하고 있는 블록을 가리킵니다.
+- 소스 - 가장 최근에 정당화된 에포크를 가리킵니다.
+- 타겟 - 가장 최근의 에포크 경계를 가리킵니다.
+- Signature
+
+### 네트워크 {#network-1}
+
+합의 레이어의 최상위 데이터는 다음을 포함합니다.
+
+- Current epoch
+- Current slot
+- 활성 검증자 - 활성 검증자의 수
+- 대기 중인 검증자 - 활성화되기를 기다리는 검증자의 수
+- 스테이킹된 ETH - 네트워크에 스테이킹된 ETH의 양
+- 평균 잔액 - 검증자의 평균 ETH 잔액
+
+## 블록 탐색기 {#block-explorers}
+
+- [Etherscan](https://etherscan.io/) - 이더리움 메인넷 및 테스트넷의 데이터를 가져오는 데 사용할 수 있는 블록 탐색기
+- [3xpl](https://3xpl.com/ethereum) - 데이터 세트 다운로드를 허용하는 광고 없는 오픈 소스 이더리움 탐색기
+- [Beaconcha.in](https://beaconcha.in/) - 이더리움 메인넷 및 테스트넷을 위한 오픈 소스 블록 탐색기
+- [Blockchair](https://blockchair.com/ethereum) - 가장 사적인 이더리움 탐색기입니다. (멤풀) 데이터 정렬 및 필터링에도 사용됩니다.
+- [Etherchain](https://www.etherchain.org/) - 이더리움 메인넷을 위한 블록 탐색기
+- [Ethplorer](https://ethplorer.io/) - 이더리움 메인넷 및 Kovan 테스트넷의 토큰에 중점을 둔 블록 탐색기
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [트랜잭션](/developers/docs/transactions/)
+- [계정](/developers/docs/accounts/)
+- [네트워크](/developers/docs/networks/)
diff --git a/public/content/translations/ko/developers/docs/data-and-analytics/index.md b/public/content/translations/ko/developers/docs/data-and-analytics/index.md
new file mode 100644
index 00000000000..0ffd93db9e7
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/data-and-analytics/index.md
@@ -0,0 +1,72 @@
+---
+title: "데이터 및 분석"
+description: "디앱에서 사용할 온체인 분석 및 데이터를 얻는 방법"
+lang: ko
+---
+
+## 소개 {#Introduction}
+
+네트워크 사용량이 계속 증가함에 따라 온체인 데이터에 점점 더 많은 귀중한 정보가 존재하게 됩니다. 데이터 양이 급격히 증가함에 따라 이 정보를 계산하고 집계하여 보고하거나 디앱을 구동하는 것은 시간과 프로세스가 많이 소요되는 작업이 될 수 있습니다.
+
+기존 데이터 제공업체를 활용하면 개발 속도를 높이고, 더 정확한 결과를 산출하며, 지속적인 유지보수 노력을 줄일 수 있습니다. 이를 통해 팀은 프로젝트가 제공하려는 핵심 기능에 집중할 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+데이터 분석 컨텍스트에서 블록 탐색기를 사용하는 것을 더 잘 이해하려면 [블록 탐색기](/developers/docs/data-and-analytics/block-explorers/)의 기본 개념을 이해해야 합니다. 또한 시스템 설계에 추가되는 이점을 이해하려면 [인덱스](/glossary/#index) 개념에 익숙해져야 합니다.
+
+아키텍처 기본 측면에서 이론적으로라도 [API](https://www.wikipedia.org/wiki/API)와 [REST](https://www.wikipedia.org/wiki/Representational_state_transfer)가 무엇인지 이해해야 합니다.
+
+## 블록 탐색기 {#block-explorers}
+
+많은 [블록 탐색기](/developers/docs/data-and-analytics/block-explorers/)는 개발자에게 블록, 트랜잭션, 검증자, 계정 및 기타 온체인 활동에 대한 실시간 데이터를 제공하는 [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer) [API](https://www.wikipedia.org/wiki/API) 게이트웨이를 제공합니다.
+
+개발자는 이 데이터를 처리하고 변환하여 사용자에게 [블록체인](/glossary/#blockchain)에 대한 고유한 인사이트와 상호작용을 제공할 수 있습니다. 예를 들어, [Etherscan](https://etherscan.io)과 [Blockscout](https://eth.blockscout.com)은 매 12초 슬롯마다 실행 및 합의 데이터를 제공합니다.
+
+## The Graph {#the-graph}
+
+[The Graph](https://thegraph.com/)는 서브그래프라고 알려진 개방형 API를 통해 블록체인 데이터를 쉽게 쿼리할 수 있는 방법을 제공하는 인덱싱 프로토콜입니다.
+
+개발자는 The Graph를 통해 다음과 같은 이점을 얻을 수 있습니다.
+
+- 탈중앙화 인덱싱: 여러 인덱서를 통해 블록체인 데이터를 인덱싱할 수 있으므로 단일 실패 지점이 없습니다.
+- GraphQL 쿼리: 인덱싱된 데이터를 쿼리하기 위한 강력한 GraphQL 인터페이스를 제공하여 데이터 검색을 매우 간단하게 만듭니다.
+- 맞춤화: 블록체인 데이터를 변환하고 저장하기 위한 자체 로직을 정의하고 The Graph 네트워크에서 다른 개발자가 게시한 서브그래프를 재사용할 수 있습니다.
+
+이 [빠른 시작](https://thegraph.com/docs/en/quick-start/) 가이드를 따라 5분 이내에 서브그래프를 생성, 배포 및 쿼리하세요.
+
+## 클라이언트 다양성 {#client-diversity}
+
+[클라이언트 다양성](/developers/docs/nodes-and-clients/client-diversity/)은 버그 및 익스플로잇에 대한 복원력을 제공하기 때문에 이더리움 네트워크의 전반적인 상태에 중요합니다. 현재 [clientdiversity.org](https://clientdiversity.org/), [rated.network](https://www.rated.network), [supermajority.info](https://supermajority.info//) 및 [Ethernodes](https://ethernodes.org/)를 포함한 여러 클라이언트 다양성 대시보드가 있습니다.
+
+## Dune Analytics {#dune-analytics}
+
+[Dune Analytics](https://dune.com/)는 블록체인 데이터를 관계형 데이터베이스(DuneSQL) 테이블로 사전 처리하고, 사용자가 SQL을 사용하여 블록체인 데이터를 쿼리하고 쿼리 결과를 기반으로 대시보드를 구축할 수 있도록 합니다. 온체인 데이터는 `blocks`, `transactions`, (이벤트) `logs` 및 (호출) `traces`의 4가지 원시 테이블로 구성됩니다. 널리 사용되는 컨트랙트와 프로토콜은 디코딩되었으며, 각각 고유한 이벤트 및 호출 테이블 세트를 가지고 있습니다. 이러한 이벤트 및 호출 테이블은 프로토콜 유형(예: DEX, 대출, 스테이블코인 등)에 따라 추가로 처리되고 추상화 테이블로 구성됩니다.
+
+## SQD {#sqd}
+
+[SQD](https://sqd.dev/)는 대량의 데이터에 대한 효율적이고 무허가성 액세스를 제공하는 데 최적화된 탈중앙화된 초확장성 데이터 플랫폼입니다. 현재 이벤트 로그, 트랜잭션 영수증, 추적 및 트랜잭션별 상태 차이를 포함한 과거 온체인 데이터를 제공합니다. SQD는 맞춤형 데이터 추출 및 처리 파이프라인을 생성하기 위한 강력한 툴킷을 제공하며, 초당 최대 15만 블록의 인덱싱 속도를 달성합니다.
+
+시작하려면 [개발문서](https://docs.sqd.dev/)를 방문하거나 SQD로 구축할 수 있는 [EVM 예제](https://github.com/subsquid-labs/squid-evm-examples)를 참조하세요.
+
+## SubQuery 네트워크 {#subquery-network}
+
+[SubQuery](https://subquery.network/)는 개발자에게 웹3 프로젝트를 위한 빠르고, 신뢰할 수 있으며, 탈중앙화되고 맞춤화된 API를 제공하는 선도적인 데이터 인덱서입니다. SubQuery는 165개 이상의 생태계(이더리움 포함)의 개발자에게 풍부한 인덱싱된 데이터를 제공하여 사용자를 위한 직관적이고 몰입감 있는 경험을 구축할 수 있도록 지원합니다. SubQuery 네트워크는 복원력 있고 탈중앙화된 인프라 네트워크를 통해 멈출 수 없는 앱을 지원합니다. SubQuery의 블록체인 개발자 툴킷을 사용하여 데이터 처리 활동을 위한 맞춤형 백엔드를 구축하는 데 시간을 들이지 않고 미래의 웹3 애플리케이션을 구축하세요.
+
+시작하려면 [이더리움 빠른 시작 가이드](https://academy.subquery.network/quickstart/quickstart_chains/ethereum-gravatar.html)를 방문하여 [SubQuery의 관리 서비스](https://managedservice.subquery.network/) 또는 [SubQuery의 탈중앙화 네트워크](https://app.subquery.network/dashboard)에서 실시간으로 전환하기 전에 테스트를 위해 로컬 Docker 환경에서 몇 분 만에 이더리움 블록체인 데이터 인덱싱을 시작하세요.
+
+## EVM 쿼리 언어 {#evm-query-language}
+
+EVM 쿼리 언어(EQL)는 EVM(이더리움 가상 머신) 체인을 쿼리하도록 설계된 SQL과 유사한 언어입니다. EQL의 궁극적인 목표는 EVM 체인의 일급 시민(블록, 계정, 트랜잭션)에 대한 복잡한 관계형 쿼리를 지원하는 동시에 개발자와 연구원에게 일상적인 사용을 위한 인체공학적 구문을 제공하는 것입니다. EQL을 사용하면 개발자는 익숙한 SQL과 유사한 구문을 사용하여 블록체인 데이터를 가져올 수 있으며 복잡한 상용구 코드의 필요성을 없앨 수 있습니다. EQL은 표준 블록체인 데이터 요청(예: 이더리움에서 계정의 논스 및 잔액 검색 또는 현재 블록 크기 및 타임스탬프 가져오기)을 지원하며 더 복잡한 요청 및 기능 세트에 대한 지원을 지속적으로 추가하고 있습니다.
+
+## 추가 정보 {#further-reading}
+
+- [암호화폐 데이터 탐색 I: 데이터 흐름 아키텍처](https://web.archive.org/web/20250125012042/https://research.2077.xyz/exploring-crypto-data-1-data-flow-architectures)
+- [Graph 네트워크 개요](https://thegraph.com/docs/en/about/)
+- [Graph 쿼리 플레이그라운드](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current)
+- [Etherscan의 API 코드 예제](https://etherscan.io/apis#contracts)
+- [Blockscout의 API 개발문서](https://docs.blockscout.com/devs/apis)
+- [Beaconcha.in 비콘 체인 탐색기](https://beaconcha.in)
+- [Dune 기초](https://docs.dune.com/#dune-basics)
+- [SubQuery 이더리움 빠른 시작 가이드](https://academy.subquery.network/indexer/quickstart/quickstart_chains/ethereum-gravatar.html)
+- [SQD 네트워크 개요](https://docs.sqd.dev/)
+- [EVM 쿼리 언어](https://eql.sh/blog/alpha-release-notes)
diff --git a/public/content/translations/ko/developers/docs/data-availability/blockchain-data-storage-strategies/index.md b/public/content/translations/ko/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
new file mode 100644
index 00000000000..7bb23d3e34c
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/data-availability/blockchain-data-storage-strategies/index.md
@@ -0,0 +1,118 @@
+---
+title: "블록체인 데이터 저장 전략"
+description: "블록체인을 사용하여 데이터를 저장하는 방법에는 여러 가지가 있습니다. 이 글에서는 다양한 전략, 비용 및 장단점, 그리고 안전한 사용을 위한 요구 사항을 비교합니다."
+lang: ko
+---
+
+블록체인에 직접 정보를 저장하거나 블록체인에 의해 보호되는 방식으로 정보를 저장하는 방법에는 여러 가지가 있습니다.
+
+- EIP-4844 블롭
+- 콜데이터
+- L1 메커니즘을 사용한 오프체인
+- 계약 "코드"
+- 이벤트
+- EVM 저장 공간
+
+사용할 방법을 선택하는 기준은 다음과 같습니다.
+
+- 정보의 출처. 콜데이터의 정보는 블록체인 자체에서 직접 가져올 수 없습니다.
+- 정보의 목적지. 콜데이터는 이를 포함하는 트랜잭션에서만 사용할 수 있습니다. 이벤트는 온체인에서 전혀 접근할 수 없습니다.
+- 어느 정도의 번거로움이 허용됩니까? 전체 노드를 실행하는 컴퓨터는 브라우저에서 실행되는 애플리케이션의 라이트 클라이언트보다 더 많은 처리를 수행할 수 있습니다.
+- 모든 노드에서 정보에 쉽게 접근할 수 있도록 해야 합니까?
+- 보안 요구 사항.
+
+## 보안 요구 사항 {#security-requirements}
+
+일반적으로 정보 보안은 세 가지 속성으로 구성됩니다.
+
+- _기밀성_, 권한이 없는 주체는 정보를 읽을 수 없습니다. 이것은 많은 경우에 중요하지만 여기서는 그렇지 않습니다. _이더리움 상에 비공개 정보란 없습니다_. 블록체인은 누구나 상태 전환을 검증할 수 있기 때문에 작동하며, 따라서 비밀을 직접 저장하는 데 사용할 수 없습니다. 블록체인에 기밀 정보를 저장하는 방법이 있지만, 모두 키를 저장하기 위해 일부 오프체인 구성 요소에 의존합니다.
+
+- _무결성_, 정보는 정확하며, 권한 없는 주체에 의해 또는 권한 없는 방식(예: 'Transfer' 이벤트 없이 [ERC-20 토큰](https://eips.ethereum.org/EIPS/eip-20#events) 전송)으로 변경될 수 없습니다. 블록체인에서는 모든 노드가 모든 상태 변경을 검증하여 무결성을 보장합니다.
+
+- _가용성_, 정보는 모든 권한 있는 주체에게 제공됩니다. 블록체인에서는 일반적으로 모든 [전체 노드](https://ethereum.org/developers/docs/nodes-and-clients#full-node)에서 정보를 사용할 수 있도록 함으로써 이를 달성합니다.
+
+여기에 있는 다양한 솔루션은 모두 L1에 해시가 게시되므로 뛰어난 무결성을 가집니다. 그러나 가용성 보장은 서로 다릅니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[블록체인 기초](/developers/docs/intro-to-ethereum/)에 대한 충분한 이해가 있어야 합니다. 또한 이 페이지는 독자가 [블록](/developers/docs/blocks/), [트랜잭션](/developers/docs/transactions/) 및 기타 관련 주제에 익숙하다고 가정합니다.
+
+## EIP-4844 블롭 {#eip-4844-blobs}
+
+[Dencun 하드포크](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/beacon-chain.md)를 시작으로 이더리움 블록체인에는 제한된 수명(초기 약 [18일](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/p2p-interface.md#configuration))을 가진 데이터 블롭을 이더리움에 추가하는 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)가 포함됩니다. 이 블롭은 유사한 메커니즘을 사용하지만 [실행 가스](/developers/docs/gas)와는 별도로 가격이 책정됩니다. 임시 데이터를 게시하는 저렴한 방법입니다.
+
+EIP-4844 블롭의 주요 사용 사례는 롤업이 트랜잭션을 게시하는 것입니다. [낙관적 롤업](/developers/docs/scaling/optimistic-rollups)은 블록체인에 트랜잭션을 게시해야 합니다. 이러한 트랜잭션은 롤업의 [시퀀서](https://docs.optimism.io/connect/resources/glossary#sequencer)가 잘못된 상태 루트를 게시할 경우 [검증자](https://docs.optimism.io/connect/resources/glossary#validator)가 실수를 수정할 수 있도록 [챌린지 기간](https://docs.optimism.io/connect/resources/glossary#challenge-period) 동안 누구나 사용할 수 있어야 합니다.
+
+그러나 챌린지 기간이 지나고 상태 루트가 확정되면, 이러한 트랜잭션을 아는 것의 남은 목적은 체인의 현재 상태를 복제하는 것입니다. 이 상태는 체인 노드에서도 사용할 수 있으며, 처리 요구량이 훨씬 적습니다. 따라서 [블록 탐색기](/developers/docs/data-and-analytics/block-explorers)와 같은 몇 군데에는 트랜잭션 정보가 여전히 보존되어야 하지만, 이더리움이 제공하는 검열 저항성 수준에 대한 비용을 지불할 필요는 없습니다.
+
+[영지식 롤업](/developers/docs/scaling/zk-rollups/#data-availability)도 다른 노드가 기존 상태를 복제하고 유효성 증명을 검증할 수 있도록 트랜잭션 데이터를 게시하지만, 이 또한 단기적인 요구 사항입니다.
+
+작성 시점에 EIP-4844에 게시하는 비용은 바이트당 1wei(10-18 ETH)이며, 이는 블롭을 게시하는 트랜잭션을 포함한 모든 트랜잭션에 드는 [21,000 실행 가스](https://eth.blockscout.com/tx/0xf6cfaf0431c73dd1d96369a5e6707d64f463ccf477a4131265397f1d81466929?tab=index)와 비교하면 무시할 수 있는 수준입니다. 현재 EIP-4844 가격은 [blobscan.com](https://blobscan.com/blocks)에서 확인할 수 있습니다.
+
+다음은 유명 롤업이 게시한 블롭을 볼 수 있는 주소입니다.
+
+| 롤업 | 메일박스 주소 |
+| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
+| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://blobscan.com/address/0xFF00000000000000000000000000000000000010) |
+| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://blobscan.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) |
+| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://blobscan.com/address/0xFF00000000000000000000000000000000008453) |
+
+## 콜데이터 {#calldata}
+
+콜데이터는 트랜잭션의 일부로 전송되는 바이트를 의미합니다. 이는 해당 트랜잭션을 포함하는 블록의 블록체인 영구 기록의 일부로 저장됩니다.
+
+이는 블록체인에 데이터를 영구적으로 저장하는 가장 저렴한 방법입니다. 바이트당 비용은 4 실행 가스(바이트가 0인 경우) 또는 16 가스(다른 값인 경우)입니다. 데이터가 압축되는 것이 일반적인 관행이라면 모든 바이트 값의 가능성이 동일하므로 평균 비용은 바이트당 약 15.95 가스입니다.
+
+작성 시점에서 가격은 12 gwei/가스 및 2300 $/ETH이며, 이는 킬로바이트당 약 45센트의 비용을 의미합니다. 이것이 EIP-4844 이전의 가장 저렴한 방법이었기 때문에, 롤업이 [오류 증명](https://docs.optimism.io/stack/protocol/overview#fault-proofs)을 위해 사용 가능한 트랜잭션 정보를 저장하는 데 사용한 방법이지만 온체인에서 직접 액세스할 필요는 없습니다.
+
+다음은 유명 롤업이 게시한 트랜잭션을 볼 수 있는 주소입니다.
+
+| 롤업 | 메일박스 주소 |
+| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |
+| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://eth.blockscout.com/address/0xFF00000000000000000000000000000000000010) |
+| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://eth.blockscout.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) |
+| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://eth.blockscout.com/address/0xFF00000000000000000000000000000000008453) |
+
+## L1 메커니즘을 사용한 오프체인 {#offchain-with-l1-mechs}
+
+보안 장단점에 따라 정보를 다른 곳에 두고 필요할 때 데이터를 사용할 수 있도록 보장하는 메커니즘을 사용하는 것이 허용될 수 있습니다. 이것이 작동하기 위한 두 가지 요구 사항이 있습니다.
+
+1. 블록체인에 데이터의 [해시](https://en.wikipedia.org/wiki/Cryptographic_hash_function)를 게시하는 것을 입력 약정이라고 합니다. 이것은 단일 32바이트 단어일 수 있으므로 비싸지 않습니다. 입력 약정이 사용 가능한 한, 동일한 값으로 해시되는 다른 데이터를 찾는 것이 불가능하므로 무결성이 보장됩니다. 따라서 잘못된 데이터가 제공되면 감지할 수 있습니다.
+
+2. 가용성을 보장하는 메커니즘을 갖추십시오. 예를 들어, [Redstone](https://redstone.xyz/docs/what-is-redstone)에서는 모든 노드가 가용성 챌린지를 제출할 수 있습니다. 시퀀서가 마감일까지 온체인에서 응답하지 않으면 입력 약정은 폐기되므로 정보는 게시되지 않은 것으로 간주됩니다.
+
+상태 루트에 대해 최소 한 명의 정직한 검증자가 있다는 점에 이미 의존하고 있으므로 이는 낙관적 롤업에 허용됩니다. 이러한 정직한 검증자는 또한 블록을 처리할 데이터를 가지고 있는지 확인하고, 정보가 오프체인에서 사용 불가능한 경우 가용성 챌린지를 발행합니다. 이러한 유형의 낙관적 롤업은 [플라즈마](/developers/docs/scaling/plasma/)라고 합니다.
+
+## 계약 코드 {#contract-code}
+
+한 번만 작성하고 덮어쓰지 않으며 온체인에서 사용 가능해야 하는 정보는 계약 코드로 저장할 수 있습니다. 이는 데이터로 "스마트 계약"을 만들고 [`EXTCODECOPY`](https://www.evm.codes/#3c?fork=shanghai)를 사용하여 정보를 읽는 것을 의미합니다. 장점은 코드 복사 비용이 상대적으로 저렴하다는 것입니다.
+
+메모리 확장 비용 외에, `EXTCODECOPY`는 계약에 처음 액세스할 때(즉 "콜드" 상태일 때) 2,600 가스, 동일한 계약에서 후속 복사 시 100 가스, 그리고 32바이트 단어당 3 가스가 추가로 듭니다. 바이트당 15.95 가스가 드는 콜데이터와 비교할 때, 이는 약 200바이트부터 더 저렴합니다. [메모리 확장 비용 공식](https://www.evm.codes/about#memoryexpansion)에 따르면, 4MB 이상의 메모리가 필요하지 않는 한, 메모리 확장 비용은 콜데이터를 추가하는 비용보다 적습니다.
+
+물론 이것은 데이터를 _읽는_ 비용일 뿐입니다. 계약을 생성하는 데에는 약 32,000 가스 + 200 가스/바이트가 듭니다. 이 방법은 동일한 정보를 여러 다른 트랜잭션에서 여러 번 읽어야 할 때만 경제적입니다.
+
+`0xEF`로 시작하지 않는 한 계약 코드는 의미가 없을 수 있습니다. `0xEF`로 시작하는 계약은 훨씬 더 엄격한 요구 사항을 가진 [이더리움 객체 형식](https://notes.ethereum.org/@ipsilon/evm-object-format-overview)으로 해석됩니다.
+
+## 이벤트 {#events}
+
+[이벤트](https://docs.alchemy.com/docs/solidity-events)는 스마트 계약에서 방출되며 오프체인 소프트웨어에 의해 읽힙니다.
+장점은 오프체인 코드가 이벤트를 수신할 수 있다는 것입니다. 비용은 [가스](https://www.evm.codes/#a0?fork=cancun)이며, 375에 데이터 바이트당 8 가스가 추가됩니다. 12 gwei/가스 및 2300 $/ETH에서, 이는 1센트에 킬로바이트당 22센트를 더한 값으로 환산됩니다.
+
+## 저장 공간 {#storage}
+
+스마트 계약은 [영구 저장 공간](https://docs.alchemy.com/docs/smart-contract-storage-layout#what-is-storage-memory)에 접근할 수 있습니다. 그러나 매우 비쌉니다. 이전에 비어 있던 저장 슬롯에 32바이트 단어를 쓰는 데 [22,100 가스가 들 수 있습니다](https://www.evm.codes/#55?fork=cancun). 12 gwei/가스 및 2300 $/ETH에서, 이는 쓰기 작업당 약 61센트, 또는 킬로바이트당 19.5달러입니다.
+
+이것은 이더리움에서 가장 비싼 형태의 저장 공간입니다.
+
+## 요약 {#summary}
+
+이 표는 다양한 옵션, 장점 및 단점을 요약합니다.
+
+| 저장 유형 | 데이터 소스 | 가용성 보장 | 온체인 가용성 | 추가 제한 사항 |
+| ----------------- | ----------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------------------- |
+| EIP-4844 블롭 | 오프체인 | [약 18일](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/p2p-interface.md#configuration)간 이더리움 보장 | 해시만 사용 가능 | |
+| 콜데이터 | 오프체인 | 이더리움 영구 보장(블록체인의 일부) | 계약에 기록된 경우, 그리고 해당 트랜잭션에서만 사용 가능 | |
+| L1 메커니즘을 사용한 오프체인 | 오프체인 | 챌린지 기간 동안 "정직한 검증자 한 명" 보장 | 해시만 | 챌린지 기간 동안에만 챌린지 메커니즘에 의해 보장됨 |
+| 계약 코드 | 온체인 또는 오프체인 | 이더리움 영구 보장(블록체인의 일부) | 네 | "임의의" 주소에 기록되며, `0xEF`로 시작할 수 없음 |
+| 이벤트 | 온체인 | 이더리움 영구 보장(블록체인의 일부) | 아니오 | |
+| 스토리지 | 온체인 | 이더리움 영구 보장(블록체인의 일부이며 덮어쓸 때까지 현재 상태 유지) | 네 | |
diff --git a/public/content/translations/ko/developers/docs/data-availability/index.md b/public/content/translations/ko/developers/docs/data-availability/index.md
new file mode 100644
index 00000000000..18fa3f223a4
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/data-availability/index.md
@@ -0,0 +1,84 @@
+---
+title: "데이터 가용성"
+description: "이더리움의 데이터 가용성과 관련된 문제 및 솔루션 개요"
+lang: ko
+---
+
+"신뢰하지 말고, 검증하라"는 이더리움에서 흔히 사용되는 격언입니다. 이는 노드가 피어로부터 수신한 블록의 모든 트랜잭션을 실행하여 제안된 변경 사항이 노드에서 독립적으로 계산한 것과 정확히 일치하는지 확인함으로써 수신한 정보의 정확성을 독립적으로 확인할 수 있다는 생각에 기반합니다. 이는 노드가 블록 전송자의 정직성을 신뢰할 필요가 없다는 것을 의미합니다. 데이터가 누락된 경우에는 이것이 불가능합니다.
+
+데이터 가용성은 블록을 검증하는 데 필요한 데이터가 모든 네트워크 참여자에게 실제로 사용 가능하다는 것에 대해 사용자가 가질 수 있는 신뢰를 의미합니다. 이더리움 레이어 1의 풀 노드에게는 이것이 비교적 간단합니다. 풀 노드는 각 블록의 모든 데이터 사본을 다운로드하는데, 다운로드를 위해서는 데이터가 사용 _가능해야_ 합니다. 데이터가 누락된 블록은 블록체인에 추가되지 않고 폐기됩니다. 이것이 "온체인 데이터 가용성"이며 모놀리식 블록체인의 특징입니다. 풀 노드는 모든 트랜잭션을 직접 다운로드하고 실행하기 때문에 유효하지 않은 트랜잭션을 수락하도록 속일 수 없습니다. 그러나 모듈식 블록체인, 레이어 2 롤업 및 라이트 클라이언트의 경우 데이터 가용성 환경이 더 복잡하여 더 정교한 검증 절차가 필요합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[블록체인 기본 사항](/developers/docs/intro-to-ethereum/)과 특히 [합의 메커니즘](/developers/docs/consensus-mechanisms/)에 대해 잘 이해하고 있어야 합니다. 또한 이 페이지에서는 독자가 [블록](/developers/docs/blocks/), [트랜잭션](/developers/docs/transactions/), [노드](/developers/docs/nodes-and-clients/), [확장 솔루션](/developers/docs/scaling/) 및 기타 관련 주제에 익숙하다고 가정합니다.
+
+## 데이터 가용성 문제 {#the-data-availability-problem}
+
+데이터 가용성 문제란 블록체인에 추가되는 트랜잭션 데이터의 요약된 형식이 실제로 유효한 트랜잭션 집합을 나타낸다는 것을 전체 네트워크에 증명해야 하지만 모든 노드가 모든 데이터를 다운로드할 필요는 없다는 것입니다. 전체 트랜잭션 데이터는 블록을 독립적으로 검증하는 데 필요하지만, 모든 노드에게 모든 트랜잭션 데이터를 다운로드하도록 요구하는 것은 확장성에 장벽이 됩니다. 데이터 가용성 문제에 대한 해결책은 데이터를 직접 다운로드하고 저장하지 않는 네트워크 참여자에게 검증을 위해 전체 트랜잭션 데이터를 사용할 수 있도록 했다는 충분한 보장을 제공하는 것을 목표로 합니다.
+
+[라이트 노드](/developers/docs/nodes-and-clients/light-clients) 및 [레이어 2 롤업](/developers/docs/scaling)은 강력한 데이터 가용성 보장이 필요하지만 트랜잭션 데이터를 직접 다운로드하고 처리할 수 없는 네트워크 참여자의 중요한 예입니다. 트랜잭션 데이터 다운로드를 피함으로써 라이트 노드를 가볍게 만들고 롤업이 효과적인 확장 솔루션이 될 수 있게 합니다.
+
+데이터 가용성은 블록 검증을 위해 상태 데이터를 다운로드하고 저장할 필요가 없는 미래의 ["상태 비저장"](/roadmap/statelessness) 이더리움 클라이언트에게도 중요한 문제입니다. 상태 비저장 클라이언트는 여전히 데이터가 _어딘가에서_ 사용 가능하고 올바르게 처리되었음을 확신해야 합니다.
+
+## 데이터 가용성 솔루션 {#data-availability-solutions}
+
+### 데이터 가용성 샘플링(DAS) {#data-availability-sampling}
+
+데이터 가용성 샘플링(DAS)은 개별 노드에 너무 많은 부담을 주지 않으면서 네트워크가 데이터의 가용성을 확인할 수 있는 방법입니다. 각 노드(스테이킹하지 않는 노드 포함)는 전체 데이터에서 무작위로 선택된 작은 하위 집합을 다운로드합니다. 샘플을 성공적으로 다운로드하면 모든 데이터를 사용할 수 있다는 것이 높은 신뢰도로 확인됩니다. 이는 데이터 소거 코딩에 의존하는데, 이는 주어진 데이터세트를 중복 정보로 확장하는 것입니다(이 작업은 데이터에 다항식으로 알려진 함수를 맞추고 추가 지점에서 해당 다항식을 평가하는 방식으로 수행됩니다). 이를 통해 필요할 때 중복 데이터에서 원본 데이터를 복구할 수 있습니다. 이 데이터 생성의 결과는 원본 데이터 중 _일부라도_ 사용할 수 없게 되면 확장된 데이터의 절반이 누락된다는 것입니다! 각 노드가 다운로드하는 데이터 샘플의 양을 조정하여 데이터의 절반 미만만 실제로 사용할 수 있는 _경우_ 각 클라이언트가 샘플링한 데이터 조각 중 하나 이상이 누락될 가능성이 _매우_ 높도록 할 수 있습니다.
+
+[전체 댕크샤딩](/roadmap/danksharding/#what-is-danksharding)이 구현된 후 DAS는 롤업 운영자가 트랜잭션 데이터를 사용할 수 있도록 보장하는 데 사용됩니다. 이더리움 노드는 위에서 설명한 중복 체계를 사용하여 블롭에 제공된 트랜잭션 데이터를 무작위로 샘플링하여 모든 데이터가 존재하는지 확인합니다. 라이트 클라이언트를 보호하기 위해 블록 생성자가 모든 데이터를 사용할 수 있도록 동일한 기술을 사용할 수도 있습니다. 마찬가지로 [제안자-빌더 분리](/roadmap/pbs) 하에서는 블록 빌더만 전체 블록을 처리해야 하며, 다른 검증자는 데이터 가용성 샘플링을 사용하여 검증하게 됩니다.
+
+### 데이터 가용성 위원회 {#data-availability-committees}
+
+데이터 가용성 위원회(DAC)는 데이터 가용성을 제공하거나 증명하는 신뢰할 수 있는 당사자입니다. DAC는 DAS 대신 사용되거나 [DAS와 함께](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) 사용될 수 있습니다. 위원회를 통해 제공되는 보안 보증은 특정 설정에 따라 다릅니다. 예를 들어, 이더리움은 무작위로 샘플링된 검증자 하위 집합을 사용하여 라이트 노드에 대한 데이터 가용성을 증명합니다.
+
+DAC는 일부 밸리디움에서도 사용됩니다. DAC는 데이터 사본을 오프라인으로 저장하는 신뢰할 수 있는 노드 집합입니다. 분쟁이 발생할 경우 DAC는 데이터를 사용할 수 있도록 해야 합니다. DAC의 구성원은 또한 해당 데이터가 실제로 사용 가능하다는 것을 증명하기 위해 온체인 증명을 게시합니다. 일부 밸리디움은 DAC를 지분 증명(PoS) 검증인 시스템으로 대체합니다. 여기서 누구나 검증자가 되어 데이터를 오프체인에 저장할 수 있습니다. 그러나 이들은 스마트 계약에 예치되는 '본드'를 제공해야 합니다. 검증자가 데이터를 보류하는 것과 같은 악의적인 행동이 발생할 경우, 본드가 삭감될 수 있습니다. 지분 증명 데이터 가용성 위원회는 정직한 행동을 직접적으로 장려하기 때문에 일반 DAC보다 훨씬 더 안전합니다.
+
+## 데이터 가용성 및 라이트 노드 {#data-availability-and-light-nodes}
+
+[라이트 노드](/developers/docs/nodes-and-clients/light-clients)는 블록 데이터를 다운로드하지 않고 수신하는 블록 헤더의 정확성을 검증해야 합니다. 이러한 가벼움의 대가는 풀 노드가 하는 것처럼 로컬에서 트랜잭션을 다시 실행하여 블록 헤더를 독립적으로 검증할 수 없다는 것입니다.
+
+이더리움 라이트 노드는 동기화 위원회에 할당된 512명의 검증자로 구성된 무작위 집합을 신뢰합니다. 동기화 위원회는 암호화 서명을 사용하여 헤더의 데이터가 정확하다는 신호를 라이트 클라이언트에 보내는 DAC 역할을 합니다. 매일 동기화 위원회는 새로 고쳐집니다. 각 블록 헤더는 라이트 노드에게 _다음_ 블록에 서명할 것으로 예상되는 검증자를 알려주므로 실제 동기화 위원회를 사칭하는 악의적인 그룹을 신뢰하도록 속일 수 없습니다.
+
+그러나 공격자가 어떻게든 악의적인 블록 헤더를 라이트 클라이언트에게 전달하고 정직한 동기화 위원회가 서명했다고 확신시킨다면 어떻게 될까요? 이 경우 공격자는 유효하지 않은 트랜잭션을 포함할 수 있으며, 라이트 클라이언트는 블록 헤더에 요약된 모든 상태 변경을 독립적으로 확인하지 않기 때문에 이를 맹목적으로 수락하게 됩니다. 이를 방지하기 위해 라이트 클라이언트는 사기 증명을 사용할 수 있습니다.
+
+이러한 사기 증명은 풀 노드가 네트워크를 통해 유효하지 않은 상태 전환이 전파되는 것을 보고 제안된 상태 전환이 주어진 트랜잭션 집합에서 발생할 수 없음을 보여주는 작은 데이터 조각을 신속하게 생성하여 해당 데이터를 피어에게 브로드캐스트하는 방식으로 작동합니다. 라이트 노드는 이러한 사기 증명을 포착하여 잘못된 블록 헤더를 폐기하고 풀 노드와 동일한 정직한 체인에 머무르도록 보장할 수 있습니다.
+
+이는 풀 노드가 전체 트랜잭션 데이터에 접근할 수 있어야 가능합니다. 잘못된 블록 헤더를 브로드캐스트하고 트랜잭션 데이터를 사용할 수 없게 만드는 공격자는 풀 노드가 사기 증명을 생성하는 것을 막을 수 있습니다. 풀 노드는 잘못된 블록에 대한 경고 신호를 보낼 수는 있지만, 증명을 생성할 데이터가 제공되지 않았기 때문에 증거로 경고를 뒷받침할 수는 없습니다!
+
+이 데이터 가용성 문제에 대한 해결책은 DAS입니다. 라이트 노드는 전체 상태 데이터의 아주 작은 무작위 청크를 다운로드하고 이 샘플을 사용하여 전체 데이터 세트가 사용 가능한지 확인합니다. N개의 무작위 청크를 다운로드한 후 전체 데이터 가용성을 잘못 가정할 실제 가능성을 계산할 수 있습니다([100개 청크의 경우 확률은 10^-30](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html)으로, 즉 믿을 수 없을 정도로 낮습니다).
+
+이 시나리오에서도 단 몇 바이트만 보류하는 공격은 무작위 데이터 요청을 하는 클라이언트에게 눈에 띄지 않을 수 있습니다. 소거 코딩은 제안된 상태 변경을 확인하는 데 사용할 수 있는 작은 누락 데이터 조각을 재구성하여 이 문제를 해결합니다. 그런 다음 재구성된 데이터를 사용하여 사기 증명을 구성하여 라이트 노드가 잘못된 헤더를 수락하는 것을 방지할 수 있습니다.
+
+**참고:** DAS 및 사기 증명은 아직 지분 증명 이더리움 라이트 클라이언트에 구현되지 않았지만, ZK-SNARK 기반 증명 형태일 가능성이 높은 로드맵에 포함되어 있습니다. 현재의 라이트 클라이언트는 DAC의 한 형태에 의존합니다. 즉, 동기화 위원회의 신원을 확인한 다음 수신한 서명된 블록 헤더를 신뢰합니다.
+
+## 데이터 가용성 및 레이어 2 롤업 {#data-availability-and-layer-2-rollups}
+
+[롤업](/glossary/#rollups)과 같은 [레이어 2 확장 솔루션](/layer-2/)은 트랜잭션을 오프체인으로 처리하여 트랜잭션 비용을 줄이고 이더리움의 처리량을 높입니다. 롤업 트랜잭션은 압축되어 이더리움에 일괄적으로 게시됩니다. 배치는 이더리움의 단일 트랜잭션에서 수천 개의 개별 오프체인 트랜잭션을 나타냅니다. 이를 통해 기본 레이어의 혼잡을 줄이고 사용자 수수료를 절감할 수 있습니다.
+
+그러나 이더리움에 게시된 '요약' 트랜잭션을 신뢰할 수 있으려면 제안된 상태 변경이 독립적으로 검증될 수 있고 모든 개별 오프체인 트랜잭션을 적용한 결과임이 확인되어야 합니다. 롤업 운영자가 이 검증을 위해 트랜잭션 데이터를 제공하지 않으면 이더리움에 잘못된 데이터를 전송할 수 있습니다.
+
+[낙관적 롤업](/developers/docs/scaling/optimistic-rollups/)은 압축된 트랜잭션 데이터를 이더리움에 게시하고 독립적인 검증자가 데이터를 확인할 수 있도록 일정 시간(보통 7일) 동안 기다립니다. 누군가 문제를 발견하면 사기 증명을 생성하여 롤업에 이의를 제기할 수 있습니다. 이렇게 하면 체인이 롤백되고 유효하지 않은 블록은 생략됩니다. 이는 데이터가 사용 가능한 경우에만 가능합니다. 현재 낙관적 롤업이 L1에 트랜잭션 데이터를 게시하는 방법에는 두 가지가 있습니다. 일부 롤업은 온체인에 영구적으로 존재하는 `CALLDATA`로 데이터를 영구적으로 사용할 수 있도록 합니다. EIP-4844가 구현되면서 일부 롤업은 트랜잭션 데이터를 더 저렴한 블롭 저장 공간에 게시합니다. 이것은 영구적인 저장 공간이 아닙니다. 독립 검증자는 이더리움 레이어 1에서 데이터가 삭제되기 전 약 18일 이내에 블롭을 쿼리하고 이의를 제기해야 합니다. 데이터 가용성은 이더리움 프로토콜에 의해 해당 짧은 고정 기간 동안만 보장됩니다. 그 이후에는 이더리움 생태계의 다른 주체들의 책임이 됩니다. 모든 노드는 블롭 데이터의 작은 무작위 샘플을 다운로드하여 DAS를 통해 데이터 가용성을 확인할 수 있습니다.
+
+[영지식(ZK) 롤업](/developers/docs/scaling/zk-rollups)은 [영지식 유효성 증명](/glossary/#zk-proof)이 상태 전환의 정확성을 보장하므로 트랜잭션 데이터를 게시할 필요가 없습니다. 그러나 상태 데이터에 접근하지 않으면 ZK 롤업의 기능(또는 상호작용)을 보장할 수 없기 때문에 데이터 가용성은 여전히 문제입니다. 예를 들어, 운영자가 롤업 상태에 대한 세부 정보를 보류하면 사용자는 자신의 잔액을 알 수 없습니다. 또한 새로 추가된 블록에 포함된 정보를 사용하여 상태 업데이트를 수행할 수 없습니다.
+
+## 데이터 가용성 대 데이터 검색 가능성 {#data-availability-vs-data-retrievability}
+
+데이터 가용성은 데이터 검색 가능성과 다릅니다. 데이터 가용성은 풀 노드가 특정 블록과 관련된 전체 트랜잭션 집합에 접근하고 이를 검증할 수 있다는 보장입니다. 그렇다고 해서 데이터에 영원히 접근할 수 있다는 의미는 아닙니다.
+
+데이터 검색 가능성은 노드가 블록체인에서 과거 정보를 검색하는 기능입니다. 이 과거 데이터는 새 블록을 검증하는 데 필요하지 않으며, 제네시스 블록에서 풀 노드를 동기화하거나 특정 과거 요청을 처리하는 데만 필요합니다.
+
+핵심 이더리움 프로토콜은 데이터 검색 가능성이 아닌 데이터 가용성에 주로 관심이 있습니다. 데이터 검색 가능성은 제3자가 운영하는 소수의 아카이브 노드를 통해 제공되거나 [포털 네트워크](https://www.ethportal.net/)와 같은 탈중앙화 파일 저장소를 사용하여 네트워크 전체에 분산될 수 있습니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [데이터 가용성이란 무엇인가?](https://medium.com/blockchain-capital-blog/wtf-is-data-availability-80c2c95ded0f)
+- [데이터 가용성이란 무엇인가?](https://coinmarketcap.com/academy/article/what-is-data-availability)
+- [데이터 가용성 확인 입문](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html)
+- [샤딩 + DAS 제안에 대한 설명](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling)
+- [데이터 가용성 및 소거 코딩에 대한 참고 사항](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding#can-an-attacker-not-circumvent-this-scheme-by-releasing-a-full-unavailable-block-but-then-only-releasing-individual-bits-of-data-as-clients-query-for-them)
+- [데이터 가용성 위원회.](https://medium.com/starkware/data-availability-e5564c416424)
+- [지분 증명 데이터 가용성 위원회.](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)
+- [데이터 검색 가능성 문제에 대한 해결책](https://notes.ethereum.org/@vbuterin/data_sharding_roadmap#Who-would-store-historical-data-under-sharding)
+- [데이터 가용성: 또는 롤업이 어떻게 걱정을 멈추고 이더리움을 사랑하게 되었는가](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum)
+- [EIP-7623: 콜데이터 비용 증가](https://web.archive.org/web/20250515194659/https://research.2077.xyz/eip-7623-increase-calldata-cost)
diff --git a/public/content/translations/ko/developers/docs/data-structures-and-encoding/index.md b/public/content/translations/ko/developers/docs/data-structures-and-encoding/index.md
new file mode 100644
index 00000000000..22362dde1b9
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/data-structures-and-encoding/index.md
@@ -0,0 +1,32 @@
+---
+title: "데이터 구조 및 인코딩"
+description: "기본적인 이더리움 데이터 구조에 대한 개요입니다."
+lang: ko
+sidebarDepth: 2
+---
+
+이더리움은 대량의 데이터를 생성, 저장 및 전송합니다. 누구나 비교적 평범한 소비자 수준의 하드웨어에서 [노드를 실행](/run-a-node/)할 수 있도록 이 데이터는 표준화되고 메모리 효율적인 방식으로 형식화되어야 합니다. 이를 위해 이더리움 스택에서는 몇 가지 특정 데이터 구조가 사용됩니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이더리움의 기본 사항과 [클라이언트 소프트웨어](/developers/docs/nodes-and-clients/)를 이해해야 합니다. 네트워킹 레이어와 [이더리움 백서](/whitepaper/)에 익숙해지는 것을 권장합니다.
+
+## 데이터 구조 {#data-structures}
+
+### 패트리샤 머클 트라이 {#patricia-merkle-tries}
+
+패트리샤 머클 트라이는 키-값 쌍을 결정론적이고 암호학적으로 인증된 트라이로 인코딩하는 구조입니다. 이는 이더리움의 실행 레이어 전반에 걸쳐 광범위하게 사용됩니다.
+
+[패트리샤 머클 트라이에 대해 더 알아보기](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
+
+### 재귀 길이 접두어 {#recursive-length-prefix}
+
+재귀 길이 접두어(RLP)는 이더리움의 실행 레이어 전반에 걸쳐 광범위하게 사용되는 직렬화 방법입니다.
+
+[RLP에 대해 더 알아보기](/developers/docs/data-structures-and-encoding/rlp)
+
+### 단순 직렬화 {#simple-serialize}
+
+단순 직렬화(SSZ)는 머클화와의 호환성으로 인해 이더리움의 합의 레이어에서 주로 사용되는 직렬화 형식입니다.
+
+[SSZ에 대해 더 알아보기](/developers/docs/data-structures-and-encoding/ssz)
diff --git a/public/content/translations/ko/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md b/public/content/translations/ko/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
new file mode 100644
index 00000000000..c4d5694a467
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md
@@ -0,0 +1,266 @@
+---
+title: "머클 패트리샤 트라이"
+description: "머클 패트리샤 트라이 소개."
+lang: ko
+sidebarDepth: 2
+---
+
+이더리움의 상태 (전체 계정, 잔액, 스마트 컨트랙트의 총합)는 일반적으로 컴퓨터 과학에서 머클 트리라고 알려진 데이터 구조의 특수한 버전에 인코딩됩니다. 이 구조는 트리에 얽혀있는 모든 개별 데이터 조각들 사이에 검증 가능한 관계를 생성하므로 암호학의 많은 응용 프로그램에 유용하며, 데이터에 대한 것들을 증명하는 데 사용할 수 있는 단일 **루트** 값을 생성합니다.
+
+이더리움의 데이터 구조는 '수정된 머클-패트리샤 트라이'입니다. 이는 PATRICIA(영숫자로 코딩된 정보 검색을 위한 실용적인 알고리즘)의 일부 기능을 차용했고, 이더리움 상태를 구성하는 항목들의 효율적인 데이터 re**trie**val(검색)을 위해 설계되었기 때문에 붙여진 이름입니다.
+
+머클-패트리샤 트라이는 결정론적이며 암호학적으로 검증 가능합니다. 상태 루트를 생성하는 유일한 방법은 상태의 각 개별 조각으로부터 계산하는 것이며, 동일한 두 상태는 루트 해시와 그에 이르는 해시(_머클 증명_)를 비교하여 쉽게 증명할 수 있습니다. 반대로, 서로 다른 상태가 같은 루트 해시를 가지는 일은 없으며, 상태 값이 조금이라도 바뀌면 루트 해시도 반드시 달라집니다. 이론적으로, 이 구조는 삽입, 조회 및 삭제에 대해 `O(log(n))` 효율성이라는 '성배'를 제공합니다.
+
+가까운 미래에 이더리움은 [버클 트리](/roadmap/verkle-trees) 구조로 마이그레이션할 계획이며, 이는 향후 프로토콜 개선을 위한 많은 새로운 가능성을 열 것입니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 [해시](https://en.wikipedia.org/wiki/Hash_function), [머클 트리](https://en.wikipedia.org/wiki/Merkle_tree), [트라이](https://en.wikipedia.org/wiki/Trie), [직렬화](https://en.wikipedia.org/wiki/Serialization)에 대한 기본 지식이 있으면 도움이 됩니다. 이 문서는 기본 [래딕스 트리](https://en.wikipedia.org/wiki/Radix_tree)에 대한 설명으로 시작하여 이더리움의 더 최적화된 데이터 구조에 필요한 수정 사항을 점진적으로 소개합니다.
+
+## 기본 래딕스 트라이 {#basic-radix-tries}
+
+기본적인 radix trie에서 모든 노드는 다음과 같은 형태를 가집니다:
+
+```
+ [i_0, i_1 ... i_n, value]
+```
+
+여기서 `i_0 ...` `i_n`은 알파벳의 기호(주로 이진 또는 16진수)를 나타내고, `value`는 노드의 터미널 값이며, `i_0, i_1 ...`에 있는 값은 `i_n` 슬롯은 `NULL`이거나 다른 노드에 대한 포인터(이 경우 해시)입니다. 이것은 기본적인 `(키, 값)` 저장소를 형성합니다.
+
+키-값 쌍 집합에 대한 순서를 유지하기 위해 래딕스 트리 데이터 구조를 사용한다고 가정해 보겠습니다. 트라이에서 `dog` 키에 현재 매핑된 값을 찾으려면 먼저 `dog`를 알파벳 문자로 변환(`64 6f 67`이 됨)한 다음 해당 경로를 따라 트라이를 내려가 값을 찾습니다. 즉, 플랫 키/값 DB에서 루트 해시를 조회하여 트라이의 루트 노드를 찾는 것으로 시작합니다. 이는 다른 노드를 가리키는 키의 배열로 표시됩니다. 인덱스 `6`의 값을 키로 사용하여 플랫 키/값 DB에서 조회하여 한 수준 아래의 노드를 가져옵니다. 그런 다음 인덱스 `4`를 선택하여 다음 값을 조회하고, 다음으로 인덱스 `6`을 선택하는 식으로 `root -> 6 -> 4 -> 6 -> 15 -> 6 -> 7` 경로를 따를 때까지 계속한 다음 노드의 값을 조회하고 결과를 반환합니다.
+
+'트라이'에서 무언가를 조회하는 것과 기본 플랫 키/값 'DB'에서 조회하는 것 사이에는 차이가 있습니다. 둘 다 키/값 배열을 정의하지만, 기본 DB는 키를 한 단계로 조회하는 전통적인 방식을 사용할 수 있습니다. 트라이에서 키를 조회하려면 위에서 설명한 최종 값에 도달하기 위해 여러 번의 기본 DB 조회가 필요합니다. 모호함을 없애기 위해 후자를 `path`라고 부르겠습니다.
+
+래딕스 트라이의 업데이트 및 삭제 작업은 다음과 같이 정의할 수 있습니다.
+
+```python
+ def update(node_hash, path, value):
+ curnode = db.get(node_hash) if node_hash else [NULL] * 17
+ newnode = curnode.copy()
+ if path == "":
+ newnode[-1] = value
+ else:
+ newindex = update(curnode[path[0]], path[1:], value)
+ newnode[path[0]] = newindex
+ db.put(hash(newnode), newnode)
+ return hash(newnode)
+
+ def delete(node_hash, path):
+ if node_hash is NULL:
+ return NULL
+ else:
+ curnode = db.get(node_hash)
+ newnode = curnode.copy()
+ if path == "":
+ newnode[-1] = NULL
+ else:
+ newindex = delete(curnode[path[0]], path[1:])
+ newnode[path[0]] = newindex
+
+ if all(x is NULL for x in newnode):
+ return NULL
+ else:
+ db.put(hash(newnode), newnode)
+ return hash(newnode)
+```
+
+'머클' 래딕스 트리는 결정론적으로 생성된 암호화 해시 다이제스트를 사용하여 노드를 연결하여 구축됩니다. 이 콘텐츠 주소 지정(키/값 DB에서 `key == keccak256(rlp(value))`)은 저장된 데이터의 암호화 무결성을 보장합니다. 주어진 트라이의 루트 해시가 공개적으로 알려진 경우, 기본 리프 데이터에 접근할 수 있는 사람은 누구나 특정 값을 트리 루트에 연결하는 각 노드의 해시를 제공하여 트라이가 특정 경로에 주어진 값을 포함한다는 증명을 구성할 수 있습니다.
+
+루트 해시는 궁극적으로 그 아래의 모든 해시를 기반으로 하므로 공격자가 존재하지 않는 `(path, value)` 쌍에 대한 증명을 제공하는 것은 불가능합니다. 기본적인 수정 사항이 있다면 루트 해시가 변경됩니다. 해시는 해싱 함수의 프리이미지 저항성에 의해 보호되는 데이터의 구조적 정보에 대한 압축된 표현이라고 생각할 수 있습니다.
+
+래딕스 트리의 원자 단위(예: 단일 16진수 문자 또는 4비트 이진수)를 '니블(nibble)'이라고 부릅니다. 위에서 설명한 대로 한 번에 한 니블씩 경로를 순회하는 동안 노드는 최대 16개의 자식을 참조할 수 있지만 `value` 요소를 포함합니다. 따라서 이를 길이 17의 배열로 표현합니다. 이 17개 요소 배열을 '브랜치 노드'라고 부릅니다.
+
+## 머클 패트리샤 트라이 {#merkle-patricia-trees}
+
+래딕스 트라이에는 한 가지 주요한 한계가 있습니다. 바로 비효율적이라는 점입니다. 이더리움에서처럼 경로가 64자 길이(`bytes32`의 니블 수)인 `(path, value)` 바인딩 하나를 저장하려면 문자당 한 레벨을 저장하기 위해 1킬로바이트 이상의 추가 공간이 필요하며, 각 조회 또는 삭제에는 전체 64단계가 소요됩니다. 다음에 소개되는 패트리샤 트라이는 이 문제를 해결합니다.
+
+### 최적화 {#optimization}
+
+머클 패트리샤 트라이의 노드는 다음 중 하나입니다.
+
+1. `NULL` (빈 문자열로 표시)
+2. `branch` 17개 항목 노드 `[ v0 ...` v15, vt ]`
+3. `leaf` 2개 항목 노드 `[ encodedPath, value ]`
+4. `extension` 2개 항목 노드 `[ encodedPath, key ]`
+
+64자 경로를 사용하면 트라이의 처음 몇 개 레이어를 순회한 후, 적어도 일부 경로에서는 분기 경로가 존재하지 않는 노드에 도달하는 것이 불가피합니다. 경로를 따라 최대 15개의 희소한 `NULL` 노드를 생성하지 않도록 `[ encodedPath, key ]` 형식의 `extension` 노드를 설정하여 내려가는 과정을 단축합니다. 여기서 `encodedPath`는 건너뛸 '부분 경로'(아래 설명된 간결한 인코딩 사용)를 포함하고, `key`는 다음 DB 조회를 위한 것입니다.
+
+`encodedPath`의 첫 번째 니블에 있는 플래그로 표시될 수 있는 `leaf` 노드의 경우, 경로는 모든 이전 노드의 경로 조각을 인코딩하며 `value`를 직접 조회할 수 있습니다.
+
+그러나 위의 최적화는 모호성을 야기합니다.
+
+경로를 니블 단위로 순회할 때 순회할 니블의 수가 홀수가 될 수 있지만, 모든 데이터는 `bytes` 형식으로 저장됩니다. 예를 들어, 니블 `1`과 니블 `01`을 구별할 수 없습니다(둘 다 `<01>`로 저장되어야 함). 홀수 길이를 지정하기 위해 부분 경로에는 플래그가 접두사로 붙습니다.
+
+### 사양: 선택적 종결자가 있는 16진수 시퀀스의 간결한 인코딩 {#specification}
+
+위에서 설명한 _홀수 대 짝수 남은 부분 경로 길이_와 _리프 대 확장 노드_의 플래그 지정은 모두 2개 항목 노드의 부분 경로의 첫 번째 니블에 있습니다. 결과는 다음과 같습니다.
+
+| 16진수 문자 | 비트 | 노드 유형 | 경로 길이 |
+| ------- | ---- | -------------------------- | ----- |
+| 0 | 0000 | 확장 | 짝수 |
+| 1 | 0001 | 확장 | 홀수 |
+| 2 | 0010 | 종결 (리프) | 짝수 |
+| 3 | 0011 | 종결 (리프) | 홀수 |
+
+남은 경로 길이가 짝수(`0` 또는 `2`)인 경우, 항상 다른 `0` '패딩' 니블이 뒤따릅니다.
+
+```python
+ def compact_encode(hexarray):
+ term = 1 if hexarray[-1] == 16 else 0
+ if term:
+ hexarray = hexarray[:-1]
+ oddlen = len(hexarray) % 2
+ flags = 2 * term + oddlen
+ if oddlen:
+ hexarray = [flags] + hexarray
+ else:
+ hexarray = [flags] + [0] + hexarray
+ # hexarray now has an even length whose first nibble is the flags.
+ o = ""
+ for i in range(0, len(hexarray), 2):
+ o += chr(16 * hexarray[i] + hexarray[i + 1])
+ return o
+```
+
+예시:
+
+```python
+ > [1, 2, 3, 4, 5, ...]
+ '11 23 45'
+ > [0, 1, 2, 3, 4, 5, ...]
+ '00 01 23 45'
+ > [0, f, 1, c, b, 8, 10]
+ '20 0f 1c b8'
+ > [f, 1, c, b, 8, 10]
+ '3f 1c b8'
+```
+
+다음은 머클 패트리샤 트라이에서 노드를 가져오는 확장 코드입니다.
+
+```python
+ def get_helper(node_hash, path):
+ if path == []:
+ return node_hash
+ if node_hash == "":
+ return ""
+ curnode = rlp.decode(node_hash if len(node_hash) < 32 else db.get(node_hash))
+ if len(curnode) == 2:
+ (k2, v2) = curnode
+ k2 = compact_decode(k2)
+ if k2 == path[: len(k2)]:
+ return get(v2, path[len(k2) :])
+ else:
+ return ""
+ elif len(curnode) == 17:
+ return get_helper(curnode[path[0]], path[1:])
+
+ def get(node_hash, path):
+ path2 = []
+ for i in range(len(path)):
+ path2.push(int(ord(path[i]) / 16))
+ path2.push(ord(path[i]) % 16)
+ path2.push(16)
+ return get_helper(node_hash, path2)
+```
+
+### 트라이 예시 {#example-trie}
+
+네 개의 경로/값 쌍 `('do', 'verb')`, `('dog', 'puppy')`, `('doge', 'coins')`, `('horse', 'stallion')`을 포함하는 트라이를 원한다고 가정해 보겠습니다.
+
+먼저, 경로와 값을 모두 `bytes`로 변환합니다. 아래에서 _경로_의 실제 바이트 표현은 `<>`로 표시되지만, _값_은 이해를 돕기 위해 여전히 문자열로 표시되며 `''`로 표시됩니다(실제로는 이들도 `bytes`가 됩니다).
+
+```
+ <64 6f> : 'verb'
+ <64 6f 67> : 'puppy'
+ <64 6f 67 65> : 'coins'
+ <68 6f 72 73 65> : 'stallion'
+```
+
+이제 기본 DB에서 다음 키/값 쌍으로 이러한 트라이를 구축합니다.
+
+```
+ rootHash: [ <16>, hashA ]
+ hashA: [ <>, <>, <>, <>, hashB, <>, <>, <>, [ <20 6f 72 73 65>, 'stallion' ], <>, <>, <>, <>, <>, <>, <>, <> ]
+ hashB: [ <00 6f>, hashC ]
+ hashC: [ <>, <>, <>, <>, <>, <>, hashD, <>, <>, <>, <>, <>, <>, <>, <>, <>, 'verb' ]
+ hashD: [ <17>, [ <>, <>, <>, <>, <>, <>, [ <35>, 'coins' ], <>, <>, <>, <>, <>, <>, <>, <>, <>, 'puppy' ] ]
+```
+
+한 노드가 다른 노드 내에서 참조될 때 포함되는 것은 `len(rlp.encode(node)) >= 32`인 경우 `keccak256(rlp.encode(node))`이고, 그렇지 않으면 `node`입니다. 여기서 `rlp.encode`는 [RLP](/developers/docs/data-structures-and-encoding/rlp) 인코딩 함수입니다.
+
+트라이를 업데이트할 때, 새로 생성된 노드의 길이가 32보다 크거나 같은 경우 영구 조회 테이블에 키/값 쌍 `(keccak256(x), x)`를 저장해야 합니다. 그러나 노드가 그보다 짧으면 f(x) = x 함수는 가역적이므로 아무것도 저장할 필요가 없습니다.
+
+## 이더리움의 트라이 {#tries-in-ethereum}
+
+이더리움 실행 레이어의 모든 머클 트라이는 머클 패트리샤 트라이를 사용합니다.
+
+블록 헤더에는 이 트라이들 중 3개의 루트가 있습니다.
+
+1. stateRoot
+2. transactionsRoot
+3. receiptsRoot
+
+### 상태 트라이 {#state-trie}
+
+하나의 전역 상태 트라이가 있으며, 클라이언트가 블록을 처리할 때마다 업데이트됩니다. 여기서 `path`는 항상 `keccak256(ethereumAddress)`이고 `value`는 항상 `rlp(ethereumAccount)`입니다. 더 구체적으로, 이더리움 `account`는 `[nonce,balance,storageRoot,codeHash]`의 4개 항목 배열입니다. 이 시점에서 이 `storageRoot`는 다른 패트리샤 트라이의 루트라는 점을 주목할 가치가 있습니다.
+
+### 스토리지 트라이 {#storage-trie}
+
+스토리지 트라이는 _모든_ 컨트랙트 데이터가 있는 곳입니다. 각 계정마다 별도의 스토리지 트라이가 있습니다. 주어진 주소의 특정 스토리지 위치에서 값을 검색하려면 스토리지 주소, 스토리지에 저장된 데이터의 정수 위치 및 블록 ID가 필요합니다. 그런 다음 이를 JSON-RPC API에 정의된 `eth_getStorageAt`에 인수로 전달할 수 있습니다. 예를 들어, 주소 `0x295a70b2de5e3953354a6a8344e616ed314d7251`의 스토리지 슬롯 0에 있는 데이터를 검색하려면 다음과 같이 합니다.
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545
+
+{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"}
+
+```
+
+스토리지의 다른 요소를 검색하는 것은 스토리지 트라이에서의 위치를 먼저 계산해야 하므로 약간 더 복잡합니다. 위치는 주소와 스토리지 위치의 `keccak256` 해시로 계산되며, 둘 다 32바이트 길이가 되도록 왼쪽에 0으로 채워집니다. 예를 들어, 주소 `0x391694e7e0b0cce554cb130d723a9d27458f9298`의 스토리지 슬롯 1에 있는 데이터의 위치는 다음과 같습니다.
+
+```python
+keccak256(decodeHex("000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"))
+```
+
+Geth 콘솔에서는 다음과 같이 계산할 수 있습니다.
+
+```
+> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"
+undefined
+> web3.sha3(key, {"encoding": "hex"})
+"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"
+```
+
+`path`는 따라서 `keccak256(<6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9>)`입니다. 이제 이것을 사용하여 이전과 같이 스토리지 트라이에서 데이터를 검색할 수 있습니다.
+
+```bash
+curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545
+
+{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}
+```
+
+참고: 이더리움 계정의 `storageRoot`는 컨트랙트 계정이 아닌 경우 기본적으로 비어 있습니다.
+
+### 트랜잭션 트라이 {#transaction-trie}
+
+모든 블록에는 별도의 트랜잭션 트라이가 있으며, 여기에도 `(키, 값)` 쌍이 저장됩니다. 여기서 경로는 `rlp(transactionIndex)`이며, 이는 다음에 의해 결정되는 값에 해당하는 키를 나타냅니다.
+
+```python
+if legacyTx:
+ value = rlp(tx)
+else:
+ value = TxType | encode(tx)
+```
+
+이에 대한 자세한 내용은 [EIP 2718](https://eips.ethereum.org/EIPS/eip-2718) 문서에서 찾을 수 있습니다.
+
+### 영수증 트라이 {#receipts-trie}
+
+모든 블록에는 자체 영수증 트라이가 있습니다. 여기서 `path`는 `rlp(transactionIndex)`입니다. `transactionIndex`는 포함된 블록 내에서의 인덱스입니다. 영수증 트라이는 절대 업데이트되지 않습니다. 트랜잭션 트라이와 유사하게 현재 및 레거시 영수증이 있습니다. 영수증 트라이에서 특정 영수증을 쿼리하려면 해당 블록 내 트랜잭션의 인덱스, 영수증 페이로드 및 트랜잭션 유형이 필요합니다. 반환된 영수증은 `TransactionType`과 `ReceiptPayload`의 연결로 정의되는 `Receipt` 유형이거나 `rlp([status, cumulativeGasUsed, logsBloom, logs])`로 정의되는 `LegacyReceipt` 유형일 수 있습니다.
+
+이에 대한 자세한 내용은 [EIP 2718](https://eips.ethereum.org/EIPS/eip-2718) 문서에서 찾을 수 있습니다.
+
+## 추가 정보 {#further-reading}
+
+- [수정된 머클 패트리샤 트라이 — 이더리움이 상태를 저장하는 방법](https://medium.com/codechain/modified-merkle-patricia-trie-how-ethereum-saves-a-state-e6d7555078dd)
+- [이더리움의 머클링](https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/)
+- [이더리움 트라이 이해하기](https://easythereentropy.wordpress.com/2014/06/04/understanding-the-ethereum-trie/)
diff --git a/public/content/translations/ko/developers/docs/data-structures-and-encoding/rlp/index.md b/public/content/translations/ko/developers/docs/data-structures-and-encoding/rlp/index.md
new file mode 100644
index 00000000000..bd47f082432
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/data-structures-and-encoding/rlp/index.md
@@ -0,0 +1,163 @@
+---
+title: "재귀 길이 접두어(RLP) 직렬화"
+description: "이더리움 실행 레이어의 rlp 인코딩에 대한 정의입니다."
+lang: ko
+sidebarDepth: 2
+---
+
+재귀 길이 접두어(RLP) 직렬화는 이더리움의 실행 클라이언트에서 광범위하게 사용됩니다. RLP는 공간 효율적인 형식으로 노드 간의 데이터 전송을 표준화합니다. RLP의 목적은 임의로 중첩된 바이너리 데이터 배열을 인코딩하는 것이며, 이더리움의 실행 레이어에서 객체를 직렬화하는 데 사용되는 기본 인코딩 방법입니다. RLP의 주요 목적은 구조를 인코딩하는 것입니다. 양의 정수를 제외하고 RLP는 특정 데이터 유형(예: 문자열, 부동 소수점)의 인코딩을 상위 수준 프로토콜에 위임합니다. 양의 정수는 선행 0이 없는 빅엔디언 바이너리 형식으로 표시되어야 합니다(따라서 정수 값 0은 빈 바이트 배열과 동일합니다). 선행 0이 있는 역직렬화된 양의 정수는 RLP를 사용하는 모든 상위 프로토콜에서 유효하지 않은 것으로 처리되어야 합니다.
+
+자세한 내용은 [이더리움 황서(부록 B)](https://ethereum.github.io/yellowpaper/paper.pdf#page=19)를 참조하세요.
+
+RLP를 사용하여 사전을 인코딩하려면 다음과 같은 두 가지 표준 형식을 사용할 수 있습니다.
+
+- 사전순으로 정렬된 키와 함께 `[[k1,v1],[k2,v2]...]` 사용
+- 이더리움에서처럼 상위 수준의 패트리샤 트리 인코딩 사용
+
+## 정의 {#definition}
+
+RLP 인코딩 함수는 항목을 입력받습니다. 항목은 다음과 같이 정의됩니다:
+
+- 문자열(즉, 바이트 배열)은 항목입니다
+- 항목의 리스트는 항목입니다
+- 양의 정수는 항목입니다
+
+예를 들어, 다음은 모두 항목입니다.
+
+- 빈 문자열;
+- 'cat'이라는 단어를 포함하는 문자열;
+- 임의의 개수의 문자열을 포함하는 리스트;
+- 그리고 `["cat", ["puppy", "cow"], "horse", [[]], "pig", [""], "sheep"]`와 같은 더 복잡한 자료 구조.
+- 숫자 `100`
+
+이 페이지의 나머지 컨텍스트에서 '문자열'은 "특정 바이트 수의 이진 데이터"를 의미합니다. 특별한 인코딩은 사용되지 않으며, 문자열의 내용에 대한 정보는 암시되지 않습니다(최소 크기가 아닌 양의 정수에 대한 규칙에서 요구하는 경우는 제외).
+
+RLP 인코딩은 다음과 같이 정의됩니다.
+
+- 양의 정수의 경우, 빅엔디언으로 해석했을 때 해당 정수가 되는 가장 짧은 바이트 배열로 변환된 다음, 아래 규칙에 따라 문자열로 인코딩됩니다.
+- `[0x00, 0x7f]`(10진수 `[0, 127]`) 범위의 값을 갖는 단일 바이트의 경우, 해당 바이트 자체가 RLP 인코딩입니다.
+- 그렇지 않고 문자열의 길이가 0-55바이트인 경우, RLP 인코딩은 **0x80**(10진수 128) 값에 문자열의 길이를 더한 단일 바이트와 그 뒤에 오는 문자열로 구성됩니다. 따라서 첫 번째 바이트의 범위는 `[0x80, 0xb7]`(10진수 `[128, 183]`)입니다.
+- 문자열 길이가 55바이트보다 긴 경우, RLP 인코딩은 **0xb7**(10진수 183) 값에 문자열 길이를 이진 형식으로 나타낸 값의 바이트 수를 더한 단일 바이트와, 그 뒤에 오는 문자열의 길이, 그 뒤에 오는 문자열로 구성됩니다. 예를 들어, 1024바이트 길이의 문자열은 `\xb9\x04\x00`(10진수 `185, 4, 0`) 다음에 문자열이 오는 형태로 인코딩됩니다. 여기서 첫 번째 바이트는 `0xb9`(183 + 2 = 185)이고, 그 뒤에는 실제 문자열의 길이를 나타내는 2바이트 `0x0400`(10진수 1024)이 옵니다. 따라서 첫 번째 바이트의 범위는 `[0xb8, 0xbf]`(10진수 `[184, 191]`)입니다.
+- 문자열 길이가 2^64바이트 이상이면 인코딩할 수 없습니다.
+- 리스트의 총 페이로드(즉, RLP 인코딩된 모든 항목의 길이를 합한 길이)가 0-55바이트인 경우, RLP 인코딩은 **0xc0** 값에 페이로드의 길이를 더한 단일 바이트와 그 뒤에 오는 항목들의 RLP 인코딩 연결로 구성됩니다. 따라서 첫 번째 바이트의 범위는 `[0xc0, 0xf7]`(10진수 `[192, 247]`)입니다.
+- 리스트의 총 페이로드가 55바이트보다 긴 경우, RLP 인코딩은 **0xf7** 값에 페이로드 길이를 이진 형식으로 나타낸 값의 바이트 수를 더한 단일 바이트와, 그 뒤에 오는 페이로드의 길이, 그 뒤에 오는 항목들의 RLP 인코딩 연결로 구성됩니다. 따라서 첫 번째 바이트의 범위는 `[0xf8, 0xff]`(10진수 `[248, 255]`)입니다.
+
+코드는 다음과 같습니다.
+
+```python
+def rlp_encode(input):
+ if isinstance(input,str):
+ if len(input) == 1 and ord(input) < 0x80:
+ return input
+ return encode_length(len(input), 0x80) + input
+ elif isinstance(input, list):
+ output = ''
+ for item in input:
+ output += rlp_encode(item)
+ return encode_length(len(output), 0xc0) + output
+
+def encode_length(L, offset):
+ if L < 56:
+ return chr(L + offset)
+ elif L < 256**8:
+ BL = to_binary(L)
+ return chr(len(BL) + offset + 55) + BL
+ raise Exception("input too long")
+
+def to_binary(x):
+ if x == 0:
+ return ''
+ return to_binary(int(x / 256)) + chr(x % 256)
+```
+
+## 예시 {#examples}
+
+- 문자열 "dog" = [ 0x83, 'd', 'o', 'g' ]
+- 리스트 [ "cat", "dog" ] = `[ 0xc8, 0x83, 'c', 'a', 't', 0x83, 'd', 'o', 'g' ]`
+- 빈 문자열('null') = `[ 0x80 ]`
+- 빈 리스트 = `[ 0xc0 ]`
+- 정수 0 = `[ 0x80 ]`
+- 바이트 '\\x00' = `[ 0x00 ]`
+- 바이트 '\\x0f' = `[ 0x0f ]`
+- 바이트 '\\x04\\x00' = `[ 0x82, 0x04, 0x00 ]`
+- 3의 [집합론적 표현](http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers), `[ [], [[]], [ [], [[]] ] ] = [ 0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0 ]`
+- 문자열 "Lorem ipsum dolor sit amet, consectetur adipisicing elit" = `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ...` , 'e', 'l', 'i', 't' ]`
+
+## RLP 디코딩 {#rlp-decoding}
+
+RLP 인코딩의 규칙과 프로세스에 따라, RLP 디코딩의 입력은 이진 데이터의 배열로 간주됩니다. RLP 디코딩 프로세스는 다음과 같습니다.
+
+1. 입력 데이터의 첫 바이트(즉, 접두사)에 따라 데이터 유형, 실제 데이터의 길이 및 오프셋을 디코딩합니다.
+
+2. 데이터의 유형과 오프셋에 따라 데이터를 그에 맞게 디코딩하며, 양의 정수에 대한 최소 인코딩 규칙을 준수합니다.
+
+3. 입력의 나머지 부분을 계속 디코딩합니다.
+
+그중에서 데이터 유형 및 오프셋 디코딩 규칙은 다음과 같습니다.
+
+1. 첫 바이트(즉, 접두사)의 범위가 [0x00, 0x7f]인 경우 데이터는 문자열이며, 문자열은 첫 바이트 그 자체입니다.
+
+2. 첫 바이트의 범위가 [0x80, 0xb7]인 경우 데이터는 문자열이며, 첫 바이트에서 0x80을 뺀 값과 길이가 같은 문자열이 첫 바이트 뒤에 옵니다.
+
+3. 첫 바이트의 범위가 [0xb8, 0xbf]인 경우 데이터는 문자열이며, 첫 바이트에서 0xb7을 뺀 값과 바이트 길이가 같은 문자열의 길이가 첫 바이트 뒤에 오고, 문자열은 문자열 길이 뒤에 옵니다.
+
+4. 첫 바이트의 범위가 [0xc0, 0xf7]인 경우 데이터는 리스트이며, 총 페이로드가 첫 바이트에서 0xc0을 뺀 값과 같은 리스트의 모든 항목에 대한 RLP 인코딩의 연결이 첫 바이트 뒤에 옵니다.
+
+5. 첫 바이트의 범위가 [0xf8, 0xff]인 경우 데이터는 리스트이며, 길이가 첫 바이트에서 0xf7을 뺀 값과 같은 리스트의 총 페이로드가 첫 바이트 뒤에 오고, 리스트의 모든 항목의 RLP 인코딩 연결이 리스트의 총 페이로드 뒤에 옵니다.
+
+코드는 다음과 같습니다.
+
+```python
+def rlp_decode(input):
+ if len(input) == 0:
+ return
+ output = ''
+ (offset, dataLen, type) = decode_length(input)
+ if type is str:
+ output = instantiate_str(substr(input, offset, dataLen))
+ elif type is list:
+ output = instantiate_list(substr(input, offset, dataLen))
+ output += rlp_decode(substr(input, offset + dataLen))
+ return output
+
+def decode_length(input):
+ length = len(input)
+ if length == 0:
+ raise Exception("input is null")
+ prefix = ord(input[0])
+ if prefix <= 0x7f:
+ return (0, 1, str)
+ elif prefix <= 0xb7 and length > prefix - 0x80:
+ strLen = prefix - 0x80
+ return (1, strLen, str)
+ elif prefix <= 0xbf and length > prefix - 0xb7 and length > prefix - 0xb7 + to_integer(substr(input, 1, prefix - 0xb7)):
+ lenOfStrLen = prefix - 0xb7
+ strLen = to_integer(substr(input, 1, lenOfStrLen))
+ return (1 + lenOfStrLen, strLen, str)
+ elif prefix <= 0xf7 and length > prefix - 0xc0:
+ listLen = prefix - 0xc0;
+ return (1, listLen, list)
+ elif prefix <= 0xff and length > prefix - 0xf7 and length > prefix - 0xf7 + to_integer(substr(input, 1, prefix - 0xf7)):
+ lenOfListLen = prefix - 0xf7
+ listLen = to_integer(substr(input, 1, lenOfListLen))
+ return (1 + lenOfListLen, listLen, list)
+ raise Exception("input does not conform to RLP encoding form")
+
+def to_integer(b):
+ length = len(b)
+ if length == 0:
+ raise Exception("input is null")
+ elif length == 1:
+ return ord(b[0])
+ return ord(substr(b, -1)) + to_integer(substr(b, 0, -1)) * 256
+```
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움의 RLP](https://medium.com/coinmonks/data-structure-in-ethereum-episode-1-recursive-length-prefix-rlp-encoding-decoding-d1016832f919)
+- [이더리움 내부 구조: RLP](https://medium.com/coinmonks/ethereum-under-the-hood-part-3-rlp-decoding-df236dc13e58)
+- Coglio, A. (2020). ACL2의 이더리움 재귀 길이 접두어. arXiv 사전 인쇄 arXiv:2009.13769.](https://arxiv.org/abs/2009.13769)
+
+## 관련 주제 {#related-topics}
+
+- [패트리샤 머클 트리](/developers/docs/data-structures-and-encoding/patricia-merkle-trie)
diff --git a/public/content/translations/ko/developers/docs/data-structures-and-encoding/ssz/index.md b/public/content/translations/ko/developers/docs/data-structures-and-encoding/ssz/index.md
new file mode 100644
index 00000000000..fd6f8f80788
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/data-structures-and-encoding/ssz/index.md
@@ -0,0 +1,149 @@
+---
+title: "간단 직렬화"
+description: "이더리움의 SSZ 형식에 대한 설명입니다."
+lang: ko
+sidebarDepth: 2
+---
+
+간단 직렬화(SSZ)는 비콘 체인에서 사용되는 직렬화 방법입니다. 피어 검색 프로토콜을 제외하고 합의 레이어 전반의 실행 레이어에서 사용되는 RLP 직렬화를 대체합니다. RLP 직렬화에 대해 자세히 알아보려면 [재귀 길이 접두사(RLP)](/developers/docs/data-structures-and-encoding/rlp/)를 참조하세요. SSZ는 결정론적이며 효율적으로 머클화되도록 설계되었습니다. SSZ는 직렬화 방식과 직렬화된 데이터 구조와 효율적으로 작동하도록 설계된 머클화 방식의 두 가지 구성 요소를 갖는 것으로 생각할 수 있습니다.
+
+## SSZ는 어떻게 작동하나요? {#how-does-ssz-work}
+
+### 직렬화 {#serialization}
+
+SSZ는 자체 서술적이지 않은 직렬화 방식이며, 사전에 알려져야 하는 스키마에 의존합니다. SSZ 직렬화의 목표는 임의의 복잡성을 가진 객체를 바이트 문자열로 표현하는 것입니다. 이는 "기본 유형"에 대한 매우 간단한 프로세스입니다. 요소는 단순히 16진수 바이트로 변환됩니다. 기본 유형은 다음과 같습니다.
+
+- 부호 없는 정수
+- 불리언
+
+복잡한 "복합" 유형의 경우, 복합 유형에 유형이나 크기가 다르거나 둘 다 다른 여러 요소가 포함되어 있으므로 직렬화가 더 복잡합니다. 이러한 객체가 모두 고정된 길이(즉, 요소의 크기가 실제 값에 관계없이 항상 일정함)를 갖는 경우 직렬화는 단순히 복합 유형의 각 요소를 리틀엔디언 바이트 문자열로 순서대로 변환하는 것입니다. 이러한 바이트 문자열은 함께 결합됩니다. 직렬화된 객체는 역직렬화된 객체에 나타나는 것과 동일한 순서로 고정 길이 요소의 바이트 목록 표현을 가집니다.
+
+가변 길이 유형의 경우, 실제 데이터는 직렬화된 객체의 해당 요소 위치에 있는 "오프셋" 값으로 대체됩니다. 실제 데이터는 직렬화된 객체의 끝에 있는 힙에 추가됩니다. 오프셋 값은 힙에 있는 실제 데이터의 시작 인덱스로, 관련 바이트에 대한 포인터 역할을 합니다.
+
+아래 예는 고정 및 가변 길이 요소를 모두 포함하는 컨테이너에 대한 오프셋 작동 방식을 보여줍니다.
+
+```Rust
+
+ struct Dummy {
+
+ number1: u64,
+ number2: u64,
+ vector: Vec,
+ number3: u64
+ }
+
+ dummy = Dummy{
+
+ number1: 37,
+ number2: 55,
+ vector: vec![1,2,3,4],
+ number3: 22,
+ }
+
+ serialized = ssz.serialize(dummy)
+
+```
+
+`serialized`는 다음과 같은 구조를 가집니다(여기서는 4비트로만 패딩되었지만 실제로는 32비트로 패딩되었으며, 명확성을 위해 `int` 표현을 유지합니다):
+
+```
+[37, 0, 0, 0, 55, 0, 0, 0, 16, 0, 0, 0, 22, 0, 0, 0, 1, 2, 3, 4]
+------------ ----------- ----------- ----------- ----------
+ | | | | |
+ number1 number2 vector의 number3 vector의
+ 오프셋 값
+
+```
+
+명확성을 위해 여러 줄로 나눴습니다:
+
+```
+[
+ 37, 0, 0, 0, # `number1`의 리틀엔디언 인코딩.
+ 55, 0, 0, 0, # `number2`의 리틀엔디언 인코딩.
+ 16, 0, 0, 0, # `vector` 값의 시작 위치를 나타내는 "오프셋"(리틀엔디언 16).
+ 22, 0, 0, 0, # `number3`의 리틀엔디언 인코딩.
+ 1, 2, 3, 4, # `vector`의 실제 값.
+]
+```
+
+이것은 여전히 단순화된 것입니다. 위의 도식에 있는 정수와 0은 실제로는 다음과 같이 바이트 목록으로 저장됩니다.
+
+```
+[
+ 10100101000000000000000000000000 # `number1`의 리틀엔디언 인코딩
+ 10110111000000000000000000000000 # `number2`의 리틀엔디언 인코딩.
+ 10010000000000000000000000000000 # `vector` 값의 시작 위치를 나타내는 "오프셋"(리틀엔디언 16).
+ 10010110000000000000000000000000 # `number3`의 리틀엔디언 인코딩.
+ 10000001100000101000001110000100 # `bytes` 필드의 실제 값.
+]
+```
+
+따라서 가변 길이 유형의 실제 값은 직렬화된 객체의 끝에 있는 힙에 저장되며, 오프셋은 정렬된 필드 목록의 올바른 위치에 저장됩니다.
+
+`BitList` 유형과 같이 직렬화 중에 길이 상한을 추가하고 역직렬화 중에 제거해야 하는 특정 처리가 필요한 몇 가지 특수한 경우도 있습니다. 전체 세부 정보는 [SSZ 사양](https://github.com/ethereum/consensus-specs/blob/dev/ssz/simple-serialize.md)에서 확인할 수 있습니다.
+
+### 역직렬화 {#deserialization}
+
+이 객체를 역직렬화하려면 스키마가 필요합니다. 스키마는 직렬화된 데이터의 정확한 레이아웃을 정의하여 각 특정 요소를 바이트 블롭에서 올바른 유형, 값, 크기 및 위치를 갖는 의미 있는 객체로 역직렬화할 수 있도록 합니다. 어떤 값이 실제 값이고 어떤 값이 오프셋인지를 역직렬화 프로그램에 알려주는 것이 바로 스키마입니다. 모든 필드 이름은 객체가 직렬화될 때 사라지지만, 스키마에 따라 역직렬화될 때 다시 인스턴스화됩니다.
+
+이에 대한 대화형 설명은 [ssz.dev](https://www.ssz.dev/overview)를 참조하세요.
+
+## 머클화 {#merkleization}
+
+그런 다음 이 SSZ 직렬화된 객체를 머클화할 수 있습니다. 즉, 동일한 데이터의 머클 트리 표현으로 변환할 수 있습니다. 먼저, 직렬화된 객체에서 32바이트 청크의 수를 결정합니다. 이것이 트리의 "리프"입니다. 리프를 함께 해싱하여 최종적으로 단일 해시 트리 루트를 생성할 수 있도록 총 리프 수는 2의 거듭제곱이어야 합니다. 자연스럽게 그렇지 않은 경우, 32바이트의 0을 포함하는 추가 리프가 추가됩니다. 도식적으로:
+
+```
+ 해시 트리 루트
+ / \
+ / \
+ / \
+ / \
+ 리프 1과 2의 해시 리프 3과 4의 해시
+ / \ / \
+ / \ / \
+ / \ / \
+ 리프1 리프2 리프3 리프4
+```
+
+위의 예에서와 같이 트리의 리프가 자연스럽게 고르게 분포되지 않는 경우도 있습니다. 예를 들어, 리프 4는 머클 트리에 추가적인 "깊이"를 추가해야 하는 여러 요소를 가진 컨테이너일 수 있으며, 이로 인해 불균일한 트리가 생성됩니다.
+
+이러한 트리 요소를 리프 X, 노드 X 등으로 지칭하는 대신, 루트 = 1에서 시작하여 각 레벨을 따라 왼쪽에서 오른쪽으로 계산하는 일반화된 인덱스를 부여할 수 있습니다. 이것이 위에서 설명한 일반화된 인덱스입니다. 직렬화된 목록의 각 요소는 `2**depth + idx`와 같은 일반화된 인덱스를 가집니다. 여기서 idx는 직렬화된 객체에서 0부터 시작하는 위치이고, 깊이는 머클 트리의 레벨 수이며, 요소(리프) 수의 밑이 2인 로그로 결정될 수 있습니다.
+
+## 일반화된 인덱스 {#generalized-indices}
+
+일반화된 인덱스는 이진 머클 트리의 노드를 나타내는 정수이며, 각 노드는 `2 ** depth + 행의 인덱스`라는 일반화된 인덱스를 가집니다.
+
+```
+ 1 --깊이 = 0 2**0 + 0 = 1
+ 2 3 --깊이 = 1 2**1 + 0 = 2, 2**1+1 = 3
+ 4 5 6 7 --깊이 = 2 2**2 + 0 = 4, 2**2 + 1 = 5...
+
+```
+
+이 표현은 머클 트리의 각 데이터 조각에 대한 노드 인덱스를 산출합니다.
+
+## 다중 증명 {#multiproofs}
+
+특정 요소를 나타내는 일반화된 인덱스 목록을 제공하면 해시 트리 루트와 비교하여 이를 확인할 수 있습니다. 이 루트는 우리가 수용한 현실 버전입니다. 제공된 모든 데이터는 머클 트리의 올바른 위치(일반화된 인덱스에 의해 결정됨)에 삽입하고 루트가 일정하게 유지되는지 관찰함으로써 그 현실에 대해 검증될 수 있습니다. 사양에는 특정 일반화된 인덱스 세트의 내용을 확인하는 데 필요한 최소 노드 세트를 계산하는 방법을 보여주는 함수가 [여기](https://github.com/ethereum/consensus-specs/blob/dev/ssz/merkle-proofs.md#merkle-multiproofs)에 있습니다.
+
+예를 들어, 아래 트리에서 인덱스 9의 데이터를 확인하려면 인덱스 8, 9, 5, 3, 1에 있는 데이터의 해시가 필요합니다.
+(8,9)의 해시는 해시 (4)와 같아야 하며, 이는 5와 해싱되어 2를 생성하고, 이는 3과 해싱되어 트리 루트 1을 생성합니다. 9에 대해 잘못된 데이터가 제공되면 루트가 변경됩니다. 우리는 이를 감지하고 브랜치 확인에 실패할 것입니다.
+
+```
+* = 증명을 생성하는 데 필요한 데이터
+
+ 1*
+ 2 3*
+ 4 5* 6 7
+8* 9* 10 11 12 13 14 15
+
+```
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 업그레이드: SSZ](https://eth2book.info/altair/part2/building_blocks/ssz)
+- [이더리움 업그레이드: 머클화](https://eth2book.info/altair/part2/building_blocks/merkleization)
+- [SSZ 구현](https://github.com/ethereum/consensus-specs/issues/2138)
+- [SSZ 계산기](https://simpleserialize.com/)
+- [SSZ.dev](https://www.ssz.dev/)
diff --git a/public/content/translations/ko/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md b/public/content/translations/ko/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
new file mode 100644
index 00000000000..fea3a020bb8
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/data-structures-and-encoding/web3-secret-storage/index.md
@@ -0,0 +1,195 @@
+---
+title: "Web3 비밀 저장소 정의"
+description: "웹3 비밀 저장 공간에 대한 공식적인 정의"
+lang: ko
+sidebarDepth: 2
+---
+
+앱이 이더리움에서 작동하도록 하려면 web3.js 라이브러리에서 제공하는 웹3 객체를 사용할 수 있습니다. 내부적으로 RPC 호출을 통해 로컬 노드와 통신합니다. [web3](https://github.com/ethereum/web3.js/)는 RPC 레이어를 노출하는 모든 이더리움 노드와 함께 작동합니다.
+
+`web3`는 `eth` 객체(web3.eth)를 포함합니다.
+
+```js
+var fs = require("fs")
+var recognizer = require("ethereum-keyfile-recognizer")
+
+fs.readFile("keyfile.json", (err, data) => {
+ var json = JSON.parse(data)
+ var result = recognizer(json)
+})
+
+/** result
+ * [ 'web3', 3 ] 웹3(v3) 키 파일
+ * [ 'ethersale', undefined ] Ethersale 키 파일
+ * null 잘못된 키 파일
+ */
+```
+
+이 문서는 웹3 비밀 저장 공간 정의의 버전 3에 대한 내용입니다.
+
+## 정의 {#definition}
+
+파일의 실제 인코딩 및 디코딩은 버전 1과 거의 동일하지만, 암호화 알고리즘이 더 이상 AES-128-CBC로 고정되지 않는다는 점이 다릅니다(현재는 AES-128-CTR이 최소 요구 사항임). 대부분의 의미/알고리즘은 버전 1과 유사하지만 `mac`은 예외입니다. `mac`은 파생된 키의 왼쪽에서 두 번째 16바이트와 전체 `ciphertext`를 연결한 것의 SHA3(keccak-256)으로 지정됩니다.
+
+비밀 키 파일은 `~/.web3/keystore`(유닉스 계열 시스템의 경우) 및 `~/AppData/Web3/keystore`(윈도우의 경우)에 직접 저장됩니다. 이름은 무엇이든 될 수 있지만, `.json`이 좋은 규칙입니다. 여기서 ``는 비밀 키에 부여된 128비트 UUID(비밀 키 주소에 대한 개인정보 보호 프록시)입니다.
+
+이러한 모든 파일에는 연결된 비밀번호가 있습니다. 주어진 `.json` 파일의 비밀 키를 파생시키려면 먼저 파일의 암호화 키를 파생시켜야 합니다. 이 작업은 파일의 비밀번호를 가져와 `kdf` 키에 설명된 대로 키 파생 함수를 통해 전달하여 수행됩니다. KDF 함수에 대한 KDF 종속 정적 및 동적 파라미터는 `kdfparams` 키에 설명되어 있습니다.
+
+최소 준수 구현은 모두 PBKDF2를 지원해야 하며, 다음과 같이 표시됩니다.
+
+- `kdf`: `pbkdf2`
+
+PBKDF2의 경우, kdfparams는 다음을 포함합니다.
+
+- `prf`: `hmac-sha256`이어야 합니다(향후 확장될 수 있음).
+- `c`: 반복 횟수,
+- `salt`: PBKDF에 전달된 솔트,
+- `dklen`: 파생된 키의 길이. 32 이상이어야 합니다.
+
+파일의 키가 파생되면 MAC 파생을 통해 확인해야 합니다. MAC은 파생된 키의 왼쪽에서 두 번째 16바이트와 `ciphertext` 키의 내용을 연결하여 형성된 바이트 배열의 SHA3(keccak-256) 해시로 계산되어야 합니다. 즉,
+
+```js
+KECCAK(DK[16..31] ++ )
+```
+
+(여기서 `++`는 연결 연산자입니다)
+
+이 값은 `mac` 키의 내용과 비교해야 합니다. 만약 값이 다르면 다른 비밀번호를 요청하거나 작업을 취소해야 합니다.
+
+파일의 키가 확인된 후, `cipher` 키로 지정되고 `cipherparams` 키를 통해 매개변수화된 대칭 암호화 알고리즘을 사용하여 암호문(`ciphertext` 키)을 복호화할 수 있습니다. 파생된 키 크기와 알고리즘의 키 크기가 일치하지 않는 경우, 파생된 키의 0으로 채워진 가장 오른쪽 바이트가 알고리즘의 키로 사용되어야 합니다.
+
+모든 최소 준수 구현은 AES-128-CTR 알고리즘을 지원해야 하며, 다음과 같이 표시됩니다.
+
+- `cipher: aes-128-ctr`
+
+이 암호는 cipherparams 키에 대한 키로 지정된 다음 매개변수를 사용합니다.
+
+- `iv`: 암호에 대한 128비트 초기화 벡터.
+
+암호의 키는 파생된 키의 가장 왼쪽 16바이트입니다(예: `DK[0..15]`)
+
+비밀 키의 생성/암호화는 기본적으로 이러한 지침의 역순이어야 합니다. `uuid`, `salt` 및 `iv`가 실제로 무작위인지 확인하십시오.
+
+버전의 "하드" 식별자 역할을 해야 하는 `version` 필드 외에도, 구현은 형식에 대한 더 작고 호환성을 깨뜨리지 않는 변경 사항을 추적하기 위해 `minorversion`을 사용할 수도 있습니다.
+
+## 테스트 벡터 {#test-vectors}
+
+세부 정보:
+
+- `주소`: `008aeeda4d805471df9b2a5b0f38a0c3bcba786b`
+- `ICAP`: `XE542A5PZHH8PYIZUBEJEO0MFWRAPPIL67`
+- `UUID`: `3198bc9c-6672-5ab3-d9954942343ae5b6`
+- `비밀번호`: `testpassword`
+- `비밀`: `7a28b5ba57c53603b0b07b56bba752f7784bf506fa95edc395f5cf6c7514fe9d`
+
+### PBKDF2-SHA-256 {#PBKDF2-SHA-256}
+
+`AES-128-CTR` 및 `PBKDF2-SHA-256`을 사용한 테스트 벡터:
+
+`~/.web3/keystore/3198bc9c-6672-5ab3-d9954942343ae5b6.json`의 파일 내용:
+
+```json
+{
+ "crypto": {
+ "cipher": "aes-128-ctr",
+ "cipherparams": {
+ "iv": "6087dab2f9fdbbfaddc31a909735c1e6"
+ },
+ "ciphertext": "5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
+ "kdf": "pbkdf2",
+ "kdfparams": {
+ "c": 262144,
+ "dklen": 32,
+ "prf": "hmac-sha256",
+ "salt": "ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"
+ },
+ "mac": "517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
+ },
+ "id": "3198bc9c-6672-5ab3-d995-4942343ae5b6",
+ "version": 3
+}
+```
+
+**중간값**:
+
+`파생된 키`: `f06d69cdc7da0faffb1008270bca38f5e31891a3a773950e6d0fea48a7188551`
+`MAC 본문`: `e31891a3a773950e6d0fea48a71885515318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46`
+`MAC`: `517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2`
+`암호 키`: `f06d69cdc7da0faffb1008270bca38f5`
+
+### Scrypt {#scrypt}
+
+AES-128-CTR 및 Scrypt를 사용한 테스트 벡터:
+
+```json
+{
+ "crypto": {
+ "cipher": "aes-128-ctr",
+ "cipherparams": {
+ "iv": "740770fce12ce862af21264dab25f1da"
+ },
+ "ciphertext": "dd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2",
+ "kdf": "scrypt",
+ "kdfparams": {
+ "dklen": 32,
+ "n": 262144,
+ "p": 1,
+ "r": 8,
+ "salt": "25710c2ccd7c610b24d068af83b959b7a0e5f40641f0c82daeb1345766191034"
+ },
+ "mac": "337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c"
+ },
+ "id": "3198bc9c-6672-5ab3-d995-4942343ae5b6",
+ "version": 3
+}
+```
+
+**중간값**:
+
+`파생된 키`: `7446f59ecc301d2d79bc3302650d8a5cedc185ccbb4bf3ca1ebd2c163eaa6c2d`
+`MAC 본문`: `edc185ccbb4bf3ca1ebd2c163eaa6c2ddd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2`
+`MAC`: `337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c`
+`암호 키`: `7446f59ecc301d2d79bc3302650d8a5c`
+
+## 버전 1의 변경 사항 {#alterations-from-v2}
+
+이 버전은 [여기](https://github.com/ethereum/homestead-guide/blob/master/old-docs-for-reference/go-ethereum-wiki.rst/Passphrase-protected-key-store-spec.rst)에 게시된 버전 1의 몇 가지 불일치를 수정합니다. 간단히 말해 다음과 같습니다.
+
+- 대소문자 사용이 부적절하고 일관성이 없습니다(scrypt는 소문자, Kdf는 혼합 대/소문자, MAC은 대문자).
+- 주소는 불필요하며 개인 정보를 침해합니다.
+- `Salt`는 본질적으로 키 파생 함수의 매개변수이므로 일반적인 암호화가 아닌 해당 함수와 연결되어야 합니다.
+- SaltLen은 불필요합니다(Salt에서 파생하면 됨).
+- 키 파생 함수는 주어지지만, 암호화 알고리즘은 하드코딩되어 있습니다.
+- `Version`은 본질적으로 숫자이지만 문자열입니다(문자열로 구조화된 버전 관리가 가능하지만, 거의 변경되지 않는 구성 파일 형식의 범위를 벗어난 것으로 간주될 수 있습니다).
+- `KDF`와 `cipher`는 개념적으로 형제 개념이지만 다르게 구성되어 있습니다.
+- `MAC`은 공백에 영향을 받지 않는 데이터 조각을 통해 계산됩니다(!).
+
+이전에 링크된 페이지의 예시와 기능적으로 동일한 다음 파일을 제공하기 위해 형식이 변경되었습니다.
+
+```json
+{
+ "crypto": {
+ "cipher": "aes-128-cbc",
+ "ciphertext": "07533e172414bfa50e99dba4a0ce603f654ebfa1ff46277c3e0c577fdc87f6bb4e4fe16c5a94ce6ce14cfa069821ef9b",
+ "cipherparams": {
+ "iv": "16d67ba0ce5a339ff2f07951253e6ba8"
+ },
+ "kdf": "scrypt",
+ "kdfparams": {
+ "dklen": 32,
+ "n": 262144,
+ "p": 1,
+ "r": 8,
+ "salt": "06870e5e6a24e183a5c807bd1c43afd86d573f7db303ff4853d135cd0fd3fe91"
+ },
+ "mac": "8ccded24da2e99a11d48cda146f9cc8213eb423e2ea0d8427f41c3be414424dd",
+ "version": 1
+ },
+ "id": "0498f19a-59db-4d54-ac95-33901b4f1870",
+ "version": 2
+}
+```
+
+## 버전 2의 변경 사항 {#alterations-from-v2}
+
+버전 2는 여러 버그가 있는 초기 C++ 구현이었습니다. 모든 필수 요소는 그대로 유지됩니다.
diff --git a/public/content/translations/ko/developers/docs/design-and-ux/dex-design-best-practice/index.md b/public/content/translations/ko/developers/docs/design-and-ux/dex-design-best-practice/index.md
new file mode 100644
index 00000000000..30ed7718dab
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/design-and-ux/dex-design-best-practice/index.md
@@ -0,0 +1,220 @@
+---
+title: "탈중앙화 거래소(DEX) 디자인 모범 사례"
+description: "토큰 교환을 위한 UX/UI 결정 사항을 설명하는 가이드입니다."
+lang: ko
+---
+
+2018년 Uniswap 출시 이후 수십 개의 다른 체인에 걸쳐 수백 개의 탈중앙화 거래소가 출시되었습니다.
+이들 중 다수는 새로운 요소를 도입하거나 고유한 특징을 추가했지만 인터페이스는 대체로 동일하게 유지되었습니다.
+
+그 이유 중 하나는 [제이콥의 법칙](https://lawsofux.com/jakobs-law/)입니다.
+
+> 사용자는 대부분의 시간을 다른 사이트에서 보냅니다. 이는 사용자가 자신의 사이트가 이미 알고 있는 다른 모든 사이트와 동일한 방식으로 작동하기를 선호한다는 것을 의미합니다.
+
+Uniswap, Pancakeswap, Sushiswap과 같은 초기 혁신가들 덕분에 디파이(DeFi) 사용자들은 DEX가 어떤 모습인지에 대한 집단적인 아이디어를 갖게 되었습니다.
+이러한 이유로 '모범 사례'와 같은 것이 이제 막 나타나고 있습니다. 점점 더 많은 디자인 결정이 사이트 전반에 걸쳐 표준화되고 있음을 알 수 있습니다. DEX의 진화를 실시간 테스트의 거대한 예로 볼 수 있습니다. 효과가 있었던 것은 남고, 그렇지 않은 것은 버려졌습니다. 여전히 개성을 발휘할 여지는 있지만 DEX가 따라야 할 특정 표준이 있습니다.
+
+이 글은 다음에 대한 요약입니다.
+
+- 포함해야 할 사항
+- 최대한 사용하기 쉽게 만드는 방법
+- 디자인을 사용자 정의하는 주요 방법
+
+모든 예시 와이어프레임은 실제 프로젝트를 기반으로 하지만 이 글을 위해 특별히 제작되었습니다.
+
+Figma 키트도 하단에 포함되어 있습니다. 자유롭게 사용하여 자신만의 와이어프레임 작업 속도를 높여보세요!
+
+## DEX의 기본 구조 {#basic-anatomy-of-a-dex}
+
+UI는 일반적으로 세 가지 요소를 포함합니다.
+
+1. 기본 양식
+2. 버튼
+3. 세부 정보 패널
+
+
+
+## 변형 {#variations}
+
+이는 이 글에서 공통적인 주제이지만, 이러한 요소들을 구성하는 방법에는 여러 가지가 있습니다. '세부 정보 패널'은 다음과 같을 수 있습니다.
+
+- 버튼 위
+- 버튼 아래
+- 아코디언 패널에 숨김
+- 그리고/또는 '미리보기' 모달에 표시
+
+참고 '미리보기' 모달은 선택 사항이지만, 메인 UI에 아주 적은 세부 정보만 표시하는 경우 필수적입니다.
+
+## 메인 양식의 구조 {#structure-of-the-main-form}
+
+이 상자는 실제로 교환하려는 토큰을 선택하는 곳입니다. 이 컴포넌트는 한 줄에 입력 필드와 작은 버튼으로 구성됩니다.
+
+DEX는 일반적으로 위 한 줄과 아래 한 줄에 추가 세부 정보를 표시하지만, 이는 다르게 구성할 수 있습니다.
+
+
+
+## 변형 {#variations2}
+
+여기에는 두 가지 UI 변형이 표시됩니다. 하나는 테두리가 전혀 없어 매우 개방적인 디자인을 만들고, 다른 하나는 입력 행에 테두리가 있어 해당 요소에 초점을 맞춥니다.
+
+
+
+이 기본 구조를 통해 네 가지 핵심 정보를 디자인에 표시할 수 있습니다. 각 모서리에 하나씩입니다. 상단/하단 행이 하나만 있는 경우, 두 개의 지점만 있습니다.
+
+디파이(DeFi)의 진화 과정에서 여기에 많은 다양한 것들이 포함되었습니다.
+
+## 포함할 핵심 정보 {#key-info-to-include}
+
+- 지갑 내 잔액
+- 최대 버튼
+- 법정 화폐 등가액
+- '받는' 금액에 대한 가격 영향
+
+디파이(DeFi) 초기에는 법정 화폐 등가액이 종종 누락되었습니다. 어떤 종류의 웹3 프로젝트를 구축하든 법정 화폐 등가액을 표시하는 것이 필수적입니다. 사용자는 여전히 현지 통화로 생각하므로 실제 세계의 정신 모델과 일치시키기 위해 이를 포함해야 합니다.
+
+두 번째 필드(교환할 토큰을 선택하는 필드)에서는 입력 금액과 예상 출력 금액의 차이를 계산하여 법정 화폐 금액 옆에 가격 영향을 포함할 수도 있습니다. 이것은 포함하기에 매우 유용한 세부 정보입니다.
+
+백분율 버튼(예: 25%, 50%, 75%)은 유용한 기능일 수 있지만 더 많은 공간을 차지하고 더 많은 행동 유도를 추가하며 더 많은 정신적 부담을 줍니다. 백분율 슬라이더도 마찬가지입니다. 이러한 UI 결정 중 일부는 브랜드와 사용자 유형에 따라 달라집니다.
+
+추가 세부 정보는 메인 양식 아래에 표시할 수 있습니다. 이러한 유형의 정보는 대부분 전문 사용자를 위한 것이므로 다음 중 하나를 수행하는 것이 좋습니다.
+
+- 최대한 최소한으로 유지하거나,
+- 아코디언 패널에 숨기기
+
+
+
+## 포함할 추가 정보 {#extra-info-to-include}
+
+- 토큰 가격
+- 슬리피지
+- 최소 수령액
+- 예상 출력
+- 가격 영향
+- 가스 비용 추정치
+- 기타 수수료
+- 주문 라우팅
+
+논란의 여지가 있지만, 이러한 세부 정보 중 일부는 선택 사항일 수 있습니다.
+
+주문 라우팅은 흥미롭지만 대부분의 사용자에게는 큰 차이가 없습니다.
+
+일부 다른 세부 정보는 단순히 같은 내용을 다른 방식으로 다시 설명하는 것입니다. 예를 들어 '최소 수령액'과 '슬리피지'는 동전의 양면과 같습니다. 슬리피지를 1%로 설정한 경우, 수령할 수 있는 최소 금액 = 예상 출력 - 1%입니다. 일부 UI는 예상 금액, 최소 금액 및 슬리피지를 표시합니다... 유용하지만 과할 수 있습니다.
+
+어차피 대부분의 사용자는 기본 슬리피지를 그대로 둡니다.
+
+'가격 영향'은 '받는' 필드의 법정 화폐 등가액 옆 괄호 안에 표시되는 경우가 많습니다. 이것은 추가하기에 훌륭한 UX 세부 정보이지만, 여기에 표시된다면 아래에 다시 표시할 필요가 있을까요? 그리고 미리보기 화면에 또다시?
+
+많은 사용자(특히 소액을 교환하는 사용자)는 이러한 세부 정보에 신경 쓰지 않을 것입니다. 그들은 단순히 숫자를 입력하고 교환을 누를 것입니다.
+
+
+
+정확히 어떤 세부 정보를 표시할지는 잠재고객과 앱이 어떤 느낌을 주기를 원하는지에 따라 달라집니다.
+
+세부 정보 패널에 슬리피지 허용치를 포함하는 경우, 여기에서 직접 편집할 수 있도록 해야 합니다. 이것은 '단축키'의 좋은 예입니다. 앱의 일반적인 사용성에 영향을 주지 않으면서 숙련된 사용자의 흐름을 가속화할 수 있는 깔끔한 UX 트릭입니다.
+
+
+
+한 화면의 특정 정보 하나뿐만 아니라 전체 흐름에 대해 신중하게 생각하는 것이 좋습니다.
+메인 양식에 숫자 입력 → 세부 정보 스캔 → 미리보기 화면으로 클릭(미리보기 화면이 있는 경우).
+세부 정보 패널을 항상 표시해야 할까요, 아니면 사용자가 확장하려면 클릭해야 할까요?
+미리보기 화면을 추가하여 마찰을 만들어야 할까요? 이는 사용자가 속도를 늦추고 거래를 고려하도록 강제하는데, 이는 유용할 수 있습니다. 하지만 그들은 모든 동일한 정보를 다시 보고 싶어할까요? 이 시점에서 그들에게 가장 유용한 것은 무엇일까요?
+
+## 디자인 옵션 {#design-options}
+
+앞서 언급했듯이, 이 중 많은 부분이 개인 스타일에 달려 있습니다
+사용자는 누구입니까?
+당신의 브랜드는 무엇입니까?
+모든 세부 정보를 보여주는 '전문가용' 인터페이스를 원하십니까, 아니면 미니멀리스트를 원하십니까?
+가능한 모든 정보를 원하는 전문 사용자를 목표로 하더라도 Alan Cooper의 현명한 말을 기억해야 합니다.
+
+> 인터페이스가 아무리 아름답고 멋지더라도, 적을수록 좋습니다.
+
+### 구조 {#structure}
+
+- 토큰을 왼쪽에, 또는 토큰을 오른쪽에
+- 2행 또는 3행
+- 버튼 위 또는 아래의 세부 정보
+- 세부 정보 확장, 최소화 또는 표시 안 함
+
+### 구성 요소 스타일 {#component-style}
+
+- 비어 있음
+- 윤곽선
+- 채워짐
+
+순수한 UX 관점에서 볼 때 UI 스타일은 생각보다 덜 중요합니다. 시각적 트렌드는 주기를 그리며 나타났다 사라지며, 선호도 중 상당 부분은 주관적입니다.
+
+이에 대한 감을 잡고 다양한 구성을 생각해 보는 가장 쉬운 방법은 몇 가지 예를 살펴본 다음 직접 실험해 보는 것입니다.
+
+포함된 Figma 키트에는 비어 있거나, 윤곽선이 있거나, 채워진 구성 요소가 포함되어 있습니다.
+
+아래 예시를 보고 모든 것을 종합할 수 있는 다양한 방법을 확인하세요.
+
+
+
+
+
+
+
+
+
+
+
+
+
+## 하지만 토큰은 어느 쪽에 있어야 할까요? {#but-which-side-should-the-token-go-on}
+
+결론은 사용성에 큰 차이를 만들지 않을 것이라는 점입니다. 그러나 한쪽으로 기울게 할 수 있는 몇 가지 명심해야 할 사항이 있습니다.
+
+시간이 지남에 따라 유행이 변하는 것을 보는 것은 약간 흥미로웠습니다. Uniswap은 처음에 토큰을 왼쪽에 두었지만, 이후 오른쪽으로 옮겼습니다. Sushiswap도 디자인 업그레이드 중에 이 변경을 했습니다. 전부는 아니지만 대부분의 프로토콜이 그 뒤를 따랐습니다.
+
+금융 관례상 전통적으로 통화 기호를 숫자 앞에 둡니다(예: $50, €50, £50). 하지만 우리는 50달러, 50유로, 50파운드라고 _말합니다_.
+
+일반 사용자, 특히 왼쪽에서 오른쪽으로, 위에서 아래로 읽는 사람에게는 오른쪽에 있는 토큰이 아마도 더 자연스럽게 느껴질 것입니다.
+
+
+
+토큰을 왼쪽에, 모든 숫자를 오른쪽에 배치하면 보기 좋게 대칭을 이루어 장점이지만, 이 레이아웃에는 또 다른 단점이 있습니다.
+
+근접성의 법칙은 서로 가까이 있는 항목들이 관련 있는 것으로 인식된다는 것을 명시합니다. 따라서 관련 항목을 서로 옆에 배치하고자 합니다. 토큰 잔액은 토큰 자체와 직접 관련이 있으며, 새 토큰이 선택될 때마다 변경됩니다. 따라서 토큰 잔액이 토큰 선택 버튼 옆에 있는 것이 조금 더 합리적입니다. 토큰 아래로 옮길 수도 있지만, 그러면 레이아웃의 대칭이 깨집니다.
+
+궁극적으로 두 옵션 모두 장단점이 있지만, 추세가 오른쪽 토큰으로 기우는 것처럼 보이는 것은 흥미롭습니다.
+
+## 버튼 동작 {#button-behavior}
+
+승인을 위한 별도의 버튼을 만들지 마세요. 또한 승인을 위한 별도의 클릭을 만들지 마세요. 사용자는 교환을 원하므로 버튼에 '교환'이라고 표시하고 첫 번째 단계로 승인을 시작하세요. 모달은 스텝퍼 또는 간단한 '거래 1/2 - 승인 중' 알림으로 진행 상황을 표시할 수 있습니다.
+
+
+
+
+
+### 상황별 도움말로서의 버튼 {#button-as-contextual-help}
+
+버튼은 경고로서 이중 역할을 할 수 있습니다!
+
+이것은 사실 웹3 밖에서는 상당히 이례적인 디자인 패턴이지만, 그 안에서는 표준이 되었습니다. 이는 공간을 절약하고 주의를 집중시키는 좋은 혁신입니다.
+
+오류로 인해 주된 작업인 교환을 사용할 수 없는 경우, 버튼으로 그 이유를 설명할 수 있습니다. 예:
+
+- 네트워크 전환
+- 지갑 연결
+- 다양한 오류
+
+버튼은 수행해야 할 작업에 매핑될 수도 있습니다. 예를 들어, 사용자가 잘못된 네트워크에 있어 교환할 수 없는 경우, 버튼에 'Ethereum으로 전환'이라고 표시되어야 하며, 사용자가 버튼을 클릭하면 네트워크를 Ethereum으로 전환해야 합니다. 이렇게 하면 사용자 흐름이 크게 빨라집니다.
+
+
+
+
+
+## 이 Figma 파일로 직접 만들어 보세요 {#build-your-own-with-this-figma-file}
+
+여러 프로토콜의 노력 덕분에 DEX 디자인이 많이 개선되었습니다. 우리는 사용자가 어떤 정보를 필요로 하는지, 어떻게 보여줘야 하는지, 그리고 어떻게 흐름을 최대한 원활하게 만들 수 있는지 알고 있습니다.
+이 글이 UX 원칙에 대한 확실한 개요를 제공하기를 바랍니다.
+
+실험해보고 싶으시다면 Figma 와이어프레임 키트를 자유롭게 사용해 주세요. 최대한 단순하게 유지되지만 다양한 방식으로 기본 구조를 구축할 수 있는 충분한 유연성을 갖추고 있습니다.
+
+[Figma 와이어프레임 키트](https://www.figma.com/community/file/1393606680816807382/dex-wireframes-kit)
+
+디파이(DeFi)는 계속해서 진화할 것이며, 항상 개선의 여지가 있습니다.
+
+행운을 빕니다!
diff --git a/public/content/translations/ko/developers/docs/design-and-ux/heuristics-for-web3/index.md b/public/content/translations/ko/developers/docs/design-and-ux/heuristics-for-web3/index.md
new file mode 100644
index 00000000000..21d647f1861
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/design-and-ux/heuristics-for-web3/index.md
@@ -0,0 +1,138 @@
+---
+title: "웹3 인터페이스 디자인을 위한 7가지 휴리스틱"
+description: "웹3의 사용성을 개선하기 위한 원칙"
+lang: ko
+---
+
+사용성 휴리스틱은 사이트의 사용성을 측정하는 데 사용할 수 있는 광범위한 '경험 법칙'입니다.
+여기에 소개된 7가지 휴리스틱은 웹3에 특화된 것으로, Jakob Nielsen의 [상호작용 설계를 위한 10가지 일반 원칙](https://www.nngroup.com/articles/ten-usability-heuristics/)과 함께 사용해야 합니다.
+
+## 웹3를 위한 7가지 사용성 휴리스틱 {#seven-usability-heuristics-for-web3}
+
+1. 피드백은 행동을 따른다
+2. 보안 및 신뢰
+3. 가장 중요한 정보는 명확하다
+4. 이해하기 쉬운 용어
+5. 행동은 가능한 한 짧게
+6. 네트워크 연결은 가시적이고 유연해야 한다
+7. 지갑이 아닌 앱에서 제어
+
+## 정의 및 예시 {#definitions-and-examples}
+
+### 1. 피드백은 행동을 따른다 {#feedback-follows-action}
+
+**어떤 일이 발생했거나 발생하고 있을 때 명확하게 알 수 있어야 합니다.**
+
+사용자는 이전 단계의 결과를 바탕으로 다음 단계를 결정합니다. 따라서 시스템 상태에 대한 정보를 계속 제공받는 것이 중요합니다. 웹3에서는 트랜잭션이 블록체인에 커밋되기까지 시간이 걸릴 수 있으므로 특히 중요합니다. 기다리라는 피드백이 없으면 사용자는 어떤 일이 일어났는지 확신할 수 없습니다.
+
+**팁:**
+
+- 메시지, 알림 및 기타 경고를 통해 사용자에게 알립니다.
+- 대기 시간을 명확하게 전달합니다.
+- 작업이 몇 초 이상 걸리는 경우 타이머나 애니메이션으로 사용자에게 무언가 진행되고 있다는 느낌을 주어 안심시킵니다.
+- 프로세스에 여러 단계가 있는 경우 각 단계를 보여줍니다.
+
+**예시:**
+트랜잭션과 관련된 각 단계를 보여주면 사용자가 프로세스의 어느 단계에 있는지 알 수 있습니다. 적절한 아이콘을 통해 사용자는 자신의 행동 상태를 알 수 있습니다.
+
+
+
+### 2. 보안 및 신뢰 내재화 {#security-and-trust-are-backed-in}
+
+보안을 우선시해야 하며, 이는 사용자에게 강조되어야 합니다.
+사람들은 자신의 데이터를 매우 중요하게 생각합니다. 안전은 종종 사용자의 주된 관심사이므로 설계의 모든 수준에서 고려되어야 합니다. 항상 사용자의 신뢰를 얻기 위해 노력해야 하지만, 이를 수행하는 방법은 앱마다 다를 수 있습니다. 나중에 생각할 것이 아니라, 전반에 걸쳐 의식적으로 설계되어야 합니다. 최종 UI뿐만 아니라 소셜 채널과 개발문서를 포함한 사용자 경험 전반에 걸쳐 신뢰를 구축하십시오. 탈중앙화 수준, 재무 다중 서명 상태, 팀의 신상 공개 여부 등이 모두 사용자의 신뢰에 영향을 미칩니다.
+
+**팁:**
+
+- 감사 내역을 자신 있게 나열하십시오
+- 여러 감사를 받으십시오
+- 설계한 안전 기능을 홍보하십시오
+- 기본 통합을 포함한 잠재적 위험을 강조하십시오
+- 전략의 복잡성을 전달하십시오
+- 사용자의 안전 인식에 영향을 미칠 수 있는 비UI 문제를 고려하십시오
+
+**예시:**
+눈에 잘 띄는 크기로 바닥글에 감사 내역을 포함시키십시오.
+
+
+
+### 3. 가장 중요한 정보는 명확하다 {#the-most-important-info-is-obvious}
+
+복잡한 시스템의 경우 가장 관련성 높은 데이터만 표시합니다. 가장 중요한 것이 무엇인지 결정하고 표시의 우선순위를 정합니다.
+너무 많은 정보는 부담스럽고 사용자는 일반적으로 의사 결정을 할 때 한 가지 정보에 의존합니다. 디파이에서는 수익 앱의 연이율(APR)과 대출 앱의 담보인정비율(LTV)이 될 것입니다.
+
+**팁:**
+
+- 사용자 조사를 통해 가장 중요한 지표를 발견할 수 있습니다
+- 핵심 정보는 크게, 다른 세부 정보는 작고 눈에 띄지 않게 만드십시오
+- 사람들은 읽지 않고 훑어봅니다. 디자인이 훑어보기 쉽도록 하십시오
+
+**예시:** 풀 컬러의 큰 토큰은 훑어볼 때 쉽게 찾을 수 있습니다. 연이율(APR)은 크고 강조 색으로 강조 표시됩니다.
+
+
+
+### 4. 명확한 용어 {#clear-terminology}
+
+용어는 이해하기 쉽고 적절해야 합니다.
+전문 용어는 완전히 새로운 정신 모델을 구축해야 하므로 큰 장애물이 될 수 있습니다. 사용자는 디자인을 이미 알고 있는 단어, 구문 및 개념과 연관시킬 수 없습니다. 모든 것이 혼란스럽고 낯설게 보이며, 사용을 시도하기 전에 가파른 학습 곡선이 있습니다. 사용자는 돈을 절약하려는 목적으로 디파이에 접근할 수 있지만, 마주하는 것은 채굴, 파밍, 스테이킹, 배출, 뇌물, 볼트, 락커, ve토큰, 베스팅, 에폭, 탈중앙화 알고리즘, 프로토콜 소유 유동성 등입니다…
+가장 넓은 그룹의 사람들이 이해할 수 있는 간단한 용어를 사용하려고 노력하십시오. 프로젝트만을 위한 새로운 용어를 만들지 마십시오.
+
+**팁:**
+
+- 간단하고 일관된 용어를 사용하십시오
+- 기존 언어를 최대한 많이 사용하십시오
+- 자신만의 용어를 만들지 마십시오
+- 나타나는 대로 관례를 따르십시오
+- 사용자를 최대한 교육하십시오
+
+**예시:**
+'나의 보상'은 이 프로젝트를 위해 만들어진 새로운 단어가 아니라 널리 이해되는 중립적인 용어입니다. 보상 자체가 다른 토큰으로 지급되더라도 실제 세계의 정신 모델과 일치시키기 위해 보상은 미국 달러로 표시됩니다.
+
+
+
+### 5. 행동은 가능한 한 짧게 {#actions-are-as-short-as-possible}
+
+하위 작업을 그룹화하여 사용자의 상호작용 속도를 높입니다.
+이는 UI뿐만 아니라 스마트 계약 수준에서도 수행될 수 있습니다. 사용자가 일반적인 작업을 완료하기 위해 시스템의 한 부분에서 다른 부분으로 이동하거나 시스템을 완전히 벗어날 필요가 없어야 합니다.
+
+**팁:**
+
+- 가능한 경우 "승인"을 다른 작업과 결합하십시오
+- 서명 단계를 최대한 가깝게 묶으십시오
+
+**예시:** '유동성 추가'와 '스테이킹'을 결합하는 것은 사용자의 시간과 가스를 모두 절약하는 가속기의 간단한 예입니다.
+
+
+
+### 6. 네트워크 연결은 가시적이고 유연해야 한다 {#network-connections-are-visible-and-flexible}
+
+사용자에게 연결된 네트워크를 알리고 네트워크를 변경할 수 있는 명확한 바로 가기를 제공합니다.
+이는 멀티체인 앱에서 특히 중요합니다. 연결이 끊어졌거나 지원되지 않는 네트워크에 연결된 상태에서도 앱의 주요 기능은 계속 표시되어야 합니다.
+
+**팁:**
+
+- 연결이 끊긴 동안 가능한 한 많은 앱을 표시하십시오
+- 사용자가 현재 연결된 네트워크를 표시하십시오
+- 사용자가 네트워크를 변경하기 위해 지갑으로 이동하게 하지 마십시오
+- 앱에서 사용자가 네트워크를 전환해야 하는 경우 기본 콜투액션에서 해당 작업을 유도하십시오
+- 앱에 여러 네트워크에 대한 마켓이나 볼트가 포함된 경우 사용자가 현재 보고 있는 세트를 명확하게 명시하십시오
+
+**예시:** 앱바에서 사용자가 연결된 네트워크를 표시하고 변경할 수 있도록 하십시오.
+
+
+
+### 7. 지갑이 아닌 앱에서 제어 {#control-from-the-app-not-the-wallet}
+
+UI는 사용자에게 알아야 할 모든 것을 알려주고 해야 할 모든 것을 제어할 수 있도록 해야 합니다.
+웹3에는 UI에서 수행하는 작업과 지갑에서 수행하는 작업이 있습니다. 일반적으로 UI에서 작업을 시작한 다음 지갑에서 확인합니다. 이 두 가닥이 신중하게 통합되지 않으면 사용자는 불편함을 느낄 수 있습니다.
+
+**팁:**
+
+- UI의 피드백을 통해 시스템 상태를 전달하십시오
+- 기록을 보관하십시오
+- 이전 거래에 대한 블록 탐색기 링크를 제공하십시오
+- 네트워크를 변경할 수 있는 바로 가기를 제공하십시오.
+
+미묘한 컨테이너는 사용자가 지갑에 어떤 관련 토큰을 가지고 있는지 보여주고, 주요 CTA는 네트워크를 변경할 수 있는 바로 가기를 제공합니다.
+
+
diff --git a/public/content/translations/ko/developers/docs/design-and-ux/index.md b/public/content/translations/ko/developers/docs/design-and-ux/index.md
new file mode 100644
index 00000000000..f3953e71840
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/design-and-ux/index.md
@@ -0,0 +1,86 @@
+---
+title: "Web3의 디자인과 UX"
+description: "Web3 공간과 이더리움의 UX 디자인 및 연구 소개"
+lang: ko
+---
+
+이더리움을 사용한 디자인이 처음이신가요? 잘 찾아오셨습니다. 이더리움 커뮤니티는 Web3 디자인 및 연구 기초를 소개하는 자료를 작성했습니다. 여러분에게 익숙한 다른 앱 디자인과 다를 수 있는 핵심 개념에 대해 배우게 될 것입니다.
+
+Web3에 대한 기본적인 이해가 먼저 필요하신가요? [**학습 허브**](/learn/)를 확인해 보세요.
+
+## 사용자 조사로 시작하기 {#start-with-user-research}
+
+효과적인 디자인은 시각적으로 매력적인 사용자 인터페이스를 만드는 것 이상을 의미합니다. 사용자의 요구, 목표, 동기를 깊이 이해하는 과정이 포함됩니다. 따라서 모든 디자이너가 의도적이고 신중한 작업을 보장하기 위해 [**더블 다이아몬드 프로세스**](https://en.wikipedia.org/wiki/Double_Diamond_\(design_process_model\))와 같은 디자인 프로세스를 채택할 것을 적극 권장합니다.
+
+- [Web3는 더 많은 UX 연구원과 디자이너가 필요합니다](https://blog.akasha.org/akasha-conversations-9-web3-needs-more-ux-researchers-and-designers) - 현재 디자인 성숙도에 대한 개요
+- [Web3 UX 연구에 대한 간단한 가이드](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1) - 연구 수행 방법에 대한 간단한 가이드
+- [Web3에서 UX 결정에 접근하는 방법](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/) - 정량적 연구와 정성적 연구에 대한 간략한 개요 및 둘의 차이점 (동영상, 6분)
+- [Web3에서 UX 연구원으로 일하기](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849) - Web3에서 UX 연구원으로 일하는 것에 대한 개인적인 견해
+
+## Web3 연구 사례 {#research-in-web3}
+
+이것은 Web3에서 수행된 사용자 연구를 선별한 목록으로, 디자인 및 제품 결정에 도움이 되거나 자체 연구를 수행하는 데 영감을 줄 수 있습니다.
+
+| 중점 분야 | 이름 |
+| :--------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 암호화폐 온보딩 | [Reown Pulse 2024: 암호화폐 소비자 심리 및 사용 현황](https://reown.com/blog/unveiling-walletconnects-consumer-crypto-report) |
+| 암호화폐 온보딩 | [CRADL: 암호화폐의 UX](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) |
+| 암호화폐 온보딩 | [CRADL: 암호화폐 온보딩](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) |
+| 암호화폐 온보딩 | [비트코인 UX 보고서](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) |
+| 암호화폐 온보딩 | [Consensys: 2023년 전 세계 Web3 인식 현황](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) |
+| 암호화폐 온보딩 | [NEAR: 채택을 향한 여정 가속화](https://drive.google.com/file/d/1VuaQP4QSaQxR5ddQKTMGI0b0rWdP7uGn/view) |
+| 스테이킹 | [OpenUX: Rocket Pool 노드 운영자 UX](https://storage.googleapis.com/rocketpool/RocketPool-NodeOperator-UX-Report-Jan-2024.pdf) |
+| 스테이킹 | [스테이킹: 주요 동향, 시사점 및 예측 - Eth Staker](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) |
+| 스테이킹 | [다중 앱 스테이킹](https://github.com/threshold-network/UX-User-Research/blob/main/Multi-App%20Staking%20\(MAS\)/iterative-user-study/MAS%20Iterative%20User%20Study.pdf) |
+| DAO | [2022 DAO 연구 업데이트: DAO 빌더에게 무엇이 필요한가?](https://blog.aragon.org/2022-dao-research-update/) |
+| 디파이 | [보장 풀](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) |
+| 디파이 | [Consensys: 디파이 사용자 연구 보고서 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) |
+| 메타버스 | [메타버스: 사용자 연구 보고서](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) |
+| 메타버스 | [사파리 가기: 메타버스에서 사용자 조사하기](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (동영상, 27분) |
+
+## Web3를 위한 디자인 {#design-for-web3}
+
+- [Web3 UX 디자인 핸드북](https://web3ux.design/) - Web3 앱 디자인 실용 가이드
+- [Web3 디자인 원칙](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1) - 블록체인 기반 탈중앙화앱을 위한 UX 규칙 프레임워크
+- [블록체인 디자인 원칙](https://medium.com/design-ibm/blockchain-design-principles-599c5c067b6e) - IBM의 블록체인 디자인팀이 얻은 교훈
+- [Neueux.com](https://neueux.com/apps) - 다양한 필터링 옵션을 갖춘 사용자 플로우의 UI 라이브러리
+- [Web3의 사용성 위기: 꼭 알아야 할 것!](https://www.youtube.com/watch?v=oBSXT_6YDzg) - 개발자 중심 프로젝트 구축의 함정에 대한 패널 토론 (동영상, 34분)
+
+## 시작하기 {#getting-started}
+
+- [Web3를 위한 휴리스틱](/developers/docs/design-and-ux/heuristics-for-web3/) - Web3 인터페이스 디자인을 위한 7가지 휴리스틱
+- [DEX 디자인 모범 사례](/developers/docs/design-and-ux/dex-design-best-practice/) - 탈중앙화 거래소 디자인 가이드
+
+## Web3 디자인 사례 연구 {#design-case-studies}
+
+- [Deep Work Studio](https://www.deepwork.studio/case-studies)
+- [OpenSea에서 NFT 판매하기](https://builtformars.com/case-studies/opensea)
+- [지갑 UX 분석: 지갑은 어떻게 변해야 하는가](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver) (동영상, 20분)
+
+## 디자인 현상금 {#bounties}
+
+- [Dework](https://app.dework.xyz/bounties)
+- [Buildbox 해커톤](https://app.buidlbox.io/)
+- [ETHGlobal 해커톤](https://ethglobal.com/)
+
+## 디자인 DAO 및 커뮤니티 {#design-daos-and-communities}
+
+전문 커뮤니티 주도 조직에 참여하거나 디자인 그룹에 가입하여 다른 회원들과 디자인 및 연구 관련 주제와 동향에 대해 논의하세요.
+
+- [Vectordao.com](https://vectordao.com/)
+- [Deepwork.studio](https://www.deepwork.studio/)
+- [We3.co](https://we3.co/)
+- [Openux.xyz](https://openux.xyz/)
+
+## 디자인 시스템 및 기타 디자인 자료 {#design-systems-and-resources}
+
+- [Optimism 디자인](https://www.figma.com/@optimism) (Figma)
+- [Ethereum.org 디자인 시스템](https://www.figma.com/@ethdotorg) (Figma)
+- [Finity, Polygon의 디자인 시스템](https://www.figma.com/community/file/1073921725197233598/finity-design-system) (Figma)
+- [Kleros 디자인 시스템](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma)
+- [Safe 디자인 시스템](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma)
+- [ENS 디자인 시스템](https://thorin.ens.domains/)
+- [Mirror 디자인 시스템](https://degen-xyz.vercel.app/)
+
+**이 페이지에 나열된 기사 및 프로젝트는 공식적인 보증이 아니며**, 정보 제공 목적으로만 제공됩니다.
+저희는 [목록 정책](/contributing/design/adding-design-resources)의 기준에 따라 이 페이지에 링크를 추가합니다. 프로젝트/기사 추가를 원하시면 [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/public/content/developers/docs/design-and-ux/index.md)에서 이 페이지를 편집하세요.
diff --git a/public/content/translations/ko/developers/docs/development-networks/index.md b/public/content/translations/ko/developers/docs/development-networks/index.md
new file mode 100644
index 00000000000..41650b6aba8
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/development-networks/index.md
@@ -0,0 +1,71 @@
+---
+title: "개발 네트워크"
+description: "개발 네트워크에 대한 개요 및 이더리움 애플리케이션 구축에 도움이 되는 도구에 대한 설명입니다."
+lang: ko
+---
+
+스마트 계약을 사용하여 이더리움 애플리케이션을 구축할 때 배포하기 전에 로컬 네트워크에서 실행하여 어떻게 작동하는지 확인하는 것이 좋습니다.
+
+웹 개발을 위해 컴퓨터에서 로컬 서버를 실행하는 것과 유사하게, 개발 네트워크를 사용하여 로컬 블록체인 인스턴스를 생성하고 댑을 테스트할 수 있습니다. 이러한 이더리움 개발 네트워크는 공개 테스트넷보다 훨씬 빠른 반복 작업을 가능하게 하는 기능을 제공합니다(예: 테스트넷 수도꼭지에서 ETH를 얻을 필요가 없음).
+
+## 필수 구성 요소 {#prerequisites}
+
+[이더리움 스택의 기본 사항](/developers/docs/ethereum-stack/)과 [이더리움 네트워크](/developers/docs/networks/)를 이해한 후에 개발 네트워크에 대해 자세히 알아보는 것이 좋습니다.
+
+## 개발 네트워크란 무엇인가요? {#what-is-a-development-network}
+
+개발 네트워크는 기본적으로 로컬 개발을 위해 특별히 설계된 이더리움 클라이언트(이더리움 구현)입니다.
+
+**로컬에서 표준 이더리움 노드를 실행하면 안 되나요?**
+
+[노드를 실행](/developers/docs/nodes-and-clients/#running-your-own-node)할 수도 _있지만_, 개발 네트워크는 개발 목적으로 구축되었기 때문에 다음과 같은 편리한 기능이 포함된 경우가 많습니다.
+
+- 결정론적으로 로컬 블록체인에 데이터(예: ETH 잔액이 있는 계정)를 시딩합니다.
+- 수신하는 각 트랜잭션에 대해 순서대로 지연 없이 즉시 블록을 생성합니다.
+- 향상된 디버깅 및 로깅 기능
+
+## 사용 가능한 도구 {#available-projects}
+
+**참고**: 대부분의 [개발 프레임워크](/developers/docs/frameworks/)에는 내장된 개발 네트워크가 포함되어 있습니다. 프레임워크로 시작하여 [로컬 개발 환경을 설정](/developers/local-environment/)하는 것을 추천합니다.
+
+### Hardhat 네트워크 {#hardhat-network}
+
+개발용으로 설계된 로컬 이더리움 네트워크입니다. 계약을 배포하고, 테스트를 실행하고, 코드를 디버그할 수 있습니다.
+
+Hardhat 네트워크는 전문가를 위한 이더리움 개발 환경인 Hardhat에 내장되어 있습니다.
+
+- [웹사이트](https://hardhat.org/)
+- [GitHub](https://github.com/NomicFoundation/hardhat)
+
+### 로컬 비콘 체인 {#local-beacon-chains}
+
+일부 합의 클라이언트에는 테스트 목적으로 로컬 비콘 체인을 가동하기 위한 내장 도구가 있습니다. Lighthouse, Nimbus, Lodestar에 대한 지침은 다음과 같습니다.
+
+- [Lodestar를 사용한 로컬 테스트넷](https://chainsafe.github.io/lodestar/contribution/advanced-topics/setting-up-a-testnet#post-merge-local-testnet/)
+- [Lighthouse를 사용한 로컬 테스트넷](https://lighthouse-book.sigmaprime.io/setup.html#local-testnets)
+
+### 공개 이더리움 테스트 체인 {#public-beacon-testchains}
+
+유지 관리되는 두 가지 공개 이더리움 테스트 구현인 Sepolia와 Hoodi도 있습니다. 장기적으로 지원되는 권장 테스트넷은 Hoodi이며 누구나 자유롭게 검증할 수 있습니다. Sepolia는 허가된 검증자 집합을 사용하므로, 이 테스트넷의 신규 검증자는 일반적으로 접근할 수 없습니다.
+
+- [Hoodi 스테이킹 런치패드](https://hoodi.launchpad.ethereum.org/)
+
+### Kurtosis 이더리움 패키지 {#kurtosis}
+
+Kurtosis는 개발자가 블록체인 네트워크의 재현 가능한 인스턴스를 로컬에서 가동할 수 있도록 하는 다중 컨테이너 테스트 환경용 빌드 시스템입니다.
+
+이더리움 Kurtosis 패키지를 사용하면 Docker 또는 Kubernetes를 통해 매개변수화 가능하고 확장성이 뛰어나며 비공개인 이더리움 테스트넷을 신속하게 인스턴스화할 수 있습니다. 이 패키지는 모든 주요 실행 레이어(EL) 및 합의 레이어(CL) 클라이언트를 지원합니다. Kurtosis는 이더리움 코어 인프라와 관련된 검증 및 테스트 워크플로에 사용될 대표 네트워크에 대한 모든 로컬 포트 매핑 및 서비스 연결을 원활하게 처리합니다.
+
+- [이더리움 네트워크 패키지](https://github.com/kurtosis-tech/ethereum-package)
+- [웹사이트](https://www.kurtosis.com/)
+- [GitHub](https://github.com/kurtosis-tech/kurtosis)
+- [개발문서](https://docs.kurtosis.com/)
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [개발 프레임워크](/developers/docs/frameworks/)
+- [로컬 개발 환경 설정](/developers/local-environment/)
diff --git a/public/content/translations/ko/developers/docs/ethereum-stack/index.md b/public/content/translations/ko/developers/docs/ethereum-stack/index.md
new file mode 100644
index 00000000000..0b7f7c194bf
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/ethereum-stack/index.md
@@ -0,0 +1,61 @@
+---
+title: "이더리움 스택 소개"
+description: "이더리움 스택의 다양한 계층과 그들이 어떻게 결합되는지에 대한 설명."
+lang: ko
+---
+
+여느 소프트웨어 스택과 마찬가지로 온전한 "이더리움스택"이란, 당신의 목표에 따라 프로젝트 마다 제각각일 것입니다.
+
+하지만 어떻게 응용프로그램과 이더리움 블록체인이 상호작용하는 지를 머리속에 그릴 수 있도록 돕는 핵심 컴퍼넌트들은 존재합니다. 이더리움 기술스택의 계층들을 이해하는 것은 이더리움이 소프트웨어 프로젝트에 통합되게끔 하는 서로 다른 방식들을 이해하는데 도움을 줍니다.
+
+## 레벨 1: 이더리움 가상 머신 {#ethereum-virtual-machine}
+
+[이더리움 가상 머신(EVM)](/developers/docs/evm/)은 이더리움에서 스마트 계약을 실행하는 런타임 환경입니다. 이더리움 블록체인의 모든 스마트 계약 및 상태 변경은 [트랜잭션](/developers/docs/transactions/)에 의해 실행됩니다. 이더리움 가상환경은 이더리움 네트워크상의 모든 트랜잭션 처리를 수행합니다.
+
+여느 가상머신과 마찬가지로 이더리움가상머신은 코드의 실행과 물리적인 장비(이더리움 노드) 사이에 추상화 계층을 만듭니다. 현재 EVM은 전 세계에 분산된 수천 개의 노드에서 실행되고 있습니다.
+
+이더리움 가상 머신은 내부적으로 특정한 작업 수행을 위해 일련의 opcode 명령어를 사용합니다. 이 (140개의 고유한) 연산 부호는 EVM이 [튜링 완전](https://en.wikipedia.org/wiki/Turing_completeness)하도록 하며, 이는 충분한 리소스가 주어진다면 EVM이 거의 모든 것을 계산할 수 있음을 의미합니다.
+
+dapp 개발자로서, EVM에 대해 많이 알 필요는 없으며, 단지 EVM이 존재하고 이더리움의 모든 애플리케이션을 중단 없이 안정적으로 구동한다는 사실만 알고 있으면 됩니다.
+
+## 레벨 2: 스마트 계약 {#smart-contracts}
+
+[스마트 계약](/developers/docs/smart-contracts/)은 이더리움 블록체인에서 실행되는 실행 가능한 프로그램입니다.
+
+스마트 계약은 EVM 바이트코드(연산 부호라고 불리는 저수준 기계 명령어)로 컴파일되는 특정 [프로그래밍 언어](/developers/docs/smart-contracts/languages/)를 사용하여 작성됩니다.
+
+스마트 계약은 오픈 소스 라이브러리 역할을 할 뿐만 아니라, 항상 실행 중이며 중단될 수 없는 공개 API 서비스이기도 합니다. 스마트 계약은 사용자와 애플리케이션([탈중앙화앱](/developers/docs/dapps/))이 허가 없이 상호 작용할 수 있는 공개 함수를 제공합니다. 모든 애플리케이션은 배포된 스마트 계약과 통합하여 [데이터 피드](/developers/docs/oracles/) 추가 또는 토큰 스왑 지원과 같은 기능을 구성할 수 있습니다. 또한, 누구나 새로운 스마트 계약을 이더리움에 배포하여 애플리케이션의 필요에 맞는 맞춤형 기능을 추가할 수 있습니다.
+
+dapp 개발자로서 이더리움 블록체인에 맞춤형 기능을 추가하고 싶을 때에만 스마트 계약을 작성해야 합니다. 프로젝트의 요구 사항을 대부분 또는 전부 기존 스마트 계약과의 통합으로 해결할 수 있을 것입니다. 예를 들어 스테이블코인 결제 지원이나 토큰의 분산형 교환 기능을 추가하는 경우입니다.
+
+## 레벨 3: 이더리움 노드 {#ethereum-nodes}
+
+애플리케이션이 이더리움 블록체인과 상호 작용하려면 [이더리움 노드](/developers/docs/nodes-and-clients/)에 연결해야 합니다. 노드에 연결하면 블록체인 데이터를 읽거나 네트워크에 트랜잭션을 전송할 수 있습니다.
+
+이더리움 노드는 소프트웨어를 실행하는 컴퓨터 - 즉, 이더리움 클라이언트입니다. 클라이언트는 각 블럭의 트랜잭션을 검증하여 네트워크를 안전하고 데이터가 무결하게 관리하는 이더리움의 구현체를 말합니다. **이더리움 노드가 이더리움 블록체인입니다**. 노드는 이더리움 블록체인의 상태를 집단적으로 저장하며, 블록체인 상태를 변경하기 위해 트랜잭션에 대한 합의를 이룹니다.
+
+애플리케이션을 이더리움 노드([JSON-RPC API](/developers/docs/apis/json-rpc/)를 통해)에 연결하면, 애플리케이션은 블록체인에서 데이터(예: 사용자 계정 잔액)를 읽을 수 있을 뿐만 아니라 네트워크에 새로운 트랜잭션(예: 사용자 계정 간 ETH 전송 또는 스마트 계약 함수 실행)을 브로드캐스트할 수 있습니다.
+
+## 레벨 4: 이더리움 클라이언트 API {#ethereum-client-apis}
+
+이더리움 오픈 소스 커뮤니티에서 제작하고 유지 관리하는 다양한 편리한 라이브러리가 애플리케이션이 이더리움 블록체인과 연결하고 통신할 수 있도록 도와줍니다.
+
+사용자 대상 애플리케이션이 웹 앱인 경우, 프런트엔드에 직접 [JavaScript API](/developers/docs/apis/javascript/)를 `npm install`할 수 있습니다. 또는 [Python](/developers/docs/programming-languages/python/)이나 [Java](/developers/docs/programming-languages/java/) API를 사용하여 서버 측에서 이 기능을 구현할 수도 있습니다.
+
+이 API는 스택에서 반드시 필요한 부분은 아니지만, 이더리움 노드와 직접 상호작용하는 복잡성을 대부분 추상화해줍니다. 또한 유틸리티 함수(예: ETH를 Gwei로 변환)를 제공하므로, 개발자는 이더리움 클라이언트의 복잡성을 다루는 데 시간을 덜 소비하고 애플리케이션의 특정 기능에 더 집중할 수 있습니다.
+
+## 레벨 5: 최종 사용자 애플리케이션 {#end-user-applications}
+
+스택의 최상위에는 사용자 대상 애플리케이션이 있습니다. 이들은 주로 웹 및 모바일 애플리케이션과 같은 여러분이 정기적으로 사용하고 개발하는 표준 애플리케이션입니다.
+
+이러한 사용자 인터페이스를 개발하는 방법은 본질적으로 변하지 않습니다. 대부분의 경우, 사용자는 그들이 사용하는 애플리케이션이 블록체인을 기반으로 구축되었는지 알 필요가 없습니다.
+
+## 스택을 선택할 준비가 되셨나요? {#ready-to-choose-your-stack}
+
+이더리움 애플리케이션을 위한 [로컬 개발 환경 설정](/developers/local-environment/) 가이드를 확인하세요.
+
+## 더 읽어보기 {#further-reading}
+
+- [웹 3.0 애플리케이션의 아키텍처](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/evm/index.md b/public/content/translations/ko/developers/docs/evm/index.md
new file mode 100644
index 00000000000..9c83d2e4b5e
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/evm/index.md
@@ -0,0 +1,88 @@
+---
+title: "이더리움 가상 머신(EVM)"
+description: "이더리움 가상머신 소개 및 상태, 트랜잭션, 그리고 스마트 계약과의 관련성"
+lang: ko
+---
+
+이더리움 가상머신(EVM)은 모든 이더리움 노드에서 코드를 일관되고 안전하게 실행하는 탈중앙화된 가상 환경입니다. 노드는 EVM을 실행하여 스마트 계약을 실행하고, "[가스](/developers/docs/gas/)"를 사용하여 [연산](/developers/docs/evm/opcodes/)에 필요한 연산량을 측정하며 효율적인 리소스 할당과 네트워크 보안을 보장합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+EVM을 이해하려면 [바이트](https://wikipedia.org/wiki/Byte), [메모리](https://wikipedia.org/wiki/Computer_memory), [스택](https://wikipedia.org/wiki/Stack_\(abstract_data_type\))과 같은 컴퓨터 과학의 일반적인 용어에 대한 기본적인 지식이 필요합니다. 또한 [해시 함수](https://wikipedia.org/wiki/Cryptographic_hash_function) 및 [머클 트리](https://wikipedia.org/wiki/Merkle_tree)와 같은 암호학/블록체인 개념에 익숙하면 도움이 됩니다.
+
+## 원장에서 상태 머신으로 {#from-ledger-to-state-machine}
+
+'분산 원장'의 유사함은 암호학의 기본 도구들을 사용해서 분산 화폐를 가능하게 하는 비트코인과 같은 블록체인을 설명하는데 자주 사용된다. 원장은 누군가가 원장을 수정하기 위해 할 수 있는 것과 할 수 없는 것을 지배하는 일련의 규칙을 준수해야 하는 활동 기록을 유지한다. 예를 들어 하나의 비트코인 주소는 그 주소가 이전에 받은 것보다 더 많은 비트코인을 쓸 수 없다. 이런 규칙은 비트코인과 다른 많은 블록체인 상의 모든 트랜잭션의 근간이다.
+
+이더리움은 거의 동일하고 직관적인 규칙을 따르는 자체 네이티브 암호화폐(이더)를 가지고 있지만, [스마트 계약](/developers/docs/smart-contracts/)이라는 훨씬 더 강력한 기능도 지원합니다. 이 더 복잡한 기능을 위해서, 더 정교한 설명이 필요하다. 이더리움은 분산 원장이 아니라 분산 [상태 머신](https://wikipedia.org/wiki/Finite-state_machine)입니다. 이더리움의 상태는 모든 계정과 잔고뿐만 아니라 사전 정의된 규칙에 따라 블록마다 변경될 수 있고, 임의의 머신 코드를 실행할 수 있는 머신 상태까지 포함하는 거대한 자료 구조입니다. 블록에서 블록으로의 상태 변화에 대한 자세한 규칙은 EVM에 의해 정의된다.
+
+
+_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)에서 발췌한 다이어그램_
+
+## 이더리움 상태 전환 함수 {#the-ethereum-state-transition-function}
+
+EVM은 하나의 입력으로 하나의 결정된 출력을 생성하는 수학 함수처럼 동작한다. 따라서 이더리움을 상태 전환 함수를 갖는 것으로 보다 공식적으로 설명하는 것이 매우 유용합니다.
+
+```
+Y(S, T)= S'
+```
+
+이전 유효 상태 `(S)`와 새로운 유효 거래 집합 `(T)`이 주어지면 이더리움 상태 전환 함수 `Y(S, T)`는 새로운 유효 출력 상태 `S'`를 생성합니다.
+
+### 상태 {#state}
+
+이더리움의 맥락에서 상태는 [수정된 머클 패트리샤 트리](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)라고 불리는 거대한 자료 구조로, 이는 해시로 연결된 모든 [계정](/developers/docs/accounts/)을 유지하며 블록체인에 저장된 단일 루트 해시로 축소될 수 있습니다.
+
+### 트랜잭션 {#transactions}
+
+트랜잭션은 계정으로부터 암호학적으로 서명된 명령들이다. 트랜잭션은 두가지 종류가 있다. 메시지 콜을 만드는 것들, 그리고 컨트랙트를 생성하는 것들.
+
+계약 생성 시 컴파일된 [스마트 계약](/developers/docs/smart-contracts/anatomy/) 바이트코드가 포함된 새로운 계약 계정이 생성됩니다. 다른 게정이 그 컨트랙트로 메세지 콜을 보낼 때 마다, 그 바이트코드를 실행한다.
+
+## EVM 명령 {#evm-instructions}
+
+EVM은 1024개 항목의 깊이를 가진 [스택 머신](https://wikipedia.org/wiki/Stack_machine)으로 실행됩니다. 각 항목은 256비트 단어로 256비트 암호학(예: Keccak-256 해시 또는 secp256k1 서명)에서 사용하기 쉽도록 선택되었다.
+
+실행 중에 EVM은 트랜잭션 간에 유지되지 않는 일시적인 _메모리_(워드 주소 지정 바이트 배열)를 유지합니다.
+
+### 임시 저장 공간
+
+임시 저장 공간은 `TSTORE` 및 `TLOAD` 연산 부호를 통해 액세스되는 트랜잭션별 키-값 저장소입니다. 동일한 트랜잭션 동안 모든 내부 호출에서 유지되지만, 트랜잭션이 끝나면 삭제됩니다. 메모리와 달리, 임시 저장 공간은 실행 프레임이 아닌 EVM 상태의 일부로 모델링되지만, 전역 상태에는 커밋되지 않습니다. 임시 저장 공간은 트랜잭션 중 내부 호출 간에 가스 효율적인 임시 상태 공유를 가능하게 합니다.
+
+### 스토리지
+
+계약에는 해당 계정과 연결되어 있고 전역 상태의 일부인 머클 패트리샤 _저장 공간_ 트리(워드 주소 지정 워드 배열)가 포함됩니다. 이 영구 저장 공간은 단일 트랜잭션 기간 동안에만 사용할 수 있고 계정의 영구 저장 공간 트리의 일부를 구성하지 않는 임시 저장 공간과 다릅니다.
+
+### 연산 부호
+
+컴파일된 스마트 계약 바이트코드는 `XOR`, `AND`, `ADD`, `SUB` 등과 같은 표준 스택 연산을 수행하는 다수의 EVM [연산 부호](/developers/docs/evm/opcodes)로 실행됩니다. EVM은 또한 `ADDRESS`, `BALANCE`, `BLOCKHASH` 등과 같은 여러 블록체인별 스택 연산도 구현합니다. 연산 부호 집합에는 임시 저장 공간에 대한 액세스를 제공하는 `TSTORE` 및 `TLOAD`도 포함됩니다.
+
+
+_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)에서 발췌한 다이어그램_
+
+## EVM 구현 {#evm-implementations}
+
+EVM의 모든 구현은 이더리움 옐로우 페이퍼에 설명된 스펙을 준수해야한다.
+
+이더리움의 10년 역사 동안 EVM은 여러 차례 개정되었으며, 다양한 프로그래밍 언어로 된 여러 EVM 구현이 있습니다.
+
+[이더리움 실행 클라이언트](/developers/docs/nodes-and-clients/#execution-clients)에는 EVM 구현이 포함됩니다. 게다가 다음을 포함하는 여러 자체 구동 구현물이 있다.
+
+- [Py-EVM](https://github.com/ethereum/py-evm) - _Python_
+- [evmone](https://github.com/ethereum/evmone) - _C++_
+- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_
+- [revm](https://github.com/bluealloy/revm) - _Rust_
+
+## 추가 정보 {#further-reading}
+
+- [이더리움 황서(Yellowpaper)](https://ethereum.github.io/yellowpaper/paper.pdf)
+- [Jellopaper, 일명 KEVM: K의 EVM 시맨틱](https://jellopaper.org/)
+- [Beigepaper](https://github.com/chronaeon/beigepaper)
+- [이더리움 가상 머신 연산 부호](https://www.ethervm.io/)
+- [이더리움 가상 머신 연산 부호 대화형 레퍼런스](https://www.evm.codes/)
+- [Solidity 개발문서의 간단한 소개](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6)
+- [마스터링 이더리움 - 이더리움 가상 머신](https://github.com/ethereumbook/ethereumbook/blob/openedition/13evm.asciidoc)
+
+## 관련 주제 {#related-topics}
+
+- [가스](/developers/docs/gas/)
diff --git a/public/content/translations/ko/developers/docs/evm/opcodes/index.md b/public/content/translations/ko/developers/docs/evm/opcodes/index.md
new file mode 100644
index 00000000000..11ff5d06b9c
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/evm/opcodes/index.md
@@ -0,0 +1,177 @@
+---
+title: "EVM용 연산 부호"
+description: "이더리움 가상 머신에서 사용할 수 있는 모든 연산 부호 목록입니다."
+lang: ko
+---
+
+## 개요 {#overview}
+
+[wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes)에 있는 EVM 참조 페이지의 업데이트된 버전입니다.
+또한 [옐로페이퍼](https://ethereum.github.io/yellowpaper/paper.pdf), [젤로페이퍼](https://jellopaper.org/evm/), [geth](https://github.com/ethereum/go-ethereum) 구현을 참고했습니다.
+이 문서는 이해하기 쉬운 참조 자료로 만들어졌지만, 특별히 엄격하지는 않습니다.
+정확성을 확인하고 모든 에지 케이스를 인지하고 싶다면, 젤로페이퍼 또는 클라이언트 구현을 사용하는 것이 좋습니다.
+
+상호작용형 참조 자료를 찾고 계신가요? [evm.codes](https://www.evm.codes/)를 확인해 보세요.
+
+동적 가스 비용이 드는 연산에 대해서는 [gas.md](https://github.com/wolflo/evm-opcodes/blob/main/gas.md)를 참조하세요.
+
+💡 빠른 팁: 전체 라인을 보려면, 데스크톱에서 `[shift] + 스크롤`을 사용하여 가로로 스크롤하세요.
+
+| 스택 | 이름 | 가스 | 초기 스택 | 결과 스택 | 메모리 / 스토리지 | 참고사항 | |
+| :---: | :------------- | :---------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |
+| 00 | STOP | 0 | | | | 실행 중단 | |
+| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 덧셈(모듈로 2\*\*256) | |
+| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 곱셈(모듈로 2\*\*256) | |
+| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 뺄셈(모듈로 2\*\*256) | |
+| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 나눗셈 | |
+| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 나눗셈 | |
+| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 모듈로 | |
+| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 모듈로 | |
+| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 덧셈(모듈로 N) | |
+| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 곱셈(모듈로 N) | |
+| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 거듭제곱(모듈로 2\*\*256) | |
+| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | `x`를 `(b+1)` 바이트에서 32바이트로 [부호 확장](https://wikipedia.org/wiki/Sign_extension) | |
+| 0C-0F | _유효하지 않음_ | | | | | | |
+| 10 | LT | 3 | `a, b` | `a < b` | | uint256 보다 작음 | |
+| 11 | GT | 3 | `a, b` | `a > b` | | uint256 보다 큼 | |
+| 12 | SLT | 3 | `a, b` | `a < b` | | int256 보다 작음 | |
+| 13 | SGT | 3 | `a, b` | `a > b` | | int256 보다 큼 | |
+| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 같음 | |
+| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256이 0인지 확인 | |
+| 16 | AND | 3 | `a, b` | `a && b` | | 비트 AND | |
+| 17 | OR | 3 | `a, b` | `a \\|\\| b` | | 비트 OR | |
+| 18 | XOR | 3 | `a, b` | `a ^ b` | | 비트 XOR | |
+| 19 | NOT | 3 | `a` | `~a` | | 비트 NOT | |
+| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | 왼쪽부터 (u)int256 `x`의 `i`번째 바이트 | |
+| 1B | SHL | 3 | `shift, val` | `val << shift` | | 왼쪽으로 시프트 | |
+| 1C | SHR | 3 | `shift, val` | `val >> shift` | | 논리적 오른쪽 시프트 | |
+| 1D | SAR | 3 | `shift, val` | `val >> shift` | | 산술적 오른쪽 시프트 | |
+| 1E-1F | _유효하지 않음_ | | | | | | |
+| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 | |
+| 21-2F | _유효하지 않음_ | | | | | | |
+| 30 | ADDRESS | 2 | `.` | `address(this)` | | 실행 중인 컨트랙트의 주소 | |
+| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | 잔액, wei 단위 | |
+| 32 | ORIGIN | 2 | `.` | `tx.origin` | | 트랜잭션을 시작한 주소 | |
+| 33 | CALLER | 2 | `.` | `msg.sender` | | 메시지 발신자의 주소 | |
+| 34 | CALLVALUE | 2 | `.` | `msg.value` | | 메시지 값, wei 단위 | |
+| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | 인덱스 `idx`에서 메시지 데이터 워드 읽기 | |
+| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | 메시지 데이터의 길이, 바이트 단위 | |
+| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | 메시지 데이터 복사 | |
+| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | 실행 중인 컨트랙트 코드의 길이, 바이트 단위 | |
+| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | 실행 중인 컨트랙트의 바이트코드 복사 |
+| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | 트랜잭션의 가스 가격, 가스 단위당 wei [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) | |
+| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | addr에 있는 코드 크기, 바이트 단위 | |
+| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | `addr`에서 코드 복사 | |
+| 3D | RETURNDATASIZE | 2 | `.` | `size` | | 마지막 외부 호출에서 반환된 데이터의 크기, 바이트 단위 | |
+| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | 마지막 외부 호출에서 반환된 데이터 복사 | |
+| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `hash` | | 해시 = addr이 존재하는 경우 ? keccak256(addr.code) : 0 | |
+| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | | |
+| 41 | COINBASE | 2 | `.` | `block.coinbase` | | 현재 블록 제안자의 주소 | |
+| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | 현재 블록의 타임스탬프 | |
+| 43 | NUMBER | 2 | `.` | `block.number` | | 현재 블록의 번호 | |
+| 44 | PREVRANDAO | 2 | `.` | `랜덤성 비콘` | | 랜덤성 비콘 | |
+| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | 현재 블록의 가스 한도 | |
+| 46 | CHAINID | 2 | `.` | `chain_id` | | 현재 [체인 ID](https://eips.ethereum.org/EIPS/eip-155)를 스택에 푸시 | |
+| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | 실행 중인 컨트랙트의 잔액, wei 단위 | |
+| 48 | BASEFEE | 2 | `.` | `block.basefee` | | 현재 블록의 기본 수수료 | |
+| 49 | BLOBHASH | 3 | `idx` | `tx.blob_versioned_hashes[idx]` | | [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) | |
+| 4A | BLOBBASEFEE | 2 | `.` | `block.blobbasefee` | | 현재 블록의 블롭 기본 수수료 ([EIP-7516](https://eips.ethereum.org/EIPS/eip-7516)) | |
+| 4B-4F | _유효하지 않음_ | | | | | | |
+| 50 | POP | 2 | `_anon` | `.` | | 스택 맨 위에서 항목을 제거하고 폐기 | |
+| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | 오프셋 `ost`의 메모리에서 워드 읽기 | |
+| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | 메모리에 워드 쓰기 | |
+| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | 메모리에 단일 바이트 쓰기 | |
+| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | 스토리지에서 워드 읽기 | |
+| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | 스토리지에 워드 쓰기 | |
+| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst`는 `dst`가 유효한 점프 대상인 경우에만 `pc`가 할당됨을 표시 | |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ?` dst : $pc + 1` | |
+| 58 | PC | 2 | `.` | `$pc` | | 프로그램 카운터 | |
+| 59 | MSIZE | 2 | `.` | `len(mem)` | | 현재 실행 컨텍스트의 메모리 크기, 바이트 단위 | |
+| 5A | GAS | 2 | `.` | `gasRemaining` | | | |
+| 5B | JUMPDEST | 1 | | | 유효한 점프 대상 표시 | 유효한 점프 대상(예: 푸시 데이터 내부에 있지 않은 점프 대상) | |
+| 5C | TLOAD | 100 | `key` | `tstorage[key]` | | 임시 스토리지에서 워드 읽기 ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | |
+| 5D | TSTORE | 100 | `key, val` | `.` | tstorage[key] := val | 임시 스토리지에 워드 쓰기 ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | |
+| 5E | MCOPY | 3+3\*words+[A0](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `dstOst, ost, len` | `.` | mem[dstOst] := mem[ost:ost+len] | 한 영역에서 다른 영역으로 메모리 복사 ([EIP-5656](https://eips.ethereum.org/EIPS/eip-5656)) | |
+| 5F | PUSH0 | 2 | `.` | `uint8` | | 상수 값 0을 스택에 푸시 | |
+| 60 | PUSH1 | 3 | `.` | `uint8` | | 1바이트 값을 스택에 푸시 | |
+| 61 | PUSH2 | 3 | `.` | `uint16` | | 2바이트 값을 스택에 푸시 | |
+| 62 | PUSH3 | 3 | `.` | `uint24` | | 3바이트 값을 스택에 푸시 | |
+| 63 | PUSH4 | 3 | `.` | `uint32` | | 4바이트 값을 스택에 푸시 | |
+| 64 | PUSH5 | 3 | `.` | `uint40` | | 5바이트 값을 스택에 푸시 | |
+| 65 | PUSH6 | 3 | `.` | `uint48` | | 6바이트 값을 스택에 푸시 | |
+| 66 | PUSH7 | 3 | `.` | `uint56` | | 7바이트 값을 스택에 푸시 | |
+| 67 | PUSH8 | 3 | `.` | `uint64` | | 8바이트 값을 스택에 푸시 | |
+| 68 | PUSH9 | 3 | `.` | `uint72` | | 9바이트 값을 스택에 푸시 | |
+| 69 | PUSH10 | 3 | `.` | `uint80` | | 10바이트 값을 스택에 푸시 | |
+| 6A | PUSH11 | 3 | `.` | `uint88` | | 11바이트 값을 스택에 푸시 | |
+| 6B | PUSH12 | 3 | `.` | `uint96` | | 12바이트 값을 스택에 푸시 | |
+| 6C | PUSH13 | 3 | `.` | `uint104` | | 13바이트 값을 스택에 푸시 | |
+| 6D | PUSH14 | 3 | `.` | `uint112` | | 14바이트 값을 스택에 푸시 | |
+| 6E | PUSH15 | 3 | `.` | `uint120` | | 15바이트 값을 스택에 푸시 | |
+| 6F | PUSH16 | 3 | `.` | `uint128` | | 16바이트 값을 스택에 푸시 | |
+| 70 | PUSH17 | 3 | `.` | `uint136` | | 17바이트 값을 스택에 푸시 | |
+| 71 | PUSH18 | 3 | `.` | `uint144` | | 18바이트 값을 스택에 푸시 | |
+| 72 | PUSH19 | 3 | `.` | `uint152` | | 19바이트 값을 스택에 푸시 | |
+| 73 | PUSH20 | 3 | `.` | `uint160` | | 20바이트 값을 스택에 푸시 | |
+| 74 | PUSH21 | 3 | `.` | `uint168` | | 21바이트 값을 스택에 푸시 | |
+| 75 | PUSH22 | 3 | `.` | `uint176` | | 22바이트 값을 스택에 푸시 | |
+| 76 | PUSH23 | 3 | `.` | `uint184` | | 23바이트 값을 스택에 푸시 | |
+| 77 | PUSH24 | 3 | `.` | `uint192` | | 24바이트 값을 스택에 푸시 | |
+| 78 | PUSH25 | 3 | `.` | `uint200` | | 25바이트 값을 스택에 푸시 | |
+| 79 | PUSH26 | 3 | `.` | `uint208` | | 26바이트 값을 스택에 푸시 | |
+| 7A | PUSH27 | 3 | `.` | `uint216` | | 27바이트 값을 스택에 푸시 | |
+| 7B | PUSH28 | 3 | `.` | `uint224` | | 28바이트 값을 스택에 푸시 | |
+| 7C | PUSH29 | 3 | `.` | `uint232` | | 29바이트 값을 스택에 푸시 | |
+| 7D | PUSH30 | 3 | `.` | `uint240` | | 30바이트 값을 스택에 푸시 | |
+| 7E | PUSH31 | 3 | `.` | `uint248` | | 31바이트 값을 스택에 푸시 | |
+| 7F | PUSH32 | 3 | `.` | `uint256` | | 32바이트 값을 스택에 푸시 | |
+| 80 | DUP1 | 3 | `a` | `a, a` | | 스택의 첫 번째 값 복제 | |
+| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | 스택의 두 번째 값 복제 | |
+| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | 스택의 세 번째 값 복제 | |
+| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | 스택의 네 번째 값 복제 | |
+| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | 스택의 다섯 번째 값 복제 | |
+| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | 스택의 여섯 번째 값 복제 | |
+| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | 스택의 일곱 번째 값 복제 | |
+| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | 스택의 여덟 번째 값 복제 | |
+| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | 스택의 아홉 번째 값 복제 | |
+| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | 스택의 열 번째 값 복제 | |
+| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | 스택의 열한 번째 값 복제 | |
+| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | 스택의 열두 번째 값 복제 | |
+| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | 스택의 열세 번째 값 복제 | |
+| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | 스택의 열네 번째 값 복제 | |
+| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | 스택의 열다섯 번째 값 복제 | |
+| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | 스택의 열여섯 번째 값 복제 | |
+| 90 | SWAP1 | 3 | `a, b` | `b, a` | | | |
+| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | | |
+| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | | |
+| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | | |
+| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | | |
+| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) | |
+| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) | |
+| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG2(memory[ost:ost+len-1], topic0, topic1) | |
+| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG3(memory[ost:ost+len-1], topic0, topic1, topic2) | |
+| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG4(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) | |
+| A5-EF | _유효하지 않음_ | | | | | | |
+| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([주소(this), this.nonce])) | |
+| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen | `success` | mem[retOst:retOst+retLen-1] := returndata | | |
+| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | DELEGATECALL과 동일하지만, 원래의 msg.sender와 msg.value는 전파하지 않습니다. | |
+| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | mem[ost:ost+len-1] 반환 | |
+| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | | |
+| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ 주소(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] | |
+| F6-F9 | _유효하지 않음_ | | | | | | |
+| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | | |
+| FB-FC | _유효하지 않음_ | | | | | | |
+| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) | |
+| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | 지정된 유효하지 않은 연산 부호 - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | | |
+| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | 모든 ETH를 `addr`로 보냅니다. 컨트랙트가 생성된 것과 동일한 트랜잭션에서 실행되면 해당 컨트랙트를 파기합니다. | |
diff --git a/public/content/translations/ko/developers/docs/frameworks/index.md b/public/content/translations/ko/developers/docs/frameworks/index.md
new file mode 100644
index 00000000000..2a2f6e3d1c3
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/frameworks/index.md
@@ -0,0 +1,149 @@
+---
+title: "디앱 개발 프레임워크"
+description: "프레임워크 사용 시의 장점을 알아보고 가능한 옵션들을 비교해 봅니다."
+lang: ko
+---
+
+## 프레임워크 소개 {#introduction-to-frameworks}
+
+온전한 형태의 디앱을 구축하려면 서로 다른 여러 기술들이 필요합니다. 소프트웨어 프레임워크는 필요한 기능을 많이 포함하거나 사용자가 원하는 도구를 찾도록 도와주는 다루기 쉬운 플러그인 시스템을 제공합니다.
+
+프레임워크에는 다음과 같이 추가 작업 없이 바로 사용할 수 있는 기능들이 있습니다.
+
+- 로컬 블록체인 인스턴스를 스핀업하기 위한 기능.
+- 스마트 계약을 컴파일하고 테스트하기 위한 유틸리티.
+- 동일한 프로젝트/리포지토리 내에서 사용자 대상 애플리케이션을 빌드하기 위한 클라이언트 개발 애드온.
+- 로컬에서 실행되는 인스턴스 또는 이더리움 공개 네트워크 중 하나에 이더리움 네트워크를 연결하고 컨트랙트를 배포하기 위한 구성입니다.
+- 탈중앙화 앱 배포 - IPFS와 같은 스토리지 옵션과의 통합.
+
+## 필수 구성 요소 {#prerequisites}
+
+프레임워크를 시작하기 전에 [탈중앙화앱](/developers/docs/dapps/)과 [이더리움 스택](/developers/docs/ethereum-stack/)에 대한 소개를 먼저 읽어보시는 것을 권장합니다.
+
+## 사용 가능한 프레임워크 {#available-frameworks}
+
+**Foundry** - **_Foundry는 이더리움 애플리케이션 개발을 위한 매우 빠르고, 이식성이 뛰어나며 모듈화된 툴킷입니다_**
+
+- [Foundry 설치](https://book.getfoundry.sh/)
+- [Foundry 북](https://book.getfoundry.sh/)
+- [텔레그램의 Foundry 커뮤니티 채팅](https://t.me/foundry_support)
+- [Awesome Foundry](https://github.com/crisgarner/awesome-foundry)
+
+**Hardhat -** **_전문가를 위한 이더리움 개발 환경입니다._**
+
+- [hardhat.org](https://hardhat.org)
+- [GitHub](https://github.com/nomiclabs/hardhat)
+
+**Ape -** **_Python 개발자, 데이터 과학자, 보안 전문가를 위한 스마트 컨트랙트 개발 도구입니다._**
+
+- [문서](https://docs.apeworx.io/ape/stable/)
+- [GitHub](https://github.com/ApeWorX/ape)
+
+**Web3j -** **_JVM에서 블록체인 애플리케이션을 개발하기 위한 플랫폼입니다._**
+
+- [홈페이지](https://www.web3labs.com/web3j-sdk)
+- [문서](https://docs.web3j.io)
+- [GitHub](https://github.com/web3j/web3j)
+
+**ethers-kt -** **_EVM 기반 블록체인을 위한 비동기, 고성능 Kotlin/Java/Android 라이브러리입니다._**
+
+- [GitHub](https://github.com/Kr1ptal/ethers-kt)
+- [예제](https://github.com/Kr1ptal/ethers-kt/tree/master/examples)
+- [Discord](https://discord.gg/rx35NzQGSb)
+
+**Create Eth App -** **_명령어 하나로 이더리움 기반 앱을 만드세요. UI 프레임워크와 DeFi 템플릿의 다양한 선택지를 제공합니다._**
+
+- [GitHub](https://github.com/paulrberg/create-eth-app)
+- [템플릿](https://github.com/PaulRBerg/create-eth-app/tree/develop/templates)
+
+**Scaffold-Eth -** **_Ethers.js + Hardhat + web3용 React 컴포넌트 및 후크: 스마트 컨트랙트로 구동되는 탈중앙화 애플리케이션 구축을 시작하는 데 필요한 모든 것을 제공합니다._**
+
+- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2)
+
+**Tenderly -** **_블록체인 개발자가 스마트 컨트랙트를 빌드, 테스트, 디버그, 모니터링 및 운영하고 dapp UX를 개선할 수 있도록 지원하는 Web3 개발 플랫폼입니다._**
+
+- [웹사이트](https://tenderly.co/)
+- [문서](https://docs.tenderly.co/)
+
+**The Graph -** **_블록체인 데이터를 효율적으로 쿼리하기 위한 The Graph입니다._**
+
+- [웹사이트](https://thegraph.com/)
+- [튜토리얼](/developers/tutorials/the-graph-fixing-web3-data-querying/)
+
+**Alchemy -** **_이더리움 개발 플랫폼입니다._**
+
+- [alchemy.com](https://www.alchemy.com/)
+- [GitHub](https://github.com/alchemyplatform)
+- [Discord](https://discord.com/invite/alchemyplatform)
+
+**NodeReal -** **_이더리움 개발 플랫폼입니다._**
+
+- [Nodereal.io](https://nodereal.io/)
+- [GitHub](https://github.com/node-real)
+- [Discord](https://discord.gg/V5k5gsuE)
+
+**thirdweb SDK -** **_강력한 SDK와 CLI를 사용하여 스마트 컨트랙트와 상호 작용할 수 있는 web3 애플리케이션을 빌드하세요._**
+
+- [문서](https://portal.thirdweb.com/sdk/)
+- [GitHub](https://github.com/thirdweb-dev/)
+
+**Chainstack -** **_Web3(이더리움 및 기타) 개발 플랫폼입니다._**
+
+- [chainstack.com](https://www.chainstack.com/)
+- [GitHub](https://github.com/chainstack)
+- [Discord](https://discord.gg/BSb5zfp9AT)
+
+**Crossmint -** **_모든 주요 EVM 체인(및 기타)에서 NFT 애플리케이션을 빌드할 수 있는 엔터프라이즈급 web3 개발 플랫폼입니다._**
+
+- [웹사이트](https://www.crossmint.com)
+- [개발문서](https://docs.crossmint.com)
+- [Discord](https://discord.com/invite/crossmint)
+
+**Brownie -** **_Python 기반 개발 환경 및 테스트 프레임워크입니다._**
+
+- [문서](https://eth-brownie.readthedocs.io/en/latest/)
+- [GitHub](https://github.com/eth-brownie/brownie)
+- **Brownie는 현재 유지보수되지 않습니다**
+
+**OpenZeppelin SDK -** **_궁극의 스마트 컨트랙트 툴킷: 스마트 컨트랙트를 개발, 컴파일, 업그레이드, 배포하고 상호작용하는 데 도움이 되는 도구 모음입니다._**
+
+- [OpenZeppelin Defender SDK](https://docs.openzeppelin.com/defender/sdk)
+- [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk)
+- [커뮤니티 포럼](https://forum.openzeppelin.com/c/support/17)
+- **OpenZeppelin SDK 개발이 종료되었습니다**
+
+**Catapulta -** **_다중 체인 스마트 컨트랙트 배포 도구로, 블록 탐색기에서 검증을 자동화하고 배포된 스마트 컨트랙트를 추적하며 배포 보고서를 공유합니다. Foundry 및 Hardhat 프로젝트를 위한 플러그 앤 플레이 방식입니다._**
+
+- [웹사이트](https://catapulta.sh/)
+- [문서](https://catapulta.sh/docs)
+- [GitHub](https://github.com/catapulta-sh)
+
+**GoldRush(Covalent 제공) -** **_GoldRush는 개발자, 분석가, 기업을 위한 가장 포괄적인 블록체인 데이터 API 제품군을 제공합니다. 디파이 대시보드, 지갑, 트레이딩 봇, AI 에이전트 또는 규정 준수 플랫폼을 구축하는 경우, 데이터 API는 필요한 필수 온체인 데이터에 빠르고 정확하며 개발자 친화적인 액세스를 제공합니다_**
+
+- [웹사이트](https://goldrush.dev/)
+- [문서](https://goldrush.dev/docs/chains/ethereum)
+- [GitHub](https://github.com/covalenthq)
+- [Discord](https://www.covalenthq.com/discord/)
+
+**Wake -** **_컨트랙트 테스트, 퍼징, 배포, 취약점 스캐닝, 코드 탐색을 위한 올인원 Python 프레임워크입니다._**
+
+- [홈페이지](https://getwake.io/)
+- [문서](https://ackeeblockchain.com/wake/docs/latest/)
+- [GitHub](https://github.com/Ackee-Blockchain/wake)
+- [VS Code 확장 프로그램](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity)
+
+**Veramo -** **_탈중앙화 애플리케이션 개발자가 자신의 애플리케이션에 탈중앙화 신원 및 검증 가능한 자격 증명을 쉽게 구축할 수 있도록 지원하는 오픈 소스, 모듈식, 독립 프레임워크입니다._**
+
+- [홈페이지](https://veramo.io/)
+- [문서](https://veramo.io/docs/basics/introduction)
+- [GitHub](https://github.com/uport-project/veramo)
+- [Discord](https://discord.com/invite/FRRBdjemHV)
+- [NPM 패키지](https://www.npmjs.com/package/@veramo/core)
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [로컬 개발 환경 설정](/developers/local-environment/)
diff --git a/public/content/translations/ko/developers/docs/gas/index.md b/public/content/translations/ko/developers/docs/gas/index.md
new file mode 100644
index 00000000000..0e281e627cc
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/gas/index.md
@@ -0,0 +1,151 @@
+---
+title: "가스와 수수료"
+metaTitle: "이더리움 가스와 수수료: 기술적 개요"
+description: "이더리움 가스 수수료, 계산 방법, 네트워크 보안 및 트랜잭션 처리에서 가스 수수료의 역할에 대해 알아보세요."
+lang: ko
+---
+
+가스는 이더리움 네트워크의 필수적인 요소입니다. 자동차를 주행하기 위해 가솔린이 필요하듯이, 이더리움 네트워크의 연료와 같은 역할을 합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [트랜잭션](/developers/docs/transactions/)과 [EVM](/developers/docs/evm/)에 대해 읽어보시는 것을 권장합니다.
+
+## 가스란 무엇인가요? {#what-is-gas}
+
+가스는 이더리움 네트워크에서 특정 동작을 실행하기 위해 요구되는 노력에 대한 양과 같습니다.
+
+각 이더리움 트랜잭션을 실행하려면 컴퓨팅 리소스가 필요하므로, 이더리움이 스팸에 취약하지 않고 무한한 계산 루프에 빠지지 않도록 하려면 이러한 리소스에 대한 비용을 지불해야 합니다. 연산에 대한 지불은 가스 수수료의 형태로 이루어집니다.
+
+가스 수수료는 특정 작업을 수행하는 데 사용된 가스의 양에 단위 가스당 비용을 곱한 값입니다. 수수료는 트랜잭션의 성공 여부와 관계없이 지불됩니다.
+
+
+_[이더리움 EVM 일러스트](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)에서 발췌한 다이어그램_
+
+가스 수수료는 이더리움의 고유 통화인 이더(ETH)로 지불해야 합니다. 가스 가격은 보통 ETH의 단위인 gwei로 표시됩니다. gwei는 1ETH의 10억분의 1(0.000000001 ETH or 10-9 ETH) 과 같습니다.
+
+예를 들어, 가스가 0.000000001 ETH라고 말하는 대신, 1 Gwei 라고 말할 수 있습니다.
+
+'gwei'라는 단어는 'giga-wei'의 축약어로, '10억 wei'를 의미합니다. 1 gwei는 10억 wei와 같습니다. Wei 자체([b-money](https://www.investopedia.com/terms/b/bmoney.asp)의 개발자인 [웨이 다이](https://wikipedia.org/wiki/Wei_Dai)의 이름을 따서 명명)는 ETH의 가장 작은 단위입니다.
+
+## 가스 수수료는 어떻게 계산되나요? {#how-are-gas-fees-calculated}
+
+트랜잭션을 제출할 때 지불하고자 하는 가스의 양을 설정할 수 있습니다. 특정 양의 가스를 제공함으로써 다음 블록에 트랜잭션이 포함되도록 입찰하는 것입니다. 너무 적은 금액을 제시하면 검증자가 트랜잭션을 포함하도록 선택할 가능성이 낮아지므로 트랜잭션이 늦게 실행되거나 전혀 실행되지 않을 수 있습니다. 너무 많이 제공하면 일부 ETH를 낭비할 수 있습니다. 그렇다면 얼마를 지불해야 하는지 어떻게 알 수 있을까요?
+
+총 가스 지불액은 `기본 수수료`와 `우선 수수료`(팁)의 두 가지 구성 요소로 나뉩니다.
+
+`기본 수수료`는 프로토콜에 의해 설정되며, 트랜잭션이 유효한 것으로 간주되려면 최소한 이 금액을 지불해야 합니다. `우선 수수료`는 기본 수수료에 추가하는 팁으로, 검증자가 다음 블록에 포함하도록 트랜잭션을 매력적으로 만드는 역할을 합니다.
+
+`기본 수수료`만 지불하는 트랜잭션은 기술적으로는 유효하지만, 검증자가 다른 트랜잭션보다 이를 선택할 인센티브가 없기 때문에 포함될 가능성이 낮습니다. '올바른' `우선` 수수료는 트랜잭션을 보낼 때의 네트워크 사용량에 따라 결정됩니다. 수요가 많으면 `우선` 수수료를 더 높게 설정해야 할 수도 있지만, 수요가 적을 때는 더 적게 지불할 수 있습니다.
+
+예를 들어, 조던이 테일러에게 1 ETH를 지불해야 한다고 가정해 봅시다. ETH 전송에는 21,000개의 가스 단위가 필요하며, 기본 요금은 10 gwei입니다. Jordan은 2gwei 만큼의 팁을 포함하고 있습니다.
+
+총 수수료는 다음과 같이 계산됩니다:
+
+`가스 사용 단위 * (기본 요금 + 우선 요금)`
+
+여기서 `기본 수수료`는 프로토콜에 의해 설정된 값이고, `우선 수수료`는 사용자가 검증자에게 팁으로 설정한 값입니다.
+
+예: `21,000 * (10 + 2) = 252,000 gwei` (0.000252 ETH).
+
+만약 Jordan이 1 ETH만큼의 돈을 보낸다면, 1.000252 이더만큼의 돈이 Jordan의 계좌에서 빠져나가게 됩니다. 그리고 Taylor는 1.0000ETH만큼의 돈을 얻게되죠. 검증자는 0.000042 ETH의 팁을 받습니다. 0.00021 ETH의 `기본 수수료`는 소각됩니다.
+
+### 기본 수수료 {#base-fee}
+
+모든 블록에는 예비 가격 역할을 하는 base fee이 있습니다. 블록에 포함될 자격이 있으려면 가스당 제시 가격이 최소한 base fee와 같아야 합니다. 기본 수수료는 현재 블록과 독립적으로 계산되며, 이전 블록에 의해 결정되므로 사용자가 거래 수수료를 더 쉽게 예측할 수 있습니다. 블록이 생성될 때 이 기본 수수료는 "소각"되어 유통에서 제거됩니다.
+
+기본 수수료는 이전 블록의 크기(모든 트랜잭션에 사용된 가스 양)를 목표 크기(가스 한도의 절반)와 비교하는 공식으로 계산됩니다. 목표 블록 크기가 목표보다 크거나 작을 경우, 기본 수수료는 블록당 최대 12.5%씩 증가하거나 감소합니다. 이러한 기하급수적인 성장은 블록 크기가 무한정 높게 유지되는 것을 경제적으로 불가능하게 만든다
+
+| 블록 번호 | 포함된 가스 | 요금 상승률 | 현재 기본 요금 |
+| ----- | -----: | --------------------: | -------------------------: |
+| 1 | 18M | 0% | 100 gwei |
+| 2 | 36M | 0% | 100 gwei |
+| 3 | 36M | 12.5% | 112.5 gwei |
+| 4 | 36M | 12.5% | 126.6 gwei |
+| 5 | 36M | 12.5% | 142.4 gwei |
+| 6 | 36M | 12.5% | 160.2 gwei |
+| 7 | 36M | 12.5% | 180.2 gwei |
+| 8 | 36M | 12.5% | 202.7 gwei |
+
+위 표에서는 가스 한도로 3,600만을 사용하여 예시를 보여줍니다. 이 예를 들어, 9번 블록에 트랜잭션을 생성하기 위해 지갑은 사용자에게 다음 블록에 추가될 최대 기본 수수료가 `현재 기본 수수료 * 112.5%` 또는 `202.7 gwei * 112.5% = 228.1 gwei`임을 확실하게 알려줍니다.
+
+기본 요금이 가득 찬 블록에 앞서 빠르게 증가하기 때문에 가득 찬 블록이 지속적으로 발생할 가능성은 낮습니다.
+
+| 블록 번호 | 포함된 가스 | 요금 상승률 | 현재 기본 요금 |
+| --------------------------------------------------- | --------------------------------------------------: | --------------------: | --------------------------------------------------: |
+| 30 | 36M | 12.5% | 2705.6 gwei |
+| ... | ... | 12.5% | ... |
+| 50 | 36M | 12.5% | 28531.3 gwei |
+| ... | ... | 12.5% | ... |
+| 100 | 36M | 12.5% | 10302608.6 gwei |
+
+### 우선 수수료(팁) {#priority-fee}
+
+우선 수수료(팁)는 검증자가 블록 가스 한도에 의해서만 제한된 블록의 트랜잭션 수를 최대화하도록 장려합니다. 팁이 없다면, 합리적인 검증자는 스테이킹 보상이 블록에 있는 트랜잭션 수와 무관하므로 직접적인 실행 레이어나 합의 레이어 페널티 없이 더 적은 수의 트랜잭션(또는 0개의 트랜잭션)을 포함할 수 있습니다. 또한 팁은 사용자가 동일한 블록 내에서 우선순위를 위해 다른 사람보다 높은 가격을 제시할 수 있게 하여 사실상 긴급성을 알립니다.
+
+### 최대 수수료 {#maxfee}
+
+네트워크에서 트랜잭션을 실행하기 위해 사용자는 실행할 트랜잭션에 대해 지불할 최대 한도를 지정할 수 있습니다. 이 선택적 매개변수는 `maxFeePerGas`로 알려져 있습니다. 거래가 실행되려면 최대 수수료가 기본 수수료와 팁의 합계를 초과해야 합니다. 거래 발송자는 최대 수수료와 기본 수수료 및 팁의 합계액의 차액을 환불받는다.
+
+### 블록 크기 {#block-size}
+
+각 블록의 목표 크기는 현재 가스 한도의 절반이지만, 블록 크기는 네트워크 수요에 따라 블록 한도(목표 블록 크기의 2배)에 도달할 때까지 증가하거나 감소합니다. 이 프로토콜은 _tâtonnement_ 프로세스를 통해 목표에서 평균 평형 블록 크기를 달성합니다. 이는 블록 크기가 목표 블록 크기보다 클 경우 프로토콜이 다음 블록에 대한 기본 요금을 증가시킨다는 것을 의미합니다. 마찬가지로, 블록 크기가 목표 블록 크기보다 작으면 프로토콜은 기본 요금을 감소시킵니다.
+
+Base fee를 조정하는 금액은 현재 블록 크기가 대상에서 얼마나 멀리 떨어져 있는지에 비례합니다. 이는 빈 블록의 경우 -12.5%, 목표 크기에서 0%, 가스 한도에 도달하는 블록의 경우 최대 +12.5%까지 선형으로 계산됩니다. 가스 한도는 검증자 신호와 네트워크 업그레이드를 통해 시간에 따라 변동될 수 있습니다. [여기에서 시간 경과에 따른 가스 한도의 변화를 볼 수 있습니다](https://eth.blockscout.com/stats/averageGasLimit?interval=threeMonths).
+
+[블록에 대해 더 알아보기](/developers/docs/blocks/)
+
+### 실제 가스 수수료 계산 {#calculating-fees-in-practice}
+
+거래를 실행하기 위해 지불할 금액을 명시적으로 설정할 수 있습니다. 그러나 대부분의 지갑 제공업체는 사용자 부담을 줄이기 위해 권장 거래 수수료(기본 요금 + 권장 우선 요금)를 자동으로 설정합니다.
+
+## 왜 가스 요금이 있는지? {#why-do-gas-fees-exist}
+
+간단히, 가스 요금은 이더리움 네트워크를 더 안전하게 유지하도록 돕습니다. 네트워크에서 실행되는 모든 계산에 대해 수수료를 요구함으로써, 우리는 나쁜 행위자들이 네트워크를 스팸하는 것을 방지한다. 우발적이거나 적대적인 무한 루프 또는 코드의 다른 계산 낭비를 피하기 위해, 각 트랜잭션은 코드 실행의 몇 가지 계산 단계를 사용할 수 있는지에 대한 제한을 설정해야 한다. 연산의 기본 단위가 "가스"입니다.
+
+트랜잭션에 한도가 포함되어 있지만, 트랜잭션에서 사용되지 않은 가스는 사용자에게 반환됩니다(예: `최대 수수료 - (기본 수수료 + 팁)`이 반환됨).
+
+
+_[이더리움 EVM 일러스트](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)에서 발췌한 다이어그램_
+
+## 가스 한도란 무엇입니까? {#what-is-gas-limit}
+
+가스 한도는 거래에 소비할 수 있는 최대 가스 양을 의미합니다. [스마트 계약](/developers/docs/smart-contracts/)과 관련된 더 복잡한 트랜잭션은 더 많은 계산 작업을 필요로 하므로, 단순한 결제보다 더 높은 가스 한도를 요구합니다. 표준 ETH 전송에는 21,000 단위의 가스 제한이 필요합니다.
+
+예를 들어, 단순 ETH 전송을 위해 가스 제한을 50,000으로 설정하면 EVM이 21,000을 소비하고 나머지 29,000을 돌려받게 됩니다. 하지만 가스를 너무 적게 지정하면(예: 단순 ETH 전송에 대한 가스 한도를 20,000으로 설정) 트랜잭션은 유효성 검사 단계에서 실패합니다. 블록에 포함되기 전에 거부되며 가스가 소모되지 않습니다. 반면에, 실행 중에 트랜잭션의 가스가 부족하면(예: 스마트 계약이 중간에 모든 가스를 소진) EVM은 모든 변경 사항을 되돌리지만, 제공된 모든 가스는 수행된 작업에 대해 계속 소모됩니다.
+
+## 가스 요금이 왜 이렇게 높은 건가요? {#why-can-gas-fees-get-so-high}
+
+높은 가스 요금은 이더리움의 인기 때문이다. 수요가 너무 많으면 사용자는 다른 사용자의 거래보다 높은 팁을 제공하여 경쟁할 수 있습니다. 팁이 높을수록 거래가 다음 블록으로 이동할 가능성이 높아집니다. 또한, 복잡한 스마트 계약 앱은 기능을 지원하기 위해 많은 작업을 수행할 수 있어 많은 가스를 소비할 수 있습니다.
+
+## 가스 비용 절감 이니셔티브 {#initiatives-to-reduce-gas-costs}
+
+이더리움 [확장성 업그레이드](/roadmap/)는 궁극적으로 일부 가스 수수료 문제를 해결하여 플랫폼이 초당 수천 건의 트랜잭션을 처리하고 전 세계적으로 확장할 수 있도록 해야 합니다.
+
+계층 2 스케일링은 가스 비용, 사용자 경험 및 확장성을 크게 개선하기 위한 주요 계획입니다.
+
+[레이어 2 확장에 대해 더 알아보기](/developers/docs/scaling/#layer-2-scaling)
+
+## 가스 수수료 모니터링 {#monitoring-gas-fees}
+
+가스 가격을 모니터링하여 ETH를 더 저렴하게 전송하려면 다음과 같은 다양한 도구를 사용할 수 있습니다.
+
+- [Etherscan](https://etherscan.io/gastracker) _트랜잭션 가스 가격 추정기_
+- [Blockscout](https://eth.blockscout.com/gas-tracker) _오픈 소스 트랜잭션 가스 가격 추정기_
+- [ETH 가스 추적기](https://www.ethgastracker.com/) _이더리움 및 L2 가스 가격을 모니터링하고 추적하여 거래 수수료를 줄이고 비용을 절약하세요_
+- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _유형 0 레거시 트랜잭션과 유형 2 EIP-1559 트랜잭션을 모두 지원하는 가스 추정 Chrome 확장 프로그램입니다._
+- [Cryptoneur 가스 수수료 계산기](https://www.cryptoneur.xyz/gas-fees-calculator) _메인넷, Arbitrum, Polygon에서 다양한 트랜잭션 유형에 대한 가스 수수료를 현지 통화로 계산합니다._
+
+## 관련 도구 {#related-tools}
+
+- [Blocknative 가스 플랫폼](https://www.blocknative.com/gas) _Blocknative의 글로벌 멤풀 데이터 플랫폼으로 구동되는 가스 추정 API_
+- [가스 네트워크](https://gas.network) 온체인 가스 오라클. 35개 이상의 체인 지원.
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 가스 설명](https://defiprime.com/gas)
+- [스마트 계약의 가스 소비량 줄이기](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a)
+- [개발자를 위한 가스 최적화 전략](https://www.alchemy.com/overviews/solidity-gas-optimization)
+- [EIP-1559 문서](https://eips.ethereum.org/EIPS/eip-1559).
+- [팀 베이코의 EIP-1559 관련 자료](https://hackmd.io/@timbeiko/1559-resources)
+- [EIP-1559: 밈과 메커니즘 분리](https://web.archive.org/web/20241126205908/https://research.2077.xyz/eip-1559-separating-mechanisms-from-memes)
diff --git a/public/content/translations/ko/developers/docs/ides/index.md b/public/content/translations/ko/developers/docs/ides/index.md
new file mode 100644
index 00000000000..8297449dca6
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/ides/index.md
@@ -0,0 +1,64 @@
+---
+title: "통합 개발 환경(IDE)"
+description: "리믹스, VS Code 및 인기 플러그인을 비롯한 이더리움 개발용 웹 기반 및 데스크톱 IDE에 대해 알아보세요."
+lang: ko
+---
+
+[통합 개발 환경(IDE)](https://wikipedia.org/wiki/Integrated_development_environment)을 설정할 때, 이더리움 애플리케이션을 프로그래밍하는 것은 다른 소프트웨어 프로젝트를 프로그래밍하는 것과 유사합니다. 선택할 수 있는 옵션이 많으므로, 최종적으로는 자신의 취향에 가장 적합한 IDE 또는 코드 편집기를 선택하세요. 이더리움 개발을 위한 가장 좋은 IDE 선택은 전통적인 소프트웨어 개발에 이미 사용 중인 IDE일 가능성이 큽니다.
+
+## 웹 기반 IDE {#web-based-ides}
+
+[로컬 개발 환경을 설정](/developers/local-environment/)하기 전에 코드를 만져보고 싶다면, 이 웹 앱들은 이더리움 스마트 계약 개발을 위해 맞춤 제작되었습니다.
+
+**[Remix](https://remix.ethereum.org/)** - **_정적 분석 기능 및 테스트 블록체인 가상 머신이 내장된 웹 기반 IDE_**
+
+- [문서](https://remix-ide.readthedocs.io/en/latest/#)
+- [Gitter](https://gitter.im/ethereum/remix)
+
+**[ChainIDE](https://chainide.com/)** - **_클라우드 기반 멀티체인 IDE_**
+
+- [문서](https://chainide.gitbook.io/chainide-english-1/)
+- [도움말 포럼](https://forum.chainide.com/)
+
+**[Replit (Solidity Starter - Beta)](https://replit.com/@replit/Solidity-starter-beta)** - **_핫 리로딩, 오류 검사 및 최고 수준의 테스트넷 지원을 갖춘 맞춤형 이더리움 개발 환경_**
+
+- [문서](https://docs.replit.com/)
+
+**[Tenderly Sandbox](https://sandbox.tenderly.co/)** - **_솔리디티(Solidity)와 자바스크립트(JavaScript)를 사용하여 브라우저에서 스마트 계약을 작성, 실행, 디버깅할 수 있는 빠른 프로토타이핑 환경_**
+
+**[EthFiddle](https://ethfiddle.com/)** - **_스마트 계약을 작성, 컴파일, 디버깅할 수 있는 웹 기반 IDE_**
+
+- [Gitter](https://gitter.im/loomnetwork/ethfiddle)
+
+## 데스크톱 IDE {#desktop-ides}
+
+가장 잘 알려진 IDE들은 이더리움 개발 경험을 향상시키기 위해 플러그인을 내장하고 있습니다. 최소한 [스마트 계약 언어](/developers/docs/smart-contracts/languages/)에 대한 구문 강조 기능을 제공합니다.
+
+**Visual Studio Code -** **_이더리움(Ethereum)을 공식 지원하는 전문 크로스플랫폼 IDE_**
+
+- [Visual Studio Code](https://code.visualstudio.com/)
+- [코드 샘플](https://github.com/Azure-Samples/blockchain/blob/master/blockchain-workbench/application-and-smart-contract-samples/readme.md)
+- [GitHub](https://github.com/microsoft/vscode)
+
+**JetBrains IDEs (IntelliJ IDEA 등)** -\*\* **_소프트웨어 개발자와 팀을 위한 필수 도구_**
+
+- [JetBrains](https://www.jetbrains.com/)
+- [GitHub](https://github.com/JetBrains)
+- [IntelliJ Solidity](https://github.com/intellij-solidity/intellij-solidity/)
+
+**Remix Desktop -** **_로컬 컴퓨터에서 Remix IDE를 경험해 보세요_**
+
+- [다운로드](https://github.com/ethereum/remix-desktop/releases)
+- [GitHub](https://github.com/ethereum/remix-desktop)
+
+## 플러그인 및 확장 프로그램 {#plugins-extensions}
+
+- [solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) - Visual Studio Code용 이더리움 솔리디티 언어
+- [Solidity + Hardhat for VS Code](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) - Hardhat 팀의 솔리디티 및 Hardhat 지원
+- [Prettier Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity) - Prettier를 사용하는 코드 포맷터
+
+## 더 읽어보기 {#further-reading}
+
+- [Ethereum IDEs](https://www.alchemy.com/list-of/web3-ides-on-ethereum) _- Alchemy의 이더리움 IDE 목록_
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/index.md b/public/content/translations/ko/developers/docs/index.md
new file mode 100644
index 00000000000..ed6eb74d03e
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/index.md
@@ -0,0 +1,25 @@
+---
+title: "이더리움 개발 문서"
+description: "ethereum.org 개발자 문서를 소개합니다."
+lang: ko
+---
+
+이 문서는 이더리움 개발에 도움을 주기 위해 작성되었습니다. 이 문서는 이더리움의 개념, 이더리움 기술 스택에 대한 설명 그리고 더욱 복잡한 어플리케이션과 유스케이스를 위한 심화 주제를 다루고 있습니다.
+
+이 문서는 오픈소스 커뮤니티로 유지됩니다. 따라서 새로운 주제를 제안하거나, 새로운 내용을 추가하거나, 여러분이 생각하기에 도움이 될만한 예시를 추가하는데 주저하지 마시기 바랍니다. 모든 개발문서는 GitHub를 통해 수정할 수 있습니다. 방법을 잘 모르는 경우, [다음 지침을 따르세요](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md).
+
+## 개발 모듈 {#development-modules}
+
+여러분이 처음으로 이더리움 개발에 처음이라면, 책으로 공부하는 것처럼 여러분만의 방식으로 시작하길 추천합니다.
+
+### 기본 주제 {#foundational-topics}
+
+
+
+### 이더리움 스택 {#ethereum-stack}
+
+
+
+### 고급 {#advanced}
+
+
diff --git a/public/content/translations/ko/developers/docs/intro-to-ether/index.md b/public/content/translations/ko/developers/docs/intro-to-ether/index.md
new file mode 100644
index 00000000000..5f7808d71b0
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/intro-to-ether/index.md
@@ -0,0 +1,78 @@
+---
+title: "이더에 대한 기술적 소개"
+description: "개발자를 위한 이더 암호화폐에 대한 소개"
+lang: ko
+---
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하기 위해 [이더리움 소개](/developers/docs/intro-to-ethereum/)를 먼저 읽어보시는 것을 권장합니다.
+
+## 암호화폐란 무엇인가요? {#what-is-a-cryptocurrency}
+
+암호화폐는 블록체인 기반의 원장으로 보호되는 교환 매체입니다.
+
+교환 매체란 상품 및 서비스에 대한 지불 수단으로 인정되는 모든 것을 통칭하며, 원장은 거래를 추적하는 데이터 저장소를 의미합니다. 블록체인 기술을 통해, 사용자는 제 3자에게 원장을 믿고 맡길 필요 없이 원장에서의 트랜잭션을 수행할 수 있습니다.
+
+최초의 암호화폐는 사토시 나카모토가 만든 비트코인입니다. 2009년 비트코인이 출시된 이후, 사람들은 다양한 블록체인에서 수천 개의 암호화폐를 만들었습니다.
+
+## 이더는 무엇인가? {#what-is-ether}
+
+이더(ETH)는 이더리움 네트워크의 여러 곳에서 사용되는 암호화폐입니다. 기본적으로 거래 수수료에 대해 허용되는 유일한 지불 형식이며, [머지](/roadmap/merge) 이후 메인넷에서 블록을 검증하고 제안하려면 이더가 필요합니다. 이더는 [DeFi](/defi) 대출 시장에서 기본 담보 형태로 사용되고, NFT 마켓플레이스에서 계산 단위로, 서비스 수행 또는 실물 상품 판매에 대한 대가로 사용되는 등 다양한 용도로 활용됩니다.
+
+이더리움을 통해 개발자는 모두가 컴퓨팅 파워 풀을 공유하는 [**탈중앙화 애플리케이션(탈중앙화앱)**](/developers/docs/dapps)을 만들 수 있습니다. 이 공유 풀은 유한하므로, 누가 그것을 사용할지 결정하는 메커니즘이 필요합니다. 그렇지 않으면 어느 디앱이 실수로 또는 악의적으로 모든 네트워크 리소스를 써버릴 수 있고, 이는 다른 앱들이 리소스를 사용할 수 없도록 방해합니다.
+
+이더 암호화폐는 이더리움의 컴퓨팅 파워에 대한 가격 책정 메커니즘을 지원합니다. 사용자가 트랜잭션을 발생시키고자 한다면, 이더를 지불해야 블록체인에서 해당 트랜재션이 인식됩니다. 이러한 사용 비용은 [가스비](/developers/docs/gas/)로 알려져 있으며, 가스비는 트랜잭션 실행에 필요한 컴퓨팅 파워의 양과 당시 네트워크 전체의 컴퓨팅 파워 수요에 따라 달라집니다.
+
+따라서 악의적인 디앱이 무한 루프를 돌며 트랜잭션을 발생시키더라도, 해당 트랜잭션이 이더를 모두 소모한 후엔 결국 종료하게 되고, 이러한 메커니즘은 이더리움 네트워크가 정상으로 돌아갈 수 있도록 합니다.
+
+이더리움과 이더를 [혼동하는 것이 일반적입니다](https://abcnews.go.com/Business/bitcoin-slumps-week-low-amid-renewed-worries-chinese/story?id=78399845). 사람들이 "이더리움의 가격"을 언급할 때, 그들은 이더의 가격을 말하는 것입니다.
+
+## 이더 민팅 {#minting-ether}
+
+발행은 이더리움 원장에 새로운 이더가 생성되는 과정을 말합니다. 이더리움 프로토콜이 새로운 이더를 생성하며, 사용자가 이더를 생성하는 것은 불가능합니다.
+
+이더는 제안된 각 블록과 합의에 도달하는 것과 관련된 다른 검증자 활동에 대한 모든 에포크 체크포인트에 대한 보상으로 주조된다. 발행된 총 금액은 검증자의 수와 그들이 얼마나 지분을 걸었는지에 따라 달라진다. 이 총 발행량은 모든 검증자가 정직하고 온라인인 이상적인 경우 검증자 간에 균등하게 분배되지만, 실제로는 검증자 성과에 따라 다르다. 전체 발행의 약 8분의 1은 블록 제안자에게 전달되고 나머지는 다른 검증자들에게 분배된다. 블록 제안자들은 거래 수수료와 MEV 관련 소득에서도 팁을 받지만, 이들은 신규 발행이 아닌 재활용 이더에서 나온다.
+
+## 이더 소각 {#burning-ether}
+
+블록 보상을 통해 이더를 생성하는 것 외에도 '소각'이라는 과정을 통해 이더를 소멸시킬 수 있습니다. 이더가 소각되면 네트워크에서 영구적으로 제거된다.
+
+이더 소각은 이더리움의 모든 트랜잭션에서 발생한다. 사용자가 트랜잭션에 대해 비용을 지불하면 기본 가스비가 소각되며, 이 기본 가스비는 네트워크상의 거래 수요에 따라 정해집니다. 여기에 블록 크기와 최대 가스비까지 연관되어, 이더리움상의 거래 수수료를 측정하는 것이 단순해집니다, 네트워크 수요가 높을 때, [블록](https://eth.blockscout.com/block/22580057)은 민팅하는 것보다 더 많은 이더를 소각할 수 있으며, 이는 효과적으로 이더 발행을 상쇄합니다.
+
+기본 수수료를 소각하면 블록 생성자가 트랜잭션을 조작하는 것을 방해합니다. 예를 들어, 블록 생산자들이 기본료를 받았다면, 그들은 그들 자신의 거래를 무료로 포함시킬 수 있고 다른 모든 사람들을 위한 기본료를 올릴 수 있다. 또는 일부 사용자에게 기본 수수료를 오프체인으로 환불하여 더 불투명하고 복잡한 거래 수수료 시장으로 이어질 수 있습니다.
+
+## 이더의 단위 {#denominations}
+
+이더리움의 많은 트랜잭션 가치는 작기 때문에, 이더는 더 작은 계산 단위로 참조될 수 있는 여러 단위를 가지고 있습니다. 그 중에서 Wei와 Gwei가 특히 중요하다.
+
+웨이는 가능한 가장 작은 이더 단위이며, 그 결과 [이더리움 옐로페이퍼](https://ethereum.github.io/yellowpaper/paper.pdf)와 같은 많은 기술적 구현은 모든 계산을 웨이 기준으로 합니다.
+
+Gwei는 giga-wei의 줄임말로 이더리움의 가스비를 설명하는 데 자주 사용된다.
+
+| 단위 | 이더 가치 | 목적 |
+| ---- | ---------------- | ---------------- |
+| Wei | 10-18 | 기술적 구현 |
+| Gwei | 10-9 | 사람이 읽기 쉬운 가스비 단위 |
+
+## 이더 전송하기 {#transferring-ether}
+
+이더리움의 각 트랜잭션에는 `value` 필드가 포함되어 있으며, 이 필드는 보내는 사람의 주소에서 받는 사람의 주소로 전송될 이더의 양을 웨이 단위로 지정합니다.
+
+수신 주소가 [스마트 계약](/developers/docs/smart-contracts/)인 경우, 전송된 이더는 스마트 계약이 코드를 실행할 때 가스비를 지불하는 데 사용될 수 있습니다.
+
+[트랜잭션에 대해 더 알아보기](/developers/docs/transactions/)
+
+## 이더 조회하기 {#querying-ether}
+
+사용자는 계정의 `balance` 필드를 확인하여 모든 [계정](/developers/docs/accounts/)의 이더 잔액을 조회할 수 있으며, 이 필드는 웨이로 표시된 이더 보유량을 보여줍니다.
+
+[Etherscan](https://etherscan.io)과 [Blockscout](https://eth.blockscout.com)은 웹 기반 애플리케이션을 통해 주소 잔액을 확인할 수 있는 인기 있는 도구입니다. 예를 들어, [이 Blockscout 페이지](https://eth.blockscout.com/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe)는 이더리움 재단의 잔액을 보여줍니다. 계정 잔액은 지갑을 사용하거나 노드에 요청하여 직접 조회할 수도 있습니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [이더와 이더리움 정의하기](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html) – _CME Group_
+- [이더리움 백서](/whitepaper/): 이더리움의 최초 제안서입니다. 이 문서는 이더에 대한 설명과 그 탄생 비화를 포함하고 있습니다.
+- [Gwei 계산기](https://www.alchemy.com/gwei-calculator): 이 gwei 계산기를 사용하여 웨이, gwei, 이더를 쉽게 변환할 수 있습니다. wei, gwei 또는 ETH의 임의의 양을 입력만 하면 변환이 자동으로 계산됩니다.
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/intro-to-ethereum/index.md b/public/content/translations/ko/developers/docs/intro-to-ethereum/index.md
new file mode 100644
index 00000000000..c96571e9fdf
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/intro-to-ethereum/index.md
@@ -0,0 +1,124 @@
+---
+title: "이더리움에 대한 기술적 소개"
+description: "이더리움의 핵심 개념에 대한 디앱 개발자의 소개"
+lang: ko
+---
+
+## 블록체인이란 무엇인가요? 블록체인이란 무엇인가요?
+
+블록체인은 네트워크 상의 많은 컴퓨터들에 업데이트되고 공유되는 공공의 데이터베이스입니다.
+
+"블록"은 "블록들"이라고 하는 연속된 그룹에 저장된 데이터와 상태를 말합니다. ETH를 다른 사람에게 보내는 경우, 트랜잭션 데이터를 블록에 추가해야 성공적으로 보낼 수 있습니다.
+
+"체인"은 각각의 블록이 암호화된 방식으로 자신의 부모를 참조한다는 것을 말한다. 다시 말해, 블록들은 서로 체인 형태로 연결됩니다. 블록의 데이터를 변경하려면 모든 후속 블록을 변경해야만 하며, 이러한 과정은 네트워크 전체가 합의해야만 이루어집니다.
+
+네트워크 안의 모든 컴퓨터는 새로 생성되는 블록과 전체 체인에 대해서 반드시 합의해야만 합니다. 이 컴퓨터들을 "노드"라고 합니다. 노드는 블록체인과 상호 작용하는 모든 사람이 동일한 데이터를 갖도록 합니다. 이렇게 분산된 합의를 이루기 위해, 블록체인은 합의 메커니즘이 필요합니다.
+
+이더리움은 [지분 증명 기반 합의 메커니즘](/developers/docs/consensus-mechanisms/pos/)을 사용합니다. 체인에 새로운 블록을 추가하려는 사람은 이더리움의 기축 통화인 ETH를 담보로 스테이킹하고 검증 소프트웨어를 실행해야 합니다. 이러한 "검증자"는 무작위로 선택되어 다른 검증자가 블록을 확인하고 블록체인에 추가할 블록을 제안할 수 있습니다. 참가자들이 온라인에서 최대한 정직하게 정보를 제공하도록 강력하게 장려하는 보상 및 패널티 시스템이 있습니다.
+
+블록체인 데이터가 어떻게 해시되고 이후 블록 참조 기록에 추가되는지 알고 싶다면 Anders Brownworth의 [이 데모](https://andersbrownworth.com/blockchain/blockchain)를 확인하고 아래에 첨부된 비디오를 시청하세요.
+
+블록체인의 해시에 대한 Anders의 설명 영상을 확인해보세요.
+
+
+
+## 이더리움이란? 이더리움이란 무엇인가요?
+
+이더리움은 컴퓨터가 내장된 블록체인입니다. 그것은 분산되고 허가 없이 검열에 저항하는 방식으로 앱과 조직을 구축하기 위한 기반입니다.
+
+이더리움 세상에는 이더리움 네트워크 상의 모두가 동의하는 상태를 가지는 (이더리움 가상 머신, 또는 EVM이라고 부르는) 하나의 정식 컴퓨터가 있습니다. 이더리움 네트워크에 참여하는 모두(모든 이더리움 노드)는 이 컴퓨터 상태의 복사본을 보관합니다. 또한, 모든 참여자는 이 컴퓨터에 대한 요청을 브로드캐스트하여 임의의 계산을 수행할 수 있습니다. 이러한 요청이 브로드캐스트 될 때마다, 네트워크상의 다른 참가자들은 이 연산을 확인, 검증 및 "실행"합니다. 이 실행은 네트워크 전체에 전파되고, EVM의 상태 변화를 일으킵니다.
+
+이렇게 연산을 위한 요청들을 트랜잭션 요청이라고 합니다. 모든 트랜잭션에 대한 기록과 EVM의 현재 상태가 블록체인에 저장되고, 결과적으로 이러한 내용은 모든 노드들에 의해 저장되고 합의됩니다.
+
+트랜잭션이 한번 검증되고 블록체인에 추가되면, 암호학적으로 더 이상 변경될 수 없음이 보장됩니다. 같은 방식으로, 적절한 "권한"이 있어야만 트랜잭션을 서명하고 실행할 수 있음이 보장됩니다. (Alice가 아닌 어떤 누구도 Alice의 계정에 있는 디지털 자산을 전송할 수 있어서는 안 됩니다.)
+
+## 이더는 무엇인가? {#what-is-ether}
+
+이더(ETH)는 이더리움의 네이티브 암호화폐입니다. ETH의 목적은 계산을 위한 시장을 허용하는 것이다. 시장에서는 참가자들이 네트워크에 컴퓨터 자원을 제공하고 트랜잭션을 검증/실행한 데에 대한 경제적 보상을 제공합니다.
+
+트랜잭션 요청을 브로드캐스트하는 참가자는 네트워크에 현상금으로서 이더를 제공해야합니다. 네트워크는 보상의 일부를 소각하고 트랜잭션을 검증, 실행, 블록체인에 커밋, 네트워크에 브로드캐스팅하는 작업을 최종적으로 수행하는 사람에게 나머지를 수여합니다.
+
+연산에 들어간 시간에 따라 지불하는 이더의 양이 정해집니다. 이는 또한 악의적인 참가자들이 무한 루프나 리소스가 많이 소모되는 스크립트의 실행을 요청함으로써 고의로 네트워크를 막히도록 하는 것을 이들 행위자에게 계속 지불되게 함으로써 예방한다.
+
+ETH는 또한 세 가지 주요 방식으로 네트워크에 암호경제학적 보안을 제공하는 데 사용됩니다. 1) 블록을 제안하거나 다른 검증자의 부정 행위를 지적하는 검증자에게 보상하는 수단으로 사용됩니다. 2) 부정 행위에 대한 담보 역할을 하도록 검증자에 의해 스테이킹됩니다. 만약 검증자가 부정하게 행동하려고 시도하면 해당 ETH는 소각될 수 있습니다. 3) 합의 메커니즘의 포크 선택 부분에 반영되어, 새로 제안된 블록에 대한 '투표'에 가중치를 부여하는 데 사용됩니다.
+
+## 스마트 계약이란 무엇입니까? 스마트 계약이란 무엇인가요?
+
+EVM상의 연산을 요청하기 위해서 참가자들이 새로운 코드를 실제로 쓰지는 않습니다. 어플리케이션 개발자들이 EVM 상태에 프로그램(재사용 가능한 코드조각)을 올려두고, 사용자들이 이 프로그램에 다양한 값을 입력해서 사용합니다. 네트워크에 업로드되어 실행되는 프로그램을 "스마트 계약"이라고 부릅니다.
+
+쉽게 말해서, 스마트 컨트랙트는 자판기로 볼 수 있습니다. 특정 값이 들어오면, 정해진 행동을 하거나 어떤 조건이 충족됐을 때 연산을 합니다. 예를 들어, 간단한 벤더 스마트 컨트랙트는 호출자가 특정 수신자에게 이더를 보내면 어떤 디지털 자산의 소유권을 생성하고 할당할 수 있습니다.
+
+아무 개발자나 스마트 컨트랙트를 만들어 네트워크에 공개할 수 있고, 사용료를 네트워크에 지불하고 블록체인을 자체 데이터 계층으로서 활용할 수 있습니다. 또, 아무 사용자나 네트워크에 사용료를 지불하면, 이 스마트 컨트랙트를 실행할 수 있습니다.
+
+즉, 개발자들은 마켓플레이스나 금융 서비스, 게임과 같은 복잡한 앱이나 서비스를 스마트 컨트랙트를 사용해서 개발하고 배포할 수 있습니다.
+
+## 용어 {#terminology}
+
+### 블록체인 {#blockchain}
+
+이더리움 네트워크가 시작된 이례로 이더리움 네트워크에 제출된 모든 블록들의 순서들. 각 블록들이 그 이전 블록을 참조를 포함하고 있어서 이렇게 이름 붙었습니다. 이러한 이전 블록에 대한 참조는 모든 블록의 순서를 (정확한 내역을) 관리할 수 있도록 합니다.
+
+### ETH {#eth}
+
+이더(ETH)는 이더리움의 네이티브 암호화폐입니다. 사용자는 다른 사용자들에게 그들의 코드를 실행해달라고 요청하기 위해서 이더를 지불합니다.
+
+[ETH에 대해 더 알아보기](/developers/docs/intro-to-ether/)
+
+### EVM {#evm}
+
+이더리움 가상 머신은 이더리움 네트워크의 모든 사용자가 상태를 저장하고 합의하는 가상의 글로벌 컴퓨터입니다. 어떤 참가자나 EVM 상의 임의의 코드를 실행 요청할 수 있습니다. 코드 실행은 EVM의 상태를 바꿉니다.
+
+[EVM에 대해 더 알아보기](/developers/docs/evm/)
+
+### 노드 {#nodes}
+
+EVM 상태를 저장하는 실제 머신. 노드들은 각자와 EVM 상태와 새로운 상태 변화에 대한 정보를 퍼뜨리기 위해서 통신합니다. 어느 사용자나 코드 노드로부터 실행 요청을 브로드캐스트해서 코드 실행을 요청할 수 있습니다. 이더리움 네트워크 그 자체는 모든 이더리움 노드들과 그들의 통신의 집합체를 말합니다.
+
+[노드에 대해 더 알아보기](/developers/docs/nodes-and-clients/)
+
+### 계정 {#accounts}
+
+이더가 저장되는 곳. 사용자는 계정을 초기화하고, 계정 안에 이더를 입금하고, 자신의 계정에서 다른 사용자에게 이더를 송금할 수 있습니다. 계정과 계정 잔고는 EVM 내의 큰 테이블에 저장됩니다. 계정과 계정 잔고는 전체 EVM 상태 중 일부입니다.
+
+[계정에 대해 더 알아보기](/developers/docs/accounts/)
+
+### 트랜잭션 {#transactions}
+
+"트랜잭션 요청"이란 EVM상의 코드 실행 요청을 가리키는 용어입니다. "트랜잭션"이란 수행된 트랜잭션 요청과, 그에 관련된 EVM 상태 변화를 의미합니다. 어떤 사용자든 노드로부터 네트워크로 트랜잭션 요청을 브로드캐스트 할 수 있습니다. 합의되어 있는 EVM 상태에 트랜잭션 요청이 실제 영향을 미치기 위해서, 그는 반드시 유효성이 검사되고, 실행되며 다른 노드들에 의해 “네트워크에 제출되어야” 한다. 어떤 코드의 실행은 EVM 내의 상태 변화를 일으킨다; 제출 시 이 상태 변화는 네트워크 내의 모든 노드로 브로드캐스트 된다. 트랜잭션의 예제:
+
+- 내 계정에서 앨리스의 계정으로 X 이더를 보냄
+- EVM 메모리내로 어떤 스마트 컨트랙트 코드를 발행
+- EVM 내의 주소 X에서 스마트 컨트랙트 코드를 Y 인자로 실행.
+
+[트랜잭션에 대해 더 알아보기](/developers/docs/transactions/)
+
+### 블록 {#blocks}
+
+트랜잭션의 양은 매우 많아서 트랜잭션들은 한번에 모아서 또는 블록으로 “제출된다”. 블록들은 일반적으로 수백개의 트랜잭션을 담는다.
+
+[블록에 대해 더 알아보기](/developers/docs/blocks/)
+
+### 스마트 계약 {#smart-contracts}
+
+개발자들이 EVM 메모리로 발행하는 재사용 가능한 코드 조각(프로그램). 누구나 트랜잭션 요청을 해서 실행될 스마트 컨트랙트 코드 실행을 요청할 수 있다. 개발자는 EVM에 임의로 실행 가능한 애플리케이션(게임, 마켓플레이스, 금융 상품 등)을 작성할 수 있기 때문에 스마트 계약을 게시함으로써, 이것들은 종종 [디앱(dapp) 또는 탈중앙화 앱](/developers/docs/dapps/)이라고도 불립니다.
+
+[스마트 계약에 대해 더 알아보기](/developers/docs/smart-contracts/)
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 백서](/whitepaper/)
+- [이더리움은 어떻게 작동하는가?](https://medium.com/@preethikasireddy/how-does-ethereum-work-anyway-22d1df506369) - _Preethi Kasireddy_ (**참고** 이 자료는 여전히 유용하지만 [병합](/roadmap/merge) 이전에 작성되어 이더리움의 작업 증명 메커니즘을 여전히 참조하고 있다는 점을 인지하시기 바랍니다. 이더리움은 현재 [지분 증명](/developers/docs/consensus-mechanisms/pos)을 사용하여 보안이 유지됩니다.)
+
+### 시각 자료를 찾고 있나요? 시각적 학습자
+
+이 비디오 시리즈는 기초 주제에 대한 심층적인 탐구를 제공합니다.
+
+
+
+[이더리움 기초 플레이리스트](https://youtube.com/playlist?list=PLqgutSGloqiJyyoL0zvLVFPS-GMD2wKa5&si=kZTf5I7PKGTXDsOZ)
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [이더리움 개발자 가이드, 1부](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– Python과 web3.py를 사용해 이더리움을 탐구하는 아주 초보자 친화적인 자료_
diff --git a/public/content/translations/ko/developers/docs/mev/index.md b/public/content/translations/ko/developers/docs/mev/index.md
new file mode 100644
index 00000000000..4361f3a1c2f
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/mev/index.md
@@ -0,0 +1,221 @@
+---
+title: "최대 추출 가능 값(MEV)"
+description: "최대 추출 가능 값(MEV)에 대한 소개"
+lang: ko
+---
+
+최대 추출 가능 가치(MEV)는 블록 내 트랜잭션의 포함, 제외 및 순서 변경을 통해 표준 블록 보상 및 가스 수수료를 초과하여 블록 생성에서 추출할 수 있는 최대 가치를 의미합니다.
+
+## 최대 추출 가능 가치 {#maximal-extractable-value}
+
+최대 추출 가능 가치는 [작업 증명](/developers/docs/consensus-mechanisms/pow/)의 맥락에서 처음 적용되었으며, 처음에는 "채굴자 추출 가능 가치"라고 불렸습니다. 작업 증명에서는 채굴자가 트랜잭션 포함, 제외, 순서를 제어하기 때문입니다. 하지만 [병합](/roadmap/merge)을 통한 지분 증명으로의 전환 이후, 검증자가 이러한 역할을 담당하게 되었으며 채굴은 더 이상 이더리움 프로토콜의 일부가 아닙니다. 그러나 가치 추출 방법은 여전히 존재하므로, 이제는 "최대 추출 가능 가치"라는 용어가 대신 사용됩니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[트랜잭션](/developers/docs/transactions/), [블록](/developers/docs/blocks/), [지분 증명](/developers/docs/consensus-mechanisms/pos), [가스](/developers/docs/gas/)에 대해 숙지하시기 바랍니다. [디앱스](/apps/)와 [디파이](/defi/)에 익숙하다면 도움이 될 것입니다.
+
+## MEV 추출 {#mev-extraction}
+
+이론적으로 수익성 있는 MEV 기회의 실행을 보장할 수 있는 유일한 주체는 검증자이므로 MEV는 전적으로 검증자에게 귀속됩니다. 하지만 실제로는 MEV의 상당 부분이 "검색자"라고 불리는 독립적인 네트워크 참여자에 의해 추출됩니다. 검색자는 블록체인 데이터에 복잡한 알고리즘을 실행하여 수익성 있는 MEV 기회를 감지하고, 해당 수익성 트랜잭션을 네트워크에 자동으로 제출하는 봇을 보유하고 있습니다.
+
+검색자는 수익성 있는 트랜잭션이 블록에 포함될 가능성을 높이는 대가로 높은 가스 수수료(검증자에게 지급됨)를 기꺼이 지불하기 때문에, 검증자는 어쨌든 전체 MEV 금액의 일부를 받게 됩니다. 검색자가 경제적으로 합리적이라고 가정하면, 검색자가 기꺼이 지불하려는 가스 수수료는 검색자 MEV의 최대 100%에 달하는 금액이 될 것입니다(가스 수수료가 더 높으면 검색자는 손해를 보기 때문입니다).
+
+따라서 [DEX 차익거래](#mev-examples-dex-arbitrage)와 같이 경쟁이 치열한 일부 MEV 기회의 경우, 많은 사람이 동일한 수익성 있는 차익거래를 실행하기를 원하기 때문에 검색자는 총 MEV 수익의 90% 이상을 검증자에게 가스 수수료로 지불해야 할 수도 있습니다. 자신의 차익거래 트랜잭션 실행을 보장할 수 있는 유일한 방법은 가장 높은 가스 가격으로 트랜잭션을 제출하는 것이기 때문입니다.
+
+### 가스 골핑 {#mev-extraction-gas-golfing}
+
+이러한 역학 관계는 "가스 골핑", 즉 트랜잭션을 프로그래밍하여 최소한의 가스를 사용하도록 하는 능력을 경쟁 우위로 만들었습니다. 이를 통해 검색자는 총 가스 수수료를 일정하게 유지하면서 더 높은 가스 가격을 설정할 수 있기 때문입니다(가스 수수료 = 가스 가격 \* 사용된 가스).
+
+잘 알려진 가스 골프 기술 몇 가지는 다음과 같습니다. 0으로 시작하는 긴 문자열의 주소([0x0000000000C521824EaFf97Eac7B73B084ef9306](https://eth.blockscout.com/address/0x0000000000C521824EaFf97Eac7B73B084ef9306) 등)를 사용하면 저장 공간(따라서 가스)이 덜 들기 때문에 이를 사용하고, 저장 공간 슬롯을 업데이트하는 것보다 초기화(잔액이 0인 경우)하는 데 더 많은 가스가 들기 때문에 계약에 소량의 [ERC-20](/developers/docs/standards/tokens/erc-20/) 토큰 잔액을 남겨두는 것 등이 있습니다. 가스 사용량을 줄이기 위한 더 많은 기술을 찾는 것은 검색자들 사이에서 활발한 연구 분야입니다.
+
+### 일반화된 프론트러너 {#mev-extraction-generalized-frontrunners}
+
+일부 검색자는 수익성 있는 MEV 기회를 감지하기 위해 복잡한 알고리즘을 프로그래밍하는 대신 일반화된 프론트러너를 실행합니다. 일반화된 프론트러너는 멤풀을 감시하여 수익성 있는 트랜잭션을 감지하는 봇입니다. 프론트러너는 잠재적으로 수익성이 있는 트랜잭션의 코드를 복사하고, 주소를 프론트러너의 주소로 교체한 다음, 트랜잭션을 로컬에서 실행하여 수정된 트랜잭션이 프론트러너의 주소에 이익을 가져다주는지 다시 한번 확인합니다. 트랜잭션이 실제로 수익성이 있는 경우, 프론트러너는 교체된 주소와 더 높은 가스 가격으로 수정된 트랜잭션을 제출하여 원래 트랜잭션을 "선행매매"하고 원래 검색자의 MEV를 획득합니다.
+
+### Flashbots {#mev-extraction-flashbots}
+
+Flashbots는 실행 클라이언트를 확장하여 검색자가 공개 멤풀에 노출하지 않고도 검증자에게 MEV 트랜잭션을 제출할 수 있는 서비스를 제공하는 독립 프로젝트입니다. 이를 통해 일반화된 프론트러너에 의한 트랜잭션 선행매매를 방지할 수 있습니다.
+
+## MEV 예시 {#mev-examples}
+
+MEV는 몇 가지 방식으로 블록체인에서 나타납니다.
+
+### DEX 차익거래 {#mev-examples-dex-arbitrage}
+
+[탈중앙화 거래소](/glossary/#dex)(DEX) 차익거래는 가장 간단하고 가장 잘 알려진 MEV 기회입니다. 결과적으로, 가장 경쟁이 치열하기도 합니다.
+
+작동 방식은 다음과 같습니다. 두 개의 DEX가 토큰을 서로 다른 가격으로 제공하는 경우, 누군가는 가격이 낮은 DEX에서 토큰을 구매하고 가격이 높은 DEX에서 단일 원자적 트랜잭션으로 판매할 수 있습니다. 블록체인의 메커니즘 덕분에 이것은 진정한 무위험 차익거래입니다.
+
+Uniswap과 Sushiswap에서 ETH/DAI 페어의 다른 가격 책정을 활용하여 검색자가 1,000 ETH를 1,045 ETH로 바꾼 수익성 있는 차익거래 트랜잭션의 [예시](https://eth.blockscout.com/tx/0x5e1657ef0e9be9bc72efefe59a2528d0d730d478cfc9e6cdd09af9f997bb3ef4)입니다.
+
+### 청산 {#mev-examples-liquidations}
+
+대출 프로토콜 청산은 또 다른 잘 알려진 MEV 기회를 제공합니다.
+
+Maker나 Aave와 같은 대출 프로토콜은 사용자가 담보(예: ETH)를 예치하도록 요구합니다. 이 예치된 담보는 다른 사용자에게 대출해 주는 데 사용됩니다.
+
+그런 다음 사용자는 예치된 담보의 특정 비율까지 필요한 것에 따라 다른 사람으로부터 자산과 토큰을 빌릴 수 있습니다(예: MakerDAO 거버넌스 제안에 투표하려면 MKR을 빌릴 수 있습니다). 예를 들어, 대출 금액이 최대 30%인 경우, 프로토콜에 100 DAI를 예치한 사용자는 다른 자산으로 최대 30 DAI 상당을 빌릴 수 있습니다. 프로토콜이 정확한 대출 능력 비율을 결정합니다.
+
+차용인의 담보 가치가 변동함에 따라 대출 능력도 변동합니다. 만약 시장 변동으로 인해 빌린 자산의 가치가 담보 가치의 30%(다시 말하지만, 정확한 비율은 프로토콜에 의해 결정됨)를 초과하면, 프로토콜은 일반적으로 누구나 담보를 청산하여 즉시 대출자에게 상환할 수 있도록 허용합니다(이는 전통적인 금융에서 [마진 콜](https://www.investopedia.com/terms/m/margincall.asp)이 작동하는 방식과 유사합니다). 청산될 경우, 차용인은 보통 막대한 청산 수수료를 지불해야 하며, 그 중 일부는 청산인에게 돌아갑니다. 바로 여기서 MEV 기회가 발생합니다.
+
+검색자들은 블록체인 데이터를 최대한 빨리 분석하여 어떤 차용인이 청산될 수 있는지 파악하고, 가장 먼저 청산 트랜잭션을 제출하여 청산 수수료를 챙기기 위해 경쟁합니다.
+
+### 샌드위치 거래 {#mev-examples-sandwich-trading}
+
+샌드위치 거래는 MEV 추출의 또 다른 일반적인 방법입니다.
+
+샌드위치 거래를 하기 위해, 검색자는 멤풀에서 대규모 DEX 거래를 주시합니다. 예를 들어, 누군가 Uniswap에서 DAI로 10,000 UNI를 구매하고 싶다고 가정해 봅시다. 이 정도 규모의 거래는 UNI/DAI 페어에 상당한 영향을 미쳐 DAI 대비 UNI의 가격을 크게 상승시킬 수 있습니다.
+
+검색자는 이 대규모 거래가 UNI/DAI 페어에 미치는 대략적인 가격 효과를 계산하고 대규모 거래 직전에 최적의 매수 주문을 실행하여 UNI를 저렴하게 구매한 다음, 대규모 거래 직후에 매도 주문을 실행하여 대규모 주문으로 인해 높아진 가격에 판매할 수 있습니다.
+
+그러나 샌드위치 거래는 (위에서 설명한 DEX 차익거래와 달리) 원자적이지 않고 [살모넬라 공격](https://github.com/Defi-Cartel/salmonella)에 취약하기 때문에 더 위험합니다.
+
+### NFT MEV {#mev-examples-nfts}
+
+NFT 분야의 MEV는 새로운 현상이며, 반드시 수익성이 있는 것은 아닙니다.
+
+하지만 NFT 트랜잭션은 다른 모든 이더리움 트랜잭션과 공유되는 동일한 블록체인에서 발생하므로, 검색자는 기존 MEV 기회에서 사용된 것과 유사한 기술을 NFT 시장에서도 사용할 수 있습니다.
+
+예를 들어, 인기 있는 NFT 드롭이 있고 검색자가 특정 NFT 또는 NFT 세트를 원하는 경우, NFT를 가장 먼저 구매하도록 트랜잭션을 프로그래밍하거나 단일 트랜잭션으로 전체 NFT 세트를 구매할 수 있습니다. 또는 NFT가 [실수로 낮은 가격에 등록](https://www.theblockcrypto.com/post/113546/mistake-sees-69000-cryptopunk-sold-for-less-than-a-cent)된 경우, 검색자는 다른 구매자를 선행매매하여 저렴하게 구매할 수 있습니다.
+
+NFT MEV의 한 가지 두드러진 예는 한 검색자가 700만 달러를 들여 모든 크립토펑크(Cryptopunk)를 최저가에 [구매](https://eth.blockscout.com/address/0x650dCdEB6ecF05aE3CAF30A70966E2F395d5E9E5?tab=txs)했을 때 발생했습니다. 한 블록체인 연구원은 [트위터에서](https://twitter.com/IvanBogatyy/status/1422232184493121538) 구매자가 MEV 제공업체와 협력하여 구매를 비밀로 유지한 방법을 설명했습니다.
+
+### 롱테일 {#mev-examples-long-tail}
+
+DEX 차익거래, 청산, 샌드위치 거래는 모두 매우 잘 알려진 MEV 기회이며 새로운 검색자에게는 수익성이 없을 가능성이 높습니다. 그러나 덜 알려진 MEV 기회의 롱테일이 있습니다(NFT MEV가 바로 그러한 기회 중 하나라고 할 수 있습니다).
+
+이제 막 시작하는 검색자들은 이 롱테일에서 MEV를 검색함으로써 더 많은 성공을 거둘 수 있습니다. Flashbot의 [MEV 채용 게시판](https://github.com/flashbots/mev-job-board)에는 몇 가지 새로운 기회가 나열되어 있습니다.
+
+## MEV의 효과 {#effects-of-mev}
+
+MEV가 모두 나쁜 것은 아닙니다. 이더리움의 MEV에는 긍정적인 결과와 부정적인 결과가 모두 있습니다.
+
+### 장점 {#effects-of-mev-the-good}
+
+많은 디파이 프로젝트는 프로토콜의 유용성과 안정성을 보장하기 위해 경제적으로 합리적인 행위자에게 의존합니다. 예를 들어, DEX 차익거래는 사용자가 자신의 토큰에 대해 가장 정확하고 최고의 가격을 받을 수 있도록 보장하고, 대출 프로토콜은 차용인이 담보 비율 아래로 떨어졌을 때 신속한 청산에 의존하여 대출자가 상환받을 수 있도록 보장합니다.
+
+경제적 비효율성을 찾아 수정하고 프로토콜의 경제적 인센티브를 활용하는 합리적인 검색자가 없다면, 디파이 프로토콜과 디앱스 전반이 오늘날처럼 견고하지 못할 수 있습니다.
+
+### 단점 {#effects-of-mev-the-bad}
+
+애플리케이션 레이어에서 샌드위치 거래와 같은 일부 MEV 형태는 사용자에게 명백히 더 나쁜 경험을 초래합니다. 샌드위치 공격을 당한 사용자는 거래에서 슬리피지 증가와 실행 악화에 직면하게 됩니다.
+
+네트워크 레이어에서 일반화된 프론트러너와 이들이 종종 참여하는 가스 가격 경매(둘 이상의 프론트러너가 다음 블록에 자신의 트랜잭션을 포함시키기 위해 점진적으로 자신의 트랜잭션 가스 가격을 올리며 경쟁하는 경우)는 네트워크 혼잡과 일반 트랜잭션을 실행하려는 다른 모든 사람들에게 높은 가스 가격을 초래합니다.
+
+블록 내부에서 일어나는 일 외에도, MEV는 블록 간에 해로운 영향을 미칠 수 있습니다. 블록에서 사용 가능한 MEV가 표준 블록 보상을 크게 초과하면, 검증자는 블록을 재구성하여 MEV를 자신을 위해 캡처하도록 장려될 수 있으며, 이는 블록체인 재구성과 합의 불안정성을 유발합니다.
+
+이러한 블록체인 재구성 가능성은 [이전에 비트코인 블록체인에서 탐구된 바 있습니다](https://dl.acm.org/doi/10.1145/2976749.2978408). 비트코인의 블록 보상이 반감되고 거래 수수료가 블록 보상에서 차지하는 비중이 점점 더 커짐에 따라, 채굴자들이 다음 블록의 보상을 포기하고 대신 더 높은 수수료를 가진 과거 블록을 재채굴하는 것이 경제적으로 합리적인 상황이 발생합니다. MEV의 성장으로 이더리움에서도 동일한 종류의 상황이 발생하여 블록체인의 무결성을 위협할 수 있습니다.
+
+## MEV 현황 {#state-of-mev}
+
+MEV 추출은 2021년 초에 급증하여 연초 몇 달 동안 극도로 높은 가스 가격을 초래했습니다. Flashbots의 MEV 릴레이의 출현은 일반화된 프론트러너의 효율성을 감소시켰고 가스 가격 경매를 오프 체임으로 가져와 일반 사용자의 가스 가격을 낮췄습니다.
+
+많은 검색자가 여전히 MEV로 좋은 수익을 내고 있지만, 기회가 더 잘 알려지고 점점 더 많은 검색자가 동일한 기회를 놓고 경쟁함에 따라 검증자는 점점 더 많은 총 MEV 수익을 차지하게 될 것입니다(원래 설명된 것과 동일한 종류의 가스 경매가 Flashbots에서도 비공개로 발생하며, 검증자가 그에 따른 가스 수익을 차지하기 때문입니다). MEV는 이더리움에만 국한된 것이 아니며, 이더리움에서 기회 경쟁이 치열해짐에 따라 검색자들은 바이낸스 스마트 체인과 같은 대체 블록체인으로 이동하고 있습니다. 그곳에는 이더리움과 유사한 MEV 기회가 경쟁이 덜한 상태로 존재합니다.
+
+반면에 작업 증명에서 지분 증명으로의 전환과 롤업을 사용하여 이더리움을 확장하려는 지속적인 노력은 모두 아직 다소 불분명한 방식으로 MEV 환경을 변화시킵니다. 보장된 블록 제안자를 약간 미리 아는 것이 작업 증명의 확률적 모델에 비해 MEV 추출의 역학을 어떻게 변화시키는지, 또는 [단일 비밀 리더 선출](https://ethresear.ch/t/secret-non-single-leader-election/11789) 및 [분산 검증자 기술](/staking/dvt/)이 구현될 때 이것이 어떻게 중단될지는 아직 잘 알려져 있지 않습니다. 마찬가지로, 대부분의 사용자 활동이 이더리움에서 레이어 2 롤업 및 샤드로 이전될 때 어떤 MEV 기회가 존재하는지는 아직 지켜봐야 합니다.
+
+## 이더리움 지분 증명(PoS)에서의 MEV {#mev-in-ethereum-proof-of-stake}
+
+설명한 바와 같이, MEV는 전반적인 사용자 경험과 합의 레이어 보안에 부정적인 영향을 미칩니다. 그러나 이더리움의 지분 증명 합의로의 전환("병합"이라고 불림)은 잠재적으로 새로운 MEV 관련 위험을 초래합니다.
+
+### 검증자 중앙화 {#validator-centralization}
+
+병합 후 이더리움에서는 검증자(32 ETH의 보안 예치금을 예치한)가 비콘 체인에 추가된 블록의 유효성에 대해 합의에 도달합니다. 32 ETH는 많은 사람에게 부담스러운 금액일 수 있으므로 [스테이킹 풀에 참여](/staking/pools/)하는 것이 더 실현 가능한 옵션일 수 있습니다. 그럼에도 불구하고, [단독 스테이커](/staking/solo/)의 건전한 분포는 검증자의 중앙화를 완화하고 이더리움의 보안을 향상시키므로 이상적입니다.
+
+그러나 MEV 추출은 검증자 중앙화를 가속화할 수 있는 것으로 여겨집니다. 이는 부분적으로 검증자가 이전에 채굴자가 했던 것보다 [블록 제안에 대해 더 적은 수입을 얻게 되면서](/roadmap/merge/issuance/#how-the-merge-impacts-ETH-supply), [병합](/roadmap/merge/) 이후 MEV 추출이 [검증자 수입에 큰 영향](https://github.com/flashbots/eth2-research/blob/main/notebooks/mev-in-eth2/eth2-mev-calc.ipynb)을 미쳤기 때문입니다.
+
+더 큰 스테이킹 풀은 MEV 기회를 포착하기 위해 필요한 최적화에 투자할 더 많은 자원을 가질 가능성이 높습니다. 이러한 풀이 더 많은 MEV를 추출할수록 MEV 추출 능력을 향상시키고 전체 수익을 늘릴 수 있는 더 많은 자원을 갖게 되어 본질적으로 [규모의 경제](https://www.investopedia.com/terms/e/economiesofscale.asp#)를 창출합니다.
+
+가용 자원이 적은 단독 스테이커는 MEV 기회로부터 이익을 얻지 못할 수 있습니다. 이로 인해 독립 검증자들이 수입을 늘리기 위해 강력한 스테이킹 풀에 가입하라는 압력이 증가하여 이더리움의 탈중앙화를 감소시킬 수 있습니다.
+
+### 허가형 멤풀 {#permissioned-mempools}
+
+샌드위치 및 선행매매 공격에 대응하여 거래자들은 트랜잭션 개인 정보 보호를 위해 검증자와 오프 체임 거래를 시작할 수 있습니다. 잠재적인 MEV 트랜잭션을 공개 멤풀로 보내는 대신, 거래자는 이를 검증자에게 직접 보내고, 검증자는 이를 블록에 포함시키고 거래자와 이익을 나눕니다.
+
+"다크 풀"은 이러한 협의의 더 큰 버전이며 특정 수수료를 지불할 의사가 있는 사용자에게 개방된 허가형, 접근 전용 멤풀로 기능합니다. 이러한 추세는 이더리움의 무허가성과 무신뢰성을 감소시키고 잠재적으로 블록체인을 가장 높은 입찰자를 선호하는 "pay-to-play" 메커니즘으로 변형시킬 수 있습니다.
+
+허가형 멤풀은 또한 이전 섹션에서 설명한 중앙화 위험을 가속화할 것입니다. 여러 검증자를 운영하는 대규모 풀은 거래자와 사용자에게 트랜잭션 개인 정보 보호를 제공하여 MEV 수익을 늘리는 이점을 얻을 가능성이 높습니다.
+
+병합 후 이더리움에서 이러한 MEV 관련 문제를 해결하는 것은 핵심 연구 분야입니다. 현재까지, 병합 이후 이더리움의 탈중앙화 및 보안에 대한 MEV의 부정적인 영향을 줄이기 위해 제안된 두 가지 해결책은 [**제안자-빌더 분리(PBS)**](/roadmap/pbs/)와 [**빌더 API**](https://github.com/ethereum/builder-specs)입니다.
+
+### 제안자-빌더 분리 {#proposer-builder-separation}
+
+작업 증명과 지분 증명 모두에서, 블록을 생성하는 노드는 합의에 참여하는 다른 노드에게 체인에 추가할 것을 제안합니다. 새로운 블록은 다른 채굴자가 그 위에 빌드하거나(PoW에서) 또는 과반수의 검증자로부터 인증을 받은 후(지분 증명에서) 정식 체인의 일부가 됩니다.
+
+블록 생산자와 블록 제안자 역할의 조합이 이전에 설명한 대부분의 MEV 관련 문제를 야기합니다. 예를 들어, 합의 노드는 MEV 수익을 극대화하기 위해 [타임 밴딧 공격](https://www.mev.wiki/attack-examples/time-bandit-attack)에서 체인 재구성을 유발하도록 장려됩니다.
+
+[제안자-빌더 분리](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725)(PBS)는 특히 합의 레이어에서 MEV의 영향을 완화하도록 설계되었습니다. PBS의 주요 특징은 블록 생산자와 블록 제안자 역할의 분리입니다. 검증자는 여전히 블록을 제안하고 투표할 책임이 있지만, 블록 빌더라고 불리는 새로운 종류의 전문화된 주체가 트랜잭션을 정렬하고 블록을 생성하는 임무를 맡습니다.
+
+PBS 하에서, 블록 빌더는 트랜잭션 번들을 생성하고 비콘 체인 블록에 포함시키기 위한 입찰을 합니다("실행 페이로드"로서). 다음 블록을 제안하도록 선택된 검증자는 여러 입찰을 확인하고 가장 높은 수수료를 가진 번들을 선택합니다. PBS는 본질적으로 빌더가 블록 공간을 판매하는 검증자와 협상하는 경매 시장을 만듭니다.
+
+현재 PBS 설계는 빌더가 입찰과 함께 블록 내용물(블록 헤더)에 대한 암호화된 커밋먼트만 게시하는 [커밋-리빌 체계](https://gitcoin.co/blog/commit-reveal-scheme-on-ethereum/)를 사용합니다. 낙찰된 입찰을 수락한 후, 제안자는 블록 헤더를 포함하는 서명된 블록 제안을 생성합니다. 블록 빌더는 서명된 블록 제안을 본 후 전체 블록 본문을 게시해야 하며, 최종 확정되기 전에 검증자로부터 충분한 [인증](/glossary/#attestation)을 받아야 합니다.
+
+#### 제안자-빌더 분리는 MEV의 영향을 어떻게 완화합니까? {#how-does-pbs-curb-mev-impact}
+
+프로토콜 내 제안자-빌더 분리는 검증자의 권한에서 MEV 추출을 제거함으로써 합의에 대한 MEV의 영향을 줄입니다. 대신, 전문 하드웨어를 실행하는 블록 빌더가 앞으로 MEV 기회를 포착할 것입니다.
+
+그러나 빌더가 검증자에게 블록을 수락받기 위해 높은 가격으로 입찰해야 하므로, 이것이 검증자를 MEV 관련 수입에서 완전히 배제하는 것은 아닙니다. 그럼에도 불구하고, 검증자가 더 이상 MEV 수입 최적화에 직접적으로 집중하지 않게 됨에 따라 타임 밴딧 공격의 위협이 줄어듭니다.
+
+제안자-빌더 분리는 또한 MEV의 중앙화 위험을 줄입니다. 예를 들어, 커밋-리빌 체계를 사용하면 빌더가 검증자가 MEV 기회를 훔치거나 다른 빌더에게 노출하지 않을 것이라고 신뢰할 필요가 없어집니다. 이는 단독 스테이커가 MEV로부터 이익을 얻기 위한 장벽을 낮춥니다. 그렇지 않으면 빌더는 오프 체임 평판을 가진 대규모 풀을 선호하고 그들과 오프 체임 거래를 하는 경향이 있을 것입니다.
+
+마찬가지로, 지불이 무조건적이기 때문에 검증자는 빌더가 블록 본문을 보류하거나 유효하지 않은 블록을 게시하지 않을 것이라고 신뢰할 필요가 없습니다. 제안된 블록을 사용할 수 없거나 다른 검증자에 의해 유효하지 않다고 선언되더라도 검증자의 수수료는 여전히 처리됩니다. 후자의 경우, 블록은 단순히 폐기되어 블록 빌더가 모든 거래 수수료와 MEV 수익을 잃게 됩니다.
+
+### 빌더 API {#builder-api}
+
+제안자-빌더 분리는 MEV 추출의 영향을 줄일 것을 약속하지만, 이를 구현하려면 합의 프로토콜을 변경해야 합니다. 구체적으로, 비콘 체인의 [포크 선택](/developers/docs/consensus-mechanisms/pos/#fork-choice) 규칙을 업데이트해야 합니다. [빌더 API](https://github.com/ethereum/builder-specs)는 더 높은 신뢰 가정을 수반하지만, 제안자-빌더 분리의 작동 구현을 제공하기 위한 임시 해결책입니다.
+
+빌더 API는 합의 레이어 클라이언트가 실행 레이어 클라이언트로부터 실행 페이로드를 요청하는 데 사용되는 [엔진 API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)의 수정된 버전입니다. [정직한 검증자 사양](https://github.com/ethereum/consensus-specs/blob/dev/specs/bellatrix/validator.md)에 설명된 대로, 블록 제안 의무를 위해 선택된 검증자는 연결된 실행 클라이언트로부터 트랜잭션 번들을 요청하고, 이를 제안된 비콘 체인 블록에 포함시킵니다.
+
+빌더 API는 또한 검증자와 실행 레이어 클라이언트 간의 미들웨어 역할을 합니다. 그러나 비콘 체인의 검증자가 외부 주체로부터 블록을 소싱할 수 있도록 허용한다는 점에서 다릅니다(실행 클라이언트를 사용하여 로컬에서 블록을 생성하는 대신).
+
+다음은 빌더 API의 작동 방식에 대한 개요입니다.
+
+1. 빌더 API는 검증자를 실행 레이어 클라이언트를 실행하는 블록 빌더 네트워크에 연결합니다. PBS에서와 같이, 빌더는 자원 집약적인 블록 생성에 투자하고 MEV + 우선순위 팁에서 얻는 수익을 극대화하기 위해 다양한 전략을 사용하는 전문 주체입니다.
+
+2. 검증자(합의 레이어 클라이언트를 실행 중인)는 빌더 네트워크로부터 입찰과 함께 실행 페이로드를 요청합니다. 빌더의 입찰에는 실행 페이로드 헤더(페이로드 내용에 대한 암호화된 커밋먼트)와 검증자에게 지불할 수수료가 포함됩니다.
+
+3. 검증자는 들어오는 입찰을 검토하고 가장 높은 수수료를 가진 실행 페이로드를 선택합니다. 빌더 API를 사용하여 검증자는 자신의 서명과 실행 페이로드 헤더만 포함하는 "블라인드" 비콘 블록 제안을 생성하여 빌더에게 보냅니다.
+
+4. 빌더 API를 실행하는 빌더는 블라인드 블록 제안을 보면 전체 실행 페이로드로 응답해야 합니다. 이를 통해 검증자는 "서명된" 비콘 블록을 생성하여 네트워크 전체에 전파할 수 있습니다.
+
+5. 빌더 API를 사용하는 검증자는 블록 빌더가 신속하게 응답하지 않을 경우를 대비해 로컬에서 블록을 생성하여 블록 제안 보상을 놓치지 않도록 해야 합니다. 그러나 검증자는 이제 공개된 트랜잭션이나 다른 세트를 사용하여 또 다른 블록을 생성할 수 없습니다. 이는 _이중 서명_(동일한 슬롯 내에서 두 개의 블록에 서명하는 것)에 해당하며, 이는 슬래싱 대상 범죄입니다.
+
+빌더 API의 구현 예로는 이더리움에 대한 MEV의 부정적인 외부 효과를 억제하기 위해 설계된 [Flashbots 경매 메커니즘](https://docs.flashbots.net/Flashbots-auction/overview)의 개선 사항인 [MEV Boost](https://github.com/flashbots/mev-boost)가 있습니다. Flashbots 경매를 통해 지분 증명 검증자는 수익성 있는 블록을 구축하는 작업을 검색자라는 전문 당사자에게 아웃소싱할 수 있습니다.
+
+
+검색자는 수익성 있는 MEV 기회를 찾아 블록에 포함시키기 위해 [밀봉 가격 입찰](https://en.wikipedia.org/wiki/First-price_sealed-bid_auction)과 함께 트랜잭션 번들을 블록 제안자에게 보냅니다. go-ethereum(Geth) 클라이언트의 포크 버전인 mev-geth를 실행하는 검증자는 가장 수익성이 높은 번들을 선택하여 새 블록의 일부로 포함시키기만 하면 됩니다. 블록 제안자(검증자)를 스팸 및 유효하지 않은 트랜잭션으로부터 보호하기 위해 트랜잭션 번들은 제안자에게 도달하기 전에 검증을 위해 릴레이어를 통과합니다.
+
+MEV Boost는 이더리움의 지분 증명 전환을 위해 설계된 새로운 기능을 갖추고 있지만, 원래 Flashbots 경매의 동일한 작동 방식을 유지합니다. 검색자는 여전히 블록에 포함할 수익성 있는 MEV 트랜잭션을 찾지만, 빌더라고 불리는 새로운 종류의 전문 당사자가 트랜잭션과 번들을 블록으로 집계하는 책임을 집니다. 빌더는 검색자로부터 밀봉 가격 입찰을 수락하고 최적화를 실행하여 가장 수익성 있는 순서를 찾습니다.
+
+릴레이어는 여전히 트랜잭션 번들을 제안자에게 전달하기 전에 검증할 책임이 있습니다. 그러나 MEV Boost는 빌더가 보낸 블록 본문과 검증자가 보낸 블록 헤더를 저장하여 [데이터 가용성](/developers/docs/data-availability/)을 제공하는 에스크로를 도입합니다. 여기서 릴레이에 연결된 검증자는 사용 가능한 실행 페이로드를 요청하고 MEV Boost의 정렬 알고리즘을 사용하여 가장 높은 입찰가 + MEV 팁이 있는 페이로드 헤더를 선택합니다.
+
+#### 빌더 API는 MEV의 영향을 어떻게 완화합니까? {#how-does-builder-api-curb-mev-impact}
+
+빌더 API의 핵심 이점은 MEV 기회에 대한 접근을 민주화할 수 있는 잠재력입니다. 커밋-리빌 체계를 사용하면 신뢰 가정이 제거되고 MEV로부터 이익을 얻으려는 검증자의 진입 장벽이 낮아집니다. 이는 단독 스테이커가 MEV 이익을 늘리기 위해 대규모 스테이킹 풀과 통합해야 하는 압력을 줄여야 합니다.
+
+빌더 API의 광범위한 구현은 블록 빌더 간의 경쟁을 더욱 촉진하여 검열 저항성을 높일 것입니다. 검증자가 여러 빌더의 입찰을 검토함에 따라, 하나 이상의 사용자 트랜잭션을 검열하려는 빌더는 성공하기 위해 다른 모든 비검열 빌더보다 높은 가격을 제시해야 합니다. 이는 사용자를 검열하는 비용을 극적으로 증가시키고 그러한 행위를 억제합니다.
+
+MEV Boost와 같은 일부 프로젝트는 선행매매/샌드위치 공격을 피하려는 거래자와 같은 특정 당사자에게 트랜잭션 개인 정보 보호를 제공하도록 설계된 전체 구조의 일부로 빌더 API를 사용합니다. 이는 사용자와 블록 빌더 간의 비공개 통신 채널을 제공함으로써 달성됩니다. 앞서 설명한 허가형 멤풀과 달리 이 접근 방식은 다음과 같은 이유로 유익합니다.
+
+1. 시장에 여러 빌더가 존재하면 검열이 비현실적이 되어 사용자에게 이익이 됩니다. 대조적으로, 중앙화되고 신뢰 기반의 다크 풀이 존재하면 소수의 블록 빌더 손에 권력이 집중되고 검열 가능성이 높아질 것입니다.
+
+2. 빌더 API 소프트웨어는 오픈 소스이므로 누구나 블록 빌더 서비스를 제공할 수 있습니다. 이는 사용자가 특정 블록 빌더를 강제로 사용하지 않아도 되며 이더리움의 중립성과 무허가성을 향상시킵니다. 또한, MEV를 추구하는 거래자들은 비공개 거래 채널을 사용함으로써 의도치 않게 중앙화에 기여하지 않게 됩니다.
+
+## 관련 자료 {#related-resources}
+
+- [Flashbots 문서](https://docs.flashbots.net/)
+- [Flashbots GitHub](https://github.com/flashbots/pm)
+- [mevboost.org](https://www.mevboost.org/) - _MEV-Boost 릴레이 및 블록 빌더에 대한 실시간 통계 추적기_
+
+## 더 읽어보기 {#further-reading}
+
+- [채굴자 추출 가능 가치(MEV)란 무엇인가?](https://blog.chain.link/what-is-miner-extractable-value-mev/)
+- [MEV와 나](https://www.paradigm.xyz/2021/02/mev-and-me)
+- [이더리움은 어두운 숲이다](https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest/)
+- [어두운 숲 탈출하기](https://samczsun.com/escaping-the-dark-forest/)
+- [Flashbots: MEV 위기 선행매매](https://medium.com/flashbots/frontrunning-the-mev-crisis-40629a613752)
+- [@bertcmiller의 MEV 스레드](https://twitter.com/bertcmiller/status/1402665992422047747)
+- [MEV-Boost: 병합 준비가 된 Flashbots 아키텍처](https://ethresear.ch/t/mev-boost-merge-ready-flashbots-architecture/11177)
+- [MEV Boost란 무엇인가](https://www.alchemy.com/overviews/mev-boost)
+- [왜 mev-boost를 실행해야 하는가?](https://writings.flashbots.net/writings/why-run-mevboost/)
+- [이더리움을 위한 히치하이커 안내서](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum)
diff --git a/public/content/translations/ko/developers/docs/networking-layer/index.md b/public/content/translations/ko/developers/docs/networking-layer/index.md
new file mode 100644
index 00000000000..7bbbff13333
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/networking-layer/index.md
@@ -0,0 +1,155 @@
+---
+title: "네트워킹 계층"
+description: "이더리움의 네트워크 계층 소개."
+lang: ko
+sidebarDepth: 2
+---
+
+이더리움은 표준화된 프로토콜을 기반으로 서로 통신할 수 있어야 하는, 수천 개의 노드로 구성된 P2P 네트워크입니다. 네트워크 계층은 이러한 노드가 서로를 찾고 정보를 교환할 수 있도록 하는 프로토콜의 스택입니다. 이는 네트워크 상에서 “가십” 정보(일대다 통신)를 전파하는 것뿐만 아니라, 특정 노드 간(일대일 통신) 요청과 응답을 교환하는 것도 포함합니다. 각 노드는 올바른 정보를 주고받고 있음을 보장하기 위해 특정한 네트워크 규칙을 반드시 준수해야 합니다.
+
+클라이언트 소프트웨어는 실행 클라이언트와 합의 클라이언트의 두 부분으로 나누어지며, 각 부분은 고유한 네트워크 스택을 가집니다. 다른 이더리움 노드와 통신하는 것뿐만 아니라, 실행 및 합의 클라이언트는 서로 간 통신을 해야 합니다. 이 페이지는 이러한 소통을 가능하게 해주는 프로토콜에 대한 소개 설명을 제공합니다.
+
+실행 클라이언트는 P2P 네트워크의 실행 계층을 통한 거래를 . 이는 인증된 피어들 간의 암호화된 통신을 필요로 합니다. 검증자가 블록을 제안하기 위해 선택될 때, 노드의 로컬 트랜잭션 풀로부터의 트랜잭션은 비콘 블록으로 패키징될 RPC 연결을 통해 합의 클라이언트를 통과시킬 것입니다.검증자가 블록을 제안하기 위해 선택될 때, 노드의 로컬 트랜잭션 풀로부터의 트랜잭션은 비콘 블록으로 패키징될 RPC 연결을 통해 합의 클라이언트를 통과시킬 것입니다. 그러면 합의 클라이언트는 이를 위해서는 두 개의 개별 P2P 네트워크가 필요합니다. 하나는 트랜잭션 가십을 위해 실행 클라이언트를 연결하고, 다른 하나는 블록 가십을 위해 합의 클라이언트를 연결하는 네트워크입니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이더리움 [노드 및 클라이언트](/developers/docs/nodes-and-clients/)에 대한 지식이 있으면 이 페이지를 이해하는 데 도움이 됩니다.
+
+## 실행 레이어 {#execution-layer}
+
+실행 레이어의 네트워킹 프로토콜은 두 개의 스택으로 나뉩니다:
+
+- 검색 스택: UDP 위에 구축되어 새로운 노드가 연결할 피어를 찾을 수 있도록 합니다.
+
+- DevP2P 스택: TCP 위에 위치하며 노드가 정보를 교환할 수 있도록 합니다.
+
+두 스택은 병렬로 작동합니다. 검색 스택은 새로운 네트워크 참여자를 네트워크에 공급하고 DevP2P 스택은 이들의 상호 작용을 가능하게 합니다.
+
+### 검색 {#discovery}
+
+검색은 네트워크에서 다른 노드를 찾는 프로세스입니다. 이는 소규모 부트노드 집합을 사용하여 부트스트랩됩니다(주소가 클라이언트에 [하드코딩](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go)되어 즉시 찾을 수 있고 클라이언트를 피어에 연결할 수 있는 노드). 이러한 부트노드는 새로운 노드를 피어 집합에 소개하기 위해서만 존재합니다. 이것이 유일한 목적이며, 체인 동기화와 같은 일반적인 클라이언트 작업에는 참여하지 않으며 클라이언트가 처음 시작될 때만 사용됩니다.
+
+노드-부트노드 상호작용에 사용되는 프로토콜은 노드 목록을 공유하기 위해 [분산 해시 테이블](https://en.wikipedia.org/wiki/Distributed_hash_table)을 사용하는 수정된 형태의 [Kademlia](https://medium.com/coinmonks/a-brief-overview-of-kademlia-and-its-use-in-various-decentralized-platforms-da08a7f72b8f)입니다. 각 노드는 가장 가까운 피어에 연결하는 데 필요한 정보를 포함하는 이 테이블의 버전을 가지고 있습니다. 이 '근접성'은 지리적인 것이 아니라 노드 ID의 유사성으로 거리가 정의됩니다. 각 노드의 테이블은 보안 기능으로 정기적으로 새로 고쳐집니다. 예를 들어, [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5) 검색 프로토콜에서 노드는 클라이언트가 지원하는 하위 프로토콜을 표시하는 '광고'를 전송하여 피어가 서로 통신하는 데 사용할 수 있는 프로토콜에 대해 협상할 수 있도록 합니다.
+
+검색은 PING-PONG 게임으로 시작됩니다. 성공적인 PING-PONG은 새 노드를 부트노드에 "결속"시킵니다. 네트워크에 진입하는 새 노드의 존재를 부트노드에 알리는 초기 메시지는 `PING`입니다. 이 `PING`에는 새 노드, 부트노드 및 만료 타임스탬프에 대한 해시된 정보가 포함됩니다. 부트노드는 `PING`을 수신하고 `PING` 해시를 포함하는 `PONG`을 반환합니다. `PING`과 `PONG` 해시가 일치하면 새 노드와 부트노드 간의 연결이 확인되고 "결속"되었다고 합니다.
+
+일단 결속되면, 새 노드는 부트노드에 `FIND-NEIGHBOURS` 요청을 보낼 수 있습니다. 부트노드가 반환하는 데이터에는 새 노드가 연결할 수 있는 피어 목록이 포함됩니다. 노드가 결속되지 않으면 `FIND-NEIGHBOURS` 요청이 실패하므로 새 노드는 네트워크에 진입할 수 없습니다.
+
+새 노드가 부트노드로부터 이웃 목록을 받으면 각 이웃과 PING-PONG 교환을 시작합니다. 성공적인 PING-PONG은 새 노드를 이웃과 결속시켜 메시지 교환을 가능하게 합니다.
+
+```
+클라이언트 시작 --> 부트노드에 연결 --> 부트노드에 결속 --> 이웃 찾기 --> 이웃에 결속
+```
+
+실행 클라이언트는 현재 [Discv4](https://github.com/ethereum/devp2p/blob/master/discv4.md) 검색 프로토콜을 사용하고 있으며, [Discv5](https://github.com/ethereum/devp2p/tree/master/discv5) 프로토콜로 마이그레이션하려는 노력이 활발히 이루어지고 있습니다.
+
+#### ENR: 이더리움 노드 레코드 {#enr}
+
+[이더리움 노드 레코드(ENR)](/developers/docs/networking-layer/network-addresses/)는 서명(합의된 ID 체계에 따라 만들어진 레코드 콘텐츠의 해시), 레코드 변경 사항을 추적하는 시퀀스 번호, 임의의 키:값 쌍 목록 등 세 가지 기본 요소를 포함하는 객체입니다. 이는 새로운 피어 간에 식별 정보를 더 쉽게 교환할 수 있도록 하는 미래 보장형 형식이며 이더리움 노드에 선호되는 [네트워크 주소](/developers/docs/networking-layer/network-addresses) 형식입니다.
+
+#### 검색이 UDP를 기반으로 구축된 이유는 무엇인가요? {#why-udp}
+
+UDP는 오류 검사, 실패한 패킷 재전송 또는 동적으로 연결을 열고 닫는 것을 지원하지 않습니다. 대신 성공적으로 수신되었는지 여부에 관계없이 대상에 지속적인 정보 스트림을 보냅니다. 이러한 최소한의 기능은 오버헤드도 최소화하여 이런 종류의 연결을 매우 빠르게 만듭니다. 노드가 피어와 공식적인 연결을 설정하기 위해 자신의 존재를 알리기만 하면 되는 검색의 경우 UDP로 충분합니다. 그러나 나머지 네트워킹 스택의 경우 UDP는 목적에 적합하지 않습니다. 노드 간의 정보 교환은 매우 복잡하므로 재전송, 오류 검사 등을 지원할 수 있는 더 완벽한 기능을 갖춘 프로토콜이 필요합니다. TCP와 관련된 추가 오버헤드는 추가 기능만큼의 가치가 있습니다. 따라서 P2P 스택의 대부분은 TCP를 통해 작동합니다.
+
+### DevP2P {#devp2p}
+
+DevP2P는 이더리움이 P2P 네트워크를 구축하고 유지하기 위해 구현하는 전체 프로토콜 스택입니다. 새 노드가 네트워크에 들어온 후, 이들의 상호 작용은 [DevP2P](https://github.com/ethereum/devp2p) 스택의 프로토콜에 의해 제어됩니다. 이들은 모두 TCP 위에 있으며 RLPx 전송 프로토콜, 와이어 프로토콜 및 여러 하위 프로토콜을 포함합니다. [RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md)는 노드 간의 세션을 시작, 인증 및 유지 관리하는 프로토콜입니다. RLPx는 RLP(재귀 길이 접두사)를 사용하여 메시지를 인코딩하는데, 이는 노드 간 전송을 위해 데이터를 최소 구조로 인코딩하는 매우 공간 효율적인 방법입니다.
+
+두 노드 간의 RLPx 세션은 초기 암호화 핸드셰이크로 시작됩니다. 여기에는 노드가 인증 메시지를 보내고 피어가 이를 확인하는 과정이 포함됩니다. 확인에 성공하면 피어는 시작 노드로 반환할 인증-응답 메시지를 생성합니다. 이는 노드가 개인적으로 그리고 안전하게 통신할 수 있도록 하는 키 교환 프로세스입니다. 성공적인 암호화 핸드셰이크는 두 노드가 서로에게 "와이어상에서" "hello" 메시지를 보내도록 합니다. 와이어 프로토콜은 hello 메시지의 성공적인 교환으로 시작됩니다.
+
+hello 메시지에는 다음이 포함됩니다.
+
+- 프로토콜 버전
+- 클라이언트 ID
+- 포트
+- 노드 ID
+- 지원되는 하위 프로토콜 목록
+
+이것은 두 노드 간에 공유되는 기능을 정의하고 통신을 구성하기 때문에 성공적인 상호 작용에 필요한 정보입니다. 각 노드에서 지원하는 하위 프로토콜 목록을 비교하고 두 노드에 공통적인 프로토콜을 세션에서 사용할 수 있는 하위 프로토콜 협상 프로세스가 있습니다.
+
+hello 메시지와 함께 와이어 프로토콜은 연결이 닫힐 것이라는 경고를 피어에게 제공하는 "연결 끊기" 메시지를 보낼 수도 있습니다. 와이어 프로토콜에는 세션을 열어두기 위해 주기적으로 전송되는 PING 및 PONG 메시지도 포함됩니다. 따라서 RLPx 및 와이어 프로토콜 교환은 노드 간 통신의 기반을 구축하여 특정 하위 프로토콜에 따라 유용한 정보를 교환하기 위한 발판을 제공합니다.
+
+### 하위 프로토콜 {#sub-protocols}
+
+#### 와이어 프로토콜 {#wire-protocol}
+
+피어가 연결되고 RLPx 세션이 시작되면 와이어 프로토콜은 피어가 통신하는 방법을 정의합니다. 처음에 와이어 프로토콜은 체인 동기화, 블록 전파, 트랜잭션 교환의 세 가지 주요 작업을 정의했습니다. 그러나 이더리움이 지분 증명으로 전환되면서 블록 전파와 체인 동기화는 합의 레이어의 일부가 되었습니다. 트랜잭션 교환은 여전히 실행 클라이언트의 권한 내에 있습니다. 트랜잭션 교환은 블록 빌더가 다음 블록에 포함할 일부 트랜잭션을 선택할 수 있도록 노드 간에 보류 중인 트랜잭션을 교환하는 것을 의미합니다. 이러한 작업에 대한 자세한 정보는 [여기](https://github.com/ethereum/devp2p/blob/master/caps/eth.md)에서 확인할 수 있습니다. 이러한 하위 프로토콜을 지원하는 클라이언트는 [JSON-RPC](/developers/docs/apis/json-rpc/)를 통해 이를 노출합니다.
+
+#### les (라이트 이더리움 하위 프로토콜) {#les}
+
+이것은 라이트 클라이언트를 동기화하기 위한 최소한의 프로토콜입니다. 전통적으로 이 프로토콜은 인센티브 없이 라이트 클라이언트에 데이터를 제공하기 위해 전체 노드가 필요하기 때문에 거의 사용되지 않았습니다. 실행 클라이언트의 기본 동작은 les를 통해 라이트 클라이언트 데이터를 제공하지 않는 것입니다. 자세한 정보는 les [사양](https://github.com/ethereum/devp2p/blob/master/caps/les.md)에서 확인할 수 있습니다.
+
+#### 스냅 {#snap}
+
+[스냅 프로토콜](https://github.com/ethereum/devp2p/blob/master/caps/snap.md#ethereum-snapshot-protocol-snap)은 피어가 최근 상태의 스냅샷을 교환할 수 있도록 하는 선택적 확장으로, 피어가 중간 머클 트라이 노드를 다운로드할 필요 없이 계정 및 저장 공간 데이터를 확인할 수 있도록 합니다.
+
+#### Wit (증인 프로토콜) {#wit}
+
+[증인 프로토콜](https://github.com/ethereum/devp2p/blob/master/caps/wit.md#ethereum-witness-protocol-wit)은 피어 간의 상태 증인 교환을 가능하게 하여 클라이언트를 체인의 끝으로 동기화하는 데 도움을 주는 선택적 확장입니다.
+
+#### 위스퍼 {#whisper}
+
+위스퍼는 블록체인에 정보를 쓰지 않고 피어 간에 보안 메시징을 제공하는 것을 목표로 하는 프로토콜이었습니다. DevP2P 와이어 프로토콜의 일부였지만 현재는 더 이상 사용되지 않습니다. 비슷한 목표를 가진 다른 [관련 프로젝트](https://wakunetwork.com/)가 있습니다.
+
+## 합의 레이어 {#consensus-layer}
+
+합의 클라이언트는 다른 사양을 가진 별도의 P2P 네트워크에 참여합니다. 합의 클라이언트는 블록 가십에 참여하여 피어로부터 새 블록을 수신하고 블록 제안자가 될 차례가 되면 이를 브로드캐스트해야 합니다. 실행 레이어와 유사하게, 이를 위해서는 먼저 노드가 피어를 찾고 블록, 인증 등을 교환하기 위한 보안 세션을 설정할 수 있도록 검색 프로토콜이 필요합니다.
+
+### 검색 {#consensus-discovery}
+
+실행 클라이언트와 마찬가지로 합의 클라이언트는 피어를 찾기 위해 UDP를 통해 [discv5](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-discovery-domain-discv5)를 사용합니다. 합의 레이어의 discv5 구현은 discv5를 [libP2P](https://libp2p.io/) 스택에 연결하는 어댑터를 포함하여 DevP2P를 더 이상 사용하지 않는다는 점에서만 실행 클라이언트의 구현과 다릅니다. 실행 레이어의 RLPx 세션은 libP2P의 노이즈 보안 채널 핸드셰이크를 위해 더 이상 사용되지 않습니다.
+
+### ENR {#consensus-enr}
+
+합의 노드를 위한 ENR에는 노드의 공개 키, IP 주소, UDP 및 TCP 포트, 그리고 인증 서브넷 비트필드와 `eth2` 키라는 두 가지 합의 관련 필드가 포함됩니다. 전자는 노드가 특정 인증 가십 하위 네트워크에 참여하는 피어를 더 쉽게 찾을 수 있도록 합니다. `eth2` 키에는 노드가 사용 중인 이더리움 포크 버전에 대한 정보가 포함되어 있어 피어가 올바른 이더리움에 연결되도록 보장합니다.
+
+### libP2P {#libp2p}
+
+libP2P 스택은 검색 후 모든 통신을 지원합니다. 클라이언트는 ENR에 정의된 대로 IPv4 및/또는 IPv6에서 다이얼하고 수신할 수 있습니다. libP2P 레이어의 프로토콜은 가십 및 요청/응답 도메인으로 세분화될 수 있습니다.
+
+### 가십 {#gossip}
+
+가십 도메인에는 네트워크 전체에 빠르게 퍼져야 하는 모든 정보가 포함됩니다. 여기에는 비콘 블록, 증명, 인증, 출금 및 슬래싱이 포함됩니다. 이는 libP2P gossipsub v1을 사용하여 전송되며 각 노드에 로컬로 저장된 다양한 메타데이터(수신 및 전송할 가십 페이로드의 최대 크기 포함)에 의존합니다. 가십 도메인에 대한 자세한 정보는 [여기](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#the-gossip-domain-gossipsub)에서 확인할 수 있습니다.
+
+### 요청-응답 {#request-response}
+
+요청-응답 도메인에는 클라이언트가 피어에게 특정 정보를 요청하기 위한 프로토콜이 포함됩니다. 예를 들어 특정 루트 해시와 일치하거나 특정 슬롯 범위 내에 있는 특정 비콘 블록을 요청하는 것이 있습니다. 응답은 항상 snappy로 압축된 SSZ 인코딩 바이트로 반환됩니다.
+
+## 합의 클라이언트는 왜 RLP보다 SSZ를 선호하나요? {#ssz-vs-rlp}
+
+SSZ는 simple serialization(단순 직렬화)의 약자입니다. 고정 오프셋을 사용하여 전체 구조를 디코딩할 필요 없이 인코딩된 메시지의 개별 부분을 쉽게 디코딩할 수 있으므로, 합의 클라이언트가 인코딩된 메시지에서 특정 정보를 효율적으로 가져올 수 있어 매우 유용합니다. 또한 머클 프로토콜과 통합되도록 특별히 설계되었으며, 머클화에 대한 관련 효율성 향상이 있습니다. 합의 레이어의 모든 해시는 머클 루트이므로 이는 상당한 개선으로 이어집니다. SSZ는 또한 값의 고유한 표현을 보장합니다.
+
+## 실행 및 합의 클라이언트 연결 {#connecting-clients}
+
+합의 클라이언트와 실행 클라이언트는 모두 병렬로 실행됩니다. 합의 클라이언트가 실행 클라이언트에 지침을 제공하고 실행 클라이언트가 비콘 블록에 포함할 트랜잭션 번들을 합의 클라이언트에 전달할 수 있도록 연결해야 합니다. 두 클라이언트 간의 통신은 로컬 RPC 연결을 사용하여 수행할 수 있습니다. ['Engine-API'](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)로 알려진 API는 두 클라이언트 간에 전송되는 명령을 정의합니다. 두 클라이언트 모두 단일 네트워크 ID 뒤에 있으므로 각 클라이언트에 대한 별도의 키(eth1 키 및 eth2 키)를 포함하는 ENR(이더리움 노드 레코드)을 공유합니다.
+
+제어 흐름의 요약은 아래에 나와 있으며 관련 네트워킹 스택은 괄호 안에 있습니다.
+
+### 합의 클라이언트가 블록 생성자가 아닐 때: {#when-consensus-client-is-not-block-producer}
+
+- 합의 클라이언트는 블록 가십 프로토콜(합의 p2p)을 통해 블록을 수신합니다.
+- 합의 클라이언트는 블록을 사전 검증합니다. 즉, 올바른 메타데이터를 가진 유효한 발신자로부터 도착했는지 확인합니다.
+- 블록의 트랜잭션은 실행 페이로드로 실행 레이어에 전송됩니다(로컬 RPC 연결).
+- 실행 레이어는 트랜잭션을 실행하고 블록 헤더의 상태를 검증합니다(즉, 해시 일치 여부 확인).
+- 실행 레이어는 검증 데이터를 합의 레이어로 다시 전달하고, 이제 블록이 검증된 것으로 간주됩니다(로컬 RPC 연결).
+- 합의 레이어는 블록을 자체 블록체인의 헤드에 추가하고 이를 인증하여 네트워크를 통해 인증을 브로드캐스트합니다(합의 p2p).
+
+### 합의 클라이언트가 블록 생성자일 때: {#when-consensus-client-is-block-producer}
+
+- 합의 클라이언트는 다음 블록 생성자라는 통지를 받습니다(합의 p2p).
+- 합의 레이어는 실행 클라이언트에서 `create block` 메서드를 호출합니다(로컬 RPC).
+- 실행 레이어는 트랜잭션 가십 프로토콜(실행 p2p)에 의해 채워진 트랜잭션 멤풀에 액세스합니다.
+- 실행 클라이언트는 트랜잭션을 블록으로 묶고, 트랜잭션을 실행하고, 블록 해시를 생성합니다.
+- 합의 클라이언트는 실행 클라이언트로부터 트랜잭션과 블록 해시를 가져와 비콘 블록에 추가합니다(로컬 RPC).
+- 합의 클라이언트는 블록 가십 프로토콜(합의 p2p)을 통해 블록을 브로드캐스트합니다.
+- 다른 클라이언트는 블록 가십 프로토콜을 통해 제안된 블록을 수신하고 위에서 설명한 대로 검증합니다(합의 p2p).
+
+블록이 충분한 검증자에 의해 인증되면 체인의 헤드에 추가되고, 정당화되며, 결국 최종 확정됩니다.
+
+\n
+
+[ethresear.ch](https://ethresear.ch/t/eth1-eth2-client-relationship/7248)에서 가져온 합의 및 실행 클라이언트를 위한 네트워크 레이어 개략도
+
+## 추가 정보 {#further-reading}
+
+[DevP2P](https://github.com/ethereum/devp2p)\n[LibP2p](https://github.com/libp2p/specs)\n[합의 레이어 네트워크 사양](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure)\n[kademlia에서 discv5로](https://vac.dev/kademlia-to-discv5)\n[kademlia 논문](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf)\n[이더리움 p2p 소개](https://p2p.paris/en/talks/intro-ethereum-networking/)\n[eth1/eth2 관계](http://ethresear.ch/t/eth1-eth2-client-relationship/7248)\n[병합 및 eth2 클라이언트 세부 정보 영상](https://www.youtube.com/watch?v=zNIrIninMgg)
diff --git a/public/content/translations/ko/developers/docs/networking-layer/network-addresses/index.md b/public/content/translations/ko/developers/docs/networking-layer/network-addresses/index.md
new file mode 100644
index 00000000000..a1a23192422
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/networking-layer/network-addresses/index.md
@@ -0,0 +1,39 @@
+---
+title: "네트워크 주소"
+description: "네트워크 주소에 대한 소개."
+lang: ko
+sidebarDepth: 2
+---
+
+이더리움 노드는 피어에 연결하기 위해 몇 가지 기본 정보로 자신을 식별해야 합니다. 잠재적 피어가 이 정보를 해석할 수 있도록 이더리움 노드가 이해할 수 있는 세 가지 표준화된 형식(multiaddr, enode 또는 이더리움 노드 레코드(ENR)) 중 하나로 전달됩니다. ENR은 이더리움 네트워크 주소의 현재 표준입니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 이해하려면 이더리움의 [네트워킹 층](/developers/docs/networking-layer/)에 대한 약간의 이해가 필요합니다.
+
+## Multiaddr {#multiaddr}
+
+최초의 이더리움 노드 주소 형식은 'multiaddr'('multi-addresses'의 약자)였습니다. Multiaddr는 피어투피어 네트워크를 위해 설계된 보편적인 형식입니다. 주소는 키와 값을 슬래시로 구분한 키-값 쌍으로 표시됩니다. 예를 들어, IPv4 주소 `192.168.22.27`을 사용하고 TCP 포트 `33000`에서 수신 대기하는 노드의 multiaddr는 다음과 같습니다.
+
+/ip4/192.168.22.27/tcp/33000
+
+이더리움 노드의 경우, multiaddr에는 노드 ID(공개 키의 해시)가 포함됩니다.
+
+/ip4/192.168.22.27/tcp/33000/p2p/5t7Nv7dG2d6ffbvAiewVsEwWweU3LdebSqX2y1bPrW8br
+
+## Enode {#enode}
+
+Enode는 URL 주소 형식을 사용하여 이더리움 노드를 식별하는 방법입니다. 16진수 노드 ID는 URL의 사용자 이름 부분에 인코딩되며 @ 기호를 사용하여 호스트와 구분됩니다. 호스트 이름은 IP 주소로만 지정할 수 있으며 DNS 이름은 허용되지 않습니다. 호스트 이름 섹션의 포트는 TCP 수신 대기 포트입니다. TCP와 UDP(검색) 포트가 다른 경우 UDP 포트는 쿼리 파라미터 "discport"로 지정됩니다.
+
+다음 예에서 노드 URL은 IP 주소가 `10.3.58.6`이고 TCP 포트가 `30303`이며 UDP 검색 포트가 `30301`인 노드를 설명합니다.
+
+enode://6f8a80d14311c39f35f516fa664deaaaa13e85b2f7493f37f6144d86991ec012937307647bd3b9a82abe2974e1407241d54947bbb39763a4cac9f77166ad92a0@10.3.58.6:30303?discport=30301
+
+## 이더리움 노드 레코드(ENR) {#enr}
+
+이더리움 노드 레코드(ENR)는 이더리움의 네트워크 주소에 대한 표준화된 형식입니다. 이것들은 multiaddr과 enode를 대체합니다. 이것들은 노드 간에 더 많은 정보 교환을 허용하기 때문에 특히 유용합니다. ENR에는 서명, 시퀀스 번호 및 서명을 생성하고 검증하는 데 사용되는 ID 체계를 자세히 설명하는 필드가 포함되어 있습니다. ENR은 키-값 쌍으로 구성된 임의의 데이터로 채워질 수도 있습니다. 이 키-값 쌍에는 노드의 IP 주소와 노드가 사용할 수 있는 하위 프로토콜에 대한 정보가 포함됩니다. 합의 클라이언트는 [특정 ENR 구조](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure)를 사용하여 부트 노드를 식별하고 현재 이더리움 포크 및 인증 가십 서브넷(인증이 함께 집계되는 특정 피어 집합에 노드를 연결)에 대한 정보가 포함된 `eth2` 필드도 포함합니다.
+
+## 추가 정보 {#further-reading}
+
+- [EIP-778: 이더리움 노드 레코드(ENR)](https://eips.ethereum.org/EIPS/eip-778)
+- [LibP2P: Multiaddr-Enode-ENR?!](https://consensys.net/diligence/blog/2020/09/libp2p-multiaddr-enode-enr/)
diff --git a/public/content/translations/ko/developers/docs/networking-layer/portal-network/index.md b/public/content/translations/ko/developers/docs/networking-layer/portal-network/index.md
new file mode 100644
index 00000000000..2998c3d1bac
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/networking-layer/portal-network/index.md
@@ -0,0 +1,89 @@
+---
+title: "포털 네트워크"
+description: "포털 네트워크 개요 - 저사양 클라이언트를 지원하도록 설계된 개발 중인 네트워크입니다."
+lang: ko
+---
+
+이더리움은 이더리움 클라이언트 소프트웨어를 실행하는 컴퓨터로 구성된 네트워크입니다. 이러한 각 컴퓨터를 '노드'라고 합니다. 클라이언트 소프트웨어를 통해 노드는 이더리움 네트워크에서 데이터를 보내고 받을 수 있으며, 이더리움 프로토콜 규칙에 따라 데이터를 검증합니다. 노드는 디스크 저장 공간에 많은 양의 기록 데이터를 보관하며 네트워크의 다른 노드로부터 블록이라고 하는 새로운 정보 패킷을 받을 때마다 이를 추가합니다. 이는 노드가 네트워크의 나머지 부분과 일치하는 정보를 가지고 있는지 항상 확인하는 데 필요합니다. 이는 노드를 실행하는 데 많은 디스크 공간이 필요할 수 있음을 의미합니다. 일부 노드 작업에는 많은 RAM이 필요할 수도 있습니다.
+
+이러한 디스크 저장 공간 문제를 해결하기 위해, 모든 정보를 직접 저장하는 대신 전체 노드에 정보를 요청하는 '라이트' 노드가 개발되었습니다. 하지만 이는 라이트 노드가 독립적으로 정보를 검증하지 않고 대신 다른 노드를 신뢰한다는 것을 의미합니다. 이는 또한 전체 노드가 해당 라이트 노드에 서비스를 제공하기 위해 추가 작업을 수행해야 함을 의미합니다.
+
+포털 네트워크는 필요한 데이터를 네트워크 전체에서 작은 조각으로 공유함으로써 전체 노드를 신뢰하거나 추가적인 부담을 주지 않고 "라이트" 노드의 데이터 가용성 문제를 해결하는 것을 목표로 하는 이더리움의 새로운 네트워킹 설계입니다.
+
+[노드 및 클라이언트](/developers/docs/nodes-and-clients/)에 대해 더 알아보기
+
+## 포털 네트워크가 필요한 이유 {#why-do-we-need-portal-network}
+
+이더리움 노드는 이더리움 블록체인의 전체 또는 부분 사본을 자체적으로 저장합니다. 이 로컬 사본은 트랜잭션을 검증하고 노드가 올바른 체인을 따르고 있는지 확인하는 데 사용됩니다. 로컬에 저장된 이 데이터를 통해 노드는 다른 개체를 신뢰할 필요 없이 들어오는 데이터가 유효하고 올바른지 독립적으로 검증할 수 있습니다.
+
+이러한 블록체인의 로컬 사본과 관련 상태 및 영수증 데이터는 노드의 하드 디스크에서 많은 공간을 차지합니다. 예를 들어, [Geth](https://geth.ethereum.org)를 합의 클라이언트와 페어링하여 노드를 실행하려면 2TB 하드 디스크가 권장됩니다. 비교적 최근의 블록 세트에서 체인 데이터만 저장하는 스냅 동기화를 사용하면 Geth는 일반적으로 약 650GB의 디스크 공간을 차지하지만 주당 약 14GB씩 증가합니다(주기적으로 노드를 650GB로 다시 정리할 수 있습니다).
+
+이는 많은 양의 디스크 공간이 이더리움에 할당되어야 하므로 노드를 실행하는 데 비용이 많이 들 수 있음을 의미합니다. 이더리움 로드맵에는 [히스토리 만료](/roadmap/statelessness/#history-expiry), [상태 만료](/roadmap/statelessness/#state-expiry), [무상태성](/roadmap/statelessness/) 등 이 문제에 대한 몇 가지 해결책이 있습니다. 하지만, 이러한 기능이 구현되려면 몇 년이 걸릴 것으로 보입니다. 체인 데이터의 자체 사본을 저장하지 않고 전체 노드에서 필요한 데이터를 요청하는 [라이트 노드](/developers/docs/nodes-and-clients/light-clients/)도 있습니다. 하지만 이는 라이트 노드가 정직한 데이터를 제공하는 전체 노드를 신뢰해야 하며, 라이트 노드가 필요로 하는 데이터를 제공해야 하는 전체 노드에 부담을 준다는 것을 의미합니다.
+
+포털 네트워크는 라이트 노드가 전체 노드에서 수행해야 하는 작업에 대한 신뢰나 상당한 추가 작업 없이 데이터를 얻을 수 있는 대안적인 방법을 제공하는 것을 목표로 합니다. 이를 위해 이더리움 노드가 네트워크 전체에서 데이터를 공유할 수 있는 새로운 방법을 도입할 것입니다.
+
+## 포털 네트워크는 어떻게 작동하나요? {#how-does-portal-network-work}
+
+이더리움 노드에는 서로 통신하는 방법을 정의하는 엄격한 프로토콜이 있습니다. 실행 클라이언트는 [DevP2P](/developers/docs/networking-layer/#devp2p)로 알려진 하위 프로토콜 세트를 사용하여 통신하는 반면, 합의 클라이언트는 [libP2P](/developers/docs/networking-layer/#libp2p)라는 다른 하위 프로토콜 스택을 사용합니다. 이는 노드 간에 전달될 수 있는 데이터 유형을 정의합니다.
+
+
+
+노드는 [JSON-RPC API](/developers/docs/apis/json-rpc/)를 통해 특정 데이터를 제공할 수도 있으며, 이를 통해 앱과 지갑이 이더리움 노드와 정보를 교환합니다. 하지만 이들 중 어느 것도 라이트 클라이언트에 데이터를 제공하기에 이상적인 프로토콜은 아닙니다.
+
+라이트 클라이언트는 현재 DevP2P 또는 libP2p를 통해 특정 체인 데이터를 요청할 수 없습니다. 왜냐하면 이러한 프로토콜은 체인 동기화와 블록 및 트랜잭션의 가십(gossiping)을 가능하게 하도록 설계되었기 때문입니다. 라이트 클라이언트는 이 정보를 다운로드하고 싶어하지 않습니다. 그렇게 하면 "라이트"라는 특성을 잃게 되기 때문입니다.
+
+JSON-RPC API 또한 라이트 클라이언트 데이터 요청에 이상적인 선택이 아닙니다. 왜냐하면 데이터를 제공할 수 있는 특정 전체 노드 또는 중앙화된 RPC 제공자와의 연결에 의존하기 때문입니다. 이는 라이트 클라이언트가 특정 노드/제공자가 정직하다고 신뢰해야 하며, 전체 노드는 많은 라이트 클라이언트로부터 수많은 요청을 처리해야 하므로 대역폭 요구 사항이 추가될 수 있음을 의미합니다.
+
+포털 네트워크의 핵심은 기존 이더리움 클라이언트의 설계 제약에서 벗어나, 가벼움을 위해 특별히 구축하여 전체 설계를 재고하는 것입니다.
+
+포털 네트워크의 핵심 아이디어는 기록 데이터 및 현재 체인 헤드의 ID와 같이 라이트 클라이언트가 필요로 하는 정보를 [DHT](https://en.wikipedia.org/wiki/Distributed_hash_table)(비트토렌트와 유사)를 사용하는 경량 DevP2P 스타일의 P2P(peer-to-peer) 탈중앙화 네트워크를 통해 제공함으로써 현재 네트워킹 스택의 가장 좋은 부분을 취하는 것입니다.
+
+아이디어는 전체 이더리움 기록 데이터의 작은 부분과 일부 특정 노드 책임을 각 노드에 추가하는 것입니다. 그런 다음, 요청된 특정 데이터를 저장하는 노드를 찾아내고 그들로부터 데이터를 검색하여 요청을 처리합니다.
+
+이는 라이트 노드가 단일 노드를 찾아 대용량 데이터를 필터링하고 제공하도록 요청하는 일반적인 모델을 뒤집습니다. 대신, 각각 소량의 데이터를 처리하는 대규모 노드 네트워크를 신속하게 필터링합니다.
+
+목표는 경량 포털 클라이언트의 탈중앙화 네트워크가 다음을 수행할 수 있도록 하는 것입니다.
+
+- 체인 헤드 추적
+- 최신 및 과거 체인 데이터 동기화
+- 상태 데이터 검색
+- 트랜잭션 브로드캐스트
+- [EVM](/developers/docs/evm/)을 사용하여 트랜잭션 실행
+
+이 네트워크 설계의 이점은 다음과 같습니다.
+
+- 중앙화된 제공자에 대한 의존도 감소
+- 인터넷 대역폭 사용량 감소
+- 최소화 또는 제로 동기화
+- 리소스가 제한된 장치에서 접근 가능(\<1GB RAM, \<100MB 디스크 공간, 1 CPU)
+
+아래 표는 포털 네트워크를 통해 제공될 수 있는 기존 클라이언트의 기능을 보여주며, 사용자는 매우 저사양 장치에서 이러한 기능에 접근할 수 있습니다.
+
+### 포털 네트워크
+
+| 비콘 라이트 클라이언트 | 상태 네트워크 | 트랜잭션 가십 | 히스토리 네트워크 |
+| ------------ | --------------- | ------- | --------- |
+| 비콘 체인 라이트 | 계정 및 컨트랙트 저장 공간 | 경량 멤풀 | 헤더 |
+| 프로토콜 데이터 | | | 블록 본문 |
+| | | | 영수증 |
+
+## 기본적인 클라이언트 다양성 {#client-diversity-as-default}
+
+포털 네트워크 개발자들은 또한 처음부터 4개의 개별 포털 네트워크 클라이언트를 구축하기로 설계 결정을 내렸습니다.
+
+포털 네트워크 클라이언트는 다음과 같습니다.
+
+- [Trin](https://github.com/ethereum/trin): Rust로 작성됨
+- [Fluffy](https://fluffy.guide): Nim으로 작성됨
+- [Ultralight](https://github.com/ethereumjs/ultralight): Typescript로 작성됨
+- [Shisui](https://github.com/zen-eth/shisui): Go로 작성됨
+
+여러 개의 독립적인 클라이언트 구현이 있으면 이더리움 네트워크의 복원력과 탈중앙화가 향상됩니다.
+
+한 클라이언트에 문제나 취약점이 발생하더라도 다른 클라이언트는 원활하게 계속 작동하여 단일 실패 지점을 방지할 수 있습니다. 또한, 다양한 클라이언트 구현은 혁신과 경쟁을 촉진하여 생태계 내 개선을 이끌고 단일 문화의 위험을 줄입니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [포털 네트워크 (Devcon 보고타에서 Piper Merriam 발표)](https://www.youtube.com/watch?v=0stc9jnQLXA).
+- [포털 네트워크 디스코드](https://discord.gg/CFFnmE7Hbs)
+- [포털 네트워크 웹사이트](https://www.ethportal.net/)
diff --git a/public/content/translations/ko/developers/docs/networks/index.md b/public/content/translations/ko/developers/docs/networks/index.md
new file mode 100644
index 00000000000..db2d6fdeb4f
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/networks/index.md
@@ -0,0 +1,216 @@
+---
+title: "네트워크"
+description: "이더리움 네트워크에 대한 설명서 및 테스트용 이더(ETH)를 획득하는 방법"
+lang: ko
+---
+
+이더리움 네트워크는 이더리움 프로토콜을 사용하여 통신하는 연결된 컴퓨터 그룹입니다. 이더리움 메인넷은 하나뿐이지만, 테스트 및 개발 목적으로 동일한 프로토콜 규칙을 따르는 독립적인 네트워크를 생성할 수 있습니다. 서로 상호 작용하지 않으면서 프로토콜을 준수하는 독립적인 "네트워크"가 많이 있습니다. 스마트 계약과 웹3 앱을 테스트하기 위해 자신의 컴퓨터에서 로컬로 네트워크를 시작할 수도 있습니다.
+
+이더리움 주소 (Ethereum account) 는 서로 다른 네트워크에서 똑같이 이용될 수 있습니다. 하지만 주소의 잔액 (balance) 및 거래 내역 (transaction history) 는 네트워크마다 다를 수 있습니다. 테스트 작업을 위해 어떤 네트워크가 필요한지, 그리고 테스트넷 이더리움을 획득하는 방법을 알면 유용합니다. 일반적으로 보안상의 이유로 테스트넷에서 메인넷 계정을 재사용하거나 그 반대의 경우는 권장하지 않습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+테스트넷은 저렴하고 안전한 버전의 이더리움을 제공하므로 여러 네트워크에 대해 알아보기 전에 [이더리움의 기본 사항](/developers/docs/intro-to-ethereum/)을 이해해야 합니다.
+
+## 공개 네트워크 {#public-networks}
+
+공용 네트워크에는 인터넷에 연결할 수 있는 모든 사람이 접근할 수 있습니다. 누구나 공용 블록체인 상의 트랜잭션을 읽거나 만들고 트랜잭션이 실행되도록 승인할 수 있습니다. 개인간의 합의를 통해 거래의 승인 및 네트워크의 상태가 결정된다.
+
+### 이더리움 메인넷 {#ethereum-mainnet}
+
+메인넷이란 실제 거래가 분산 장부에 기록되는 이더리움 블록체인이다.
+
+코인 거래소에서 보여주는 ETH 가격이 바로 메인넷 이더리움 가격이다.
+
+### 이더리움 테스트넷 {#ethereum-testnets}
+
+메인넷 외에도 공용 테스트넷이 있습니다. 테스트넷은 프로토콜 개발자 또는 스마트계약 개발자들이 메인넷에 배포하기 전 실제 환경과 비슷한 가상의 환경에서 프로토콜 업그레이드 또는 스마트계약 테스트를 위해 활용된다. 비유를 들자면, 프로덕션 서버와 스테이징 서버의 관계와 비슷하다.
+
+사실 메인넷에 배포하기 전 모든 스마트계약 코드는 테스트넷에서 테스트를 거쳐야 한다. 이미 배포된 스마트계약에 통합되는 댑 dapp 들은 대부분 테스트넷에 배포 단계를 거쳤다.
+
+대부분의 테스트넷은 허가된 proof-of-authority 합의 메커니즘을 사용하여 시작되었습니다. 즉, 소수의 노드가 거래 검증 및 새 블록 형성에 사용되며 이 때 각 과정에서 신분확인이 이뤄집니다. 또는 일부 테스트넷은 이더리움 메인넷처럼 모든 사람이 벨리데이터 실행을 테스트할 수 있는 개방형 PoS 합의 메커니즘을 특징으로 합니다.
+
+테스트넷의 ETH는 실제 가치가 없는 것으로 간주되지만, 희소해지거나 구하기 어려워진 특정 유형의 테스트넷 ETH에 대한 시장이 형성되기도 했습니다. 이더리움과 상호작용하려면(테스트넷에서도) ETH가 필요하기 때문에, 대부분의 사람들은 포싯에서 테스트넷 ETH를 무료로 받습니다. faucet은 ETH를 받을 주소를 입력할 수 있는 웹앱인 경우가 많다.
+
+#### 어떤 동기화 방법을 사용해야 할까요?
+
+현재 클라이언트 개발자들이 유지 관리하는 두 개의 공개 테스트넷은 Sepolia와 Hoodi입니다. Sepolia는 컨트랙트와 어플리케이션 개발자들이 그들의 어플리케이션을 테스트하기 위해서 필요한 네트워크입니다. Hoodi 네트워크를 통해 프로토콜 개발자는 네트워크 업그레이드를 테스트하고, 스테이커는 검증자 실행을 테스트할 수 있습니다.
+
+#### Sepolia {#sepolia}
+
+**Sepolia는 어플리케이션 개발을 위한 디폴트 테스트넷으로 많이 쓰인다**. Sepolia 네트워크는 클라이언트 및 테스트 팀이 제어하는 허가된 검증자 세트를 사용합니다.
+
+##### 참고 자료
+
+- [웹사이트](https://sepolia.dev/)
+- [GitHub](https://github.com/eth-clients/sepolia)
+- [Otterscan](https://sepolia.otterscan.io/)
+- [Etherscan](https://sepolia.etherscan.io)
+- [Blockscout](https://eth-sepolia.blockscout.com/)
+
+##### Faucets
+
+- [Alchemy Sepolia 포싯](https://www.alchemy.com/faucets/ethereum-sepolia)
+- [Chain Platform Sepolia 포싯](https://faucet.chainplatform.co/faucets/ethereum-sepolia/)
+- [Chainstack Sepolia 포싯](https://faucet.chainstack.com/sepolia-testnet-faucet)
+- [Ethereum Ecosystem 포싯](https://www.ethereum-ecosystem.com/faucets/ethereum-sepolia)
+- [ethfaucet.com Sepolia 포싯](https://ethfaucet.com/networks/ethereum)
+- [Google Cloud Web3 Sepolia 포싯](https://cloud.google.com/application/web3/faucet/ethereum/sepolia)
+- [Grabteeth](https://grabteeth.xyz/)
+- [Infura Sepolia 포싯](https://www.infura.io/faucet)
+- [PoW 포싯](https://sepolia-faucet.pk910.de/)
+- [QuickNode Sepolia 포싯](https://faucet.quicknode.com/ethereum/sepolia)
+
+#### Hoodi {#hoodi}
+
+Hoodi는 검증 및 스테이킹을 테스트하기 위한 테스트넷입니다. Hoodi 네트워크는 테스트넷 검증자를 실행하려는 사용자에게 열려 있습니다. 따라서 메인넷에 배포되기 전에 프로토콜 업그레이드를 테스트하려는 스테이커는 Hoodi를 사용해야 합니다.
+
+- 개방형 검증자 세트, staker가 네트워크 업그레이드를 테스트할 수 있음
+- 복잡한 스마트 계약 상호 작용을 테스트하는 데 유용한 대규모 state
+- 동기화 시간이 길어지고 노드를 실행하는 데 더 많은 스토리지 필요
+
+##### 참고 자료
+
+- [웹사이트](https://hoodi.ethpandaops.io/)
+- [GitHub](https://github.com/eth-clients/hoodi)
+- [익스플로러](https://explorer.hoodi.ethpandaops.io/)
+- [체크포인트 동기화](https://checkpoint-sync.hoodi.ethpandaops.io/)
+- [Otterscan](https://hoodi.otterscan.io/)
+- [Etherscan](https://hoodi.etherscan.io/)
+
+##### Faucets
+
+- [Chain Platform Hoodi 포싯](https://faucet.chainplatform.co/faucets/ethereum-hoodi/)
+- [Hoodi 포싯](https://hoodi.ethpandaops.io/)
+- [PoW 포싯](https://hoodi-faucet.pk910.de/)
+
+#### Ephemery {#ephemery}
+
+Ephemery는 매달 완전히 재설정되는 독특한 종류의 테스트넷입니다. 실행 및 합의 상태는 28일마다 제네시스로 되돌아가는데, 이는 테스트넷에서 발생하는 모든 것이 일시적이라는 것을 의미합니다. 따라서 영속성이 필요 없는 단기 테스트, 빠른 노드 부트스트랩 및 '헬로 월드' 유형의 애플리케이션에 이상적입니다.
+
+- 항상 최신 상태, 검증자 및 앱의 단기 테스트
+- 기본 계약 세트만 포함합니다.
+- 개방형 검증자 세트 및 대량의 자금에 대한 쉬운 접근성
+- 가장 작은 노드 요구 사항과 가장 빠른 동기화, 평균 5GB 미만
+
+##### 참고 자료
+
+- [웹사이트](https://ephemery.dev/)
+- [Github](https://github.com/ephemery-testnet/ephemery-resources)
+- [커뮤니티 채팅](https://matrix.to/#/#staker-testnet:matrix.org)
+- [Blockscout](https://explorer.ephemery.dev/)
+- [Otterscan](https://otter.bordel.wtf/)
+- [비콘 익스플로러](https://beaconlight.ephemery.dev/)
+- [체크포인트 동기화](https://checkpoint-sync.ephemery.ethpandaops.io)
+- [런치패드](https://launchpad.ephemery.dev/)
+
+#### Faucets
+
+- [Bordel 포싯](https://faucet.bordel.wtf/)
+- [Pk910 PoW 포싯](https://ephemery-faucet.pk910.de/)
+
+#### Holesky(지원 중단) {#holesky}
+
+Holesky 테스트넷은 2025년 9월부터 지원이 중단됩니다. 스테이킹 운영자와 인프라 제공업체는 대신 검증자 테스트에 Hoodi를 사용해야 합니다.
+
+- [Holesky 테스트넷 종료 발표](https://blog.ethereum.org/2025/09/01/holesky-shutdown-announcement) - _EF 블로그, 2025년 9월 1일_
+- [Holesky 및 Hoodi 테스트넷 업데이트](https://blog.ethereum.org/en/2025/03/18/hoodi-holesky) - _EF 블로그, 2025년 3월 18일_
+
+### 레이어 2 테스트넷 {#layer-2-testnets}
+
+[레이어 2(L2)](/layer-2/)는 특정 이더리움 확장 솔루션 세트를 설명하는 총칭입니다. 레이어 2는 이더리움 블록체인을 확장하는 또다른 블록체인이며 이더리움의 보안성을 그대로 이어 받는다. 레이어 2에 속한 테스트넷은 주로 이더리움 테스트넷과 큰 연관성을 보인다.
+
+#### Arbitrum Sepolia {#arbitrum-sepolia}
+
+[Arbitrum](https://arbitrum.io/)을 위한 테스트넷입니다.
+
+##### 참고 자료
+
+- [Etherscan](https://sepolia.arbiscan.io/)
+- [Blockscout](https://sepolia-explorer.arbitrum.io/)
+
+##### Faucets
+
+- [Alchemy Arbitrum Sepolia 포싯](https://www.alchemy.com/faucets/arbitrum-sepolia)
+- [Chainlink Arbitrum Sepolia 포싯](https://faucets.chain.link/arbitrum-sepolia)
+- [ethfaucet.com Arbitrum Sepolia 포싯](https://ethfaucet.com/networks/arbitrum)
+- [QuickNode Arbitrum Sepolia 포싯](https://faucet.quicknode.com/arbitrum/sepolia)
+
+#### Optimistic Sepolia {#optimistic-sepolia}
+
+[Optimism](https://www.optimism.io/)을 위한 테스트넷입니다.
+
+##### 참고 자료
+
+- [Etherscan](https://sepolia-optimistic.etherscan.io/)
+- [Blockscout](https://optimism-sepolia.blockscout.com/)
+
+##### Faucets
+
+- [Alchemy 포싯](https://www.alchemy.com/faucets/optimism-sepolia)
+- [Chainlink 포싯](https://faucets.chain.link/optimism-sepolia)
+- [ethfaucet.com Optimism Sepolia 포싯](https://ethfaucet.com/networks/optimism)
+- [테스트넷 포싯](https://docs.optimism.io/builders/tools/build/faucets)
+
+#### Starknet Sepolia {#starknet-sepolia}
+
+[Starknet](https://www.starknet.io)을 위한 테스트넷입니다.
+
+##### 참고 자료
+
+- [Starkscan](https://sepolia.starkscan.co/)
+
+##### Faucets
+
+- [Alchemy 포싯](https://www.alchemy.com/faucets/starknet-sepolia)
+- [Blast Starknet Sepolia 포싯](https://blastapi.io/faucets/starknet-sepolia-eth)
+- [Starknet 포싯](https://starknet-faucet.vercel.app/)
+
+## 프라이빗 네트워크 {#private-networks}
+
+이더리움 네트워크의 노드가 공개 네트워크(즉, 메인넷 또는 테스트넷)에 연결되지 않은 경우 해당 네트워크는 프라이빗 네트워크입니다. 여기서 개인 (private) 이란 독립적이란 뜻이며 (reserved, isolated) 안전 (protected, secure) 하다는 뜻은 아니다.
+
+### 개발 네트워크 {#development-networks}
+
+이더리움 애플리케이션을 개발하려면 이를 배포하기 전 개인 네트워크에 돌려보면서 확인하는 것을 선호할 수 있다. 웹 개발자들이 로컬 환경에서 서버를 생성하여 작업하는 방식처럼 블록체인도 로컬 환경에서 인스턴스를 생성하여 댑을 테스트 할 수 있다. 이는 공개 테스트넷보다 속도 면에서 더 빠르다는 장점이 있다.
+
+개발 네트워크에 유용한 프로젝트와 개발툴들이 있다. [개발 네트워크](/developers/docs/development-networks/)에 대해 자세히 알아보세요.
+
+### 컨소시엄 네트워크 {#consortium-networks}
+
+합의 프로세스는 사전에 설정되고 검증된 노드들에 의해 관리된다. 교육 기관들의 개인 네트워크가 각각 단일 노드를 운영하며 네트워크 내 서명자 기준으로 인해 블록이 검증되는 경우를 예로 들을 수 있다.
+
+공개 이더리움 네트워크가 인터넷과 비유할 수 있다면, 공동 네트워크는 인트라넷과 비슷하다고 볼 수 있다.
+
+## 왜 이더리움 테스트넷은 지하철역의 이름을 따서 명명되었을까요? {#why-naming}
+
+많은 이더리움 테스트넷은 실제 지하철이나 기차역의 이름을 따서 명명되었습니다. 이 명명 전통은 초기에 시작되었으며 기여자들이 거주하거나 일했던 전 세계 도시를 반영합니다. 상징적이고 기억하기 쉬우며 실용적입니다. 테스트넷이 이더리움 메인넷과 분리되어 있는 것처럼, 지하철 노선도 지상 교통과 별도로 운행됩니다.
+
+### 일반적으로 사용되는 레거시 테스트넷 {#common-and-legacy-testnets}
+
+- **Sepolia** - 그리스 아테네의 지하철과 연결된 지역입니다. 현재 스마트 계약 및 탈중앙화앱 테스트에 사용됩니다.
+- **Hoodi** - 인도 벵갈루루에 있는 Hoodi 지하철역의 이름을 딴 것입니다. 검증자 및 프로토콜 업그레이드 테스트에 사용됩니다.
+- **Goerli** _(지원 중단)_ - 독일 베를린의 Görlitzer Bahnhof의 이름을 딴 것입니다.
+- **Rinkeby** _(지원 중단)_ - 지하철역이 있는 스톡홀름 교외 지역의 이름을 딴 것입니다.
+- **Ropsten** _(지원 중단)_ - 스톡홀름의 한 지역이자 이전의 페리/지하철 터미널을 가리킵니다.
+- **Kovan** _(지원 중단)_ - 싱가포르 MRT 역의 이름을 딴 것입니다.
+- **Morden** _(지원 중단)_ - 런던 지하철역의 이름을 딴 것입니다. 이더리움 최초의 공개 테스트넷입니다.
+
+### 기타 특수 테스트넷 {#other-testnets}
+
+일부 테스트넷은 단기 또는 업그레이드별 테스트를 위해 만들어졌으며 반드시 지하철을 테마로 하지는 않습니다.
+
+- **Holesky** _(지원 중단)_ - 프라하의 Holešovice 역의 이름을 딴 것입니다. 검증자 테스트에 사용되었으며, 2025년에 지원이 중단되었습니다.
+- **Kiln**, **Zhejiang**, **Shandong**, **Prater**, **Pyrmont**, **Olympic** _(모두 지원 중단)_ 및 **Ephemery** - 머지, 상하이 또는 검증자 실험과 같은 업그레이드 시뮬레이션을 위해 특수 제작되었습니다. 일부 이름은 지하철 기반이 아닌 지역적이거나 주제별 이름입니다.
+
+지하철역 이름을 사용하면 개발자가 숫자 체인 ID에 의존할 필요 없이 테스트넷을 신속하게 식별하고 기억하는 데 도움이 됩니다. 또한 실용적이고, 세계적이며, 인간 중심적인 이더리움의 문화를 반영합니다.
+
+## 관련 도구 {#related-tools}
+
+- [Chainlist](https://chainlist.org/) _지갑과 공급자를 적절한 체인 ID 및 네트워크 ID에 연결하기 위한 EVM 네트워크 목록_
+- [EVM 기반 체인](https://github.com/ethereum-lists/chains) _Chainlist를 구동하는 체인 메타데이터의 GitHub 리포지토리_
+
+## 더 읽어보기 {#further-reading}
+
+- [제안: 예측 가능한 이더리움 테스트넷 수명 주기](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
+- [이더리움 테스트넷의 진화](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
diff --git a/public/content/translations/ko/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/ko/developers/docs/nodes-and-clients/archive-nodes/index.md
new file mode 100644
index 00000000000..ebb689c01b4
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/nodes-and-clients/archive-nodes/index.md
@@ -0,0 +1,81 @@
+---
+title: "이더리움 아카이브 노드"
+description: "아카이브 노드 개요"
+lang: ko
+sidebarDepth: 2
+---
+
+아카이브 노드는 모든 기록 상태의 아카이브를 구축하기 위해 구성된 이더리움 클라이언트의 인스턴스입니다. 특정한 목적에는 유용한 기능이지만 풀 노드보다 실행하기가 더 까다로울 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[이더리움 노드](/developers/docs/nodes-and-clients/), [아키텍처](/developers/docs/nodes-and-clients/node-architecture/), [동기화 전략](/developers/docs/nodes-and-clients/#sync-modes)의 개념과 노드를 [실행](/developers/docs/nodes-and-clients/run-a-node/)하고 [사용](/developers/docs/apis/json-rpc/)하는 방법을 이해해야 합니다.
+
+## 아카이브 노드란
+
+아카이브 노드의 중요성을 이해하기 위해 "상태"의 개념을 명확히 해야 합니다. 이더리움은 트랜잭션 기반 상태 머신이라고 할 수 있습니다. 이는 상태를 변경하는 트랜잭션을 실행하는 계정과 애플리케이션으로 구성됩니다. 각 계정과 계약에 대한 정보가 포함된 글로벌 데이터는 상태라는 트라이 데이터베이스에 저장됩니다. 이는 실행 레이어(EL) 클라이언트에서 처리하며 다음을 포함합니다:
+
+- 계정 잔액 및 논스
+- 컨트랙트 코드 및 저장소
+- 합의 관련 데이터(예: 스테이킹 예치 계약)
+
+네트워크와 상호작용하고 새로운 블록 검증 및 생성을 위해서는 크더리움 클라이언트는 가장 최근의 변화(체인 마지막) 와 현재의 상태를 유지해야 합니다. 전체 노드로 구성된 실행 레이어 클라이언트는 네트워크의 최신 상태를 확인하고 따르지만, 체인 재구성을 처리하고 최근 데이터에 빠르게 액세스할 수 있도록 마지막 128개 블록과 관련된 상태와 같이 지난 몇 개의 상태만 캐시합니다. 최근 상태는 모든 클라이언트가 수신 트랜잭션을 검증하고 네트워크를 사용하기 위해 필요한 정보입니다.
+
+상태는 특정 블록의 순간적인 네트워크 스냅샷으로, 아카이브는 히스토리로 추측할 수 있습니다.
+
+과거 상태는 네트워크 작동에 필요하지 않으며 클라이언트가 모든 오래된 데이터를 보관하는 것은 불필요하게 중복되므로 안전하게 제거될 수 있습니다. 최근 블록(예: 헤드 이전 128개 블록) 이전에 존재했던 상태는 사실상 폐기됩니다. 전체 노드는 과거 블록체인 데이터(블록 및 트랜잭션)와 요청 시 이전 상태를 재생성하는 데 사용할 수 있는 간헐적인 과거 스냅샷만 보관합니다. 이는 EVM에서 과거 트랜잭션을 재실행하여 수행되는데, 원하는 상태가 가장 가까운 스냅샷에서 멀리 떨어져 있을 경우 계산 집약적일 수 있습니다.
+
+그러나 이는 전체 노드에서 과거 상태에 액세스하는 것이 많은 계산을 소모한다는 것을 의미합니다. 클라이언트는 모든 과거 트랜잭션을 실행하고 제네시스로부터 하나의 과거 상태를 계산해야 할 수도 있습니다. 아카이브 노드는 가장 최근 상태뿐만 아니라 각 블록 이후에 생성된 모든 과거 상태를 저장하여 이 문제를 해결합니다. 기본적으로 더 큰 디스크 공간 요구 사항과 절충합니다.
+
+네트워크가 모든 과거 데이터를 보관하고 제공하기 위해 아카이브 노드에 의존하지 않는다는 점에 유의하는 것이 중요합니다. 위에서 언급했듯이, 모든 과거 중간 상태는 전체 노드에서 파생될 수 있습니다. 트랜잭션은 모든 전체 노드에 저장되며(현재 400G 미만) 전체 아카이브를 구축하기 위해 재생될 수 있습니다.
+
+### 사용 사례
+
+트랜잭션 전송, 계약 배포, 합의 확인 등과 같은 일반적인 이더리움 사용은 과거 상태에 대한 액세스를 필요로 하지 않습니다. 사용자는 네트워크와의 표준적인 상호작용을 위해 아카이브 노드를 필요로 하지 않습니다.
+
+상태 아카이브의 주요 이점은 과거 상태에 대한 쿼리에 빠르게 액세스할 수 있다는 것입니다. 예를 들어, 아카이브 노드는 다음과 같은 결과를 즉시 반환합니다.
+
+- _계정 0x1337...의 ETH 잔액은 얼마였습니까?_ 블록 15537393에서?_
+- _블록 1920000에서 계약 0x에 있는 토큰 0x의 잔액은 얼마입니까?_
+
+위에서 설명한 대로, 전체 노드는 CPU를 사용하고 시간이 걸리는 EVM 실행을 통해 이 데이터를 생성해야 합니다. 아카이브 노드는 디스크에서 액세스하여 응답을 즉시 제공합니다. 이것은 인프라의 특정 부분에 유용한 기능입니다. 예를 들면 다음과 같습니다.
+
+- 블록 탐색기와 같은 서비스 제공자
+- 연구원
+- 보안 분석가
+- 탈중앙화앱 개발자
+- 감사 및 규정 준수
+
+과거 데이터에 대한 액세스를 허용하는 다양한 무료 [서비스](/developers/docs/nodes-and-clients/nodes-as-a-service/)도 있습니다. 아카이브 노드를 실행하는 것이 더 까다롭기 때문에 이 액세스는 대부분 제한적이며 간헐적인 액세스에만 작동합니다. 프로젝트에 과거 데이터에 대한 지속적인 액세스가 필요한 경우 직접 하나를 실행하는 것을 고려해야 합니다.
+
+## 구현 및 사용법
+
+이 맥락에서 아카이브 노드는 상태 데이터베이스를 처리하고 JSON-RPC 엔드포인트를 제공하는 사용자 대면 실행 레이어 클라이언트가 제공하는 데이터를 의미합니다. 구성 옵션, 동기화 시간 및 데이터베이스 크기는 클라이언트에 따라 다를 수 있습니다. 자세한 내용은 클라이언트에서 제공하는 개발문서를 참조하십시오.
+
+자신만의 아카이브 노드를 시작하기 전에 클라이언트 간의 차이점과 특히 다양한 [하드웨어 요구 사항](/developers/docs/nodes-and-clients/run-a-node/#requirements)에 대해 알아보십시오. 대부분의 클라이언트는 이 기능에 최적화되어 있지 않으며 해당 아카이브에는 12TB 이상의 공간이 필요합니다. 대조적으로, Erigon과 같은 구현은 동일한 데이터를 3TB 미만으로 저장할 수 있으므로 아카이브 노드를 실행하는 가장 효과적인 방법입니다.
+
+## 권장 사례
+
+일반적인 [노드 실행 권장 사항](/developers/docs/nodes-and-clients/run-a-node/) 외에도 아카이브 노드는 하드웨어 및 유지 관리 측면에서 더 까다로울 수 있습니다. Erigon의 [주요 기능](https://github.com/ledgerwatch/erigon#key-features)을 고려할 때 가장 실용적인 접근 방식은 [Erigon](/developers/docs/nodes-and-clients/#erigon) 클라이언트 구현을 사용하는 것입니다.
+
+### 하드웨어
+
+항상 클라이언트의 개발문서에서 특정 모드에 대한 하드웨어 요구 사항을 확인하십시오.
+아카이브 노드의 가장 큰 요구 사항은 디스크 공간입니다. 클라이언트에 따라 3TB에서 12TB까지 다양합니다. HDD가 대용량 데이터에 더 나은 솔루션으로 간주될 수 있지만, 동기화하고 체인의 헤드를 지속적으로 업데이트하려면 SSD 드라이브가 필요합니다. [SATA](https://www.cleverfiles.com/help/sata-hard-drive.html) 드라이브로도 충분하지만, 최소한 [TLC](https://blog.synology.com/tlc-vs-qlc-ssds-what-are-the-differences) 이상의 신뢰할 수 있는 품질이어야 합니다. 디스크는 충분한 슬롯이 있는 데스크톱 컴퓨터나 서버에 장착할 수 있습니다. 이러한 전용 장치는 가동 시간이 긴 노드를 실행하는 데 이상적입니다. 노트북에서 실행하는 것도 전적으로 가능하지만 휴대성에는 추가 비용이 따릅니다.
+
+모든 데이터는 하나의 볼륨에 들어가야 하므로 디스크를 결합해야 합니다(예: [RAID0](https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0) 또는 LVM). 데이터가 하위 수준 오류 없이 디스크에 올바르게 기록되도록 보장하는 "기록 중 복사(Copy-on-write)"를 지원하므로 [ZFS](https://en.wikipedia.org/wiki/ZFS) 사용도 고려해 볼 가치가 있습니다.
+
+우발적인 데이터베이스 손상을 방지하고 안정성과 보안을 높이기 위해, 특히 전문적인 환경에서는 시스템이 지원하는 경우 [ECC 메모리](https://en.wikipedia.org/wiki/ECC_memory) 사용을 고려하십시오. RAM 크기는 일반적으로 전체 노드와 동일하게 권장되지만, RAM이 많을수록 동기화 속도를 높이는 데 도움이 될 수 있습니다.
+
+초기 동기화 중에 아카이브 모드의 클라이언트는 제네시스 이후의 모든 트랜잭션을 실행합니다. 실행 속도는 대부분 CPU에 의해 제한되므로 더 빠른 CPU는 초기 동기화 시간을 단축하는 데 도움이 될 수 있습니다. 평균적인 소비자용 컴퓨터에서 초기 동기화는 최대 한 달이 걸릴 수 있습니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 전체 노드 vs 아카이브 노드](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) - _QuickNode, 2022년 9월_
+- [나만의 이더리움 아카이브 노드 구축하기](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) - _Thomas Jay Rush, 2021년 8월_
+- [Erigon, Erigon RPC 및 TrueBlocks(스크레이프 및 API)를 서비스로 설정하는 방법](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _– Magnus Hansson, 2022년 9월 업데이트됨_
+
+## 관련 주제 {#related-topics}
+
+- [노드 및 클라이언트](/developers/docs/nodes-and-clients/)
+- [노드 실행하기](/developers/docs/nodes-and-clients/run-a-node/)
diff --git a/public/content/translations/ko/developers/docs/nodes-and-clients/bootnodes/index.md b/public/content/translations/ko/developers/docs/nodes-and-clients/bootnodes/index.md
new file mode 100644
index 00000000000..fd37491c7cd
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/nodes-and-clients/bootnodes/index.md
@@ -0,0 +1,31 @@
+---
+title: "이더리움 부트노드 소개"
+description: "부트노드를 이해하는 데 필요한 기본 정보"
+lang: ko
+---
+
+새 노드가 이더리움 네트워크에 참여할 때 새로운 피어를 찾기 위해 네트워크에 이미 있는 노드에 연결해야 합니다. 이더리움 네트워크로 들어가는 이러한 진입점을 부트노드라고 합니다. 클라이언트에는 일반적으로 부트노드 목록이 하드코딩되어 있습니다. 이러한 부트노드는 일반적으로 이더리움 재단의 데브옵스 팀이나 클라이언트 팀 자체에서 운영합니다. 부트노드는 정적 노드와 같지 않다는 점에 유의하세요. 정적 노드는 반복적으로 호출되는 반면, 부트노드는 연결할 피어가 충분하지 않아 노드가 새로운 연결을 부트스트랩해야 하는 경우에만 호출됩니다.
+
+## 부트노드에 연결하기 {#connect-to-a-bootnode}
+
+대부분의 클라이언트에는 부트노드 목록이 내장되어 있지만, 직접 부트노드를 실행하거나 클라이언트의 하드코딩된 목록에 포함되지 않은 부트노드를 사용하고 싶을 수도 있습니다. 이 경우, 클라이언트를 시작할 때 다음과 같이 지정할 수 있습니다(예시는 Geth용이며, 사용 중인 클라이언트의 개발문서를 확인하시기 바랍니다):
+
+```
+geth --bootnodes "enode://<노드 ID>@:<포트>"
+```
+
+## 부트노드 실행하기 {#run-a-bootnode}
+
+부트노드는 NAT([네트워크 주소 변환](https://www.geeksforgeeks.org/network-address-translation-nat/)) 뒤에 있지 않은 풀노드입니다. 모든 풀노드는 공개적으로 사용 가능한 한 부트노드 역할을 할 수 있습니다.
+
+노드를 시작하면 다른 사용자가 노드에 연결하는 데 사용할 수 있는 공개 식별자인 [enode](/developers/docs/networking-layer/network-addresses/#enode)가 기록되어야 합니다.
+
+enode는 일반적으로 재시작할 때마다 재생성되므로, 부트노드에 대한 영구 enode를 생성하는 방법은 클라이언트 개발문서를 참조하세요.
+
+좋은 부트노드가 되려면 연결할 수 있는 최대 피어 수를 늘리는 것이 좋습니다. 많은 피어와 함께 부트노드를 실행하면 대역폭 요구 사항이 크게 증가합니다.
+
+## 사용 가능한 부트노드 {#available-bootnodes}
+
+go-ethereum에 내장된 부트노드 목록은 [여기](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go#L23)에서 확인할 수 있습니다. 이 부트노드들은 이더리움 재단과 go-ethereum 팀에 의해 유지 관리됩니다.
+
+자원봉사자들이 유지 관리하는 다른 부트노드 목록도 있습니다. 항상 하나 이상의 공식 부트노드를 포함하도록 하세요. 그렇지 않으면 이클립스 공격을 받을 수 있습니다.
diff --git a/public/content/translations/ko/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/ko/developers/docs/nodes-and-clients/client-diversity/index.md
new file mode 100644
index 00000000000..886610ebb07
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -0,0 +1,132 @@
+---
+title: "클라이언트의 다양성"
+description: "이더리움 클라이언트 다양성의 중요성에 대한 고급 설명"
+lang: ko
+sidebarDepth: 2
+---
+
+이더리움 노드의 동작은 클라이언트 소프트웨어가 제어한다. 프로덕션 레벨의 이더리움 클라이언트는 다수 존재하는데 제각각 서로 다른 팀과 언어로 유지되고 있다. 클라이언트는 서로간의 원활한 통신을 보장하며 똑같은 기능과 UX를 가지는 공통 스펙이다. 하지만 노드 간 클라이언트 배포 시에는 해당 네트워크가 최대한으로 강해지게 할 만큼 충분하지는 않다. 이상적인 상황은 유저들이 서로다른 클라이언트들 사이로 엇비슷하게 나뉘어져서 네트워크에 클라이언트 다양성을 최대한으로 이끌어내는 것이다.
+
+## 필수 구성 요소 {#prerequisites}
+
+노드와 클라이언트가 무엇인지 아직 이해하지 못했다면 [노드와 클라이언트](/developers/docs/nodes-and-clients/)를 확인해 보세요. [실행](/glossary/#execution-layer) 레이어와 [합의](/glossary/#consensus-layer) 레이어는 용어집에 정의되어 있습니다.
+
+## 왜 클라이언트는 여러 개 있는가? {#why-multiple-clients}
+
+복수의 독립적으로 개발되고 유지되는 클라이언트는 클라이언트 다양성이 네트워크를 해킹과 버그에 더 내성이 강하기 때문에 존재한다. 복수의 클라이언트는 이더리움에 국한된 장점이다. - 다른 블록체인은 단일 클라이언트에 의존한다. 하지만 단순히 여러 클라이언트를 사용할 수 있는 것만으로는 충분하지 않으며, 커뮤니티에서 이를 채택하고 총 활성 노드가 여러 클라이언트에 걸쳐 비교적 고르게 분산되어야 합니다.
+
+## 클라이언트 다양성이 왜 중요한가요? {#client-diversity-importance}
+
+독립적으로 개발되고 유지되는 다수의 클라이언트는 탈중앙화 네트워크의 상태를 좌지우지 한다. 왜 그런지 알아본다.
+
+### 버그 {#bugs}
+
+이더리움 노드의 작은 부분만을 차지하는 개별 클라이언트 내 버그는 전체 네트워크에 미치는 영향이 보다 덜 위협적이다. 다수의 클라이언트에 균등하게 분배된 노드라면 대부분의 클라이언트들이 공통 이슈를 겪게 될 확률이 적다. 따라서 보다 더 안정적인 네트워크가 된다.
+
+### 공격에 대한 복원력 {#resilience}
+
+클라이언트 다양성은 해킹 방어에도 도움이 된다. 예를 들어, [특정 클라이언트를 속여](https://twitter.com/vdWijden/status/1437712249926393858) 특정 체인 분기로 유도하는 공격은 성공할 가능성이 낮습니다. 다른 클라이언트는 동일한 방식으로 악용될 가능성이 낮고 정식 체인은 손상되지 않은 상태로 유지되기 때문입니다. 클라이언드 다양성이 크지 않으면 몇몇 클라이언트가 해킹되면 다른 클라이언트들도 취약해진다. 클라이언트 다양성은 네트워크에 대한 악의적인 공격에 대한 중요한 방어 수단임이 이미 입증되었습니다. 예를 들어, 2016년 상하이 서비스 거부 공격은 공격자가 지배적인 클라이언트(Geth)를 속여 블록당 수만 번의 느린 디스크 I/O 작업을 실행하도록 할 수 있었기 때문에 가능했습니다. 반면 이더리움은 클라이언트들이 해당 해킹에 취약점을 보이지 않았기 때문에 피해를 받지 않았으며 Geth 취약점이 보완될 때까지 문제없이 작동하였다.
+
+### 지분증명 완결성 {#finality}
+
+이더리움 노드의 33% 이상을 차지하는 합의 클라이언트의 버그는 합의 레이어의 완결을 막을 수 있습니다. 이는 사용자가 어느 시점에서 트랜잭션이 되돌려지거나 변경되지 않을 것이라고 신뢰할 수 없음을 의미합니다. 이것은 이더리움 위에 구축된 많은 앱, 특히 DeFi에 매우 문제가 될 것이다.
+
+ 설상가상으로, 3분의 2의 다수를 차지하는 클라이언트의 심각한 버그는 체인이 잘못 분할되고 완결되는 원인이 될 수 있으며, 이는 많은 검증자들이 유효하지 않은 체인에 갇히게 되는 결과로 이어질 수 있습니다. 만약 그들이 올바른 체인에 다시 가입하기를 원한다면, 이러한 검증자들은 쫒겨나거나 느리고 비용이 많이 드는 자발적인 탈퇴와 재활성화에 직면하게 된다. 슬래싱의 크기는 최대로 대폭 삭감(32 ETH)된 2/3 다수의 과실이 있는 노드의 수에 따라 확장된다.
+
+비록 발생 확률이 적은 시나리오이지만, 이더리움 에코 시스템은 활성 노드들 간 클라이언트 분산을 더 반반하게 함으로서 위험성을 줄일 수 있다. 이상적으로는 컨센서스 클라이언트가 전체 노드의 33% 이상의 지분을 갖지 않는 것이 좋다.
+
+### 공동 책임 {#responsibility}
+
+다수의 클라이언트를 소유하는 것은 인건비가 들지 않기도 하다. 그러나 소규모 개발팀에는 과중된 업무와 책임이 될 수 있다. 클라이언트 다양성이 작을수록 개발자들은 다수 클라이언트를 유지하기 위한 책임이 더 커진다는 의미이다. 이러한 책임을 여러 팀들에 분담하는 것이 이더리움 네트워크 노드와 이용자들에게 더 좋은 일이다.
+
+## 현재 클라이언트 다양성 {#current-client-diversity}
+
+### 실행 클라이언트 {#execution-clients-breakdown}
+
+
+
+### 합의 클라이언트 {#consensus-clients-breakdown}
+
+
+
+이 다이어그램은 오래된 정보일 수 있습니다. 최신 정보는 [ethernodes.org](https://ethernodes.org) 및 [clientdiversity.org](https://clientdiversity.org)를 참조하세요.
+
+위의 두 파이 차트는 실행 및 합의 레이어에 대한 현재 클라이언트 다양성의 스냅샷을 보여줍니다(2025년 10월 작성 시점 기준). 수년에 걸쳐 클라이언트 다양성이 개선되었으며, 실행 레이어에서는 [Geth](https://geth.ethereum.org/)의 지배력이 감소했습니다. [Nethermind](https://www.nethermind.io/nethermind-client)가 근소한 차이로 2위를, [Besu](https://besu.hyperledger.org/)가 3위, [Erigon](https://github.com/ledgerwatch/erigon)이 4위를 차지했으며, 다른 클라이언트들은 네트워크의 3% 미만을 구성합니다. 합의 레이어에서 가장 일반적으로 사용되는 클라이언트인 [Lighthouse](https://lighthouse.sigmaprime.io/)는 두 번째로 많이 사용되는 클라이언트와 점유율이 비슷합니다. [Prysm](https://prysmaticlabs.com/#projects)과 [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/)가 각각 약 31%와 14%를 차지하며, 다른 클라이언트는 거의 사용되지 않습니다.
+
+실행 레이어 데이터는 2025년 10월 26일 [supermajority.info](https://supermajority.info/)에서 가져왔습니다. 합의 클라이언트 데이터는 [Michael Sproul](https://github.com/sigp/blockprint)에게서 얻었습니다. 합의 클라이언트 데이터는 합의 레이어 클라이언트가 항상 식별에 사용할 수 있는 명확한 흔적을 가지고 있는 것은 아니기 때문에 얻기가 더 어렵습니다. 데이터는 분류 알고리즘을 사용하여 생성되었으며, 이 알고리즘은 때때로 일부 소수 클라이언트를 혼동하기도 합니다(자세한 내용은 [여기](https://twitter.com/sproulM_/status/1440512518242197516) 참조). 위 다이어그램에서 이러한 모호한 분류는 '또는' 형식의 레이블(예: Nimbus/Teku)로 처리됩니다. 그럼에도 불구하고, 대다수의 네트워크가 Prysm을 운영하고 있는 것은 분명하다. 스냅샷에 불과하지만 다이어그램의 값은 클라이언트 다양성의 현재 상태에 대한 일반적인 느낌을 제공합니다.
+
+합의 레이어에 대한 최신 클라이언트 다양성 데이터는 이제 [clientdiversity.org](https://clientdiversity.org/)에서 확인할 수 있습니다.
+
+## 실행 레이어 {#execution-layer}
+
+지금까지, 클라이언트 다양성에 대한 대화는 주로 합의 계층에 초점을 맞추었다. 그러나 실행 클라이언트인 [Geth](https://geth.ethereum.org)는 현재 모든 노드의 약 85%를 차지합니다. 이 비율은 컨센서스 클라이언트과 같은 이유로 문제가 있습니다. 예를 들어, Geth의 버그가 트랜잭션 처리에 영향을 미치거나 실행 페이로드를 구성하면 합의된 클라이언트가 문제가 있거나 버그가 있는 트랜잭션을 finalizing할 수 있습니다. 따라서 이더리움은 네트워크의 33% 이상을 대표하는 클라이언트가 없는 것이 이상적이며 실행 클라이언트가 더 고르게 분포되어 있어 더 건강할 것이다.
+
+## 소수 클라이언트 사용하기 {#use-minority-client}
+
+클라이언트 다양성 문제를 해결하려면 개인 사용자가 소수 클라이언트를 선택하는 것 이상이 필요합니다. 주요 탈중앙화앱 및 거래소와 같은 검증자 풀 및 기관도 클라이언트를 전환해야 합니다. 그러나 모든 사용자는 현재의 불균형을 시정하고 사용 가능한 모든 이더리움 소프트웨어의 사용을 정상화하는 데 자신의 역할을 할 수 있다. The Merge 이후 모든 노드 운영자는 실행 클라이언트와 합의 클라이언트를 실행해야 합니다. 아래에서 제안된 클라이언트 조합을 선택하면 클라이언트의 다양성을 높이는 데 도움이 됩니다.
+
+### 실행 클라이언트 {#execution-clients}
+
+- [Besu](https://www.hyperledger.org/use/besu)
+- [Nethermind](https://downloads.nethermind.io/)
+- [Erigon](https://github.com/ledgerwatch/erigon)
+- [Go-Ethereum](https://geth.ethereum.org/)
+- [Reth](https://reth.rs/)
+
+### 합의 클라이언트 {#consensus-clients}
+
+- [Nimbus](https://nimbus.team/)
+- [Lighthouse](https://github.com/sigp/lighthouse)
+- [Teku](https://consensys.io/teku)
+- [Lodestar](https://github.com/ChainSafe/lodestar)
+- [Prysm](https://prysm.offchainlabs.com/docs/)
+- [Grandine](https://docs.grandine.io/)
+
+기술 사용자는 소수 클라이언트를 위한 더 많은 튜토리얼과 문서를 작성하고 노드 운영 피어가 지배적인 클라이언트로부터 벗어나도록 권장함으로써 이 프로세스를 가속화할 수 있습니다. 소수 합의 클라이언트로 전환하기 위한 가이드는 [clientdiversity.org](https://clientdiversity.org/)에서 확인할 수 있습니다.
+
+## 클라이언트 다양성 대시보드 {#client-diversity-dashboards}
+
+여러 대시보드는 실행 및 합의 계층에 대한 실시간 클라이언트 다양성 통계를 제공합니다.
+
+**합의 계층:**
+
+- [Rated.network](https://www.rated.network/)
+- [clientdiversity.org](https://clientdiversity.org/)
+
+**실행 계층:**
+
+- [supermajority.info](https://supermajority.info//)
+- [Ethernodes](https://ethernodes.org/)
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 합의 레이어의 클라이언트 다양성](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA)
+- [이더리움 병합: 다수 클라이언트 실행의 위험성!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest, 2022년 3월 24일_
+- [클라이언트 다양성의 중요성](https://our.status.im/the-importance-of-client-diversity/)
+- [이더리움 노드 서비스 목록](https://ethereumnodes.com/)
+- ["Five Whys"의 클라이언트 다양성 문제](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08)
+- [이더리움 다양성 및 해결 방법 (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU)
+- [clientdiversity.org](https://clientdiversity.org/)
+
+## 관련 주제 {#related-topics}
+
+- [이더리움 노드 운영하기](/run-a-node/)
+- [노드 및 클라이언트](/developers/docs/nodes-and-clients/)
diff --git a/public/content/translations/ko/developers/docs/nodes-and-clients/index.md b/public/content/translations/ko/developers/docs/nodes-and-clients/index.md
new file mode 100644
index 00000000000..ff25e490af5
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/nodes-and-clients/index.md
@@ -0,0 +1,319 @@
+---
+title: Nodes and clients
+description: "이더리움 노드와 클라이언트 소프트웨어에 대한 개요. 노드를 설정하는 방법과 이용해야하는 이유에 대한 추가적인 설명"
+lang: ko
+sidebarDepth: 2
+---
+
+이더리움은 블럭 및 트랜잭션 데이터 검증 소프트웨어를 실행하는 컴퓨터 (노드) 들의 분산 네트워크입니다. 이 소프트웨어는 컴퓨터에서 실행되어 이더리움 노드로 변환되어야 함 노드를 구성하려면 두 개의 별도 소프트웨어(‘클라이언트’로 알려짐)가 필요함
+
+## 필수 구성 요소 {#prerequisites}
+
+자신만의 이더리움 클라이언트를 실행하고 더 깊이 알아보기 전에, P2P(peer-to-peer) 네트워크 개념과 [EVM 기본 사항](/developers/docs/evm/)을 이해해야 합니다. [이더리움 소개](/developers/docs/intro-to-ethereum/)를 살펴보세요.
+
+노드라는 주제가 처음이시라면, 사용자 친화적인 소개 문서인 [이더리움 노드 실행하기](/run-a-node)를 먼저 확인해 보시는 것을 추천합니다.
+
+## 노드랑 클라이언트가 무엇인가요? {#what-are-nodes-and-clients}
+
+"노드"는 이더리움 클라이언트 소프트웨어를 실행하여 네트워크를 형성하는 다른 컴퓨터와 연결된 이더리움 클라이언트 소프트웨어의 인스턴스를 의미함 클라이언트는 이더리움 데이터를 프로토콜 규칙에 따라 검증하고 네트워크의 보안을 유지하는 역할을 함 노드는 두 개의 클라이언트를 실행해야 함: 합의 클라이언트와 실행 클라이언트
+
+- 실행 클라이언트(실행 엔진, EL 클라이언트 또는 이전의 Eth1 클라이언트라고도 함)는 네트워크에서 브로드캐스트되는 새로운 트랜잭션을 청취하고 EVM에서 이를 실행하며 최신 상태 및 모든 현재 이더리움 데이터베이스를 보유함
+- 합의 클라이언트(비콘 노드, CL 클라이언트 또는 이전의 Eth2 클라이언트로도 알려짐)는 실행 클라이언트에서 검증된 데이터를 기반으로 네트워크가 합의에 도달할 수 있도록 하는 지분 증명 합의 알고리즘을 구현함 또한 합의 클라이언트에 추가할 수 있는 '검증자'라는 세 번째 소프트웨어가 있으며, 이를 통해 노드가 네트워크 보안에 참여할 수 있음
+
+이러한 클라이언트는 함께 작동하여 이더리움 체인의 헤드를 추적하고 사용자가 이더리움 네트워크와 상호작용할 수 있도록 함 여러 소프트웨어가 함께 작동하는 모듈식 설계를 [캡슐화된 복잡성](https://vitalik.eth.limo/general/2022/02/28/complexity.html)이라고 합니다. 이 접근 방식 덕분에 [병합](/roadmap/merge)을 원활하게 실행할 수 있었으며, 클라이언트 소프트웨어의 유지보수 및 개발이 용이해졌고, 예를 들어 [레이어 2 생태계](/layer-2/)에서 개별 클라이언트를 재사용할 수 있게 되었습니다.
+
+
+결합된 실행 및 합의 클라이언트의 단순화된 다이어그램입니다.
+
+### 클라이언트 다양성 {#client-diversity}
+
+[실행 클라이언트](/developers/docs/nodes-and-clients/#execution-clients)와 [합의 클라이언트](/developers/docs/nodes-and-clients/#consensus-clients)는 모두 여러 팀에서 개발한 다양한 프로그래밍 언어로 존재합니다.
+
+다양한 클라이언트 구현은 단일 코드베이스에 대한 의존성을 줄여 네트워크를 더욱 강하게 만듭니다. 이상적인 목표는 어느 클라이언트도 네트워크를 지배하지 않으면서 다양성을 달성하여 잠재적인 단일 장애점을 제거하는 것입니다.
+다양한 언어는 더 넓은 개발자 커뮤니티를 초대하고, 개발자가 선호하는 언어로 통합을 만들 수 있게 합니다.
+
+[클라이언트 다양성](/developers/docs/nodes-and-clients/client-diversity/)에 대해 자세히 알아보세요.
+
+이러한 구현들이 공통으로 가지고 있는 점은 모두 단일 사양을 따른다는 것입니다. 사양은 이더리움 네트워크와 블록체인이 작동하는 방식을 규정합니다. 모든 기술적 세부 사항이 정의되어 있으며, 사양은 다음에서 찾을 수 있습니다:
+
+- 원래는 [이더리움 옐로 페이퍼](https://ethereum.github.io/yellowpaper/paper.pdf)
+- [실행 사양](https://github.com/ethereum/execution-specs/)
+- [합의 사양](https://github.com/ethereum/consensus-specs)
+- 다양한 [네트워크 업그레이드](/ethereum-forks/)에서 구현된 [EIP](https://eips.ethereum.org/)
+
+### 네트워크의 노드 추적 {#network-overview}
+
+여러 추적기는 이더리움 네트워크의 노드를 실시간으로 개요를 제공합니다. 탈중앙화 네트워크의 특성상 이러한 크롤러는 네트워크의 제한된 뷰만 제공할 수 있으며, 서로 다른 결과를 보고할 수 있음을 유의하십시오.
+
+- Etherscan의 [노드 맵](https://etherscan.io/nodetracker)
+- Bitfly의 [Ethernodes](https://ethernodes.org/)
+- Chainsafe의 [Nodewatch](https://www.nodewatch.io/), 합의 노드 크롤링
+- [Monitoreth](https://monitoreth.io/) - MigaLabs 제공, 분산 네트워크 모니터링 도구
+- [주간 네트워크 상태 보고서](https://probelab.io) - ProbeLab 제공, [Nebula 크롤러](https://github.com/dennis-tra/nebula) 및 기타 도구 사용
+
+## 노드 유형 {#node-types}
+
+자신만의 [노드를 실행](/developers/docs/nodes-and-clients/run-a-node/)하려면, 데이터를 다르게 소비하는 다양한 유형의 노드가 있다는 것을 이해해야 합니다. 실제로 클라이언트는 세 가지 유형의 노드를 실행할 수 있습니다: 라이트, 풀, 아카이브. 또한 더 빠른 동기화를 가능하게 하는 다양한 동기화 전략이 있습니다. 동기화는 이더리움 상태에 대한 최신 정보를 얼마나 빨리 얻을 수 있는지와 관련이 있습니다.
+
+### 전체 노드 {#full-node}
+
+풀 노드는 블록체인의 블록별 검증을 수행하며, 각 블록의 블록 본문과 상태 데이터를 다운로드하고 검증합니다. 다양한 클래스의 풀 노드가 있으며, 일부는 최초 블록부터 시작하여 블록체인의 전체 기록을 검증합니다. 다른 노드들은 유효하다고 신뢰하는 더 최신 블록에서 검증을 시작합니다(예: Geth의 '스냅 동기화'). 검증이 어디에서 시작되든 풀 노드는 비교적 최근의 데이터(일반적으로 최신 128개 블록)를 로컬에 저장하며, 오래된 데이터는 디스크 공간을 절약하기 위해 삭제됩니다. 필요할 때 오래된 데이터는 다시 생성될 수 있습니다.
+
+- 풀 블록체인 데이터를 저장합니다(하지만 주기적으로 가지치기되므로 풀 노드는 모든 상태 데이터를 저장하지 않습니다).
+- 블록 검증에 참여하며 모든 블록과 상태를 검증합니다.
+- 모든 상태는 로컬 저장소에서 검색하거나 '스냅샷'에서 다시 생성할 수 있습니다.
+- 네트워크에 데이터를 요청하면 제공합니다.
+
+### 아카이브 노드 {#archive-node}
+
+아카이브 노드는 모든 블록을 검증하고 다운로드한 데이터를 절대 삭제하지 않는 풀 노드입니다.
+
+- 풀 노드에 저장된 모든 것을 보관하고 역사적 상태의 아카이브를 작성합니다. 블록 #4,000,000에서 계정 잔액과 같은 것을 조회하거나, 추적을 사용하여 트랜잭션 세트를 검증하지 않고 간단하고 안정적으로 테스트하려는 경우에 필요합니다.
+- 이 데이터는 테라바이트 단위로 나타나기 때문에 일반 사용자에게는 덜 매력적일 수 있지만, 블록 탐색기, 지갑 공급업체, 체인 분석 서비스와 같은 서비스에 유용할 수 있습니다.
+
+아카이브가 아닌 모드로 클라이언트를 동기화하면 가지치기된 블록체인 데이터가 발생합니다. 이는 모든 역사적 상태의 아카이브가 없다는 것을 의미하지만, 풀 노드는 필요할 때 이러한 상태를 구축할 수 있습니다.
+
+[아카이브 노드](/developers/docs/nodes-and-clients/archive-nodes)에 대해 자세히 알아보세요.
+
+### 라이트 노드 {#light-node}
+
+라이트 노드는 모든 블록을 다운로드하는 대신 블록 헤더만 다운로드합니다. 이 헤더는 블록 내용에 대한 요약 정보를 포함하고 있습니다. 라이트 노드가 필요한 다른 정보는 풀 노드에서 요청됩니다. 라이트 노드는 받은 데이터를 블록 헤더의 상태 루트와 대조하여 독립적으로 검증할 수 있습니다. 라이트 노드는 강력한 하드웨어나 높은 대역폭 없이도 이더리움 네트워크에 참여할 수 있게 합니다. 결국, 라이트 노드는 모바일 전화기나 임베디드 장치에서 실행될 수 있습니다. 라이트 노드는 합의에 참여하지 않지만(즉, 검증자가 될 수 없음), 전체 노드와 동일한 기능 및 보안 보장으로 이더리움 블록체인에 액세스할 수 있습니다.
+
+라이트 클라이언트는 이더리움의 활성 개발 분야이며, 조만간 합의 계층 및 실행 계층용 새로운 라이트 클라이언트를 볼 수 있을 것으로 기대됩니다.
+[가십 네트워크](https://www.ethportal.net/)를 통해 라이트 클라이언트 데이터를 제공하는 잠재적 경로도 있습니다. 가십 네트워크가 전체 노드가 요청을 처리할 필요 없이 라이트 노드 네트워크를 지원할 수 있기 때문에 이점이 있습니다.
+
+이더리움은 아직 많은 수의 라이트 노드를 지원하지 않지만, 라이트 노드 지원은 가까운 미래에 빠르게 발전할 것으로 예상됩니다. 특히 [Nimbus](https://nimbus.team/), [Helios](https://github.com/a16z/helios), [LodeStar](https://lodestar.chainsafe.io/)와 같은 클라이언트는 현재 라이트 노드에 크게 집중하고 있습니다.
+
+## 왜 이더리움 노드를 실행해야 합니까? {#why-should-i-run-an-ethereum-node}
+
+노드를 실행하면 네트워크를 더 강력하고 분산화된 상태로 유지하는 데 도움을 주면서 이더리움을 직접, 신뢰 없이, 비공개로 사용할 수 있습니다.
+
+### 사용자에게 주는 이점 {#benefits-to-you}
+
+자신의 노드를 실행하면 이더리움을 비공개, 자급자족 방식으로 신뢰 없이 사용할 수 있습니다. 네트워크를 신뢰할 필요가 없으며, 자신의 클라이언트를 사용해 데이터를 직접 검증할 수 있습니다. "신뢰하지 말고, 검증하라"는 블록체인에서 인기 있는 모토입니다.
+
+- 귀하의 노드는 모든 거래와 블록을 합의 규칙에 따라 스스로 검증합니다. 즉, 네트워크 내 다른 노드를 신뢰할 필요가 없으며, 완전히 의존하지 않아도 됩니다.
+- 자신의 노드와 함께 이더리움 지갑을 사용할 수 있습니다. 중개인에게 주소와 잔액을 유출하지 않고 더 안전하고 비공개로 dapp을 사용할 수 있습니다. 모든 것은 자신의 클라이언트로 확인할 수 있습니다. [MetaMask](https://metamask.io), [Frame](https://frame.sh/) 및 [기타 여러 지갑](/wallets/find-wallet/)은 사용자의 노드를 사용할 수 있도록 RPC 가져오기 기능을 제공합니다.
+- 이더리움의 데이터를 필요로 하는 서비스(예: 비콘 체인 검증자, 레이어 2 소프트웨어, 블록 탐색기, 결제 처리기 등)를 실행하고 자체 호스팅할 수 있습니다. 이더리움의 데이터를 필요로 하는 서비스(예: 비콘 체인 검증자, 레이어 2 소프트웨어, 블록 탐색기, 결제 처리기 등)를 실행하고 자체 호스팅할 수 있습니다.
+- 자신만의 맞춤형 [RPC 엔드포인트](/developers/docs/apis/json-rpc/)를 제공할 수 있습니다. 커뮤니티에 이러한 엔드포인트를 공개하여 대형 중앙 집중식 제공업체를 피하는 데 도움을 줄 수 있습니다.
+- 프로세스 간 통신(IPC)을 사용하여 노드에 연결하거나 노드를 다시 작성하여 프로그램을 플러그인으로 로드할 수 있습니다. 이는 낮은 지연 시간을 보장하며, 예를 들어 web3 라이브러리를 사용하여 많은 양의 데이터를 처리하거나 가능한 한 빨리 트랜잭션을 교체해야 할 때(즉, 프론트러닝) 많은 도움이 됩니다.
+- ETH를 직접 스테이킹하여 네트워크를 보호하고 보상을 받을 수 있습니다. 시작하려면 [단독 스테이킹](/staking/solo/)을 참조하세요.
+
+
+
+### 네트워크 이점 {#network-benefits}
+
+다양한 노드 세트는 이더리움의 건강, 보안 및 운영 복원력에 중요합니다.
+
+- 전체 노드는 합의 규칙을 시행하므로 규칙을 따르지 않는 블록을 받아들이지 않습니다. 이것은 네트워크의 추가 보안을 제공하는데, 만약 모든 노드가 전체 검증을 하지 않는 라이트 노드였다면 검증자들이 네트워크를 공격할 수 있었을 것입니다.
+- [지분 증명](/developers/docs/consensus-mechanisms/pos/#what-is-pos)의 암호경제학적 방어를 극복하는 공격이 발생할 경우, 전체 노드가 정직한 체인을 따르기로 선택하여 사회적 복구를 수행할 수 있습니다.
+- 네트워크의 노드가 많을수록 네트워크가 더 다양하고 강력해지며, 이는 검열에 저항하고 신뢰할 수 있는 시스템을 가능하게 하는 궁극적인 목표인 탈중앙화로 이어집니다.
+- 전체 노드는 이더리움에 의존하는 경량 클라이언트에게 블록체인 데이터를 제공합니다. 라이트 노드는 전체 블록체인을 저장하지 않고, 대신 [블록 헤더의 상태 루트](/developers/docs/blocks/#block-anatomy)를 통해 데이터를 검증합니다. 필요한 경우 전체 노드에서 추가 정보를 요청할 수 있습니다.
+
+전체 노드를 실행하면, 검증자를 실행하지 않더라도 이더리움 네트워크 전체가 혜택을 받습니다.
+
+## 자신의 노드 실행 {#running-your-own-node}
+
+자신만의 이더리움 클라이언트를 실행해 보고 싶나요?
+
+초보자를 위한 소개는 [노드 실행하기](/run-a-node) 페이지에서 자세히 알아보세요.
+
+기술적인 사용자라면, [자신만의 노드를 가동하는 방법](/developers/docs/nodes-and-clients/run-a-node/)에 대한 자세한 내용과 옵션을 살펴보세요.
+
+## 대안 {#alternatives}
+
+자신만의 노드를 설정하는 데 시간과 자원이 소요될 수 있지만, 항상 자신의 인스턴스를 실행할 필요는 없습니다. 이 경우 제3자 API 제공업체를 사용할 수 있습니다. 이러한 서비스 사용에 대한 개요는 [서비스형 노드](/developers/docs/nodes-and-clients/nodes-as-a-service/)를 확인하세요.
+
+커뮤니티 내에서 공용 API를 사용하는 이더리움 노드를 실행하는 사람이 있다면, 커스텀 RPC를 통해 지갑을 커뮤니티 노드에 연결하고 무작위로 신뢰된 제3자보다 더 많은 개인 정보를 확보할 수 있습니다.
+
+반면에 클라이언트를 실행하면 필요할 때 친구들과 공유할 수 있습니다.
+
+## 실행 클라이언트 {#execution-clients}
+
+이더리움 커뮤니티는 여러 오픈 소스 실행 클라이언트(이전에는 'Eth1 클라이언트' 또는 '이더리움 클라이언트'로 알려짐)를 유지 관리하며, 다양한 프로그래밍 언어를 사용해 다양한 팀이 개발합니다. 이를 통해 네트워크는 더욱 강력해지고 [다양해집니다](/developers/docs/nodes-and-clients/client-diversity/). 궁극적인 목표는 어떤 클라이언트도 지배하지 않도록 다양성을 달성하여 단일 장애 지점을 줄이는 것입니다.
+
+이 표는 다양한 클라이언트를 요약합니다. 모든 클라이언트는 [클라이언트 테스트](https://github.com/ethereum/tests)를 통과하며 네트워크 업그레이드에 맞춰 최신 상태를 유지하기 위해 활발하게 유지 관리됩니다.
+
+| 클라이언트 | 언어 | 운영 체제 | 네트워크 | 동기화 전략 | 상태 가지치기 |
+| ----------------------------------------------------------------------------------------- | ------------------------ | --------------------- | --------------------- | ----------------------------------------------------------------------- | ---------- |
+| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | 메인넷, Sepolia, Holesky | [Snap](#snap-sync), [Full](#full-sync) | 아카이브, 가지치기 |
+| [Nethermind](https://www.nethermind.io/) | C#, .NET | Linux, Windows, macOS | 메인넷, Sepolia, Holesky | [Snap](#snap-sync)(제공 안 함), Fast, [Full](#full-sync) | 아카이브, 가지치기 |
+| [Besu](https://besu.hyperledger.org/en/stable/) | 자바 | Linux, Windows, macOS | 메인넷, Sepolia, Holesky | [Snap](#snap-sync), [Fast](#fast-sync), [Full](#full-sync) | 아카이브, 가지치기 |
+| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | 메인넷, Sepolia, Holesky | [Full](#full-sync) | 아카이브, 가지치기 |
+| [Reth](https://reth.rs/) | 러스트 | Linux, Windows, macOS | 메인넷, Sepolia, Holesky | [Full](#full-sync) | 아카이브, 가지치기 |
+| [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo) _(베타)_ | 타입스크립트 | Linux, Windows, macOS | Sepolia, Holesky | [Full](#full-sync) | 삭제된 데이터 |
+
+지원되는 네트워크에 대한 자세한 내용은 [이더리움 네트워크](/developers/docs/networks/)를 참조하세요.
+
+각 클라이언트는 고유한 사용 사례와 장점을 가지고 있으며, 개인의 선호에 따라 선택해야 합니다. 다양성은 서로 다른 기능과 사용자층에 집중할 수 있는 구현을 가능하게 합니다. 기능, 지원, 프로그래밍 언어 또는 라이선스를 기반으로 클라이언트를 선택할 수 있습니다.
+
+### Besu {#besu}
+
+Hyperledger Besu는 공개 및 허가된 네트워크를 위한 엔터프라이즈급 이더리움 클라이언트입니다. 이 클라이언트는 추적에서 GraphQL까지 이더리움 메인넷의 모든 기능을 실행하며, ConsenSys의 개방형 커뮤니티 채널 및 기업을 위한 상업적 SLA를 통해 지원됩니다. 자바로 작성되었으며, Apache 2.0 라이선스를 따릅니다.
+
+Besu의 광범위한 [문서](https://besu.hyperledger.org/en/stable/)는 기능 및 설정에 대한 모든 세부 정보를 안내합니다.
+
+### Erigon {#erigon}
+
+Erigon은 이전에는 Turbo-Geth로 알려졌으며, 디스크 공간 효율성과 속도를 중시하는 Go Ethereum의 포크로 시작되었습니다. Erigon은 완전히 재구성된 이더리움 구현체로, 현재는 Go로 작성되었지만 다른 언어로의 구현이 개발 중에 있습니다. Erigon의 목표는 더 빠르고 모듈화되고 최적화된 이더리움 구현을 제공하는 것입니다. 이 클라이언트는 약 2TB의 디스크 공간을 사용하여 3일 이내에 전체 아카이브 노드 동기화를 수행할 수 있습니다.
+
+### Go Ethereum {#geth}
+
+Go Ethereum(Geth로 약칭)은 이더리움 프로토콜의 최초 구현 중 하나입니다. 현재는 가장 널리 사용되는 클라이언트로, 가장 큰 사용자 기반과 다양한 도구를 제공합니다. Go로 작성되었으며, 완전한 오픈 소스이며, GNU LGPL v3 라이선스를 따릅니다.
+
+Geth에 대한 자세한 내용은 해당 [문서](https://geth.ethereum.org/docs/)를 참조하세요.
+
+### Nethermind {#nethermind}
+
+Nethermind는 C# .NET 기술 스택을 사용하여 개발된 이더리움 구현체로, LGPL-3.0 라이선스를 따르며 ARM을 포함한 주요 플랫폼에서 실행됩니다. 최고의 성능을 제공합니다:
+
+- 최적화된 가상 머신
+- 상태 접근
+- 최적화된 가상 머신과 상태 접근, 네트워킹, Prometheus/Grafana 대시보드, seq 엔터프라이즈 로깅 지원, JSON-RPC 추적 및 분석 플러그인과 같은 풍부한 기능을 제공합니다.
+
+Nethermind는 또한 [자세한 문서](https://docs.nethermind.io), 강력한 개발자 지원, 온라인 커뮤니티 및 프리미엄 사용자를 위한 연중무휴 지원을 제공합니다.
+
+### Reth {#reth}
+
+Reth(러스트 이더리움의 약칭)는 사용자 친화적이고 모듈화되며 빠르고 효율적인 이더리움 전체 노드 구현체입니다. Reth는 원래 Paradigm에 의해 개발되었으며, Apache와 MIT 라이선스를 따릅니다.
+
+Reth는 스테이킹이나 고가용성 서비스 같은 미션 크리티컬한 환경에서 사용할 수 있는 프로덕션 준비가 완료된 상태입니다. 높은 성능과 넓은 이익률이 요구되는 경우, 예를 들어 RPC, MEV, 인덱싱, 시뮬레이션 및 P2P 활동에서 뛰어난 성능을 발휘합니다.
+
+[Reth Book](https://reth.rs/) 또는 [Reth GitHub 저장소](https://github.com/paradigmxyz/reth?tab=readme-ov-file#reth)를 확인하여 자세히 알아보세요.
+
+### 개발 중 {#execution-in-development}
+
+이 클라이언트들은 아직 개발 초기 단계에 있으며, 프로덕션 사용에 권장되지 않습니다.
+
+#### EthereumJS {#ethereumjs}
+
+EthereumJS 실행 클라이언트(EthereumJS)는 TypeScript로 작성되었으며, 블록, 트랜잭션 및 머클-패트리샤 트리 클래스와 같은 핵심 이더리움 원시 패키지 및 이더리움 가상 머신(EVM) 구현, 블록체인 클래스, DevP2P 네트워킹 스택을 포함한 핵심 클라이언트 구성 요소로 구성되어 있습니다.
+
+[문서](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master)를 읽고 자세히 알아보세요.
+
+## 합의 클라이언트 {#consensus-clients}
+
+[합의 업그레이드](/roadmap/beacon-chain/)를 지원하는 여러 합의 클라이언트(이전에는 'Eth2' 클라이언트라고 알려짐)가 있습니다. 이들은 포크 선택 알고리즘, 증명 처리, [지분 증명](/developers/docs/consensus-mechanisms/pos) 보상 및 페널티 관리를 포함한 모든 합의 관련 로직을 담당합니다.
+
+| 클라이언트 | 언어 | 운영 체제 | 네트워크 |
+| ------------------------------------------------------------- | ------ | --------------------- | ------------------------------------------ |
+| [Lighthouse](https://lighthouse.sigmaprime.io/) | 러스트 | Linux, Windows, macOS | 비콘 체인, Holesky, Pyrmont, Sepolia 등 |
+| [Lodestar](https://lodestar.chainsafe.io/) | 타입스크립트 | Linux, Windows, macOS | 비콘 체인, Holesky, Sepolia 등 |
+| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | 비콘 체인, Holesky, Sepolia 등 |
+| [Prysm](https://prysm.offchainlabs.com/docs/) | Go | Linux, Windows, macOS | 비콘 체인, Gnosis, Holesky, Pyrmont, Sepolia 등 |
+| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | 자바 | Linux, Windows, macOS | 비콘 체인, Gnosis, Holesky, Sepolia 등 |
+| [Grandine](https://docs.grandine.io/) | 러스트 | Linux, Windows, macOS | 비콘 체인, Holesky, Sepolia 등 |
+
+### Lighthouse {#lighthouse}
+
+Lighthouse는 Rust로 작성된 합의 클라이언트 구현체이며 Apache-2.0 라이선스 하에 있습니다. 이 클라이언트는 Sigma Prime에서 유지 관리되며 비콘 체인 시작 이후로 안정적이고 생산 준비가 완료된 상태입니다. 여러 기업, 스테이킹 풀, 개인 사용자들이 이 클라이언트를 신뢰하고 있습니다. 이 클라이언트는 보안성, 성능, 그리고 데스크탑 PC부터 정교한 자동 배포에 이르기까지 다양한 환경에서의 상호 운용성을 목표로 하고 있습니다.
+
+문서는 [Lighthouse Book](https://lighthouse-book.sigmaprime.io/)에서 찾을 수 있습니다.
+
+### Lodestar {#lodestar}
+
+Lodestar는 Typescript로 작성된 LGPL-3.0 라이선스 하의 생산 준비가 완료된 합의 클라이언트 구현체입니다. 이 클라이언트는 ChainSafe Systems에서 유지 관리되며 솔로 스테이커, 개발자 및 연구자를 위한 최신 합의 클라이언트 중 하나입니다. Lodestar는 이더리움 프로토콜의 JavaScript 구현을 바탕으로 비콘 노드와 검증자 클라이언트로 구성되어 있습니다. Lodestar는 라이트 클라이언트를 통해 이더리움 사용성을 개선하고 더 큰 개발자 그룹에 대한 접근성을 확장하며 생태계 다양성에 기여하는 것을 목표로 합니다.
+
+자세한 정보는 [Lodestar 웹사이트](https://lodestar.chainsafe.io/)에서 찾을 수 있습니다.
+
+### Nimbus {#nimbus}
+
+Nimbus는 Nim으로 작성된 Apache-2.0 라이선스 하의 합의 클라이언트 구현체입니다. 이 클라이언트는 솔로 스테이커와 스테이킹 풀에서 사용되는 생산 준비가 완료된 클라이언트입니다. Nimbus는 리소스 효율성을 위해 설계되어 리소스가 제한된 장치 및 기업 인프라에서 안정성이나 보상 성능을 저해하지 않으면서도 쉽게 실행할 수 있습니다. 가벼운 리소스 풋프린트는 네트워크가 스트레스를 받을 때 클라이언트의 안전 여유를 더 크게 만듭니다.
+
+[Nimbus 문서](https://nimbus.guide/)에서 자세히 알아보세요.
+
+### Prysm {#prysm}
+
+Prysm은 Go로 작성된 GPL-3.0 라이선스 하의 모든 기능을 갖춘 오픈 소스 합의 클라이언트입니다. 이 클라이언트는 선택적 웹앱 UI를 제공하며 사용자 경험, 문서화, 구성 가능성을 우선시합니다. 이는 가정 내 스테이킹 사용자와 기관 사용자를 위해 설계되었습니다.
+
+자세히 알아보려면 [Prysm 문서](https://prysm.offchainlabs.com/docs/)를 방문하세요.
+
+### Teku {#teku}
+
+Teku는 최초의 비콘 체인 제네시스 클라이언트 중 하나입니다. 보안성, 강건성, 안정성, 사용성, 성능 등의 일반적인 목표와 함께, Teku는 다양한 합의 클라이언트 표준을 완전히 준수하는 것을 목표로 합니다.
+
+Teku는 매우 유연한 배포 옵션을 제공합니다. 비콘 노드와 검증자 클라이언트는 단일 프로세스로 함께 실행될 수 있어 솔로 스테이커에게 매우 편리하며, 또는 더 정교한 스테이킹 작업을 위해 별도로 실행할 수 있습니다. 또한 Teku는 서명 키 보안 및 슬래싱 방지를 위해 [Web3Signer](https://github.com/ConsenSys/web3signer/)와 완벽하게 상호 운용됩니다.
+
+Teku는 Java로 작성되었으며 Apache 2.0 라이선스를 따릅니다. 이 클라이언트는 Besu와 Web3Signer를 책임지는 ConsenSys의 프로토콜 팀에서 개발되었습니다. [Teku 문서](https://docs.teku.consensys.net/en/latest/)에서 자세히 알아보세요.
+
+### Grandine {#grandine}
+
+Grandine은 Rust로 작성된 합의 클라이언트 구현체로, GPL-3.0 라이선스를 따릅니다. Grandine Core Team에 의해 유지되며, 빠르고 고성능이며 경량입니다. 이 클라이언트는 Raspberry Pi와 같은 저자원 장치에서 실행되는 솔로 스테이커부터 수만 개의 검증자를 실행하는 대규모 기관 스테이커에 이르기까지 다양한 스테이커에 적합합니다.
+
+문서는 [Grandine Book](https://docs.grandine.io/)에서 찾을 수 있습니다.
+
+## 동기화 모드 {#sync-modes}
+
+네트워크의 최신 데이터를 따르고 확인하기 위해 이더리움 클라이언트는 최신 네트워크 상태와 동기화되어야 합니다. 이것은 피어로부터 데이터를 다운로드하고 암호적으로 무결성을 확인하며 로컬 블록체인 데이터베이스를 구축하여 수행됩니다.
+
+동기화 모드는 이러한 과정을 다양한 트레이드 오프와 함께 나타냅니다. 클라이언트는 동기화 알고리즘 구현에서도 차이가 있습니다. 구체적인 구현에 대해서는 선택한 클라이언트의 공식 문서를 항상 참조하십시오.
+
+### 실행 레이어 동기화 모드 {#execution-layer-sync-modes}
+
+실행 레이어는 다양한 사용 사례에 맞게 블록체인의 세계 상태를 재실행하는 것부터 신뢰할 수 있는 체크포인트에서 체인의 팁과만 동기화하는 것까지 다양한 모드에서 실행될 수 있습니다.
+
+#### 전체 동기화 {#full-sync}
+
+전체 동기화는 모든 블록(헤더 및 블록 본문 포함)을 다운로드하고 제네시스부터 모든 블록을 실행하여 블록체인의 상태를 점진적으로 재생성합니다.
+
+- 모든 트랜잭션을 확인하여 신뢰를 최소화하고 최고 수준의 보안을 제공합니다.
+- 트랜잭션 수가 증가함에 따라 모든 트랜잭션을 처리하는 데 며칠에서 몇 주가 걸릴 수 있습니다.
+
+[아카이브 노드](#archive-node)는 전체 동기화를 수행하여 모든 블록의 모든 트랜잭션에 의해 발생한 상태 변경의 전체 기록을 구축(및 유지)합니다.
+
+#### 빠른 동기화 {#fast-sync}
+
+전체 동기화와 마찬가지로, 빠른 동기화는 모든 블록(헤더, 트랜잭션 및 영수증 포함)을 다운로드합니다. 그러나 과거의 트랜잭션을 재처리하는 대신 빠른 동기화는 최근 헤드에 도달할 때까지 영수증을 신뢰하고, 그 후에는 블록을 가져오고 처리하여 전체 노드를 제공합니다.
+
+- 빠른 동기화 전략.
+- 처리 수요를 줄이고 대역폭 사용을 선호합니다.
+
+#### 스냅 동기화 {#snap-sync}
+
+스냅 동기화도 체인을 블록별로 검증합니다. 하지만 스냅 동기화는 제네시스 블록에서 시작하지 않고, 진짜 블록체인의 일부로 확인된 '신뢰할 수 있는' 최신 체크포인트에서 시작합니다. 노드는 주기적으로 체크포인트를 저장하고 일정 연령 이상의 데이터를 삭제합니다. 이 스냅샷은 필요에 따라 상태 데이터를 재생성하는 데 사용되며, 데이터를 영구적으로 저장하지 않습니다.
+
+- 현재 이더리움 메인넷에서 기본 설정된 가장 빠른 동기화 전략.
+- 보안성을 희생하지 않고 디스크 사용량과 네트워크 대역폭을 많이 절약합니다.
+
+[스냅 동기화에 대한 추가 정보](https://github.com/ethereum/devp2p/blob/master/caps/snap.md).
+
+#### 라이트 동기화 {#light-sync}
+
+경량 클라이언트 모드는 모든 블록 헤더, 블록 데이터를 다운로드하고 일부를 무작위로 검증합니다. 신뢰할 수 있는 체크포인트에서 체인의 팁만 동기화합니다.
+
+- 개발자와 합의 메커니즘에 대한 신뢰를 바탕으로 최신 상태만 가져옵니다.
+- 몇 분 안에 현재 네트워크 상태로 클라이언트를 사용할 수 있습니다.
+
+**참고** 라이트 동기화는 아직 지분 증명 이더리움에서 작동하지 않습니다. 새로운 버전의 라이트 동기화가 곧 출시될 예정입니다!
+
+[라이트 클라이언트에 대한 추가 정보](/developers/docs/nodes-and-clients/light-clients/)
+
+### 합의 레이어 동기화 모드 {#consensus-layer-sync-modes}
+
+#### 낙관적 동기화 {#optimistic-sync}
+
+낙관적 동기화는 머지 이후의 동기화 전략으로, 선택적으로 사용할 수 있으며 이전 버전과 호환됩니다. 이를 통해 실행 노드가 기존 방법을 통해 동기화할 수 있습니다. 실행 엔진은 비콘 블록을 완전히 검증하지 않고 _낙관적으로_ 가져와 최신 헤드를 찾은 다음, 위 방법으로 체인 동기화를 시작할 수 있습니다. 그 후 실행 클라이언트가 최신 상태에 도달하면 비콘 체인의 트랜잭션 유효성을 합의 클라이언트에 알립니다.
+
+[낙관적 동기화에 대한 추가 정보](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md)
+
+#### 체크포인트 동기화 {#checkpoint-sync}
+
+체크포인트 동기화, 즉 약한 주관성 동기화는 비콘 노드를 동기화하는 데 있어 우수한 사용자 경험을 제공합니다. 이는 [약한 주관성](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/)의 가정을 기반으로 하며, 이를 통해 제네시스 대신 최근의 약한 주관성 체크포인트에서 비콘 체인을 동기화할 수 있습니다. 체크포인트 동기화는 [제네시스](/glossary/#genesis-block)에서 동기화하는 것과 유사한 신뢰 가정을 통해 초기 동기화 시간을 훨씬 더 빠르게 만듭니다.
+
+실제로 이는 노드가 원격 서비스를 연결하여 최근의 최종 상태를 다운로드한 후 그 시점부터 데이터를 검증하는 것을 의미합니다. 데이터를 제공하는 제3자에 대한 신뢰가 필요하며, 신중히 선택해야 합니다.
+
+[체크포인트 동기화](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)에 대한 추가 정보
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 101 - 2부 - 노드 이해하기](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes, 2019년 2월 13일_
+- [이더리움 전체 노드 실행하기: 동기 부여가 거의 없는 분들을 위한 안내서](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 2019년 11월 7일_
+
+## 관련 주제 {#related-topics}
+
+- [블록](/developers/docs/blocks/)
+- [네트워크](/developers/docs/networks/)
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [MicroSD 카드 플래싱만으로 Raspberry Pi 4를 검증자 노드로 전환하기 – 설치 가이드](/developers/tutorials/run-node-raspberry-pi/) _– Raspberry Pi 4를 플래시하고, 이더넷 케이블을 연결하고, SSD 디스크를 연결하고 장치에 전원을 공급하여 Raspberry Pi 4를 실행 레이어(메인넷) 및/또는 합의 레이어(비콘 체인/검증자)를 실행하는 전체 이더리움 노드로 전환합니다._
diff --git a/public/content/translations/ko/developers/docs/nodes-and-clients/light-clients/index.md b/public/content/translations/ko/developers/docs/nodes-and-clients/light-clients/index.md
new file mode 100644
index 00000000000..488da0e169c
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/nodes-and-clients/light-clients/index.md
@@ -0,0 +1,61 @@
+---
+title: "라이트 클라이언트"
+description: "이더리움 라이트 클라이언트 소개."
+lang: ko
+---
+
+전체 노드를 실행하는 것은 이더리움과 상호작용하는 가장 신뢰가 필요 없고, 비공개적이며, 탈중앙화되고, 검열에 저항하는 방법입니다. 전체 노드를 사용하면 즉시 쿼리할 수 있는 블록체인의 자체 사본을 유지하고 이더리움의 P2P(peer-to-peer) 네트워크에 직접 액세스할 수 있습니다. 하지만 전체 노드를 실행하려면 상당한 양의 메모리, 저장 공간, CPU가 필요합니다. 이는 모든 사람이 자신의 노드를 실행하는 것이 실현 가능하지 않다는 것을 의미합니다. 이더리움 로드맵에는 무상태성을 포함하여 이에 대한 몇 가지 해결책이 있지만, 구현되기까지는 몇 년이 걸릴 것입니다. 단기적인 해결책은 전체 노드 실행의 이점 중 일부를 대폭적인 성능 향상과 맞바꾸어 매우 낮은 하드웨어 요구 사항으로 노드를 실행할 수 있도록 하는 것입니다. 이러한 트레이드오프를 하는 노드를 라이트 노드라고 합니다.
+
+## 라이트 클라이언트란 무엇인가요? {#what-is-a-light-client}
+
+라이트 노드는 라이트 클라이언트 소프트웨어를 실행하는 노드입니다. 블록체인 데이터의 로컬 사본을 보관하고 모든 변경 사항을 독립적으로 검증하는 대신, 일부 공급자에게 필요한 데이터를 요청합니다. 공급자는 전체 노드에 직접 연결하거나 일부 중앙화된 RPC 서버를 통해 연결될 수 있습니다. 그런 다음 데이터는 라이트 노드에 의해 검증되어 체인의 헤드를 따라갈 수 있습니다. 라이트 노드는 블록 헤더만 처리하며, 실제 블록 콘텐츠는 가끔씩만 다운로드합니다. 노드는 실행하는 라이트 및 전체 클라이언트 소프트웨어의 조합에 따라 경량성이 다를 수 있습니다. 예를 들어, 가장 가벼운 구성은 라이트 실행 클라이언트와 라이트 합의 클라이언트를 실행하는 것입니다. 또한 많은 노드가 라이트 합의 클라이언트를 전체 실행 클라이언트와 함께 실행하거나 그 반대로 실행하는 것을 선택할 가능성이 높습니다.
+
+## 라이트 클라이언트는 어떻게 작동하나요? {#how-do-light-clients-work}
+
+이더리움이 지분 증명 기반 합의 메커니즘을 사용하기 시작했을 때, 라이트 클라이언트를 특별히 지원하기 위한 새로운 인프라가 도입되었습니다. 작동 방식은 1.1일마다 512명의 검증자 중 일부를 무작위로 선택하여 동기화 위원회로 활동하게 하는 것입니다. 동기화 위원회는 최근 블록의 헤더에 서명합니다. 각 블록 헤더에는 동기화 위원회의 검증자들의 집계된 서명과 어떤 검증자가 서명했고 어떤 검증자가 서명하지 않았는지 보여주는 "비트필드"가 포함됩니다. 각 헤더에는 다음 블록 서명에 참여할 것으로 예상되는 검증자 목록도 포함됩니다. 이는 라이트 클라이언트가 동기화 위원회가 수신한 데이터에 서명했음을 신속하게 확인할 수 있으며, 이전 블록에서 예상하라고 전달받은 것과 수신한 것을 비교하여 동기화 위원회가 진짜인지 확인할 수도 있음을 의미합니다. 이러한 방식으로 라이트 클라이언트는 블록 자체를 실제로 다운로드하지 않고 요약 정보가 포함된 헤더만으로 최신 이더리움 블록에 대한 지식을 계속 업데이트할 수 있습니다.
+
+실행 레이어에는 라이트 실행 클라이언트에 대한 단일 사양이 없습니다. 라이트 실행 클라이언트의 범위는 전체 노드의 모든 EVM 및 네트워킹 기능을 갖추고 있지만 관련 데이터를 다운로드하지 않고 블록 헤더만 검증하는 전체 실행 클라이언트의 "라이트 모드"부터, 이더리움과 상호작용하기 위해 RPC 공급자에게 요청을 전달하는 데 크게 의존하는 더 간소화된 클라이언트에 이르기까지 다양할 수 있습니다.
+
+## 라이트 클라이언트가 왜 중요한가요? {#why-are-light-clients-important}
+
+라이트 클라이언트는 전체 노드의 아주 적은 계산 리소스만 사용하면서도 사용자가 데이터 제공업체가 정확하고 정직하다고 맹목적으로 신뢰하는 대신 들어오는 데이터를 직접 검증할 수 있게 해주기 때문에 중요합니다. 라이트 클라이언트가 수신하는 데이터는 무작위로 선정된 512명의 이더리움 검증자 중 최소 2/3가 서명한 것으로 알려진 블록 헤더와 대조하여 확인할 수 있습니다. 이는 데이터가 정확하다는 매우 강력한 증거입니다.
+
+라이트 클라이언트는 아주 적은 양의 컴퓨팅 파워, 메모리, 저장 공간만 사용하므로 휴대폰, 앱에 내장되거나 브라우저의 일부로 실행될 수 있습니다. 라이트 클라이언트는 신뢰를 최소화한 이더리움 액세스를 제3자 제공자를 신뢰하는 것만큼이나 원활하게 만드는 방법입니다.
+
+간단한 예를 들어보겠습니다. 계정 잔액을 확인하고 싶다고 상상해 보세요. 이를 위해서는 이더리움 노드에 요청을 해야 합니다. 해당 노드는 이더리움 상태의 로컬 사본에서 잔액을 확인하고 사용자에게 반환합니다. 노드에 직접 액세스할 수 없는 경우 이 데이터를 서비스로 제공하는 중앙화된 운영자가 있습니다. 그들에게 요청을 보내면 그들은 자신의 노드를 확인하고 결과를 다시 사용자에게 보냅니다. 이것의 문제점은 제공자가 올바른 정보를 제공하고 있다고 신뢰해야 한다는 것입니다. 스스로 확인할 수 없다면 정보가 정확한지 결코 알 수 없습니다.
+
+라이트 클라이언트는 이 문제를 해결합니다. 여전히 외부 공급자에게 데이터를 요청하지만, 데이터를 다시 받을 때 라이트 노드가 블록 헤더에서 받은 정보와 대조하여 확인할 수 있는 증명과 함께 제공됩니다. 이는 신뢰할 수 있는 일부 운영자 대신 이더리움이 데이터의 정확성을 검증하고 있음을 의미합니다.
+
+## 라이트 클라이언트는 어떤 혁신을 가능하게 하나요? {#what-innovations-do-light-clients-enable}
+
+라이트 클라이언트의 주요 이점은 더 많은 사람들이 무시할 수 있는 하드웨어 요구 사항과 제3자에 대한 최소한의 의존으로 독립적으로 이더리움에 액세스할 수 있도록 하는 것입니다. 이는 사용자가 자신의 데이터를 직접 검증할 수 있기 때문에 사용자에게 좋고, 체인을 검증하는 노드의 수와 다양성을 증가시키기 때문에 네트워크에도 좋습니다.
+
+매우 작은 저장 공간, 메모리, 처리 능력을 가진 장치에서 이더리움 노드를 실행할 수 있는 능력은 라이트 클라이언트에 의해 가능해진 주요 혁신 분야 중 하나입니다. 오늘날 이더리움 노드는 많은 컴퓨팅 리소스를 필요로 하지만, 라이트 클라이언트는 브라우저에 내장되거나, 휴대폰에서 실행되거나, 심지어 스마트 워치와 같은 더 작은 장치에서도 실행될 수 있습니다. 이는 내장된 클라이언트가 있는 이더리움 지갑이 휴대폰에서 실행될 수 있음을 의미합니다. 이는 모바일 지갑이 데이터에 대해 중앙화된 데이터 제공업체를 신뢰할 필요가 없으므로 훨씬 더 탈중앙화될 수 있음을 의미합니다.
+
+이것의 연장선상에서 **사물 인터넷(IoT)** 장치를 활성화할 수 있습니다. 라이트 클라이언트는 동기화 위원회가 제공하는 모든 보안 보증을 통해 일부 토큰 잔액 또는 NFT의 소유권을 신속하게 증명하고 IoT 네트워크에서 일부 작업을 트리거하는 데 사용될 수 있습니다. 내장된 라이트 클라이언트가 있는 앱을 사용하여 대여 서비스의 NFT를 소유하고 있는지 신속하게 확인하고, 그렇다면 자전거 잠금을 해제하여 타고 갈 수 있는 [자전거 대여 서비스](https://youtu.be/ZHNrAXf3RDE?t=929)를 상상해 보세요!
+
+이더리움 롤업 또한 라이트 클라이언트의 이점을 누릴 수 있습니다. 롤업의 큰 문제 중 하나는 이더리움 메인넷에서 롤업으로 자금을 이전할 수 있게 해주는 브리지를 대상으로 한 해킹이었습니다. 한 가지 취약점은 롤업이 사용자가 브리지에 입금했음을 감지하는 데 사용하는 오라클입니다. 오라클이 잘못된 데이터를 제공하면 롤업을 속여 브리지에 입금된 것으로 생각하게 하고 자금을 잘못 출금하게 할 수 있습니다. 롤업에 내장된 라이트 클라이언트는 손상된 오라클로부터 보호하는 데 사용될 수 있습니다. 왜냐하면 브리지에 대한 입금은 롤업이 토큰을 출금하기 전에 검증할 수 있는 증명과 함께 제공될 수 있기 때문입니다. 동일한 개념이 다른 인터체인 브리지에도 적용될 수 있습니다.
+
+라이트 클라이언트는 이더리움 지갑을 업그레이드하는 데에도 사용될 수 있습니다. RPC 공급자가 제공하는 데이터를 신뢰하는 대신, 지갑이 내장된 라이트 클라이언트를 사용하여 사용자에게 제시되는 데이터를 직접 검증할 수 있습니다. 이렇게 하면 지갑의 보안이 강화됩니다. RPC 공급자가 부정직하여 잘못된 데이터를 제공한 경우, 내장된 라이트 클라이언트가 이를 알려줄 수 있습니다!
+
+## 라이트 클라이언트 개발의 현재 상태는 어떤가요? {#current-state-of-development}
+
+실행, 합의 및 결합된 실행/합의 라이트 클라이언트를 포함하여 여러 라이트 클라이언트가 개발 중입니다. 이 페이지를 작성하는 시점에 우리가 알고 있는 라이트 클라이언트 구현은 다음과 같습니다:
+
+- [Lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client): TypeScript로 작성된 합의 라이트 클라이언트
+- [Helios](https://github.com/a16z/helios): Rust로 작성된 결합된 실행 및 합의 라이트 클라이언트
+- [Geth](https://github.com/ethereum/go-ethereum/tree/master/beacon/light): Go로 작성된 실행 클라이언트용 라이트 모드(개발 중)
+- [Nimbus](https://nimbus.guide/el-light-client.html): Nim으로 작성된 합의 라이트 클라이언트
+
+우리가 알기로는 아직 이들 중 어느 것도 프로덕션 준비가 된 것으로 간주되지 않습니다.
+
+또한 라이트 클라이언트가 이더리움 데이터에 액세스하는 방식을 개선하기 위한 많은 작업이 진행되고 있습니다. 현재 라이트 클라이언트는 클라이언트/서버 모델을 사용하여 전체 노드에 대한 RPC 요청에 의존하지만, 미래에는 P2P(peer-to-peer) 가십 프로토콜을 사용하여 라이트 클라이언트에 데이터를 제공할 수 있는 [포털 네트워크](https://www.ethportal.net/)와 같은 전용 네트워크를 사용하여 더 탈중앙화된 방식으로 데이터를 요청할 수 있습니다.
+
+다른 [로드맵](/roadmap/) 항목인 [버클 트리](/roadmap/verkle-trees/) 및 [무상태성](/roadmap/statelessness/)은 결국 라이트 클라이언트의 보안 보증을 전체 클라이언트의 보안 보증과 동일한 수준으로 끌어올릴 것입니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [Geth 라이트 클라이언트에 대한 Zsolt Felfodhi](https://www.youtube.com/watch?v=EPZeFXau-RE)
+- [라이트 클라이언트 네트워킹에 대한 Etan Kissling](https://www.youtube.com/watch?v=85MeiMA4dD8)
+- [병합 이후의 라이트 클라이언트에 대한 Etan Kissling](https://www.youtube.com/watch?v=ZHNrAXf3RDE)
+- [Piper Merriam: 기능적인 라이트 클라이언트로 가는 구불구불한 길](https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients/)
diff --git a/public/content/translations/ko/developers/docs/nodes-and-clients/node-architecture/index.md b/public/content/translations/ko/developers/docs/nodes-and-clients/node-architecture/index.md
new file mode 100644
index 00000000000..06a5daa4150
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/nodes-and-clients/node-architecture/index.md
@@ -0,0 +1,59 @@
+---
+title: "노드 아키텍처"
+description: "이더리움 노드가 어떻게 구성되는지에 대한 소개."
+lang: ko
+---
+
+이더리움 노드는 [실행 클라이언트](/developers/docs/nodes-and-clients/#execution-clients)와 [합의 클라이언트](/developers/docs/nodes-and-clients/#consensus-clients)의 두 클라이언트로 구성됩니다. 노드가 새 블록을 제안하려면 [검증자 클라이언트](#validators)도 실행해야 합니다.
+
+이더리움이 [작업 증명](/developers/docs/consensus-mechanisms/pow/)을 사용했을 때에는 실행 클라이언트만으로도 전체 이더리움 노드를 실행하기에 충분했습니다. 그러나 [지분 증명](/developers/docs/consensus-mechanisms/pow/)이 구현된 이후에는 실행 클라이언트는 [합의 클라이언트](/developers/docs/nodes-and-clients/#consensus-clients)라는 다른 소프트웨어와 함께 사용되어야 합니다.
+
+아래 다이어그램은 두 이더리움 클라이언트 간의 관계를 보여줍니다. 두 클라이언트는 각자의 peer-to-peer (P2P) 네트워크에 연결됩니다. 실행 클라이언트는 P2P 네트워크를 통해 트랜잭션을 가십하여 로컬 트랜잭션 풀을 관리하고, 합의 클라이언트는 P2P 네트워크를 통해 블록을 가십하여 합의와 체인 성장을 가능하게 하므로 별도의 P2P 네트워크가 필요합니다.
+
+
+
+_실행 클라이언트에는 Erigon, Nethermind, Besu를 포함한 여러 옵션이 있습니다_.
+
+이 이중 클라이언트 구조가 작동하려면 합의 클라이언트는 트랜잭션 묶음을 실행 클라이언트에 전달해야 합니다. 실행 클라이언트는 트랜잭션을 로컬에서 실행하여 트랜잭션이 이더리움 규칙을 위반하지 않는지와 제안된 이더리움 상태 업데이트가 올바른지를 검증합니다. 노드가 블록 생성자로 선택되면 해당 합의 클라이언트 인스턴스는 실행 클라이언트로부터 트랜잭션 묶음을 요청하여 새 블록에 포함하고 이를 실행하여 전역 상태를 업데이트합니다. 합의 클라이언트는 [엔진 API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)를 사용하여 로컬 RPC 연결을 통해 실행 클라이언트를 구동합니다.
+
+## 실행 클라이언트는 어떤 역할을 하나요? {#execution-client}
+
+실행 클라이언트는 트랜잭션 검증, 처리, 가십뿐만 아니라 상태 관리와 이더리움 가상 머신([EVM](/developers/docs/evm/)) 지원을 담당합니다. 블록 생성, 블록 가십 또는 합의 로직 처리는 **담당하지 않습니다**. 이는 합의 클라이언트의 소관입니다.
+
+실행 클라이언트는 실행 페이로드, 즉 트랜잭션 목록, 업데이트된 상태 트라이, 기타 실행 관련 데이터를 생성합니다. 합의 클라이언트는 모든 블록에 실행 페이로드를 포함합니다. 실행 클라이언트는 새 블록의 트랜잭션을 재실행하여 유효성을 보장하는 역할도 합니다. 트랜잭션 실행은 [이더리움 가상 머신(EVM)](/developers/docs/evm)으로 알려진 실행 클라이언트의 내장 컴퓨터에서 수행됩니다.
+
+실행 클라이언트는 사용자가 이더리움 블록체인을 쿼리하고, 트랜잭션을 제출하고, 스마트 계약을 배포할 수 있도록 하는 [RPC 메서드](/developers/docs/apis/json-rpc)를 통해 이더리움에 대한 사용자 인터페이스를 제공합니다. RPC 호출은 일반적으로 [Web3js](https://docs.web3js.org/), [Web3py](https://web3py.readthedocs.io/en/v5/)와 같은 라이브러리나 브라우저 지갑과 같은 사용자 인터페이스에 의해 처리됩니다.
+
+요약하자면, 실행 클라이언트는 다음과 같습니다.
+
+- 이더리움으로 가는 사용자 게이트웨이
+- 이더리움 가상 머신, 이더리움의 상태 및 트랜잭션 풀의 홈
+
+## 합의 클라이언트는 어떤 역할을 하나요? {#consensus-client}
+
+합의 클라이언트는 노드가 이더리움 네트워크와 동기화 상태를 유지할 수 있도록 하는 모든 로직을 처리합니다. 여기에는 피어로부터 블록을 수신하고 포크 선택 알고리즘을 실행하여 노드가 항상 가장 많은 인증(검증자 유효 잔고에 따라 가중치가 적용됨)이 축적된 체인을 따르도록 하는 것이 포함됩니다. 실행 클라이언트와 마찬가지로, 합의 클라이언트도 블록과 인증을 공유하는 자체 P2P 네트워크를 가집니다.
+
+합의 클라이언트는 블록을 인증하거나 제안하는 데 참여하지 않습니다. 이 작업은 합의 클라이언트의 선택적 애드온인 검증자에 의해 수행됩니다. 검증자가 없는 합의 클라이언트는 체인의 헤드만 따라가며 노드가 동기화 상태를 유지할 수 있도록 합니다. 이를 통해 사용자는 올바른 체인에 있다는 확신을 가지고 실행 클라이언트를 사용하여 이더리움과 거래할 수 있습니다.
+
+## 검증자 {#validators}
+
+스테이킹을 하고 검증자 소프트웨어를 실행하면 노드가 새 블록을 제안하도록 선택될 자격을 갖추게 됩니다. 노드 운영자는 예금 컨트랙트에 32 ETH를 예치하여 자신의 합의 클라이언트에 검증인을 추가할 수 있습니다. 검증자 클라이언트는 합의 클라이언트와 함께 번들로 제공되며 언제든지 노드에 추가할 수 있습니다. 검증인은 인증 및 블록 제안을 처리합니다. 또한 노드는 페널티나 슬래싱을 통해 보상을 받거나 ETH를 잃을 수 있습니다.
+
+[스테이킹에 대해 더 알아보기](/staking/).
+
+## 노드 구성 요소 비교 {#node-comparison}
+
+| 실행 클라이언트 | 합의 클라이언트 | 검증자 |
+| ------------------------------- | --------------------------------------------------------------------------------- | -------------- |
+| P2P 네트워크를 통해 트랜잭션을 가십합니다 | P2P 네트워크를 통해 블록 및 인증을 가십합니다 | 블록 제안 |
+| 트랜잭션 실행/재실행 | 포크 선택 알고리즘 실행 | 보상/페널티 발생 |
+| 수신 상태 변경 확인 | 체인 헤드 추적 | 인증 생성 |
+| 상태 및 영수증 트라이 관리 | 비콘 상태 관리(합의 및 실행 정보 포함) | 32 ETH 스테이킹 필요 |
+| 실행 페이로드 생성 | RANDAO(검증자 선택 및 기타 합의 작업에 검증 가능한 무작위성을 제공하는 알고리즘)의 누적된 무작위성 추적 | 슬래싱 가능 |
+| 이더리움과 상호작용하기 위한 JSON-RPC API 노출 | 정당성 및 완결성 추적 | |
+
+## 더 읽어보기 {#further-reading}
+
+- [지분 증명](/developers/docs/consensus-mechanisms/pos)
+- [블록 제안](/developers/docs/consensus-mechanisms/pos/block-proposal)
+- [검증자 보상 및 페널티](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)
diff --git a/public/content/translations/ko/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/translations/ko/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
new file mode 100644
index 00000000000..36d6fb4ac89
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
@@ -0,0 +1,418 @@
+---
+title: "노드 제공 서비스"
+description: "노드 서비스에 대한 입문 단계 및 장단점 그리고 대표적인 서비스 제공"
+lang: ko
+sidebarDepth: 2
+---
+
+## 소개 {#Introduction}
+
+자체 [이더리움 노드](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients)를 실행하는 것은 특히 처음 시작하거나 빠르게 확장할 때 어려울 수 있습니다. 사용자를 위해 최적화된 노드 인프라를 실행하는 [여러 서비스](#popular-node-services)가 있으므로, 대신 애플리케이션이나 제품 개발에 집중할 수 있습니다. 본 장에서는 노드 서비스가 작동하는 방식과 장단점 그리고 서비스 제공업체 (provider)를 나열한다.
+
+## 필수 구성 요소 {#prerequisites}
+
+노드와 클라이언트가 무엇인지 아직 이해하지 못했다면 [노드 및 클라이언트](/developers/docs/nodes-and-clients/)를 확인하세요.
+
+## 스테이커 {#stakoooooooooooooors}
+
+개인 지분 소유자 (solo staker) 는 제3자를 통하지 않고 개인적으로 인프라를 구축하여야 한다. 즉 실행 클라이언트를 운영하는 것은 컨센서스 클라이언트와 매칭된다. [병합](/roadmap/merge) 이전에는 합의 클라이언트만 실행하고 중앙화된 제공자로부터 실행 데이터를 가져올 수 있었지만, 이제는 불가능하며 단독 스테이커는 두 클라이언트를 모두 실행해야 합니다. 그러나 몇몇 서비스가 이를 간단하게 해준다.
+
+[노드 실행에 대해 자세히 알아보기](/developers/docs/nodes-and-clients/run-a-node/).
+
+이 페이지에 설명된 서비스는 스테이킹이 아닌 노드용입니다.
+
+## 노드 서비스는 어떻게 작동하나요? {#how-do-node-services-work}
+
+노드 서비스 제공업체는 백그라운드에서 분산된 노드 클라이언트를 실행하므로 직접 할 필요가 없습니다.
+
+이 서비스들은 일반적으로 API 키를 제공하여 블록체인에 쓰거나 읽을 수 있습니다. 이러한 서비스는 보통 메인넷 외에도 [이더리움 테스트넷](/developers/docs/networks/#ethereum-testnets)에 대한 액세스를 포함합니다.
+
+일부 서비스는 자체적으로 관리하는 전용 노드를 제공하는 반면, 다른 서비스는 로드 밸런서를 사용하여 노드 간 활동을 분배합니다.
+
+대부분의 노드 서비스는 통합이 매우 쉬우며, 셀프 호스팅 노드를 교체하거나 서비스 간 전환하는 경우 코드에서 한 줄만 변경하면 됩니다.
+
+노드 서비스는 종종 다양한 [노드 클라이언트](/developers/docs/nodes-and-clients/#execution-clients) 및 [유형](/developers/docs/nodes-and-clients/#node-types)을 실행하여, 하나의 API에서 클라이언트 특정 메서드 외에 전체 및 아카이브 노드에 액세스할 수 있도록 합니다.
+
+노드 서비스가 개인 키나 정보를 저장하지 않으며 저장해서도 안 된다는 점을 유념해야 합니다.
+
+## 노드 서비스 사용의 장점은 무엇인가요? {#benefits-of-using-a-node-service}
+
+노드 서비스를 사용할 때의 주요 이점은 노드를 유지 관리하는 데 소요되는 엔지니어링 시간을 절약할 수 있다는 것입니다. 이는 인프라 유지 관리를 걱정하는 대신 제품 개발에 집중할 수 있도록 합니다.
+
+자체 노드를 실행하는 것은 스토리지에서 대역폭, 소중한 엔지니어링 시간에 이르기까지 매우 비용이 많이 들 수 있습니다. 확장 시 더 많은 노드를 시작하고, 최신 버전으로 노드를 업그레이드하고, 상태 일관성을 보장하는 것과 같은 작업은 웹3 제품 개발에 집중하는 데 방해가 될 수 있습니다.
+
+## 노드 서비스 사용의 단점은 무엇인가요? {#cons-of-using-a-node-service}
+
+노드 서비스를 사용하면 제품의 인프라 측면을 중앙 집중화하는 것입니다. 이러한 이유로 탈중앙화를 가장 중요하게 여기는 프로젝트는 3자에게 아웃소싱하는 대신 자체 노드를 호스팅하는 것을 선호할 수 있습니다.
+
+[자체 노드 실행의 이점](/developers/docs/nodes-and-clients/#benefits-to-you)에 대해 자세히 알아보세요.
+
+## 인기 있는 노드 서비스 {#popular-node-services}
+
+다음은 가장 인기 있는 이더리움 노드 제공업체 목록입니다. 누락된 항목이 있으면 자유롭게 추가하세요! 각 노드 서비스는 무료 또는 유료 계층 외에도 다양한 이점과 기능을 제공합니다. 결정을 내리기 전에 어떤 것이 가장 적합한지 조사해야 합니다.
+
+- [**Alchemy**](https://alchemy.com/)
+ - [문서](https://www.alchemy.com/docs/)
+ - 기능
+ - 월 3억 컴퓨팅 유닛(약 3천만 getLatestBlock 요청)을 제공하는 가장 큰 무료 계층
+ - Polygon, Starknet, Optimism, Arbitrum에 대한 멀티체인 지원
+ - 최대 이더리움 dapp 및 DeFi 거래량의 약 70% 지원
+ - 실시간 웹훅 알림 기능을 제공하는 Alchemy Notify
+ - 최고 수준의 지원 및 신뢰성/안정성
+ - Alchemy의 NFT API
+ - Request Explorer, Mempool Watcher 및 Composer를 포함한 대시보드
+ - 통합된 테스트넷 수도꼭지 접근
+ - 18,000명의 사용자를 보유한 활성 Discord 빌더 커뮤니티
+
+- [**Allnodes**](https://www.allnodes.com/)
+ - [문서](https://docs.allnodes.com/)
+ - 기능
+ - Allnodes 포트폴리오 페이지에서 생성된 PublicNode 토큰 사용 시 속도 제한 없음.
+ - [PublicNode](https://www.publicnode.com)에서 개인 정보 보호에 중점을 둔 무료 RPC 엔드포인트(100개 이상의 블록체인) 제공
+ - 90개 이상의 블록체인을 위한 속도 제한 없는 전용 노드
+ - 30개 이상의 블록체인을 위한 전용 아카이브 노드
+ - 3개 지역(미국, EU, 아시아)에서 사용 가능
+ - [PublicNode](https://www.publicnode.com/snapshots)에서 100개 이상의 블록체인에 대한 스냅샷 제공
+ - 연중무휴 기술 지원 및 99.90%-99.98% 가동 시간 SLA(플랜에 따라 다름).
+ - 시간당 결제 요금제
+ - 신용카드, PayPal 또는 암호화폐로 결제
+
+- [**All That Node**](https://allthatnode.com/)
+ - [문서](https://docs.allthatnode.com/)
+ - 기능
+ - 무료 계층으로 하루에 50,000개의 요청 지원
+ - 40개 이상의 프로토콜 지원
+ - JSON-RPC(EVM, Tendermint), REST 및 Websocket API 지원
+ - 아카이브 데이터 무제한 액세스
+ - 24시간 기술 지원 및 99.9% 이상의 가동 시간
+ - 멀티 체인에서 수도꼭지 이용 가능
+ - 무제한 API 키로 무제한 엔드포인트 액세스
+ - Trace/Debug API 지원
+ - 자동 업데이트
+
+- [**Amazon Managed Blockchain**](https://aws.amazon.com/managed-blockchain/)
+ - [문서](https://aws.amazon.com/managed-blockchain/resources/)
+ - 기능
+ - 완전히 관리되는 이더리움 노드
+ - 6개 지역에서 이용 가능
+ - HTTP 및 안전한 WebSocket을 통한 JSON-RPC 지원
+ - 3개의 체인 지원
+ - SLA, AWS 24/7 지원
+ - Go-ethereum 및 Lighthouse
+
+- [**Ankr**](https://www.ankr.com/)
+ - [문서](https://docs.ankr.com/)
+ - 기능
+ - Ankr 프로토콜 - 8개 이상의 체인을 위한 공용 RPC API 엔드포인트에 대한 오픈 액세스
+ - 가장 가까운 사용 가능한 노드로 빠르고 신뢰할 수 있는 게이트웨이를 제공하기 위한 로드 밸런싱 및 노드 상태 모니터링
+ - 프리미엄 계층은 WSS 엔드포인트 및 무제한 속도 제한 활성화
+ - 40개 이상의 체인을 위한 원클릭 풀 노드 및 검증자 노드 배포
+ - 필요에 따라 확장 가능
+ - 분석 도구
+ - 대시보드
+ - RPC, HTTPS 및 WSS 엔드포인트
+ - 직접 지원
+
+- [**Blast**](https://blastapi.io/)
+ - [문서](https://docs.blastapi.io/)
+ - 기능
+ - RPC 및 WSS 지원
+ - 멀티 리전 노드 호스팅
+ - 탈중앙화 인프라
+ - 공용 API
+ - 전용 무료 플랜
+ - 다중 체인 지원 (17개 이상의 블록체인)
+ - 아카이브 노드
+ - 24/7 디스코드 지원
+ - 24/7 모니터링 및 알림
+ - 99.9%의 전반적인 SLA
+ - 암호화폐로 결제
+
+- [**BlockDaemon**](https://blockdaemon.com/)
+ - [문서](https://ubiquity.docs.blockdaemon.com/)
+ - 노드당 기준
+ - 대시보드
+ - 노드당 기준
+ - 분석
+
+- [**BlockPI**](https://blockpi.io/)
+ - [문서](https://docs.blockpi.io/)
+ - 기능
+ - 견고하고 분산된 노드 구조
+ - 최대 40개의 HTTPS 및 WSS 엔드포인트
+ - 무료 가입 패키지 및 월간 패키지
+ - 트레이스 메서드 + 아카이브 데이터 지원
+ - 최대 90일 유효 기간 패키지
+ - 맞춤형 플랜 및 사용량 기반 결제
+ - 암호화폐로 결제
+ - 직접 지원 및 기술 지원
+
+- [**Chainbase**](https://www.chainbase.com/)
+ - [문서](https://docs.chainbase.com)
+ - 기능
+ - 높은 가용성, 빠르고 확장 가능한 RPC 서비스
+ - 다중 체인 지원
+ - 무료 요금제
+ - 사용자 친화적인 대시보드
+ - RPC를 넘어서 블록체인 데이터 서비스를 제공
+
+- [**Chainstack**](https://chainstack.com/)
+ - [문서](https://docs.chainstack.com/)
+ - 기능
+ - 무료 공유 노드
+ - 공유 아카이브 노드
+ - GraphQL 지원
+ - RPC 및 WSS 엔드포인트
+ - 전용 풀 및 아카이브 노드
+ - 전용 배포에 대한 빠른 동기화 시간
+ - 사용자 클라우드 사용
+ - 시간당 결제 요금제
+ - 직접 24/7 지원
+
+- [**dRPC**](https://drpc.org/)
+ - [문서](https://drpc.org/docs)
+ - NodeCloud: 10달러(USD)부터 시작하는 플러그 앤 플레이 RPC 인프라—최고 속도, 무제한
+ - NodeCloud 기능:
+ - 185개 네트워크에 대한 API 지원
+ - 40개 이상의 공급자로 구성된 분산 풀
+ - 9개의 지리적 클러스터로 전 세계 서비스 제공
+ - AI 기반 로드 밸런싱 시스템
+ - 사용한 만큼 지불하는 정액 요금제—가격 인상, 만료, 약정 없음
+ - 무제한 키, 세분화된 키 조정, 팀 역할, 프런트엔드 보호
+ - 메서드당 20 컴퓨팅 유닛(CU)의 정액 요금
+ - [퍼블릭 엔드포인트 체인리스트](https://drpc.org/chainlist)
+ - [가격 계산기](https://drpc.org/pricing#calculator)
+ - NodeCore: 완전한 제어를 원하는 조직을 위한 오픈소스 스택
+
+- [**GetBlock**](https://getblock.io/)
+ - [문서](https://getblock.io/docs/get-started/authentication-with-api-key/)
+ - 기능
+ - 40개 이상의 블록체인 노드 액세스
+ - 하루 4만 건의 무료 요청
+ - 무제한 API 키 수
+ - 1GB/초의 높은 연결 속도
+ - 추적+아카이브
+ - 고급 분석
+ - 자동 업데이트
+ - 기술 지원
+
+- [**InfStones**](https://infstones.com/)
+ - 기능
+ - 무료 계층 옵션
+ - 필요에 따라 확장 가능
+ - 분석
+ - 대시보드
+ - 고유한 API 엔드포인트
+ - 전용 풀 노드
+ - 전용 배포에 대한 빠른 동기화 시간
+ - 직접 24/7 지원
+ - 50개 이상의 블록체인 노드 액세스
+
+- [**Infura**](https://infura.io/)
+ - [문서](https://infura.io/docs)
+ - 기능
+ - 무료 계층 옵션
+ - 필요에 따라 확장 가능
+ - 유료 아카이브 데이터
+ - 직접 지원
+ - 대시보드
+
+- [**Kaleido**](https://kaleido.io/)
+ - [문서](https://docs.kaleido.io/)
+ - 기능
+ - 무료 시작 계층
+ - 원클릭 이더리움 노드 배포
+ - 사용자 지정 가능한 클라이언트 및 알고리즘(Geth, Quorum & Besu || PoA, IBFT & Raft)
+ - 500개 이상의 관리 및 서비스 API
+ - 이더리움 트랜잭션 제출을 위한 RESTful 인터페이스 (Apache Kafka 지원)
+ - 이벤트 전송을 위한 아웃바운드 스트림 (Apache Kafka 지원)
+ - 방대한 "오프체인" 및 보조 서비스 컬렉션(예: 양방향 암호화 메시징 전송)
+ - 거버넌스 및 역할 기반 접근 제어를 통한 간단한 네트워크 온보딩
+ - 관리자 및 최종 사용자를 위한 고급 사용자 관리
+ - 매우 확장 가능하고 회복력이 강한 엔터프라이즈급 인프라
+ - 클라우드 HSM 개인 키 관리
+ - 이더리움 메인넷 연결
+ - ISO 27k 및 SOC 2, 유형 2 인증
+ - 동적 런타임 구성(예: 클라우드 통합 추가, 노드 인그레스 변경 등)
+ - 멀티 클라우드, 멀티 리전 및 하이브리드 배포 오케스트레이션 지원
+ - 간단한 시간별 SaaS 기반 가격 책정
+ - SLA 및 24x7 지원
+
+- [**Lava Network**](https://www.lavanet.xyz/)
+ - [문서](https://docs.lavanet.xyz/)
+ - 기능
+ - 무료 테스트넷 사용
+ - 높은 가동률을 위한 탈중앙화 이중화
+ - 오픈 소스
+ - 완전히 탈중앙화된 SDK
+ - Ethers.js 통합
+ - 직관적인 프로젝트 관리 인터페이스
+ - 합의 기반 데이터 무결성
+ - 멀티 체인 지원
+
+- [**Moralis**](https://moralis.io/)
+ - [문서](https://docs.moralis.io/)
+ - 기능
+ - 무료 공유 노드
+ - 무료 공유 아카이브 노드
+ - 개인정보 보호 중심 (로그 기록 정책 없음)
+ - 크로스 체인 지원
+ - 필요에 따라 확장 가능
+ - 대시보드
+ - 고유한 이더리움 SDK
+ - 고유한 API 엔드포인트
+ - 직접적인 기술 지원
+
+- [**NodeReal MegaNode**](https://nodereal.io/)
+ - [문서](https://docs.nodereal.io/docs/introduction)
+ - 기능
+ - 신뢰할 수 있고 빠르며 확장 가능한 RPC API 서비스
+ - 웹3 개발자를 위한 향상된 API
+ - 다중 체인 지원
+ - 무료로 시작하기
+
+- [**NOWNodes**](https://nownodes.io/)
+ - [문서](https://documenter.getpostman.com/view/13630829/TVmFkLwy)
+ - 기능
+ - 50개 이상의 블록체인 노드 액세스
+ - 무료 API 키
+ - 블록 탐색기
+ - API 응답 시간 ⩽ 1초
+ - 24/7 지원 팀
+ - 개인 계정 관리자
+ - 공유, 아카이브, 백업 및 전용 노드
+
+- [**Pocket Network**](https://www.pokt.network/)
+ - [문서](https://docs.pokt.network/home/)
+ - 기능
+ - 탈중앙화된 RPC 프로토콜 및 마켓플레이스
+ - 일일 1백만 요청 무료 티어 (엔드포인트당, 최대 2개)
+ - [퍼블릭 엔드포인트](https://docs.pokt.network/developers/public-endpoints)
+ - Pre-Stake+ 프로그램 (일일 1백만 요청 이상 필요 시)
+ - 15개 이상의 블록체인 지원
+ - 애플리케이션을 제공하며 POKT를 획득하는 6400개 이상의 노드
+ - 아카이브 노드, 트레이싱 기능이 있는 아카이브 노드 및 테스트넷 노드 지원
+ - 이더리움 메인넷 노드 클라이언트 다양성
+ - 단일 장애점 없음
+ - 제로 다운타임
+ - 비용 효율적인 거의 제로 토크노믹스 (네트워크 대역폭을 위한 POKT 한 번 스테이킹)
+ - 월간 고정 비용 없음, 인프라를 자산으로 전환
+ - 프로토콜에 내장된 로드 밸런싱
+ - 요청 및 시간당 노드 수를 무한대로 확장 가능
+ - 가장 개인적이고 검열 저항성이 높은 옵션
+ - 실질적인 개발자 지원
+ - [Pocket Portal](https://bit.ly/ETHorg_POKTportal) 대시보드 및 분석
+
+- [**QuickNode**](https://www.quicknode.com)
+ - [문서](https://www.quicknode.com/docs/)
+ - 기능
+ - 연중무휴 기술 지원 및 개발자 Discord 커뮤니티
+ - 지리적 균형, 다중 클라우드/메탈, 저지연 네트워크
+ - 다중 체인 지원 (Optimism, Arbitrum, Polygon + 11개 추가)
+ - 속도 및 안정성을 위한 중간 계층(호출 라우팅, 캐시, 인덱싱)
+ - 웹훅을 통한 스마트 계약 모니터링
+ - 직관적인 대시보드, 분석 도구, RPC 컴포저
+ - 고급 보안 기능 (JWT, 마스킹, 화이트리스트)
+ - NFT 데이터 및 분석 API
+ - [SOC2 인증](https://www.quicknode.com/security)
+ - 개발자부터 기업까지 적합
+
+- [**Rivet**](https://rivet.cloud/)
+ - [문서](https://rivet.readthedocs.io/en/latest/)
+ - 기능
+ - 무료 계층 옵션
+ - 필요에 따라 확장 가능
+
+- [**SenseiNode**](https://senseinode.com)
+ - [문서](https://docs.senseinode.com/)
+ - 기능
+ - 전용 및 공유 노드
+ - 대시보드
+ - AWS 외 다양한 라틴 아메리카 지역에서 여러 호스팅 제공자 이용
+ - Prysm 및 Lighthouse 클라이언트
+
+- [**SettleMint**](https://console.settlemint.com/)
+ - [문서](https://docs.settlemint.com/)
+ - 기능
+ - 무료 체험
+ - 필요에 따라 확장 가능
+ - GraphQL 지원
+ - RPC 및 WSS 엔드포인트
+ - 전용 풀 노드
+ - 사용자 클라우드 사용
+ - 분석 도구
+ - 대시보드
+ - 시간당 결제 요금제
+ - 직접 지원
+
+- [**Tenderly**](https://tenderly.co/web3-gateway)
+ - [문서](https://docs.tenderly.co/web3-gateway/web3-gateway)
+ - 기능
+ - 월 2,500만 Tenderly 유닛을 포함한 무료 티어
+ - 역사적 데이터 무료 접근
+ - 최대 8배 빠른 읽기 집중 워크로드
+ - 100% 일관된 읽기 액세스
+ - JSON-RPC 엔드포인트
+ - UI 기반의 RPC 요청 빌더 및 요청 미리보기
+ - Tenderly의 개발, 디버깅 및 테스트 도구와 밀접하게 통합됨
+ - 트랜잭션 시뮬레이션
+ - 사용 분석 및 필터링
+ - 간편한 액세스 키 관리
+ - 채팅, 이메일, 디스코드를 통한 전용 엔지니어링 지원
+
+- [**Tokenview**](https://services.tokenview.io/)
+ - [문서](https://services.tokenview.io/docs?type=nodeService)
+ - 기능
+ - 연중무휴 기술 지원 및 개발자 텔레그램 커뮤니티
+ - 멀티체인 지원 (비트코인, 이더리움, 트론, BNB 스마트 체인, 이더리움 클래식)
+ - RPC 및 WSS 엔드포인트 모두 사용 가능
+ - 무제한 아카이브 데이터 API 액세스
+ - 요청 탐색기 및 메인풀 감시기를 포함한 대시보드
+ - NFT 데이터 API 및 Webhook 알림
+ - 암호화폐로 결제
+ - 추가 행동 요구 사항을 위한 외부 지원
+
+- [**Watchdata**](https://watchdata.io/)
+ - [문서](https://docs.watchdata.io/)
+ - 기능
+ - 데이터 신뢰성
+ - 중단 없는 연결로 다운타임 없음
+ - 프로세스 자동화
+ - 무료 요금제
+ - 모든 사용자에게 적합한 높은 제한
+ - 다양한 노드 지원
+ - 리소스 확장
+ - 높은 처리 속도
+
+- [**ZMOK**](https://zmok.io/)
+ - [문서](https://docs.zmok.io/)
+ - 기능
+ - 서비스로서의 프론트러닝
+ - 검색/필터링 방법을 갖춘 글로벌 트랜잭션 메인풀
+ - 무제한 TX 수수료 및 무한 가스로 트랜잭션 전송
+ - 새로운 블록을 가장 빠르게 가져오고 블록체인을 읽음
+ - API 호출당 최고의 가격 보장
+
+- [**Zeeve**](https://www.zeeve.io/)
+ - [문서](https://www.zeeve.io/docs/)
+ - 기능
+ - 엔터프라이즈급 코드 없는 자동화 플랫폼으로 블록체인 노드 및 네트워크 배포, 모니터링 및 관리 제공
+ - 30개 이상의 프로토콜 및 통합 지원, 계속 추가 중
+ - 탈중앙화 스토리지, 탈중앙화 아이덴티티, 블록체인 원장 데이터 API와 같은 부가 웹3 인프라 서비스로 실제 사례에 사용
+ - 24/7 지원 및 사전 모니터링으로 노드의 건강 상태를 항상 보장
+ - RPC 엔드포인트는 인증된 API 액세스, 직관적인 대시보드 및 분석을 통한 손쉬운 관리 제공
+ - 관리형 클라우드 및 사용자가 소유한 클라우드 옵션을 모두 제공하며 AWS, Azure, Google Cloud, Digital Ocean 및 온프레미스와 같은 모든 주요 클라우드 제공업체 지원
+ - 지능형 라우팅을 사용하여 항상 사용자의 위치와 가장 가까운 노드를 타격함
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 노드 서비스 목록](https://ethereumnodes.com/)
+
+## 관련 주제 {#related-topics}
+
+- [노드 및 클라이언트](/developers/docs/nodes-and-clients/)
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [Alchemy를 사용한 이더리움 개발 시작하기](/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/)
+- [Web3 및 Alchemy를 사용하여 트랜잭션 보내기 가이드](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
diff --git a/public/content/translations/ko/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/ko/developers/docs/nodes-and-clients/run-a-node/index.md
new file mode 100644
index 00000000000..2e7f6327f42
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -0,0 +1,484 @@
+---
+title: "자체 이더리움 노드 가동하기"
+description: "자체 이더리움 클라이언트 인스턴스 실행에 대한 일반적인 소개입니다."
+lang: ko
+sidebarDepth: 2
+---
+
+자체 노드를 실행하면 다양한 이점을 얻고 새로운 가능성을 열며 생태계를 지원하는 데 도움이 됩니다. 이 페이지에서는 자체 노드를 가동하고 이더리움 트랜잭션 검증에 참여하는 방법을 안내합니다.
+
+[병합(The Merge)](/roadmap/merge) 이후 이더리움 노드를 실행하려면 **실행 레이어(EL)** 클라이언트와 **합의 레이어(CL)** 클라이언트, 이렇게 두 개의 클라이언트가 필요하다는 점에 유의하세요. 이 페이지에서는 이 두 클라이언트를 설치, 구성 및 연결하여 이더리움 노드를 실행하는 방법을 보여줍니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이더리움 노드가 무엇인지, 그리고 왜 클라이언트를 실행해야 하는지 이해해야 합니다. 이 내용은 [노드와 클라이언트](/developers/docs/nodes-and-clients/)에서 다룹니다.
+
+노드 실행이라는 주제를 처음 접하시거나 기술적인 부담이 적은 방법을 찾고 계신다면, 먼저 [이더리움 노드 실행](/run-a-node)에 대한 사용자 친화적인 소개 자료를 확인하시는 것을 추천합니다.
+
+## 접근 방식 선택 {#choosing-approach}
+
+노드 가동의 첫 번째 단계는 접근 방식을 선택하는 것입니다. 요구사항과 다양한 가능성을 바탕으로 클라이언트 구현(실행 및 합의 클라이언트 모두), 환경(하드웨어, 시스템), 클라이언트 설정 매개변수를 선택해야 합니다.
+
+이 페이지에서는 이러한 결정을 내리는 데 도움을 드리고, 여러분의 이더리움 인스턴스를 실행하는 가장 적합한 방법을 찾는 데 도움을 드릴 것입니다.
+
+클라이언트 구현 중에서 선택하려면, 사용 가능한 모든 메인넷 지원 [실행 클라이언트](/developers/docs/nodes-and-clients/#execution-clients)와 [합의 클라이언트](/developers/docs/nodes-and-clients/#consensus-clients)를 살펴보고 [클라이언트 다양성](/developers/docs/nodes-and-clients/client-diversity)에 대해 알아보세요.
+
+클라이언트의 [요구사항](#requirements)을 고려하여 자체 [하드웨어에서 실행할지 또는 클라우드에서 실행할지](#local-vs-cloud) 결정하세요.
+
+환경을 준비한 후, [초보자 친화적인 인터페이스](#automatized-setup)를 사용하거나 고급 옵션이 있는 터미널을 사용하여 [수동으로](#manual-setup) 선택한 클라이언트를 설치하세요.
+
+노드가 실행되고 동기화되면 [사용할](#using-the-node) 준비가 된 것이지만, [유지 관리](#operating-the-node)에도 계속 신경 써야 합니다.
+
+
+
+### 환경 및 하드웨어 {#environment-and-hardware}
+
+#### 로컬 또는 클라우드 {#local-vs-cloud}
+
+이더리움 클라이언트는 일반 소비자용 컴퓨터에서 실행할 수 있으며, 예를 들어 채굴기와 같은 특수 하드웨어가 필요하지 않습니다. 따라서 필요에 따라 노드를 배포하는 데 다양한 옵션이 있습니다.
+간단하게 설명하기 위해 로컬 물리적 머신과 클라우드 서버 양쪽에서 노드를 실행하는 경우를 생각해 보겠습니다.
+
+- 클라우드
+ - 공급자는 높은 서버 가동 시간과 고정 공인 IP 주소를 제공합니다.
+ - 전용 서버나 가상 서버를 이용하는 것이 직접 구축하는 것보다 더 편할 수 있습니다.
+ - 단점은 서버 제공업체라는 제3자를 신뢰해야 한다는 점입니다.
+ - 풀 노드에 필요한 저장 공간 크기 때문에, 대여 서버의 가격이 비싸질 수 있습니다.
+- 자체 하드웨어
+ - 더 신뢰가 필요 없고 자주적인 접근 방식
+ - 일회성 투자
+ - 사전 구성된 머신을 구매하는 옵션
+ - 머신과 네트워킹을 물리적으로 준비, 유지 관리하고 잠재적인 문제를 해결해야 합니다.
+
+두 옵션 모두 위에서 요약한 바와 같이 서로 다른 장점을 가지고 있습니다. 클라우드 솔루션을 찾고 있다면, 많은 전통적인 클라우드 컴퓨팅 제공업체 외에도 노드 배포에 중점을 둔 서비스도 있습니다. 호스팅된 노드에 대한 더 많은 옵션을 보려면 [서비스형 노드](/developers/docs/nodes-and-clients/nodes-as-a-service/)를 확인하세요.
+
+#### 하드웨어 {#hardware}
+
+그러나 검열 저항적인 탈중앙화 네트워크는 클라우드 제공업체에 의존해서는 안 됩니다. 대신, 자체 로컬 하드웨어에서 노드를 실행하는 것이 생태계에 더 건강합니다. [추정치](https://www.ethernodes.org/networkType/cl/Hosting)에 따르면 상당수의 노드가 클라우드에서 실행되고 있으며, 이는 단일 장애점이 될 수 있습니다.
+
+이더리움 클라이언트는 컴퓨터, 노트북, 서버, 심지어 단일 보드 컴퓨터에서도 실행할 수 있습니다. 개인용 컴퓨터에서 클라이언트를 실행하는 것도 가능하지만, 노드 전용 머신을 사용하면 주 컴퓨터에 미치는 영향을 최소화하면서 성능과 보안을 크게 향상시킬 수 있습니다.
+
+자체 하드웨어를 사용하는 것은 매우 쉬울 수 있습니다. 기술적인 지식이 있는 사람들을 위한 고급 설정뿐만 아니라 많은 간단한 옵션이 있습니다. 그럼 여러분의 머신에서 이더리움 클라이언트를 실행하기 위한 요구사항과 수단을 살펴보겠습니다.
+
+#### 요구사항 {#requirements}
+
+하드웨어 요구사항은 클라이언트마다 다르지만, 노드는 동기화 상태만 유지하면 되므로 일반적으로 그렇게 높지 않습니다. 훨씬 더 많은 컴퓨팅 파워를 필요로 하는 채굴과 혼동하지 마세요. 하지만 더 강력한 하드웨어를 사용하면 동기화 시간과 성능이 향상됩니다.
+
+클라이언트를 설치하기 전에 컴퓨터에 실행할 수 있는 충분한 리소스가 있는지 확인하십시오. 최소 및 권장 요구사항은 아래에서 확인할 수 있습니다.
+
+하드웨어의 병목 현상은 대부분 디스크 공간입니다. 이더리움 블록체인을 동기화하는 것은 입출력이 매우 많고 많은 공간을 필요로 합니다. 동기화 후에도 수백 GB의 여유 공간이 있는 솔리드 스테이트 드라이브(SSD)를 사용하는 것이 가장 좋습니다.
+
+데이터베이스의 크기와 초기 동기화 속도는 선택한 클라이언트, 구성 및 [동기화 전략](/developers/docs/nodes-and-clients/#sync-modes)에 따라 다릅니다.
+
+또한 인터넷 연결이 [대역폭 상한](https://wikipedia.org/wiki/Data_cap)에 의해 제한되지 않는지 확인하세요. 초기 동기화 및 네트워크로 브로드캐스트되는 데이터가 제한을 초과할 수 있으므로 무제한 연결을 사용하는 것이 좋습니다.
+
+##### 운영 체제
+
+모든 클라이언트는 주요 운영 체제(Linux, MacOS, Windows)를 지원합니다. 이는 자신에게 가장 적합한 운영 체제(OS)가 설치된 일반 데스크톱이나 서버 컴퓨터에서 노드를 실행할 수 있음을 의미합니다. 잠재적인 문제와 보안 취약점을 피하기 위해 OS를 최신 상태로 유지하십시오.
+
+##### 최소 요구사항
+
+- 2코어 이상 CPU
+- 8GB RAM
+- 2TB SSD
+- 10 MBit/s 이상 대역폭
+
+##### 권장 사양
+
+- 4코어 이상의 빠른 CPU
+- 16GB 이상 RAM
+- 2TB 이상의 빠른 SSD
+- 25 MBit/s 이상 대역폭
+
+선택한 동기화 모드와 클라이언트는 공간 요구사항에 영향을 미치지만, 아래에 각 클라이언트에 필요한 디스크 공간을 추정해 두었습니다.
+
+| 클라이언트 | 디스크 크기(스냅 동기화) | 디스크 크기(전체 아카이브) |
+| ---------- | --------------------------------- | ---------------------------------- |
+| Besu | 800GB+ | 12TB+ |
+| Erigon | 해당 없음 | 2.5TB+ |
+| Geth | 500GB+ | 12TB+ |
+| Nethermind | 500GB+ | 12TB+ |
+| Reth | 해당 없음 | 2.2TB+ |
+
+- 참고: Erigon과 Reth는 스냅 동기화를 제공하지 않지만, 전체 정리(Full Pruning)는 가능합니다(Erigon의 경우 약 2TB, Reth의 경우 약 1.2TB).
+
+합의 클라이언트의 경우, 공간 요구사항은 클라이언트 구현 및 활성화된 기능(예: 검증인 슬래셔)에 따라 다르지만, 일반적으로 비콘 데이터에 추가로 200GB가 필요하다고 생각하면 됩니다. 검증인 수가 많아지면 대역폭 부하도 증가합니다. [이 분석](https://mirror.xyz/0x934e6B4D7eee305F8C9C42b46D6EEA09CcFd5EDc/b69LBy8p5UhcGJqUAmT22dpvdkU-Pulg2inrhoS9Mbc)에서 합의 클라이언트 요구사항에 대한 자세한 내용을 확인할 수 있습니다.
+
+#### 플러그 앤 플레이 솔루션 {#plug-and-play}
+
+자체 하드웨어로 노드를 실행하는 가장 쉬운 방법은 플러그 앤 플레이 박스를 사용하는 것입니다. 공급업체의 사전 구성된 머신은 가장 간단한 경험을 제공합니다. 주문하고, 연결하고, 실행하면 됩니다. 소프트웨어를 모니터링하고 제어하기 위한 직관적인 가이드와 대시보드를 통해 모든 것이 사전 구성되어 자동으로 실행됩니다.
+
+- [DappNode](https://dappnode.io/)
+- [Avado](https://ava.do/)
+
+#### 단일 보드 컴퓨터의 이더리움 {#ethereum-on-a-single-board-computer}
+
+이더리움 노드를 실행하는 쉽고 저렴한 방법은 라즈베리 파이(Raspberry Pi)와 같은 ARM 아키텍처를 가진 단일 보드 컴퓨터를 사용하는 것입니다. [ARM 기반 이더리움(Ethereum on ARM)](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)은 라즈베리 파이 및 기타 ARM 보드를 위한 여러 실행 및 합의 클라이언트의 실행하기 쉬운 이미지를 제공합니다.
+
+이러한 작고 저렴하며 효율적인 장치는 집에서 노드를 실행하는 데 이상적이지만 성능이 제한적이라는 점을 명심하십시오.
+
+## 노드 가동하기 {#spinning-up-node}
+
+실제 클라이언트 설정은 자동화된 런처를 사용하거나 클라이언트 소프트웨어를 직접 설정하여 수동으로 수행할 수 있습니다.
+
+고급 사용자가 아닌 경우, 설치를 안내하고 클라이언트 설정 프로세스를 자동화하는 소프트웨어인 런처를 사용하는 것이 좋습니다. 하지만 터미널 사용 경험이 있다면 수동 설정 단계도 쉽게 따라 할 수 있을 것입니다.
+
+### 가이드 설정 {#automatized-setup}
+
+여러 사용자 친화적인 프로젝트는 클라이언트 설정 경험을 향상시키는 것을 목표로 합니다. 이러한 런처는 자동 클라이언트 설치 및 구성을 제공하며, 일부는 클라이언트의 가이드 설정 및 모니터링을 위한 그래픽 인터페이스를 제공하기도 합니다.
+
+다음은 몇 번의 클릭만으로 클라이언트를 설치하고 제어하는 데 도움이 되는 몇 가지 프로젝트입니다.
+
+- [DappNode](https://docs.dappnode.io/docs/user/getting-started/choose-your-path) - DappNode는 공급업체의 머신만 제공하는 것이 아닙니다. 소프트웨어, 실제 노드 런처 및 많은 기능을 갖춘 제어 센터는 임의의 하드웨어에서 사용할 수 있습니다.
+- [EthPillar](https://www.coincashew.com/coins/overview-eth/ethpillar) - 풀 노드를 설정하는 가장 빠르고 쉬운 방법입니다. 원라이너 설정 도구 및 노드 관리 TUI. 무료입니다. 오픈 소스. 단독 스테이커에 의한 이더리움을 위한 공공재입니다. ARM64 및 AMD64 지원.
+- [eth-docker](https://eth-docker.net/) - 쉽고 안전한 스테이킹에 중점을 둔 Docker를 사용한 자동 설정으로, 기본적인 터미널 및 Docker 지식이 필요하며, 약간 더 고급 사용자에게 권장됩니다.
+- [Stereum](https://stereum-dev.github.io/ethereum-node-web-docs) - GUI 설정 가이드, 제어 센터 및 기타 여러 기능과 함께 SSH 연결을 통해 원격 서버에 클라이언트를 설치하기 위한 런처입니다.
+- [NiceNode](https://www.nicenode.xyz/) - 컴퓨터에서 노드를 실행하기 위한 간단한 사용자 경험을 제공하는 런처입니다. 클라이언트를 선택하고 몇 번의 클릭만으로 시작하세요. 아직 개발 중입니다.
+- [Sedge](https://docs.sedge.nethermind.io/docs/intro) - CLI 마법사를 사용하여 Docker 구성을 자동으로 생성하는 노드 설정 도구입니다. Nethermind에서 Go로 작성되었습니다.
+
+### 수동 클라이언트 설정 {#manual-setup}
+
+다른 옵션은 클라이언트 소프트웨어를 수동으로 다운로드, 확인 및 구성하는 것입니다. 일부 클라이언트는 그래픽 인터페이스를 제공하지만, 수동 설정은 여전히 터미널에 대한 기본적인 기술이 필요하지만 훨씬 더 많은 다용성을 제공합니다.
+
+앞서 설명했듯이, 자체 이더리움 노드를 설정하려면 합의 및 실행 클라이언트 쌍을 실행해야 합니다. 일부 클라이언트는 다른 종류의 라이트 클라이언트를 포함할 수 있으며 다른 소프트웨어 없이도 동기화할 수 있습니다. 하지만 완전한 무신뢰 검증을 위해서는 두 구현이 모두 필요합니다.
+
+#### 클라이언트 소프트웨어 받기 {#getting-the-client}
+
+먼저 선호하는 [실행 클라이언트](/developers/docs/nodes-and-clients/#execution-clients)와 [합의 클라이언트](/developers/docs/nodes-and-clients/#consensus-clients) 소프트웨어를 구해야 합니다.
+
+운영 체제와 아키텍처에 맞는 실행 가능한 애플리케이션이나 설치 패키지를 간단히 다운로드할 수 있습니다. 다운로드한 패키지의 서명과 체크섬을 항상 확인하십시오. 일부 클라이언트는 더 쉬운 설치 및 업데이트를 위해 리포지토리 또는 Docker 이미지를 제공하기도 합니다. 모든 클라이언트는 오픈 소스이므로 소스에서 직접 빌드할 수도 있습니다. 이것은 더 고급 방법이지만, 경우에 따라 필요할 수 있습니다.
+
+각 클라이언트 설치 지침은 위 클라이언트 목록에 링크된 문서에서 제공됩니다.
+
+다음은 사전 빌드된 바이너리 또는 설치 지침을 찾을 수 있는 클라이언트의 릴리스 페이지입니다.
+
+##### 실행 클라이언트
+
+- [Besu](https://github.com/hyperledger/besu/releases)
+- [Erigon](https://github.com/ledgerwatch/erigon/releases)
+- [Geth](https://geth.ethereum.org/downloads/)
+- [Nethermind](https://downloads.nethermind.io/)
+- [Reth](https://reth.rs/installation/installation.html)
+
+클라이언트 다양성은 [실행 레이어의 문제](/developers/docs/nodes-and-clients/client-diversity/#execution-layer)라는 점도 주목할 가치가 있습니다. 독자들은 소수 실행 클라이언트를 실행하는 것을 고려하는 것이 좋습니다.
+
+##### 합의 클라이언트
+
+- [Lighthouse](https://github.com/sigp/lighthouse/releases/latest)
+- [Lodestar](https://chainsafe.github.io/lodestar/run/getting-started/installation#build-from-source) (사전 빌드된 바이너리를 제공하지 않으며, Docker 이미지 또는 소스에서 빌드해야 함)
+- [Nimbus](https://github.com/status-im/nimbus-eth2/releases/latest)
+- [Prysm](https://github.com/prysmaticlabs/prysm/releases/latest)
+- [Teku](https://github.com/ConsenSys/teku/releases)
+
+[클라이언트 다양성](/developers/docs/nodes-and-clients/client-diversity/)은 검증인을 실행하는 합의 노드에 매우 중요합니다. 대부분의 검증인이 단일 클라이언트 구현을 실행하면 네트워크 보안이 위험에 처합니다. 따라서 소수 클라이언트를 선택하는 것을 고려하는 것이 좋습니다.
+
+[최신 네트워크 클라이언트 사용 현황 보기](https://clientdiversity.org/) 및 [클라이언트 다양성](/developers/docs/nodes-and-clients/client-diversity)에 대해 자세히 알아보세요.
+
+##### 소프트웨어 확인
+
+인터넷에서 소프트웨어를 다운로드할 때는 무결성을 확인하는 것이 좋습니다. 이 단계는 선택 사항이지만, 특히 이더리움 클라이언트와 같은 중요한 인프라 구성 요소의 경우 잠재적인 공격 벡터를 인식하고 이를 피하는 것이 중요합니다. 사전 빌드된 바이너리를 다운로드했다면, 이를 신뢰해야 하며 공격자가 실행 파일을 악성 파일로 바꿀 수 있는 위험을 감수해야 합니다.
+
+개발자들은 릴리스된 바이너리를 PGP 키로 서명하므로, 여러분이 실행하는 소프트웨어가 정확히 그들이 만든 것임을 암호학적으로 확인할 수 있습니다. 개발자들이 사용하는 공개 키를 얻기만 하면 되며, 이는 클라이언트 릴리스 페이지나 문서에서 찾을 수 있습니다. 클라이언트 릴리스와 서명을 다운로드한 후, [GnuPG](https://gnupg.org/download/index.html)와 같은 PGP 구현을 사용하여 쉽게 확인할 수 있습니다. [Linux](https://www.tecmint.com/verify-pgp-signature-downloaded-software/) 또는 [Windows/MacOS](https://freedom.press/training/verifying-open-source-software/)에서 `gpg`를 사용하여 오픈 소스 소프트웨어를 확인하는 튜토리얼을 확인하십시오.
+
+또 다른 확인 방법은 다운로드한 소프트웨어의 해시(고유한 암호화 지문)가 개발자가 제공한 것과 일치하는지 확인하는 것입니다. 이것은 PGP를 사용하는 것보다 훨씬 쉬우며, 일부 클라이언트는 이 옵션만 제공합니다. 다운로드한 소프트웨어에서 해시 함수를 실행하고 릴리스 페이지의 것과 비교하기만 하면 됩니다. 예를 들어,
+
+```sh
+sha256sum teku-22.6.1.tar.gz
+
+9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde
+```
+
+#### 클라이언트 설정 {#client-setup}
+
+클라이언트 소프트웨어를 설치, 다운로드 또는 컴파일한 후에는 실행할 준비가 된 것입니다. 이는 적절한 구성으로 실행해야 함을 의미합니다. 클라이언트는 다양한 기능을 활성화할 수 있는 풍부한 구성 옵션을 제공합니다.
+
+클라이언트 성능과 데이터 사용량에 상당한 영향을 미칠 수 있는 옵션부터 시작하겠습니다. [동기화 모드](/developers/docs/nodes-and-clients/#sync-modes)는 블록체인 데이터를 다운로드하고 검증하는 다양한 방법을 나타냅니다. 노드를 시작하기 전에 사용할 네트워크와 동기화 모드를 결정해야 합니다. 가장 중요하게 고려해야 할 사항은 클라이언트에 필요한 디스크 공간과 동기화 시간입니다. 기본 동기화 모드가 무엇인지 확인하려면 클라이언트 문서를 주의 깊게 살펴보십시오. 그것이 마음에 들지 않으면 보안 수준, 사용 가능한 데이터 및 비용에 따라 다른 것을 선택하십시오. 동기화 알고리즘 외에도 다양한 종류의 오래된 데이터를 정리하도록 설정할 수도 있습니다. 정리를 사용하면 오래된 데이터를 삭제할 수 있습니다. 즉, 최근 블록에서 도달할 수 없는 상태 트리 노드를 제거합니다.
+
+다른 기본 구성 옵션으로는 네트워크(메인넷 또는 테스트넷) 선택, RPC 또는 웹소켓을 위한 HTTP 엔드포인트 활성화 등이 있습니다. 모든 기능과 옵션은 클라이언트 문서에서 찾을 수 있습니다. 다양한 클라이언트 구성은 CLI 또는 구성 파일에서 직접 해당 플래그로 클라이언트를 실행하여 설정할 수 있습니다. 각 클라이언트는 약간씩 다릅니다. 구성 옵션에 대한 자세한 내용은 항상 공식 문서나 도움말 페이지를 참조하십시오.
+
+테스트 목적으로, 테스트넷 네트워크 중 하나에서 클라이언트를 실행하는 것을 선호할 수 있습니다. [지원되는 네트워크 개요 보기](/developers/docs/nodes-and-clients/#execution-clients).
+
+기본 구성을 갖춘 실행 클라이언트 실행 예제는 다음 섹션에서 찾을 수 있습니다.
+
+#### 실행 클라이언트 시작하기 {#starting-the-execution-client}
+
+이더리움 클라이언트 소프트웨어를 시작하기 전에 환경이 준비되었는지 마지막으로 확인하십시오. 예를 들어, 다음을 확인하십시오.
+
+- 선택한 네트워크와 동기화 모드를 고려하여 충분한 디스크 공간이 있는지 확인합니다.
+- 메모리와 CPU가 다른 프로그램에 의해 중단되지 않았는지 확인합니다.
+- 운영 체제가 최신 버전으로 업데이트되었는지 확인합니다.
+- 시스템의 시간과 날짜가 정확한지 확인합니다.
+- 라우터와 방화벽이 수신 포트에서 연결을 허용하는지 확인합니다. 기본적으로 이더리움 클라이언트는 수신기(TCP) 포트와 검색(UDP) 포트를 사용하며, 둘 다 기본적으로 30303입니다.
+
+모든 것이 올바르게 작동하는지 확인하기 위해 먼저 테스트넷에서 클라이언트를 실행하십시오.
+
+기본값이 아닌 클라이언트 설정은 시작 시 선언해야 합니다. 플래그나 구성 파일을 사용하여 선호하는 구성을 선언할 수 있습니다. 각 클라이언트의 기능 집합과 구성 구문은 다릅니다. 자세한 내용은 클라이언트 문서를 확인하십시오.
+
+실행 및 합의 클라이언트는 [Engine API](https://github.com/ethereum/execution-apis/tree/main/src/engine)에 명시된 인증된 엔드포인트를 통해 통신합니다. 합의 클라이언트에 연결하려면 실행 클라이언트는 알려진 경로에 [`jwtsecret`](https://jwt.io/)을 생성해야 합니다. 보안 및 안정성상의 이유로 클라이언트는 동일한 머신에서 실행되어야 하며, 두 클라이언트 모두 로컬 RPC 연결을 인증하는 데 사용되므로 이 경로를 알아야 합니다. 실행 클라이언트는 또한 인증된 API에 대한 수신 포트를 정의해야 합니다.
+
+이 토큰은 클라이언트 소프트웨어에 의해 자동으로 생성되지만, 경우에 따라 직접 생성해야 할 수도 있습니다. [OpenSSL](https://www.openssl.org/)을 사용하여 생성할 수 있습니다.
+
+```sh
+openssl rand -hex 32 > jwtsecret
+```
+
+#### 실행 클라이언트 실행하기 {#running-an-execution-client}
+
+이 섹션에서는 실행 클라이언트를 시작하는 방법을 안내합니다. 이는 다음과 같은 설정으로 클라이언트를 시작하는 기본 구성의 예시일 뿐입니다.
+
+- 연결할 네트워크를 지정합니다. 이 예제에서는 메인넷입니다.
+ - 설정의 예비 테스트를 위해 [테스트넷 중 하나](/developers/docs/networks/)를 대신 선택할 수 있습니다.
+- 블록체인을 포함한 모든 데이터가 저장될 데이터 디렉터리를 정의합니다.
+ - 경로를 실제 경로로 대체해야 합니다. 예를 들어 외부 드라이브를 가리키도록 합니다.
+- 클라이언트와 통신하기 위한 인터페이스를 활성화합니다.
+ - 합의 클라이언트와 통신하기 위한 JSON-RPC 및 Engine API 포함
+- 인증된 API를 위한 `jwtsecret` 경로를 정의합니다.
+ - 예제 경로를 클라이언트가 액세스할 수 있는 실제 경로로 대체해야 합니다. 예: `/tmp/jwtsecret`
+
+이것은 기본적인 예제일 뿐이며, 다른 모든 설정은 기본값으로 설정됩니다. 기본값, 설정 및 기능에 대해 자세히 알아보려면 각 클라이언트의 문서를 주의 깊게 살펴보십시오. 검증인 실행, 모니터링 등과 같은 더 많은 기능을 사용하려면 특정 클라이언트의 문서를 참조하십시오.
+
+> 예제의 백슬래시 ``는 서식 목적으로만 사용되며, 구성 플래그는 한 줄로 정의할 수 있습니다.
+
+##### Besu 실행
+
+이 예제는 메인넷에서 Besu를 시작하고, 블록체인 데이터를 `/data/ethereum`에 기본 형식으로 저장하며, 합의 클라이언트 연결을 위해 JSON-RPC 및 Engine RPC를 활성화합니다. Engine API는 토큰 `jwtsecret`로 인증되며 `localhost`에서의 호출만 허용됩니다.
+
+```sh
+besu --network=mainnet \
+ --data-path=/data/ethereum \
+ --rpc-http-enabled=true \
+ --engine-rpc-enabled=true \
+ --engine-host-allowlist="*" \
+ --engine-jwt-enabled=true \
+ --engine-jwt-secret=/path/to/jwtsecret
+```
+
+Besu는 또한 일련의 질문을 하고 구성 파일을 생성하는 런처 옵션도 함께 제공됩니다. 다음을 사용하여 대화형 런처를 실행합니다.
+
+```sh
+besu --Xlauncher
+```
+
+[Besu 문서](https://besu.hyperledger.org/public-networks/get-started/start-node/)에는 추가 옵션과 구성 세부 정보가 포함되어 있습니다.
+
+##### Erigon 실행
+
+이 예제는 메인넷에서 Erigon을 시작하고, `/data/ethereum`에 블록체인 데이터를 저장하며, JSON-RPC를 활성화하고, 허용되는 네임스페이스를 정의하며, `jwtsecret` 경로로 정의된 합의 클라이언트 연결을 위한 인증을 활성화합니다.
+
+```sh
+erigon --chain mainnet \
+ --datadir /data/ethereum \
+ --http --http.api=engine,eth,web3,net \
+ --authrpc.jwtsecret=/path/to/jwtsecret
+```
+
+Erigon은 기본적으로 8GB HDD로 전체 동기화를 수행하며, 이로 인해 2TB 이상의 아카이브 데이터가 생성됩니다. `datadir`이 충분한 여유 공간이 있는 디스크를 가리키는지 확인하거나, 다양한 종류의 데이터를 정리할 수 있는 `--prune` 플래그를 살펴보십시오. 자세한 내용은 Erigon의 `--help`를 확인하십시오.
+
+##### Geth 실행
+
+이 예제는 메인넷에서 Geth를 시작하고, `/data/ethereum`에 블록체인 데이터를 저장하며, JSON-RPC를 활성화하고 허용되는 네임스페이스를 정의합니다. 또한 합의 클라이언트 연결을 위한 인증을 활성화하며, 이는 `jwtsecret` 경로와 허용되는 연결을 정의하는 옵션(이 예제에서는 `localhost`에서만)이 필요합니다.
+
+```sh
+geth --mainnet \
+ --datadir "/data/ethereum" \
+ --http --authrpc.addr localhost \
+ --authrpc.vhosts="localhost" \
+ --authrpc.port 8551
+ --authrpc.jwtsecret=/path/to/jwtsecret
+```
+
+모든 구성 옵션에 대한 [문서](https://geth.ethereum.org/docs/fundamentals/command-line-options)를 확인하고 [합의 클라이언트와 함께 Geth 실행](https://geth.ethereum.org/docs/getting-started/consensus-clients)에 대해 자세히 알아보십시오.
+
+##### Nethermind 실행
+
+Nethermind는 다양한 [설치 옵션](https://docs.nethermind.io/get-started/installing-nethermind)을 제공합니다. 패키지에는 가이드 설정이 포함된 런처를 비롯한 다양한 바이너리가 포함되어 있어 대화형으로 구성을 생성하는 데 도움이 됩니다. 또는 실행 파일 자체인 Runner를 찾아 구성 플래그와 함께 실행할 수 있습니다. JSON-RPC는 기본적으로 활성화되어 있습니다.
+
+```sh
+Nethermind.Runner --config mainnet \
+ --datadir /data/ethereum \
+ --JsonRpc.JwtSecretFile=/path/to/jwtsecret
+```
+
+Nethermind 문서는 합의 클라이언트와 함께 Nethermind를 실행하는 [완벽한 가이드](https://docs.nethermind.io/get-started/running-node/)를 제공합니다.
+
+실행 클라이언트는 핵심 기능, 선택된 엔드포인트를 초기화하고 피어를 찾기 시작합니다. 피어를 성공적으로 발견한 후 클라이언트는 동기화를 시작합니다. 실행 클라이언트는 합의 클라이언트로부터의 연결을 기다립니다. 클라이언트가 현재 상태로 성공적으로 동기화되면 현재 블록체인 데이터를 사용할 수 있습니다.
+
+##### Reth 실행
+
+이 예제는 기본 데이터 위치를 사용하여 메인넷에서 Reth를 시작합니다. JSON-RPC 및 Engine RPC 인증을 활성화하여 `jwtsecret` 경로로 정의된 합의 클라이언트에 연결하며, `localhost`에서의 호출만 허용됩니다.
+
+```sh
+reth node \
+ --authrpc.jwtsecret /path/to/jwtsecret \
+ --authrpc.addr 127.0.0.1 \
+ --authrpc.port 8551
+```
+
+기본 데이터 디렉터리에 대해 자세히 알아보려면 [Reth 구성](https://reth.rs/run/config.html?highlight=data%20directory#configuring-reth)을 참조하십시오. [Reth의 문서](https://reth.rs/run/mainnet.html)에는 추가 옵션과 구성 세부 정보가 포함되어 있습니다.
+
+#### 합의 클라이언트 시작하기 {#starting-the-consensus-client}
+
+합의 클라이언트는 실행 클라이언트와의 로컬 RPC 연결을 설정하기 위해 올바른 포트 구성으로 시작해야 합니다. 합의 클라이언트는 노출된 실행 클라이언트 포트를 구성 인수로 사용하여 실행해야 합니다.
+
+합의 클라이언트는 또한 둘 사이의 RPC 연결을 인증하기 위해 실행 클라이언트의 `jwt-secret` 경로가 필요합니다. 위의 실행 예제와 유사하게, 각 합의 클라이언트에는 jwt 토큰 파일 경로를 인수로 받는 구성 플래그가 있습니다. 이는 실행 클라이언트에 제공된 `jwtsecret` 경로와 일치해야 합니다.
+
+검증인을 실행할 계획이라면, 수수료 수령인의 이더리움 주소를 지정하는 구성 플래그를 추가해야 합니다. 이곳에 검증인에 대한 이더 보상이 누적됩니다. 각 합의 클라이언트에는 `--suggested-fee-recipient=0xabcd1`과 같은 옵션이 있으며, 이는 이더리움 주소를 인수로 받습니다.
+
+테스트넷에서 비콘 노드를 시작할 때, [체크포인트 동기화](https://notes.ethereum.org/@launchpad/checkpoint-sync)를 위한 공개 엔드포인트를 사용하여 동기화 시간을 크게 절약할 수 있습니다.
+
+#### 합의 클라이언트 실행하기 {#running-a-consensus-client}
+
+##### Lighthouse 실행
+
+Lighthouse를 실행하기 전에 [Lighthouse Book](https://lighthouse-book.sigmaprime.io/installation.html)에서 설치 및 구성 방법을 자세히 알아보십시오.
+
+```sh
+lighthouse beacon_node \
+ --network mainnet \
+ --datadir /data/ethereum \
+ --http \
+ --execution-endpoint http://127.0.0.1:8551 \
+ --execution-jwt /path/to/jwtsecret
+```
+
+##### Lodestar 실행
+
+Lodestar 소프트웨어를 컴파일하거나 Docker 이미지를 다운로드하여 설치하십시오. [문서](https://chainsafe.github.io/lodestar/)와 더 포괄적인 [설정 가이드](https://hackmd.io/@philknows/rk5cDvKmK)에서 자세히 알아보십시오.
+
+```sh
+lodestar beacon \
+ --dataDir="/data/ethereum" \
+ --network=mainnet \
+ --eth1.enabled=true \
+ --execution.urls="http://127.0.0.1:8551" \
+ --jwt-secret="/path/to/jwtsecret"
+```
+
+##### Nimbus 실행
+
+Nimbus에는 합의 및 실행 클라이언트가 모두 포함되어 있습니다. 매우 낮은 컴퓨팅 파워를 가진 다양한 장치에서도 실행할 수 있습니다.
+[의존성 및 Nimbus 자체를 설치](https://nimbus.guide/quick-start.html)한 후, 합의 클라이언트를 실행할 수 있습니다.
+
+```sh
+nimbus_beacon_node \
+ --network=mainnet \
+ --web3-url=http://127.0.0.1:8551 \
+ --rest \
+ --jwt-secret="/path/to/jwtsecret"
+```
+
+##### Prysm 실행
+
+Prysm은 쉬운 자동 설치를 허용하는 스크립트와 함께 제공됩니다. 자세한 내용은 [Prysm 문서](https://prysm.offchainlabs.com/docs/install-prysm/install-with-script/)에서 찾을 수 있습니다.
+
+```sh
+./prysm.sh beacon-chain \
+ --mainnet \
+ --datadir /data/ethereum \
+ --execution-endpoint=http://localhost:8551 \
+ --jwt-secret=/path/to/jwtsecret
+```
+
+##### Teku 실행
+
+```sh
+teku --network mainnet \
+ --data-path "/data/ethereum" \
+ --ee-endpoint http://localhost:8551 \
+ --ee-jwt-secret-file "/path/to/jwtsecret"
+```
+
+합의 클라이언트가 실행 클라이언트에 연결하여 예치 계약을 읽고 검증인을 식별하면, 다른 비콘 노드 피어에도 연결하여 제네시스로부터 합의 슬롯을 동기화하기 시작합니다. 비콘 노드가 현재 에포크에 도달하면, 비콘 API를 검증인에게 사용할 수 있게 됩니다. [비콘 노드 API](https://eth2docs.vercel.app/)에 대해 자세히 알아보세요.
+
+### 검증인 추가하기 {#adding-validators}
+
+합의 클라이언트는 검증인이 연결할 비콘 노드 역할을 합니다. 각 합의 클라이언트에는 해당 문서에 자세히 설명된 자체 검증인 소프트웨어가 있습니다.
+
+자체 검증인을 실행하면 이더리움 네트워크를 지원하는 가장 영향력 있고 신뢰가 필요 없는 방법인 [단독 스테이킹](/staking/solo/)이 가능합니다. 그러나 이를 위해서는 32 ETH의 예치금이 필요합니다. 더 적은 금액으로 자체 노드에서 검증인을 실행하려면 [Rocket Pool](https://rocketpool.net/node-operators)과 같은 무허가 노드 운영자를 갖춘 탈중앙화 풀에 관심이 있을 수 있습니다.
+
+스테이킹 및 검증인 키 생성을 시작하는 가장 쉬운 방법은 [Hoodi 테스트넷 스테이킹 런치패드](https://hoodi.launchpad.ethereum.org/)를 사용하는 것입니다. 이를 통해 [Hoodi에서 노드를 실행](https://notes.ethereum.org/@launchpad/hoodi)하여 설정을 테스트할 수 있습니다. 메인넷 준비가 되면 [메인넷 스테이킹 런치패드](https://launchpad.ethereum.org/)를 사용하여 이 단계를 반복할 수 있습니다.
+
+스테이킹 옵션에 대한 개요는 [스테이킹 페이지](/staking)를 참조하십시오.
+
+### 노드 사용하기 {#using-the-node}
+
+실행 클라이언트는 트랜잭션을 제출하고, 스마트 계약과 상호 작용하거나 이더리움 네트워크에 배포하는 등 다양한 방식으로 사용할 수 있는 [RPC API 엔드포인트](/developers/docs/apis/json-rpc/)를 제공합니다.
+
+- 적절한 프로토콜(예: `curl` 사용)로 수동 호출
+- 제공된 콘솔 연결(예: `geth attach`)
+- web3 라이브러리(예: [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview), [ethers](https://github.com/ethers-io/ethers.js/))를 사용하여 애플리케이션에 구현
+
+클라이언트마다 RPC 엔드포인트 구현이 다릅니다. 하지만 모든 클라이언트에서 사용할 수 있는 표준 JSON-RPC가 있습니다. 개요는 [JSON-RPC 문서](/developers/docs/apis/json-rpc/)를 읽어보십시오. 이더리움 네트워크의 정보가 필요한 애플리케이션은 이 RPC를 사용할 수 있습니다. 예를 들어, 인기 있는 지갑인 MetaMask는 강력한 개인 정보 보호 및 보안 이점을 제공하는 [자체 RPC 엔드포인트에 연결](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node)할 수 있습니다.
+
+모든 합의 클라이언트는 [Curl](https://curl.se)과 같은 도구를 사용하여 요청을 보내 합의 클라이언트의 상태를 확인하거나 블록 및 합의 데이터를 다운로드하는 데 사용할 수 있는 [비콘 API](https://ethereum.github.io/beacon-APIs)를 노출합니다. 이에 대한 자세한 정보는 각 합의 클라이언트의 문서에서 찾을 수 있습니다.
+
+#### RPC 연결하기 {#reaching-rpc}
+
+실행 클라이언트 JSON-RPC의 기본 포트는 `8545`이지만, 구성에서 로컬 엔드포인트의 포트를 수정할 수 있습니다. 기본적으로 RPC 인터페이스는 컴퓨터의 localhost에서만 연결할 수 있습니다. 원격으로 액세스할 수 있도록 하려면 주소를 `0.0.0.0`으로 변경하여 공개적으로 노출할 수 있습니다. 이렇게 하면 로컬 네트워크 및 공용 IP 주소를 통해 연결할 수 있습니다. 대부분의 경우 라우터에서 포트 포워딩을 설정해야 합니다.
+
+인터넷에 포트를 노출하는 것은 인터넷상의 모든 사람이 노드를 제어할 수 있게 하므로 주의해서 접근하십시오. 클라이언트를 지갑으로 사용하는 경우, 악의적인 행위자가 노드에 액세스하여 시스템을 다운시키거나 자금을 훔칠 수 있습니다.
+
+이를 해결하는 방법은 잠재적으로 유해한 RPC 메서드가 수정되지 않도록 하는 것입니다. 예를 들어, Geth에서는 `--http.api web3,eth,txpool`과 같은 플래그로 수정 가능한 메서드를 선언할 수 있습니다.
+
+RPC 인터페이스에 대한 액세스는 엣지 레이어 API 또는 Nginx와 같은 웹 서버 애플리케이션을 개발하고 이를 클라이언트의 로컬 주소 및 포트에 연결하여 확장할 수 있습니다. 중간 계층을 활용하면 개발자는 RPC 인터페이스에 대한 보안 `https` 연결을 위해 인증서를 설정할 수도 있습니다.
+
+웹 서버, 프록시 또는 외부용 Rest API를 설정하는 것이 노드의 RPC 엔드포인트에 대한 액세스를 제공하는 유일한 방법은 아닙니다. 공개적으로 연결 가능한 엔드포인트를 설정하는 또 다른 개인 정보 보호 방법은 자체 [Tor](https://www.torproject.org/) 어니언 서비스에서 노드를 호스팅하는 것입니다. 이렇게 하면 고정 공용 IP 주소나 열린 포트 없이 로컬 네트워크 외부에서 RPC에 연결할 수 있습니다. 그러나 이 구성을 사용하면 모든 애플리케이션에서 지원되지 않는 Tor 네트워크를 통해서만 RPC 엔드포인트에 액세스할 수 있으며 연결 문제가 발생할 수 있습니다.
+
+이를 위해서는 자신만의 [어니언 서비스](https://community.torproject.org/onion-services/)를 만들어야 합니다. 자체 호스팅을 위해 어니언 서비스 설정에 대한 [문서](https://community.torproject.org/onion-services/setup/)를 확인하십시오. RPC 포트로 프록시하는 웹 서버를 가리키거나 그냥 RPC로 직접 가리킬 수 있습니다.
+
+마지막으로, 내부 네트워크에 대한 액세스를 제공하는 가장 인기 있는 방법 중 하나는 VPN 연결을 통하는 것입니다. 사용 사례와 노드에 액세스해야 하는 사용자 수에 따라 보안 VPN 연결이 옵션이 될 수 있습니다. [OpenVPN](https://openvpn.net/)은 업계 표준 SSL/TLS 프로토콜을 사용하여 OSI 레이어 2 또는 3 보안 네트워크 확장을 구현하는 모든 기능을 갖춘 SSL VPN으로, 인증서, 스마트카드 및/또는 사용자 이름/비밀번호 자격 증명을 기반으로 하는 유연한 클라이언트 인증 방법을 지원하며, VPN 가상 인터페이스에 적용되는 방화벽 규칙을 사용하여 사용자 또는 그룹별 액세스 제어 정책을 허용합니다.
+
+### 노드 운영하기 {#operating-the-node}
+
+노드가 제대로 실행되고 있는지 확인하기 위해 정기적으로 모니터링해야 합니다. 가끔 유지 관리를 해야 할 수도 있습니다.
+
+#### 노드를 온라인 상태로 유지하기 {#keeping-node-online}
+
+노드가 항상 온라인 상태일 필요는 없지만, 네트워크와 동기화 상태를 유지하기 위해 가능한 한 온라인 상태를 유지해야 합니다. 다시 시작하기 위해 종료할 수 있지만 다음 사항에 유의하십시오.
+
+- 최근 상태가 아직 디스크에 기록되는 중이면 종료하는 데 몇 분이 걸릴 수 있습니다.
+- 강제 종료는 데이터베이스를 손상시켜 전체 노드를 다시 동기화해야 할 수 있습니다.
+- 클라이언트가 네트워크와 동기화되지 않으며 다시 시작할 때 다시 동기화해야 합니다. 노드가 마지막으로 종료된 위치에서 동기화를 시작할 수 있지만, 오프라인 상태였던 기간에 따라 프로세스에 시간이 걸릴 수 있습니다.
+
+_이는 합의 레이어 검증인 노드에는 적용되지 않습니다._ 노드를 오프라인으로 전환하면 노드에 의존하는 모든 서비스에 영향을 미칩니다. _스테이킹_ 목적으로 노드를 실행하는 경우 가동 중지 시간을 최대한 최소화해야 합니다.
+
+#### 클라이언트 서비스 생성하기 {#creating-client-services}
+
+시작 시 클라이언트를 자동으로 실행하는 서비스를 만드는 것을 고려하십시오. 예를 들어, Linux 서버에서는 `systemd`와 같은 서비스로 클라이언트를 적절한 구성으로 실행하고, 제한된 권한을 가진 사용자 아래에서 실행하며 자동으로 다시 시작하는 것이 좋은 방법입니다.
+
+#### 클라이언트 업데이트하기 {#updating-clients}
+
+클라이언트 소프트웨어를 최신 보안 패치, 기능 및 [EIP](/eips/)로 최신 상태로 유지해야 합니다. 특히 [하드 포크](/ethereum-forks/) 전에는 올바른 클라이언트 버전을 실행하고 있는지 확인하십시오.
+
+> 중요한 네트워크 업데이트 전에 EF는 [블로그](https://blog.ethereum.org)에 게시물을 올립니다. 노드에 업데이트가 필요할 때 메일로 알림을 받으려면 [이러한 공지사항을 구독](https://blog.ethereum.org/category/protocol#subscribe)할 수 있습니다.
+
+클라이언트 업데이트는 매우 간단합니다. 각 클라이언트의 문서에는 구체적인 지침이 있지만, 일반적으로 최신 버전을 다운로드하고 새 실행 파일로 클라이언트를 다시 시작하는 과정입니다. 클라이언트는 업데이트가 적용된 상태에서 중단된 지점부터 다시 시작해야 합니다.
+
+각 클라이언트 구현에는 피어 투 피어 프로토콜에서 사용되지만 명령줄에서도 액세스할 수 있는 사람이 읽을 수 있는 버전 문자열이 있습니다. 이 버전 문자열을 통해 사용자는 올바른 버전을 실행하고 있는지 확인할 수 있으며, 블록 탐색기 및 기타 분석 도구는 네트워크를 통해 특정 클라이언트의 분포를 정량화하는 데 관심이 있습니다. 버전 문자열에 대한 자세한 정보는 개별 클라이언트 문서를 참조하십시오.
+
+#### 추가 서비스 실행하기 {#running-additional-services}
+
+자체 노드를 실행하면 이더리움 클라이언트 RPC에 직접 액세스해야 하는 서비스를 사용할 수 있습니다. 이들은 [레이어 2 솔루션](/developers/docs/scaling/#layer-2-scaling), 지갑용 백엔드, 블록 탐색기, 개발자 도구 및 기타 이더리움 인프라와 같이 이더리움 위에 구축된 서비스입니다.
+
+#### 노드 모니터링하기 {#monitoring-the-node}
+
+노드를 제대로 모니터링하려면 메트릭을 수집하는 것을 고려하십시오. 클라이언트는 노드에 대한 포괄적인 데이터를 얻을 수 있도록 메트릭 엔드포인트를 제공합니다. [InfluxDB](https://www.influxdata.com/get-influxdb/) 또는 [Prometheus](https://prometheus.io/)와 같은 도구를 사용하여 데이터베이스를 만들고, [Grafana](https://grafana.com/)와 같은 소프트웨어에서 시각화 및 차트로 변환할 수 있습니다. 이 소프트웨어를 사용하기 위한 많은 설정이 있으며, 노드와 네트워크 전체를 시각화할 수 있는 다양한 Grafana 대시보드가 있습니다. 예를 들어, [Geth 모니터링 튜토리얼](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/)을 확인하십시오.
+
+모니터링의 일환으로 머신의 성능을 주시하십시오. 노드의 초기 동기화 중에 클라이언트 소프트웨어는 CPU와 RAM에 매우 부담을 줄 수 있습니다. Grafana 외에도 `htop` 또는 `uptime`과 같은 OS가 제공하는 도구를 사용하여 이를 수행할 수 있습니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 스테이킹 가이드](https://github.com/SomerEsat/ethereum-staking-guides) - _Somer Esat, 자주 업데이트됨_
+- [가이드 | 이더리움 스테이킹 메인넷에서 검증인을 설정하는 방법](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew, 자주 업데이트됨_
+- [테스트넷에서 검증인을 실행하는 ETHStaker 가이드](https://github.com/remyroy/ethstaker#guides) – _ETHStaker, 정기적으로 업데이트됨_
+- [이더리움 노드를 위한 샘플 AWS 블록체인 노드 러너 앱](https://aws-samples.github.io/aws-blockchain-node-runners/docs/Blueprints/Ethereum) - _AWS, 자주 업데이트됨_
+- [노드 운영자를 위한 병합 FAQ](https://notes.ethereum.org/@launchpad/node-faq-merge) - _2022년 7월_
+- [이더리움 풀 검증 노드가 되기 위한 하드웨어 요구사항 분석](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau, 2018년 9월 24일_
+- [이더리움 전체 노드 실행하기: 동기 부여가 거의 없는 분들을 위한 안내서](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 2019년 11월 7일_
+- [이더리움 메인넷에서 Hyperledger Besu 노드 실행: 이점, 요구사항 및 설정](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, 2020년 5월 7일_
+- [모니터링 스택으로 Nethermind 이더리움 클라이언트 배포](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, 2020년 7월 8일_
+
+## 관련 주제 {#related-topics}
+
+- [노드 및 클라이언트](/developers/docs/nodes-and-clients/)
+- [블록](/developers/docs/blocks/)
+- [네트워크](/developers/docs/networks/)
diff --git a/public/content/translations/ko/developers/docs/oracles/index.md b/public/content/translations/ko/developers/docs/oracles/index.md
new file mode 100644
index 00000000000..59422278341
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/oracles/index.md
@@ -0,0 +1,433 @@
+---
+title: "오라클"
+description: "오라클은 이더리움 스마트 계약에 실제 세계 데이터에 대한 액세스를 제공하여 사용자에게 더 많은 사용 사례와 더 큰 가치를 제공합니다."
+lang: ko
+---
+
+오라클은 스마트 계약을 위해 오프체인 데이터 소스를 블록체인에서 사용할 수 있도록 하는 데이터 피드를 생성하는 애플리케이션입니다. 이는 이더리움 기반 스마트 계약이 기본적으로 블록체인 네트워크 외부에 저장된 정보에 액세스할 수 없기 때문에 필요합니다.
+
+스마트 계약에 오프체인 데이터를 사용하여 실행할 수 있는 기능을 제공하면 탈중앙화 애플리케이션의 유용성과 가치가 확장됩니다. 예를 들어, 온체인 예측 시장은 오라클에 의존하여 사용자 예측을 검증하는 데 사용하는 결과에 대한 정보를 제공합니다. Alice가 차기 미국 대통령이 될 사람에게 20 ETH를 걸었다고 가정해 보겠습니다. 대통령. 이 경우 예측 시장 탈중앙화앱은 선거 결과를 확인하고 Alice가 지불금을 받을 자격이 있는지 판단하기 위해 오라클이 필요합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지에서는 독자가 [노드](/developers/docs/nodes-and-clients/), [합의 메커니즘](/developers/docs/consensus-mechanisms/), [EVM](/developers/docs/evm/)을 비롯한 이더리움의 기본 사항에 익숙하다고 가정합니다. [스마트 계약](/developers/docs/smart-contracts/) 및 [스마트 계약 구조](/developers/docs/smart-contracts/anatomy/), 특히 [이벤트](/glossary/#events)에 대해서도 잘 이해하고 있어야 합니다.
+
+## 블록체인 오라클이란 무엇인가요? {#what-is-a-blockchain-oracle}
+
+오라클은 외부 정보(즉, 오프체인에 저장된 정보)를 소싱, 확인 및 블록체인에서 실행되는 스마트 계약으로 전송하는 애플리케이션입니다. 오라클은 오프체인 데이터를 '가져와' 이더리움에 브로드캐스팅하는 것 외에도, 블록체인에서 외부 시스템으로 정보를 '푸시'할 수도 있습니다(예: 사용자가 이더리움 트랜잭션을 통해 수수료를 보내면 스마트 잠금을 해제하는 경우).
+
+오라클이 없다면 스마트 계약은 전적으로 온체인 데이터에만 국한될 것입니다.
+
+오라클은 데이터 소스(단일 또는 다중 소스), 신뢰 모델(중앙화 또는 탈중앙화), 시스템 아키텍처(즉시 읽기, 게시-구독 및 요청-응답)에 따라 다릅니다. 또한 오라클이 온체인 계약에서 사용할 외부 데이터를 검색하는지(입력 오라클), 블록체인에서 오프체인 애플리케이션으로 정보를 보내는지(출력 오라클), 오프체인에서 계산 작업을 수행하는지(계산 오라클)에 따라 오라클을 구별할 수도 있습니다.
+
+## 스마트 계약에 오라클이 필요한 이유는 무엇인가요? {#why-do-smart-contracts-need-oracles}
+
+많은 개발자는 스마트 계약을 블록체인의 특정 주소에서 실행되는 코드로 봅니다. 그러나 [스마트 계약에 대한 보다 일반적인 견해](/smart-contracts/)는 특정 조건이 충족되면 당사자 간의 계약을 시행할 수 있는 자체 실행 소프트웨어 프로그램이라는 것입니다. 따라서 '스마트 계약'이라는 용어가 사용됩니다.
+
+그러나 이더리움이 결정적이라는 점을 감안할 때 사람들 간의 계약을 시행하기 위해 스마트 계약을 사용하는 것은 간단하지 않습니다. [결정론적 시스템](https://en.wikipedia.org/wiki/Deterministic_algorithm)은 초기 상태와 특정 입력이 주어지면 항상 동일한 결과를 생성하는 시스템으로, 입력에서 출력을 계산하는 과정에 무작위성이나 변이가 없음을 의미합니다.
+
+결정론적 실행을 달성하기 위해 블록체인은 노드가 블록체인 자체에 저장된 데이터_만_을 사용하여 간단한 이진(참/거짓) 질문에 대한 합의에 도달하도록 제한합니다. 이러한 질문의 예는 다음과 같습니다.
+
+- “계정 소유자(공개 키로 식별)가 페어링된 개인 키로 이 트랜잭션에 서명했나요?”
+- “이 계정에 트랜잭션을 처리할 충분한 자금이 있나요?”
+- “이 트랜잭션은 이 스마트 계약의 맥락에서 유효한가요?” 등.
+
+블록체인이 외부 소스(즉, 현실 세계)로부터 정보를 받는다면 결정론을 달성하는 것이 불가능해져 노드가 블록체인 상태 변경의 유효성에 대해 합의하는 것을 막게 됩니다. 기존 가격 API에서 얻은 현재 ETH-USD 환율을 기반으로 트랜잭션을 실행하는 스마트 계약을 예로 들어 보겠습니다. 이 수치는 자주 변경될 가능성이 있으며(API가 더 이상 사용되지 않거나 해킹될 수 있다는 점은 말할 것도 없음), 이는 동일한 계약 코드를 실행하는 노드가 다른 결과에 도달한다는 것을 의미합니다.
+
+전 세계 수천 개의 노드가 트랜잭션을 처리하는 이더리움과 같은 퍼블릭 블록체인의 경우 결정론이 중요합니다. 진실의 원천 역할을 하는 중앙 권한이 없으면 노드는 동일한 트랜잭션을 적용한 후 동일한 상태에 도달하기 위한 메커니즘이 필요합니다. 노드 A가 스마트 계약 코드를 실행하여 결과로 '3'을 얻고, 노드 B가 동일한 트랜잭션을 실행한 후 '7'을 얻는 경우는 합의를 깨뜨리고 탈중앙화 컴퓨팅 플랫폼으로서의 이더리움의 가치를 없앨 것입니다.
+
+이 시나리오는 또한 외부 소스에서 정보를 가져오도록 블록체인을 설계할 때의 문제를 강조합니다. 그러나 오라클은 오프체인 소스에서 정보를 가져와 스마트 계약이 소비할 수 있도록 블록체인에 저장함으로써 이 문제를 해결합니다. 온체인에 저장된 정보는 변경할 수 없고 공개적으로 사용 가능하므로 이더리움 노드는 합의를 깨뜨리지 않고 오라클이 가져온 오프체인 데이터를 안전하게 사용하여 상태 변경을 계산할 수 있습니다.
+
+이를 위해 오라클은 일반적으로 온체인에서 실행되는 스마트 계약과 일부 오프체인 구성 요소로 구성됩니다. 온체인 계약은 다른 스마트 계약으로부터 데이터 요청을 받아 이를 오프체인 구성 요소(오라클 노드라고 함)에 전달합니다. 이 오라클 노드는 예를 들어 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 데이터 소스를 쿼리하고 트랜잭션을 보내 요청된 데이터를 스마트 계약의 저장 공간에 저장할 수 있습니다.
+
+본질적으로 블록체인 오라클은 블록체인과 외부 환경 간의 정보 격차를 해소하여 '하이브리드 스마트 계약'을 만듭니다. 하이브리드 스마트 계약은 온체인 계약 코드와 오프체인 인프라의 조합을 기반으로 작동하는 계약입니다. 탈중앙화 예측 시장은 하이브리드 스마트 계약의 훌륭한 예입니다. 다른 예로는 오라클 집합이 특정 기상 현상이 발생했다고 판단할 때 지불하는 농작물 보험 스마트 계약이 있습니다.
+
+## 오라클 문제란 무엇인가요? {#the-oracle-problem}
+
+오라클은 중요한 문제를 해결하지만 다음과 같은 몇 가지 복잡한 문제도 야기합니다.
+
+- 주입된 정보가 올바른 소스에서 추출되었거나 조작되지 않았는지 어떻게 확인할 수 있나요?
+
+- 이 데이터가 항상 사용 가능하고 정기적으로 업데이트되도록 어떻게 보장할 수 있나요?
+
+소위 '오라클 문제'는 블록체인 오라클을 사용하여 스마트 계약에 입력을 보내는 데 따르는 문제를 보여줍니다. 스마트 계약이 올바르게 실행되려면 오라클의 데이터가 정확해야 합니다. 또한 정확한 정보를 제공하기 위해 오라클 운영자를 '신뢰'해야 한다는 것은 스마트 계약의 '무신뢰' 측면을 훼손합니다.
+
+서로 다른 오라클은 오라클 문제에 대해 서로 다른 솔루션을 제공하며, 이에 대해서는 나중에 살펴볼 것입니다. 오라클은 일반적으로 다음 과제를 얼마나 잘 처리하는지에 따라 평가됩니다.
+
+1. **정확성**: 오라클은 스마트 계약이 유효하지 않은 오프체인 데이터를 기반으로 상태 변경을 트리거하게 해서는 안 됩니다. 오라클은 데이터의 진위성과 무결성을 보장해야 합니다. 진위성은 데이터가 올바른 소스에서 가져왔음을 의미하며, 무결성은 데이터가 온체인으로 전송되기 전에 그대로 유지되었음(즉, 변경되지 않음)을 의미합니다.
+
+2. **가용성**: 오라클은 스마트 계약이 작업을 실행하고 상태 변경을 트리거하는 것을 지연시키거나 방해해서는 안 됩니다. 이는 오라클의 데이터가 중단 없이 요청 시 사용 가능해야 함을 의미합니다.
+
+3. **인센티브 호환성**: 오라클은 오프체인 데이터 제공자가 스마트 계약에 정확한 정보를 제출하도록 인센티브를 제공해야 합니다. 인센티브 호환성에는 기여 가능성과 책임성이 포함됩니다. 기여 가능성은 외부 정보 조각을 제공자와 연결할 수 있게 하는 반면, 책임성은 데이터 제공자를 제공하는 정보에 결부시켜 제공된 정보의 품질에 따라 보상을 받거나 불이익을 받을 수 있도록 합니다.
+
+## 블록체인 오라클 서비스는 어떻게 작동하나요? {#how-does-a-blockchain-oracle-service-work}
+
+### 사용자 {#users}
+
+사용자는 특정 작업을 완료하기 위해 블록체인 외부의 정보가 필요한 엔터티(즉, 스마트 계약)입니다. 오라클 서비스의 기본 워크플로는 사용자가 오라클 계약에 데이터 요청을 보내는 것으로 시작됩니다. 데이터 요청은 일반적으로 다음 질문 중 일부 또는 전부에 답합니다.
+
+1. 오프체인 노드가 요청된 정보에 대해 참조할 수 있는 소스는 무엇인가요?
+
+2. 보고자는 데이터 소스의 정보를 어떻게 처리하고 유용한 데이터 포인트를 추출하나요?
+
+3. 데이터 검색에 몇 개의 오라클 노드가 참여할 수 있나요?
+
+4. 오라클 보고서의 불일치는 어떻게 관리해야 하나요?
+
+5. 제출물을 필터링하고 보고서를 단일 값으로 집계하는 데 어떤 방법을 구현해야 하나요?
+
+### 오라클 계약 {#oracle-contract}
+
+오라클 계약은 오라클 서비스의 온체인 구성 요소입니다. 다른 계약의 데이터 요청을 수신하고 데이터 쿼리를 오라클 노드에 전달하며 반환된 데이터를 클라이언트 계약에 브로드캐스팅합니다. 이 계약은 또한 반환된 데이터 포인트에 대한 일부 계산을 수행하여 요청 계약에 보낼 집계 값을 생성할 수 있습니다.
+
+오라클 계약은 클라이언트 계약이 데이터 요청을 할 때 호출하는 일부 함수를 노출합니다. 새로운 쿼리를 수신하면 스마트 계약은 데이터 요청의 세부 정보와 함께 [로그 이벤트](/developers/docs/smart-contracts/anatomy/#events-and-logs)를 내보냅니다. 이는 로그를 구독하는 오프체인 노드(일반적으로 JSON-RPC `eth_subscribe` 명령과 같은 것을 사용)에 알리고, 노드는 로그 이벤트에 정의된 데이터를 검색합니다.
+
+아래는 Pedro Costa의 [오라클 계약 예시](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e)입니다. 이것은 다른 스마트 계약의 요청에 따라 오프체인 API를 쿼리하고 요청된 정보를 블록체인에 저장할 수 있는 간단한 오라클 서비스입니다.
+
+```solidity
+pragma solidity >=0.4.21 <0.6.0;
+
+contract Oracle {
+ Request[] requests; // 계약에 대한 요청 목록
+ uint currentId = 0; // 증가하는 요청 ID
+ uint minQuorum = 2; // 최종 결과를 선언하기 전에 수신해야 하는 최소 응답 수
+ uint totalOracleCount = 3; // 하드코딩된 오라클 수
+
+ // 일반적인 api 요청을 정의합니다
+ struct Request {
+ uint id; // 요청 ID
+ string urlToQuery; // API URL
+ string attributeToFetch; // 응답에서 검색할 json 속성(키)
+ string agreedValue; // 키의 값
+ mapping(uint => string) answers; // 오라클이 제공한 답변
+ mapping(address => uint) quorum; // 답변을 쿼리할 오라클(1=오라클이 투표하지 않음, 2=오라클이 투표함)
+ }
+
+ // 블록체인 외부에서 오라클을 트리거하는 이벤트
+ event NewRequest (
+ uint id,
+ string urlToQuery,
+ string attributeToFetch
+ );
+
+ // 최종 결과에 대한 합의가 있을 때 트리거됨
+ event UpdatedRequest (
+ uint id,
+ string urlToQuery,
+ string attributeToFetch,
+ string agreedValue
+ );
+
+ function createRequest (
+ string memory _urlToQuery,
+ string memory _attributeToFetch
+ )
+ public
+ {
+ uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, ""));
+ Request storage r = requests[length-1];
+
+ // 하드코딩된 오라클 주소
+ r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1;
+ r.quorum[address(0xb5346CF224c02186606e5f89EACC21eC25398077)] = 1;
+ r.quorum[address(0xa2997F1CA363D11a0a35bB1Ac0Ff7849bc13e914)] = 1;
+
+ // 블록체인 외부의 오라클이 감지할 이벤트를 발생시킴
+ emit NewRequest (
+ currentId,
+ _urlToQuery,
+ _attributeToFetch
+ );
+
+ // 요청 ID 증가
+ currentId++;
+ }
+
+ // 오라클이 답변을 기록하기 위해 호출함
+ function updateRequest (
+ uint _id,
+ string memory _valueRetrieved
+ ) public {
+
+ Request storage currRequest = requests[_id];
+
+ // 오라클이 신뢰할 수 있는 오라클 목록에 있는지 확인
+ // 그리고 오라클이 아직 투표하지 않았는지 확인
+ if(currRequest.quorum[address(msg.sender)] == 1){
+
+ // 이 주소가 투표했음을 표시
+ currRequest.quorum[msg.sender] = 2;
+
+ // 위치가 비어 있을 때까지 답변 '배열'을 반복하고 검색된 값을 저장
+ uint tmpI = 0;
+ bool found = false;
+ while(!found) {
+ // 첫 번째 빈 슬롯 찾기
+ if(bytes(currRequest.answers[tmpI]).length == 0){
+ found = true;
+ currRequest.answers[tmpI] = _valueRetrieved;
+ }
+ tmpI++;
+ }
+
+ uint currentQuorum = 0;
+
+ // 오라클 목록을 반복하고 충분한 오라클(최소 쿼럼)이
+ // 현재 답변과 동일한 답변에 투표했는지 확인
+ for(uint i = 0; i < totalOracleCount; i++){
+ bytes memory a = bytes(currRequest.answers[i]);
+ bytes memory b = bytes(_valueRetrieved);
+
+ if(keccak256(a) == keccak256(b)){
+ currentQuorum++;
+ if(currentQuorum >= minQuorum){
+ currRequest.agreedValue = _valueRetrieved;
+ emit UpdatedRequest (
+ currRequest.id,
+ currRequest.urlToQuery,
+ currRequest.attributeToFetch,
+ currRequest.agreedValue
+ );
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### 오라클 노드 {#oracle-nodes}
+
+오라클 노드는 오라클 서비스의 오프체인 구성 요소입니다. 타사 서버에서 호스팅되는 API와 같은 외부 소스에서 정보를 추출하고 스마트 계약이 소비할 수 있도록 온체인에 배치합니다. 오라클 노드는 온체인 오라클 계약의 이벤트를 수신하고 로그에 설명된 작업을 완료합니다.
+
+오라클 노드의 일반적인 작업은 API 서비스에 [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) 요청을 보내고, 응답을 구문 분석하여 관련 데이터를 추출하고, 블록체인에서 읽을 수 있는 출력으로 형식을 지정하고, 오라클 계약에 대한 트랜잭션에 포함하여 온체인으로 보내는 것입니다. 오라클 노드는 나중에 살펴볼 '진위성 증명'을 사용하여 제출된 정보의 유효성과 무결성을 증명해야 할 수도 있습니다.
+
+계산 오라클은 또한 가스 비용과 블록 크기 제한을 고려할 때 온체인에서 실행하기에는 비실용적인 계산 작업을 수행하기 위해 오프체인 노드에 의존합니다. 예를 들어, 오라클 노드는 검증 가능한 무작위 숫자(예: 블록체인 기반 게임용)를 생성하는 작업을 맡을 수 있습니다.
+
+## 오라클 디자인 패턴 {#oracle-design-patterns}
+
+오라클은 _즉시 읽기_, _게시-구독_, _요청-응답_ 등 다양한 유형이 있으며, 후자의 두 가지가 이더리움 스마트 계약에서 가장 많이 사용됩니다. 여기서는 게시-구독 및 요청-응답 모델에 대해 간략하게 설명합니다.
+
+### 게시-구독 오라클 {#publish-subscribe-oracles}
+
+이 유형의 오라클은 다른 계약이 정기적으로 정보를 읽을 수 있는 '데이터 피드'를 노출합니다. 이 경우 데이터는 자주 변경될 것으로 예상되므로 클라이언트 계약은 오라클의 저장 공간에 있는 데이터 업데이트를 수신해야 합니다. 예를 들어 사용자에게 최신 ETH-USD 가격 정보를 제공하는 오라클이 있습니다.
+
+### 요청-응답 오라클 {#request-response-oracles}
+
+요청-응답 설정을 통해 클라이언트 계약은 게시-구독 오라클에서 제공하는 것 이외의 임의의 데이터를 요청할 수 있습니다. 요청-응답 오라클은 데이터 세트가 너무 커서 스마트 계약의 저장 공간에 저장할 수 없거나 사용자가 특정 시점에 데이터의 일부만 필요할 경우에 이상적입니다.
+
+게시-구독 모델보다 더 복잡하지만 요청-응답 오라클은 기본적으로 이전 섹션에서 설명한 것입니다. 오라클에는 데이터 요청을 수신하고 이를 처리를 위해 오프체인 노드에 전달하는 온체인 구성 요소가 있습니다.
+
+데이터 쿼리를 시작하는 사용자는 오프체인 소스에서 정보를 검색하는 비용을 부담해야 합니다. 클라이언트 계약은 또한 요청에 지정된 콜백 함수를 통해 응답을 반환하는 데 오라클 계약이 발생시킨 가스 비용을 충당하기 위한 자금을 제공해야 합니다.
+
+## 중앙화 오라클 대 탈중앙화 오라클 {#types-of-oracles}
+
+### 중앙화 오라클 {#centralized-oracles}
+
+중앙화 오라클은 오프체인 정보를 집계하고 요청에 따라 오라클 계약의 데이터를 업데이트하는 단일 엔터티에 의해 제어됩니다. 중앙화 오라클은 단일 진실의 원천에 의존하기 때문에 효율적입니다. 독점 데이터 세트가 널리 인정된 서명과 함께 소유자에 의해 직접 게시되는 경우 더 잘 작동할 수 있습니다. 그러나 단점도 있습니다.
+
+#### 낮은 정확성 보장 {#low-correctness-guarantees}
+
+중앙화 오라클을 사용하면 제공된 정보가 정확한지 아닌지 확인할 방법이 없습니다. 심지어 '평판이 좋은' 제공업체도 악의적으로 변하거나 해킹당할 수 있습니다. 오라클이 손상되면 스마트 계약은 잘못된 데이터를 기반으로 실행됩니다.
+
+#### 낮은 가용성 {#poor-availability}
+
+중앙화 오라클은 다른 스마트 계약에 항상 오프체인 데이터를 제공한다고 보장하지 않습니다. 제공업체가 서비스를 중단하기로 결정하거나 해커가 오라클의 오프체인 구성 요소를 탈취하면 스마트 계약은 서비스 거부(DoS) 공격의 위험에 처하게 됩니다.
+
+#### 낮은 인센티브 호환성 {#poor-incentive-compatibility}
+
+중앙화 오라클은 종종 데이터 제공자가 정확하거나 변경되지 않은 정보를 보내도록 하는 인센티브가 잘못 설계되었거나 존재하지 않습니다. 정확성을 위해 오라클에 비용을 지불한다고 해서 정직성이 보장되는 것은 아닙니다. 이 문제는 스마트 계약이 제어하는 가치의 양이 증가함에 따라 더욱 커집니다.
+
+### 탈중앙화 오라클 {#decentralized-oracles}
+
+탈중앙화 오라클은 단일 장애 지점을 제거하여 중앙화 오라클의 한계를 극복하도록 설계되었습니다. 탈중앙화 오라클 서비스는 스마트 계약에 보내기 전에 오프체인 데이터에 대한 합의를 형성하는 피어투피어 네트워크의 여러 참가자로 구성됩니다.
+
+탈중앙화 오라클은 (이상적으로) 무허가성, 무신뢰성이어야 하며 중앙 기관의 관리에서 자유로워야 하지만, 실제로는 오라클 간의 탈중앙화는 스펙트럼 위에 있습니다. 누구나 참여할 수 있지만 과거 성과에 따라 노드를 승인하고 제거하는 '소유자'가 있는 반탈중앙화 오라클 네트워크가 있습니다. 완전히 탈중앙화된 오라클 네트워크도 존재합니다. 이들은 일반적으로 독립형 블록체인으로 실행되며 노드를 조정하고 잘못된 행동을 처벌하기 위한 정의된 합의 메커니즘을 가지고 있습니다.
+
+탈중앙화 오라클을 사용하면 다음과 같은 이점이 있습니다.
+
+### 높은 정확성 보장 {#high-correctness-guarantees}
+
+탈중앙화 오라클은 다양한 접근 방식을 사용하여 데이터의 정확성을 달성하려고 합니다. 여기에는 반환된 정보의 진위성과 무결성을 증명하는 증명을 사용하고 여러 엔터티가 오프체인 데이터의 유효성에 대해 집단적으로 동의하도록 요구하는 것이 포함됩니다.
+
+#### 진위성 증명 {#authenticity-proofs}
+
+진위성 증명은 외부 소스에서 검색한 정보의 독립적인 검증을 가능하게 하는 암호화 메커니즘입니다. 이 증명은 정보의 출처를 검증하고 검색 후 데이터에 대한 가능한 변경을 감지할 수 있습니다.
+
+진위성 증명의 예는 다음과 같습니다.
+
+**전송 계층 보안(TLS) 증명**: 오라클 노드는 종종 전송 계층 보안(TLS) 프로토콜을 기반으로 하는 보안 HTTP 연결을 사용하여 외부 소스에서 데이터를 검색합니다. 일부 탈중앙화 오라클은 진위성 증명을 사용하여 TLS 세션을 확인하고(즉, 노드와 특정 서버 간의 정보 교환을 확인) 세션 내용이 변경되지 않았음을 확인합니다.
+
+**신뢰 실행 환경(TEE) 증명**: [신뢰 실행 환경](https://en.wikipedia.org/wiki/Trusted_execution_environment)(TEE)은 호스트 시스템의 운영 프로세스로부터 격리된 샌드박스형 계산 환경입니다. TEE는 계산 환경에 저장/사용된 모든 애플리케이션 코드 또는 데이터가 무결성, 기밀성 및 불변성을 유지하도록 보장합니다. 사용자는 또한 신뢰 실행 환경 내에서 애플리케이션 인스턴스가 실행되고 있음을 증명하기 위해 증명을 생성할 수 있습니다.
+
+특정 클래스의 탈중앙화 오라클은 오라클 노드 운영자가 TEE 증명을 제공하도록 요구합니다. 이는 사용자에게 노드 운영자가 신뢰 실행 환경에서 오라클 클라이언트 인스턴스를 실행하고 있음을 확인시켜 줍니다. TEE는 외부 프로세스가 애플리케이션의 코드와 데이터를 변경하거나 읽는 것을 방지하므로 이러한 증명은 오라클 노드가 정보를 그대로 기밀로 유지했음을 증명합니다.
+
+#### 정보의 합의 기반 검증 {#consensus-based-validation-of-information}
+
+중앙화 오라클은 스마트 계약에 데이터를 제공할 때 단일 진실의 원천에 의존하므로 부정확한 정보를 게시할 가능성이 있습니다. 탈중앙화 오라클은 여러 오라클 노드에 의존하여 오프체인 정보를 쿼리함으로써 이 문제를 해결합니다. 여러 소스의 데이터를 비교함으로써 탈중앙화 오라클은 온체인 계약에 유효하지 않은 정보를 전달할 위험을 줄입니다.
+
+그러나 탈중앙화 오라클은 여러 오프체인 소스에서 검색된 정보의 불일치를 처리해야 합니다. 정보의 차이를 최소화하고 오라클 계약에 전달된 데이터가 오라클 노드의 집단적 의견을 반영하도록 보장하기 위해 탈중앙화 오라클은 다음 메커니즘을 사용합니다.
+
+##### 데이터 정확성에 대한 투표/스테이킹
+
+일부 탈중앙화 오라클 네트워크는 참가자가 데이터 쿼리에 대한 답변의 정확성에 대해 투표하거나 스테이킹하도록 요구합니다(예: '2020년 미국 선거에서 누가 이겼나요?'). 네트워크의 기본 토큰을 사용합니다. 그런 다음 집계 프로토콜은 투표와 스테이킹을 집계하고 다수가 지지하는 답변을 유효한 것으로 간주합니다.
+
+다수결 답변에서 벗어난 노드는 더 정확한 값을 제공하는 다른 사람들에게 토큰을 분배받는 불이익을 받습니다. 노드가 데이터를 제공하기 전에 채권을 제공하도록 강제하는 것은 수익 극대화를 목표로 하는 합리적인 경제 주체로 가정되므로 정직한 응답을 유도합니다.
+
+스테이킹/투표는 또한 악의적인 행위자가 합의 시스템을 조작하기 위해 여러 신원을 생성하는 [시빌 공격](/glossary/#sybil-attack)으로부터 탈중앙화 오라클을 보호합니다. 그러나 스테이킹은 '프리라이딩'(오라클 노드가 다른 노드의 정보를 복사하는 것)과 '게으른 검증'(오라클 노드가 정보를 직접 확인하지 않고 다수를 따르는 것)을 방지할 수 없습니다.
+
+##### 셸링 포인트 메커니즘
+
+[셸링 포인트](https://en.wikipedia.org/wiki/Focal_point_\(game_theory\))는 여러 엔터티가 통신이 없는 상태에서 문제에 대한 공통 해결책을 항상 기본으로 삼을 것이라고 가정하는 게임 이론 개념입니다. 셸링 포인트 메커니즘은 종종 탈중앙화 오라클 네트워크에서 노드가 데이터 요청에 대한 답변에 합의할 수 있도록 하는 데 사용됩니다.
+
+이에 대한 초기 아이디어는 [SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed)으로, 참가자가 보증금과 함께 '스칼라' 질문(답이 크기로 설명되는 질문, 예: 'ETH 가격은 얼마입니까?')에 대한 응답을 제출하는 제안된 데이터 피드였습니다. 25번째와 75번째 [백분위수](https://en.wikipedia.org/wiki/Percentile) 사이의 값을 제공하는 사용자에게는 보상이 주어지지만, 중앙값에서 크게 벗어나는 값을 제공하는 사용자에게는 불이익이 주어집니다.
+
+오늘날 SchellingCoin은 존재하지 않지만, 특히 [Maker Protocol의 오라클](https://docs.makerdao.com/smart-contract-modules/oracle-module)과 같은 여러 탈중앙화 오라클은 오라클 데이터의 정확성을 향상시키기 위해 셸링 포인트 메커니즘을 사용합니다. 각 Maker Oracle은 담보 자산에 대한 시장 가격을 제출하는 오프체인 P2P 노드 네트워크('릴레이어' 및 '피드')와 제공된 모든 값의 중앙값을 계산하는 온체인 'Medianizer' 계약으로 구성됩니다. 지정된 지연 기간이 끝나면 이 중앙값은 관련 자산의 새로운 참조 가격이 됩니다.
+
+셸링 포인트 메커니즘을 사용하는 다른 오라클의 예로는 [Chainlink 오프체인 보고](https://docs.chain.link/architecture-overview/off-chain-reporting) 및 [Witnet](https://witnet.io/)이 있습니다. 두 시스템 모두에서 피어투피어 네트워크의 오라클 노드로부터의 응답은 평균 또는 중앙값과 같은 단일 집계 값으로 집계됩니다. 노드는 응답이 집계 값과 일치하거나 벗어나는 정도에 따라 보상을 받거나 처벌을 받습니다.
+
+셸링 포인트 메커니즘은 온체인 공간을 최소화하면서(하나의 트랜잭션만 보내면 됨) 탈중앙화를 보장하기 때문에 매력적입니다. 후자는 노드가 평균/중앙값을 생성하는 알고리즘에 공급되기 전에 제출된 응답 목록에 서명해야 하기 때문에 가능합니다.
+
+### 가용성 {#availability}
+
+탈중앙화 오라클 서비스는 스마트 계약에 오프체인 데이터의 높은 가용성을 보장합니다. 이는 오프체인 정보의 출처와 정보를 온체인으로 전송하는 책임이 있는 노드를 모두 탈중앙화함으로써 달성됩니다.
+
+이는 오라클 계약이 다른 계약의 쿼리를 실행하기 위해 여러 노드(또한 여러 데이터 소스에 의존)에 의존할 수 있으므로 내결함성을 보장합니다. 소스 _및_ 노드 운영자 수준에서의 탈중앙화는 매우 중요합니다. 동일한 소스에서 검색된 정보를 제공하는 오라클 노드 네트워크는 중앙화 오라클과 동일한 문제에 직면하게 됩니다.
+
+스테이킹 기반 오라클이 데이터 요청에 신속하게 응답하지 못하는 노드 운영자를 슬래싱하는 것도 가능합니다. 이는 오라클 노드가 내결함성 인프라에 투자하고 적시에 데이터를 제공하도록 크게 장려합니다.
+
+### 양호한 인센티브 호환성 {#good-incentive-compatibility}
+
+탈중앙화 오라클은 오라클 노드 간의 [비잔틴](https://en.wikipedia.org/wiki/Byzantine_fault) 행동을 방지하기 위해 다양한 인센티브 설계를 구현합니다. 구체적으로 기여 가능성과 책임성을 달성합니다.
+
+1. 탈중앙화 오라클 노드는 종종 데이터 요청에 대한 응답으로 제공하는 데이터에 서명해야 합니다. 이 정보는 오라클 노드의 과거 성과를 평가하는 데 도움이 되므로 사용자는 데이터 요청을 할 때 신뢰할 수 없는 오라클 노드를 필터링할 수 있습니다. Witnet의 [알고리즘 평판 시스템](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system)이 그 예입니다.
+
+2. 앞서 설명했듯이 탈중앙화 오라클은 노드가 제출하는 데이터의 진실성에 대한 신뢰도에 스테이킹을 하도록 요구할 수 있습니다. 주장이 확인되면 이 스테이킹은 정직한 서비스에 대한 보상과 함께 반환될 수 있습니다. 그러나 정보가 부정확한 경우 슬래싱될 수도 있으며, 이는 어느 정도의 책임성을 제공합니다.
+
+## 스마트 계약에서의 오라클 애플리케이션 {#applications-of-oracles-in-smart-contracts}
+
+다음은 이더리움에서 오라클의 일반적인 사용 사례입니다.
+
+### 금융 데이터 검색 {#retrieving-financial-data}
+
+[탈중앙화 금융](/defi/)(디파이) 애플리케이션은 자산의 피어투피어 대출, 차입 및 거래를 허용합니다. 이를 위해서는 종종 환율 데이터(암호화폐의 법정화폐 가치를 계산하거나 토큰 가격을 비교하기 위해) 및 자본 시장 데이터(금 또는 미국 달러와 같은 토큰화된 자산의 가치를 계산하기 위해)를 포함한 다양한 금융 정보를 얻어야 합니다.
+
+예를 들어, 디파이 대출 프로토콜은 담보로 예치된 자산(예: ETH)의 현재 시장 가격을 쿼리해야 합니다. 이를 통해 계약은 담보 자산의 가치를 결정하고 시스템에서 얼마나 빌릴 수 있는지 결정할 수 있습니다.
+
+디파이에서 인기 있는 '가격 오라클'(흔히 이렇게 불림)에는 Chainlink 가격 피드, Compound Protocol의 [Open Price Feed](https://compound.finance/docs/prices), Uniswap의 [시간 가중 평균 가격(TWAP)](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) 및 [Maker Oracles](https://docs.makerdao.com/smart-contract-modules/oracle-module)이 있습니다.
+
+개발자는 프로젝트에 통합하기 전에 이러한 가격 오라클과 관련된 주의 사항을 이해해야 합니다. 이 [문서](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles)는 언급된 가격 오라클 중 하나를 사용할 계획일 때 고려해야 할 사항에 대한 자세한 분석을 제공합니다.
+
+아래는 Chainlink 가격 피드를 사용하여 스마트 계약에서 최신 ETH 가격을 검색하는 방법의 예입니다.
+
+```solidity
+pragma solidity ^0.6.7;
+
+import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";
+
+contract PriceConsumerV3 {
+
+ AggregatorV3Interface internal priceFeed;
+
+ /**
+ * 네트워크: Kovan
+ * 애그리게이터: ETH/USD
+ * 주소: 0x9326BFA02ADD2366b30bacB125260Af641031331
+ */
+ constructor() public {
+ priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);
+ }
+
+ /**
+ * 최신 가격을 반환합니다
+ */
+ function getLatestPrice() public view returns (int) {
+ (
+ uint80 roundID,
+ int price,
+ uint startedAt,
+ uint timeStamp,
+ uint80 answeredInRound
+ ) = priceFeed.latestRoundData();
+ return price;
+ }
+}
+```
+
+### 검증 가능한 무작위성 생성 {#generating-verifiable-randomness}
+
+블록체인 기반 게임이나 복권 제도와 같은 특정 블록체인 애플리케이션은 효과적으로 작동하기 위해 높은 수준의 예측 불가능성과 무작위성이 필요합니다. 그러나 블록체인의 결정론적 실행은 무작위성을 제거합니다.
+
+원래 접근 방식은 `blockhash`와 같은 의사 난수 암호화 함수를 사용하는 것이었지만, 이는 작업 증명 알고리즘을 해결하는 [채굴자에 의해 조작될 수 있었습니다](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.) 작업 증명 알고리즘을 해결합니다. 또한, 이더리움의 [지분 증명으로의 전환](/roadmap/merge/)은 개발자들이 더 이상 온체인 무작위성을 위해 `blockhash`에 의존할 수 없음을 의미합니다. 대신 비콘 체인의 [RANDAO 메커니즘](https://eth2book.info/altair/part2/building_blocks/randomness)이 무작위성의 대안 소스를 제공합니다.
+
+무작위 값을 오프체인으로 생성하여 온체인으로 보낼 수 있지만, 그렇게 하면 사용자에게 높은 신뢰 요구 사항이 부과됩니다. 그들은 값이 예측 불가능한 메커니즘을 통해 실제로 생성되었고 전송 중에 변경되지 않았다고 믿어야 합니다.
+
+오프체인 계산을 위해 설계된 오라클은 프로세스의 예측 불가능성을 증명하는 암호화 증명과 함께 온체인으로 브로드캐스팅하는 무작위 결과를 오프체인에서 안전하게 생성하여 이 문제를 해결합니다. 예를 들어, [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/)(검증 가능한 랜덤 함수)는 예측 불가능한 결과에 의존하는 애플리케이션을 위한 신뢰할 수 있는 스마트 계약을 구축하는 데 유용한, 증명 가능하게 공정하고 변조 방지 기능이 있는 난수 생성기(RNG)입니다.
+
+### 이벤트 결과 얻기 {#getting-outcomes-for-events}
+
+오라클을 사용하면 실제 세계 이벤트에 응답하는 스마트 계약을 쉽게 만들 수 있습니다. 오라클 서비스는 계약이 오프체인 구성 요소를 통해 외부 API에 연결하고 해당 데이터 소스에서 정보를 소비할 수 있도록 하여 이를 가능하게 합니다. 예를 들어, 앞서 언급한 예측 탈중앙화앱은 신뢰할 수 있는 오프체인 소스(예: Associated Press)로부터 선거 결과를 반환하도록 오라클에 요청할 수 있습니다.
+
+실제 세계 결과를 기반으로 데이터를 검색하기 위해 오라클을 사용하면 다른 새로운 사용 사례가 가능해집니다. 예를 들어, 탈중앙화 보험 상품이 효과적으로 작동하려면 날씨, 재해 등에 대한 정확한 정보가 필요합니다.
+
+### 스마트 계약 자동화 {#automating-smart-contracts}
+
+스마트 계약은 자동으로 실행되지 않으며, 외부 소유 계정(EOA) 또는 다른 컨트랙트 계정이 계약 코드를 실행하기 위해 올바른 함수를 트리거해야 합니다. 대부분의 경우 계약의 기능 대부분은 공개되어 있으며 EOA 및 다른 계약에서 호출할 수 있습니다.
+
+그러나 계약 내에는 다른 사람이 액세스할 수 없지만 탈중앙화앱의 전반적인 기능에 중요한 비공개 함수도 있습니다. 예를 들어 사용자를 위해 주기적으로 새로운 NFT를 발행하는 `mintERC721Token()` 함수, 예측 시장에서 지불금을 수여하는 함수 또는 DEX에서 스테이킹된 토큰을 잠금 해제하는 함수가 있습니다.
+
+개발자는 애플리케이션이 원활하게 실행되도록 유지하기 위해 일정한 간격으로 이러한 함수를 트리거해야 합니다. 그러나 이는 개발자에게 평범한 작업에 더 많은 시간을 낭비하게 할 수 있으며, 이것이 스마트 계약 실행 자동화가 매력적인 이유입니다.
+
+일부 탈중앙화 오라클 네트워크는 자동화 서비스를 제공하여 오프체인 오라클 노드가 사용자가 정의한 매개 변수에 따라 스마트 계약 함수를 트리거할 수 있도록 합니다. 일반적으로 이를 위해서는 오라클 서비스에 대상 계약을 '등록'하고, 오라클 운영자에게 지불할 자금을 제공하고, 계약을 트리거할 조건이나 시간을 지정해야 합니다.
+
+Chainlink의 [Keeper 네트워크](https://chain.link/keepers)는 스마트 계약이 신뢰를 최소화하고 탈중앙화된 방식으로 정기적인 유지 관리 작업을 아웃소싱할 수 있는 옵션을 제공합니다. 계약을 Keeper와 호환되게 만들고 Upkeep 서비스를 사용하는 방법에 대한 정보는 공식 [Keeper 개발문서](https://docs.chain.link/docs/chainlink-keepers/introduction/)를 참조하세요.
+
+## 블록체인 오라클 사용 방법 {#use-blockchain-oracles}
+
+이더리움 탈중앙화앱에 통합할 수 있는 여러 오라클 애플리케이션이 있습니다.
+
+**[Chainlink](https://chain.link/)** - _Chainlink 탈중앙화 오라클 네트워크는 모든 블록체인에서 고급 스마트 계약을 지원하기 위해 변조 방지 입력, 출력 및 계산을 제공합니다._
+
+**[RedStone Oracles](https://redstone.finance/)** - _RedStone은 가스 최적화 데이터 피드를 제공하는 탈중앙화 모듈형 오라클입니다. 유동성 스테이킹 토큰(LST), 유동성 리스테이킹 토큰(LRT), 비트코인 스테이킹 파생상품과 같은 신규 자산에 대한 가격 피드 제공을 전문으로 합니다._
+
+**[Chronicle](https://chroniclelabs.org/)** - _Chronicle은 진정으로 확장 가능하고 비용 효율적이며 탈중앙화되고 검증 가능한 오라클을 개발하여 온체인 데이터 전송의 현재 한계를 극복합니다._
+
+**[Witnet](https://witnet.io/)** - _Witnet은 강력한 암호 경제적 보장을 통해 스마트 계약이 실제 세계 이벤트에 반응하도록 돕는 무허가성, 탈중앙화 및 검열 저항성 오라클입니다._
+
+**[UMA Oracle](https://uma.xyz)** - _UMA의 낙관적 오라클은 스마트 계약이 보험, 금융 파생 상품, 예측 시장을 포함한 다양한 애플리케이션을 위해 모든 종류의 데이터를 신속하게 수신할 수 있도록 합니다._
+
+**[Tellor](https://tellor.io/)** - _Tellor는 스마트 계약이 필요할 때마다 모든 데이터를 쉽게 얻을 수 있는 투명하고 무허가성인 오라클 프로토콜입니다._
+
+**[Band Protocol](https://bandprotocol.com/)** - _Band Protocol은 실제 세계 데이터와 API를 스마트 계약에 집계하고 연결하는 크로스 체인 데이터 오라클 플랫폼입니다._
+
+**[Pyth Network](https://pyth.network/)** - _Pyth 네트워크는 변조 방지, 탈중앙화 및 자립 환경에서 연속적인 실제 세계 데이터를 온체인으로 게시하도록 설계된 1차 금융 오라클 네트워크입니다._
+
+**[API3 DAO](https://www.api3.org/)** - _API3 DAO는 스마트 계약을 위한 탈중앙화 솔루션에서 더 큰 소스 투명성, 보안 및 확장성을 제공하는 1차 오라클 솔루션을 제공합니다._
+
+**[Supra](https://supra.com/)** - 모든 블록체인(퍼블릭(L1 및 L2) 또는 프라이빗(기업))을 상호 연결하는 수직적으로 통합된 크로스 체인 솔루션 툴킷으로, 온체인 및 오프체인 사용 사례에 사용할 수 있는 탈중앙화 오라클 가격 피드를 제공합니다.
+
+**[Gas Network](https://gas.network/)** - 블록체인 전반에 걸쳐 실시간 가스 가격 데이터를 제공하는 분산형 오라클 플랫폼입니다. 선도적인 가스 가격 데이터 제공업체의 데이터를 온체인으로 가져옴으로써 Gas Network는 상호 운용성을 촉진하는 데 도움을 줍니다. Gas Network는 이더리움 메인넷 및 다수의 선도적인 L2를 포함하여 35개 이상의 체인에 대한 데이터를 지원합니다.
+
+## 더 읽어보기 {#further-reading}
+
+**문서**
+
+- [블록체인 오라클이란?](https://chain.link/education/blockchain-oracles) — _Chainlink_
+- [블록체인 오라클이란?](https://medium.com/better-programming/what-is-a-blockchain-oracle-f5ccab8dbd72) — _Patrick Collins_
+- [탈중앙화 오라클: 종합 개요](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) — _Julien Thevenard_
+- [이더리움에서 블록체인 오라클 구현하기](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_
+- [스마트 계약이 API를 호출할 수 없는 이유는 무엇인가요?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) — _StackExchange_
+- [그래서 당신은 가격 오라클을 사용하고 싶군요](https://samczsun.com/so-you-want-to-use-a-price-oracle/) — _samczsun_
+
+**영상**
+
+- [오라클과 블록체인 유틸리티의 확장](https://youtu.be/BVUZpWa8vpw) — _Real Vision Finance_
+
+**튜토리얼**
+
+- [솔리디티에서 현재 이더리움 가격 가져오는 방법](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) — _Chainlink_
+- [오라클 데이터 소비](https://docs.chroniclelabs.org/Developers/tutorials/Remix) — _Chronicle_
+
+**예제 프로젝트**
+
+- [이더리움을 위한 전체 Chainlink 스타터 프로젝트(솔리디티)](https://github.com/hackbg/chainlink-fullstack) — _HackBG_
diff --git a/public/content/translations/ko/developers/docs/programming-languages/dart/index.md b/public/content/translations/ko/developers/docs/programming-languages/dart/index.md
new file mode 100644
index 00000000000..1f149a1f603
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/dart/index.md
@@ -0,0 +1,30 @@
+---
+title: "Dart 개발자를 위한 이더리움"
+description: "Dart 언어를 사용한 이더리움 개발 방법 알아보기"
+lang: ko
+incomplete: true
+---
+
+## 스마트 계약 및 솔리디티 언어 시작하기 {#getting-started-with-smart-contracts-and-solidity}
+
+## 튜토리얼 {#tutorials}
+
+- [Flutter and Blockchain – Hello World Dapp](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/)은 시작하는 데 필요한 모든 단계를 안내합니다.
+ 1. [Solidity](https://soliditylang.org/)로 스마트 계약 작성하기
+ 2. 다트로 유저 인터페이스 짜기
+- [Building a Mobile dapp with Flutter](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a)는 분량이 훨씬 짧으므로, 이미 기초를 알고 있다면 더 나을 수 있습니다.
+- 동영상으로 배우는 것을 선호한다면, 약 1시간 분량의 [Build Your First Blockchain Flutter App](https://www.youtube.com/watch?v=3Eeh3pJ6PeA)을 시청할 수 있습니다.
+- 기다리기 힘들다면, 약 20분 분량의 [Building a Blockchain Decentralized-app with Flutter and Dart on Ethereum](https://www.youtube.com/watch?v=jaMFEOCq_1s)을 선호할 수도 있습니다.
+- [Integrating MetaMask in Flutter application with Web3Modal by WalletConnect](https://www.youtube.com/watch?v=v_M2buHCpc4) - 이 짧은 동영상은 WalletConnect의 [Web3Modal](https://pub.dev/packages/web3modal_flutter) 라이브러리를 사용하여 MetaMask를 Flutter 애플리케이션에 통합하는 단계를 안내합니다.
+- [Mobile Blockchain Developer Bootcamp Course With Solidity & Flutter](https://youtube.com/playlist?list=PL4V4Unlk5luhQ26ERO6hWEbcUwHDSSmVH) - 풀스택 모바일 블록체인 개발자 과정 재생 목록
+
+## 이더리움 클라이언트 사용하기 {#working-with-ethereum-clients}
+
+이더리움을 사용하여 암호화폐와 블록체인 기술의 이점을 활용하는 탈중앙화 애플리케이션(또는 "탈중앙화앱")을 만들 수 있습니다.
+현재 Dart에서 이더리움용 [JSON-RPC API](/developers/docs/apis/json-rpc/)를 사용하기 위해 유지 관리되는 라이브러리가 두 개 이상 있습니다.
+
+1. [pwa.ir의 Web3dart](https://pub.dev/packages/web3dart)
+2. [darticulate.com의 Ethereum 5.0.0](https://pub.dev/packages/ethereum)
+
+특정 이더리움 주소를 조작하거나 다양한 암호화폐의 가격을 검색할 수 있는 추가 라이브러리도 있습니다.
+[여기에서 전체 목록을 볼 수 있습니다](https://pub.dev/dart/packages?q=ethereum).
diff --git a/public/content/translations/ko/developers/docs/programming-languages/delphi/index.md b/public/content/translations/ko/developers/docs/programming-languages/delphi/index.md
new file mode 100644
index 00000000000..3fb5f840aae
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/delphi/index.md
@@ -0,0 +1,56 @@
+---
+title: "델파이 개발자를 위한 이더리움"
+description: "Delphi 프로그래밍 언어를 사용하여 Ethereum을 개발하는 방법 배우기"
+lang: ko
+incomplete: true
+---
+
+
+
+Delphi 프로그래밍 언어를 사용하여 Ethereum을 개발하는 방법 배우기
+
+
+
+이더리움 기반으로 개발된 탈중앙화 애플리케이션(또는 “디앱”)은 암호화폐와 블록체인 기술의 장점을 가지게 됩니다. 탈중앙화 애플리케이션은 일단 이더리움에 배포되면 항상 프로그래밍된 대로 동작하므로 완전히 신뢰할 수 있습니다. 그러므로 새로운 형태의 금융 애플리케이션을 제작하기 위해 디지털 자산을 제어하는 데 사용될 수 있습니다. 그뿐만 아니라 해당 금융 애플리케이션을 어떤 특정 단체나 개인이 제어할 수 없고 검열이 거의 불가능하도록 탈중앙화할 수 있습니다.
+
+Ethereum 위에서 분산 애플리케이션을 빌드하고 스마트 계약과 상호작용하기
+
+## 스마트 계약과 솔리디티 언어 시작하기 {#getting-started-with-smart-contracts-and-the-solidity-language}
+
+**Delphi와 Ethereum을 통합하는 첫 단계**
+
+먼저 기본 지식이 더 필요하시나요? [ethereum.org/learn](/learn/) 또는 [ethereum.org/developers](/developers/)를 확인해 보세요.
+
+- [블록체인 설명](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [스마트 계약 이해하기](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [첫 스마트 계약 작성하기](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [솔리디티 컴파일 및 배포 방법 알아보기](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 초보자를 위한 참고 자료 및 링크 {#beginner-references-and-links}
+
+**Delphereum 라이브러리 소개**
+
+- [Delphereum이란 무엇인가요?](https://github.com/svanas/delphereum/blob/master/README.md)
+- [Delphi를 로컬(인메모리) 블록체인에 연결하기](https://medium.com/@svanas/connecting-delphi-to-a-local-in-memory-blockchain-9a1512d6c5b0)
+- [Delphi를 이더리움 메인넷에 연결하기](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83)
+- [Delphi를 스마트 계약에 연결하기](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1)
+
+**설정을 건너뛰고 곧바로 샘플을 확인하고 싶으세요?**
+
+- [3분 완성 스마트 계약과 Delphi - 파트 1](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d)
+- [3분 완성 스마트 계약과 Delphi - 파트 2](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b)
+
+## 중급자용 아티클 {#intermediate-articles}
+
+- [Delphi에서 이더리움 서명 메시지 시그니처 생성하기](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b)
+- [Delphi로 이더 전송하기](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4)
+- [Delphi로 ERC-20 토큰 전송하기](https://medium.com/@svanas/transferring-erc-20-tokens-with-delphi-bb44c05b295d)
+
+## 고급 사용 패턴 {#advanced-use-patterns}
+
+- [Delphi와 이더리움 네임 서비스(ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7)
+- [QuikNode, 이더리움 및 Delphi](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23)
+- [Delphi와 이더리움 다크 포레스트](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93)
+- [Delphi에서 토큰 교환하기](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7)
+
+더 많은 참고 자료를 확인하고 싶으신가요? [ethereum.org/developers](/developers/)를 확인해 보세요.
diff --git a/public/content/translations/ko/developers/docs/programming-languages/dot-net/index.md b/public/content/translations/ko/developers/docs/programming-languages/dot-net/index.md
new file mode 100644
index 00000000000..1883cdc90b4
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/dot-net/index.md
@@ -0,0 +1,86 @@
+---
+title: ".NET 개발자를 위한 이더리움"
+description: ".NET 기반 프로젝트 및 툴링을 사용하여 이더리움 개발 방법 알아보기"
+lang: ko
+incomplete: true
+---
+
+.NET 기반 프로젝트와 툴링을 사용하여 이더리움용으로 개발하는 방법을 알아보세요
+
+이더리움 기반으로 개발된 탈중앙화 애플리케이션(또는 “디앱”)은 암호화폐와 블록체인 기술의 장점을 가지게 됩니다. 탈중앙화 애플리케이션은 일단 이더리움에 배포되면 항상 프로그래밍된 대로 동작하므로 완전히 신뢰할 수 있습니다. 그러므로 새로운 형태의 금융 애플리케이션을 제작하기 위해 디지털 자산을 제어하는 데 사용될 수 있습니다. 그뿐만 아니라 해당 금융 애플리케이션을 어떤 특정 단체나 개인이 제어할 수 없고 검열이 거의 불가능하도록 탈중앙화할 수 있습니다.
+
+이더리움 기반으로 개발된 탈중앙화 애플리케이션은 마이크로스프트(Microsoft) 기술 스택의 도구와 언어를 사용하여 스마트 계약과 상호 작용합니다. 지원되는 언어에는 C#, # Visual Basic .NET, F# 등이 있으며 .NET Framework/.NET Core/.NET Standard에서 VSCode 및 Visual Studio와 같은 도구를 통해 실행됩니다. 마이크로소프트 애저(Microsoft Azure) 블록체인을 사용하여 애저에서 수 분 이내에 이더리움 블록체인을 배포할 수 있습니다. 이더리움에서 .NET에 대한 열정을 표현해 보세요!
+
+## 스마트 계약과 솔리디티 언어 시작하기 {#getting-started-with-smart-contracts-and-the-solidity-language}
+
+**이더리움과 .NET을 통합하기 위한 첫걸음을 내딛으세요**
+
+먼저 기본 지식이 더 필요하시나요? [ethereum.org/learn](/learn/) 또는 [ethereum.org/developers](/developers/)를 확인해 보세요.
+
+- [블록체인 설명](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [스마트 계약 이해하기](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [첫 스마트 계약 작성하기](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [솔리디티 컴파일 및 배포 방법 알아보기](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 초보자를 위한 참고 자료 및 링크 {#beginner-references-and-links}
+
+**네더리움 라이브러리(Nethereum library) 및 VS 코드 솔리디티(Code Solidity) 소개**
+
+- [Nethereum, 시작하기](https://docs.nethereum.com/en/latest/getting-started/)
+- [VS Code 솔리디티 설치하기](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity)
+- [.NET 개발자의 이더리움 스마트 계약 생성 및 호출 워크플로](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2)
+- [Nethereum을 이용한 스마트 계약 통합](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm)
+- [Nethereum으로 .NET 및 이더리움 블록체인 스마트 계약 연동하기](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933), [중문판](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1)으로도 제공
+- [Nethereum - 블록체인을 위한 오픈 소스 .NET 통합 라이브러리](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/)
+- [Nethereum을 사용하여 이더리움 트랜잭션을 SQL 데이터베이스에 작성하기](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36)
+- [C#과 VisualStudio를 사용하여 이더리움 스마트 계약을 쉽게 배포하는 방법 알아보기](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c)
+
+**설정을 건너뛰고 곧바로 샘플을 확인하고 싶으세요?**
+
+- [Playground](http://playground.nethereum.com/) - 브라우저를 통해 이더리움과 상호작용하고 Nethereum 사용법을 알아보세요.
+ - 계정 잔액 조회하기 [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001)
+ - ERC20 스마트 계약 잔액 조회하기 [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004)
+ - 계정으로 이더 전송하기 [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003)
+ - ... 기타
+
+## 중급자용 아티클 {#intermediate-articles}
+
+- [Nethereum 워크북/샘플 목록](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/)
+- [자체 개발 테스트 체인 배포하기](https://github.com/Nethereum/Testchains)
+- [솔리디티용 VSCode Codegen 플러그인](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/)
+- [Unity와 이더리움: 왜, 그리고 어떻게](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how)
+- [이더리움 탈중앙화앱용 ASP.NET Core 웹 API 만들기](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/)
+- [Nethereum Web3를 사용하여 공급망 추적 시스템 구현하기](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4)
+- [Nethereum 블록 처리](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/), [C# Playground 샘플](http://playground.nethereum.com/csharp/id/1025) 포함
+- [Nethereum 웹소켓 스트리밍](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/)
+- [Kaleido와 Nethereum](https://kaleido.io/kaleido-and-nethereum/)
+- [Quorum과 Nethereum](https://github.com/Nethereum/Nethereum/blob/master/src/Nethereum.Quorum/README.md)
+
+## 고급 사용 패턴 {#advanced-use-patterns}
+
+- [Azure Key Vault와 Nethereum](https://github.com/Azure-Samples/bc-community-samples/tree/master/akv-nethereum)
+- [Nethereum.DappHybrid](https://github.com/Nethereum/Nethereum.DappHybrid)
+- [Ujo Nethereum 백엔드 참조 아키텍처](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/)
+
+## .NET 프로젝트, 도구 및 기타 흥미로운 자료 {#dot-net-projects-tools-and-other-fun-stuff}
+
+- [Nethereum Playground](http://playground.nethereum.com/) - _브라우저에서 Nethereum 코드 스니펫 컴파일, 생성 및 실행_
+- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) - _Blazor의 UI를 사용한 Nethereum codegen_
+- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) - _.NET Wasm SPA 라이트 블록체인 익스플로러 및 간단한 지갑_
+- [Wonka 비즈니스 규칙 엔진](https://docs.nethereum.com/en/latest/wonka/) - _근본적으로 메타데이터 기반인 비즈니스 규칙 엔진(.NET 및 이더리움 플랫폼 모두 지원)_
+- [Nethermind](https://github.com/NethermindEth/nethermind) - _Linux, Windows, MacOS용 .NET Core 이더리움 클라이언트_
+- [eth-utils](https://github.com/ethereum/eth-utils/) - _이더리움 관련 코드베이스 작업을 위한 유틸리티 함수_
+- [TestChains](https://github.com/Nethereum/TestChains) - _빠른 응답을 위해 사전 구성된 .NET 개발 체인(PoA)_
+
+더 많은 참고 자료를 확인하고 싶으신가요? [ethereum.org/developers](/developers/)를 확인해 보세요.
+
+## .NET 커뮤니티 기여자 {#dot-net-community-contributors}
+
+Nethereum에서는 주로 [Gitter](https://gitter.im/Nethereum/Nethereum)에서 활동하며, 누구나 자유롭게 질문과 답변을 하고, 도움을 받거나 편안하게 시간을 보낼 수 있습니다. [Nethereum GitHub 리포지토리](https://github.com/Nethereum)에서 자유롭게 PR을 보내거나 이슈를 열거나, 저희가 보유한 다양한 사이드/샘플 프로젝트를 둘러보세요. [Discord](https://discord.gg/jQPrR58FxX)에서도 저희를 만나보실 수 있습니다!
+
+Nethermind가 처음이고 시작하는 데 도움이 필요하시면, 저희 [Discord](http://discord.gg/PaCMRFdvWT)에 참여하세요. 저희 개발자들이 질문에 답변해 드립니다. [Nethermind GitHub 리포지토리](https://github.com/NethermindEth/nethermind)에서 주저하지 말고 PR을 열거나 이슈를 제기하세요.
+
+## 기타 수집된 목록 {#other-aggregated-lists}
+
+[Nethereum 공식 사이트](https://nethereum.com/)
+[Nethermind 공식 사이트](https://nethermind.io/)
diff --git a/public/content/translations/ko/developers/docs/programming-languages/elixir/index.md b/public/content/translations/ko/developers/docs/programming-languages/elixir/index.md
new file mode 100644
index 00000000000..90edf40dc86
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/elixir/index.md
@@ -0,0 +1,55 @@
+---
+title: "엘릭서 개발자를 위한 이더리움"
+description: "엘릭서 기반 프로젝트와 툴링을 사용하여 이더리움 개발 방법을 알아보세요."
+lang: ko
+incomplete: false
+---
+
+엘릭서 기반 프로젝트와 툴링을 사용하여 이더리움 개발 방법을 알아보세요.
+
+이더리움 기반으로 개발된 탈중앙화 애플리케이션(또는 “디앱”)은 암호화폐와 블록체인 기술의 장점을 가지게 됩니다. 이러한 탈중앙화앱은 무신뢰성을 가질 수 있습니다. 즉, 이더리움에 배포되면 항상 프로그래밍된 대로 실행됩니다. 탈중앙화앱은 디지털 자산을 제어하여 새로운 종류의 금융 애플리케이션을 만들 수 있습니다. 그뿐만 아니라 해당 금융 애플리케이션을 어떤 특정 단체나 개인이 제어할 수 없고 검열이 거의 불가능하도록 탈중앙화할 수 있습니다.
+
+## 스마트 계약 및 솔리디티 언어 시작하기 {#getting-started-with-smart-contracts-and-solidity}
+
+**엘릭서와 이더리움 통합을 위한 첫 단계**
+
+먼저 기본 지식이 더 필요하시나요? [ethereum.org/learn](/learn/) 또는 [ethereum.org/developers](/developers/)를 확인해 보세요.
+
+- [블록체인 설명](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [스마트 계약 이해하기](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [첫 스마트 계약 작성하기](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [솔리디티 컴파일 및 배포 방법 알아보기](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 초급자용 아티클 {#beginner-articles}
+
+- [드디어 이더리움 계정 이해하기](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
+- [Ethers — 엘릭서를 위한 최고 수준의 이더리움 웹3 라이브러리](https://medium.com/@alisinabh/announcing-ethers-a-first-class-ethereum-web3-library-for-elixir-1d64e9409122)
+
+## 중급자용 아티클 {#intermediate-articles}
+
+- [엘릭서로 원시 이더리움 계약 트랜잭션에 서명하는 방법](https://kohlerjp.medium.com/how-to-sign-raw-ethereum-contract-transactions-with-elixir-f8822bcc813b)
+- [이더리움 스마트 계약과 엘릭서](https://medium.com/agile-alpha/ethereum-smart-contracts-and-elixir-c7c4b239ddb4)
+
+## 엘릭서 프로젝트 및 도구 {#elixir-projects-and-tools}
+
+### 활성 {#active}
+
+- [block_keys](https://github.com/ExWeb3/block_keys) - _엘릭서의 BIP32 및 BIP44 구현 (결정적 지갑을 위한 다중 계정 계층 구조)_
+- [ethereumex](https://github.com/mana-ethereum/ethereumex) - _이더리움 블록체인을 위한 엘릭서 JSON-RPC 클라이언트_
+- [ethers](https://github.com/ExWeb3/elixir_ethers) - _엘릭서를 사용하여 이더리움의 스마트 계약과 상호 작용하기 위한 포괄적인 웹3 라이브러리_
+- [ethers_kms](https://github.com/ExWeb3/elixir_ethers_kms) - _Ethers를 위한 KMS 서명자 라이브러리 (AWS KMS로 트랜잭션 서명)_
+- [ex_abi](https://github.com/poanetwork/ex_abi) - _엘릭서의 이더리움 ABI 파서/디코더/인코더 구현_
+- [ex_keccak](https://github.com/ExWeb3/ex_keccak) - _tiny-keccak Rust 크레이트로 빌드된 NIF를 사용하여 Keccak SHA3-256 해시를 계산하기 위한 엘릭서 라이브러리_
+- [ex_rlp](https://github.com/mana-ethereum/ex_rlp) - _이더리움의 RLP(재귀 길이 접두사) 인코딩의 엘릭서 구현_
+
+### 보관됨 / 더 이상 유지 관리되지 않음 {#archived--no-longer-maintained}
+
+- [eth](https://hex.pm/packages/eth) - _엘릭서용 이더리움 유틸리티_
+- [exw3](https://github.com/hswick/exw3) - _엘릭서를 위한 고급 이더리움 RPC 클라이언트_
+- [mana](https://github.com/mana-ethereum/mana) - _엘릭서로 작성된 이더리움 전체 노드 구현_
+
+더 많은 참고 자료를 확인하고 싶으신가요? 저희 [개발자 홈](/developers/)을 확인해 보세요.
+
+## 엘릭서 커뮤니티 기여자 {#elixir-community-contributors}
+
+[엘릭서 Slack #ethereum 채널](https://elixir-lang.slack.com/archives/C5RPZ3RJL)은 빠르게 성장하는 커뮤니티가 활동하는 곳이며, 위에 언급된 프로젝트 및 관련 주제에 대한 논의를 위한 전용 공간입니다.
diff --git a/public/content/translations/ko/developers/docs/programming-languages/golang/index.md b/public/content/translations/ko/developers/docs/programming-languages/golang/index.md
new file mode 100644
index 00000000000..a313c43b5fc
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/golang/index.md
@@ -0,0 +1,84 @@
+---
+title: "Go 개발자를 위한 이더리움"
+description: "Go 기반 프로젝트 및 툴링을 사용한 이더리움 개발 방법 알아보기"
+lang: ko
+incomplete: true
+---
+
+Go 기반 프로젝트와 툴링을 사용하여 이더리움용으로 개발하는 방법을 알아보세요.
+
+이더리움을 통한 탈중앙화 애플리케이션 (또는 디앱) 개발하기. 탈중앙화 애플리케이션은 일단 이더리움에 배포되면 항상 프로그래밍된 대로 동작하므로 완전히 신뢰할 수 있습니다. 탈중앙화되었다라는 것은 서비스가 중단되지 않는 다수의 노드가 연결된 네크워크 망에서의 동작을 의미합니다. 상태를 검열할 수 있는 어떤 단체나 개인도 없습니다. 새로운 유형의 애플리케이션을 제작하기 위해 디지털 자산을 사용할 수 있습니다.
+
+## 스마트 계약 및 솔리디티 언어 시작하기 {#getting-started-with-smart-contracts-and-solidity}
+
+**Go와 이더리움을 통합하기 위한 첫 단계**
+
+먼저 기본 지식이 더 필요하시나요? [ethereum.org/learn](/learn/) 또는 [ethereum.org/developers](/developers/)를 확인해 보세요.
+
+- [블록체인 설명](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [스마트 계약 이해하기](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [첫 스마트 계약 작성하기](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [솔리디티 컴파일 및 배포 방법 알아보기](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [계약 튜토리얼](https://github.com/ethereum/go-ethereum/wiki/Contract-Tutorial)
+
+## 초보자용 아티클 및 서적 {#beginner-articles-and-books}
+
+- [Geth 시작하기](https://medium.com/@tzhenghao/getting-started-with-geth-c1a30b8d6458)
+- [Golang을 사용하여 이더리움에 연결하기](https://www.youtube.com/watch?v=-7uChuO_VzM)
+- [Golang을 사용하여 이더리움 스마트 계약 배포하기](https://www.youtube.com/watch?v=pytGqQmDslE)
+- [Go로 이더리움 스마트 계약을 테스트하고 배포하는 단계별 가이드](https://hackernoon.com/a-step-by-step-guide-to-testing-and-deploying-ethereum-smart-contracts-in-go-9fc34b178d78)
+- [eBook: Go를 사용한 이더리움 개발](https://goethereumbook.org/) - _Go를 사용하여 이더리움 애플리케이션을 개발합니다_
+
+## 중급자용 아티클 및 문서 {#intermediate-articles-and-docs}
+
+- [Go 이더리움 개발 문서](https://geth.ethereum.org/docs/) - _Go 언어를 사용한 공식 이더리움 개발 문서_
+- [Erigon 프로그래머 가이드](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _상태 트리, 다중 증명 및 트랜잭션 처리를 포함한 그림 설명 가이드_
+- [Erigon과 무상태 이더리움](https://youtu.be/3-Mn7OckSus?t=394) - _2020 이더리움 커뮤니티 콘퍼런스(EthCC 3)_
+- [Erigon: 이더리움 클라이언트 최적화](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _2018 Devcon 4_
+- [Go 이더리움 GoDoc](https://godoc.org/github.com/ethereum/go-ethereum)
+- [Geth와 Go로 디앱 만들기](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/)
+- [Golang 및 Geth를 사용하여 이더리움 프라이빗 네트워크와 작업하기](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php)
+- [Go를 사용하여 이더리움에서 솔리디티 계약 단위 테스트하기](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281)
+- [Geth를 라이브러리로 사용하기 위한 빠른 참조](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e)
+
+## 고급 사용 패턴 {#advanced-use-patterns}
+
+- [GETH 시뮬레이션된 백엔드](https://kauri.io/#collections/An%20ethereum%20test%20toolkit%20in%20Go/the-geth-simulated-backend/#_top)
+- [이더리움 및 Quorum을 사용한 서비스형 블록체인 앱](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html)
+- [이더리움 블록체인 애플리케이션의 분산 스토리지 IPFS 및 Swarm](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html)
+- [모바일 클라이언트: 라이브러리 및 Inproc 이더리움 노드](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes)
+- [네이티브 디앱스: 이더리움 계약에 대한 Go 바인딩](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts)
+
+## Go 프로젝트 및 도구 {#go-projects-and-tools}
+
+- [Geth / Go 이더리움](https://github.com/ethereum/go-ethereum) - _이더리움 프로토콜의 공식 Go 구현체_
+- [Go 이더리움 코드 분석](https://github.com/ZtesoftCS/go-ethereum-code-analysis) - _Go 이더리움 소스 코드 검토 및 분석_
+- [Erigon](https://github.com/ledgerwatch/erigon) - _아카이브 노드에 중점을 둔 더 빠른 Go 이더리움 파생 클라이언트_
+- [Golem](https://github.com/golemfactory/golem) - _Golem은 컴퓨팅 파워를 위한 글로벌 시장을 만들고 있습니다_
+- [Quorum](https://github.com/jpmorganchase/quorum) - _데이터 개인 정보 보호를 지원하는 허가형 이더리움 구현체_
+- [Prysm](https://github.com/prysmaticlabs/prysm) - _이더리움 '세레니티' 2.0 Go 구현체_
+- [Eth Tweet](https://github.com/yep/eth-tweet) - _탈중앙화된 트위터: 이더리움 블록체인에서 실행되는 마이크로블로깅 서비스_
+- [Plasma MVP Golang](https://github.com/kyokan/plasma) — _최소 실행 가능 플라즈마(Minimum Viable Plasma) 사양의 Golang 구현 및 확장_
+- [오픈 이더리움 채굴 풀](https://github.com/sammy007/open-ethereum-pool) - _오픈 소스 이더리움 채굴 풀_
+- [이더리움 HD 지갑](https://github.com/miguelmota/go-ethereum-hdwallet) - _Go의 이더리움 HD 지갑 파생_
+- [Multi Geth](https://github.com/multi-geth/multi-geth) - _다양한 종류의 이더리움 네트워크 지원_
+- [Geth 라이트 클라이언트](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _라이트 이더리움 하위 프로토콜의 Geth 구현체_
+- [Ethereum Golang SDK](https://github.com/everFinance/goether) - _Golang의 간단한 이더리움 지갑 구현 및 유틸리티_
+- [Covalent Golang SDK](https://github.com/covalenthq/covalent-api-sdk-go) - _200개 이상의 블록체인을 위한 Go SDK를 통한 효율적인 블록체인 데이터 접근_
+
+더 많은 참고 자료를 확인하고 싶으신가요? [ethereum.org/developers](/developers/)를 확인해 보세요
+
+## Go 커뮤니티 기여자 {#go-community-contributors}
+
+- [Geth 디스코드](https://discordapp.com/invite/nthXNEv)
+- [Geth Gist](https://gitter.im/ethereum/go-ethereum)
+- [Gophers 슬랙](https://invite.slack.golangbridge.org/) - [#ethereum 채널](https://gophers.slack.com/messages/C9HP1S9V2)
+- [StackExchange - 이더리움](https://ethereum.stackexchange.com/)
+- [Multi Geth Gitter](https://gitter.im/ethoxy/multi-geth)
+- [이더리움 Gitter](https://gitter.im/ethereum/home)
+- [Geth 라이트 클라이언트 Gitter](https://gitter.im/ethereum/light-client)
+
+## 기타 수집된 목록 {#other-aggregated-lists}
+
+- [Awesome Ethereum](https://github.com/btomashvili/awesome-ethereum)
+- [Consensys: 이더리움 개발자 도구 최종 목록](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [GitHub 소스](https://github.com/ConsenSys/ethereum-developer-tools-list)
diff --git a/public/content/translations/ko/developers/docs/programming-languages/index.md b/public/content/translations/ko/developers/docs/programming-languages/index.md
new file mode 100644
index 00000000000..af19b6d1fc9
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/index.md
@@ -0,0 +1,32 @@
+---
+title: "프로그래밍 언어"
+description: "JavaScript, Python, Go, Rust 등 다양한 프로그래밍 언어를 위한 이더리움 개발 참고 자료를 찾아보세요."
+lang: ko
+---
+
+개발자들이 오해하고 있는 부분 중 하나는 이더리움 상에서 구축하려면 반드시 [스마트 계약](/developers/docs/smart-contracts/)을 작성해야 한다는 것입니다. 하지만 이는 사실이 아닙니다.
+이더리움 네트워크와 커뮤니티의 장점 중 하나는 거의 모든 프로그래밍 언어로 [참여](/community/)할 수 있다는 것입니다.
+
+이더리움과 그 커뮤니티는 오픈 소스를 적극적으로 수용합니다. 여러분은 커뮤니티 프로젝트 - 클라이언트 구현, API, 개발 프레임워크, 테스팅 툴-을 매우 다양한 언어로 찾을 수 있다.
+
+## 언어 선택 {#data}
+
+프로젝트, 리소스 및 가상 커뮤니티를 찾기 위해 선택할 프로그래밍 언어를 선택하십시오.
+
+- [Dart 개발자를 위한 이더리움](/developers/docs/programming-languages/dart/)
+- [Delphi 개발자를 위한 이더리움](/developers/docs/programming-languages/delphi/)
+- [.NET 개발자를 위한 이더리움](/developers/docs/programming-languages/dot-net/)
+- [Elixir 개발자를 위한 이더리움](/developers/docs/programming-languages/elixir/)
+- [Go 개발자를 위한 이더리움](/developers/docs/programming-languages/golang/)
+- [Java 개발자를 위한 이더리움](/developers/docs/programming-languages/java/)
+- [JavaScript 개발자를 위한 이더리움](/developers/docs/programming-languages/javascript/)
+- [Python 개발자를 위한 이더리움](/developers/docs/programming-languages/python/)
+- [Ruby 개발자를 위한 이더리움](/developers/docs/programming-languages/ruby/)
+- [Rust 개발자를 위한 이더리움](/developers/docs/programming-languages/rust/)
+
+### 사용하는 언어가 지원되지 않는다면 어떻게 해야 하나요? {#other-lang}
+
+추가적인 프로그래밍 언어에 대한 참고 자료를 링크하거나 가상 커뮤니티를 안내하고 싶다면 [이슈를 등록](https://github.com/ethereum/ethereum-org-website/issues/new/choose)하여 새 페이지를 요청할 수 있습니다.
+
+현재 지원되지 않는 언어를 사용하여 블록체인과 연동하는 코드를 작성하고 싶다면
+[JSON-RPC 인터페이스](/developers/docs/apis/json-rpc/)를 사용하여 이더리움 네트워크에 연결할 수 있습니다. TCP/IP를 사용할 수 있는 모든 프로그래밍 언어는 이 인터페이스를 사용할 수 있습니다.
diff --git a/public/content/translations/ko/developers/docs/programming-languages/java/index.md b/public/content/translations/ko/developers/docs/programming-languages/java/index.md
new file mode 100644
index 00000000000..3c65914a1b2
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/java/index.md
@@ -0,0 +1,64 @@
+---
+title: "Java 개발자를 위한 이더리움"
+description: "Java 기반 프로젝트 및 툴링을 사용한 이더리움 개발 방법 알아보기"
+lang: ko
+incomplete: true
+---
+
+Java 기반 프로젝트 및 툴링을 사용한 이더리움 개발 방법 알아보기
+
+이더리움 기반으로 개발된 탈중앙화 애플리케이션(또는 “디앱”)은 암호화폐와 블록체인 기술의 장점을 가지게 됩니다. 탈중앙화 애플리케이션은 일단 이더리움에 배포되면 항상 프로그래밍된 대로 동작하므로 완전히 신뢰할 수 있습니다. 그러므로 새로운 형태의 금융 애플리케이션을 제작하기 위해 디지털 자산을 제어하는 데 사용될 수 있습니다. 그뿐만 아니라 해당 금융 애플리케이션을 어떤 특정 단체나 개인이 제어할 수 없고 검열이 거의 불가능하도록 탈중앙화할 수 있습니다.
+
+## 스마트 계약 및 솔리디티 언어 시작하기 {#getting-started-with-smart-contracts-and-solidity}
+
+**Java와 이더리움을 통합하기 위한 첫 단계**
+
+먼저 기본 지식이 더 필요하시나요? [ethereum.org/learn](/learn/) 또는 [ethereum.org/developers.](/developers/)를 확인해 보세요.
+
+- [블록체인 설명](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [스마트 계약 이해하기](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [첫 스마트 계약 작성하기](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [솔리디티 컴파일 및 배포 방법 알아보기](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 이더리움 클라이언트 사용하기 {#working-with-ethereum-clients}
+
+두 개의 주요 Java 이더리움 클라이언트인 [Web3J](https://github.com/web3j/web3j)와 하이퍼레저 Besu 사용법을 알아보세요.
+
+- [Java, Eclipse, Web3J로 이더리움 클라이언트에 연결하기](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j)
+- [Java 및 Web3j로 이더리움 계정 관리하기](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j)
+- [스마트 계약에서 Java 래퍼 생성하기](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract)
+- [이더리움 스마트 계약과 상호 작용하기](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java)
+- [이더리움 스마트 계약 이벤트 수신하기](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java)
+- [Linux에서 Java 이더리움 클라이언트인 Besu(Pantheon) 사용하기](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux)
+- [Java 통합 테스트에서 하이퍼레저 Besu(Pantheon) 노드 실행하기](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests)
+- [Web3j 치트 시트](https://kauri.io/web3j-cheat-sheet-\(java-ethereum\)/5dfa1ea941ac3d0001ce1d90/c)
+
+EVM 기반 블록체인과 상호 작용하기 위한 비동기, 고성능 Kotlin 라이브러리인 [ethers-kt](https://github.com/Kr1ptal/ethers-kt) 사용법을 알아보세요. JVM 및 Android 플랫폼 대상으로 합니다.
+
+- [ERC20 토큰 전송하기](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt)
+- [이벤트 수신을 포함한 UniswapV2 교환](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt)
+- [ETH / ERC20 잔액 추적기](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/balancetracker/BalanceTracker.kt)
+
+## 중급자용 아티클 {#intermediate-articles}
+
+- [IPFS를 사용하여 Java 애플리케이션의 저장 공간 관리하기](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs)
+- [Java에서 Web3j를 사용하여 ERC20 토큰 관리하기](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j)
+- [Web3j 트랜잭션 관리자](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers)
+
+## 고급 사용 패턴 {#advanced-use-patterns}
+
+- [Eventeum을 사용하여 Java 스마트 계약 데이터 캐시 구축하기](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache)
+
+## Java 프로젝트 및 도구 {#java-projects-and-tools}
+
+- [Web3J(이더리움 클라이언트와 상호 작용하기 위한 라이브러리)](https://github.com/web3j/web3j)
+- [ethers-kt(EVM 기반 블록체인을 위한 비동기, 고성능 Kotlin/Java/Android 라이브러리)](https://github.com/Kr1ptal/ethers-kt)
+- [Eventeum(이벤트 리스너)](https://github.com/ConsenSys/eventeum)
+- [Mahuta(IPFS 개발 도구)](https://github.com/ConsenSys/mahuta)
+
+더 많은 참고 자료를 확인하고 싶으신가요? [ethereum.org/developers.](/developers/)를 확인해 보세요.
+
+## Java 커뮤니티 기여자 {#java-community-contributors}
+
+- [IO Builders](https://io.builders)
+- [Kauri](https://kauri.io)
diff --git a/public/content/translations/ko/developers/docs/programming-languages/javascript/index.md b/public/content/translations/ko/developers/docs/programming-languages/javascript/index.md
new file mode 100644
index 00000000000..7714ed3bc47
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/javascript/index.md
@@ -0,0 +1,72 @@
+---
+title: "JavaScript 개발자를 위한 이더리움"
+description: "JavaScript 기반 프로젝트 및 툴링을 사용한 이더리움 개발 방법 알아보기."
+lang: ko
+---
+
+자바스크립트는 이더리움 생태계에서 가장 유명한 언어입니다. 실제로 가능한 많은 이더리움을 JavaScript로 가져오는 전담 [팀](https://github.com/ethereumjs)이 있습니다.
+
+JavaScript(또는 그와 유사한 언어)를 사용하여 [스택의 모든 레벨](/developers/docs/ethereum-stack/)에서 코드를 작성할 수 있습니다.
+
+## 이더리움과 상호작용하기 {#interact-with-ethereum}
+
+### JavaScript API 라이브러리 {#javascript-api-libraries}
+
+블록체인에 쿼리를 요청하고 트랜잭션을 전송하는 등 다양한 작업을 JavaScript로 작성하고 싶다면 [JavaScript API 라이브러리](/developers/docs/apis/javascript/)를 사용하는 것이 가장 편리한 방법입니다. 이러한 API를 통해 개발자는 [이더리움 네트워크의 노드](/developers/docs/nodes-and-clients/)와 쉽게 상호작용할 수 있습니다.
+
+라이브러리를 사용해 이더리움의 스마트 컨트랙트와 상호작용 할 수 있으므로 자바스크립트를 사용하여 기존의 계약과 상호작용 할 수 있는 디앱을 구죽할 수 있습니다.
+
+**자세히 알아보기**
+
+- [Web3.js](https://web3js.readthedocs.io)
+- [Ethers.js](https://ethers.org) – _JavaScript 및 TypeScript의 이더리움 지갑 구현 및 유틸리티가 포함되어 있습니다._
+- [viem](https://viem.sh) – _이더리움과 상호작용하기 위한 저수준 무상태 프리미티브를 제공하는 TypeScript 인터페이스입니다._
+- [Drift](https://ryangoree.github.io/drift/) – _내장된 캐싱, 후크, 테스트 목(mock)을 사용하여 여러 웹3 라이브러리에서 이더리움 개발을 쉽게 할 수 있도록 지원하는 TypeScript 메타 라이브러리입니다._
+
+### 스마트 계약 {#smart-contracts}
+
+JavaScript 개발자이고 직접 스마트 계약을 작성하고 싶다면, [Solidity](https://solidity.readthedocs.io)에 익숙해지는 것이 좋습니다. 이것은 가장 인기 있는 스마트 계약 언어이며, 구문이 JavaScript와 유사하여 배우기 쉬울 수 있습니다.
+
+[스마트 계약](/developers/docs/smart-contracts/)에 대해 더 알아보기.
+
+## 프로토콜 이해하기 {#understand-the-protocol}
+
+### 이더리움 가상 머신 {#the-ethereum-virtual-machine}
+
+[이더리움 가상 머신](/developers/docs/evm/)의 JavaScript 구현이 있습니다. 최신 포크 규칙을 지원합니다. 포크 규칙은 계획된 업그레이드의 결과로 EVM에 가해진 변경 사항을 의미합니다.
+
+다양한 JavaScript 패키지로 나뉘어 있으며, 이를 확인하여 더 잘 이해할 수 있습니다:
+
+- 계정
+- 블록
+- 블록체인 자체
+- 트랜잭션
+- 기타 등등...
+
+이것은 "계정의 데이터 구조가 무엇인가?"와 같은 것들을 이해하는 데 도움이 됩니다.
+
+코드를 읽는 것을 선호한다면, 이 JavaScript는 문서를 읽는 것에 대한 훌륭한 대안이 될 수 있습니다.
+
+**EVM 자세히 알아보기**
+[`@ethereumjs/evm`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/evm)
+
+### 노드 및 클라이언트 {#nodes-and-clients}
+
+이해할 수 있는 언어인 JavaScript로 이더리움 클라이언트가 어떻게 작동하는지 파악할 수 있는 Ethereumjs 클라이언트가 활발히 개발 중입니다.
+
+**클라이언트 자세히 알아보기**
+[`@ethereumjs/client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client)
+
+## 기타 프로젝트 {#other-projects}
+
+이더리움 JavaScript 분야에서는 다음과 같은 많은 일들이 일어나고 있습니다:
+
+- 지갑 유틸리티 라이브러리.
+- 이더리움 키를 생성, 가져오기, 내보내기 위한 도구들.
+- `merkle-patricia-tree`의 구현 – 이더리움 옐로우 페이퍼에 기술된 데이터 구조입니다.
+
+[EthereumJS 리포지토리](https://github.com/ethereumjs)에서 가장 관심 있는 것을 깊이 파고들어 보세요.
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/programming-languages/python/index.md b/public/content/translations/ko/developers/docs/programming-languages/python/index.md
new file mode 100644
index 00000000000..3e26f8fe47e
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/python/index.md
@@ -0,0 +1,99 @@
+---
+title: "Python 개발자를 위한 이더리움"
+description: "Python 기반 프로젝트 및 툴링을 사용한 이더리움 개발 방법 알아보기"
+lang: ko
+incomplete: true
+---
+
+Python 기반 프로젝트 및 툴링을 사용한 이더리움 개발 방법 알아보기
+
+이더리움 기반으로 개발된 탈중앙화 애플리케이션(또는 “디앱”)은 암호화폐와 블록체인 기술의 장점을 가지게 됩니다. 탈중앙화 애플리케이션은 일단 이더리움에 배포되면 항상 프로그래밍된 대로 동작하므로 완전히 신뢰할 수 있습니다. 그러므로 새로운 형태의 금융 애플리케이션을 제작하기 위해 디지털 자산을 제어하는 데 사용될 수 있습니다. 그뿐만 아니라 해당 금융 애플리케이션을 어떤 특정 단체나 개인이 제어할 수 없고 검열이 거의 불가능하도록 탈중앙화할 수 있습니다.
+
+## 스마트 계약 및 솔리디티 언어 시작하기 {#getting-started-with-smart-contracts-and-solidity}
+
+**Python과 이더리움을 통합하기 위한 첫 단계**
+
+먼저 기본 지식이 더 필요하시나요? [ethereum.org/learn](/learn/) 또는 [ethereum.org/developers](/developers/)를 확인해 보세요.
+
+- [블록체인 설명](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [스마트 계약 이해하기](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [첫 스마트 계약 작성하기](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [솔리디티 컴파일 및 배포 방법 알아보기](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [2023년 블록체인 파이썬 현황 보고서](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023)
+
+## 초급자용 아티클 {#beginner-articles}
+
+- [web3.py 개요](https://web3py.readthedocs.io/en/latest/overview.html)
+- [이더리움 파이썬 생태계 둘러보기](https://snakecharmers.ethereum.org/python-ecosystem/)
+- [파이썬 개발자를 위한 이더리움 가이드](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/)
+- [수상을 위한: 이더리움 파이썬 해커톤 가이드](https://snakecharmers.ethereum.org/prize-worthy/)
+- [Vyper를 사용한 스마트 계약 소개](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/)
+- [Python Flask를 사용하여 이더리움 계약을 개발하는 방법](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e)
+- [Web3.py 소개 · 파이썬 개발자를 위한 이더리움](https://www.dappuniversity.com/articles/web3-py-intro)
+- [파이썬과 web3.py를 사용하여 스마트 계약 함수를 호출하는 방법](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py)
+
+## 중급자용 아티클 {#intermediate-articles}
+
+- [web3.py 관련 도구: Ape 소개](https://snakecharmers.ethereum.org/intro-to-ape/)
+- [파이썬 프로그래머를 위한 탈중앙화앱 개발](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28)
+- [파이썬 이더리움 인터페이스 만들기: 1부](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d)
+- [파이썬의 이더리움 스마트 계약: 종합에 가까운 가이드](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988)
+
+## 고급 사용 패턴 {#advanced-use-patterns}
+
+- [web3.py 패턴: 실시간 이벤트 구독](https://snakecharmers.ethereum.org/subscriptions/)
+- [web3.py 패턴: WebSocketProvider](https://snakecharmers.ethereum.org/websocketprovider/)
+- [파이썬을 사용하여 이더리움 스마트 계약 컴파일, 배포 및 호출하기](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/)
+- [Slither로 솔리디티 스마트 계약 분석하기](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither)
+- [블록체인 핀테크 튜토리얼: 파이썬으로 대출 및 차입 구현하기](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/)
+
+## 보관된 아티클
+
+- [파이썬과 브라우니로 나만의 ERC20 토큰 배포하기](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58)
+- [브라우니와 파이썬을 사용하여 스마트 계약 배포하기](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp)
+- [브라우니로 OpenSea에서 NFT 만들기](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/)
+
+## 파이썬 프로젝트 및 도구 {#python-projects-and-tools}
+
+### 활성: {#active}
+
+- [Web3.py](https://github.com/ethereum/web3.py) - _이더리움과 상호작용하기 위한 파이썬 라이브러리_
+- [Vyper](https://github.com/ethereum/vyper/) - _EVM을 위한 파이썬다운 스마트 계약 언어_
+- [Ape](https://github.com/ApeWorX/ape) - _Python 개발자, 데이터 과학자 및 보안 전문가를 위한 스마트 계약 개발 도구_
+- [py-evm](https://github.com/ethereum/py-evm) - _이더리움 가상 머신(EVM) 구현_
+- [eth-tester](https://github.com/ethereum/eth-tester) - _이더리움 기반 애플리케이션 테스트용 도구_
+- [eth-utils](https://github.com/ethereum/eth-utils/) - _이더리움 관련 코드베이스 작업을 위한 유틸리티 함수_
+- [py-solc-x](https://pypi.org/project/py-solc-x/) - _0.5.x 버전을 지원하는 solc 솔리디티 컴파일러용 파이썬 래퍼_
+- [pymaker](https://github.com/makerdao/pymaker) - _메이커 계약을 위한 파이썬 API_
+- [siwe](https://github.com/signinwithethereum/siwe-py) - _파이썬용 이더리움으로 로그인하기(siwe)_
+- [이더리움 통합을 위한 Web3 DeFi](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _ERC-20, Uniswap 및 기타 인기 프로젝트와 즉시 통합할 수 있는 파이썬 패키지_
+- [Wake](https://getwake.io) - _계약 테스트, 퍼징, 배포, 취약점 스캔 및 코드 탐색을 위한 올인원 파이썬 프레임워크(언어 서버 - [솔리디티용 도구](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_
+
+### 보관됨 / 더 이상 유지보수되지 않음: {#archived--no-longer-maintained}
+
+- [Trinity](https://github.com/ethereum/trinity) - _이더리움 파이썬 클라이언트_
+- [Mamba](https://github.com/arjunaskykok/mamba) - _Vyper 언어로 작성된 스마트 계약을 작성, 컴파일 및 배포하기 위한 프레임워크_
+- [Brownie](https://github.com/eth-brownie/brownie) - _이더리움 스마트 계약을 배포, 테스트 및 상호작용하기 위한 파이썬 프레임워크_
+- [pydevp2p](https://github.com/ethereum/pydevp2p) - _이더리움 P2P 스택 구현_
+- [py-wasm](https://github.com/ethereum/py-wasm) - _웹 어셈블리 인터프리터의 파이썬 구현_
+
+더 많은 참고 자료를 확인하고 싶으신가요? [ethereum.org/developers](/developers/)를 확인해 보세요.
+
+## 파이썬 툴링을 사용하는 프로젝트 {#projects-using-python-tooling}
+
+아래 이더리움 기반 프로젝트들은 본 페이지에서 언급된 도구를 사용합니다. 모범 사례와 함께 링크된 오픈 소스 저장소에서 좋은 예제 코드를 참조할 수 있습니다.
+
+- [Yearn Finance](https://yearn.finance/) 및 [Yearn Vault 계약 저장소](https://github.com/yearn/yearn-vaults)
+- [Curve](https://www.curve.finance/) 및 [Curve 스마트 계약 저장소](https://github.com/curvefi/curve-contract)
+- [BadgerDAO](https://badger.com/) 및 [브라우니 툴체인을 사용하는 스마트 계약](https://github.com/Badger-Finance/badger-system)
+- [Sushi](https://sushi.com/)는 [베스팅 계약을 관리하고 배포하는 데 파이썬을 사용합니다](https://github.com/sushiswap/sushi-vesting-protocols)
+- Alpha Homora로 유명한 [Alpha Finance](https://alphafinance.io/)는 [스마트 계약을 테스트하고 배포하는 데 브라우니를 사용합니다](https://github.com/AlphaFinanceLab/alpha-staking-contract)
+
+## 파이썬 커뮤니티 토론 {#python-community-contributors}
+
+- Web3.py 및 기타 파이썬 프레임워크 토론을 위한 [이더리움 파이썬 커뮤니티 디스코드](https://discord.gg/9zk7snTfWe)
+- Vyper 스마트 계약 프로그래밍 토론을 위한 [Vyper 디스코드](https://discord.gg/SdvKC79cJk)
+
+## 기타 수집된 목록 {#other-aggregated-lists}
+
+Vyper 위키에는 [Vyper를 위한 훌륭한 참고 자료 목록](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources)이 있습니다.
\ No newline at end of file
diff --git a/public/content/translations/ko/developers/docs/programming-languages/ruby/index.md b/public/content/translations/ko/developers/docs/programming-languages/ruby/index.md
new file mode 100644
index 00000000000..56c0139362d
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/ruby/index.md
@@ -0,0 +1,60 @@
+---
+title: "루비 개발자를 위한 이더리움"
+description: "루비 기반 프로젝트와 툴링을 사용해 이더리움용으로 개발하는 방법을 알아보세요."
+lang: ko
+incomplete: false
+---
+
+루비 기반 프로젝트와 툴링을 사용해 이더리움용으로 개발하는 방법을 알아보세요.
+
+이더리움 기반으로 개발된 탈중앙화 애플리케이션(또는 “디앱”)은 암호화폐와 블록체인 기술의 장점을 가지게 됩니다. 이러한 탈중앙화앱은 무신뢰성을 가질 수 있습니다. 즉, 이더리움에 배포되면 항상 프로그래밍된 대로 실행됩니다. 탈중앙화앱은 디지털 자산을 제어하여 새로운 종류의 금융 애플리케이션을 만들 수 있습니다. 그뿐만 아니라 해당 금융 애플리케이션을 어떤 특정 단체나 개인이 제어할 수 없고 검열이 거의 불가능하도록 탈중앙화할 수 있습니다.
+
+## 스마트 계약 및 솔리디티 언어 시작하기 {#getting-started-with-smart-contracts-and-solidity}
+
+**루비와 이더리움을 통합하기 위한 첫걸음을 내딛어 보세요**
+
+먼저 기본 지식이 더 필요하시나요? [ethereum.org/learn](/learn/) 또는 [ethereum.org/developers](/developers/)를 확인해 보세요.
+
+- [블록체인 설명](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [스마트 계약 이해하기](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [첫 스마트 계약 작성하기](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [솔리디티 컴파일 및 배포 방법 알아보기](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 초급자용 아티클 {#beginner-articles}
+
+- [드디어 이더리움 계정 이해하기](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
+- [드디어 MetaMask로 Rails 사용자 인증하기](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj)
+- [루비를 사용하여 이더리움 네트워크에 연결하는 방법](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby)
+- [루비에서 새로운 이더리움 주소를 생성하는 방법](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby)
+
+## 중급자용 아티클 {#intermediate-articles}
+
+- [루비를 사용한 블록체인 앱](https://www.nopio.com/blog/blockchain-app-ruby/)
+- [이더리움에 연결된 루비를 사용하여 스마트 계약 실행하기](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9)
+
+## 루비 프로젝트 및 도구 {#ruby-projects-and-tools}
+
+### 활성 {#active}
+
+- [eth.rb](https://github.com/q9f/eth.rb) - _이더리움 계정, 메시지, 트랜잭션을 처리하기 위한 루비 라이브러리 및 RPC 클라이언트_
+- [keccak.rb](https://github.com/q9f/keccak.rb) - _이더리움에서 사용되는 Keccak(SHA3) 해시_
+- [siwe-ruby](https://github.com/signinwithethereum/siwe-ruby) - _이더리움으로 로그인(Sign-In with Ethereum)의 루비 구현_
+- [siwe-rails](https://github.com/signinwithethereum/siwe-rails) - _SIWE 로컬 로그인 라우트를 추가하는 Rails gem_
+- [siwe-rails-examples](https://github.com/signinwithethereum/siwe-rails-examples) - _커스텀 컨트롤러를 사용하여 Ruby on Rails를 이용한 SIWE 예제_
+- [omniauth-siwe](https://github.com/signinwithethereum/omniauth-siwe) - _이더리움으로 로그인(SIWE)을 위한 OmniAuth 전략_
+- [omniauth-nft](https://github.com/valthon/omniauth-nft) - _NFT 소유권을 통해 인증하기 위한 OmniAuth 전략_
+- [ethereum-on-rails](https://github.com/q9f/ethereum-on-rails) - _MetaMask를 Ruby on Rails에 연결할 수 있는 Ethereum on Rails 템플릿_
+
+### 보관됨 / 더 이상 유지 관리되지 않음 {#archived--no-longer-maintained}
+
+- [web3-eth](https://github.com/spikewilliams/vtada-ethereum) - _루비를 사용하여 이더리움 노드의 RPC 메서드 호출_
+- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree) - _BIP32 표준에 따라 계층적 결정적 지갑에서 ETH 주소를 생성하기 위한 루비 라이브러리_
+- [etherlite](https://github.com/budacom/etherlite) - _Ruby on Rails를 위한 이더리움 통합_
+- [ethereum.rb](https://github.com/EthWorks/ethereum.rb) - _트랜잭션 전송, 계약 생성 및 상호 작용을 위해 JSON-RPC 인터페이스를 사용하는 루비 이더리움 클라이언트이자 이더리움 노드와 함께 작동하는 유용한 툴킷_
+- [omniauth-ethereum.rb](https://github.com/q9f/omniauth-ethereum.rb) - _OmniAuth를 위한 이더리움 공급자 전략 구현_
+
+더 많은 참고 자료를 확인하고 싶으신가요? 저희 [개발자 홈](/developers/)을 확인해 보세요.
+
+## 루비 커뮤니티 기여자 {#ruby-community-contributors}
+
+[이더리움 루비 텔레그램 그룹](https://t.me/ruby_eth)은 빠르게 성장하는 커뮤니티의 장이며, 위에 언급된 모든 프로젝트 및 관련 주제에 대한 논의를 위한 전용 참고 자료입니다.
diff --git a/public/content/translations/ko/developers/docs/programming-languages/rust/index.md b/public/content/translations/ko/developers/docs/programming-languages/rust/index.md
new file mode 100644
index 00000000000..a266282c6b5
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/programming-languages/rust/index.md
@@ -0,0 +1,65 @@
+---
+title: "Rust 개발자를 위한 이더리움"
+description: "Rust 기반 프로젝트 및 툴링을 사용한 이더리움 개발 방법 알아보기"
+lang: ko
+incomplete: true
+---
+
+Rust 기반 프로젝트 및 툴링을 사용하여 이더리움을 개발하는 방법을 알아보세요
+
+이더리움 기반으로 개발된 탈중앙화 애플리케이션(또는 “디앱”)은 암호화폐와 블록체인 기술의 장점을 가지게 됩니다. 탈중앙화 애플리케이션은 일단 이더리움에 배포되면 항상 프로그래밍된 대로 동작하므로 완전히 신뢰할 수 있습니다. 그러므로 새로운 형태의 금융 애플리케이션을 제작하기 위해 디지털 자산을 제어하는 데 사용될 수 있습니다. 그뿐만 아니라 해당 금융 애플리케이션을 어떤 특정 단체나 개인이 제어할 수 없고 검열이 거의 불가능하도록 탈중앙화할 수 있습니다.
+
+## 스마트 계약 및 솔리디티 언어 시작하기 {#getting-started-with-smart-contracts-and-solidity}
+
+**러스트와 이더리움을 통합하기 위한 첫 단계**
+
+먼저 기본 지식이 더 필요하시나요? [ethereum.org/learn](/learn/) 또는 [ethereum.org/developers](/developers/)를 확인해 보세요.
+
+- [블록체인 설명](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [스마트 계약 이해하기](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [첫 스마트 계약 작성하기](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [솔리디티 컴파일 및 배포 방법 알아보기](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 초급자용 아티클 {#beginner-articles}
+
+- [Rust 이더리움 클라이언트](https://openethereum.github.io/) \* **참고: OpenEthereum은 [더 이상 사용되지 않으며](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) 더 이상 유지 관리되지 않습니다.** 주의하여 사용하고 가급적 다른 클라이언트 구현으로 전환하십시오.
+- [Rust를 사용하여 이더리움으로 트랜잭션 보내기](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/)
+- [Kovan용 rust Wasm으로 컨트랙트를 작성하는 방법에 대한 단계별 튜토리얼](https://github.com/paritytech/pwasm-tutorial)
+
+## 중급자용 아티클 {#intermediate-articles}
+
+## 고급 사용 패턴 {#advanced-use-patterns}
+
+- [이더리움과 유사한 네트워크와 상호작용하기 위한 pwasm_ethereum 외부 라이브러리](https://github.com/openethereum/pwasm-ethereum)
+
+- [JavaScript와 Rust를 사용하여 탈중앙화 채팅 구축하기](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52)
+
+- [Vue.js와 Rust를 사용하여 탈중앙화 Todo 앱 구축하기](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb)
+
+- [Rust로 블록체인 구축하기](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/)
+
+## Rust 프로젝트 및 도구 {#rust-projects-and-tools}
+
+- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _이더리움과 유사한 네트워크와 상호작용하기 위한 외부 모음_
+- [Lighthouse](https://github.com/sigp/lighthouse) - _빠른 이더리움 합의 레이어 클라이언트_
+- [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _결정론적 WebAssembly 하위 집합을 사용한 이더리움 스마트 계약 실행 레이어의 제안된 재설계_
+- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _OASIS API 레퍼런스_
+- [Solaris](https://github.com/paritytech/sol-rs) - _네이티브 Parity 클라이언트 EVM을 사용하는 Solidity 스마트 계약 단위 테스트 하네스._
+- [SputnikVM](https://github.com/rust-blockchain/evm) - _Rust 이더리움 가상 머신 구현_
+- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Rust의 Wavelet 스마트 계약_
+- [Foundry](https://github.com/foundry-rs/foundry) - _이더리움 애플리케이션 개발을 위한 툴킷_
+- [Alloy](https://alloy.rs) - _이더리움 및 기타 EVM 기반 체인과 상호작용하기 위한 고성능의 잘 테스트되고 문서화된 라이브러리._
+- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _이더리움 라이브러리 및 지갑 구현_
+- [SewUp](https://github.com/second-state/SewUp) - _일반적인 백엔드에서 개발하는 것처럼 Rust로 이더리움 웹어셈블리 계약을 구축하는 데 도움이 되는 라이브러리_
+- [Substreams](https://github.com/streamingfast/substreams) - _병렬화된 블록체인 데이터 인덱싱 기술_
+- [Reth](https://github.com/paradigmxyz/reth) Reth(Rust Ethereum의 줄임말)는 새로운 이더리움 전체 노드 구현입니다
+- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _Rust로 작성된 이더리움 생태계의 프로젝트 큐레이션 모음_
+
+더 많은 참고 자료를 확인하고 싶으신가요? [ethereum.org/developers.](/developers/)를 확인해 보세요.
+
+## Rust 커뮤니티 기여자 {#rust-community-contributors}
+
+- [Ethereum WebAssembly](https://gitter.im/ewasm/Lobby)
+- [Oasis Gitter](https://gitter.im/Oasis-official/Lobby)
+- [Parity Gitter](https://gitter.im/paritytech/parity)
+- [Enigma](https://discord.gg/SJK32GY)
diff --git a/public/content/translations/ko/developers/docs/scaling/index.md b/public/content/translations/ko/developers/docs/scaling/index.md
new file mode 100644
index 00000000000..774bb3e56f9
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/scaling/index.md
@@ -0,0 +1,113 @@
+---
+title: "확장"
+description: "현재 Ethereum 커뮤니티에서 개발 중인 다양한 레이어 롤업 스케일링 솔루션에 대한 소개"
+lang: ko
+sidebarDepth: 3
+---
+
+## 확장 개요 {#scaling-overview}
+
+이더리움을 사용하는 사람들이 증가함에 따라 블록체인은 여러 가지 용량 제한에 도달했습니다. 이 때문에 네트워크 사용 비용은 높아졌으며 "확장 솔루션"이 필요하게 되었습니다. 유사한 목표를 달성하기 위해 다양한 접근 방식을 취하는 여러 솔루션이 연구, 테스트 및 구현되고 있습니다.
+
+확장성의 주요 목표는 탈중앙성이나 보안을 희생하지 않으면서 트랜잭션 속도(더 빠른 완결성)와 트랜잭션 처리량(초당 더 많은 트랜잭션)을 높이는 것입니다. 레이어 1 이더리움 블록체인에서는 수요가 높으면 트랜잭션이 느려지고 [가스 가격](/developers/docs/gas/)이 비현실적으로 높아집니다. 속도와 처리량 측면에서 네트워크 용량을 늘리는 것은 이더리움의 의미 있는 대규모 채택을 위해 기본적입니다.
+
+속도와 처리량이 중요하지만, 이러한 목표를 가능하게 하는 확장 솔루션이 탈중앙화되고 안전하게 유지되는 것이 필수적입니다. 노드 운영자의 진입 장벽을 낮게 유지하는 것은 중앙집중화되고 안전하지 않은 컴퓨팅 파워로의 진행을 방지하는 데 중요합니다.
+
+개념적으로 우리는 먼저 확장을 온체인 또는 오프라인 확장으로 분류합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+모든 기초 주제에 대해 잘 이해하고 있어야 합니다. 확장 솔루션을 구현하는 것은 기술이 덜 검증되었고 지속적으로 연구 및 개발되고 있기 때문에 고급 단계입니다.
+
+## 온체인 확장 {#onchain-scaling}
+
+온체인 확장은 이더리움 프로토콜(레이어 1 [메인넷](/glossary/#mainnet))의 변경을 필요로 합니다. 오랫동안 블록체인 샤딩은 이더리움을 확장할 것으로 예상되었습니다. 이는 블록체인을 개별 조각(샤드)으로 분할하여 검증자 하위 집합에 의해 검증되도록 하는 것을 포함할 예정이었습니다. 그러나 레이어 2 롤업을 통한 확장이 주요 확장 기술로 자리잡았습니다. 이는 사용자에게 롤업을 저렴하게 만들기 위해 특별히 설계된 이더리움 블록에 첨부된 새로운 저렴한 형태의 데이터 추가로 지원됩니다.
+
+### 샤딩 {#sharding}
+
+샤딩은 데이터베이스를 분할하는 과정입니다. 검증자의 하위 집합이 이더리움 전체를 추적하는 대신 개별 샤드를 담당하게 됩니다. 샤딩은 오랫동안 이더리움 [로드맵](/roadmap/)에 있었으며, 한때 지분 증명으로 전환하는 더 머지 이전에 출시될 예정이었습니다. 하지만 [레이어 2 롤업](#layer-2-scaling)의 빠른 개발과 [댕크샤딩](/roadmap/danksharding)(검증자가 매우 효율적으로 검증할 수 있는 롤업 데이터 블롭을 이더리움 블록에 추가하는 것)의 발명으로 이더리움 커뮤니티는 샤딩을 통한 확장 대신 롤업 중심의 확장을 선호하게 되었습니다. 이는 또한 이더리움의 합의 로직을 더 단순하게 유지하는 데 도움이 될 것입니다.
+
+## 오프체인 확장 {#offchain-scaling}
+
+오프체인 솔루션은 레이어 1 메인넷과는 별도로 구현됩니다- 그들은 현재의 이더리움 프로토콜에 변화를 요구하지 않습니다. "레이어 2" 솔루션으로 알려진 일부 솔루션은 [낙관적 롤업](/developers/docs/scaling/optimistic-rollups/), [영지식 롤업](/developers/docs/scaling/zk-rollups/) 또는 [상태 채널](/developers/docs/scaling/state-channels/)과 같이 레이어 1 이더리움 합의에서 직접 보안을 확보합니다. 다른 솔루션들은 [사이드체인](#sidechains), [밸리디움](#validium), 또는 [플라즈마 체인](#plasma)과 같이 메인넷과 별개로 보안을 확보하는 다양한 형태의 새로운 체인 생성을 포함합니다. 이러한 솔루션들은 메인넷과 통신하지만 다양한 목표를 달성하기 위해 보안을 다르게 도출합니다.
+
+### 레이어 2 확장 {#layer-2-scaling}
+
+이러한 오프체인 해결책의 분류는.
+
+레이어 2는 당신의 어플리케이션을 확장시킬 수 있도록 하기 위해 Ethereum 메인넷 (레이어 1) 에서 트랜잭션을 처리하면서 메인넷의 탈중앙화된 강력한 보안 모델을 활용하도록 설계된 솔루션을 총칭합니다. 네트워크가 혼잡할 때는 트랜잭션 속도가 저하되어, 특정 유형의 dapp에서는 사용자 환경이 좋지 않습니다. 네트워크가 더 혼잡해지면, 트랜잭션 발신자들 서로가 가격을 비싸게 매기게 되면서 가스 가격이 상승합니다. 이러한 현상은 Ethereum을 더욱 비싸게 만듭니다.
+
+대부분의 레이어 2 솔루션은 서버 또는 서버 클러스터를 중심으로 구성되며, 각각을 노드, 검증자, 운영자, 시퀀서, 블록 프로듀서 또는 유사한 용어로 지칭할 수 있습니다. 구현에 따라 이러한 레이어 2 노드는 이를 사용하는 개인, 기업 또는 단체에 의해 운영되거나, 제3자 운영자에 의해 운영되거나, 많은 개인 그룹에 의해 운영될 수 있습니다(메인넷과 유사). 일반적으로 거래는 레이어 1(메인넷)에 직접 제출되는 대신 이러한 레이어 2 노드에 제출됩니다. 몇 가지 해결책으로, 레이어 2 인스턴스는 데이터를 그룹으로 일괄 배치하고 레이어 1 에 고정합니다. 그런 뒤 데이터는 레이어 1 에 의해 보호되고 변경할 수 없습니다. 이 작업이 수행되는 방식의 세부 사항은 다양한 레이어 2 기술 및 구현 간에 크게 다릅니다.
+
+특정 레이어 2 인스턴스는 많은 애플리케이션이 열어 공유할 수도 있고, 하나의 프로젝트에 의해 배포되어 해당 애플리케이션만 지원하도록 전용될 수도 있습니다.
+
+#### 레이어 2란 무엇인가요? {#why-is-layer-2-needed}
+
+- 초당 거래 수의 증가는 사용자 경험을 크게 향상시키고 메인넷 이더리움의 네트워크 혼잡을 줄입니다.
+- 거래는 메인넷 이더리움으로 하나의 거래로 롤업되며, 이를 통해 사용자에게 가스 요금을 줄이고 이더리움을 모든 사람에게 더 포괄적이고 접근 가능하게 만듭니다.
+- 확장성에 관한 어떤 업데이트도 분산 및 보안을 희생해서는 안됩니다 - Ethereum의 가장 위에 레이어 2가 세워집니다.
+- 규모에 맞게 자산을 다룰 때 자체적인 효율성을 제공하는 애플리케이션 전용 레이어 2 네트워크가 있습니다.
+
+[레이어 2에 대해 더 알아보기](/layer-2/).
+
+#### 롤업 {#rollups}
+
+롤업은 트랜잭션 실행을 레이어 1 외부에서 수행한 다음 데이터를 레이어 1에 게시하여 합의가 이루어집니다. 트랜잭션 데이터가 레이어 1 블록에 포함되기 때문에 롤업은 이더리움 네이티브 보안에 의해 보호됩니다.
+
+다른 보안 모델을 가지는 두 가지 종류의 롤업이 있습니다:
+
+- **낙관적 롤업**: 트랜잭션이 기본적으로 유효하다고 가정하고, 이의가 제기될 경우에만 [**사기 증명**](/glossary/#fraud-proof)을 통해 연산을 실행합니다. [낙관적 롤업에 대해 더 알아보기](/developers/docs/scaling/optimistic-rollups/).
+- **영지식 롤업**: 오프체인에서 연산을 실행하고 체인에 [**유효성 증명**](/glossary/#validity-proof)을 제출합니다. [영지식 롤업에 대해 더 알아보기](/developers/docs/scaling/zk-rollups/).
+
+#### 상태 채널 {#channels}
+
+상태 채널은 다중 계약을 사용해 참여자들이 오프체인에서 거래를 빠르고 자유롭게 거래한 뒤 메인넷에서 거래를 확정하게 합니다. 이것은 네트워크 혼잡, 수수료 그리고 딜레이를 최소화 합니다. 현재 두 가지 채널 유형은 State 채널과 Payment 채널입니다.
+
+[상태 채널에 대해 더 알아보기](/developers/docs/scaling/state-channels/).
+
+### 사이드체인 {#sidechains}
+
+사이드체인은 메인넷과 병렬로 실행되는 독립적인 EVM 호환 블록체인입니다. 이들은 이더리움과 양방향 브리지로 호환되며, 독자적인 합의 규칙과 블록 매개변수를 따릅니다.
+
+[사이드체인에 대해 더 알아보기](/developers/docs/scaling/sidechains/).
+
+### 플라즈마 {#plasma}
+
+플라즈마 체인은 메인 이더리움 체인에 고정된 별도의 블록체인으로, 분쟁 중재를 위해 ([낙관적 롤업](/developers/docs/scaling/optimistic-rollups/)처럼) 사기 증명을 사용합니다.
+
+[플라즈마에 대해 더 알아보기](/developers/docs/scaling/plasma/).
+
+### 밸리디움 {#validium}
+
+Validium 체인은 Zero-knowledge 롤업과 유사한 유효성 증명을 사용하지만 데이터는 메인 레이어 1 이더리움 체인에 저장되지 않습니다. 이로 인해 Validium 체인당 초당 10,000건의 트랜잭션이 가능하며, 여러 체인이 병렬로 실행될 수 있습니다.
+
+[밸리디움에 대해 더 알아보기](/developers/docs/scaling/validium/).
+
+## 왜 이렇게 많은 확장 솔루션이 필요한가요? {#why-do-we-need-these}
+
+- 여러 솔루션은 네트워크의 특정 부분에 대한 혼잡을 줄이고 단일 장애 지점을 방지할 수 있습니다.
+- 전체는 각 부분의 합보다 큽니다. 다양한 솔루션이 공존하고 조화를 이루어 미래의 트랜잭션 속도와 처리량에 기하급수적인 영향을 미칠 수 있습니다.
+- 모든 솔루션이 이더리움 합의 알고리즘을 직접 활용할 필요는 없으며, 대안은 얻기 어려운 이점을 제공할 수 있습니다.
+
+## 시각 자료를 찾고 있나요? 시각적 학습자
+
+
+
+_해당 동영상에서는 "레이어 2"라는 용어를 모든 오프체인 확장 솔루션을 통칭하는 의미로 사용하지만, 우리는 "레이어 2"를 레이어 1 메인넷 합의를 통해 보안을 확보하는 오프체인 솔루션으로 정의합니다._
+
+
+
+## 더 읽어보기 {#further-reading}
+
+- [롤업 중심의 이더리움 로드맵](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) _Vitalik Buterin_
+- [이더리움을 위한 레이어 2 확장 솔루션에 대한 최신 분석](https://www.l2beat.com/)
+- [이더리움 레이어 2 확장 솔루션 평가: 비교 프레임워크](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955)
+- [롤업에 대한 불완전한 가이드](https://vitalik.eth.limo/general/2021/01/05/rollup.html)
+- [이더리움 기반 ZK-롤업: 세계 최고 수준](https://hackmd.io/@canti/rkUT0BD8K)
+- [낙관적 롤업 대 ZK 롤업](https://limechain.tech/blog/optimistic-rollups-vs-zk-rollups/)
+- [왜 롤업과 데이터 샤드가 높은 확장성을 위한 유일한 지속 가능한 해결책인가](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48)
+- [어떤 종류의 레이어 3가 타당한가?](https://vitalik.eth.limo/general/2022/09/17/layer_3.html)
+- [데이터 가용성: 또는 롤업이 어떻게 걱정을 멈추고 이더리움을 사랑하게 되었는가](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum)
+- [이더리움 롤업에 대한 실용 가이드](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/scaling/optimistic-rollups/index.md b/public/content/translations/ko/developers/docs/scaling/optimistic-rollups/index.md
new file mode 100644
index 00000000000..a7cc8e3d7ff
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/scaling/optimistic-rollups/index.md
@@ -0,0 +1,265 @@
+---
+title: "낙관적 롤업"
+description: "낙관적 롤업 소개—이더리움 커뮤니티에서 사용하는 확장 솔루션입니다."
+lang: ko
+---
+
+낙관적 롤업은 이더리움의 기본 레이어 처리량을 확장하기 위해 설계된 레이어 2(L2) 프로토콜입니다. 이들은 오프체인으로 트랜잭션을 처리하여 메인 이더리움 체인의 연산을 줄여주므로 처리 속도가 크게 향상됩니다. [사이드체인](/developers/docs/scaling/sidechains/)과 같은 다른 확장 솔루션이나, 이더리움에서 사기 증명으로 트랜잭션을 검증하지만 트랜잭션 데이터를 다른 곳에 저장하는 [플라즈마 체인](/developers/docs/scaling/plasma/)과 달리, 낙관적 롤업은 트랜잭션 결과를 온체인에 게시하여 메인넷으로부터 보안을 확보합니다.
+
+연산은 이더리움을 사용하는 데 있어 느리고 비용이 많이 드는 부분이므로, 낙관적 롤업은 확장성을 10\~100배 향상시킬 수 있습니다. 낙관적 롤업은 또한 이더리움에 트랜잭션을 `calldata` 또는 [블롭](/roadmap/danksharding/)으로 기록하여 사용자의 가스 비용을 줄입니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[이더리움 확장](/developers/docs/scaling/) 및 [레이어 2](/layer-2/)에 대한 페이지를 읽고 이해해야 합니다.
+
+## 낙관적 롤업이란 무엇인가요? {#what-is-an-optimistic-rollup}
+
+낙관적 롤업은 연산 및 상태 저장을 오프체인으로 이동하는 이더리움 확장 방식입니다. 낙관적 롤업은 이더리움 외부에서 트랜잭션을 실행하지만, 트랜잭션 데이터를 `calldata` 또는 [블롭](/roadmap/danksharding/)으로 메인넷에 게시합니다.
+
+낙관적 롤업 운영자는 이더리움에 제출하기 전에 여러 오프체인 트랜잭션을 대규모 배치로 묶습니다. 이 접근 방식을 사용하면 각 배치의 여러 트랜잭션에 고정 비용을 분산하여 최종 사용자의 수수료를 줄일 수 있습니다. 또한 낙관적 롤업은 압축 기술을 사용하여 이더리움에 게시되는 데이터의 양을 줄입니다.
+
+낙관적 롤업이 "낙관적"이라고 간주되는 이유는 오프체인 트랜잭션이 유효하다고 가정하고 온체인에 게시된 트랜잭션 배치에 대한 유효성 증명을 게시하지 않기 때문입니다. 이 점은 오프체인 트랜잭션에 대한 암호화된 [유효성 증명](/glossary/#validity-proof)을 게시하는 [영지식 롤업](/developers/docs/scaling/zk-rollups)과 낙관적 롤업을 구분합니다.
+
+대신 낙관적 롤업은 사기 증명 체계를 사용하여 트랜잭션이 올바르게 계산되지 않은 경우를 감지합니다. 롤업 배치가 이더리움에 제출된 후에는 누구나 [사기 증명](/glossary/#fraud-proof)을 계산하여 롤업 트랜잭션 결과에 이의를 제기할 수 있는 시간 창(챌린지 기간이라고 함)이 있습니다.
+
+사기 증명이 성공하면 롤업 프로토콜은 트랜잭션을 다시 실행하고 그에 따라 롤업의 상태를 업데이트합니다. 사기 증명이 성공할 경우 또 다른 효과는 잘못 실행된 트랜잭션을 블록에 포함시킨 시퀀서가 페널티를 받는다는 것입니다.
+
+챌린지 기간이 지난 후에도 롤업 배치에 이의가 제기되지 않으면(즉, 모든 트랜잭션이 올바르게 실행되면) 유효한 것으로 간주되어 이더리움에서 수락됩니다. 다른 사람들은 미확인 롤업 블록을 기반으로 계속 구축할 수 있지만, 이전에 게시된 잘못 실행된 트랜잭션을 기반으로 한 경우 트랜잭션 결과가 되돌려진다는 주의사항이 있습니다.
+
+## 낙관적 롤업은 이더리움과 어떻게 상호 작용하나요? {#optimistic-rollups-and-Ethereum}
+
+낙관적 롤업은 이더리움 위에서 작동하도록 구축된 [오프체인 확장 솔루션](/developers/docs/scaling/#offchain-scaling)입니다. 각 낙관적 롤업은 이더리움 네트워크에 배포된 스마트 계약 세트에 의해 관리됩니다. 낙관적 롤업은 메인 이더리움 체인 외부에서 트랜잭션을 처리하지만 오프체인 트랜잭션(배치 단위)을 온체인 롤업 계약에 게시합니다. 이더리움 블록체인과 마찬가지로 이 트랜잭션 기록은 변경할 수 없으며 "낙관적 롤업 체인"을 형성합니다.
+
+낙관적 롤업의 아키텍처는 다음 부분으로 구성됩니다.
+
+**온체인 계약**: 낙관적 롤업의 운영은 이더리움에서 실행되는 스마트 계약에 의해 제어됩니다. 여기에는 롤업 블록을 저장하고, 롤업의 상태 업데이트를 모니터링하며, 사용자 예금을 추적하는 계약이 포함됩니다. 이러한 의미에서 이더리움은 낙관적 롤업의 기본 레이어 또는 "레이어 1" 역할을 합니다.
+
+**오프체인 가상 머신(VM)**: 낙관적 롤업 프로토콜을 관리하는 계약은 이더리움에서 실행되지만, 롤업 프로토콜은 [이더리움 가상 머신](/developers/docs/evm/)과는 별개의 다른 가상 머신에서 연산 및 상태 저장을 수행합니다. 오프체인 VM은 애플리케이션이 존재하고 상태 변경이 실행되는 곳으로, 낙관적 롤업의 상위 레이어 또는 "레이어 2" 역할을 합니다.
+
+낙관적 롤업은 EVM용으로 작성되거나 컴파일된 프로그램을 실행하도록 설계되었으므로, 오프체인 VM은 많은 EVM 설계 사양을 통합합니다. 또한 온체인에서 계산된 사기 증명을 통해 이더리움 네트워크는 오프체인 VM에서 계산된 상태 변경의 유효성을 강제할 수 있습니다.
+
+낙관적 롤업은 별도의 프로토콜로 존재하지만 보안 속성은 이더리움에서 파생되므로 '하이브리드 확장 솔루션'으로 설명됩니다. 무엇보다도 이더리움은 롤업의 오프체인 연산의 정확성과 연산 이면의 데이터 가용성을 보장합니다. 이로 인해 낙관적 롤업은 보안을 위해 이더리움에 의존하지 않는 순수 오프체인 확장 프로토콜(예: [사이드체인](/developers/docs/scaling/sidechains/))보다 더 안전합니다.
+
+낙관적 롤업은 다음을 위해 메인 이더리움 프로토콜에 의존합니다.
+
+### 데이터 가용성 {#data-availability}
+
+언급했듯이, 낙관적 롤업은 트랜잭션 데이터를 `calldata` 또는 [블롭](/roadmap/danksharding/)으로 이더리움에 게시합니다. 롤업 체인의 실행은 제출된 트랜잭션을 기반으로 하므로, 누구나 이더리움의 기본 레이어에 고정된 이 정보를 사용하여 롤업의 상태를 실행하고 상태 전환의 정확성을 검증할 수 있습니다.
+
+[데이터 가용성](/developers/docs/data-availability/)은 상태 데이터에 액세스하지 않으면 챌린저가 유효하지 않은 롤업 작업에 이의를 제기하기 위해 사기 증명을 구성할 수 없기 때문에 매우 중요합니다. 이더리움이 데이터 가용성을 제공함으로써 롤업 운영자가 악의적인 행위(예: 유효하지 않은 블록 제출)를 저지르고도 무사히 넘어갈 위험이 줄어듭니다.
+
+### 검열 저항성 {#censorship-resistance}
+
+또한 낙관적 롤업은 검열 저항성을 위해 이더리움에 의존합니다. 낙관적 롤업에서는 중앙화된 주체(운영자)가 트랜잭션을 처리하고 롤업 블록을 이더리움에 제출하는 책임을 집니다. 여기에는 몇 가지 시사점이 있습니다.
+
+- 롤업 운영자는 완전히 오프라인 상태가 되거나 특정 트랜잭션을 포함하는 블록 생성을 거부함으로써 사용자를 검열할 수 있습니다.
+
+- 롤업 운영자는 소유권의 머클 증명에 필요한 상태 데이터를 보류함으로써 사용자가 롤업 계약에 예치된 자금을 인출하는 것을 막을 수 있습니다. 상태 데이터를 보류하면 사용자로부터 롤업의 상태를 숨기고 롤업과 상호 작용하는 것을 막을 수도 있습니다.
+
+낙관적 롤업은 운영자가 이더리움의 상태 업데이트와 관련된 데이터를 게시하도록 강제하여 이 문제를 해결합니다. 롤업 데이터를 온체인에 게시하면 다음과 같은 이점이 있습니다.
+
+- 낙관적 롤업 운영자가 오프라인 상태가 되거나 트랜잭션 배치 생성을 중단하면 다른 노드가 사용 가능한 데이터를 사용하여 롤업의 마지막 상태를 재현하고 블록 생성을 계속할 수 있습니다.
+
+- 사용자는 트랜잭션 데이터를 사용하여 자금 소유권을 증명하는 머클 증명을 생성하고 롤업에서 자산을 인출할 수 있습니다.
+
+- 사용자는 시퀀서 대신 L1에 트랜잭션을 제출할 수도 있으며, 이 경우 시퀀서는 유효한 블록을 계속 생성하기 위해 특정 시간 제한 내에 트랜잭션을 포함해야 합니다.
+
+### 정산 {#settlement}
+
+낙관적 롤업의 맥락에서 이더리움이 수행하는 또 다른 역할은 정산 레이어의 역할입니다. 정산 레이어는 전체 블록체인 생태계를 고정하고, 보안을 설정하며, 중재가 필요한 다른 체인(이 경우 낙관적 롤업)에서 분쟁이 발생할 경우 객관적인 최종성을 제공합니다.
+
+이더리움 메인넷은 낙관적 롤업이 사기 증명을 검증하고 분쟁을 해결할 수 있는 허브를 제공합니다. 또한 롤업에서 수행된 트랜잭션은 롤업 블록이 이더리움에서 수락된 _후에야_ 최종적으로 확정됩니다. 롤업 트랜잭션이 이더리움의 기본 레이어에 커밋되면 (체인 재구성과 같은 매우 드문 경우를 제외하고는) 롤백할 수 없습니다.
+
+## 낙관적 롤업은 어떻게 작동하나요? {#how-optimistic-rollups-work}
+
+### 트랜잭션 실행 및 집계 {#transaction-execution-and-aggregation}
+
+사용자는 낙관적 롤업에서 트랜잭션 처리를 담당하는 노드인 “운영자”에게 트랜잭션을 제출합니다. “검증자” 또는 “집계자”라고도 하는 운영자는 트랜잭션을 집계하고, 기본 데이터를 압축하며, 이더리움에 블록을 게시합니다.
+
+[지분 증명 시스템](/developers/docs/consensus-mechanisms/pos/)과 마찬가지로 누구나 검증자가 될 수 있지만, 낙관적 롤업 검증자는 블록을 생성하기 전에 본드를 제공해야 합니다. 검증자가 유효하지 않은 블록을 게시하거나 오래되었지만 유효하지 않은 블록을 기반으로 구축하는 경우(자신의 블록이 유효하더라도) 이 본드는 삭감될 수 있습니다. 이러한 방식으로 낙관적 롤업은 암호경제학적 인센티브를 활용하여 검증자가 정직하게 행동하도록 보장합니다.
+
+낙관적 롤업 체인의 다른 검증자들은 롤업 상태의 복사본을 사용하여 제출된 트랜잭션을 실행해야 합니다. 검증자의 최종 상태가 운영자가 제안한 상태와 다른 경우, 챌린지를 시작하고 사기 증명을 계산할 수 있습니다.
+
+일부 낙관적 롤업은 무허가형 검증자 시스템을 포기하고 단일 “시퀀서”를 사용하여 체인을 실행할 수 있습니다. 검증자와 마찬가지로 시퀀서는 트랜잭션을 처리하고, 롤업 블록을 생성하며, L1 체인(이더리움)에 롤업 트랜잭션을 제출합니다.
+
+시퀀서는 트랜잭션 순서에 대해 더 큰 통제권을 가지고 있기 때문에 일반 롤업 운영자와 다릅니다. 또한 시퀀서는 롤업 체인에 대한 우선 액세스 권한을 가지며 온체인 계약에 트랜잭션을 제출할 수 있는 유일한 주체입니다. 시퀀서가 아닌 노드나 일반 사용자의 트랜잭션은 시퀀서가 새 배치에 포함할 때까지 별도의 받은 편지함에 대기열로 간단히 저장됩니다.
+
+#### 이더리움에 롤업 블록 제출 {#submitting-blocks-to-ethereum}
+
+언급했듯이, 낙관적 롤업의 운영자는 오프체인 트랜잭션을 배치로 묶어 공증을 위해 이더리움으로 보냅니다. 이 과정에는 트랜잭션 관련 데이터를 압축하여 이더리움에 `calldata` 또는 블롭으로 게시하는 작업이 포함됩니다.
+
+`calldata`는 스마트 계약에서 수정할 수 없고 비영구적인 영역으로, 대부분 [메모리](/developers/docs/smart-contracts/anatomy/#memory)처럼 작동합니다. `calldata`는 블록체인의 [히스토리 로그](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)의 일부로 온체인에 유지되지만, 이더리움 상태의 일부로 저장되지는 않습니다. `calldata`는 이더리움 상태의 어떤 부분도 건드리지 않기 때문에, 온체인에 데이터를 저장하는 데 상태보다 저렴합니다.
+
+`calldata` 키워드는 솔리디티에서 실행 시 스마트 계약 함수에 인수를 전달하는 데에도 사용됩니다. `calldata`는 트랜잭션 중에 호출되는 함수를 식별하고 임의의 바이트 시퀀스 형태로 함수에 대한 입력을 보유합니다.
+
+낙관적 롤업의 맥락에서 `calldata`는 압축된 트랜잭션 데이터를 온체인 계약으로 보내는 데 사용됩니다. 롤업 운영자는 롤업 계약에서 필요한 함수를 호출하고 압축된 데이터를 함수 인수로 전달하여 새 배치를 추가합니다. `calldata`를 사용하면 롤업이 발생하는 대부분의 비용이 온체인 데이터 저장에서 발생하므로 사용자 수수료가 절감됩니다.
+
+이 개념이 어떻게 작동하는지 보여주는 롤업 배치 제출의 [예시](https://eth.blockscout.com/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591)가 있습니다. 시퀀서는 `appendSequencerBatch()` 메서드를 호출하고 `calldata`를 사용하여 압축된 트랜잭션 데이터를 입력으로 전달했습니다.
+
+일부 롤업은 이제 블롭을 사용하여 이더리움에 트랜잭션 배치를 게시합니다.
+
+블롭은 (`calldata`와 마찬가지로) 수정할 수 없고 비영구적이지만 약 18일 후에 히스토리에서 제거됩니다. 블롭에 대한 자세한 내용은 [덴크샤딩](/roadmap/danksharding)을 참조하세요.
+
+### 상태 커밋먼트 {#state-commitments}
+
+어느 시점에서든 낙관적 롤업의 상태(계정, 잔액, 계약 코드 등) 는 "상태 트리"라고 불리는 [머클 트리](/whitepaper/#merkle-trees)로 구성됩니다. 롤업의 최신 상태를 참조하는 이 머클 트리의 루트(상태 루트)는 해시되어 롤업 계약에 저장됩니다. 체인에서의 모든 상태 전환은 새로운 롤업 상태를 생성하며, 운영자는 새로운 상태 루트를 계산하여 이를 커밋합니다.
+
+운영자는 배치를 게시할 때 이전 상태 루트와 새로운 상태 루트를 모두 제출해야 합니다. 이전 상태 루트가 온체인 계약의 기존 상태 루트와 일치하면, 후자는 폐기되고 새로운 상태 루트로 대체됩니다.
+
+롤업 운영자는 트랜잭션 배치 자체에 대한 머클 루트도 커밋해야 합니다. 이를 통해 누구나 [머클 증명](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)을 제시하여 배치(L1에서)에 트랜잭션이 포함되었음을 증명할 수 있습니다.
+
+상태 커밋, 특히 상태 루트는 낙관적 롤업에서 상태 변경의 정확성을 증명하는 데 필요합니다. 롤업 계약은 운영자가 게시한 직후 새로운 상태 루트를 수락하지만, 나중에 유효하지 않은 상태 루트를 삭제하여 롤업을 올바른 상태로 복원할 수 있습니다.
+
+### 사기 증명 {#fraud-proving}
+
+설명했듯이, 낙관적 롤업은 누구나 유효성 증명을 제공하지 않고 블록을 게시할 수 있도록 합니다. 하지만 체인의 안전을 보장하기 위해, 낙관적 롤업은 누구나 상태 전환에 이의를 제기할 수 있는 시간 창을 지정합니다. 따라서 누구나 그 유효성에 이의를 제기할 수 있기 때문에 롤업 블록은 "어설션"이라고 불립니다.
+
+누군가 어설션에 이의를 제기하면, 롤업 프로토콜은 사기 증명 계산을 시작합니다. 모든 유형의 사기 증명은 상호작용적입니다. 즉, 다른 사람이 이의를 제기하기 전에 누군가가 어설션을 게시해야 합니다. 차이점은 사기 증명을 계산하는 데 필요한 상호작용 라운드의 수에 있습니다.
+
+단일 라운드 상호작용 증명 체계는 L1에서 분쟁이 발생한 트랜잭션을 재생하여 유효하지 않은 어설션을 감지합니다. 롤업 프로토콜은 검증자 계약을 사용하여 L1(이더리움)에서 분쟁이 발생한 트랜잭션의 재실행을 에뮬레이트하며, 계산된 상태 루트가 챌린지의 승자를 결정합니다. 롤업의 올바른 상태에 대한 챌린저의 주장이 맞으면, 운영자는 본드가 삭감되는 페널티를 받습니다.
+
+그러나 사기를 감지하기 위해 L1에서 트랜잭션을 재실행하려면 개별 트랜잭션에 대한 상태 커밋을 게시해야 하며, 롤업이 온체인에 게시해야 하는 데이터 양이 증가합니다. 트랜잭션을 재생하면 상당한 가스 비용도 발생합니다. 이러한 이유로, 낙관적 롤업은 다중 라운드 상호작용 증명으로 전환하고 있으며, 이는 동일한 목표(즉, 유효하지 않은 롤업 작업 감지)를 더 효율적으로 달성합니다.
+
+#### 다중 라운드 상호작용 증명 {#multi-round-interactive-proving}
+
+다중 라운드 상호작용 증명은 어설터와 챌린저 간의 상호 프로토콜을 포함하며, 이는 L1 검증자 계약에 의해 감독되고 궁극적으로 거짓말하는 당사자를 결정합니다. L2 노드가 어설션에 이의를 제기한 후, 어설터는 분쟁이 발생한 어설션을 두 개의 동일한 절반으로 나누어야 합니다. 이 경우 각 개별 어설션은 다른 어설션과 동일한 수의 연산 단계를 포함합니다.
+
+그러면 챌린저는 이의를 제기할 어설션을 선택합니다. 분할 과정("이분법 프로토콜"이라고 함)은 양 당사자가 실행의 _단일_ 단계에 대한 어설션에 대해 분쟁을 벌일 때까지 계속됩니다. 이 시점에서 L1 계약은 지침(및 그 결과)을 평가하여 분쟁을 해결하고 사기 당사자를 적발합니다.
+
+어설터는 분쟁이 발생한 단일 단계 연산의 유효성을 검증하는 “단일 단계 증명”을 제공해야 합니다. 어설터가 단일 단계 증명을 제공하지 못하거나 L1 검증자가 증명을 유효하지 않다고 판단하면 챌린지에서 패배합니다.
+
+이 유형의 사기 증명에 대한 몇 가지 참고 사항:
+
+1. 다중 라운드 상호작용 사기 증명은 분쟁 중재에서 L1 체인이 해야 할 작업을 최소화하기 때문에 효율적인 것으로 간주됩니다. 전체 트랜잭션을 재생하는 대신, L1 체인은 롤업 실행에서 한 단계만 다시 실행하면 됩니다.
+
+2. 이분법 프로토콜은 온체인에 게시되는 데이터의 양을 줄입니다(모든 트랜잭션에 대해 상태 커밋을 게시할 필요 없음). 또한, 낙관적 롤업 트랜잭션은 이더리움의 가스 한도에 의해 제한되지 않습니다. 반대로, 트랜잭션을 재실행하는 낙관적 롤업은 단일 이더리움 트랜잭션 내에서 실행을 에뮬레이트하기 위해 L2 트랜잭션의 가스 한도를 낮추어야 합니다.
+
+3. 악의적인 어설터의 본드 일부는 챌린저에게 수여되고, 나머지 일부는 소각됩니다. 소각은 검증자 간의 담합을 방지합니다. 만약 두 검증자가 담합하여 가짜 챌린지를 시작하면, 그들은 여전히 전체 스테이킹의 상당 부분을 잃게 됩니다.
+
+4. 다중 라운드 상호작용 증명은 양 당사자(어설터와 챌린저)가 지정된 시간 창 내에서 움직여야 합니다. 마감일 전에 조치를 취하지 않으면 불이행 당사자가 챌린지를 포기하게 됩니다.
+
+#### 낙관적 롤업에서 사기 증명이 중요한 이유 {#fraud-proof-benefits}
+
+사기 증명은 낙관적 롤업에서 무신뢰 최종성을 촉진하기 때문에 중요합니다. 무신뢰 최종성은 트랜잭션이 유효하기만 하다면 결국 확정될 것이라고 보장하는 낙관적 롤업의 품질입니다.
+
+악의적인 노드는 거짓 챌린지를 시작하여 유효한 롤업 블록의 확정을 지연시키려고 할 수 있습니다. 그러나 사기 증명은 결국 롤업 블록의 유효성을 증명하고 확정되도록 합니다.
+
+이는 또한 낙관적 롤업의 또 다른 보안 속성과 관련이 있습니다. 체인의 유효성은 _하나의_ 정직한 노드의 존재에 달려 있습니다. 정직한 노드는 유효한 어설션을 게시하거나 유효하지 않은 어설션에 이의를 제기함으로써 체인을 올바르게 진행시킬 수 있습니다. 어떤 경우든, 정직한 노드와 분쟁에 들어가는 악의적인 노드는 사기 증명 과정에서 자신의 스테이킹을 잃게 됩니다.
+
+### L1/L2 상호운용성 {#l1-l2-interoperability}
+
+낙관적 롤업은 이더리움 메인넷과의 상호운용성을 위해 설계되었으며, 사용자가 L1과 L2 간에 메시지와 임의의 데이터를 전달할 수 있도록 합니다. 또한 EVM과 호환되므로 기존 [탈중앙화앱](/developers/docs/dapps/)을 낙관적 롤업으로 포팅하거나 이더리움 개발 도구를 사용하여 새로운 탈중앙화앱을 만들 수 있습니다.
+
+#### 1. 자산 이동 {#asset-movement}
+
+##### 롤업 진입하기
+
+낙관적 롤업을 사용하기 위해 사용자는 ETH, ERC-20 토큰 및 기타 허용된 자산을 L1의 롤업 [브리지](/developers/docs/bridges/) 계약에 예치합니다. 브리지 계약은 트랜잭션을 L2로 전달하며, 여기에서 동일한 양의 자산이 발행되어 낙관적 롤업에서 사용자가 선택한 주소로 전송됩니다.
+
+사용자가 생성한 트랜잭션(예: L1 > L2 예금)은 일반적으로 시퀀서가 롤업 계약에 다시 제출할 때까지 대기열에 들어갑니다. 그러나 검열 저항성을 유지하기 위해, 낙관적 롤업은 트랜잭션이 허용된 최대 시간을 초과하여 지연된 경우 사용자가 직접 온체인 롤업 계약에 트랜잭션을 제출할 수 있도록 허용합니다.
+
+일부 낙관적 롤업은 시퀀서가 사용자를 검열하는 것을 방지하기 위해 더 간단한 접근 방식을 채택합니다. 여기서 블록은 롤업 체인에서 처리된 트랜잭션 외에 이전 블록 이후 L1 계약에 제출된 모든 트랜잭션(예: 예금)으로 정의됩니다. 시퀀서가 L1 트랜잭션을 무시하면 (증명 가능하게) 잘못된 상태 루트를 게시하게 됩니다. 따라서 시퀀서는 L1에 게시된 사용자 생성 메시지를 지연시킬 수 없습니다.
+
+##### 롤업 나가기
+
+낙관적 롤업에서 이더리움으로 인출하는 것은 사기 증명 체계 때문에 더 어렵습니다. 사용자가 L1에 에스크로된 자금을 인출하기 위해 L2 > L1 트랜잭션을 시작하는 경우, 약 7일 동안 지속되는 챌린지 기간이 끝날 때까지 기다려야 합니다. 그럼에도 불구하고 인출 과정 자체는 매우 간단합니다.
+
+L2 롤업에서 인출 요청이 시작되면 트랜잭션은 다음 배치에 포함되고, 롤업에 있는 사용자의 자산은 소각됩니다. 배치가 이더리움에 게시되면, 사용자는 블록에 자신의 출금 트랜잭션이 포함되었음을 확인하는 머클 증명을 계산할 수 있습니다. 그런 다음 지연 기간을 기다려 L1에서 트랜잭션을 최종 확정하고 메인넷으로 자금을 인출하기만 하면 됩니다.
+
+이더리움으로 자금을 인출하기 전에 일주일을 기다리는 것을 피하기 위해, 낙관적 롤업 사용자는 **유동성 공급자**(LP)를 이용할 수 있습니다. 유동성 공급자는 보류 중인 L2 인출의 소유권을 가정하고 L1에서 사용자에게 (수수료를 받고) 지불합니다.
+
+유동성 공급자는 자금을 지급하기 전에 사용자의 인출 요청의 유효성을 (직접 체인을 실행하여) 확인할 수 있습니다. 이런 식으로 그들은 트랜잭션이 결국 확정될 것이라는 보증(즉, 무신뢰 최종성)을 갖게 됩니다.
+
+#### 2. EVM 호환성 {#evm-compatibility}
+
+개발자에게 낙관적 롤업의 장점은 [이더리움 가상 머신(EVM)](/developers/docs/evm/)과의 호환성 또는 더 나아가 동등성입니다. EVM 호환 롤업은 [이더리움 옐로 페이퍼](https://ethereum.github.io/yellowpaper/paper.pdf)의 사양을 준수하며 바이트코드 수준에서 EVM을 지원합니다.
+
+낙관적 롤업의 EVM 호환성은 다음과 같은 이점을 가집니다.
+
+i. 개발자는 코드베이스를 광범위하게 수정할 필요 없이 이더리움의 기존 스마트 계약을 낙관적 롤업 체인으로 마이그레이션할 수 있습니다. 이를 통해 개발팀은 L2에 이더리움 스마트 계약을 배포할 때 시간을 절약할 수 있습니다.
+
+ii. 낙관적 롤업을 사용하는 개발자와 프로젝트 팀은 이더리움의 인프라를 활용할 수 있습니다. 여기에는 프로그래밍 언어, 코드 라이브러리, 테스트 도구, 클라이언트 소프트웨어, 배포 인프라 등이 포함됩니다.
+
+기존 도구를 사용하는 것은 이러한 도구들이 수년에 걸쳐 광범위하게 감사, 디버깅 및 개선되었기 때문에 중요합니다. 또한 이더리움 개발자가 완전히 새로운 개발 스택으로 구축하는 방법을 배울 필요가 없습니다.
+
+#### 3. 크로스체인 계약 호출 {#cross-chain-contract-calls}
+
+사용자(외부 소유 계정)는 롤업 계약에 트랜잭션을 제출하거나 시퀀서 또는 검증자가 대신 처리하도록 하여 L2 계약과 상호 작용합니다. 낙관적 롤업은 또한 이더리움의 계약 계정이 브리지 계약을 사용하여 L1과 L2 간에 메시지를 전달하고 데이터를 주고받음으로써 L2 계약과 상호 작용할 수 있도록 합니다. 이는 이더리움 메인넷의 L1 계약을 프로그래밍하여 L2 낙관적 롤업의 계약에 속한 함수를 호출할 수 있음을 의미합니다.
+
+크로스체인 계약 호출은 비동기적으로 발생합니다. 즉, 호출이 먼저 시작된 다음 나중에 실행됩니다. 이는 호출이 즉시 결과를 생성하는 이더리움의 두 계약 간 호출과는 다릅니다.
+
+크로스체인 계약 호출의 예로는 앞에서 설명한 토큰 예치가 있습니다. L1의 계약은 사용자의 토큰을 에스크로하고 페어링된 L2 계약에 메시지를 보내 롤업에서 동일한 양의 토큰을 발행합니다.
+
+크로스체인 메시지 호출은 계약 실행을 초래하므로, 발신자는 일반적으로 연산에 대한 [가스 비용](/developers/docs/gas/)을 부담해야 합니다. 대상 체인에서 트랜잭션이 실패하지 않도록 가스 한도를 높게 설정하는 것이 좋습니다. 토큰 브리징 시나리오가 좋은 예입니다. 트랜잭션의 L1 측(토큰 예치)은 작동하지만 L2 측(새 토큰 발행)이 낮은 가스로 인해 실패하면 예금은 복구할 수 없게 됩니다.
+
+마지막으로, 계약 간의 L2 > L1 메시지 호출은 지연을 고려해야 한다는 점에 유의해야 합니다(L1 > L2 호출은 일반적으로 몇 분 후에 실행됨). 이는 낙관적 롤업에서 메인넷으로 전송된 메시지는 챌린지 기간이 만료될 때까지 실행될 수 없기 때문입니다.
+
+## 낙관적 롤업 수수료는 어떻게 작동하나요? {#how-do-optimistic-rollup-fees-work}
+
+낙관적 롤업은 이더리움과 마찬가지로 가스 수수료 체계를 사용하여 사용자가 트랜잭션당 지불하는 금액을 나타냅니다. 낙관적 롤업에 부과되는 수수료는 다음 구성 요소에 따라 달라집니다.
+
+1. **상태 쓰기**: 낙관적 롤업은 트랜잭션 데이터와 블록 헤더(이전 블록 헤더 해시, 상태 루트, 배치 루트로 구성)를 이더리움에 `blob` 또는 "바이너리 대형 객체"로 게시합니다. [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)는 온체인에 데이터를 포함하는 비용 효율적인 솔루션을 도입했습니다. `blob`은 롤업이 압축된 상태 전환 데이터를 이더리움 L1에 게시할 수 있도록 하는 새로운 트랜잭션 필드입니다. 영구적으로 온체인에 남아있는 `calldata`와 달리 블롭은 수명이 짧으며 [4096 에폭](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147)(약 18일) 후에 클라이언트에서 제거될 수 있습니다. 블롭을 사용하여 압축된 트랜잭션 배치를 게시함으로써 낙관적 롤업은 L1에 트랜잭션을 쓰는 비용을 크게 줄일 수 있습니다.
+
+2. **사용된 블롭 가스**: 블롭을 포함하는 트랜잭션은 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)에 의해 도입된 것과 유사한 동적 수수료 메커니즘을 사용합니다. 유형 3 트랜잭션의 가스 수수료는 블롭에 대한 기본 수수료를 고려하며, 이는 블롭 공간 수요와 전송되는 트랜잭션의 블롭 공간 사용량에 따라 네트워크에 의해 결정됩니다.
+
+3. **L2 운영자 수수료**: 이는 이더리움의 가스 수수료와 마찬가지로 트랜잭션 처리에서 발생하는 연산 비용에 대한 보상으로 롤업 노드에 지불되는 금액입니다. L2는 처리 용량이 더 높고, 이더리움의 검증자가 더 높은 수수료의 트랜잭션을 우선적으로 처리하도록 강요하는 네트워크 혼잡에 직면하지 않기 때문에 롤업 노드는 더 낮은 거래 수수료를 부과합니다.
+
+낙관적 롤업은 트랜잭션 배치 및 `calldata` 압축을 포함한 여러 메커니즘을 적용하여 데이터 게시 비용을 줄이고 사용자의 수수료를 절감합니다. [L2 수수료 추적기](https://l2fees.info/)에서 이더리움 기반 낙관적 롤업 사용 비용에 대한 실시간 개요를 확인할 수 있습니다.
+
+## 낙관적 롤업은 어떻게 이더리움을 확장하나요? {#scaling-ethereum-with-optimistic-rollups}
+
+설명했듯이, 낙관적 롤업은 데이터 가용성을 보장하기 위해 압축된 트랜잭션 데이터를 이더리움에 게시합니다. 온체인에 게시된 데이터를 압축하는 능력은 낙관적 롤업으로 이더리움의 처리량을 확장하는 데 매우 중요합니다.
+
+메인 이더리움 체인은 블록이 보유할 수 있는 데이터의 양에 가스 단위로 제한을 둡니다([평균 블록 크기](/developers/docs/blocks/#block-size)는 1,500만 가스입니다). 이는 각 트랜잭션이 사용할 수 있는 가스의 양을 제한하지만, 트랜잭션 관련 데이터를 줄여 블록당 처리되는 트랜잭션을 늘릴 수 있다는 의미이기도 하며, 이는 확장성을 직접적으로 향상시킵니다.
+
+낙관적 롤업은 트랜잭션 데이터 압축을 달성하고 TPS 속도를 향상시키기 위해 여러 기술을 사용합니다. 예를 들어, 이 [기사](https://vitalik.eth.limo/general/2021/01/05/rollup.html)는 기본 사용자 트랜잭션(이더 전송)이 메인넷에서 생성하는 데이터와 동일한 트랜잭션이 롤업에서 생성하는 데이터의 양을 비교합니다.
+
+| 매개 변수 | 이더리움(L1) | 롤업(L2) |
+| --------- | ---------------------------------------------------- | ------------------------------------ |
+| Nonce | ~3 | 0 |
+| 가스 가격 | ~8 | 0-0.5 |
+| 가스 | 3 | 0-0.5 |
+| 받는 주소 | 21 | 4 |
+| 값 | 9 | ~3 |
+| Signature | ~68 (2 + 33 + 33) | ~0.5 |
+| 보내는 주소 | 0 (서명에서 복구) | 4 |
+| **합계** | **\~112 바이트** | **\~12 바이트** |
+
+이 수치에 대한 대략적인 계산을 통해 낙관적 롤업이 제공하는 확장성 향상을 보여줄 수 있습니다.
+
+1. 모든 블록의 목표 크기는 1,500만 가스이며, 1바이트의 데이터를 검증하는 데 16가스가 소요됩니다. 평균 블록 크기를 16가스로 나누면(15,000,000/16), 평균 블록은 937,500바이트의 데이터를 담을 수 있음을 보여줍니다.
+2. 기본 롤업 트랜잭션이 12바이트를 사용한다면, 평균 이더리움 블록은 **78,125개의 롤업 트랜잭션**(937,500/12) 또는 **39개의 롤업 배치**(각 배치가 평균 2,000개의 트랜잭션을 담는 경우)를 처리할 수 있습니다.
+3. 이더리움에서 15초마다 새로운 블록이 생성된다면, 롤업의 처리 속도는 초당 약 5,208 트랜잭션에 달할 것입니다. 이는 이더리움 블록이 담을 수 있는 기본 롤업 트랜잭션 수(**78,125**)를 평균 블록 시간(**15초**)으로 나누어 계산합니다.
+
+낙관적 롤업 트랜잭션이 이더리움에서 전체 블록을 구성할 수는 없다는 점을 고려하면 이는 상당히 낙관적인 추정치입니다. 그러나 이는 낙관적 롤업이 이더리움 사용자에게 얼마나 많은 확장성 이득을 제공할 수 있는지에 대한 대략적인 아이디어를 제공할 수 있습니다(현재 구현은 최대 2,000 TPS를 제공함).
+
+[데이터 샤딩](/roadmap/danksharding/)이 이더리움에 도입되면 낙관적 롤업의 확장성이 향상될 것으로 예상됩니다. 롤업 트랜잭션은 다른 비롤업 트랜잭션과 블록 공간을 공유해야 하므로 처리 용량은 메인 이더리움 체인의 데이터 처리량에 의해 제한됩니다. 덴크샤딩은 비싸고 영구적인 `CALLDATA` 대신 저렴하고 비영구적인 "블롭" 저장소를 사용하여 L2 체인이 블록당 데이터를 게시하는 데 사용할 수 있는 공간을 늘릴 것입니다.
+
+### 낙관적 롤업의 장단점 {#optimistic-rollups-pros-and-cons}
+
+| 장점 | 단점 |
+| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 보안이나 무신뢰성을 희생하지 않으면서 확장성을 크게 향상시킵니다. | 잠재적인 사기 챌린지로 인한 트랜잭션 최종성 지연. |
+| 트랜잭션 데이터는 레이어 1 체인에 저장되어 투명성, 보안, 검열 저항성 및 탈중앙화를 향상시킵니다. | 중앙화된 롤업 운영자(시퀀서)가 트랜잭션 순서에 영향을 미칠 수 있습니다. |
+| 사기 증명은 무신뢰 최종성을 보장하고 정직한 소수 그룹이 체인을 보호할 수 있도록 합니다. | 정직한 노드가 없는 경우 악의적인 운영자가 유효하지 않은 블록과 상태 커밋을 게시하여 자금을 훔칠 수 있습니다. |
+| 사기 증명 계산은 특별한 하드웨어가 필요한 유효성 증명(ZK 롤업에서 사용)과 달리 일반 L2 노드에 개방되어 있습니다. | 보안 모델은 롤업 트랜잭션을 실행하고 유효하지 않은 상태 전환에 이의를 제기하기 위해 사기 증명을 제출하는 최소 한 개의 정직한 노드에 의존합니다. |
+| 롤업은 "무신뢰 활성"("누구나 트랜잭션을 실행하고 어설션을 게시하여 체인을 강제로 진행시킬 수 있음)의 이점을 누립니다. | 사용자는 이더리움으로 자금을 인출하기 전에 일주일의 챌린지 기간이 만료될 때까지 기다려야 합니다. |
+| 낙관적 롤업은 체인의 보안을 강화하기 위해 잘 설계된 암호경제학적 인센티브에 의존합니다. | 롤업은 모든 트랜잭션 데이터를 온체인에 게시해야 하므로 비용이 증가할 수 있습니다. |
+| EVM 및 솔리디티와의 호환성을 통해 개발자는 이더리움 네이티브 스마트 계약을 롤업으로 포팅하거나 기존 도구를 사용하여 새로운 탈중앙화앱을 만들 수 있습니다. | |
+
+### 낙관적 롤업에 대한 시각적 설명 {#optimistic-video}
+
+시각 자료를 찾고 있나요? Finematics에서 옵티미스틱 롤업을 설명하는 것을 살펴보세요.
+
+
+
+## 낙관적 롤업에 대한 추가 자료
+
+- [낙관적 롤업은 어떻게 작동하는가 (완벽 가이드)](https://www.alchemy.com/overviews/optimistic-rollups)
+- [블록체인 롤업이란 무엇인가? 기술적 소개](https://www.ethereum-ecosystem.com/blog/what-is-a-blockchain-rollup-a-technical-introduction)
+- [아비트럼 필수 가이드](https://www.bankless.com/the-essential-guide-to-arbitrum)
+- [이더리움 롤업 실용 가이드](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
+- [이더리움 L2의 사기 증명 현황](https://web.archive.org/web/20241124154627/https://research.2077.xyz/the-state-of-fraud-proofs-in-ethereum-l2s)
+- [옵티미즘의 롤업은 실제로 어떻게 작동하는가?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work)
+- [OVM 심층 분석](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52)
+- [낙관적 가상 머신이란 무엇인가?](https://www.alchemy.com/overviews/optimistic-virtual-machine)
diff --git a/public/content/translations/ko/developers/docs/scaling/plasma/index.md b/public/content/translations/ko/developers/docs/scaling/plasma/index.md
new file mode 100644
index 00000000000..d1ebbcae9d9
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/scaling/plasma/index.md
@@ -0,0 +1,176 @@
+---
+title: "플라즈마 체인"
+description: "현재 이더리움 커뮤니티에서 확장 솔루션으로 활용되고 있는 플라즈마 체인에 대한 소개입니다."
+lang: ko
+incomplete: true
+sidebarDepth: 3
+---
+
+플라즈마 체인은 이더리움 메인넷에 고정된 별도의 블록체인이지만, 자체적인 블록 검증 메커니즘을 통해 오프체인에서 트랜잭션을 실행합니다. 플라즈마 체인은 본질적으로 이더리움 메인넷의 작은 복사본인 "자식" 체인이라고도 불립니다. 플라즈마 체인은 [낙관적 롤업](/developers/docs/scaling/optimistic-rollups/)처럼 [사기 증명](/glossary/#fraud-proof)을 사용하여 분쟁을 중재합니다.
+
+머클 트리를 사용하면 이러한 체인을 무한히 쌓을 수 있으며, 이는 부모 체인(이더리움 메인넷 포함)의 대역폭 부담을 덜어줍니다. 그러나 이러한 체인은 이더리움으로부터 어느 정도의 보안성(사기 증명을 통해)을 얻지만, 여러 설계상의 한계로 인해 보안 및 효율성에 영향을 받습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+모든 기초 주제를 잘 이해하고 [이더리움 확장](/developers/docs/scaling/)에 대해 높은 수준으로 이해하고 있어야 합니다.
+
+## 플라즈마란 무엇인가요?
+
+플라즈마는 이더리움과 같은 퍼블릭 블록체인의 확장성을 개선하기 위한 프레임워크입니다. 오리지널 [플라즈마 백서](http://plasma.io/plasma.pdf)에 설명된 바와 같이, 플라즈마 체인은 다른 블록체인("루트 체인"이라고 함) 위에 구축됩니다. 각 "자식 체인"은 루트 체인에서 확장되며 일반적으로 부모 체인에 배포된 스마트 계약에 의해 관리됩니다.
+
+플라즈마 계약은 여러 기능 중에서도 사용자가 이더리움 메인넷과 플라즈마 체인 간에 자산을 이동할 수 있도록 하는 [브리지](/developers/docs/bridges/) 역할을 합니다. 이 점은 [사이드체인](/developers/docs/scaling/sidechains/)과 유사하지만, 플라즈마 체인은 적어도 어느 정도는 이더리움 메인넷의 보안성의 이점을 누립니다. 이는 자체 보안에 전적으로 책임이 있는 사이드체인과 다릅니다.
+
+## 플라즈마는 어떻게 작동하나요?
+
+플라즈마 프레임워크의 기본 구성 요소는 다음과 같습니다.
+
+### 오프체인 계산 {#offchain-computation}
+
+이더리움의 현재 처리 속도는 초당 약 15\~20개의 트랜잭션으로 제한되어 있어, 더 많은 사용자를 처리하기 위한 단기적인 확장 가능성을 줄입니다. 이 문제는 주로 이더리움의 [합의 메커니즘](/developers/docs/consensus-mechanisms/)이 블록체인 상태에 대한 모든 업데이트를 검증하기 위해 많은 P2P 노드를 요구하기 때문에 발생합니다.
+
+이더리움의 합의 메커니즘은 보안에 필수적이지만, 모든 사용 사례에 적용되는 것은 아닐 수 있습니다. 예를 들어, 앨리스가 밥에게 커피 한 잔 값을 매일 지불하는 경우, 양 당사자 간에 어느 정도 신뢰가 존재하므로 전체 이더리움 네트워크의 검증이 필요하지 않을 수 있습니다.
+
+플라즈마는 이더리움 메인넷이 모든 트랜잭션을 검증할 필요가 없다고 가정합니다. 대신, 메인넷 외부에서 트랜잭션을 처리하여 노드가 모든 트랜잭션을 검증해야 하는 부담을 덜 수 있습니다.
+
+플라즈마 체인은 속도와 비용을 최적화할 수 있으므로 오프체인 계산이 필요합니다. 예를 들어, 플라즈마 체인은 트랜잭션의 순서 지정 및 실행을 관리하기 위해 단일 "운영자"를 사용할 수 있으며, 대부분의 경우 실제로 그렇게 합니다. 단 하나의 개체만이 트랜잭션을 검증하므로, 플라즈마 체인의 처리 시간은 이더리움 메인넷보다 빠릅니다.
+
+### 상태 커밋먼트 {#state-commitments}
+
+플라즈마는 트랜잭션을 오프체인에서 실행하지만, 메인 이더리움 실행 레이어에서 정산됩니다. 그렇지 않으면 플라즈마 체인은 이더리움의 보안 보장을 받을 수 없습니다. 그러나 플라즈마 체인의 상태를 알지 못한 채 오프체인 트랜잭션을 확정하는 것은 보안 모델을 깨뜨리고 유효하지 않은 트랜잭션의 확산을 허용할 것입니다. 이것이 플라즈마 체인에서 블록을 생성하는 책임이 있는 개체인 운영자가 이더리움에 주기적으로 "상태 커밋먼트"를 게시해야 하는 이유입니다.
+
+[커밋먼트 스킴](https://en.wikipedia.org/wiki/Commitment_scheme)은 다른 당사자에게 가치나 진술을 공개하지 않고 이에 커밋하는 암호화 기술입니다. 커밋먼트는 한번 커밋하면 그 가치나 진술을 변경할 수 없다는 의미에서 "구속력"이 있습니다. 플라즈마의 상태 커밋먼트는 "머클 루트"([머클 트리](/whitepaper/#merkle-trees)에서 파생됨)의 형태를 취하며, 운영자는 이를 이더리움 체인의 플라즈마 계약에 주기적으로 보냅니다.
+
+머클 루트는 대량의 정보를 압축할 수 있게 해주는 암호화 기본 요소입니다. 머클 루트(이 경우 "블록 루트"라고도 함)는 블록 내의 모든 트랜잭션을 나타낼 수 있습니다. 머클 루트는 또한 작은 데이터 조각이 더 큰 데이터 세트의 일부임을 더 쉽게 검증할 수 있도록 합니다. 예를 들어, 사용자는 특정 블록에 트랜잭션이 포함되었음을 증명하기 위해 [머클 증명](/developers/tutorials/merkle-proofs-for-offline-data-integrity/#main-content)을 생성할 수 있습니다.
+
+머클 루트는 이더리움에 오프체인 상태에 대한 정보를 제공하는 데 중요합니다. 머클 루트를 "저장 지점"으로 생각할 수 있습니다. 운영자는 "이것은 x 시점의 플라즈마 체인 상태이며, 이것이 그 증거인 머클 루트입니다."라고 말하는 것과 같습니다. 운영자는 머클 루트를 사용하여 플라즈마 체인의 현재 상태에 커밋하며, 이것이 "상태 커밋먼트"라고 불리는 이유입니다.
+
+### 진입 및 탈출 {#entries-and-exits}
+
+이더리움 사용자가 플라즈마를 활용하려면 메인넷과 플라즈마 체인 간에 자금을 이동하는 메커니즘이 필요합니다. 그러나 플라즈마 체인의 주소로 이더를 임의로 보낼 수는 없습니다. 이들 체인은 호환되지 않으므로 트랜잭션이 실패하거나 자금 손실로 이어질 수 있습니다.
+
+플라즈마는 이더리움에서 실행되는 마스터 계약을 사용하여 사용자의 진입과 탈출을 처리합니다. 이 마스터 계약은 또한 상태 커밋먼트(앞서 설명)를 추적하고 사기 증명을 통해 부정직한 행위를 처벌하는 역할도 합니다(이에 대해서는 나중에 자세히 설명).
+
+#### 플라즈마 체인 진입하기 {#entering-the-plasma-chain}
+
+플라즈마 체인에 진입하려면 앨리스(사용자)는 플라즈마 계약에 ETH 또는 ERC-20 토큰을 예치해야 합니다. 계약 예치를 감시하는 플라즈마 운영자는 앨리스의 초기 예치금과 동일한 금액을 재생성하여 플라즈마 체인의 그녀의 주소로 지급합니다. 앨리스는 자식 체인에서 자금을 수령했음을 증명해야 하며, 그 후 이 자금을 트랜잭션에 사용할 수 있습니다.
+
+#### 플라즈마 체인 탈출하기 {#exiting-the-plasma-chain}
+
+플라즈마 체인을 탈출하는 것은 여러 가지 이유로 진입하는 것보다 더 복잡합니다. 가장 큰 이유는 이더리움이 플라즈마 체인의 상태에 대한 정보를 가지고 있지만, 그 정보가 사실인지 아닌지를 검증할 수 없다는 것입니다. 악의적인 사용자가 잘못된 주장("나는 1000 ETH를 가지고 있다")을 하고 주장을 뒷받침하기 위해 가짜 증거를 제공하여 빠져나갈 수 있습니다.
+
+악의적인 출금을 방지하기 위해 "챌린지 기간"이 도입됩니다. 챌린지 기간(보통 일주일) 동안 누구나 사기 증명을 사용하여 출금 요청에 이의를 제기할 수 있습니다. 챌린지가 성공하면 출금 요청은 거부됩니다.
+
+그러나 일반적으로 사용자는 정직하며 자신이 소유한 자금에 대해 올바른 주장을 합니다. 이 시나리오에서 앨리스는 플라즈마 계약에 트랜잭션을 제출하여 루트 체인(이더리움)에서 출금 요청을 시작합니다.
+
+그녀는 또한 플라즈마 체인에서 자신의 자금을 생성한 트랜잭션이 블록에 포함되었음을 검증하는 머클 증명을 제공해야 합니다. [미사용 트랜잭션 출력(UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output) 모델을 사용하는 [플라즈마 MVP](https://www.learnplasma.org/en/learn/mvp.html)와 같은 플라즈마의 반복 버전에 필요합니다.
+
+[플라즈마 캐시](https://www.learnplasma.org/en/learn/cash.html)와 같은 다른 것들은 자금을 UTXO 대신 [대체 불가능한 토큰](/developers/docs/standards/tokens/erc-721/)으로 나타냅니다. 이 경우 출금하려면 플라즈마 체인의 토큰 소유권을 증명해야 합니다. 이는 토큰과 관련된 최근 두 개의 트랜잭션을 제출하고 해당 트랜잭션이 블록에 포함되었음을 검증하는 머클 증명을 제공함으로써 이루어집니다.
+
+사용자는 정직한 행동을 보장하기 위해 출금 요청에 증거금을 추가해야 합니다. 챌린저가 앨리스의 출금 요청이 유효하지 않음을 증명하면 그녀의 증거금은 슬래싱되고, 그 중 일부는 챌린저에게 보상으로 지급됩니다.
+
+챌린지 기간 동안 아무도 사기 증명을 제공하지 않으면 앨리스의 출금 요청은 유효한 것으로 간주되어 이더리움의 플라즈마 계약에서 예치금을 회수할 수 있게 됩니다.
+
+### 분쟁 중재 {#dispute-arbitration}
+
+모든 블록체인과 마찬가지로, 플라즈마 체인은 참여자가 악의적으로 행동할 경우(예: 자금 이중 사용) 트랜잭션의 무결성을 강제하는 메커니즘이 필요합니다. 이를 위해 플라즈마 체인은 사기 증명을 사용하여 상태 전환의 유효성에 관한 분쟁을 중재하고 나쁜 행동을 처벌합니다. 사기 증명은 플라즈마 자식 체인이 부모 체인이나 루트 체인에 불만을 제기하는 메커니즘으로 사용됩니다.
+
+사기 증명은 특정 상태 전환이 유효하지 않다는 주장일 뿐입니다. 한 예로 사용자(앨리스)가 동일한 자금을 두 번 사용하려고 하는 경우입니다. 아마도 그녀는 밥과의 트랜잭션에서 UTXO를 사용했고, 이제 밥의 소유가 된 동일한 UTXO를 다른 트랜잭션에서 사용하고 싶어할 수 있습니다.
+
+출금을 막기 위해 밥은 앨리스가 이전 트랜잭션에서 해당 UTXO를 사용했다는 증거와 해당 트랜잭션이 블록에 포함되었다는 머클 증명을 제공하여 사기 증명을 구성할 것입니다. 플라즈마 캐시에서도 동일한 과정이 작동합니다. 밥은 앨리스가 출금하려는 토큰을 이전에 전송했다는 증거를 제공해야 합니다.
+
+밥의 챌린지가 성공하면 앨리스의 출금 요청은 취소됩니다. 그러나 이 접근 방식은 밥이 체인에서 출금 요청을 감시할 수 있는 능력에 의존합니다. 만약 밥이 오프라인 상태라면, 앨리스는 챌린지 기간이 지나면 악의적인 출금을 처리할 수 있습니다.
+
+## 플라즈마의 대량 탈출 문제 {#the-mass-exit-problem-in-plasma}
+
+대량 탈출 문제는 많은 수의 사용자가 동시에 플라즈마 체인에서 출금하려고 할 때 발생합니다. 이 문제가 존재하는 이유는 플라즈마의 가장 큰 문제 중 하나인 데이터 비가용성과 관련이 있습니다.
+
+데이터 가용성이란 제안된 블록에 대한 정보가 실제로 블록체인 네트워크에 게시되었는지 검증할 수 있는 능력입니다. 생성자가 블록 자체는 게시하지만 블록을 생성하는 데 사용된 데이터를 보류하면 블록은 "사용 불가능" 상태가 됩니다.
+
+노드가 블록을 다운로드하고 트랜잭션의 유효성을 검증하려면 블록이 사용 가능해야 합니다. 블록체인은 블록 생성자가 모든 트랜잭션 데이터를 온체인에 게시하도록 강제하여 데이터 가용성을 보장합니다.
+
+데이터 가용성은 또한 이더리움의 베이스 레이어 위에 구축되는 오프체인 확장 프로토콜을 보호하는 데 도움이 됩니다. 이러한 체인의 운영자가 이더리움에 트랜잭션 데이터를 게시하도록 강제함으로써, 누구나 체인의 올바른 상태를 참조하는 사기 증명을 구성하여 유효하지 않은 블록에 이의를 제기할 수 있습니다.
+
+플라즈마 체인은 주로 운영자와 함께 트랜잭션 데이터를 저장하며 **메인넷에는 어떠한 데이터도 게시하지 않습니다**(즉, 주기적인 상태 커밋먼트 외에는). 이는 사용자가 유효하지 않은 트랜잭션에 이의를 제기하는 사기 증명을 생성해야 할 경우, 블록 데이터를 제공하기 위해 운영자에게 의존해야 함을 의미합니다. 이 시스템이 작동한다면, 사용자는 항상 사기 증명을 사용하여 자금을 보호할 수 있습니다.
+
+문제는 단순한 사용자가 아닌 운영자가 악의적으로 행동하는 당사자일 때 시작됩니다. 운영자는 블록체인을 단독으로 통제하기 때문에, 플라즈마 체인에 있는 사용자의 자금을 훔치는 것과 같이 더 큰 규모로 유효하지 않은 상태 전환을 진행할 동기가 더 큽니다.
+
+이 경우, 고전적인 사기 증명 시스템은 작동하지 않습니다. 운영자는 앨리스와 밥의 자금을 자신의 지갑으로 이체하는 유효하지 않은 트랜잭션을 쉽게 만들고, 사기 증명을 생성하는 데 필요한 데이터를 숨길 수 있습니다. 이는 운영자가 사용자나 메인넷에 데이터를 제공할 의무가 없기 때문에 가능합니다.
+
+따라서 가장 낙관적인 해결책은 플라즈마 체인에서 사용자의 "대량 탈출"을 시도하는 것입니다. 대량 탈출은 악의적인 운영자의 자금 탈취 계획을 늦추고 사용자에게 어느 정도의 보호를 제공합니다. 출금 요청은 각 UTXO(또는 토큰)가 생성된 시점을 기준으로 정렬되므로 악의적인 운영자가 정직한 사용자를 선행 매매하는 것을 방지합니다.
+
+그럼에도 불구하고, 기회주의적인 개인이 혼란을 틈타 유효하지 않은 탈출을 처리하여 이익을 취하는 것을 방지하기 위해 대량 탈출 중에 출금 요청의 유효성을 검증할 방법이 여전히 필요합니다. 해결책은 간단합니다. 사용자가 돈을 인출하기 위해 체인의 마지막 유효한 상태를 게시하도록 요구하는 것입니다.
+
+그러나 이 접근 방식에는 여전히 문제가 있습니다. 예를 들어, 플라즈마 체인의 모든 사용자가 탈출해야 하는 경우(악의적인 운영자의 경우 가능), 플라즈마 체인의 전체 유효한 상태가 한 번에 이더리움의 베이스 레이어에 덤프되어야 합니다. 플라즈마 체인의 임의의 크기(높은 처리량 = 더 많은 데이터)와 이더리움의 처리 속도에 대한 제약을 고려할 때, 이것은 이상적인 해결책이 아닙니다.
+
+탈출 게임은 이론적으로는 멋지게 들리지만, 실제 대량 탈출은 이더리움 자체에 네트워크 전체의 혼잡을 유발할 가능성이 높습니다. 이더리움의 기능을 해치는 것 외에도, 제대로 조정되지 않은 대량 탈출은 운영자가 플라즈마 체인의 모든 계정을 비우기 전에 사용자가 자금을 인출하지 못할 수 있음을 의미합니다.
+
+## 플라즈마의 장단점 {#pros-and-cons-of-plasma}
+
+| 장점 | 단점 |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
+| 높은 처리량과 낮은 트랜잭션당 비용을 제공합니다. | 일반 계산을 지원하지 않습니다(스마트 계약을 실행할 수 없음). 기본적인 토큰 전송, 스왑 및 기타 몇 가지 트랜잭션 유형만 술어 논리를 통해 지원됩니다. |
+| 임의의 사용자 간 트랜잭션에 적합합니다(두 사용자 모두 플라즈마 체인에 설정된 경우 사용자 쌍당 오버헤드 없음). | 자금의 보안을 보장하기 위해 주기적으로 네트워크를 감시하거나(활성 요구 사항) 이 책임을 다른 사람에게 위임해야 합니다. |
+| 플라즈마 체인은 메인 체인과 관련 없는 특정 사용 사례에 맞게 조정될 수 있습니다. 기업을 포함한 누구나 플라즈마 스마트 계약을 맞춤화하여 다양한 컨텍스트에서 작동하는 확장 가능한 인프라를 제공할 수 있습니다. | 하나 이상의 운영자에 의존하여 데이터를 저장하고 요청 시 제공합니다. |
+| 계산 및 저장소를 오프체인으로 이동하여 이더리움 메인넷의 부하를 줄입니다. | 챌린지를 허용하기 위해 출금이 며칠 지연됩니다. 대체 가능한 자산의 경우, 유동성 공급자에 의해 완화될 수 있지만, 관련 자본 비용이 발생합니다. |
+| | 너무 많은 사용자가 동시에 탈출하려고 하면 이더리움 메인넷이 혼잡해질 수 있습니다. |
+
+## 플라즈마 대 레이어 2 확장 프로토콜 {#plasma-vs-layer-2}
+
+플라즈마는 한때 이더리움에 유용한 확장 솔루션으로 여겨졌지만, 그 이후 [레이어 2(L2) 확장 프로토콜](/layer-2/)을 위해 채택되지 않았습니다. L2 확장 솔루션은 플라즈마의 여러 문제를 해결합니다.
+
+### 효율성 {#efficiency}
+
+[영지식 롤업](/developers/docs/scaling/zk-rollups)은 오프체인에서 처리된 각 트랜잭션 배치의 유효성에 대한 암호화 증명을 생성합니다. 이는 사용자(및 운영자)가 유효하지 않은 상태 전환을 진행하는 것을 방지하여 챌린지 기간과 탈출 게임의 필요성을 없애줍니다. 이는 또한 사용자가 자금을 보호하기 위해 주기적으로 체인을 감시할 필요가 없다는 것을 의미합니다.
+
+### 스마트 계약 지원 {#support-for-smart-contracts}
+
+플라즈마 프레임워크의 또 다른 문제는 [이더리움 스마트 계약의 실행을 지원할 수 없다는 것](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4)이었습니다. 결과적으로, 대부분의 플라즈마 구현은 주로 간단한 결제나 ERC-20 토큰 교환을 위해 구축되었습니다.
+
+반대로, 낙관적 롤업은 [이더리움 가상 머신](/developers/docs/evm/)과 호환되며 이더리움 네이티브 [스마트 계약](/developers/docs/smart-contracts/)을 실행할 수 있어 [탈중앙화 애플리케이션](/developers/docs/dapps/) 확장을 위한 유용하고 _안전한_ 솔루션이 됩니다. 마찬가지로, ZK-롤업이 임의의 로직을 처리하고 스마트 계약을 실행할 수 있도록 하는 [EVM의 영지식 구현(zkEVM)을 생성](https://ethresear.ch/t/a-zk-evm-specification/11549)하려는 계획이 진행 중입니다.
+
+### 데이터 비가용성 {#data-unavailability}
+
+앞서 설명했듯이, 플라즈마는 데이터 가용성 문제를 겪고 있습니다. 악의적인 운영자가 플라즈마 체인에서 유효하지 않은 전환을 진행하면, 운영자가 사기 증명을 생성하는 데 필요한 데이터를 보류할 수 있으므로 사용자는 이에 이의를 제기할 수 없습니다. 롤업은 운영자가 이더리움에 트랜잭션 데이터를 게시하도록 강제하여 누구나 체인의 상태를 검증하고 필요한 경우 사기 증명을 생성할 수 있도록 함으로써 이 문제를 해결합니다.
+
+### 대량 탈출 문제 {#mass-exit-problem}
+
+ZK-롤업과 낙관적 롤업은 모두 다양한 방식으로 플라즈마의 대량 탈출 문제를 해결합니다. 예를 들어, ZK-롤업은 어떤 시나리오에서도 운영자가 사용자 자금을 훔칠 수 없도록 보장하는 암호화 메커니즘에 의존합니다.
+
+마찬가지로, 낙관적 롤업은 출금에 지연 기간을 부과하여, 그 동안 누구나 챌린지를 시작하고 악의적인 출금 요청을 방지할 수 있습니다. 이것이 플라즈마와 유사하지만, 차이점은 검증자가 사기 증명을 생성하는 데 필요한 데이터에 접근할 수 있다는 것입니다. 따라서 롤업 사용자는 이더리움 메인넷으로의 광란적인 "먼저 탈출하기" 이주에 참여할 필요가 없습니다.
+
+## 플라즈마는 사이드체인 및 샤딩과 어떻게 다른가요? {#plasma-sidechains-sharding}
+
+플라즈마, 사이드체인, 샤딩은 모두 어떤 방식으로든 이더리움 메인넷에 연결되기 때문에 상당히 유사합니다. 그러나 이러한 연결의 수준과 강도는 다양하며, 이는 각 확장 솔루션의 보안 속성에 영향을 미칩니다.
+
+### 플라즈마 대 사이드체인 {#plasma-vs-sidechains}
+
+[사이드체인](/developers/docs/scaling/sidechains/)은 양방향 브리지를 통해 이더리움 메인넷에 연결된 독립적으로 운영되는 블록체인입니다. [브리지](/bridges/)는 사용자가 두 블록체인 간에 토큰을 교환하여 사이드체인에서 거래할 수 있도록 하여 이더리움 메인넷의 혼잡을 줄이고 확장성을 향상시킵니다.
+사이드체인은 별도의 합의 메커니즘을 사용하며 일반적으로 이더리움 메인넷보다 훨씬 작습니다. 결과적으로, 이러한 체인으로 자산을 브리징하는 것은 더 큰 위험을 수반합니다. 사이드체인 모델에서는 이더리움 메인넷에서 상속된 보안 보장이 없기 때문에 사용자는 사이드체인 공격 시 자금 손실 위험을 감수해야 합니다.
+
+반대로, 플라즈마 체인은 메인넷으로부터 보안성을 얻습니다. 이는 사이드체인보다 측정 가능할 정도로 더 안전하게 만듭니다. 사이드체인과 플라즈마 체인 모두 다른 합의 프로토콜을 가질 수 있지만, 차이점은 플라즈마 체인이 각 블록에 대한 머클 루트를 이더리움 메인넷에 게시한다는 것입니다. 블록 루트는 플라즈마 체인에서 발생하는 트랜잭션에 대한 정보를 검증하는 데 사용할 수 있는 작은 정보 조각입니다. 플라즈마 체인에서 공격이 발생하면 사용자는 적절한 증명을 사용하여 메인넷으로 자금을 안전하게 인출할 수 있습니다.
+
+### 플라즈마 대 샤딩 {#plasma-vs-sharding}
+
+플라즈마 체인과 샤드 체인 모두 주기적으로 암호화 증명을 이더리움 메인넷에 게시합니다. 그러나 둘 다 다른 보안 속성을 가지고 있습니다.
+
+샤드 체인은 각 데이터 샤드에 대한 자세한 정보가 포함된 "콜레이션 헤더"를 메인넷에 커밋합니다. 메인넷의 노드는 데이터 샤드의 유효성을 검증하고 강제하여 유효하지 않은 샤드 전환 가능성을 줄이고 악의적인 활동으로부터 네트워크를 보호합니다.
+
+플라즈마는 메인넷이 자식 체인의 상태에 대한 최소한의 정보만 받기 때문에 다릅니다. 이는 메인넷이 자식 체인에서 수행된 트랜잭션을 효과적으로 검증할 수 없어 보안성이 떨어진다는 것을 의미합니다.
+
+**참고** 이더리움 블록체인 샤딩은 더 이상 로드맵에 없습니다. 이는 롤업을 통한 확장과 [댕크샤딩](/roadmap/danksharding)으로 대체되었습니다.
+
+### 플라즈마 사용하기 {#use-plasma}
+
+여러 프로젝트에서 여러분의 탈중앙화앱에 통합할 수 있는 플라즈마 구현을 제공합니다:
+
+- [Polygon](https://polygon.technology/) (이전 Matic Network)
+
+## 더 읽어보기 {#further-reading}
+
+- [플라즈마 알아보기](https://www.learnplasma.org/en/)
+- ["공유 보안"의 의미와 그것이 왜 그렇게 중요한지에 대한 간단한 리마인더](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/)
+- [사이드체인 대 플라즈마 대 샤딩](https://vitalik.eth.limo/general/2019/06/12/plasma_vs_sharding.html)
+- [플라즈마 이해하기, 1부: 기본](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics)
+- [플라즈마의 삶과 죽음](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#)
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/scaling/sidechains/index.md b/public/content/translations/ko/developers/docs/scaling/sidechains/index.md
new file mode 100644
index 00000000000..51eb6acfc49
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/scaling/sidechains/index.md
@@ -0,0 +1,73 @@
+---
+title: "사이드체인"
+description: "이더리움 커뮤니티에서 사용되는 확장 솔루션인 사이드체인에 대한 소개"
+lang: ko
+sidebarDepth: 3
+---
+
+사이드체인은 이더리움과는 별도로 실행되는 블록체인이며 양방향 브리지를 통해 이더리움 메인넷과 연결되어 있습니다. 사이드체인에는 트랜잭션을 신속하게 처리할 수 있도록 설계된 별도의 블록 매개변수나 [합의 알고리즘](/developers/docs/consensus-mechanisms/)이 있기도 합니다. 그러나 사이드체인은 이더리움의 보안 속성을 상속하지 않으므로 사용 시 절충이 필요합니다. [레이어 2 확장 솔루션](/layer-2/)과 달리 사이드체인은 상태 변경 및 트랜잭션 데이터를 이더리움 메인넷에 다시 게시하지 않습니다.
+
+사이드체인은 또한 높은 처리량을 달성하기 위해 어느 정도의 탈중앙화나 보안을 희생합니다([확장성 트릴레마](https://vitalik.eth.limo/general/2021/05/23/scaling.html)). 그러나 이더리움은 탈중앙화와 보안을 저해하지 않으면서 확장하는 데 전념하고 있습니다.
+
+## 사이드체인은 어떻게 작동하나요? {#how-do-sidechains-work}
+
+사이드체인은 서로 다른 역사, 개발 로드맵 및 설계 고려사항을 가진 독립적인 블록체인입니다. 사이드체인은 이더리움과 표면적으로 몇 가지 유사점을 공유할 수 있지만, 몇 가지 독특한 특징을 가지고 있습니다.
+
+### 합의 알고리즘 {#consensus-algorithms}
+
+사이드체인을 고유하게(즉, 이더리움과 다르게) 만드는 특징 중 하나는 사용되는 합의 알고리즘입니다. 사이드체인은 합의를 위해 이더리움에 의존하지 않으며 필요에 맞는 대체 합의 프로토콜을 선택할 수 있습니다. 사이드체인에서 사용되는 합의 알고리즘의 몇 가지 예는 다음과 같습니다.
+
+- [권위 증명](/developers/docs/consensus-mechanisms/poa/)
+- [위임 지분 증명(Delegated proof-of-stake)](https://en.bitcoin.it/wiki/Delegated_proof_of_stake)
+- [비잔틴 장애 허용(Byzantine fault tolerance)](https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained).
+
+이더리움과 마찬가지로 사이드체인에는 트랜잭션을 확인 및 처리하고, 블록을 생성하며, 블록체인 상태를 저장하는 검증 노드가 있습니다. 검증자는 또한 네트워크 전반에 걸쳐 합의를 유지하고 악의적인 공격으로부터 네트워크를 보호할 책임이 있습니다.
+
+#### 블록 매개변수 {#block-parameters}
+
+이더리움은 [블록 시간](/developers/docs/blocks/#block-time)(즉, 새 블록을 생성하는 데 걸리는 시간) 및 [블록 크기](/developers/docs/blocks/#block-size)(즉, 가스로 표시되는 블록당 포함된 데이터의 양)에 제한을 둡니다. 반대로, 사이드체인은 높은 처리량, 빠른 트랜잭션, 낮은 수수료를 달성하기 위해 더 빠른 블록 시간 및 더 높은 가스 한도와 같은 다른 매개변수를 채택하는 경우가 많습니다.
+
+이것은 몇 가지 이점이 있지만 네트워크 탈중앙화 및 보안에 중대한 영향을 미칩니다. 빠른 블록 시간 및 큰 블록 크기와 같은 블록 매개변수는 전체 노드 실행의 난이도를 높여 소수의 "슈퍼노드"가 체인 보안을 책임지게 만듭니다. 이러한 시나리오에서는 검증자 담합 또는 악의적인 체인 탈취 가능성이 증가합니다.
+
+블록체인이 탈중앙화를 해치지 않으면서 확장하려면, 반드시 전문 하드웨어를 가진 당사자가 아니더라도 모든 사람이 노드를 실행할 수 있어야 합니다. 이것이 바로 모든 사람이 이더리움 네트워크에서 [전체 노드를 실행할 수 있도록](/developers/docs/nodes-and-clients/#why-should-i-run-an-ethereum-node) 하기 위한 노력이 진행 중인 이유입니다.
+
+### EVM 호환성 {#evm-compatibility}
+
+일부 사이드체인은 EVM과 호환되며 [이더리움 가상 머신(EVM)](/developers/docs/evm/)용으로 개발된 계약을 실행할 수 있습니다. EVM 호환 사이드체인은 [솔리디티(Solidity)로 작성된](/developers/docs/smart-contracts/languages/) 스마트 계약 및 기타 EVM 스마트 계약 언어를 지원합니다. 즉, 이더리움 메인넷용으로 작성된 스마트 계약은 EVM 호환 사이드체인에서도 작동합니다.
+
+즉, [디앱](/developers/docs/dapps/)을 사이드체인에서 사용하려면 해당 사이드체인에 [스마트 계약](/developers/docs/smart-contracts/)을 배포하기만 하면 됩니다. 솔리디티 언어로 계약을 작성하고, 사이드체인 RPC를 통해 체인과 상호작용하는 것은 이더리움 메인넷과 별로 다르지 않습니다.
+
+사이드체인은 EVM과 호환되기 때문에 이더리움 네이티브 디앱을 위한 유용한 [확장 솔루션](/developers/docs/scaling/)으로 간주됩니다. 사이드체인에 배포한 디앱 덕분에 사용자들은 저렴한 가스 비용과 보다 빠른 트랜잭션을 경험할 수 있으며, 메인넷이 혼잡한 경우 효과는 더 두드러지게 나타납니다.
+
+그러나 이전에 설명했듯이 사이드체인을 사용하는 데는 상당한 절충이 필요합니다. 각 사이드체인은 보안을 유지할 책임이 있으며 이더리움의 보안 속성을 따르지 않습니다. 이는 사용자에게 영향을 미치거나 자금을 위험에 빠뜨릴 수 있는 악의적인 행위의 가능성을 높입니다.
+
+### 자산 이동 {#asset-movement}
+
+별도의 블록체인이 이더리움 메인넷의 사이드체인이 되려면 이더리움 메인넷과의 자산 전송을 용이하게 하는 기능이 필요합니다. 이더리움과의 이러한 상호 운용성은 블록체인 브리지를 사용하여 달성됩니다. [브리지](/bridges/)는 이더리움 메인넷과 사이드체인에 배포된 스마트 계약을 사용하여 둘 사이의 자금 브리징을 제어합니다.
+
+브리지는 사용자가 이더리움과 사이드체인 간에 자금을 이동하는 데 도움이 되지만, 자산이 실제로 두 체인 간에 물리적으로 이동하는 것은 아닙니다. 대신, 일반적으로 민팅(minting) 및 소각(burning)과 관련된 메커니즘이 체인 간 가치 전송에 사용됩니다. [브리지 작동 방식](/developers/docs/bridges/#how-do-bridges-work)에 대해 자세히 알아보세요.
+
+## 사이드체인의 장단점 {#pros-and-cons-of-sidechains}
+
+| 장점 | 단점 |
+| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
+| 사이드체인을 뒷받침하는 기술은 잘 확립되어 있으며 광범위한 연구와 설계 개선의 이점을 누리고 있습니다. | 사이드체인은 확장성을 위해 어느 정도의 탈중앙화와 무신뢰성을 절충합니다. |
+| 사이드체인은 일반적인 계산을 지원하고 EVM 호환성을 제공합니다(이더리움 네이티브 디앱을 실행할 수 있음). | 사이드체인은 별도의 합의 메커니즘을 사용하며 이더리움의 보안 보장의 이점을 얻지 못합니다. |
+| 사이드체인은 다양한 합의 모델을 사용하여 트랜잭션을 효율적으로 처리하고 사용자의 거래 수수료를 낮춥니다. | 사이드체인은 더 높은 신뢰 가정을 요구합니다(예: 악의적인 사이드체인 검증자 정족수가 사기를 저지를 수 있음). |
+| EVM 호환 사이드체인을 통해 디앱은 생태계를 확장할 수 있습니다. | |
+
+### 사이드체인 사용하기 {#use-sidechains}
+
+여러 프로젝트에서 디앱에 통합할 수 있는 사이드체인 구현을 제공합니다.
+
+- [Polygon PoS](https://polygon.technology/solutions/polygon-pos)
+- [Skale](https://skale.network/)
+- [Gnosis Chain(이전 xDai)](https://www.gnosischain.com/)
+- [Loom Network](https://loomx.io/)
+- [Metis Andromeda](https://www.metis.io/)
+
+## 더 읽어보기 {#further-reading}
+
+- [사이드체인을 통한 이더리움 디앱 확장](https://medium.com/loom-network/dappchains-scaling-ethereum-dapps-through-sidechains-f99e51fff447) _2018년 2월 8일 - Georgios Konstantopoulos_
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/scaling/state-channels/index.md b/public/content/translations/ko/developers/docs/scaling/state-channels/index.md
new file mode 100644
index 00000000000..da9e39db116
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/scaling/state-channels/index.md
@@ -0,0 +1,261 @@
+---
+title: "상태 채널"
+description: "현재 이더리움 커뮤니티에서 사용되는 확장 솔루션인 상태 채널 및 지불 채널에 대한 소개입니다."
+lang: ko
+sidebarDepth: 3
+---
+
+상태 채널을 통해 참여자들은 이더리움 메인넷과의 상호작용을 최소화하면서 오프체인에서 안전하게 거래할 수 있습니다. 채널 피어는 채널을 열고 닫기 위해 온체인 트랜잭션을 두 번만 제출하면서 임의의 수의 오프체인 트랜잭션을 수행할 수 있습니다. 이를 통해 매우 높은 트랜잭션 처리량을 달성하고 사용자 비용을 절감할 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[이더리움 확장](/developers/docs/scaling/) 및 [레이어 2](/layer-2/)에 대한 페이지를 읽고 이해해야 합니다.
+
+## 채널이란 무엇인가요? {#what-are-channels}
+
+이더리움과 같은 퍼블릭 블록체인은 분산된 아키텍처로 인해 확장성 문제에 직면합니다. 온체인 트랜잭션은 모든 노드에서 실행되어야 합니다. 노드는 네트워크의 탈중앙성을 유지하기 위해 평범한 하드웨어를 사용하여 블록의 트랜잭션 양을 처리할 수 있어야 하므로 트랜잭션 처리량에 제한이 있습니다. 블록체인 채널은 사용자가 최종 정산을 위해 메인 체인의 보안에 의존하면서 오프체인에서 상호작용할 수 있도록 함으로써 이 문제를 해결합니다.
+
+채널은 두 당사자가 서로 많은 트랜잭션을 수행한 다음 최종 결과만 블록체인에 게시할 수 있도록 하는 간단한 P2P 프로토콜입니다. 채널은 암호학을 사용하여 생성된 요약 데이터가 실제로 유효한 중간 트랜잭션 집합의 결과임을 증명합니다. ["다중서명"](/developers/docs/smart-contracts/#multisig) 스마트 계약은 트랜잭션이 올바른 당사자에 의해 서명되었는지 확인합니다.
+
+채널을 사용하면 관련 당사자가 상태 변경을 실행하고 검증하여 이더리움의 실행 레이어에서 계산을 최소화할 수 있습니다. 이는 이더리움의 혼잡을 줄이고 사용자의 트랜잭션 처리 속도를 높입니다.
+
+각 채널은 이더리움에서 실행되는 [다중서명 스마트 계약](/developers/docs/smart-contracts/#multisig)에 의해 관리됩니다. 채널을 열려면 참여자가 온체인에 채널 계약을 배포하고 자금을 예치해야 합니다. 양 당사자는 채널의 상태를 초기화하기 위해 상태 업데이트에 공동으로 서명한 후, 오프체인에서 빠르고 자유롭게 거래할 수 있습니다.
+
+채널을 닫으려면 참여자들은 마지막으로 합의된 채널 상태를 온체인에 제출해야 합니다. 이후 스마트 계약은 채널의 최종 상태에서 각 참여자의 잔액에 따라 잠긴 자금을 분배합니다.
+
+P2P 채널은 사전 정의된 일부 참여자가 눈에 띄는 오버헤드 없이 높은 빈도로 거래하고자 하는 상황에 특히 유용합니다. 블록체인 채널은 지불 채널과 상태 채널의 두 가지 범주로 나뉩니다.
+
+## 지불 채널 {#payment-channels}
+
+지불 채널은 두 명의 사용자가 공동으로 유지 관리하는 "양방향 원장"으로 가장 잘 설명할 수 있습니다. 원장의 초기 잔액은 채널 개설 단계에서 온체인 계약에 예치된 예금의 합계입니다. 지불 채널 전송은 초기에 한 번 온체인에서 생성하고 최종적으로 채널을 닫는 경우를 제외하고 실제 블록체인 자체의 개입 없이 즉시 수행될 수 있습니다.
+
+원장 잔액(즉, 지불 채널의 상태)에 대한 업데이트는 채널의 모든 당사자의 승인이 필요합니다. 모든 채널 참여자가 서명한 채널 업데이트는 이더리움의 트랜잭션과 마찬가지로 확정된 것으로 간주됩니다.
+
+지불 채널은 간단한 사용자 상호 작용(예: ETH 전송, 아토믹 스왑, 소액 결제)의 비용이 많이 드는 온체인 활동을 최소화하기 위해 설계된 최초의 확장 솔루션 중 하나였습니다. 채널 참여자는 전송의 순 합계가 예치된 토큰을 초과하지 않는 한 서로 간에 무제한의 즉각적이고 수수료 없는 트랜잭션을 수행할 수 있습니다.
+
+## 상태 채널 {#state-channels}
+
+오프체인 지불을 지원하는 것 외에 지불 채널은 일반적인 상태 전환 로직을 처리하는 데 유용하다는 것이 입증되지 않았습니다. 상태 채널은 이 문제를 해결하고 채널을 범용 계산 확장에 유용하게 만들기 위해 만들어졌습니다.
+
+상태 채널은 여전히 지불 채널과 많은 공통점을 가지고 있습니다. 예를 들어, 사용자는 암호화 서명된 메시지(트랜잭션)를 교환하여 상호 작용하며, 다른 채널 참여자도 이에 서명해야 합니다. 제안된 상태 업데이트가 모든 참여자에 의해 서명되지 않으면 유효하지 않은 것으로 간주됩니다.
+
+그러나 채널은 사용자의 잔액을 보유하는 것 외에도 계약 스토리지의 현재 상태(즉, 계약 변수 값)도 추적합니다.
+
+이를 통해 두 사용자 간에 오프체인으로 스마트 계약을 실행할 수 있습니다. 이 시나리오에서 스마트 계약의 내부 상태에 대한 업데이트는 채널을 만든 피어의 승인만 필요합니다.
+
+이는 앞에서 설명한 확장성 문제를 해결하지만 보안에 영향을 미칩니다. 이더리움에서 상태 전환의 유효성은 네트워크의 합의 프로토콜에 의해 시행됩니다. 이로 인해 스마트 계약의 상태에 대한 잘못된 업데이트를 제안하거나 스마트 계약 실행을 변경하는 것이 불가능합니다.
+
+상태 채널은 동일한 보안 보장을 제공하지 않습니다. 어느 정도 상태 채널은 메인넷의 축소판입니다. 제한된 수의 참여자가 규칙을 시행하므로 악의적인 행동(예: 유효하지 않은 상태 업데이트 제안)의 가능성이 증가합니다. 상태 채널은 [사기 증명](/glossary/#fraud-proof)에 기반한 분쟁 중재 시스템에서 보안을 얻습니다.
+
+## 상태 채널의 작동 방식 {#how-state-channels-work}
+
+기본적으로 상태 채널에서의 활동은 사용자와 블록체인 시스템이 관련된 상호 작용의 세션입니다. 사용자는 대부분 오프체인에서 서로 통신하며, 채널을 열거나 닫거나 참여자 간의 잠재적인 분쟁을 해결하기 위해서만 기본 블록체인과 상호 작용합니다.
+
+다음 섹션에서는 상태 채널의 기본 워크플로를 간략하게 설명합니다.
+
+### 채널 열기 {#opening-the-channel}
+
+채널을 열려면 참여자가 메인넷의 스마트 계약에 자금을 예치해야 합니다. 예치금은 가상 탭 역할도 하므로 참여 행위자는 즉시 결제를 정산할 필요 없이 자유롭게 거래할 수 있습니다. 채널이 온체인에서 확정되어야만 당사자들이 서로 정산하고 탭에 남은 금액을 인출할 수 있습니다.
+
+이 예치금은 각 참여자의 정직한 행동을 보장하는 보증금 역할도 합니다. 예금자가 분쟁 해결 단계에서 악의적인 행위를 한 것으로 밝혀지면 계약은 예금자의 예금을 삭감합니다.
+
+채널 피어는 모두가 동의하는 초기 상태에 서명해야 합니다. 이는 상태 채널의 제네시스 역할을 하며, 이후 사용자는 거래를 시작할 수 있습니다.
+
+### 채널 사용하기 {#using-the-channel}
+
+채널의 상태를 초기화한 후 피어는 트랜잭션에 서명하고 승인을 위해 서로에게 전송하여 상호 작용합니다. 참여자는 이러한 트랜잭션으로 상태 업데이트를 시작하고 다른 사람의 상태 업데이트에 서명합니다. 각 트랜잭션은 다음으로 구성됩니다.
+
+- 논스(nonce)는 트랜잭션의 고유 ID 역할을 하며 재전송 공격을 방지합니다. 또한 상태 업데이트가 발생한 순서를 식별합니다(분쟁 해결에 중요).
+
+- 채널의 이전 상태
+
+- 채널의 새로운 상태
+
+- 상태 전환을 유발하는 트랜잭션 (예: 앨리스가 밥에게 5 ETH를 보냄)
+
+채널의 상태 업데이트는 일반적으로 사용자가 메인넷에서 상호 작용할 때와 같이 온체인에서 브로드캐스트되지 않으며, 이는 온체인 공간을 최소화하려는 상태 채널의 목표와 일치합니다. 참여자들이 상태 업데이트에 동의하는 한, 이는 이더리움 트랜잭션만큼 최종적입니다. 참여자는 분쟁이 발생할 경우에만 메인넷의 합의에 의존하면 됩니다.
+
+### 채널 닫기 {#closing-the-channel}
+
+상태 채널을 닫으려면 채널의 최종 합의된 상태를 온체인 스마트 계약에 제출해야 합니다. 상태 업데이트에서 참조되는 세부 정보에는 각 참가자의 이동 횟수와 승인된 트랜잭션 목록이 포함됩니다.
+
+상태 업데이트가 유효한지(즉, 모든 당사자가 서명했는지) 확인한 후 스마트 계약은 채널을 확정하고 채널의 결과에 따라 잠긴 자금을 분배합니다. 오프체인에서 이루어진 지불은 이더리움의 상태에 적용되며 각 참여자는 잠긴 자금의 남은 부분을 받습니다.
+
+위에 설명된 시나리오는 성공적인 경우에 발생하는 상황을 나타냅니다. 때로는 사용자가 합의에 도달하지 못하고 채널을 확정하지 못할 수도 있습니다(실패한 경우). 다음 중 어느 하나라도 해당될 수 있습니다.
+
+- 참여자가 오프라인 상태가 되어 상태 전환을 제안하지 못합니다
+
+- 참여자가 유효한 상태 업데이트에 공동 서명하기를 거부합니다
+
+- 참여자가 온체인 계약에 오래된 상태 업데이트를 제안하여 채널을 확정하려고 시도합니다.
+
+- 참여자가 다른 사람이 서명하도록 유효하지 않은 상태 전환을 제안합니다.
+
+채널의 참여 행위자 간에 합의가 깨지면, 마지막 옵션은 메인넷의 합의에 의존하여 채널의 최종 유효 상태를 강제하는 것입니다. 이 경우 상태 채널을 닫으려면 온체인에서 분쟁을 해결해야 합니다.
+
+### 분쟁 해결 {#settling-disputes}
+
+일반적으로 채널의 당사자들은 사전에 채널을 닫는 데 동의하고 마지막 상태 전환에 공동 서명하여 스마트 계약에 제출합니다. 업데이트가 온체인에서 승인되면 오프체인 스마트 계약의 실행이 종료되고 참여자는 자신의 돈을 가지고 채널을 나옵니다.
+
+그러나 한쪽 당사자는 상대방의 승인을 기다리지 않고 스마트 계약의 실행을 종료하고 채널을 확정하기 위해 온체인 요청을 제출할 수 있습니다. 앞서 설명한 합의 파기 상황 중 하나라도 발생하면 어느 쪽이든 온체인 계약을 트리거하여 채널을 닫고 자금을 분배할 수 있습니다. 이것은 무신뢰성을 제공하여 정직한 당사자가 다른 당사자의 행동에 관계없이 언제든지 예치금을 인출할 수 있도록 보장합니다.
+
+채널 종료를 처리하려면 사용자는 애플리케이션의 마지막 유효한 상태 업데이트를 온체인 계약에 제출해야 합니다. 이것이 확인되면(즉, 모든 당사자의 서명이 있는 경우) 자금은 그들에게 유리하게 재분배됩니다.
+
+하지만 단일 사용자 종료 요청을 실행하는 데는 지연이 있습니다. 채널을 종료하라는 요청이 만장일치로 승인되면 온체인 종료 트랜잭션이 즉시 실행됩니다.
+
+사기 행위의 가능성으로 인해 단일 사용자 종료 시 지연이 발생합니다. 예를 들어, 채널 참여자는 오래된 상태 업데이트를 온체인에 제출하여 이더리움에서 채널을 확정하려고 시도할 수 있습니다.
+
+이에 대한 대응책으로, 상태 채널은 정직한 사용자가 채널의 최신 유효 상태를 온체인에 제출하여 유효하지 않은 상태 업데이트에 이의를 제기할 수 있도록 합니다. 상태 채널은 더 새롭고 합의된 상태 업데이트가 더 오래된 상태 업데이트를 무효화하도록 설계되었습니다.
+
+피어가 온체인 분쟁 해결 시스템을 트리거하면 상대방은 시간 제한(챌린지 기간이라고 함) 내에 응답해야 합니다. 이를 통해 사용자는 특히 상대방이 오래된 업데이트를 적용하는 경우 종료 트랜잭션에 이의를 제기할 수 있습니다.
+
+어떤 경우이든 채널 사용자는 항상 강력한 최종성 보장을 받습니다. 즉, 자신이 소유한 상태 전환이 모든 구성원에 의해 서명되었고 가장 최근의 업데이트인 경우 일반적인 온체인 트랜잭션과 동일한 최종성을 가집니다. 그들은 여전히 온체인에서 상대방에게 이의를 제기해야 하지만, 유일한 가능한 결과는 그들이 보유한 마지막 유효한 상태를 확정하는 것입니다.
+
+### 상태 채널은 이더리움과 어떻게 상호 작용하나요? {#how-do-state-channels-interact-with-ethereum}
+
+상태 채널은 오프체인 프로토콜로 존재하지만 온체인 구성 요소를 가지고 있습니다. 바로 채널을 열 때 이더리움에 배포되는 스마트 계약입니다. 이 계약은 채널에 예치된 자산을 제어하고, 상태 업데이트를 검증하며, 참여자 간의 분쟁을 중재합니다.
+
+상태 채널은 [레이어 2](/layer-2/) 확장 솔루션과 달리 트랜잭션 데이터나 상태 약정을 메인넷에 게시하지 않습니다. 그러나 [사이드체인](/developers/docs/scaling/sidechains/)보다 메인넷에 더 많이 연결되어 있어 어느 정도 더 안전합니다.
+
+상태 채널은 다음을 위해 메인 이더리움 프로토콜에 의존합니다.
+
+#### 1. 활성 {#liveness}
+
+채널을 열 때 배포된 온체인 계약은 채널의 기능을 담당합니다. 계약이 이더리움에서 실행 중이면 채널은 항상 사용 가능합니다. 반대로, 사이드체인은 메인넷이 작동하더라도 항상 실패할 수 있어 사용자 자금을 위험에 빠뜨릴 수 있습니다.
+
+#### 2. 보안 {#security}
+
+어느 정도 상태 채널은 보안을 제공하고 악의적인 피어로부터 사용자를 보호하기 위해 이더리움에 의존합니다. 이후 섹션에서 논의했듯이, 채널은 사용자가 유효하지 않거나 오래된 업데이트로 채널을 확정하려는 시도에 이의를 제기할 수 있도록 하는 사기 증명 메커니즘을 사용합니다.
+
+이 경우, 정직한 당사자는 채널의 최신 유효 상태를 사기 증명으로 온체인 계약에 제공하여 검증을 받습니다. 사기 증명을 통해 서로 신뢰하지 않는 당사자들이 자금을 위험에 빠뜨리지 않고 오프체인 트랜잭션을 수행할 수 있습니다.
+
+#### 3. 최종 승인 {#finality}
+
+채널 사용자가 공동으로 서명한 상태 업데이트는 온체인 트랜잭션과 동일하게 간주됩니다. 하지만, 모든 채널 내 활동은 채널이 이더리움에서 닫힐 때만 진정한 최종성을 달성합니다.
+
+낙관적인 경우, 양 당사자는 협력하여 최종 상태 업데이트에 서명하고 온체인에 제출하여 채널을 닫을 수 있으며, 그 후 채널의 최종 상태에 따라 자금이 분배됩니다. 비관적인 경우, 누군가 온체인에 잘못된 상태 업데이트를 게시하여 속이려고 할 때, 그들의 트랜잭션은 챌린지 기간이 경과할 때까지 확정되지 않습니다.
+
+## 가상 상태 채널 {#virtual-state-channels}
+
+상태 채널의 단순한 구현은 두 명의 사용자가 오프체인에서 애플리케이션을 실행하고자 할 때 새로운 계약을 배포하는 것입니다. 이는 실현 불가능할 뿐만 아니라 상태 채널의 비용 효율성을 떨어뜨립니다(온체인 트랜잭션 비용이 빠르게 증가할 수 있음).
+
+이 문제를 해결하기 위해 "가상 채널"이 만들어졌습니다. 열고 종료하기 위해 온체인 트랜잭션이 필요한 일반 채널과 달리, 가상 채널은 메인 체인과 상호 작용하지 않고도 열고, 실행하고, 확정할 수 있습니다. 이 방법을 사용하여 오프체인에서 분쟁을 해결하는 것도 가능합니다.
+
+이 시스템은 온체인에서 자금을 조달한 소위 "원장 채널"의 존재에 의존합니다. 두 당사자 간의 가상 채널은 기존 원장 채널 위에 구축될 수 있으며, 원장 채널의 소유자가 중개자 역할을 합니다.
+
+각 가상 채널의 사용자는 새로운 계약 인스턴스를 통해 상호 작용하며, 원장 채널은 여러 계약 인스턴스를 지원할 수 있습니다. 원장 채널의 상태에는 둘 이상의 계약 스토리지 상태도 포함되어 있어 여러 사용자 간에 오프체인에서 애플리케이션을 병렬로 실행할 수 있습니다.
+
+일반 채널과 마찬가지로 사용자는 상태 업데이트를 교환하여 상태 머신을 진행합니다. 분쟁이 발생하지 않는 한, 중개자는 채널을 열거나 종료할 때만 연락하면 됩니다.
+
+### 가상 지불 채널 {#virtual-payment-channels}
+
+가상 지불 채널은 가상 상태 채널과 동일한 아이디어로 작동합니다. 동일한 네트워크에 연결된 참여자는 온체인에서 새로운 채널을 열 필요 없이 메시지를 전달할 수 있습니다. 가상 지불 채널에서 가치 전송은 하나 이상의 중개자를 통해 라우팅되며, 의도된 수신자만 전송된 자금을 받을 수 있도록 보장됩니다.
+
+## 상태 채널의 애플리케이션 {#applications-of-state-channels}
+
+### 지불 {#payments}
+
+초기 블록체인 채널은 두 명의 참여자가 메인넷에서 높은 트랜잭션 수수료를 지불할 필요 없이 오프체인에서 신속하고 저렴한 수수료로 전송을 수행할 수 있도록 하는 간단한 프로토콜이었습니다. 오늘날에도 지불 채널은 이더와 토큰의 교환 및 예치를 위해 설계된 애플리케이션에 여전히 유용합니다.
+
+채널 기반 지불에는 다음과 같은 장점이 있습니다.
+
+1. **처리량**: 채널당 오프체인 트랜잭션의 양은 이더리움의 처리량과 관련이 없으며, 이더리움의 처리량은 블록 크기 및 블록 시간과 같은 다양한 요인의 영향을 받습니다. 오프체인에서 트랜잭션을 실행함으로써 블록체인 채널은 더 높은 처리량을 달성할 수 있습니다.
+
+2. **개인 정보 보호**: 채널은 오프체인에 존재하기 때문에 참여자 간의 상호 작용 세부 정보는 이더리움의 공개 블록체인에 기록되지 않습니다. 채널 사용자는 채널에 자금을 지원하고 닫거나 분쟁을 해결할 때만 온체인에서 상호 작용하면 됩니다. 따라서 채널은 더 사적인 거래를 원하는 개인에게 유용합니다.
+
+3. **지연 시간**: 채널 참여자 간에 수행되는 오프체인 트랜잭션은 양 당사자가 협력하면 즉시 정산되어 지연을 줄일 수 있습니다. 반면, 메인넷에서 트랜잭션을 보내려면 노드가 트랜잭션을 처리하고, 트랜잭션이 포함된 새 블록을 생성하고, 합의에 도달할 때까지 기다려야 합니다. 사용자는 또한 트랜잭션을 확정된 것으로 간주하기 전에 더 많은 블록 확인을 기다려야 할 수도 있습니다.
+
+4. **비용**: 상태 채널은 특정 참여자 그룹이 장기간에 걸쳐 많은 상태 업데이트를 교환하는 상황에 특히 유용합니다. 발생하는 유일한 비용은 상태 채널 스마트 계약을 열고 닫는 것입니다. 채널을 열고 닫는 사이의 모든 상태 변경은 정산 비용이 그에 따라 분배되므로 마지막보다 저렴해집니다.
+
+[롤업](/developers/docs/scaling/#rollups)과 같은 레이어 2 솔루션에 상태 채널을 구현하면 지불에 더욱 매력적으로 만들 수 있습니다. 채널은 저렴한 지불을 제공하지만, 개설 단계에서 메인넷에 온체인 계약을 설정하는 비용은 특히 가스 수수료가 급등할 때 비싸질 수 있습니다. 이더리움 기반 롤업은 [더 낮은 트랜잭션 수수료](https://l2fees.info/)를 제공하며 설정 수수료를 낮춰 채널 참여자의 오버헤드를 줄일 수 있습니다.
+
+### 소액 결제 {#microtransactions}
+
+소액 결제는 기업이 손실을 입지 않고는 처리할 수 없는 소액 지불(예: 1달러 미만)입니다. 이러한 법인은 지불 서비스 제공업체에 비용을 지불해야 하는데, 고객 지불에 대한 마진이 너무 낮아 이익을 낼 수 없다면 이를 수행할 수 없습니다.
+
+지불 채널은 소액 결제와 관련된 오버헤드를 줄여 이 문제를 해결합니다. 예를 들어, 인터넷 서비스 제공업체(ISP)는 고객과 지불 채널을 열어 서비스를 사용할 때마다 소액 결제를 스트리밍할 수 있습니다.
+
+채널을 열고 닫는 비용 외에 참여자는 소액 결제에 대한 추가 비용(가스 수수료 없음)을 부담하지 않습니다. 이는 고객이 서비스에 대해 지불하는 금액에 대해 더 많은 유연성을 갖게 되고 기업은 수익성 있는 소액 결제를 놓치지 않으므로 상호 이익이 되는 상황입니다.
+
+### 탈중앙화 애플리케이션 {#decentralized-applications}
+
+지불 채널과 마찬가지로 상태 채널은 상태 머신의 최종 상태에 따라 조건부 지불을 할 수 있습니다. 상태 채널은 임의의 상태 전환 로직도 지원할 수 있어 오프체인에서 일반 앱을 실행하는 데 유용합니다.
+
+상태 채널은 온체인 계약에 예치된 자금을 관리하기 쉽기 때문에 간단한 턴제 애플리케이션으로 제한되는 경우가 많습니다. 또한, 제한된 수의 당사자가 오프체인 애플리케이션의 상태를 간헐적으로 업데이트하므로 부정직한 행동을 처벌하는 것이 비교적 간단합니다.
+
+상태 채널 애플리케이션의 효율성은 디자인에 따라 달라집니다. 예를 들어, 개발자는 앱 채널 계약을 한 번 온체인에 배포하고 다른 플레이어가 온체인에 가지 않고도 앱을 재사용할 수 있도록 할 수 있습니다. 이 경우, 초기 앱 채널은 여러 가상 채널을 지원하는 원장 채널 역할을 하며, 각 가상 채널은 오프체인에서 앱의 스마트 계약의 새로운 인스턴스를 실행합니다.
+
+상태 채널 애플리케이션의 잠재적인 사용 사례는 게임 결과에 따라 자금이 분배되는 간단한 2인용 게임입니다. 여기서의 이점은 플레이어가 서로를 신뢰할 필요가 없고(무신뢰성), 플레이어가 아닌 온체인 계약이 자금 배분과 분쟁 해결을 제어한다는 것입니다(탈중앙화).
+
+상태 채널 앱의 다른 가능한 사용 사례로는 ENS 이름 소유권, NFT 원장 등이 있습니다.
+
+### 아토믹 전송 {#atomic-transfers}
+
+초기 지불 채널은 두 당사자 간의 전송으로 제한되어 사용성이 제한되었습니다. 그러나 가상 채널의 도입으로 개인은 온체인에서 새로운 채널을 열 필요 없이 중개자(즉, 여러 P2P 채널)를 통해 전송을 라우팅할 수 있게 되었습니다.
+
+"다중 홉 전송"이라고 흔히 설명되는 라우팅된 지불은 원자적입니다(즉, 트랜잭션의 모든 부분이 성공하거나 전체가 실패합니다). 아토믹 전송은 [해시 타임락 계약(HTLC)](https://en.bitcoin.it/wiki/Hash_Time_Locked_Contracts)을 사용하여 특정 조건이 충족되는 경우에만 지불이 해제되도록 하여 거래 상대방 위험을 줄입니다.
+
+## 상태 채널 사용의 단점 {#drawbacks-of-state-channels}
+
+### 활성 가정 {#liveness-assumptions}
+
+효율성을 보장하기 위해 상태 채널은 채널 참여자가 분쟁에 대응할 수 있는 능력에 시간 제한을 둡니다. 이 규칙은 피어가 항상 온라인 상태로 채널 활동을 모니터링하고 필요할 때 챌린지에 이의를 제기할 것이라고 가정합니다.
+
+실제로 사용자는 통제할 수 없는 이유(예: 열악한 인터넷 연결, 기계적 고장 등)로 오프라인 상태가 될 수 있습니다. 정직한 사용자가 오프라인 상태가 되면 악의적인 피어는 중재자 계약에 오래된 중간 상태를 제시하고 예치된 자금을 훔쳐 상황을 악용할 수 있습니다.
+
+일부 채널은 "감시탑"을 사용합니다. 이는 다른 사람을 대신하여 온체인 분쟁 이벤트를 감시하고 관련 당사자에게 알리는 것과 같은 필요한 조치를 취하는 주체입니다. 하지만 이는 상태 채널 사용 비용을 증가시킬 수 있습니다.
+
+### 데이터 비가용성 {#data-unavailability}
+
+앞서 설명했듯이, 유효하지 않은 분쟁에 이의를 제기하려면 상태 채널의 최신 유효 상태를 제시해야 합니다. 이것은 사용자가 채널의 최신 상태에 액세스할 수 있다는 가정에 기반한 또 다른 규칙입니다.
+
+채널 사용자가 오프체인 애플리케이션 상태의 사본을 저장할 것으로 기대하는 것은 합리적이지만, 이 데이터는 오류나 기계적 고장으로 인해 손실될 수 있습니다. 사용자가 데이터를 백업하지 않은 경우, 상대방이 소유하고 있는 오래된 상태 전환을 사용하여 유효하지 않은 종료 요청을 확정하지 않기를 바랄 뿐입니다.
+
+이더리움 사용자는 네트워크가 데이터 가용성에 대한 규칙을 시행하므로 이 문제를 처리할 필요가 없습니다. 트랜잭션 데이터는 모든 노드에 의해 저장 및 전파되며, 사용자가 필요할 때 다운로드할 수 있습니다.
+
+### 유동성 문제 {#liquidity-issues}
+
+블록체인 채널을 설정하려면 참여자는 채널의 수명 주기 동안 온체인 스마트 계약에 자금을 예치해야 합니다. 이는 채널 사용자의 유동성을 감소시키고, 메인넷에 자금을 예치할 여유가 있는 사람들로 채널을 제한합니다.
+
+하지만 오프체인 서비스 제공업체(OSP)가 운영하는 원장 채널은 사용자의 유동성 문제를 줄일 수 있습니다. 원장 채널에 연결된 두 피어는 가상 채널을 생성할 수 있으며, 원할 때 언제든지 오프체인에서 완전히 열고 확정할 수 있습니다.
+
+오프체인 서비스 제공업체는 여러 피어와 채널을 열어 지불 라우팅에 유용하게 만들 수도 있습니다. 물론 사용자는 OSP의 서비스에 대한 수수료를 지불해야 하며, 이는 일부에게는 바람직하지 않을 수 있습니다.
+
+### 그리핑 공격 {#griefing-attacks}
+
+그리핑 공격은 사기 증명 기반 시스템의 일반적인 특징입니다. 그리핑 공격은 공격자에게 직접적인 이익을 주지 않고 피해자에게 슬픔(즉, 해악)을 주기 때문에 붙여진 이름입니다.
+
+사기 증명은 정직한 당사자가 모든 분쟁(유효하지 않은 분쟁 포함)에 대응해야 하거나 자금을 잃을 위험이 있기 때문에 그리핑 공격에 취약합니다. 악의적인 참여자는 오래된 상태 전환을 온체인에 반복적으로 게시하여 정직한 당사자가 유효한 상태로 응답하도록 강요할 수 있습니다. 이러한 온체인 트랜잭션 비용은 빠르게 증가하여 정직한 당사자들이 그 과정에서 손해를 볼 수 있습니다.
+
+### 사전 정의된 참여자 집합 {#predefined-participant-sets}
+
+설계상 상태 채널을 구성하는 참여자 수는 수명 주기 동안 고정됩니다. 이는 참여자 집합을 업데이트하면 채널 자금 조달이나 분쟁 해결 시 채널 운영을 복잡하게 만들기 때문입니다. 참여자를 추가하거나 제거하려면 추가적인 온체인 활동이 필요하며, 이는 사용자에게 오버헤드를 증가시킵니다.
+
+이는 상태 채널을 더 쉽게 이해할 수 있게 하지만, 애플리케이션 개발자에게 채널 디자인의 유용성을 제한합니다. 이는 부분적으로 상태 채널이 롤업과 같은 다른 확장 솔루션을 위해 폐기된 이유를 설명합니다.
+
+### 병렬 트랜잭션 처리 {#parallel-transaction-processing}
+
+상태 채널의 참여자는 순서대로 상태 업데이트를 보내므로 "턴제 애플리케이션"(예: 2인용 체스 게임)에 가장 적합합니다. 이는 동시 상태 업데이트를 처리할 필요를 없애고 온체인 계약이 오래된 업데이트 게시자를 처벌하기 위해 해야 할 작업을 줄여줍니다. 그러나 이 디자인의 부작용은 트랜잭션이 서로 의존적이어서 지연 시간을 늘리고 전반적인 사용자 경험을 저하시킨다는 것입니다.
+
+일부 상태 채널은 오프체인 상태를 두 개의 단방향 "단순" 상태로 분리하는 "전이중" 설계를 사용하여 이 문제를 해결하며, 이를 통해 동시 상태 업데이트가 가능합니다. 이러한 설계는 오프체인 처리량을 향상시키고 트랜잭션 지연을 줄입니다.
+
+## 상태 채널 사용하기 {#use-state-channels}
+
+여러 프로젝트에서 탈중앙화앱에 통합할 수 있는 상태 채널 구현을 제공합니다:
+
+- [Connext](https://connext.network/)
+- [Kchannels](https://www.kchannels.io/)
+- [Perun](https://perun.network/)
+- [Raiden](https://raiden.network/)
+- [Statechannels.org](https://statechannels.org/)
+
+## 더 읽어보기 {#further-reading}
+
+**상태 채널**
+
+- [이더리움의 레이어 2 확장 솔루션 이해하기: 상태 채널, 플라즈마, 트루빗](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4) _– 조쉬 스타크, 2018년 2월 12일_
+- [상태 채널 - 설명](https://www.jeffcoleman.ca/state-channels/) _2015년 11월 6일 - 제프 콜먼_
+- [상태 채널의 기초](https://education.district0x.io/general-topics/understanding-ethereum/basics-state-channels/) _District0x_
+- [블록체인 상태 채널: 최신 기술](https://ieeexplore.ieee.org/document/9627997)
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/scaling/validium/index.md b/public/content/translations/ko/developers/docs/scaling/validium/index.md
new file mode 100644
index 00000000000..fdc4374b1e7
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/scaling/validium/index.md
@@ -0,0 +1,166 @@
+---
+title: Validium
+description: "현재 이더리움 커뮤니티에서 활용되는 확장 솔루션인 Validium에 대한 소개입니다."
+lang: ko
+sidebarDepth: 3
+---
+
+Validium은 [영지식 롤업](/developers/docs/scaling/zk-rollups/)과 같은 유효성 증명을 사용하여 트랜잭션의 무결성을 강화하지만 이더리움 메인넷에는 트랜잭션 데이터를 저장하지 않는 [확장 솔루션](/developers/docs/scaling/)입니다. 오프체인 데이터 가용성은 장단점이 있지만, 확장성을 크게 개선할 수 있습니다(Validium은 [초당 약 9,000개 이상의 트랜잭션을 처리](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)할 수 있습니다).
+
+## 필수 구성 요소 {#prerequisites}
+
+[이더리움 확장](/developers/docs/scaling/) 및 [레이어 2](/layer-2)에 대한 페이지를 읽고 이해해야 합니다.
+
+## Validium이란 무엇인가요? {#what-is-validium}
+
+Validium은 이더리움 메인넷 외부에서 트랜잭션을 처리하여 처리량을 개선하도록 설계된 오프체인 데이터 가용성 및 연산을 사용하는 확장 솔루션입니다. 영지식 롤업(ZK-롤업)과 마찬가지로 Validium은 이더리움에서 오프체인 트랜잭션을 검증하기 위해 [영지식 증명](/glossary/#zk-proof)을 게시합니다. 이를 통해 유효하지 않은 상태 전환을 방지하고 validium 체인의 보안 보장을 강화합니다.
+
+이러한 "유효성 증명"은 ZK-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) 또는 ZK-STARK(Zero-Knowledge Scalable Transparent ARgument of Knowledge)의 형태로 제공될 수 있습니다. [영지식 증명](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)에 대해 자세히 알아보기
+
+Validium 사용자의 자금은 이더리움의 스마트 계약에 의해 제어됩니다. Validium은 ZK-롤업과 마찬가지로 거의 즉각적인 출금을 제공합니다. 메인넷에서 출금 요청에 대한 유효성 증명이 검증되면 사용자는 [머클 증명](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)을 제공하여 자금을 출금할 수 있습니다. 머클 증명은 사용자의 출금 트랜잭션이 검증된 트랜잭션 배치에 포함되었음을 검증하여 온체인 계약이 출금을 처리할 수 있도록 합니다.
+
+하지만 validium 사용자는 자금이 동결되고 출금이 제한될 수 있습니다. 이 문제는 validium 체인의 데이터 가용성 관리자가 사용자에게 오프체인 상태 데이터를 제공하지 않는 경우 발생할 수 있습니다. 트랜잭션 데이터에 액세스할 수 없는 사용자는 자금 소유권을 증명하고 출금을 실행하는 데 필요한 머클 증명을 계산할 수 없습니다.
+
+이것이 데이터 가용성 스펙트럼에서의 위치라는 점에서 validium과 ZK-롤업의 주요 차이점입니다. 두 솔루션은 데이터 저장에 다르게 접근하며, 이는 보안과 무신뢰성에 영향을 미칩니다.
+
+## Validium은 이더리움과 어떻게 상호 작용하나요? {#how-do-validiums-interact-with-ethereum}
+
+Validium은 기존 이더리움 체인 위에 구축된 확장 프로토콜입니다. 오프체인에서 트랜잭션을 실행하지만, validium 체인은 다음을 포함하여 메인넷에 배포된 스마트 계약 모음에 의해 관리됩니다.
+
+1. **검증자 계약**: 검증자 계약은 validium 운영자가 상태를 업데이트할 때 제출한 증명의 유효성을 검증합니다. 여기에는 오프체인 트랜잭션의 정확성을 증명하는 유효성 증명과 오프체인 트랜잭션 데이터의 존재를 확인하는 데이터 가용성 증명이 포함됩니다.
+
+2. **메인 계약**: 메인 계약은 블록 생성자가 제출한 상태 커밋(머클 루트)을 저장하고 유효성 증명이 온체인에서 검증되면 validium의 상태를 업데이트합니다. 이 계약은 또한 validium 체인으로의 입금 및 출금을 처리합니다.
+
+Validium은 또한 다음을 위해 메인 이더리움 체인에 의존합니다.
+
+### 정산 {#settlement}
+
+Validium에서 실행된 트랜잭션은 상위 체인에서 유효성을 확인할 때까지 완전히 확인될 수 없습니다. Validium에서 수행되는 모든 비즈니스는 궁극적으로 메인넷에서 정산되어야 합니다. 이더리움 블록체인은 또한 validium 사용자에게 "정산 보장"을 제공합니다. 즉, 오프체인 트랜잭션은 온체인에 커밋되면 되돌리거나 변경할 수 없습니다.
+
+### 보안 {#security}
+
+정산 레이어 역할을 하는 이더리움은 validium의 상태 전환 유효성도 보장합니다. Validium 체인에서 실행되는 오프체인 트랜잭션은 기본 이더리움 레이어의 스마트 계약을 통해 검증됩니다.
+
+온체인 검증자 계약이 증명이 유효하지 않다고 판단하면 트랜잭션이 거부됩니다. 이는 운영자가 validium의 상태를 업데이트하기 전에 이더리움 프로토콜에 의해 시행되는 유효성 조건을 충족해야 함을 의미합니다.
+
+## Validium은 어떻게 작동하나요? {#how-does-validium-work}
+
+### 트랜잭션 {#transactions}
+
+사용자는 validium 체인에서 트랜잭션을 실행하는 노드인 운영자에게 트랜잭션을 제출합니다. 일부 validium은 단일 운영자를 사용하여 체인을 실행하거나 운영자 순환을 위해 [지분 증명(PoS)](/developers/docs/consensus-mechanisms/pos/) 메커니즘에 의존할 수 있습니다.
+
+운영자는 트랜잭션을 배치로 집계하여 증명을 위해 증명 회로로 보냅니다. 증명 회로는 트랜잭션 배치(및 기타 관련 데이터)를 입력으로 받아 작업이 올바르게 수행되었음을 확인하는 유효성 증명을 출력합니다.
+
+### 상태 커밋먼트 {#state-commitments}
+
+Validium의 상태는 머클 트리로 해시되며 루트는 이더리움의 메인 계약에 저장됩니다. 상태 루트라고도 하는 머클 루트는 validium의 현재 계정 및 잔액 상태에 대한 암호화 커밋 역할을 합니다.
+
+상태 업데이트를 수행하려면 운영자는 새로운 상태 루트(트랜잭션 실행 후)를 계산하여 온체인 계약에 제출해야 합니다. 유효성 증명이 확인되면 제안된 상태가 수락되고 validium은 새로운 상태 루트로 전환됩니다.
+
+### 입금 및 출금 {#deposits-and-withdrawals}
+
+사용자는 온체인 계약에 ETH(또는 모든 ERC 호환 토큰)를 예치하여 이더리움에서 validium으로 자금을 이동합니다. 계약은 입금 이벤트를 validium 오프체인으로 전달하며, 여기서 사용자의 주소에는 입금액과 동일한 금액이 입금됩니다. 운영자는 또한 이 입금 트랜잭션을 새로운 배치에 포함시킵니다.
+
+자금을 메인넷으로 다시 옮기려면 validium 사용자는 출금 트랜잭션을 시작하여 운영자에게 제출하고, 운영자는 출금 요청을 검증하고 배치에 포함합니다. validium 체인에 있는 사용자의 자산은 시스템을 나가기 전에 소멸됩니다. 배치와 관련된 유효성 증명이 검증되면 사용자는 메인 계약을 호출하여 초기 예치금의 잔액을 인출할 수 있습니다.
+
+검열 방지 메커니즘으로서 validium 프로토콜은 사용자가 운영자를 거치지 않고 validium 계약에서 직접 인출할 수 있도록 합니다. 이 경우 사용자는 계정이 상태 루트에 포함되어 있음을 보여주는 머클 증명을 검증자 계약에 제공해야 합니다. 증명이 수락되면 사용자는 메인 계약의 출금 기능을 호출하여 validium에서 자금을 인출할 수 있습니다.
+
+### 배치 제출 {#batch-submission}
+
+트랜잭션 배치를 실행한 후 운영자는 관련 유효성 증명을 검증자 계약에 제출하고 새로운 상태 루트를 메인 계약에 제안합니다. 증명이 유효하면 메인 계약은 validium의 상태를 업데이트하고 배치에 있는 트랜잭션의 결과를 최종화합니다.
+
+ZK-롤업과 달리 validium의 블록 생성자는 트랜잭션 배치에 대한 트랜잭션 데이터(블록 헤더만)를 게시할 필요가 없습니다. 이로 인해 validium은 블롭 데이터, `calldata` 또는 이 둘의 조합을 사용하여 메인 이더리움 체인에 상태 데이터를 게시하는 "하이브리드" 확장 프로토콜(예: [레이어 2](/layer-2/))과 달리 순수 오프체인 확장 프로토콜이 됩니다.
+
+### 데이터 가용성 {#data-availability}
+
+앞서 언급했듯이, validium은 운영자가 모든 트랜잭션 데이터를 이더리움 메인넷 외부(off)에 저장하는 오프체인 데이터 가용성 모델을 활용합니다. Validium의 낮은 온체인 데이터 사용량은 확장성을 향상시키고(처리량이 이더리움의 데이터 처리 용량에 의해 제한되지 않음) 사용자 수수료를 줄입니다(온체인에 데이터를 게시하는 비용이 더 낮음).
+
+그러나 오프체인 데이터 가용성은 머클 증명을 생성하거나 확인하는 데 필요한 데이터를 사용할 수 없는 문제를 야기합니다. 이는 운영자가 악의적으로 행동할 경우 사용자가 온체인 계약에서 자금을 인출하지 못할 수 있음을 의미합니다.
+
+다양한 validium 솔루션은 상태 데이터의 저장을 분산화하여 이 문제를 해결하려고 시도합니다. 여기에는 블록 생성자가 기본 데이터를 오프체인 데이터를 저장하고 요청 시 사용자에게 제공할 책임이 있는 "데이터 가용성 관리자"에게 보내도록 강제하는 것이 포함됩니다.
+
+Validium의 데이터 가용성 관리자는 모든 validium 배치에 서명함으로써 오프체인 트랜잭션 데이터의 가용성을 증명합니다. 이 서명은 온체인 검증자 계약이 상태 업데이트를 승인하기 전에 확인하는 "가용성 증명"의 한 형태를 구성합니다.
+
+Validium은 데이터 가용성 관리에 대한 접근 방식이 다릅니다. 일부는 신뢰할 수 있는 당사자에 의존하여 상태 데이터를 저장하는 반면, 다른 일부는 이 작업을 위해 무작위로 할당된 검증자를 사용합니다.
+
+#### 데이터 가용성 위원회(DAC) {#data-availability-committee}
+
+오프체인 데이터의 가용성을 보장하기 위해 일부 validium 솔루션은 데이터 가용성 위원회(DAC)로 알려진 신뢰할 수 있는 법인 그룹을 지정하여 상태 사본을 저장하고 데이터 가용성 증명을 제공합니다. DAC는 구성원 수가 적기 때문에 구현하기가 더 쉽고 조정이 덜 필요합니다.
+
+그러나 사용자는 필요할 때(예: 머클 증명 생성) 데이터를 사용할 수 있도록 DAC를 신뢰해야 합니다. 데이터 가용성 위원회의 구성원이 [악의적인 행위자에 의해 손상되어](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view) 오프체인 데이터를 보류할 가능성이 있습니다.
+
+[validium의 데이터 가용성 위원회에 대해 더 알아보기](https://medium.com/starkware/data-availability-e5564c416424).
+
+#### 보증된 데이터 가용성 {#bonded-data-availability}
+
+다른 validium은 오프라인 데이터를 저장하는 참여자가 역할을 맡기 전에 스마트 계약에 토큰을 스테이킹(즉, 락업)하도록 요구합니다. 이 스테이크는 데이터 가용성 관리자 간의 정직한 행동을 보장하는 “보증” 역할을 하며 신뢰 가정을 줄입니다. 이 참가자들이 데이터 가용성을 증명하지 못하면 보증금은 삭감됩니다.
+
+보증된 데이터 가용성 체계에서는 필요한 스테이크를 제공하면 누구나 오프체인 데이터를 보유하도록 할당받을 수 있습니다. 이를 통해 자격을 갖춘 데이터 가용성 관리자 풀을 확장하여 데이터 가용성 위원회(DAC)에 영향을 미치는 중앙 집중화를 줄입니다. 더 중요한 것은 이 접근 방식이 악의적인 활동을 방지하기 위해 암호 경제적 인센티브에 의존한다는 것입니다. 이는 validium에서 오프라인 데이터를 보호하기 위해 신뢰할 수 있는 당사자를 지정하는 것보다 훨씬 더 안전합니다.
+
+[validium의 보증된 데이터 가용성에 대해 더 알아보기](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf).
+
+## Volition과 Validium {#volitions-and-validium}
+
+Validium은 많은 이점을 제공하지만 장단점(특히 데이터 가용성)이 있습니다. 하지만 많은 확장 솔루션과 마찬가지로 validium은 특정 사용 사례에 적합하며 이것이 volition이 만들어진 이유입니다.
+
+Volition은 ZK-롤업과 validium 체인을 결합하고 사용자가 두 확장 솔루션 간에 전환할 수 있도록 합니다. Volition을 통해 사용자는 특정 트랜잭션에 대해 validium의 오프체인 데이터 가용성을 활용하면서 필요한 경우 온체인 데이터 가용성 솔루션(ZK-롤업)으로 전환할 수 있는 자유를 유지할 수 있습니다. 이것은 본질적으로 사용자에게 고유한 상황에 따라 장단점을 선택할 수 있는 자유를 줍니다.
+
+탈중앙화 거래소(DEX)는 고가 거래에 대해 validium의 확장 가능하고 사적인 인프라를 사용하는 것을 선호할 수 있습니다. 또한 ZK-롤업의 더 높은 보안 보장과 무신뢰성을 원하는 사용자를 위해 ZK-롤업을 사용할 수도 있습니다.
+
+## Validium과 EVM 호환성 {#validiums-and-evm-compatibility}
+
+ZK-롤업과 마찬가지로 validium은 대부분 토큰 교환 및 결제와 같은 간단한 애플리케이션에 적합합니다. 영지식 증명 회로에서 [EVM](/developers/docs/evm/) 명령을 증명하는 데 상당한 오버헤드가 발생하기 때문에 validium 간의 일반 연산 및 스마트 계약 실행을 지원하는 것은 구현하기 어렵습니다.
+
+일부 validium 프로젝트는 EVM 호환 언어(예: Solidity, Vyper)를 효율적인 증명에 최적화된 사용자 지정 바이트코드를 생성하도록 컴파일하여 이 문제를 해결하려고 시도합니다. 이 접근 방식의 단점은 새로운 영지식 증명 친화적인 VM이 중요한 EVM 연산 부호를 지원하지 않을 수 있고, 개발자는 최적의 경험을 위해 고급 언어로 직접 작성해야 한다는 것입니다. 이는 개발자가 완전히 새로운 개발 스택으로 탈중앙화앱을 구축하도록 강제하고 현재 이더리움 인프라와의 호환성을 깨뜨리는 등 더 많은 문제를 야기합니다.
+
+그러나 일부 팀은 ZK 증명 회로에 대해 기존 EVM 연산 부호를 최적화하려고 시도하고 있습니다. 이것은 프로그램 실행의 정확성을 검증하기 위한 증명을 생성하는 EVM 호환 VM인 영지식 이더리움 가상 머신(zkEVM)의 개발로 이어질 것입니다. zkEVM을 사용하면 validium 체인은 스마트 계약을 오프체인에서 실행하고 이더리움에서 오프체인 계산을 검증하기 위해 유효성 증명을 제출할 수 있습니다(다시 실행할 필요 없이).
+
+[zkEVM에 대해 더 알아보기](https://www.alchemy.com/overviews/zkevm).
+
+## Validium은 이더리움을 어떻게 확장하나요? {#scaling-ethereum-with-validiums}
+
+### 1. 오프체인 데이터 저장 {#offchain-data-storage}
+
+낙관적 롤업 및 ZK-롤업과 같은 레이어 2 확장 프로젝트는 L1에 일부 트랜잭션 데이터를 게시하여 보안을 위해 순수 오프체인 확장 프로토콜(예: [플라즈마](/developers/docs/scaling/plasma/))의 무한한 확장성을 절충합니다. 그러나 이는 롤업의 확장성 속성이 이더리움 메인넷의 데이터 대역폭에 의해 제한됨을 의미합니다([데이터 샤딩](/roadmap/danksharding/)은 이러한 이유로 이더리움의 데이터 저장 용량을 개선할 것을 제안합니다).
+
+Validium은 모든 트랜잭션 데이터를 오프체인에 유지하고 상태 업데이트를 메인 이더리움 체인으로 중계할 때 상태 커밋(및 유효성 증명)만 게시하여 확장성을 달성합니다. 그러나 유효성 증명의 존재는 플라즈마 및 [사이드체인](/developers/docs/scaling/sidechains/)을 포함한 다른 순수 오프체인 확장 솔루션보다 validium에 더 높은 보안 보장을 제공합니다. Validium 설계는 이더리움이 오프체인 트랜잭션을 검증하기 전에 처리해야 하는 데이터 양을 줄임으로써 메인넷의 처리량을 크게 확장합니다.
+
+### 2. 재귀적 증명 {#recursive-proofs}
+
+재귀적 증명은 다른 증명의 유효성을 검증하는 유효성 증명입니다. 이러한 "증명의 증명"은 이전의 모든 증명을 검증하는 하나의 최종 증명이 생성될 때까지 여러 증명을 재귀적으로 집계하여 생성됩니다. 재귀적 증명은 유효성 증명당 검증할 수 있는 트랜잭션 수를 늘려 블록체인 처리 속도를 확장합니다.
+
+일반적으로 validium 운영자가 검증을 위해 이더리움에 제출하는 각 유효성 증명은 단일 블록의 무결성을 검증합니다. 반면 단일 재귀적 증명은 여러 validium 블록의 유효성을 동시에 확인하는 데 사용할 수 있습니다. 이는 증명 회로가 여러 블록 증명을 하나의 최종 증명으로 재귀적으로 집계할 수 있기 때문에 가능합니다. 온체인 검증자 계약이 재귀적 증명을 수락하면 모든 기본 블록이 즉시 최종화됩니다.
+
+## Validium의 장단점 {#pros-and-cons-of-validium}
+
+| 장점 | 단점 |
+| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
+| 유효성 증명은 오프체인 트랜잭션의 무결성을 강화하고 운영자가 유효하지 않은 상태 업데이트를 마무리하는 것을 방지합니다. | 유효성 증명을 생성하려면 특수 하드웨어가 필요하며 이는 중앙 집중화 위험을 야기합니다. |
+| 사용자의 자본 효율성 증가(이더리움으로 자금을 다시 인출하는 데 지연 없음) | 일반 연산/스마트 계약에 대한 지원이 제한적이며, 개발에 특화된 언어가 필요합니다. |
+| 고가치 애플리케이션에서 사기 증명 기반 시스템이 직면하는 특정 경제적 공격에 취약하지 않습니다. | ZK 증명을 생성하는 데 높은 연산 능력이 필요하며, 처리량이 낮은 애플리케이션에는 비용 효율적이지 않습니다. |
+| 이더리움 메인넷에 calldata를 게시하지 않음으로써 사용자의 가스 수수료를 줄입니다. | 주관적인 완결 시간은 더 느리지만(ZK 증명을 생성하는 데 10\~30분 소요), 분쟁 시간 지연이 없기 때문에 완전한 완결까지는 더 빠릅니다. |
+| 거래 프라이버시와 확장성을 우선시하는 거래 또는 블록체인 게임과 같은 특정 사용 사례에 적합합니다. | 소유권의 머클 증명을 생성하려면 오프체인 데이터를 항상 사용할 수 있어야 하므로 사용자가 자금을 인출하지 못할 수 있습니다. |
+| 오프체인 데이터 가용성은 더 높은 수준의 처리량을 제공하고 확장성을 높입니다. | 보안 모델은 순전히 암호화 보안 메커니즘에 의존하는 ZK-롤업과 달리 신뢰 가정 및 암호 경제적 인센티브에 의존합니다. |
+
+### Validium/Volition 사용 {#use-validium-and-volitions}
+
+여러 프로젝트에서 탈중앙화앱에 통합할 수 있는 Validium 및 volition 구현을 제공합니다.
+
+**StarkWare StarkEx** - _StarkEx는 유효성 증명을 기반으로 하는 이더리움 레이어 2(L2) 확장 솔루션입니다. ZK-롤업 또는 Validium 데이터 가용성 모드에서 작동할 수 있습니다._
+
+- [문서](https://docs.starkware.co/starkex-v4/starkex-deep-dive/data-availability-modes#validium)
+- [웹사이트](https://starkware.co/starkex/)
+
+**Matter Labs zkPorter**- _zkPorter는 zkRollup과 샤딩의 아이디어를 결합한 하이브리드 접근 방식으로 데이터 가용성을 해결하는 레이어 2 확장 프로토콜입니다. 각각 자체 데이터 가용성 정책을 가진 임의의 수의 샤드를 지원할 수 있습니다._
+
+- [블로그](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)
+- [문서](https://docs.zksync.io/zksync-protocol/rollup/data-availability)
+- [웹사이트](https://zksync.io/)
+
+## 더 읽어보기 {#further-reading}
+
+- [Validium과 레이어 2 2x2 매트릭스 — 99호](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two)
+- [ZK-롤업 vs Validium](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)
+- [Volition과 새로운 데이터 가용성 스펙트럼](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb)
+- [롤업, Validium 및 Volition: 가장 인기 있는 이더리움 확장 솔루션에 대해 알아보기](https://www.defipulse.com/blog/rollups-validiums-and-volitions-learn-about-the-hottest-ethereum-scaling-solutions)
+- [이더리움 롤업에 대한 실용 가이드](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
diff --git a/public/content/translations/ko/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/ko/developers/docs/scaling/zk-rollups/index.md
new file mode 100644
index 00000000000..43ea628d3c3
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/scaling/zk-rollups/index.md
@@ -0,0 +1,257 @@
+---
+title: "영지식 롤업"
+description: "영지식 롤업 소개 - 이더리움 커뮤니티에서 사용하는 확장성 솔루션"
+lang: ko
+---
+
+영지식 롤업(ZK-롤업)은 연산과 상태 저장을 오프체인으로 이동시켜 이더리움 메인넷에서 처리량을 높이는 레이어 2 [확장 솔루션](/developers/docs/scaling/)입니다. 영지식 롤업은 수천 개의 트랜잭션을 일괄적으로 처리한 다음 최소한의 요약 데이터만 메인넷에 올린다. 요약 데이터는 이더리움 상태에 적용해야하는 변경 사항과 변경 사항이 옳다는 암호학적 증거를 정의합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[이더리움 확장](/developers/docs/scaling/) 및 [레이어 2](/layer-2)에 대한 페이지를 읽고 이해해야 합니다.
+
+## 영지식 롤업이란? {#what-are-zk-rollups}
+
+영지식 롤업(ZK-롤업)은 오프체인에서 실행되는 배치로 트랜잭션을 묶습니다(또는 '롤업'합니다). 오프체인 연산은 블록체인에 게시해야 하는 데이터의 양을 줄입니다. 영지식 롤업 운영자(operator)는 각 트랜잭션을 개별적으로 보내는 대신 모든 트랜잭션 묶음을 나타내는 데 필요한 변경사항의 요약을 제출합니다. 또한 변경 사항의 정확성을 증명하기 위해 [유효성 증명](/glossary/#validity-proof)을 생성합니다.
+
+영지식 롤업의 상태는 이더리움 네트워크에 배포된 스마트 컨트랙트에 의해 유지됩니다. 이 상태를 업데이트 하기 위해서는 영지식 롤업 노드가 검증을 위한 유효성 증명을 제출해야합니다. 언급했듯이, 유효성 증명은 롤업에 의해 제안된 상태 변화가 주어진 트랜잭션 묶음을 실제로 실행한 결과라는 암호화된 보증입니다. 이는 ZK-롤업이 [낙관적 롤업](/developers/docs/scaling/optimistic-rollups/)처럼 모든 트랜잭션 데이터를 온체인에 게시하는 대신, 이더리움에서 트랜잭션을 확정하기 위해 유효성 증명만 제공하면 된다는 것을 의미합니다.
+
+영지식 롤업 계약이 유효성 증명을 확인하면 출금 트랜잭션(exit transaction)이 실행되기때문에 이더리움으로 자금을 이동시킬 때 지연이 없습니다. 반대로, 낙관적 롤업에서 자금을 인출하는 경우 누구나 [사기 증명](/glossary/#fraud-proof)으로 출금 트랜잭션에 이의를 제기할 수 있도록 지연이 발생합니다.
+
+ZK-롤업은 트랜잭션을 `calldata`로 이더리움에 기록합니다. `calldata`는 스마트 계약 함수에 대한 외부 호출에 포함된 데이터가 저장되는 위치입니다. `calldata`의 정보는 블록체인에 게시되므로 누구나 독립적으로 롤업의 상태를 재구성할 수 있습니다. 영지식 롤업은 압축기술을 사용하여 트랜잭션 데이터를 줄입니다. 예를들어, 계정은 주소가 아닌 인덱스로 표시되어 28바이트의 데이터로 저장합니다. 온체인 데이터 게시는 롤업에 상당한 비용이 들기 때문에, 데이터 압축을 통해 사용자 수수료를 줄일 수 있습니다.
+
+## 영지식 롤업은 이더리움과 어떻게 상호 작용하나요? {#zk-rollups-and-ethereum}
+
+ZK-롤업 체인은 이더리움 블록체인 위에서 작동하는 오프체인 프로토콜이며 온체인 이더리움 스마트 계약에 의해 관리됩니다. ZK-롤업은 메인넷 외부에서 트랜잭션을 실행하지만, 주기적으로 오프체인 트랜잭션 배치를 온체인 롤업 계약에 커밋합니다. 이 거래 기록은 이더리움 블록체인과 마찬가지로 불변이며, 영지식 롤업 체인을 형성합니다.
+
+영지식 롤업의 핵심 아키텍처 구성은 다음과 같습니다.
+
+1. **온체인 계약**: 앞서 언급했듯이, ZK-롤업 프로토콜은 이더리움에서 실행되는 스마트 계약에 의해 제어됩니다. 여기에는 롤업 블록을 저장하고 예금을 추적하며 상태 업데이트를 모니터링하는 메인 스마트 컨트랙트가 포함됩니다. 또 다른 온체인 계약(검증자 계약)은 블록 생산자가 제출한 영지식 증명을 검증합니다. 따라서 이더리움은 영지식 롤업의 기본 계층 또는 "레이어 1" 역할을 합니다.
+
+2. **오프체인 가상 머신(VM)**: ZK-롤업 프로토콜은 이더리움에 있지만, 트랜잭션 실행 및 상태 저장은 [EVM](/developers/docs/evm/)과 독립적인 별도의 가상 머신에서 이루어집니다. 이 오프체인 VM은 ZK-롤업에서 트랜잭션을 실행하기 위한 환경이며 ZK-롤업 프로토콜의 보조 레이어 또는 "레이어 2" 역할을 합니다. 이더리움 메인넷에서 검증된 유효성 증명은 오프체인 VM의 상태 전환에 대한 정확성을 보장합니다.
+
+ZK-롤업은 "하이브리드 확장 솔루션"으로, 독립적으로 작동하지만 이더리움으로부터 보안을 파생하는 오프체인 프로토콜입니다. 특히 이더리움 네트워크는 영지식 롤업에 대한 상태 업데이트의 유효성을 강화하고 롤업 상태에 대한 모든 업데이트 뒤에 있는 데이터의 가용성을 보장합니다. 결과적으로, ZK-롤업은 자체 보안 속성을 책임지는 [사이드체인](/developers/docs/scaling/sidechains/)이나, 유효성 증명을 통해 이더리움에서 트랜잭션을 검증하지만 트랜잭션 데이터는 다른 곳에 저장하는 [밸리디움](/developers/docs/scaling/validium/)과 같은 순수 오프체인 확장 솔루션보다 훨씬 더 안전합니다.
+
+영지식 롤업은 다음을 위해 메인 이더리움 프로토콜에 의존합니다.
+
+### 데이터 가용성 {#data-availability}
+
+ZK-롤업은 오프체인에서 처리된 모든 트랜잭션의 상태 데이터를 이더리움에 게시합니다. 이 데이터를 사용해 개인이나 기업에서 롤업의 상태를 재생산하고 스스로 체인의 유효성을 검증할 수 있습니다. 이더리움은 이 데이터를 `calldata`로 네트워크의 모든 참여자가 사용할 수 있도록 합니다.
+
+유효성 증명이 이미 상태 전환의 진위 여부를 검증하기 때문에, ZK-롤업은 많은 트랜잭션 데이터를 온체인에 게시할 필요가 없습니다. 그럼에도 불구하고 온체인에 데이터를 저장하는 것은 중요합니다. L2 체인의 상태를 무허가적이고 독립적으로 검증할 수 있게 해주기 때문입니다. 이는 결국 누구나 트랜잭션 배치를 제출할 수 있게 하여 악의적인 운영자가 체인을 검열하거나 동결하는 것을 방지합니다.
+
+사용자가 롤업과 상호 작용하려면 온체인이 필요합니다. 상태 데이터 접근 없이 유저는 그들의 잔고나 상태 정보에 의존하는 트랜잭션 (예, 출금) 을 실행할 수 없습니다.
+
+### 트랜잭션 완결성 {#transaction-finality}
+
+이더리움은 ZK-롤업의 정산 레이어 역할을 합니다. L2 트랜잭션은 L1 계약이 유효성 증명을 수락해야만 완결됩니다. 모든 트랜잭션이 메인넷에서 승인되어야 하므로, 악의적인 운영자가 체인을 손상시키는(예: 롤업 자금 탈취) 위험을 제거합니다. 또한 이더리움은 사용자 작업이 L1에서 완결되면 되돌릴 수 없음을 보장합니다.
+
+### 검열 저항성 {#censorship-resistance}
+
+대부분의 ZK-롤업은 "슈퍼노드"(운영자)를 사용하여 트랜잭션을 실행하고, 배치를 생성하며, 블록을 L1에 제출합니다. 이는 효율성을 보장하지만 검열의 위험을 증가시킵니다. 악의적인 ZK-롤업 운영자는 사용자의 트랜잭션을 배치에 포함시키기를 거부함으로써 사용자를 검열할 수 있습니다.
+
+보안 조치로서, ZK-롤업은 사용자가 운영자에 의해 검열되고 있다고 생각하는 경우, 메인넷의 롤업 계약에 직접 트랜잭션을 제출할 수 있도록 합니다. 이를 통해 사용자는 운영자의 허가에 의존하지 않고 ZK-롤업에서 이더리움으로 강제 출금을 할 수 있습니다.
+
+## ZK-롤업은 어떻게 작동하나요? {#how-do-zk-rollups-work}
+
+### 트랜잭션 {#transactions}
+
+ZK-롤업의 사용자는 트랜잭션에 서명하고 다음 배치에 포함되도록 처리를 위해 L2 운영자에게 제출합니다. 어떤 경우에는 운영자가 시퀀서라고 불리는 중앙화된 주체이며, 트랜잭션을 실행하고, 배치로 집계하여 L1에 제출합니다. 이 시스템의 시퀀서는 L2 블록을 생성하고 ZK-롤업 계약에 롤업 트랜잭션을 추가할 수 있는 유일한 주체입니다.
+
+다른 ZK-롤업은 [지분 증명](/developers/docs/consensus-mechanisms/pos/) 검증자 세트를 사용하여 운영자 역할을 순환시킬 수 있습니다. 예비 운영자는 롤업 계약에 자금을 예치하며, 각 스테이킹의 크기는 스테이커가 다음 롤업 배치를 생성하도록 선택될 확률에 영향을 미칩니다. 운영자가 악의적으로 행동하면 스테이킹이 삭감될 수 있으며, 이는 유효한 블록을 게시하도록 장려합니다.
+
+#### ZK-롤업이 이더리움에 트랜잭션 데이터를 게시하는 방법 {#how-zk-rollups-publish-transaction-data-on-ethereum}
+
+설명한 바와 같이, 트랜잭션 데이터는 `calldata`로 이더리움에 게시됩니다. `calldata`는 함수에 인수를 전달하는 데 사용되는 스마트 계약의 데이터 영역이며 [메모리](/developers/docs/smart-contracts/anatomy/#memory)와 유사하게 동작합니다. `calldata`는 이더리움의 상태의 일부로 저장되지는 않지만, 이더리움 체인의 [기록 로그](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)의 일부로 온체인에 유지됩니다. `calldata`는 이더리움의 상태에 영향을 미치지 않으므로 온체인에 데이터를 저렴하게 저장하는 방법입니다.
+
+`calldata` 키워드는 종종 트랜잭션에 의해 호출되는 스마트 계약 메서드를 식별하고 임의의 바이트 시퀀스 형태로 메서드에 대한 입력을 보유합니다. ZK-롤업은 `calldata`를 사용하여 압축된 트랜잭션 데이터를 온체인에 게시합니다. 롤업 운영자는 롤업 계약에서 필요한 함수를 호출하여 새 배치를 추가하고 압축된 데이터를 함수 인수로 전달하기만 하면 됩니다. 롤업 수수료의 상당 부분이 온체인에 트랜잭션 데이터를 저장하는 데 사용되므로 이는 사용자 비용을 줄이는 데 도움이 됩니다.
+
+### 상태 커밋먼트 {#state-commitments}
+
+L2 계정 및 잔액을 포함하는 ZK-롤업의 상태는 [머클 트리](/whitepaper/#merkle-trees)로 표시됩니다. 머클 트리의 루트(머클 루트)에 대한 암호화 해시는 온체인 계약에 저장되어 롤업 프로토콜이 ZK-롤업 상태의 변경 사항을 추적할 수 있도록 합니다.
+
+롤업은 새로운 트랜잭션 세트가 실행된 후 새로운 상태로 전환됩니다. 상태 전환을 시작한 운영자는 새로운 상태 루트를 계산하여 온체인 계약에 제출해야 합니다. 배치와 관련된 유효성 증명이 검증자 계약에 의해 인증되면 새로운 머클 루트는 ZK-롤업의 정식 상태 루트가 됩니다.
+
+상태 루트를 계산하는 것 외에도 ZK-롤업 운영자는 배치 루트, 즉 배치의 모든 트랜잭션으로 구성된 머클 트리의 루트도 생성합니다. 새 배치가 제출되면 롤업 계약은 배치 루트를 저장하여 사용자가 트랜잭션(예: 인출 요청)이 배치에 포함되었음을 증명할 수 있도록 합니다. 사용자는 트랜잭션 세부 정보, 배치 루트 및 포함 경로를 보여주는 [머클 증명](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)을 제공해야 합니다.
+
+### 유효성 증명 {#validity-proofs}
+
+ZK-롤업 운영자가 L1 계약에 제출하는 새로운 상태 루트는 롤업 상태 업데이트의 결과입니다. 예를 들어 앨리스가 밥에게 10개의 토큰을 보내면 운영자는 앨리스의 잔액을 10만큼 줄이고 밥의 잔액을 10만큼 늘립니다. 그런 다음 운영자는 업데이트된 계정 데이터를 해시하고 롤업의 머클 트리를 다시 빌드한 다음 새 머클 루트를 온체인 계약에 제출합니다.
+
+그러나 롤업 계약은 운영자가 새 머클 루트가 롤업 상태에 대한 올바른 업데이트의 결과임을 증명할 때까지 제안된 상태 약정을 자동으로 수락하지 않습니다. ZK-롤업 운영자는 배치된 트랜잭션의 정확성을 검증하는 간결한 암호화 약정인 유효성 증명을 생성하여 이를 수행합니다.
+
+유효성 증명을 사용하면 당사자가 진술 자체를 공개하지 않고도 진술의 정확성을 증명할 수 있으므로 영지식 증명이라고도 합니다. ZK-롤업은 유효성 증명을 사용하여 이더리움에서 트랜잭션을 다시 실행하지 않고도 오프체인 상태 전환의 정확성을 확인합니다. 이러한 증명은 [ZK-SNARK](https://arxiv.org/abs/2202.06877)(영지식 간결 비대화형 지식 논증) 또는 [ZK-STARK](https://eprint.iacr.org/2018/046)(영지식 확장형 투명 지식 논증)의 형태를 띨 수 있습니다.
+
+SNARK와 STARK는 각각 독특한 특징을 가지고 있지만 ZK-롤업에서 오프체인 계산의 무결성을 증명하는 데 도움이 됩니다.
+
+**ZK-SNARK**
+
+ZK-SNARK 프로토콜이 작동하려면 공통 참조 문자열(CRS)을 생성해야 합니다. CRS는 유효성 증명을 증명하고 검증하기 위한 공개 매개변수를 제공합니다. 증명 시스템의 보안은 CRS 설정에 따라 달라집니다. 공개 매개변수를 생성하는 데 사용된 정보가 악의적인 행위자의 손에 들어가면 거짓 유효성 증명을 생성할 수 있습니다.
+
+일부 ZK-롤업은 신뢰할 수 있는 개인을 포함하는 [다자간 계산(MPC) 행사](https://zkproof.org/2021/06/30/setup-ceremonies/amp/)를 사용하여 ZK-SNARK 회로에 대한 공개 매개변수를 생성함으로써 이 문제를 해결하려고 시도합니다. 각 당사자는 CRS를 구성하기 위해 약간의 무작위성("독성 폐기물"이라고 함)을 제공하며, 이를 즉시 파기해야 합니다.
+
+신뢰 기반 설정은 CRS 설정의 보안을 높이기 때문에 사용됩니다. 한 명의 정직한 참가자가 자신의 입력을 파기하는 한 ZK-SNARK 시스템의 보안은 보장됩니다. 하지만 이 접근 방식은 관련된 사람들이 샘플링된 무작위성을 삭제하고 시스템의 보안 보장을 훼손하지 않을 것이라고 신뢰해야 합니다.
+
+신뢰 가정을 제외하고, ZK-SNARK는 작은 증명 크기와 상수 시간 검증으로 인기가 있습니다. L1에서의 증명 검증은 ZK-롤업 운영 비용의 더 큰 부분을 차지하므로 L2는 ZK-SNARK를 사용하여 메인넷에서 빠르고 저렴하게 검증할 수 있는 증명을 생성합니다.
+
+**ZK-STARK**
+
+ZK-SNARK와 마찬가지로 ZK-STARK는 입력을 공개하지 않고 오프체인 계산의 유효성을 증명합니다. 그러나 ZK-STARK는 확장성과 투명성 때문에 ZK-SNARK보다 개선된 것으로 간주됩니다.
+
+ZK-STARK는 공통 참조 문자열(CRS)의 신뢰 기반 설정 없이도 작동할 수 있으므로 '투명'합니다. 대신 ZK-STARK는 공개적으로 검증 가능한 무작위성에 의존하여 증명을 생성하고 검증하기 위한 매개변수를 설정합니다.
+
+ZK-STARK는 또한 유효성 증명을 증명하고 검증하는 데 필요한 시간이 기본 계산의 복잡성과 관련하여 _준선형적으로_ 증가하기 때문에 더 많은 확장성을 제공합니다. ZK-SNARK의 경우 증명 및 검증 시간은 기본 계산의 크기에 비례하여 _선형적으로_ 확장됩니다. 이는 대규모 데이터세트가 관련될 때 ZK-STARK가 증명 및 검증에 ZK-SNARK보다 시간이 덜 걸린다는 것을 의미하며, 따라서 대용량 애플리케이션에 유용합니다.
+
+ZK-STARK는 양자 컴퓨터에 대해서도 안전하지만, ZK-SNARK에 사용되는 타원 곡선 암호화(ECC)는 양자 컴퓨팅 공격에 취약한 것으로 널리 알려져 있습니다. ZK-STARK의 단점은 더 큰 증명 크기를 생성하여 이더리움에서 검증하는 데 더 많은 비용이 든다는 것입니다.
+
+#### ZK-롤업에서 유효성 증명은 어떻게 작동하나요? {#validity-proofs-in-zk-rollups}
+
+##### 증명 생성
+
+트랜잭션을 수락하기 전에 운영자는 일반적인 검사를 수행합니다. 여기에는 다음 확인 사항이 포함됩니다.
+
+- 송금인과 수취인 계정이 상태 트리의 일부입니다.
+- 송금인이 트랜잭션을 처리하기에 충분한 자금을 가지고 있습니다.
+- 트랜잭션이 정확하고 롤업의 송금인 공개 키와 일치합니다.
+- 송금인의 논스가 정확합니다.
+
+ZK-롤업 노드에 충분한 트랜잭션이 있으면 이를 배치로 집계하고 증명 회로가 간결한 ZK-증명으로 컴파일할 수 있도록 입력을 컴파일합니다. 여기에는 다음이 포함됩니다.
+
+- 배치의 모든 트랜잭션으로 구성된 머클 트리 루트.
+- 배치 포함을 증명하기 위한 트랜잭션에 대한 머클 증명.
+- 해당 계정이 롤업 상태 트리의 일부임을 증명하기 위해 트랜잭션의 각 송금인-수취인 쌍에 대한 머클 증명.
+- 각 트랜잭션에 대한 상태 업데이트를 적용한 후 상태 루트를 업데이트하여 파생된 중간 상태 루트 세트(즉, 송금인 계정 감소 및 수취인 계정 증가).
+
+증명 회로는 각 트랜잭션을 "반복"하고 운영자가 트랜잭션을 처리하기 전에 완료한 것과 동일한 검사를 수행하여 유효성 증명을 계산합니다. 먼저 제공된 머클 증명을 사용하여 송금인의 계정이 기존 상태 루트의 일부인지 확인합니다. 그런 다음 송금인의 잔액을 줄이고, 논스를 증가시키고, 업데이트된 계정 데이터를 해시한 다음 머클 증명과 결합하여 새로운 머클 루트를 생성합니다.
+
+이 머클 루트는 ZK-롤업 상태의 유일한 변경 사항인 송금인의 잔액과 논스 변경을 반영합니다. 계정의 존재를 증명하는 데 사용되는 머클 증명이 새로운 상태 루트를 도출하는 데 사용되기 때문에 이것이 가능합니다.
+
+증명 회로는 수취인의 계정에서 동일한 프로세스를 수행합니다. 중간 상태 루트 아래에 수취인의 계정이 있는지 확인하고(머클 증명 사용), 잔액을 늘리고, 계정 데이터를 다시 해시한 다음 머클 증명과 결합하여 새로운 상태 루트를 생성합니다.
+
+이 프로세스는 모든 트랜잭션에 대해 반복됩니다. 각 "루프"는 송금인의 계정을 업데이트하여 새로운 상태 루트를 생성하고 수취인의 계정을 업데이트하여 후속 새로운 루트를 생성합니다. 설명한 바와 같이 상태 루트에 대한 모든 업데이트는 롤업 상태 트리의 한 부분이 변경되었음을 나타냅니다.
+
+ZK 증명 회로는 전체 트랜잭션 배치를 반복하여 마지막 트랜잭션이 실행된 후 최종 상태 루트가 되는 업데이트 순서를 확인합니다. 계산된 마지막 머클 루트는 ZK-롤업의 최신 정식 상태 루트가 됩니다.
+
+##### 증명 검증
+
+증명 회로가 상태 업데이트의 정확성을 확인한 후 L2 운영자는 계산된 유효성 증명을 L1의 검증자 계약에 제출합니다. 계약의 검증 회로는 증명의 유효성을 확인하고 증명의 일부를 구성하는 공개 입력도 확인합니다.
+
+- **이전 상태 루트**: ZK-롤업의 이전 상태 루트(즉, 일괄 처리된 트랜잭션이 실행되기 전)로, L2 체인의 마지막으로 알려진 유효한 상태를 반영합니다.
+
+- **이후 상태 루트**: ZK-롤업의 새로운 상태 루트(즉, 일괄 처리된 트랜잭션이 실행된 후)로, L2 체인의 최신 상태를 반영합니다. 이후 상태 루트는 증명 회로에서 상태 업데이트를 적용한 후 파생된 최종 루트입니다.
+
+- **배치 루트**: 배치의 머클 루트로, 배치의 트랜잭션을 머클화하고 트리의 루트를 해시화하여 파생됩니다.
+
+- **트랜잭션 입력**: 제출된 배치의 일부로 실행된 트랜잭션과 관련된 데이터.
+
+증명이 회로를 만족시키는 경우(즉, 유효한 경우) 이전 상태(이전 상태 루트로 암호화 지문 채취)에서 새로운 상태(이후 상태 루트로 암호화 지문 채취)로 롤업을 전환하는 유효한 트랜잭션 시퀀스가 존재함을 의미합니다. 이전 상태 루트가 롤업 계약에 저장된 루트와 일치하고 증명이 유효하면 롤업 계약은 증명에서 이후 상태 루트를 가져와 롤업의 변경된 상태를 반영하도록 상태 트리를 업데이트합니다.
+
+### 진입 및 탈출 {#entries-and-exits}
+
+사용자는 L1 체인에 배포된 롤업 계약에 토큰을 예치하여 ZK-롤업에 참여합니다. 운영자만 롤업 계약에 트랜잭션을 제출할 수 있으므로 이 트랜잭션은 대기열에 추가됩니다.
+
+보류 중인 예금 대기열이 채워지기 시작하면 ZK-롤업 운영자는 예금 트랜잭션을 가져와 롤업 계약에 제출합니다. 사용자의 자금이 롤업에 있으면 처리를 위해 운영자에게 트랜잭션을 전송하여 거래를 시작할 수 있습니다. 사용자는 계정 데이터를 해시하고 해시를 롤업 계약에 보낸 다음 머클 증명을 제공하여 현재 상태 루트에 대해 확인하여 롤업의 잔액을 확인할 수 있습니다.
+
+ZK-롤업에서 L1으로 인출하는 것은 간단합니다. 사용자는 롤업의 자산을 소각을 위해 지정된 계정으로 보내 출금 트랜잭션을 시작합니다. 운영자가 다음 배치에 트랜잭션을 포함하면 사용자는 온체인 계약에 인출 요청을 제출할 수 있습니다. 이 인출 요청에는 다음이 포함됩니다.
+
+- 사용자의 트랜잭션이 소각 계정으로 전송되었음을 증명하는 머클 증명
+
+- 트랜잭션 데이터
+
+- 배치 루트
+
+- 예치된 자금을 받을 L1 주소
+
+롤업 계약은 트랜잭션 데이터를 해시하고 배치 루트가 있는지 확인한 다음 머클 증명을 사용하여 트랜잭션 해시가 배치 루트의 일부인지 확인합니다. 그 후 계약은 출금 트랜잭션을 실행하고 L1에서 사용자가 선택한 주소로 자금을 보냅니다.
+
+## ZK-롤업 및 EVM 호환성 {#zk-rollups-and-evm-compatibility}
+
+낙관적 롤업과 달리 ZK-롤업은 [이더리움 가상 머신(EVM)](/developers/docs/evm/)과 쉽게 호환되지 않습니다. 회로에서 범용 EVM 계산을 증명하는 것은 이전에 설명한 토큰 전송과 같은 간단한 계산을 증명하는 것보다 더 어렵고 리소스 집약적입니다.
+
+그러나 [영지식 기술의 발전](https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now)으로 인해 EVM 계산을 영지식 증명으로 래핑하는 것에 대한 관심이 다시 불붙고 있습니다. 이러한 노력은 프로그램 실행의 정확성을 효율적으로 검증할 수 있는 영지식 EVM(zkEVM) 구현을 만드는 것을 목표로 합니다. zkEVM은 회로에서 증명/검증을 위해 기존 EVM 옵코드를 재생성하여 스마트 계약을 실행할 수 있도록 합니다.
+
+EVM과 마찬가지로 zkEVM은 일부 입력에 대한 계산이 수행된 후 상태 간에 전환됩니다. 차이점은 zkEVM이 프로그램 실행의 모든 단계의 정확성을 검증하기 위해 영지식 증명을 생성한다는 것입니다. 유효성 증명은 VM의 상태(메모리, 스택, 스토리지)에 영향을 미치는 작업의 정확성과 계산 자체(즉, 작업이 올바른 옵코드를 호출하고 올바르게 실행했는지 여부)를 확인할 수 있습니다.
+
+EVM 호환 ZK-롤업의 도입은 개발자가 영지식 증명의 확장성과 보안 보장을 활용하는 데 도움이 될 것으로 예상됩니다. 더 중요한 것은 네이티브 이더리움 인프라와의 호환성은 개발자가 익숙하고 검증된 툴링과 언어를 사용하여 ZK 친화적인 탈중앙화앱을 구축할 수 있음을 의미합니다.
+
+## ZK-롤업 수수료는 어떻게 작동하나요? {#how-do-zk-rollup-fees-work}
+
+ZK-롤업에서 사용자가 트랜잭션에 대해 지불하는 금액은 이더리움 메인넷과 마찬가지로 가스 수수료에 따라 다릅니다. 그러나 가스 수수료는 L2에서 다르게 작동하며 다음 비용의 영향을 받습니다.
+
+1. **상태 쓰기**: 이더리움 상태에 쓰는 데(즉, 이더리움 블록체인에 트랜잭션을 제출하는 것) 고정 비용이 있습니다. ZK-롤업은 트랜잭션을 일괄 처리하고 여러 사용자에게 고정 비용을 분산시켜 이 비용을 줄입니다.
+
+2. **데이터 게시**: ZK-롤업은 모든 트랜잭션의 상태 데이터를 `calldata`로 이더리움에 게시합니다. `calldata` 비용은 현재 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)에 의해 관리되며, 이는 0이 아닌 바이트에 대해 16 가스, `calldata`의 0바이트에 대해 각각 4 가스의 비용을 규정합니다. 각 트랜잭션에 대해 지불하는 비용은 온체인에 게시해야 하는 `calldata`의 양에 따라 영향을 받습니다.
+
+3. **L2 운영자 수수료**: 이더리움 메인넷의 [트랜잭션 "우선 수수료(팁)"](/developers/docs/gas/#how-are-gas-fees-calculated)와 마찬가지로 트랜잭션 처리 시 발생하는 계산 비용에 대한 보상으로 롤업 운영자에게 지불되는 금액입니다.
+
+4. **증명 생성 및 검증**: ZK-롤업 운영자는 트랜잭션 배치에 대한 유효성 증명을 생성해야 하며, 이는 리소스 집약적입니다. 메인넷에서 영지식 증명을 검증하는 데에도 가스(\~500,000 가스)가 소요됩니다.
+
+트랜잭션을 일괄 처리하는 것 외에도 ZK-롤업은 트랜잭션 데이터를 압축하여 사용자 수수료를 줄입니다. 이더리움 ZK-롤업 사용 비용에 대한 [실시간 개요](https://l2fees.info/)를 볼 수 있습니다.
+
+## ZK-롤업은 이더리움을 어떻게 확장하나요? {#scaling-ethereum-with-zk-rollups}
+
+### 트랜잭션 데이터 압축 {#transaction-data-compression}
+
+ZK-롤업은 계산을 오프체인으로 가져와 이더리움의 기본 레이어에서 처리량을 확장하지만, 확장을 위한 진정한 이점은 트랜잭션 데이터를 압축하는 데 있습니다. 이더리움의 [블록 크기](/developers/docs/blocks/#block-size)는 각 블록이 보유할 수 있는 데이터의 양과 나아가 블록당 처리되는 트랜잭션 수를 제한합니다. 트랜잭션 관련 데이터를 압축함으로써 ZK-롤업은 블록당 처리되는 트랜잭션 수를 크게 늘립니다.
+
+ZK-롤업은 각 트랜잭션을 검증하는 데 필요한 모든 데이터를 게시할 필요가 없으므로 낙관적 롤업보다 트랜잭션 데이터를 더 잘 압축할 수 있습니다. 롤업에서 계정 및 잔액의 최신 상태를 재구성하는 데 필요한 최소한의 데이터만 게시하면 됩니다.
+
+### 재귀적 증명 {#recursive-proofs}
+
+영지식 증명의 장점은 증명이 다른 증명을 검증할 수 있다는 것입니다. 예를 들어, 단일 ZK-SNARK는 다른 ZK-SNARK를 검증할 수 있습니다. 이러한 "증명의 증명"은 재귀적 증명이라고 하며 ZK-롤업의 처리량을 극적으로 증가시킵니다.
+
+현재 유효성 증명은 블록 단위로 생성되어 검증을 위해 L1 계약에 제출됩니다. 그러나 운영자가 증명을 제출할 때 하나의 블록만 완결될 수 있으므로 단일 블록 증명을 검증하면 ZK-롤업이 달성할 수 있는 처리량이 제한됩니다.
+
+그러나 재귀적 증명을 사용하면 하나의 유효성 증명으로 여러 블록을 완결할 수 있습니다. 이는 증명 회로가 최종 증명이 하나 생성될 때까지 여러 블록 증명을 재귀적으로 집계하기 때문입니다. L2 운영자는 이 재귀적 증명을 제출하며, 계약이 이를 수락하면 모든 관련 블록이 즉시 완결됩니다. 재귀적 증명을 사용하면 일정 간격으로 이더리움에서 완결될 수 있는 ZK-롤업 트랜잭션의 수가 증가합니다.
+
+### ZK-롤업의 장단점 {#zk-rollups-pros-and-cons}
+
+| 장점 | 단점 |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
+| 유효성 증명은 오프체인 트랜잭션의 정확성을 보장하고 운영자가 잘못된 상태 전환을 실행하는 것을 방지합니다. | 유효성 증명을 계산하고 검증하는 데 드는 비용이 상당하며 롤업 사용자의 수수료를 증가시킬 수 있습니다. |
+| L1에서 유효성 증명이 검증되면 상태 업데이트가 승인되므로 더 빠른 트랜잭션 완결성을 제공합니다. | 영지식 기술의 복잡성으로 인해 EVM 호환 ZK-롤업을 구축하는 것은 어렵습니다. |
+| [낙관적 롤업](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons)과 같이 인센티브를 받는 행위자의 정직성이 아니라 보안을 위해 무신뢰 암호화 메커니즘에 의존합니다. | 유효성 증명을 생성하려면 특수 하드웨어가 필요하며, 이는 소수 당사자에 의한 체인의 중앙 집중식 제어를 조장할 수 있습니다. |
+| L1에서 오프체인 상태를 복구하는 데 필요한 데이터를 저장하여 보안, 검열 저항성 및 탈중앙화를 보장합니다. | 중앙화된 운영자(시퀀서)는 트랜잭션 순서에 영향을 미칠 수 있습니다. |
+| 사용자는 더 큰 자본 효율성의 이점을 누리고 지연 없이 L2에서 자금을 인출할 수 있습니다. | 하드웨어 요구 사항으로 인해 체인을 강제로 진행시킬 수 있는 참여자 수가 줄어들어 악의적인 운영자가 롤업 상태를 동결하고 사용자를 검열할 위험이 증가할 수 있습니다. |
+| 활성 가정에 의존하지 않으며 사용자는 자금을 보호하기 위해 체인을 검증할 필요가 없습니다. | 일부 증명 시스템(예: ZK-SNARK)은 신뢰 기반 설정을 필요로 하며, 이를 잘못 처리하면 ZK-롤업의 보안 모델이 손상될 수 있습니다. |
+| 더 나은 데이터 압축은 이더리움에서 `calldata`를 게시하는 비용을 줄이고 사용자의 롤업 수수료를 최소화하는 데 도움이 될 수 있습니다. | |
+
+### ZK-롤업에 대한 시각적 설명 {#zk-video}
+
+Finematics에서 영지식 증명에 대해 설명합니다.
+
+
+
+## zkEVM을 개발하는 곳은 어디인가요? {#zkevm-projects}
+
+zkEVM을 개발하는 프로젝트는 다음과 같습니다.
+
+- **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _zkEVM은 이더리움 재단이 EVM 호환 ZK-롤업과 이더리움 블록에 대한 유효성 증명 생성 메커니즘을 개발하기 위해 자금을 지원하는 프로젝트입니다._
+
+- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _이더리움 메인넷의 탈중앙화된 ZK 롤업으로, 영지식 증명 검증을 통해 스마트 계약을 포함한 이더리움 트랜잭션을 투명하게 실행하는 영지식 이더리움 가상 머신(zkEVM)을 개발하고 있습니다._
+
+- **[Scroll](https://scroll.io/blog/zkEVM)** - _Scroll은 이더리움을 위한 네이티브 zkEVM 레이어 2 솔루션을 구축하는 기술 중심 회사입니다._
+
+- **[Taiko](https://taiko.xyz)** - _Taiko는 탈중앙화된 이더리움 동등 ZK-롤업([유형 1 ZK-EVM](https://vitalik.eth.limo/general/2022/08/04/zkevm.html))입니다._
+
+- **[ZKsync](https://docs.zksync.io/)** - _ZKsync Era는 Matter Labs가 구축한 EVM 호환 ZK 롤업으로, 자체 zkEVM으로 구동됩니다._
+
+- **[Starknet](https://starkware.co/starknet/)** - _StarkNet은 StarkWare가 구축한 EVM 호환 레이어 2 확장 솔루션입니다._
+
+- **[Morph](https://www.morphl2.io/)** - _Morph는 zk-증명을 활용하여 레이어 2 상태 문제 문제를 해결하는 하이브리드 롤업 확장 솔루션입니다._
+
+- **[Linea](https://linea.build)** - _Linea는 Consensys가 구축한 이더리움 동등 zkEVM 레이어 2로, 이더리움 생태계와 완벽하게 일치합니다._
+
+## ZK-롤업에 대한 추가 자료 {#further-reading-on-zk-rollups}
+
+- [영지식 롤업이란?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups)
+- [영지식 롤업이란?](https://alchemy.com/blog/zero-knowledge-rollups)
+- [이더리움 롤업 실용 가이드](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups)
+- [STARK 대 SNARK](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)
+- [zkEVM이란?](https://www.alchemy.com/overviews/zkevm)
+- [ZK-EVM 유형: 이더리움 동등, EVM 동등, 유형 1, 유형 4 및 기타 암호화된 유행어](https://taiko.mirror.xyz/j6KgY8zbGTlTnHRFGW6ZLVPuT0IV0_KmgowgStpA0K4)
+- [zkEVM 소개](https://hackmd.io/@yezhang/S1_KMMbGt)
+- [ZK-EVM L2란?](https://linea.mirror.xyz/qD18IaQ4BROn_Y40EBMTUTdJHYghUtdECscSWyMvm8M)
+- [Awesome-zkEVM 리소스](https://github.com/LuozhuZhang/awesome-zkevm)
+- [ZK-SNARK 내부 구조](https://vitalik.eth.limo/general/2017/02/01/zk_snarks.html)
+- [SNARK는 어떻게 가능한가?](https://vitalik.eth.limo/general/2021/01/26/snarks.html)
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/anatomy/index.md b/public/content/translations/ko/developers/docs/smart-contracts/anatomy/index.md
new file mode 100644
index 00000000000..fab057e51df
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/anatomy/index.md
@@ -0,0 +1,658 @@
+---
+title: "스마트 계약의 구조"
+description: "스마트 컨트랙트 구성 요소에 대해 자세히 알아보기 - 함수, 데이터, 변수"
+lang: ko
+---
+
+스마트 컨트랙트는 이더리움 주소 체계 상에서 실행되는 프로그램이며, 거래가 발생할 때 실행되는 데이터와 함수로 구성되어 있습니다. 지금부터 그 구성 요소에 대해 전반적으로 살펴보도록 하겠습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[스마트 계약](/developers/docs/smart-contracts/)에 대해 먼저 읽어보시기 바랍니다. 자바 스크립트나 파이썬과 같은 프로그래밍 언어에 상당히 익숙하다는 것을 전제합니다.
+
+## 데이터 {#data}
+
+모든 계약 데이터는 `storage` 또는 `memory` 위치에 할당되어야 합니다. 이 중 스토리지 사용은 비용이 더 발생하므로 여러분은 어떤 것을 활용할 지 미리 고려해야 합니다.
+
+### 저장 공간 {#storage}
+
+영구적인 데이터는 스토리지로 간주되며 상태 변수 형태로 표현됩니다. 이런 값은 블록체인 상에 영구히 남게 되므로, 컨트랙트 컴파일 시에 스토리지 형태로 사용할 변수를 명확히 구분할 필요가 있습니다.
+
+```solidity
+// Solidity 예시
+contract SimpleStorage {
+ uint storedData; // 상태 변수
+ // ...
+}
+```
+
+```python
+# Vyper 예시
+storedData: int128
+```
+
+여러분이 객체 지향적인 언어를 사용해 보았다면 대부분의 변수 타입에는 익숙할 것입니다. 하지만 이더리움 개발이 처음이라면 `address`는 생소할 수 있습니다.
+
+`address` 유형은 이더리움 주소를 저장할 수 있으며, 이는 20바이트 또는 160비트와 같습니다. 또한 16진수로 표기되며 0x로 시작합니다.
+
+기타 유형에는 다음이 포함됩니다:
+
+- 불리언
+- 정수
+- 고정 소수점 숫자
+- 고정 크기 바이트 배열
+- 동적 크기 바이트 배열
+- 유리수 및 정수 리터럴
+- 문자열 리터럴
+- 16진수 리터럴
+- 열거형
+
+더 많은 설명은 문서를 참고하십시오:
+
+- [Vyper 유형 보기](https://docs.vyperlang.org/en/v0.1.0-beta.6/types.html#value-types)
+- [Solidity 유형 보기](https://docs.soliditylang.org/en/latest/types.html#value-types)
+
+### 메모리 {#memory}
+
+메모리 변수는 컨트랙스 함수가 실행되는 시간에만 사용이 가능하기 때문에, 블록체인에는 저장되지 않고 비용도 저렴합니다.
+
+[Solidity 문서](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#storage-memory-and-the-stack)에서 EVM이 데이터(저장 공간, 메모리, 스택)를 저장하는 방법에 대해 자세히 알아보세요.
+
+### 환경 변수 {#environment-variables}
+
+여러분이 컨트랙트에 정의한 변수 외에도 특별하게 사용할 수 있는 전역 변수가 있습니다. 그것을 통해 주로 블록체인과 현재 트랜잭션에 대한 정보를 알 수 있습니다.
+
+예시:
+
+| **속성** | **상태 변수** | **설명** |
+| ----------------- | --------- | ---------------------------------- |
+| `block.timestamp` | uint256 | 현재 블록 에포크 타임스탬프 |
+| `msg.sender` | 주소 | 메시지의 발신자(현재 호출) |
+
+## 함수 {#functions}
+
+함수는 거래에 대한 정보를 간단한 방법으로 가져오거나 설정할 수 있습니다.
+
+함수 호출에는 두 가지 방법이 있습니다.
+
+- `internal` – EVM 호출을 생성하지 않습니다
+ - 내부 함수와 상태 변수는 내부에서만 (즉, 현재 계약 또는 그로부터 파생된 계약 내에서만) 접근할 수 있습니다
+- `external` – EVM 호출을 생성합니다
+ - 외부 함수는 계약 인터페이스의 일부로, 다른 계약 및 트랜잭션을 통해 호출할 수 있습니다. 외부 함수 `f`는 내부에서 호출할 수 없습니다(예: `f()`는 작동하지 않지만 `this.f()`는 작동합니다).
+
+`public` 또는 `private`일 수도 있습니다
+
+- `public` 함수는 계약 내에서 내부적으로 또는 메시지를 통해 외부에서 호출할 수 있습니다
+- `private` 함수는 정의된 계약에서만 볼 수 있으며 파생된 계약에서는 볼 수 없습니다
+
+함수와 상태 변수 모두 public 또는 private 설정이 가능합니다.
+
+계약의 상태 변수를 업데이트하는 함수 예제입니다:
+
+```solidity
+// Solidity 예시
+function update_name(string value) public {
+ dapp_name = value;
+}
+```
+
+- `string` 유형의 매개변수 `value`가 `update_name` 함수에 전달됩니다
+- `public`으로 선언되어 누구나 접근할 수 있습니다
+- `view`로 선언되지 않았으므로 계약 상태를 수정할 수 있습니다
+
+### View 함수 {#view-functions}
+
+이 함수들은 컨트랙트 데이터를 변경하지 않습니다. 흔히 "getter" 함수라고도 하며 사용자의 지갑의 잔액을 얻을 때 사용될 때의 예시입니다.
+
+```solidity
+// Solidity 예시
+function balanceOf(address _owner) public view returns (uint256 _balance) {
+ return ownerPizzaCount[_owner];
+}
+```
+
+```python
+dappName: public(string)
+
+@view
+@public
+def readName() -> string:
+ return dappName
+```
+
+상태를 수정하는 것으로 간주되는 것:
+
+1. 상태 변수에 쓰기
+2. [이벤트 발생시키기](https://docs.soliditylang.org/en/v0.7.0/contracts.html#events).
+3. [다른 계약 생성하기](https://docs.soliditylang.org/en/v0.7.0/control-structures.html#creating-contracts).
+4. `selfdestruct` 사용하기.
+5. 호출을 통해 이더 전송
+6. `view` 또는 `pure`로 표시되지 않은 함수 호출하기.
+7. 저수준 호출 사용
+8. 특정 오프코드를 포함하는 인라인 어셈블리 사용
+
+### 생성자 함수 {#constructor-functions}
+
+`constructor` 함수는 계약이 처음 배포될 때 한 번만 실행됩니다. 많은 클래스 기반 프로그래밍 언어의 `constructor`와 마찬가지로, 이 함수는 종종 상태 변수를 지정된 값으로 초기화합니다.
+
+```solidity
+// Solidity 예시
+// 계약의 데이터를 초기화하고, `owner`를
+// 계약 생성자의 주소로 설정합니다.
+constructor() public {
+ // 모든 스마트 계약은 외부 트랜잭션에 의존하여 함수를 실행합니다.
+ // `msg`는 보낸 사람의 주소 및 트랜잭션에 포함된 ETH 값과 같은
+ // 주어진 트랜잭션의 관련 데이터를 포함하는 전역 변수입니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties
+ owner = msg.sender;
+}
+```
+
+```python
+# Vyper 예시
+
+@external
+def __init__(_beneficiary: address, _bidding_time: uint256):
+ self.beneficiary = _beneficiary
+ self.auctionStart = block.timestamp
+ self.auctionEnd = self.auctionStart + _bidding_time
+```
+
+### 내장 함수 {#built-in-functions}
+
+컨트랙트를 작성할 때 정의하는 변수와 함수 외에 추가적으로 사용할 수 있는 특별한 내장 함수가 있습니다. 대표적인 함수에는 아래가 있으며,
+
+- `address.send()` – 솔리디티
+- `send(address)` – Vyper
+
+다른 계정으로 ETH를 송금할 때 사용할 수 있습니다.
+
+## 함수 작성하기 {#writing-functions}
+
+당신의 함수에는 다음이 필요합니다:
+
+- 매개변수 변수 및 타입(매개변수를 받는 경우)
+- 내부/외부 선언
+- 순수(pure)/뷰(view)/지급(payable) 선언
+- 반환 타입(값을 반환하는 경우)
+
+```solidity
+pragma solidity >=0.4.0 <=0.6.0;
+
+contract ExampleDapp {
+ string dapp_name; // 상태 변수
+
+ // 계약이 배포될 때 호출되어 값을 초기화합니다
+ constructor() public {
+ dapp_name = "My Example dapp";
+ }
+
+ // Get 함수
+ function read_name() public view returns(string) {
+ return dapp_name;
+ }
+
+ // Set 함수
+ function update_name(string value) public {
+ dapp_name = value;
+ }
+}
+```
+
+완전한 계약은 다음과 같을 수 있습니다. 여기서 `constructor` 함수는 `dapp_name` 변수에 대한 초기값을 제공합니다.
+
+## 이벤트와 로그 {#events-and-logs}
+
+이벤트는 스마트 계약이 프론트엔드나 다른 구독 애플리케이션과 통신할 수 있게 합니다. 트랜잭션이 검증되어 블록에 추가되면, 스마트 계약은 이벤트를 방출하고 정보를 로그로 기록할 수 있으며, 프론트엔드는 이를 처리하고 활용할 수 있습니다.
+
+## 주석이 달린 예시 {#annotated-examples}
+
+이것들은 Solidity로 작성된 몇 가지 예시입니다. 코드를 사용해보고 싶다면 [Remix](http://remix.ethereum.org)에서 상호작용할 수 있습니다.
+
+### Hello world {#hello-world}
+
+```solidity
+// 시맨틱 버저닝을 사용하여 Solidity 버전을 지정합니다.
+// 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity ^0.5.10;
+
+// `HelloWorld`라는 이름의 계약을 정의합니다.
+// 계약은 함수와 데이터(상태)의 모음입니다.
+// 배포된 계약은 이더리움 블록체인의 특정 주소에 존재합니다.
+// 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+contract HelloWorld {
+
+ // `string` 유형의 상태 변수 `message`를 선언합니다.
+ // 상태 변수는 계약 저장 공간에 영구적으로 저장되는 변수입니다.
+ // `public` 키워드를 사용하면 계약 외부에서 변수에 접근할 수 있으며
+ // 다른 계약이나 클라이언트가 값을 접근하기 위해 호출할 수 있는 함수를 생성합니다.
+ string public message;
+
+ // 많은 클래스 기반 객체 지향 언어와 마찬가지로, 생성자는
+ // 계약 생성 시에만 실행되는 특별한 함수입니다.
+ // 생성자는 계약의 데이터를 초기화하는 데 사용됩니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) public {
+ // 문자열 인수 `initMessage`를 받아 계약의 `message` 저장 공간 변수에
+ // 값을 설정합니다.
+ message = initMessage;
+ }
+
+ // 문자열 인수를 받아
+ // `message` 저장 공간 변수를 업데이트하는 public 함수입니다.
+ function update(string memory newMessage) public {
+ message = newMessage;
+ }
+}
+```
+
+### 토큰 {#token}
+
+```solidity
+pragma solidity ^0.5.10;
+
+contract Token {
+ // `address`는 이메일 주소와 비슷하며, 이더리움에서 계정을 식별하는 데 사용됩니다.
+ // 주소는 스마트 계약 또는 외부(사용자) 계정을 나타낼 수 있습니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/types.html#address
+ address public owner;
+
+ // `mapping`은 기본적으로 해시 테이블 데이터 구조입니다.
+ // 이 `mapping`은 부호 없는 정수(토큰 잔액)를 주소(토큰 보유자)에 할당합니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/types.html#mapping-types
+ mapping (address => uint) public balances;
+
+ // 이벤트를 통해 블록체인 활동을 기록할 수 있습니다.
+ // 이더리움 클라이언트는 계약 상태 변경에 반응하기 위해 이벤트를 수신할 수 있습니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#events
+ event Transfer(address from, address to, uint amount);
+
+ // 계약 데이터를 초기화하고, `owner`를
+ // 계약 생성자의 주소로 설정합니다.
+ constructor() public {
+ // 모든 스마트 계약은 외부 트랜잭션에 의존하여 함수를 실행합니다.
+ // `msg`는 보낸 사람의 주소 및 트랜잭션에 포함된 ETH 값과 같은
+ // 주어진 트랜잭션의 관련 데이터를 포함하는 전역 변수입니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties
+ owner = msg.sender;
+ }
+
+ // 새로운 토큰을 생성하여 주소로 보냅니다.
+ function mint(address receiver, uint amount) public {
+ // `require`는 특정 조건을 강제하는 데 사용되는 제어 구조입니다.
+ // `require`문이 `false`로 평가되면 예외가 발생하며,
+ // 현재 호출 동안 상태에 적용된 모든 변경 사항이 되돌려집니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions
+
+ // 계약 소유자만 이 함수를 호출할 수 있습니다
+ require(msg.sender == owner, "당신은 소유자가 아닙니다.");
+
+ // 토큰의 최대량을 강제합니다
+ require(amount < 1e60, "최대 발행량을 초과했습니다");
+
+ // `receiver`의 잔액을 `amount`만큼 증가시킵니다
+ balances[receiver] += amount;
+ }
+
+ // 호출자로부터 주소로 기존 토큰을 보냅니다.
+ function transfer(address receiver, uint amount) public {
+ // 보내는 사람은 보낼 만큼의 충분한 토큰을 가지고 있어야 합니다
+ require(amount <= balances[msg.sender], "잔액이 부족합니다.");
+
+ // 두 주소의 토큰 잔액을 조정합니다
+ balances[msg.sender] -= amount;
+ balances[receiver] += amount;
+
+ // 이전에 정의된 이벤트를 발생시킵니다
+ emit Transfer(msg.sender, receiver, amount);
+ }
+}
+```
+
+### 고유 디지털 자산 {#unique-digital-asset}
+
+```solidity
+pragma solidity ^0.5.10;
+
+// 다른 파일의 심볼을 현재 계약으로 가져옵니다.
+// 이 경우 OpenZeppelin의 일련의 헬퍼 계약입니다.
+// 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#importing-other-source-files
+
+import "../node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol";
+import "../node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
+import "../node_modules/@openzeppelin/contracts/introspection/ERC165.sol";
+import "../node_modules/@openzeppelin/contracts/math/SafeMath.sol";
+
+// `is` 키워드는 외부 계약에서 함수와 키워드를 상속받는 데 사용됩니다.
+// 이 경우, `CryptoPizza`는 `IERC721` 및 `ERC165` 계약에서 상속받습니다.
+// 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#inheritance
+contract CryptoPizza is IERC721, ERC165 {
+ // OpenZeppelin의 SafeMath 라이브러리를 사용하여 산술 연산을 안전하게 수행합니다.
+ // 자세히 알아보기: https://docs.openzeppelin.com/contracts/2.x/api/math#SafeMath
+ using SafeMath for uint256;
+
+ // Solidity의 상수 상태 변수는 다른 언어와 유사하지만
+ // 컴파일 시에 상수인 표현식에서 할당해야 합니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constant-state-variables
+ uint256 constant dnaDigits = 10;
+ uint256 constant dnaModulus = 10 ** dnaDigits;
+ bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;
+
+ // Struct 유형을 사용하면 자신만의 유형을 정의할 수 있습니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/types.html#structs
+ struct Pizza {
+ string name;
+ uint256 dna;
+ }
+
+ // Pizza 구조체의 빈 배열을 생성합니다.
+ Pizza[] public pizzas;
+
+ // 피자 ID에서 소유자 주소로의 매핑
+ mapping(uint256 => address) public pizzaToOwner;
+
+ // 소유자 주소에서 소유한 토큰 수로의 매핑
+ mapping(address => uint256) public ownerPizzaCount;
+
+ // 토큰 ID에서 승인된 주소로의 매핑
+ mapping(uint256 => address) pizzaApprovals;
+
+ // 매핑을 중첩할 수 있습니다. 이 예는 소유자를 운영자 승인에 매핑합니다.
+ mapping(address => mapping(address => bool)) private operatorApprovals;
+
+ // 문자열(이름)과 DNA로부터 임의의 피자를 생성하는 내부 함수
+ function _createPizza(string memory _name, uint256 _dna)
+ // `internal` 키워드는 이 함수가 이 계약과
+ // 이 계약을 파생하는 계약 내에서만 보인다는 것을 의미합니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#visibility-and-getters
+ internal
+ // `isUnique`는 피자가 이미 존재하는지 확인하는 함수 제어자입니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html#function-modifiers
+ isUnique(_name, _dna)
+ {
+ // 피자 배열에 피자를 추가하고 id를 얻습니다.
+ uint256 id = SafeMath.sub(pizzas.push(Pizza(_name, _dna)), 1);
+
+ // 피자 소유자가 현재 사용자와 동일한지 확인합니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions
+
+ // note that address(0)은 제로 주소이며,
+ // pizza[id]가 아직 특정 사용자에게 할당되지 않았음을 나타냅니다.
+
+ assert(pizzaToOwner[id] == address(0));
+
+ // 피자를 소유자에게 매핑합니다.
+ pizzaToOwner[id] = msg.sender;
+ ownerPizzaCount[msg.sender] = SafeMath.add(
+ ownerPizzaCount[msg.sender],
+ 1
+ );
+ }
+
+ // 문자열(이름)로부터 임의의 피자를 생성합니다.
+ function createRandomPizza(string memory _name) public {
+ uint256 randDna = generateRandomDna(_name, msg.sender);
+ _createPizza(_name, randDna);
+ }
+
+ // 문자열(이름)과 소유자 주소(생성자)로부터 임의의 DNA를 생성합니다.
+ function generateRandomDna(string memory _str, address _owner)
+ public
+ // `pure`로 표시된 함수는 상태를 읽거나 수정하지 않을 것을 약속합니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#pure-functions
+ pure
+ returns (uint256)
+ {
+ // 문자열(이름) + 주소(소유자)로부터 임의의 uint를 생성합니다.
+ uint256 rand = uint256(keccak256(abi.encodePacked(_str))) +
+ uint256(_owner);
+ rand = rand % dnaModulus;
+ return rand;
+ }
+
+ // 소유자가 찾은 피자 배열을 반환합니다.
+ function getPizzasByOwner(address _owner)
+ public
+ // `view`로 표시된 함수는 상태를 수정하지 않을 것을 약속합니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#view-functions
+ view
+ returns (uint256[] memory)
+ {
+ // `memory` 저장 위치를 사용하여 이 함수 호출의
+ // 수명 주기 동안만 값을 저장합니다.
+ // 자세히 알아보기: https://solidity.readthedocs.io/en/v0.5.10/introduction-to-smart-contracts.html#storage-memory-and-the-stack
+ uint256[] memory result = new uint256[](ownerPizzaCount[_owner]);
+ uint256 counter = 0;
+ for (uint256 i = 0; i < pizzas.length; i++) {
+ if (pizzaToOwner[i] == _owner) {
+ result[counter] = i;
+ counter++;
+ }
+ }
+ return result;
+ }
+
+ // 피자와 소유권을 다른 주소로 이전합니다.
+ function transferFrom(address _from, address _to, uint256 _pizzaId) public {
+ require(_from != address(0) && _to != address(0), "유효하지 않은 주소입니다.");
+ require(_exists(_pizzaId), "피자가 존재하지 않습니다.");
+ require(_from != _to, "같은 주소로 전송할 수 없습니다.");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "주소가 승인되지 않았습니다.");
+
+ ownerPizzaCount[_to] = SafeMath.add(ownerPizzaCount[_to], 1);
+ ownerPizzaCount[_from] = SafeMath.sub(ownerPizzaCount[_from], 1);
+ pizzaToOwner[_pizzaId] = _to;
+
+ // 가져온 IERC721 계약에 정의된 이벤트를 발생시킵니다.
+ emit Transfer(_from, _to, _pizzaId);
+ _clearApproval(_to, _pizzaId);
+ }
+
+ /**
+ * 주어진 토큰 ID의 소유권을 다른 주소로 안전하게 이전합니다.
+ * 대상 주소가 계약인 경우, `onERC721Received`를 구현해야 하며,
+ * 이는 안전한 전송 시 호출되고 매직 값
+ * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`을 반환해야 합니다.
+ * 그렇지 않으면 전송이 되돌려집니다.
+ */
+ function safeTransferFrom(address from, address to, uint256 pizzaId)
+ public
+ {
+ // solium-disable-next-line arg-overflow
+ this.safeTransferFrom(from, to, pizzaId, "");
+ }
+
+ /**
+ * 주어진 토큰 ID의 소유권을 다른 주소로 안전하게 이전합니다.
+ * 대상 주소가 계약인 경우, `onERC721Received`를 구현해야 하며,
+ * 이는 안전한 전송 시 호출되고 매직 값
+ * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`을 반환해야 합니다.
+ * 그렇지 않으면 전송이 되돌려집니다.
+ */
+ function safeTransferFrom(
+ address from,
+ address to,
+ uint256 pizzaId,
+ bytes memory _data
+ ) public {
+ this.transferFrom(from, to, pizzaId);
+ require(_checkOnERC721Received(from, to, pizzaId, _data), "onERC721Received를 구현해야 합니다.");
+ }
+
+ /**
+ * 대상 주소에서 `onERC721Received`를 호출하는 내부 함수
+ * 대상 주소가 계약이 아닌 경우 호출이 실행되지 않습니다.
+ */
+ function _checkOnERC721Received(
+ address from,
+ address to,
+ uint256 pizzaId,
+ bytes memory _data
+ ) internal returns (bool) {
+ if (!isContract(to)) {
+ return true;
+ }
+
+ bytes4 retval = IERC721Receiver(to).onERC721Received(
+ msg.sender,
+ from,
+ pizzaId,
+ _data
+ );
+ return (retval == _ERC721_RECEIVED);
+ }
+
+ // 피자를 소각합니다 - 토큰을 완전히 파괴합니다.
+ // `external` 함수 제어자는 이 함수가
+ // 계약 인터페이스의 일부이며 다른 계약이 호출할 수 있음을 의미합니다.
+ function burn(uint256 _pizzaId) external {
+ require(msg.sender != address(0), "유효하지 않은 주소입니다.");
+ require(_exists(_pizzaId), "피자가 존재하지 않습니다.");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "주소가 승인되지 않았습니다.");
+
+ ownerPizzaCount[msg.sender] = SafeMath.sub(
+ ownerPizzaCount[msg.sender],
+ 1
+ );
+ pizzaToOwner[_pizzaId] = address(0);
+ }
+
+ // 주소별 피자 수를 반환합니다.
+ function balanceOf(address _owner) public view returns (uint256 _balance) {
+ return ownerPizzaCount[_owner];
+ }
+
+ // id로 찾은 피자의 소유자를 반환합니다.
+ function ownerOf(uint256 _pizzaId) public view returns (address _owner) {
+ address owner = pizzaToOwner[_pizzaId];
+ require(owner != address(0), "유효하지 않은 피자 ID입니다.");
+ return owner;
+ }
+
+ // 다른 주소가 피자의 소유권을 이전하도록 승인합니다.
+ function approve(address _to, uint256 _pizzaId) public {
+ require(msg.sender == pizzaToOwner[_pizzaId], "피자 소유자여야 합니다.");
+ pizzaApprovals[_pizzaId] = _to;
+ emit Approval(msg.sender, _to, _pizzaId);
+ }
+
+ // 특정 피자에 대해 승인된 주소를 반환합니다.
+ function getApproved(uint256 _pizzaId)
+ public
+ view
+ returns (address operator)
+ {
+ require(_exists(_pizzaId), "피자가 존재하지 않습니다.");
+ return pizzaApprovals[_pizzaId];
+ }
+
+ /**
+ * 주어진 토큰 ID의 현재 승인을 지우는 비공개 함수
+ * 주어진 주소가 토큰의 소유자가 아닌 경우 되돌립니다.
+ */
+ function _clearApproval(address owner, uint256 _pizzaId) private {
+ require(pizzaToOwner[_pizzaId] == owner, "피자 소유자여야 합니다.");
+ require(_exists(_pizzaId), "피자가 존재하지 않습니다.");
+ if (pizzaApprovals[_pizzaId] != address(0)) {
+ pizzaApprovals[_pizzaId] = address(0);
+ }
+ }
+
+ /*
+ * 주어진 운영자의 승인을 설정하거나 해제합니다.
+ * 운영자는 보낸 사람을 대신하여 모든 토큰을 이전할 수 있습니다.
+ */
+ function setApprovalForAll(address to, bool approved) public {
+ require(to != msg.sender, "자신의 주소를 승인할 수 없습니다.");
+ operatorApprovals[msg.sender][to] = approved;
+ emit ApprovalForAll(msg.sender, to, approved);
+ }
+
+ // 주어진 소유자가 운영자를 승인했는지 여부를 알려줍니다.
+ function isApprovedForAll(address owner, address operator)
+ public
+ view
+ returns (bool)
+ {
+ return operatorApprovals[owner][operator];
+ }
+
+ // 피자 소유권을 가져옵니다 - 승인된 사용자만 가능합니다.
+ function takeOwnership(uint256 _pizzaId) public {
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "주소가 승인되지 않았습니다.");
+ address owner = this.ownerOf(_pizzaId);
+ this.transferFrom(owner, msg.sender, _pizzaId);
+ }
+
+ // 피자가 존재하는지 확인합니다.
+ function _exists(uint256 pizzaId) internal view returns (bool) {
+ address owner = pizzaToOwner[pizzaId];
+ return owner != address(0);
+ }
+
+ // 주소가 소유자인지 또는 피자를 이전하도록 승인되었는지 확인합니다.
+ function _isApprovedOrOwner(address spender, uint256 pizzaId)
+ internal
+ view
+ returns (bool)
+ {
+ address owner = pizzaToOwner[pizzaId];
+ // 다음으로 인해 solium 검사를 비활성화합니다.
+ // https://github.com/duaraghav8/Solium/issues/175
+ // solium-disable-next-line operator-whitespace
+ return (spender == owner ||
+ this.getApproved(pizzaId) == spender ||
+ this.isApprovedForAll(owner, spender));
+ }
+
+ // 피자가 고유하고 아직 존재하지 않는지 확인합니다.
+ modifier isUnique(string memory _name, uint256 _dna) {
+ bool result = true;
+ for (uint256 i = 0; i < pizzas.length; i++) {
+ if (
+ keccak256(abi.encodePacked(pizzas[i].name)) ==
+ keccak256(abi.encodePacked(_name)) &&
+ pizzas[i].dna == _dna
+ ) {
+ result = false;
+ }
+ }
+ require(result, "같은 이름의 피자가 이미 존재합니다.");
+ _;
+ }
+
+ // 대상 주소가 계약인지 여부를 반환합니다.
+ function isContract(address account) internal view returns (bool) {
+ uint256 size;
+ // 현재 주소에 계약이 있는지 확인하는 더 좋은 방법은 없습니다.
+ // 해당 주소의 코드 크기를 확인하는 것보다.
+ // 이것이 어떻게 작동하는지에 대한 자세한 내용은 https://ethereum.stackexchange.com/a/14016/36603을
+ // 참조하세요.
+ // TODO Serenity 릴리스 전에 이것을 다시 확인하세요. 모든 주소가
+ // 계약이 될 것이기 때문입니다.
+ // solium-disable-next-line security/no-inline-assembly
+ assembly {
+ size := extcodesize(account)
+ }
+ return size > 0;
+ }
+}
+```
+
+## 더 읽어보기 {#further-reading}
+
+스마트 계약에 대한 더 완전한 개요를 원한다면 Solidity와 Vyper의 문서를 확인하세요:
+
+- [솔리디티](https://docs.soliditylang.org/)
+- [Vyper](https://docs.vyperlang.org/en/stable/)
+
+## 관련 주제 {#related-topics}
+
+- [스마트 계약](/developers/docs/smart-contracts/)
+- [이더리움 가상 머신](/developers/docs/evm/)
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [계약 크기 제한에 대응하기 위한 계약 축소](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _– 스마트 계약의 크기를 줄이기 위한 몇 가지 실용적인 팁입니다._
+- [이벤트를 사용하여 스마트 계약에서 데이터 기록하기](/developers/tutorials/logging-events-smart-contracts/) _– 스마트 계약 이벤트에 대한 소개와 이를 사용하여 데이터를 기록하는 방법입니다._
+- [Solidity에서 다른 계약과 상호작용하기](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– 기존 계약에서 스마트 계약을 배포하고 상호작용하는 방법입니다._
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/compiling/index.md b/public/content/translations/ko/developers/docs/smart-contracts/compiling/index.md
new file mode 100644
index 00000000000..4a42e91d264
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/compiling/index.md
@@ -0,0 +1,282 @@
+---
+title: "스마트 계약 컴파일"
+description: "스마트 계약을 컴파일해야 하는 이유와 컴파일이 실제로 무엇을 하는지에 대한 설명입니다."
+lang: ko
+incomplete: true
+---
+
+웹 앱과 이더리움 가상 머신(EVM)이 스마트 계약을 이해할 수 있도록 하기 위해 계약을 컴파일해야 합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+컴파일에 대해 읽기 전에 [스마트 계약](/developers/docs/smart-contracts/)과 [이더리움 가상 머신](/developers/docs/evm/)에 대한 소개를 읽어보시면 도움이 될 수 있습니다.
+
+## EVM {#the-evm}
+
+[EVM](/developers/docs/evm/)이 계약을 실행하려면 바이트코드여야 합니다. 컴파일이 이 작업을 수행합니다.
+
+```solidity
+pragma solidity 0.4.24;
+
+contract Greeter {
+
+ function greet() public view returns (string memory) {
+ return "Hello";
+ }
+
+}
+```
+
+**다음과 같이**
+
+```
+PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x46 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x80 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x48656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT 0xec 0xe 0xf5 0xf8 SLT 0xc7 0x2d STATICCALL ADDRESS SHR 0xdb COINBASE 0xb1 BALANCE 0xe8 0xf8 DUP14 0xda 0xad DUP13 LOG1 0x4c 0xb4 0x26 0xc2 DELEGATECALL PUSH7 0x8994D3E002900
+```
+
+이를 연산 부호라고 합니다. EVM 옵코드는 이더리움 가상 머신(EVM)이 실행할 수 있는 저수준 명령어입니다. 각 옵코드는 산술 연산, 논리 연산, 데이터 조작, 제어 흐름 등을 나타냅니다.
+
+[연산 부호에 대해 더 알아보기](/developers/docs/evm/opcodes/)
+
+## 웹 애플리케이션 {#web-applications}
+
+컴파일러는 애플리케이션이 계약을 이해하고 계약의 함수를 호출하는 데 필요한 애플리케이션 바이너리 인터페이스(ABI)도 생성합니다.
+
+ABI는 배포된 계약과 스마트 계약 기능을 설명하는 JSON 파일입니다. 이는 웹2와 웹3 간의 격차를 좁히는 데 도움이 됩니다.
+
+[JavaScript 클라이언트 라이브러리](/developers/docs/apis/javascript/)는 웹 앱 인터페이스에서 스마트 계약을 호출할 수 있도록 ABI를 읽습니다.
+
+아래는 ERC-20 토큰 계약에 대한 ABI입니다. ERC-20은 이더리움에서 거래할 수 있는 토큰입니다.
+
+```json
+[
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_from",
+ "type": "address"
+ },
+ {
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "name": "balance",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "name": "_spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ }
+]
+```
+
+## 더 읽어보기 {#further-reading}
+
+- [ABI 사양](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _– Solidity_
+
+## 관련 주제 {#related-topics}
+
+- [JavaScript 클라이언트 라이브러리](/developers/docs/apis/javascript/)
+- [이더리움 가상 머신](/developers/docs/evm/)
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/composability/index.md b/public/content/translations/ko/developers/docs/smart-contracts/composability/index.md
new file mode 100644
index 00000000000..562f20c0765
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/composability/index.md
@@ -0,0 +1,76 @@
+---
+title: "스마트 계약 구성 가능성"
+description: "스마트 계약이 레고 블록처럼 결합되어 기존 구성 요소를 재사용하여 복잡한 탈중앙화앱을 구축하는 방법을 알아보세요."
+lang: ko
+incomplete: true
+---
+
+## 간단한 소개 {#a-brief-introduction}
+
+스마트 컨트랙트는 이더리움 상에서 공개되어 오픈 API처럼 생각할 수 있습니다. dapp 개발자가 되기 위해서는 직접 스마트 계약을 작성할 필요가 없습니다. 계약과 상호작용하는 방법만 알면 됩니다. 예를 들어, 탈중앙화 거래소인 [Uniswap](https://uniswap.exchange/swap)의 기존 스마트 계약을 사용하여 앱의 모든 토큰 스왑 로직을 처리할 수 있습니다. 처음부터 시작할 필요가 없습니다. [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) 및 [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts) 계약 중 일부를 확인해 보세요.
+
+## 구성 가능성이란? {#what-is-composability}
+
+구성 가능성이란 별개의 구성 요소를 결합하여 새로운 시스템이나 출력을 생성하는 것입니다. 소프트웨어 개발에서 구성 가능성은 개발자가 기존 소프트웨어 구성 요소를 재사용하여 새로운 애플리케이션을 구축할 수 있음을 의미합니다. 구성 가능성을 이해하는 좋은 방법은 구성 요소를 레고 블록으로 생각하는 것입니다. 각 레고 블록은 다른 블록과 결합될 수 있으며, 서로 다른 레고 블록을 결합하여 복잡한 구조를 만들 수 있습니다.
+
+이더리움에서는 모든 스마트 계약이 일종의 레고입니다. 다른 프로젝트의 스마트 계약을 사용하여 프로젝트의 구성 요소로 사용할 수 있습니다. 이는 기본 기능을 처음부터 다시 만들 필요가 없다는 것을 의미합니다.
+
+## 구성 가능성은 어떻게 작동합니까? {#how-does-composability-work}
+
+이더리움 스마트 계약은 공개 API와 같아서 누구나 계약과 상호작용하거나 이를 dapp에 통합하여 기능을 추가할 수 있습니다. 스마트 계약 구성 가능성은 주로 세 가지 원칙에 따라 작동합니다: 모듈성, 자율성, 검색 가능성:
+
+**1.** **모듈성**: 개별 구성 요소가 특정 작업을 수행할 수 있는 능력입니다. 이더리움에서는 모든 스마트 계약이 특정 사용 사례를 가지고 있습니다(유니스왑 예시에서 보여준 것처럼).
+
+**2.** **자율성**: 구성 가능한 구성 요소는 독립적으로 작동할 수 있어야 합니다. 이더리움의 각 스마트 계약은 스스로 실행되며 시스템의 다른 부분에 의존하지 않고도 작동할 수 있습니다.
+
+**3.** **검색 가능성**: 외부 계약이나 소프트웨어 라이브러리가 공개적으로 사용 가능하지 않은 경우 개발자가 이를 호출하거나 애플리케이션에 통합할 수 없습니다. 스마트 계약은 기본적으로 오픈소스입니다. 누구나 스마트 계약을 호출하거나 코드베이스를 포크할 수 있습니다.
+
+## 구성 가능성의 이점 {#benefits-of-composability}
+
+### 개발 주기 단축 {#shorter-development-cycle}
+
+구성 가능성은 개발자가 [탈중앙화앱](/apps/#what-are-dapps)을 만들 때 해야 할 작업을 줄여줍니다. [Naval Ravikant가 말했듯이:](https://twitter.com/naval/status/1444366754650656770) "오픈 소스는 모든 문제를 한 번만 해결하면 된다는 것을 의미합니다."
+
+어떤 문제를 해결하는 스마트 계약이 있다면, 다른 개발자들은 그것을 재사용할 수 있으므로 같은 문제를 다시 해결할 필요가 없습니다. 이 방법으로 개발자는 기존 소프트웨어 라이브러리를 사용하여 새로운 dapp을 만들기 위해 추가 기능을 추가할 수 있습니다.
+
+### 혁신 증대 {#greater-innovation}
+
+구성 가능성은 개발자가 오픈소스 코드를 자유롭게 재사용, 수정, 복제 또는 통합하여 원하는 결과를 만들 수 있기 때문에 혁신과 실험을 장려합니다. 결과적으로 개발 팀은 기본 기능에 더 적은 시간을 할애하고 새로운 기능을 실험하는 데 더 많은 시간을 할애할 수 있습니다.
+
+### 더 나은 사용자 경험 {#better-user-experience}
+
+이더리움 생태계의 구성 요소 간 상호 운용성은 사용자 경험을 향상시킵니다. dapp이 외부 스마트 계약을 통합하면 사용자들은 더 큰 기능을 사용할 수 있습니다.
+
+우리는 상호 운용성의 이점을 설명하기 위해 차익 거래의 예를 사용할 것입니다:
+
+`exchange A`에서 토큰이 `exchange B`보다 더 높은 가격으로 거래된다면, 가격 차이를 이용해 수익을 낼 수 있습니다. 하지만 거래에 자금을 댈 충분한 자본이 있는 경우에만 가능합니다(즉, `exchange B`에서 토큰을 구매하여 `exchange A`에 판매하는 것).
+
+거래 자금을 충분히 확보하지 못한 경우, 플래시 론이 적합할 수 있습니다. [플래시 론](/defi/#flash-loans)은 고도로 기술적이지만, 기본 개념은 (담보 없이) 자산을 빌리고 _하나의_ 거래 내에서 동일한 자산을 반환할 수 있다는 것입니다.
+
+처음의 예시로 돌아가서, 차익 거래자는 대규모 플래시 론을 받아 `exchange B`에서 토큰을 구매하고 `exchange A`에서 판매한 후, 동일한 거래 내에서 원금과 이자를 상환하고 수익을 챙길 수 있습니다. 이러한 복잡한 로직은 여러 계약에 대한 호출을 결합해야 하며, 이는 스마트 계약이 상호운용성이 부족할 경우 불가능할 것입니다.
+
+## 이더리움의 구성 가능성 예시 {#composability-in-ethereum}
+
+### 토큰 스왑 {#token-swaps}
+
+ETH로 거래 비용을 지불해야 하는 Dapp을 생성하는 경우, 토큰 교환 로직을 통합하여 사용자가 다른 ERC-20 토큰으로 지불할 수 있도록 할 수 있습니다. 코드는 사용자의 토큰을 ETH로 자동 변환한 후 계약이 호출된 기능을 실행할 수 있습니다.
+
+### 거버넌스 {#governance}
+
+[DAO](/dao/)를 위한 맞춤형 거버넌스 시스템을 구축하는 것은 비용과 시간이 많이 소요될 수 있습니다. 대신 [Aragon Client](https://client.aragon.org/)와 같은 오픈소스 거버넌스 툴킷을 사용하여 DAO를 부트스트랩하고 거버넌스 프레임워크를 신속하게 만들 수 있습니다.
+
+### 신원 관리 {#identity-management}
+
+맞춤 인증 시스템을 구축하거나 중앙 집중식 제공자에 의존하는 대신, 분산된 신원 (DID) 도구를 통합하여 사용자 인증을 관리할 수 있습니다. 예를 들어 [SpruceID](https://www.spruceid.com/)는 사용자가 이더리움 지갑으로 신원을 인증할 수 있도록 하는 "이더리움으로 로그인" 기능을 제공하는 오픈소스 툴킷입니다.
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [create-eth-app으로 탈중앙화앱 프론트엔드 개발 시작하기](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/) _– create-eth-app을 사용하여 인기 있는 스마트 계약이 포함된 앱을 바로 만드는 방법에 대한 개요입니다._
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+- [구성 가능성은 혁신이다](https://a16zcrypto.com/posts/article/how-composability-unlocks-crypto-and-everything-else/)
+- [웹3에서 구성 가능성이 중요한 이유](https://hackernoon.com/why-composability-matters-for-web3)
+- [구성 가능성이란 무엇인가?](https://blog.aragon.org/what-is-composability/#:~:text=Aragon,connect%20to%20every%20other%20piece.)
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/ko/developers/docs/smart-contracts/deploying/index.md
new file mode 100644
index 00000000000..0b24afc72f4
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/deploying/index.md
@@ -0,0 +1,81 @@
+---
+title: "스마트 컨트랙트 배포"
+description: "필수 구성 요소, 도구, 배포 단계를 포함하여 이더리움 네트워크에 스마트 계약을 배포하는 방법을 알아보세요."
+lang: ko
+---
+
+이더리움 네트워크 유저들이 스마트 계약을 이용할 수 있으려면 스마트계약 배포를 마쳐야 합니다.
+
+스마트 계약 배포는 컴파일된 코드를 포함하는 이더리움 거래를 받는 이를 지정하지 않고 보내는 식으로 이루어 집니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+스마트 계약을 배포하기 전에 [이더리움 네트워크](/developers/docs/networks/), [거래](/developers/docs/transactions/) 및 [스마트 계약의 구조](/developers/docs/smart-contracts/anatomy/)를 이해해야 합니다.
+
+계약은 블록체인에 저장되므로 배포 시 이더(ETH)가 필요합니다. 따라서 이더리움의 [가스 및 수수료](/developers/docs/gas/)에 대해 잘 알고 있어야 합니다.
+
+마지막으로, 계약을 배포하기 전에 컴파일해야 하므로 [스마트 계약 컴파일](/developers/docs/smart-contracts/compiling/)에 대해 읽어보시기 바랍니다.
+
+## 스마트 계약 배포 방법 {#how-to-deploy-a-smart-contract}
+
+### 필요한 것 {#what-youll-need}
+
+- 계약의 바이트코드 – [컴파일](/developers/docs/smart-contracts/compiling/)을 통해 생성됩니다.
+- 가스비(이더) - 일반 거래처럼 가스 한도를 설정이 필요합니다. 그러나 일반 거래보다는 계약 배포가 더 많은 가스 한도를 설정하십시오.
+- 배포 스크립트 또는 플러그인
+- 자체 노드 실행, 공용 노드 연결, 또는 [노드 서비스](/developers/docs/nodes-and-clients/nodes-as-a-service/)의 API 키를 통한 [이더리움 노드](/developers/docs/nodes-and-clients/) 액세스
+
+### 스마트 계약 배포 단계 {#steps-to-deploy}
+
+구체적인 단계는 개발 프레임워크에 따라 다릅니다. 예를 들어, [계약 배포에 관한 Hardhat 문서](https://hardhat.org/docs/tutorial/deploying) 또는 [스마트 계약 배포 및 검증에 관한 Foundry 문서](https://book.getfoundry.sh/forge/deploying)를 확인할 수 있습니다. 배포되면 계약은 다른 [계정](/developers/docs/accounts/)과 마찬가지로 이더리움 주소를 갖게 되며, [소스 코드 검증 도구](/developers/docs/smart-contracts/verifying/#source-code-verification-tools)를 사용하여 확인할 수 있습니다.
+
+## 관련 도구 {#related-tools}
+
+**Remix - _Remix IDE는 이더리움과 같은 블록체인을 위한 스마트 계약을 개발, 배포 및 관리할 수 있도록 지원합니다_**
+
+- [Remix](https://remix.ethereum.org)
+
+**Tenderly - _스마트 계약을 개발, 테스트, 모니터링, 운영하기 위한 디버깅, 관찰 가능성 및 인프라 구성 요소를 제공하는 Web3 개발 플랫폼_**
+
+- [tenderly.co](https://tenderly.co/)
+- [문서](https://docs.tenderly.co/)
+- [GitHub](https://github.com/Tenderly)
+- [Discord](https://discord.gg/eCWjuvt)
+
+**Hardhat - _이더리움 소프트웨어를 컴파일, 배포, 테스트 및 디버그할 수 있는 개발 환경_**
+
+- [hardhat.org](https://hardhat.org/getting-started/)
+- [계약 배포에 관한 문서](https://hardhat.org/docs/tutorial/deploying)
+- [GitHub](https://github.com/nomiclabs/hardhat)
+- [Discord](https://discord.com/invite/TETZs2KK4k)
+
+**thirdweb - _단일 명령어로 모든 EVM 호환 체인에 계약을 쉽게 배포하세요_**
+
+- [문서](https://portal.thirdweb.com/deploy/)
+
+**Crossmint - _엔터프라이즈급 웹3 개발 플랫폼으로 스마트 계약을 배포하고, 신용카드 및 크로스체인 결제를 활성화하며, API를 사용하여 NFT를 생성, 배포, 판매, 저장 및 편집할 수 있습니다._**
+
+- [crossmint.com](https://www.crossmint.com)
+- [개발문서](https://docs.crossmint.com)
+- [Discord](https://discord.com/invite/crossmint)
+- [블로그](https://blog.crossmint.com)
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [첫 번째 스마트 계약 배포하기](/developers/tutorials/deploying-your-first-smart-contract/) _– 이더리움 테스트넷에 첫 번째 스마트 계약을 배포하는 방법을 소개합니다._
+- [Hello World | 스마트 계약 튜토리얼](/developers/tutorials/hello-world-smart-contract/) _– 이더리움에 기본적인 스마트 계약을 생성 및 배포하는, 따라하기 쉬운 튜토리얼입니다._
+- [Solidity에서 다른 계약과 상호작용하기](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– 기존 계약에서 스마트 계약을 배포하고 상호작용하는 방법입니다._
+- [계약 크기 줄이는 방법](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- 계약 크기를 제한 아래로 줄여 가스를 절약하는 방법_
+
+## 더 읽어보기 {#further-reading}
+
+- [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_
+- [Hardhat으로 계약 배포하기](https://hardhat.org/docs/tutorial/deploying) - _Nomic Labs_
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [개발 프레임워크](/developers/docs/frameworks/)
+- [이더리움 노드 실행하기](/developers/docs/nodes-and-clients/run-a-node/)
+- [서비스형 노드](/developers/docs/nodes-and-clients/nodes-as-a-service)
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/ko/developers/docs/smart-contracts/formal-verification/index.md
new file mode 100644
index 00000000000..6fb738e6963
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/formal-verification/index.md
@@ -0,0 +1,284 @@
+---
+title: "스마트 계약의 형식 검증"
+description: "이더리움 스마트 계약을 위한 형식 검증 개요"
+lang: ko
+---
+
+[스마트 계약](/developers/docs/smart-contracts/)은 새로운 사용 사례를 제시하고 사용자에게 가치를 창출하는 탈중앙화되고 신뢰가 필요 없으며 견고한 애플리케이션을 만들 수 있도록 합니다. 스마트 계약은 막대한 가치를 다루기 때문에 보안은 개발자에게 매우 중요한 고려 사항입니다.
+
+형식 검증은 [스마트 계약 보안](/developers/docs/smart-contracts/security/)을 향상시키기 위해 권장되는 기술 중 하나입니다. 프로그램을 명시하고, 설계하고, 검증하기 위해 [형식적 방법](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/)을 사용하는 형식 검증은 수년 동안 중요한 하드웨어 및 소프트웨어 시스템의 정확성을 보장하는 데 사용되어 왔습니다.
+
+스마트 계약에 구현될 때, 형식 검증은 계약의 비즈니스 로직이 사전에 정의된 사양을 충족함을 증명할 수 있습니다. 테스트와 같이 계약 코드의 정확성을 평가하는 다른 방법에 비해 형식 검증은 스마트 계약이 기능적으로 올바르다는 것을 더 강력하게 보장합니다.
+
+## 형식 검증이란 무엇인가요? {#what-is-formal-verification}
+
+형식 검증은 형식 사양에 대한 시스템의 정확성을 평가하는 과정을 의미합니다. 간단히 말해 형식 검증을 통해 시스템의 동작이 일부 요구 사항을 충족하는지(즉, 원하는 대로 작동하는지) 확인할 수 있습니다.
+
+시스템(이 경우 스마트 계약)의 예상 동작은 형식 모델링을 사용하여 설명되는 반면, 사양 언어는 형식적 속성을 생성할 수 있도록 합니다. 형식 검증 기술은 계약의 구현이 해당 사양을 준수하는지 검증하고 전자의 정확성에 대한 수학적 증명을 도출할 수 있습니다. 계약이 사양을 충족하면 '기능적으로 올바름', '설계에 따라 올바름' 또는 '구성에 따라 올바름'으로 설명됩니다.
+
+### 형식 모델이란 무엇인가요? {#what-is-a-formal-model}
+
+컴퓨터 과학에서 [형식 모델](https://en.wikipedia.org/wiki/Model_of_computation)은 계산 과정에 대한 수학적 설명입니다. 프로그램은 수학적 함수(방정식)로 추상화되며, 모델은 입력이 주어졌을 때 함수에 대한 출력이 어떻게 계산되는지를 설명합니다.
+
+형식 모델은 프로그램의 동작 분석을 평가할 수 있는 추상화 수준을 제공합니다. 형식 모델의 존재는 해당 모델의 바람직한 속성을 설명하는 형식 사양을 생성할 수 있게 합니다.
+
+형식 검증을 위해 스마트 계약을 모델링하는 데는 여러 기술이 사용됩니다. 예를 들어, 일부 모델은 스마트 계약의 상위 수준 동작에 대해 추론하는 데 사용됩니다. 이러한 모델링 기술은 스마트 계약에 블랙박스 관점을 적용하여, 입력을 수락하고 해당 입력을 기반으로 계산을 실행하는 시스템으로 봅니다.
+
+상위 수준 모델은 스마트 계약과 외부 소유 계정(EOA), 계약 계정, 블록체인 환경과 같은 외부 에이전트 간의 관계에 중점을 둡니다. 이러한 모델은 특정 사용자 상호 작용에 대한 계약의 동작 방식을 지정하는 속성을 정의하는 데 유용합니다.
+
+반대로, 다른 형식 모델은 스마트 계약의 하위 수준 동작에 중점을 둡니다. 상위 수준 모델은 계약의 기능에 대한 추론에 도움이 될 수 있지만, 구현의 내부 작동에 대한 세부 정보를 포착하지 못할 수 있습니다. 하위 수준 모델은 프로그램 분석에 화이트박스 관점을 적용하고 프로그램 추적 및 [제어 흐름 그래프](https://en.wikipedia.org/wiki/Control-flow_graph)와 같은 스마트 계약 애플리케이션의 하위 수준 표현에 의존하여 계약 실행과 관련된 속성을 추론합니다.
+
+하위 수준 모델은 이더리움의 실행 환경(즉, [EVM](/developers/docs/evm/))에서 스마트 계약의 실제 실행을 나타내므로 이상적인 것으로 간주됩니다. 하위 수준 모델링 기술은 스마트 계약에서 중요한 안전 속성을 설정하고 잠재적인 취약점을 감지하는 데 특히 유용합니다.
+
+### 형식 사양이란 무엇인가요? {#what-is-a-formal-specification}
+
+사양은 특정 시스템이 충족해야 하는 기술적 요구 사항입니다. 프로그래밍에서 사양은 프로그램 실행에 대한 일반적인 아이디어(즉, 프로그램이 무엇을 해야 하는지)를 나타냅니다.
+
+스마트 계약의 맥락에서 형식 사양은 계약이 충족해야 하는 요구 사항에 대한 형식적 설명인 속성을 의미합니다. 이러한 속성은 '불변성'으로 설명되며 예외 없이 모든 가능한 상황에서 참으로 유지되어야 하는 계약 실행에 대한 논리적 주장을 나타냅니다.
+
+따라서 형식 사양을 스마트 계약의 의도된 실행을 설명하는 형식 언어로 작성된 문장의 모음으로 생각할 수 있습니다. 사양은 계약의 속성을 다루고 다양한 상황에서 계약이 어떻게 작동해야 하는지 정의합니다. 형식 검증의 목적은 스마트 계약이 이러한 속성(불변성)을 소유하고 있는지, 그리고 이러한 속성이 실행 중에 위반되지 않는지를 확인하는 것입니다.
+
+형식 사양은 스마트 계약의 보안 구현을 개발하는 데 중요합니다. 불변성을 구현하지 못하거나 실행 중에 속성이 위반된 계약은 기능을 손상시키거나 악의적인 익스플로잇을 유발할 수 있는 취약점에 노출되기 쉽습니다.
+
+## 스마트 계약의 형식 사양 유형 {#formal-specifications-for-smart-contracts}
+
+형식 사양을 통해 프로그램 실행의 정확성에 대한 수학적 추론이 가능합니다. 형식 모델과 마찬가지로 형식 사양은 계약 구현의 상위 수준 속성이나 하위 수준 동작을 포착할 수 있습니다.
+
+형식 사양은 프로그램의 속성에 대한 형식적 추론을 허용하는 [프로그램 논리](https://en.wikipedia.org/wiki/Logic_programming)의 요소를 사용하여 파생됩니다. 프로그램 논리에는 프로그램의 예상 동작을 (수학적 언어로) 표현하는 형식 규칙이 있습니다. [도달 가능성 논리](https://en.wikipedia.org/wiki/Reachability_problem), [시간 논리](https://en.wikipedia.org/wiki/Temporal_logic), [호어 논리](https://en.wikipedia.org/wiki/Hoare_logic)를 포함하여 형식 사양을 만드는 데 다양한 프로그램 논리가 사용됩니다.
+
+스마트 계약에 대한 형식 사양은 크게 **상위 수준** 또는 **하위 수준** 사양으로 분류할 수 있습니다. 사양이 속한 범주에 관계없이 분석 중인 시스템의 속성을 적절하고 명확하게 설명해야 합니다.
+
+### 상위 수준 사양 {#high-level-specifications}
+
+이름에서 알 수 있듯이 상위 수준 사양('모델 지향 사양'이라고도 함)은 프로그램의 상위 수준 동작을 설명합니다. 상위 수준 사양은 스마트 계약을 작업을 수행하여 상태 간에 전환할 수 있는 [유한 상태 머신](https://en.wikipedia.org/wiki/Finite-state_machine)(FSM)으로 모델링하며, 시간 논리를 사용하여 FSM 모델의 형식적 속성을 정의합니다.
+
+[시간 논리](https://en.wikipedia.org/wiki/Temporal_logic)는 '시간의 관점에서 한정된 명제에 대해 추론하기 위한 규칙(예: '나는 _항상_ 배고프다' 또는 '나는 _결국_ 배고플 것이다')'입니다. 형식 검증에 적용될 때, 시간 논리는 상태 머신으로 모델링된 시스템의 올바른 동작에 대한 주장을 진술하는 데 사용됩니다. 특히, 시간 논리는 스마트 계약이 있을 수 있는 미래 상태와 상태 간 전환 방법을 설명합니다.
+
+상위 수준 사양은 일반적으로 스마트 계약에 대한 두 가지 중요한 시간적 속성인 안전성과 활성을 포착합니다. 안전성 속성은 '나쁜 일은 절대 일어나지 않는다'는 아이디어를 나타내며 일반적으로 불변성을 표현합니다. 안전성 속성은 [교착 상태](https://www.techtarget.com/whatis/definition/deadlock)로부터의 자유와 같은 일반적인 소프트웨어 요구 사항을 정의하거나 계약에 대한 도메인별 속성(예: 함수에 대한 접근 제어의 불변성, 상태 변수의 허용 값 또는 토큰 전송 조건)을 표현할 수 있습니다.
+
+예를 들어, ERC-20 토큰 계약에서 `transfer()` 또는 `transferFrom()` 사용 조건을 다루는 다음과 같은 안전성 요구 사항을 살펴보겠습니다. _'전송자의 잔액은 전송 요청된 토큰의 양보다 결코 낮아서는 안 된다.'_ 계약 불변성에 대한 이 자연어 설명은 형식(수학적) 사양으로 변환될 수 있으며, 그 후 유효성을 엄격하게 확인할 수 있습니다.
+
+활성 속성은 '결국 좋은 일이 일어난다'고 주장하며, 계약이 여러 상태를 거쳐 진행할 수 있는 능력과 관련이 있습니다. 활성 속성의 예로는 '유동성'이 있으며, 이는 요청 시 사용자에게 잔액을 전송하는 계약의 능력을 의미합니다. [Parity 지갑 사건](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html)에서 발생했던 것처럼 이 속성이 위반되면 사용자는 계약에 저장된 자산을 인출할 수 없게 됩니다.
+
+### 하위 수준 사양 {#low-level-specifications}
+
+상위 수준 사양은 계약의 유한 상태 모델을 시작점으로 삼고 이 모델의 바람직한 속성을 정의합니다. 이와 대조적으로 하위 수준 사양('속성 지향 사양'이라고도 함)은 종종 프로그램(스마트 계약)을 수학적 함수 모음으로 구성된 시스템으로 모델링하고 이러한 시스템의 올바른 동작을 설명합니다.
+
+간단히 말해, 하위 수준 사양은 프로그램 추적을 분석하고 이러한 추적을 통해 스마트 계약의 속성을 정의하려고 시도합니다. 추적은 스마트 계약의 상태를 변경하는 함수 실행 시퀀스를 의미합니다. 따라서 하위 수준 사양은 계약의 내부 실행에 대한 요구 사항을 지정하는 데 도움이 됩니다.
+
+하위 수준 형식 사양은 호어 스타일 속성 또는 실행 경로에 대한 불변성으로 주어질 수 있습니다.
+
+### 호어 스타일 속성 {#hoare-style-properties}
+
+[호어 논리](https://en.wikipedia.org/wiki/Hoare_logic)는 스마트 계약을 포함한 프로그램의 정확성에 대해 추론하기 위한 일련의 형식 규칙을 제공합니다. 호어 스타일 속성은 호어 삼중항 `{P}c{Q}`로 표시됩니다. 여기서 `c`는 프로그램이고 `P`와 `Q`는 `c`의 상태(즉, 프로그램)에 대한 술어이며, 각각 공식적으로 사전 조건과 사후 조건으로 설명됩니다.
+
+사전 조건은 함수의 올바른 실행에 필요한 조건을 설명하는 술어입니다. 계약을 호출하는 사용자는 이 요구 사항을 충족해야 합니다. 사후 조건은 함수가 올바르게 실행될 경우 함수가 설정하는 조건을 설명하는 술어입니다. 사용자는 함수를 호출한 후 이 조건이 참일 것으로 기대할 수 있습니다. 호어 논리에서 불변성은 함수 실행에 의해 보존되는(즉, 변경되지 않는) 술어입니다.
+
+호어 스타일 사양은 _부분적 정확성_ 또는 전체 정확성을 보장할 수 있습니다. 계약 함수의 구현은 함수가 실행되기 전에 사전 조건이 참이고 실행이 종료되면 사후 조건도 참인 경우 '부분적으로 올바름'입니다. 함수가 실행되기 전에 사전 조건이 참이고, 실행이 종료되는 것이 보장되며, 종료될 때 사후 조건이 참이면 전체 정확성의 증명이 얻어집니다.
+
+일부 실행은 종료되기 전에 지연되거나 전혀 종료되지 않을 수 있으므로 전체 정확성의 증명을 얻는 것은 어렵습니다. 즉, 이더리움의 가스 메커니즘이 무한 프로그램 루프를 방지하므로(실행이 성공적으로 종료되거나 '가스 부족' 오류로 인해 종료됨) 실행이 종료되는지 여부는 논란의 여지가 있는 문제입니다.
+
+호어 논리를 사용하여 생성된 스마트 계약 사양에는 계약의 함수 및 루프 실행에 대해 정의된 사전 조건, 사후 조건 및 불변성이 포함됩니다. 사전 조건에는 종종 함수에 대한 잘못된 입력 가능성이 포함되며, 사후 조건은 이러한 입력에 대한 예상 응답(예: 특정 예외 발생)을 설명합니다. 이러한 방식으로 호어 스타일 속성은 계약 구현의 정확성을 보장하는 데 효과적입니다.
+
+많은 형식 검증 프레임워크는 함수의 의미론적 정확성을 증명하기 위해 호어 스타일 사양을 사용합니다. 또한 솔리디티의 `require` 및 `assert` 문을 사용하여 호어 스타일 속성(어설션으로)을 계약 코드에 직접 추가할 수도 있습니다.
+
+`require` 문은 사전 조건 또는 불변성을 표현하며 종종 사용자 입력을 검증하는 데 사용되는 반면, `assert`는 안전에 필요한 사후 조건을 포착합니다. 예를 들어, 호출하는 계정의 ID에 대한 사전 조건 확인으로 `require`를 사용하여 함수에 대한 적절한 접근 제어(안전성 속성의 예)를 달성할 수 있습니다. 마찬가지로, 계약의 상태 변수 허용 값에 대한 불변성(예: 유통 중인 총 토큰 수)은 함수 실행 후 계약의 상태를 확인하기 위해 `assert`를 사용하여 위반으로부터 보호될 수 있습니다.
+
+### 추적 수준 속성 {#trace-level-properties}
+
+추적 기반 사양은 계약을 여러 상태 간에 전환하는 작업과 이러한 작업 간의 관계를 설명합니다. 앞서 설명했듯이 추적은 특정 방식으로 계약의 상태를 변경하는 작업의 시퀀스입니다.
+
+이 접근 방식은 미리 정의된 전환 집합(계약 함수에 의해 설명됨)과 함께 일부 미리 정의된 상태(상태 변수에 의해 설명됨)를 가진 상태 전환 시스템으로서의 스마트 계약 모델에 의존합니다. 또한, 프로그램의 실행 흐름을 그래픽으로 표현한 [제어 흐름 그래프](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/)(CFG)가 계약의 운영 의미론을 설명하는 데 자주 사용됩니다. 여기서 각 추적은 제어 흐름 그래프의 경로로 표시됩니다.
+
+주로 추적 수준 사양은 스마트 계약의 내부 실행 패턴에 대해 추론하는 데 사용됩니다. 추적 수준 사양을 생성함으로써 스마트 계약에 대한 허용 가능한 실행 경로(즉, 상태 전환)를 주장합니다. 기호 실행과 같은 기술을 사용하여 형식 모델에 정의되지 않은 경로를 실행이 따르지 않음을 형식적으로 검증할 수 있습니다.
+
+[DAO](/dao/) 계약의 예를 사용하여 추적 수준 속성을 설명해 보겠습니다. 이 계약에는 공개적으로 접근 가능한 몇 가지 기능이 있습니다. 여기서는 DAO 계약이 사용자가 다음 작업을 수행할 수 있도록 허용한다고 가정합니다.
+
+- 자금 예치
+
+- 자금 예치 후 제안에 투표
+
+- 제안에 투표하지 않으면 환불 요청
+
+추적 수준 속성의 예로는 _'자금을 예치하지 않은 사용자는 제안에 투표할 수 없음'_ 또는 '제안에 투표하지 않은 사용자는 항상 환불을 요청할 수 있어야 함'이 있습니다. 두 속성 모두 선호되는 실행 순서를 주장합니다(투표는 자금을 예치하기 전에 발생할 수 없으며 환불 요청은 제안에 투표한 후에 발생할 수 없습니다).
+
+## 스마트 계약의 형식 검증 기술 {#formal-verification-techniques}
+
+### 모델 체킹 {#model-checking}
+
+모델 체킹은 알고리즘이 스마트 계약의 형식 모델을 해당 사양과 대조하여 확인하는 형식 검증 기술입니다. 모델 체킹에서 스마트 계약은 종종 상태 전환 시스템으로 표현되며, 허용 가능한 계약 상태에 대한 속성은 시간 논리를 사용하여 정의됩니다.
+
+모델 체킹은 시스템(즉, 계약)의 추상적인 수학적 표현을 생성하고 [명제 논리](https://www.baeldung.com/cs/propositional-logic)에 기반한 공식을 사용하여 이 시스템의 속성을 표현해야 합니다. 이는 모델 체킹 알고리즘의 작업, 즉 수학적 모델이 주어진 논리 공식을 만족함을 증명하는 작업을 단순화합니다.
+
+형식 검증에서의 모델 체킹은 주로 시간 경과에 따른 계약의 동작을 설명하는 시간적 속성을 평가하는 데 사용됩니다. 스마트 계약의 시간적 속성에는 이전에 설명한 안전성과 활성이 포함됩니다.
+
+예를 들어, 접근 제어와 관련된 보안 속성(예: _계약 소유자만 `selfdestruct`를 호출할 수 있음_)은 형식 논리로 작성할 수 있습니다. 그 후, 모델 체킹 알고리즘은 계약이 이 형식 사양을 만족하는지 검증할 수 있습니다.
+
+모델 체킹은 상태 공간 탐색을 사용하며, 이는 스마트 계약의 모든 가능한 상태를 구성하고 속성 위반을 초래하는 도달 가능한 상태를 찾으려고 시도하는 것을 포함합니다. 그러나 이는 무한한 수의 상태( '상태 폭발 문제'로 알려짐)로 이어질 수 있으므로, 모델 체커는 스마트 계약의 효율적인 분석을 가능하게 하기 위해 추상화 기술에 의존합니다.
+
+### 정리 증명 {#theorem-proving}
+
+정리 증명은 스마트 계약을 포함한 프로그램의 정확성에 대해 수학적으로 추론하는 방법입니다. 계약 시스템의 모델과 해당 사양을 수학 공식(논리 문)으로 변환하는 과정이 포함됩니다.
+
+정리 증명의 목표는 이러한 문장 간의 논리적 동등성을 검증하는 것입니다. '논리적 동등성'('논리적 쌍방함의'라고도 함)은 첫 번째 문장이 참일 _경우에만_ 두 번째 문장이 참이 되는 두 문장 사이의 관계 유형입니다.
+
+계약 모델과 그 속성에 대한 문장 간의 필요한 관계(논리적 동등성)는 증명 가능한 문장(정리라고 함)으로 공식화됩니다. 형식적 추론 시스템을 사용하여 자동 정리 증명기는 정리의 유효성을 검증할 수 있습니다. 즉, 정리 증명기는 스마트 계약의 모델이 해당 사양과 정확히 일치함을 결정적으로 증명할 수 있습니다.
+
+모델 체킹은 계약을 유한 상태를 가진 전환 시스템으로 모델링하는 반면, 정리 증명은 무한 상태 시스템의 분석을 처리할 수 있습니다. 그러나 이는 자동 정리 증명기가 논리 문제가 '결정 가능'한지 여부를 항상 알 수 없다는 것을 의미합니다.
+
+결과적으로, 정리 증명기가 정확성 증명을 도출하도록 안내하기 위해 종종 인간의 도움이 필요합니다. 정리 증명에 인간의 노력을 사용하는 것은 완전히 자동화된 모델 체킹보다 사용 비용이 더 비쌉니다.
+
+### 기호 실행 {#symbolic-execution}
+
+기호 실행은 _구체적인 값_(예: `x == 5`) 대신 _기호 값_(예: `x > 5`)을 사용하여 함수를 실행함으로써 스마트 계약을 분석하는 방법입니다. 형식 검증 기술로서 기호 실행은 계약 코드의 추적 수준 속성에 대해 형식적으로 추론하는 데 사용됩니다.
+
+기호 실행은 실행 추적을 기호 입력 값에 대한 수학 공식으로 나타내며, 이를 경로 술어라고도 합니다. [SMT 솔버](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories)는 경로 술어가 '만족 가능'한지(즉, 공식을 만족할 수 있는 값이 존재하는지) 확인하는 데 사용됩니다. 취약한 경로가 만족 가능하면, SMT 솔버는 실행을 해당 경로로 유도하는 구체적인 값을 생성합니다.
+
+스마트 계약의 함수가 `uint` 값(`x`)을 입력으로 받고 `x`가 `5`보다 크고 `10`보다 작을 때 되돌린다고 가정해 보겠습니다. 일반적인 테스트 절차를 사용하여 오류를 유발하는 `x` 값을 찾는 것은 오류를 유발하는 입력을 실제로 찾을 수 있다는 보장 없이 수십 개(또는 그 이상)의 테스트 사례를 실행해야 합니다.
+
+반대로, 기호 실행 도구는 기호 값 `X > 5 ∧ X < 10` (즉, `x`가 5보다 크고 10보다 작음)으로 함수를 실행합니다. 연관된 경로 술어 `x = X > 5 ∧ X < 10`은 해결을 위해 SMT 솔버에 주어집니다. 특정 값이 `x = X > 5 ∧ X < 10` 공식을 만족하면 SMT 솔버가 이를 계산합니다. 예를 들어, 솔버는 `x`의 값으로 `7`을 생성할 수 있습니다.
+
+기호 실행은 프로그램에 대한 입력에 의존하고, 도달 가능한 모든 상태를 탐색하기 위한 입력 집합은 잠재적으로 무한하므로 여전히 테스트의 한 형태입니다. 그러나 예에서 보듯이, 기호 실행은 속성 위반을 유발하는 입력을 찾는 데 있어 일반적인 테스트보다 더 효율적입니다.
+
+또한, 기호 실행은 함수에 대한 입력을 무작위로 생성하는 다른 속성 기반 기술(예: 퍼징)보다 거짓 양성이 적습니다. 기호 실행 중에 오류 상태가 트리거되면, 오류를 트리거하는 구체적인 값을 생성하고 문제를 재현하는 것이 가능합니다.
+
+기호 실행은 또한 어느 정도의 수학적 정확성 증명을 제공할 수 있습니다. 오버플로 방지 기능이 있는 계약 함수의 다음 예를 고려해 보십시오.
+
+```
+function safe_add(uint x, uint y) returns(uint z){
+
+ z = x + y;
+ require(z>=x);
+ require(z>=y);
+
+ return z;
+}
+```
+
+정수 오버플로를 초래하는 실행 추적은 `z = x + y AND (z >= x) AND (z >= y) AND (z < x OR z < y)` 공식을 만족해야 합니다. 이러한 공식은 해결될 가능성이 거의 없으므로, `safe_add` 함수가 절대 오버플로되지 않는다는 수학적 증거 역할을 합니다.
+
+### 스마트 계약에 형식 검증을 사용하는 이유는 무엇인가요? {#benefits-of-formal-verification}
+
+#### 신뢰성의 필요성 {#need-for-reliability}
+
+형식 검증은 실패 시 사망, 부상 또는 재정적 파탄과 같은 파괴적인 결과를 초래할 수 있는 안전이 중요한 시스템의 정확성을 평가하는 데 사용됩니다. 스마트 계약은 막대한 가치를 제어하는 고부가가치 애플리케이션이며, 설계상의 사소한 오류는 [사용자에게 복구 불가능한 손실](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/)을 초래할 수 있습니다. 그러나 배포 전에 계약을 형식적으로 검증하면 블록체인에서 실행될 때 예상대로 작동할 것이라는 보장을 높일 수 있습니다.
+
+신뢰성은 모든 스마트 계약에서 매우 바람직한 품질이며, 특히 이더리움 가상 머신(EVM)에 배포된 코드는 일반적으로 불변이기 때문입니다. 출시 후 업그레이드에 쉽게 접근할 수 없기 때문에 계약의 신뢰성을 보장해야 하므로 형식 검증이 필요합니다. 형식 검증은 감사자 및 테스터가 놓칠 수 있는 정수 언더플로 및 오버플로, 재진입성, 부실한 가스 최적화와 같은 까다로운 문제를 감지할 수 있습니다.
+
+#### 기능적 정확성 증명 {#prove-functional-correctness}
+
+프로그램 테스트는 스마트 계약이 일부 요구 사항을 충족함을 증명하는 가장 일반적인 방법입니다. 이는 계약이 처리할 것으로 예상되는 데이터 샘플로 계약을 실행하고 그 동작을 분석하는 것을 포함합니다. 계약이 샘플 데이터에 대해 예상 결과를 반환하면 개발자는 그 정확성에 대한 객관적인 증거를 갖게 됩니다.
+
+그러나 이 접근 방식은 샘플에 포함되지 않은 입력 값에 대한 올바른 실행을 증명할 수 없습니다. 따라서 계약을 테스트하면 버그를 감지하는 데 도움이 될 수 있지만(즉, 일부 코드 경로가 실행 중에 원하는 결과를 반환하지 못하는 경우), **버그가 없음을 결정적으로 증명할 수는 없습니다**.
+
+반대로 형식 검증은 계약을 전혀 실행하지 _않고도_ 스마트 계약이 무한한 실행 범위에 대한 요구 사항을 만족함을 형식적으로 증명할 수 있습니다. 이를 위해서는 올바른 계약 동작을 정확하게 설명하는 형식 사양을 만들고 계약 시스템의 형식(수학적) 모델을 개발해야 합니다. 그런 다음 형식 증명 절차에 따라 계약 모델과 해당 사양 간의 일관성을 확인할 수 있습니다.
+
+형식 검증을 통해 계약의 비즈니스 로직이 요구 사항을 만족하는지 검증하는 문제는 증명되거나 반증될 수 있는 수학적 명제입니다. 명제를 형식적으로 증명함으로써 유한한 단계로 무한한 수의 테스트 사례를 검증할 수 있습니다. 이러한 방식으로 형식 검증은 계약이 사양에 대해 기능적으로 올바르다는 것을 증명할 더 나은 가능성을 가집니다.
+
+#### 이상적인 검증 대상 {#ideal-verification-targets}
+
+검증 대상은 형식적으로 검증될 시스템을 설명합니다. 형식 검증은 '임베디드 시스템'(더 큰 시스템의 일부를 형성하는 작고 간단한 소프트웨어 조각)에 가장 잘 사용됩니다. 또한 규칙이 거의 없는 전문화된 도메인에도 이상적입니다. 이는 도메인별 속성을 검증하기 위한 도구를 수정하기 쉽게 만들기 때문입니다.
+
+스마트 계약은 어느 정도까지는 두 요구 사항을 모두 충족합니다. 예를 들어, 이더리움 계약의 작은 크기는 형식 검증에 적합하게 만듭니다. 마찬가지로, EVM은 간단한 규칙을 따르므로 EVM에서 실행되는 프로그램의 의미론적 속성을 지정하고 검증하기가 더 쉽습니다.
+
+### 더 빠른 개발 주기 {#faster-development-cycle}
+
+모델 체킹 및 기호 실행과 같은 형식 검증 기술은 일반적으로 스마트 계약 코드의 일반적인 분석(테스트 또는 감사 중에 수행됨)보다 더 효율적입니다. 이는 형식 검증이 주장을 테스트하기 위해 기호 값에 의존하기 때문입니다('사용자가 _n_ 이더를 인출하려고 하면 어떻게 될까?') 구체적인 값을 사용하는 테스트와는 다릅니다('사용자가 5 이더를 인출하려고 하면 어떻게 될까?').
+
+기호 입력 변수는 여러 클래스의 구체적인 값을 포함할 수 있으므로, 형식 검증 접근 방식은 더 짧은 시간 내에 더 많은 코드 범위를 약속합니다. 효과적으로 사용하면 형식 검증은 개발자의 개발 주기를 가속화할 수 있습니다.
+
+형식 검증은 또한 비용이 많이 드는 설계 오류를 줄여 탈중앙화 애플리케이션(탈중앙화앱) 구축 과정을 개선합니다. 취약점을 수정하기 위해 (가능한 경우) 계약을 업그레이드하려면 코드베이스를 광범위하게 다시 작성하고 개발에 더 많은 노력을 기울여야 합니다. 형식 검증은 테스터와 감사자가 놓칠 수 있는 계약 구현의 많은 오류를 감지하고 계약을 배포하기 전에 이러한 문제를 해결할 충분한 기회를 제공합니다.
+
+## 형식 검증의 단점 {#drawbacks-of-formal-verification}
+
+### 수작업 비용 {#cost-of-manual-labor}
+
+형식 검증, 특히 인간이 증명기가 정확성 증명을 도출하도록 안내하는 반자동 검증은 상당한 수작업을 필요로 합니다. 또한, 형식 사양을 만드는 것은 높은 수준의 기술을 요구하는 복잡한 활동입니다.
+
+이러한 요인(노력과 기술)은 형식 검증을 테스트 및 감사와 같은 계약의 정확성을 평가하는 일반적인 방법에 비해 더 까다롭고 비용이 많이 들게 만듭니다. 그럼에도 불구하고, 스마트 계약 구현의 오류 비용을 감안할 때 전체 검증 감사 비용을 지불하는 것은 실용적입니다.
+
+### 거짓 음성 {#false-negatives}
+
+형식 검증은 스마트 계약의 실행이 형식 사양과 일치하는지 여부만 확인할 수 있습니다. 따라서 사양이 스마트 계약의 예상 동작을 올바르게 설명하는지 확인하는 것이 중요합니다.
+
+사양이 잘못 작성되면, 속성 위반(취약한 실행을 가리킴)이 형식 검증 감사에 의해 감지될 수 없습니다. 이 경우 개발자는 계약에 버그가 없다고 잘못 가정할 수 있습니다.
+
+### 성능 문제 {#performance-issues}
+
+형식 검증은 여러 성능 문제에 부딪힙니다. 예를 들어, 모델 체킹 및 기호 체킹 중에 각각 발생하는 상태 및 경로 폭발 문제는 검증 절차에 영향을 미칠 수 있습니다. 또한 형식 검증 도구는 종종 기본 레이어에서 SMT 솔버 및 기타 제약 조건 솔버를 사용하며, 이러한 솔버는 계산 집약적인 절차에 의존합니다.
+
+또한 프로그램이 절대 종료되지 않을 수 있기 때문에 프로그램 검증기가 속성(논리 공식으로 설명됨)이 만족될 수 있는지 여부를 항상 결정할 수 있는 것은 아닙니다('[결정 문제](https://en.wikipedia.org/wiki/Decision_problem)'). 따라서 잘 명시되어 있더라도 계약에 대한 일부 속성을 증명하는 것이 불가능할 수 있습니다.
+
+## 이더리움 스마트 계약을 위한 형식 검증 도구 {#formal-verification-tools}
+
+### 형식 사양 생성을 위한 사양 언어 {#specification-languages}
+
+**Act**: __Act는 저장소 업데이트, 사전/사후 조건 및 계약 불변성의 사양을 허용합니다. 해당 도구 제품군에는 Coq, SMT 솔버 또는 hevm을 통해 많은 속성을 증명할 수 있는 증명 백엔드도 있습니다.__
+
+- [GitHub](https://github.com/ethereum/act)
+- [개발문서](https://github.com/argotorg/act)
+
+**Scribble** - __Scribble은 Scribble 사양 언어의 코드 주석을 사양을 확인하는 구체적인 주장으로 변환합니다.__
+
+- [개발문서](https://docs.scribble.codes/)
+
+**Dafny** - __Dafny는 코드의 정확성을 추론하고 증명하기 위해 상위 수준 주석에 의존하는 검증 준비 프로그래밍 언어입니다.__
+
+- [GitHub](https://github.com/dafny-lang/dafny)
+
+### 정확성 확인을 위한 프로그램 검증기 {#program-verifiers}
+
+**Certora Prover** - _Certora Prover는 스마트 계약의 코드 정확성을 확인하기 위한 자동 형식 검증 도구입니다. 사양은 CVL(Certora Verification Language)로 작성되며, 속성 위반은 정적 분석과 제약 조건 해결의 조합을 사용하여 감지됩니다._
+
+- [웹사이트](https://www.certora.com/)
+- [개발문서](https://docs.certora.com/en/latest/index.html)
+
+**Solidity SMTChecker** - __Solidity의 SMTChecker는 SMT(Satisfiability Modulo Theories) 및 Horn 해결을 기반으로 하는 내장 모델 체커입니다. 컴파일 중에 계약의 소스 코드가 사양과 일치하는지 확인하고 안전 속성 위반을 정적으로 확인합니다.__
+
+- [GitHub](https://github.com/ethereum/solidity)
+
+**solc-verify** - __solc-verify는 주석 및 모듈식 프로그램 검증을 사용하여 Solidity 코드에 대한 자동 형식 검증을 수행할 수 있는 Solidity 컴파일러의 확장 버전입니다.__
+
+- [GitHub](https://github.com/SRI-CSL/solidity)
+
+**KEVM** - __KEVM은 K 프레임워크로 작성된 이더리움 가상 머신(EVM)의 형식 의미론입니다. KEVM은 실행 가능하며 도달 가능성 논리를 사용하여 특정 속성 관련 주장을 증명할 수 있습니다.__
+
+- [GitHub](https://github.com/runtimeverification/evm-semantics)
+- [개발문서](https://jellopaper.org/)
+
+### 정리 증명을 위한 논리적 프레임워크 {#theorem-provers}
+
+**Isabelle** - _Isabelle/HOL은 수학 공식을 형식 언어로 표현하고 해당 공식을 증명하기 위한 도구를 제공하는 증명 보조 도구입니다. 주요 애플리케이션은 수학적 증명의 형식화, 특히 컴퓨터 하드웨어 또는 소프트웨어의 정확성을 증명하고 컴퓨터 언어 및 프로토콜의 속성을 증명하는 것을 포함하는 형식 검증입니다._
+
+- [GitHub](https://github.com/isabelle-prover)
+- [개발문서](https://isabelle.in.tum.de/documentation.html)
+
+**Rocq** - _Rocq는 정리를 사용하여 프로그램을 정의하고 기계 검사된 정확성 증명을 대화형으로 생성할 수 있는 대화형 정리 증명기입니다._
+
+- [GitHub](https://github.com/rocq-prover/rocq)
+- [개발문서](https://rocq-prover.org/docs)
+
+### 스마트 계약의 취약한 패턴을 감지하기 위한 기호 실행 기반 도구 {#symbolic-execution-tools}
+
+**Manticore** - __기호 실행을 기반으로 하는 EVM 바이트코드 분석 도구_._
+
+- [GitHub](https://github.com/trailofbits/manticore)
+- [개발문서](https://github.com/trailofbits/manticore/wiki)
+
+**hevm** - __hevm은 EVM 바이트코드에 대한 기호 실행 엔진 및 등가성 검사기입니다.__
+
+- [GitHub](https://github.com/dapphub/dapptools/tree/master/src/hevm)
+
+**Mythril** - _이더리움 스마트 계약의 취약점을 감지하기 위한 기호 실행 도구_
+
+- [GitHub](https://github.com/ConsenSys/mythril-classic)
+- [개발문서](https://mythril-classic.readthedocs.io/en/develop/)
+
+## 더 읽어보기 {#further-reading}
+
+- [스마트 계약의 형식 검증 작동 방식](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/)
+- [형식 검증이 완벽한 스마트 계약을 보장하는 방법](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1)
+- [이더리움 생태계의 형식 검증 프로젝트 개요](https://github.com/leonardoalt/ethereum_formal_verification_overview)
+- [이더리움 2.0 예치 스마트 계약의 종단 간 형식 검증](https://runtimeverification.com/blog/end-to-end-formal-verification-of-ethereum-2-0-deposit-smart-contract/)
+- [세계에서 가장 인기 있는 스마트 계약 형식 검증하기](https://www.zellic.io/blog/formal-verification-weth)
+- [SMTChecker 및 형식 검증](https://docs.soliditylang.org/en/v0.8.15/smtchecker.html)
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/index.md b/public/content/translations/ko/developers/docs/smart-contracts/index.md
new file mode 100644
index 00000000000..6a69ad8df35
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/index.md
@@ -0,0 +1,112 @@
+---
+title: "스마트 계약 소개"
+description: "스마트 컨트랙트의 개요, 고유한 특징과 한계에 집중하여"
+lang: ko
+---
+
+## 스마트 컨트랙트란 무엇인가요? 스마트 계약이란 무엇인가요? {#what-is-a-smart-contract}
+
+"스마트 컨트랙트"란 간단히 말해서 이더리움 블록체인 상에서 작동하는 프로그램입니다. 이것은 이더리움 블록체인 상에서 특정한 주소에 살고 있는 코드(함수들) 와 데이터(상태) 의 모음입니다.
+
+스마트 계약은 [이더리움 계정](/developers/docs/accounts/)의 한 유형입니다. 이는 잔액을 가지고 있으며 트랜잭션의 대상이 될 수 있음을 의미합니다. 그러나 사용자에 의해 조작되지 않고, 대신에 네트워크에 의해 배포되고 프로그램된 대로 작동합니다. 그렇기에 사용자 계정은 스마트 컨트랙트에 정의된 함수를 실행하는 트랜잭션을 제출함으로써 스마트 컨트랙트와 상호 작용할 수 있습니다. 스마트 컨트랙트는 일반적인 계약처럼 규칙을 정의할 수 있고, 코드를 통해 자동으로 규칙을 시행하기도 합니다. 스마트 계약은 기본적으로 삭제할 수 없으며, 스마트 계약과의 상호작용은 되돌릴 수 없습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이제 막 시작하셨거나 덜 기술적인 소개를 찾고 계신다면, 저희의 [스마트 계약 소개](/smart-contracts/)를 추천합니다.
+
+스마트 계약의 세계로 뛰어들기 전에 [계정](/developers/docs/accounts/), [트랜잭션](/developers/docs/transactions/), 그리고 [이더리움 가상 머신](/developers/docs/evm/)에 대해 충분히 숙지하시기 바랍니다.
+
+## 디지털 자판기 {#a-digital-vending-machine}
+
+스마트 계약에 대한 가장 좋은 비유는 [Nick Szabo](https://unenumerated.blogspot.com/)가 설명한 자판기일 것입니다. 올바른 입력으로, 확실한 결과가 보장됩니다.
+
+자판기에서 snack을 사려면:
+
+```
+돈 + 간식 선택 = 간식 제공
+```
+
+이 로직은 자판기 안에 프로그램되었습니다.
+
+자판기처럼 스마트 컨트랙트는 내부에 프로그램된 로직을 갖고 있습니다. 이 자판기가 솔리디티로 작성된 스마트 계약이라면 다음과 같이 보일 것입니다.
+
+```solidity
+pragma solidity 0.8.7;
+
+contract VendingMachine {
+
+ // 계약의 상태 변수 선언
+ address public owner;
+ mapping (address => uint) public cupcakeBalances;
+
+ // 'VendingMachine' 계약이 배포될 때:
+ // 1. 배포하는 주소를 계약의 소유자로 설정
+ // 2. 배포된 스마트 계약의 컵케이크 잔액을 100으로 설정
+ constructor() {
+ owner = msg.sender;
+ cupcakeBalances[address(this)] = 100;
+ }
+
+ // 소유자가 스마트 계약의 컵케이크 잔액을 늘릴 수 있도록 허용
+ function refill(uint amount) public {
+ require(msg.sender == owner, "소유자만 리필할 수 있습니다.");
+ cupcakeBalances[address(this)] += amount;
+ }
+
+ // 누구나 컵케이크를 구매할 수 있도록 허용
+ function purchase(uint amount) public payable {
+ require(msg.value >= amount * 1 ether, "컵케이크당 최소 1 ETH를 지불해야 합니다.");
+ require(cupcakeBalances[address(this)] >= amount, "이 구매를 완료하기에 재고가 충분하지 않습니다.");
+ cupcakeBalances[address(this)] -= amount;
+ cupcakeBalances[msg.sender] += amount;
+ }
+}
+```
+
+자판기가 종업원에 대한 필요성을 없앤 것처럼, 스마트 컨트랙트는 많은 산업에서 중재자를 대체할 수 있습니다.
+
+## 무허가성 {#permissionless}
+
+누구나 스마트 컨트랙트를 작성할 수 있고 네트워크에 배포할 수 있습니다. 그저 [스마트 계약 언어](/developers/docs/smart-contracts/languages/)로 코딩하는 법을 배우고, 계약을 배포하기에 충분한 ETH만 있으면 됩니다. 스마트 계약 배포는 기술적으로 트랜잭션이므로, 간단한 ETH 전송에 가스를 지불해야 하는 것과 같은 방식으로 [가스](/developers/docs/gas/)를 지불해야 합니다. 그러나 계약 배포의 가스 비용은 훨씬 높습니다.
+
+이더리움은 스마트 컨트랙트 작성을 위한 개발자-친화적인 언어들을 갖고 있습니다.
+
+- 솔리디티
+- Vyper
+
+[언어에 대해 더 알아보기](/developers/docs/smart-contracts/languages/)
+
+그러나, 이더리움 가상 머신이 컨트랙트를 해석하고 저장하기 위해서 이 언어들은 배포되기 전에 컴파일 되어야 합니다. [컴파일에 대해 더 알아보기](/developers/docs/smart-contracts/compiling/)
+
+## 구성 가능성 {#composability}
+
+스마트 컨트랙트는 이더리움 상에서 공개되어 오픈 API처럼 생각할 수 있습니다. 이는 스마트 계약에서 다른 스마트 계약을 호출하여 가능성을 크게 확장할 수 있음을 의미합니다. 심지어 컨트랙트는 다른 컨트랙트를 배포하기도 가능합니다.
+
+[스마트 계약 구성 가능성](/developers/docs/smart-contracts/composability/)에 대해 더 알아보세요.
+
+## 한계 {#limitations}
+
+스마트 계약만으로는 오프체인 소스에서 데이터를 가져올 수 없기 때문에 "현실 세계" 이벤트에 대한 정보를 얻을 수 없습니다. 이들은 현실 세계의 사건에 반응할 수 없습니다. 이는 설계된 것입니다. 외부 정보에 의존하는 것은 합의를 위협할 수 있고, 이는 보안과 탈중앙화에 중요합니다.
+
+그러나 블록체인 애플리케이션이 오프체인 데이터를 사용할 수 있는 것이 중요합니다. 해결책은 오프체인 데이터를 가져와 스마트 계약에서 사용할 수 있도록 하는 도구인 [오라클](/developers/docs/oracles/)입니다.
+
+스마트 컨트랙트의 다른 한계는 컨트랙트 최대 사이즈입니다. 스마트 컨트랙트는 최대 24KB까지 가능하거나 가스를 다 써버릴 수도 있습니다. [다이아몬드 패턴(The Diamond Pattern)](https://eips.ethereum.org/EIPS/eip-2535)을 사용하여 이 문제를 해결할 수 있습니다.
+
+## 멀티시그 계약 {#multisig}
+
+멀티시그(다중 서명) 계약은 거래를 실행하기 위해 여러 유효한 서명을 필요로 하는 스마트 계약 계정입니다. 이는 상당한 양의 이더 또는 기타 토큰을 보유한 계약에서 단일 실패 지점을 방지하는 데 매우 유용합니다. 멀티시그는 또한 계약 실행 및 키 관리를 여러 당사자로 분산시키며, 단일 프라이빗 키의 손실로 인해 자금을 영구적으로 잃지 않도록 합니다. 이러한 이유로 멀티시그 계약은 간단한 DAO 거버넌스에도 사용할 수 있습니다. 멀티시그는 실행을 위해 M개의 허용 가능한 서명 중 N개의 서명을 필요로 합니다(N ≤ M, 그리고 M > 1). `N = 3, M = 5`와 `N = 4, M = 7`이 일반적으로 사용됩니다. 4/7 멀티시그는 7개의 가능한 서명 중 4개가 유효한 서명임을 요구합니다. 이는 3개의 서명을 잃어도 자금을 여전히 복구할 수 있다는 의미입니다. 이 경우 또한 계약을 실행하려면 다수의 키 보유자가 동의하고 서명해야 한다는 것을 의미합니다.
+
+## 스마트 계약 참고 자료 {#smart-contract-resources}
+
+**OpenZeppelin Contracts -** **_안전한 스마트 계약 개발을 위한 라이브러리._**
+
+- [openzeppelin.com/contracts/](https://openzeppelin.com/contracts/)
+- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
+- [커뮤니티 포럼](https://forum.openzeppelin.com/c/general/16)
+
+## 더 읽어보기 {#further-reading}
+
+- [Coinbase: 스마트 계약이란 무엇인가요?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract)
+- [Chainlink: 스마트 계약이란 무엇인가요?](https://chain.link/education/smart-contracts)
+- [영상: 간단한 설명 - 스마트 계약](https://youtu.be/ZE2HxTmxfrI)
+- [Cyfrin Updraft: 웹3 학습 및 감사 플랫폼](https://updraft.cyfrin.io)
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/languages/index.md b/public/content/translations/ko/developers/docs/smart-contracts/languages/index.md
new file mode 100644
index 00000000000..339709fd401
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/languages/index.md
@@ -0,0 +1,343 @@
+---
+title: "스마트 컨트랙트 언어"
+description: "두 종류의 주요 smart contract 언어에 대한 요약과 비교 - Solidity 와 Vyper"
+lang: ko
+---
+
+이더리움의 가장 좋은 점은 smart contract을 개발자 친화적인 언어로 프로그래밍 할 수 있다는 점이다. Python 또는 [중괄호 언어](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages)에 익숙하다면 친숙한 구문을 가진 언어를 찾을 수 있습니다.
+
+가장 활발하고 유지되는 언어들은 다음과 같다:
+
+- 솔리디티
+- Vyper
+
+Remix IDE는 Solidity 및 Vyper에서 계약을 생성하고 테스트하기 위한 종합 개발 환경을 제공합니다. [브라우저 내 Remix IDE](https://remix.ethereum.org)에서 코딩을 시작하세요.
+
+더 숙련된 개발자들은 [이더리움 가상 머신](/developers/docs/evm/)을 위한 중간 언어인 Yul 또는 Yul의 확장판인 Yul+를 사용할 수도 있습니다.
+
+만약 당신이 궁금하고 아직 힘들게 개발중인 새로운 언어 테스트를 도와주고 싶다면, smart contract 언어로 떠오르고 있지만 아직은 초창기 단계인 Fe 언어를 시도해볼 수 있다.
+
+## 필수 구성 요소 {#prerequisites}
+
+특히 Javascript나 Python에 대해 미리 알고 있다면, smart contract 언어의 차이를 이해하는데 도움을 줄 수 있다. 언어에 대한 차이를 너무 깊게 파고들기 전에 smart contract 개념을 먼저 이해하는 것을 추천한다. [스마트 계약 소개](/developers/docs/smart-contracts/).
+
+## 솔리디티 {#solidity}
+
+- Smart contract를 구현하기 위한 객체지향의 고급 언어 (high-level language).
+- C++로부터 영향을 가장 많이 받은 Curly-bracket 언어.
+- 정적 프로그래밍 언어 (자료형이 컴파일 시 결정되는 언어).
+- 지원:
+ - 상속 (다른 contract으로 확장할 수 있음).
+ - 라이브러리 (객체지향 프로그래밍 언어에서 정적(static) 클래스에 있는 정적 함수처럼 서로 다른 contract에서 부를 수 있는 재사용이 가능한 코드를 만들 수 있음).
+ - Complex user-defined types.
+
+### 중요 링크 {#important-links}
+
+- [개발문서](https://docs.soliditylang.org/en/latest/)
+- [솔리디티 언어 포털](https://soliditylang.org/)
+- [솔리디티 예제](https://docs.soliditylang.org/en/latest/solidity-by-example.html)
+- [GitHub](https://github.com/ethereum/solidity/)
+- [Solidity Gitter 채팅방](https://gitter.im/ethereum/solidity), [Solidity Matrix 채팅방](https://matrix.to/#/#ethereum_solidity:gitter.im)과 브리지됨
+- [치트 시트](https://reference.auditless.com/cheatsheet)
+- [솔리디티 블로그](https://blog.soliditylang.org/)
+- [솔리디티 트위터](https://twitter.com/solidity_lang)
+
+### 예제 계약 {#example-contract}
+
+```solidity
+// SPDX-License-Identifier: GPL-3.0
+pragma solidity >= 0.7.0;
+
+contract Coin {
+ // "public" 키워드는 변수를
+ // 다른 계약에서 접근할 수 있도록 합니다
+ address public minter;
+ mapping (address => uint) public balances;
+
+ // 이벤트는 클라이언트가 선언한 특정
+ // 계약 변경에 반응할 수 있도록 합니다
+ event Sent(address from, address to, uint amount);
+
+ // 생성자 코드는 계약이
+ // 생성될 때만 실행됩니다
+ constructor() {
+ minter = msg.sender;
+ }
+
+ // 새로 생성된 코인을 주소로 전송합니다
+ // 계약 생성자만 호출할 수 있습니다
+ function mint(address receiver, uint amount) public {
+ require(msg.sender == minter);
+ require(amount < 1e60);
+ balances[receiver] += amount;
+ }
+
+ // 기존 코인을
+ // 모든 호출자로부터 주소로 전송합니다
+ function send(address receiver, uint amount) public {
+ require(amount <= balances[msg.sender], "잔액이 부족합니다.");
+ balances[msg.sender] -= amount;
+ balances[receiver] += amount;
+ emit Sent(msg.sender, receiver, amount);
+ }
+}
+```
+
+이 예제를 통해 Solidity contract 문법이 어떤지 감을 찾을 수 있다. 함수와 변수에 대한 더 자세한 설명은 [문서를 참조하세요](https://docs.soliditylang.org/en/latest/contracts.html).
+
+## Vyper {#vyper}
+
+- Pythonic 프로그래밍 언어
+- 강한 타입
+- 작고 이해하기 쉬운 컴파일러 코드
+- 효율적인 바이트코드 생성
+- Contract을 더 안전하고 검사하기 쉽게 일부러 Solidity보다 기능이 적음. Vyper는 아래를 지원하지 않음:
+ - 제어자 (Modifiers)
+ - 상속
+ - 인라인 어셈블리 (Inline assembly)
+ - 함수 오버로드
+ - 연산자 오버로드
+ - 재귀 호출
+ - 무한 루프
+ - 이진 고정점 (Binary fixed points)
+
+자세한 내용은 [Vyper의 기본 원칙을 읽어보세요](https://vyper.readthedocs.io/en/latest/index.html).
+
+### 중요 링크 {#important-links-1}
+
+- [개발문서](https://vyper.readthedocs.io)
+- [예제로 배우는 Vyper](https://vyper.readthedocs.io/en/latest/vyper-by-example.html)
+- [예제로 배우는 Vyper 더 보기](https://vyper-by-example.org/)
+- [GitHub](https://github.com/vyperlang/vyper)
+- [Vyper 커뮤니티 Discord 채팅](https://discord.gg/SdvKC79cJk)
+- [치트 시트](https://reference.auditless.com/cheatsheet)
+- [Vyper를 위한 스마트 계약 개발 프레임워크 및 도구](/developers/docs/programming-languages/python/)
+- [VyperPunk - Vyper 스마트 계약을 보호하고 해킹하는 방법 배우기](https://github.com/SupremacyTeam/VyperPunk)
+- [개발을 위한 Vyper 허브](https://github.com/zcor/vyper-dev)
+- [Vyper 인기 스마트 계약 예제](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts)
+- [엄선된 Vyper 참고 자료 모음](https://github.com/spadebuilders/awesome-vyper)
+
+### 예제 {#example}
+
+```python
+# 공개 경매
+
+# 경매 매개변수
+
+# 수익자는 최고 입찰자로부터 금액을 받습니다
+
+beneficiary: public(address)
+auctionStart: public(uint256)
+auctionEnd: public(uint256)
+
+# 경매의 현재 상태
+
+highestBidder: public(address)
+highestBid: public(uint256)
+
+# 종료 시 true로 설정, 모든 변경을 금지합니다
+
+ended: public(bool)
+
+# 출금 패턴을 따를 수 있도록 환불된 입찰을 추적합니다
+
+pendingReturns: public(HashMap[address, uint256])
+
+# `_bidding_time`을 사용하여 간단한 경매를 생성합니다
+
+# `_beneficiary` 주소를 대신하여
+
+# 초 단위 입찰 시간을 지정합니다.
+
+@external
+def __init__(_beneficiary: address, _bidding_time: uint256):
+ self.beneficiary = _beneficiary
+ self.auctionStart = block.timestamp
+ self.auctionEnd = self.auctionStart + _bidding_time
+
+# 이 트랜잭션과 함께 전송된 금액으로 경매에
+
+# 입찰합니다.
+
+# 이 금액은 경매에서 이기지 못할 경우에만
+
+# 환불됩니다.
+
+@external
+@payable
+def bid():
+ # 입찰 기간이 끝났는지 확인합니다.
+ assert block.timestamp < self.auctionEnd
+ # 입찰가가 충분히 높은지 확인합니다.
+ assert msg.value > self.highestBid
+ # 이전 최고 입찰자에 대한 환불을 추적합니다.
+ self.pendingReturns[self.highestBidder] += self.highestBid
+ # 새로운 최고 입찰가를 추적합니다.
+ self.highestBidder = msg.sender
+ self.highestBid = msg.value
+
+# 이전에 환불된 입찰을 출금합니다. 출금 패턴은
+
+# 보안 문제를 피하기 위해 여기서 사용됩니다. 만약 환불이
+
+# bid()의 일부로 직접 전송된다면, 악의적인 입찰 계약이
+
+# 해당 환불을 막고, 따라서 더 높은 새로운 입찰이 들어오는 것을
+
+# 막을 수 있습니다.
+
+@external
+def withdraw():
+ pending_amount: uint256 = self.pendingReturns[msg.sender]
+ self.pendingReturns[msg.sender] = 0
+ send(msg.sender, pending_amount)
+
+# 경매를 종료하고 최고 입찰가를
+
+# 수익자에게 전송합니다.
+
+@external
+def endAuction():
+ # 다른 계약과 상호 작용하는(즉, 함수를 호출하거나 이더를 보내는)
+ # 함수를 세 단계로 구성하는 것이 좋은 지침입니다.
+ # 1. 조건 확인
+ # 2. 작업 수행(조건을 변경할 수 있음)
+ # 3. 다른 계약과 상호 작용
+ # 이러한 단계가 혼합되면 다른 계약이
+ # 현재 계약으로 다시 호출하여 상태를 수정하거나
+ # 효과(이더 지급)가 여러 번 수행되도록 할 수 있습니다.
+ # 내부적으로 호출된 함수가 외부 계약과의
+ # 상호 작용을 포함하는 경우, 이들도 외부 계약과의
+ # 상호 작용으로 간주되어야 합니다.
+
+ # 1. 조건
+ # 경매 종료 시간에 도달했는지 확인합니다.
+ assert block.timestamp >= self.auctionEnd
+ # 이 함수가 이미 호출되었는지 확인합니다.
+ assert not self.ended
+
+ # 2. 효과
+ self.ended = True
+
+ # 3. 상호 작용
+ send(self.beneficiary, self.highestBid)
+```
+
+이 예제를 통해 Vyper contract 문법이 어떤지 감을 찾을 수 있다. 함수와 변수에 대한 더 자세한 설명은 [문서를 참조하세요](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction).
+
+## Yul 및 Yul+ {#yul}
+
+이더리움을 처음 접하고 아직 스마트 계약 언어로 코딩해본 적이 없다면, Solidity 또는 Vyper로 시작하는 것이 좋습니다. 스마트 계약 보안 모범 사례와 EVM 작업의 구체적인 사항에 익숙해진 후에 Yul 또는 Yul+를 탐색하세요.
+
+**Yul**
+
+- 이더리움을 위한 중간 언어입니다.
+- [EVM](/developers/docs/evm)과 이더리움 기반의 웹어셈블리인 [Ewasm](https://github.com/ewasm)을 지원하며, 두 플랫폼 모두에서 사용할 수 있는 공통 분모로 설계되었습니다.
+- EVM과 Ewasm 플랫폼 모두에 유리한 고급 최적화 단계를 위한 좋은 목표입니다.
+
+**Yul+**
+
+- Yul의 저수준 및 고효율 확장입니다.
+- 처음에는 [낙관적 롤업](/developers/docs/scaling/optimistic-rollups/) 계약을 위해 설계되었습니다.
+- Yul+는 Yul의 새로운 기능을 추가하는 실험적 업그레이드 제안으로 볼 수 있습니다.
+
+### 중요 링크 {#important-links-2}
+
+- [Yul 개발문서](https://docs.soliditylang.org/en/latest/yul.html)
+- [Yul+ 개발문서](https://github.com/fuellabs/yulp)
+- [Yul+ 소개 게시물](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f)
+
+### 예제 계약 {#example-contract-2}
+
+다음의 간단한 예는 제곱 함수(power function)를 구현합니다. `solc --strict-assembly --bin input.yul`을 사용하여 컴파일할 수 있습니다. 이 예시는 input.yul 파일에 저장해야 합니다.
+
+```
+{
+ function power(base, exponent) -> result
+ {
+ switch exponent
+ case 0 { result := 1 }
+ case 1 { result := base }
+ default
+ {
+ result := power(mul(base, base), div(exponent, 2))
+ if mod(exponent, 2) { result := mul(base, result) }
+ }
+ }
+ let res := power(calldataload(0), calldataload(32))
+ mstore(0, res)
+ return(0, 32)
+}
+```
+
+스마트 계약에 이미 매우 익숙하다면 Yul로 구현된 전체 ERC20을 [여기](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example)에서 찾을 수 있습니다.
+
+## Fe {#fe}
+
+- 이더리움 가상 머신(EVM)을 위한 정적 타입 언어입니다.
+- Python과 Rust에서 영감을 받았습니다.
+- 이더리움 생태계에 처음인 개발자도 쉽게 배울 수 있도록 설계되었습니다.
+- Fe 개발은 아직 초기 단계이며, 2021년 1월에 알파 버전이 출시되었습니다.
+
+### 중요 링크 {#important-links-3}
+
+- [GitHub](https://github.com/ethereum/fe)
+- [Fe 발표](https://snakecharmers.ethereum.org/fe-a-new-language-for-the-ethereum-ecosystem/)
+- [Fe 2021 로드맵](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg)
+- [Fe Discord 채팅](https://discord.com/invite/ywpkAXFjZH)
+- [Fe 트위터](https://twitter.com/official_fe)
+
+### 예제 계약 {#example-contract-3}
+
+다음은 Fe로 구현된 간단한 계약입니다.
+
+```
+type BookMsg = bytes[100]
+
+contract GuestBook:
+ pub guest_book: map
+
+ event Signed:
+ book_msg: BookMsg
+
+ pub def sign(book_msg: BookMsg):
+ self.guest_book[msg.sender] = book_msg
+
+ emit Signed(book_msg=book_msg)
+
+ pub def get_msg(addr: address) -> BookMsg:
+ return self.guest_book[addr].to_mem()
+
+```
+
+## 선택 방법 {#how-to-choose}
+
+다른 프로그래밍 언어와 마찬가지로 작업에 적합한 도구를 선택하는 것이 중요하며, 개인적인 선호도도 고려해야 합니다.
+
+솔리디티의 장점은 무엇인가요?
+
+### 초보자에게는 다양한 튜토리얼과 학습 도구가 있습니다. {#solidity-advantages}
+
+- 코딩으로 배우기 섹션에서 더 알아볼 수 있습니다. 자세한 내용은 [코딩으로 배우기](/developers/learning-tools/) 섹션을 참조하세요.
+- 좋은 개발자 툴링을 사용할 수 있습니다.
+- 솔리디티는 큰 개발자 커뮤니티가 있어 질문에 대한 답변을 쉽게 찾을 수 있습니다.
+
+### Vyper의 장점은 무엇인가요? {#vyper-advatages}
+
+- 스마트 계약을 작성하고자 하는 Python 개발자에게 훌륭한 출발점입니다.
+- 기능 수가 적어 아이디어를 빠르게 프로토타입하는 데 적합합니다.
+- Vyper는 감사하기 쉽고 가독성이 뛰어납니다.
+
+### Yul과 Yul+의 장점은 무엇인가요? {#yul-advantages}
+
+- 간단하고 기능적인 저수준 언어입니다.
+- 계약의 가스 사용량 최적화에 도움이 되는 원시 EVM에 더 가깝게 접근할 수 있습니다.
+
+## 언어 비교 {#language-comparisons}
+
+기본 구문, 계약 수명 주기, 인터페이스, 연산자, 데이터 구조, 함수, 제어 흐름 등을 비교하려면 Auditless의 [치트 시트](https://reference.auditless.com/cheatsheet/)를 확인하세요.
+
+## 더 읽어보기 {#further-reading}
+
+- [OpenZeppelin의 솔리디티 계약 라이브러리](https://docs.openzeppelin.com/contracts/5.x/)
+- [예제로 배우는 솔리디티](https://solidity-by-example.org)
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/libraries/index.md b/public/content/translations/ko/developers/docs/smart-contracts/libraries/index.md
new file mode 100644
index 00000000000..fb9c6f499c5
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/libraries/index.md
@@ -0,0 +1,117 @@
+---
+title: "스마트 계약 라이브러리"
+description: "재사용 가능한 스마트 계약 라이브러리 및 구성 요소를 찾아 이더리움 개발 프로젝트를 가속화하세요."
+lang: ko
+---
+
+프로젝트에서 모든 스마트 계약을 처음부터 작성할 필요가 없습니다. 프로젝트에 재사용 가능한 빌딩 블록을 제공하는 많은 오픈 소스 스마트 계약 라이브러리가 있어, 처음부터 모든 것을 다시 만들 필요 없이 시간을 절약할 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+스마트 계약 라이브러리에 뛰어들기 전에, 스마트 계약의 구조를 잘 이해하는 것이 좋습니다. 아직 확인하지 않았다면 [스마트 계약 구조](/developers/docs/smart-contracts/anatomy/)로 이동하세요.
+
+## 라이브러리 구성 {#whats-in-a-library}
+
+스마트 계약 라이브러리에서는 보통 두 가지 유형의 빌딩 블록을 찾을 수 있습니다: 계약에 추가할 수 있는 재사용 가능한 동작과 다양한 표준의 구현입니다.
+
+### 동작 {#behaviors}
+
+스마트 계약을 작성할 때, 계약에서 보호된 작업을 수행하기 위해 _admin_ 주소를 할당하거나 예기치 않은 문제가 발생했을 때 긴급 _pause_ 버튼을 추가하는 것처럼, 유사한 패턴을 여러 번 작성하게 될 가능성이 큽니다.
+
+스마트 계약 라이브러리는 일반적으로 솔리디티(Solidity)에서 [라이브러리](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) 또는 [상속](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance)을 통해 이러한 동작의 재사용 가능한 구현을 제공합니다.
+
+예를 들어, 다음은 [OpenZeppelin Contracts 라이브러리](https://github.com/OpenZeppelin/openzeppelin-contracts)의 [`Ownable` 계약](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol)의 간소화된 버전입니다. 이 계약은 주소를 계약의 소유자로 지정하고 해당 소유자에게만 메서드에 대한 접근을 제한하는 제어자를 제공합니다.
+
+```solidity
+contract Ownable {
+ address public owner;
+
+ constructor() internal {
+ owner = msg.sender;
+ }
+
+ modifier onlyOwner() {
+ require(owner == msg.sender, "Ownable: 호출자가 소유자가 아닙니다");
+ _;
+ }
+}
+```
+
+이러한 빌딩 블록을 계약에 사용하려면 먼저 이를 가져와 계약에서 확장해야 합니다. 이를 통해 기본 `Ownable` 계약에서 제공하는 제어자를 사용하여 자신의 함수를 보호할 수 있습니다.
+
+```solidity
+import ".../Ownable.sol"; // 가져온 라이브러리의 경로
+
+contract MyContract is Ownable {
+ // 다음 함수는 소유자만 호출할 수 있습니다
+ function secured() onlyOwner public {
+ msg.sender.transfer(1 ether);
+ }
+}
+```
+
+또 다른 인기 있는 예는 [SafeMath](https://docs.openzeppelin.com/contracts/3.x/utilities#math) 또는 [DsMath](https://dappsys.readthedocs.io/en/latest/ds_math.html)입니다. 이들은 언어에서 제공되지 않는 오버플로우 검사를 포함한 산술 기능을 제공하는 라이브러리입니다. 계약을 오버플로우로부터 보호하기 위해 기본 산술 연산 대신 이러한 라이브러리 중 하나를 사용하는 것이 좋은 관행입니다.
+
+### 표준 {#standards}
+
+[구성 가능성 및 상호 운용성](/developers/docs/smart-contracts/composability/)을 촉진하기 위해 이더리움 커뮤니티는 **ERC** 형식으로 여러 표준을 정의했습니다. 자세한 내용은 [표준](/developers/docs/standards/) 섹션에서 확인할 수 있습니다.
+
+계약의 일부로 ERC를 포함할 때는, 직접 구현하는 대신 표준 구현을 찾는 것이 좋습니다. 많은 스마트 계약 라이브러리에는 가장 인기 있는 ERC의 구현이 포함되어 있습니다. 예를 들어, 널리 사용되는 [ERC20 대체 가능 토큰 표준](/developers/tutorials/understand-the-erc-20-token-smart-contract/)은 [HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md), [DappSys](https://github.com/dapphub/ds-token/), [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc20)에서 찾아볼 수 있습니다. 또한, 일부 ERC는 ERC 자체의 일부로 표준 구현을 제공합니다.
+
+몇몇 ERC는 독립적인 것이 아니라 다른 ERC에 추가로 제공되는 경우도 있습니다. 예를 들어, [ERC2612](https://eips.ethereum.org/EIPS/eip-2612)는 ERC20의 사용성 개선을 위한 확장 기능을 추가합니다.
+
+## 라이브러리 추가 방법 {#how-to}
+
+프로젝트에 라이브러리를 포함하는 구체적인 방법에 대해서는 항상 라이브러리의 문서를 참조하세요. 일부 솔리디티(Solidity) 계약 라이브러리는 `npm`을 사용하여 패키지로 제공되므로 `npm install`을 사용하여 간단히 설치할 수 있습니다. 계약 [컴파일](/developers/docs/smart-contracts/compiling/)을 위한 대부분의 도구는 스마트 계약 라이브러리를 `node_modules`에서 찾으므로 다음과 같이 할 수 있습니다.
+
+```solidity
+// node_modules에서 @openzeppelin/contracts 라이브러리를 로드합니다
+import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
+
+contract MyNFT is ERC721 {
+ constructor() ERC721("MyNFT", "MNFT") public { }
+}
+```
+
+사용하는 방법에 관계없이 라이브러리를 포함할 때는 항상 [언어](/developers/docs/smart-contracts/languages/) 버전을 주시해야 합니다. 예를 들면 솔리디티 0.5에서 계약을 작성하고 있는 경우 솔리디티 0.6 라이브러리를 사용할 수 없습니다.
+
+## 사용 시점 {#when-to-use}
+
+프로젝트에서 스마트 계약 라이브러리를 사용하는 것은 여러 가지 장점이 있습니다. 첫째, 직접 코딩하지 않고도 시스템에 포함할 수 있는 즉시 사용 가능한 빌딩 블록을 제공하여 시간을 절약할 수 있습니다.
+
+보안도 중요한 장점입니다. 오픈 소스 스마트 계약 라이브러리는 많은 프로젝트가 이를 의존하므로, 커뮤니티에서 지속적인 검토가 이루어집니다. 응용 프로그램 코드에서 오류를 발견하는 것이 재사용 가능한 계약 라이브러리에서 오류를 발견하는 것보다 훨씬 더 흔합니다. 응용 프로그램 코드에서 오류를 발견하는 것이 재사용 가능한 계약 라이브러리에서 오류를 발견하는 것보다 훨씬 더 흔합니다. 일부 라이브러리는 보안 강화를 위해 [외부 감사](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audits)를 받기도 합니다.
+
+그러나 스마트 계약 라이브러리를 사용할 때는 익숙하지 않은 코드를 프로젝트에 포함할 위험이 있습니다. 계약을 가져와 프로젝트에 바로 포함시키는 것은 유혹적이지만, 해당 계약이 무엇을 하는지 잘 모르면, 예상치 못한 동작으로 인해 시스템에 문제를 도입할 수 있습니다. 가져온 코드의 문서를 읽고, 코드를 검토한 후 프로젝트의 일부로 만들도록 하세요!
+
+마지막으로 라이브러리를 포함할지 여부를 결정할 때, 그 라이브러리의 전체적인 사용성을 고려하세요. 광범위하게 채택된 라이브러리는 커뮤니티가 더 크고 더 많은 사람들이 문제를 점검할 가능성이 있습니다. 스마트 계약을 사용하여 구축할 때 보안을 최우선으로 생각해야 합니다!
+
+## 관련 도구 {#related-tools}
+
+**OpenZeppelin Contracts -** **_안전한 스마트 계약 개발을 위한 가장 인기 있는 라이브러리_**
+
+- [문서](https://docs.openzeppelin.com/contracts/)
+- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
+- [커뮤니티 포럼](https://forum.openzeppelin.com/c/general/16)
+
+**DappSys -** **_안전하고 단순하며 유연한 스마트 계약용 구성 요소_**
+
+- [문서](https://dappsys.readthedocs.io/)
+- [GitHub](https://github.com/dapphub/dappsys)
+
+**HQ20 -** **_실제 환경에서 모든 기능을 갖춘 분산 애플리케이션을 구축하는 데 도움이 되는 계약, 라이브러리 및 예제가 포함된 솔리디티(Solidity) 프로젝트_**
+
+- [GitHub](https://github.com/HQ20/contracts)
+
+**thirdweb 솔리디티(Solidity) SDK -** **_맞춤형 스마트 계약을 효율적으로 구축하는 데 필요한 도구를 제공합니다_**
+
+- [문서](https://portal.thirdweb.com/contracts/build/overview)
+- [GitHub](https://github.com/thirdweb-dev/contracts)
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [이더리움 개발자를 위한 보안 고려사항](/developers/docs/smart-contracts/security/) _– 라이브러리 사용을 포함하여 스마트 계약을 구축할 때의 보안 고려사항에 대한 튜토리얼입니다._
+- [ERC-20 토큰 스마트 계약 이해하기](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _- 여러 라이브러리에서 제공하는 ERC20 표준에 대한 튜토리얼입니다._
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/naming/index.md b/public/content/translations/ko/developers/docs/smart-contracts/naming/index.md
new file mode 100644
index 00000000000..13ee813accc
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/naming/index.md
@@ -0,0 +1,101 @@
+---
+title: "스마트 계약 이름 지정"
+description: "ENS로 이더리움 스마트 계약 이름을 지정하는 모범 사례"
+lang: ko
+---
+
+스마트 계약은 이더리움 탈중앙화 인프라의 핵심으로, 자율적인 애플리케이션과 프로토콜을 가능하게 합니다. 하지만 계약 기능이 발전함에도 불구하고 사용자와 개발자는 여전히 원시 16진수 주소에 의존하여 이러한 계약을 식별하고 참조합니다.
+
+[Ethereum Name Service(ENS)](https://ens.domains/)로 스마트 계약에 이름을 지정하면 16진수 계약 주소를 제거하여 사용자 경험을 개선하고 주소 포이즈닝 및 스푸핑 공격과 같은 공격의 위험을 줄일 수 있습니다. 이 가이드에서는 스마트 계약 이름 지정이 중요한 이유, 구현 방법, 그리고 [Enscribe](https://www.enscribe.xyz)와 같이 프로세스를 간소화하고 개발자가 이 관행을 채택하는 데 도움이 되는 도구에 대해 설명합니다.
+
+## 스마트 계약에 이름을 지정하는 이유는 무엇일까요? {#why-name-contracts}
+
+### 사람이 읽을 수 있는 식별자 {#human-readable-identifiers}
+
+개발자와 사용자는 `0x8f8e...f9e3`과 같이 불투명한 계약 주소와 상호작용하는 대신 `v2.myapp.eth`와 같이 사람이 읽을 수 있는 이름을 사용할 수 있습니다. 이는 스마트 계약 상호작용을 간소화합니다.
+
+이는 이더리움 주소에 대한 탈중앙화 이름 지정 서비스를 제공하는 [Ethereum Name Service](https://ens.domains/)를 통해 가능합니다. 이는 인터넷 사용자가 `104.18.176.152`와 같은 IP 주소 대신 ethereum.org와 같은 이름을 사용하여 네트워크 주소에 접속할 수 있도록 하는 도메인 이름 서비스(DNS)와 유사합니다.
+
+### 향상된 보안 및 신뢰 {#improved-security-and-trust}
+
+이름이 지정된 계약은 잘못된 주소로의 의도치 않은 거래를 줄이는 데 도움이 됩니다. 또한 사용자가 특정 앱 또는 브랜드와 연결된 계약을 식별하는 데 도움이 됩니다. 이는 특히 `uniswap.eth`와 같이 잘 알려진 상위 도메인에 이름이 연결된 경우 평판 신뢰도를 한층 더 높여줍니다.
+
+이더리움 주소는 42자 길이이므로 사용자가 몇 글자만 수정된 주소의 작은 변화를 식별하기가 매우 어렵습니다. 예를 들어, `0x58068646C148E313CB414E85d2Fe89dDc3426870`과 같은 주소는 일반적으로 지갑과 같은 사용자용 애플리케이션에서 `0x580...870`으로 잘립니다. 사용자는 몇 글자가 변경된 악의적인 주소를 알아차리기 어렵습니다.
+
+이러한 유형의 기술은 주소 스푸핑 및 포이즈닝 공격에 사용되며, 사용자는 올바른 주소와 상호작용하거나 자금을 보내고 있다고 믿게 되지만 실제로는 해당 주소가 올바른 주소와 유사할 뿐 동일하지는 않습니다.
+
+지갑과 계약에 대한 ENS 이름은 이러한 유형의 공격으로부터 보호합니다. DNS 스푸핑 공격과 마찬가지로 ENS 스푸핑 공격도 발생할 수 있지만, 사용자는 16진수 주소의 작은 수정보다 ENS 이름의 오타를 더 쉽게 알아차릴 수 있습니다.
+
+### 지갑 및 탐색기를 위한 더 나은 UX {#better-ux}
+
+스마트 계약이 ENS 이름으로 구성된 경우 지갑 및 블록체인 탐색기와 같은 앱에서 16진수 주소 대신 스마트 계약에 대한 ENS 이름을 표시할 수 있습니다. 이는 사용자에게 상당한 사용자 경험(UX) 향상을 제공합니다.
+
+예를 들어, Uniswap과 같은 앱과 상호작용할 때 사용자는 일반적으로 상호작용하는 앱이 `uniswap.org` 웹사이트에서 호스팅된다는 것을 알 수 있지만, Uniswap이 스마트 계약에 ENS 이름을 지정하지 않은 경우 16진수 계약 주소가 표시됩니다. 계약에 이름이 지정된 경우 대신 훨씬 더 유용한 `v4.contracts.uniswap.eth`를 볼 수 있습니다.
+
+## 배포 시점의 이름 지정 vs. 배포 후 이름 지정 {#when-to-name}
+
+스마트 계약에 이름을 지정할 수 있는 시점은 두 가지입니다.
+
+- **배포 시점**: 계약이 배포될 때 ENS 이름을 할당합니다.
+- **배포 후**: 기존 계약 주소를 새로운 ENS 이름에 매핑합니다.
+
+두 가지 접근 방식 모두 ENS 레코드를 생성하고 설정할 수 있도록 ENS 도메인에 대한 소유자 또는 관리자 액세스 권한이 있어야 합니다.
+
+## 계약에 대한 ENS 이름 지정 작동 방식 {#how-ens-naming-works}
+
+ENS 이름은 온체인에 저장되며 ENS 확인자를 통해 이더리움 주소로 확인됩니다. 스마트 계약에 이름을 지정하려면:
+
+1. 상위 ENS 도메인(예: `myapp.eth`)을 등록하거나 제어합니다.
+2. 하위 도메인(예: `v1.myapp.eth`)을 생성합니다.
+3. 하위 도메인의 `address` 레코드를 계약 주소로 설정합니다.
+4. 계약의 역방향 레코드를 ENS로 설정하여 주소를 통해 이름을 찾을 수 있도록 합니다.
+
+ENS 이름은 계층적이며 무제한의 하위 이름을 지원합니다. 이러한 레코드를 설정하려면 일반적으로 ENS 레지스트리 및 공용 확인자 계약과 상호작용해야 합니다.
+
+## 계약 이름 지정을 위한 도구 {#tools}
+
+스마트 계약에 이름을 지정하는 데는 두 가지 접근 방식이 있습니다. 몇 가지 수동 단계를 거쳐 [ENS 앱](https://app.ens.domains)을 사용하거나 [Enscribe](https://www.enscribe.xyz)를 사용하는 방법이 있습니다. 이에 대한 내용은 아래에 설명되어 있습니다.
+
+### 수동 ENS 설정 {#manual-ens-setup}
+
+[ENS 앱](https://app.ens.domains/)을 사용하여 개발자는 수동으로 하위 이름을 생성하고 정방향 주소 레코드를 설정할 수 있습니다. 그러나 ENS 앱을 통해 이름에 대한 역방향 레코드를 설정하여 스마트 계약의 기본 이름을 설정할 수는 없습니다. [ENS 문서](https://docs.ens.domains/web/naming-contracts/)에 설명된 수동 단계를 수행해야 합니다.
+
+### Enscribe {#enscribe}
+
+[Enscribe](https://www.enscribe.xyz)는 ENS를 사용하여 스마트 계약 이름 지정을 간소화하고 스마트 계약에 대한 사용자 신뢰를 향상시킵니다. 다음과 같은 기능을 제공합니다.
+
+- **원자적 배포 및 이름 지정**: 새 계약을 배포할 때 ENS 이름을 할당합니다.
+- **배포 후 이름 지정**: 이미 배포된 계약에 이름을 연결합니다.
+- **멀티체인 지원**: ENS가 지원되는 이더리움 및 L2 네트워크에서 작동합니다.
+- **계약 검증 데이터**: 여러 소스에서 가져온 계약 검증 데이터를 포함하여 사용자의 신뢰를 높입니다.
+
+Enscribe는 사용자가 제공한 ENS 이름 또는 사용자가 ENS 이름이 없는 경우 자체 도메인을 지원합니다.
+
+[Enscribe 앱](https://app.enscribe.xyz)에 접속하여 스마트 계약의 이름을 지정하고 볼 수 있습니다.
+
+## 모범 사례 {#best-practices}
+
+- **`v1.myapp.eth`와 같이 명확하고 버전이 지정된 이름 사용**: 계약 업그레이드를 투명하게 만듭니다.
+- **역방향 레코드 설정**: 계약을 ENS 이름에 연결하여 지갑 및 블록체인 탐색기와 같은 앱에서 가시성을 확보합니다.
+- **만료일 면밀히 모니터링**: 의도치 않은 소유권 변경을 방지하려면 만료일을 면밀히 모니터링하세요.
+- **계약 소스 확인**: 사용자가 이름이 지정된 계약이 예상대로 작동하는지 신뢰할 수 있도록 계약 소스를 확인하세요.
+
+## 위험 {#risks}
+
+스마트 계약의 이름을 지정하면 이더리움 사용자에게 상당한 이점을 제공하지만, ENS 도메인 소유자는 관리에 주의를 기울여야 합니다. 주요 위험은 다음과 같습니다.
+
+- **만료**: DNS 이름과 마찬가지로 ENS 이름 등록은 유한한 기간 동안만 유효합니다. 따라서 소유자는 도메인 만료일을 모니터링하고 만료일보다 훨씬 전에 갱신하는 것이 중요합니다. ENS 앱과 Enscribe 모두 만료가 다가올 때 도메인 소유자에게 시각적 표시기를 제공합니다.
+- **소유권 변경**: ENS 레코드는 이더리움에서 NFT로 표시되며, 특정 `.eth` 도메인의 소유자는 관련 NFT를 소유하게 됩니다. 따라서 다른 계정이 이 NFT의 소유권을 갖게 되면 새 소유자는 자신의 재량에 따라 모든 ENS 레코드를 수정할 수 있습니다.
+
+이러한 위험을 완화하려면 `.eth` 2단계 도메인(2LD)의 소유자 계정을 다중 서명 지갑을 통해 보호하고 하위 도메인을 생성하여 계약 이름 지정을 관리해야 합니다. 그렇게 하면 하위 도메인 수준에서 우발적이거나 악의적인 소유권 변경이 발생하더라도 2LD 소유자가 이를 무효화할 수 있습니다.
+
+## 계약 이름 지정의 미래 {#future}
+
+계약 이름 지정은 웹에서 도메인 이름이 IP 주소를 대체한 것과 유사하게 디앱 개발의 모범 사례가 되고 있습니다. 지갑, 탐색기, 대시보드와 같은 더 많은 인프라가 계약에 대한 ENS 확인 기능을 통합함에 따라, 이름이 지정된 계약은 생태계 전반의 안전성을 개선하고 오류를 줄일 것입니다.
+
+스마트 계약을 더 쉽게 인식하고 추론할 수 있도록 함으로써, 이름 지정은 이더리움의 사용자와 앱 간의 간극을 메워 사용자의 안전과 UX를 모두 향상시키는 데 도움이 됩니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [ENS로 스마트 계약 이름 지정하기](https://docs.ens.domains/web/naming-contracts/)
+- [Enscribe로 스마트 계약 이름 지정하기](https://www.enscribe.xyz/docs).
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/security/index.md b/public/content/translations/ko/developers/docs/smart-contracts/security/index.md
new file mode 100644
index 00000000000..9c4bdbeec85
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/security/index.md
@@ -0,0 +1,573 @@
+---
+title: "스마트 콘트랙트 감사"
+description: "안전한 이더리움 스마트 계약을 구축하기 위한 가이드라인 개요"
+lang: ko
+---
+
+스마트 계약은 블록체인에 배포된 코드를 기반으로 변경 불가능한 로직을 실행하면서, 매우 유연하고 막대한 가치와 데이터를 제어할 수 있습니다. 이로 인해 기존 시스템보다 많은 이점을 제공하는 무신뢰 및 탈중앙화 애플리케이션의 활발한 생태계가 조성되었습니다. 또한 스마트 계약의 취약점을 악용하여 이익을 얻으려는 공격자에게는 기회가 되기도 합니다.
+
+이더리움과 같은 퍼블릭 블록체인은 스마트 계약 보안 문제를 더욱 복잡하게 만듭니다. 배포된 계약 코드는 _보통_ 보안 결함을 패치하기 위해 변경될 수 없으며, 스마트 계약에서 도난당한 자산은 불변성 때문에 추적이 매우 어렵고 대부분 복구할 수 없습니다.
+
+수치는 다양하지만, 스마트 계약의 보안 결함으로 인해 도난당하거나 손실된 총 가치는 10억 달러를 훌쩍 넘는 것으로 추정됩니다. 여기에는 [DAO 해킹](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/)(360만 ETH 도난, 현재 시가로 10억 달러 이상), [Parity 다중 서명 지갑 해킹](https://www.coindesk.com/markets/2017/07/19/30-million-ether-reported-stolen-due-to-parity-wallet-breach)(해커에게 3,000만 달러 손실), [Parity 지갑 동결 문제](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether)(3억 달러 이상의 ETH가 영구적으로 동결) 등 세간의 이목을 끈 사건들이 포함됩니다.
+
+앞서 언급한 문제들로 인해 개발자들은 안전하고, 견고하며, 복원력 있는 스마트 계약을 구축하는 데 노력을 기울여야 합니다. 스마트 계약 보안은 중요한 문제이며, 모든 개발자가 잘 배워두면 좋은 것입니다. 이 가이드에서는 이더리움 개발자를 위한 보안 고려 사항을 다루고 스마트 계약 보안을 개선하기 위한 참고 자료를 알아봅니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+보안 문제를 다루기 전에 [스마트 계약 개발의 기초](/developers/docs/smart-contracts/)에 익숙해지도록 하세요.
+
+## 안전한 이더리움 스마트 계약을 구축하기 위한 가이드라인 {#smart-contract-security-guidelines}
+
+### 1. 적절한 접근 제어 설계 {#design-proper-access-controls}
+
+스마트 계약에서 `public` 또는 `external`로 표시된 함수는 모든 외부 소유 계정(EOA) 또는 계약 계정에서 호출할 수 있습니다. 다른 사람이 사용자의 계약과 상호 작용하기를 원한다면 함수에 공용 가시성을 지정해야 합니다. 그러나 `private`로 표시된 함수는 스마트 계약 내의 함수에서만 호출할 수 있으며 외부 계정에서는 호출할 수 없습니다. 모든 네트워크 참여자에게 계약 함수에 대한 접근 권한을 부여하면 문제가 발생할 수 있으며, 특히 누구나 민감한 작업(예: 새로운 토큰 발행)을 수행할 수 있다는 것을 의미하는 경우 더욱 그렇습니다.
+
+스마트 계약 함수의 무단 사용을 방지하려면 안전한 접근 제어를 구현해야 합니다. 접근 제어 메커니즘은 스마트 계약에서 특정 함수를 사용할 수 있는 권한을 계약 관리를 책임지는 계정과 같이 승인된 주체로 제한합니다. 소유 가능 패턴과 역할 기반 제어는 스마트 계약에서 접근 제어를 구현하는 데 유용한 두 가지 패턴입니다.
+
+#### 소유 가능 패턴 {#ownable-pattern}
+
+소유 가능 패턴에서는 계약 생성 과정에서 주소가 계약의 '소유자'로 설정됩니다. 보호된 함수에는 `OnlyOwner` 수정자가 할당되어 계약이 함수를 실행하기 전에 호출 주소의 신원을 인증하도록 합니다. 계약 소유자가 아닌 다른 주소에서 보호된 함수를 호출하면 항상 되돌려지므로 원치 않는 접근을 방지할 수 있습니다.
+
+#### 역할 기반 접근 제어 {#role-based-access-control}
+
+스마트 계약에서 단일 주소를 `Owner`로 등록하면 중앙화의 위험이 발생하고 단일 실패 지점이 됩니다. 소유자의 계정 키가 손상되면 공격자가 소유 계약을 공격할 수 있습니다. 이것이 여러 관리 계정이 있는 역할 기반 접근 제어 패턴을 사용하는 것이 더 나은 선택일 수 있는 이유입니다.
+
+역할 기반 접근 제어에서 민감한 기능에 대한 접근은 신뢰할 수 있는 참여자 집합 간에 분산됩니다. 예를 들어, 한 계정은 토큰 발행을 담당하고 다른 계정은 계약을 업그레이드하거나 일시 중지하는 작업을 수행할 수 있습니다. 이러한 방식으로 접근 제어를 분산하면 단일 실패 지점을 제거하고 사용자에 대한 신뢰 가정을 줄일 수 있습니다.
+
+##### 다중 서명 지갑 사용
+
+안전한 접근 제어를 구현하는 또 다른 방법은 [다중 서명 계정](/developers/docs/smart-contracts/#multisig)을 사용하여 계약을 관리하는 것입니다. 일반 EOA와 달리 다중 서명 계정은 여러 엔티티가 소유하며 트랜잭션을 실행하려면 최소 계정 수(예: 5개 중 3개)의 서명이 필요합니다.
+
+접근 제어에 다중 서명을 사용하면 대상 계약에 대한 조치에 여러 당사자의 동의가 필요하므로 보안 계층이 추가됩니다. 이는 공격자나 불량 내부자가 악의적인 목적으로 민감한 계약 기능을 조작하기 어렵게 만들기 때문에 소유 가능 패턴을 사용하는 것이 필요한 경우 특히 유용합니다.
+
+### 2. require(), assert() 및 revert() 문을 사용하여 계약 작업을 보호하세요 {#use-require-assert-revert}
+
+언급했듯이 스마트 계약이 블록체인에 배포되면 누구나 스마트 계약의 공용 함수를 호출할 수 있습니다. 외부 계정이 계약과 어떻게 상호 작용할지 미리 알 수 없으므로 배포하기 전에 문제가 있는 작업에 대한 내부 보호 장치를 구현하는 것이 이상적입니다. 실행이 특정 요구 사항을 충족하지 못하는 경우 예외를 트리거하고 상태 변경을 되돌리기 위해 `require()`, `assert()` 및 `revert()` 문을 사용하여 스마트 계약에서 올바른 동작을 적용할 수 있습니다.
+
+**`require()`**: `require`는 함수 시작 부분에 정의되며 호출된 함수가 실행되기 전에 미리 정의된 조건이 충족되도록 합니다. `require` 문은 함수를 진행하기 전에 사용자 입력을 검증하거나, 상태 변수를 확인하거나, 호출 계정의 신원을 인증하는 데 사용할 수 있습니다.
+
+**`assert()`**: `assert()`는 내부 오류를 감지하고 코드의 '불변' 위반을 확인하는 데 사용됩니다. 불변은 모든 함수 실행에 대해 사실이어야 하는 계약의 상태에 대한 논리적 주장입니다. 불변의 예는 토큰 계약의 최대 총 공급량 또는 잔액입니다. `assert()`를 사용하면 계약이 취약한 상태에 도달하지 않도록 하고, 만약 그렇게 되면 상태 변수에 대한 모든 변경 사항이 롤백됩니다.
+
+**`revert()`**: `revert()`는 필요한 조건이 충족되지 않으면 예외를 트리거하는 if-else 문에서 사용할 수 있습니다. 아래 샘플 계약은 `revert()`를 사용하여 함수 실행을 보호합니다.
+
+```
+pragma solidity ^0.8.4;
+
+contract VendingMachine {
+ address owner;
+ error Unauthorized();
+ function buy(uint amount) public payable {
+ if (amount > msg.value / 2 ether)
+ revert("제공된 이더가 충분하지 않습니다.");
+ // 구매를 수행합니다.
+ }
+ function withdraw() public {
+ if (msg.sender != owner)
+ revert Unauthorized();
+
+ payable(msg.sender).transfer(address(this).balance);
+ }
+}
+```
+
+### 3. 스마트 계약 테스트 및 코드 정확성 확인 {#test-smart-contracts-and-verify-code-correctness}
+
+[이더리움 가상 머신](/developers/docs/evm/)에서 실행되는 코드의 불변성은 스마트 계약이 개발 단계에서 더 높은 수준의 품질 평가를 요구함을 의미합니다. 계약을 광범위하게 테스트하고 예기치 않은 결과가 있는지 관찰하면 보안이 크게 향상되고 장기적으로 사용자를 보호할 수 있습니다.
+
+일반적인 방법은 계약이 사용자로부터 받을 것으로 예상되는 모의 데이터를 사용하여 작은 단위 테스트를 작성하는 것입니다. [단위 테스트](/developers/docs/smart-contracts/testing/#unit-testing)는 특정 기능의 기능을 테스트하고 스마트 계약이 예상대로 작동하는지 확인하는 데 좋습니다.
+
+불행히도 단위 테스트는 단독으로 사용될 때 스마트 계약 보안을 향상시키는 데 최소한의 효과만 있습니다. 단위 테스트는 모의 데이터에 대해 함수가 제대로 실행됨을 증명할 수 있지만, 단위 테스트는 작성된 테스트만큼만 효과적입니다. 이로 인해 스마트 계약의 안전을 위협할 수 있는 누락된 엣지 케이스와 취약점을 감지하기가 어렵습니다.
+
+더 나은 접근 방식은 [정적 및 동적 분석](/developers/docs/smart-contracts/testing/#static-dynamic-analysis)을 사용하여 수행되는 속성 기반 테스트와 단위 테스트를 결합하는 것입니다. 정적 분석은 [제어 흐름 그래프](https://en.wikipedia.org/wiki/Control-flow_graph) 및 [추상 구문 트리](https://deepsource.io/glossary/ast/)와 같은 저수준 표현에 의존하여 도달 가능한 프로그램 상태 및 실행 경로를 분석합니다. 한편, [스마트 계약 퍼징](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry)과 같은 동적 분석 기술은 임의의 입력 값으로 계약 코드를 실행하여 보안 속성을 위반하는 작업을 감지합니다.
+
+[공식 검증](/developers/docs/smart-contracts/formal-verification)은 스마트 계약의 보안 속성을 검증하는 또 다른 기술입니다. 일반 테스트와 달리 공식 검증은 스마트 계약에 오류가 없음을 결정적으로 증명할 수 있습니다. 이는 원하는 보안 속성을 캡처하는 공식 사양을 만들고 계약의 공식 모델이 이 사양을 준수함을 증명함으로써 달성됩니다.
+
+### 4. 코드에 대한 독립적인 검토를 요청하세요 {#get-independent-code-reviews}
+
+계약을 테스트한 후 다른 사람들에게 소스 코드에 보안 문제가 있는지 확인하도록 요청하는 것이 좋습니다. 테스트를 통해 스마트 계약의 모든 결함을 발견할 수는 없지만 독립적인 검토를 받으면 취약점을 발견할 가능성이 높아집니다.
+
+#### 감사 {#audits}
+
+스마트 계약 감사를 의뢰하는 것은 독립적인 코드 검토를 수행하는 한 가지 방법입니다. 감사자는 스마트 계약이 안전하고 품질 결함 및 설계 오류가 없는지 확인하는 데 중요한 역할을 합니다.
+
+그렇다고 감사를 만병통치약으로 취급해서는 안 됩니다. 스마트 계약 감사는 모든 버그를 잡지 못하며 대부분 추가 검토를 제공하도록 설계되어 개발자가 초기 개발 및 테스트 중에 놓친 문제를 감지하는 데 도움이 될 수 있습니다. 또한 스마트 계약 감사의 이점을 극대화하려면 코드를 적절하게 문서화하고 인라인 주석을 추가하는 등 감사자와 작업하기 위한 모범 사례를 따라야 합니다.
+
+- [스마트 계약 감사 팁 및 요령](https://twitter.com/tinchoabbate/status/1400170232904400897) - _@tinchoabbate_
+- [감사를 최대한 활용하기](https://inference.ag/blog/2023-08-14-tips/) - _Inference_
+
+#### 버그 포상금 {#bug-bounties}
+
+버그 포상금 프로그램을 설정하는 것은 외부 코드 검토를 구현하는 또 다른 접근 방식입니다. 버그 포상금은 애플리케이션에서 취약점을 발견한 개인(보통 화이트햇 해커)에게 주어지는 금전적 보상입니다.
+
+적절하게 사용하면 버그 포상금은 해커 커뮤니티 구성원에게 코드에 중요한 결함이 있는지 검사하도록 인센티브를 제공합니다. 실제 예는 이더리움에서 실행되는 [레이어 2](/layer-2/) 프로토콜인 [Optimism](https://www.optimism.io/)에서 공격자가 무제한의 이더를 생성할 수 있었던 '무한 돈 버그'입니다. 다행히 화이트햇 해커가 [결함을 발견하고](https://www.saurik.com/optimism.html) 팀에 통보하여 [그 과정에서 큰 포상금을 받았습니다](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/).
+
+유용한 전략은 이해 관계가 있는 자금의 양에 비례하여 버그 포상금 프로그램의 지불금을 설정하는 것입니다. “[스케일링 버그 포상금](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)”으로 설명되는 이 접근 방식은 개인이 취약점을 악용하는 대신 책임감 있게 공개하도록 재정적 인센티브를 제공합니다.
+
+### 5. 스마트 계약 개발 중 모범 사례 따르기 {#follow-smart-contract-development-best-practices}
+
+감사 및 버그 포상금의 존재가 고품질 코드를 작성해야 할 책임을 면제해주지는 않습니다. 우수한 스마트 계약 보안은 적절한 설계 및 개발 프로세스를 따르는 것에서 시작됩니다.
+
+- git과 같은 버전 제어 시스템에 모든 코드를 저장
+
+- 풀 리퀘스트를 통해 모든 코드 수정하기
+
+- 풀 리퀘스트에 최소 한 명의 독립적인 검토자가 있는지 확인하세요. 프로젝트에서 단독으로 작업하는 경우 다른 개발자를 찾아 코드 검토를 교환하는 것을 고려하세요.
+
+- 스마트 계약 테스트, 컴파일, 배포를 위해 [개발 환경](/developers/docs/frameworks/)을 사용하세요.
+
+- 코드를 [Cyfrin Aderyn](https://github.com/Cyfrin/aderyn), Mythril 및 Slither와 같은 기본 코드 분석 도구로 실행하세요. 이상적으로는 각 풀 리퀘스트가 병합되기 전에 이 작업을 수행하고 출력의 차이점을 비교해야 합니다.
+
+- 코드가 오류 없이 컴파일되고 솔리디티 컴파일러가 경고를 내보내지 않도록 확인하세요.
+
+- 코드를 ([NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html)을 사용하여) 적절히 문서화하고 계약 아키텍처에 대한 세부 정보를 이해하기 쉬운 언어로 설명하세요. 이렇게 하면 다른 사람들이 코드를 감사하고 검토하기가 더 쉬워집니다.
+
+### 6. 견고한 재해 복구 계획 구현 {#implement-disaster-recovery-plans}
+
+안전한 접근 제어 설계, 기능 수정자 구현 및 기타 제안은 스마트 계약 보안을 향상시킬 수 있지만 악의적인 공격의 가능성을 배제할 수는 없습니다. 안전한 스마트 계약을 구축하려면 '실패에 대비'하고 공격에 효과적으로 대응하기 위한 대체 계획을 마련해야 합니다. 적절한 재해 복구 계획에는 다음 구성 요소의 일부 또는 전부가 포함됩니다.
+
+#### 계약 업그레이드 {#contract-upgrades}
+
+이더리움 스마트 계약은 기본적으로 불변이지만 업그레이드 패턴을 사용하여 어느 정도의 가변성을 달성할 수 있습니다. 계약 업그레이드는 중요한 결함으로 인해 기존 계약을 사용할 수 없게 되고 새로운 로직을 배포하는 것이 가장 실현 가능한 옵션인 경우에 필요합니다.
+
+계약 업그레이드 메커니즘은 다르게 작동하지만 '프록시 패턴'은 스마트 계약 업그레이드를 위한 더 인기 있는 접근 방식 중 하나입니다. [프록시 패턴](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern)은 애플리케이션의 상태와 로직을 _두_ 계약으로 나눕니다. 첫 번째 계약('프록시 계약')은 상태 변수(예: 사용자 잔액)를 저장하고, 두 번째 계약('로직 계약')은 계약 기능을 실행하기 위한 코드를 보유합니다.
+
+계정은 프록시 계약과 상호 작용하며, 프록시 계약은 [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries) 저수준 호출을 사용하여 모든 함수 호출을 로직 계약으로 보냅니다. 일반 메시지 호출과 달리 `delegatecall()`은 로직 계약의 주소에서 실행되는 코드가 호출 계약의 컨텍스트에서 실행되도록 보장합니다. 이는 로직 계약이 항상 자신의 저장 공간 대신 프록시의 저장 공간에 쓰고 `msg.sender` 및 `msg.value`의 원래 값이 보존됨을 의미합니다.
+
+로직 계약에 대한 호출을 위임하려면 해당 주소를 프록시 계약의 저장 공간에 저장해야 합니다. 따라서 계약의 로직을 업그레이드하는 것은 다른 로직 계약을 배포하고 새 주소를 프록시 계약에 저장하는 문제일 뿐입니다. 프록시 계약에 대한 후속 호출은 자동으로 새 로직 계약으로 라우팅되므로 실제로 코드를 수정하지 않고도 계약을 '업그레이드'하게 됩니다.
+
+[계약 업그레이드에 대해 더 알아보기](/developers/docs/smart-contracts/upgrading/).
+
+#### 긴급 중지 {#emergency-stops}
+
+언급했듯이 광범위한 감사 및 테스트로 스마트 계약의 모든 버그를 발견할 수는 없습니다. 배포 후 코드에 취약점이 나타나면 계약 주소에서 실행되는 코드를 변경할 수 없으므로 패치하는 것이 불가능합니다. 또한 업그레이드 메커니즘(예: 프록시 패턴)은 구현하는 데 시간이 걸릴 수 있으며(종종 다른 당사자의 승인이 필요함), 이는 공격자에게 더 많은 피해를 입힐 시간을 줄 뿐입니다.
+
+핵심 옵션은 계약의 취약한 기능에 대한 호출을 차단하는 '긴급 중지' 기능을 구현하는 것입니다. 긴급 중지는 일반적으로 다음 구성 요소로 구성됩니다.
+
+1. 스마트 계약이 중지된 상태인지 여부를 나타내는 전역 부울 변수입니다. 이 변수는 계약 설정 시 `false`로 설정되지만 계약이 중지되면 `true`로 되돌아갑니다.
+
+2. 실행 시 부울 변수를 참조하는 함수. 이러한 함수는 스마트 계약이 중지되지 않았을 때 접근할 수 있으며, 긴급 중지 기능이 트리거되면 접근할 수 없게 됩니다.
+
+3. 부울 변수를 `true`로 설정하는 긴급 중지 기능에 접근할 수 있는 엔티티입니다. 악의적인 행위를 방지하기 위해 이 함수에 대한 호출은 신뢰할 수 있는 주소(예: 계약 소유자)로 제한될 수 있습니다.
+
+계약이 긴급 중지를 활성화하면 특정 함수를 호출할 수 없게 됩니다. 이는 전역 변수를 참조하는 수정자로 선택 함수를 래핑하여 달성됩니다. 아래는 계약에서 이 패턴의 구현을 설명하는 [예제](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol)입니다.
+
+```solidity
+// 이 코드는 전문적인 감사를 받지 않았으며 안전성이나 정확성에 대해 어떠한 약속도 하지 않습니다. 자신의 책임 하에 사용하세요.
+
+contract EmergencyStop {
+
+ bool isStopped = false;
+
+ modifier stoppedInEmergency {
+ require(!isStopped);
+ _;
+ }
+
+ modifier onlyWhenStopped {
+ require(isStopped);
+ _;
+ }
+
+ modifier onlyAuthorized {
+ // 여기에서 msg.sender의 권한을 확인하세요
+ _;
+ }
+
+ function stopContract() public onlyAuthorized {
+ isStopped = true;
+ }
+
+ function resumeContract() public onlyAuthorized {
+ isStopped = false;
+ }
+
+ function deposit() public payable stoppedInEmergency {
+ // 입금 로직이 여기서 발생합니다
+ }
+
+ function emergencyWithdraw() public onlyWhenStopped {
+ // 긴급 인출이 여기서 발생합니다
+ }
+}
+```
+
+이 예제는 긴급 중지의 기본 기능을 보여줍니다.
+
+- `isStopped`는 처음에 `false`로 평가되고 계약이 긴급 모드로 들어가면 `true`로 평가되는 부울입니다.
+
+- 함수 수정자 `onlyWhenStopped`와 `stoppedInEmergency`는 `isStopped` 변수를 확인합니다. `stoppedInEmergency`는 계약이 취약할 때 접근할 수 없어야 하는 함수(예: `deposit()`)를 제어하는 데 사용됩니다. 이러한 함수에 대한 호출은 단순히 되돌려집니다.
+
+`onlyWhenStopped`는 긴급 상황 시 호출 가능해야 하는 함수(예: `emergencyWithdraw()`)에 사용됩니다. 이러한 함수는 상황 해결에 도움이 될 수 있으므로 '제한된 함수' 목록에서 제외됩니다.
+
+긴급 중지 기능을 사용하면 스마트 계약의 심각한 취약점을 처리하기 위한 효과적인 임시 방편을 제공합니다. 그러나 사용자가 개발자가 이기적인 이유로 이를 활성화하지 않을 것이라고 신뢰해야 할 필요성이 증가합니다. 이를 위해 온체인 투표 메커니즘, 타임락 또는 다중 서명 지갑의 승인을 통해 긴급 중지 제어를 분산하는 것이 가능한 해결책입니다.
+
+#### 이벤트 모니터링 {#event-monitoring}
+
+[이벤트](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events)를 사용하면 스마트 계약 함수에 대한 호출을 추적하고 상태 변수의 변경 사항을 모니터링할 수 있습니다. 어떤 당사자가 안전에 중요한 조치(예: 자금 인출)를 취할 때마다 이벤트를 발생시키도록 스마트 계약을 프로그래밍하는 것이 이상적입니다.
+
+이벤트를 로깅하고 오프체인에서 모니터링하면 계약 운영에 대한 통찰력을 제공하고 악의적인 행동을 더 빨리 발견하는 데 도움이 됩니다. 이는 팀이 해킹에 더 빨리 대응하고 기능 일시 중지 또는 업그레이드 수행과 같은 사용자에게 미치는 영향을 완화하기 위한 조치를 취할 수 있음을 의미합니다.
+
+누군가 계약과 상호 작용할 때마다 자동으로 알림을 전달하는 기성 모니터링 도구를 선택할 수도 있습니다. 이러한 도구를 사용하면 트랜잭션 양, 함수 호출 빈도 또는 관련된 특정 함수와 같은 다양한 트리거를 기반으로 사용자 지정 알림을 만들 수 있습니다. 예를 들어, 단일 트랜잭션에서 인출된 금액이 특정 임계값을 초과할 때 들어오는 알림을 프로그래밍할 수 있습니다.
+
+### 7. 안전한 거버넌스 시스템 설계 {#design-secure-governance-systems}
+
+핵심 스마트 계약의 통제권을 커뮤니티 구성원에게 넘겨 애플리케이션을 분산화할 수 있습니다. 이 경우 스마트 계약 시스템에는 거버넌스 모듈, 즉 커뮤니티 구성원이 온체인 거버넌스 시스템을 통해 관리 조치를 승인할 수 있는 메커니즘이 포함됩니다. 예를 들어, 프록시 계약을 새 구현으로 업그레이드하자는 제안은 토큰 보유자들의 투표에 부쳐질 수 있습니다.
+
+분산형 거버넌스는 특히 개발자와 최종 사용자의 이익을 일치시키기 때문에 유익할 수 있습니다. 그럼에도 불구하고 스마트 계약 거버넌스 메커니즘은 잘못 구현될 경우 새로운 위험을 초래할 수 있습니다. 있을 법한 시나리오는 공격자가 [플래시 론](/defi/#flash-loans)을 이용하여 엄청난 투표권(보유 토큰 수로 측정)을 획득하고 악의적인 제안을 통과시키는 경우입니다.
+
+온체인 거버넌스와 관련된 문제를 예방하는 한 가지 방법은 [타임락을 사용하는 것](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/)입니다. 타임락은 스마트 계약이 특정 시간이 지날 때까지 특정 작업을 실행하지 못하도록 합니다. 다른 전략으로는 각 토큰이 잠겨 있던 기간에 따라 '투표 가중치'를 할당하거나, 현재 블록이 아닌 과거의 특정 기간(예: 2-3 블록 전)에 주소의 투표권을 측정하는 것이 있습니다. 두 방법 모두 온체인 투표를 흔들기 위해 투표권을 빠르게 축적할 가능성을 줄여줍니다.
+
+공유된 링크에서 [안전한 거버넌스 시스템 설계](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/), [DAO의 다양한 투표 메커니즘](https://hackernoon.com/governance-is-the-holy-grail-for-daos) 및 [DeFi를 활용한 일반적인 DAO 공격 벡터](https://dacian.me/dao-governance-defi-attacks)에 대해 더 자세히 알아보세요.
+
+### 8. 코드의 복잡성을 최소화하세요 {#reduce-code-complexity}
+
+기존 소프트웨어 개발자들은 소프트웨어 설계에 불필요한 복잡성을 도입하지 말 것을 권고하는 KISS('keep it simple, stupid') 원칙에 익숙합니다. 이는 '복잡한 시스템은 복잡한 방식으로 실패한다'는 오랜 생각에 따른 것으로, 비용이 많이 드는 오류에 더 취약합니다.
+
+스마트 계약은 잠재적으로 막대한 가치를 제어하므로 스마트 계약을 작성할 때 단순함을 유지하는 것이 특히 중요합니다. 스마트 계약을 작성할 때 단순성을 달성하기 위한 팁은 가능한 경우 [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)와 같은 기존 라이브러리를 재사용하는 것입니다. 이러한 라이브러리는 개발자들에 의해 광범위하게 감사되고 테스트되었기 때문에, 이를 사용하면 처음부터 새로운 기능을 작성함으로써 버그를 도입할 가능성을 줄일 수 있습니다.
+
+또 다른 일반적인 조언은 작은 함수를 작성하고 비즈니스 로직을 여러 계약에 분산하여 계약을 모듈식으로 유지하는 것입니다. 더 간단한 코드를 작성하면 스마트 계약의 공격 표면을 줄일 수 있을 뿐만 아니라 전체 시스템의 정확성을 추론하고 가능한 설계 오류를 조기에 감지하기가 더 쉬워집니다.
+
+### 9. 일반적인 스마트 계약 취약점 방어 {#mitigate-common-smart-contract-vulnerabilities}
+
+#### 재진입 {#reentrancy}
+
+EVM은 동시성을 허용하지 않으므로 메시지 호출에 관련된 두 계약이 동시에 실행될 수 없습니다. 외부 호출은 호출이 반환될 때까지 호출 계약의 실행과 메모리를 일시 중지하며, 그 시점에서 실행은 정상적으로 진행됩니다. 이 과정은 다른 계약으로 [제어 흐름](https://www.computerhope.com/jargon/c/contflow.htm)을 이전하는 것으로 공식적으로 설명될 수 있습니다.
+
+대부분 무해하지만 신뢰할 수 없는 계약으로 제어 흐름을 이전하면 재진입과 같은 문제가 발생할 수 있습니다. 재진입 공격은 악성 계약이 원래 함수 호출이 완료되기 전에 취약한 계약으로 다시 호출할 때 발생합니다. 이 유형의 공격은 예시를 통해 가장 잘 설명됩니다.
+
+누구나 이더를 입금하고 인출할 수 있는 간단한 스마트 계약('Victim')을 고려해 보세요.
+
+```solidity
+// 이 계약은 취약합니다. 프로덕션에서 사용하지 마세요
+
+contract Victim {
+ mapping (address => uint256) public balances;
+
+ function deposit() external payable {
+ balances[msg.sender] += msg.value;
+ }
+
+ function withdraw() external {
+ uint256 amount = balances[msg.sender];
+ (bool success, ) = msg.sender.call.value(amount)("");
+ require(success);
+ balances[msg.sender] = 0;
+ }
+}
+```
+
+이 계약은 사용자가 이전에 계약에 입금한 ETH를 인출할 수 있도록 `withdraw()` 함수를 노출합니다. 인출을 처리할 때 계약은 다음 작업을 수행합니다.
+
+1. 사용자의 ETH 잔액 확인
+2. 호출 주소로 자금 전송
+3. 사용자의 추가 인출을 방지하기 위해 잔액을 0으로 재설정
+
+`Victim` 계약의 `withdraw()` 함수는 '확인-상호작용-효과' 패턴을 따릅니다. 실행에 필요한 조건이 충족되었는지 _확인_(즉, 사용자가 양의 ETH 잔액을 가지고 있는지)하고, 트랜잭션의 _효과_(즉, 사용자 잔액 감소)를 적용하기 전에 호출자의 주소로 ETH를 전송하여 상호작용을 수행합니다.
+
+`withdraw()`가 외부 소유 계정(EOA)에서 호출되면 함수는 예상대로 실행됩니다. `msg.sender.call.value()`는 호출자에게 ETH를 보냅니다. 그러나 `msg.sender`가 스마트 계약 계정이고 `withdraw()`를 호출하면, `msg.sender.call.value()`를 사용하여 자금을 보내는 것은 해당 주소에 저장된 코드를 실행하게 합니다.
+
+이것이 계약 주소에 배포된 코드라고 상상해보세요.
+
+```solidity
+ contract Attacker {
+ function beginAttack() external payable {
+ Victim(victim_address).deposit.value(1 ether)();
+ Victim(victim_address).withdraw();
+ }
+
+ function() external payable {
+ if (gasleft() > 40000) {
+ Victim(victim_address).withdraw();
+ }
+ }
+}
+```
+
+이 계약은 세 가지를 하도록 설계되었습니다.
+
+1. 다른 계정(공격자의 EOA일 가능성 있음)으로부터 입금 받기
+2. Victim 계약에 1 ETH 입금하기
+3. 스마트 계약에 저장된 1 ETH 인출하기
+
+여기에는 아무런 문제가 없지만, `Attacker`는 들어오는 `msg.sender.call.value`에서 남은 가스가 40,000 이상이면 `Victim`에서 `withdraw()`를 다시 호출하는 또 다른 함수를 가지고 있습니다. 이는 `Attacker`가 `Victim`에 재진입하여 첫 번째 `withdraw` 호출이 완료되기 _전에_ 더 많은 자금을 인출할 수 있는 능력을 부여합니다. 주기는 다음과 같습니다.
+
+```solidity
+- 공격자의 EOA가 1 ETH로 `Attacker.beginAttack()`을 호출합니다
+- `Attacker.beginAttack()`이 `Victim`에 1 ETH를 입금합니다
+- `Attacker`가 `Victim`에서 `withdraw()`를 호출합니다
+- `Victim`이 `Attacker`의 잔액(1 ETH)을 확인합니다
+- `Victim`이 `Attacker`에게 1 ETH를 전송합니다(기본 함수를 트리거함)
+- `Attacker`가 `Victim.withdraw()`를 다시 호출합니다(`Victim`은 첫 번째 인출에서 `Attacker`의 잔액을 줄이지 않았음에 유의)
+- `Victim`이 `Attacker`의 잔액을 확인합니다(첫 번째 호출의 효과를 적용하지 않았기 때문에 여전히 1 ETH임)
+- `Victim`이 `Attacker`에게 1 ETH를 전송합니다(기본 함수를 트리거하고 `Attacker`가 `withdraw` 함수에 재진입할 수 있게 함)
+- `Attacker`가 가스를 모두 소진할 때까지 프로세스가 반복되며, 그 시점에서 `msg.sender.call.value`는 추가 인출을 트리거하지 않고 반환됩니다
+- `Victim`은 마침내 첫 번째 트랜잭션(및 후속 트랜잭션)의 결과를 상태에 적용하므로 `Attacker`의 잔액은 0으로 설정됩니다
+```
+
+요약하자면, 함수 실행이 완료될 때까지 호출자의 잔액이 0으로 설정되지 않기 때문에 후속 호출이 성공하여 호출자가 잔액을 여러 번 인출할 수 있게 됩니다. [2016년 DAO 해킹](https://www.coindesk.com/learn/understanding-the-dao-attack)에서 일어난 것처럼, 이러한 종류의 공격은 스마트 계약의 자금을 고갈시키는 데 사용될 수 있습니다. [재진입 공격의 공개 목록](https://github.com/pcaversaccio/reentrancy-attacks)에서 알 수 있듯이, 재진입 공격은 오늘날에도 여전히 스마트 계약의 중요한 문제입니다.
+
+##### 재진입 공격을 예방하는 방법
+
+재진입을 처리하는 한 가지 방법은 [확인-효과-상호작용 패턴](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern)을 따르는 것입니다. 이 패턴은 실행을 진행하기 전에 필요한 확인을 수행하는 코드가 먼저 오고, 그 다음 계약 상태를 조작하는 코드가 오고, 마지막으로 다른 계약이나 EOA와 상호작용하는 코드가 오도록 함수 실행 순서를 정합니다.
+
+확인-효과-상호작용 패턴은 아래에 표시된 `Victim` 계약의 수정된 버전에서 사용됩니다.
+
+```solidity
+contract NoLongerAVictim {
+ function withdraw() external {
+ uint256 amount = balances[msg.sender];
+ balances[msg.sender] = 0;
+ (bool success, ) = msg.sender.call.value(amount)("");
+ require(success);
+ }
+}
+```
+
+이 계약은 사용자의 잔액을 확인하고, `withdraw()` 함수의 _효과_(사용자 잔액을 0으로 재설정)를 적용한 후 _상호작용_(사용자 주소로 ETH 전송)을 수행합니다. 이를 통해 계약은 외부 호출 전에 저장 공간을 업그레이드하여 첫 번째 공격을 가능하게 했던 재진입 조건을 제거합니다. `Attacker` 계약은 여전히 `NoLongerAVictim`을 다시 호출할 수 있지만, `balances[msg.sender]`가 0으로 설정되었기 때문에 추가 인출은 오류를 발생시킵니다.
+
+또 다른 옵션은 함수 호출이 완료될 때까지 계약 상태의 일부를 잠그는 상호 배제 잠금(일반적으로 '뮤텍스'라고 함)을 사용하는 것입니다. 이는 함수가 실행되기 전에 `true`로 설정되고 호출이 완료된 후 `false`로 되돌아가는 부울 변수를 사용하여 구현됩니다. 아래 예에서 볼 수 있듯이, 뮤텍스를 사용하면 원래 호출이 아직 처리 중인 동안 재귀 호출로부터 함수를 보호하여 재진입을 효과적으로 막을 수 있습니다.
+
+```solidity
+pragma solidity ^0.7.0;
+
+contract MutexPattern {
+ bool locked = false;
+ mapping(address => uint256) public balances;
+
+ modifier noReentrancy() {
+ require(!locked, "재진입이 차단되었습니다.");
+ locked = true;
+ _;
+ locked = false;
+ }
+ // 이 함수는 뮤텍스로 보호되므로 'msg.sender.call' 내에서 재진입 호출을 통해 'withdraw'를 다시 호출할 수 없습니다.
+ // 'return'문은 'true'로 평가되지만 여전히 수정자에서 'locked = false'문을 평가합니다
+ function withdraw(uint _amount) public payable noReentrancy returns(bool) {
+ require(balances[msg.sender] >= _amount, "인출할 잔액이 없습니다.");
+
+ balances[msg.sender] -= _amount;
+ (bool success, ) = msg.sender.call{value: _amount}("");
+ require(success);
+
+ return true;
+ }
+}
+```
+
+계정으로 자금을 보내는 '푸시 지불' 시스템 대신, 사용자가 스마트 계약에서 자금을 인출해야 하는 [풀 지불](https://docs.openzeppelin.com/contracts/5.x/api/security#PullPayment) 시스템을 사용할 수도 있습니다. 이는 알 수 없는 주소에서 의도치 않게 코드를 트리거할 가능성을 제거하고 특정 서비스 거부 공격을 예방할 수도 있습니다.
+
+#### 정수 언더플로우 및 오버플로우 {#integer-underflows-and-overflows}
+
+정수 오버플로우는 산술 연산의 결과가 허용 가능한 값 범위를 벗어나 가장 낮은 표현 가능한 값으로 '롤오버'될 때 발생합니다. 예를 들어, `uint8`은 2^8-1=255까지의 값만 저장할 수 있습니다. 값이 `255`보다 큰 산술 연산은 오버플로우되어 `uint`를 `0`으로 재설정합니다. 이는 자동차의 주행 거리계가 최대 주행 거리(999999)에 도달하면 0으로 재설정되는 것과 유사합니다.
+
+정수 언더플로우도 비슷한 이유로 발생합니다. 산술 연산의 결과가 허용 가능한 범위 아래로 떨어지는 것입니다. 예를 들어 `uint8`에서 `0`을 감소시키려고 하면 결과는 단순히 표현 가능한 최대값(`255`)으로 롤오버됩니다.
+
+정수 오버플로우와 언더플로우 모두 계약의 상태 변수에 예기치 않은 변경을 초래하고 계획되지 않은 실행을 초래할 수 있습니다. 아래는 공격자가 스마트 계약에서 산술 오버플로우를 악용하여 잘못된 작업을 수행하는 방법을 보여주는 예입니다.
+
+```
+pragma solidity ^0.7.6;
+
+// 이 계약은 시간 금고 역할을 하도록 설계되었습니다.
+// 사용자는 이 계약에 입금할 수 있지만 최소 일주일 동안은 인출할 수 없습니다.
+// 사용자는 1주 대기 기간을 초과하여 대기 시간을 연장할 수도 있습니다.
+
+/*
+1. TimeLock 배포
+2. TimeLock의 주소로 Attack 배포
+3. 1이더를 보내는 Attack.attack 호출. 즉시 이더를 인출할 수 있습니다.
+
+무슨 일이 일어났나요?
+Attack은 TimeLock.lockTime을 오버플로우시켜 1주 대기 기간 전에 인출할 수 있었습니다.
+*/
+
+contract TimeLock {
+ mapping(address => uint) public balances;
+ mapping(address => uint) public lockTime;
+
+ function deposit() external payable {
+ balances[msg.sender] += msg.value;
+ lockTime[msg.sender] = block.timestamp + 1 weeks;
+ }
+
+ function increaseLockTime(uint _secondsToIncrease) public {
+ lockTime[msg.sender] += _secondsToIncrease;
+ }
+
+ function withdraw() public {
+ require(balances[msg.sender] > 0, "자금 부족");
+ require(block.timestamp > lockTime[msg.sender], "잠금 시간이 만료되지 않았습니다");
+
+ uint amount = balances[msg.sender];
+ balances[msg.sender] = 0;
+
+ (bool sent, ) = msg.sender.call{value: amount}("");
+ require(sent, "이더 전송 실패");
+ }
+}
+
+contract Attack {
+ TimeLock timeLock;
+
+ constructor(TimeLock _timeLock) {
+ timeLock = TimeLock(_timeLock);
+ }
+
+ fallback() external payable {}
+
+ function attack() public payable {
+ timeLock.deposit{value: msg.value}();
+ /*
+ t가 현재 잠금 시간이라면 x + t = 2**256 = 0이 되는 x를 찾아야 합니다
+ 따라서 x = -t
+ 2**256 = type(uint).max + 1
+ 따라서 x = type(uint).max + 1 - t
+ */
+ timeLock.increaseLockTime(
+ type(uint).max + 1 - timeLock.lockTime(address(this))
+ );
+ timeLock.withdraw();
+ }
+}
+```
+
+##### 정수 언더플로우 및 오버플로우 예방 방법
+
+버전 0.8.0부터 솔리디티 컴파일러는 정수 언더플로우 및 오버플로우를 초래하는 코드를 거부합니다. 그러나 더 낮은 컴파일러 버전으로 컴파일된 계약은 산술 연산과 관련된 함수에 대한 확인을 수행하거나 언더플로우/오버플로우를 확인하는 라이브러리(예: [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math))를 사용해야 합니다.
+
+#### 오라클 조작 {#oracle-manipulation}
+
+[오라클](/developers/docs/oracles/)은 오프체인 정보를 소싱하여 스마트 계약이 사용할 수 있도록 온체인으로 보냅니다. 오라클을 사용하면 자본 시장과 같은 오프체인 시스템과 상호 운용되는 스마트 계약을 설계하여 애플리케이션을 크게 확장할 수 있습니다.
+
+그러나 오라클이 손상되어 잘못된 정보를 온체인으로 보내면 스마트 계약은 잘못된 입력을 기반으로 실행되어 문제가 발생할 수 있습니다. 이것이 블록체인 오라클의 정보가 정확하고 최신이며 시기적절한지 확인하는 작업을 다루는 '오라클 문제'의 기초입니다.
+
+관련된 보안 문제는 탈중앙화 거래소와 같은 온체인 오라클을 사용하여 자산의 현물 가격을 얻는 것입니다. [탈중앙화 금융(DeFi)](/defi/) 산업의 대출 플랫폼은 사용자가 얼마나 빌릴 수 있는지 결정하기 위해 사용자의 담보 가치를 결정하기 위해 종종 이 작업을 수행합니다.
+
+DEX 가격은 주로 차익 거래자들이 시장의 균형을 회복하기 때문에 종종 정확합니다. 그러나 특히 온체인 오라클이 역사적 거래 패턴에 따라 자산 가격을 계산하는 경우(보통 그렇듯이) 조작에 개방되어 있습니다.
+
+예를 들어, 공격자는 대출 계약과 상호 작용하기 직전에 플래시 론을 받아 자산의 현물 가격을 인위적으로 부풀릴 수 있습니다. DEX에서 자산 가격을 조회하면 (공격자의 대규모 '매수 주문'이 자산 수요를 왜곡하기 때문에) 평소보다 높은 가치가 반환되어 실제보다 더 많이 빌릴 수 있습니다. 이러한 '플래시 론 공격'은 디파이 애플리케이션 간의 가격 오라클 의존도를 악용하는 데 사용되어 프로토콜에 수백만 달러의 자금 손실을 초래했습니다.
+
+##### 오라클 조작 예방 방법
+
+[오라클 조작을 피하기 위한](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples) 최소 요구 사항은 단일 실패 지점을 피하기 위해 여러 소스에서 정보를 쿼리하는 탈중앙화 오라클 네트워크를 사용하는 것입니다. 대부분의 경우 탈중앙화 오라클에는 오라클 노드가 올바른 정보를 보고하도록 장려하는 암호경제적 인센티브가 내장되어 있어 중앙화 오라클보다 더 안전합니다.
+
+자산 가격에 대해 온체인 오라클을 쿼리할 계획이라면 시간 가중 평균 가격(TWAP) 메커니즘을 구현하는 오라클을 사용하는 것을 고려하세요. [TWAP 오라클](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles)은 서로 다른 두 시점(수정 가능)에서 자산 가격을 쿼리하고 얻은 평균을 기반으로 현물 가격을 계산합니다. 더 긴 기간을 선택하면 최근에 실행된 대규모 주문이 자산 가격에 영향을 미칠 수 없으므로 프로토콜을 가격 조작으로부터 보호할 수 있습니다.
+
+## 개발자를 위한 스마트 계약 보안 참고 자료 {#smart-contract-security-resources-for-developers}
+
+### 스마트 계약 분석 및 코드 정확성 검증 도구 {#code-analysis-tools}
+
+- **[테스트 도구 및 라이브러리](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _스마트 계약에 대한 단위 테스트, 정적 분석 및 동적 분석을 수행하기 위한 업계 표준 도구 및 라이브러리 모음._
+
+- **[공식 검증 도구](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _스마트 계약의 기능적 정확성을 검증하고 불변을 확인하기 위한 도구._
+
+- **[스마트 계약 감사 서비스](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _이더리움 개발 프로젝트를 위한 스마트 계약 감사 서비스를 제공하는 조직 목록._
+
+- **[버그 포상금 플랫폼](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _버그 포상금을 조정하고 스마트 계약의 중요한 취약점에 대한 책임 있는 공개를 보상하기 위한 플랫폼._
+
+- **[Fork Checker](https://forkchecker.hashex.org/)** - _포크된 계약에 관한 모든 사용 가능한 정보를 확인하기 위한 무료 온라인 도구._
+
+- **[ABI Encoder](https://abi.hashex.org/)** - _솔리디티 계약 기능 및 생성자 인수를 인코딩하기 위한 무료 온라인 서비스._
+
+- **[Aderyn](https://github.com/Cyfrin/aderyn)** - _추상 구문 트리(AST)를 순회하여 의심되는 취약점을 찾아내고 문제를 쉽게 소비할 수 있는 마크다운 형식으로 출력하는 솔리디티 정적 분석기._
+
+### 스마트 계약 모니터링 도구 {#smart-contract-monitoring-tools}
+
+- **[Tenderly 실시간 알림](https://tenderly.co/monitoring)** - _스마트 계약이나 지갑에서 비정상적이거나 예상치 못한 이벤트가 발생했을 때 실시간 알림을 받기 위한 도구._
+
+### 스마트 계약의 안전한 관리를 위한 도구 {#smart-contract-administration-tools}
+
+- **[Safe](https://safe.global/)** - _이더리움에서 실행되는 스마트 계약 지갑으로, 트랜잭션이 발생하기 전에 최소한의 사람들이 승인해야 합니다(M-of-N)._
+
+- **[OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)** - _계약 소유권, 업그레이드, 접근 제어, 거버넌스, 일시 중지 기능 등을 포함한 관리 기능을 구현하기 위한 계약 라이브러리._
+
+### 스마트 계약 감사 서비스 {#smart-contract-auditing-services}
+
+- **[ConsenSys Diligence](https://diligence.consensys.io/)** - _블록체인 생태계 전반의 프로젝트가 프로토콜을 출시할 준비가 되어 있고 사용자를 보호하도록 구축되었는지 확인하는 데 도움이 되는 스마트 계약 감사 서비스._
+
+- **[CertiK](https://www.certik.com/)** - _스마트 계약 및 블록체인 네트워크에 대한 최첨단 공식 검증 기술 사용을 개척하는 블록체인 보안 회사._
+
+- **[Trail of Bits](https://www.trailofbits.com/)** - _보안 연구와 공격자 사고방식을 결합하여 위험을 줄이고 코드를 강화하는 사이버 보안 회사._
+
+- **[PeckShield](https://peckshield.com/)** - _전체 블록체인 생태계의 보안, 개인 정보 보호 및 유용성을 위한 제품과 서비스를 제공하는 블록체인 보안 회사._
+
+- **[QuantStamp](https://quantstamp.com/)** - _보안 및 위험 평가 서비스를 통해 블록체인 기술의 주류 채택을 촉진하는 감사 서비스._
+
+- **[OpenZeppelin](https://www.openzeppelin.com/security-audits)** - _분산 시스템에 대한 보안 감사를 제공하는 스마트 계약 보안 회사._
+
+- **[Runtime Verification](https://runtimeverification.com/)** - _스마트 계약의 공식 모델링 및 검증을 전문으로 하는 보안 회사._
+
+- **[Hacken](https://hacken.io)** - _360도 접근 방식을 블록체인 보안에 도입하는 웹3 사이버 보안 감사자._
+
+- **[Nethermind](https://www.nethermind.io/smart-contract-audits)** - _솔리디티 및 Cairo 감사 서비스로, 이더리움 및 Starknet 전반에 걸쳐 스마트 계약의 무결성과 사용자 안전을 보장합니다._
+
+- **[HashEx](https://hashex.org/)** - _HashEx는 암호화폐의 보안을 보장하기 위해 블록체인 및 스마트 계약 감사에 중점을 두며, 스마트 계약 개발, 침투 테스트, 블록체인 컨설팅과 같은 서비스를 제공합니다._
+
+- **[Code4rena](https://code4rena.com/)** - _스마트 계약 보안 전문가들이 취약점을 찾아내고 웹3를 더 안전하게 만드는 데 도움을 주도록 인센티브를 제공하는 경쟁적인 감사 플랫폼._
+
+- **[CodeHawks](https://codehawks.com/)** - _보안 연구원들을 위한 스마트 계약 감사 대회를 개최하는 경쟁적인 감사 플랫폼._
+
+- **[Cyfrin](https://cyfrin.io)** - _제품 및 스마트 계약 감사 서비스를 통해 암호화 보안을 육성하는 웹3 보안 강자._
+
+- **[ImmuneBytes](https://immunebytes.com/smart-contract-audit/)** - _경험 많은 감사자 팀과 최고 수준의 도구를 통해 블록체인 시스템에 대한 보안 감사를 제공하는 웹3 보안 회사._
+
+- **[Oxorio](https://oxor.io/)** - _암호화 회사 및 디파이 프로젝트를 위한 EVM, 솔리디티, ZK, 크로스체인 기술 전문 지식을 갖춘 스마트 계약 감사 및 블록체인 보안 서비스._
+
+- **[Inference](https://inference.ag/)** - _EVM 기반 블록체인을 위한 스마트 계약 감사를 전문으로 하는 보안 감사 회사._ 전문 감사자 덕분에 잠재적인 문제를 식별하고 배포 전에 이를 해결하기 위한 실행 가능한 해결책을 제안합니다.
+
+### 버그 포상금 플랫폼 {#bug-bounty-platforms}
+
+- **[Immunefi](https://immunefi.com/)** - _스마트 계약 및 디파이 프로젝트를 위한 버그 포상금 플랫폼으로, 보안 연구원들이 코드를 검토하고, 취약점을 공개하고, 보상을 받고, 암호화폐를 더 안전하게 만듭니다._
+
+- **[HackerOne](https://www.hackerone.com/)** - _기업과 침투 테스터 및 사이버 보안 연구원을 연결하는 취약점 조정 및 버그 포상금 플랫폼._
+
+- **[HackenProof](https://hackenproof.com/)** - _암호화 프로젝트(디파이, 스마트 계약, 지갑, CEX 등)를 위한 전문 버그 포상금 플랫폼으로, 보안 전문가들이 분류 서비스를 제공하고 연구원들은 관련 있고 검증된 버그 보고서에 대해 보상을 받습니다._
+
+- **[Sherlock](https://www.sherlock.xyz/)** - _스마트 계약 보안을 위한 웹3의 보험사로, 스마트 계약을 통해 감사자에게 지급되는 보상금을 관리하여 관련 버그가 공정하게 지급되도록 보장합니다._
+
+- **[CodeHawks](https://www.codehawks.com/)** - _감사자들이 보안 대회 및 챌린지에 참여하고 (곧) 자신들의 개인 감사에도 참여하는 경쟁적인 버그 포상금 플랫폼._
+
+### 알려진 스마트 계약 취약점 및 공격 사례 발표 {#common-smart-contract-vulnerabilities-and-exploits}
+
+- **[ConsenSys: 스마트 계약 알려진 공격](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/)** - _가장 중요한 계약 취약점에 대한 초보자 친화적인 설명으로, 대부분의 경우에 대한 샘플 코드가 포함되어 있습니다._
+
+- **[SWC 레지스트리](https://swcregistry.io/)** - _이더리움 스마트 계약에 적용되는 공통 취약점 목록(CWE) 항목의 선별된 목록._
+
+- **[Rekt](https://rekt.news/)** - _주목할 만한 암호화폐 해킹 및 공격 사례에 대한 정기적으로 업데이트되는 간행물로, 상세한 사후 보고서가 함께 제공됩니다._
+
+### 스마트 계약 보안 학습을 위한 챌린지 {#challenges-for-learning-smart-contract-security}
+
+- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _블록체인 보안 워게임, 챌린지 및 [캡처 더 플래그](https://www.webopedia.com/definitions/ctf-event/amp/) 대회 및 솔루션 풀이의 선별된 목록._
+
+- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)** - _디파이 스마트 계약의 공격적 보안을 배우고 버그 헌팅 및 보안 감사 기술을 구축하기 위한 워게임._
+
+- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _각 레벨이 '해킹'되어야 하는 스마트 계약인 웹3/솔리디티 기반 워게임._
+
+- **[HackenProof x HackTheBox](https://app.hackthebox.com/tracks/HackenProof-Track)** - _판타지 모험을 배경으로 한 스마트 계약 해킹 챌린지._ 챌린지를 성공적으로 완료하면 비공개 버그 포상금 프로그램에 접근할 수도 있습니다.
+
+### 스마트 계약 보안을 위한 모범 사례 {#smart-contract-security-best-practices}
+
+- **[ConsenSys: 이더리움 스마트 계약 보안 모범 사례](https://consensys.github.io/smart-contract-best-practices/)** - _이더리움 스마트 계약 보안을 위한 포괄적인 가이드라인 목록._
+
+- **[Nascent: 단순 보안 툴킷](https://github.com/nascentxyz/simple-security-toolkit)** - _스마트 계약 개발을 위한 실용적인 보안 중심 가이드 및 체크리스트 모음._
+
+- **[솔리디티 패턴](https://fravoll.github.io/solidity-patterns/)** - _스마트 계약 프로그래밍 언어인 솔리디티를 위한 안전한 패턴 및 모범 사례의 유용한 모음집._
+
+- **[솔리디티 문서: 보안 고려 사항](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _솔리디티로 안전한 스마트 계약을 작성하기 위한 가이드라인._
+
+- **[스마트 계약 보안 검증 표준](https://github.com/securing/SCSVS)** - _개발자, 설계자, 보안 검토자 및 공급업체를 위해 스마트 계약의 보안을 표준화하기 위해 만들어진 14개 부분으로 구성된 체크리스트._
+
+- **[스마트 계약 보안 및 감사 학습](https://updraft.cyfrin.io/courses/security)** - _보안 모범 사례를 향상시키고 보안 연구원이 되고자 하는 스마트 계약 개발자를 위해 만들어진 최고의 스마트 계약 보안 및 감사 과정._
+
+### 스마트 계약 보안에 관한 튜토리얼 {#tutorials-on-smart-contract-security}
+
+- [안전한 스마트 계약 작성 방법](/developers/tutorials/secure-development-workflow/)
+
+- [Slither를 사용하여 스마트 계약 버그를 찾는 방법](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+
+- [Manticore를 사용하여 스마트 계약 버그를 찾는 방법](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
+
+- [스마트 계약 보안 가이드라인](/developers/tutorials/smart-contract-security-guidelines/)
+
+- [토큰 계약을 임의의 토큰과 안전하게 통합하는 방법](/developers/tutorials/token-integration-checklist/)
+
+- [Cyfrin Updraft - 스마트 계약 보안 및 감사 전체 과정](https://updraft.cyfrin.io/courses/security)
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/testing/index.md b/public/content/translations/ko/developers/docs/smart-contracts/testing/index.md
new file mode 100644
index 00000000000..691d8ec7991
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/testing/index.md
@@ -0,0 +1,310 @@
+---
+title: "스마트 계약 테스트"
+description: "Ethereum 스마트 계약을 테스트하기 위한 기술 및 고려 사항의 개요입니다."
+lang: ko
+---
+
+Ethereum과 같은 공공 블록체인은 불변성이 있어, 배포 후 스마트 계약 코드를 변경하는 것이 어렵습니다. “가상 업그레이드”를 수행하기 위한 [계약 업그레이드 패턴](/developers/docs/smart-contracts/upgrading/)이 존재하지만, 이는 구현하기 어렵고 사회적 합의가 필요합니다. 또한 업그레이드는 오류가 발견된 _후에만_ 수정할 수 있습니다—만약 공격자가 취약점을 먼저 발견하면 스마트 계약은 공격에 노출될 위험이 있습니다.
+
+이러한 이유로 [배포](/developers/docs/smart-contracts/deploying/)하기 전에 스마트 계약을 테스트하는 것은 [보안](/developers/docs/smart-contracts/security/)을 위한 최소한의 요구 사항입니다. 스마트 계약을 테스트하고 코드의 정확성을 평가하기 위한 다양한 기술이 존재하며, 사용자는 필요에 따라 적절한 방법을 선택할 수 있습니다. 그러나 경미한 보안 결함부터 주요 결함까지 잡아내기 위해서는 다양한 도구와 접근 방식을 포함한 테스트 스위트가 이상적입니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지는 Ethereum 네트워크에 배포하기 전에 스마트 계약을 테스트하는 방법을 설명합니다. 이 문서는 독자가 [스마트 계약](/developers/docs/smart-contracts/)에 익숙하다고 가정합니다.
+
+## 스마트 계약 테스트란 무엇입니까? 스마트 계약 테스트란? {#what-is-smart-contract-testing}
+
+스마트 계약 테스트는 스마트 계약 코드가 예상대로 작동하는지 확인하는 과정입니다. 테스트는 특정 스마트 계약이 신뢰성, 사용성 및 보안 요구 사항을 충족하는지 확인하는 데 유용합니다.
+
+접근 방식은 다양하지만, 대부분의 테스트 방법은 스마트 계약이 처리할 것으로 예상되는 데이터의 소규모 샘플로 계약을 실행하는 것이 필요합니다. 계약이 샘플 데이터에 대해 올바른 결과를 생성하면 정상적으로 작동하는 것으로 간주됩니다. 대부분의 테스트 도구는 계약의 실행이 예상 결과와 일치하는지 확인하기 위해 [테스트 케이스](https://en.m.wikipedia.org/wiki/Test_case)를 작성하고 실행하기 위한 리소스를 제공합니다.
+
+### 스마트 계약을 테스트하는 것이 왜 중요한가요? 스마트 계약 테스트의 중요성 {#importance-of-testing-smart-contracts}
+
+스마트 계약은 종종 고가의 금융 자산을 관리하기 때문에, 사소한 프로그래밍 오류가 [사용자에게 막대한 손실](https://rekt.news/leaderboard/)로 이어질 수 있으며, 실제로도 종종 그렇습니다. 엄격한 테스트를 통해 스마트 계약 코드의 결함과 문제를 조기에 발견하고 메인넷에 배포하기 전에 수정할 수 있습니다.
+
+버그가 발견되면 계약을 업그레이드할 수 있지만, 업그레이드는 복잡하며 부적절하게 처리될 경우 [오류를 초래](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/)할 수 있습니다. 계약을 업그레이드하는 것은 불변성의 원칙을 무시하고 사용자가 추가 신뢰 가정을 가지게 합니다. 반대로, 계약 테스트에 대한 포괄적인 계획은 스마트 계약 보안 위험을 완화하고 배포 후 복잡한 논리 업그레이드 수행 필요성을 줄입니다.
+
+## 스마트 계약 테스트 방법 {#methods-for-testing-smart-contracts}
+
+이더리움 스마트 계약 테스트 방법은 자동화된 테스트와 수동 테스트라는 두 가지 큰 범주로 나뉩니다. 자동화 테스트와 수동 테스트는 각각 고유한 장점과 단점을 제공하지만, 두 가지를 결합하여 계약 분석을 위한 강력한 계획을 수립할 수 있습니다.
+
+### 자동화된 테스트 {#automated-testing}
+
+자동화 테스트는 스마트 계약 코드의 실행 오류를 자동으로 검사하는 도구를 사용합니다. 자동화된 테스트의 이점은 계약 기능성 평가를 안내하기 위해 [스크립트](https://www.techtarget.com/whatis/definition/script?amp=1)를 사용하는 데서 비롯됩니다. 스크립트화된 테스트는 최소한의 인간 개입으로 반복적으로 실행되도록 예약할 수 있어 수동 테스트 접근 방식보다 효율적입니다.
+
+자동화 테스트는 테스트가 반복적이거나 시간 소모적일 때, 수동으로 수행하기 어려울 때, 인간의 실수가 발생할 수 있을 때 또는 중요한 계약 기능을 평가할 때 특히 유용합니다. 그러나 자동화된 테스트 도구는 특정 버그를 놓치거나 많은 [오탐](https://www.contrastsecurity.com/glossary/false-positive)을 생성할 수 있다는 단점이 있을 수 있습니다. 따라서 스마트 계약의 경우 자동화 테스트와 수동 테스트를 결합하는 것이 이상적입니다.
+
+### 수동 테스트 {#manual-testing}
+
+수동 테스트는 인간의 도움이 필요하며 스마트 계약의 정확성을 분석할 때 테스트 케이스를 하나씩 실행하는 것입니다. 이는 계약에서 여러 독립 테스트를 동시에 실행하고 모든 실패 및 성공 테스트를 보여주는 보고서를 얻는 자동화 테스트와 다릅니다.
+
+수동 테스트는 다양한 테스트 시나리오를 포함하는 작성된 테스트 계획에 따라 단일 개인이 수행할 수도 있습니다. 또한 여러 개인 또는 그룹이 지정된 기간 동안 스마트 계약과 상호 작용하는 수동 테스트의 일환으로 참여할 수 있습니다. 테스터는 계약의 실제 동작을 예상 동작과 비교하고 차이점이 발견되면 이를 버그로 표시합니다.
+
+효과적인 수동 테스트에는 상당한 자원(기술, 시간, 비용, 노력)이 필요하며, 실행 중 실수로 인해 특정 오류가 누락될 수 있습니다. 그러나 수동 테스트는 직관을 사용하여 자동화 테스트 도구에서 놓칠 수 있는 경계 사례를 탐지하는 인간 테스터(예: 감사자)에게 유용할 수 있습니다.
+
+## 스마트 계약을 위한 자동화된 테스트 {#automated-testing-for-smart-contracts}
+
+### 단위 테스트 {#unit-testing-for-smart-contracts}
+
+유닛 테스트는 계약 기능을 개별적으로 평가하고 각 구성 요소가 올바르게 작동하는지 확인합니다. 좋은 유닛 테스트는 간단하고 실행이 빠르며, 테스트 실패 시 어떤 문제가 발생했는지 명확하게 알 수 있습니다.
+
+유닛 테스트는 함수가 예상된 값을 반환하고 함수 실행 후 계약 저장소가 제대로 업데이트되는지 확인하는 데 유용합니다. 또한, 계약 코드베이스에 변경 사항을 추가한 후 유닛 테스트를 실행하면 새로운 로직이 오류를 도입하지 않았는지 확인할 수 있습니다. 다음은 효과적인 유닛 테스트를 실행하기 위한 몇 가지 지침입니다:
+
+#### 스마트 계약 단위 테스트 지침 {#unit-testing-guidelines}
+
+##### 1. 계약의 비즈니스 로직과 워크플로를 이해하세요
+
+유닛 테스트를 작성하기 전에 스마트 계약이 제공하는 기능과 사용자가 해당 기능에 액세스하고 사용하는 방법을 아는 것이 좋습니다. 이는 계약의 함수가 유효한 사용자 입력에 대해 올바른 출력을 반환하는지 판단하는 [해피 패스 테스트](https://en.m.wikipedia.org/wiki/Happy_path)를 실행하는 데 특히 유용합니다. 이 개념을 [경매 계약](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction)의 (축약된) 예시를 사용하여 설명하겠습니다.
+
+```solidity
+constructor(
+ uint biddingTime,
+ address payable beneficiaryAddress
+ ) {
+ beneficiary = beneficiaryAddress;
+ auctionEndTime = block.timestamp + biddingTime;
+ }
+
+function bid() external payable {
+
+ if (block.timestamp > auctionEndTime)
+ revert AuctionAlreadyEnded();
+
+ if (msg.value <= highestBid)
+ revert BidNotHighEnough(highestBid);
+
+ if (highestBid != 0) {
+ pendingReturns[highestBidder] += highestBid;
+ }
+ highestBidder = msg.sender;
+ highestBid = msg.value;
+ emit HighestBidIncreased(msg.sender, msg.value);
+ }
+
+ function withdraw() external returns (bool) {
+ uint amount = pendingReturns[msg.sender];
+ if (amount > 0) {
+ pendingReturns[msg.sender] = 0;
+
+ if (!payable(msg.sender).send(amount)) {
+ pendingReturns[msg.sender] = amount;
+ return false;
+ }
+ }
+ return true;
+ }
+
+function auctionEnd() external {
+ if (block.timestamp < auctionEndTime)
+ revert AuctionNotYetEnded();
+ if (ended)
+ revert AuctionEndAlreadyCalled();
+
+ ended = true;
+ emit AuctionEnded(highestBidder, highestBid);
+
+ beneficiary.transfer(highestBid);
+ }
+}
+```
+
+이것은 입찰 기간 동안 입찰을 받도록 설계된 간단한 경매 계약입니다. `highestBid`가 증가하면 이전 최고 입찰자는 자신의 돈을 돌려받습니다. 입찰 기간이 끝나면 `beneficiary`는 계약을 호출하여 자신의 돈을 받습니다.
+
+이와 같은 계약에 대한 유닛 테스트는 사용자가 계약과 상호 작용할 때 호출할 수 있는 다양한 기능을 다룹니다. 예를 들어, 경매가 진행 중일 때 사용자가 입찰할 수 있는지 확인하는 단위 테스트(`bid()` 호출이 성공하는지)나 사용자가 현재의 `highestBid`보다 높은 입찰을 할 수 있는지 확인하는 테스트가 있을 수 있습니다.
+
+계약의 운영 워크플로를 이해하면 실행이 요구 사항을 충족하는지 확인하는 유닛 테스트를 작성하는 데 도움이 됩니다. 예를 들어, 경매 계약은 경매가 종료되었을 때(즉, `auctionEndTime`이 `block.timestamp`보다 낮을 때) 사용자가 입찰할 수 없다고 명시합니다. 따라서 개발자는 경매가 끝났을 때(즉, `auctionEndTime` > `block.timestamp`일 때) `bid()` 함수 호출이 성공하는지 또는 실패하는지를 확인하는 단위 테스트를 실행할 수 있습니다.
+
+##### 2. 계약 실행과 관련된 모든 가정을 평가하세요
+
+계약의 실행에 대한 모든 가정을 문서화하고 해당 가정의 타당성을 확인하는 유닛 테스트를 작성하는 것이 중요합니다. 예상치 못한 실행에 대한 보호를 제공할 뿐만 아니라, 테스트 가정을 통해 스마트 계약의 보안 모델을 위반할 수 있는 작업에 대해 생각하게 합니다. 유용한 팁은 "행복한 사용자 테스트"를 넘어서 잘못된 입력에 대해 함수가 실패하는지 확인하는 부정 테스트를 작성하는 것입니다.
+
+많은 유닛 테스트 프레임워크는 계약이 할 수 있는 것과 할 수 없는 것을 명시하는 간단한 문장인 어설션을 생성하고, 해당 어설션이 실행 중에 유지되는지 확인하는 테스트를 실행할 수 있습니다. 위에서 설명한 경매 계약을 작업하는 개발자는 부정 테스트를 실행하기 전에 다음과 같은 행동에 대한 어설션을 만들 수 있습니다:
+
+- 경매가 종료되었거나 시작되지 않았을 때 사용자는 입찰할 수 없습니다.
+
+- 입찰이 허용 가능한 기준에 미달하면 경매 계약이 복구됩니다.
+
+- 입찰에 실패한 사용자는 자금이 반환됩니다.
+
+**참고**: 가정을 테스트하는 또 다른 방법은 계약에서, 특히 `require`, `assert`, `if…else` 문과 같은 [함수 제어자](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers)를 트리거하는 테스트를 작성하는 것입니다.
+
+##### 3. 코드 커버리지 측정
+
+[코드 커버리지](https://en.m.wikipedia.org/wiki/Code_coverage)는 테스트 중에 실행된 코드의 분기, 줄, 문의 수를 추적하는 테스트 지표입니다. 테스트되지 않은 취약점의 위험을 최소화하기 위해 테스트는 우수한 코드 커버리지를 가져야 합니다. 충분한 커버리지가 없으면 모든 테스트가 통과하기 때문에 계약이 안전하다고 잘못 가정할 수 있지만, 테스트되지 않은 코드 경로에는 여전히 취약점이 존재합니다. 높은 코드 커버리지를 기록하면 스마트 계약의 모든 문장/함수가 충분히 테스트되어 올바르게 작동함을 보장합니다.
+
+##### 4. 잘 개발된 테스트 프레임워크를 사용하십시오.
+
+스마트 계약의 단위 테스트를 실행할 때 사용하는 도구의 품질은 매우 중요합니다. 이상적인 테스트 프레임워크는 정기적으로 유지 보수되고, 유용한 기능(예: 로깅 및 보고 기능)을 제공하며, 다른 개발자들에 의해 광범위하게 사용되고 검증된 프레임워크입니다.
+
+Solidity 스마트 계약을 위한 단위 테스트 프레임워크는 다양한 언어(주로 JavaScript, Python, Rust) 로 제공됩니다. 아래 가이드에서 다양한 테스트 프레임워크로 단위 테스트를 시작하는 방법에 대한 정보를 확인하십시오:
+
+- **[Brownie로 단위 테스트 실행하기](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)**
+- **[Foundry로 단위 테스트 실행하기](https://book.getfoundry.sh/forge/writing-tests)**
+- **[Waffle로 단위 테스트 실행하기](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)**
+- **[Remix로 단위 테스트 실행하기](https://remix-ide.readthedocs.io/en/latest/unittesting.html#write-tests)**
+- **[Ape로 단위 테스트 실행하기](https://docs.apeworx.io/ape/stable/userguides/testing.html)**
+- **[Hardhat으로 단위 테스트 실행하기](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)**
+- **[Wake로 단위 테스트 실행하기](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)**
+
+### 통합 테스트 {#integration-testing-for-smart-contracts}
+
+단위 테스트가 계약 함수들을 개별적으로 디버깅하는 동안, 통합 테스트는 스마트 계약의 모든 구성 요소를 평가합니다. 통합 테스트는 다른 스마트 계약 간의 상호작용이나 같은 스마트 계약 내의 다양한 함수 간의 호출로 인해 발생하는 문제를 감지할 수 있습니다. 예를 들어, 통합 테스트는 [상속](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) 및 종속성 주입과 같은 기능이 제대로 작동하는지 확인하는 데 도움이 될 수 있습니다.
+
+통합 테스트는 계약이 모듈식 아키텍처를 채택하거나 실행 중에 다른 온체인 계약과 인터페이스하는 경우에 유용합니다. 통합 테스트를 실행하는 한 가지 방법은 특정 높이에서 [블록체인을 포크](/glossary/#fork)하고([Forge](https://book.getfoundry.sh/forge/fork-testing) 또는 [Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks)과 같은 도구 사용) 계약과 배포된 계약 간의 상호 작용을 시뮬레이션하는 것입니다.
+
+포크된 블록체인은 메인넷과 유사하게 작동하며 관련 상태와 잔액을 가진 계정을 포함합니다. 그러나 이 환경은 로컬 개발 환경에만 국한되므로 예를 들어 실제 이더리움(ETH)이 트랜잭션에 필요하지 않으며, 실제 이더리움 프로토콜에 영향을 주지 않습니다.
+
+### 속성 기반 테스트 {#property-based-testing-for-smart-contracts}
+
+속성 기반 테스트는 스마트 계약이 정의된 속성을 충족하는지 확인하는 과정입니다. 속성은 계약의 동작에 대해 다양한 시나리오에서 참으로 유지될 것으로 예상되는 사실을 나타냅니다—예를 들어, "계약의 산술 연산은 오버플로 또는 언더플로를 발생시키지 않는다"라는 것이 스마트 계약 속성의 예일 수 있습니다.
+
+정적 분석과 동적 분석은 속성 기반 테스트를 실행하기 위한 두 가지 일반적인 기술이며, 두 기술 모두 프로그램(이 경우 스마트 계약)의 코드가 미리 정의된 속성을 만족하는지 확인할 수 있습니다. 일부 속성 기반 테스트 도구는 예상되는 계약 속성에 대한 미리 정의된 규칙을 제공하며, 코드가 이러한 규칙을 준수하는지 확인합니다. 다른 도구는 스마트 계약에 대한 사용자 지정 속성을 생성할 수 있도록 합니다.
+
+#### 정적 분석 {#static-analysis}
+
+정적 분석 도구는 스마트 계약의 소스 코드를 입력으로 받아 계약이 속성을 충족하는지 여부를 선언하는 결과를 출력합니다. 동적 분석과는 달리, 정적 분석은 계약을 실행하지 않고 올바름을 분석합니다. 정적 분석은 대신 계약이 실행 중에 가질 수 있는 모든 경로를 추론하며(즉, 소스 코드 구조를 검사하여 런타임에 계약의 작동이 어떻게 되는지 결정합니다).
+
+[린팅](https://www.perforce.com/blog/qac/what-is-linting)과 [정적 테스트](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis)는 계약에 대한 정적 분석을 실행하는 일반적인 방법입니다. 두 방법 모두 컴파일러가 출력하는 [추상 구문 트리](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) 및 [제어 흐름 그래프](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/)와 같은 계약 실행의 저수준 표현을 분석해야 합니다.
+
+대부분의 경우, 정적 분석은 코드에서 안전하지 않은 구조물 사용, 구문 오류 또는 코딩 표준 위반과 같은 안전 문제를 감지하는 데 유용합니다. 그러나 정적 분석기는 더 깊은 취약점을 감지하는 데는 일반적으로 효과적이지 않으며, 과도한 거짓 양성 결과를 생성할 수 있습니다.
+
+#### 동적 분석 {#dynamic-analysis}
+
+동적 분석은 스마트 계약 함수의 [심볼릭 실행](https://en.m.wikipedia.org/wiki/Symbolic_execution)에서의 심볼릭 입력이나 [퍼징](https://owasp.org/www-community/Fuzzing)에서의 구체적인 입력과 같은 것을 생성하여 실행 추적이 특정 속성을 위반하는지 확인합니다. 이러한 속성 기반 테스트는 테스트 케이스가 여러 시나리오를 포괄하며 프로그램이 테스트 케이스를 생성하는 방식에서 단위 테스트와 다릅니다.
+
+[퍼징](https://www.halborn.com/blog/post/what-is-fuzz-testing-fuzzing)은 스마트 계약에서 임의의 속성을 검증하기 위한 동적 분석 기법의 한 예입니다. 퍼저는 정의된 입력 값의 무작위 또는 잘못된 변형으로 대상 계약의 함수를 호출합니다. 스마트 계약이 오류 상태(예: 단언이 실패하는 상태)에 들어가면 문제가 플래그 처리되며 취약한 경로로 실행을 유도하는 입력이 보고서에 생성됩니다.
+
+퍼징은 스마트 계약의 입력 유효성 검사 메커니즘을 평가하는 데 유용합니다. 예상치 못한 입력을 적절히 처리하지 않으면 의도치 않은 실행이 발생하고 위험한 영향을 초래할 수 있기 때문입니다. 이러한 속성 기반 테스트는 여러 이유로 이상적일 수 있습니다:
+
+1. **많은 시나리오를 다루는 테스트 케이스를 작성하는 것은 어렵습니다.** 속성 테스트는 동작을 정의하고 해당 동작을 테스트할 데이터의 범위를 정의하기만 하면 됩니다. 프로그램은 정의된 속성을 기반으로 테스트 케이스를 자동으로 생성합니다.
+
+2. **테스트 스위트가 프로그램 내의 모든 가능한 경로를 충분히 다루지 못할 수 있습니다.** 100%의 커버리지를 달성하더라도 에지 케이스를 놓칠 수 있습니다.
+
+3. **단위 테스트는 샘플 데이터에 대해 계약이 올바르게 실행됨을 증명하지만, 샘플 외부의 입력에 대해 계약이 올바르게 실행되는지는 알 수 없습니다.** 속성 테스트는 주어진 입력 값의 다양한 변형으로 대상 계약을 실행하여 어설션 실패를 유발하는 실행 추적을 찾습니다. 따라서 속성 테스트는 계약이 광범위한 입력 데이터 클래스에 대해 올바르게 실행됨을 더 많이 보장합니다.
+
+### 스마트 계약의 속성 기반 테스트 실행 지침 {#running-property-based-tests}
+
+속성 기반 테스트 실행은 일반적으로 스마트 계약에서 검증하려는 속성(예: [정수 오버플로](https://github.com/ConsenSys/mythril/wiki/Integer-Overflow)의 부재) 또는 속성 모음을 정의하는 것으로 시작됩니다. 속성 테스트를 작성할 때 트랜잭션 입력에 대해 프로그램이 생성할 수 있는 값의 범위를 정의해야 할 수도 있습니다.
+
+적절하게 구성된 속성 테스트 도구는 무작위로 생성된 입력을 사용하여 스마트 계약 기능을 실행합니다. 어설션 위반이 있으면 평가 중인 속성을 위반하는 구체적인 입력 데이터를 포함한 보고서를 받을 수 있습니다. 다음 가이드를 통해 다양한 도구로 속성 기반 테스트를 실행하는 방법을 시작할 수 있습니다:
+
+- **[Slither를 사용한 스마트 계약의 정적 분석](https://github.com/crytic/slither)**
+- **[Wake를 사용한 스마트 계약의 정적 분석](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)**
+- **[Brownie를 사용한 속성 기반 테스트](https://eth-brownie.readthedocs.io/en/stable/tests-hypothesis-property.html)**
+- **[Foundry를 사용한 계약 퍼징](https://book.getfoundry.sh/forge/fuzz-testing)**
+- **[Echidna를 사용한 계약 퍼징](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna#echidna-tutorial)**
+- **[Wake를 사용한 계약 퍼징](https://ackeeblockchain.com/wake/docs/latest/testing-framework/fuzzing/)**
+- **[Manticore를 사용한 스마트 계약의 심볼릭 실행](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore#manticore-tutorial)**
+- **[Mythril을 사용한 스마트 계약의 심볼릭 실행](https://mythril-classic.readthedocs.io/en/master/tutorial.html)**
+
+## 스마트 계약의 수동 테스트 {#manual-testing-for-smart-contracts}
+
+스마트 계약의 수동 테스트는 일반적으로 자동화된 테스트를 실행한 후 개발 주기 후반에 수행됩니다. 이 형태의 테스트는 스마트 계약을 하나의 통합된 제품으로 평가하여 기술 요구 사항에 지정된 대로 성능을 발휘하는지 확인합니다.
+
+### 로컬 블록체인에서 계약 테스트하기 {#testing-on-local-blockchain}
+
+로컬 개발 환경에서 수행된 자동화 테스트는 유용한 디버깅 정보를 제공할 수 있지만, 프로덕션 환경에서 스마트 계약이 어떻게 작동하는지 알아야 합니다. 그러나 메인 이더리움 체인에 배포하면 가스 요금이 발생하며, 스마트 계약에 여전히 버그가 있을 경우 실제 돈을 잃을 수도 있습니다.
+
+로컬 블록체인([개발 네트워크](/developers/docs/development-networks/)라고도 함)에서 계약을 테스트하는 것은 메인넷에서 테스트하는 것에 대한 권장 대안입니다. 로컬 블록체인은 컴퓨터에서 로컬로 실행되는 이더리움 블록체인의 사본으로 이더리움의 실행 레이어의 동작을 시뮬레이션합니다. 따라서 상당한 오버헤드 없이 계약과 상호 작용하는 트랜잭션을 프로그래밍할 수 있습니다.
+
+로컬 블록체인에서 계약을 실행하는 것은 수동 통합 테스트의 한 형태로 유용할 수 있습니다. [스마트 계약은 구성성이 높기 때문에](/developers/docs/smart-contracts/composability/) 기존 프로토콜과 통합할 수 있습니다. 하지만 이러한 복잡한 온체인 상호 작용이 올바른 결과를 생성하는지 확인해야 합니다.
+
+[개발 네트워크에 대해 자세히 알아보기](/developers/docs/development-networks/)
+
+### 테스트넷에서 계약 테스트하기 {#testing-contracts-on-testnets}
+
+테스트 네트워크 또는 테스트넷은 실제 가치가 없는 이더(ETH)를 사용한다는 점을 제외하면 이더리움 메인넷과 똑같이 작동합니다. 계약을 [테스트넷](/developers/docs/networks/#ethereum-testnets)에 배포하면 누구나 자금의 위험 없이 계약과 상호 작용할 수 있습니다(예: 탈중앙화앱의 프론트엔드를 통해).
+
+이 형태의 수동 테스트는 애플리케이션의 엔드투엔드 플로우를 사용자의 관점에서 평가하는 데 유용합니다. 여기에서 베타 테스터도 시운전을 수행하고 계약의 비즈니스 논리 및 전반적인 기능과 관련된 문제를 보고할 수 있습니다.
+
+로컬 블록체인에서 테스트한 후 테스트넷에 배포하는 것이 이상적입니다. 테스트넷의 동작이 이더리움 가상 머신과 유사하기 때문입니다. 따라서 많은 이더리움 네이티브 프로젝트가 실제 조건에서 스마트 계약 작동을 평가하기 위해 테스트넷에 dapp을 배포하는 것이 일반적입니다.
+
+[이더리움 테스트넷에 대해 자세히 알아보기](/developers/docs/development-networks/#public-beacon-testchains)
+
+## 테스트와 형식 검증 비교 {#testing-vs-formal-verification}
+
+테스트는 특정 데이터 입력에 대해 계약이 예상 결과를 반환하는지 확인하는 데 도움이 되지만, 테스트에 사용되지 않은 입력에 대해 동일한 결과를 확정적으로 입증할 수는 없습니다. 따라서 스마트 계약을 테스트하는 것은 '기능적 정확성'을 보장할 수 없습니다(즉, 프로그램이 `모든` 입력값 세트에 대해 요구되는 대로 동작한다는 것을 보여줄 수 없습니다).
+
+형식 검증은 프로그램의 형식 모델이 형식 명세와 일치하는지 확인하여 소프트웨어의 정확성을 평가하는 접근 방식입니다. 형식 모델은 프로그램의 추상적 수학적 표현이며, 형식 명세는 프로그램의 속성(즉, 프로그램 실행에 대한 논리적 어설션)을 정의합니다.
+
+속성이 수학적 용어로 작성되므로 시스템의 형식(수학적) 모델이 논리적 추론 규칙을 사용하여 명세를 충족하는지 검증할 수 있습니다. 따라서 형식 검증 도구는 시스템의 정확성에 대한 '수학적 증거'를 제공한다고 합니다.
+
+테스트와 달리, 형식 검증은 샘플 데이터로 실행할 필요 없이 `모든` 실행에 대해 스마트 계약 실행이 형식 사양을 만족하는지(즉, 버그가 없는지) 확인하는 데 사용할 수 있습니다. 이는 수많은 단위 테스트를 실행하는 데 걸리는 시간을 줄일 뿐만 아니라 숨겨진 취약점을 잡는 데도 더 효과적입니다. 말하자면, 형식 검증 기술은 구현의 난이도와 유용성에 따라 범위에 따라 다릅니다.
+
+[스마트 계약의 형식 검증에 대해 자세히 알아보기](/developers/docs/smart-contracts/formal-verification)
+
+## 테스트와 감사 및 버그 바운티 비교 {#testing-vs-audits-bug-bounties}
+
+앞서 언급했듯이, 엄격한 테스트는 계약에서 버그가 없음을 보장하기 어렵습니다. 형식 검증 접근 방식은 더 강력한 정확성 보증을 제공할 수 있지만, 현재 사용하기 어렵고 상당한 비용이 듭니다.
+
+그럼에도 불구하고 타인으로 하여금 계약을 분석하도록 하여 계약의 취약점을 포착할 가능성을 높일 수 있습니다. [스마트 계약 감사](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/)와 [버그 바운티](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)는 다른 사람이 여러분의 계약을 분석하게 하는 두 가지 방법입니다.
+
+감사는 스마트 계약에서 보안 결함 및 개발 관행의 부족한 사례를 찾는 데 경험이 많은 감사자가 수행합니다. 감사는 테스트(그리고 가능하면 형식 검증)뿐만 아니라 전체 코드베이스에 대한 수동 검토도 포함됩니다.
+
+반대로 버그 바운티 프로그램은 일반적으로 스마트 계약의 취약점을 발견하여 개발자에게 공개하는 개인(`[화이트햇 해커]()`라고 흔히 칭함)에게 금전적 보상을 제공하는 것을 포함합니다. 버그 바운티는 스마트 계약에서 결함을 찾는 데 다른 사람의 도움을 요청하는 점에서 감사와 유사합니다.
+
+주요 차이점은 버그 바운티 프로그램이 더 넓은 개발자/해커 커뮤니티에 개방되어 있으며 독특한 기술과 경험을 가진 다양한 윤리적 해커와 독립 보안 전문가들을 끌어들인다는 것입니다. 이것은 제한되거나 좁은 전문 지식을 가진 팀에 의존하는 스마트 계약 감사를 능가하는 장점이 될 수 있습니다.
+
+## 테스트 도구 및 라이브러리 {#testing-tools-and-libraries}
+
+### 단위 테스트 도구 {#unit-testing-tools}
+
+- **[solidity-coverage](https://github.com/sc-forks/solidity-coverage)** - _Solidity로 작성된 스마트 계약을 위한 코드 커버리지 도구입니다._
+
+- **[Waffle](https://ethereum-waffle.readthedocs.io/en/latest/)** - _고급 스마트 계약 개발 및 테스트를 위한 프레임워크(ethers.js 기반)입니다._
+
+- **[Remix Tests](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)** - _Solidity 스마트 계약 테스트용 도구입니다._ Remix IDE의 "Solidity Unit Testing" 플러그인을 통해 계약의 테스트 케이스를 작성하고 실행하는 데 사용됩니다._
+
+- **[OpenZeppelin Test Helpers](https://github.com/OpenZeppelin/openzeppelin-test-helpers)** - _이더리움 스마트 계약 테스트를 위한 어설션 라이브러리입니다._ 계약이 예상대로 작동하는지 확인하세요!_
+
+- **[Brownie 단위 테스트 프레임워크](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** - _Brownie는 기능이 풍부한 테스트 프레임워크인 Pytest를 활용하여 최소한의 코드로 작은 테스트를 작성하고, 대규모 프로젝트에 맞게 확장하며, 높은 확장성을 제공합니다._
+
+- **[Foundry 테스트](https://github.com/foundry-rs/foundry/tree/master/crates/forge)** - _Foundry는 간단한 단위 테스트, 가스 최적화 확인, 계약 퍼징을 실행할 수 있는 빠르고 유연한 이더리움 테스트 프레임워크인 Forge를 제공합니다._
+
+- **[Hardhat 테스트](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** - _ethers.js, Mocha, Chai를 기반으로 한 스마트 계약 테스트용 프레임워크입니다._
+
+- **[ApeWorx](https://docs.apeworx.io/ape/stable/userguides/testing.html)** - _이더리움 가상 머신을 대상으로 하는 스마트 계약을 위한 Python 기반 개발 및 테스트 프레임워크입니다._
+
+- **[Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)** - _강력한 디버깅 기능과 교차 체인 테스트를 지원하는 단위 테스트 및 퍼징을 위한 Python 기반 프레임워크로, 최상의 사용자 경험과 성능을 위해 pytest와 Anvil을 활용합니다._
+
+### 속성 기반 테스트 도구 {#property-based-testing-tools}
+
+#### 정적 분석 도구 {#static-analysis-tools}
+
+- **[Slither](https://github.com/crytic/slither)** - _취약점 발견, 코드 이해도 향상, 스마트 계약을 위한 맞춤형 분석 작성을 위한 Python 기반 Solidity 정적 분석 프레임워크입니다._
+
+- **[Ethlint](https://ethlint.readthedocs.io/en/latest/)** - _Solidity 스마트 계약 프로그래밍 언어에 대한 스타일 및 보안 모범 사례를 적용하기 위한 린터입니다._
+
+- **[Cyfrin Aderyn](https://cyfrin.io/tools/aderyn)** - _Web3 스마트 계약 보안 및 개발을 위해 특별히 설계된 Rust 기반 정적 분석기입니다._
+
+- **[Wake](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - _취약성 및 코드 품질 감지기, 코드에서 유용한 정보를 추출하기 위한 프린터, 맞춤형 하위 모듈 작성을 지원하는 Python 기반 정적 분석 프레임워크입니다._
+
+- **[Slippy](https://github.com/fvictorio/slippy)** - _Solidity를 위한 간단하고 강력한 린터입니다._
+
+#### 동적 분석 도구 {#dynamic-analysis-tools}
+
+- **[Echidna](https://github.com/crytic/echidna/)** - _속성 기반 테스트를 통해 스마트 계약의 취약점을 탐지하는 빠른 계약 퍼저입니다._
+
+- **[Diligence Fuzzing](https://consensys.net/diligence/fuzzing/)** - _스마트 계약 코드에서 속성 위반을 탐지하는 데 유용한 자동화된 퍼징 도구입니다._
+
+- **[Manticore](https://manticore.readthedocs.io/en/latest/index.html)** - _EVM 바이트코드 분석을 위한 동적 심볼릭 실행 프레임워크입니다._
+
+- **[Mythril](https://github.com/ConsenSys/mythril-classic)** - _테인트 분석, 콘콜릭 분석 및 제어 흐름 검사를 사용하여 계약 취약점을 탐지하는 EVM 바이트코드 평가 도구입니다._
+
+- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _Scribble은 명세 언어이자 런타임 검증 도구로, 스마트 계약에 속성을 주석으로 달아 Diligence Fuzzing이나 MythX와 같은 도구로 계약을 자동으로 테스트할 수 있게 해줍니다._
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [다양한 테스트 제품 개요 및 비교](/developers/tutorials/guide-to-smart-contract-security-tools/) \_
+- [Echidna를 사용하여 스마트 계약을 테스트하는 방법](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
+- [Manticore를 사용하여 스마트 계약 버그를 찾는 방법](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
+- [Slither를 사용하여 스마트 계약 버그를 찾는 방법](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+- [테스트를 위해 Solidity 계약을 모의하는 방법](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
+- [Foundry를 사용하여 Solidity에서 단위 테스트를 실행하는 방법](https://www.rareskills.io/post/foundry-testing-solidity)
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 스마트 계약 테스트에 대한 심층 가이드](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297)
+- [이더리움 스마트 계약을 테스트하는 방법](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d)
+- [MolochDAO의 개발자를 위한 단위 테스트 가이드](https://github.com/MolochVentures/moloch/tree/4e786db8a4aa3158287e0935dcbc7b1e43416e38/test#moloch-testing-guide)
+- [록스타처럼 스마트 계약을 테스트하는 방법](https://forum.openzeppelin.com/t/test-smart-contracts-like-a-rockstar/1001)
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/upgrading/index.md b/public/content/translations/ko/developers/docs/smart-contracts/upgrading/index.md
new file mode 100644
index 00000000000..8d7c3939257
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/upgrading/index.md
@@ -0,0 +1,165 @@
+---
+title: "스마트 계약 업그레이드"
+description: "이더리움 스마트 계약의 업그레이드 패턴 개요"
+lang: ko
+---
+
+이더리움의 스마트 계약은 이더리움 가상 머신(EVM)에서 실행되는 자동 실행 프로그램입니다. 이 프로그램은 설계상 불변성을 가지므로 계약이 배포된 후에는 비즈니스 로직을 업데이트할 수 없습니다.
+
+불변성은 스마트 계약의 무신뢰성, 탈중앙화 및 보안에 필수적이지만, 경우에 따라 단점이 될 수 있습니다. 예를 들어, 불변 코드로 인해 개발자가 취약한 계약을 수정하는 것이 불가능할 수 있습니다.
+
+그러나 스마트 계약 개선에 대한 연구가 증가하면서 여러 업그레이드 패턴이 도입되었습니다. 이러한 업그레이드 패턴을 통해 개발자는 비즈니스 로직을 다른 계약에 배치하여 (불변성을 유지하면서) 스마트 계약을 업그레이드할 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+[스마트 계약](/developers/docs/smart-contracts/), [스마트 계약 구조](/developers/docs/smart-contracts/anatomy/), [이더리움 가상 머신(EVM)](/developers/docs/evm/)에 대해 잘 이해하고 있어야 합니다. 또한 이 가이드는 독자가 스마트 계약 프로그래밍에 대한 이해가 있다고 가정합니다.
+
+## 스마트 계약 업그레이드란 무엇인가요? {#what-is-a-smart-contract-upgrade}
+
+스마트 계약 업그레이드는 계약의 상태를 보존하면서 스마트 계약의 비즈니스 로직을 변경하는 것을 포함합니다. 특히 스마트 계약의 맥락에서 업그레이드 가능성과 가변성은 동일하지 않다는 점을 명확히 하는 것이 중요합니다.
+
+이더리움 네트워크의 주소에 배포된 프로그램은 여전히 변경할 수 없습니다. 하지만 사용자가 스마트 계약과 상호 작용할 때 실행되는 코드는 변경할 수 있습니다.
+
+다음과 같은 방법을 통해 수행할 수 있습니다.
+
+1. 스마트 계약의 여러 버전을 만들고 이전 계약에서 계약의 새 인스턴스로 상태(즉, 데이터)를 마이그레이션합니다.
+
+2. 비즈니스 로직과 상태를 저장하기 위해 별도의 계약을 생성합니다.
+
+3. 프록시 패턴을 사용하여 불변 프록시 계약에서 수정 가능한 로직 계약으로 함수 호출을 위임합니다.
+
+4. 특정 함수를 실행하기 위해 유연한 위성 계약과 인터페이스하고 의존하는 불변 메인 계약을 생성합니다.
+
+5. 다이아몬드 패턴을 사용하여 프록시 계약에서 로직 계약으로 함수 호출을 위임합니다.
+
+### 업그레이드 메커니즘 #1: 계약 마이그레이션 {#contract-migration}
+
+계약 마이그레이션은 버전 관리를 기반으로 합니다. 이는 동일한 소프트웨어의 고유한 상태를 생성하고 관리하는 개념입니다. 계약 마이그레이션은 기존 스마트 계약의 새 인스턴스를 배포하고 저장 공간과 잔액을 새 계약으로 이전하는 것을 포함합니다.
+
+새로 배포된 계약은 빈 저장 공간을 가지므로 이전 계약에서 데이터를 복구하고 새 구현에 쓸 수 있습니다. 그 후에는 이전 계약과 상호 작용했던 모든 계약을 업데이트하여 새 주소를 반영해야 합니다.
+
+계약 마이그레이션의 마지막 단계는 사용자가 새 계약을 사용하도록 설득하는 것입니다. 새로운 계약 버전은 사용자 잔액과 주소를 유지하여 불변성을 보존합니다. 토큰 기반 계약인 경우 거래소에 연락하여 이전 계약을 폐기하고 새 계약을 사용하도록 해야 합니다.
+
+계약 마이그레이션은 사용자 상호 작용을 방해하지 않고 스마트 계약을 업그레이드하는 비교적 간단하고 안전한 방법입니다. 그러나 사용자 저장 공간과 잔액을 새 계약으로 수동으로 마이그레이션하는 것은 시간이 많이 걸리고 높은 가스 비용이 발생할 수 있습니다.
+
+[계약 마이그레이션에 대해 더 알아보기.](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/)
+
+### 업그레이드 메커니즘 #2: 데이터 분리 {#data-separation}
+
+스마트 계약을 업그레이드하는 또 다른 방법은 비즈니스 로직과 데이터 저장 공간을 별도의 계약으로 분리하는 것입니다. 즉, 사용자는 로직 계약과 상호 작용하고 데이터는 저장 공간 계약에 저장됩니다.
+
+로직 계약에는 사용자가 애플리케이션과 상호 작용할 때 실행되는 코드가 포함됩니다. 또한 저장 공간 계약의 주소를 보유하고 이와 상호 작용하여 데이터를 가져오고 설정합니다.
+
+한편, 저장 공간 계약은 사용자 잔액 및 주소와 같은 스마트 계약과 관련된 상태를 보유합니다. 저장 공간 계약은 로직 계약이 소유하며 배포 시 로직 계약의 주소로 구성됩니다. 이를 통해 승인되지 않은 계약이 저장 공간 계약을 호출하거나 데이터를 업데이트하는 것을 방지할 수 있습니다.
+
+기본적으로 저장 공간 계약은 불변이지만, 가리키는 로직 계약을 새로운 구현으로 교체할 수 있습니다. 이렇게 하면 EVM에서 실행되는 코드가 변경되지만 저장 공간과 잔액은 그대로 유지됩니다.
+
+이 업그레이드 방법을 사용하려면 저장 공간 계약에서 로직 계약의 주소를 업데이트해야 합니다. 앞서 설명한 이유로 새 로직 계약을 저장 공간 계약의 주소로 구성해야 합니다.
+
+데이터 분리 패턴은 계약 마이그레이션에 비해 구현하기가 더 쉽다고 할 수 있습니다. 하지만 여러 계약을 관리하고 악의적인 업그레이드로부터 스마트 계약을 보호하기 위해 복잡한 권한 부여 체계를 구현해야 합니다.
+
+### 업그레이드 메커니즘 #3: 프록시 패턴 {#proxy-patterns}
+
+프록시 패턴은 또한 데이터 분리를 사용하여 비즈니스 로직과 데이터를 별도의 계약에 보관합니다. 그러나 프록시 패턴에서는 저장 공간 계약(프록시라고 함)이 코드 실행 중에 로직 계약을 호출합니다. 이것은 로직 계약이 저장 공간 계약을 호출하는 데이터 분리 방법의 반대입니다.
+
+프록시 패턴에서 일어나는 일은 다음과 같습니다.
+
+1. 사용자는 데이터를 저장하지만 비즈니스 로직은 보유하지 않는 프록시 계약과 상호 작용합니다.
+
+2. 프록시 계약은 로직 계약의 주소를 저장하고 `delegatecall` 함수를 사용하여 모든 함수 호출을 로직 계약(비즈니스 로직을 보유함)에 위임합니다.
+
+3. 호출이 로직 계약으로 전달된 후, 로직 계약에서 반환된 데이터는 검색되어 사용자에게 반환됩니다.
+
+프록시 패턴을 사용하려면 **delegatecall** 함수에 대한 이해가 필요합니다. 기본적으로 `delegatecall`은 계약이 다른 계약을 호출할 수 있도록 하는 옵코드이며, 실제 코드 실행은 호출하는 계약의 컨텍스트에서 발생합니다. 프록시 패턴에서 `delegatecall`을 사용하는 것의 한 가지 의미는 프록시 계약이 내부 함수를 호출하는 것처럼 저장 공간을 읽고 쓰며 로직 계약에 저장된 로직을 실행한다는 것입니다.
+
+[Solidity 개발문서](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries)에서:
+
+> _**delegatecall**이라는 특별한 메시지 호출 변형이 존재합니다. 이는 대상 주소의 코드가 호출 계약의 컨텍스트(즉, 주소)에서 실행되고 `msg.sender`와 `msg.value`의 값이 변경되지 않는다는 점을 제외하면 메시지 호출과 동일합니다._ _이는 계약이 런타임에 다른 주소에서 코드를 동적으로 로드할 수 있음을 의미합니다. 저장 공간, 현재 주소 및 잔액은 여전히 호출 계약을 참조하며, 코드는 호출된 주소에서만 가져옵니다._
+
+프록시 계약은 내장된 `fallback` 함수가 있기 때문에 사용자가 함수를 호출할 때마다 `delegatecall`을 호출해야 한다는 것을 알고 있습니다. Solidity 프로그래밍에서 [폴백 함수](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function)는 함수 호출이 계약에 지정된 함수와 일치하지 않을 때 실행됩니다.
+
+프록시 패턴이 작동하려면 프록시 계약이 지원하지 않는 함수 호출을 처리하는 방법을 지정하는 사용자 지정 폴백 함수를 작성해야 합니다. 이 경우 프록시의 폴백 함수는 delegatecall을 시작하고 사용자의 요청을 현재 로직 계약 구현으로 다시 라우팅하도록 프로그래밍됩니다.
+
+프록시 계약은 기본적으로 불변이지만, 업데이트된 비즈니스 로직을 가진 새로운 로직 계약을 만들 수 있습니다. 그런 다음 업그레이드를 수행하는 것은 프록시 계약에서 참조되는 로직 계약의 주소를 변경하는 문제입니다.
+
+프록시 계약이 새로운 로직 계약을 가리키도록 함으로써 사용자가 프록시 계약 함수를 호출할 때 실행되는 코드가 변경됩니다. 이를 통해 사용자에게 새로운 계약과 상호 작용하도록 요청하지 않고도 계약의 로직을 업그레이드할 수 있습니다.
+
+프록시 패턴은 계약 마이그레이션과 관련된 어려움을 없애주기 때문에 스마트 계약을 업그레이드하는 데 널리 사용되는 방법입니다. 그러나 프록시 패턴은 사용하기가 더 복잡하며 부적절하게 사용될 경우 [함수 선택자 충돌](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357)과 같은 치명적인 결함을 유발할 수 있습니다.
+
+[프록시 패턴에 대해 더 알아보기.](https://blog.openzeppelin.com/proxy-patterns/)
+
+### 업그레이드 메커니즘 #4: 전략 패턴 {#strategy-pattern}
+
+이 기술은 특정 기능을 구현하기 위해 다른 프로그램과 인터페이스하는 소프트웨어 프로그램을 만들도록 장려하는 [전략 패턴](https://en.wikipedia.org/wiki/Strategy_pattern)의 영향을 받았습니다. 전략 패턴을 이더리움 개발에 적용하는 것은 다른 계약의 함수를 호출하는 스마트 계약을 구축하는 것을 의미합니다.
+
+이 경우 메인 계약에는 핵심 비즈니스 로직이 포함되어 있지만, 특정 함수를 실행하기 위해 다른 스마트 계약("위성 계약")과 인터페이스합니다. 이 메인 계약은 각 위성 계약의 주소를 저장하고 위성 계약의 다른 구현 간에 전환할 수 있습니다.
+
+새로운 위성 계약을 구축하고 메인 계약을 새 주소로 구성할 수 있습니다. 이를 통해 스마트 계약의 전략을 변경(즉, 새로운 로직 구현)할 수 있습니다.
+
+앞서 논의한 프록시 패턴과 유사하지만, 전략 패턴은 사용자가 상호 작용하는 메인 계약이 비즈니스 로직을 보유하기 때문에 다릅니다. 이 패턴을 사용하면 핵심 인프라에 영향을 주지 않고 스마트 계약에 제한적인 변경을 도입할 수 있습니다.
+
+주요 단점은 이 패턴이 주로 사소한 업그레이드를 배포하는 데 유용하다는 것입니다. 또한, 메인 계약이 손상된 경우(예: 해킹) 이 업그레이드 방법을 사용할 수 없습니다.
+
+### 업그레이드 메커니즘 #5: 다이아몬드 패턴 {#diamond-pattern}
+
+다이아몬드 패턴은 프록시 패턴의 개선된 버전으로 간주될 수 있습니다. 다이아몬드 패턴은 다이아몬드 프록시 계약이 하나 이상의 로직 계약에 함수 호출을 위임할 수 있다는 점에서 프록시 패턴과 다릅니다.
+
+다이아몬드 패턴의 로직 계약은 패싯으로 알려져 있습니다. 다이아몬드 패턴이 작동하려면 프록시 계약에 [함수 선택자](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector)를 다른 패싯 주소에 매핑하는 매핑을 만들어야 합니다.
+
+사용자가 함수를 호출하면 프록시 계약은 매핑을 확인하여 해당 함수 실행을 담당하는 패싯을 찾습니다. 그런 다음 `delegatecall`(폴백 함수 사용)을 호출하고 해당 로직 계약으로 호출을 리디렉션합니다.
+
+다이아몬드 업그레이드 패턴은 기존 프록시 업그레이드 패턴에 비해 몇 가지 장점이 있습니다.
+
+1. 모든 코드를 변경하지 않고도 계약의 작은 부분을 업그레이드할 수 있습니다. 업그레이드를 위해 프록시 패턴을 사용하려면 사소한 업그레이드라도 완전히 새로운 로직 계약을 만들어야 합니다.
+
+2. 모든 스마트 계약(프록시 패턴에서 사용되는 로직 계약 포함)은 24KB 크기 제한이 있으며, 이는 특히 더 많은 기능이 필요한 복잡한 계약의 경우 제한이 될 수 있습니다. 다이아몬드 패턴은 여러 로직 계약에 함수를 분할하여 이 문제를 쉽게 해결할 수 있습니다.
+
+3. 프록시 패턴은 액세스 제어에 대해 포괄적인 접근 방식을 채택합니다. 업그레이드 함수에 접근할 수 있는 엔티티는 _전체_ 계약을 변경할 수 있습니다. 하지만 다이아몬드 패턴은 모듈식 권한 접근 방식을 가능하게 하여, 스마트 계약 내에서 특정 함수를 업그레이드하는 것을 엔티티에 제한할 수 있습니다.
+
+[다이아몬드 패턴에 대해 더 알아보기](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w).
+
+## 스마트 계약 업그레이드의 장단점 {#pros-and-cons-of-upgrading-smart-contracts}
+
+| 장점 | 단점 |
+| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
+| 스마트 계약 업그레이드를 통해 배포 후 단계에서 발견된 취약점을 더 쉽게 수정할 수 있습니다. | 스마트 계약을 업그레이드하는 것은 코드 불변성이라는 개념에 위배되며, 이는 탈중앙화와 보안에 영향을 미칩니다. |
+| 개발자는 로직 업그레이드를 사용하여 탈중앙화 애플리케이션에 새로운 기능을 추가할 수 있습니다. | 사용자는 개발자가 스마트 계약을 임의로 수정하지 않을 것이라고 신뢰해야 합니다. |
+| 스마트 계약 업그레이드는 버그를 신속하게 수정할 수 있으므로 최종 사용자의 안전을 향상시킬 수 있습니다. | 스마트 계약에 업그레이드 기능을 프로그래밍하는 것은 또 다른 복잡성을 더하고 치명적인 결함의 가능성을 높입니다. |
+| 계약 업그레이드는 개발자에게 다양한 기능을 실험하고 시간이 지남에 따라 탈중앙화앱을 개선할 수 있는 더 많은 여지를 제공합니다. | 스마트 계약을 업그레이드할 수 있는 기회는 개발자가 개발 단계에서 실사를 수행하지 않고 프로젝트를 더 빨리 출시하도록 장려할 수 있습니다. |
+| | 스마트 계약의 안전하지 않은 접근 제어 또는 중앙 집중화는 악의적인 행위자가 무단 업그레이드를 수행하기 쉽게 만들 수 있습니다. |
+
+## 스마트 계약 업그레이드 시 고려 사항 {#considerations-for-upgrading-smart-contracts}
+
+1. 특히 프록시 패턴, 전략 패턴 또는 데이터 분리를 사용하는 경우 무단 스마트 계약 업그레이드를 방지하기 위해 안전한 접근 제어/권한 부여 메커니즘을 사용하세요. 예를 들어, 계약의 소유자만 호출할 수 있도록 업그레이드 기능에 대한 접근을 제한하는 것입니다.
+
+2. 스마트 계약 업그레이드는 복잡한 활동이며 취약점 도입을 방지하기 위해 높은 수준의 주의가 필요합니다.
+
+3. 업그레이드 구현 프로세스를 탈중앙화하여 신뢰 가정을 줄이세요. [다중 서명 지갑 계약](/developers/docs/smart-contracts/#multisig)을 사용하여 업그레이드를 제어하거나 [DAO 구성원](/dao/)이 업그레이드 승인에 투표하도록 요구하는 전략이 포함될 수 있습니다.
+
+4. 계약 업그레이드에 수반되는 비용을 인지하세요. 예를 들어, 계약 마이그레이션 중에 이전 계약에서 새 계약으로 상태(예: 사용자 잔액)를 복사하는 데 두 개 이상의 트랜잭션이 필요할 수 있으며, 이는 더 많은 가스 수수료를 의미합니다.
+
+5. 사용자를 보호하기 위해 **타임락** 구현을 고려하세요. 타임락은 시스템 변경에 적용되는 지연을 의미합니다. 타임락은 다중 서명 거버넌스 시스템과 결합하여 업그레이드를 제어할 수 있습니다. 제안된 조치가 필요한 승인 임계값에 도달하면 사전 정의된 지연 기간이 경과할 때까지 실행되지 않습니다.
+
+타임락은 사용자가 제안된 변경(예: 로직 업그레이드 또는 새로운 수수료 체계)에 동의하지 않을 경우 시스템을 종료할 시간을 줍니다. 타임락이 없으면 사용자는 개발자가 사전 통지 없이 스마트 계약에 임의의 변경을 구현하지 않을 것이라고 신뢰해야 합니다. 여기서 단점은 타임락이 취약점을 신속하게 패치하는 능력을 제한한다는 것입니다.
+
+## 참고 자료 {#resources}
+
+**OpenZeppelin 업그레이드 플러그인 - _업그레이드 가능한 스마트 계약을 배포하고 보안을 유지하기 위한 도구 모음._**
+
+- [GitHub](https://github.com/OpenZeppelin/openzeppelin-upgrades)
+- [개발문서](https://docs.openzeppelin.com/upgrades)
+
+## 튜토리얼 {#tutorials}
+
+- [스마트 계약 업그레이드하기 | 유튜브 튜토리얼](https://www.youtube.com/watch?v=bdXJmWajZRY) - Patrick Collins
+- [이더리움 스마트 계약 마이그레이션 튜토리얼](https://medium.com/coinmonks/ethereum-smart-contract-migration-13f6f12539bd) - Austin Griffith
+- [UUPS 프록시 패턴을 사용한 스마트 계약 업그레이드](https://blog.logrocket.com/author/praneshas/) - Pranesh A.S
+- [Web3 튜토리얼: OpenZeppelin을 사용하여 업그레이드 가능한 스마트 계약(프록시) 작성하기](https://dev.to/yakult/tutorial-write-upgradeable-smart-contract-proxy-contract-with-openzeppelin-1916) - fangjun.eth
+
+## 더 읽어보기 {#further-reading}
+
+- [스마트 계약 업그레이드의 현황](https://blog.openzeppelin.com/the-state-of-smart-contract-upgrades/) - Santiago Palladino
+- [Solidity 스마트 계약을 업그레이드하는 여러 방법](https://cryptomarketpool.com/multiple-ways-to-upgrade-a-solidity-smart-contract/) - Crypto Market Pool 블로그
+- [학습: 스마트 계약 업그레이드](https://docs.openzeppelin.com/learn/upgrading-smart-contracts) - OpenZeppelin 개발문서
+- [Solidity 계약의 업그레이드 가능성을 위한 프록시 패턴: 투명 프록시 vs UUPS 프록시](https://mirror.xyz/0xB38709B8198d147cc9Ff9C133838a044d78B064B/M7oTptQkBGXxox-tk9VJjL66E1V8BUF0GF79MMK4YG0) - Naveen Sahu
+- [다이아몬드 업그레이드 작동 방식](https://dev.to/mudgen/how-diamond-upgrades-work-417j) - Nick Mudge
diff --git a/public/content/translations/ko/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/ko/developers/docs/smart-contracts/verifying/index.md
new file mode 100644
index 00000000000..e51bc39c8aa
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/smart-contracts/verifying/index.md
@@ -0,0 +1,113 @@
+---
+title: "스마트 계약 인증"
+description: "이더리움 스마트 계약의 소스 코드 검증 개요"
+lang: ko
+---
+
+[스마트 계약](/developers/docs/smart-contracts/)은 '무신뢰성(trustless)'을 갖도록 설계되었습니다. 즉, 사용자가 계약과 상호 작용하기 전에 제3자(예: 개발자 및 회사)를 신뢰할 필요가 없다는 것을 의미합니다. 무신뢰성을 위한 전제 조건으로, 사용자와 다른 개발자는 스마트 계약의 소스 코드를 검증할 수 있어야 합니다. 소스 코드 검증은 게시된 계약 코드가 이더리움 블록체인의 계약 주소에서 실행되는 코드와 동일하다는 것을 사용자와 개발자에게 보장합니다.
+
+"소스 코드 검증"과 "[정형 검증](/developers/docs/smart-contracts/formal-verification/)"을 구별하는 것이 중요합니다. 아래에서 자세히 설명하겠지만 소스 코드 검증은 고급 언어(예: Solidity)로 작성된 스마트 계약의 주어진 소스 코드가 계약 주소에서 실행될 바이트코드와 동일하게 컴파일되는지 검증하는 것을 말합니다. 하지만 정형 검증은 스마트 계약의 정확성을 검증하는 것을 의미하며, 이는 계약이 예상대로 작동하는 것을 의미합니다. 문맥에 따라 다르지만, 계약 검증은 일반적으로 소스 코드 검증을 의미합니다.
+
+## 소스 코드 검증이란 무엇인가요? {#what-is-source-code-verification}
+
+[이더리움 가상 머신(EVM)](/developers/docs/evm/)에 스마트 계약을 배포하기 전에 개발자들은 계약의 소스 코드, 즉 [솔리디티](/developers/docs/smart-contracts/languages/) 또는 다른 고급 프로그래밍 언어로 작성된 지침을 바이트코드로 [컴파일](/developers/docs/smart-contracts/compiling/)합니다. EVM은 고급 지침을 해석할 수 없으므로, 소스 코드를 바이트코드(즉, 저수준 기계 명령어)로 컴파일하는 것은 EVM에서 계약 로직을 실행하는 데 필요합니다.
+
+소스 코드 검증은 스마트 계약의 소스 코드와 계약 생성 중에 사용된 컴파일된 바이트코드를 비교하여 차이점을 감지하는 것입니다. 스마트 계약을 검증하는 것이 중요한 이유는 광고된 계약 코드가 블록체인에서 실행되는 것과 다를 수 있기 때문입니다.
+
+스마트 계약 검증을 통해 기계 코드를 읽을 필요 없이 계약이 작성된 고급 언어를 통해 계약이 수행하는 작업을 조사할 수 있습니다. 함수, 값, 그리고 일반적으로 변수 이름과 주석은 컴파일 및 배포된 원본 소스 코드와 동일하게 유지됩니다. 이를 통해 코드를 훨씬 쉽게 읽을 수 있습니다. 소스 검증은 또한 최종 사용자가 스마트 계약이 무엇을 하도록 설계되었는지 알 수 있도록 코드 문서화를 제공합니다.
+
+### 전체 검증이란 무엇인가요? {#full-verification}
+
+소스 코드에는 주석이나 변수 이름과 같이 컴파일된 바이트코드에 영향을 주지 않는 일부 부분이 있습니다. 이는 서로 다른 변수 이름과 다른 주석을 가진 두 개의 소스 코드가 모두 동일한 계약을 검증할 수 있다는 것을 의미합니다. 이로 인해 악의적인 행위자가 소스 코드 내에 기만적인 주석을 추가하거나 오해의 소지가 있는 변수 이름을 부여하고 원본 소스 코드와 다른 소스 코드로 계약을 검증받을 수 있습니다.
+
+소스 코드의 정확성에 대한 암호화 보증과 컴파일 정보의 _지문_ 역할을 하도록 바이트코드에 추가 데이터를 추가하여 이를 방지할 수 있습니다. 필요한 정보는 [솔리디티의 계약 메타데이터](https://docs.soliditylang.org/en/v0.8.15/metadata.html)에 있으며, 이 파일의 해시는 계약의 바이트코드에 추가됩니다. [메타데이터 플레이그라운드](https://playground.sourcify.dev)에서 작동하는 것을 볼 수 있습니다.
+
+메타데이터 파일에는 소스 파일과 그 해시를 포함하여 계약의 컴파일에 대한 정보가 포함되어 있습니다. 즉, 컴파일 설정이나 소스 파일 중 하나의 바이트라도 변경되면 메타데이터 파일이 변경됩니다. 결과적으로 바이트코드에 추가되는 메타데이터 파일의 해시도 변경됩니다. 즉, 계약의 바이트코드 + 추가된 메타데이터 해시가 주어진 소스 코드 및 컴파일 설정과 일치하면, 이것이 원본 컴파일에 사용된 소스 코드와 정확히 동일하며 단 한 바이트도 다르지 않다는 것을 확신할 수 있습니다.
+
+메타데이터 해시를 활용하는 이러한 유형의 검증은 **"[전체 검증](https://docs.sourcify.dev/docs/full-vs-partial-match/)"**(또는 "완벽한 검증")이라고 합니다. 메타데이터 해시가 일치하지 않거나 검증에서 고려되지 않으면 "부분 일치"가 되며, 이는 현재 계약을 검증하는 더 일반적인 방법입니다. 전체 검증 없이는 검증된 소스 코드에 반영되지 않는 [악성 코드](https://samczsun.com/hiding-in-plain-sight/)를 삽입하는 것이 가능합니다. 대부분의 개발자는 전체 검증을 인지하지 못하고 컴파일의 메타데이터 파일을 보관하지 않으므로, 지금까지 부분 검증이 계약을 검증하는 사실상의 방법이었습니다.
+
+## 소스 코드 검증이 왜 중요한가요? {#importance-of-source-code-verification}
+
+### 무신뢰성 {#trustlessness}
+
+무신뢰성은 스마트 계약과 [탈중앙화 애플리케이션(탈중앙화앱)](/developers/docs/dapps/)의 가장 큰 전제라고 할 수 있습니다. 스마트 계약은 “불변”이며 변경할 수 없습니다. 계약은 배포 시점에 코드에 정의된 비즈니스 로직만 실행합니다. 이는 개발자와 기업이 이더리움에 배포한 후 계약 코드를 변조할 수 없음을 의미합니다.
+
+스마트 계약이 무신뢰성을 가지려면 계약 코드를 독립적으로 검증할 수 있어야 합니다. 모든 스마트 계약의 컴파일된 바이트코드는 블록체인에 공개적으로 사용할 수 있지만, 저수준 언어는 개발자와 사용자 모두에게 이해하기 어렵습니다.
+
+프로젝트는 계약의 소스 코드를 게시하여 신뢰 가정을 줄입니다. 하지만 이는 또 다른 문제로 이어집니다. 게시된 소스 코드가 계약 바이트코드와 일치하는지 확인하기 어렵다는 것입니다. 이 시나리오에서는 사용자가 개발자가 블록체인에 배포하기 전에 계약의 비즈니스 로직(즉, 바이트코드를 변경)을 변경하지 않을 것이라고 신뢰해야 하므로 무신뢰성의 가치가 상실됩니다.
+
+소스 코드 검증 도구는 스마트 계약의 소스 코드 파일이 어셈블리 코드와 일치함을 보장합니다. 그 결과 사용자가 제3자를 맹목적으로 신뢰하지 않고 계약에 자금을 예치하기 전에 코드를 검증하는 무신뢰 생태계가 만들어집니다.
+
+### 사용자 안전 {#user-safety}
+
+스마트 계약에는 일반적으로 많은 돈이 걸려 있습니다. 따라서 스마트 계약을 사용하기 전에 더 높은 보안 보장과 로직 검증이 필요합니다. 문제는 비양심적인 개발자가 스마트 계약에 악성 코드를 삽입하여 사용자를 속일 수 있다는 것입니다. 검증 없이는 악성 스마트 계약에 [백도어](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), 논란의 여지가 있는 접근 제어 메커니즘, 악용 가능한 취약점 및 감지되지 않은 채 사용자 안전을 위협하는 기타 사항들이 있을 수 있습니다.
+
+스마트 계약의 소스 코드 파일을 게시하면 감사자와 같은 이해관계자들이 잠재적인 공격 벡터에 대해 계약을 평가하기가 더 쉬워집니다. 여러 당사자가 독립적으로 스마트 계약을 검증함으로써 사용자는 보안에 대한 더 강력한 보증을 받게 됩니다.
+
+## 이더리움 스마트 계약의 소스 코드를 검증하는 방법 {#source-code-verification-for-ethereum-smart-contracts}
+
+[이더리움에 스마트 계약 배포](/developers/docs/smart-contracts/deploying/)는 데이터 페이로드(컴파일된 바이트코드)가 포함된 트랜잭션을 특수 주소로 보내야 합니다. 데이터 페이로드는 소스 코드를 컴파일하여 생성되며, 여기에 트랜잭션의 데이터 페이로드에 추가된 계약 인스턴스의 [생성자 인수](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor)가 더해집니다. 컴파일은 결정론적입니다. 즉, 동일한 소스 파일과 컴파일 설정(예: 컴파일러 버전, 최적화 프로그램)이 사용되는 경우 항상 동일한 출력(즉, 계약 바이트코드)을 생성합니다.
+
+
+
+스마트 계약을 검증하는 것은 기본적으로 다음 단계를 포함합니다:
+
+1. 컴파일러에 소스 파일과 컴파일 설정을 입력합니다.
+
+2. 컴파일러는 계약의 바이트코드를 출력합니다.
+
+3. 지정된 주소에서 배포된 계약의 바이트코드를 가져옵니다.
+
+4. 배포된 바이트코드를 다시 컴파일된 바이트코드와 비교합니다. 코드가 일치하면 계약은 주어진 소스 코드와 컴파일 설정으로 검증됩니다.
+
+5. 추가로, 바이트코드 끝에 있는 메타데이터 해시가 일치하면 전체 일치가 됩니다.
+
+이는 검증에 대한 단순한 설명이며, [불변 변수](https://docs.sourcify.dev/docs/immutables/)를 갖는 것과 같이 이 방법으로 작동하지 않는 많은 예외가 있다는 점에 유의하세요.
+
+## 소스 코드 검증 도구 {#source-code-verification-tools}
+
+계약을 검증하는 전통적인 프로세스는 복잡할 수 있습니다. 이것이 이더리움에 배포된 스마트 계약의 소스 코드를 검증하기 위한 도구가 있는 이유입니다. 이러한 도구는 소스 코드 검증의 많은 부분을 자동화하고 사용자의 이익을 위해 검증된 계약을 큐레이션합니다.
+
+### Etherscan {#etherscan}
+
+주로 [이더리움 블록체인 탐색기](/developers/docs/data-and-analytics/block-explorers/)로 알려져 있지만, Etherscan은 스마트 계약 개발자와 사용자를 위한 [소스 코드 검증 서비스](https://etherscan.io/verifyContract)도 제공합니다.
+
+Etherscan을 사용하면 원본 데이터 페이로드(소스 코드, 라이브러리 주소, 컴파일러 설정, 계약 주소 등)에서 계약 바이트코드를 다시 컴파일할 수 있습니다. 다시 컴파일된 바이트코드가 온체인 계약의 바이트코드(및 생성자 매개변수)와 연결되면 [계약이 검증됩니다](https://info.etherscan.com/types-of-contract-verification/).
+
+검증이 완료되면 계약의 소스 코드는 "검증됨" 라벨을 받고 다른 사람들이 감사할 수 있도록 Etherscan에 게시됩니다. 또한 검증된 소스 코드가 있는 스마트 계약의 저장소인 [검증된 계약](https://etherscan.io/contractsVerified/) 섹션에도 추가됩니다.
+
+Etherscan은 계약을 검증하는 데 가장 많이 사용되는 도구입니다. 그러나 Etherscan의 계약 검증에는 단점이 있습니다. 온체인 바이트코드와 재컴파일된 바이트코드의 메타데이터 해시를 비교하지 못합니다. 따라서 Etherscan에서의 일치는 부분 일치입니다.
+
+[Etherscan에서 계약 검증에 대해 더 알아보기](https://medium.com/etherscan-blog/verifying-contracts-on-etherscan-f995ab772327).
+
+### Blockscout {#blockscout}
+
+[Blockscout](https://blockscout.com/)은 오픈소스 블록체인 탐색기로 스마트 계약 개발자와 사용자를 위한 [계약 검증 서비스](https://eth.blockscout.com/contract-verification)도 제공합니다. 오픈 소스 대안으로서 Blockscout은 검증이 수행되는 방식의 투명성을 제공하고 커뮤니티가 검증 프로세스를 개선하는 데 기여할 수 있도록 합니다.
+
+다른 검증 서비스와 마찬가지로 Blockscout을 사용하면 바이트코드를 다시 컴파일하고 배포된 계약과 비교하여 계약의 소스 코드를 검증할 수 있습니다. 검증이 완료되면 계약은 검증 상태를 받게 되며 소스 코드는 감사 및 상호 작용을 위해 공개적으로 사용할 수 있게 됩니다. 검증된 계약은 쉽게 찾아보고 발견할 수 있도록 Blockscout의 [검증된 계약 저장소](https://eth.blockscout.com/verified-contracts)에도 나열됩니다.
+
+### Sourcify {#sourcify}
+
+[Sourcify](https://sourcify.dev/#/verifier)는 오픈 소스이고 분산된 또 다른 계약 검증 도구입니다. 이것은 블록 탐색기가 아니며 [다양한 EVM 기반 네트워크](https://docs.sourcify.dev/docs/chains)에서 계약만 검증합니다. 이는 다른 도구가 그 위에 구축할 수 있는 공용 인프라 역할을 하며, 메타데이터 파일에 있는 [ABI](/developers/docs/smart-contracts/compiling/#web-applications) 및 [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) 주석을 사용하여 보다 인간 친화적인 계약 상호 작용을 가능하게 하는 것을 목표로 합니다.
+
+Etherscan과 달리 Sourcify는 메타데이터 해시와의 전체 일치를 지원합니다. 검증된 계약은 HTTP 및 분산된 [콘텐츠 주소 지정](https://docs.storacha.network/concepts/content-addressing/) 스토리지인 [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs)의 [공개 리포지토리](https://docs.sourcify.dev/docs/repository/)에서 제공됩니다. 추가된 메타데이터 해시가 IPFS 해시이므로 이를 통해 IPFS를 통해 계약의 메타데이터 파일을 가져올 수 있습니다.
+
+또한 이 파일들의 IPFS 해시도 메타데이터에서 찾을 수 있으므로 IPFS를 통해 소스 코드 파일을 검색할 수도 있습니다. API 또는 [UI](https://sourcify.dev/#/verifier)를 통해 메타데이터 파일과 소스 파일을 제공하거나 플러그인을 사용하여 계약을 확인할 수 있습니다. Sourcify 모니터링 도구는 또한 새 블록에서 계약 생성을 수신하고 메타데이터 및 소스 파일이 IPFS에 게시된 경우 계약을 확인하려고 시도합니다.
+
+[Sourcify에서 계약 검증에 대해 더 알아보기](https://soliditylang.org/blog/2020/06/25/sourcify-faq/).
+
+### Tenderly {#tenderly}
+
+[Tenderly 플랫폼](https://tenderly.co/)은 웹3 개발자가 스마트 계약을 구축, 테스트, 모니터링 및 운영할 수 있도록 합니다. 디버깅 도구와 관찰 가능성 및 인프라 구성 요소를 결합하여 Tenderly는 개발자가 스마트 계약 개발을 가속화하도록 돕습니다. Tenderly 기능을 완전히 활성화하려면 개발자는 여러 방법을 사용하여 [소스 코드 검증을 수행](https://docs.tenderly.co/monitoring/contract-verification)해야 합니다.
+
+계약을 비공개 또는 공개적으로 확인할 수 있습니다. 비공개로 확인된 경우 스마트 계약은 귀하(및 프로젝트의 다른 구성원)에게만 표시됩니다. 계약을 공개적으로 확인하면 Tenderly 플랫폼을 사용하는 모든 사람이 볼 수 있습니다.
+
+[대시보드](https://docs.tenderly.co/contract-verification), [Tenderly Hardhat 플러그인](https://docs.tenderly.co/contract-verification/hardhat) 또는 [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli)를 사용하여 계약을 확인할 수 있습니다.
+
+대시보드를 통해 계약을 확인할 때 Solidity 컴파일러에서 생성된 소스 파일 또는 메타데이터 파일, 주소/네트워크 및 컴파일러 설정을 가져와야 합니다.
+
+Tenderly Hardhat 플러그인을 사용하면 더 적은 노력으로 검증 프로세스를 더 많이 제어할 수 있으므로 자동(코드 없음) 및 수동(코드 기반) 검증 중에서 선택할 수 있습니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [계약 소스 코드 검증](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/)
diff --git a/public/content/translations/ko/developers/docs/standards/index.md b/public/content/translations/ko/developers/docs/standards/index.md
new file mode 100644
index 00000000000..2067fd392a2
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/standards/index.md
@@ -0,0 +1,59 @@
+---
+title: "이더리움 개발 표준"
+description: "EIP, ERC-20, ERC-721과 같은 토큰 표준, 개발 컨벤션을 포함한 이더리움 표준에 대해 알아보세요."
+lang: ko
+incomplete: true
+---
+
+## 표준 개요 {#standards-overview}
+
+이더리움 커뮤니티는 [이더리움 클라이언트](/developers/docs/nodes-and-clients/) 및 지갑과 같은 프로젝트가 여러 구현에서 상호 운용성을 유지하고 스마트 계약과 탈중앙화앱이 구성 가능하도록 유지하는 데 도움이 되는 많은 표준을 채택했습니다.
+
+일반적으로 표준은 [이더리움 개선 제안](/eips/)(EIP)으로 도입되며, 이는 [표준 절차](https://eips.ethereum.org/EIPS/eip-1)를 통해 커뮤니티 구성원들이 논의합니다.
+
+- [EIP 소개](/eips/)
+- [EIP 목록](https://eips.ethereum.org/)
+- [EIP GitHub 리포지토리](https://github.com/ethereum/EIPs)
+- [EIP 토론 게시판](https://ethereum-magicians.org/c/eips)
+- [이더리움 거버넌스 소개](/governance/)
+- [이더리움 거버넌스 개요](https://web.archive.org/web/20201107234050/https://blog.bmannconsulting.com/ethereum-governance/) _2019년 3월 31일 - Boris Mann_
+- [이더리움 프로토콜 개발 거버넌스 및 네트워크 업그레이드 조정](https://hudsonjameson.com/posts/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _2020년 3월 23일 - Hudson Jameson_
+- [모든 이더리움 코어 개발자 회의 재생목록](https://www.youtube.com/@EthereumProtocol) _(YouTube 재생목록)_
+
+## 표준의 유형 {#types-of-standards}
+
+EIP에는 3가지 유형이 있습니다:
+
+- 표준 트랙: 대부분 또는 모든 이더리움 구현에 영향을 미치는 변경 사항을 설명합니다
+- [메타 트랙](https://eips.ethereum.org/meta): 이더리움 관련 프로세스를 설명하거나 프로세스 변경을 제안합니다
+- [정보 트랙](https://eips.ethereum.org/informational): 이더리움 설계 문제를 설명하거나 이더리움 커뮤니티에 일반적인 가이드라인이나 정보를 제공합니다
+
+또한 표준 트랙은 4가지 카테고리로 세분화됩니다:
+
+- [코어](https://eips.ethereum.org/core): 합의 포크가 필요한 개선 사항
+- [네트워킹](https://eips.ethereum.org/networking): devp2p 및 라이트 이더리움 하위 프로토콜 관련 개선 사항, 그리고 위스퍼 및 스웜의 네트워크 프로토콜 사양에 대한 제안된 개선 사항.
+- [인터페이스](https://eips.ethereum.org/interface): 클라이언트 API/RPC 사양 및 표준 관련 개선 사항, 그리고 메서드 이름 및 계약 ABI와 같은 특정 언어 수준 표준.
+- [ERC](https://eips.ethereum.org/erc): 애플리케이션 수준의 표준 및 관례
+
+이러한 다양한 유형 및 카테고리에 대한 자세한 정보는 [EIP-1](https://eips.ethereum.org/EIPS/eip-1#eip-types)에서 확인할 수 있습니다
+
+### 토큰 표준 {#token-standards}
+
+- [ERC-20](/developers/docs/standards/tokens/erc-20/) - 투표 토큰, 스테이킹 토큰 또는 가상 화폐와 같은 대체 가능한(상호 교환 가능한) 토큰을 위한 표준 인터페이스입니다.
+ - [ERC-223](/developers/docs/standards/tokens/erc-223/) - 토큰이 이더와 동일하게 작동하도록 하고 수신자 측에서 토큰 전송 처리를 지원하는 대체 가능한 토큰 표준입니다.
+ - [ERC-1363](/developers/docs/standards/tokens/erc-1363/) - 단일 트랜잭션에서 수신자 계약에 대한 콜백 실행을 지원하는 ERC-20 토큰의 확장 인터페이스입니다.
+- [ERC-721](/developers/docs/standards/tokens/erc-721/) - 예술품이나 노래의 증서와 같은 대체 불가능한 토큰을 위한 표준 인터페이스입니다.
+ - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309) - 연속적인 토큰 식별자를 사용하여 하나 또는 여러 개의 대체 불가능한 토큰을 생성/전송할 때 방출되는 표준화된 이벤트입니다.
+ - [ERC-4400](https://eips.ethereum.org/EIPS/eip-4400) - EIP-721 소비자 역할을 위한 인터페이스 확장입니다.
+ - [ERC-4907](https://eips.ethereum.org/EIPS/eip-4907) - ERC-721 토큰에 제한된 권한을 가진 시간 제한 역할을 추가합니다.
+- [ERC-777](/developers/docs/standards/tokens/erc-777/) - **(권장되지 않음)** ERC-20을 개선한 토큰 표준입니다.
+- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - 대체 가능한 자산과 대체 불가능한 자산을 모두 포함할 수 있는 토큰 표준입니다.
+- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - 수익률 생성 볼트의 기술적 파라미터를 최적화하고 통합하도록 설계된 토큰화된 볼트 표준입니다.
+
+[토큰 표준](/developers/docs/standards/tokens/)에 대해 더 자세히 알아보세요.
+
+## 더 읽어보기 {#further-reading}
+
+- [이더리움 개선 제안(EIP)](/eips/)
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
diff --git a/public/content/translations/ko/developers/docs/standards/tokens/erc-1155/index.md b/public/content/translations/ko/developers/docs/standards/tokens/erc-1155/index.md
new file mode 100644
index 00000000000..4c6f68f331f
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/standards/tokens/erc-1155/index.md
@@ -0,0 +1,146 @@
+---
+title: "ERC-1155 멀티 토큰 표준"
+description: "단일 계약에서 대체 가능 토큰과 대체 불가 토큰을 결합하는 멀티 토큰 표준인 ERC-1155에 대해 알아보세요."
+lang: ko
+---
+
+## 소개 {#introduction}
+
+여러 토큰 유형을 관리하는 계약을 위한 표준 인터페이스입니다. 배포된 단일 계약은 대체 가능 토큰, 대체 불가 토큰 또는 기타 구성(예: 준대체 가능 토큰)의 모든 조합을 포함할 수 있습니다.
+
+**멀티 토큰 표준이란 무엇인가요?**
+
+이 아이디어는 간단하며, 모든 수의 대체 가능 토큰 유형과 대체 불가 토큰 유형을 나타내고 제어할 수 있는 스마트 계약 인터페이스를 만드는 것을 목표로 합니다. 이러한 방식으로 ERC-1155 토큰은 [ERC-20](/developers/docs/standards/tokens/erc-20/) 및 [ERC-721](/developers/docs/standards/tokens/erc-721/) 토큰과 동일한 기능을 수행할 수 있으며, 심지어 동시에 두 가지 기능 모두를 수행할 수도 있습니다. ERC-20 및 ERC-721 표준의 기능을 모두 개선하여 더 효율적이고 명백한 구현 오류를 수정합니다.
+
+ERC-1155 토큰은 [EIP-1155](https://eips.ethereum.org/EIPS/eip-1155)에 자세히 설명되어 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [토큰 표준](/developers/docs/standards/tokens/), [ERC-20](/developers/docs/standards/tokens/erc-20/), [ERC-721](/developers/docs/standards/tokens/erc-721/)에 대해 읽어보시는 것을 권장합니다.
+
+## ERC-1155의 기능과 특징: {#body}
+
+- [일괄 전송](#batch_transfers): 단일 호출로 여러 자산을 전송합니다.
+- [일괄 잔액 조회](#batch_balance): 단일 호출로 여러 자산의 잔액을 조회합니다.
+- [일괄 승인](#batch_approval): 주소에 모든 토큰을 승인합니다.
+- [훅](#receive_hook): 토큰 수신 훅입니다.
+- [NFT 지원](#nft_support): 공급량이 1인 경우 NFT로 취급합니다.
+- [안전 전송 규칙](#safe_transfer_rule): 안전한 전송을 위한 규칙 집합입니다.
+
+### 일괄 전송 {#batch-transfers}
+
+일괄 전송은 일반적인 ERC-20 전송과 매우 유사하게 작동합니다. 일반적인 ERC-20의 `transferFrom` 함수를 살펴보겠습니다.
+
+```solidity
+// ERC-20
+function transferFrom(address from, address to, uint256 value) external returns (bool);
+
+// ERC-1155
+function safeBatchTransferFrom(
+ address _from,
+ address _to,
+ uint256[] calldata _ids,
+ uint256[] calldata _values,
+ bytes calldata _data
+) external;
+```
+
+ERC-1155의 유일한 차이점은 값을 배열로 전달하고, ID 배열도 전달한다는 것입니다. 예를 들어, `ids=[3, 6, 13]`과 `values=[100, 200, 5]`가 주어지면 결과적인 전송은 다음과 같습니다.
+
+1. `_from`에서 `_to`로 ID가 3인 토큰 100개를 전송합니다.
+2. `_from`에서 `_to`로 ID가 6인 토큰 200개를 전송합니다.
+3. `_from`에서 `_to`로 ID가 13인 토큰 5개를 전송합니다.
+
+ERC-1155에는 `transfer`는 없고 `transferFrom`만 있습니다. 일반 `transfer`처럼 사용하려면, from 주소를 함수를 호출하는 주소로 설정하기만 하면 됩니다.
+
+### 일괄 잔액 조회 {#batch-balance}
+
+각각의 ERC-20 `balanceOf` 호출에도 마찬가지로 일괄 처리를 지원하는 파트너 함수가 있습니다. 참고로, ERC-20 버전은 다음과 같습니다.
+
+```solidity
+// ERC-20
+function balanceOf(address owner) external view returns (uint256);
+
+// ERC-1155
+function balanceOfBatch(
+ address[] calldata _owners,
+ uint256[] calldata _ids
+) external view returns (uint256[] memory);
+```
+
+잔액 호출의 경우, 단일 호출로 여러 잔액을 훨씬 간단하게 검색할 수 있습니다. 소유자 배열을 전달하고, 이어서 토큰 ID 배열을 전달합니다.
+
+예를 들어 `_ids=[3, 6, 13]`과 `_owners=[0xbeef..., 0x1337..., 0x1111...]`가 주어지면 반환 값은 다음과 같습니다.
+
+```solidity
+[
+ balanceOf(0xbeef...),
+ balanceOf(0x1337...),
+ balanceOf(0x1111...)
+]
+```
+
+### 일괄 승인 {#batch-approval}
+
+```solidity
+// ERC-1155
+function setApprovalForAll(
+ address _operator,
+ bool _approved
+) external;
+
+function isApprovedForAll(
+ address _owner,
+ address _operator
+) external view returns (bool);
+```
+
+승인은 ERC-20과 약간 다릅니다. 특정 금액을 승인하는 대신 `setApprovalForAll`을 통해 운영자를 승인 또는 미승인으로 설정합니다.
+
+현재 상태는 `isApprovedForAll`을 통해 확인할 수 있습니다. 보시다시피, 이것은 전부 아니면 전무 방식의 작업입니다. 승인할 토큰 수나 토큰 클래스를 정의할 수 없습니다.
+
+이것은 단순함을 염두에 두고 의도적으로 설계되었습니다. 하나의 주소에 대해서만 모든 것을 승인할 수 있습니다.
+
+### 수신 훅 {#receive-hook}
+
+```solidity
+function onERC1155BatchReceived(
+ address _operator,
+ address _from,
+ uint256[] calldata _ids,
+ uint256[] calldata _values,
+ bytes calldata _data
+) external returns(bytes4);
+```
+
+[EIP-165](https://eips.ethereum.org/EIPS/eip-165) 지원에 따라, ERC-1155는 스마트 계약에 대해서만 수신 훅을 지원합니다. 훅 함수는 다음과 같이 지정된 미리 정의된 특정 bytes4 값을 반환해야 합니다.
+
+```solidity
+bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))
+```
+
+수신 계약이 이 값을 반환하면, 해당 계약이 전송을 수락하고 ERC-1155 토큰을 처리하는 방법을 알고 있는 것으로 간주됩니다. 더 이상 계약에 토큰이 묶이는 일이 없습니다!
+
+### NFT 지원 {#nft-support}
+
+공급량이 1일 때, 토큰은 본질적으로 대체 불가 토큰(NFT)입니다. 또한 ERC-721의 표준과 마찬가지로, 메타데이터 URL을 정의할 수 있습니다. 클라이언트가 URL을 읽고 수정할 수 있습니다. 자세한 내용은 [여기](https://eips.ethereum.org/EIPS/eip-1155#metadata)를 참조하세요.
+
+### 안전 전송 규칙 {#safe-transfer-rule}
+
+앞선 설명에서 이미 몇 가지 안전 전송 규칙을 다루었습니다. 하지만 가장 중요한 규칙들을 살펴보겠습니다.
+
+1. 호출자는 `_from` 주소의 토큰을 사용할 수 있도록 승인받았거나, 호출자가 `_from`과 같아야 합니다.
+2. 다음과 같은 경우 전송 호출이 되돌려져야 합니다.
+ 1. `_to` 주소가 0인 경우.
+ 2. `_ids`의 길이가 `_values`의 길이와 같지 않은 경우.
+ 3. `_ids`에 있는 토큰 보유자의 잔액 중 어느 하나라도 수신자에게 전송된 `_values`의 해당 금액보다 낮은 경우.
+ 4. 기타 오류가 발생하는 경우.
+
+_참고_: 훅을 포함한 모든 일괄 함수는 일괄 처리 기능이 없는 버전으로도 존재합니다. 단일 자산을 전송하는 것이 여전히 가장 보편적으로 사용되는 방법일 가능성이 높다는 점을 고려할 때, 이는 가스 효율성을 위한 것입니다. 설명을 간단하게 하기 위해 안전 전송 규칙을 포함한 해당 내용들을 생략했습니다. 이름은 동일하며, 'Batch'만 제거하면 됩니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [EIP-1155: 멀티 토큰 표준](https://eips.ethereum.org/EIPS/eip-1155)
+- [ERC-1155: Openzeppelin 문서](https://docs.openzeppelin.com/contracts/5.x/erc1155)
+- [ERC-1155: GitHub 저장소](https://github.com/enjin/erc-1155)
+- [Alchemy NFT API](https://www.alchemy.com/docs/reference/nft-api-quickstart)
diff --git a/public/content/translations/ko/developers/docs/standards/tokens/erc-1363/index.md b/public/content/translations/ko/developers/docs/standards/tokens/erc-1363/index.md
new file mode 100644
index 00000000000..a939e576656
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/standards/tokens/erc-1363/index.md
@@ -0,0 +1,82 @@
+---
+title: "ERC-1363 지불 가능 토큰 표준"
+description: "ERC-1363은 단일 트랜잭션 내에서 전송 후 수신자 계약에서 또는 승인 후 지출자 계약에서 맞춤형 로직 실행을 지원하는 ERC-20 토큰의 확장 인터페이스입니다."
+lang: ko
+---
+
+## 소개 {#introduction}
+
+### ERC-1363은 무엇인가요? {#what-is-erc1363}
+
+ERC-1363은 단일 트랜잭션 내에서 전송 후 수신자 계약에서 또는 승인 후 지출자 계약에서 맞춤형 로직 실행을 지원하는 ERC-20 토큰의 확장 인터페이스입니다.
+
+### ERC-20과의 차이점 {#erc20-differences}
+
+`transfer`, `transferFrom` 및 `approve`와 같은 표준 ERC-20 작업은 별도의 트랜잭션 없이는 수신자 또는 지출자 계약에서 코드 실행을 허용하지 않습니다.
+사용자는 첫 번째 트랜잭션을 실행한 다음 두 번째 트랜잭션을 제출해야 하므로 이는 UI 개발의 복잡성을 가중시키고 채택에 마찰을 일으킵니다.
+또한 가스를 두 번 지불해야 합니다.
+
+ERC-1363을 사용하면 대체 가능 토큰이 더 쉽게 작업을 수행하고 오프체인 리스너 없이 작동할 수 있습니다.
+단일 트랜잭션에서 전송 또는 승인 후 수신자 또는 지출자 계약에 대한 콜백을 수행할 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 다음에 대해 읽어보는 것을 권장합니다.
+
+- [토큰 표준](/developers/docs/standards/tokens/)
+- [ERC-20](/developers/docs/standards/tokens/erc-20/)
+
+## 본문 {#body}
+
+ERC-1363은 `transfer`, `transferFrom` 또는 `approve` 이후 ERC-20 토큰이 스마트 계약과 상호 작용할 수 있는 표준 API를 도입합니다.
+
+이 표준은 토큰을 전송하는 기본 기능을 제공하며, 토큰이 다른 온체인 제3자에 의해 사용될 수 있도록 승인한 다음 수신자 또는 지출자 계약에 대한 콜백을 수행할 수 있도록 합니다.
+
+ERC-20 콜백을 수락할 수 있는 스마트 계약의 제안된 용도가 많이 있습니다.
+
+예는 다음과 같습니다.
+
+- **크라우드세일**: 전송된 토큰이 즉시 보상 할당을 트리거합니다.
+- **서비스**: 결제로 한 단계에서 서비스 액세스가 활성화됩니다.
+- **인보이스**: 토큰이 자동으로 인보이스를 정산합니다.
+- **구독**: 연간 요금을 승인하면 첫 달 결제 내에서 구독이 활성화됩니다.
+
+이러한 이유로 원래 \"Payable Token\"이라고 명명되었습니다.
+
+콜백 동작은 유틸리티를 더욱 확장하여 다음과 같은 원활한 상호 작용을 가능하게 합니다.
+
+- **스테이킹**: 전송된 토큰이 스테이킹 계약에서 자동 잠금을 트리거합니다.
+- **투표**: 수신된 토큰이 거버넌스 시스템에 투표를 등록합니다.
+- **스왑**: 토큰 승인으로 한 단계에서 스왑 로직이 활성화됩니다.
+
+ERC-1363 토큰은 전송 또는 승인 수신 후 콜백을 실행해야 하는 모든 경우에 특정 유틸리티에 사용될 수 있습니다.
+ERC-1363은 수신자의 토큰 처리 능력을 확인함으로써 스마트 계약에서 토큰 손실이나 토큰 잠김을 방지하는 데에도 유용합니다.
+
+다른 ERC-20 확장 제안과 달리, ERC-1363은 ERC-20 `transfer` 및 `transferFrom` 메서드를 재정의하지 않고 ERC-20과의 하위 호환성을 유지하면서 구현할 인터페이스 ID를 정의합니다.
+
+[EIP-1363](https://eips.ethereum.org/EIPS/eip-1363)에서:
+
+### 메서드 {#methods}
+
+ERC-1363 표준을 구현하는 스마트 계약은 `ERC1363` 인터페이스의 모든 함수와 `ERC20` 및 `ERC165` 인터페이스를 **반드시** 구현해야 합니다.
+
+```solidity
+pragma solidity ^0.8.0;\n\n/**\n * @title ERC1363\n * @dev 단일 트랜잭션에서 `transfer` 또는 `transferFrom` 후 수신자 계약에서 코드를 실행하거나, `approve` 후 지출자 계약에서 코드를 실행하는 것을 지원하는 ERC-20 토큰의 확장 인터페이스입니다.\n */\ninterface ERC1363 is ERC20, ERC165 {\n /*\n * 참고: 이 인터페이스의 ERC-165 식별자는 0xb0202a11입니다.\n * 0xb0202a11 ===\n * bytes4(keccak256('transferAndCall(address,uint256)')) ^\n * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n */\n\n /**\n * @dev 호출자의 계정에서 `to`로 `value` 양의 토큰을 이동시킨 다음\n * `to`에서 `ERC1363Receiver::onTransferReceived`를 호출합니다.\n * @param to 토큰이 전송될 주소입니다.\n * @param value 전송될 토큰의 양입니다.\n * @return 예외를 발생시키지 않는 한 작업이 성공했음을 나타내는 불리언 값입니다.\n */\n function transferAndCall(address to, uint256 value) external returns (bool);\n\n /**\n * @dev 호출자의 계정에서 `to`로 `value` 양의 토큰을 이동시킨 다음\n * `to`에서 `ERC1363Receiver::onTransferReceived`를 호출합니다.\n * @param to 토큰이 전송될 주소입니다.\n * @param value 전송될 토큰의 양입니다.\n * @param data 지정된 형식이 없는 추가 데이터로, `to`를 호출할 때 전송됩니다.\n * @return 예외를 발생시키지 않는 한 작업이 성공했음을 나타내는 불리언 값입니다.\n */\n function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev 허용량 메커니즘을 사용하여 `from`에서 `to`로 `value` 양의 토큰을 이동시킨 다음\n * `to`에서 `ERC1363Receiver::onTransferReceived`를 호출합니다.\n * @param from 토큰을 보낼 주소입니다.\n * @param to 토큰이 전송될 주소입니다.\n * @param value 전송될 토큰의 양입니다.\n * @return 예외를 발생시키지 않는 한 작업이 성공했음을 나타내는 불리언 값입니다.\n */\n function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n /**\n * @dev 허용량 메커니즘을 사용하여 `from`에서 `to`로 `value` 양의 토큰을 이동시킨 다음\n * `to`에서 `ERC1363Receiver::onTransferReceived`를 호출합니다.\n * @param from 토큰을 보낼 주소입니다.\n * @param to 토큰이 전송될 주소입니다.\n * @param value 전송될 토큰의 양입니다.\n * @param data 지정된 형식이 없는 추가 데이터로, `to`를 호출할 때 전송됩니다.\n * @return 예외를 발생시키지 않는 한 작업이 성공했음을 나타내는 불리언 값입니다.\n */\n function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev 호출자의 토큰에 대해 `spender`의 허용량으로 `value` 양의 토큰을 설정한 다음\n * `spender`에서 `ERC1363Spender::onApprovalReceived`를 호출합니다.\n * @param spender 자금을 사용할 주소입니다.\n * @param value 사용될 토큰의 양입니다.\n * @return 예외를 발생시키지 않는 한 작업이 성공했음을 나타내는 불리언 값입니다.\n */\n function approveAndCall(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev 호출자의 토큰에 대해 `spender`의 허용량으로 `value` 양의 토큰을 설정한 다음\n * `spender`에서 `ERC1363Spender::onApprovalReceived`를 호출합니다.\n * @param spender 자금을 사용할 주소입니다.\n * @param value 사용될 토큰의 양입니다.\n * @param data 지정된 형식이 없는 추가 데이터로, `spender`를 호출할 때 전송됩니다.\n * @return 예외를 발생시키지 않는 한 작업이 성공했음을 나타내는 불리언 값입니다.\n */\n function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n\ninterface ERC20 {\n event Transfer(address indexed from, address indexed to, uint256 value);\n event Approval(address indexed owner, address indexed spender, uint256 value);\n function transfer(address to, uint256 value) external returns (bool);\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n function approve(address spender, uint256 value) external returns (bool);\n function totalSupply() external view returns (uint256);\n function balanceOf(address account) external view returns (uint256);\n function allowance(address owner, address spender) external view returns (uint256);\n}\n\ninterface ERC165 {\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}
+```
+
+`transferAndCall` 또는 `transferFromAndCall`을 통해 ERC-1363 토큰을 수락하려는 스마트 계약은 `ERC1363Receiver` 인터페이스를 **반드시** 구현해야 합니다.
+
+```solidity
+/**\n * @title ERC1363Receiver\n * @dev ERC-1363 토큰 계약에서 `transferAndCall` 또는 `transferFromAndCall`을 지원하려는 모든 계약을 위한 인터페이스입니다.\n */\ninterface ERC1363Receiver {\n /**\n * @dev `operator`가 `from`에서 `ERC1363::transferAndCall` 또는 `ERC1363::transferFromAndCall`을 통해\n * ERC-1363 토큰을 이 계약으로 전송할 때마다 이 함수가 호출됩니다.\n *\n * 참고: 전송을 수락하려면 이 함수는\n * `bytes4(keccak256(\"onTransferReceived(address,address,uint256,bytes)\"))`\n * (예: 0x88a7ca5c 또는 자체 함수 선택자)를 반환해야 합니다.\n *\n * @param operator `transferAndCall` 또는 `transferFromAndCall` 함수를 호출한 주소입니다.\n * @param from 토큰이 전송된 주소입니다.\n * @param value 전송된 토큰의 양입니다.\n * @param data 지정된 형식이 없는 추가 데이터입니다.\n * @return 예외를 발생시키지 않는 한 전송이 허용되는 경우 `bytes4(keccak256(\"onTransferReceived(address,address,uint256,bytes)\"))`입니다.\n */\n function onTransferReceived(address operator, address from, uint256 value, bytes calldata data) external returns (bytes4);\n}
+```
+
+`approveAndCall`을 통해 ERC-1363 토큰을 수락하려는 스마트 계약은 `ERC1363Spender` 인터페이스를 **반드시** 구현해야 합니다.
+
+```solidity
+/**\n * @title ERC1363Spender\n * @dev ERC-1363 토큰 계약에서 `approveAndCall`을 지원하려는 모든 계약을 위한 인터페이스입니다.\n */\ninterface ERC1363Spender {\n /**\n * @dev ERC-1363 토큰 `owner`가 `ERC1363::approveAndCall`을 통해 이 계약이\n * 자신의 토큰을 사용하도록 승인할 때마다 이 함수가 호출됩니다.\n *\n * 참고: 승인을 수락하려면 이 함수는\n * `bytes4(keccak256(\"onApprovalReceived(address,uint256,bytes)\"))`\n * (예: 0x7b04a2d0 또는 자체 함수 선택자)를 반환해야 합니다.\n *\n * @param owner `approveAndCall` 함수를 호출하고 이전에 토큰을 소유했던 주소입니다.\n * @param value 사용될 토큰의 양입니다.\n * @param data 지정된 형식이 없는 추가 데이터입니다.\n * @return 예외를 발생시키지 않는 한 승인이 허용되는 경우 `bytes4(keccak256(\"onApprovalReceived(address,uint256,bytes)\"))`입니다.\n */\n function onApprovalReceived(address owner, uint256 value, bytes calldata data) external returns (bytes4);\n}
+```
+
+## 더 읽어보기 {#further-reading}
+
+- [ERC-1363: 지불 가능 토큰 표준](https://eips.ethereum.org/EIPS/eip-1363)
+- [ERC-1363: GitHub 리포지토리](https://github.com/vittominacori/erc1363-payable-token)
diff --git a/public/content/translations/ko/developers/docs/standards/tokens/erc-20/index.md b/public/content/translations/ko/developers/docs/standards/tokens/erc-20/index.md
new file mode 100644
index 00000000000..7eef6f2aebd
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/standards/tokens/erc-20/index.md
@@ -0,0 +1,186 @@
+---
+title: "ERC-20 토큰 표준"
+description: "상호 운용 가능한 토큰 애플리케이션을 지원하는 이더리움의 대체 가능한 토큰 표준인 ERC-20에 대해 알아보세요."
+lang: ko
+---
+
+## 소개 {#introduction}
+
+**토큰이란 무엇인가요?**
+
+이더리움에서 토큰은 거의 모든 것을 표현할 수 있습니다.
+
+- 온라인 플랫폼의 평판점수
+- 게임 캐릭터의 스킬
+- 회사 주식지분 같은 금융자산
+- 미국달러와 같은 법정통화
+- 1 온스의 금
+- 그 이상 많은것들...
+
+이더리움의 이러한 강력한 특성은 견고한 표준 위에서 동작해야 하지 않을까요? 그것이 바로 ERC-20의 역할입니다! 이 표준을 통해서 개발자들은 다른 제품 및 서비스와 상호 연계 운용 가능한 토큰 애플리케이션을 구축할 수 있습니다. ERC-20 표준은 [이더](/glossary/#ether)에 추가적인 기능을 제공하는 데에도 사용됩니다.
+
+**ERC-20은 무엇인가요?**
+
+ERC-20은 대체가능 토큰의 표준을 제시합니다. 즉, 각 토큰은 다른 토큰과 정확히 동일(유형 및 가치) 하게 만드는 속성을 가지고 있습니다. 예를 들어 ERC-20 토큰은 ETH로 취급되며, 이는 1 토큰이 다른 모든 토큰과 항상 동일함을 의미합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+- [계정](/developers/docs/accounts)
+- [스마트 계약](/developers/docs/smart-contracts/)
+- [토큰 표준](/developers/docs/standards/tokens/)
+
+## 본문 {#body}
+
+2015년 11월 Fabian Vogelsteller가 제안한 ERC-20(Ethereum Request for Comments 20) 은 스마트 계약 내에서 토큰용 API를 구현하는 토큰 표준이다.
+
+ERC-20에서 제공하는 기능 예시
+
+- 서로 다른 계정간에 토큰 전송하기
+- 계정에서 토큰 잔고 확인하기
+- 가용 중인 네트워크 상의 토큰 총 공급량 확인하기
+- 특정 계정의 토큰을 다른 외부 계정에서 사용 가능한 지 여부를 승인하기
+
+스마트 계약이 다음과 같은 방법과 이벤트를 실행할 경우 이를 ERC-20 토큰 계약이라고 할 수 있으며, 한번 구축되면 이더리움에서 생성된 토큰들을 추적해야 한다.
+
+[EIP-20](https://eips.ethereum.org/EIPS/eip-20)에서:
+
+### 메서드 {#methods}
+
+```solidity
+function name() public view returns (string)
+function symbol() public view returns (string)
+function decimals() public view returns (uint8)
+function totalSupply() public view returns (uint256)
+function balanceOf(address _owner) public view returns (uint256 balance)
+function transfer(address _to, uint256 _value) public returns (bool success)
+function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
+function approve(address _spender, uint256 _value) public returns (bool success)
+function allowance(address _owner, address _spender) public view returns (uint256 remaining)
+```
+
+### 이벤트 {#events}
+
+```solidity
+event Transfer(address indexed _from, address indexed _to, uint256 _value)
+event Approval(address indexed _owner, address indexed _spender, uint256 _value)
+```
+
+### 예시 {#web3py-example}
+
+우리가 이더리움상의 어느 ERC-20 토큰 계약을 검사하는데 있어서 이 표준이 얼마나 주요하게 그 검사를 간단히 만드는지 살펴보자.
+ERC-20 토큰에 대한 인터페이스를 생성하려면 계약 애플리케이션 바이너리 인터페이스(ABI) 가 필요하다. 아래 보이는 것처럼 우리는 잡음을 줄이기 위해 단순화된 ABI를 사용해 예제를 만들것이다.
+
+#### Web3.py 예시 {#web3py-example}
+
+먼저, [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) 파이썬 라이브러리를 설치했는지 확인하세요.
+
+```
+pip install web3
+```
+
+```python
+from web3 import Web3
+
+
+w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com"))
+
+dai_token_addr = "0x6B175474E89094C44Da98b954EedeAC495271d0F" # DAI
+weth_token_addr = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" # Wrapped ether (WETH)
+
+acc_address = "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11" # Uniswap V2: DAI 2
+
+# 이것은 ERC-20 토큰 계약의 단순화된 계약 애플리케이션 바이너리 인터페이스(ABI)입니다.
+# balanceOf(address), decimals(), symbol() 및 totalSupply() 메서드만 노출합니다.
+simplified_abi = [
+ {
+ 'inputs': [{'internalType': 'address', 'name': 'account', 'type': 'address'}],
+ 'name': 'balanceOf',
+ 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
+ 'stateMutability': 'view', 'type': 'function', 'constant': True
+ },
+ {
+ 'inputs': [],
+ 'name': 'decimals',
+ 'outputs': [{'internalType': 'uint8', 'name': '', 'type': 'uint8'}],
+ 'stateMutability': 'view', 'type': 'function', 'constant': True
+ },
+ {
+ 'inputs': [],
+ 'name': 'symbol',
+ 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}],
+ 'stateMutability': 'view', 'type': 'function', 'constant': True
+ },
+ {
+ 'inputs': [],
+ 'name': 'totalSupply',
+ 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
+ 'stateMutability': 'view', 'type': 'function', 'constant': True
+ }
+]
+
+dai_contract = w3.eth.contract(address=w3.to_checksum_address(dai_token_addr), abi=simplified_abi)
+symbol = dai_contract.functions.symbol().call()
+decimals = dai_contract.functions.decimals().call()
+totalSupply = dai_contract.functions.totalSupply().call() / 10**decimals
+addr_balance = dai_contract.functions.balanceOf(acc_address).call() / 10**decimals
+
+# DAI
+print("===== %s =====" % symbol)
+print("Total Supply:", totalSupply)
+print("Addr Balance:", addr_balance)
+
+weth_contract = w3.eth.contract(address=w3.to_checksum_address(weth_token_addr), abi=simplified_abi)
+symbol = weth_contract.functions.symbol().call()
+decimals = weth_contract.functions.decimals().call()
+totalSupply = weth_contract.functions.totalSupply().call() / 10**decimals
+addr_balance = weth_contract.functions.balanceOf(acc_address).call() / 10**decimals
+
+# WETH
+print("===== %s =====" % symbol)
+print("Total Supply:", totalSupply)
+print("Addr Balance:", addr_balance)
+```
+
+## 알려진 문제점 {#erc20-issues}
+
+### ERC-20 토큰 수신 문제 {#reception-issue}
+
+**2024년 6월 20일 기준, 이 문제로 인해 최소 83,656,418달러 상당의 ERC-20 토큰이 손실되었습니다. 아래 목록에 명시된 대로 표준 외에 추가적인 제한 사항을 구현하지 않는 한 순수한 ERC-20 구현은 이 문제에 취약하다는 점에 유의하세요.**
+
+ERC-20 토큰이 ERC-20 토큰을 처리하도록 설계되지 않은 스마트 계약으로 전송되면, 해당 토큰은 영구적으로 손실될 수 있습니다. 이는 수신 계약이 들어오는 토큰을 인식하거나 응답할 수 있는 기능이 없기 때문에 발생하며, ERC-20 표준에는 수신 계약에 들어오는 토큰을 알리는 메커니즘이 없습니다. 이 문제는 다음과 같은 방식으로 발생합니다:
+
+1. 토큰 전송 메커니즘
+
+- ERC-20 토큰은 transfer 또는 transferFrom 함수를 사용하여 전송됩니다.
+ - 사용자가 이러한 함수를 사용하여 토큰을 계약 주소로 전송할 때, 수신 계약이 토큰을 처리하도록 설계되었는지와 상관없이 토큰은 전송됩니다.
+
+2. 알림의 부재
+ - 수신 계약은 토큰이 전송되었다는 알림이나 콜백을 받지 않습니다.
+ - 수신 계약에 토큰을 처리할 메커니즘(예: 폴백 함수나 토큰 수신을 관리하는 전용 함수)이 없는 경우, 토큰은 사실상 계약의 주소에 갇히게 됩니다.
+3. 내장된 처리 없음
+ - ERC-20 표준은 수신 계약이 구현해야 할 필수 기능을 포함하지 않으므로, 많은 계약이 들어오는 토큰을 적절히 관리할 수 없는 상황이 발생합니다.
+
+**가능한 해결책**
+
+ERC-20으로 이 문제를 완전히 방지할 수는 없지만, 최종 사용자의 토큰 손실 가능성을 크게 줄일 수 있는 방법들이 있습니다.
+
+- 가장 흔한 문제는 사용자가 토큰 계약 주소 자체로 토큰을 보내는 경우입니다(예: USDT 토큰 계약 주소로 USDT를 예치하는 경우). `transfer(..)` 함수를 제한하여 이러한 전송 시도를 되돌리는 것을 권장합니다. `transfer(..)` 함수의 구현 내에 `require(_to != address(this));` 확인을 추가하는 것을 고려하세요.
+- 일반적으로 `transfer(..)` 함수는 계약에 토큰을 예치하기 위해 설계되지 않았습니다. `approve(..)` & transferFrom(..)`패턴은 대신 ERC-20 토큰을 계약에 예치하는 데 사용됩니다. 전송 함수를 제한하여 이를 통해 어떤 계약에도 토큰을 예치하는 것을 허용하지 않도록 할 수 있지만,`trasnfer(..)` 함수를 사용하여 계약에 토큰을 예치할 수 있다고 가정하는 계약(예: Uniswap 유동성 풀)과의 호환성을 깨뜨릴 수 있습니다.
+- 계약이 어떠한 토큰도 받지 않도록 되어 있더라도 ERC-20 토큰이 계약에 들어올 수 있다고 항상 가정하세요. 수신자 측에서 우발적인 예치를 방지하거나 거부할 방법은 없습니다. 우발적으로 예치된 ERC-20 토큰을 추출할 수 있는 함수를 구현하는 것을 권장합니다.
+- 대안 토큰 표준 사용을 고려해 보세요.
+
+이 문제에서 [ERC-223](/developers/docs/standards/tokens/erc-223) 또는 [ERC-1363](/developers/docs/standards/tokens/erc-1363)과 같은 일부 대안 표준이 나왔습니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [EIP-20: ERC-20 토큰 표준](https://eips.ethereum.org/EIPS/eip-20)
+- [OpenZeppelin - 토큰](https://docs.openzeppelin.com/contracts/3.x/tokens#ERC20)
+- [OpenZeppelin - ERC-20 구현](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)
+- [Alchemy - Solidity ERC20 토큰 가이드](https://www.alchemy.com/overviews/erc20-solidity)
+
+## 기타 대체 가능한 토큰 표준 {#fungible-token-standards}
+
+- [ERC-223](/developers/docs/standards/tokens/erc-223)
+- [ERC-1363](/developers/docs/standards/tokens/erc-1363)
+- [ERC-777](/developers/docs/standards/tokens/erc-777)
+- [ERC-4626 - 토큰화된 금고](/developers/docs/standards/tokens/erc-4626)
diff --git a/public/content/translations/ko/developers/docs/standards/tokens/erc-223/index.md b/public/content/translations/ko/developers/docs/standards/tokens/erc-223/index.md
new file mode 100644
index 00000000000..8b6aaed3d95
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/standards/tokens/erc-223/index.md
@@ -0,0 +1,197 @@
+---
+title: "ERC-223 토큰 표준"
+description: "ERC-223 대체 가능 토큰 표준에 대한 개요, 작동 방식 및 ERC-20과의 비교."
+lang: ko
+---
+
+## 소개 {#introduction}
+
+### ERC-223은 무엇인가요? {#what-is-erc223}
+
+ERC-223은 ERC-20 표준과 유사한 대체 가능 토큰 표준입니다. 주요 차이점은 ERC-223이 토큰 API뿐만 아니라 발신자에서 수신자로 토큰을 전송하는 로직도 정의한다는 것입니다. 수신자 측에서 토큰 전송을 처리할 수 있는 통신 모델을 도입합니다.
+
+### ERC-20과의 차이점 {#erc20-differences}
+
+ERC-223은 ERC-20의 몇 가지 한계를 해결하고 토큰 계약과 토큰을 받을 수 있는 계약 간의 새로운 상호 작용 방법을 도입합니다. ERC-20에서는 불가능하지만 ERC-223에서는 가능한 몇 가지 사항이 있습니다.
+
+- 수신자 측에서의 토큰 전송 처리: 수신자는 ERC-223 토큰이 입금되고 있음을 감지할 수 있습니다.
+- 부적절하게 전송된 토큰 거부: 사용자가 토큰을 받지 않아야 하는 계약에 ERC-223 토큰을 보내는 경우, 해당 계약은 트랜잭션을 거부하여 토큰 손실을 방지할 수 있습니다.
+- 전송 시 메타데이터: ERC-223 토큰은 메타데이터를 포함할 수 있어 토큰 트랜잭션에 임의의 정보를 첨부할 수 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+- [계정](/developers/docs/accounts)
+- [스마트 계약](/developers/docs/smart-contracts/)
+- [토큰 표준](/developers/docs/standards/tokens/)
+- [ERC-20](/developers/docs/standards/tokens/erc-20/)
+
+## 본문 {#body}
+
+ERC-223은 스마트 계약 내의 토큰을 위한 API를 구현하는 토큰 표준입니다. 또한 ERC-223 토큰을 받도록 되어 있는 계약을 위한 API를 선언합니다. ERC-223 수신자 API를 지원하지 않는 계약은 ERC-223 토큰을 받을 수 없어 사용자 실수를 방지합니다.
+
+스마트 계약이 다음 메서드와 이벤트를 구현하면 ERC-223 호환 토큰 계약이라고 할 수 있습니다. 배포되면 이더리움에서 생성된 토큰을 추적할 책임이 있습니다.
+
+계약이 이러한 함수만 가질 의무는 없으며, 개발자는 다른 토큰 표준의 다른 기능을 이 계약에 추가할 수 있습니다. 예를 들어, `approve` 및 `transferFrom` 함수는 ERC-223 표준의 일부는 아니지만 필요한 경우 구현할 수 있습니다.
+
+[EIP-223](https://eips.ethereum.org/EIPS/eip-223)에서:
+
+### 메서드 {#methods}
+
+ERC-223 토큰은 다음 메서드를 구현해야 합니다.
+
+```solidity
+function name() public view returns (string)
+function symbol() public view returns (string)
+function decimals() public view returns (uint8)
+function totalSupply() public view returns (uint256)
+function balanceOf(address _owner) public view returns (uint256 balance)
+function transfer(address _to, uint256 _value) public returns (bool success)
+function transfer(address _to, uint256 _value, bytes calldata _data) public returns (bool success)
+```
+
+ERC-223 토큰을 받도록 되어 있는 계약은 다음 메서드를 구현해야 합니다.
+
+```solidity
+function tokenReceived(address _from, uint _value, bytes calldata _data)
+```
+
+`tokenReceived(..)` 함수를 구현하지 않는 계약으로 ERC-223 토큰을 보내면 전송이 실패해야 하며, 토큰이 발신자의 잔액에서 이동해서는 안 됩니다.
+
+### 이벤트 {#events}
+
+```solidity
+event Transfer(address indexed _from, address indexed _to, uint256 _value, bytes calldata _data)
+```
+
+### 예시 {#examples}
+
+ERC-223 토큰의 API는 ERC-20과 유사하므로 UI 개발 관점에서 차이가 없습니다. 여기서 유일한 예외는 ERC-223 토큰에 `approve` + `transferFrom` 함수가 없을 수 있다는 것입니다. 이 함수들은 이 표준에서 선택 사항이기 때문입니다.
+
+#### 솔리디티 예제 {#solidity-example}
+
+다음 예제는 기본 ERC-223 토큰 계약이 어떻게 작동하는지 보여줍니다.
+
+```solidity
+pragma solidity ^0.8.19;
+abstract contract IERC223Recipient {
+ function tokenReceived(address _from, uint _value, bytes memory _data) public virtual;
+}
+contract VeryBasicERC223Token {
+ event Transfer(address indexed from, address indexed to, uint value, bytes data);
+ string private _name;
+ string private _symbol;
+ uint8 private _decimals;
+ uint256 private _totalSupply;
+ mapping(address => uint256) private balances;
+ function name() public view returns (string memory) { return _name; }
+ function symbol() public view returns (string memory) {return _symbol; }
+ function decimals() public view returns (uint8) { return _decimals; }
+ function totalSupply() public view returns (uint256) { return _totalSupply; }
+ function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; }
+ function isContract(address account) internal view returns (bool) {
+ uint256 size;
+ assembly { size := extcodesize(account) }
+ return size > 0;
+ }
+ function transfer(address _to, uint _value, bytes calldata _data) public returns (bool success){
+ balances[msg.sender] = balances[msg.sender] - _value;
+ balances[_to] = balances[_to] + _value;
+ if(isContract(_to)) {
+ IERC223Recipient(_to).tokenReceived(msg.sender, _value, _data);
+ }
+ emit Transfer(msg.sender, _to, _value, _data);
+ return true;
+ }
+ function transfer(address _to, uint _value) public returns (bool success){
+ bytes memory _empty = hex"00000000";
+ balances[msg.sender] = balances[msg.sender] - _value;
+ balances[_to] = balances[_to] + _value;
+ if(isContract(_to)) {
+ IERC223Recipient(_to).tokenReceived(msg.sender, _value, _empty);
+ }
+ emit Transfer(msg.sender, _to, _value, _empty);
+ return true;
+ }
+}
+```
+
+이제 tokenA가 ERC-223 토큰이라고 가정하고, `tokenA`의 입금을 수락하는 다른 계약을 원합니다. 계약은 tokenA만 수락하고 다른 모든 토큰은 거부해야 합니다. 계약이 tokenA를 받으면 `Deposit()` 이벤트를 발생시키고 내부 `deposits` 변수의 값을 증가시켜야 합니다.
+
+코드는 다음과 같습니다.
+
+```solidity
+contract RecipientContract is IERC223Recipient {
+ event Deposit(address whoSentTheTokens);
+ uint256 deposits = 0;
+ address tokenA; // 우리가 수락하려는 유일한 토큰입니다.
+ function tokenReceived(address _from, uint _value, bytes memory _data) public override
+ {
+ // 이 함수 내에서 다음을 이해하는 것이 중요합니다
+ // msg.sender는 수신 중인 토큰의 주소이며,
+ // msg.value는 대부분의 경우 토큰 계약이 이더를 소유하거나 전송하지 않으므로 항상 0입니다,
+ // _from은 토큰 전송의 발신자이고,
+ // _value는 입금된 토큰의 양입니다.
+ require(msg.sender == tokenA);
+ deposits += _value;
+ emit Deposit(_from);
+ }
+}
+```
+
+## 자주 묻는 질문 {#faq}
+
+### 계약에 tokenB를 보내면 어떻게 될까요? {#sending-tokens}
+
+트랜잭션이 실패하고 토큰 전송이 발생하지 않습니다. 토큰은 발신자의 주소로 반환됩니다.
+
+### 이 계약에 어떻게 입금할 수 있나요? {#contract-deposits}
+
+ERC-223 토큰의 `transfer(address,uint256)` 또는 `transfer(address,uint256,bytes)` 함수를 호출하여 `RecipientContract`의 주소를 지정합니다.
+
+### 이 계약에 ERC-20 토큰을 전송하면 어떻게 될까요? {#erc-20-transfers}
+
+`RecipientContract`에 ERC-20 토큰을 보내면 토큰은 전송되지만, 전송이 인식되지 않습니다(`Deposit()` 이벤트가 발생하지 않으며, deposits 값도 변경되지 않음). 원치 않는 ERC-20 입금은 필터링하거나 방지할 수 없습니다.
+
+### 토큰 입금이 완료된 후 일부 함수를 실행하려면 어떻게 해야 할까요? {#function-execution}
+
+여러 가지 방법이 있습니다. 이 예제에서는 ERC-223 전송을 이더 전송과 동일하게 만드는 방법을 따릅니다.
+
+```solidity
+contract RecipientContract is IERC223Recipient {
+ event Foo();
+ event Bar(uint256 someNumber);
+ address tokenA; // 수락하려는 유일한 토큰입니다.
+ function tokenReceived(address _from, uint _value, bytes memory _data) public override
+ {
+ require(msg.sender == tokenA);
+ address(this).call(_data); // 들어오는 트랜잭션을 처리하고 후속 함수 호출을 수행합니다.
+ }
+ function foo() public
+ {
+ emit Foo();
+ }
+ function bar(uint256 _someNumber) public
+ {
+ emit Bar(_someNumber);
+ }
+}
+```
+
+`RecipientContract`가 ERC-223 토큰을 받으면, 계약은 이더리움 트랜잭션이 트랜잭션 `data`로 함수 호출을 인코딩하는 방식과 동일하게 토큰 트랜잭션의 `_data` 매개변수로 인코딩된 함수를 실행합니다. 자세한 내용은 [데이터 필드](/developers/docs/transactions/#the-data-field)를 읽어보세요.
+
+위 예에서 ERC-223 토큰은 `transfer(address,uin256,bytes calldata _data)` 함수를 사용하여 `RecipientContract`의 주소로 전송되어야 합니다. 데이터 매개변수가 `0xc2985578`(`foo()` 함수의 서명)인 경우, 토큰 입금이 수신된 후 foo() 함수가 호출되고 Foo() 이벤트가 발생합니다.
+
+매개변수는 토큰 전송의 `data`에도 인코딩될 수 있습니다. 예를 들어, `_someNumber`에 12345 값을 사용하여 bar() 함수를 호출할 수 있습니다. 이 경우 `data`는 `0x0423a13200000000000000000000000000000000000000000000000000000000000004d2`여야 합니다. 여기서 `0x0423a132`는 `bar(uint256)` 함수의 서명이고 `00000000000000000000000000000000000000000000000000000000000004d2`는 uint256으로서의 12345입니다.
+
+## 한계 {#limitations}
+
+ERC-223이 ERC-20 표준에서 발견된 여러 문제를 해결하지만, 자체적인 한계도 있습니다.
+
+- 채택 및 호환성: ERC-223은 아직 널리 채택되지 않아 기존 도구 및 플랫폼과의 호환성이 제한될 수 있습니다.
+- 하위 호환성: ERC-223은 ERC-20과 하위 호환되지 않습니다. 즉, 기존 ERC-20 계약 및 도구는 수정 없이는 ERC-223 토큰과 작동하지 않습니다.
+- 가스 비용: ERC-223 전송의 추가 확인 및 기능으로 인해 ERC-20 트랜잭션에 비해 가스 비용이 더 많이 발생할 수 있습니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [EIP-223: ERC-223 토큰 표준](https://eips.ethereum.org/EIPS/eip-223)
+- [초기 ERC-223 제안](https://github.com/ethereum/eips/issues/223)
diff --git a/public/content/translations/ko/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/ko/developers/docs/standards/tokens/erc-4626/index.md
new file mode 100644
index 00000000000..c1945e9b37c
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/standards/tokens/erc-4626/index.md
@@ -0,0 +1,227 @@
+---
+title: "ERC-4626 토큰화된 볼트 표준"
+description: "수익을 내는 볼트를 위한 표준입니다."
+lang: ko
+---
+
+## 소개 {#introduction}
+
+ERC-4626은 수익을 내는 볼트의 기술적 매개변수를 최적화하고 통합하기 위한 표준입니다. 단일 기본 ERC-20 토큰의 지분을 나타내는 토큰화된 수익 볼트를 위한 표준 API를 제공합니다. ERC-4626은 또한 ERC-20을 활용하는 토큰화된 볼트를 위한 선택적 확장의 개요를 설명하며, 토큰 예치, 인출 및 잔액 조회를 위한 기본 기능을 제공합니다.
+
+**수익을 내는 볼트에서 ERC-4626의 역할**
+
+대출 시장, 애그리게이터 및 내재적으로 이자가 발생하는 토큰은 다양한 전략을 실행하여 사용자가 자신의 암호화폐 토큰에 대한 최고의 수익률을 찾을 수 있도록 돕습니다. 이러한 전략은 약간의 변형을 거쳐 수행되며, 이로 인해 오류가 발생하기 쉽거나 개발 리소스가 낭비될 수 있습니다.
+
+수익을 내는 볼트에서 ERC-4626은 보다 일관되고 강력한 구현 패턴을 만들어 개발자의 전문적인 노력을 거의 들이지 않고도 통합 노력을 줄이고 다양한 애플리케이션에서 수익에 대한 액세스를 열어줄 것입니다.
+
+ERC-4626 토큰은 [EIP-4626](https://eips.ethereum.org/EIPS/eip-4626)에 완전히 설명되어 있습니다.
+
+**비동기 볼트 확장(ERC-7540)**
+
+ERC-4626은 한도까지의 원자적 예치 및 상환에 최적화되어 있습니다. 한도에 도달하면 새로운 예치나 상환을 제출할 수 없습니다. 이러한 제한은 볼트와 인터페이스하기 위한 전제 조건으로 비동기 작업 또는 지연이 있는 모든 스마트 계약 시스템(예: 실물 자산 프로토콜, 담보 부족 대출 프로토콜, 교차 체인 대출 프로토콜, 유동 스테이킹 토큰 또는 보험 안전 모듈)에서는 잘 작동하지 않습니다.
+
+ERC-7540은 비동기 사용 사례를 위해 ERC-4626 볼트의 유용성을 확장합니다. 기존 볼트 인터페이스(`deposit`/`withdraw`/`mint`/`redeem`)는 비동기 요청을 처리하기 위해 완전히 활용됩니다.
+
+ERC-7540 확장은 [ERC-7540](https://eips.ethereum.org/EIPS/eip-7540)에 완전히 설명되어 있습니다.
+
+**다중 자산 볼트 확장(ERC-7575)**
+
+ERC-4626에서 지원하지 않는 한 가지 누락된 사용 사례는 유동성 공급자(LP) 토큰과 같이 여러 자산 또는 진입점을 가진 볼트입니다. 이들은 일반적으로 ERC-4626 자체가 ERC-20이어야 한다는 요구사항으로 인해 다루기 어렵거나 규정을 준수하지 않습니다.
+
+ERC-7575는 ERC-4626 구현에서 ERC-20 토큰 구현을 외부화하여 다중 자산을 가진 볼트에 대한 지원을 추가합니다.
+
+ERC-7575 확장은 [ERC-7575](https://eips.ethereum.org/EIPS/eip-7575)에 완전히 설명되어 있습니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [토큰 표준](/developers/docs/standards/tokens/) 및 [ERC-20](/developers/docs/standards/tokens/erc-20/)에 대해 읽어보시는 것을 추천합니다.
+
+## ERC-4626 기능 및 특징: {#body}
+
+### 메서드 {#methods}
+
+#### 자산 {#asset}
+
+```solidity
+function asset() public view returns (address assetTokenAddress)
+```
+
+이 함수는 회계, 예치, 인출을 위해 볼트에 사용되는 기본 토큰의 주소를 반환합니다.
+
+#### 총자산 {#totalassets}
+
+```solidity
+function totalAssets() public view returns (uint256)
+```
+
+이 함수는 볼트가 보유한 기본 자산의 총액을 반환합니다.
+
+#### 지분으로 전환 {#convertoshares}
+
+```solidity
+function convertToShares(uint256 assets) public view returns (uint256 shares)
+```
+
+이 함수는 제공된 `assets`의 양에 대해 볼트가 교환할 `shares`의 양을 반환합니다.
+
+#### 자산으로 전환 {#convertoassets}
+
+```solidity
+function convertToAssets(uint256 shares) public view returns (uint256 assets)
+```
+
+이 함수는 제공된 `shares`의 양에 대해 볼트가 교환할 `assets`의 양을 반환합니다.
+
+#### 최대 예치 {#maxdeposit}
+
+```solidity
+function maxDeposit(address receiver) public view returns (uint256 maxAssets)
+```
+
+이 함수는 단일 [`deposit`](#deposit) 호출에서 예치할 수 있는 기본 자산의 최대 금액을 반환하며, 지분은 `receiver`를 위해 발행됩니다.
+
+#### 예치 미리보기 {#previewdeposit}
+
+```solidity
+function previewDeposit(uint256 assets) public view returns (uint256 shares)
+```
+
+이 함수를 통해 사용자는 현재 블록에서 자신의 예치가 미치는 영향을 시뮬레이션할 수 있습니다.
+
+#### 예치 {#deposit}
+
+```solidity
+function deposit(uint256 assets, address receiver) public returns (uint256 shares)
+```
+
+이 함수는 기본 토큰의 `assets`를 볼트에 예치하고 `shares`의 소유권을 `receiver`에게 부여합니다.
+
+#### 최대 발행 {#maxmint}
+
+```solidity
+function maxMint(address receiver) public view returns (uint256 maxShares)
+```
+
+이 함수는 단일 [`mint`](#mint) 호출에서 발행할 수 있는 최대 지분 금액을 반환하며, 지분은 `receiver`를 위해 발행됩니다.
+
+#### 발행 미리보기 {#previewmint}
+
+```solidity
+function previewMint(uint256 shares) public view returns (uint256 assets)
+```
+
+이 함수를 통해 사용자는 현재 블록에서 자신의 발행이 미치는 영향을 시뮬레이션할 수 있습니다.
+
+#### 발행 {#mint}
+
+```solidity
+function mint(uint256 shares, address receiver) public returns (uint256 assets)
+```
+
+이 함수는 기본 토큰의 `assets`를 예치하여 `receiver`에게 정확히 `shares`만큼의 볼트 지분을 발행합니다.
+
+#### 최대 인출 {#maxwithdraw}
+
+```solidity
+function maxWithdraw(address owner) public view returns (uint256 maxAssets)
+```
+
+이 함수는 단일 [`withdraw`](#withdraw) 호출로 `owner`의 잔액에서 인출할 수 있는 기본 자산의 최대 금액을 반환합니다.
+
+#### 인출 미리보기 {#previewwithdraw}
+
+```solidity
+function previewWithdraw(uint256 assets) public view returns (uint256 shares)
+```
+
+이 함수를 통해 사용자는 현재 블록에서 자신의 인출이 미치는 영향을 시뮬레이션할 수 있습니다.
+
+#### 인출 {#withdraw}
+
+```solidity
+function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)
+```
+
+이 함수는 `owner`로부터 `shares`를 소각하고 볼트에서 `receiver`에게 정확히 `assets` 토큰을 보냅니다.
+
+#### 최대 상환 {#maxredeem}
+
+```solidity
+function maxRedeem(address owner) public view returns (uint256 maxShares)
+```
+
+이 함수는 [`redeem`](#redeem) 호출을 통해 `owner`의 잔액에서 상환할 수 있는 최대 지분 금액을 반환합니다.
+
+#### 상환 미리보기 {#previewredeem}
+
+```solidity
+function previewRedeem(uint256 shares) public view returns (uint256 assets)
+```
+
+이 함수를 통해 사용자는 현재 블록에서 자신의 상환이 미치는 영향을 시뮬레이션할 수 있습니다.
+
+#### 상환 {#redeem}
+
+```solidity
+function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)
+```
+
+이 함수는 `owner`로부터 특정 수량의 `shares`를 상환하고 볼트에서 `receiver`에게 기본 토큰의 `assets`를 보냅니다.
+
+#### 총 공급량 {#totalsupply}
+
+```solidity
+function totalSupply() public view returns (uint256)
+```
+
+유통 중인 상환되지 않은 볼트 지분의 총 수량을 반환합니다.
+
+#### 잔액 {#balanceof}
+
+```solidity
+function balanceOf(address owner) public view returns (uint256)
+```
+
+`owner`가 현재 보유하고 있는 볼트 지분의 총량을 반환합니다.
+
+### 인터페이스 맵 {#mapOfTheInterface}
+
+
+
+### 이벤트 {#events}
+
+#### 예치 이벤트
+
+[`mint`](#mint) 및 [`deposit`](#deposit) 메서드를 통해 토큰이 볼트에 예치될 때 **반드시** 방출되어야 합니다.
+
+```solidity
+event Deposit(
+ address indexed sender,
+ address indexed owner,
+ uint256 assets,
+ uint256 shares
+)
+```
+
+여기서 `sender`는 `assets`를 `shares`로 교환하고 해당 `shares`를 `owner`에게 전송한 사용자입니다.
+
+#### 인출 이벤트
+
+[`redeem`](#redeem) 또는 [`withdraw`](#withdraw) 메서드에서 예금자가 볼트에서 지분을 인출할 때 **반드시** 방출되어야 합니다.
+
+```solidity
+event Withdraw(
+ address indexed sender,
+ address indexed receiver,
+ address indexed owner,
+ uint256 assets,
+ uint256 shares
+)
+```
+
+여기서 `sender`는 인출을 트리거하고 `owner`가 소유한 `shares`를 `assets`로 교환한 사용자입니다. `receiver`는 인출된 `assets`를 받은 사용자입니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [EIP-4626: 토큰화된 볼트 표준](https://eips.ethereum.org/EIPS/eip-4626)
+- [ERC-4626: GitHub 리포지토리](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol)
diff --git a/public/content/translations/ko/developers/docs/standards/tokens/erc-721/index.md b/public/content/translations/ko/developers/docs/standards/tokens/erc-721/index.md
new file mode 100644
index 00000000000..2f701439210
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/standards/tokens/erc-721/index.md
@@ -0,0 +1,248 @@
+---
+title: "ERC-721 대체 불가능 토큰 표준"
+description: "이더리움에서 고유한 디지털 자산을 나타내는 대체 불가 토큰(NFT)의 표준인 ERC-721에 대해 알아보세요."
+lang: ko
+---
+
+## 소개 {#introduction}
+
+**대체 불가능 토큰이란 무엇인가요?**
+
+대체 불가능 토큰(NFT)은 무언가나 누군가를 독특한 방식으로 식별하는 데 사용됩니다. 이 유형의 토큰은 수집품, 접근 키, 복권, 콘서트 및 스포츠 경기의 번호 매겨진 좌석 등을 제공하는 플랫폼에서 사용하기에 적합합니다. 이 특별한 유형의 토큰은 놀라운 가능성을 가지고 있어 ERC-721이라는 적절한 표준이 필요합니다!
+
+**ERC-721은 무엇인가요?**
+
+ERC-721은 NFT 표준을 도입하였으며, 즉, 이 유형의 토큰은 고유하며 같은 스마트 계약의 다른 토큰과는 나이나 희귀성 또는 시각적인 요소 등으로 인해 다른 가치를 가질 수 있습니다.
+잠깐, 시각적인 요소라고요?
+
+네! 모든 NFT에는 `tokenId`라는 `uint256` 변수가 있으므로 모든 ERC-721 계약의 경우
+`contract address, uint256 tokenId` 쌍은 전역적으로 고유해야 합니다. 즉, 탈중앙화앱은 `tokenId`를 입력으로 사용하고 좀비, 무기, 기술 또는 놀라운 고양이 같은 멋진 것을 이미지로 출력하는 "변환기"를 가질 수 있습니다!
+
+## 필수 구성 요소 {#prerequisites}
+
+- [계정](/developers/docs/accounts/)
+- [스마트 계약](/developers/docs/smart-contracts/)
+- [토큰 표준](/developers/docs/standards/tokens/)
+
+## 본문 {#body}
+
+ERC-721(Ethereum Request for Comments 721)은 2018년 1월 William Entriken, Dieter Shirley, Jacob Evans, Nastassia Sachs가 제안한 대체 불가능 토큰 표준으로, 스마트 계약 내에서 토큰을 위한 API를 구현합니다.
+
+이 표준은 한 계정에서 다른 계정으로 토큰을 전송하고, 계정의 현재 토큰 잔액을 확인하고, 특정 토큰의 소유자를 확인하며 네트워크에서 사용 가능한 토큰의 총 공급량을 가져오는 기능을 제공합니다.
+또한, 다른 계정이 특정 계정에서 일정량의 토큰을 이동하도록 승인하는 기능도 포함되어 있습니다.
+
+스마트 계약이 다음 메서드와 이벤트를 구현하면 ERC-721 대체 불가능 토큰 계약이라 부를 수 있으며, 배포되면 이더리움 상에서 생성된 토큰을 추적하는 책임을 갖게 됩니다.
+
+[EIP-721](https://eips.ethereum.org/EIPS/eip-721)에서 발췌:
+
+### 메서드 {#methods}
+
+```solidity
+ function balanceOf(address _owner) external view returns (uint256);
+ function ownerOf(uint256 _tokenId) external view returns (address);
+ function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
+ function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
+ function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
+ function approve(address _approved, uint256 _tokenId) external payable;
+ function setApprovalForAll(address _operator, bool _approved) external;
+ function getApproved(uint256 _tokenId) external view returns (address);
+ function isApprovedForAll(address _owner, address _operator) external view returns (bool);
+```
+
+### 이벤트 {#events}
+
+```solidity
+ event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
+ event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
+ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
+```
+
+### 예시 {#web3py-example}
+
+표준이 이더리움의 모든 ERC-721 토큰 계약을 간단하게 검사하는 데 얼마나 중요한지 살펴보겠습니다.
+모든 ERC-721 토큰에 대한 인터페이스를 생성하려면 계약 애플리케이션 바이너리 인터페이스(ABI)만 있으면 됩니다. 아래 보이는 것처럼 우리는 잡음을 줄이기 위해 단순화된 ABI를 사용해 예제를 만들것이다.
+
+#### Web3.py 예시 {#web3py-example}
+
+먼저, [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) 파이썬 라이브러리를 설치했는지 확인하세요.
+
+```
+pip install web3
+```
+
+```python
+from web3 import Web3
+from web3._utils.events import get_event_data
+
+
+w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com"))
+
+ck_token_addr = "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d" # 크립토키티 계약
+
+acc_address = "0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C" # 크립토키티 판매 경매
+
+# 이것은 ERC-721 NFT 계약의 단순화된 계약 애플리케이션 바이너리 인터페이스(ABI)입니다.
+# balanceOf(address), name(), ownerOf(tokenId), symbol(), totalSupply() 메서드만 노출합니다.
+simplified_abi = [
+ {
+ 'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}],
+ 'name': 'balanceOf',
+ 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
+ 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True
+ },
+ {
+ 'inputs': [],
+ 'name': 'name',
+ 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}],
+ 'stateMutability': 'view', 'type': 'function', 'constant': True
+ },
+ {
+ 'inputs': [{'internalType': 'uint256', 'name': 'tokenId', 'type': 'uint256'}],
+ 'name': 'ownerOf',
+ 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}],
+ 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True
+ },
+ {
+ 'inputs': [],
+ 'name': 'symbol',
+ 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}],
+ 'stateMutability': 'view', 'type': 'function', 'constant': True
+ },
+ {
+ 'inputs': [],
+ 'name': 'totalSupply',
+ 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
+ 'stateMutability': 'view', 'type': 'function', 'constant': True
+ },
+]
+
+ck_extra_abi = [
+ {
+ 'inputs': [],
+ 'name': 'pregnantKitties',
+ 'outputs': [{'name': '', 'type': 'uint256'}],
+ 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True
+ },
+ {
+ 'inputs': [{'name': '_kittyId', 'type': 'uint256'}],
+ 'name': 'isPregnant',
+ 'outputs': [{'name': '', 'type': 'bool'}],
+ 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True
+ }
+]
+
+ck_contract = w3.eth.contract(address=w3.to_checksum_address(ck_token_addr), abi=simplified_abi+ck_extra_abi)
+name = ck_contract.functions.name().call()
+symbol = ck_contract.functions.symbol().call()
+kitties_auctions = ck_contract.functions.balanceOf(acc_address).call()
+print(f"{name} [{symbol}] 경매 중인 NFT: {kitties_auctions}")
+
+pregnant_kitties = ck_contract.functions.pregnantKitties().call()
+print(f"{name} [{symbol}] 임신 중인 NFT: {pregnant_kitties}")
+
+# 전송 이벤트 ABI를 사용하여 전송된 키티에 대한 정보 얻기
+tx_event_abi = {
+ 'anonymous': False,
+ 'inputs': [
+ {'indexed': False, 'name': 'from', 'type': 'address'},
+ {'indexed': False, 'name': 'to', 'type': 'address'},
+ {'indexed': False, 'name': 'tokenId', 'type': 'uint256'}],
+ 'name': 'Transfer',
+ 'type': 'event'
+}
+
+# 로그를 필터링하려면 이벤트의 서명이 필요합니다
+event_signature = w3.keccak(text="Transfer(address,address,uint256)").hex()
+
+logs = w3.eth.get_logs({
+ "fromBlock": w3.eth.block_number - 120,
+ "address": w3.to_checksum_address(ck_token_addr),
+ "topics": [event_signature]
+})
+
+# 참고:
+# - 전송 이벤트가 반환되지 않으면 블록 수를 120개 이상으로 늘립니다.
+# - 전송 이벤트를 찾지 못한 경우 다음에서 tokenId를 얻을 수도 있습니다.
+# https://etherscan.io/address/0x06012c8cf97BEaD5deAe237070F9587f8E7A266d#events
+# 이벤트 로그를 확장하고 "tokenId" 인수를 복사하려면 클릭하십시오.
+recent_tx = [get_event_data(w3.codec, tx_event_abi, log)["args"] for log in logs]
+
+if recent_tx:
+ kitty_id = recent_tx[0]['tokenId'] # 위 링크에서 "tokenId"를 여기에 붙여넣습니다.
+ is_pregnant = ck_contract.functions.isPregnant(kitty_id).call()
+ print(f"{name} [{symbol}] NFT {kitty_id} 임신 여부: {is_pregnant}")
+```
+
+CryptoKitties 계약은 표준 이벤트 외에도 몇 가지 흥미로운 이벤트가 있습니다.
+
+그중 `Pregnant`와 `Birth` 두 가지를 확인해 보겠습니다.
+
+```python
+# Pregnant 및 Birth 이벤트 ABI를 사용하여 새로운 키티에 대한 정보 얻기
+ck_extra_events_abi = [
+ {
+ 'anonymous': False,
+ 'inputs': [
+ {'indexed': False, 'name': 'owner', 'type': 'address'},
+ {'indexed': False, 'name': 'matronId', 'type': 'uint256'},
+ {'indexed': False, 'name': 'sireId', 'type': 'uint256'},
+ {'indexed': False, 'name': 'cooldownEndBlock', 'type': 'uint256'}],
+ 'name': 'Pregnant',
+ 'type': 'event'
+ },
+ {
+ 'anonymous': False,
+ 'inputs': [
+ {'indexed': False, 'name': 'owner', 'type': 'address'},
+ {'indexed': False, 'name': 'kittyId', 'type': 'uint256'},
+ {'indexed': False, 'name': 'matronId', 'type': 'uint256'},
+ {'indexed': False, 'name': 'sireId', 'type': 'uint256'},
+ {'indexed': False, 'name': 'genes', 'type': 'uint256'}],
+ 'name': 'Birth',
+ 'type': 'event'
+ }]
+
+# 로그를 필터링하려면 이벤트의 서명이 필요합니다
+ck_event_signatures = [
+ w3.keccak(text="Pregnant(address,uint256,uint256,uint256)").hex(),
+ w3.keccak(text="Birth(address,uint256,uint256,uint256,uint256)").hex(),
+]
+
+# 다음은 Pregnant 이벤트입니다:
+# - https://etherscan.io/tx/0xc97eb514a41004acc447ac9d0d6a27ea6da305ac8b877dff37e49db42e1f8cef#eventlog
+pregnant_logs = w3.eth.get_logs({
+ "fromBlock": w3.eth.block_number - 120,
+ "address": w3.to_checksum_address(ck_token_addr),
+ "topics": [ck_event_signatures[0]]
+})
+
+recent_pregnants = [get_event_data(w3.codec, ck_extra_events_abi[0], log)["args"] for log in pregnant_logs]
+
+# 다음은 Birth 이벤트입니다:
+# - https://etherscan.io/tx/0x3978028e08a25bb4c44f7877eb3573b9644309c044bf087e335397f16356340a
+birth_logs = w3.eth.get_logs({
+ "fromBlock": w3.eth.block_number - 120,
+ "address": w3.to_checksum_address(ck_token_addr),
+ "topics": [ck_event_signatures[1]]
+})
+
+recent_births = [get_event_data(w3.codec, ck_extra_events_abi[1], log)["args"] for log in birth_logs]
+```
+
+## 인기 있는 NFT {#popular-nfts}
+
+- [Etherscan NFT 추적기](https://etherscan.io/nft-top-contracts)는 전송량을 기준으로 이더리움의 상위 NFT를 나열합니다.
+- [CryptoKitties](https://www.cryptokitties.co/)는 우리가 CryptoKitties라고 부르는 번식 가능하고 수집 가능하며 아주 사랑스러운 생물을 중심으로 하는 게임입니다.
+- [Sorare](https://sorare.com/)는 한정판 수집품을 수집하고, 팀을 관리하며 상품을 획득하기 위해 경쟁하는 글로벌 판타지 축구 게임입니다.
+- [이더리움 이름 서비스(ENS)](https://ens.domains/)는 간단하고 사람이 읽을 수 있는 이름을 사용하여 블록체인 온체인과 오프체인 리소스의 주소를 지정하는 안전하고 분산된 방법을 제공합니다.
+- [POAP](https://poap.xyz)는 이벤트에 참석하거나 특정 작업을 완료하는 사람들에게 무료 NFT를 제공합니다. POAP는 무료로 생성 및 배포할 수 있습니다.
+- [Unstoppable Domains](https://unstoppabledomains.com/)는 샌프란시스코에 본사를 둔 블록체인 도메인 구축 회사입니다. 블록체인 도메인은 암호화폐 주소를 사람이 읽을 수 있는 이름으로 대체하며, 검열 저항성 웹사이트를 활성화하는 데 사용할 수 있습니다.
+- [Gods Unchained Cards](https://godsunchained.com/)는 NFT를 사용하여 게임 내 자산에 대한 실제 소유권을 부여하는 이더리움 블록체인 기반의 TCG입니다.
+- [Bored Ape Yacht Club](https://boredapeyachtclub.com)은 10,000개의 고유한 NFT 컬렉션으로, 증명할 수 있는 희귀한 예술 작품일 뿐만 아니라 클럽의 멤버십 토큰 역할을 하며, 커뮤니티의 노력의 결과로 시간이 지남에 따라 증가하는 회원 특전과 혜택을 제공합니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [EIP-721: ERC-721 대체 불가 토큰 표준](https://eips.ethereum.org/EIPS/eip-721)
+- [OpenZeppelin - ERC-721 문서](https://docs.openzeppelin.com/contracts/3.x/erc721)
+- [OpenZeppelin - ERC-721 구현](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol)
+- [Alchemy NFT API](https://www.alchemy.com/docs/reference/nft-api-quickstart)
diff --git a/public/content/translations/ko/developers/docs/standards/tokens/erc-777/index.md b/public/content/translations/ko/developers/docs/standards/tokens/erc-777/index.md
new file mode 100644
index 00000000000..4c898125d7a
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/standards/tokens/erc-777/index.md
@@ -0,0 +1,45 @@
+---
+title: "ERC-777 토큰 표준"
+description: "훅(hook)을 통해 개선된 대체 가능한 토큰 표준인 ERC-777에 대해 알아보세요. 단, 보안을 위해 ERC-20 사용을 권장합니다."
+lang: ko
+---
+
+## 경고 {#warning}
+
+**ERC-777은 [다양한 형태의 공격에 취약](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/2620)하기 때문에 제대로 구현하기가 어렵습니다. 대신 [ERC-20](/developers/docs/standards/tokens/erc-20/)을 사용하는 것이 좋습니다.** 이 페이지는 역사적 기록물로 남아 있습니다.
+
+## 소개? {#introduction}
+
+ERC-777은 기존의 [ERC-20](/developers/docs/standards/tokens/erc-20/) 표준을 개선한 대체 가능한 토큰 표준입니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해하려면 먼저 [ERC-20](/developers/docs/standards/tokens/erc-20/)에 대해 읽어보는 것을 권장합니다.
+
+## ERC-777은 ERC-20에 비해 어떤 개선점을 제안하나요? {#-erc-777-vs-erc-20}
+
+ERC-777은 ERC-20에 비해 다음과 같은 개선점을 제공합니다.
+
+### 훅 {#hooks}
+
+훅은 스마트 계약의 코드에 기술된 함수입니다. 훅은 계약을 통해 토큰을 보내거나 받을 때 호출됩니다. 이를 통해 스마트 계약은 수신 또는 발신 토큰에 반응할 수 있습니다.
+
+훅은 [ERC-1820](https://eips.ethereum.org/EIPS/eip-1820) 표준을 사용하여 등록되고 발견됩니다.
+
+#### 훅의 장점은 무엇인가요? {#why-are-hooks-great}
+
+1. 이를 위해 이중 호출(`approve`/`transferFrom`)이 필요한 [ERC-20](https://eips.ethereum.org/EIPS/eip-20)과 달리 훅은 단일 트랜잭션으로 계약에 토큰을 보내고 계약에 알림을 보낼 수 있습니다.
+2. 훅을 등록하지 않은 계약은 ERC-777과 호환되지 않습니다. 수신 계약이 훅을 등록하지 않은 경우 송신 계약은 트랜잭션을 중단합니다. 이는 비-ERC-777 스마트 계약으로의 의도치 않은 전송을 방지합니다.
+3. 훅은 트랜잭션을 거부할 수 있습니다.
+
+### 소수 자릿수 {#decimals}
+
+이 표준은 또한 ERC-20에서 발생한 `decimals` 관련 혼란을 해결합니다. 이러한 명확성은 개발자 경험을 개선합니다.
+
+### ERC-20과의 하위 호환성 {#backwards-compatibility-with-erc-20}
+
+ERC-777 계약은 마치 ERC-20 계약인 것처럼 상호작용할 수 있습니다.
+
+## 추가 정보 {#further-reading}
+
+[EIP-777: 토큰 표준](https://eips.ethereum.org/EIPS/eip-777)
diff --git a/public/content/translations/ko/developers/docs/standards/tokens/index.md b/public/content/translations/ko/developers/docs/standards/tokens/index.md
new file mode 100644
index 00000000000..dd45932ecb8
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/standards/tokens/index.md
@@ -0,0 +1,41 @@
+---
+title: "토큰 표준"
+description: "대체 가능 토큰 및 대체 불가능 토큰을 위한 ERC-20, ERC-721, ERC-1155를 비롯한 이더리움 토큰 표준을 살펴보세요."
+lang: ko
+incomplete: true
+---
+
+## 소개 {#introduction}
+
+많은 이더리움 개발 표준이 토큰 인터페이스에 초점을 맞추고 있습니다. 이러한 표준은 스마트 계약이 구성 가능성을 유지하도록 도와주므로, 새로운 프로젝트가 토큰을 발행할 때 기존 탈중앙화 거래소 및 애플리케이션과의 호환성을 유지할 수 있습니다.
+
+토큰 표준은 이더리움 생태계 전반에서 토큰이 어떻게 작동하고 상호작용하는지를 정의합니다. 이는 개발자가 불필요한 수고를 덜고 더 쉽게 구축할 수 있도록 하며, 토큰이 지갑, 거래소 및 디파이 플랫폼과 원활하게 작동하도록 보장합니다. 게임, 거버넌스 또는 기타 사용 사례 등에서 이러한 표준은 일관성을 제공하고 이더리움의 상호 연결성을 더욱 강화합니다.
+
+## 필수 구성 요소 {#prerequisites}
+
+- [이더리움 개발 표준](/developers/docs/standards/)
+- [스마트 계약](/developers/docs/smart-contracts/)
+
+## 토큰 표준 {#token-standards}
+
+다음은 이더리움에서 가장 인기 있는 토큰 표준 중 일부입니다:
+
+- [ERC-20](/developers/docs/standards/tokens/erc-20/) - 투표 토큰, 스테이킹 토큰 또는 가상 화폐와 같은 대체 가능한(상호 교환 가능한) 토큰을 위한 표준 인터페이스입니다.
+
+### NFT 표준 {#nft-standards}
+
+- [ERC-721](/developers/docs/standards/tokens/erc-721/) - 예술품이나 노래의 증서와 같은 대체 불가능한 토큰을 위한 표준 인터페이스입니다.
+- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155는 거래 및 트랜잭션 묶음의 효율성을 높여 비용을 절감합니다. 이 토큰 표준은 $BNB 또는 $BAT 같은 유틸리티 토큰과 CryptoPunks와 같은 대체 불가능한 토큰을 만들 수 있습니다.
+
+[ERC](https://eips.ethereum.org/erc) 제안 전체 목록.
+
+## 더 읽어보기 {#further-reading}
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 튜토리얼 {#related-tutorials}
+
+- [토큰 통합 체크리스트](/developers/tutorials/token-integration-checklist/) _– 토큰과 상호작용할 때 고려해야 할 사항에 대한 체크리스트입니다._
+- [ERC20 토큰 스마트 계약 이해하기](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _– 이더리움 테스트넷에 첫 스마트 계약을 배포하는 방법에 대한 소개입니다._
+- [솔리디티 스마트 계약에서 ERC20 토큰 전송 및 승인하기](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _– 솔리디티 언어를 사용하여 스마트 계약으로 토큰과 상호작용하는 방법입니다._
+- [ERC721 마켓 구현하기[실용 가이드]](/developers/tutorials/how-to-implement-an-erc721-market/) _– 탈중앙화된 게시판에서 토큰화된 아이템을 판매하는 방법입니다._
diff --git a/public/content/translations/ko/developers/docs/storage/index.md b/public/content/translations/ko/developers/docs/storage/index.md
new file mode 100644
index 00000000000..fdfd3f02633
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/storage/index.md
@@ -0,0 +1,216 @@
+---
+title: "분산형 스토리지"
+description: "탈중앙화 저장소의 정의와 이를 하나의 디앱으로 통합하는 데 사용할 수 있는 도구들에 대한 개요"
+lang: ko
+---
+
+하나의 회사나 조직이 운영하는 중앙집중형 서버와 달리, 탈중앙화 저장소 시스템은 전체 데이터의 일부를 보유하는 사용자-운영자들의 P2P 네트워크로 구성되어 안정성 있는 파일 저장소 공유 시스템을 구축합니다. 이런 시스템들은 블록체인 기반 애플리케이션이나 모든 P2P 기반 네트워크에 있을 수 있습니다.
+
+이더리움은 그 자체로 탈중앙화 저장소 시스템으로 활용될 수 있으며, 모든 스마트 컨트랙트에서의 코드 저장공간이 바로 그것입니다. 하지만 많은 양의 데이터를 저장하는 경우, 이더리움이 설계된 목적에 부합하지 않습니다. 체인은 꾸준히 성장하고 있지만, 이 글을 쓰는 시점에서 이더리움 체인은 약 500GB\~1TB([클라이언트에 따라 다름](https://etherscan.io/chartsync/chaindefault))이며, 네트워크의 모든 노드는 모든 데이터를 저장할 수 있어야 합니다. 체인을 대량의 데이터(예: 5TB)로 확장해야 하는 경우 모든 노드가 계속 실행되는 것은 실현 가능하지 않을 수 있습니다. 또한, 이 많은 양의 데이터를 메인넷에 배포하는 비용은 [가스](/developers/docs/gas) 수수료 때문에 엄청나게 비쌀 것입니다.
+
+이러한 제약으로 인해, 많은 양의 데이터를 탈중앙화된 방식으로 저장할 수 있는 다른 체인이나 방법론이 필요합니다.
+
+탈중앙화 저장소(dStorage) 옵션을 살펴볼 때, 사용자가 유의해야 할 몇가지 사항이 있습니다.
+
+- 지속성 메카니즘 / 인센티브 구조
+- 데이터 보존 시행
+- 분산성
+- 합의
+
+## 지속성 메커니즘 / 인센티브 구조 {#persistence-mechanism}
+
+### 블록체인 기반 {#blockchain-based}
+
+데이터 조각이 영원히 지속되려면 지속성 메커니즘을 사용해야 합니다. 예를 들어, 이더리움에서 지속성 메커니즘이란 노드를 실행할 때 전체 체인을 고려해야 한다는 것입니다. 새로운 데이터 조각이 체인의 끝에 추가되고 계속해서 성장하여 모든 노드가 임베디드 데이터를 복제해야 합니다.
+
+이를 **블록체인 기반** 지속성이라고 합니다.
+
+블록체인 기반 지속성의 문제점은 체인이 너무 커져서 모든 데이터를 실현 가능한 방식으로 유지하고 저장하기 어렵다는 것입니다(예: [여러 출처](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/)에 따르면 인터넷에는 40제타바이트 이상의 저장 공간 용량이 필요하다고 추정됩니다).
+
+블록체인은 또한 일종의 인센티브 구조가 있어야 합니다. 블록체인 기반 지속성을 위해서는 검증자에게 지급되는 대가가 있습니다. 데이터가 체인에 추가될 때 검증자들이 데이터를 추가하기 위해 대가를 받습니다.
+
+블록체인 기반 지속성을 갖춘 플랫폼
+
+- 이더리움
+- [Arweave](https://www.arweave.org/)
+
+### 계약 기반 {#contract-based}
+
+**계약 기반** 지속성은 모든 노드에서 데이터를 복제하고 영구적으로 저장할 수 없으며, 대신 계약 합의에 따라 유지되어야 한다는 개념을 기반으로 합니다. 이것은 일정 기간 동안 데이터 조각을 보유하기로 약속한 여러 노드와 맺은 합의입니다. 데이터를 계속 유지하려면 소진될 때마다 재지불하거나 갱신해야 합니다.
+
+대부분의 경우, 모든 데이터를 온체인으로 저장하는 대신, 체인 상에 데이터가 위치하는 곳의 해시가 저장됩니다. 이렇게 하면 모든 데이터를 유지하기 위해 전체 체인을 확장할 필요가 없습니다.
+
+컨트랙트 기반 지속성을 갖춘 플랫폼:
+
+- [Filecoin](https://docs.filecoin.io/basics/what-is-filecoin)
+- [Skynet](https://sia.tech/)
+- [Storj](https://storj.io/)
+- [Züs](https://zus.network/)
+- [Crust Network](https://crust.network)
+- [Swarm](https://www.ethswarm.org/)
+- [4EVERLAND](https://www.4everland.org/)
+
+### 추가 고려사항 {#additional-consideration}
+
+IPFS는 파일, 웹사이트, 애플리케이션 및 데이터를 저장하고 액세스하기 위한 분산 시스템입니다. 이 시스템은 내장된 인센티브 체계가 없지만, 장기적인 지속성을 위해 위에 언급된 계약 기반 인센티브 솔루션 중 하나와 함께 사용할 수 있습니다. 또 다른 방법으로 IPFS에서 데이터를 지속시키는 방법은 '고정 서비스'와 협력하는 것입니다. 이 서비스는 사용자의 데이터를 "고정"해 줍니다. 사용자는 자신의 IPFS 노드를 실행하여 자신 또는 다른 사람의 데이터를 무료로 지속시킬 수 있습니다!
+
+- [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/)
+- [Pinata](https://www.pinata.cloud/) _(IPFS 피닝 서비스)_
+- [web3.storage](https://web3.storage/) _(IPFS/Filecoin 피닝 서비스)_
+- [Infura](https://infura.io/product/ipfs) _(IPFS 피닝 서비스)_
+- [IPFS Scan](https://ipfs-scan.io) _(IPFS 피닝 탐색기)_
+- [4EVERLAND](https://www.4everland.org/)_(IPFS 피닝 서비스)_
+- [Filebase](https://filebase.com) _(IPFS 피닝 서비스)_
+- [Spheron Network](https://spheron.network/) _(IPFS/Filecoin 피닝 서비스)_
+
+SWARM은 저장 인센티브 시스템과 저장 임대 가격 예측 시스템을 갖춘 분산 데이터 저장 및 배포 기술입니다.
+
+## 데이터 보존 {#data-retention}
+
+데이터를 보존하기 위해, 시스템은 데이터가 확실히 보존되도록 하는 일종의 메커니즘을 가지고 있어야 합니다.
+
+### 챌린지 메커니즘 {#challenge-mechanism}
+
+확실히 데이터가 보존되도록 하는 가장 일반적인 방법 중 하나는, 노드에 전송되는 일종의 암호학적 문제를 사용하여 노드가 데이터를 가지고 있는지 확인하는 것입니다. 간단한 방법은 아르위브의 PoA를 살펴보는 것입니다. 이것은 노드에게 가장 최근 블록과 과거의 랜덤 블록 하나에 있는 데이터가 모두 있는지 확인하는 문제를 냅니다. 만약 노드가 답을 내놓지 못하면, 해당 노드는 불이익을 받습니다.
+
+챌린지 메커니즘을 갖춘 dStorage 유형:
+
+- Züs
+- 스카이넷
+- 아르위브
+- 파일코인
+- Crust Network
+- 4EVERLAND
+
+### 탈중앙성 {#decentrality}
+
+플랫폼의 분산화 수준을 측정할 수 있는 좋은 도구는 없지만, 일반적으로 KYC의 형태가 없는 도구를 사용하여 중앙집중화되지 않았다는 증거를 제시하고자 할 것입니다.
+
+KYC가 없는 탈중앙화 도구:
+
+- 스카이넷
+- 아르위브
+- 파일코인
+- IPFS
+- 이더리움
+- Crust Network
+- 4EVERLAND
+
+### 합의 {#consensus}
+
+이 도구 대부분은 자체 버전의 [합의 메커니즘](/developers/docs/consensus-mechanisms/)을 가지고 있지만, 일반적으로 [**작업 증명(PoW)**](/developers/docs/consensus-mechanisms/pow/) 또는 [**지분 증명(PoS)**](/developers/docs/consensus-mechanisms/pos/)에 기반합니다.
+
+작업 증명 기반:
+
+- 스카이넷
+- 아르위브
+
+지분 증명 기반:
+
+- 이더리움
+- 파일코인
+- Züs
+- Crust Network
+
+## 관련 도구 {#related-tools}
+
+**IPFS - _InterPlanetary File System은 이더리움을 위한 탈중앙화 저장 공간 및 파일 참조 시스템입니다._**
+
+- [Ipfs.io](https://ipfs.io/)
+- [개발문서](https://docs.ipfs.io/)
+- [GitHub](https://github.com/ipfs/ipfs)
+
+**Storj DCS - _개발자를 위한 안전하고, 프라이빗하며, S3와 호환되는 탈중앙화 클라우드 객체 저장 공간입니다._**
+
+- [Storj.io](https://storj.io/)
+- [개발문서](https://docs.storj.io/)
+- [GitHub](https://github.com/storj/storj)
+
+**Sia - _암호학을 활용하여 구매자와 판매자가 직접 거래할 수 있도록 하는 무신뢰 클라우드 저장 공간 마켓플레이스를 만듭니다._**
+
+- [Skynet.net](https://sia.tech/)
+- [개발문서](https://docs.sia.tech/)
+- [GitHub](https://github.com/SiaFoundation/)
+
+**Filecoin - _Filecoin은 IPFS를 개발한 바로 그 팀에서 만들었습니다. IPFS 이상 위에 있는 인센티브 계층입니다._**
+
+- [Filecoin.io](https://filecoin.io/)
+- [개발문서](https://docs.filecoin.io/)
+- [GitHub](https://github.com/filecoin-project/)
+
+**Arweave - _Arweave는 데이터 저장을 위한 dStorage 플랫폼입니다._**
+
+- [Arweave.org](https://www.arweave.org/)
+- [개발문서](https://docs.arweave.org/info/)
+- [Arweave](https://github.com/ArweaveTeam/arweave/)
+
+**Züs - _Züs는 샤딩과 블로버(blobber)를 갖춘 지분 증명 dStorage 플랫폼입니다._**
+
+- [zus.network](https://zus.network/)
+- [개발문서](https://docs.zus.network/zus-docs/)
+- [GitHub](https://github.com/0chain/)
+
+**Crust Network - _Crust는 IPFS 위에 구축된 dStorage 플랫폼입니다._**
+
+- [Crust.network](https://crust.network)
+- [개발문서](https://wiki.crust.network)
+- [GitHub](https://github.com/crustio)
+
+**Swarm - _이더리움 웹3 스택을 위한 분산형 저장 공간 플랫폼 및 콘텐츠 배포 서비스입니다._**
+
+- [EthSwarm.org](https://www.ethswarm.org/)
+- [개발문서](https://docs.ethswarm.org/)
+- [GitHub](https://github.com/ethersphere/)
+
+**OrbitDB - _IPFS 기반의 탈중앙화 P2P 데이터베이스입니다._**
+
+- [OrbitDB.org](https://orbitdb.org/)
+- [개발문서](https://github.com/orbitdb/field-manual/)
+- [GitHub](https://github.com/orbitdb/orbit-db/)
+
+**Aleph.im - _탈중앙화 클라우드 프로젝트(데이터베이스, 파일 저장 공간, 컴퓨팅 및 DID)입니다._** 오프체인과 온체인 P2P 기술의 독특한 조합. IPFS와 멀티체인 양립 가능._\*\*
+
+- [Aleph.im](https://aleph.cloud/)
+- [개발문서](https://docs.aleph.cloud/)
+- [GitHub](https://github.com/aleph-im/)
+
+**Ceramic - _데이터가 풍부하고 흥미로운 애플리케이션을 위한 사용자 제어 IPFS 데이터베이스 저장 공간입니다._**
+
+- [Ceramic.network](https://ceramic.network/)
+- [개발문서](https://developers.ceramic.network/)
+- [GitHub](https://github.com/ceramicnetwork/js-ceramic/)
+
+**Filebase - _S3와 호환되는 탈중앙화 저장 공간 및 지역 중복 IPFS 피닝 서비스. Filebase를 통해 IPFS에 업로드된 모든 파일은 전 세계에 걸쳐 3중으로 복제되어 Filebase 인프라에 자동으로 피닝됩니다._**
+
+- [Filebase.com](https://filebase.com/)
+- [개발문서](https://docs.filebase.com/)
+- [GitHub](https://github.com/filebase)
+
+**4EVERLAND - _저장 공간, 컴퓨팅, 네트워킹 핵심 기능을 통합한 웹3.0 클라우드 컴퓨팅 플랫폼으로, S3와 호환되며 IPFS, Arweave와 같은 탈중앙화 저장 공간 네트워크에서 동기식 데이터 저장을 제공합니다._**
+
+- [4everland.org](https://www.4everland.org/)
+- [개발문서](https://docs.4everland.org/)
+- [GitHub](https://github.com/4everland)
+
+**Kaleido - _클릭 버튼으로 IPFS 노드를 제공하는 서비스형 블록체인(BaaS) 플랫폼입니다._**
+
+- [Kaleido](https://kaleido.io/)
+- [개발문서](https://docs.kaleido.io/kaleido-services/ipfs/)
+- [GitHub](https://github.com/kaleido-io)
+
+**Spheron Network - _Spheron은 최고의 성능을 갖춘 탈중앙화 인프라에서 애플리케이션을 출시하려는 탈중앙화앱을 위해 설계된 서비스형 플랫폼(PaaS)입니다. 컴퓨팅, 탈중앙화 저장 공간, CDN 및 웹 호스팅을 기본으로 제공합니다._**
+
+- [spheron.network](https://spheron.network/)
+- [개발문서](https://docs.spheron.network/)
+- [GitHub](https://github.com/spheronFdn)
+
+## 더 읽어보기 {#further-reading}
+
+- [탈중앙화 저장 공간이란?](https://coinmarketcap.com/academy/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_
+- [탈중앙화 저장 공간에 대한 5가지 일반적인 오해 바로잡기](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [개발 프레임워크](/developers/docs/frameworks/)
diff --git a/public/content/translations/ko/developers/docs/transactions/index.md b/public/content/translations/ko/developers/docs/transactions/index.md
new file mode 100644
index 00000000000..0d6be0ae39d
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/transactions/index.md
@@ -0,0 +1,231 @@
+---
+title: "트랜잭션"
+description: "이더리움 트랜잭션의 개요 - 어떻게 동작하는지, 데이터 구조, 그리고 애플리케이션을 통해 어떻게 전송되는지"
+lang: ko
+---
+
+트랜잭션은 계정으로부터 암호학적으로 서명된 명령들이다. 계정은 이더리움 네트워크의 상태를 업데이트하기 위해 트랜잭션을 초기화 할 것이다. 가장 간단한 트랜잭션은 한 계정에서 다른 계정으로 ETH를 보내는 것이다.
+
+## 필수 구성 요소 {#prerequisites}
+
+이 페이지를 더 잘 이해할 수 있도록 [계정](/developers/docs/accounts/) 및 [이더리움 소개](/developers/docs/intro-to-ethereum/)를 먼저 읽어보시는 것을 권장합니다.
+
+## 트랜잭션이란 무엇인가? 트랜잭션이란 무엇인가요? {#whats-a-transaction}
+
+이더리움 트랜잭션은 외부 계정, 즉 컨트랙트가 아니라 사람이 관리하는 계정에 의해 초기화된 하나의 동작을 말한다. 예를 들어, 밥이 앨리스에게 1 ETH를 보낸다면, 밥의 계정은 인출되어야 하고, 앨리스의 것은 입금되어야 한다. 이 상태-변경 동작은 트랜잭션 안에서 이루어진다.
+
+
+_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)에서 발췌한 다이어그램_
+
+EVM의 상태를 변경하는 트랜잭션은 전체 네트워크로 브로드캐스트되어야 한다. 어떤 노드든 EVM 위에서 실행되는 트랜잭션을 위한 요청을 브로드캐스트 할 수 있다. 이 과정을 거치고나서, 검증자는 트랜잭션을 실행하고 상태변경 결과를 나머지 네트워크로 전파한다.
+
+트랜잭션은 수수료가 필요하고 검증된 블록에 포함되어 있어야한다. 이 개요를 더 간단히 하기 위해서 우리는 다른곳에서 가스 수수료와 검증에 대해서 다룰 것이다.
+
+제출된 트랜잭션은 다음 정보를 갖는다.
+
+- `from` – 트랜잭션에 서명할 보내는 사람의 주소입니다. 컨트랙트 계정은 트랜잭션을 보낼 수 없기 때문에 외부계정에만 존재한다
+- `to` – 받는 주소(외부 소유 계정인 경우, 트랜잭션이 값을 전송합니다). 컨트랙트 계정이라면 트랜잭션은 컨트랙트 코드를 실행할 것이다)
+- `signature` – 보내는 사람의 식별자입니다. 이것은 송신자의 개인 키로 트랜잭션을 서명하고 송신자가 트랜잭션을 인증함을 확정하면 생성된다.
+- `nonce` - 계정의 트랜잭션 수를 나타내는 순차적으로 증가하는 카운터입니다.
+- `value` – 보내는 사람에서 받는 사람으로 전송할 ETH 금액(WEI 단위이며, 1ETH는 1e+18wei와 같습니다).
+- `input data` – 임의의 데이터를 포함하기 위한 선택적 필드입니다.
+- `gasLimit` – 트랜잭션이 소비할 수 있는 가스 단위의 최대량입니다. [EVM](/developers/docs/evm/opcodes)은 각 계산 단계에 필요한 가스 단위를 명시합니다.
+- `maxPriorityFeePerGas` - 검증인에게 팁으로 포함될 소비된 가스의 최대 가격입니다.
+- `maxFeePerGas` - 트랜잭션에 대해 지불하고자 하는 가스 단위당 최대 수수료(`baseFeePerGas` 및 `maxPriorityFeePerGas` 포함)입니다.
+
+가스는 채굴자에 의해 트랜잭션을 처리하는데 필요한 컴퓨팅 계산에 대한 참조이다. 사용자들은 이 컴퓨팅에 수수료를 지불해야 한다. `gasLimit`과 `maxPriorityFeePerGas`는 검증인에게 지불되는 최대 트랜잭션 수수료를 결정합니다. [가스에 대한 자세한 정보](/developers/docs/gas/).
+
+트랜잭션 객체는 아래처럼 보일 것이다.
+
+```js
+{
+ from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
+ to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",
+ gasLimit: "21000",
+ maxFeePerGas: "300",
+ maxPriorityFeePerGas: "10",
+ nonce: "0",
+ value: "10000000000"
+}
+```
+
+그러나 트랜잭션 객체는 송신자의 개인 키를 사용해서 서명되어야 한다. 이는 그 트랜잭션이 그 송신자로부터만 왔고, 부정하게 보내지지 않았음을 증명한다.
+
+Geth 같은 이더리움 클라이언트가 이 서명 과정을 처리할 것이다.
+
+[JSON-RPC](/developers/docs/apis/json-rpc) 호출 예시:
+
+```json
+{
+ "id": 2,
+ "jsonrpc": "2.0",
+ "method": "account_signTransaction",
+ "params": [
+ {
+ "from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
+ "gas": "0x55555",
+ "maxFeePerGas": "0x1234",
+ "maxPriorityFeePerGas": "0x1234",
+ "input": "0xabcd",
+ "nonce": "0x0",
+ "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
+ "value": "0x1234"
+ }
+ ]
+}
+```
+
+예시 응답:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 2,
+ "result": {
+ "raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
+ "tx": {
+ "nonce": "0x0",
+ "maxFeePerGas": "0x1234",
+ "maxPriorityFeePerGas": "0x1234",
+ "gas": "0x55555",
+ "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
+ "value": "0x1234",
+ "input": "0xabcd",
+ "v": "0x26",
+ "r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e",
+ "s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
+ "hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e"
+ }
+ }
+}
+```
+
+- `raw`는 [RLP(Recursive Length Prefix)](/developers/docs/data-structures-and-encoding/rlp)로 인코딩된 서명된 트랜잭션입니다.
+- `tx`는 JSON 형식의 서명된 트랜잭션입니다.
+
+해시를 서명함으로써, 트랜잭션이 네트워크로부터 제출되었음과 송신자로부터 왔음을 암호학적으로 입증할 수 있다.
+
+### 데이터 필드 {#the-data-field}
+
+대부분의 트랜잭션은 외부 소유 계정의 컨트랙트를 액세스한다.
+대부분의 컨트랙트는 솔리디티(Solidity)로 작성되며, [ABI(애플리케이션 바이너리 인터페이스)](/glossary/#abi)에 따라 데이터 필드를 해석합니다.
+
+처음 4 바이트는 함수 이름과 arguments의 해시를 사용하여 호출할 함수를 명시합니다.
+[이 데이터베이스](https://www.4byte.directory/signatures/)를 사용하여 셀렉터로부터 함수를 식별할 수 있습니다.
+
+나머지 calldata는 인자이며, [ABI 사양에 명시된 대로 인코딩됩니다](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
+
+예를 들어, [이 트랜잭션](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1)을 살펴보겠습니다.
+calldata를 보려면 Click to see More를 사용하세요.
+
+함수 셀렉터는 `0xa9059cbb`입니다. [이 서명을 가진 여러 알려진 함수](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb)가 있습니다.
+이 경우 [컨트랙트 소스 코드](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code)가 Etherscan에 업로드되었으므로 함수가 `transfer(address,uint256)`임을 알 수 있습니다.
+
+나머지 데이터는:
+
+```
+0000000000000000000000004f6742badb049791cd9a37ea913f2bac38d01279
+000000000000000000000000000000000000000000000000000000003b0559f4
+```
+
+ABI 명세서에 따르면, 정수값 (예를 들어 20바이트 정수인 주소) 은 ABI에서 앞에 0이 추가된 32 바이트 단어로 표시된다.
+따라서 `to` 주소는 [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279)임을 알 수 있습니다.
+`value`는 0x3b0559f4 = 990206452입니다.
+
+## 트랜잭션 유형 {#types-of-transactions}
+
+이더리움에서는 다른 몇가지 다른 유형의 트랜잭션이 있다.
+
+- 보통의 트랜잭션: 한 계정에서 다른 계정으로의 트랜잭션
+- Contract deployment transactions: 'to' address 가 없는 트랜잭션으로, 데이터 필드가 컨트랙트 코드로 사용된다.
+- 컨트랙트의 실행: 배포된 스마트 컨트랙트와 상호작용하는 트랜잭션이다. 이 경우, 'to' 주소는 스마트 컨트랙트의 주소이다.
+
+### 가스에 대하여 {#on-gas}
+
+앞서 언급했듯이 트랜잭션을 실행하려면 [가스](/developers/docs/gas/)가 필요합니다. 간단한 전송 트랜잭션은 21000 단위의 가스가 필요하다.
+
+따라서 밥이 앨리스에게 `baseFeePerGas` 190gwei와 `maxPriorityFeePerGas` 10gwei로 1ETH를 보내려면, 밥은 다음 수수료를 지불해야 합니다:
+
+```
+(190 + 10) * 21000 = 4,200,000 gwei
+--또는--
+0.0042 ETH
+```
+
+밥의 계정에서 -1.0042 ETH가 인출됩니다(앨리스에게 1 ETH + 가스 수수료 0.0042 ETH).
+
+앨리스의 계정에 +1.0 ETH가 입금됩니다.
+
+-0.00399 ETH의 기본 수수료는 소각됩니다.
+
+검증인은 팁으로 +0.000210 ETH를 받습니다.
+
+
+_[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)에서 발췌한 다이어그램_
+
+트랜잭션 내에서 사용되지 않은 가스는 사용자 계정으로 환불된다.
+
+### 스마트 계약 상호작용 {#smart-contract-interactions}
+
+스마트 계약과 관련된 모든 트랜잭션에는 가스가 필요합니다.
+
+스마트 계약에는 컨트랙트의 상태를 변경하지 않는 [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) 또는 [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions) 함수로 알려진 함수가 포함될 수도 있습니다. 따라서 EOA에서 이러한 함수를 호출할 때 가스가 필요하지 않습니다. 이 시나리오의 기본 RPC 호출은 [`eth_call`](/developers/docs/apis/json-rpc#eth_call)입니다.
+
+`eth_call`을 사용하여 액세스할 때와 달리, 이러한 `view` 또는 `pure` 함수는 내부적으로(즉, 컨트랙트 자체 또는 다른 컨트랙트에서) 호출될 때도 가스를 소모합니다.
+
+## 트랜잭션 생명주기 {#transaction-lifecycle}
+
+트랜잭션이 제출되면 다음이 일어난다.
+
+1. 트랜잭션 해시는 암호화 방식으로 생성됩니다:
+ `0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017`
+2. 트랜잭션은 네트워크로 브로드캐스트 되고 다른 모든 보류 중인 네트워크 트랜잭션으로 구성된 트랜잭션 풀에 추가됩니다.
+3. 검증인은 트랜잭션을를 입증하고 성공적이라고 처리하기 위해 트랜잭션을 선택하고 이를 블록에 포함해야 한다.
+4. 시간이 지날 수록 블록에 포함된 당신의 트랜잭션은 "justified" 에서 "finalized"로 업그레이드 될 것이다. 이러한 업그레이드를 통해 트랜잭션이 성공적으로 완료되고 절대 변경되지 않을 것이라고 훨씬 더 확신할 수 있습니다. 블록이 "완료(finalized)"되면 수십억 달러의 비용이 드는 네트워크 수준의 공격에 의해서만 변경될 수 있습니다.
+
+## 시각적 데모 {#a-visual-demo}
+
+오스틴의 트랜잭션, 가스, 그리고 채굴에 대한 안내를 보라.
+
+
+
+## 유형화된 트랜잭션 봉투 {#typed-transaction-envelope}
+
+이더리움은 원래 트랜잭션 형식이 하나였다. 각 트랜잭션은 nonce, gas price, gas limit, to address, value, data, v, r, 와 s 를 포함 되어있었다. 이 필드들은 [RLP 인코딩](/developers/docs/data-structures-and-encoding/rlp/)되며, 다음과 같은 형식을 가집니다:
+
+`RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`
+
+이더리움은 기존 트랜잭션 형식에 영향을 주지 않고 액세스 목록 및 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)와 같은 새로운 기능을 구현할 수 있도록 여러 유형의 트랜잭션을 지원하도록 발전했습니다.
+
+[EIP-2718](https://eips.ethereum.org/EIPS/eip-2718)은 이러한 동작을 가능하게 합니다. 트랜잭션들은 다음과 같이 해석된다:
+
+`TransactionType || TransactionPayload`
+
+필드는 다음과 같이 정의된다.
+
+- `TransactionType` - 0과 0x7f 사이의 숫자로, 총 128개의 가능한 트랜잭션 유형을 나타냅니다.
+- `TransactionPayload` - 트랜잭션 유형에 따라 정의되는 임의의 바이트 배열입니다.
+
+`TransactionType` 값에 따라 트랜잭션을 다음과 같이 분류할 수 있습니다.
+
+1. **유형 0(레거시) 트랜잭션:** 이더리움 출시 이후 사용된 원래 트랜잭션 형식입니다. 이 트랜잭션은 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)의 동적 가스 수수료 계산이나 스마트 계약용 액세스 목록과 같은 기능을 포함하지 않습니다. 레거시 트랜잭션은 직렬화된 형태에서 유형을 나타내는 특정 접두사가 없으며, [RLP(Recursive Length Prefix)](/developers/docs/data-structures-and-encoding/rlp) 인코딩을 사용할 때 바이트 `0xf8`로 시작합니다. 이러한 트랜잭션의 TransactionType 값은 `0x0`입니다.
+
+2. **유형 1 트랜잭션:** 이더리움의 [베를린 업그레이드](/ethereum-forks/#berlin)의 일부로 [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)에서 도입되었으며, 이 트랜잭션에는 `accessList` 매개변수가 포함됩니다. 이 목록은 트랜잭션이 액세스할 것으로 예상되는 주소와 스토리지 키를 지정하여 스마트 계약과 관련된 복잡한 트랜잭션의 [가스](/developers/docs/gas/) 비용을 줄이는 데 도움이 될 수 있습니다. 유형 1 트랜잭션에는 EIP-1559 수수료 시장 변경 사항이 포함되지 않습니다. 유형 1 트랜잭션에는 `yParity` 매개변수도 포함되며, `0x0` 또는 `0x1`일 수 있으며 secp256k1 서명의 y-값의 패리티를 나타냅니다. 이 트랜잭션은 바이트 `0x01`로 시작하여 식별되며, TransactionType 값은 `0x1`입니다.
+
+3. 유형 2 트랜잭션은 일반적으로 EIP-1559 트랜잭션이라고 하며, 이더리움의 [런던 업그레이드](/ethereum-forks/#london)에서 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)의 일부로 도입되었습니다. 이 트랜잭션들은 이더리움 네트워크의 표준 트랜잭션 유형이 되었습니다. 이 트랜잭션들은 새로운 수수료 시장 메커니즘을 도입하여 기본 수수료와 우선 수수료로 분리하여 수수료 예측성을 향상시킵니다. 이 트랜잭션은 바이트 `0x02`로 시작하며 `maxPriorityFeePerGas` 및 `maxFeePerGas`와 같은 필드를 포함합니다. 유형 2 트랜잭션은 유연성과 효율성 덕분에 현재 기본 설정이며, 특히 높은 네트워크 혼잡 시 사용자들이 트랜잭션 수수료를 보다 예측 가능하게 관리할 수 있게 해줍니다. 이러한 트랜잭션의 TransactionType 값은 `0x2`입니다.
+
+4. 유형 3(블롭) 트랜잭션은 이더리움의 [덴쿤 업그레이드](/ethereum-forks/#dencun)의 일부로 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)에서 도입되었습니다. 이 트랜잭션은 "블롭" 데이터(바이너리 대규모 개체)를 보다 효율적으로 처리하도록 설계되었으며, 특히 이더리움 네트워크에 더 저렴한 비용으로 데이터를 게시하는 방법을 제공하여 레이어 2 롤업에 이점을 줍니다. 블롭 트랜잭션에는 `blobVersionedHashes`, `maxFeePerBlobGas`, `blobGasPrice`와 같은 추가 필드가 포함됩니다. 이 트랜잭션은 바이트 `0x03`으로 시작하며, TransactionType 값은 `0x3`입니다. 블롭 트랜잭션은 이더리움의 데이터 가용성 및 확장성 기능에 있어 상당한 개선을 의미합니다.
+
+5. 유형 4 트랜잭션은 이더리움의 [펙트라 업그레이드](/roadmap/pectra/)의 일부로 [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702)에서 도입되었습니다. 이러한 트랜잭션은 계정 추상화와 순방향 호환이 가능하도록 설계되었습니다. 이러한 트랜잭션을 사용하면 EOA가 원래 기능을 손상시키지 않으면서 일시적으로 스마트 계약 계정처럼 작동할 수 있습니다. `authorization_list` 매개변수를 포함하며, EOA가 권한을 위임하는 스마트 계약을 지정합니다. 트랜잭션 후 EOA의 코드 필드에는 위임된 스마트 계약의 주소가 포함됩니다.
+
+## 더 읽어보기 {#further-reading}
+
+- [EIP-2718: 유형화된 트랜잭션 봉투](https://eips.ethereum.org/EIPS/eip-2718)
+
+_도움이 되었던 커뮤니티 참고 자료를 알고 계신가요? 이 페이지를 편집해서 추가하세요!_
+
+## 관련 주제 {#related-topics}
+
+- [계정](/developers/docs/accounts/)
+- [이더리움 가상 머신(EVM)](/developers/docs/evm/)
+- [가스](/developers/docs/gas/)
diff --git a/public/content/translations/ko/developers/docs/web2-vs-web3/index.md b/public/content/translations/ko/developers/docs/web2-vs-web3/index.md
new file mode 100644
index 00000000000..24885502b23
--- /dev/null
+++ b/public/content/translations/ko/developers/docs/web2-vs-web3/index.md
@@ -0,0 +1,62 @@
+---
+title: "Web2와 Web3의 비교"
+description: "중앙화된 웹2 서비스와 이더리움 블록체인 기술을 기반으로 구축된 탈중앙화 웹3 애플리케이션을 비교해 보세요."
+lang: ko
+---
+
+웹2는 오늘날 대부분의 사람들이 알고 있는 인터넷 버전을 의미합니다. 인터넷은 여러분의 개인 정보를 이용하여 서비스를 제공하는 회사들이 지배합니다. 이더리움의 맥락에서 볼 때 웹3은 블록체인 상에서 구동되는 분산형 앱을 뜻합니다. 웹3은 사용자의 개인 정보를 이용하여 수익 창출을 하지 않고도 누구나 참여할 수 있도록 하는 앱입니다.
+
+입문자에게 더 친화적인 자료를 찾고 있나요? [웹3 소개](/web3/)를 확인해 보세요.
+
+## 웹3의 이점 {#web3-benefits}
+
+많은 웹3 개발자들은 이더리움에 기본적으로 내장된 분산형 방식 때문에 디앱을 구축하기로 했습니다.
+
+- 네트워크에 있는 누구나 서비스를 사용할 권한이 있으며, 다시 말해 서비스 사용에는 권힌이 필요 없다는 뜻입니다.
+- 아무도 여러분을 막을 수도 그 서비스의 접근을 거부할 수도 없다.
+- 결제는 기본 토큰인 이더(ETH)를 통해 이루어집니다.
+- 이더리움은 튜링-완전으로 대부분의 프로그래밍을 할 수 있다.
+
+## 실용적인 비교 {#practical-comparisons}
+
+| 웹2 | 웹3 |
+| --------------------------------------- | ------------------------------------------------------------------- |
+| 트위터는 모든 계정이나 트윗을 검열할 수 있습니다 | 웹3 트윗은 분산형이기 때문에 검열할 수 없을 것입니다 |
+| 지불 서비스는 특정 종류의 일에는 지불을 허용하지 않도록 정할 수 있다 | 웹3 지불 앱들은 개인 데이터가 필요 없고 지불을 막을 수 없다 |
+| 긱 이코노미 앱들의 서버들이 다운되어 작업자 수입에 영향을 줄 수 있다 | 웹3 서버들은 다운될 수 없다 - 그들은 그들의 백엔드로 1000여대의 컴퓨터들의 탈중앙화 네트워크인 이더리움을 사용한다 |
+
+이는 모든 서비스를 디앱으로 전환해야 함을 의미하지는 않습니다. 위의 예시들은 웹2와 웹3 서비스의 주요 차이점을 설명할 뿐입니다.
+
+## 웹3의 한계 {#web3-limitations}
+
+웹3에는 현재 다음과 같은 한계가 있습니다.
+
+- 확장성 - 웹3 상에서의 거래는 분산 방식으로 이루어지기 때문에 좀 더 느립니다. 지불과 같은 상태로의 변경은 채굴자를 통해 처리 후, 네트워크를 통해 전파된다.
+- UX – 웹3 애플리케이션과 상호작용하려면 추가적인 단계, 소프트웨어, 교육이 필요할 수 있습니다. 이는 받아들이는데 허들이 될 수 있다.
+- 접근성 - 웹브라우저들에 통합된 기능들이 부족하여, web3 접근성이 대부분의 사용자들에게 부족합니다.
+- 비용 - 대부분의 성공적인 디앱들은 비용이 비싸서 매우 작은 양의 코드만 블록체인 상에 둔다.
+
+## 중앙화 vs. 탈중앙화 {#centralization-vs-decentralization}
+
+아래의 테이블에서 우리는 중앙화와 탈중앙화 디지털 네트워크의 대략적인 장점과 단점을 나열했다.
+
+| 중앙화 시스템 | 분산형 시스템 |
+| -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
+| 적은 네트워크 거리 (모든 참여자들이 중앙 기관에 연결된다); 전파는 중앙 기관에 의해 많은 컴퓨터 자원으로 처리 되므로 정보는 빠르게 전파된다. | 네트워크 상의 멀리 떨어진 참여자들은 잠재적으로 서로로부터 멀리 떨어진 많은 모서리들이 될 수 있다. 네트워크 상의 한 쪽으로부터의 정보 브로드캐스트는 다른 쪽까지 닿는데 긴 시간이 걸릴 수 있다. |
+| 보통 더 높은 성능(더 높은 처리량, 더 적은 확장된 전체 컴퓨팅 자원)과 더 쉬운 구현. | 보통 더 낮은 성능(더 낮은 처리량, 더 많은 확장된 전체 컴퓨팅 자원)과 구현의 복잡함. |
+| 데이터의 충돌 시, 해결이 깔끔하고 쉬움: 최종적인 참이 되는 것은 중앙 기관이다. | 참여자들이 동기화된 것으로 믿는 데이터의 상태에 대해 피어들이 충돌하도록 요청한다면 (대개 복잡한) 프로토콜이 해결을 중재하는데 필요하다. |
+| 하나의 실패 지점: 악의적인 사람들이 중앙 기관을 표적 삼아 네트워크를 가동 중지시킬 수 있습니다. | 실패 지점이 하나가 아님: 많은 사람들이 참여하여 공격하거나 가동 중지 시켜도 네트워크는 계속 작동합니다. |
+| 네트워크 참어자들간의 조정이 훨씬 쉽고, 중앙 기관에 의해 다뤄진다. 중앙 기관은 네트워크 참여자들이 업그레이드, 프로토콜 업데이트 등을 받아들이도록 매우 적은 노력으로 할 수 있다. | 네트워크 레벨 결정과 프로토콜 업그레이드 등에 최종 의견을 가지는 하나의 중개자가 없어서 조정이 대개 어렵다. 최악의 경우에는 프토토콜 변경에 대해 비동의가 있을 때 네트워크가 균열되기 쉽다. |
+| 중앙 기관은 데이터를 검열할 수 있고, 잠재적으로 네트워크의 나머지와 협의해서 네트워크의 일부를 잘라버릴 수 있다. | 정보가 네트워크에 걸쳐 많은 방식으로 전파되어서 검열이 매우 더 어렵다. |
+| 네트워크 내의 참여는 중앙 기관에 의해 제어된다. | 누구나 네트워크 안에 참여할 수 있다; “문지기”가 없다. 이상적으로는, 참여 비용이 매우 낮다. |
+
+모든 네트워크에 참이 될 수 없는 일반적인 패턴이 있음에 주의하라. 더 나아가서 실제로 어떤 네트워크가 중앙화/탈중앙화되어 있는지의 정도는 스펙트럼에 달려 있다; 전부 중앙화된 네트워크는 없다 또는 전부 탈중앙화된 네트워크는 없다.
+
+## 더 읽어보기 {#further-reading}
+
+- [웹3란 무엇인가요?](/web3/) - _ethereum.org_
+- [웹 3.0 애플리케이션의 아키텍처](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+- [탈중앙화의 의미](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _2017년 2월 6일 - 비탈릭 부테린_
+- [탈중앙화가 중요한 이유](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) _2018년 2월 18일 - 크리스 딕슨_
+- [웹 3.0이란 무엇이며 왜 중요한가](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _2019년 12월 31일 - 막스 머쉬, 리차드 뮤어헤드_
+- [왜 우리에게 웹 3.0이 필요한가](https://gavofyork.medium.com/why-we-need-web-3-0-5da4f2bf95ab) _2018년 9월 12일 - 개빈 우드_
diff --git a/public/content/translations/ko/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/ko/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
new file mode 100644
index 00000000000..53fa52160e4
--- /dev/null
+++ b/public/content/translations/ko/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -0,0 +1,300 @@
+---
+title: "Python 개발자를 위한 이더리움 소개, 1부"
+description: "Python 프로그래밍 언어에 대한 지식이 있는 분들에게 특히 유용한 이더리움 개발 입문서입니다."
+author: Marc Garreau
+lang: ko
+tags: [ "Python", "web3.py" ]
+skill: beginner
+published: 2020-09-08
+source: Snake charmers
+sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/
+---
+
+이더리움에 대해 들어보셨나요? 그렇다면 이제 토끼굴로 모험을 떠날 준비가 되셨나요? 이 게시물에서는 블록체인의 몇 가지 기본 사항을 간략히 다룬 다음, 시뮬레이션된 이더리움 노드와 상호 작용하여 블록 데이터 읽기, 계정 잔액 확인, 트랜잭션 전송 등을 수행하도록 안내합니다. 그 과정에서 기존의 앱 구축 방식과 이 새로운 탈중앙화 패러다임의 차이점을 중점적으로 살펴보겠습니다.
+
+## 권장 선수 지식 {#soft-prerequisites}
+
+이 게시물은 광범위한 개발자가 접근할 수 있도록 하는 것을 목표로 합니다. [Python 도구](/developers/docs/programming-languages/python/)가 사용되지만, 아이디어를 전달하기 위한 수단일 뿐이므로 Python 개발자가 아니어도 문제없습니다. 하지만, 독자 여러분이 이미 알고 있는 몇 가지 사항을 가정하고 이더리움 관련 내용으로 빠르게 넘어가겠습니다.
+
+가정 사항:
+
+- 터미널을 다룰 수 있어야 합니다.
+- Python 코드를 몇 줄 작성해 본 경험이 있어야 합니다.
+- 컴퓨터에 Python 3.6 이상 버전이 설치되어 있어야 합니다([가상 환경](https://realpython.com/effective-python-environment/#virtual-environments) 사용을 적극 권장합니다).
+- Python의 패키지 설치 프로그램인 `pip`를 사용해 본 경험이 있어야 합니다.
+ 다시 한번 말씀드리지만, 이 중 어느 하나라도 해당하지 않거나 이 글의 코드를 재현할 계획이 없더라도 내용을 따라가는 데는 큰 무리가 없을 것입니다.
+
+## 간단히 알아보는 블록체인 {#blockchains-briefly}
+
+이더리움을 설명하는 방법은 여러 가지가 있지만, 그 중심에는 블록체인이 있습니다. 블록체인은 일련의 블록으로 구성되어 있으니, 여기서부터 시작하겠습니다. 가장 간단한 용어로, 이더리움 블록체인의 각 블록은 약간의 메타데이터와 트랜잭션 목록에 불과합니다. JSON 형식으로는 다음과 같이 보입니다.
+
+```json
+{
+ "number": 1234567,
+ "hash": "0xabc123...",
+ "parentHash": "0xdef456...",
+ ...,
+ "transactions": [...]
+}
+```
+
+각 [블록](/developers/docs/blocks/)은 그 이전 블록에 대한 참조를 가지며, `parentHash`는 단순히 이전 블록의 해시입니다.
+
+참고: 이더리움은 고정 크기 값('해시')을 생성하기 위해 해시 함수를 정기적으로 사용합니다. 해시는 이더리움에서 중요한 역할을 하지만, 지금은 고유 ID라고 생각해도 무방합니다.
+
+
+
+_블록체인은 본질적으로 각 블록이 이전 블록을 참조하는 연결 리스트입니다._
+
+이 데이터 구조는 새로운 것이 아니지만, 네트워크를 관장하는 규칙(즉, P2P 프로토콜)은 새롭습니다. 중앙 기관이 없습니다. 피어들의 네트워크는 네트워크를 유지하기 위해 협력해야 하며, 다음 블록에 어떤 트랜잭션을 포함할지 결정하기 위해 경쟁해야 합니다. 따라서 친구에게 돈을 보내려면 해당 트랜잭션을 네트워크에 브로드캐스트한 다음, 다가오는 블록에 포함될 때까지 기다려야 합니다.
+
+블록체인이 한 사용자에게서 다른 사용자에게로 돈이 실제로 전송되었는지 확인하는 유일한 방법은 해당 블록체인 고유의(즉, 해당 블록체인에 의해 생성 및 관리되는) 통화를 사용하는 것입니다. 이더리움에서 이 통화는 이더(ether)라고 하며, 이더리움 블록체인에는 계정 잔액에 대한 유일한 공식 기록이 포함되어 있습니다.
+
+## 새로운 패러다임 {#a-new-paradigm}
+
+이 새로운 탈중앙화 기술 스택은 새로운 개발자 도구를 탄생시켰습니다. 이러한 도구는 많은 프로그래밍 언어에 존재하지만, 우리는 Python의 관점에서 살펴보겠습니다. 다시 한번 강조하지만, Python이 선호하는 언어가 아니더라도 따라가는 데 큰 어려움은 없을 것입니다.
+
+이더리움과 상호 작용하려는 Python 개발자는 [Web3.py](https://web3py.readthedocs.io/)를 사용할 가능성이 높습니다. Web3.py는 이더리움 노드에 연결하고 데이터를 주고받는 방식을 크게 단순화하는 라이브러리입니다.
+
+참고: '이더리움 노드'와 '이더리움 클라이언트'는 같은 의미로 사용됩니다. 두 경우 모두 이더리움 네트워크 참여자가 실행하는 소프트웨어를 의미합니다. 이 소프트웨어는 블록 데이터를 읽고, 새로운 블록이 체인에 추가될 때 업데이트를 수신하고, 새로운 트랜잭션을 브로드캐스트하는 등 다양한 작업을 수행할 수 있습니다. 기술적으로, 클라이언트는 소프트웨어이고, 노드는 소프트웨어를 실행하는 컴퓨터입니다.
+
+[이더리움 클라이언트](/developers/docs/nodes-and-clients/)는 [IPC](https://wikipedia.org/wiki/Inter-process_communication), HTTP 또는 웹소켓으로 연결할 수 있도록 구성할 수 있으므로, Web3.py도 이 구성을 미러링해야 합니다. Web3.py는 이러한 연결 옵션을 공급자(providers)라고 부릅니다. Web3.py 인스턴스를 노드에 연결하려면 세 가지 공급자 중 하나를 선택해야 합니다.
+
+
+
+_이더리움 노드와 Web3.py가 동일한 프로토콜(예: 이 다이어그램의 IPC)을 통해 통신하도록 구성하세요._
+
+Web3.py가 제대로 구성되면 블록체인과 상호 작용을 시작할 수 있습니다. 앞으로 나올 내용에 대한 미리보기로 Web3.py 사용 예시 몇 가지를 소개합니다.
+
+```python
+# 블록 데이터 읽기:
+w3.eth.get_block('latest')
+
+# 트랜잭션 전송:
+w3.eth.send_transaction({'from': ..., 'to': ..., 'value': ...})
+```
+
+## 설치 {#installation}
+
+이번 연습에서는 Python 인터프리터 내에서만 작업할 것입니다. 디렉터리, 파일, 클래스, 함수 등은 생성하지 않습니다.
+
+참고: 아래 예제에서 `$`로 시작하는 명령어는 터미널에서 실행되도록 의도된 것입니다. (`$`는 입력하지 마세요. 줄의 시작을 의미할 뿐입니다.)
+
+먼저, 탐색하기 쉬운 사용자 친화적 환경을 위해 [IPython](https://ipython.org/)을 설치하세요. IPython은 다른 기능들 중에서도 탭 완성 기능을 제공하여 Web3.py 내에서 무엇이 가능한지 훨씬 쉽게 확인할 수 있도록 해줍니다.
+
+```bash
+pip install ipython
+```
+
+Web3.py는 `web3`라는 이름으로 배포됩니다. 다음과 같이 설치하세요.
+
+```bash
+pip install web3
+```
+
+한 가지 더 말씀드리자면, 나중에 블록체인을 시뮬레이션할 건데, 몇 가지 의존성이 더 필요합니다. 다음을 통해 설치할 수 있습니다.
+
+```bash
+pip install 'web3[tester]'
+```
+
+이제 모든 준비가 끝났습니다!
+
+참고: `web3[tester]` 패키지는 Python 3.10.xx 버전까지 작동합니다.
+
+## 샌드박스 실행하기 {#spin-up-a-sandbox}
+
+터미널에서 `ipython`을 실행하여 새로운 Python 환경을 엽니다. 이는 `python`을 실행하는 것과 비슷하지만, 더 많은 부가 기능을 제공합니다.
+
+```bash
+ipython
+```
+
+실행 중인 Python 및 IPython 버전에 대한 정보가 출력된 후, 입력을 기다리는 프롬프트가 표시됩니다.
+
+```python
+In [1]:
+```
+
+지금 대화형 Python 셸을 보고 계십니다. 기본적으로, 마음껏 테스트해볼 수 있는 샌드박스입니다. 여기까지 오셨다면 이제 Web3.py를 가져올 차례입니다.
+
+```python
+In [1]: from web3 import Web3
+```
+
+## Web3 모듈 소개 {#introducing-the-web3-module}
+
+[Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) 모듈은 이더리움으로 가는 관문일 뿐만 아니라 몇 가지 편의 함수를 제공합니다. 몇 가지를 살펴보겠습니다.
+
+이더리움 애플리케이션에서는 보통 통화 단위를 변환해야 합니다. Web3 모듈은 바로 이 작업을 위한 몇 가지 헬퍼 메서드를 제공합니다. 바로 [from_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.from_wei)와 [to_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_wei)입니다.
+
+
+참고: 컴퓨터는 소수점 연산을 잘 처리하지 못하는 것으로 악명 높습니다. 이 문제를 해결하기 위해 개발자들은 종종 달러 금액을 센트 단위로 저장합니다. 예를 들어, 가격이 $5.99인 품목은 데이터베이스에 599로 저장될 수 있습니다.
+
+이더로 트랜잭션을 처리할 때도 비슷한 패턴이 사용됩니다. 하지만 이더는 소수점 두 자리 대신 18자리를 가집니다! 이더의 가장 작은 단위는 wei라고 하며, 트랜잭션을 보낼 때 지정하는 값이 바로 이것입니다.
+
+1 이더 = 1,000,000,000,000,000,000 wei
+
+1 wei = 0.000000000000000001 이더
+
+
+
+몇 가지 값을 wei와 주고받으며 변환해 보세요. 이더와 wei 사이에는 [많은 단위에 대한 이름이 있다](https://web3py.readthedocs.io/en/stable/troubleshooting.html#how-do-i-convert-currency-denominations)는 점에 유의하세요. 그중 더 잘 알려진 단위 중 하나는 gwei인데, 거래 수수료가 종종 이 단위로 표시되기 때문입니다.
+
+```python
+In [2]: Web3.to_wei(1, 'ether')
+Out[2]: 1000000000000000000
+
+In [3]: Web3.from_wei(500000000, 'gwei')
+Out[3]: Decimal('0.5')
+```
+
+Web3 모듈의 다른 유틸리티 메서드에는 데이터 형식 변환기(예: [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)), 주소 헬퍼(예: [`isAddress`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)), 해시 함수(예: [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak))가 포함됩니다. 이들 중 상당수는 시리즈의 뒷부분에서 다룰 것입니다. 사용 가능한 모든 메서드와 속성을 보려면, `Web3.`을 입력하고 IPython의 자동 완성 기능을 활용하세요. 마침표 뒤에 탭 키를 두 번 누르세요.
+
+## 체인과 소통하기 {#talk-to-the-chain}
+
+편리한 메서드들도 좋지만, 이제 블록체인으로 넘어가 봅시다. 다음 단계는 이더리움 노드와 통신하도록 Web3.py를 구성하는 것입니다. 여기서는 IPC, HTTP 또는 웹소켓 공급자를 사용할 수 있습니다.
+
+우리는 이 경로를 따르지는 않겠지만, HTTP 공급자를 사용하는 전체 워크플로의 예는 다음과 같을 수 있습니다.
+
+- 이더리움 노드, 예: [Geth](https://geth.ethereum.org/)를 다운로드합니다.
+- 한 터미널 창에서 Geth를 시작하고 네트워크와 동기화될 때까지 기다립니다. 기본 HTTP 포트는 `8545`이지만, 구성할 수 있습니다.
+- Web3.py에 `localhost:8545`에서 HTTP를 통해 노드에 연결하도록 지시합니다.
+ `w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))`
+- `w3` 인스턴스를 사용하여 노드와 상호 작용합니다.
+
+이것이 '실제' 방법 중 하나이긴 하지만, 동기화 과정은 몇 시간이 걸리며 단순히 개발 환경을 원하는 경우에는 불필요합니다. Web3.py는 이러한 목적을 위해 네 번째 공급자인 EthereumTesterProvider를 제공합니다. 이 테스터 공급자는 완화된 권한과 테스트용 가짜 통화를 가진 시뮬레이션된 이더리움 노드에 연결됩니다.
+
+
+
+_EthereumTesterProvider는 시뮬레이션된 노드에 연결되며 빠른 개발 환경에 유용합니다._
+
+그 시뮬레이션된 노드는 [eth-tester](https://github.com/ethereum/eth-tester)라고 불리며, `pip install web3[tester]` 명령의 일부로 설치했습니다. 이 테스터 공급자를 사용하도록 Web3.py를 구성하는 것은 다음과 같이 간단합니다.
+
+```python
+In [4]: w3 = Web3(Web3.EthereumTesterProvider())
+```
+
+이제 체인을 서핑할 준비가 되었습니다! 사람들이 그렇게 말하지는 않아요. 방금 제가 지어낸 말입니다. 간단히 둘러봅시다.
+
+## 간단한 둘러보기 {#the-quick-tour}
+
+가장 먼저, 간단한 확인부터 해보겠습니다.
+
+```python
+In [5]: w3.is_connected()
+Out[5]: True
+```
+
+테스터 공급자를 사용하고 있기 때문에 이것이 그다지 가치 있는 테스트는 아니지만, 만약 실패한다면 `w3` 변수를 인스턴스화할 때 무언가를 잘못 입력했을 가능성이 있습니다. 내부 괄호, 즉 `Web3.EthereumTesterProvider()`를 포함했는지 다시 확인하세요.
+
+## 둘러보기 #1: [계정](/developers/docs/accounts/) {#tour-stop-1-accounts}
+
+편의를 위해, 테스터 공급자는 몇 개의 계정을 생성하고 테스트 이더를 미리 채워 넣었습니다.
+
+먼저, 해당 계정들의 목록을 살펴보겠습니다.
+
+```python
+In [6]: w3.eth.accounts
+Out[6]: ['0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf',
+ '0x2B5AD5c4795c026514f8317c7a215E218DcCD6cF',
+ '0x6813Eb9362372EEF6200f3b1dbC3f819671cBA69', ...]
+```
+
+이 명령을 실행하면 `0x`로 시작하는 10개의 문자열 목록이 표시됩니다. 각각은 공개 주소이며, 어떤 면에서는 은행 계좌의 계좌 번호와 유사합니다. 이더를 보내려는 사람에게 이 주소를 제공하면 됩니다.
+
+언급했듯이, 테스터 공급자는 이러한 각 계정에 일부 테스트 이더를 미리 로드해 두었습니다. 첫 번째 계정에 얼마가 있는지 알아봅시다.
+
+```python
+In [7]: w3.eth.get_balance(w3.eth.accounts[0])
+Out[7]: 1000000000000000000000000
+```
+
+0이 정말 많네요! 가짜 은행으로 달려가기 전에, 앞에서 배운 통화 단위에 대한 교훈을 떠올려 보세요. 이더 값은 가장 작은 단위인 wei로 표시됩니다. 이 값을 이더로 변환해 보세요.
+
+```python
+In [8]: w3.from_wei(1000000000000000000000000, 'ether')
+Out[8]: Decimal('1000000')
+```
+
+백만 테스트 이더, 여전히 나쁘지 않네요.
+
+## 둘러보기 #2: 블록 데이터 {#tour-stop-2-block-data}
+
+이 시뮬레이션된 블록체인의 상태를 살짝 들여다봅시다.
+
+```python
+In [9]: w3.eth.get_block('latest')
+Out[9]: AttributeDict({
+ 'number': 0,
+ 'hash': HexBytes('0x9469878...'),
+ 'parentHash': HexBytes('0x0000000...'),
+ ...
+ 'transactions': []
+})
+```
+
+블록에 대해 많은 정보가 반환되지만, 여기서 몇 가지만 짚고 넘어가겠습니다.
+
+- 블록 번호는 0입니다. 테스터 제공자를 얼마나 오래 전에 구성했는지는 중요하지 않습니다. 약 12초마다 새 블록을 추가하는 실제 이더리움 네트워크와 달리, 이 시뮬레이션은 어떤 작업을 지시할 때까지 기다립니다.
+- `transactions`는 빈 목록입니다. 같은 이유로, 우리는 아직 아무것도 하지 않았습니다. 이 첫 번째 블록은 체인을 시작하기 위한 빈 블록입니다.
+- `parentHash`가 단지 빈 바이트들의 묶음이라는 점을 주목하세요. 이는 이 블록이 체인의 첫 번째 블록, 즉 제네시스 블록임을 의미합니다.
+
+## 둘러보기 #3: [트랜잭션](/developers/docs/transactions/) {#tour-stop-3-transactions}
+
+보류 중인 트랜잭션이 있을 때까지 블록 0에 갇혀 있으니, 하나 만들어 봅시다. 한 계정에서 다른 계정으로 몇 개의 테스트 이더를 보내세요.
+
+```python
+In [10]: tx_hash = w3.eth.send_transaction({
+ 'from': w3.eth.accounts[0],
+ 'to': w3.eth.accounts[1],
+ 'value': w3.to_wei(3, 'ether'),
+ 'gas': 21000
+})
+```
+
+일반적으로 이 시점에서 트랜잭션이 새 블록에 포함될 때까지 몇 초간 기다려야 합니다. 전체 과정은 다음과 같습니다.
+
+1. 트랜잭션을 제출하고 트랜잭션 해시를 보관합니다. 트랜잭션을 포함하는 블록이 생성되고 브로드캐스트될 때까지 트랜잭션은 '보류 중(pending)' 상태입니다.
+ `tx_hash = w3.eth.send_transaction({ … })`
+2. 트랜잭션이 블록에 포함될 때까지 기다립니다:
+ `w3.eth.wait_for_transaction_receipt(tx_hash)`
+3. 애플리케이션 로직을 계속 진행합니다. 성공적인 트랜잭션을 보려면:
+ `w3.eth.get_transaction(tx_hash)`
+
+우리의 시뮬레이션 환경은 트랜잭션을 즉시 새 블록에 추가하므로, 트랜잭션을 바로 볼 수 있습니다.
+
+```python
+In [11]: w3.eth.get_transaction(tx_hash)
+Out[11]: AttributeDict({
+ 'hash': HexBytes('0x15e9fb95dc39...'),
+ 'blockNumber': 1,
+ 'transactionIndex': 0,
+ 'from': '0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf',
+ 'to': '0x2B5AD5c4795c026514f8317c7a215E218DcCD6cF',
+ 'value': 3000000000000000000,
+ ...
+})
+```
+
+여기서 익숙한 세부 정보들을 볼 수 있습니다. `from`, `to`, `value` 필드는 `send_transaction` 호출의 입력값과 일치해야 합니다. 또 다른 안심할 수 있는 점은 이 트랜잭션이 블록 번호 1 내의 첫 번째 트랜잭션(`'transactionIndex': 0`)으로 포함되었다는 것입니다.
+
+관련된 두 계정의 잔액을 확인하여 이 거래의 성공 여부를 쉽게 확인할 수도 있습니다. 3 이더가 한 계정에서 다른 계정으로 이동했어야 합니다.
+
+```python
+In [12]: w3.eth.get_balance(w3.eth.accounts[0])
+Out[12]: 999996999979000000000000
+
+In [13]: w3.eth.get_balance(w3.eth.accounts[1])
+Out[13]: 1000003000000000000000000
+```
+
+두 번째 것은 좋아 보입니다! 잔액이 1,000,000 이더에서 1,000,003 이더로 증가했습니다. 그런데 첫 번째 계정은 어떻게 된 걸까요? 3 이더보다 약간 더 많이 잃은 것처럼 보입니다. 아쉽게도, 인생에 공짜는 없으며 이더리움 퍼블릭 네트워크를 사용하려면 동료들의 지원 역할에 대해 보상해야 합니다. 트랜잭션을 제출한 계정에서 소액의 거래 수수료가 차감되었습니다. 이 수수료는 소모된 가스량(ETH 전송의 경우 21,000 가스 단위)에 네트워크 활동량에 따라 달라지는 기본 수수료를 곱한 값과, 트랜잭션을 블록에 포함하는 검증자에게 가는 팁을 더한 금액입니다.
+
+[가스](/developers/docs/gas/#post-london)에 대해 더 알아보기
+
+참고: 퍼블릭 네트워크에서 거래 수수료는 네트워크 수요와 트랜잭션 처리 속도에 따라 변동됩니다. 수수료 계산 방식에 대한 자세한 내용이 궁금하다면, 이전에 작성한 '트랜잭션이 블록에 포함되는 방법'에 대한 게시물을 참조하세요.
+
+## 그리고 숨 고르기 {#and-breathe}
+
+꽤 오랫동안 달려왔으니, 이쯤에서 잠시 쉬어가는 것이 좋겠습니다. 토끼굴은 계속 이어지며, 이 시리즈의 2부에서 계속 탐험할 것입니다. 앞으로 다룰 개념: 실제 노드에 연결하기, 스마트 계약, 그리고 토큰. 궁금한 점이 있으신가요? 알려주세요! 여러분의 피드백은 앞으로의 방향에 영향을 미칠 것입니다. 요청은 [트위터](https://twitter.com/wolovim)를 통해 환영합니다.
diff --git a/public/content/translations/ko/developers/tutorials/ai-trading-agent/index.md b/public/content/translations/ko/developers/tutorials/ai-trading-agent/index.md
new file mode 100644
index 00000000000..bf4d7dcb6c7
--- /dev/null
+++ b/public/content/translations/ko/developers/tutorials/ai-trading-agent/index.md
@@ -0,0 +1,980 @@
+---
+title: "이더리움에서 자신만의 AI 트레이딩 에이전트 만들기"
+description: "이 튜토리얼에서는 간단한 AI 트레이딩 에이전트를 만드는 방법을 배웁니다. 이 에이전트는 블록체인에서 정보를 읽고, 해당 정보를 기반으로 LLM에 추천을 요청하고, LLM이 추천하는 교환을 수행한 후, 대기하고 반복합니다."
+author: Ori Pomerantz
+tags: [ "AI", "트레이딩", "에이전트", "python" ]
+skill: intermediate
+published: 2026-02-13
+lang: ko
+sidebarDepth: 3
+---
+
+이 튜토리얼에서는 간단한 AI 트레이딩 에이전트를 구축하는 방법을 배웁니다. 이 에이전트는 다음 단계를 사용하여 작동합니다.
+
+1. 토큰의 현재 및 과거 가격과 기타 잠재적으로 관련 있는 정보를 읽습니다.
+2. 이 정보와 함께 그 관련성을 설명하는 배경 정보로 쿼리를 작성합니다.
+3. 쿼리를 제출하고 예상 가격을 받습니다.
+4. 추천에 따라 교환합니다.
+5. 대기하고 반복합니다.
+
+이 에이전트는 정보를 읽고, 사용 가능한 답변을 생성하는 쿼리로 변환하고, 해당 답변을 사용하는 방법을 보여줍니다. 이 모든 단계는 AI 에이전트에 필요합니다. 이 에이전트는 Python으로 구현되었습니다. Python이 AI에서 가장 일반적으로 사용되는 언어이기 때문입니다.
+
+## 왜 이렇게 해야 할까요? {#why-do-this}
+
+자동화된 트레이딩 에이전트는 개발자가 트레이딩 전략을 선택하고 실행할 수 있도록 합니다. [AI 에이전트](/ai-agents)는 개발자가 사용을 고려조차 하지 않았던 정보와 알고리즘을 잠재적으로 사용하여 더 복잡하고 동적인 트레이딩 전략을 가능하게 합니다.
+
+## 도구 {#tools}
+
+이 튜토리얼은 시세 조회 및 트레이딩을 위해 [Python](https://www.python.org/), [Web3 라이브러리](https://web3py.readthedocs.io/en/stable/), [Uniswap v3](https://github.com/Uniswap/v3-periphery)를 사용합니다.
+
+### 왜 Python인가요? {#python}
+
+AI에 가장 널리 사용되는 언어는 [Python](https://www.python.org/)이므로 여기서도 사용합니다. Python을 모르더라도 걱정하지 마세요. 언어가 매우 명확하며, 무엇을 하는지 정확히 설명해 드리겠습니다.
+
+[Web3 라이브러리](https://web3py.readthedocs.io/en/stable/)는 가장 일반적인 Python 이더리움 API입니다. 사용하기가 매우 쉽습니다.
+
+### 블록체인에서 트레이딩하기 {#trading-on-blockchain}
+
+이더리움에서 토큰을 교환할 수 있는 [많은 분산형 거래소(DEX)](/apps/categories/defi/)가 있습니다. 하지만 [차익거래](/developers/docs/smart-contracts/composability/#better-user-experience) 때문에 환율은 비슷한 경향이 있습니다.
+
+[Uniswap](https://app.uniswap.org/)은 널리 사용되는 DEX이며, 시세 조회(토큰 상대 가치 확인)와 교환 모두에 사용할 수 있습니다.
+
+### OpenAI {#openai}
+
+대규모 언어 모델의 경우, [OpenAI](https://openai.com/)로 시작하기로 했습니다. 이 튜토리얼의 애플리케이션을 실행하려면 API 액세스 비용을 지불해야 합니다. 최소 결제 금액인 5달러는 충분하고도 남습니다.
+
+## 단계별 개발 {#step-by-step}
+
+개발을 단순화하기 위해 단계별로 진행합니다. 각 단계는 GitHub의 브랜치입니다.
+
+### 시작하기 {#getting-started}
+
+UNIX 또는 Linux([WSL](https://learn.microsoft.com/en-us/windows/wsl/install) 포함)에서 시작하는 단계가 있습니다.
+
+1. 아직 설치하지 않았다면 [Python](https://www.python.org/downloads/)을 다운로드하여 설치하세요.
+
+2. GitHub 리포지토리를 복제합니다.
+
+ ```sh
+ git clone https://github.com/qbzzt/260215-ai-agent.git -b 01-getting-started
+ cd 260215-ai-agent
+ ```
+
+3. [`uv`](https://docs.astral.sh/uv/getting-started/installation/)를 설치합니다. 시스템에 따라 명령어가 다를 수 있습니다.
+
+ ```sh
+ pipx install uv
+ ```
+
+4. 라이브러리를 다운로드합니다.
+
+ ```sh
+ uv sync
+ ```
+
+5. 가상 환경을 활성화합니다.
+
+ ```sh
+ source .venv/bin/activate
+ ```
+
+6. Python과 Web3가 올바르게 작동하는지 확인하려면 `python3`을 실행하고 이 프로그램을 제공하세요. `>>>` 프롬프트에 입력할 수 있으며 파일을 만들 필요는 없습니다.
+
+ ```python
+ from web3 import Web3
+ MAINNET_URL = "https://eth.drpc.org"
+ w3 = Web3(Web3.HTTPProvider(MAINNET_URL))
+ w3.eth.block_number
+ quit()
+ ```
+
+### 블록체인에서 읽기 {#read-blockchain}
+
+다음 단계는 블록체인에서 읽는 것입니다. 그렇게 하려면 `02-read-quote` 브랜치로 변경한 다음 `uv`를 사용하여 프로그램을 실행해야 합니다.
+
+```sh
+git checkout 02-read-quote
+uv run agent.py
+```
+
+타임스탬프, 가격, 자산(현재는 항상 `WETH/USDC`)을 포함하는 `Quote` 객체 목록을 받게 됩니다.
+
+다음은 한 줄씩 설명한 것입니다.
+
+```python
+from web3 import Web3
+from web3.contract import Contract
+from decimal import Decimal, ROUND_HALF_UP
+from dataclasses import dataclass
+from datetime import datetime, timezone
+from pprint import pprint
+import time
+import functools
+import sys
+```
+
+필요한 라이브러리를 가져옵니다. 사용 시 아래에 설명되어 있습니다.
+
+```python
+print = functools.partial(print, flush=True)
+```
+
+Python의 `print`를 항상 출력을 즉시 플러시하는 버전으로 바꿉니다. 상태 업데이트나 디버깅 출력을 기다릴 필요가 없으므로 장기 실행 스크립트에서 유용합니다.
+
+```python
+MAINNET_URL = "https://eth.drpc.org"
+```
+
+메인넷에 접속하기 위한 URL입니다. [서비스형 노드](/developers/docs/nodes-and-clients/nodes-as-a-service/)에서 얻거나 [Chainlist](https://chainlist.org/chain/1)에 광고된 것 중 하나를 사용할 수 있습니다.
+
+```python
+BLOCK_TIME_SECONDS = 12
+MINUTE_BLOCKS = int(60 / BLOCK_TIME_SECONDS)
+HOUR_BLOCKS = MINUTE_BLOCKS * 60
+DAY_BLOCKS = HOUR_BLOCKS * 24
+```
+
+이더리움 메인넷 블록은 일반적으로 12초마다 생성되므로, 이는 특정 기간에 생성될 것으로 예상되는 블록 수입니다. 이것은 정확한 수치가 아닙니다. [블록 제안자](/developers/docs/consensus-mechanisms/pos/block-proposal/)가 다운되면 해당 블록은 건너뛰어지고 다음 블록까지의 시간은 24초가 됩니다. 타임스탬프에 대한 정확한 블록을 얻으려면 [이진 검색](https://en.wikipedia.org/wiki/Binary_search)을 사용합니다. 하지만, 우리의 목적에는 이 정도로도 충분합니다. 미래를 예측하는 것은 정확한 과학이 아닙니다.
+
+```python
+CYCLE_BLOCKS = DAY_BLOCKS
+```
+
+주기의 크기입니다. 주기당 한 번씩 시세를 검토하고 다음 주기 말의 가치를 추정합니다.
+
+```python
+# 읽고 있는 풀의 주소
+WETHUSDC_ADDRESS = Web3.to_checksum_address("0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640")
+```
+
+시세 값은 [`0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640`](https://eth.blockscout.com/address/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640?tab=read_write_contract) 주소의 Uniswap 3 USDC/WETH 풀에서 가져옵니다. 이 주소는 이미 체크섬 형식이지만, 코드 재사용성을 높이려면 [`Web3.to_checksum_address`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_checksum_address)를 사용하는 것이 좋습니다.
+
+```python
+POOL_ABI = [
+ { "name": "slot0", ... },
+ { "name": "token0", ... },
+ { "name": "token1", ... },
+]
+
+ERC20_ABI = [
+ { "name": "symbol", ... },
+ { "name": "decimals", ... }
+]
+```
+
+이는 우리가 연결해야 하는 두 계약의 [ABI](https://docs.soliditylang.org/en/latest/abi-spec.html)입니다. 코드를 간결하게 유지하기 위해 호출해야 하는 함수만 포함합니다.
+
+```python
+w3 = Web3(Web3.HTTPProvider(MAINNET_URL))
+```
+
+[`Web3`](https://web3py.readthedocs.io/en/stable/quickstart.html#remote-providers) 라이브러리를 시작하고 이더리움 노드에 연결합니다.
+
+```python
+@dataclass(frozen=True)
+class ERC20Token:
+ address: str
+ symbol: str
+ decimals: int
+ contract: Contract
+```
+
+이것은 Python에서 데이터 클래스를 만드는 한 가지 방법입니다. [`Contract`](https://web3py.readthedocs.io/en/stable/web3.contract.html) 데이터 유형은 계약에 연결하는 데 사용됩니다. `(frozen=True)`에 주목하세요. Python에서 [불리언](https://en.wikipedia.org/wiki/Boolean_data_type)은 대문자로 시작하는 `True` 또는 `False`로 정의됩니다. 이 데이터 클래스는 `frozen`이며, 필드를 수정할 수 없음을 의미합니다.
+
+들여쓰기에 주목하세요. [C 파생 언어](https://en.wikipedia.org/wiki/List_of_C-family_programming_languages)와 달리 Python은 들여쓰기를 사용하여 블록을 나타냅니다. Python 인터프리터는 다음 정의가 데이터 클래스 필드와 동일한 들여쓰기에서 시작하지 않기 때문에 이 데이터 클래스의 일부가 아님을 압니다.
+
+```python
+@dataclass(frozen=True)
+class PoolInfo:
+ address: str
+ token0: ERC20Token
+ token1: ERC20Token
+ contract: Contract
+ asset: str
+ decimal_factor: Decimal = 1
+```
+
+[`Decimal`](https://docs.python.org/3/library/decimal.html) 유형은 십진 분수를 정확하게 처리하는 데 사용됩니다.
+
+```python
+ def get_price(self, block: int) -> Decimal:
+```
+
+이것이 Python에서 함수를 정의하는 방법입니다. 이 정의는 여전히 `PoolInfo`의 일부임을 보여주기 위해 들여쓰기됩니다.
+
+데이터 클래스의 일부인 함수에서 첫 번째 매개변수는 항상 여기에서 호출된 데이터 클래스 인스턴스인 `self`입니다. 여기에는 블록 번호라는 또 다른 매개변수가 있습니다.
+
+```python
+ assert block <= w3.eth.block_number, "블록이 미래에 있습니다"
+```
+
+미래를 읽을 수 있다면 트레이딩에 AI가 필요하지 않을 것입니다.
+
+```python
+ sqrt_price_x96 = Decimal(self.contract.functions.slot0().call(block_identifier=block)[0])
+```
+
+Web3에서 EVM의 함수를 호출하는 구문은 다음과 같습니다. `.functions."().call()`. 매개변수는 EVM 함수의 매개변수(있는 경우, 여기서는 없음)이거나 블록체인 동작을 수정하기 위한 [명명된 매개변수](https://en.wikipedia.org/wiki/Named_parameter)일 수 있습니다. 여기서는 `block_identifier`를 사용하여 실행하려는 [블록 번호](/developers/docs/apis/json-rpc/#default-block)를 지정합니다.
+
+결과는 [배열 형식의 이 구조체](https://github.com/Uniswap/v3-core/blob/main/contracts/UniswapV3Pool.sol#L56-L72)입니다. 첫 번째 값은 두 토큰 간의 환율 함수입니다.
+
+```python
+ raw_price = (sqrt_price_x96 / Decimal(2**96)) ** 2
+```
+
+온체인 계산을 줄이기 위해 Uniswap v3는 실제 환율 요소가 아닌 제곱근을 저장합니다. EVM은 부동 소수점 연산이나 분수를 지원하지 않으므로 실제 값 대신 응답은