Solidity의 이벤트 작동 방식 및 이벤트가 필요한 이유

Solidity 프로그래밍 언어의 이벤트는 스마트 계약에서 어떤 일이 발생했을 때 알려주는 데 도움이 됩니다. 웹 프런트엔드, 데이터 수집 도구 등과 같은 당사자는 특정 이벤트를 수신하고 그에 따라 반응할 수 있습니다. 이 게시물에서는 이더리움과 같은 블록체인에서 스마트 계약을 개발할 때 이벤트와 이벤트를 사용하는 방법에 대해 자세히 알아볼 것입니다.

이벤트 정의



이벤트를 정의하려면 event 키워드로 시작해야 합니다.

event TicketContractCreated();


이벤트에는 추가 매개변수가 있을 수 있습니다. 데이터를 담을 수 있는 구조체라는 뜻입니다. 데이터 유형은 Solidity 언어에서 사용하는 것과 동일합니다.

event TicketCreated(address ticketHolder);


매개변수



이벤트 구조체는 여러 매개변수를 보유할 수 있습니다. 이러한 매개 변수의 이름을 지정할 수 있지만 이는 선택 사항이며 데이터 유형만 제공할 수 있습니다.

event TicketCreated(address ticketHolder, uint256 ticketId);


특정 이벤트를 수신할 때 로그를 필터링한다고 가정합니다. 인덱싱해야 하는 매개변수를 지정해야 합니다. 최대 3개의 매개변수만 인덱싱할 수 있는 제한이 있습니다. 인덱싱 매개변수는 비용 효율적이며 거래를 채굴하는 데 더 많은 가스 요금이 부과된다는 점을 명심하십시오.

event TicketCreated(address indexed ticketHolder, uint256 ticketId);


이벤트 보내기



특정 작업이 발생하면 emit 키워드와 이벤트 이름을 사용하여 이벤트를 해제할 수 있습니다.

emit TicketContractCreated();


이벤트에 매개변수가 있는 경우 매개변수를 정의한 것과 동일한 순서로 괄호 안에 매개변수를 지정할 수 있습니다.

emit TicketCreated(msg.sender);


내보낸 이벤트 보기



방출된 이벤트를 보려면 Remix IDE , Etherscan 블록 탐색기 또는 Ethers.js , web3.js 또는 기타와 같은 체인과 같은 Ethereum과 상호 작용하는 라이브러리를 사용할 수 있습니다. 이를 수행하는 방법은 이 블로그 게시물의 범위를 벗어납니다.

TL; DR



Solidity 프로그래밍 언어의 이벤트는 다른 당사자에게 어떤 일이 발생했음을 알리는 좋은 방법입니다. 트랜잭션 상태에만 의존할 수는 없습니다. 이벤트는 데이터를 보유할 수 있으며 다른 이벤트는 예를 들어 웹 앱에서 이벤트를 필터링하고 이에 반응할 수 있습니다.

연결


  • Sample code
  • Official documentation
  • Solidity by Example - Events
  • Logging data from smart contracts with events
  • How To Use Events In Solidity
  • 좋은 웹페이지 즐겨찾기