비빕빱 재료들 40

체인링크 VRF 응용 - 당첨차 추첨 컨트랙트 만들기 (2)

이전 글은 아래 링크에서 확인할 수 있다. 체인링크 VRF 응용 - 당첨차 추첨 컨트랙트 만들기 (1) 컨트랙트에서 트랜잭션이 실행되려면 가스가 필수적으로 든다. 코드의 길이와 데이터 변경 유무에 따라 필요한 가스량이 달라지기 때문에, 좋은 컨트랙트는 최소한의 가스로 최대의 효율을 내는 컨트랙트라고 배웠다. 때문에 최대의 효율을 내기 위해선 가스가 언제 덜, 혹은 더 쓰이는지 알아야 한다. 지난 글에서 짜인 코드는 효율과 가스비를 고려하지 않고 작동하기만 하는 코드였다. 이번 글에서는 가스비, 데이터량 등 환경적 제약을 고려하여 리팩토링하는 과정을 보여줄 예정이다. 1. 한 번에 1만 개의 주소를 넣을 순 없다. 데이터량에 대해 고민한 이유는 신청자 인원 수 때문이다. 컨트랙트에 약 1만 명에 가까운 주..

블록체인 뿅뿅 2024.02.07

체인링크 VRF를 활용한 추첨 컨트랙트 구현하기 (1)

최근 회사 업무 중 급하게 아래 요구사항을 가진 업무를 받았다. - 신청자를 받은 후 일정 인원의 당첨자를 뽑을 수 있다. - 당첨자 목록을 확인할 수 있다. - 위 기능이 블록체인 기술로 구현되어야 한다. - 당첨차 추첨에는 체인링크 VRF가 사용되어야 한다. 즉, 당첨차 추첨 컨트랙트를 만들어 달라는 뜻이었다. 구현이 아주 어려운 건 아니었으나 개발에 필요한 시간이 짧았기에 꽤나 험난한 여정이 되었다. 마무리 단계를 거치고 있는 지금, 정리 겸 회고를 위해 개발 여정을 글로 담아보려고 한다. 글 작성에 관해선 회사에서 허락을 받았으며 혹시나를 대비해 모든 코드를 올리진 않을 예정이다. 체인링크 VRF에 관해서 아래 게시물들을 통해 충분히 설명을 했기 때문에 간략하게만 얘기를 하겠다. 체인링크 VRF ..

블록체인 뿅뿅 2024.02.04

http-proxy-middleware 사용하기

서론 현재 팀에서는 클라이언트가 하나의 프록시 서비스를 바라보고 있고, 해당 프록시 서비스가 요청에 따라 여러 서비스를 호출하고 있다. 때문에 한 서비스에서 새로운 기능이 생겨나면 프록시 서비스가 해당 기능도 호출할 수 있도록 업데이트를 해줘야 된다. 레거시라는 걸 알고 있지만 언제 제거될 지 모르고, 그 사이에 새 기능이 추가되면 프록시 서비스도 업데이트를 해야 하는 상태이기 때문에 업데이트가 없어도 알아서 프록시를 하는 방법이 없을까 팀원과 고민해보던 중 이 라이브러리를 알게 되었다. 이에 해당 라이브러리를 사용해보면서 공부한 것들을 간단히 정리해보기로 했다. http-proxy-middleware 라이브러리 HTTP 요청 및 응답을 프록시하는 데 사용되는 미들웨어 라이브러리. 서버 간에 데이터를 전..

2023년 회고, 2024년 다짐

2023년을 맞이한 게 엊그제처럼 느껴지는데 벌써 2024년이 찾아왔다. 2024년 1월 1일이라니... 이래저래 새해는 늘 설레는 법이다. 생일이기도 하고, 새로운 시작이기도 하니까. 사실 날짜라는 개념이 없었다면 새해고 뭐고 없었을 텐데, 날짜라는 걸 발명한 사람은 참 대단한 것 같다. 덕분에 생일도 축하할 수 있고, 새해도 맞이하면서 하루가 특별해질 수 있고, 소중해질 수 있게 되었으니 말이다. 나도 생일을 축하할 겸 오늘을 좀 더 특별하게 여기도록 하기 위해 2023년을 어떻게 보냈는지 셀프 회고를 해보기로 했다. 먼저 작년, 그러니까 2023년 1월에 적었던 목표는 아래와 같았다. - 스터디 3개 이상 도전해서 짧든 길든 도중 이탈 없이 끝까지 가보기 - 기술 블로그에 게시물 한달에 하나는 투고..

기타 딩가딩가 2024.01.01

[DataDog] dd-trace 적용 (with. pino 로거)

개발환경 : Typescript, NestJS, DataDog Agent가 세팅되어 있음 서론 우리 팀은 자체 제작 로깅 모듈, 트레이싱 전용 객체를 만들어 로깅을 하고 있었다. 그러나 다른 팀과 로깅 모듈을 통일시키고, 기존에 사용 중이었던 데이터독으로 트레이싱도 가능케 하자는 의견이 나와 진행하게 되었다. 이에 데이터독에서 제공하는 dd-trace에 대해 알아보고 적용하기까지의 이야기를 간략하게 정리해보기로 했다. APM이란? APM이란 Application Performance Monitoring 의 줄임말로, 애플리케이션 성능 모니터링를 말한다. APM은 말 그대로 실시간 데이터를 이용해 애플리케이션의 성능과 유저의 사용 경험을 모니터링하는 프로세스이다. APM 서비스는 skywalking, pi..

기타 딩가딩가 2023.12.05

체인링크 VRF 사용해보기 (3) Subscription과 컨트랙트 연동하기

이전 글 보러가기 체인링크 VRF 사용해보기 (1) 체인링크란? 체인링크 VRF 사용해보기 (2) Subscription Manager 사용하기  컨트랙트 생성 및 배포 이제 Subscription에 컨트랙트를 등록할 것이다. 컨트랙트는 체인링크에서 제공하는 샘플 코드를 조금 변경해서 사용할 것이다. 이 컨트랙트는 VRF를 이용해 요청하는 주소마다 한국의 성씨 20개 중 하나를 랜덤으로 지정해 줄 것이다. // SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol"; import "@chainlink/contracts/sr..

블록체인 뿅뿅 2023.06.17

체인링크 VRF 사용해보기 (2) Subscription Manager 사용하기

이전 글 보러가기 체인링크 VRF 사용해보기 (1) 체인링크란? 체인링크 VRF를 사용하는 방법은 크게 두 가지다. 1) 체인링크 VRF 컨트랙트와 직접 통신하기 2) 체인링크 Functions를 이용해 간접적으로 사용하기 API를 사용하면 훨씬 간단하게 구현이 가능하지만 비용이 더 들기 때문에 1번 방법으로 구현할 것이다. 환경은 뭄바이 테스트넷 기준이다. 체인링크 VRF를 사용하려면 기본적으로 Subscription Manager에서 아래와 같은 세팅이 필요하다. 1) Subscription 생성 2) 생성한 Subscription에 Fund 추가 3) 생성한 Subscription에 Consumer 추가 1) Subscription 생성 먼저 Subscription이 무엇인지에 대한 설명이 필요할 ..

블록체인 뿅뿅 2023.05.28

체인링크 VRF 사용해보기 (1) 체인링크란?

블록체인은 안전한가? 블록체인은 데이터 분산 처리 기술로, 네트워크에 참여하는 모든 사용자가 모든 거래 내역 등의 데이터를 분산 및 저장하는 기술을 지칭하는 말이다. 분산 저장을 하기 때문에 해킹이 거의 불가능하고 중앙 관리자가 없다는 게 특징으로 높은 신뢰성과 보안성을 자랑한다. 그렇다면 블록체인은 100% 안전한 기술인 걸까? 오라클 문제 블록체인에서는 블록체인 밖의 데이터를 오프체인off-chain, 블록체인 안의 데이터를 온체인on-chain이라 한다. 이 때 오프체인 데이터가 온체인 데이터로 바꾸는 것을 오라클oracle이라 한다. 오라클은 현실 세계와 블록체인 중간에서 데이터를 블록체인 안에 넣어주는 사람 또는 장치가 될 수 있다. 그럼 생각해보자. 블록체인 내부에서는 데이터 위변조가 불가능하..

블록체인 뿅뿅 2023.04.23

오픈제플린 + 온라인 RemixIDE 로 간단 컨트랙트 구현하기

지난 번에는 하드햇 튜토리얼로 프레임워크를 이용한 컨트랙트의 작성부터 배포를 다뤘다. 이번에는 표준 사양의 컨트랙트를 오픈제플린을 사용해 온라인으로 쉽게 작성하는 방법에 대해 적어보려고 한다. 솔리디티 문법에 대한 기초적인 이해만 있으면 따로 준비할 건 없기에 블록체인 개발을 맛보기로 해보고 싶은 사람한테 추천한다! 👍 순서는 다음과 같다. - 왜 오픈제플린을 사용하는가? - 오픈제플린이란? - 오픈제플린 위자드를 활용한 간단 컨트랙트 구현 - 참고 자료 왜 오픈제플린을 사용하는가? 블록체인 네트워크에서는 유통할 수 있는 토큰의 호환성을 위해 ERC20, ERC721, ERC1155 등의 표준 사양을 제공하고 있다. 예시로 ERC20은 아래와 같은 사양을 가지고 있다. // METHOD function ..

블록체인 뿅뿅 2023.04.09

HardHat 튜토리얼 2편

HardHat Tutorial 을 직접 번역해 봤습니다. 😎 더불어 개인적으로 유용했던 팁 또는 이해하는데 도움이 되는 개념들을 적어봤습니다. >> 사용 스펙 MacOS InteliJ IDE Node.js TypeScript npm Solidity Polygon 이전 편은 아래 링크에서 확인할 수 있습니다. 2023.02.24 - [블록체인 뿅뿅] - HardHat 튜토리얼 1편 5. 컨트랙트 테스트하기 스마트 컨트랙트는 구동할 때마다 돈이 들기 때문에 반드시 돈이 들지 않는 테스트를 짜야 한다. 여기서는 컨트랙트를 테스트하기 위해 개발용 로컬 이더리움 네트워크인 hardhat를 사용한다. Hardhat에 내장되어 있어 기본 네트워크로 사용되며 따로 세팅을 할 필욘 없다. 테스트는 ethers.js와 m..

블록체인 뿅뿅 2023.03.09