일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 러스트 기초 학습
- 체인의정석
- 스마트컨트렉트 함수이름 중복 호출
- ethers websocket
- 계정추상화
- ambiguous function description
- 스마트컨트렉트테스트
- ethers typescript
- 머신러닝기초
- Vue.js
- 오블완
- multicall
- 러스트기초
- chainlink 설명
- vue기초
- 컨트렉트 동일한 함수이름 호출
- ethers
- erc4337
- 티스토리챌린지
- ethers v6
- 스마트 컨트렉트 함수이름 중복
- Vue
- SBT표준
- 스마트컨트렉트 예약어 함수이름 중복
- 러스트 기초
- 컨트렉트 배포 자동화
- ethers type
- erc4337 contract
- git rebase
- rust 기초
- Today
- Total
목록전체 글 (496)
체인의정석
계정추상화를 이용한 코드를 3번째 짜면서 이제 좀 익숙해졌기에 잊지 않기 위해서 여기에 핵심 내용들을 다시 정리해둔다.구현 전에 체크해야할 사항들먼저 계정추상화의 현재 최신 버전인 0.7.0과 0.6.0 은 userOp의 구성요소가 다르다. 0.7.0이 userOp를 더 간소화 시켰기에 가스비가 더 효율적이지만 0.6.0으로 구현된 프로젝트들도 많기 때문에 버전을 항상 체크해야한다. "@account-abstraction/contracts": "^0.6.0",해당 모듈을 사용하면 된다. 해당 코드는 eip 4337을 제안한 팀에서 만들다 보니 교과서처럼 보고 쓸 수 있다.또한 각 버전별로 호환되는 오픈제플린 버전이 필요한데 0.6.0 버전의경우 "@openzeppelin/contracts": "^4.9...
VRF(Verifiable Random Function)는 검증 가능한 랜덤 함수로, 블록체인 환경에서 안전하고 예측 불가능한 난수를 생성하는 데 사용됩니다. VRF의 주요 특징은 다음과 같습니다:예측 불가능성: 입력값과 비밀키를 모르는 사람은 출력을 예측할 수 없습니다.검증 가능성: 공개키를 사용하여 출력의 정당성을 검증할 수 있습니다.일관성: 동일한 입력과 비밀키에 대해 항상 같은 출력을 생성합니다.@kenshi.io/node-ecvrf 모듈은 Node.js 환경에서 VRF 기능을 구현한 라이브러리입니다. 이 모듈의 주요 함수들은 다음과 같습니다:prove(secretKey, message): 주어진 비밀키와 메시지를 사용하여 VRF 증명을 생성합니다.verify(publicKey, message, ..
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..