일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SBT표준
- ethers typescript
- erc4337
- ambiguous function description
- 러스트기초
- 오블완
- 스마트컨트렉트테스트
- 컨트렉트 배포 자동화
- 체인의정석
- 러스트 기초 학습
- 티스토리챌린지
- 러스트 기초
- 머신러닝기초
- rust 기초
- ethers v6
- ethers type
- 스마트 컨트렉트 함수이름 중복
- 스마트컨트렉트 함수이름 중복 호출
- vue기초
- ethers websocket
- Vue.js
- Vue
- 컨트렉트 동일한 함수이름 호출
- git rebase
- 스마트컨트렉트 예약어 함수이름 중복
- multicall
- 계정추상화
- ethers
- chainlink 설명
- erc4337 contract
- Today
- Total
목록전체 글 (500)
체인의정석
node.js에서 mysql2를 사용하여 상호작용 하는 코드는 다음과 같다.const mysql = require('mysql2');const { logger } = require('./logger');require("dotenv").config();const MYSQL_HOST = process.env.MYSQL_HOST const MYSQL_PORT = process.env.MYSQL_PORTconst MYSQL_DATABASE = process.env.MYSQL_DATABASE const MYSQL_USER = process.env.MYSQL_USERconst MYSQL_PASSWORD = process.env.MYSQL_PASSWORD// Promisify the connection.query m..
코드를 서버에 올리게 되면서 logger에 대한 경로나 환경변수 분리 등을 정리해봤다.먼저 로그를 남기는 경우 winston과 winston-daily-rotate-file을 사용하였다. "winston": "^3.17.0", "winston-daily-rotate-file": "^5.0.0",이렇게 2개를 이용하면 로그 레벨 설정과 파일 관리가 편리하였다.winston 사용방법은 아래에 정리를 따로 해둔것이 있다.https://it-timehacker.tistory.com/524 winston으로 백엔드 로그 관리하기여태까지 로그 관리의 경우 log4.js로 이미 진행중인 백엔드에 온보딩하여 남긴 경험밖에 없었는데, 따로 이벤트 봇을 만들게 되어 여기서 winston으로 로그 ..

어떤 행을 수정할 때 키 값으로만 접근하도록 기본값이 설정되어 있는 에러이다.이를 해결하기 위해서는 mysql workbench의 설정값을 바꿔주거나 Settings 먼저 누르고맨 닡에 SafeUpdates를 해제해 주면 된다.아니라면 일회성으로는set sql_safe_updates=0;명령어를 실행시켜 주면 된다.

트랜잭션 실행 전에 먼저 아래와 같이 estimateGas를 쓰면 트랜잭션을 보내기 전에 오류 메세지를 받아올 수 있다.contract.someMethod.estimateGas(arg0, arg2)그런데Error: execution reverted (unknown custom error)이런식으로 에러가 날 수 있다.Error: execution reverted (unknown custom error) (action="estimateGas", data="0xe2517d3f0000000000000000000000001ff0718d46e7d2b30995e52caf83b5f1916a975b2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca40", r..
패스키는 일반적인 블록체인상의 검증 방식인 ECDSA서명과 다른 서명 로직이 들어가게 된다.계정추상화의 계정추상화는 ECDSA서명을 통한 예제를 지원한다. 하지만 각 유저들이 보유하는 SmartAccount에 P256 서명을 검증하는 로직을 만들어야 계정추상화에 패스키까지 적용할 수 있다.다행히 P256Verifer는 오딧 받은 유명한 공개 라이브러리가 있다. (https://p256.eth.limo/)mport "p256-verifier/P256.sol";bytes32 hash; // message hashuint256 r, s; // signatureuint256 x, y; // public keybool valid = P256.verifySignature(hash, r, s, x, y);해당 라이브..
account abstraction의 기본 예제에서는 getAddress라는 컨트렉트 함수가 있어 ethers.js의 getAddress가 대신 호출되어 오류가 난다. 또한 erc721 기본 예제에서도 함수이름은 동일하나 파라미터 개수만 다른 safeTransferFrom과 같은 함수가 존재한다.이러한 함수들을 그냥 호출하려고 하면"TypeError: ambiguous function description (i.e. matches "safeTransferFrom(address,address,uint256)", "safeTransferFrom(address,address,uint256,bytes)") (argument="key", value="safeTransferFrom", code=INVALID_ARG..
account abstraction의 기본 예제에서는 getAddress라는 컨트렉트 함수가 있어 ethers.js의 getAddress가 대신 호출되어 오류가 난다. 또한 erc721 기본 예제에서도 함수이름은 동일하나 파라미터 개수만 다른 safeTransferFrom과 같은 함수가 존재한다.이러한 함수들을 그냥 호출하려고 하면"TypeError: ambiguous function description (i.e. matches "safeTransferFrom(address,address,uint256)", "safeTransferFrom(address,address,uint256,bytes)") (argument="key", value="safeTransferFrom", code=INVALID_ARG..
source : https://github.com/makerdao/multicall/blob/master/src/Multicall2.solmulticalldefi의 경우 다양한 call을 한번의 화면에서 불러와야 한다. 이런 경우 시간이 오래걸리기 때문에 여러번의 call을 한번에 해주는 multicall이 나오게 되었다.해당 로직은 defi 뿐 만 아니라 다양한 Dapp에서 활용이 될 수 있으며 페이지 로딩 시간을 최소화 시켜 줄 수 있어 중요하다.컨트렉트에 조회 함수를 실행하기 위해서는 target (조회할 컨트렉트 주소)와 callData (call에 대한 실질적인 내용) 2가지가 있으면 조회가 가능하다.해당 정보를 모두 담고 있는 Call을 다음과 같이 구조체로 만들면 컨트렉트에서 직접 call을..