[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-deep-evm-8-sunsu-yul-tokeon-seuwob-guchug":3},{"article":4,"author":58},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":7,"meta_description":16,"focus_keyword":17,"og_image":18,"canonical_url":18,"robots_meta":19,"created_at":15,"updated_at":15,"tags":20,"category_name":38,"related_articles":39},"d5000000-0000-0000-0000-000000000108","a0000000-0000-0000-0000-000000000052","Deep EVM #8: 순수 Yul로 토큰 스왑 구축하기","deep-evm-8-sunsu-yul-tokeon-seuwob-guchug","순수 Yul로 완전한 Uniswap V2 토큰 스왑 컨트랙트 구축: 콜데이터 파싱, 외부 호출, 반환 데이터 처리, Solidity와의 라인별 가스 비교.","## 이론에서 실천으로\n\n지난 7개 기사에서 우리는 EVM에 대한 포괄적 이해를 구축했습니다: 옵코드와 스택 머신, 메모리 모델, 가스 메커니즘, 보안 기본 요소, Yul 구문, 메모리 관리, 루프 최적화. 이제 모든 것을 합칩니다.\n\n## 컨트랙트: SimpleSwap\n\n컨트랙트는 한 가지 일을 합니다: Uniswap V2 쌍을 통해 토큰 A의 정확한 양을 토큰 B로 스왑합니다.\n\n## Solidity 버전 (참조)\n\n```solidity\ncontract SimpleSwapSolidity {\n    address public immutable owner;\n    \n    function swap(\n        address pair, address tokenIn,\n        uint256 amountIn, uint256 amountOutMin, address to\n    ) external {\n        require(msg.sender == owner, \"Not owner\");\n        IERC20(tokenIn).transfer(pair, amountIn);\n        \u002F\u002F ... 리저브 가져오기, 출력 계산, 스왑 실행\n    }\n}\n```\n\n## 라인별 가스 비교\n\n| 카테고리 | Solidity | Yul | 절감 |\n|----------|----------|-----|------|\n| 함수 디스패치 | ~30 가스 | ~13 가스 | 17 |\n| 접근 제어 | ~2220 가스 | ~2115 가스 | 105 |\n| ERC-20 전송 | ~350 가스 | ~110 가스 | 240 |\n| getReserves 호출 | ~280 가스 | ~91 가스 | 189 |\n| 산술 | ~180 가스 | ~38 가스 | 142 |\n| 스왑 호출 | ~370 가스 | ~95 가스 | 275 |\n| **총 런타임 절감** | | | **~1,110 가스** |\n\n일반적인 Uniswap V2 스왑의 총 ~110,000 가스에서 1,110 가스 절감은 약 1%입니다. 하루 수천 건의 스왑을 실행하는 MEV 봇에게:\n\n```\n1,110 가스 * 30 gwei * $3,000\u002FETH = 스왑당 $0.0999\n$0.0999 * 1,000 스왑\u002F일 = $99.90\u002F일\n$99.90 * 365 = $36,463\u002F년\n```\n\n## 배포 비용\n\n| 지표 | Solidity | Yul |\n|------|----------|-----|\n| 런타임 바이트코드 | ~1,200 바이트 | ~480 바이트 |\n| 배포 가스 | ~240,000 | ~96,000 |\n| 절감 | — | 60% 더 작고, 60% 더 저렴 |\n\n## 순수 Yul 컨트랙트의 보안 고려사항\n\n1. 모든 콜데이터 검증 — 주소를 20바이트로 마스킹\n2. 모든 반환 값 확인\n3. 비표준 토큰 처리 — USDT는 transfer에서 아무것도 반환하지 않음\n4. 재진입 — 수동으로 가드 구현 필요\n5. 산술 오버플로우 — Yul은 검사하지 않음\n\n## 결론\n\n이 시리즈는 EVM 기초에서 프로덕션급 Yul 코드 작성까지 안내했습니다. 핵심 요약:\n\n1. EVM은 256비트 워드, ~140 옵코드, 가스 미터링을 가진 스택 머신.\n2. 스토리지는 비용이 높다 — 새 항목에 20000 가스.\n3. 가스 최적화는 아키텍처적이다.\n4. 보안은 실행 흐름 이해에서 나온다.\n5. Yul은 읽기 쉬운 구문으로 옵코드 수준 제어를 제공한다.\n6. 순수 Yul은 최적화된 Solidity 대비 1-5% 가스를 절약한다.","\u003Ch2 id=\"\">이론에서 실천으로\u003C\u002Fh2>\n\u003Cp>지난 7개 기사에서 우리는 EVM에 대한 포괄적 이해를 구축했습니다: 옵코드와 스택 머신, 메모리 모델, 가스 메커니즘, 보안 기본 요소, Yul 구문, 메모리 관리, 루프 최적화. 이제 모든 것을 합칩니다.\u003C\u002Fp>\n\u003Ch2 id=\"simpleswap\">컨트랙트: SimpleSwap\u003C\u002Fh2>\n\u003Cp>컨트랙트는 한 가지 일을 합니다: Uniswap V2 쌍을 통해 토큰 A의 정확한 양을 토큰 B로 스왑합니다.\u003C\u002Fp>\n\u003Ch2 id=\"solidity\">Solidity 버전 (참조)\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-solidity\">contract SimpleSwapSolidity {\n    address public immutable owner;\n    \n    function swap(\n        address pair, address tokenIn,\n        uint256 amountIn, uint256 amountOutMin, address to\n    ) external {\n        require(msg.sender == owner, \"Not owner\");\n        IERC20(tokenIn).transfer(pair, amountIn);\n        \u002F\u002F ... 리저브 가져오기, 출력 계산, 스왑 실행\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"\">라인별 가스 비교\u003C\u002Fh2>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>카테고리\u003C\u002Fth>\u003Cth>Solidity\u003C\u002Fth>\u003Cth>Yul\u003C\u002Fth>\u003Cth>절감\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>함수 디스패치\u003C\u002Ftd>\u003Ctd>~30 가스\u003C\u002Ftd>\u003Ctd>~13 가스\u003C\u002Ftd>\u003Ctd>17\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>접근 제어\u003C\u002Ftd>\u003Ctd>~2220 가스\u003C\u002Ftd>\u003Ctd>~2115 가스\u003C\u002Ftd>\u003Ctd>105\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>ERC-20 전송\u003C\u002Ftd>\u003Ctd>~350 가스\u003C\u002Ftd>\u003Ctd>~110 가스\u003C\u002Ftd>\u003Ctd>240\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>getReserves 호출\u003C\u002Ftd>\u003Ctd>~280 가스\u003C\u002Ftd>\u003Ctd>~91 가스\u003C\u002Ftd>\u003Ctd>189\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>산술\u003C\u002Ftd>\u003Ctd>~180 가스\u003C\u002Ftd>\u003Ctd>~38 가스\u003C\u002Ftd>\u003Ctd>142\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>스왑 호출\u003C\u002Ftd>\u003Ctd>~370 가스\u003C\u002Ftd>\u003Ctd>~95 가스\u003C\u002Ftd>\u003Ctd>275\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Cstrong>총 런타임 절감\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003C\u002Ftd>\u003Ctd>\u003C\u002Ftd>\u003Ctd>\u003Cstrong>~1,110 가스\u003C\u002Fstrong>\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>일반적인 Uniswap V2 스왑의 총 ~110,000 가스에서 1,110 가스 절감은 약 1%입니다. 하루 수천 건의 스왑을 실행하는 MEV 봇에게:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>1,110 가스 * 30 gwei * $3,000\u002FETH = 스왑당 $0.0999\n$0.0999 * 1,000 스왑\u002F일 = $99.90\u002F일\n$99.90 * 365 = $36,463\u002F년\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"\">배포 비용\u003C\u002Fh2>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>지표\u003C\u002Fth>\u003Cth>Solidity\u003C\u002Fth>\u003Cth>Yul\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>런타임 바이트코드\u003C\u002Ftd>\u003Ctd>~1,200 바이트\u003C\u002Ftd>\u003Ctd>~480 바이트\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>배포 가스\u003C\u002Ftd>\u003Ctd>~240,000\u003C\u002Ftd>\u003Ctd>~96,000\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>절감\u003C\u002Ftd>\u003Ctd>—\u003C\u002Ftd>\u003Ctd>60% 더 작고, 60% 더 저렴\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch2 id=\"yul\">순수 Yul 컨트랙트의 보안 고려사항\u003C\u002Fh2>\n\u003Col>\n\u003Cli>모든 콜데이터 검증 — 주소를 20바이트로 마스킹\u003C\u002Fli>\n\u003Cli>모든 반환 값 확인\u003C\u002Fli>\n\u003Cli>비표준 토큰 처리 — USDT는 transfer에서 아무것도 반환하지 않음\u003C\u002Fli>\n\u003Cli>재진입 — 수동으로 가드 구현 필요\u003C\u002Fli>\n\u003Cli>산술 오버플로우 — Yul은 검사하지 않음\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"\">결론\u003C\u002Fh2>\n\u003Cp>이 시리즈는 EVM 기초에서 프로덕션급 Yul 코드 작성까지 안내했습니다. 핵심 요약:\u003C\u002Fp>\n\u003Col>\n\u003Cli>EVM은 256비트 워드, ~140 옵코드, 가스 미터링을 가진 스택 머신.\u003C\u002Fli>\n\u003Cli>스토리지는 비용이 높다 — 새 항목에 20000 가스.\u003C\u002Fli>\n\u003Cli>가스 최적화는 아키텍처적이다.\u003C\u002Fli>\n\u003Cli>보안은 실행 흐름 이해에서 나온다.\u003C\u002Fli>\n\u003Cli>Yul은 읽기 쉬운 구문으로 옵코드 수준 제어를 제공한다.\u003C\u002Fli>\n\u003Cli>순수 Yul은 최적화된 Solidity 대비 1-5% 가스를 절약한다.\u003C\u002Fli>\n\u003C\u002Fol>\n","ko","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:27.840136Z","순수 Yul로 완전한 Uniswap V2 토큰 스왑 구축: 콜데이터 파싱, 외부 호출, 반환 데이터 처리, Solidity와의 라인별 가스 비교.","Yul 토큰 스왑",null,"index, follow",[21,26,30,34],{"id":22,"name":23,"slug":24,"created_at":25},"c0000000-0000-0000-0000-000000000016","EVM","evm","2026-03-28T10:44:21.513630Z",{"id":27,"name":28,"slug":29,"created_at":25},"c0000000-0000-0000-0000-000000000020","Gas Optimization","gas-optimization",{"id":31,"name":32,"slug":33,"created_at":25},"c0000000-0000-0000-0000-000000000017","Huff","huff",{"id":35,"name":36,"slug":37,"created_at":25},"c0000000-0000-0000-0000-000000000018","Yul","yul","블록체인",[40,46,52],{"id":41,"title":42,"slug":43,"excerpt":44,"locale":12,"category_name":38,"published_at":45},"d0000000-0000-0000-0000-000000000605","Ethereum 상호운용성 레이어: 55개 이상의 L2가 하나의 체인이 되는 방법","ethereum-sangho-unyongseong-layer-55-l2-hana-chain","Ethereum에는 55개 이상의 Layer 2 롤업이 있어 유동성과 사용자 경험이 파편화되어 있습니다. Ethereum 상호운용성 레이어 — 크로스 롤업 메시징, 공유 시퀀서, 베이스드 롤업을 결합하여 — 하나의 조합 가능한 네트워크로 통합하는 것을 목표로 합니다.","2026-03-28T10:44:44.895917Z",{"id":47,"title":48,"slug":49,"excerpt":50,"locale":12,"category_name":38,"published_at":51},"d0000000-0000-0000-0000-000000000604","롤업을 넘어선 ZK 증명: Ethereum에서의 검증 가능한 AI 추론","rolleob-eul-neomeo-zk-jeungmyeong-ethereum-geomjeung-ai-churon","영지식 증명은 더 이상 단순한 스케일링 도구가 아닙니다. 2026년, zkML은 온체인에서 검증 가능한 AI 추론을 가능하게 하고, ZK 코프로세서는 무거운 연산을 오프체인으로 이동시키며 온체인에서 검증하고, SP1과 Jolt 같은 새로운 증명 시스템이 이를 실용적으로 만들고 있습니다.","2026-03-28T10:44:44.890168Z",{"id":53,"title":54,"slug":55,"excerpt":56,"locale":12,"category_name":38,"published_at":57},"d0000000-0000-0000-0000-000000000581","EIP-7702 실전 가이드: Pectra 이후 스마트 계정 플로우 구축","eip-7702-siljeon-gaideu-pectra-ihu-seumateu-gyejeong-peulro-guchuk","EIP-7702는 모든 Ethereum EOA가 단일 트랜잭션 내에서 스마트 컨트랙트로 임시 동작할 수 있게 합니다. 새로운 계정 추상화 프리미티브를 사용한 배치 트랜잭션, 가스 후원, 소셜 리커버리 구현 방법을 소개합니다.","2026-03-28T10:44:43.377765Z",{"id":13,"name":59,"slug":60,"bio":61,"photo_url":18,"linkedin":18,"role":62,"created_at":63,"updated_at":63},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]