블록체인 뿅뿅 8

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

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

블록체인 뿅뿅 2024.02.07

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

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

블록체인 뿅뿅 2024.02.04

체인링크 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

HardHat 튜토리얼 1편

HardHat Tutorial 을 직접 번역해 봤습니다. 😎 더불어 개인적으로 유용했던 팁 또는 이해하는데 도움이 되는 개념들을 적어봤습니다. >> 사용 스펙 MacOS InteliJ IDE Node.js TypeScript npm Solidity 1. Overview HardHat 초심자들을 위한 튜토리얼 이 튜토리얼은 빠르고 간단하게 컨트랙트 개발 환경을 구축하는 걸 목표로 한다. 이더리움 기반 구축을 용이하게 하는 개발 환경인 HardHat을 사용하면 스마트 컨트랙트 및 DApp 구축 프로세스의 반복 작업을 관리 및 자동화할 수 있으며, 관련 워크플로우에 더 많은 기능을 쉽게 도입하도록 만든다. 또한 개발을 위한 로컬 이더리움 네트워크인 Hardhat 네트워크를 통해 컨트랙트를 배포, 테스트 실행,..

블록체인 뿅뿅 2023.02.24