본문 바로가기

전체 글95

Pool : first provide Liquidity 이전에 만들었던 풀에 대한 유동성 제공 테스트를 진행하였다. 첫번째 유동성은 다음과 같은 로직을 따른다. 유저가 토큰 a의 수량을 입력. 토큰 a의 수량 * 토큰 a의 시세 = 토큰 b의 시세 * 토큰 b의 수량 let amountB = (amountA * latestTokenAPrice) / latestTokenBPrice; 자동으로 b토큰의 수량이 결정이 된다. a, b 토큰을 인자값으로 전달하고 컨트렉트에서도 검증을 한다. 받은 토큰들의 양과 내부 오라클 함수 호출로 가격 조회 등을 거쳐 비율이 적합한지 체크한다. 그렇게 체크가 되면 토큰의 이동, nft의 발급을 한다. 2023. 10. 8.
DeFi Contract 작업 생각했던 것 보다 상당히 구조가 복잡하고 권한자 설정 때문에 애를 먹었다. Pool poolFactory poolLogic poolProxy poolNft priceOracle priceOracleLogic priceOracleProxy Swap Swap bittoToken(보상) erc20 Staking - 작업 전 큰 구조는 이러하다. 세폴리아 테스트넷에서 진행하며 테스트를 진행하는 것이기 때문에 실제 토큰이 아니라 erc20토큰을 배포하고 priceOracle을 통해 가격을 페깅시켜서 사용한다. 흐름은 이러하다. hardHat Scripts 비토 토큰 배포 (bitto-contarct) NFT_Deploy.js MutliDataDeploy.js (proxyaddres, logic Abi), (set.. 2023. 10. 3.
database mysql sequelize setting 하드햇에서 배포 스크립트를 모두 작성하고 필요한 데이터를 데이터베이스에 저장 후 백엔드에서 필요 데이터를 받아오려고 한다. 1. sequelize-cli 설치 npm i sequelize npm i sequelize-cli npm i mysql2 2. sequelize init sequelize init 설치를 진행하면 다음과 같은 폴더들이 생성이 된다 . |-- README.md |-- config | `-- config.json |-- migrations |-- models | `-- index.js |-- package.json |-- seeders `-- yarn.lock config : 데이터베이스 설정 파일, 사용자 이름, DB 이름, 비밀번호 등의 정보. migrations : git과 비슷.. 2023. 9. 3.
업그레이더블 컨트랙트 hardhat testCode.02 Test 항목 Initial Deployment Role-Based Access Control Proxy Upgrade Functionality New Functionality in V2 Edge Case Testing Stress Testing Maximum Supply Test 세부 항목 Initial Deployment 배포 후 토큰 세부 정보가 올바르게 설정되어야 함 Role-Based Access Control MINTER_ROLE 권한이 없는 발신자가 민팅을 시도하면 되돌려야 함 소유자가 아닌 사람이 일시 중지 및 해제를 시도하면 되돌려야 함 일시 중지 상태에서 토큰 전송을 시도하면 되돌려야 함 잘못된 매개변수로 전송 함수를 호출하면 되돌려야 함 Proxy Upgrade Functionalit.. 2023. 8. 29.
업그레이더블 컨트랙트 hardhat testCode.01 코드를 설명하기 앞서 하드햇을 사용하였고 테스트 코드를 작성하고 돌려보니 세폴리아, 괴를리는 작업이 되지 않아 기본네트워크로 테스트하였다. (지원툴) 1. 배포 테스트 각각을 아무렇게나 배포 하는 것이 아니라 얽혀있어 순서가 중요하다. LogicV1 배포 proxy 배포 LogicV2 배포 upgrade async function deployFixture() { const { owner, minter, recipient, admin } = await getSigners(); const erc20Impl = await ethers.deployContract("ERC20Impl"); await erc20Impl.waitForDeployment(); const erc20V1Address = await erc2.. 2023. 8. 28.
업그레이더블 컨트랙트 샘플 업그레이더블 컨트랙트에 대해 이전에 알아보았다. 하여 erc20 샘플을 만들고 관련 하드햇 테스트 코드까지 작성해서 마무리 하였다. 이를 정리한다. 1. Contract 종류 Erc20ImplV1 proxy storage Erc20ImplV2 1-1. Erc20ImplV1 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./bittoToken.storage.sol"; import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/security/PausableUpgrade.. 2023. 8. 28.
업그레이더블 컨트랙트 정리 업그레이더블 컨트랙트란 컨트랙트는 본래 수정할수 없다. 하지만 프록시 패턴을 사용해서 교묘하게 속임수를 쓸 수 있다. 프록시 서버를 예로 들자면 진짜 서버는 따로 있고 중간에서 연결해주는 역할을 해주는 프록시 서버의 특성을 띈다고 할 수 있겠다. 이게 가능 한 이유는 Delegatecall 때문이다. 솔리디티는 다른 컨트랙트를 호출 할때 크게 두가지 EVM opcode를 사용한다. call, delegatecall call은 다 아니 생략하고 delegatecall은 다른 컨트랙트의 코드를 사용하지만 실행 환경은 기존 컨트랙트에서 수행하게끔한다. a 컨트랙트가 b 컨트랙을 호출할때 delegatecall을 사용하면 b contract의 code를 사용하지만 스토리지는 a 컨트랙을 소모한다. 그래서 스토리.. 2023. 7. 19.
META Threads 출시와 fediverse 어제 일자로? Threads가 출시했다. 기존의 트위터와 비슷한 형식이며 텍스트 sns 위주이다. 물론 사진, 동영상 모두 가능하다. 내가 작성했던 글을 찾아 보기가 귀찮고 힘들지만 이것도 타임라인 형식으로 나열되어 있긴하다. 검색도 불가능하다. 뭔지 궁금하면 직접 깔아서 보도록 하고 fediverse 가 왜 나왔는가 threads는 곧 ActivityPub 프로토콜을 사용할 예정이다. 이게 무엇이냐 ActivityPub web3과 같이 중앙화에서 벗어나 탈중앙을 목표로 하는 프로토콜이라 보면 되겠다. 그렇다면 fediverse는 무엇인가? Fediverse ActivityPub 프로토콜을 사용해서 탈중앙화를 이루는 것을 의미한다. 이 프로토콜을 사용하는 어플리케이션들은 독자적인 서버를 유지하면서도 데이.. 2023. 7. 8.
동영상 스트리밍 사이트 : 와토 프로젝트 솔로 구현 예~~전에 와토 프로젝트를 만든답시고 모든 데이터를 로컬로 저장하다 보니 한계점이 많았었다. 하여 aws s3 , meidaconvert, lambda 등을 이용하여 플랫폼에서 사이트를 업로드 하고 컨버터와 람다가 인식을 하면 3가지 종류의 해상도를 지닌 동영상으로 컨버팅 후 다른 버킷에 업로드를 해주는 것을 구현하였다. 업로드된 m3u8 형식의 url을 백앤드로 보내고 후처리가 다 된 데이터가 몽고디비로 문자만 전달해주는 형식을 사용했다. 현재 스트리밍까지 구현 완료된 상태이고 자잘한 댓글 기능, ux ui 기능 등을 추가해야한다. 또한 와토 프로젝트의 핵심이었던 토큰 이코노미까지 조금 더 다듬어 넣어볼 생각이다. 탈중앙 거래소 구현도 목표다. 다시 코딩하러 가보까 2023. 6. 22.
토큰 이코노미에 대한 이해와 플랫폼 설계 개발을 쭉 하다 보니 뭐가되었던 토큰 이코노미가 중요하다는 생각이 들었다. 물론 자체 토큰을 사용하는 경우에 그렇다. 우리는 토큰 이코노미를 설계 하기 앞서서 기본 자본 시장에 대한 이해가 필요하다. 달러, 원화 우리는 화폐를 소모하며 살아간다. 이 화폐들은 어떤식으로 균형을 이루고 시장 경제를 조절하는가. 자세하게 들어가면 상당히 복잡하고 세밀하니 중요점만 찾아서 알아보자. 시장 경제는 수요와 공급의 상호작용을 기반으로 한 경제시스템이다. 시장에서의 수요와 공급의 변화는 물가에 영향을 미친다. 수요가 증가하면 물가 상승 압력이 생기고 반대로 수요의 감소는 물가 하락을 유발한다. 생산과 공급의 변화도 물가에 영향을 미친다. 생산량이 증가하면 물가 상승 압력이 줄어들고 생산량의 감소는 물가 상승을 초래할수.. 2023. 5. 31.