CS/블록체인

CS/블록체인

[블록체인] 21. 이더리움 - 컨센서스

PoS 이더리움은 PoS 방식의 컨센서스를 사용한다.알고리즘은 다음과 같다. 1. 각 노드는 32ETH 를 미리 예치한다.2. 랜덤하게 validator 를 선택한다.3. validator 가 블록을 만들어 뿌린다.4. 나머지 노드가 해당 블록의 유효성을 검증하고 투표한다.5. 2/3 이상이 찬성하면 블록체인에 포함된다. 이 과정에서 나쁜 행동을 하는 경우 (검증자, 투표 노드 모두) 자신이 담보로 맡긴 이더리움을 잃는 패널티를 받는다.투표를 할 때는, 내가 거짓투표를 하지 않았다는 증거로 내 서명을 포함해서 블록을 만들기 때문에, 블록에는 찬성한 사람들의 서명이 모두 들어있게 된다. 이때 모든 validator 의 서명을 다 포함하면 블록의 크기가 너무 커지기 때문에 BLS 시그니처를 사용한다.이는 하..

CS/블록체인

[블록체인] 20. 이더리움 - Smart Contract & dApp

현재 이더리움은 크게 위와 같은 구조로 되어있따.먼저 EVM을 돌리고 있는 노드가 있고, Light Client 라는 전체 노드를 다 가진게 아니라 내 트랜잭션과 관련된 뭔가가 발생하면 그것만 모니터링 하는 노드가 있을 수 있고, 중앙화된 API 서버를 통해 이더리움 네트워크의 블록 채굴 내역등을 조회할 수 있는 서비스 등이 존재한다. (이런 게 조금 아이러니 하다. 탈중앙화 서비스의 정보를 얻기위한 서버는 중앙화라는 것)  그래서 현재는 이렇게 중앙화된 서버에서 이더리움과 관련된 정보를 제공하고 있지만, 나중엔 궁극적으로 이것까지 탈중앙화를 할 것이라고 이더리움 파운데이션은 예측하고 있다.  이는 사용자 인터페이스용으로 존재하는 이더리움과 별개의 P2P 네트워크라고 보면 된다.  2022년 PoS 로 ..

CS/블록체인

[블록체인] 19. 이더리움 - Account, Transaction, Block

Account 이더리움 account는 크게 2가지가 있다. - externally owned accounts (eoa) : 스마트 컨트랙트를 갖고 있지 않으며, private key로 관리되는 account- contract account(ca) : 스마트 컨트랙트(코드)를 갖고 있으며, 코드로 관리되는 account  1번 계좌는 평범한 일반 유저의 계좌이다.2번 계좌는 만들어진 account, 코드가 포함된 어카운트이다. contract account 는 누군가 스마트 컨트랙트를 이더리움에 업로드하고 싶다고 할 때 '만드는 것' 이며, 이때 gas를 지불해야 한다.그래서 eth를 지불하면서 요청을 보내면 보통 별 문제 없이 만들어진다. (gas = eth 인가..?)업로드된 smart contrac..

CS/블록체인

[블록체인] 18. 이더리움 개요

이더리움은 2013년에 비탈릭 부테린이 만든 블록체인 프로젝트이다.이더리움의 목표는 탈중앙화된 어플리케이션(dAPP)을 만드는 플랫폼이 되는 것이 목표였다.(하지만 부테린의 영향력이 세서 오히려 탈중앙화에 방해가 되고 있다고..) 보통의 어플리케이션은 서버-클라이언트 구조로 되어있지만,이더리움의 목표는 중앙화된 서버가 없는 어플리케이션을 위한 플랫폼이 되는 것이다.더 정확히는 이더리움은 smart contract 라는 코드 (일종의 함수)를 실행하는 플랫폼이다.비트코인에서도 제한적으로 스크립트 실행을 허용했지만, 이더리움은 그보다 제한을 더 풀어서 어떠한 코드도 실행이 될 수 있다.이때 코드의 실행이 전세계에서 분산되어 일어나므로, 일종의 글로벌 컴퓨터와 같이 동작한다.그리고 코드의 실행 결과는 컨센서스..

CS/블록체인

[블록체인] 17. Lightning Network (3) : 라이트닝 네트워크 vs 비트코인

라이트닝 네트워크는 Fairness Protocol 이다.따라서 다음과 같은 특성을 갖는다. - Trustless operationLN에 존재하는 노드는 서로 믿을 필요가 없다.프로토콜 자체가 수학을 이용하여 치팅을 막아주는 것을 신뢰할 수 있기 때문이다. - Atomicity여러 payment channel 을 이어서 돈을 주고 받는 경우, 내가 보낸 돈은 상대방에게 전송되거나 전송되지 않거나, 둘 중 하나의 결과만 발생하는 원자성이 보장된다.중간에 보낸 돈이 멈춰서 안간다거나 하는 일은 발생하지 않는다.(만약 중간에 사기를 치는 사람이 있다면 돈을 돌려받을 방법이 있다.) - MultihopLN은 기본적으로 P2P 네트워크에서 시작했지만, 그 보안성이 end-to-end 로 확장되어 나와 직접 연결되..

CS/블록체인

[블록체인] 16. Lightning Network (2) : Commitment Sign & Payment Channel

이제 LN의 큰 흐름을 이해했으니, 디테일한 부분과 확장된 기능들을 살펴보자. 앨리스와 밥 사이에 P2P 네트워크를 통해 실제 거래가 발생하면 페이먼트 채널이 업데이트된다.이때 commitment transaction 을 추가하는 것은 둘 사이의 P2P 네트워크로 데이터만 전송하면 되므로 1~2초면 끝난다.이런 점에서 비트코인과 비교하면 매우 빠른 속도로 결제가 이루어진다. 또한 엘리스와 밥 사이의 페이먼트는 암호화 시켜서 보낼 수 있으므로 확실한 프라이버시가 보장된다.지난 글에서 처럼 카페 사장과 손님의 예시로 들자면, 앨리스가 밥의 카페에서 얼마나 자주 커피를 마시는 지는 앨리스와 밥만 알 수 있고, 제 3자는 알 수 없다. 모든 거래 내역은 숨겨지고, 그 최종 거래금액만 네트워크에 뿌려지기 때문이다..

CS/블록체인

[블록체인] 15. Lightning Network (1) : 개요

Ligntning Network비트코인을 통해서 어떤 상품을 결제한다고 하면, 기존의 비트코인 프로토콜 상에서는 최소한 10분은 기다려야 안심하고 상품이나 서비스를 제공받을 수 있다. 내가 비트코인을 전송하는 트랜잭션이 블록에 포함되어서 컨펌되려면 10분의 시간이 필요하기 때문이다.만약 그 금액이 크다면 판매자 입장에서는 1컨펌으로는 안심할 수 없으니 더 긴 시간을 기다려서 충분한 수의 컨펌이 이루어질 때까지 기다려야 안심하고 상품이나 서비스를 제공할 수 있을 것이다. 라이트닝 네트워크 (줄여서 LN이라고도 한다.) 는 이 문제를 해결하기 위해, 비트코인 프로토콜을 기반의 즉각적인 페이먼트를 할 수 있는 프로토콜이다. 그래서 비트코인을 첫 번째 레이어 프로토콜로 봐서 LN을 그 위에 세컨드 레이어로 프로..

CS/블록체인

[블록체인] 14. 비트코인 Consensus

컨센서스컨센서스는 말 그대로 '합의'를 말한다.비트코인에서 컨센서스라고 하면, 비트코인을 채굴하는 채굴자들 사이에 공통적으로 합의하고 있는 내용을 말한다.특히 비트코인에서 중요한 합의는 Canonical Block Chain에 대한 합의가 중요하다.각각의 노드마다 생각하는 Canonical Block Chain이 다르다면, 누구는 어떤 블록이 유효하다고 하고, 누구는 유효하지 않다고 말할 것이기 때문이다. 또한 블록체인은 일종의 은행장부와 같다.어떤 노드는 이 블록체인에 따르면 A가 100만원을 갖고 있다고 해서 A가 100만원을 송금하려고 하는데, 어떤 노드는 A가 50만원 밖에 갖고 있지 않다고 여겨서 거부하면 A입장에서는 난 100만원을 갖고 있는데 왜 50만원으로 인식이 되는지 이해할 수 없을 것..

CS/블록체인

[블록체인] 13. Mining

노드 : p2p 네트워크를 구성하는 하나의 소프트웨어 (호스트) 를 말한다. 모든 노드는 동등하다.비트코인의 정신이 탈 중앙화이기 때문에 특정 노드에게 더 권한을 준다거나 하는 것이 없다. p2p 네트워크는 TCP를 기반으로 만들어진다.그리고 이 네트워크에는 새로운 노드가 언제든 참여하고 떠날 수 있다.노드로 참여할 때는 특정 사이트에서 비트코인을 돌리고 싶은 데 내 이웃 노드가 되어달라고 요청하고, 요청이 수락되면 연결을 짓는 식으로 네트워크에 참여하게 된다. (요청 보내는 대상 노드를 가리켜 시드 노드라고 한다.) 노드의 행동각 노드의 행동 방식을 보기에 앞서 앨리스가 밥에게 비트코인을 보내는 트랜잭션을 만들었다고 해보자.그러면 이 트랜잭션은 전체 비트코인 네트워크에 퍼져야만 한다.앨리스는 월렛 프로..

CS/블록체인

[블록체인] 12. 비트코인 script (2)

비트코인 스크립트에는 P2PKH 말고도 용도에 따라 다양한 타입의 트랜잭션이 존재할 수 있다.지난 글에서는 P2SH 라는 타입의 트랜잭션을 추가적으로 정리하였다.이번 글에서는 다른 종류의 트랜잭션들에 대해 추가적으로 정리해본다.  Timelock비트코인 input 부분의 sequence, 트랜잭션 자체의 timelock 외에도 스크립트와 관련하여 timelock을 사용할 수도 있다.타임 락은 트랜잭션 자체에서 명시할 수도 있지만, output script 에서도 명시할 수 있다.그러면 그 시간이 지난 시점부터 이 output 에서 비트코인을 꺼낼 수 있도록 하는 것이다.  타임락은 이렇게 트랜잭션 레벨의 타임락과 UTXO 레벨의 타임락으로 구분이 될 수 있다.그래서 사실 input 에 제시되는 seque..

에버듀
'CS/블록체인' 카테고리의 글 목록