26일차 - 이벤트 및 해싱
특사-VC / 30일의 견고함
스마트 계약 개발을 배우기 위한 30일간의 Solidity 단계별 가이드.
Solidity Series의
26
중 Day30
입니다.오늘은 솔리디티에서 이벤트와 해싱에 대해 배웠습니다.
이벤트
Solidity 이벤트는 다른 프로그래밍 언어의 이벤트와 동일합니다. 이벤트는 내보낼 때 트랜잭션 로그에 전달된 인수를 저장하는 계약의 상속 가능한 구성원입니다.
이벤트는 계약 내에서 글로벌로 정의되고 해당 기능 내에서 호출됩니다. 이벤트는 event 키워드, 식별자 및 매개 변수 목록을 사용하여 선언하고 세미콜론으로 끝납니다. 매개변수 값은 정보를 기록하거나 조건 논리를 실행하는 데 사용됩니다. 해당 정보와 값은 블록 내부 트랜잭션의 일부로 저장됩니다. 변수를 제공할 필요가 없으며 데이터 유형만 있으면 충분합니다. 이름을 사용하고 필요한 매개 변수를 전달하여 모든 메서드에서 이벤트를 호출할 수 있습니다.
구문 -
event <eventName>(parameters);
예시 -
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
contract MyContract {
event transaction(address payable, uint256);
function sendEther(address payable to) public payable {
to.transfer(msg.value);
emit transaction(to,msg.value);
}
}
출력 로그 -
[
{
from: "0xf8e81D47203A594245E36C48e151709F0C19fBe8",
topic: "0xa088ceb626d7ab77e5c39d79be36e959ac77a2563e711bdfce14bc1b86293691",
event: "transaction",
args: {
0: "0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2",
1: "10000000000000000000",
},
},
];
해싱
암호화 해시 함수는 임의의 양의 데이터를 입력으로 받아 고정된 크기의 암호화된 텍스트를 생성하는 알고리즘입니다. 입력을 조금만 바꿔도 전혀 다른 출력이 나옵니다.
Solidity는 다음과 같은 암호화 기능을 제공합니다.
기능
속성
keccak256(바이트 메모리) 반환 (bytes32)
입력의 Keccak-256 해시를 계산합니다.
sha256(바이트 메모리) 반환 (bytes32)
입력의 SHA-256 해시를 계산합니다.
익은 md160(바이트 메모리)는 (바이트 20)을 반환합니다.
입력의 RIPEMD-160 해시 계산
sha256(바이트 메모리) 반환 (bytes32)
입력의 SHA-256 해시를 계산합니다.
ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s)는 (주소)를 반환합니다.
암호화에 사용된 타원 곡선 서명에서 공개 키와 연결된 주소를 복구하거나 오류가 발생하면 0을 반환합니다. 매개변수는 ECDSA 서명 값에 해당합니다.
예시 -
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
contract MyContract {
uint256 digits = 5;
function generateRandom(string memory _str) public view returns(uint256) {
uint random = uint(keccak256(abi.encodePacked(_str))) % (10 ** digits);
return random;
}
}
함수 generateRandom은 먼저
keccak256
해시로 변환되는 문자열에서 임의의 5자리 숫자를 생성하고 모듈러스를 사용하여 5자리 숫자를 제공합니다.문자열이 다음과 같은 경우 출력
solidity
0:
uint256: 70469
Reference
이 문제에 관하여(26일차 - 이벤트 및 해싱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/envoy_/day-26-events-and-hashing-5fhl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)