일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- nest.js설명
- 스마트 컨트렉트 함수이름 중복
- 러스트 기초
- 머신러닝기초
- rust 기초
- 스마트컨트렉트프록시
- Vue
- 스마트컨트렉트 함수이름 중복 호출
- 컨트렉트 배포 자동화
- Vue.js
- ambiguous function description
- vue기초
- ethers
- ethers v6
- 프록시배포구조
- 체인의정석
- ethers type
- git rebase
- 스마트컨트렉트 예약어 함수이름 중복
- 오블완
- 스마트컨트렉트테스트
- SBT표준
- 러스트 기초 학습
- ethers websocket
- ethers typescript
- chainlink 설명
- multicall
- 티스토리챌린지
- 컨트렉트 동일한 함수이름 호출
- 러스트기초
- Today
- Total
목록분류 전체보기 (495)
체인의정석
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..
패스키는 일반적인 블록체인상의 검증 방식인 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);해당 라이브..