체인의정석

Solidity 0.5.0 버젼 오류해결 ) More than 3 indexed arguments for event. 본문

블록체인/Solidity

Solidity 0.5.0 버젼 오류해결 ) More than 3 indexed arguments for event.

체인의정석 2022. 1. 24. 16:39
728x90
반응형

이벤트를 작성하면서 어차피 가스비가 많이 들지 않으니 활용을 위해 인덱스를 최대한 많이 넣어보자 라는 생각으로 많은 인덱스를 달아 보았다.

 

그 결과 

TypeError: More than 3 indexed arguments for event.

와 같은 오류가 나왓다. 사실 인덱스를 이렇게 달아본건 처음이라 여기에 제한이 있었나? 하고 찾아보니

 

https://ethereum.stackexchange.com/questions/52397/im-getting-an-error-when-i-have-more-than-3-indexed-arg-for-an-event

 

I'm getting an error when i have more than 3 indexed arg for an event

I want to add all the arguments for my event to be indexed event TokenPurchase( address indexed purchaser, address indexed beneficiary, uint256 indexed value, uint256 indexed amount, ui...

ethereum.stackexchange.com

최대 3개까지만 된다고 하며, 예외는 anonymous event 인 경우에만 가능하다고 한다.

 

몰랐던 사실인데 코드를 확인해보면 적혀있다.

https://github.com/ethereum/solidity/blob/78be93856b469ca45da87ad372427cf18752b042/libsolidity/analysis/TypeChecker.cpp#L607

 

GitHub - ethereum/solidity: Solidity, the Smart Contract Programming Language

Solidity, the Smart Contract Programming Language. Contribute to ethereum/solidity development by creating an account on GitHub.

github.com

그 결과 인덱스는 검색이 많이 필요하니 잘 생각해서 3개씩만 남기기로 하였다.

남기고 보니 address 타입이 많이 남게 되었는데, 나중에 이벤트 기록을 했을 때 특정 행위의 주체가 누구인지 알아야 하는 경우가 많기 때문에 이렇게 작업하였다. 

728x90
반응형
Comments