본문 바로가기

블록체인 backEnd15

Foundry 학습하기 장점 자바 기반 개발환경 대비 실행속도가 빠르다. 솔리디티만으로 테스트 코드를 작성 가능하다 유용한 테스팅 라이브러리 및 내장도구가 존재한다 하드햇과 호환이 가능하다 단점 러닝커브 업그레이더블 플러그인 하드햇을 구성하여 업그레이드 배포만 하드햇 사용으로 우회 가능 설치 1. curl -L https://foundry.paradigm.xyz | bash 2. foundryup 프로젝트 생성 $ forge init yourProjectName . ├── foundry.toml ├── lib │ └── forge-std │ ├── foundry.toml │ ├── lib │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── package.json │ ├── README.md │ ├─.. 2024. 1. 25.
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.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.