일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 체인의정석
- erc4337 contract
- 컨트렉트 동일한 함수이름 호출
- 러스트 기초
- erc4337
- 계정추상화
- ethers type
- chainlink 설명
- 러스트 기초 학습
- git rebase
- rust 기초
- ethers websocket
- 오블완
- 머신러닝기초
- Vue.js
- 스마트컨트렉트 예약어 함수이름 중복
- ethers typescript
- 러스트기초
- 스마트컨트렉트 함수이름 중복 호출
- vue기초
- 컨트렉트 배포 자동화
- multicall
- ethers v6
- Vue
- 스마트컨트렉트테스트
- ambiguous function description
- 티스토리챌린지
Archives
- Today
- Total
체인의정석
Solidity 0.5.0 버젼 오류해결 ) Invalid implicit conversion from uint256 to bytes memory requested 본문
블록체인/Solidity
Solidity 0.5.0 버젼 오류해결 ) Invalid implicit conversion from uint256 to bytes memory requested
체인의정석 2022. 1. 25. 17:46728x90
반응형
- memory (whose lifetime is limited to a function call)
- storage (the location where the state variables are stored)
- calldata (special data location that contains the function arguments, only available for external function call parameters).
먼저 0.5 버전에서의 저장공간은 3개로 구분된다.
메모리 : 콜에서만 쓰이는 부분이다.
스토리지 : 상태변화를 일으키는 부분이다.
콜데이터: 외부 함수 호출을 부르는 파라미터에서 쓰는 데이터이다.
즉 외부 함수 호출, external을 사용할때는 memory대신에 자료를 calldata에 저장해야한다.
0.5.0 버전에 대한 문서를 보고 서칭한 결과
implicit conversion 지정해 두지 않고 자료형을 암묵적으로 변형하는 행위는 업데이트가 되면서 허용되지 않고 있다.
따라서
uint256 value = abi.decode(bytes(inputData),(uint256));
다음과 같이 인코딩 된 데이터를 디코딩 할때 bytes를 inputData안에 넣어서 외부에서 받아온 calldata에 있는 inputData를 명시적으로 형태를 한번 더 지정해 주어야한다. 지정해주지 않을 시 0.5.0 버전에서는 자동 형변환 명령어가 들어가서 오류가 나는것 같다.
https://ethereum.stackexchange.com/questions/69288/abi-encode-decode-using-strings-instead-of-bytes
이는 아래의 예시 코드를 보고 하였으며, 추후 테스트코드 작성시에 제대로 작동되는지 테스트 하는 과정이 필요할 것으로 보인다.
또한 byte, byte32 두가지 타입이 주로 쓰이므로 이에 맞추어서 형태를 명시해주어야 오류가 나지 않는다.
728x90
반응형
'블록체인 > Solidity' 카테고리의 다른 글
Solidity 0.5.0 버전 ) constructor 안에서 상속해오는 컨트렉트의 생성자 넣어주는 방법 (0) | 2022.01.26 |
---|---|
Solidity Bytes vs Bytes32 (0) | 2022.01.26 |
Solidity에서 인터페이스의 상속과 단순 import의 차이 (0) | 2022.01.25 |
solidity에서의 bytes32 자료형에 대하여 (0) | 2022.01.25 |
Solidity 0.5.0 버젼 오류해결 ) TypeError: Variables cannot be declared in interfaces. (0) | 2022.01.24 |
Comments