Chainlink Log Trigger Automation#
Log Trigger는 Chainlink Automation에서 **온체인 이벤트(로그)**에 반응해 스마트 컨트랙트 함수를 자동 실행하는 방식이다. 특정 이벤트가 emit되면 Automation이 이를 감지하고 대상 컨트랙트의 지정 함수를 호출한다.
이번 레슨에서는 두 개의 컨트랙트로 로그 트리거 자동화를 구성한다.
| 컨트랙트 | 역할 |
|---|---|
| EventEmitter | 특정 함수 호출 시 WantsToCount 이벤트를 emit → Automation 트리거 신호 |
| LogTrigger | Automation이 호출하는 함수로 호출 횟수(counter) 를 기록 |
→ 이벤트 기반 자동화(event-driven automation) 패턴을 보여준다.
1. EventEmitter 컨트랙트 배포 및 검증#
1.1 컨트랙트 생성#
- Remix Automation 워크스페이스 →
contracts폴더 안에log-trigger폴더 생성 EventEmitter.sol파일 추가emitCountLog호출 시WantsToCount이벤트를 emit하는 단순 컨트랙트 작성 (강의 코드 저장소 코드 사용)
1.2 배포#
- 이전 레슨과 동일한 절차로 Sepolia에 배포
- 배포된 컨트랙트 인스턴스를 워크스페이스에 pin 해두기
emitCountLog호출 후 트랜잭션 확인 시WantsToCount이벤트가 emit됨
1.3 Etherscan 검증#
- 이전 레슨과 동일한 절차로 Etherscan에 Verify and Publish
- Contract 탭 옆에 녹색 체크 표시 확인
- Events 탭에서
emitCountLog호출로 발생한 로그 확인
2. LogTrigger 컨트랙트 배포 및 검증#
2.1 컨트랙트 요구사항#
log-trigger 폴더에 LogTrigger.sol 생성. 다음을 만족해야 한다.
- ILogAutomation 인터페이스 상속 (Log Trigger Automation 호환)
- 구현할 함수 두 개:
- checkLog
- Automation이 “할 일이 있는지” 시뮬레이션할 때 호출
performData를 반환 → 이후performUpkeep에 전달- 여기서는 **이벤트를 보낸 주소(caller)**를
performData에 넣어, 나중에 로그로 남김
- performUpkeep
- Automation이 실제 업킵을 수행할 때 실행
performData를 사용해 counter 증가 + 누가 이벤트를 트리거했는지 로그로 emit
- checkLog
강의 코드 저장소의 코드를 복사해 LogTrigger.sol에 붙여넣기.
2.2 배포#
- Sepolia에 배포 (이전 레슨과 동일), 배포된 인스턴스 pin
- Remix에서
counted값을 확인하면 0으로 나옴
2.3 Etherscan 검증#
- 파일을 flatten한 뒤, 해당 코드로 검증 진행
3. Log Trigger Upkeep 생성 (Chainlink Automation)#
배포가 끝났다면 Chainlink Automation 앱에서 이벤트 발생 시 counter를 올리는 Upkeep을 등록한다.
3.1 트리거 설정#
- Register new Upkeep 선택
- Trigger mechanism: Log trigger 선택
- Contract to automate: LogTrigger 컨트랙트 주소 입력
- Contract emitting logs: EventEmitter 컨트랙트 주소 입력
- Emitted log:
WantsToCount이벤트 선택 - Log index topic filters는 비워 두기 → Next
3.2 Upkeep 상세 정보#
| 항목 | 설명 |
|---|---|
| Upkeep name | 대시보드에 보일 이름 (예: "LogTrigger Counter") |
| Admin Address | Upkeep 관리 주소 (기본값: 연결된 지갑) |
| Gas limit | Upkeep 함수 실행에 허용할 최대 가스 (기본 500,000) |
| Starting balance | Automation 비용용 LINK 잔액 (예: 5 LINK) |
| Project information | 선택 사항, 비워 둬도 됨 |
Register Upkeep 클릭 후 등록 트랜잭션 제출 → 확인 후 소유권 검증 메시지 서명. 이 시점에 Automation 생성 완료.
3.3 동작 확인#
- View Upkeep으로 이전 레슨과 같이 Upkeep 상세 확인
- Remix Deploy & run transactions에서 EventEmitter의 emitCountLog 호출
- 트랜잭션 완료 후 Automation 대시보드 History에 해당 Upkeep 실행 기록 표시
- LogTrigger 컨트랙트의 counted 값을 다시 확인하면 1 증가한 것을 확인 가능
요약#
- EventEmitter:
WantsToCount이벤트 emit → Log Trigger의 입력 - LogTrigger:
checkLog/performUpkeep구현, counter 증가 및 트리거한 주소 로그 - Chainlink Automation: Log trigger로 Upkeep 등록 → 이벤트 발생 시 자동으로
performUpkeep실행
이 구성을 통해 로그 트리거 기반으로 컨트랙트 함수 실행을 자동화할 수 있다.