블록체인 개발자 면접 질문
📚️ 블록체인 기본
❓️ 블록체인이 뭔지 정의해주세요
블록체인은 분산 원장 기술과 합의 알고리즘을 기반으로 이중 지불 문제를 해결하는 네트워크입니다.
❓️블록체인 트릴레마에 대해 설명해주세요
블록체인 기술 중 3대 요소인 확장성, 보안성, 탈중앙성 모두 만족할 수는 없다는 개념입니다.
❓️코인과 토큰의 차이점은 무엇인가요?
- 메인넷 유무에 따라 구분됩니다. 메인넷을 보유하고 있으면, 코인이라 불리고 없으면 토큰이라 불립니다.
❓️크립토 이코노미 VS 토큰 이코노미의 차이점을 설명해주세요
- 크립토 이코노미란 블록체인 서비스 내에서 암호화폐(코인)으로 작동하는 경제 시스템을 의미합니다. 이해관계를 조정해주는 거버넌스가 필요합니다. 블록체인 경제가 작동하기 위해서는 채굴하는 사람이 필요하고 이에 대한 보상으로 코인이 지급됩니다.
- 토큰 이코노미는 심리학 용어로 특정 행동을 강화하는 보상 시스템입니다. 서비스 참여도를 증가시키기 위해 토큰을 지급하고, 토큰을 활용하는 방안을 강구하면서 토큰의 미래 가치를 상승시킬 수 있습니다.
❓️ CFT와 BFT의 차이점은 무엇인가요?
- 블록체인에서는 모든 노드가 동의하는 하나의 체인을 공유하게 됩니다. 새로운 체인이 만들어지면 모든 노드가 합의를 해야 하고 이 때 합의 알고리즘이 필요합니다.
- 컨소시엄 블록체인에서는 신원증명을 통과한 노드가 참여하므로 악의적인 행동을 가정하지 않습니다. 이 때 CFT 알고리즘을 사용합니다.
- 반면 비트코인, 이더리움 등의 퍼블릭 블록체인에서는 악의적인 노드가 존재하기 때문에 비잔틴 장군 문제를 해결할 수 있는 BFT 알고리즘을 사용합니다.
❓️ PBFT는 무엇인가요?
- BFT를 비동기 분산시스템에서 구현한 알고리즘입니다.
- 비동기로 작동하는 분산 시스템에서 악의적인 행동을 하는 노드가 존재하는 경우 합의에 이를 수 있는 방법입니다.
- PBFT는 2번의 브로드캐스팅을 하게 됩니다. 합의 과정은 다음과 같습니다.
- 리더가 다른 노드들에게 데이터를 브로드캐스팅합니다.
- 리더의 메세지를 받은 노드들은 다시 브로드캐스팅합니다.
- 다른 노드들은 자신이 가장 많이 받은 메세지가 무엇인지 파악한 후 브로드캐스팅합니다.
- 이 과정이 끝나면 가장 많은 노드가 동의한 데이터가 합의됩니다.
- 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가 거버넌스가 구축되는 과정입니다.
- 거버넌스는 온체인 거버넌스와 오프체인 거버넌스로 구분됩니다.
- 온체인 거버넌스 : 네트워크에 참여한 노드들의 거버넌스입니다.
- 오프체인 거버넌스 : 생태계 이해관계자들의 이익과 상관없는 거버넌스입니다.(하드 포크 등)
❓️ 합의 알고리즘에는 어떤 것들이 있나요?
- 작업증명(PoW)
- 연산능력을 증명해 블록생성+검증 권한을 가집니다.
- 오랜시간 검증이 완료된 합의 알고리즘입니다.
- 51% 공격에 노출되고, TPS 성능이 떨어집니다.
- 비트코인, 라이트 코인
- 지분증명(PoS)
- 스테이킹한 지분량에 비례해서 블록 생성 권한을 얻게 됩니다.
- 여전히 51% 공격에 노출되고 검증이 부족한 상황입니다.
- TPS 성능이 개선되고, 에너지 효율적입니다.
- 이더리움, 퀀텀, 네오, 스트라디스
- 위임 지분 증명(DPoS)
- 권한을 위임받는 Validator들이 블록을 생성합니다.
- 탈중앙성을 보장할 수 없고, 보안에 취약합니다.
- TPS 성능이 개선되고 에너지 효율적입니다.
- 스팀, 이오스 , 아크, 라이즈 등
- 경과 시간 증명(PoET)
- 인텔 SGX를 기반으로 블록을 생성하는 리더를 랜덤으로 지정합니다.
- 특정 하드웨어에 종속되는 경향을 보입니다.
- 검증된 방식을 사용하고, 에너지 효율적입니다.
- 쏘투스 등
- 권한 증명(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 프로젝트가 있습니다.
- 롤업(Roll up) : 레이어1 밖에서 트랜잭션을 실행하지만 레이어1에 Tx를 저장하는 방법입니다. 레이어1에 저장된 트랜잭션 데이터를 사용하여 레이어 2에서 트랜잭션을 실행하는 컨트랙트를 실행합니다. 롤업은 Optimistic Rollup과 ZK Rollup(영지식 롤업)으로 구분됩니다.
❓️이더리움에서 트랜잭션 검증은 어떻게 이뤄지나요?
- 이더리움은 비트코인과 마찬가지로 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% 공격이 발생할 수 있습니다.
🔓 블록체인 기술 동향
🚀️ 도움이 되셨다면 구독과 좋아요 부탁드립니다 👍️
'Blockchain' 카테고리의 다른 글
[블록체인 만들기 #2] Genesis Block 생성 (Typescript) (0) | 2022.10.09 |
---|---|
[블록체인 만들기 #1] Block 구성 (Typescript) (0) | 2022.10.09 |
[Node.js] 디지털 서명 SHA256 32Bytes 비대칭키 사용방법 (0) | 2022.09.15 |
IPFS Web3.Storage 사용법 (0) | 2022.09.07 |
Truffle migrate Error You must specify a network id in your development configuration in order to use this network (0) | 2022.09.02 |
댓글