일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스마트컨트렉트 함수이름 중복 호출
- chainlink 설명
- 깃허브명령어
- 스마트컨트렉트테스트
- 러스트 기초
- 스마트 컨트렉트 함수이름 중복
- 스마트컨트렉트프록시
- 머신러닝기초
- multicall
- ethers typescript
- vue기초
- 러스트기초
- Vue.js
- 컨트렉트 동일한 함수이름 호출
- ethers
- nest.js설명
- 컨트렉트 배포 자동화
- ethers v6
- 프록시배포구조
- ethers websocket
- 체인의정석
- 러스트 기초 학습
- 스마트컨트렉트 예약어 함수이름 중복
- SBT표준
- ambiguous function description
- Vue
- git rebase
- ethers type
- nestjs 튜토리얼
- rust 기초
- Today
- Total
목록블록체인/Solidity (68)
체인의정석
다음과 같이 오류가 나서 한참을 해메었다. https://forum.openzeppelin.com/t/you-are-trying-to-create-a-contract-factory-for-the-contract-which-is-abstract-and-cant-be-deployed/11730/3 You are trying to create a contract factory for the contract, which is abstract and can't be deployed Hello @mansijoshi17 if the compiler forces the contract to be marked as an abstract contract, that is because there are function th..
https://docs.soliditylang.org/en/v0.5.0/contracts.html?highlight=constructor#constructors Contracts — Solidity 0.5.0 documentation Contracts in Solidity are similar to classes in object-oriented languages. They contain persistent data in state variables and functions that can modify these variables. Calling a function on a different contract (instance) will perform an EVM function cal docs.solid..
솔리디티 자료형을 다루다 보니 bytes와 bytes32에 대한 혼동이 있어 정리를 하였다. 우선 결과만 말하자면 bytes는 byte[]와 같은 의미를 가진다. bytes32는 고정길이 배열이기 때문에 컨트렉트 안과 밖 사이의 전달이 가능하다는 점이다. 가변 길이의 배열은 interface나 ABI가 지원을 하지 않기 때문에 사용할 수가 없다. web3에서 컨트렉트의 전송은 가능하지만 컨트렉트끼리의 전송은 되지 않는다고 보면 된다. 또한 고정이 아닌 가변 길이 베열의 경우 memory를 변수 앞에 넣어주어야 에러가 나지 않는다. 결론 1. 사이즈가 작아도 되는 경우 bytes32 사용 2. 외부호출에 쓰이는 경우 bytes32 사용 3. 사이즈가 큰 경우 byte 사용 https://ethereum.s..
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). https://ethereum.stackexchange.com/questions/63247/calldata-keyword-as-parameter-in-solidity-v0-5-0-function calldata keyword as parameter in solidity v0.5.0 f..
인터페이스는 external로 정의를 한다. 이 경우 상속을 받으면 불러오거나 사용이 불가능하다. 따라서 상속을 해오지 않고 인터페이스를 import 만 해서 사용한다. 만약 인터페이스를 import 하는 경우 덮어써서 사용하는 방법인데 0.5.0 버전까지는 같은 이름으로 다시 작성을 하면 되며 다른것은 override 변수를 씌워주어야 한다. 인터페이스의 경우 활용법이 매우 햇갈리는것 같은데 정리된 사항은 다음과 같다. 1. 인터페이스의 경우 external로 통일한다. 2. 인터페이스의 경우 상속을 하면 오버라이딩을 통하여 사용을 한다. 3. 상속을 하지 않고 import만 하는 경우 함수 그대로 다른 컨트렉트의 주소를 넣어서 외부 호출을 할 때 사용한다. 4. 컨트렉트의 효율성을 위하여 하위 단계의..
폴리곤의 pos 브릿지에서는 토큰의 타입등과 같이 이벤트로 남기는 값에 있어서 주소값을 제외하고는 bytes32를 남긴다. 이에 대해 찾아보니 bytes32는 일반 byte에 비하여 용량을 적게 사용한다고 한다. 가스비를 최대한 줄여야 하기 때문에 bytes32를 자주 쓰는것으로 보인다. 다음은 이더리움에 있는 테더의 주소이다. https://etherscan.io/address/0xdAC17F958D2ee523a2206206994597C13D831ec7#code Tether: USDT Stablecoin | 0xdAC17F958D2ee523a2206206994597C13D831ec7 The Contract Address 0xdAC17F958D2ee523a2206206994597C13D831ec7 pag..
상속관계를 최대한 가볍게 하기 위하여 인터페이스 부분에 mapping을 넣어 놨었는데 메핑처럼 변수들은 인터페이스에서 정의가 되면 안된다. 인터페이스에서 정의되는 것은 함수 또는 이벤트여야 한다. 이를 지키지 않을 경우 TypeError: Variables cannot be declared in interfaces. 와 같은 컴파일 에러가 나게 된다. 따라서 메핑을 불러와서 조회에 쓰는 경우에는 조회를 하는 함수를 external로 인터페이스에서 만들어서 보여주는 것이 맞다. 메핑 자체를 public으로 보여주지 않고 내부적으로만 접근 가능하게 해놓고 external로 해두는 이유가 이렇게 인터페이스화를 하여 상속을 하여 상속 관계를 깔끔하게 정리해주기 위함이 아닌가 하는 생각이든다. 아무튼 오류 해결을..
인터페이스의 경우 결국 외부에서 호출해와서 external call을 해야하는 것이기 때문에 public은 제외하고 external만 정의해야 한다. https://github.com/ethereum/ethereum-org/issues/809 Functions in interfaces should be declared external. TokenERC20 Contract · Issue #809 · ethereum/ethereum-org Hi, I am receiving the following error when using the TokenERC20: interface tokenRecipient { function receiveApproval(address _from, uint256 _value, add..