Files
2025-02-24 14:52:16 +00:00

72 lines
50 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="ko-KR" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-tutorials/deploying-contracts/using-foundry" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.5.2">
<title data-rh="true">Foundry를 사용하여 스마트 컨트랙트 배포하기 | Status Network Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" property="og:locale" content="ko_KR"><meta data-rh="true" property="og:locale:alternate" content="en_US"><meta data-rh="true" property="og:locale:alternate" content="zh_CN"><meta data-rh="true" property="og:locale:alternate" content="ja_JP"><meta data-rh="true" name="docusaurus_locale" content="ko"><meta data-rh="true" name="docsearch:language" content="ko"><meta data-rh="true" name="keywords" content="status network, blockchain, web3, documentation, gasless transactions, social network, cryptocurrency"><meta data-rh="true" name="author" content="Status Network"><meta data-rh="true" property="og:image" content="https://docs.status.network/img/sn-social-card.png"><meta data-rh="true" property="og:url" content="https://docs.status.network"><meta data-rh="true" property="og:type" content="website"><meta data-rh="true" property="og:site_name" content="Status Network Documentation"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" name="twitter:site" content="@statusL2"><meta data-rh="true" name="twitter:title" content="Status Network Documentation"><meta data-rh="true" name="twitter:description" content="Documentation for Status Network - The gasless network with sustainable funding for app builders. Launch and scale your social apps and games with truly free transactions."><meta data-rh="true" name="twitter:image" content="https://docs.status.network/img/sn-social-card.png"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Foundry를 사용하여 스마트 컨트랙트 배포하기 | Status Network Documentation"><meta data-rh="true" name="description" content="이 튜토리얼에서는 Foundry를 사용하여 Status Network 테스트넷에 스마트 컨트랙트를 배포하는 과정을 안내합니다."><meta data-rh="true" property="og:description" content="이 튜토리얼에서는 Foundry를 사용하여 Status Network 테스트넷에 스마트 컨트랙트를 배포하는 과정을 안내합니다."><link data-rh="true" rel="icon" href="/ko/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.status.network/ko/tutorials/deploying-contracts/using-foundry"><link data-rh="true" rel="alternate" href="https://docs.status.network/tutorials/deploying-contracts/using-foundry" hreflang="en-US"><link data-rh="true" rel="alternate" href="https://docs.status.network/zh/tutorials/deploying-contracts/using-foundry" hreflang="zh-CN"><link data-rh="true" rel="alternate" href="https://docs.status.network/ko/tutorials/deploying-contracts/using-foundry" hreflang="ko-KR"><link data-rh="true" rel="alternate" href="https://docs.status.network/ja/tutorials/deploying-contracts/using-foundry" hreflang="ja-JP"><link data-rh="true" rel="alternate" href="https://docs.status.network/tutorials/deploying-contracts/using-foundry" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://M7J93TRPJ9-dsn.algolia.net" crossorigin="anonymous"><link rel="search" type="application/opensearchdescription+xml" title="Status Network Documentation" href="/ko/opensearch.xml"><link rel="stylesheet" href="/ko/assets/css/styles.9ec3d21b.css">
<script src="/ko/assets/js/runtime~main.854805dc.js" defer="defer"></script>
<script src="/ko/assets/js/main.9ad233d8.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):window.matchMedia("(prefers-color-scheme: light)").matches?t("light"):t("dark")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="본문으로 건너뛰기"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">본문으로 건너뛰기</a></div><nav aria-label="메인" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="사이드바 펼치거나 접기" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/ko/"><div class="navbar__logo"><img src="/ko/img/sn_logo.svg" alt="Status Network Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/ko/img/sn_logo.svg" alt="Status Network Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">Status Network Docs</b></a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link language-dropdown"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>한국어</a><ul class="dropdown__menu"><li><a href="/tutorials/deploying-contracts/using-foundry" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="en-US">English</a></li><li><a href="/zh/tutorials/deploying-contracts/using-foundry" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="zh-CN">中文</a></li><li><a href="/ko/tutorials/deploying-contracts/using-foundry" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="ko-KR">한국어</a></li><li><a href="/ja/tutorials/deploying-contracts/using-foundry" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="ja-JP">日本語</a></li></ul></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="어두운 모드와 밝은 모드 전환하기 (현재 어두운 모드)" aria-label="어두운 모드와 밝은 모드 전환하기 (현재 어두운 모드)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="검색"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">검색</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="맨 위로 스크롤하기" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="문서 사이드바" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/ko/">소개</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/">🌴 Home</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/introduction/quick-start">⚡ 빠른 시작</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/ko/tokenomics/economic-model">토큰노믹스</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tokenomics/economic-model">🤝 경제 모델</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tokenomics/public-funding">💰 공공 자금</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tokenomics/karmic-tokenomics">🐉 카르마 토큰노믹스</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tokenomics/snt-staking">💎 SNT 스테이킹</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/ko/general-info/network-details">일반 정보</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/general-info/network-details">🌐 네트워크 세부정보</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/general-info/add-status-network"> Status 네트워크 추가</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" tabindex="0" href="/ko/general-info/contract-addresses/tokens">🏡 컨트랙트 주소</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/general-info/contract-addresses/tokens">🪙 토큰</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/general-info/contract-addresses/testnet-contracts">🧪 테스트넷 컨트랙트</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" tabindex="0" href="/ko/general-info/bridge/bridging-testnet">🌉 브릿지</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/general-info/bridge/bridging-testnet">🧪 테스트넷 브릿징</a></li></ul></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/ko/tools/rpc">도구</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tools/rpc">🔌 RPC</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tools/bridge">🌉 브릿지</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tools/testnet-faucets">🚰 테스트넷 수도꼭지</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tools/block-explorers">🔎 블록 익스플로러</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/ko/tutorials/deploying-contracts/using-hardhat">튜토리얼</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" tabindex="0" href="/ko/tutorials/deploying-contracts/using-hardhat">🚀 스마트 컨트랙트 배포</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tutorials/deploying-contracts/using-hardhat">🎩 Hardhat 사용하기</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/ko/tutorials/deploying-contracts/using-foundry">⚒️ Foundry 사용하기</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/tutorials/deploying-contracts/using-remix">🎛️ Remix 사용하기</a></li></ul></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="true" href="/ko/other/official-links">기타 문서</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/ko/other/official-links">🔗 공식 링크</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="홈" class="breadcrumbs__link" href="/ko/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">튜토리얼</span><meta itemprop="position" content="1"></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">🚀 스마트 컨트랙트 배포</span><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">⚒️ Foundry 사용하기</span><meta itemprop="position" content="3"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">이 페이지에서</button></div><div class="theme-doc-markdown markdown"><header><h1>Foundry를 사용하여 스마트 컨트랙트 배포하기</h1></header>
<p>이 튜토리얼에서는 Foundry를 사용하여 Status Network 테스트넷에 스마트 컨트랙트를 배포하는 과정을 안내합니다.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="사전-요구사항">사전 요구사항<a href="#사전-요구사항" class="hash-link" aria-label="사전 요구사항에 대한 직접 링크" title="사전 요구사항에 대한 직접 링크"></a></h2>
<p>시작하기 전에 다음이 필요합니다:</p>
<ul>
<li><strong>Foundry</strong>: <a href="https://book.getfoundry.sh/getting-started/installation" target="_blank" rel="noopener noreferrer">공식 Foundry 문서</a>에서 설치</li>
<li><strong>이더리움 지갑</strong>: Status Network 테스트넷용 개인키</li>
<li><strong>테스트넷 ETH</strong>: Status Network 테스트넷 ETH가 필요합니다<!-- -->
<ul>
<li>Status Network 테스트넷 ETH는 <a href="/ko/tools/testnet-faucets">수도꼭지</a>에서 받을 수 있습니다</li>
</ul>
</li>
<li><strong>기본 지식</strong>: Solidity와 명령줄 사용 경험</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="달성-목표">달성 목표<a href="#달성-목표" class="hash-link" aria-label="달성 목표에 대한 직접 링크" title="달성 목표에 대한 직접 링크"></a></h2>
<ul>
<li>Foundry 프로젝트 초기화</li>
<li>기본 이더리움 스마트 컨트랙트 작성</li>
<li>Status Network 테스트넷 배포를 위한 Foundry 구성</li>
<li>스마트 컨트랙트 배포</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="단계">단계<a href="#단계" class="hash-link" aria-label="단계에 대한 직접 링크" title="단계에 대한 직접 링크"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-foundry-프로젝트-초기화">1. Foundry 프로젝트 초기화<a href="#1-foundry-프로젝트-초기화" class="hash-link" aria-label="1. Foundry 프로젝트 초기화에 대한 직접 링크" title="1. Foundry 프로젝트 초기화에 대한 직접 링크"></a></h3>
<p>먼저 새로운 Foundry 프로젝트를 생성합니다:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"># 새 프로젝트 생성</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">forge init hello_status</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">cd hello_status</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># 개인키를 위한 .env 파일 생성</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">touch .env</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">echo &quot;PRIVATE_KEY=your_private_key_here&quot; &gt;&gt; .env</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-스마트-컨트랙트-작성">2. 스마트 컨트랙트 작성<a href="#2-스마트-컨트랙트-작성" class="hash-link" aria-label="2. 스마트 컨트랙트 작성에 대한 직접 링크" title="2. 스마트 컨트랙트 작성에 대한 직접 링크"></a></h3>
<p><code>src/Counter.sol</code><code>HelloWorld.sol</code>로 대체합니다:</p>
<div class="language-solidity codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-solidity codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">// SPDX-License-Identifier: MIT</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pragma solidity ^0.8.24;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">contract HelloWorld {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> string public greet = &quot;Hello, Status Network!&quot;;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> function setGreet(string memory _greet) public {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> greet = _greet;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> function getGreet() public view returns (string memory) {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> return greet;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-status-network를-위한-foundry-구성">3. Status Network를 위한 Foundry 구성<a href="#3-status-network를-위한-foundry-구성" class="hash-link" aria-label="3. Status Network를 위한 Foundry 구성에 대한 직접 링크" title="3. Status Network를 위한 Foundry 구성에 대한 직접 링크"></a></h3>
<p><code>foundry.toml</code>을 생성하거나 업데이트합니다:</p>
<div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">[profile.default]</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">src = &quot;src&quot;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">out = &quot;out&quot;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">libs = [&quot;lib&quot;]</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">solc = &quot;0.8.24&quot;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">[rpc_endpoints]</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">status_testnet = &quot;https://public.sepolia.rpc.status.network&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-컨트랙트-배포">4. 컨트랙트 배포<a href="#4-컨트랙트-배포" class="hash-link" aria-label="4. 컨트랙트 배포에 대한 직접 링크" title="4. 컨트랙트 배포에 대한 직접 링크"></a></h3>
<p>배포 스크립트 <code>script/Deploy.s.sol</code>을 생성합니다:</p>
<div class="language-solidity codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-solidity codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">// SPDX-License-Identifier: MIT</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pragma solidity ^0.8.24;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">import &quot;forge-std/Script.sol&quot;;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">import &quot;../src/HelloWorld.sol&quot;;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">contract DeployScript is Script {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> function run() external {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> uint256 deployerPrivateKey = vm.envUint(&quot;PRIVATE_KEY&quot;);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> vm.startBroadcast(deployerPrivateKey);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> HelloWorld hello = new HelloWorld();</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> console.log(&quot;HelloWorld deployed to:&quot;, address(hello));</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> vm.stopBroadcast();</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>forge를 사용하여 배포합니다:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"># 환경 변수 로드</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">source .env</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># Status Network 테스트넷에 배포</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">forge script script/Deploy.s.sol:DeployScript \</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> --rpc-url https://public.sepolia.rpc.status.network \</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> --broadcast \</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="5-컨트랙트와-상호작용">5. 컨트랙트와 상호작용<a href="#5-컨트랙트와-상호작용" class="hash-link" aria-label="5. 컨트랙트와 상호작용에 대한 직접 링크" title="5. 컨트랙트와 상호작용에 대한 직접 링크"></a></h3>
<p>컨트랙트와 상호작용하는 스크립트 <code>script/Interact.s.sol</code>을 생성합니다:</p>
<div class="language-solidity codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-solidity codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">// SPDX-License-Identifier: MIT</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pragma solidity ^0.8.24;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">import &quot;forge-std/Script.sol&quot;;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">import &quot;../src/HelloWorld.sol&quot;;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">contract InteractScript is Script {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> function run() external {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> uint256 deployerPrivateKey = vm.envUint(&quot;PRIVATE_KEY&quot;);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> address contractAddress = address(0x...); // 컨트랙트 주소로 교체하세요</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> vm.startBroadcast(deployerPrivateKey);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> HelloWorld hello = HelloWorld(contractAddress);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> // 현재 인사말 읽기</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> string memory currentGreeting = hello.getGreet();</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> console.log(&quot;Current greeting:&quot;, currentGreeting);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> // 인사말 업데이트</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> hello.setGreet(&quot;Hello from Foundry!&quot;);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> vm.stopBroadcast();</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>상호작용 스크립트를 실행합니다:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">forge script script/Interact.s.sol:InteractScript \</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> --rpc-url https://public.sepolia.rpc.status.network \</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> --broadcast</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="6-빠른-상호작용을-위한-cast-명령어">6. 빠른 상호작용을 위한 Cast 명령어<a href="#6-빠른-상호작용을-위한-cast-명령어" class="hash-link" aria-label="6. 빠른 상호작용을 위한 Cast 명령어에 대한 직접 링크" title="6. 빠른 상호작용을 위한 Cast 명령어에 대한 직접 링크"></a></h3>
<p><code>cast</code>를 사용하여 컨트랙트와 상호작용할 수도 있습니다:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"># 인사말 읽기</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">cast call &lt;CONTRACT_ADDRESS&gt; &quot;getGreet()&quot; \</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> --rpc-url https://public.sepolia.rpc.status.network</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"># 새 인사말 설정</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">cast send &lt;CONTRACT_ADDRESS&gt; &quot;setGreet(string)&quot; &quot;New greeting!&quot; \</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> --private-key $PRIVATE_KEY \</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> --rpc-url https://public.sepolia.rpc.status.network</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="7-테스트">7. 테스트<a href="#7-테스트" class="hash-link" aria-label="7. 테스트에 대한 직접 링크" title="7. 테스트에 대한 직접 링크"></a></h3>
<p>테스트 파일 <code>test/HelloWorld.t.sol</code>을 생성합니다:</p>
<div class="language-solidity codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-solidity codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">// SPDX-License-Identifier: MIT</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">pragma solidity ^0.8.24;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">import &quot;forge-std/Test.sol&quot;;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">import &quot;../src/HelloWorld.sol&quot;;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">contract HelloWorldTest is Test {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> HelloWorld hello;</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> function setUp() public {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> hello = new HelloWorld();</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> function testGreeting() public {</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> assertEq(hello.getGreet(), &quot;Hello, Status Network!&quot;);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> hello.setGreet(&quot;New greeting&quot;);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> assertEq(hello.getGreet(), &quot;New greeting&quot;);</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> }</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>테스트를 실행합니다:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">forge test</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="클립보드에 코드 복사" title="복사" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="지원">지원<a href="#지원" class="hash-link" aria-label="지원에 대한 직접 링크" title="지원에 대한 직접 링크"></a></h2>
<p>문제가 발생한 경우:</p>
<ul>
<li><a href="https://t.me/statusl2" target="_blank" rel="noopener noreferrer">텔레그램 커뮤니티</a>에 참여</li>
<li><a href="/ko/general-info/network-details">네트워크 세부정보</a> 참조</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="추가-리소스">추가 리소스<a href="#추가-리소스" class="hash-link" aria-label="추가 리소스에 대한 직접 링크" title="추가 리소스에 대한 직접 링크"></a></h2>
<ul>
<li><a href="https://book.getfoundry.sh/" target="_blank" rel="noopener noreferrer">Foundry 문서</a></li>
<li><a href="https://sepoliascan.status.network" target="_blank" rel="noopener noreferrer">Status Network 탐색기</a></li>
</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/status-im/docs.status.network/tree/develop/docs/tutorials/deploying-contracts/using-foundry.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>페이지 편집</a></div><div class="col lastUpdated_JAkA"><span class="theme-last-updated">최종 수정: <!-- --> <b><time datetime="2025-02-19T20:29:12.000Z" itemprop="dateModified">2025년 2월 19일</time></b></span></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="문서 페이지"><a class="pagination-nav__link pagination-nav__link--prev" href="/ko/tutorials/deploying-contracts/using-hardhat"><div class="pagination-nav__sublabel">이전</div><div class="pagination-nav__label">🎩 Using Hardhat</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/ko/tutorials/deploying-contracts/using-remix"><div class="pagination-nav__sublabel">다음</div><div class="pagination-nav__label">🎛️ Using Remix</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#사전-요구사항" class="table-of-contents__link toc-highlight">사전 요구사항</a></li><li><a href="#달성-목표" class="table-of-contents__link toc-highlight">달성 목표</a></li><li><a href="#단계" class="table-of-contents__link toc-highlight">단계</a><ul><li><a href="#1-foundry-프로젝트-초기화" class="table-of-contents__link toc-highlight">1. Foundry 프로젝트 초기화</a></li><li><a href="#2-스마트-컨트랙트-작성" class="table-of-contents__link toc-highlight">2. 스마트 컨트랙트 작성</a></li><li><a href="#3-status-network를-위한-foundry-구성" class="table-of-contents__link toc-highlight">3. Status Network를 위한 Foundry 구성</a></li><li><a href="#4-컨트랙트-배포" class="table-of-contents__link toc-highlight">4. 컨트랙트 배포</a></li><li><a href="#5-컨트랙트와-상호작용" class="table-of-contents__link toc-highlight">5. 컨트랙트와 상호작용</a></li><li><a href="#6-빠른-상호작용을-위한-cast-명령어" class="table-of-contents__link toc-highlight">6. 빠른 상호작용을 위한 Cast 명령어</a></li><li><a href="#7-테스트" class="table-of-contents__link toc-highlight">7. 테스트</a></li></ul></li><li><a href="#지원" class="table-of-contents__link toc-highlight">지원</a></li><li><a href="#추가-리소스" class="table-of-contents__link toc-highlight">추가 리소스</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Legal</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/ko/terms-of-use">Terms of use</a></li><li class="footer__item"><a class="footer__link-item" href="/ko/privacy-policy">Privacy policy</a></li></ul></div></div></div></footer></div>
</body>
</html>