2020.코딩일지

[solidity] event/indexed/super (feat.솔리디티깨부수기) 본문

Block Chain

[solidity] event/indexed/super (feat.솔리디티깨부수기)

개발하는라푼젤 2022. 11. 29. 19:54
728x90

1. event

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

//인덱스는 이벤트의 키워드이다. 여러개의 이벤트중 "특정한 이벤트의 값을 찝어 올때" 사용.
contract lec11 {
    event numberTracker(uint256 num, string str);
    event numberTracker2(uint256 indexed num, string str);

    uint256 num = 0;
    function PushEvent(string memory _str) public {
        emit numberTracker(num, _str);
        emit numberTracker2(num, _str);
        num++;
    }
    
}

 

 

2. indexed

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract lec10 {
    event info(string name, uint256 money);

    function sendMoney() public {
        emit info("anne", 1000); //log에서 확인가능(블록에저장되어 불변하고 언제든 꺼내어 쓸 수 있다)
    }
    
}

 

3. super

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;

contract Father {
    event FatherName(string name);
    function who() public virtual{
        emit FatherName("fafa");
        emit FatherName("nanacat");
        emit FatherName("vivid");
    }    
}

contract Son is Father {
    event sonName(string name);
    function who() public override{
        super.who(); //Father쪽에 emit이 엄청엄청 많을때! super를 사용한다
        //emit FatherName("fafa");
        emit sonName("jason");
    }
}

 

 

 

Comments