일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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표준
- 오블완
- 러스트 기초 학습
- vue기초
- 프록시배포구조
- 스마트컨트렉트프록시
- 스마트컨트렉트 함수이름 중복 호출
- chainlink 설명
- 러스트기초
- 스마트 컨트렉트 함수이름 중복
- ethers websocket
- git rebase
- Vue
- ethers
- nest.js설명
- ethers type
- 스마트컨트렉트테스트
- ethers typescript
- 컨트렉트 동일한 함수이름 호출
- ethers v6
- 스마트컨트렉트 예약어 함수이름 중복
- Vue.js
- 체인의정석
- ambiguous function description
- 머신러닝기초
- multicall
- 러스트 기초
- rust 기초
- Today
- Total
목록전체 글 (494)
체인의정석
txhash로 부터 데이터를 뽑아낼 때에는 다음과 같이 뽑아내면 된다.const getTxDataFromHash = async (provider, txhash) => { const txReceipt = await provider.getTransactionReceipt(txhash); const res = {}; res.blockNumber = Number(txReceipt.blockNumber); res.gasUsed = Number(txReceipt.gasUsed); const blockTimestamp = await provider.getBlock(Number(txReceipt.blockNumber)); res.blockTimestamp = blockTimestamp.timestamp; ..
만약 mysql 데이터베이스에 시간을 UTC기준으로 시간을 넣거나, 블록체인의 blocktimestamp를 통해서 UTC시간을 뽑아내고 db에 넣고 싶을때는 아래 코드를 사용하면 된다.function getCurrentUTCDate() { const date = new Date(); return formatUTCDateToCustom(date);}function getNextUTCDate() { const date = new Date(); date.setUTCDate(date.getUTCDate() + 1); return formatUTCDateToCustom(date);}function formatUTCDateToCustom(date) { const pad = (num) => String(n..
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..