✨ 블록체인 입문하기 - 개념 크게 묶어보기 ✨

Jeenie·2022년 8월 23일
4
post-thumbnail

서론

입문자를 위한 블록체인 개념 크게 묶어보기입니다.

이 포스트는 전체적으로 흐름을 훑기 위한 요약형 바로가기 모음에 가깝기 때문에 기술을 자세히 다루지는 않습니다.

자세한 사항은 목차별로 연결된 포스트에서 확인할 수 있습니다.

1. 블록체인(Blockchain)

📌 자세한 내용은 블록체인(Block Chain) - 블록체인(BlockChain) 참조

1-1. 블록체인의 정의

block + chain

데이터를 저장하는 block + 체인의 합성어

데이터가 블록에 담겨있고 블록들이 해시를 통해 연결되어 있는 특별한 형태의 데이터베이스

  • 블록체인은 특정 거래가 기록되면 이것이 기록된 장부를 만들어 블록에 담아 그 블록을 해시 알고리즘 을 활용해 체인처럼 모든 블록들이 연결된 분산 저장 알고리즘 이다.

  • 블록 생성 과정에서 블록체인 네트워크를 구성하는 모든 노드들이 새로 생기는 블록을 검증 하고, 모두 합의가 되었을 때 비로소 블록이 생성 된다.

  • 그렇게 생성된 블록이 기존의 블록+체인으로 연결된 시스템에 연결된다.

  • 이러한 동시검증 방식 으로 인해 데이터의 위변조가 불가능

거래내역을 적은 종이는 거래내역이 어떤 순서대로 만들어졌는지 알아내기 힘들다.
하지만 블록은 해시함수를 사용해서 순서를 알 수 있다.

해시함수란?
특별한 성질, 비가역성 을 가지고 있는 함수.
📌 자세한 내용은 블록체인(Block chain) - 해시함수참조

이러한 기반에서 새로 생겨난 생테계와 그 경제 모델 등을 Web 3 생태계 라고 한다.

📌 Web3에 대한 자세한 내용은 세상을 바꿀 Web 3.0

1-1-2. 블록체인과 비트코인

블록체인을 처음 접하는 사람들에게 블록체인암호화폐
"어려운 기술용어"를 뜻하는 같은 의미의 단어나 다름없을 것이다.

나또한 블록체인 === 암호화폐라고 생각해왔다.
하지만 그 둘은 연관은 되어있지만 전혀 다른 의미이다.

- 간단한 비유로 이해할 수 있다

웹사이트 : 정보를 공유하는 기술
검색엔진 : 웹사이트 기술을 이용하는 가장 잘 알려진 방법
구글 : 가장 인기있고 잘 알려진 검색엔진
--------
블록체인 : 정보(데이터 블록)를 기록하는 기술
암호화폐 : 블록체인 기술을 이용하는 가장 잘 알려진 방법
비트코인 : 가장 인기있고 잘 알려진 암호화폐

1-3. 트랜잭션(Transaction)

트랜잭션은,
쉽게 말하면 데이터베이스의 상태를 변화시키는 일련의 논리적 기능을 수행하는 작업 단위라고 할 수 있다.

거래의 기록단위트랜잭션 들은 블록에 포함되어 있다.

1-3-1. 블록의 구조

이미지출처

블록은 헤더(header)바디(body)로 구성된다.

  • 블록 헤더
    블록은 체인 중 몇번째 블록인지, 블록에는 몇개의 트랜잭션이 담겼는지, 블록 생성자, 블록 크기, 전송량 등의 정보를 메타데이터에서 얻을 수 있다.

  • 블록 바디
    트랜잭션 리스트들이 삽입된다.

  • 트랜잭션
    트랜잭션은 발신자와 수신자, 데이터 등의 정보를 가지고 있다.

1-3-2. 트랜잭션 수수료?

하나의 비트코인을 다른 주소로 전송한다면 해당 주소에는 전송한 코인 양보다 약간 적은 양이 입금된다.
트랜잭션을 블록체인에 추가한 채굴자에게 약간의 수수료를 보상으로 지불하기 때문.

얼마나 빠른 트랜잭션 처리를 원하느냐에 따라 수수료를 조절할 수 있다.

채굴자는 가능한 한 많은 수익을 내고싶어 하기 때문에 수수료가 높은 트랜잭션을 우선시할 것이다.

1-3-3. 트랜잭션을 "보낸다"의 의미

블록체인에 원하는 데이터를 추가하거나,
블록체인상에 이미 업로드했던 데이터를 수정 또는 삭제하거나,
블록체인에 배포된 스마트 컨트랙트를 실행하는 것 을 뜻한다.

📌 자세한 내용은 블록체인(Block Chain) - 트랜잭션(Transaction) 참조

참고
https://about-tech.tistory.com/entry/Blockchain-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EC%9D%B4%EB%9E%80

1-4. 스마트 컨트랙트(Smart Contract)

제3의 인증기관 없이 개인 간 계약이 이루어질 수 있게 하는 기술.

특정 조건이 충족되지 않으면, 해당 계약은 실행되지 않기 때문에
두 당사자가 서로를 모르더라도 계약을 체결할 수 있다.

중개인 없이도 계약을 이행할 수 있다는 것과,
신뢰가 필요 없는 프로토콜을 생성할 수 있다는 것이 스마트 컨트랙트의 가장 큰 특징.

블록체인 2세대 이더리움 네트워크에서 스마트 컨트랙트 개념을 반영해서,
DApp 개발이 가능해졌다.

📌 자세한 내용은 블록체인(Block Chain) - 스마트 컨트랙트(Smart Contract) 참조

1-5. 디앱/댑(DApp)

Decentralizaed Applicaion의 약자로,
탈중앙화된 블록체인을 기반으로 작동하는 "앱"을 뜻한다.

이더리움, 큐텀, 이오스 등의 플랫폼 코인 위에서 작동하는 탈중앙화 분산 어플리케이션 이다.

디앱은 블록체인에 스마트계약(Smart contract) 개념이 도입되면서 생겨났기 때문에,
스마트계약이 없는 비트코인에는 디앱이 존재하지 않는다

장점으로는 보안성투명성, 인센티브, 거버넌스 참여

단점으로는 느린 속도, 높은 비용, 불편한 사용자 경험이 있다.

📌 자세한 내용은 블록체인(Block chain) - 디앱(DApp) 참조

1-6. DeFi / DEX / DAO

1-6-1. 탈중앙화란?

모든 것을 아우르는 가장 중요한 가치는 바로 탈중앙화.

블록체인도, 암호화폐도, 웹3도 모두 탈중앙화로부터 시작한다.

탈중앙화는, 권력을 가진 은행이나 중개인 없이 참여자들로만 이루어진 시스템.
참여자들 중 그 누구에게도, 어느 한 주체에게 통제되지 않는다.

이러한 탈중앙화 시스템에서 참여자들이 어떠한 방식으로 합의할 수 있는지에 대한 개념을 합의 알고리즘이라고 한다.

📌 자세한 내용은 블록체인(Block Chain) - 합의 알고리즘(Consensus algorithm) 참조

탈중앙화가 왜 필요한가?

“사실”에 대한 합의를 위해서, 합의의 프로세스를 탈중앙화 한다.

현실세계에서는 제일 신뢰가 있고 현명한 리더를 투표를 통해 선출하고 권한을 위임하지만, 사실에 대한 합의와 함께 위험성이 존재한다.

사실에 대한 합의는 결정에 대한 합의의 근거가 된다.

누가 빵을 얼마나 먹었는지 기록을 신뢰할 수 없다면 누구에게 얼마만큼의 빵을 먹게 할지에 대한 논의는 의미가 없다. 

여기에서 사실에 대한 합의 문제가 발생한다.
누가 빵을 얼마나 먹었는지 기록하지 않으면 제대로 분배할 수 없다.
A와 B가 이야기하는 빵 소비량이 서로 다른 경우 분쟁이 일어날 수 있다.

  • 합의를 하기 가장 쉬운 방법은?
    구성원 모두 함께 빵과 그 기록을 감시하는 것.
    탈중앙화 되어 있지만, 모두 함께 그 기록을 들여다보고 있는 것은 매우 비효율적이다.

  • 그럼 한사람이 담당하여 우물과 사용기록을 관리하면?
    효율적 이기는 하지만 중앙화의 위험성 이 존재한다.

중앙화 vs 탈중앙화

  • 중앙화

어느 한 주체가 통제나, 지시 및 결정을 내린다.
예를 들어, 달러는 미국 정부의 권한 아래 발행되고 유통된다.
달러는 정부라는 신뢰할 만한 기관이 존재하기 때문에 그 가치를 인정받을 수 있는것이다.
네트워크 관점에서 한 컴퓨터가 시스템 전체를 구축한다고 할 수 있다.

  • 탈중앙화

어떤 한 주체가 통제를 하지 않는다.
이더리움의 가치는 이더리움을 사용하고자 하는 커뮤니티에 의해 정해진다.
네트워크 관점에서는, 시스템전체를 컨트롤하는 특정한 컴퓨터가 없다고 할 수 있다.

중앙 통제기관 없이도 개인 간 금융거래나 빠른 의사결정을 가능하게 하는, 웹3.0의 핵심 가치이기도 하다.

탈중앙화에는 무슨 가치가 있는가?

탈중앙화의 가치는,
내가 세부적으로 데이터를 통제할 수 있고, 선별적으로 대가를 받을 수 있다는 것에 있다.

중개, 거래소 또는 은행과 같은 중앙 금융 중개자에 의존하지 않고
블록체인에서 거래를 할 수 있다.

1-6-2. DeFi(Decentralized Finance)

CeFi(Centralized Finance)
중앙 집중식 금융

암호 화폐 산업에 있어, 현재의 금융 산업을 모방하는 방식.
예시: Binance, Coinbase, Celsius와 같은 대규모 거래소

DeFi(Decentralized Finance)
탈중앙화 금융

  • 암호 화폐 산업에 있어 중앙 통제 지점이 없는 거래소
  • 네트워크 수수료만으로 운영되는 P2P 거래소

핵심은 이것이 탈중앙화된 금융 이라는 것.
그래서 중간 거래자나, 서드파티가 없다.
모든 거래는 스마트 컨트랙(Smart Contract)를 통해 이루어진다.

  • 현재 DeFi로 할 수 있는 일들
    • 스마트 컨트랙 기반 은행
      예금하고, 그 돈을 빌려줘서 이자를 벌고, 돈을 빌릴 수 있다.
    • 탈중앙화 코인거래소
      이메일조차 보여주지 않고 코인 거래를 할 수 있다.
    • 틸중앙화 도박장
      이 모든 거래가 100% 탈중앙화, 자동으로 이루어짐.

1-6-3. DEX

탈중앙화 코인거래소

  • 중앙 거래소의 작동방식

일반적인 중앙 거래소에서는 명목화폐(은행 이체 또는 직불/신용 카드) 또는 암호화폐를 입금한다.

자금의 개인 키를 본인이 보유하지 않으며, 출금을 진행할 때는 거래소에게 여러분을 대신하여 트랜잭션에 서명해 줄 것을 요청한다.

트레이딩을 할 때는 트랜잭션이 블록체인에서 발생하지 않으며, 거래소는 자체 데이터베이스 내에서 자금을 사용자에게 할당한다.

이는 자금을 보관하는 거래소를 신뢰해야만 하기 때문에 매우 위험할 수 있다!

해커가 거래소 시스템을 마비시키고, 자금을 빼갈 수도 있고, 사용자들의 코인을 싹 들고 팀이 도망갈 수도 있다.

  • 탈중앙 거래소 작동방식

중앙 거래소와 핵심 차이점은 백엔드는 거래소의 자체 데이터베이스가 아니라, 블록체인상에 존재한다는 것.

누구에게도 사용자의 자금 관리 권한이 부여되지 않으며, 중앙 거래소처럼 누군가를 신뢰하지 않아도 된다.

📌 자세한 내용은 탈중앙화 거래소란 무엇인가요? 참조

1-6-4. DAO(Decentralized Autonomous Organizations)

탈중앙화 자율 조직

미리 약속된 자동화된 소프트웨어 프로토콜에 의해 운영되는 조직을 뜻한다.

프로토콜 : 일종의 규칙, 규정

1-7. 지갑(Wallet)

암호화폐 지갑은 블록체인 네트워크와 상호작용하는 수단 중 하나.

암호화폐 지갑은 실제로 암호화폐를 저장하지 않는다.
대신, 블록체인과 상호작용할 수 있는 수단을 제공한다.

다시 말해, 블록체인 트랜잭션을 통해 암호화폐를 주고받을 때 필요한 정보를 생성할 수 있다.

지갑은 비대칭적 암호화를 이용해서 생성된다.

📌 자세한 내용은 블록체인(Block Chain) - 암호화폐 지갑(Wallet)이란? 참조

1-8. 비대칭 암호화 방식

= 공개키 알고리즘

1-8-1. 언제 사용하는가?

블록체인에서의 암호는 대표적으로 '보안'을 위해서 사용되고,
기밀성, 무결성, 인증, 부인 방지를 위해서 사용한다.

비트코인을 포함한 암호화폐들이 이 방식을 사용한다.

1-8-2. 왜 사용하는가?

데이터를 암호화해서 안전하게 전송하고, 복호화해서 안전하게 받기 위해서.

1-8-3. 어떻게 사용하는가?

클라이언트에서 거래를 하면 거래내역이 생성되고,
클라이언트는 이 거래내역을 노드에 전송해 검증을 맡긴다.

노드가 검증을 수행하기 위해서는, 그 거래내역 안에 전자서명 이 포함되어야 한다.

모든 클라이언트는 공개키비공개키가 있는데,
비공개키로 암호화한 데이터(거래내역 등)은 공개키로만 해독할 수 있다.

📌 자세한 내용은 블록체인(Block chain) - 헷갈리는 대칭키(비공개키), 비대칭키(공개키) 방식 😡 참조

2. 암호화폐

암호화폐(crypto)는 디지털 화폐의 한 유형으로 사용자는 이를 통해 디지털 환경 속에서 자산을 전송할 수 있다.

2-1. 암호화폐와 토큰

암호화폐와 토큰 모두 거래소에서 거래할 수 있고, 블록체인 주소로 전송할 수 있다.

암호화폐

암호화폐는 오직 통화로 사용되기 위한 것. 가치의 매개가치 저장소를 위한다.
하나의 코인이 다른 코인과 같은 가치를 갖는다.

토큰

토큰은 암호화폐처럼 사용될 수 있지만 더 유연하다.
백만 개의 동일한 토큰을 만들어낼 수도 있고, 몇 개에 고유한 속성을 부여할 수도 있다.
토큰은 한 기업의 지분을 나타내는 디지털 영수증에서부터 고객 포인트까지 무엇에든 사용될 수 있다.

이더리움에서는

스마트 콘트랙트가 가능한 프로토콜에서는 기본 통화와 토큰이 구분된다.
이더리움에서는 자체 통화는 이더(ETH)이며, 이더는 이더리움 네트워크 안에서 토큰을 생성하고 전송하기 위해 반드시 필요하다.
이 토큰들은 ERC-20 또는 ERC-721 표준을 따른다.

📌 ERC-20 / ERC-721에 대한 자세한 내용은 이더리움(Ethereum) - 토큰 표준 ERC-20이란?

2-2. NFT

NFT(Non Fungible Token)

  • Non Fungible
    - 대체 불가능 한 땅, 포켓몬 카드, 한정판 신발, 전세 계약 등.
    - Fungiblility란? 대체 가능한. 1:1 대체가능한 것.
    e.g.) 1달러와 1달러. 대체가능

  • Token
    이더리움 같은 블록체인은, 그들의 블록체인을 기반으로 나만의 토큰을 발행할 수 있다.

📌 자세한 내용은 블록체인(Block Chain) - NFT 참조

2-3. 암호화폐 세대별 차이

1세대 암호화폐

비트코인의 목표는 "아무도 해킹할 수 없는 인터넷 돈"
따라서 1세대 블록체인은 보안을 위해 작업증명을 사용한다.

  • 장점
    - 안전하고 가치가 높다
  • 단점
    - 애초에 업데이트할 수 있게 설계되지 않았다.
    - 처음 만들어진 모습 그대로 지속
    - 프로그래밍 불가능,오로지 서로에게 전송만 가능.
    - 비트코인 위에 NFT, DeFi 등을 올릴 수도 없다.

2세대 암호화폐

스마트 컨트랙 컨셉을 이용, 그 중 가장 유명한 건 이더리움

이더리움이 원하는 것은 전세계가 공유하는 컴퓨터
프로그래밍 할 수 있는, 해킹할 수 없는, 전세계가 공유하는 백엔드!

  • 장점
    - 코드를 이용해 새로운 것을 마구 창조할 수 있다.
  • 단점
    • 비트코인처럼 단순히 주고받는 것이 아닌 NFT마켓, DEX, DeFi 농장 등등 이 모든 것이 이더리움 네트워크 위로 올라간다.
    • 따라서 이더리움 네트워크가 매우 바빠짐
    • 네트워크 과부하로 과도한 트래픽 => 거래 수수료 상승

3세대 암호화폐

비트코인, 이더리움 모두 블록체인 간 통신은 불가능하다.

2세대에서도 여전히 블록체인 사이의 상호운용성이 없음.

블록체인간의 상호운용성(interoperability) 이 왜 중요한가?
각기 다양한 장점을 가진 코인들이 수없이 많이 있다. 모든 이메일은 같은 프로토콜을 사용하기 때문에 상호교류가 가능하다. 이것처럼 블록체인도 상호교류가 가능해야할 것.

이더리움 또한 이더리움 2.0으로 확장성, 탈중앙화, 보안성을 모두 갖춘 3세대 암호화폐가 되려고 전환하고 있다.
작업증명에서 지분증명으로 변경. 에너지 소모가 98% 감소된다.

📌 자세한 내용은 블록체인(Block Chain) - 암호화폐의 문제점과 단점 참조

2-4. 합의 알고리즘(Consensus Algorithm)

2-4-1. 왜 필요한가?

  • 문제점 1. 블록은 아무나 추가 가능해도 되는가?

상황에 따라 다르다. 음식 레시피 블록체인이라면 상관없겠지만,
비트코인, 이더리움 등 거래내역과 잔금 등이 담겨있다면 문제가 된다.
이 경우엔, 어떤 데이터가 블록체인에 추가되는지도 면밀히 살펴야함

  • 문제점 2. 어떤 데이터가 블록체인에 추가될 수 있는가?

우리가 원하는 데이터는 진실,
진실만을 업로드하기 위해 필요한 것이 합의,

그 합의를 위한 것이 합의 알고리즘

2-4-2. 합의 알고리즘의 종류

  • 작업증명 : 전기를 가장 많이 쓴 사람, 빠른 컴퓨터를 가진 사람에게 보상을 지급하는 방식
    - 에너지가 엄청나게 필요한 네트워크만 안전하다
    - 환경오염 발생. 네트워크 규모가 작은 코인은 51% 공격의 위험이 있다

  • 지분증명 : 코인을 지속적으로 보유하는 사람에게 보상을 지급하는 방식
    - 빠른 컴퓨터가 필요없고, 에너지 낭비도 없다

📌 자세한 내용은 블록체인(Block Chain) - 합의 알고리즘(Consensus algorithm) 참조

2-5. 채굴

이는 누구나 블록체인에 추가할 블록을 제안할 수 있는 시스템인 작업증명에서 일어난다.

작업증명에서 블록을 생성하려면 사용자는 프로토콜이 규정한 문제를 풀기 위해 연산 능력을 바쳐야한다.

2-5-1. 채굴자?

= 마이너 = 검증자

해당 블록이 맞는지 검증하는 사람들.
블록을 검증하고 블록체인에 올리면 이 채굴 작업에 대한 보상을 받는다.

매우 단순하고 직선적인 문제를 푸는 것이다.
(하지만 엄청나게 빠르고 많은 연산을 해야한다)

채굴 방식?

채굴자는 데이터 해싱을 반복하여 특정 값 이하의 숫자를 생성해야 한다.
일방향 함수 해싱은 결괏값을 통해 입력값을 추측하는 것이 실제로 불가능하다.
하지만 입력값을 통해 결괏값을 검증하는 것은 간단하다.
모든 참여자는 이 방식으로 마이너가 "올바른" 블록을 생산했는지 검증할 수 있으며,
유효하지 않은 블록일 경우 이를 거부할 수 있다.
그럴 경우 채굴자는 보상을 받지 못한다.

📌 해싱에 대한 자세한 내용은 블록체인(Block chain) - 해시함수 참조

채굴 보상?

채굴자가 정답을 찾으면 그들이 구성한 블록은 체인에 포함된다.
채굴자는 거래내역을 컨펌하면서 보상을 받고, 질문의 답을 찾아 블록을 체인에 올리면서 보상을 받는다.

2-5-2. 블록체인에 블록을 올리는 방법

  • 1) 작업증명이 채굴자에게 질문을 한다

=> 채굴자가 이 질문에 답하면 블록을 올릴 수 있다.

질문이란?
해시값의 앞자리로 0이 와야하는데, 그 0의 갯수는 문제 난이도와 일치한다.
채굴자가 유일하게 바꿀 수 있는 nonce 값을 변경해서 조건을 만족하는 nonce 값을 찾아내는 것.

이것이 바로 그래픽 카드의 가격이 급등한 이유.
비트코인, 이더리움 등 작업증명 관련된 크립토 채굴을 위해서 빠르게 논스를 여러개 시도할 수 있는 그래픽카드를 대량으로 사들였기 때문에.

블록을 블록체인에 올리는 순간, 코인이 생성된다.

그렇게 채굴자가 블록을 체인에 올릴 때 마다 coinbase transaction이 생성된다.

coinbase transaction란?

: 새 블록의 첫번째 거래(transaction)
비트코인은 원래부터 생성되어 있는 것이 아니라, 블록을 체인에 올릴 때마다 새롭게 생성되는 것.
채굴자에 의해 새로운 블록이 채굴되면, 새롭게 거래(transaction)가 시작된다.
첫번째 거래이기 때문에 이전(parent) 트랜젝션의 출력(output)을 받아오지 않고 새로운 코인을 만들기만 한다

  • 코인베이스(coinbase)는 이 거래에서 입력의 내용.
    이 입력은 출력이 되어 다음 거래의 부모 트랜잭션이 된다.
    말 그대로 기반(base)이라는 의미.

2-6. 한계와 비판

  • 범죄 자금
    범죄자들이 암호화폐로 수익을 벌어들이고, 암호화폐의 익명성을 이용해서 그 돈을 숨길 수 있다.
    - 범죄에 사용되는 비트코인을 금지? : 칼이 위험하다고 칼을 금지하지 않는다.

  • "은행"이 된 개인의 100%의 책임
    사람들 스스로 은행의 역할을 해야한다.
    다시말해 내 지갑과 Key 관리를 온전히 스스로 해야하고, 내 자산에 무슨 일이 일어나든 아무도 책임지지 않으며 온전히 내 스스로 책임을 져야한다.

  • 개인정보 보호가 없다
    은행의 경우, 은행이 책임지고 개인정보를 보호한다.
    하지만 비트코인, 이더리움 세상에선 모든 것이 공개된 자료다.
    내 지갑 주소를 알면 돈이 얼마 있었고, 얼마를 받았고, 얼마를 송금했는지 모든 걸 다 알 수 있다.
    (스타벅스에서 커피를 샀는데, 내 모든 금융 거래기록이 공개됨)

📌 자세한 내용은 블록체인(Block Chain) - 암호화폐의 문제점과 단점 참조

3. 이더리움 2.0

3-1. 이더리움은 왜 변해야하는가?

확장성 문제 때문에.

이더리움 네트워크는 프로그래밍할 수 있는 블록체인이고,
따라서 수많은 사람들이 DEX, DAO, NFT 등 많은 프로젝트를 올리기 시작했다.
그렇게 이더리움 네트워크상의 트랜잭션 수가 증가함에 따라, 이러한 거래를 처리하는 비용이 매우 증가했다.

비트코인과 이더리움은 블록체인 트릴레마의 보안성 + 탈중앙화에 치우쳐있다.

그래서 이더리움은 2.0에서 안전하고 탈중앙화된 방식으로, 블록체인을 확장하려고 하는 것!

암호화폐에서의 확장성이란?
더 많은 사용자를 수용하기 위해 블록체인이 얼마나 잘 확장될 수 있는지 를 뜻함.
"사용자가 많다" = 더 많은 작업이 발생
=> 블록체인에 포함되기 위한 트랜잭션 경쟁이 심하다

3-2. 변경사항

  • 작업증명 => 지분증명
  • 샤드체인비콘체인

3-3. 커뮤니티의 반응

중국 채굴자 챈들러 궈(Chandler Guo)는 트위터를 통해 "이더리움 PoW 체인을 하드포크하겠다"는 의견을 남기면서 채굴자들을 중심으로 하드포크 움직임이 일어나고 있다.

3-3-1. 왜 반대하는거야?

채굴자들은 작업증명 방식대로 채굴을 하기 위해서 비싼 채굴기를 잔뜩 사뒀는데, 이더리움이 갑자기 "채굴 반대 지구 살려"하고 나선 것.

그래서 커뮤니티는 이 하드포크 지지 vs 하드포크 반대로 나뉘어서

열심히 싸우고 있다

📌 자세한 내용은 이더리움 2.0 - 지분증명(POS)으로의 전환은 왜 논란인가? 참조

4. Web 3.0

4-1. 웹 변천사(1.0 ~ 3.0)

4-1-1. Web 1.0

Web 1.0, 온라인으로 연결

단순 고객의 입장에서 보여지는 정보를 소비하고 읽을 수만 있었다.
현재의 인터넷처럼, 글을 쓰거나 교류할 수 없었다

4-1-2. Web 2.0

Web 2.0, 온라인 커뮤니티로 연결

상호작용의 증폭, 커뮤니케이션 서비스

현재 웹은 이 단계에 있다.
유저들이 자유롭게 컨텐츠를 업로드하고, 소통 가능.
참여, 공유와 같은 SNS 특징을 가지고 네티즌이 적극적으로 참여해서 정보를 만나는 형태.

중앙화 플랫폼 단점
사용자가 데이터나 저장 방법을 제어하기 어렵다.
모든 데이터를 통제하고 수집할 수 있게 됨.

4-1-3. Web 3.0

핵심은 탈중앙화를 위한 움직임 이라는 것.

소수에 의해 통제되지 않고, 검열되지 않으며, 개인정보 또한 지키는 것을 목적으로 한다.

인터넷의 시초인 Web 1.0을 넘어,
우리가 현재까지 살아왔던 Web 2.0의 적극적으로 참여해서 정보를 만나는 형태를 지나,
Web 3.0 부터는 데이터를 중심으로 사람들이 연결되고 서비스화되는 시대가 본격화되는 것.

기존의 서버-클라이언트 기반의 데이터 전송 방식에서 P2P 방식의 데이터 전송을 기반으로 하는 블록체인이 인터넷에서 보다 쉽게 통신할 수 있도록 정의한 것이 web3이다.

web3가 발전함에 따라 우리는 점점 더 서버에 의존하지 않아도 되고 P2P 통신을 활용하여 보다 보안에 안전한 통신을 가능하게 한다.

4-2. web3 동작방식

기존의 인터넷(web 2.0)은 서버-클라이언트의 구조를 따르고 있다.

P2P 서비스가 생성되기 이전에는 누군가 데이터를 보내거나 받을 때에는 Listen하고 있는 서버와 accept하는 클라이언트의 통신으로 이루어져 있다.

이것은 해킹의 대상이 되기 쉽고, 데이터베이스를 가지는 서버들은 점점 해킹에 취약해지기 시작하면서 개인 정보 유출 사건이 발생하기 시작한다.

4-3. Web3.js

web3.js 는 자바스크립트 기반의 web3 인터페이스 라이브러리이다.

우리가 사용하는 거의 모든 서비스는 프론트엔드, 백엔드가 존재한다. 채팅을 보내기 위한 보내기 버튼과 실제로 컴퓨터상으로 데이터를 전송하는 부분을 담당한다.

이더리움 상으로는 web3는 프론트라고 볼 수 있다.

📌 자세한 내용은 세상을 바꿀 Web 3.0 - Web3가 미래라고? 😵‍💫 포스트 참조

5. 배운 개념 연결하기

블록, 블록체인, 스마트 컨트랙트.
각각의 개념은 이해했다.

그런데 이것들이 어떤 흐름으로 연결되는지 설명할 수 있는가?

이더리움 블록체인 네트워크를 기반으로 간단하게 전체적인 그림을 그려보자.

스마트 컨트랙트의 흐름

스마트 컨트랙트는 조건이 맞으면 다음 행동을 실행하는 계약이다.

A는 자동차를 사고싶다!
그래서 자동차의 댓가로 B에게 5BTC을 주기로 한다.

  • A는 자신이 보내는 5BTC에 관한 거래 트랜잭션블록에 포함시킨다.
  • 이 거래가 승인되는 순간 B는 5BTC를 받는다.

모든 거래가 이렇게 간단하면 세상 편하겠지만 그렇지 않다.

스마트 컨트랙트는 여러가지 조건을 담고, 그 조건이 충족되면 실행되게 만들어진 똑똑한 계약이다!

중고차 거래 계약을 예로 들어보자.

중고차 거래용 스마트 컨트랙트 안에 미리 약속되어야할 내용은 아래와 같다!

  • B는 A에게 계약금 1BTC를 요구한다.
  • A는 B에게 계약금 1BTC를 보내고, B에게 침수차가 아니라는 품질 보증 계약을 요구한다.
  • B는 품질보증서를 보낸다.
  • A는 품질보증서를 받고 잔금 4BTC를 보낸다.
  • B는 4BTC를 받고, A는 자동차를 받아 계약이 종료.

이 약속들을 스마트 컨트랙트로 구현해보자.

  1. B는 A에게 계약금 1BTC를 요구하는 메시지 트랜잭션을 블록에 포함시킨다.

  1. A는 해당 블록의 내용에 동의한다. A는 B에게 계약금 1BTC를 보낸다는 내용 + 침수차가 아니라는 품질 보증 계약을 요구하는 메시지를 블록에 포함시킨다.

  1. B는 품질보증서 데이터를 전송하는 트랜잭션을 다음 블록에 포함시킨다.

  1. A는 잔금 4BTC를 보내는 트랜잭션을 만들어 다음 블록에 포함시킨다.

  1. B는 4BTC를 받고, A는 자동차를 받아 계약이 종료.

트랜잭션에 들어갈 수 있는 것

비트코인에서는 트랜잭션 = 비트코인의 움직임.
그래서 TXID 안에 비트코인 거래에 관한 내용을 담고있었다.
하지만 이더리움 블록체인에서는 트랜잭션 안에 메시지(또는 다른 데이터)만 보내거나 화폐전송계약내용을 담을 수 있다.
(이것이 아까말한 2세대 이더리움의 차이점 - 스마트컨트랙을 적용했기 때문에!)

비트코인이 화폐의 흐름을 블록 해시로 연결하여 이중지불문제나 신뢰성 문제를 해결했다면,
이더리움은 계약의 내용까지 블록 해시로 연결하여 자동차 딜러와 같이 신뢰할 수 있는 제 3자가 필요없는 계약을 만들었다.

Q. 꼭 블록체인 노드가 되어야 계약을 통해 거래를 할 수 있는가?

블록체인 데이터를 가지고 있지 않은 일반사용자와,
블록체인 데이터를 가지고 있는 노드는 접근 방식이 다르다.

  • 일반 사용자
    일종의 서버와 같은 역할을 하는 노드에 연결되어있는 특정 웹브라우저 등을 이용해서 계약에 접근한다.

  • 이더리움 클라이언트 (노드들이 위치한 곳)
    데이터 확인 : 각 노드에서 가능
    데이터 변경 : 갱신 내용(해당 트랜잭션)을 네트워크에 전달

이더리움 클라이언트

DApp을 개발할 때마다 이더리움 네트워크에 연결하기 위해 이더리움 클라이언트를 설치해야 하는데, 너무 번거롭다.
그래서 다수의 이더리움 노드를 운영하는 서비스인 Infura를 사용해야함.
1. 번거롭게 Infura를 직접 설치하고 트랜잭션 서명을 위한 사용자 개인키 관리도 열심히 해본다 🤮
2. 편하게 내부적으로 Infura의 서버를 Web3 프로바이더로 사용하는 메타마스크를 쓴다 ✨

이더리움의 확장성 문제와 연결하면

블록체인은 전자장부이고, 모든 사람이 동일한 장부의 복사본을 가진 시스템이다.
지금까지 차곡 차곡 쌓인 블럭들을 각 노드마다 똑같은 복사본 형태로 가지고 있는 것.

그래서 거래가 증가할수록 그 양도 폭팔적으로 늘어난다.

단순한 거래내역만 올라가지 않는 이더리움은 더욱 심하다.
이더리움 네트워크에는,
위에서의 설명과 같이 모든 계약 내용이 하나의 트랜잭션을 이루고 그것을 블록에 다 담아야 한다.

이렇게 수많은 트랜잭션을 일으키는 DApp들이 많기 때문에 이더리움의 확장성 문제가 두드러진 것!

(그래서 2.0에서 블락체인 데이터를 분산하는 기술인 샤딩을 통해 확장성을 확보하려고 하는 것.)

이 흐름 이해에 굉장한 도움이 된 포스트! 꼭 보는 걸 추천한다 ✨

6. 개념 적용하기

유저가 커넥트 월렛하고 민팅하면 스마트 컨트랙트트랜잭션을 보내면 됩니다.
이미 민팅했으면 소유한 토큰아이디를 보여주면 되고요

지난주에 선배님이 해주신 말이다.
어느정도 개념 정리가 되어있던 때라 단어는 쏙쏙 들어왔지만 흐름이 자연스럽게 이해가 되지 않았다.

간단하게 플로우를 설명해보자.

  1. 유저가 커넥트 월렛하고
    : 유저가 메타마스크를 통해 자신의 지갑을 우리의 DApp과 연결했다.

  2. 민팅을 하면
    : 토큰민팅(주조)해서 NFT로 만든다.
    민팅이란? 자신이 소유하고 있는 없던게 주조되면서 소유권을 넘겨받는 것.
    해당 디지털 자산에 고유한 일련번호를 각인해서 고유한 가치를 부여하면.

  3. 스마트 컨트랙트
    : 우리의 블록체인에 있는 스마트 컨트랙트 블록으로.
    해당 블록에는 어떠한 약속들이 정해져 있을 것이다.

  4. 트랜잭션을 보내면 된다
    : "이 토큰 아이디에 고유한 가치를 부여해서 내 NFT로 만들거야"라는 내용을 전달하면 된다.
    데이터베이스의 상태를 변경하는 것이기 때문에 트랜잭션을 일으킨다.
    = 트랜잭션 인터페이스 = web3.jssend() 메소드로 통신.
    이 트랜잭션은 다음 블록에 포함된다.

  5. 이미 민팅 했으면 토큰 아이디를 보여주면 된다
    : 이미 고유한 가치가 부여(NFT화)되어서 토큰 아이디가 생성 된 NFT들은 그 토큰 아이디를 보여주면 된다.

profile
Web Front-end developer

0개의 댓글