전체 글 80

솔리디티를 이용해 LotteryDapp 만들어보기 2 (트러플 콘솔, 테스트)

트러플 콘솔 - 트러플 콘솔을 이용하면 web3 오브젝트 사용 가능 # ganache-cli 실행 ganache-cli # lotteryDapp이 있는 위치로 이동해 아래 명령어 입력 truffle console - 사용할 수 있는 function 이나 objcet 확인 가능 # 아래와 같이 입력하고 tab 두번 하면 보여줌 web3. # 계정 확인 web3.eth.getAccounts() # 남은 ether 확인 web3.eth.getBalance('계정') 트러플 콘솔을 이용해 상호 작용 확인 # build/contract/Lottery.json 에서 address 값 가져옴 # 검색해서 나오는 값으로 접근하면 됨 Lottery.address # lt라는 변수 안에 Lottery의 instance가 ..

Solidity 2023.02.17

솔리디티를 이용해 LotteryDapp 만들어보기 1 (프로젝트 생성)

solidity, node.js, react 를 이용하여 lottery dapp 개발 실습 아래의 강의를 보고 실습 진행함 https://www.inflearn.com/course/ethereum-dapp 개발환경 node.js vscode (solidity extension) Truffle Framework - 이더리움 기반 Dapp을 쉽게 개발 할 수있도록 도와주는 블록체인 프레임워크 ganache-cli - 로컬 블록체인 생성 도구 - 이더리움 애플리케이션을 빠르고 쉽고 안전하게 개발할 수 있게 해주는 이더리움 시뮬레이터 metamask - 이더리움 블록체인과 상호 작용하는데 사용되는 암호화폐 지갑 프로젝트 구성 1. 트러플 프로젝트를 위한 폴더 생성 (lotteryDapp) 2. vscode te..

Solidity 2023.02.16

블록체인과 솔리디티

Blockchain - 블록들이 연결된 체인 * 블록(Block) : 데이터의 집합 예시) a가 b에게 송금한 기록, c가 d에게 송금한 기록등을 한데 모아 블록으로 만듦 위와 같은 블록들을 하나하나 연결한 것 → 블록체인 - 위와 같은 블록체인을 각각의 사용자들이 동일하게 가지고 있음 → 누군가 한명이 다른 정보를 가지고 있다면 그 사람이 잘못된 정보를 가지고 있다는 것이 증명됨 Merkle Tree - 블록에 포함된 거래 내역을 트리 형태로 요약한 것 - 해쉬가 이용된 데이터 검증을 위한 트리구조 - 데이터를 간편하고 확실하게 검증 가능 - 머클루트 : 모든 거래 내역들을 해쉬화 함 → 거래내역의 변동여부를 쉽게 확인 가능 - 머클루트를 헤더에 담아 트랜잭션의 유효성 보장 생성과정 1. 최초 데이터를..

블록체인 2023.02.15

간단한 Job Scrapper 구현

Scrapper - 웹 사이트로부터 데이터를 추출해오는 도구 - 강의에 나온 사이트는 현재 scrapper 사용이 불가해서 아래의 사이트로 변경해서 진행 변경한 사이트 : https://www.incruit.com/ goquery 사용 - jQuery와 유사한 구문 및 기능을 Go 언어에서 제공 1. 페이지를 받아옴 - 하단의 pagination 을 이용해 몇 페이지까지 있는지 확인 후 값 리 func getPages(url string) int { pages := 0 res, err := http.Get(url) checkErr(err) checkCode(res) // res.Body는 byte, 입력/출력(io) → 닫아줘야함 // 메모리가 새어나가는걸 막을 수 있음 defer res.Body.Clo..

Golang 2023.02.14

golang을 이용한 간단한 실습

1. Accounts - 문법을 익히기 위해 간단한 입금, 출금, 잔액조회 기능 구현 Constructors golang은 생성자를 지원하지 않음 하지만 생성자와 유사한 함수는 구현하기 쉬움 // Account struct type Account struct { owner string balance int } // *Account -> Account를 살펴봄 func NewAccount(owner string) *Account { // account 초기화 } - 함수 선언시 리턴해야할 값이 있으면 리턴 타입을 명시해야함 → *Account Receiver - Struct의 Mthod를 생성하기 위해 쓰이는 문법 - 함수 내부에서 Struct의 변수 또는 Method에 접근 가 - Value Receiv..

Golang 2023.02.13

GO 정리

컴파일을 하려면 main.go의 이름 변경 불가 목적에 따라 컴파일을 할 필요가 없다면 main.go 사용하지 않아도 괜찮음 - 컴파일 할 필요가 없는 경우 : 오픈소스 기여, 라이브러리 개발... main.go - 컴파일을 위해 필요 - 컴파일러는 main package와 그 안에 있는 main func을 먼저 찾고 실행시킴 // 내가 어떤 패키지를 사용하는지 작성해줘야 함 package main // 프로그램의 시작점이 되는 부분 func main() { ... } go의 구성 - Package declaration - Import packages - Functions - Statements and expressions Package and Import package main // formatting..

Golang 2023.02.12

SoliditySolidityCryptoZombies 6 (앱 프론트엔드 & Web3.js) 정리

Web3.js 소개 - 이더리움 재단에서 만든 자바스크립트 라이브러리 - 이더리움 네트워크 → 노드로 구성 - 각 노드는 블록체인의 복사본을 가지고 있음 - 스마트 컨트랙트의 함수 실행 → 노드들 중 하나에 질의 보내 아래 내용 전달 1. 스마트 컨트랙트의 주소 2. 실행하고자 하는 함수 3. 전달하고자 하는 변수들 이더리움 노드들은 JSON-RPC 라고 불리는 언어로만 소통 가능 //컨트랙트의 함수를 실행하고 싶다고 질의를 보내는 코드는 아래와 같음 // 사람이 읽기 불편 {"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5..

Solidity 2023.02.11

SolidityCryptoZombies 5 (ERC721 & 크립토 수집품) 정리

이더리움 상의 토큰 - 이더리움에서 토큰은 공통 규약을 따르는 스마트 컨트랙트 ⇒ 토큰은 그저 하나의 컨트랙트 - 모든 ERC20 토큰들 → 똑같은 이름의 동일한 함수 집합을 공유 예시 ) 거래소 * 한 거래소에서 새로운 ERC20 토큰을 상장 (실제로는 이 거래소에서 통신이 가능한 또 하나의 스마트 컨트랙트를 추가하는 것) * 거래소에서는 전송 로직을 한 번만 구현 * 새로운 ERC20 토큰을 추가하고 싶으면 DB에 새 컨트랙트 주소를 추가하기만 하면 됨 다중 상속 - 솔리디티는 다수의 컨트랙트 상속 가능 contract SatoshiNakamoto is NickSzabo, HalFinney { ... } 다른 토큰 표준 : ERC721 - 교체 불가 (각각의 토큰이 유일하고 분할 불가) - 하나의 전..

Solidity 2023.02.10

SolidityCryptoZombies 4 (좀비 전투 시스템) 정리

접근 제어자 (visibility modifier) - 함수가 언제, 어디서 호출 될 수 있는지 제어 내부 컨트랙트 외부 컨트랙트 상속 컨트랙트 Private O X X Internal O X O Public O O O External X O X 상태 제어자 (state modifier) - 블록체인과 상호작용 하는 방법을 알려줌 view - 해당 함수를 실행해도 어떤 데이터도 저장/변경되지 않음 - 그저 읽기만 함 pure - 해당 함수를 실행해도 어떤 데이터도 저장/변경되지 않음 - 어떤 데이터도 읽지 않음 payable - 이더(ether)를 받을 수 있음 사용자 정의 제어자 - 함수에 이 제어자들이 어떻게 영향을 줄지를 결정하는 논리구성 가능 위의 제어자들은 아래와 같이 사용 가능 function..

Solidity 2023.02.09

CryptoZombies 3 (고급 솔리디티 개념) 정리

컨트랙트의 불변성 - 이더리움 컨트랙트를 배포하고 나면 변하지 않음 (Immutable) - 컨트랙트로 배포한 최초의 코드는 블록체인에 영구적으로 존재 - 수정하거나 업데이트 할 수 없음 외부 의존성 - 대부분 DApp의 중요한 일부를 수정할 수 있도록 하는 함수를 만들어 두는 것이 합리적 소유 가능한 컨트랙트 컨트랙트를 소유 가능하게 함 → 컨트랙트를 대상으로 특별한 권리를 가지는 소유자가 있음 Ownable Contract - OpenZeppelin 솔리디티 라이브러리에 있음 생성자( Constructor ) - 컨트랙트와 동일한 이름을 가진 생략 가능한 함수 - 컨트랙트가 실행될 때 딱 한번만 실행됨 /** * @dev The Ownable constructor sets the original `o..

Solidity 2023.02.08