블록체인에 대한 짧은 고찰

J-USER·2022년 1월 11일
0

지개넓얕

목록 보기
1/5
post-thumbnail

블록체인이란?

정보를 블록이라고 하는 단위로 저장하여 (해시를 통해) 저장된 블록을 체인 형태로 묶는 저장기술.

블럭 간에는 어떻게 연결 되어있나?

리스트 같지만 조금 다름 다음 블럭(2)은 헤더에 이전 블록(1)의 해시를 기억(해시 포인터)하고 어떤 블럭 앞에 오는지 알 수 있고 이는 곧 순서를 결정 할 수 있음.

(해시포인터란?)

이전 블럭의 해시의 주소값을 기억하고 있는 것임.

블록체인 네트워크란?

P2P 네트워크로 참여자(shem) 모두 동일한 순서의 블록체인을 유지하고 있는 네트워크 망

합의란 무엇인가?⭐️⭐️

  • 자격(ex. PoW, PoC) 있는 참여자가 새로운 블록을 제안할때 이것이 옳은 제안인지 판별하는 것.
  • 블록이 새롭게 추가됨 => 참여자가 자격을 받음 => 합의 알고리즘 통과함 => 참여자들이 새 블럭을 자신의 체인에 추가함.
  • 이 과정이 사실 탈중앙화 되어있음을 의미함.

합의 알고리즘 비교 분석⭐️

Public VS Private

  • 누구든지 기록된 블록을 자유롭게 읽을 수 있는지??
  • 명시적인 등록 또는 정보를 블록체인에 기록할 수 있는지??
  • Public : 정보가 공개되어있고, 네트워크가 정한 기준에 따라 기록을 요청할 수 있다.
  • Private : 정보가 공개 X , 미리 자격을 득한 사용자만 정보를 기록할 수 있음.

Permissionless VS Permissioned

  • 네트워크 참여 : 1. 블록체인 네트워크 그자체 2. 합의 과정에 참여
  • Permissionless: 네트워크 참여에 제한 X
  • Permissioned : 네트워크 참여에 제한 O

공개키 , 비밀키 , 전자 서명

전자 서명은 보낸 사람의 비밀키(유일)로 생성 -> 받는 사람은 공개키로 해당 서명을 통해 누구에게서 온 것인지 확인 가능

  • (보낼때) 수신자의 공개키로 암호한 메시지 + 본인의 비밀키로 만든 서명
  • (받을때) 본인의 비밀키로 메시지 복호화 + 송신자의 공개키로 서명 복호화

UTXO 기반의 블록체인과 어카운트 기반의 블록체인은 어떻게 다른가요?

  • UTXO는 돈 자체에 주소를 주고 암호화 되어있고 돈을 쓸 때 전자서명을 주는 것
  • 어카운트에 주소를 주고 밸런스를 가지고 있어서 어느 어카운트를 사용하기 위해 전자서명을 낸다.

UTXO 기반의 블록체인이 어카운트 기반의 블록체인과 비교했을 때 가지는 장점은 무엇인가? 어카운트 기반 블록체인의 장점은 무엇인가요?⭐️

  • UTXO : 유효성 검사가 쉽고 보안성도 좋고 병렬화가 가능. But 이자 같은것도 utxo 로 관리 되기 때문에 불필요한 공간이 많아지게 되는 것.
  • 어카운트 -> 어카운트 기반은 순서대로 해야함(병렬화 X) But 상태가 생겨서 스마트 컨트랙트를 사용할 수 있음. (프로그램에 상태값이 없으면 일회성 프로그램 밖에 되질 않음)

이더리움 어카운트, 주소 , 상태

  • 어카운트 : 엔티티를 표현하고 그 상태를 기록하는데 사용.
    • EOA: 사용자가 사용하는 것으로 어카운트 주소를 암호화해 eoa를 생성.
    • 스마트컨트랙트: 개인간의 원하는 계약체결을 위한 기능. 외부함수..?API 같은 느낌.

트랜잭션이란?

블록체인 내에서 저장의 단위

  • 블록은 트랜잭션을 일정한 순서로 정렬한 컨테이너임
  • 원장의 거래내역 같은 st 이더에서는 특히 순서가 중요.

Confirmation VS Finality

  • Finality(불변성)
    • 블록의 완결성을 의미.
    • 합의를 통해 생성된 블록이 번복되지 않음을 의미(Pow는 안됨.)
  • Confirmation: 체인의 경쟁을 최소 6블록이내 결판이 나기 때문에 체결할때 6컨펌 거친 블록체인에 붙음.

BFT기반 블록체인의 Finality

  • BFT는 블록의 완결성이 보장
    • 네트워크가 동기화 되어있어서
    • Pow보다 빠르고 경제적.
  • 단점
    • 일정 수 이상 넘어가면 시간이 느려짐(네트워크 오버헤드)
    • 네트워크 사용량이 높음 (동기화때문)

Klaytn BFT

  • 매 블록마다 새로운 커미티를 뽑아 내부적으로 BFT실행.
  • 새로운 커미티는 VRF로 구해진 랜덤값
  • 기존의 BFT에서 확장성을 개선함.

블록체인의 State (account)

블록체인 : 초기 상태에서 변경사항을 적용하며 변화하는 상태기계

  • Tx는 어카운트를 생성하거나 변경.
  • Tx가 반영되는 과정에서 다른 Tx의 개입은 제한됨.(순서대로 해야 같은 결과를 보장하기 때문..)

Contract Account VS External Account

  • External Account(EOA) : 사용자가 사용하는 어카운트
  • Contract Account : 스마트 컨트랙트를 표현하는 어카운트

트랜잭션과 가스

  • 트랜잭션의 목적: 블록체인의 상태변경 , to에 따라 세분화.
    • EOA : 사용자
    • Contract : 해당 컨트랙트가 실행됨.
    • 없음 :
  • GAS : TX를 처리하는데 발생하는 비용.
    • Tx 처리에 발생한 수수료
    • 보내는 쪽에서 부담하고 Gas Fee라고 정의.
    • 높게 적을수록 이더넷에서 빨리 처리해줌 (Klaytn은 아님)

트랜잭션의 이동경로

  • A 👉 B
    • A가 TX 생성, 서명해서 B에 전달
    • 데이터를 온전히 전달하기 위해 RLP 알고리즘으로 TX를 직렬화
    • A와 B는 같은 프로토콜로 통신
  • B 👉 A
    • 올바른 TX 수신했으면 TX 해시를 반환
    • 체결 완료시 Recipt(소요된 gas, tx해시, input의 기록)을 반환

이더리움 트랜잭션 데이터에 포함되어 있는 nonce는 무엇이고 왜 필요한가?

어카운트에서 트랜잭션을 또 보내는 것을 방지하기 위해 순서를 매긴 값임. 어카운트 기반에서는 병렬화를 막아줌. 즉, 어카운트가 몇번째 트랜잭션을 보내주는지 말해주는것

비트코인에서 nonce는 뭐임?

작업 증명에서 어려운 문제를 풀기 위한 정답 값

스마트 컨트랙트란?

특정 주소에 있는 실행 가능한 코드로 함수, 상태로 나눠져 있고 함수는 상태를 변경하거나(TX 생성해 블록에 추가) 변경하지 않는 함수(노드에서 실행)로 분류됨.

블록체인에서 지갑이란?

  • 지갑은 키를 관리하는 프로그램이다.
    • 키를 보관하고 BApp이 요청할 때마다 보관중인

메타마스크나, 마이이더월렛, 미스트 지갑들의 차이는?

  • 마이이더월렛(은행창구 직원): 웹 월렛으로 키를 암호화한 스토어인 keystore 의 비밀번호를 입력하면 Tx 생성과 전송이 가능한 지갑과 가장 유사한 동작을 했음 but 이더에서는 조금 복잡해서 메타마스크가 생김. (완전 탈중앙화)
  • 메타마스크 : 크롬 플러그인으로 월렛과 사용 로직이 조금 분리 되어있는 형태 플러그인이니까 다소 크롬에 종속적임. (세미 탈중앙화)

BIP32,39,44가 무엇인가요?

각 HASH알고리즘이 어떻게 되나요?

: SHA-256 , Keccak256

블록체인에서 random함수 구현하는 방법은 무엇인가요?

: NBLab이 고안한 알고리즘은 블록체인을 통해 공정한 난수 생성이 가능함과 동시에 유저가 많아져도 확장이 가능합니다.

java에서 코드재사용을 하기 위해서 해봤던 노력은?

: 상속은 자식 클래스를 점진적으로 추가해서 기능을 확장하는 데는 용이하지만 높은 결합도로 인해 부모 클래스를 점진적으로 개선하는 것은 어렵게 만든다. 취약한 기반 클래스 문제는 캡슐화를 약화시키고 결합도를 높인다. 그래서 부모 클래스의 코드를 하위로 내리지 말고, 자식 클래스의 코드를 상위 계층으로 올려라. 추상적인 메서드를 부모 클래스에 두면 재사용성과 응집도의 측면에서 더 나은 결과를 얻을 수 있다.

협업 개발에서 Git을 사용하는 이유는 무엇일까요?

대용량 처리를 위해서 고려해야 하는 요소는 무엇이 있을까요?

블록체인에서 Finality란 무엇인가요? 그리고 Finality가 왜 중요한가요?

: 과거의 거래장부내역을 다시 돌아가 볼 수 없도록 하는 것입니다. Finality는 어느정도의 시간을 기다려야 블록체인에 거래내역이 Finality 상태가 되도록 기다리지 않음. 그래서 보안 뿐만 아니라 상용화에 있어서 중요함.

비트코인에서 사용하는 머클 트리와 이더리움에서 사용하는 머클 패트리샤 트리의 차이점은 무엇이고, 왜 다른 자료구조를 사용할까요?

:

블록체인에서 TPS가 늘어나면 문제점들은 무엇이 있을까? 이 문제에 대한 생각하신 솔루션이 있는가요?

높아지면 탈 중앙화의 본질을 해칠 수 있음. 합의 알고리즘 , 스마트 컨트랙트의 연산 향상

하드 포크 , 소프트 포크

profile
호기심많은 개발자

0개의 댓글