[BlockChain] 이론

HYEOB KIM·2023년 2월 21일
0

BlockChain

목록 보기
1/3

BlockChain

데이터베이스의 가장 간단한 형식
거래를 저장하는 DB
데이터 추가만 가능(제거나 변경은 불가능)
스마트 계약은 업데이트 가능
데이터 이전할 때 스마트 계약 주소를 업데이트하는 것
데이터베이스에 추가되는 데이터를 블록이라 부름
이 데이터들이 서로 연결된 형태를 블록체인이라고 부름.


중앙화 vs 탈중앙화

중앙화 네트워크

오래된 금융 기관들은 중앙화 시스템 이용
특정 기관을 통해 사용자 데이터를 저장하고 관리
모든 사용자가 하나의 데이터 소스에 연결
많은 양의 데이터가 저장되는데 한 기관이 저장된 데이터를 어떻게 다룰지 결정할 수 있음.
결정권과 통제권을 기관이 가지고 있다는 뜻.
단일 장애점이 생긴다는 것.
중앙화 DB에 문제가 생기면 끝.
사이버 보안의 관점에서 아주 심각한 문제.
그럼에도 금융 기관은 이런 시스템을 계속 사용하고 있음.

탈중앙화 네트워크

네트워크에 각기 다른 노드와 컴퓨터에 데이터가 저장
어떤 노드도 중앙 기관이 관리하지 않음
모든 노드가 서로 신뢰할 수 있어야 하니 상호 간에 듣고 동의할 수 있는 네트워크가 필요
참여하는 모든 노드가 똑같은 데이터베이스 복사본을 가지게 됨
한 노드에 문제가 생겨서 데이터를 삭제하고 노드가 다운되더라도 다른 노드가 대신 데이터를 제공할 수 있음. 회복력이 뛰어나고, 신뢰도가 중앙화 네트워크보다 뛰어남.
DApp을 구축하면 탈중앙화 네트워크에 스마트 계약을 구축하면서 더 높은 기준의 신뢰도와 함께 정보를 안전하게 보관할 수 있음.


커뮤니티

플랫폼과 비교하면 이해가 쉬움
기존 콘텐츠를 생산하는 플랫폼들의 경우는 크리에이터, 사용자가 있고, 중앙에서 플랫폼이 관리하는 형태.
크리에이터는 콘텐츠 생산에 대한 대가를 받을 수 없고, 사용자 역시 마찬가지며 크리에이터와 사용자 사이에 발생하는 수익의 경우 중앙에 있는 플랫폼이 대부분의 수익(70~90%)를 가져감. 활동하는 크리에이터와 사용자에게는 남는 것이 없음. 이에 대한 불만은 계속 쌓여가는 중

커뮤니티는 Web 3.0 시대에 블록체인을 기반으로 한 생태계
커뮤니티는 크리에이터, 빌더, 사용자로 이루어져 있고, 어느 하나 중앙에서 관리하지 않음.
서로가 유기적으로 연결됨(3개의 원이 겹친 벤다이어그램을 생각하면 됨)
크리에이터는 콘텐츠를 생산하고, 사용자는 콘텐츠를 소비함
빌더는 커뮤니티 환경을 조성해주는 역할
플랫폼과 반대로 커뮤니티에서는 콘텐츠를 생산하고 수익을 낸 크리에이터가 대부분의 수익을 가져가고 빌더는 10~30%의 수익만 가져감.
사용자 역시 커뮤니티에 참여하는 대가로 수익을 얻음. 크리에이터가 콘텐츠를 생산하고 발행한 토큰을 사면서 수익을 기대할 수 있음.
중앙에서 관리하는 플랫폼이 없고, 그저 개개인이 콘텐츠를 생산하거나 소비하고, 그에 따른 수익을 온전히 가져가는 합리적인 생태계가 바로 커뮤니티
콘텐츠라고 하면 떠오르는 대표적인 분야들인 글, 사진, 영상들을 생산하는 누구나 크리에이터가 될 수 있고 커뮤니티에서는 생산하는 콘텐츠에 대한 수익이 발생할 뿐만 아니라 기존 사용자는 그저 콘텐츠를 소비하면서 비용만 발생했을 뿐이었는데, 커뮤니티에서는 소위 관심있는 콘텐츠에 덕질을 하면서도 수익을 기대할 수 있음. 커뮤니티에 참여하는 모두가 수익을 기대할 수 있는 매력적인 생태계.
커뮤니티가 잘 갖춰지기만 한다면 앞으로 플랫폼의 시대가 저물 것임은 자명함.


DApp

  • Decentralized Application, 탈중앙화 애플리케이션
  • 블록체인이나 P2P(Peer-to-Peer, 컴퓨터 간의 네트워크) 네트워크에 존재하고 실행되는 디지털 애플리케이션 및 프로그램
  • 한 기관에 의해 제어되지 않고, 기관의 영역과 제어를 넘어선 것
  • 그간의 중앙화된 플랫폼 애플리케이션과 다름.
  • 코드가 탈중앙화된 P2P 네트워크 위에서 작동하고, 데이터 호출 및 등록을 블록체인 데이터베이스로 사용하는 애플리케이션

Solidity

Solidity는 스마트 계약을 실행하는 객체 지향, 정적 타입, 고급 스크립트 언어로, EVM(이더리움 가상 머신)에서 실행된다. Solidity는 계약 기반의 고급 프로그래밍 언어이다. 자바스크립트와 같은 스크립트 언어의 구문과 매우 유사하다. Solidity는 C++ 과 파이썬, 자바스크립트를 기반으로 만들어졌으며, 이더리움 네트워크에서 스마트 계약을 생성할 수 있도록 설계되었다. Solidity는 정적 타입 스크립트 언어이기에, 런타임 언어와 달리 컴파일 시 제약 조건을 확인하고 적용한다.

이더리움 네트워크에서 언제든지 원하는 DApp을 사용할 수 있다. 이더리움에 DApp을 올리기 위해서는 Solidity로 프로그래밍을 해야 한다. 앱스토어처럼 중앙 기관의 심의를 받을 필요 없이 누구나 약간의 비용만 내면 이더리움 네트워크에 자신이 만든 DApp을 올릴 수 있다.

Solidity 개발 도구

DApp의 벡엔드 개발 도구들은 대표적으로 다음과 같은 것들이 있다.

Remix - Ethereum IDE

Remix는 솔리디티를 사용한 DApp 개발을 도와주는 통합 개발 환경이다. Remix IDE는 자바스크립트로 만들어졌기 때문에 브라우저에서 사용가능하며, 로컬이나 데스크톱 버전을 사용할 수도 있다.

solc

솔리디티는 고급 언어이기 때문에 가상 머신인 EVM은 솔리디티를 읽을 수 없다. 따라서 솔리디티를 바이트코드로 컴파일하는 컴파일러가 solc이다.

Ganache

Ganache는 개발 단계에서 시뮬레이션 테스트 환경을 구성해주는 도구이다. 실제 이더리움 메인넷에서 테스트를 하기 위해서는 이더를 내야 하지만, Ganache를 사용하면 채굴 없이 가상 이더리움 환경에서 트랜잭션 제한 없이 테스트를 할 수 있다.

TestNet

이더리움에서 제공하는 퍼블릭 테스트 네트워크를 TestNet이라고 한다. 테스트 네트워크는 실제 이더리움과 비슷하지만 실제 트랜잭션이 이루어지지는 않는다. 이더리움에는 현재 Ropsten, Kovan, Rinkeby 세 개의 퍼블릭 테스트 넷이 제공되고 있다.

Framework: Truffle, Embar, Dapple

솔리디티 코드를 이더리움 네트워크에 올리기 위한 여러 복잡한 과정을 해결해주는 다양한 프레임워크들이 있다. 이 프레임워크들은 솔리디티 코드에 대해 테스트, 디버깅, 컴파일, 배포를 제공한다.

참고


profile
Devops Engineer

0개의 댓글