Greeter 컨트랙트를 OP Sepolia testnet에 배포한 다음, 명령줄에서 컨트랙트를 읽고 쓰는 방법을 알아봅니다.
OP Stack 체인은 EVM 동등성(EVM equivalence)을 갖추고 있으므로, 여기서 사용하는 워크플로는 Ethereum에서 사용하는 워크플로와 동일합니다. OP 고유의 세부 사항은 연결 대상인 RPC 엔드포인트와 체인 ID뿐입니다.
이 튜토리얼을 마치면 OP Sepolia에 실제로 동작하는 컨트랙트를 갖게 되며, 이후 배포하는 모든 컨트랙트와 상호작용하는 데 사용할 수 있는 명령어도 익히게 됩니다.
이 튜토리얼은 OP Sepolia testnet을 사용하므로 실제 자금이 소모되지 않습니다.
동일한 단계는 모든 OP Stack 체인에서 작동합니다. 해당 체인의 RPC URL로 바꾸고 해당 네트워크에서 계정에 자금을 충전하면 됩니다.
의존성
- Foundry — 아래 첫 번째 단계에서 설치합니다.
curl을 사용할 수 있는 터미널(macOS 및 대부분의 Linux 배포판에 기본 설치되어 있습니다).
Foundry 설치하기
Foundry는 Ethereum 개발을 위한 툴킷입니다. 이 튜토리얼에서는 Foundry의 명령줄 도구 중 두 가지를 사용합니다.forge(컴파일 및 배포용)와 cast(트랜잭션 전송 및 상태 조회용)입니다.
1
foundryup 설치하기
foundryup을 설치합니다.
화면의 안내에 따라 PATH에 추가하십시오(새 터미널을 열어야 할 수도 있습니다).2
Foundry 툴체인 설치하기
설치 확인하기
forge와 cast를 사용할 수 있는지 확인합니다.
foundryup의 PATH 안내를 다시 확인하고 새 터미널을 여십시오.
프로젝트 및 컨트랙트 생성하기
1
Foundry 프로젝트 초기화하기
forge init은 src/, test/, script/ 디렉터리가 포함된 새 프로젝트의 기본 구조를 생성합니다.2
Greeter 컨트랙트 추가하기
src/Greeter.sol의 내용을 다음으로 바꿉니다.
이 컨트랙트는 Hardhat의 Greeter 컨트랙트를 변형한 것입니다. 인사말 문자열을 저장하고, greet()를 통해 이를 노출하며, 누구나 setGreeting()을 통해 인사말을 업데이트할 수 있습니다.3
컨트랙트 컴파일하기
빌드 확인하기
forge build는 컴파일 성공을 보고하고 아티팩트를 out/ 디렉터리에 기록해야 합니다.
컴파일에 실패하면 src/Greeter.sol이 위 코드와 정확히 일치하는지 확인하십시오.
OP Sepolia 및 계정 구성하기
배포하려면 두 가지가 필요합니다. OP Sepolia용 RPC 엔드포인트와 배포 트랜잭션에 서명할 개인 키입니다.1
배포용 계정 생성하기
실제 자금이 있는 키를 재사용하지 말고 이 튜토리얼을 위한 새 키를 생성하십시오.이 명령은
Address와 Private key를 출력합니다.
두 값을 모두 안전한 곳에 저장하십시오.2
환경 변수 설정하기
OP Sepolia RPC URL과 방금 생성한 개인 키를 export합니다.
이 변수들은 튜토리얼의 나머지 부분에서
forge 및 cast 명령이 읽어 들입니다.https://sepolia.optimism.io는 개발 및 테스트에 적합한, 속도 제한이 적용된 공개 엔드포인트입니다.
전체 엔드포인트 목록과 프로덕션 제공업체는 OP Stack RPC 디렉터리를 참조하십시오.
OP Sepolia의 체인 ID(11155420) 및 기타 네트워크 파라미터는 OP Mainnet에 연결하기를 참조하십시오.계정에 자금 충전하기
컨트랙트를 배포하려면 gas 비용이 들기 때문에 계정에 OP Sepolia의 testnet ETH가 필요합니다.1
testnet ETH 요청하기
Superchain Faucet을 사용하여
ACCOUNT_ADDRESS로 OP Sepolia ETH를 보냅니다.잔액 확인하기
배포하기 전에 faucet 자금이 도착했는지 확인합니다.0보다 커질 때까지 기다리십시오.
컨트랙트 배포하기
Greeter를 OP Sepolia에 배포하고 생성된 컨트랙트 주소를 저장합니다.
forge create 명령은 (필요한 경우) 컴파일하고, 배포 트랜잭션에 서명한 뒤 브로드캐스트합니다.
출력에는 Deployed to: 줄이 포함되며, awk 명령이 해당 주소를 CONTRACT_ADDRESS 변수로 추출하므로 다음 단계에서 재사용할 수 있습니다.
전체 출력(배포자 주소, 새 컨트랙트 주소, 트랜잭션 해시)을 보려면
awk 파이프 없이 forge create만 단독으로 실행하십시오.배포 확인하기
컨트랙트의 바이트코드를 가져와 컨트랙트가 온체인에 존재하는지 확인합니다.0x가 반환되면 배포가 반영되지 않은 것이므로, 잔액을 다시 확인하고 배포 단계를 다시 실행하십시오.
컨트랙트와 상호작용하기
이제cast를 사용하여 실제 컨트랙트를 읽고 씁니다.
1
초기 인사말 읽기
2
새 인사말 설정하기
다음 명령은
setGreeting()을 호출하는 트랜잭션을 전송합니다.3
인사말 다시 읽기
Hello from OP Sepolia가 반환되며, 쓰기 작업이 온체인에 반영되었음을 확인할 수 있습니다.블록 탐색기에서 컨트랙트 확인하기
OP Sepolia 블록 탐색기를 열고CONTRACT_ADDRESS를 검색하면 배포 트랜잭션과 방금 보낸 setGreeting 호출을 확인할 수 있습니다.
탐색기에 컨트랙트의 소스 코드를 게시(검증)하는 것은 선택 사항이지만 권장됩니다. 그러면 누구나 탐색기 UI에서 컨트랙트를 읽고 상호작용할 수 있기 때문입니다.
다음 단계
- OP Stack 체인에서 앱 빌드하기에서 더 폭넓은 규칙을 알아보십시오.
- Ethereum과 OP Stack 체인의 차이점을 이해하십시오.
- 다음으로 ERC-20 토큰 브리징과 같은 크로스체인 튜토리얼을 시도해 보십시오.
프로덕션 환경에서 앱 운영하기프로덕션 애플리케이션은 여러분의 팀이 직접 운영하지 않는 인프라에 의존합니다. 실제 트래픽을 견딜 수 있는 RPC 엔드포인트(공개 엔드포인트는 속도 제한이 있으며 프로덕션용으로 만들어지지 않았습니다), 사용자가 의존하는 bridge, 그리고 운영자가 sequencing, 업그레이드, 장애 대응을 24시간 지속하는 체인이 그것입니다. 이 문서는 빌드와 테스트를 다룹니다. 애플리케이션이 성장하여 자체 전용 블록스페이스가 필요해지고 있다면, OP Enterprise는 체인 운영을 위한 관리형 및 지원형 방식을 제공합니다. 어느 경우든 이 문서는 여러분이 빌드하는 것에 대한 레퍼런스로 남습니다. OP Enterprise는 Optimism의 관리형 서비스입니다.