일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nest.js설명
- SBT표준
- 러스트기초
- 스마트컨트렉트 함수이름 중복 호출
- ethers v6
- rust 기초
- ethers websocket
- 스마트컨트렉트테스트
- Vue
- ethers
- 러스트 기초
- 체인의정석
- nestjs 튜토리얼
- Vue.js
- 스마트 컨트렉트 함수이름 중복
- git rebase
- 프록시배포구조
- multicall
- 컨트렉트 배포 자동화
- 머신러닝기초
- 스마트컨트렉트 예약어 함수이름 중복
- 컨트렉트 동일한 함수이름 호출
- vue기초
- ambiguous function description
- 러스트 기초 학습
- ethers type
- 스마트컨트렉트프록시
- ethers typescript
- 깃허브명령어
- chainlink 설명
- Today
- Total
목록블록체인/Solidity (68)
체인의정석
트랜잭션 실행 전에 먼저 아래와 같이 estimateGas를 쓰면 트랜잭션을 보내기 전에 오류 메세지를 받아올 수 있다.contract.someMethod.estimateGas(arg0, arg2)그런데Error: execution reverted (unknown custom error)이런식으로 에러가 날 수 있다.Error: execution reverted (unknown custom error) (action="estimateGas", data="0xe2517d3f0000000000000000000000001ff0718d46e7d2b30995e52caf83b5f1916a975b2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca40", r..
source : https://github.com/makerdao/multicall/blob/master/src/Multicall2.solmulticalldefi의 경우 다양한 call을 한번의 화면에서 불러와야 한다. 이런 경우 시간이 오래걸리기 때문에 여러번의 call을 한번에 해주는 multicall이 나오게 되었다.해당 로직은 defi 뿐 만 아니라 다양한 Dapp에서 활용이 될 수 있으며 페이지 로딩 시간을 최소화 시켜 줄 수 있어 중요하다.컨트렉트에 조회 함수를 실행하기 위해서는 target (조회할 컨트렉트 주소)와 callData (call에 대한 실질적인 내용) 2가지가 있으면 조회가 가능하다.해당 정보를 모두 담고 있는 Call을 다음과 같이 구조체로 만들면 컨트렉트에서 직접 call을..
요청에 따라 컨트렉트를 작성하고 있었는데, 컨트렉트 내부에서 byte타입을 string으로 변환하려면 바로 형변환이 안되고 오류가 났었다.string만 받는 기본 ERC721의 tokenURI에 bytes를 넣고 함수내부적으로도 가져와서 사용해야 하는 상황이다.이런 경우에는 형변환을 추가적으로 해주어야 하는데 아래 함수를 쓰면 된다. 이건 stack overflow에서 가져왔다.https://ethereum.stackexchange.com/questions/126899/convert-bytes-to-hexadecimal-string-in-solidity Convert bytes to hexadecimal string in solidityIn a smart contract I have stored a by..
이번에 서명 검증 로직을 구현하면서 오랜만에 활용 및 정리를 해봤다.기본 예제 학습일단 아래 예제가 검증 로직을 이해하기에 정말 편리하고 코드도 직관적이다.https://solidity-by-example.org/signature/ Solidity by Example solidity-by-example.org// SPDX-License-Identifier: MITpragma solidity ^0.8.24;/* Signature VerificationHow to Sign and Verify# Signing1. Create message to sign2. Hash the message3. Sign the hash (off chain, keep your private key secret)# Verify1. R..
0. Open zepplin wizard총 3개의 컨트렉트가 필요하다.- 오픈제플린 위자드에서 보면 DAO 중 ERC20토큰 중 ERC20 Vote (이건 투표용 토큰이 된다)- DAO코드 내부의 TimelockController가 이용할 TimelockController (이건 트레져리가 된다.)- 위 2개의 설정을 이어받은 DAO (이게 DAO 컨트렉트이다.)모두 코드들이 제공되기 때문에 쉽게 구할 수 있다.https://wizard.openzeppelin.com/#erc20 OpenZeppelin Contracts WizardAn interactive smart contract generator based on OpenZeppelin Contracts.wizard.openzeppelin.com참고..
1. create, create2, create3 차이점https://blog.solichain.com/the-ultimate-guide-to-create-create2-and-create3-cc6fe71c6d40 The Ultimate Guide to create, create2 and create3Exploring Ethereum’s ‘create’, ‘create2’ EVM opcodes & ‘create3’ library: Deployment tools for the modern smart contract developer.blog.solichain.com일반적인 배포는 create, 미리 생성된 주소를 알 수 있는 것은 create2, 다중 체인 배포시에 동일한 주소로 활용가능한 것은 creat..
TypeError: ambiguous function description (i.e. matches해당 에러는 solidity에서 동일한 함수 이름으로 2개의 함수를 작성했을 때 어떤 함수를 부르는지 정확히 명시하지 못해서 나는 에러이다. 솔리디티에서는 오버로딩이 가능하여 동일한 이름으로 2개의 함수를 만들 수는 있지만 변수명과 타입을 다르게 해서 만들어 줘야한다.오픈제플린과 같은 외부 라이브러리를 써서 여러 컨트렉트를 상속관계로 짜서 만들 때 이미 구현된 함수를 다시 한번 작성하는 경우 위와 같은 에러가 종종 발생하기도 한다.https://github.com/ethers-io/ethers.js/issues/4296 "ambiguous function description" error when contr..
상황 : nft의 홀더리스트 조회를 백엔드 작업 없이 정확하게 리턴하도록 nftFactory에서 리스트를 가져와서 nft 주소를 입력하면 누가 어떤 tokenID를 가지고 있는지 구현한 상황문제 : 한 홀더당 가지고 있는 nft의 수가 6500개가 넘어가면 (조회함수에서 리턴하는 배열에 6500개 이상의 데이터가 들어갈 시) 오류 발생, 여러 컨트렉트 동시 조회 시에는 이중 배열을 사용하여 100개가 넘는 종류의 nft를 가지고 잇을시 오류 발생.요약 : 조회함수를 쓰더라도 몇개의 데이터까지 다룰 수 있는지 테스트 필요. 조회 함수더라도 네트워크에 따라서 연산 가능한 양과 인출 가능한 데이터가 다르며 생각보다 그 값은 크지 않음.해결 방안 : 유저리스트, nft정보 조회를 조회 컨트렉트로 따로 파서 만들..