일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ethers type
- 머신러닝기초
- multicall
- erc4337
- 체인의정석
- erc4337 contract
- ethers
- 컨트렉트 배포 자동화
- chainlink 설명
- 컨트렉트 동일한 함수이름 호출
- 스마트 컨트렉트 함수이름 중복
- SBT표준
- 스마트컨트렉트테스트
- vue기초
- rust 기초
- 오블완
- 러스트기초
- 계정추상화
- 티스토리챌린지
- ambiguous function description
- ethers v6
- 스마트컨트렉트 예약어 함수이름 중복
- 러스트 기초 학습
- ethers websocket
- 러스트 기초
- Vue.js
- git rebase
- Vue
- ethers typescript
- 스마트컨트렉트 함수이름 중복 호출
Archives
- Today
- Total
체인의정석
ethers.js에서 keccak256 사용하기 본문
728x90
반응형
컨트렉트에서 특정 데이터를 기록할 때 종종 keccack256의 해시 값을 저장시킨다.
_tokenType = keccak256(abi.encodePacked("erc721"));
위에는 솔리디티의 코드인데,
다음과 같이 erc721 종류의 토큰을 나타내기 위해 사용하는 경우이다.
여러 토큰을 다루어야 하는 dapp이다 보니 위와 같은 표시를 남기게 되고 이를 체크하여 다양한 종류의 표준 토큰을 관리하는것이 목적인 상황이다.
테스트를 하거나 스크립트를 짤 때 이러한 점을 고려하여 keccak256을 사용해야 할 상황이 있다.
먼저 ethers에 나오는 keccak을 하는 방법이다.
const tokenType721 = await ethers.utils.keccak256(ethers.utils.toUtf8Bytes("erc721"));
이럴때 만약 문자 자료형이 들어가게 되면 위와 같이 해야 해시된 값이 나오게 된다.
이는 아래의 문서에서도 확인이 가능하다.
https://docs.ethers.io/v5/api/utils/hashing/
근데 이보다 더 정확하게 solidity에서의 keccack을 하는 법이 있었다.
https://docs.ethers.io/v5/api/utils/hashing/#utils-solidityKeccak256
바로 solidityKeccak이다.
console.log("getSolidityKeccack",await ethers.utils.solidityKeccak256(["string"],["erc721"]));
위와 같이 하면 된다.
이렇게 나온 자료형은 모두 bytes32 자료형을 취하는데
getTokenType 0x0e23893281f878f0088dd044e35b03661018bff448ff89faadef02011e687deb
getkeccack 0x0e23893281f878f0088dd044e35b03661018bff448ff89faadef02011e687deb
getSolidityKeccack 0x0e23893281f878f0088dd044e35b03661018bff448ff89faadef02011e687deb
3개의 값을 체크해 보니 모두 같은 값이 나왓다.
아무거나 사용해도 상관없을것 같다 ㅎㅎㅎㅎ
728x90
반응형
'블록체인 > Ethers & web3' 카테고리의 다른 글
hardhat 트랜잭션 테스트 코드 (0) | 2022.02.15 |
---|---|
ether.js에서 abi encode 하기 (0) | 2022.02.14 |
ether.js에서 HexPad 하기 (0) | 2022.02.11 |
hardhat 오류 해결) bytes32 형태의 값 넣는 방법 (0) | 2022.01.27 |
hardhat 사용법 정리 04- 테스트코드 작성하기 2 (0) | 2022.01.19 |
Comments