본문 바로가기
Blockchain

블록체인 개발자 기술 면접 준비 질문 정리

by 개발자 염상진 2022. 10. 6.

 

블록체인 개발자 면접 질문

 

 

📚️ 블록체인 기본

 

❓️ 블록체인이 뭔지 정의해주세요

블록체인은 분산 원장 기술과 합의 알고리즘을 기반으로 이중 지불 문제를 해결하는 네트워크입니다. 

 

❓️블록체인 트릴레마에 대해 설명해주세요

블록체인 기술 중 3대 요소인 확장성, 보안성, 탈중앙성 모두 만족할 수는 없다는 개념입니다.

 

❓️코인과 토큰의 차이점은 무엇인가요?

  • 메인넷 유무에 따라 구분됩니다. 메인넷을 보유하고 있으면, 코인이라 불리고 없으면 토큰이라 불립니다.

 

❓️크립토 이코노미 VS 토큰 이코노미의 차이점을 설명해주세요

  • 크립토 이코노미란 블록체인 서비스 내에서 암호화폐(코인)으로 작동하는 경제 시스템을 의미합니다. 이해관계를 조정해주는 거버넌스가 필요합니다. 블록체인 경제가 작동하기 위해서는 채굴하는 사람이 필요하고 이에 대한 보상으로 코인이 지급됩니다.
  • 토큰 이코노미는 심리학 용어로 특정 행동을 강화하는 보상 시스템입니다. 서비스 참여도를 증가시키기 위해 토큰을 지급하고, 토큰을 활용하는 방안을 강구하면서 토큰의 미래 가치를 상승시킬 수 있습니다. 

 

 

❓️ CFT와 BFT의 차이점은 무엇인가요?

  • 블록체인에서는 모든 노드가 동의하는 하나의 체인을 공유하게 됩니다. 새로운 체인이 만들어지면 모든 노드가 합의를 해야 하고 이 때 합의 알고리즘이 필요합니다. 
  • 컨소시엄 블록체인에서는 신원증명을 통과한 노드가 참여하므로 악의적인 행동을 가정하지 않습니다. 이 때 CFT 알고리즘을 사용합니다.
  • 반면 비트코인, 이더리움 등의 퍼블릭 블록체인에서는 악의적인 노드가 존재하기 때문에 비잔틴 장군 문제를 해결할 수 있는 BFT 알고리즘을 사용합니다. 

 

❓️ PBFT는 무엇인가요?

  • BFT를 비동기 분산시스템에서 구현한 알고리즘입니다. 
  • 비동기로 작동하는 분산 시스템에서 악의적인 행동을 하는 노드가 존재하는 경우 합의에 이를 수 있는 방법입니다.
  • PBFT는 2번의 브로드캐스팅을 하게 됩니다. 합의 과정은 다음과 같습니다.
    1. 리더가 다른 노드들에게 데이터를 브로드캐스팅합니다.
    2. 리더의 메세지를 받은 노드들은 다시 브로드캐스팅합니다.
    3. 다른 노드들은 자신이 가장 많이 받은 메세지가 무엇인지 파악한 후 브로드캐스팅합니다.
    4. 이 과정이 끝나면 가장 많은 노드가 동의한 데이터가 합의됩니다.
  • PBFT의 장점은 PoS 기반으로 작동하므로 거래비용이 저렴합니다. 또한 다음 블록에 대한 합의가 이뤄지면 1번만 확인하고 거래가 완료되므로 트랜잭션이 빠른 장점이 있습니다. 

 

❓️Safety와 Liveness는 무엇인가요?

  • Safety는 시스템에 나쁜일이 발생하지 않는다는 의미입니다. 문제없는 노드들은 절대로 잘못된 합의를 하지 않게 됩니다.
  • Liveness는 시스템이 살아있 어야 한다는 의미입니다. 문제없는 노드들은 결국 합의에 이를 수 있게 됩니다. 

 

❓️블록체인의 완결성(Finality)는 무엇인가요? 

  • Finality는 블록체인에 한번 올라간 블록을 되돌릴 수 없음을 의미합니다. Finality를 보장하는 문제는 블록체인 설계에서 중요한 문제 중 하나입니다. 크게 확률적 완결성과 절대적 완결성으로 구분합니다.
  • 확률적 완결성은 나카모토 합의 알고리즘에서 사용하는 방식으로 블록이 추가될 수록 앞의 블록 완결성은 확률적으로 증가하게 됩니다.
  • 절대적 완결성은 한번 블록이 추가되면 되돌릴 수 없음을 의미합니다. 텐더민트에서는 전체 노드의 2/3과 prevote 2/3 precommit을 받으면 즉시 완결성이 보장됩니다.

 

❓️분산 원장 기술(DLT)에 대해 설명해주세요

  • 분산원장기술은 데이터를 중앙화된 중앙 기관이 관리하는 것이 아니라 분산화된 네트워크에서 참여자들이 공통으로 관리하는 기술입니다.
  • 기존 중앙집중 원장에서 보안, 과도한 수수료 문제가 있었고 블록체인은 분산원장기술을 활용한 탈중앙화를 구현하고 있습니다.

 

❓️트랜잭션(Transaction)이란 무엇인가요?

  • 블록체인의 바디를 구성하는 데이터 집합입니다.
  • 트랜잭션은 데이터베이스이 상태를 변화시키는 데이터 처리의 논리적인 단위입니다.
  • 트랜잭션이 안전하게 처리되기 위해서는 ACID를 준수해야 합니다.
  • ACID란?
    • Atomicity(원자성) : 데이터 처리는 전부 성공하거나 실패해야 합니다.
    • Consistency(일관성) : 데이터베이스 상태는 이전과 같이 유효해야 합니다.
    • Isolation(격리성) : 트랜잭션은 다른 트랜잭션에 대해 독립적이어야 합니다.
    • Durability(지속성) : 기록은 영구적으로 관리되어야 합니다.

 

❓️블록체인 거버넌스란 무엇인가요?

  • 분산 원장 기술을 사용하는 블록체인은 노드간 합의가 필요합니다.
  • 거버넌스는 모든 노드가 납득할만한 체인이 생성되도록 이해관계를 조정합니다.
  • 비트코인의 BIP, 이더리움의 EIP가 거버넌스가 구축되는 과정입니다.
  • 거버넌스는 온체인 거버넌스와 오프체인 거버넌스로 구분됩니다.
    1. 온체인 거버넌스 :  네트워크에 참여한 노드들의 거버넌스입니다.
    2. 오프체인 거버넌스 : 생태계 이해관계자들의 이익과 상관없는 거버넌스입니다.(하드 포크 등)

 

 

❓️ 합의 알고리즘에는 어떤 것들이 있나요?

  1. 작업증명(PoW)
    • 연산능력을 증명해 블록생성+검증 권한을 가집니다.
    • 오랜시간 검증이 완료된 합의 알고리즘입니다.
    • 51% 공격에 노출되고, TPS 성능이 떨어집니다.
    • 비트코인, 라이트 코인
  2. 지분증명(PoS)
    • 스테이킹한 지분량에 비례해서 블록 생성 권한을 얻게 됩니다.
    • 여전히 51% 공격에 노출되고 검증이 부족한 상황입니다.
    • TPS 성능이 개선되고, 에너지 효율적입니다.
    • 이더리움, 퀀텀, 네오, 스트라디스
  3. 위임 지분 증명(DPoS)
    • 권한을 위임받는 Validator들이 블록을 생성합니다.
    • 탈중앙성을 보장할 수 없고, 보안에 취약합니다.
    • TPS 성능이 개선되고 에너지 효율적입니다.
    • 스팀, 이오스 , 아크, 라이즈 등
  4. 경과 시간 증명(PoET)
    • 인텔 SGX를 기반으로 블록을 생성하는 리더를 랜덤으로 지정합니다.
    • 특정 하드웨어에 종속되는 경향을 보입니다.
    • 검증된 방식을 사용하고, 에너지 효율적입니다.
    • 쏘투스 등
  5. 권한 증명(PoA)
    • 승인된 계정에 의해 Validator 권한을 얻습니다.
    • 신원의 평판을 지키기 위해 노력할 것이라 가정합니다.

 

❓️트랜잭션 구성요소는 어떤게 있나요?

블록체인 트랜잭션에는 블록체인의 상태를 변화시키는 정보를 담고 있습니다.

 

❓️채굴이란 무엇인가요?

  • 채굴은 블록체인 네트워크에서 트랜잭션을 검증하고 분산원장을 기록하는 일입니다.
  • 검증과 기록에 참여한 노드는 코인을 보상으로 받으며 광물을 캔다는 채굴이란 이름이 붙었습니다. 
  • 적절한 보상은 크립토 이코노미를 지탱하는 힘입니다.

 

❓️ 블록간 동기화는 어떻게 진행되나요?

  • 블록체인은 거대한 P2P 분산원장 기술을 사용한 네트워크입니다.
  • 모든 노드는 자신이 받은 데이터를 브로드캐스팅 하게 되며, 시간차는 있지만 최종적으로 모든 노드들은 같은 정보를 가진 네트워크를 구성할 수 있게 됩니다.
  •  

 

🪙 비트코인

 

☑️ Bitcoin에서 UTXO에 대해 설명해주세요

  • 비트코인에서 이중지불 문제를 해결하기 위한 방법입니다.
  • 비트코인 잔액을 확인하기 위해 지갑 개념으로 사용됩니다.
  • 트랜잭션을 통해 이전 출력을 해제하고, 새로운 출력을 만드는 과정을 통해 UTXO에 기재된 잔액을 확인합니다.
  • 즉, UTXO는 다른 입력에 의해 해제되지 않은 트랜잭션 출력을 의미합니다. 
  • UTXO 개념 & 원리 이해하기

 

☑️ 비트코인에서 트랜잭션 검증은 어떻게 하나요?

  • 비트코인에서 트랜잭션 검증은 디지털 서명 방법을 사용합니다.
  • 트랜잭션 송신자는 자신의 개인키로 암호화하여 전송합니다.
  • 트랜잭션 수신자는 검증을 위해 송신자의 공개키로 복호화 하여 진위 여부를 판단합니다.
  • 타원곡선 디지털 서명 알고리즘(ECDSA) 중 secp256k1 알고리즘을 사용합니다.
디지털 서명이란
 

 

 

☑️ 머클트리란 무엇인가요?

  • 블록체인에서 위변조를 방지하기 위해 사용되는 기술입니다.
  • 트랜잭션 데이터 부터 단계적으로 해시값으로 나타난 자료구조입니다.
  • 해시로 연결된 블록을 위변조하기 위해서는 대규모 컴퓨팅 파워가 필요합니다.

 

☑️ 블록 헤더의 구성요소는 어떤게 있나요?

비트코인의 블록은 헤더와 바디로 구성됩니다. 블록 바디에는 서명 정보가 담기게 됩니다.

  • 버전 : 비트코인의 버전 표시
  • 이전 블록 헤더 해시 : 이전 블록 데이터를 해시한 값으로 블록체인의 핵심 요소입니다.
  • 머클 루트 : 트랜잭션과 블록 헤더를 해싱한 값을 해싱한 값
  • 타임 스탬프 : 유닉스 타임(1970년 1월 1일을 기준)
  • Difficulty : 블록을 채굴할 때 난이도(블록 높이에 따라 자동 설정됨)
  • bits  : 채굴 난이도에 맞는 목표값
  • 논스(Nonce) : 블록을 생성하기 위한 유일한 가변값

 

 

 

🌐 이더리움

 

❓️이더리움 블록체인에서 ERC-20 토큰을 만든 이유는 무엇인가요?

  • ERC-20은 Fungible Token을 제작하는 기술적 명세를 의미합니다.
  • 표준 스펙을 가진 토큰끼리 상호교환이 가능하도록 하기 위해서 ERC-20 표준을 공개했습니다.
  • ERC-20 토큰은 이더리움과 교환이 가능합니다.

❓️ERC-20 VS ERC-721 차이점을 설명해주세요

  • ERC-20은 Fungible Token. 말 그대로 대체 가능한 토큰입니다.
  • ERC-721은 Non-Fungible Token을 의미하며 대체 불가능하며, 희소성을 가진 토큰입니다.

 

❓️이더리움과 이더리움 클래식 차이는 무엇인가요?

  • 2016년 이더리움 창시자 비탈릭 부테린은 DAO(Decentralized Autonomous Organization)을 만듭니다.
  • 해커들은 컨트랙트의 스플릿 기능의 취약점을 발견에 무한 나누기 방식으로 이더를 인출합니다.
  • 결국 2016년 7월 하드포크가 단행되고 새로운 체인인 이더리움과 이더리움 클래식으로 나뉩니다. 

 

 

 

 

❓️이더리움 Solidity는 튜링 완전성 언어입니다. 튜링 완전성에 대해 설명해주세요

  • 튜링 머신이란 앨런 튜링이 고안한 유니버셜 튜링 머신에서 유래한 단어이며, 이론상으로 존재하는 기계입니다.
  • 어떤 프로그래밍 언어나 추상 기계가 튜링 머신과 동일한 연산능력을 갖추면 튜링 완전하다라고 합니다.
  • 튜링 머신의 기능은 기본적인 연산, 조건문, 반복문을 모두 수행할 수 있는 기계를 의미합니다.

 

❓️이더리움과 비트코인의 차이점은 무엇인가요?

  • 비트코인은 암호화폐를 채굴하고 거래하는데 기능이 그치지만, 이더리움은 dApp을 제작할 수 있는 Solidity 언어와 EVM을 지원합니다.
  • 비트코인은 무허가 퍼블릭 트랜잭션을 사용하지만, 이더리움은 무허가+허가 트랜잭션을 모두 허용합니다.
  • 비트코인 채굴노드는 보상을 받지만 이더리움은 블록생성에 대한 보상을 지급하지 않고 트랜잭션 수수료를 보상합니다.

 

❓️이더리움과 클레이튼의 차이점은 무엇인가요?

  • 클레이튼은 이더리움과 다르게 DPOS 합의 알고리즘을 사용합니다.
  • 클레이튼에는 CN, PN, EN 3가지 종류의 노드가 존재합니다.
  • 이더리움이 TPS가 7개인 반면 클레이트는 초당 1개의 블록이 생성됩니다.
  • 클레이튼은 PBFT 블록체인으로 비잔틴장애 허용, 확장성, 중앙집중화, 즉각 완결성의 특징을 가집니다.
  • 클레이튼의 토큰은 KIP-7(FT), KIP-17(NFT)가 있습니다. 

 

❓️이더리움의 opcode와 비트코인 스크립트 opcode의 차이점에 대해 설명해주세요

  • 가장 큰 차이점은 제공되는 opcode의 수입니다.
  • 사토시 나카모토는 무한 반복 공격을 예방하고자 의도적으로 반복문 opcode를 제외하였고, 비트코인은 튜링 불완전 언어가 됩니다.
  • 반면 이더리움의 EVM에서는 반복문 Opcode를 지원하면서 튜링완전 언어가 됩니다.

 

❓️ERC와 EIP의 차이점은 무엇인가요?

  • EIP(Ethereum Improvement Proposals)는 이더리움을 이렇게 개선하자는 제안입니다.
  • 반면 ERC(Ethereum Requests for Comments)는 제안된 아이디어를 코드로 구체화한 기술 표준입니다. 

 

❓️이더리움이 가진 문제점은 무엇이고, 이를 개선하기 위한 프로젝트는 어떻것들이 있나요?

이더리움 블록체인의 문제점은 낮은 확장성에 기인한 느린 속도, 비싼 가스비를 말할 수 있습니다. 이더리움이 직면한 문제를 개선하는 도전은 Layer1과 Layer2로 나눠서 설명할 수 있습니다.

  • Layer1 :
    • 합의 알고리즘 개선 : 이더리움은 PoW에서 PoS로 포크를 성공했습니다. 합의 알고리즘 변경은 컴퓨팅 연산이 아닌 네트워크 지분을 기반으로 블록이 채굴되면서 확장성을 개선할 수 있습니다.
    • 샤딩(shading) : 두번째 방법은 샤딩입니다. 트랜잭션을 샤드 단위로 쪼개 병렬로 트랜잭션을 처리하는 방법입니다.
  • Layer2 : 
    • 롤업(Roll up) : 레이어1 밖에서 트랜잭션을 실행하지만 레이어1에 Tx를 저장하는 방법입니다. 레이어1에 저장된 트랜잭션 데이터를 사용하여 레이어 2에서 트랜잭션을 실행하는 컨트랙트를 실행합니다. 롤업은 Optimistic Rollup과 ZK Rollup(영지식 롤업)으로 구분됩니다.

    • 사이드체인 : 메인체인의 속도와 확장성에 최적화 될 수 있도록 메인 체인에 독립적인 합의 알고리즘을 사용합니다. 사이드체인에서 발생하는 트랜잭션은 공개적으로 원장에 기록되고, 메인 체인에 영향을 미치지 않습니다.

    • 상태채널 : 두 사용자 간 커뮤니케이션을 위한 양방향 채널입니다. 상태 채널을 통해 참가자간 오프체인 트랜잭션을 수행하고, 최종 결과를 메인 체인에 기록합니다. 대표적으로 라이트닝 네트워크, 라이덴 프로젝트가 있습니다.

    • 중첩 블록체인 : 메인 블록체인을 활용해 더 넓은 네트워크에 대해 매개변수를 설정한 후 실행은 보조 체인에 연결된 웹에서 수행하는 분산형 네트워크 인프라입니다. 여러개의 블록체인 레벨이 메인체인에 구축되고, 부모-자식 관계를 가지게 됩니다. 부모 체인 대리자는 자식 체인의 작업 결과를 부모 체인으로 전달하는 역할을 합니다. 대표적으로 Plasma 프로젝트가 있습니다.

 

❓️이더리움에서 트랜잭션 검증은 어떻게 이뤄지나요?

  • 이더리움은 비트코인과 마찬가지로 secp256k1 타원 곡선 알고리즘(ECDSA)을 통해 트랜잭션을 검증합니다.
  • 비밀키로 암호화한 데이터를 확인하기 위해서는 공개키가 필요합니다. 

 

❓️ 이더리움 머클 패트리샤는 무엇인가요?

  • 비트코인이 머클루트를 사용하는 것 처럼 이더리움에서는 상태전이를 관리하기 위해 머클 패트리샤를 사용합니다.
  • 네트워크 참여노드들은 모두 같은 데이터를 가지고 있어야 합니다. 
  • 머클 패트리샤는 암호 해시 기반 트리 자료구조입니다. 트리의 모든 정보는 레벨DB에 저장됩니다.
  • 이더리움에서는 하나의 월드 트리를 생성하고 변경된 부분만 경로를 통해 빠르게 찾을 수 있습니다. 

 

❓️이더리움에서 이중지불 문제를 어떻게 해결하나요?

  • 이더리움에서는 어카운트 기반으로 Nonce를 사용합니다.
  • Nonce 값은 순차적이므로 동일한 Nonce에 여러개의 트랜잭션이 발생하면 가장 높은 가스비를 지불한 Tx을 처리합니다.
  • 반면 비트코인에서는 UTXO을 통해 이중 지불 문제를 해결하고 있습니다.

 

 

 

 

❓️멤풀(Mempool)이란 무엇인가요?

  • 멤풀은 블록에 들어가지 않은 트랜잭션들이 임시로 보관되는 장소입니다.
  • 어카운트 기반 이더리움에서는 이중지불문제(Double Spending)를 해결하기 위해 논스(Nonce)를 사용합니다.
  • 논스는 계정에서 유일한 값으로, 동일 논스는 존재하지 않습니다.
  • 논스는 순차적으로 처리되므로, 처리되지 않는 트랜잭션들이 멤풀이 담깁니다.

 

 

🔓 블록체인 보안

 

Double Spending 공격이란 무엇인가요?

  • 이중지불문제(Double Spending)이란 디지털 현금 시스템 내에서 동일한 하나의 자산이 동시에 두명 이상에게 전송되는 문제를 의미합니다.
  • 이중 지불 문제를 해결하기 위해 데이비드 차움의 eCash 아이디어가 있었지만, 여전히 중앙화된 접근방식이었습니다.
  • 2008년 비트코인은 탈중앙화된 방식으로 Double Spending 문제를 해결합니다.
  • 트랜잭션이 발생하면 일정 횟수동안 이후 체인이 발생되어야 자산이 전송되었다고 믿을 수 있는 네트워크를 만들었고, 비트코인 백서에 명시되어 있습니다. 이를 컨펌 횟수라고 합니다. 
  • 컨펌 횟수는 6회 정도가 쌓여야 안전하다고 할 수 있습니다.

 

✅ Replay Attack에 대해 설명해주세요

  • Replay Attack은 네트워크 중간에서 보안 네트워크 통신을 가로채어 수신자에게 원하는 작업을 수행하도록 하기 위해 통신을 지연시키거나 재전송 하는 공격을 의미합니다.
  • 암호화폐에서 리플레이 공격이 위험한 이유는 서로 다른 체인에서 암호화폐를 탈취할 수 있기 때문입니다.
  • 리플레이 공격을 방어하기 위해서는 ① 세션 식별자를 추가하거나, ② 일회용 비밀번호를 공유하거나, ③ 예상 범위내의 타임스탬프를 사용하는 방법이 있습니다.
  • 이더리움에서는 리플레이 공격을 방어하기 위해 노드간 메시지 시간차가 20초 이상 나면 폐기 처리 해버립니다.

 

✅ 이클립스 공격(Eclipse Attack)에 대해 설명해주세요

  • 네트워크에 있는 노드를 방해하는 공격입니다.
  • 전체 노드를 노리지 않고 특정 노드만 겨냥해 다른 노드로부터의 통신을 원천 차단해버립니다.
  • 격리된 노드들에게 가짜 트랙잭션을 브로드캐스팅하여 이중 지불 공격을 시도합니다.
  • 이클립스 공격을 방어하기 위해 방법은 다음과 같습니다.
    • ① 무작위 노드를 선택해 피어를 정하거나,
    • ② 노드 정보를 기록하고 피어 관계를 유지하는 방법,
    • ③ 마지막으로 하나의 노드에 연결된 피어의 갯수를 늘리는 방법이 있습니다.

 

 

 

 

 

 

✅ 51% 공격에 대해 설명해주세요

  • 단일 주체 혹은 조직이 대다수의 해시파워를 공급하여 네트워크를 임의로 조정할 수 있는 공격입니다.
  • 악의적인 주체가 해시파워를 독점하면 본인이 발생시킨 Tx를 되돌릴 수 있고, 이는 이중 지불 문제로 이어집니다.
  • PoW 합의 알고리즘 뿐만 아니라 PoS에서도 코인 가치가 낮으면 51% 공격이 발생할 수 있습니다. 

 

 

🔓 블록체인 기술 동향

 

 

 

 

🚀️ 도움이 되셨다면 구독좋아요 부탁드립니다 👍️

 

 

 

 

프로세스 스레드 차이점 ⁉️

Process? 프로그램을 실행하면 우선 주기억장치에 적재되어 CPU에 의해 실행됩니다. 이 때 CPU에 실행상태에 있는 프로그램을 프로세스라고 합니다. CPU가 프로그램에 할당되고 PCB(Process Control Block)

about-tech.tistory.com

 

 

Markdown code block language 선택하는 방법💡️

Markdown형식으로 글을 작성할 때 코드 블럭을 삽입할 수 있습니다. 여기서 언어를 선택해서 Markdown에 삽입이 가능합니다. Markdown code block language 선택하는 방법 예를 들어 javascript로 아래 코드를 작

about-tech.tistory.com

 

댓글