일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 머신러닝기초
- SBT표준
- ethers
- 오블완
- ethers type
- 스마트컨트렉트테스트
- Vue.js
- rust 기초
- 컨트렉트 배포 자동화
- 러스트 기초
- 체인의정석
- 스마트컨트렉트프록시
- 컨트렉트 동일한 함수이름 호출
- multicall
- 스마트컨트렉트 함수이름 중복 호출
- 러스트 기초 학습
- 스마트 컨트렉트 함수이름 중복
- git rebase
- Vue
- 스마트컨트렉트 예약어 함수이름 중복
- 러스트기초
- chainlink 설명
- vue기초
- nest.js설명
- 프록시배포구조
- 티스토리챌린지
- ethers typescript
- ethers websocket
- ambiguous function description
- ethers v6
Archives
- Today
- Total
체인의정석
Solidity에서 bytes와 bytes32의 유즈케이스 및 활용 문법 본문
728x90
반응형
1. 데이터를 bytes 형태로 사용하는 경우
먼저 encode 후에 decode 를 해서 데이터를 컨트렉트 간에 보내지만 다시 풀어내야 하는 경우가 있다.
이 경우
bytes memory Data
이런식으로 bytes 자료형에 memory를 명시하여 데이터를 받는다.
solidity에서의 사용
uint256 uintData = abi.decode(bytes(Data), (uint256));
만약 숫자형의 데이터를 넣어서 풀 경우 위와 같이 풀어서 decode를 하면 원래의 값을 가져와서 사용할 수 있다.
상황에 따라서 다른 데이터를 보내는 컨트렉트 구조를 짤때 위와 같이 응용이 가능하다.
(폴리곤 브릿지에서 모든 토큰 유형의 자산을 지원할때도 사용
이러한 경우 데이터를 넣을때는 다음과 같이 코드를 짠다.
ethers.js의 경우
const abiCoder = ethers.utils.defaultAbiCoder;
const Data = 1;
let uintData = abiCoder.encode(["uint"],[Data]);
web3.js의 경우 (추후 업데이트)
2. 데이터를 bytes32 형태로 사용하는 경우
이러한 경우는 해시값을 넣을 경우에 사용된다.
값을 딱히 해석하지 않아도 정해진 값이 들어가는 경우가 여기에 해당된다.
또는 암호화를 한 값을 기록해야할 경우가 여기에 해당된다.
당연히 암호화한 부분을 넣는 부분만 있고 decode를 할 필요는 없다.
그래서 bytes32에는 해시 함수의 결과값이 들어가게 된다.
solidity에서의 사용
bytes32 data
ethers.js의 경우
const stringData = await ethers.utils.solidityKeccak256(["string"],["data"]);
이 값이 bytes32 의 data에 들어가면 된다.
web3.js의 경우
const stringData = web3.utils.soliditySha3('data');
이 값이 bytes32 의 data에 들어가면 된다.
728x90
반응형
'블록체인 > Solidity' 카테고리의 다른 글
truffle 활용법) ABI 파일 추출하여 이미 배포된 컨트렉트와 상호작용하기 (0) | 2022.05.23 |
---|---|
컨트렉트에서 데이터 encode 및 decode 하기 (0) | 2022.05.22 |
논문에 사용하는 컨트렉트 구조 및 스마트컨트렉트 0.8 버전으로 구현한 주요 구문 정리 (Travel Rule Solution Example.sol) (0) | 2022.05.15 |
운영용 멀티시그 지갑 선택하기 & 멀티시그 지갑 테스트 및 사용을 위해 ethers.js로 encode된 data 만들기 (0) | 2022.05.12 |
Solidity) internal 트랜잭션에 대한 이벤트 로그 테스트하기 (0) | 2022.04.20 |
Comments