일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 비동기파일업로드
- express session
- express router
- useEffect clean up
- 라우터 분리
- JWT 로그인 기능 구현
- mysql wsl
- FormData()
- express실행
- next 매개변수
- 블록 만들기
- JWT 하드코딩
- cookie-parser 만들어보기
- buffer.from
- nodejs파일업로드
- 라우터와 미들웨어
- Uncaught Error: could not find react-redux context value; please ensure the component is wrapped in a <Provider>
- 시퀄라이즈 기본설정
- useContext
- OAuth 카카오
- 라우터미들웨어 분리
- css기초
- ws 라이브러리
- 아이디 중복체크기능
- JWT 만들어보기
- 세션으로 로그인 구현
- express.static
- javascript기초
- node.js path
- 라우트 매개변수
- Today
- Total
목록분류 전체보기 (110)
즐코
오늘은 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로 객체의 형태를 미리 정의, 규격화해서 이를 갖..
1. address 이더리움 네트워크 상에서의 계정을 가리킨다. 즉, 이더리움 주소 길이인 20바이트를 담을 수 있는 타입이다. 크립토 좀비에선 해당 address를 좀비들에 대한 소유권을 가진 고유 아이디값으로 쓴다. 2. mapping struct, arrays 처럼 구조화된 데이터 타입을 저장하는데 쓰이는 또다른 데이터 타입이다. 객체처럼 key, value 값으로 이뤄져있다. mapping (key => value) [변수명] // 계정-그에 해당하는 잔고를 저장할 때, 계정,주소가 key값이고 uint 즉 잔고가 value mapping (address => uint) public accountBalance; // 사용자 아이디-그에 해당하는 실명을 저장할 때, 아이디가 key, string 즉..
크립트 좀비를 통해 solidity 데이터 타입 및 함수 등에 대해서 먼저 간단하게 정리하고자 한다. 여러 데이터 타입이 있지만 우선 기본적인 uint, bytes, struct, arrays만 짚고 넘어간다. bool은 그냥 불리언타입이라 생략한다. 다음 포스팅에선 크립토 좀비를 통해 mapping과 address 라는 살짝 특이한 데이터타입을 정리할 예정이다. 1. uint unsigned Integer 음수가 아닌 정수 * int : 음수를 포함한 정수를 가리킨다. uint 뒤에 붙는 숫자는 비트를 의미한다. uint8, uint16, uint32 ~ uint256까지 8비트씩 증가한다. 이때, uint256을 uint라고 줄여 말한다. ex) uint256 = 256비트(32바이트이자 64자리)짜..
1. 스마트 컨트랙트 - 이벤트 등록 저번 포스팅에서 화면이 렌더되자마자 배포된 컨트랙트를 가져와서 최신 상태변수값을 조회하여 화면에 렌더해주었다. 다만, 우리는 가나쉬 네트워크를 사용하고 있기 때문에 가나쉬를 실행하고 있는 터미널을 종료하면 가나쉬 네트워크와 연결된 노드는 사라지고 다시 실행 시 새로운 노드와 그에 따른 계정들도 재생성해준다. 이 때 이 이더리움 네트워크 상에서 각 노드들을 구분할 수 있는게 network id 이다. 자세히 설명하자면, 네트워크 chain id 가 같은 노드들은 같은 네트워크 상에 묶이게 된다. 이때 한 네트워크 내의 각 노드들은 저마다의 식별자를 가지고 있는데 그게 바로 네트워크 아이디이다. truffle migration으로 배포 진행 후에 build/contrac..
Counter 라는 아주 단순한 컨트랙트를 만들어서 클라이언트가 브라우저 상에서 숫자를 증가/감소 시킬때마다 (즉, 네트워크 내 상태변수를 변경시킬때마다) 메타마스크를 통해 가나쉬 테스트 네트워크에 배포된 컨트랙트를 실행시키는 걸 해보려고 한다. 상태를 변경하는 것도 하나의 트랜잭션이므로, 이 트랜잭션 발생 시 개인키로 서명을 해줘야하는데 그 역할을 메타마스크로 대체해준 것이다. 1/ truffle 이용하여 컨트랙트 배포 및 실행 테스트 - truffle 구조 생성 $ truffle init - truffle 설정파일 수정 저번 포스팅과 달리 가나쉬 테스트 네트워크를 이용할 예정이므로, port#는 8545로 해준다. (미리 가나쉬 실행해두기! ganache-cli) // truffle-config.js..
스마트컨트랙트 개발할 때 많이 쓰는 프레임워크에는 Hardhat과 Truffle이 있다고 한다. 요즘은 Hardhat이 핫하다곤하지만, 익숙한 web3 라이브러리 기반의 프레임워크인 truffle을 쓰는게 통일성 있으니 truffle을 사용해보려고 한다. 해당 포스팅에선 truffle 설치 및 스마트 컨트랙트 배포, 실행을 간단하게 정리해본다. 1/ Truffle 설치 truffle은 전역으로 설치해주었다. $ npm i -g truffle // 디렉토리 하나 만들어서 그 안에서 init $ npx truffle init init 명령어를 실행한 truffle 폴더 하에 아래 디렉토리들이 자동 생성되었다. - build : 솔리디티 코드를 컴파일한 내용이 json 형태로 들어간다 (해당 디렉토리는 맨 처..
truffle 을 배우기 전 자바스크립트로 스마트 컨트랙트를 컴파일해보고 이를 배포, 실행하는 과정을 정리해보았다. 1/ keythereum 라이브러리 사용해서 개인키 알아내기 스마트컨트랙트 배포를 위해 트랜잭션을 만드려면 서명이 필요한데 서명에는 개인키가 필요하다는 걸 인지해야한다. 개인키를 뽑아내기 위해서는 계정 생성 시 만들어진 keystore 디렉토리 내의 계정 정보가 담긴 UTC 파일을 사용해야한다. 이 때, keythereum 라이브러리를 통해서 UTC 파일 내용을 복호화해서 개인키를 알아낼 수 있다. $ npm i keythereum web3 우선, 실습을 위해 이전에 생성한 계정 정보 UTC가 담긴 keystore 디렉토리를 복사해서 갖고온다. keythereum.importFromFile..