블록체인은 탈중앙화된 네트워크에서 작동하는 분산원장 기술이다.익명성: 거래에는 모든 공개키 혹은 지갑 주소만이 사용되어 실제 사람의 신원을 알 수 없다.추적가능성: 모든 거래에는 공개키 혹은 지갑 주소가 사용되고 거래된다.무신뢰성: 신뢰받는 제 3기관은 블록체인에서 존
최초의 블럭을 제네시스 블럭(Genesis Block)이라고 한다. (즉, Blocknumber: 0)블록 체인은 다수의 거래내역을 모아 하나의 블록을 구성하고, 그 블록을 대표하는 해시값을 생성하여 다른 블록과 체인처럼 연결된다.이 대표하는 해시값인 블록해시를 생성하
블록을 체인으로 연결하는 것은 블록 해시이다.예를 들어, blocknumber가 10이면 이 블록의 previous hash는 9번 블록.채굴(마이닝: mining)이란 컴퓨팅 파워를 사용하여 (논스를 바꾸며) 문제를 푸는 과정(블록 생성)체인 시스템이 유지된다.채굴자
탈중앙화된 블록체인의 특성에 대해 이야기를 하다가 중앙화된 구조들의 문제점인 Single Point Of Failure(SPOF)도 배웠는데,단일 장애 지점(SPOF)란 시스템 구성 요소 중에서, 동작하지 않을 때 전체 시스템이 중단되는 요소를 말한다.채굴자들(Mine
Today I Learned [BlockChain] > 단방향 암호화란 암호문에서 평문으로 복호화 할 수 없는 방법이다. Hash 함수는 대표적인 단방향성 암호화 방식으로, 특정 문자를 Hash 함수의 입력값으로 넣고 결과물을 받으면 결과물(암호문)로 입력값(평문)을
해시 충돌이란 서로 다른 2개 혹은 그 이상의 입력값에 대해 동일한 출력값이 나오는 상황이다. 해시 충돌을 완벽히 피할 수는 없지만, 그 가능성을 최대한 낮추어야 안전한 암호화 해시 함수라고 할 수 있다.해시함수는 대표적인 단방향성 함수로 결과값의 용량이 정해져있다.용
키(key)는 코인에 대한 소유권을 입증시켜주는 수단이다. 개인키(private key)와 공개키(public key)가 쌍을 이루며 개인키로부터 공개키가 형성된다. 하지만 공개키로부터 개인키를 역추적할 수는 없다.(단방향성)개인키는 통장의 PIN번호, 비밀번호와 같아
base58은 큰 숫자를 영숫자(alphanumeric) 텍스트로 나타내기 위해 사용되는 이진 텍스트 인코딩 방식의 집합이다. base64와 비슷하지만 영숫자가 아닌 문자와 인쇄시 모호하게 보이는 글자를 모두 피하고자(I (대문자i), l (소문자 L)) 수정되었다.U
오늘부터는 오전/오후를 블록체인/웹으로 나눠 수업하지 않고 풀타임으로 리액트만 하게 되었다.오늘은 create-react-app을 해보고 Tailwind를 중점적으로 배웠다. 먼저 표기법에 대해서도 알게 되었는데,예를 들어, 낙타(camel)표기법 -> myTeamM
오늘은 리액트에서 useState와 components에 대해 배웠다.useState는 일반적으로 다음과 같이 쓰인다.initialState는 원하는 초기상태의 값이고, 모든 Type의 값이 될 수 있다.또한 이 인수(Argument)는 초기 렌더링 후에 무시된다. \
오늘은 깃허브에서 클론 후 자신의 레포지토리에 커밋하고 푸쉬하는 법, 그리고 리액트에서 props와 map함수 사용법 그리고 react-router-dom 라이브러리에 대해 배웠다.먼저 깃허브에서 다른 사용자의 레포지토리를 클론해서 내 레포지토리에 커밋하고 푸쉬하는 법
이 날은 useEffect와 클래스형 컴포넌트, 그리고 동적 라우팅에 대하여 배웠다.컴포넌트가 렌더링 된 이후에 비동기적으로 처리되어야 하는 효과들을 Side Effect라고 한다.예를 들어 서버로부터 어떤 데이터를 가지고 오는 경우 화면을 구성하는 부분을 먼저 렌더링
이 날은 결강하였기 때문에 강사님의 강의교안을 보며 공부하고 정리한 내용을 기록하였습니다.공식문서의 this에 관한 설명을 보면 다른 프로그래밍 언어와는 동작 방식이 다르다., 함수를 호출한 방법에 의해 결정된다. 라고 써있는데 함수에 따라 호출이 다르다는 말은 thi
오늘은 Rest API와 ExpressJS를 통한 간단한 CRUD 구현과 비동기 처리에 대해 배우고 ChatGPT API를 활용하였습니다.기본적으로 Server - Client 구조로 이루어져있다.리소스를 가지고 있는 쪽이 서버, 리소스를 제공받는 쪽이 클라이언트가 된
오늘은 express.js 프레임워크로 rest API를 만드는 연습과 todo list에 백엔드 기능을 구현했고, 자바스크립트의 filter함수에 대해 배웠다.여러 api요청을 관리하기 위해 express.js의 라우팅 기능을 활용하였다.필터 함수를 사용하면 특정 조
오늘은 어제 express로 todo list의 백엔드 구축해놓은 것에 이어 프론트엔드 작업을 하였다. 그리고 웹개발을 하다보면 생기는 문제인 CORS에 대해서도 알아보았다.CORS에 대해 알아보기 전에 origin이란 출처를 의미하며, url구조에서 Protocol,
오늘은 어제했던 todo list 만들기를 다시 복습하고 후반엔 db를 연결하여 express로 주고 받은 데이터를 db에 넣는 작업까지 하였다. 이 과정에서 prisma와 planet scale을 사용하였다.우선 prisma는 javascript나 typescript
오늘은 todo list를 완성하였다.body, param, query는 보통 데이터를 보낼 때 사용하는데, 보통 post할 때는 body, get할 때는 params나 query를 쓴다.skip과 take는 페이지네이션을 할 때 사용되는데 요새는 infinite sc
오늘은 openai에서 api key를 받아 chatGPT를 연동하는 웹사이트를 만들었다.optional chaining은 객체 내부의 속성을 안전하게 접근할 수 있도록 해주는 문법이다.기존에는 객체의 중첩된 속성을 접근할 때, 중간 단계에서 값이 null또는 unde
오전 수업에는 그동안 배운 리액트에 대해서 잘 기억하고 있는지 테스트하는 문제를 풀어보았고, 오후에는 간단하게 remix를 통해 openzepplin으로 ERC20토큰을 발행하고 배포해보는 시간을 가져보았다.오늘 했던 퀴즈는 useState를 사용하여 버튼을 클릭하면
오늘은 IPFS를 기반으로 한 pinata에 민팅할 nft에 대한 정보를 올리고 solidity에서 openzepplin을 통해 erc-721 규격의 토큰을 민팅하는 작업과 web3.js 라이브러리를 사용하여 월렛 연동과 컨트랙트 정보를 받아와 토큰에 대한 잔액과 공급
오늘은 nft 거래 플랫폼인 konkrit을 클론코딩 하기 위해 hashlips에서 레포를 클론하여 받아와 대량의 nft를 민팅하는 작업을 하였다. 오늘 해본 순서는 다음과 같다.hashlips에서 art_engine 레포지토리를 클론하여 npm을 설치한다.그 다음 l
오늘은 Konkrit 사이트를 클론 코딩하였는데 마무리는 못하고 main Page와 Component인 Header, Intro, Nfts정도를 작업하였다.먼저 함수 바깥에서 Web3.js 라이브러리의 새 객체를 생성하고 브라우저에서 제공하는 ethereum provi
오늘은 클론사이트 작업을 마무리하였다. 오늘 작업한 코드는 detail페이지와 NftCard컴포넌트 부분을 작업하였다.조건부 렌더링으로 &&에 내용이 true이면 아래 div태그를 생성한다.즉 tokenId가 민팅된 nft보다 크다면 Not Minted가 nft카드 위
오늘은 파트3\[블록체인] 첫날로 파트1\[온보딩] 기간에 배운 블록체인 내용을 복습하는 시간을 가졌다.UTXO는 사용되지 않은 출력값(Unspent Transaction Output)이다.비트코인과 같은 분산원장 기반 암호화폐에서의 거래 방식이다.소유자의 개인키로 소
Today I Learned [BlockChain] > 오늘은 비트코인 네트워크와 노드에 대해 배우고 머클루트 >
오늘은 Solidity에서 자료형(문자열, 바이트형) 에 대해 배웠고 get, set함수를 작성해보았다.위 코드를 보고 큰 차이점은 uint 타입의 변수를 선언하고 사용할 때에는 상태변수든 지역변수든 타입 다음에 변수명 외에 작성할 필요가 없었지만, string 타입의
오늘은 Solidity에서 uint, bytes, local variable, array, struct, String과 Bytes 형변환에 대해 배웠다.솔리디티에서 숫자형 타입은 각각 부호 없는 정수 / 부호 있는 정수를 나타낸다.8비트 단위로 uint8 / int8
오늘은 array 복습, struct에서 특정 요소를 변경 또는 반환하는 방법, view/pure 함수와 일반함수 간에 가스비 소비 유무, 그리고 mapping과 address타입, 머클트리와 머클 패트리시아 트리에 대해 배웠다.머클 패트리샤 트라이는 저장, 수정, 삭
Today I Learned [Solidity] > 오늘은 string=>struct mapping, string=>array[] mapping과 길이가 고정된 배열에서 요소를 추가하는 방식, 그리고 for문 작성하는 법과 머클 패트리샤 트라이에서 노드가 나뉘는 과
오늘은 if문과 논리연산자, 열거형(enum)과 boolean 에 대해 배웠다.솔리디티에서 if문은 다른 프로그래밍 언어에서 if문과 비슷하다.그래서 오늘 배운 내용은 어렵진 않았지만 struct와 응용하여 if문을 작성한 내용에 대해 정리해볼까한다.먼저 struct
오늘은 블록체인 파트에 들어오고 첫번째 테스트를 봤다. 알고리즘을 짠다라기보다는 문제에 나온 기능들을 구현하는 식으로 테스트를 하였다. 솔리디티를 통한 첫 테스트 이기도 했고 정해진 시간 내에 풀어야 한다는 압박감 때문인지 어렵지않은 부분에서 막혀서 시간을 많이 허비했
Today I Learned [Solidity] > 오늘은 오전에 비트코인 백서에 대한 내용을 읽었고, 오후에는 회원가입에 대한 기능을 구현하는 테스트를 보았다. payable > payable 키워드는 해당 함수나 주소가 이더나 다른 토큰을 받을 수 있음을 나
오늘은 require, constructor, modifier에 대해 배웠고 세번째 퀴즈를 봤다.다음은 uint형 변수 a를 1로 상태변수로 선언해주었고 Require3함수에서 a를 5로 바꾸었지만 require문에서 bool타입 변수 c의 초기값은 false이기 때문
오늘은 컨트랙트에서 상속하는 법과 함수의 접근 범위를 결정하는 가시성, 그리고 네번째 퀴즈를 풀었다.상속은 여러 컨트랙트를 상속받을 수도 있고 단일 컨트랙트를 상속받을 수도 있다.virtual, override로 컨트랙트 사이에 특정 함수를 상속받아 사용할 수도 있다.
오늘은 &&(and), ||(or) 연산자의 위치에 따라 헷갈릴 수가 있다.쉽게 생각하면 and끼리 먼저 묶이고 or로 나뉜다고 생각하면 될 것 같다.그리고 소괄호()로도 묶어줄수가 있는데 괄호를 쓰면 먼저 묶인다고 생각하면 될듯.B: deposit / transfer
배열을 초기화시키기 위해 값을 하나씩 빼는 pop, 한번에 초기화 시키는 delete, 새롭게 길이가 0인 배열로 초기화 시키는 new. 이 3가지 방식으로 배열을 초기화 하였는데 가스비의 차이가 있었다.많은 케이스를 다루진 않았고 가볍게 테스트를 진행했을 땐 dele
오늘은 Initialization, 다중 매핑, 그리고 저번시간에 했던 퀴즈(안건) 풀이와 새로운 퀴즈를 풀었다.다음과 같이 매핑을 여러개 쓸 수 있다.struct와 같은 레퍼런스 타입 변수는 value로만 쓸 수 있다.array도 key로는 쓸 수 없다.현재 블록의
오늘은 문자열 사이를 연결(concatenation)하는 방법과 다른 파일로부터 임포트하는 방법과 깃허브에서 임포트하는 방법을 알아보고 새로운 퀴즈도 풀었다. 오늘은 좀 어려웠다ㅜㅜ 그래서 다시 풀어봐야 할 것 같다.다음과 같이 string.concat(a, b)로
Today I Learned [Solidity] > 오늘은 다른 컨트랙트에 접근하여 해당 컨트랙트의 상태변수를 변경시키는 방법과 주소 타입의 멤버변수(.balance, .send, .transfer, .code, .codehash)에 대해 알아보았고 작성한 컨트랙트를
Today I Learned [Solidity] 일부 변수만 받는 법
오늘은 오픈제플린을 통한 ERC-20 토큰 배포와 methodID 구하는 법, 그리고 앞에 4바이츠를 구하는 법을 배웠고 오후에는 특강으로 폴카닷 블록체인 아카데미를 수료하시고 현재는 블록체인랩스에서 근무하시는 raf님의 특강세션이 있었다.
오늘은 Quiz_8 풀이와 Quiz_9를 새로 풀었고, ERC-20, 721, 1155에 대해서 배워보았다.로또 프로그램을 만드려고 합니다. 숫자와 문자는 각각 4개 2개를 뽑습니다. 6개가 맞으면 1이더, 5개의 숫자가 순서와 함께 맞으면 0.75이더, 4개가 맞으면
오늘은 truffle과 ganache을 사용하는 방법에 대해 알아보았다.\*node 설치 해야함truffle init -> truffle 개발 환경이 구축된다.(contracts 폴더, migrations 폴더, test 폴더, truffle-config.js 파일 생
오늘은 Web3.js 라이브러리를 통해 node 환경에서 블록체인 네트워크에 접근하고 트랜잭션을 일으키는 작업과 특정 컨트랙트 주소와 abi로 특정 컨트랙트를 이용하는 방법을 해보았다.먼저 web3.js를 설치할 폴더에 npm init을 해주고 package.json
오늘은 Web3.js에서 contract를 이용해 call(호출)하거나 signTransaction(거래를 일으키는)것을 해보고 solidity에서 event-emit을 배웠다.간략한 순서로는 먼저 node 환경을 구축하고 web3.js 라이브러리를 설치하고(npm i
오늘은 ethers.js에서 트랜잭션을 일으키는 법, Web3.js와 비교해보며 배웠고, solidity에서 다차원배열에 대해 배웠다.npm i --save ethers: npm에서 ethers.js 라이브러리 설치node: node 환경 진입var {ethers} =
오늘은 truffle과 유사한 hardhat이라는 이더리움 개발 도구를 사용하는 법을 배웠다.npm install --save --dev hardhat: hardhat 라이브러리 설치npx hardhat: 다음과 같은 화면이 나온다.(필자는 javascript로 선택했
오늘은 이론시험을 봤고 리액트를 통해 web3.js로 블록 번호, 지갑 잔액을 출력하고 웹 소켓 프로토콜 통신과 web3.js의 함수인 subscribe을 통해 실시간으로 정보를 갱신하는 법과 window.ethereum으로 메타마스크와 연동하는 법을 배웠다.\-> 먼
오늘은 hardhat으로 컨트랙트를 배포하고 그 컨트랙트를 검증(verify)하는 작업을 해보았다.스마트 컨트랙트 검증은 스마트 컨트랙트의 소스 코드를 on-chain 바이트 코드에 일치시키는 과정이다.이 과정을 통해 배포된 소스 코드가 게약 주소에서 실행되었던 소스