목록BlockChain (13)
개발공부일지
목차 1. ERC 4337 2. 계정 추상화 3. ERC4337 이전에 제안된 개념 4. 가스비 대납 paymaster 5. metaTransaction 실습 6. ethers 사용하기 1. ERC 4337 ① user Operations - 프론트 페이지에서 보내는 객체(트랜잭션 형태) - 새로운 트랜잭션 pool에 요청하면 객체가 쌓임(pending상태) - EIP-2718 === 미래의 거래유형을 위해서 새로운 트랜잭션 pool 유형을 정의함 - 기존의 트랜잭션 수정하기 않기 위해서 → 이전버전과 호환이 되지않을수있기때문 - Dapp 환경에서 새로운 트랜잭션 풀에 담기위해 새로운 객체를 만들어서 요청을 보냄, → 담아놓은것을 처리하는것이 bundlers ② bundlers - user Operati..
목차 1. Proxy 2. EVM OPCODE 3. Proxy 패턴 ① 4. Proxy 패턴 ② 5. Proxy 패턴 ③ 1. Proxy - 블록체인의 장점이 불변성인데, 컨트랙트 배포하면 수정이 불가능함 - 그래서 사용하는 proxy 패턴 (버그발생이나 이벤트 추가 등등 수정할 일이 생겼을 경우) - 상태는 proxy에 보관하고, 로직부분은 대리호출을 담당하는 컨트랙트에서 담당 - 클라이언트가 직접 컨트랙트에 요청하는게 아니라 프록시에 요청 (프록시 CA주소가 바뀌지않음) - 사용하는 컨트랙트를 수정하는일이 생겼다면 프록시에 바뀐 컨트랙트CA주소를 참조해서 사용 - 클라이언트는 프록시 CA주소로 요청하면됨 - client → proxy contract(대리 호출) → 사용할 컨트랙트 → proxy 상태..
목차 1. factory contract 2. 스마트 컨트랙트의 DAO 3. checks-effects-interactions pattern 4. mutex 패턴 5. modifier (조건 논리 제어자) 1. factory contract - 컨트랙트 배포하는 로직을 작성하는 컨트랙트 - 규칙이 있는 인스턴스 생성하는 패턴 import "./ERC721.sol" contract Factory { function createContract (string memory _name, string memory _symbol) external { // ERC721 newNFT = ERC721(address) // 이미배포되어있는 인스턴스에 접근할때 사용한 방법 ERC721 newNFT = new ERC721(_n..
** ERC721(NFT) - 대체 불가능한 토큰 : 모양은 같지만 고유한 식별자가 있음. 각각의 NFT는 대체가 불가능함. - 영화티켓처럼, 티켓모양은 같지만 입장코드가 있는것과 같이 대체불가능하다는 의미 - 민팅 : 블록체인 네트워크에서 새로운 토큰을 생성하는 과정을 의미한다. - 토큰생성하는 메서드가 _mint()라서 민팅! ERC20에서 - ERC20은 생성할때 내부 데이터보다 갯수에 의미가있었는데 - ERC721은 생성할때 데이터를 포함시켜서 객체의 내용을 가지고 고유한 식별포함하고있음 - 백엔드에 업로드는 탈중앙화에 어긋나기때문에, ipfs에 업로드! - 설치 및 실행 npx create-react-app erc20 npm i web3 npm i @openzeppelin/contracts re..
1. 세팅하기 npx create-react-app erc20 npm i web3 npm i @openzeppelin/contracts remixd -s . --remix-ide "https://remix.ethereum.org/" 2. 토큰으로 랜덤 아이템 뽑기 - struct 객체 사용하기 - string[]에 임의의 이름과 각각의 url을 지정해주기 // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import "../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract MyCoin is ERC20 { constructor(string memory name, string mem..
*** 메타마스크 > 네트워크 추가 > 네트워크 직접 추가 > 작성하기 ※ 뭄바이 테스트네트워크 메타마스크에 추가하기 Network Name: Mumbai Testnet New RPC URL: https://rpc-mumbai.maticvigil.com/ Chain ID: 80001 Currency Symbol: MATIC Block Explorer URL: https://polygonscan.com/ ※ https://mumbaifaucet.com/
목차 1. 세팅하기 2. 나만의 토큰 만들기 (컨트랙트) 3. useWeb3 hook 만들기 4. 리액트로 작성하기 ** openzeppelin 설치 후 ERC20으로 나만의 토큰만들기 * react에서 web3 custom hook을 만들어서 사용하기 * remix를 사용하여 배포 진행 - 메타마스크에서 세폴리아 테스트 네트워크 사용 1. 세팅하기 npx create-react-app erc20 npm i web3 npm install @openzeppelin/contracts remixd -s . --remix-ide "https://remix.ethereum.org/" 2. 나만의 토큰 만들기 (컨트랙트) // SPDX-License-Identifier: MIT pragma solidity ^0.8..
목차 1. truffle 2. remix 3. ERC20 1. truffle - Dapps 개발을 쉽게 할수있도록 테스트환경 지원해주는 프레임워크 - 스마트 컨트랙트 파일, 배포 및 테스트 기능 npm i truffle npx truffle init npx truffle compile npx truffle migrate - npx truffle init 하면 초기세팅으로 3개의 폴더 생성 - contracts : 솔리디티 코드들을 작성한 sol파일 담아놓는 폴더 - 컴파일 진행하면 build라는 폴더 생성 → 컴파일된 파일들이 json 파일로 생성 - migrations : 컨트랙트 배포를 진행할 js코드 구문 작성 폴더 - test : 테스트 작성 폴더 - truffle.config - 네트워크 속성과..
목차 1. RPC 통신 2. 이더리움 개발 테스트 툴 3. ganache 4. Web3 라이브러리 5. 솔리디티 코드 구조 1. RPC 통신 - 요청응답은 같지만 실행하는것이 목적이라 별도의 원격제어를 위한 코딩X - 다른 주소의 공간에 프로시저를 실행 할 수 있게 하는 프로세스 간의 통신 - 일반적으로 코드작성하고 실행하면 자신의 메모리공간에서 기능하는데 - 다른 주소에 있는 함수를 실행시키고 싶을때 사용함! - 비즈니스 로직 개발에 집중할수있음!! 2. 이더리움 개발 테스트 툴 ① geth : POA, go언어로 작성되어있는 이더리움 클라이언트, chainID를 확인할 수 있는 클라이언트 - chainID : 블록체인 네트워크의 고유 식별자, 메인넷/테스트 구분 가능함 ② ganache : 로컬 개발..
목차 1. 이더리움(Ethereum) 2. 상태 변환 시스템 3. 스크립팅 4. 이더리움 어카운트 5. 메시지와 트랜잭션 6. 이더리움 GAS 1. 이더리움(Ethereum) - 비탈릭 부테린 - 차세대 스마트 컨트랙트와 탈중앙화된 어플리케이션 플랫폼 - 비트코인은 결제라는 포커스에 맞춰 구현했다면 이더리움은 탈중앙화된 어플리케이션을 제안한다! - 블록체인 기술을 사용한 대안적인 어플리케이션 - 사용자 정의 화폐와 금융 상품을 블록체인으로 표현하기 위한 컬러드 코인 - 물리적 대상의 소유권을 표현하는 스마트 자산 - 도메인 이름과 같은 비동질적 자산을 기록하는 네임 코인 - 임의적인 계약의 규칙을 구현한 코드에 의해 디지털 자산을 좀 더 편리하게 관리함! → 스마트 컨트랙트가 탄생됨 - 블록체인을 기반으..