[1008]블록체인 개념 복습 / 이더리움 / 솔리디티(solidity) - 크립토좀비(cryptozombies) 1
< 1교시 - 블체 개념 복습 >
이더리움 - 개발 도구들이 잘 나와있음 cli같은 것들이 잘 되어있음
그 안에 back단 내용은 지금 한 프로젝트와 똑같음. 구조 파악이 중요함
이 관계도에서 기능이 구현되는 과정을 다 그릴수있어야 된대요..
데몬의 역할이 무엇인지 정확히 아는게 블록체인을 잘 아는것이라고하심
브라우저에 도메인 입력 -> 브라우저가 리액트에 요청 -> 리액트는 서버에 요청-> 서버는 필요한 데이터들을
요청 (데몬이나 db한테)-> 그걸 받아서 서버가 리액트에 던져줌 -> 리액트가 브라우져에 응답을 줌
서버가 데몬과 통신하는방법을 rpc라고 함
서버가 바로 브라우저에 보내주면 리액트가 인지하는건가?
그럼 웹소켓은 언제 써 - 실시간으로 데이터를 처리할때
-데몬확대
데몬 (노드) - json 형태의 데이터를 저장하고 있음. 데몬을 실행시키면 특정 폴더에 튿정 데이터가 쌓임-> 이걸 데이터폴더라고 정하고 사용함. 이걸 정보라고 함.
똑같은 데몬을 실행시키고있는 컴퓨터가 여러대 있고 얘네끼리 다 연결되어있음
내가만약 인구의 지갑주소알고싶으면 각각 노드한테 다 물어봐야 함 -> 비효율적
따라서 블록체인은 자격증명 (이거 맞나?) 51% 이상 같은 결과 가지면 그게 맞는거라고 인지함. 즉, 블록들끼리
소통함. 따라서 우리는 하나의 데몬만 소통하면 됨
우리가 데몬 만들어서 올리고 원하는대로 쓸수있게!
탈중앙 -> db/ 소켓이 사라지는것
탈중앙 어플리케이션 vs 기존 어플리케이션 차이는?
- 디비는 내 맘대로 조작이 가능해 (기존 어플) but 블록은 한번 생성되면 수정이 불가능 (탈중앙 어플)
-> 데이터 신뢰성에서 차이가 있다.
왜 이더리움을 배우는지?
1. 라이트코인 빌드중에 거래하는 혹은 변수나 내용을 저장하는 코딩을 해야하는 경우.
2. 이더리움을 이용하여 거래를 구현하기가 용이함
ex) A -> B 10개 보내는 것을 사용하기 (RPC통신을 통해서 )
이걸 B가 확인버튼 눌러야지만 보낼 수 있게 바꾸라고 하면?
이걸 rpc로만 만들라고 하면 만들 수 없을것임. 매우매우 까다로움. 이럴때 이더리움 사용
Go, Python , Java ... 등등 여러 언어로 가능함. 근데 주로 사용하는 언어는 Solidity
< 2교시 - 이더리움 개념 >
* 스마트 컨트랙트란?
ex - 맥북을 사고싶은데 공홈에서는 150/ 듣보 사이트(인구샵)에서는 110이라고 함. 가격만 보고 후자에서 맥북을 사기에는 사이트가 안전하다는 신뢰도가 떨어짐.
이럴 때 스마트 컨트랙트를 이용!
만약 내가 인구샵에 돈을 내고 어딘가 묶어놓고(잠궈놓고) 노트북 받아서 사용해 본 뒤 인증이 되었다고 하면 그때서야 인구샵에 돈이 들어가도록 만들어놓으면? -> 신뢰성이 올라감
이런 결제시스템을 가진 앱 => 탈중앙화 앱 = 디앱(Dapp) : 디앱의 주요 목적은 신뢰성과 투명성. 공정한 거래 지향
활용 가능성 ) 계약서
* 코인 vs 토큰?
-
자체적인 네트워크 (메인넷)가 있는가? 가 차이점임.
우리가 만든 코인은 자체적인 네트워크가 있음! 이더리움은 토큰이에여.
코인 = 메인넷 있음 / 토큰 (이더리움) = 메인넷 없음
우리는 이제 이더리움을 배우면서 메인넷을 구축하지 않을거임 이더리움걸 빌려쓸것임. -> 이게 몬소리야 토큰은 메인넷이 없다며..
연습/ 공부 할떄는-> 이더리움 테스트넷 빌려 쓰기
환경을 똑같이 구현해놓은 라이브러리가 존재합니다 가볍게 데몬을 설치할 수 있는! 바롭라보라볼바볼바ㅗㄹ바로!!!
가나슈입니다.
스마트 컨트랙트 & 디앱을 만들때 사용할 프레임워크 존재합니다!
Truffle (트러플) - 디앱 만들때 쓰는 프레임워크.
솔리디티 언어를 배워보자!
솔리디티는 oop 개념이 적용됩니당
* OOP 개념
1. 객체지향 언어.
- 선언이 우선되어야 한당. EX) typescript
2. 코드블럭에서만 코드를 작성.
- 출력문 작성할 때 Java 와 C++은 괄호 {} 안에 써줘야만 함.
항상 맨 처음에 실행되는 메인 함수가 있음.
그 안에 작성해야지만 실행이 됨 (함수가 함수를 불러오는 구조)
💕크립토 좀비 (OOP개념 배울 수 있는 가이트)
#1 Solidity Tutorial & Ethereum Blockchain Programming Course | CryptoZombies
CryptoZombies is The Most Popular, Interactive Solidity Tutorial That Will Help You Learn Blockchain Programming on Ethereum by Building Your Own Fun Game with Zombies — Master Blockchain Development with Web3, Infura, Metamask & Ethereum Smart Contracts
cryptozombies.io
이런식으로 완전 기초부터 나오는데
솔리디티 언어를 배우기에 아주 좋은거같음!!
< 3교시 >
가나슈- 메인넷, 테스트넷 빌려쓰지 않고 로컬 pc 가볍게 데몬 구현 (블록의 정보를 local에 저장)
트러플 - Dapp을 만들기 위햇 쓰는 프레임워크
EVM - node.js같은 언어 해석기. 솔리디티 언어를 해석해주는 녀석 (JAVA - JVM)
리믹스 - 비주얼 스튜디오코드 편집기툴. 이게 온라인에 존재함 자체적으로 EVM 실행시켜줌 (언어해석해줌)
remix IDE
- 온라인 IDE 툴 ( https://remix.ethereum.org/ )
이더리움토큰 - 메인넷을 빌려쓴다는 개념 유의
스마트 컨트랙트 - 거래 내용을 코딩할 수 있는 작업.
솔리디티 - 스마트컨트랙트를 만드는 언어.
~~ 좀비 크립토 해보기~~
https://muna76.tistory.com/107
[1010] 크립토 좀비 (cryptozombies1)
❗ chapter2: pragma 와 contract pragma 버전정보를 처음에 명시하도록 되어있음. 버전 업데이트가 자주 되기 때문에! 불과 한달전에 친 코드라도 지금 유효하지 않을수 있으므로 실행하기 전에 미리 버
muna76.tistory.com
---------------------------------
과제
- 3번까지 풀고 정답에 주석 달아서 해석해서 기트허브에 올리기