목록웹 개발/블록체인 (42)
dukDukz
$ truffle init 1. contracts -> 솔리디티 작성하는 공간 2. migrations -> deploy 매서드가 사용되는 공간; 데몬에게 배포하는 행위를 하는 공간 3. test -> TDD 코드를 작성하는 공간 1. 솔리디티 파일 생성 $ truffle create contract [파일명] contracts 폴더 안에 [파일명].sol 이 생김 function hello() public view returns(string memory){ return "hello"; } 2. 솔리디티 파일 컴파일 하기 $ truffle compile 이후 build/contracts [파일명].json 생성되는것 확인하기 abi bin 파일을 truffle 에 맞게끔 json 파일로 바꿔준거임 3. ..
# truffle 에서 react 사용하기 $ truffle unbox react client : React 프레임워크가 설치된 공간 이 형태가 create-react-app : cra 가 설치된 폴더로 나온다. client> src > App.js 에 보면 기본적으로 web3 가 구현된것을 확인 할 수 있다. class 로 구현되어있는것만 함수형으로 바꿔서 쓴다고 생각하면 된다. Compile: truffle compile Migrate: truffle migrate Test contracts: truffle test Test dapp: cd client && npm test Run dev server: cd client && npm run start Build for production: cd cli..
# 메타마스크 = 지갑 지갑의 종류가 크게 2가지로 나눠져있다 핫 월렛 : 온라인 지갑 콜드 월렛 : 오프라인 지갑 메타마스크는 핫 월렛이다. 수탁형 지갑 : 거래소에 저장된 지갑. 제 3자에 의해서 보관되는 지갑 비수탁형 지갑 : 본인이 직접 관리하는 지갑 메타마스크는 비수탁형 지갑이다. 그렇다면 지갑의 역할은 무엇인가? 돈 보관 여기서의 지갑은 주소를 보관하는 공간이다. 가나쉬에 있던 10개의 주소들.. 왜 필요할까?? - 코인마다 지갑이 다르기 때문... 그래서 이런 것들을 저장하기 위해 나온게 메타마스크... 주소 보관 + 해당 주소 내용을 조회할 수도 있다. 해당 주소의 코인을 볼 수 있게 해준다. 혹은 다른 주소로 코인을 보낼 수 도 있다. 계좌 같은 느낌이다.
# 투표앱 만들기 * 솔리디티 1. 후보자를 초기화 2. 후보자 투표 기능 3. 후보자 정보 가져오기 구현하고 빌드해서 블럭에 배포(실행 시킨다는것)를 한다. 처음 배포할 때 이외에는 쓰지 않음 코드를 작성한 것. 컴파일 하면 두개의 파일이 나오는데 이것들을 블럭에 저장한다. (안에 내용들이 다 담겨 있음) * 블럭 abi 에 기능들이 다 저장이 됨 주소값도 영수증처럼 생김. * web3 이 저장한 내용을 웹에다가 출력 해야한다. 이때 쓰는게 바로 web3 이다. 사실 web3 는 따로 빠져있는게 아니라 html 페이지 안에 존재하는거임 얘가 가나쉬에 접근해서 접속한다. 블럭에서 주소값에 대한 내용도 가져와야 한다. 살짝 어려운 부분은 web3 랑 가나쉬랑 연결하는 부분..? # 투표앱 1. 솔리디티 코..
하나의 블록체인 서버(데몬)가 필요하다. 가나쉬 cli 로 데몬 만들었음 -> account(주소)와 이더가 들어가 있음 데이터를 어떻게 쌓을까?? 스마트 컨트랙트라는 코드를 통해서 블록에 데이터를 저장하게 되는 것. 저장한 공간에 주소가 생긴다. 데몬에 돌아가는 서버와 html 을 연결짓는 라이브러리가 존재한다. 그게 바로 web3 이다. 얘는 js 코드 안에서 작동을 한다. 그러면 데이터를 가져와서 html 에 뿌릴 수 있게 된다.
smart contract 간단하게 만들어보기 # 스마트 컨트랙트 : 실제 구동시켜서 해보는것을 할 것이다. = 코드 실행 (솔리디티) / 스크립트 실행 # 가나쉬 : 메인넷 테스트넷 없이 로컬에서 간단히 돌리는것. 알트코인의 데몬을 간단하게 만든다.(이더리움) + 테스트용 100 이더가 채워져있는 10개의 주소가 주어진다. 총 1000개 # 스마트 컨트랙트를 위한 세팅 nodejs 환경에서 세팅이 가능하다. Truffle Ganashe 를 node js 환경에서 설치가 가능하다. $ npm install -g truffle $ npm install -g ganache-cli $ npm install web3 # web3 란 무엇인가? → rpc 통신을 쉽게 구현할 수 있게 도와주는 라이브러리이다. # ..
솔리디티 언어는 OOP 개념인데 이것을 배울 수 있는 사이트는 크립토 좀비 - https://cryptozombies.io/ko/ 10분 고민하고 안되면 next 크립토 좀비 pragma solidity ^0.4.19; contract ZombieFactory { uint dnaDigits = 16; uint dnaModulus = 10 ** dnaDigits; } 1. 버전 pragma solidity ^0.4.19; -> 버전을 적는 공간 왜 필요할까? 버전 업이 되면서 실행이 안되는 경우를 방지하기 위해서. 특정 버전으로 빌드하는 것. 선언해준다. 2. 메인 함수 (OOP 의 특징) contract ZombieFactory { } OOP 객체지향언어 에서 메인함수라고 보면 된다. 3. 변수 선언 u..
우리가 했던것은 블록체인 개념 중에 암호 화폐를 만든 것을 실습한 것이다. 암호화폐 안에 있는 비트코인을 배운 것이다. 암호화폐 안에는 이더리움이 속해있다. 그러면 왜 굳이 이더리움을 배워야 할까?? # 비트코인 특징 1. 라이트 코인 빌드 중에 거래 혹은 변수나 내용을 저장하는 코딩을 해야 하는 경우 2. A -> B 10개를 보내는 것을 사용하기. RPC 사용해서 sendtoaddress 이 API 를 수정하라고 한다면? => A->B 에게 보내는데 B가 확인 버튼 눌러야만 보낼 수 있게. rpc 자체를 이렇게 만들려면 못한다. 이런 것들을 이더리움에서는 쉽게!! 작성이 가능하다. (Go, Python, Java... 등등 사용이 가능하지만 주로 Solidity로 조건을 만들어서 사용한다.) 우리 입..