이더 리움 강의 | 2세대 블록체인 기술의 시작! ‘이더리움’은 무엇인가?#미래수업 | Living The New Normal Ep.15 | Tvn 210222 방송 9874 좋은 평가 이 답변

당신은 주제를 찾고 있습니까 “이더 리움 강의 – 2세대 블록체인 기술의 시작! ‘이더리움’은 무엇인가?#미래수업 | Living the New Normal EP.15 | tvN 210222 방송“? 다음 카테고리의 웹사이트 ppa.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 tvN STORY 티비엔 스토리 이(가) 작성한 기사에는 조회수 147,467회 및 좋아요 1,797개 개의 좋아요가 있습니다.

이더 리움 강의 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 2세대 블록체인 기술의 시작! ‘이더리움’은 무엇인가?#미래수업 | Living the New Normal EP.15 | tvN 210222 방송 – 이더 리움 강의 주제에 대한 세부정보를 참조하세요

tvN 월간기획 뉴노멀 강연쇼 <미래수업>
(15회) 2.22 (월) 저녁 7시 40분
(강연주제) 돈의 판도가 바뀐다, NEXT MONEY

이더 리움 강의 주제에 대한 자세한 내용은 여기를 참조하세요.

[무료] 이더리움 입문 바이블: 모든 이더리움 입문자를 위하여

본 텍스트 강의는 하나의 ‘바이블’ 을 자처하고, 그러한 기초 내용을 올바르게 담고자 노력한 자료입니다., – 강의 소개 | 인프런…

+ 더 읽기

Source: www.inflearn.com

Date Published: 11/4/2021

View: 950

[ ‍ 강의 정리] 이더리움 입문 바이블 – 월리의 탐구생활

목차. 이더리움 아키텍처(Architecture); 스마트 계약(Smart Contract); 이더(Ether); 주소와 계정. 주소( …

+ 여기에 보기

Source: wnjoon.github.io

Date Published: 7/7/2022

View: 3123

【한글자막】 Solidity를 사용한 이더리움 블록체인 개발자 부트 …

이 강의 단 하나만으로, 여러분은 이더리움 블록체인 개발자가 되실 수 있습니다. 솔리디티, Web3.js, 트러플, 메타마스크, 리믹스 등 새로운 스킬을 학습하여 개발자 …

+ 여기에 보기

Source: www.udemy.com

Date Published: 7/18/2021

View: 6370

모든 이더리움 입문자를 위하여 (인프런 강의)

이더리움이란? 1-1. 지불(Payment), 그 이상을 향해. 비트코인 블록체인은 주로 은행과 같은 중앙 기관의 중재 없이 블록체인의 다양한 당사자 간에 돈을 송금하는 데 …

+ 여기에 더 보기

Source: intrepidgeeks.com

Date Published: 9/29/2022

View: 9883

실전! 이더리움 DApp 개발 – 멀티캠퍼스 :: 과정상세보기

이더리움은 전자 화폐 시스템의 설계 위에 가상 머신을 추가하여 … 블록체인 코어 연구원의 전문 강의로 산업에서만 들을 수 있는 실전 노하우와

+ 여기에 보기

Source: www.multicampus.com

Date Published: 8/24/2021

View: 938

코인 투자자를 넘어서 생산자가 된다? 누구나 할 수 있는 이더 …

코인(이더리움) 채굴 방법, 채굴장 구축 노하우 클래스입니다. 20주 수강 가능. 수강 기간 내 무제한 수강 가능합니다. 30개 콘텐츠. 총 30개의 강의를 수강하실 수 …

+ 여기를 클릭

Source: class101.net

Date Published: 12/29/2021

View: 3646

[이더리움] 이더리움 입문 바이블 – inflearn 강의 정리(1)

이더리움. : 퍼블릭 블록체인 기반의 분산 컴퓨팅 플랫폼. (전세계의 수많은 작은 컴퓨터로 구성된 하나의 큰 컴퓨터).

+ 여기에 표시

Source: hanwitjus.tistory.com

Date Published: 11/8/2021

View: 3609

블록체인 이론 및 응용 – | K-MOOC

비트코인과이더리움의가장큰차이점은무엇인가요? 이더리움은 스마트 컨트랙트라는 개념을지원하여화폐거래뿐만아니라다양한어플리케이션개발을가능하게하는플랫폼으로써의 …

+ 자세한 내용은 여기를 클릭하십시오

Source: www.kmooc.kr

Date Published: 10/20/2022

View: 1603

주제와 관련된 이미지 이더 리움 강의

주제와 관련된 더 많은 사진을 참조하십시오 2세대 블록체인 기술의 시작! ‘이더리움’은 무엇인가?#미래수업 | Living the New Normal EP.15 | tvN 210222 방송. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

2세대 블록체인 기술의 시작! '이더리움'은 무엇인가?#미래수업 | Living the New Normal EP.15 | tvN 210222 방송
2세대 블록체인 기술의 시작! ‘이더리움’은 무엇인가?#미래수업 | Living the New Normal EP.15 | tvN 210222 방송

주제에 대한 기사 평가 이더 리움 강의

  • Author: tvN STORY 티비엔 스토리
  • Views: 조회수 147,467회
  • Likes: 좋아요 1,797개
  • Date Published: 2021. 2. 25.
  • Video Url link: https://www.youtube.com/watch?v=TApXOy7Phjo

[🧑‍🏫 강의 정리] 이더리움 입문 바이블 – 모든 이더리움 입문자를 위하여

📒 본 포스팅은 인프런에서 제공하는 무료 강의 ‘이더리움 입문 바이블 – 모든 이더리움 입문자를 위하여’를 본 후 내용을 정리하였습니다. 이더리움의 사상이나 만들어진 배경은 생략하고, 기술적인 관점에서만 정리하였습니다.

이더리움 아키텍처(Architecture)

이더리움의 아키텍처를 정확하게 알기 위해, 기존의 웹 어플리케이션(서버-클라이언트) 아키텍처를 비교해본다.

@그림 1: 서버-클라이언트 구조의 웹 어플리케이션 아키텍처

사용자는 웹브라우저를 통해 HTML, CSS, JavaScript로 작성된 프론트엔드(FE)에 접근한다.

FE는 실제 웹 어플리케이션을 구성하는 서버 형태의 백엔드(BE)로 접근하며, BE는 Ruby, Python, Java 등으로 작성되어 있다.

FE, BE는 일반적으로 AWS, Azure, GCP, Heroku, VPS 등 다양한 호스팅 제공 업체에 구성된다.

결국 웹 어플리케이션은 중앙화 된 프로그램으로 존재하며, 모든 사용자는 해당 위치에 존재하는 서버에 데이터를 요청하고 서버는 중앙화된 데이터베이스 또는 캐시에 접근하여 데이터를 읽거나 쓰고 결과를 사용자에게 전달한다.

@그림 2: 이더리움의 아키텍처

모든 사용자는 각자 존재하는 자체 인스턴스와 통신한다. 즉, 접근해야 하는 중앙화된 서버가 존재하지 않는다.

이러한 탈중앙화를 위해서 DApp을 사용하는 모든 사용자는 자신의 PC 또는 스마트폰 등의 기기에 접근하고자 하는 블록체인에 대한 전체 복사본을 갖고 있어야 한다. 즉, DApp을 사용하는 사용자는 먼저 전체 블록체인을 다운로드해야만 한다. 하지만 사용자가 직접 거대한 블록체인 서버를 운영한다는 것은 현실적으로 불가능하기 때문에, Infura 또는 Metamask와 같은 솔루션을 활용한다. 중요한 것은 단일의 중앙화된 서버에 의존하지 않는 탈중앙화 환경을 사용 한다는 것이다.

이더리움에는 크게 2가지 구성요소가 존재한다. 대부분의 블록체인 환경에서도 동일하다.

(1) 데이터베이스

네트워크에서 발생하는 모든 트랜잭션은 블록체인에 저장된다. 중요한 것은 응용프로그램(DApp)을 배포하는 과정 또한 트랜잭션으로 간주된다.

모든 트랜잭션은 공개되며, 누구나 볼 수 있다.

트랜잭션은 절대 조작되지 않는다. 블록체인 네트워크에 있는 모든 노드에 동일한 데이터 복사본이 있는지 확인하고, 유효하지 않은 데이터 기록이 발생하지 않도록 특별한 합의알고리즘을 사용한다. 이더리움은 Proof of Work(PoW)라는 합의알고리즘을 주로 사용한다.

(2) 코드

이더리움은 솔리디티(Solidity)를 포함한 몇 개의 언어를 이용하여 응용프로그램에서 사용되는 시스템 로직을 작성한다. 이러한 시스템 로직은 ‘스마트 계약(Smart Contract)’라고 불린다.

솔리디티로 작성된 스마트 계약은 솔리디티 컴파일러를 통해 이더리움 바이트코드(Ethereum Byte Code)로 컴파일되고, 해당 바이트코드가 블록체인에 배포된다.

배포된 스마트계약은 EVM(Ethereum Virtual Machine)에서 실행된다.

이더리움에서 실행되는 어플리케이션(DApp)을 블록체인 노드와 연결하기 위해 web3.js라는 자바스크립트 라이브러리를 사용한다. 자바스크립트 기반이기 때문에 react, angular와 같은 프레임워크를 이용할 수 있다.

스마트 계약(Smart Contract)

예를 들어 ‘크라우드 펀딩을 하는 블록체인 기반 어플리케이션’을 만든다고 가정한다. 최종 목표액에 도달하면 제작자에게, 도달하지 못한다면 다시 기부자에게 돌아가도록 시스템을 구성하려고 한다. 기존의 어플리케이션과 블록체인 기반 어플리케이션의 가장 큰 차이점은 블록체인에 배포된 코드는 임의로 중지되거나 수정될 수 없다 는 것이다. 제작자와 기부자 간 약속된 행위를 제작자가 본인의 변심으로 인하여 기부자의 의사없이 임의대로 변경할 수 없다. 이러한 이유로 블록체인에서 작성된 어플리케이션을 스마트 계약(contract)이라고 부른다. 작성된 계약서를 코드로 변환하여 블록체인에 배포하는 순간 디지털화 된 계약이 체결되고 당사자간의 강력한 합의를 만들어내기 때문이다.

이더(Ether)

이더는 이더리움에서 사용되는 기본 통화를 말한다. 이더 외에도 다양한 통화들이 존재하며, 스마트 계약에서 사용되는 단위는 웨이(wei) 이다.

명칭 통화(wei 기준, 10^x) wei 0 babbage 3 lovelace 6 shannon 9 szabo 12 finney 15 ether 18 grand 21

주소와 계정

주소(Address)

이더리움의 주소는 공개키 암호화 방식에 의해서 생성된다. 주소의 생성 과정은 다음과 같다.

개인키 생성 개인키를 이용하여 공개키 생성 keccak256 알고리즘을 이용하여 공개키의 해시값 계산 해시값의 위쪽 20바이트를 이용하여 이더리움 주소 생성

주소와 개인키의 역할을 정리하면 주소는 사용자 신분증, 개인키는 신분증을 사용할 수 있는 암호와 같다. 세부적으로 정리해보면 다음과 같다.

주소는 공개되어 있으며, 모든 사람과 공유할 수 있다.

개인키는 절대 공유되어서는 안된다.

블록체인과 상호작용하려면 주소와 개인키가 모두 필요한데, 주소와 개인키는 어떠한 이더리움 데이터베이스에도 저장되지 않는다. 사용자만이 해당 정보를 통제할 수 있다.

계정(Account)

블록체인과 상호작용하기 위한 주소와 개인키의 조합을 계정이라고 부른다. 계정에는 이더(Ether) 잔고 보유와 트랜잭션 전송 등의 기능이 있다.

계정에는 2가지 유형이 있다.

(1) 외부 소유 계정(EOA) 주소와 개인키 조합으로 만들어진 계정을 의미한다. 다른 계정과 이더를 송수신하고 스마트 계약으로 트랜잭션 요청을 보낼 수 있다.

(2) 컨트랙트 계정 외부 소유 계정과 컨트랙트 계정의 가장 큰 차이점은 컨트랙트 계정에는 개인키가 없다 는 것이다. 즉 컨트랙트 계정은 스마트 계약을 블록체인으로 배포할 때 생성된다. 그렇기 때문에 컨트랙트라고만 불리기도 한다.

EOA와 동일하게 다른 계정과 이더를 송수신할 수 있다.

EOA와는 다르게 관련된 코드를 가질 수 있으며, EOA 또는 다른 컨트랙트의 호출을 통해서만 트랜잭션이 발생된다.

지갑(Wallet)

지갑은 이더리움 계정을 저장하고 관리하는데 사용되는 소프트웨어 플러그인 또는 라이브러리를 의미한다. 지갑은 크게 다음과 같은 기능을 제공한다.

사용자가 보유한 1개 또는 그 이상의 계정을 관리

트랜잭션의 서명(이더 전송 또는 기타 기능에 대한)

잔고 확인(추적)

지갑에는 크게 2가지 유형이 있다.

(1) 비결정적(non-deterministic) 지갑

임의의 공개키/개인키 쌍을 사용하는 지갑

여러 개의 공개키/개인키 쌍을 만들 수 있지만, 각 쌍들은 서로 전혀 연관관계가 없다.

(2) 결정적(deterministic) 지갑

모든 키가 시드(seed)라는 단일 지점으로부터 시작되어 파생된다.

시드는 특정 단어들로 구성된 니모닉 코드(mnemonic code)를 이용하여 만들어지는데, 이 시드를 이용하면 사용자가 별다른 정보의 요청 없이 지갑을 쉽게 백업하고 복구할 수 있으며 특정 경우에 따라서는 개인키를 몰라도 공개키를 생성할 수 있다. 아래의 메타마스크 시연 영상을 보면 니모닉 코드를 활용해 지갑에서 계정을 만들고 복원하는 과정을 볼 수 있다.

메타마스크(Metamask)

이더리움에서 사용되는 가장 인기있는 지갑으로, 크롬에서 플러그인으로 설치할 수 있다.

메타마스크를 처음 설치하면 12개 단어로 구성된 니모닉 코드를 저장하라는 요청을 받는다. 사용자는 해당 니모닉 코드를 이용하여 지갑을 쉽게 복원하고 관리할 수 있게 된다.

@영상 1: 메타마스크의 설치 방법과 니모닉코드를 활용한 결정론적 지갑의 생성 및 개념에 대한 영상

가스(Gas)

이더리움에서 스마트 계약을 배포하고 트랜잭션을 호출하는 모든 과정에는 비용이 필요하다. 이더리움에서 이 비용은 네트워크의 채굴자에게 이더 형태로 지불된다.

이더리움 황서에 따르면, 트랜잭션에 존재하는 단위 연산의 개수에 따라 비용이 정해진다. 이 때의 단위 연산을 가스라고 한다.

예를 들어, 두 개의 숫자를 더하는 작업은 3개의 단위 연산을, 곱셈은 5개의 단위 연산을 포함한다.

(1) 가스 가격(gas price)

하지만 필요한 가스의 양을 안다고 해서 채굴자에게 지불해야 하는 이더의 양을 알 수 있는 것은 아니다. 이유는 가스의 가격(gas price)는 트랜잭션을 생성하는 사람이 정하기 때문이다.

물건마다 이미 정해진 가격이 있는 것이 아닌, 일종의 ‘경매’와 같은 개념으로 보면 좋다. 마치 트랜잭션 생성자가 채굴자에게 “가스당 5 Wei를 지불할 용의가 있다” 라고 어필하는 것과 같다. 만약 트랜잭션이 10000 가스를 소비하고 위와 같이 가스 가격을 제시할 경우, 해당 트랜잭션에 대한 수수료로 50000 Wei를 지불하게 된다.

가스의 가격은 트랜잭션의 처리 속도에 영향을 준다. 가격이 높을수록 해당 트랜잭션은 다른 사람의 트랜잭션보다 빠르게 처리된다. 채굴자는 높은 가스 가격을 제시한 트랜잭션 순서대로 블록에 포함시킨다. 단, 가격을 낮게 책정한다고 해서 블록에 포함되지 않는 것은 아니다. 다만 수많은 대기시간이 걸릴 뿐이다.

(2) 가스 한도(gas limit)

트랜잭션 실행에 필요한 가스의 양을 정확하게 측정할 수 없기 때문에, 이더리움에서는 트랜잭션 실행에 필요한 최대 금액의 가스를 지정할 수 있도록 한다. 이를 통해 무분별한 수수료 소모를 방지할 수 있다.

여기서 말하는 가스 한도는 트랜잭션을 대상으로 하며, 블록에 대한 가스 한도는 별도로 존재한다. 블록 가스 한도는 이더리움 각 블록에 적용되는 최대 가스 한도를 의미하는데, 현재 이더리움에서 블록은 가스 총액이 800만 이내의 범위에서만 트랜잭션을 포함할 수 있다. 즉, 블록에 존재하는 모든 트랜잭션에 대한 수수료의 총 합이 800만을 넘을 수 없다. 이러한 제한을 두는 이유는, 블록에 대한 수수료 제한이 없을 경우 무한 루프로 블록이 생성되지 못하는 병목현상을 통해 블록 채굴이 중단될 수 있는 위험을 방지하기 위해서이다.

바이트코드(Bytecode)

솔리디티 언어로 작성된 스마트 계약은 EVM 바이트코드로 컴파일된다. 이더리움의 런타임 환경은 바이트코드만을 인식하는데, 이를 통해 개발자는 바이트코드로 컴파일만 할 수 있다면 솔리디티가 아닌 다른 언어로도 스마트 계약을 구현할 수 있게 된다.

EVM(Ethereum Virtual Machine)

EVM은 이더리움 프로토콜의 일부로, 신뢰가 요구되지 않는 환경에서 누구나 코드를 실행하고 결정론적인 실행결과를 보장받을 수 있도록 한다. geth, parity와 같은 이더리움 클라이언트를 사용하면 EVM이 시작되는 것을 확인할 수 있다. EVM은 트랜잭션의 동기화, 유효성 검사, 실행 등의 기능을 제공한다.

개발 도구

Geth

이더리움 제단에서 공식적으로 지원하는 클라이언트로, Go 언어로 개발되었다.

Geth를 처음 시작하면 노드라고 불리는 네트워크 내에 있는 다른 이더리움 클라이언트와 연결되어 블록체인의 전체 사본을 다운로드한다. 그리고 블록체인 사본을 계속 최신상태로 유지하기 위해 끊임없이 다른 노드와 통신한다.

Geth를 이용하면 블록 채굴, 트랜잭션 추가/검증/실행 등을 할 수 있다. 또한 RPC로 통신할 수 있는 API를 외부에 노출한 REST 서버 역할을 담당할 수도 있으며, 블록체인과 연결할 수 있는 자바스크립트 기반 클라이언트(geth console)도 제공한다.

@그림 3: Geth을 이용한 이더리움 구성(결국 Geth을 이용하여 서로 다른 노드와 통신한다)

Web3.js

이더리움 블록체인과 통신하기 위해 사용되는 자바스크립트 기반 라이브러리이다. web3.js를 사용하면 모든 프론트엔드에서 DApp을 사용할 수 있다. 또 다른 라이브러리로 Ethers.js가 있다.

DApp 개발에 가장 널리 사용되는 프레임워크로, 블록체인애서 스마트 계약을 컴파일하고 배포할 때의 복잡한 과정을 대부분 추상화하여 제공한다.

Ganashe(가나슈)

Geth 또는 parity와 같은 클라이언트를 개발 목적으로 사용하면 트랜잭션 실행에만 15초가 걸리는 환경 때문에 개발속도가 더딜 수 있다. 가나슈는 이를 해결하기 위해 블록체인을 로컬 메모리 내에서 사용할 수 있도록 한다. 가나슈는 100개의 이더가 미리 담겨져 있는 10개의 테스트 계정을 제공한다.

$ npm install ganache-cli $ node_modules/.bin/ganache-cli

@그림 4: ganache-cli를 실행하면 위와 같이 각자 100개의 이더를 보유한 10개의 테스트 계정과 HD wallet을 제공받는다.

이더리움 블록체인을 탐색할 수 있는 어플리케이션으로, 퍼블릭 이더리움 내 모든 주소, 트랜잭션, 블록 등에 대한 정보를 제공한다.

참고자료

맨 위로 이동하기

【한글자막】 Solidity를 사용한 이더리움 블록체인 개발자 부트캠프 (2022)

솔리디티 를 통한 이더리움 블록체인 개발 부트캠프!

이더리움 자격증 공동 개발자 강의!

실제 프로젝트 구축 하기!

초보자도 시작할 수 있습니다!

본 강의를 선택해야 하는 이유

솔리디티를 통한 이더리움 블록체인 개발자 부트캠프 강의에 오신 것을 환영합니다. 이 강의 단 하나만으로, 여러분은 이더리움 블록체인 개발자가 되실 수 있습니다.

별점이 다섯 개인 리뷰 1,900개 이상이 증명하듯, 본 강의는 온라인으로 제공되는 이더리움 블록체인 개발 과정을 다룬 최고의 강의 중 하나이며, 약 13시간 동안 제공되는 본 강의는, 다른 어디에서도 보실 수 없을 정도로 가장 포괄적인 내용을 담고 있는 온라인 강의입니다.

업데이트된 비디오 튜토리얼, 실습 프로젝트, 빠른 질의 응답을 통해 이더리움 블록체인 개발을 마스터하실 수 있습니다. (강의를 들으시고 강의와 관련하여 궁금하신 점은 무엇이든 Q&A에 남기실 수 있지만, 꼭 영어로 남겨주세요. 그래야 답변을 드릴 수 있습니다.)

프로그래밍 경험이 거의, 혹은 전혀 없으시더라도, 이 강의를 통해 여러분은 초보자에서 이더리움 블록체인 개발자가 되실 수 있을 겁니다. 그 이유는 다음과 같죠.

본 강의는 산업 표준 이더리움 자격증 공동 개발자가 진행하는 강의입니다.

본 강의는 2021년 업데이트 되었기 때문에, 모든 최신 도구로 학습하실 수 있습니다.

본 강의는 돌아가지 않습니다. 실습 랩을 통해 실제 프로젝트 구축 방식을 학습하실 수 있습니다.

우리는 암호화폐와 블록체인 생태계에 대해 10만 명 이상의 수강생을 교육한 바 있습니다.

약 1,200만 원 정도를 절약하는 동시에, 대면 수업과 동일한 자료들을 얻어 가실 수 있습니다.

본 강의는 새로운 내용, 프로젝트, 모듈이 등장함에 따라 정기적으로 업데이트됩니다.

본 강의에서 이더리움 블록체인 개발자로서 성공하기 위해 알아야 할 모든 것을 비디오 튜토리얼을 통해 단계별로 알려드릴 것이며,

본 강의를 마무리하실 때쯤, 여러분은 능숙하게 이더리움 블록체인 앱 프로그래밍을 하실 수 있게 됩니다. 관련 일자리를 얻거나 전문적으로 학습한 스킬을 사용할 수 있는 정도로 말이죠.

잠재적인 고용주들에 자랑할 수 있는 프로젝트 포트폴리오를 만드실 수도 있습니다.

저희는 이 강의를 들으시는 모든 분들께서 이 강의를 좋아하게 되실 거라고 확신합니다. 오늘 바로 시작하여, 새로운 스킬을 학습함으로써 얻을 수 있는 모든 걸 경험해 보세요.

강의에서 뵙겠습니다!

– Ravinder

P.S. 기존 수강생들의 생생한 체험기를 읽어 보세요!

⭐️⭐️⭐️⭐️⭐️”상세한 내용과 세세한 설명은 상상 이상입니다. 여러 문서와 테스트에 쏟아붓는 시간을 절약할 수 있었습니다. 경험이 거의 없던 부분에 대한 질문들까지도 해결할 수 있었고요. 정말 감사합니다.” – 다니엘 포르토

⭐️⭐️⭐️⭐️⭐️ “저는 두 어 달 동안 이 강의를 천천히 들었습니다. 그리고 지금은 사랑하게 됐어요. 이 강의는 최적의 속도로 진행됩니다. 선생님들도 박식하시고, 추가 학습 자료들과 주어지는 실습도 좋고, 도움되는 정보들도 많습니다. 또, 이더리움 개발 단계에 중요한 자료들이 지속적으로 업데이트됩니다. 실습할 때 ‘최근 업데이트’ 날짜가 그 전 주라고 떠있는 것을 종종 발견하게 될 겁니다. 지금까지 이더리움 개발 강의를 몇 가지 들어보았지만, 이 강의가 단연코 최고였습니다. 열의가 넘치는 이더리움 개발자들에게 이 강의를 강력 추천합니다!” – 월튼 존스

⭐️⭐️⭐️⭐️⭐️”이 강의에서 진행되는 모든 실습을 즐기고 있습니다. 모두 계속해서 업데이트되고 필요할 때 바로 참조할 수 있는 PDF 파일도 제공됩니다. 이 유데미 강의는 제가 현재까지 혼자 코드 공부를 하면서 경험했던 강의 중 최고는 아니더라도, 최고의 강의 중 하나라고 자신 있게 말씀드릴 수 있을 것 같습니다. 제가 가졌던 모든 의문은 실습 시간 이후 진행되는 심도 깊은 이론 강의 시간에 해결되었습니다. 더 이상 궁금한 게 없어요! 토마스, 라빈더 선생님 감사합니다. 이오스 강의도 진행해 주셨으면 좋겠습니다!” – 사에드 다워드

이더리움 입문 바이블: 모든 이더리움 입문자를 위하여 (인프런 강의)

이더리움 입문 바이블: 모든 이더리움 입문자를 위하여 본글은 인프런 이더리움 입문 바이블: 모든 이더리움 입문자를 위하여 강의 내용입니다. 1. 이더리움이란? 1-1. 지불(Payment), 그 이상을 향해

비트코인 블록체인은 주로 은행과 같은 중앙 기관의 중재 없이 블록체인의 다양한 당사자 간에 돈을 송금하는 데 사용됩니다. 비탈릭 부테린(Vitalik Buterin)이라는 이름의 19세 청년 개발자는 이러한 탈중앙화의 개념을 송금 외에 다른 분야에 적용하고자 했습니다. 그는 중앙화된 통제 권한 없이 전 세계적으로 운영될 수 있는 응용 프로그램을 만들고 싶었습니다. 예를 들어, 페이스북의 경우 페이스북 주식회사가 사용자의 데이터를 소유하고 있으며 원하면 사용자의 계정을 제거할 수 있는 권리를 가집니다. 10년 뒤 페이스북이 폐쇄된다고 가정하면 모든 데이터가 손실될 수도 있습니다. 비탈릭은 응용 프로그램을 빌드할 수 있도록 비트코인에 스크립팅 언어를 추가할 것을 제안하지만 비트코인 개발팀과의 합의에 도달하지 못합니다. 결국 그는 2014년 1월에 일반적인 스크립팅 언어를 사용할 수 있는 새로운 플랫폼에 대한 백서를 출간합니다. 곧이어 개발팀이 꾸려지고, 개빈 우드(Gavin Wood) 박사의 팀이 이더리움 황서에서 네트워크의 모든 스마트 계약을 실행하는 런타임 환경인 EVM(EVerenum Virtual Machine)에 대해 설명했습니다(EVM 및 스마트 계약에 대한 자세한 내용은 다음 절에서 설명합니다). 이 플랫폼의 개발을 위한 자금의 크라우드펀딩은 2014년 7월부터 8월에 거쳐 이루어졌으며, 펀딩 참가자는 비트코인으로 이더리움 밸류 토큰(이더)을 구입했습니다.

1-2. 세계의 컴퓨터

이더리움은 퍼블릭 블록체인 기반의 분산 컴퓨팅 플랫폼입니다. 전세계의 수많은 작은 컴퓨터로 구성된 하나의 큰 컴퓨터로 생각할 수도 있습니다. 응용 프로그램을 작성하고 글로벌 컴퓨터에서 실행할 수 있으며, 이 플랫폼은 중단 시간, 검열, 사기 또는 제 3자의 간섭없이 항상 실행되도록 보장합니다. 응용 프로그램을 실행하는 것 외에도, 이더리움 블록체인을 통해 중앙 권한없이 두 당사자간에 돈을 이체할 수 있습니다. 이러한 모든 컴퓨터(노드라고도 함)는 서로 연결되어 있으며 코드와 데이터의 전체 복사본을 가지고 있습니다. 이더리움 블록체인에 코드를 배포하면 코드가 네트워크의 모든 노드로 복제됩니다. 응용 프로그램에 데이터가 저장되면 모든 노드에서 해당 데이터가 복제됩니다. 네트워크에는 수천 개의 노드가 있으며 모든 노드를 중지시키는 것은 거의 불가능합니다. 따라서 응용 프로그램에 항상 액세스할 수 있습니다.

1-3. 웹앱 아키텍쳐

이더리움을 이해하는 가장 좋은 방법 중 하나는 기존의 클라이언트/서버 아키텍처와 비교하는 것입니다. 웹 개발자라면 오른쪽 다이어그램을 쉽게 이해할 수 있을 것입니다(웹 아키텍처를 몰라도 괜찮습니다). 이것은 간단한 웹 애플리케이션의 클라이언트/서버 아키텍처입니다. 일반적인 웹 응용 프로그램은 일반적으로 자바, C#, 루비, 파이썬과 같은 프로그래밍 언어로 작성된 서버 단 코드로 구성됩니다. 프론트엔드 코드는 HTML/CSS/자바스크립트를 사용하여 구현됩니다. 전체 애플리케이션은 AWS, 마이크로소프트 애져, 구글 클라우드 플랫폼, Heroku 또는 VPS와 같은 호스팅 제공 업체에서 호스팅됩니다. 사용자는 웹 브라우저, curl/wget(커맨드 라인) 또는 API를 통해 클라이언트를 사용하여 웹 응용 프로그램과 상호 작용합니다. 중앙화된 하나의 웹 응용 프로그램이 있으며 모든 클라이언트가 이 응용 프로그램과 상호 작용합니다. 클라이언트가 서버에 요청하면 서버는 요청을 처리하고 데이터베이스 또는 캐시와 상호 작용하며 데이터베이스를 읽고, 쓰고, 업데이트하고 클라이언트에 응답을 반환합니다.

1-4. 이더리움 아키텍쳐

위 그림에서 알 수 있듯이, 모든 클라이언트(브라우저)는 응용 프로그램의 자체 인스턴스와 통신합니다. 모든 클라이언트가 연결할 중앙 서버가 없습니다. 즉, 이상적인 탈중앙화 세계에서, Dapp(탈중앙화 애플리케이션)과 상호 작용하려는 모든 사람은 컴퓨터/스마트콘 등의 기기에 실행중인 블록체인의 전체 복사본이 필요합니다. 즉, 애플리케이션을 사용하려면 먼저 전체 블록체인을 다운로드한 다음 애플리케이션 사용을 시작해야 합니다. 우리가 사는 세계는 이상적인 세계가 아니기에, 모든 사람들이 이러한 앱을 사용하기 위해 블록체인 서버를 운영할 것으로 기대하는 것은 무리입니다. 하지만 탈중앙화의 배경은 단일/중앙화된 서버에 의존하지 않는 것입니다. 그래서 제안된 몇 가지 솔루션(블록체인 서버 호스팅 서비스, Metamask 등)를 사용하면 하드 디스크와 RAM을 많이 사용하지 않아도 블록체인의 전체 복사본을 다운로드하고 실행하면서도 탈중앙화를 훼손하지 않을 수 있습니다. 앞으로의 이어지는 레슨에서 이러한 방식을 경험할 것입니다. 자, 그럼 이더리움 블록체인이 정확히 무엇일까요? 블록체인에는 2가지 구성 요소가 있습니다:

데이터베이스: 네트워크의 모든 트랜잭션은 블록체인에 저장됩니다. 응용 프로그램을 배포하는 행위도 트랜잭션으로 간주됩니다. 후보자 투표를 위한 투표 응용 프로그램을 예로 들면 하나하나의 투표가 트랜잭션로 간주됩니다. 이러한 모든 트랜잭션은 공개되며 누구나 볼 수 있고 확인할 수 있습니다. 이 데이터는 절대로 조작할 수 없습니다. 네트워크의 모든 노드에 동일한 데이터 복사본이 있는지 확인하고, 유효하지 않은 데이터가 이 데이터베이스에 기록되지 않도록 하기 위해 이더리움은 작업증명(Proof of Work)이라는 알고리즘을 사용하여 네트워크를 보호합니다. (http://ethereum.stackexchange.com/questions/14/what-proof-of-work-function-does-ethereum-use)

코드: 블록체인의 데이터베이스 요소는 트랜잭션을 저장합니다. 그렇다면 투표 응용 프로그램에서 투표에 대한 모든 논리는 어디에 담길까요? 이더리움 세계에서는 솔리디티(Solidity)라는 언어로 논리/응용 프로그램 코드(스마트 계약)를 작성합니다. 그런 다음 솔리디티 컴파일러를 사용하여 이더리움 바이트코드(Ethereum Byte Code)로 컴파일한 다음 해당 바이트 코드를 블록체인에 배포합니다 (스마트 계약 작성에 사용할 수 있는 다른 언어가 조금 있긴 하지만, 가장 인기 있고 상대적으로 쉬운 것이 솔리디티). 따라서, 이더리움 블록체인은 트랜잭션을 저장할 뿐 아니라 스마트 계약 코드를 저장하고 실행합니다.

즉, 기본적으로 블록체인은 데이터를 저장하고 코드를 저장하며 코드를 EVM (Ethereum Virtual Machine)에서 실행합니다. 이후 이어지는 절에서 바이트코드 및 EVM에 대해 자세히 배울 예정입니다. 이더리움에는 웹 기반 Dapp을 만들기 위해 web3.js라는 편리한 자바스크립트 라이브러리가 있습니다. 이 라이브러리는 블록체인 노드에 연결됩니다. 따라서 react.js, angular.js 등의 유명한 js 프레임워크에 이 라이브러리를 포함시킬 수도 있습니다.

2. 중요한 이더리움 관련 개념들

2-1. 스마트 컨트랙트(Smart Contracts)

앞 절에서는 솔리디티 프로그래밍 언어로 응용 프로그램을 작성하고 이를 이더리움 블록체인에 배포하는 방법에 대해 설명했습니다. 이더리움에서는 이러한 응용 프로그램을 ‘스마트 계약’이라고 합니다. 왜 이러한 응용 프로그램을 스마트 계약이라고 부르는지 궁금하겠죠? 일반적으로 계약은 법으로 집행되는 두 당사자, 또는 여러 당사자 간의 서면 합의입니다. 계약서를 작성하여 코드로 변환하고 블록체인에 배포하면 디지털 계약이 체결됩니다. 블록체인에 있는 이 코드의 장점은 당사자 간의 합의를 강화할 수 있다는 점입니다. 이것이 바로 “스마트 계약”이라고 불리는 이유입니다. 이 코드가 어떻게 계약을 시행할 수 있을까요? 일단 계약이 블록체인에 배포되면 이를 중지하거나 수정할 수 없습니다. 이것이 계약이 시행되는 방식입니다. 이해를 위해 간단한 예를 살펴 보겠습니다.

예시 :

Crowdsale 응용 프로그램을 작성하려고 한다고 가정해 봅시다. 제품을 만들기 위해 10,000달러를 모으고자 하는 제작자가 있으며, 이 제품에 관심이 있고 선불로 기꺼이 지불할 잠재 고객이 있습니다. 계약상 각 고객이 보내는 액수가 $10 – $10,000 사이에 해당하면 수령할 것이고, 목표가 달성된다면 그 돈은 제작자에게 송금됩니다. 그렇지 않은 경우, 기부자에게 돈이 돌려 보내집니다. 이는 스마트 계약을 사용하여 제작자와 지지자 간의 계약을 시행하는 이상적인 사용 사례입니다. 중앙화된 응용 프로그램에서도 이 논리를 구현하는 것은 간단합니다. 스마트 계약에서 이를 구현할 때의 장점은 아래와 같습니다.

1. 모든 참여자가 보낸 돈이 스마트 계약에 담겨 있습니다. 참여자도 제작자도 그 돈을 사용할 수 없습니다.

2. 목표에 도달하자마자 돈이 제작자에게 보내지도록 코드를 구현할 수 있습니다.

3. 특정 시간 내에 목표에 도달하지 못하면 모든 참가자에게 환불을 시행할 수 있도록 코드를 구현할 수 있습니다.

4. 이 코드는 한번 블록체인에 배포된 후에는 조작할 수 없습니다.

2-2. 이더, 그리고 이더의 단위(Ether & Denominations)

각 국가마다 USD, INR, RNB, GBP, EUR 등과 같은 자체 통화가 있듯이, 각 블록체인에는 자체 통화가 있습니다. 이더리움 블록체인의 경우 기본 통화를 이더(Ether)라고 합니다. 이더를 USD 또는 EUR와 같은 다른 화폐로 교환할 수 있는 거래소도 있습니다. 이더의 현재 가격은 이곳에서 확인할 수 있습니다. 현실 세계의 통화에는 다양한 단위가 있습니다. 예를 들어 미국 1달러는 100센트이며 페니(1센트), 니켈(5센트), 십 센트(10센트), 쿼터(25센트)와 같은 다양한 단위가 있습니다. 국가 및 통화에 따라 다양한 단위가 있을 수 있습니다. 이더에도 아래 그림과 같이 다양한 단위 있습니다. 그 중에서 두 가지, 이더와 웨이만 잘 기억해도 됩니다. 웨이는 가장 낮은 단위로, 스마트 계약서에서 실제로 쓰이는 단위입니다.

2-3. 주소(Addresses)

페이스북과 같은 웹사이트에 로그인하려면 일반적으로 이메일, 사용자 이름과 비밀번호를 사용합니다. 당신의 사용자 이름은 페이스북에서 신분증에 준하며, 사용자 이름 / 암호를 사용하여 페이스북 로그인을 위한 인증을 거치게 됩니다.이더리움 블록체인에서 사용자의 신분증에 해당하는 것은 주소입니다. 이더리움 주소는 001d3f1ef827552ae1114027bd3ecf1f086ba0f9 과 같은 형태를 가집니다. 각 주소에는 해당 개인키가 있습니다. 개인키는 사용자가 알고 있는 일종의 암호로 간주할 수 있습니다. 블록체인과 상호 작용하려면 이 주소 + 개인키 쌍이 필요합니다. 다음은 블록체인과 이더리움을 이해하기 위해 암기해야 할 몇 가지 핵심 사항입니다.

1. 이더리움 주소는 공개되어 있으며 전 세계 누구와도 공유 할 수 있습니다.

2. 개인키는 절대 다른 사람과 공유해서는 안됩니다.

3. 주소 + 개인키는 그 어떤 데이터베이스에도 저장되지 않습니다. 사용자만이 이 정보를 통제 할 수 있습니다.

앞으로 이어지는 절에서는 이러한 주소를 관리하고 사용하는 방법을 배우게 됩니다.

이더리움 주소는 어떻게 생성되는가?

아래의 예는 001d3f1ef827552ae1114027bd3ecf1f086ba0f9 라는 주소가 어떻게 생성되는지에 대한 간단한 설명입니다. 공개키 암호화의 원리를 알고 있다는 가정 하에 작성된 내용이며, 자세한 내용은 다음 링크를 참조하십시오.

개인키 생성 k(private key) = f8f8a2f43c8376ccb0871305060d7b27b0554d2cc72bccf41b2705608452f315 개인키로부터 공개키 생성 K(public key) = 6e145ccef1033dea239875dd00dfb4fee6e3348b84985c92f103444683bae07b83b5c38e5e2b0c8529d7fa3f64d46daa1ece2d9ac14cab9477d042c84c32ccd0 keccak256 알고리즘으로 공개키의 해시값 계산 Keccak256(K) = 2a5bc342ed616b5ba5732269001d3f1ef827552ae1114027bd3ecf1f086ba0f9001d3f1ef827552ae1114027bd3ecf1f086ba0f9 생성된 해시갑의 뒤쪽 20바이트를 취하여 이더리움 주소 생성 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9

2-4. 계정(Accounts)

이더리움 주소와 개인키의 조합을 계정(account)이라고 합니다. 이더리움 계정은 이더 잔고를 보유하고 트랜잭션을 전송할 수 있으며, 2가지 유형이 있습니다.

1. 외부 소유 계정(EOA):

위에서 언급한, 공개 주소와 개인키의 조합을 말합니다. 외부 소유 계정, 또는 외부 계정을 사용하면

다른 계정과 이더를 송수신하고

스마트 컨트랙트에 트랜잭션을 보낼 수 있습니다.

컨트랙트 계정:

컨트랙트 계정에는 상응하는 개인키가 없습니다. 이러한 계정은 스마트 계약을 블록체인에 배포할 때 생성됩니다. 컨트랙트 계정 대신 컨트랙트(contract)로만 표시되기도 합니다. 컨트랙트(계정)의 몇 가지 주요 기능은 다음과 같습니다.

다른 계정과 이더를 송수신하고(EOA와 동일)

관련된 코드를 담고(EOA와 다름)

* EOA나 다른 컨트랙트의 호출을 받아 트랜잭션을 발생시킵니다.

이어지는 내용을 통해 이러한 계정을 만들고 사용하는 방식을 더 잘 이해할 수 있습니다.

2-5. 지갑(Wallets)

지갑은 이더리움 계정을 저장하고 관리하는 데 사용되는 소프트웨어 플러그인 또는 라이브러리입니다. 지갑을 통해 여러 계정을 관리하고, 트랜잭션에 서명하고, 잔고을 추적하는 등의 기능을 사용할 수 있습니다. 지갑은 크게 2 가지 유형으로 분류할 수 있습니다. 1. 비결정적 지갑: 이것은 임의의 개인키/공개키 쌍을 사용하는 유형의 지갑입니다. 개인키/공개키 쌍을 많이 생성할 수 있지만 각 키 쌍 간에는 아무런 상관 관계가 없습니다. 2. 결정론적 지갑: 이 유형의 지갑에서는 모든 키가 시드(seed)라는 단일 시작 지점에서 파생됩니다. 이 시드는 사용자가 다른 정보를 요구하지 않고 지갑을 쉽게 백업하고 복원할 수 있게 해주며, 경우에 따라 개인키를 모른 채 공개키를 생성할 수 있게 해 줍니다. 시드는 일반적으로 사람이 읽을 수 있는 니모닉 문구 단어로 배열됩니다. 메타마스크(metamask)와 같은 플러그인을 사용한다면 처음 설치했을 때 12개 단어로 이루어진 시드를 저장하라는 요청을 받았을 것입니다. 다음 장의 메타마스크 부분에서 이에 대한 비디오 데모를 다룰 것입니다.

2-6. 가스(Gas), 가스 가격(Gas Price), 가스 한도(Gas Limit)

가스(Gas)

이더리움 블록체인에 스마트 계약을 배포하고 트랜잭션을 실행하기 위해서는 각 상호 작용과 관련된 비용이 소모됩니다. 블록체인에서 트랜잭션을 실행하려면 네트워크의 채굴자에게 이더를 지불해야 합니다.

그럼 트랜잭션을 위해 지불하는 이더의 양은 누가 결정할까요? 이는 이더리움에 익숙하지 않은 많은 개발자들이 혼란스러워하는 부분이기도 합니다. 여기에 대한 답은 이더리움 황서에 기재되어 있는데, 트랜잭션에 얼마나 많은 ‘단위 연산’이 포함되는지에 따라 달라집니다. 예를 들어 트랜잭션이 단순히 두 개의 숫자를 더하는 작업이라면 이는 3개의 단위 연산에 해당합니다. 곱셈이라면 5개의 단위 연산에 해당합니다. 이러한 연산의 단위를 가스(Gas)라고 합니다.

가스 가격(Gas Price)

각 트랜잭션이 얼마나 많은 가스를 필요로 하는지 알아도, 실제로 채굴자에게 지불해야 하는 이더의 양은 아직 알 수 없습니다. 이것을 결정하는 요소가 가스 가격(Gas price)입니다. 재미있는 점은, 트랜잭션 생성자가 원하는 가스 가격을 설정할 수 있다는 점입니다. 예를 들어, ‘가스당 3Gwei를 지불할 용의가 있습니다’ 라고 설정하는 식입니다. 당신의 트랜잭션이 100000가스를 소비하고 가스 가격을 3Gwei로 설정하면, 해당 트랜잭션에 대한 수수료로 3000000Gwei를 지불하게 됩니다.

설정한 가스 가격이 높을수록 트랜잭션이 더 빨리 처리됩니다. 이는 대부분의 채굴자들이 가스 가격의 내림차순으로 트랜잭션을 분류하고 가스 가격이 높은 트랜잭션을 선택하여 블록에 포함시키기 때문입니다. 가격을 낮게 책정해도 결국 트랜잭션이 블록에 포함되기는 하겠지만, 그 대기 시간이 상당히 길어질 수 있습니다.

가스 한도(Gas Limit)

트랜잭션이 소모하는 가스의 양을 정확하게 파악하는 것은 매우 어렵습니다. 사용자 입장에서는 아무 생각 없이 트랜잭션을 전송했다가 수백 달러 어치의 이더를 수수료로 소모하고 싶지는 않을 겁니다. 사용자는 이 상황을 피하기 위해, 트랜잭션을 실행하기 위해 사용할 가스의 최대 금액을 나타내는 가스 한도(Gas Limit)를 지정할 수 있습니다.

주의!

가스 한도를 블록 가스 한도(Block Gas Limit)과 혼동하면 안 됩니다. 블록 가스 한도는 이더리움의 각 블록에 적용되는 최대 캡입니다. 현재 이더리움의 블록은 가스 총액이 800만 이내의 범위에서만 트랜잭션을 포함할 수 있습니다. 각 블록에 대해 가스 제한이 있는 이유는, 누군가가 무한 루프를 실행할 수 없도록 하기 위함입니다. 무한 루프가 발생하면 트랜잭션 실행이 완료되지 않아 블록 채굴이 발생하지 않기 때문입니다.

2-7. 바이트코드(Byte Code)

스마트 계약 코드는 대개 솔리디티(Solidity)와 같은 고급 프로그래밍 언어로 작성됩니다. 이 코드는 이더리움 블록체인에 배포되는 EVM 바이트코드로 컴파일됩니다. 이것은 코드가 JVM 바이트코드로 변환되는 자바 등의 프로그래밍 언어와 매우 유사합니다. 이더리움의 런타임 환경은 바이트코드만을 이해하고 실행할 수 있습니다. 이러한 설계의 이점 중 하나는 개발자가 다른 프로그래밍 언어를 사용하여 스마트 계약을 구현할 수 있는 옵션을 제공한다는 점입니다. 현재 파이썬과 유사한 바이퍼(Vyper) 등 몇몇 언어가 EVM 바이트코드로 컴파일됩니다. 프로그램 언어 설계자 입장에서는 이더리움 황서를 참조하여 독자적인 이더리움 프로그래밍 언어를 구현할 수도 있습니다!

예제 솔리디티 코드

해당 바이트코드

2-8. EVM(Ethereum Virtual Machine)

이더리움 가상 머신(Ethereum Virtual Machine, EVM)은 단순하지만 강력한, 튜링 완전성을 가진 256비트 가상 머신으로써 누구나 임의의 EVM 바이트코드를 실행할 수 있습니다. EVM은 이더리움 프로토콜의 일부이며, 이더리움 시스템의 합의 엔진에서 중요한 역할을 합니다. EVM은 누구나 신뢰가 필요없는 환경에서 임의의 코드를 실행하고, 그 결과로 완전히 결정론적이고 실행 결과가 보장됩니다. geth , parity 등의 이더리움 클라이언트를 설치하고 실행하면 EVM이 시작되고, EVM이 트랜잭션의 동기화, 유효성 검사 및 실행을 시작합니다.

3. 알고 있어야 할 개발 도구들

3-1. 게스(Geth) / 패리티(Parity) 클라이언트

Geth

Geth는 이더리움 재단(Ethereum Foundation)이 제공하는 공식 클라이언트 소프트웨어로써, Go언어로 개발되었습니다. Geth를 처음 시작하면 네트워크 내의 다른 이더리움 클라이언트(노드node라고도 불림)에 연결하는 작업을 먼저 시작하고 블록체인의 전체 사본을 내려받게 됩니다. Geth는 블록체인의 복사본을 최신 상태로 유지하기 위해 끊임없이 다른 노드와 통신합니다. 또한 블록을 채굴하고, 블록체인에 트랜잭션을 추가하고 블록의 트랜잭션을 검증하며 트랜잭션을 실행할 수도 있습니다. 그리고 RPC를 통해 상호작용할 수 있는 API를 노출하여 서버 역할을 하기도 합니다. 블록체인에 연결할 수 있는 자바스크립트 클라이언트(geth console)도 있습니다.

Parity

패리티(Parity)는 이더리움 프로토콜의 또 다른 구현체이며, 러스트(Rust) 프로그래밍 언어로 개발되었습니다. 현재 Parity Inc. 라는 기업에서 운영하고 있습니다. 사실 이더리움 네트워크에 접속할 수 있는 클라이언트 소프트웨어를 개발하는 길은 누구에게나 열려 있으며, C++, 파이썬 및 다른 언어로 작성된 클라이언트도 있습니다. 원한다면 이더리움 황서의 사양을 따라 자신의 클라이언트를 구현할 수도 있습니다!

(A simple illustration of the Ethereum network with various clients connected to one another.)

3-2. Web3.js / Truffle

Web3JS

web3js는 이더리움 블록체인과 상호작용하는 데 사용되는 유명한 자바스크립트 라이브러리입니다. 이 자바스크립트 라이브러리를 사용하면 모든 프론트엔드 프레임워크에서 사용자가 탈중앙화 애플리케이션을 이용하게 할 수 있습니다. 이 예제는 web3.js를 사용하여 만든 데모, 투표 애플리케이션입니다. 블록체인과 상호작용하는 또 다른 라이브러리로 Ethers.js 도 있습니다.

Truffle

Ruby on Rails , Django 등과 같은 웹 애플리케이션 개발을 위한 프레임워크처럼, 트러플은 dapps 개발에 가장 널리 사용되는 프레임워크 중 하나로써 블록체인에서 스마트 계약을 컴파일하고 배포하는 복잡성을 많이 추상화합니다. 트러플 프레임워크에 대한 자세한 내용은 http://truffleframework.com/에서 확인할 수 있습니다. 본 강좌의 모든 과정도 트러플 프레임워크를 기반으로 합니다. 트러플의 대안으로 Embark 라는 프레임워크도 있습니다.

3-3. 가나슈(Ganache)

개발을 위해 geth 또는 패리티 같은 클라이언트를 사용하면 각 트랜잭션을 실행하는 데 15 초씩 걸리기 때문에 개발 속도가 느려질 수 있습니다. 이 문제를 해결하기 위해 일반적으로 개발 목적으로 가나슈(ganache)라는 메모리 내 블록체인을 사용할 수 있습니다. ganache-cli 또는 GUI 버전의 커맨드 라인 버전을 설치할 수 있습니다. 가나슈의 또 다른 장점은 테스트를 위해 100개의 이더가 미리 탑재된 10개의 테스트 계정을 확보하게 된다는 점입니다.

npm install ganache-cli node_modules/.bin/ganache-cli

3-3. 메타마스크(Metamask)

앞 장에서 지갑에 대해 설명했습니다. 이더리움 지갑 중 메타마스크는 커뮤니티에서 사용되는 가장 인기있는 지갑 중 하나입니다. 메타마스크 웹사이트에서 크롬 플러그인으로 설치할 수 있습니다. 아래에서 메타마스크를 설치하는 방법과 결정론적 지갑의 개념, 시드 문구의 개념을 보여주는 비디오를 확인할 수 있습니다.

3-4. 이더스캔(Etherscan)

이더스캔(Etherscan)은 이더스캔 사에서 서비스하는 무료 프론트엔드 애플리케이션으로, 이더리움 블록체인을 위한 편리한 탐색기입니다. 퍼블릭 이더리움 블록체인의 모든 주소, 트랜잭션과 블록에 대한 정보를 이 웹사이트에서 확인할 수 있습니다. 오른쪽 그림은 이더리움 네트워크를 시각화한 것으로 네트워크 내에서 이더스캔의 위치를 볼 수 있습니다. 다양한 퍼블릭 네트워크에 대해 대응되는 각각의 이더스캔 페이지가 있으며, 링크는 아래와 같습니다.

3-5. 리믹스(Remix)

리믹스는 스마트 계약을 코딩하는 데 사용할 수 있는 브라우저 IDE입니다. 편집기로 사용할 수 있을 뿐 아니라, IDE로 직접 다양한 네트워크에 스마트 계약을 컴파일하고, 배포하고 상호작용할 수 있습니다. 또한 다양한 컴파일러 버전을 선택하고, 스마트 계약을 디버깅하는 등 많은 기능을 제공합니다. https://remix.ethereum.org에서 IDE에 접근할 수 있습니다. 리믹스는 소규모 스마트 계약을 신속하게 테스트하기에 좋지만, 전문적인 스마트 계약 개발을 위해서는 Vim , Atom , Visual Studio 또는 Sublime 과 같은 편집기를 개발용으로 사용하고 스마트 계약의 컴파일 및 배포에는 트러플 프레임워크를 사용할 것을 권장합니다.

멀티캠퍼스 :: 과정상세보기

<2020년 Update>

비트코인은 “탈중앙 네트워크에서 작동하는 전자 화폐 시스템” 으로

중앙화된 주체 없는 결제 시스템을 구축했습니다.

이더리움은 전자 화폐 시스템의 설계 위에 가상 머신을 추가하여

블록체인을 신뢰할 수 있는 월드 컴퓨터로 탈바꿈 시켰습니다.

[이더리움] 이더리움 입문 바이블 – inflearn 강의 정리(1) : 이더리움 기초, 용어정리, 이더리움 구조, 지갑, 스마트 컨트랙트

📊 개요

우리가 흔히 알고있는 블록체인 기술을 활용 사례에는 비트코인이 있다.

비트코인 블록체인은 돈을 중앙기관의 중재 없이 송수신 하는 것에 그친다.

비탈릭 부테린은 탈중앙화의 개념을 송금 외의 다른 분야에 적용하고자 했다.

ex. 중앙화된 통제권한 없이 전세계적으로 운영될 수 있는 프로그램

그것이 바로 이더리움이다.

⚜️ 이더리움

: 퍼블릭 블록체인 기반의 분산 컴퓨팅 플랫폼

(전세계의 수많은 작은 컴퓨터로 구성된 하나의 큰 컴퓨터)

이것은 기존의 클라이언트/서버 아키텍쳐의 모습이다.

HTML/CSS/JavaScript로 구성된 프론트단과 Ruby, Python, Java등으로 구성된 서버단이 데이터베이스와 캐시와 연결되어있는

중앙화된 하나의 웹 응용프로그램이 있고 모든 클라이언트가 이 하나의 응용프로그램과 상호작용한다.

하지만 이더리움과 같은 탈중앙화 애플리케이션(Dapp)은 응용프로그램의 자체 인스턴스와 통신 한다.

모든 클라이언트가 연결할 중앙 서버가 없다.

그래서 이상적인 탈중앙화의 배경에서는 애플리케이션을 사용하려면 먼저 전체 블록체인을 다운로드한 다음 사용을 시작해야한다.

블록체인의 2가지 구성요소

1) 데이터베이스 : 네트워크의 모든 트랜잭션은 블록체인에 저장됨. 모든 트랜잭션은 공개되며, 누구나 볼 수 있고 확인 가능(조작 불가).

네트워크의 모든 노드에 동일한 데이터 복사본이 있는지 확인하고, 유효하지 않은 데이터가 이 데이터베이스에 저장되지 않도록 Proof of Work(작업증명) 알고리즘으로 네트워크를 보호 한다.

2) 코드 : Solidity라는 언어로 논리/응용프로그램 코드(스마트 컨트랙트) 작성 -> 이더리움 바이트 코드로 컴파일 -> 바이트 코드를 블록체인에 배포

즉, 블록체인은 데이터를 저장하고 코드를 저장하며 코드를 EVM에서 실행함.

728×90

⚜️ 스마트 컨트랙트(Smart Contract, 스마트 계약)

: 솔리디티 프로그래밍 언어로 작성된 응용프로그램

스마트 컨트랙트의 장점은 블록체인에 배포되면 중지하거나 수정할 수 없다는 것임.

⚜️ 이더리움 주소(Address)

주소가 생성되는 간단한 과정

개인키 생성 -> 개인 키로부터 공개키 생성 -> keccak256 알고리즘으로 공개키의 해시값 계산

-> 생성된 해시값의 뒤쪽 20바이트를 취하여 이더리움 주소 생성

⚜️ 지갑

: 이더리움 계정을 저장하고 관리하는데 사용되는 소프트웨어 플러그인 or 라이브러리

여러 계정 관리, 트랜잭션에 서명, 잔고 추적과 같은 기능에 사용된다.

지갑의 2가지 유형

1) 비결정적 지갑 : 임의의 개인키/공개키 쌍을 사용하는 유형의 지갑. 각 키 쌍 간에는 상관관계 없음

2) 결정론적 지갑 : 모든 키가 시드(Seed)라는 단일 지점에서 파생

* Seed는 사용자가 다른 정보를 요구하지 않고 지갑을 쉽게 백업하고 복원할 수 있게 해준다.

(경우에 따라 개인키를 모른 채 공개키 생성 가능)

Reference

https://www.inflearn.com/course/ethereum-bible/dashboard

LIST

키워드에 대한 정보 이더 리움 강의

다음은 Bing에서 이더 리움 강의 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 2세대 블록체인 기술의 시작! ‘이더리움’은 무엇인가?#미래수업 | Living the New Normal EP.15 | tvN 210222 방송

  • 미래수업
  • 가상화폐
  • 암호화폐
  • 디지털화폐
  • 비트코인
  • CBDC
  • 투자
  • 경제
  • 경제공부
  • 강의
  • 강연
  • 특강
  • 블록체인

2세대 #블록체인 #기술의 #시작! #’이더리움’은 #무엇인가?#미래수업 #| #Living #the #New #Normal #EP.15 #| #tvN #210222 #방송


YouTube에서 이더 리움 강의 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 2세대 블록체인 기술의 시작! ‘이더리움’은 무엇인가?#미래수업 | Living the New Normal EP.15 | tvN 210222 방송 | 이더 리움 강의, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment