위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
Solidity의 이벤트 및 로그
Chainlink
特邀专栏作者
2022-02-11 10:58
이 기사는 약 2256자로, 전체를 읽는 데 약 4분이 소요됩니다
이 글에서는 스마트 컨트랙트 개발자의 관점에서 이더리움 가상 머신(EVM)의 로깅 및 이벤트 기능을 살펴보겠습니다.

Solidity 이벤트는 스마트 계약 개발자에게 없어서는 안 될 요소로 스마트 계약의 특정 변수를 테스트하고 자동화된 방식으로 프런트 엔드를 변경하는 등의 작업을 수행할 수 있습니다. 일반적으로 Solidity에서 이벤트를 사용하는 방법을 알면 스마트 계약 개발이 훨씬 쉬워집니다.

이번 글에서는 스마트 컨트랙트 개발자의 입장에서 공부하겠습니다.이더리움 가상 머신(EVM)의 로그 및 이벤트 기능(로그 및 이벤트의 용도, 이벤트 인덱싱, Hardhat 및 Brownie에서 로그 및 이벤트 사용 방법 포함).

EVM은 이더리움과 다른 많은 블록체인의 핵심입니다. EVM에는통나무스마트 계약 외부의 데이터 구조에 데이터를 "쓰기"하는 기능. 중요한 데이터 중 하나는솔리디티 이벤트. 이벤트를 사용하면 스마트 계약의 공용 스토리지 변수에 저장하는 것보다 더 검색 가능하고 가스 소모가 적은 방식으로 블록체인에 정보를 "인쇄"할 수 있습니다.

로그는 블록체인의 특수 데이터 구조입니다. 스마트 계약으로 액세스할 수 없지만 트랜잭션 및 블록에서 발생한 일에 대한 정보를 제공합니다. 스마트 계약으로 액세스할 수 없기 때문에 사용 비용이 저렴합니다.

이벤트 및 Solidity 로그인에 대한 다음 비디오를 시청할 수도 있습니다.

https://www.bilibili.com/video/BV1iL4y1s7ro?spm_id_from=333.999.0.0

그렇다면 이벤트란 무엇인가?

신청신청그들은 특정 이벤트를 "듣기" 위해 옵니다. 사실 이것은체인링크 네트워크첫 번째 레벨 제목

이벤트는 어떤 용도로 사용할 수 있나요?

이제 체인링크 또는 이더리움 노드 운영자가 아닌 경우 자신에게 무슨 일이 일어났는지 물어볼 수 있습니다. Solidity 이벤트를 통해 다음을 수행할 수 있습니다.

  1. 스마트 계약에서 특정 변수를 테스트하십시오.

  2. 저장된 상태를 재구성하기 위한 인덱스 변수;

  3. 하위 그래프

  4. 만들다하위 그래프데이터를 더 빨리 읽기 위해;

첫 번째 레벨 제목

이벤트는 어떻게 생겼습니까?

다음 데이터 구조는 Solidity에서 이벤트가 정의되는 방식입니다.

이벤트를 새로운 특수 유형으로 생각할 수 있습니다. storedNumber라는 이벤트 "유형"을 만들었습니다. 이벤트의 이름은 storedNumber이며 일부 변수를 보유할 수 있습니다. 이 이벤트에는 인덱싱된 매개변수와 비인덱싱된 매개변수의 두 가지 종류가 있습니다. "주제"라고도 하는 인덱싱된 매개변수는 이벤트에서 검색 가능한 매개변수입니다. 이에 대해서는 나중에 더 자세히 이야기하겠습니다.

그런 다음 다음과 같은 이벤트를 내보낼 수 있습니다.

다음은 완전한 계약 예시입니다.

이제 이 예제에서 store 함수를 호출할 때마다 storedNumber 유형의 이벤트가 발생합니다. 입력값이 1인 store 함수를 호출하는 예제 트랜잭션을 살펴보겠습니다. 우리는 할 수 있습니다Kovan Etherscan이 트랜잭션을 참조하십시오.

트랜잭션의 "로그" 섹션으로 스크롤하면 다음을 볼 수 있습니다.

이벤트는 다음과 같이 나눌 수 있습니다.

주소: 주소, 이벤트를 발행한 계약 또는 계정의 주소.

주제: 주제, 이벤트의 인덱스 매개변수.

데이터: 데이터, ABI 인코딩 또는 이벤트의 인덱싱되지 않은 매개변수의 "해시". 계약의 ABI를 알고 있기 때문에(Etherscan에서 계약을 확인했기 때문에) "Dec" 또는 "Decoded" 모드 또는 원래 "hex", "Hexidecimal" 또는 "Encoded" 모드 Check로 볼 수 있습니다. 계약을 확인하지 않으면 디코딩된 버전을 볼 수 없습니다.

당신은 할 수 있습니다Solidity문서에서 이벤트에 대해 자세히 알아보세요. "로그"와 "이벤트"는 종종 같은 의미로 사용됩니다. 왜냐하면 스마트 계약 개발자로서 우리는 일반적으로 로그의 "이벤트"에만 관심이 있기 때문입니다. 그러나 기술적으로 로그에는 eth_getLogs를 호출하여 블록체인 노드로 반환된 블록해시, 주소 및 기타 데이터도 포함됩니다. 당신은 또한에 대해 더 읽을 수 있습니다블룸 필터, 이러한 이벤트를 쉽게 쿼리할 수 있는 이유입니다.

안전모의 이벤트

이제 이벤트가 무엇인지 이해했으므로 Hardhat에서 이벤트에 액세스하고 사용하는 방법을 알아보겠습니다. 다음 리포지토리를 복제하고 따라갈 수 있습니다.

git clone https://github.com/PatrickAlphaC/hardhat-events-logs

cd hardhat-events-logs

완료하려면 README.md의 지침을 따라야 합니다.종속성 도구Node, Yarn 및 Git을 포함하는 설치.

README.md를 따르면 다음을 수행할 수 있습니다.

  1. 스마트 계약을 배포합니다.

  2. 이벤트를 내보내는 트랜잭션을 만듭니다.

  3. 이러한 이벤트의 컨텍스트를 봅니다.

이 과정에서 문제가 발생하면Github repo첫 번째 레벨 제목

브라우니의 이벤트

브라우니의 이벤트는 계약이 정확히 동일하기 때문에 거의 동일합니다.

다음 리포지토리를 복제하고 따라갈 수 있습니다.

완료하려면 README.md의 지침을 따라야 합니다.종속성 도구Node, Python, eth-brownie 및 Git을 포함하는 설치.

README.md를 따르면 다음을 수행할 수 있습니다.

  1. 스마트 계약을 배포합니다.

  2. 이벤트를 내보내는 트랜잭션을 만듭니다.

  3. 이러한 이벤트의 컨텍스트를 봅니다.

이 과정에서 문제가 발생하면Github repo요약하다

요약하다

로그 및 이벤트는 스마트 계약 개발의 중요한 부분이며 Chainlink 및 The Graph와 같은 프로젝트의 중요한 인프라입니다. 강력한 스마트 계약 개발에 대해 자세히 알아보려면(새로 찾은 이벤트 기술 사용) 반드시 확인하십시오.체인링크 문서, 지금 만들기 시작하세요! .

Chainlink
ETH
Odaily 공식 커뮤니티에 가입하세요
AI 요약
맨 위로
이 글에서는 스마트 컨트랙트 개발자의 관점에서 이더리움 가상 머신(EVM)의 로깅 및 이벤트 기능을 살펴보겠습니다.
작성자 라이브러리
Chainlink
Odaily 플래닛 데일리 앱 다운로드
일부 사람들이 먼저 Web3.0을 이해하게 하자
IOS
Android