일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- useEffect clean up
- express실행
- cookie-parser 만들어보기
- mysql wsl
- javascript기초
- 블록 만들기
- FormData()
- 라우터미들웨어 분리
- express router
- 아이디 중복체크기능
- 비동기파일업로드
- buffer.from
- OAuth 카카오
- Uncaught Error: could not find react-redux context value; please ensure the component is wrapped in a <Provider>
- 라우터와 미들웨어
- 세션으로 로그인 구현
- ws 라이브러리
- express.static
- express session
- JWT 하드코딩
- 라우터 분리
- useContext
- next 매개변수
- node.js path
- css기초
- JWT 로그인 기능 구현
- 라우트 매개변수
- 시퀄라이즈 기본설정
- JWT 만들어보기
- nodejs파일업로드
- Today
- Total
목록BlockChain (35)
즐코
dApp store 프로젝트 시작 전 자유로운 테스트를 위해 프라이빗 네트워크를 구축해보았다. ganache나 다른 Rinkeby같은 testnet을 써도되지만 가나쉬는 서버를 끄면 계정정보 및 블록 정보가 초기화 되버리고, 다른 테스트넷 같은 경우 테스트용 이더를 받아와야하고, 거래 성사 시 시간이 조금 걸리는 단점이 있어 테스트하기엔 살짝 불편하다. 나중에 플젝 진행 시 거래, 판매 등의 테스트도 수월하게 하고, 도커도 처음 사용해볼겸,, 겸사겸사 만들어보았다. 합의 알고리즘 모든 노드가 동일한 하나의 체인을 가질 수 있게끔 해주기 위해서 합의 알고리즘을 선택해야 하는데 대표적으로 POW, POS, POA 등이 있다. 메인넷은 POW 작업증명 방식을 사용하는데, geth는 프라이빗 네트워크 구성 시 ..
해당 포스팅은 정리할까말까 고민하다가 3일 내리 놀다 굳어버린 뇌를 깨워주기위해 정리해본다,,, 저번 포스팅에선 ERC721과 그를 상속해서 nft 리스트 인덱스 정리 및 tokenId를 생성해주는 기능을 하는 ERC721Enumerable 의 흐름과 일부 함수들에 대해서 정리해보았다. 하지만 이러한 컨트랙트들은 다 openzeppelin에서 제공해주기 때문에 이번 포스팅에선 굳이 저번 포스팅처럼 일일이 컨트랙트를 작성하지 않고 오픈제플린에서 필요한 컨트랙트들을 import해서 쓸 것이다. 따라서 ,이번엔 ERC721 즉 nft 민팅, 위임, 전송과 관련된 컨트랙트와 그에 따른 nft 판매/구매를 담당하는 컨트랙트에 대해서 작성해보고자 한다. 또한 다음 포스팅에서 Next를 사용하여 nft 민팅 및 거래..
이더리움에서 제공해주는 토큰 규격 문서를 참고하여 https://eips.ethereum.org/EIPS/eip-721 ERC-721 을 직접 작성해보면서 각 함수가 어떤 동작을 하는지 익혀보려고 한다. 1/ ERC-721 인터페이스 작성 : IERC-721 // truffle/contracts/ERC721/IERC721.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; interface IERC721 { // 토큰 전송 시 호출하는 이벤트 event Transfer(address indexed _from, address indexed _to, uint indexed _tokenId); // 특정 토큰 위임 시 호출하는 이벤트 event Appr..
1/ ERC-721 현재까지 공부한 ERC-20 토큰의 경우 토큰 100개가 발행되었다면 토큰 하나하나의 의미가 같다. 풀어서 말하자면 내 계정이 보유한 토큰 1개와 다른 계정의 토큰 1개는 의미가 같다. 하지만, ERC-721은 다르다. 토큰 100개가 있다면 각각의 100개는 의미가 다르다. 마치 영화 티켓처럼 같은 영화관에서 같은 영화를 상영할지라도 좌석넘버가 다른 것처럼 하나하나 다른 토큰으로 본다. 이걸 코드로 표현하자면 토큰 하나하나에 고유키값을 부여해주는 것이다. 따라서 ERC-721을 Non-Fungible Token, NFT 라고 한다. 따라서, ERC-721 토큰 상에는 ERC-20에는 없는 특이한 상태변수가 owned가 존재한다. 토큰의 고유 키값 (uint)으로 해당 토큰의 소유자를..
이번엔 ERC20을 직접 작성하지 않고, 이더리움 재단에서 관리하는 오픈소스인 openzeppelin를 설치하여 그 모듈에서 제공해주는 ERC20 컨트랙트를 상속받아 나만의 토큰을 작성해본다. 또한 발행한 토큰과 이더의 swap에 대한 컨트랙트도 따로 작성하여 토큰-이더를 서로 주고 받았는데 이에 대한 내용을 중점적으로 포스팅해본다. 1. truffle 프로젝트 상에서 openzeppelin-solidity 라이브러리 설치 node_modules/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol 이 우리가 상속받으려는 ERC20 컨트랙트 이다. $ truffle init $ npm init -y $ npm i openzeppelin-solidity 2. 나만..
이전 포스팅에서 ERC-20의 interface IERC20 과 이를 상속한 ERC20을 정리해보았다. (이전 포스팅 : https://yjleekr.tistory.com/102?category=1284408 ) 이 ERC20 규격을 바탕으로 나만의 토큰을 작성해보고자 한다. 나만의 토큰 - YjToken 작성해보기 1/ 우선 아래 두 사실을 인지하고 작성해야한다. - 해당 스마트 컨트랙트를 배포함과 동시에 토큰이 발행(mint)된다. 즉, 스마트 컨트랙트 배포자가 토큰의 발행자 (owner)이다. - 해당 토큰은 이더로 살 수 있는 토큰이다. // SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "./ERC20.sol"; contract ..
오늘은 ERC20 규격을 표현하는 IERC20 과 그에 따른 ERC20, 또 이걸 상속하는 ERC20 토큰을 만드는 걸 배웠다. 우선 ERC-20을 다루기 전에 솔리디티의 인터페이스에 대해 정리해보려고 한다. 이전에 크립토 좀비 레슨2를 하면서 잠깐 마주쳤던 거 같은데 ( https://yjleekr.tistory.com/99?category=1284408 ) 살짝 개념이 모호해서 다시 정리해 본다. interface 인터페이스 다른 컨트랙트와 상호작용하기 위해서 인터페이스가 존재한다고 하는데... 사실 이 말 자체가 애매해서 잘 이해가 안되므로 아래의 세부적인 특징으로 이해하고 넘어가려고 한다. 1. 상속받는 컨트랙트들을 위한 하나의 규격이라고 생각하면 될 듯하다. (자식 컨트랙트들을 위한 가이드라인..
Payable 솔리디티만이 가지고 있는 특이한 키워드인 payable 에 대해서 알아보기 위해 사과를 이더(ether)로 사고 환불할 수 있는 스마트 컨트랙트를 작성해보려고 한다. payable을 직역하면 "지불가능한, 지불해야하는" 이란 뜻이다. 솔리디티 언어 자체가 코인이나 토큰을 다루는 언어이기 때문에 이 payable 이란 키워드가 필요한 것이다. 따라서 스마트 컨트랙트 내에서 payable 키워드를 붙인 함수에서만 이더 전송이 가능하다. 코드를 보면서 이해하는게 더 편하므로 사과를 이더를 주고 사는 스마트 컨트랙트를 작성해본다. 늘 하듯이 편하게 가나쉬 네트워크 + 트러플 조합으로 세팅해준다. // contracts/AppleShop.sol // SPDX-License-Identifier: MI..
지금까지 배운 솔리디티 개념을 바탕으로 매우 간단한 투표 dApp을 아래의 흐름대로 만들 수 있다. 이번에도 간단하게 truffle을 이용하여 스마트 컨트랙트를 작성하고 ganache 테스트 네트워크 상에 배포 및 컨트랙트 실행도 해보려고 한다. (물론 테스트로만) 크게 아래의 흐름으로 솔리디티 코드를 짤 것이다. 0. 상태변수 선언 : 후보자 리스트, 후보자별 기록된 득표수 1. 후보자 초기화 - 스마트 컨트랙트 배포 시 후보자들 등록하기 2. 후보자에 대한 투표 기능 3. 후보자에 대한 득표수 확인 기능 4. 테스트 코드 작성 0. 상태변수 선언 후보자 리스트 (candidate) 및 후보자별 기록된 득표수 (votesRcvd) 를 상태변수값으로 가지게 만든다. 두 변수 다 public 접근제한자로서..
1. 코인과 토큰의 차이?! 쉽게 말하자면 메인넷의 유무이다! - 코인 : 메인넷 즉, 독립적인 블록체인 생태계를 가지고 있는 암호화폐를 말한다. - 토큰 : 독자적인 메인넷 없이 다른 블록체인 네트워크 위에서 발행되는 암호화폐를 말한다. 사실 화폐라기보단 파생상품 같은 느낌이다. 자세히 말하자면, 토큰을 만든다는 건 이더리움의 스마트 컨트랙트를 통해 토큰에 대한 내용을 작성하고 발행하는 것이다. 다만 정해놓은 규격에 맞춰서 스마트 컨트랙트를 작성해야하는데, 그 정해놓은 규격이 바로 ERC-20이다. 2. ERC-20 이더리움이 정한 표준 토큰 스펙, 이더리움 네트워크 상에서 발행되는 토큰의 표준, 규격이라고 보면 된다. 타입스크립트에서는 interface로 객체의 형태를 미리 정의, 규격화해서 이를 갖..