본문 바로가기

분류 전체보기95

openzzeplin 5V => upgrade contract 분석하기 오랜만에 블로그다. 이직을 해서 정신없이 프로젝트를 쳐내다가 정리를 해가며 해야할거 같아서 오랜만에 글을 써내려가겠다. 현재 내가 분석중인것은 업그레이더블 컨트랙트이다. 함수호출로 업그레이드 하는 방법을 분석중인데 그전에 하드햇에서 지원하는 라이브러리가 있어 그것을 파해쳐보겠다. 우선 transparent 패턴을 분석중이라 그것 부터 정리를 한다. 분석해보니 하드햇에서 지원하는 방법은 크게 두가지가 있는것 같다. 1. 프록시 컨트랙트 없이 라이브러리로 업그레이드 진행. 2. 내가 원하는 특정 프록시 컨트랙트 패턴을 이용한 업그레이드 진행. 2번 부터 정리한다. 필요 컨트렉트 1. v1 logic contract 2. v2 logic contract 끝! 배포 및 업그레이드 방법 전체적인 로직은 제일 마지.. 2024. 1. 20.
pool을 통한 swap 실행 이전에 pool, pool factroy, swap contract 를 분리 시켰다. 그리고 유동성 제공 이후 스왑 함수를 테스트 하였다. swap factory contract 중 function createPool( address _tokenA, address _tokenB, address feedAddressA, address feedAddressB, address swapAddress ) external onlyRole(CREATEPOOL_ROLE) returns (address pool) { require(pools[_tokenA][_tokenB] == address(0), "Pool already exists"); require( feedAddressA != address(0) && feedA.. 2023. 10. 19.
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.