요즘 이더리움 소스코드를 분석하고 있지만, 분석하면서 느끼는 아쉬운 부분이
동작원리는 알겠는데, 실무적으로는 어떤지,
실무자들은 어떤 문제를 마주하며, 개선해 나가고 있는지다.
그러던중 오늘 페이스북 피드에서 눈에 띄는 개발자 채용공고를 보게되었다.
블록체인 스타트업 "온더"에서 개발자를 모집하는데 첨부된 질문들이 하나같이 실무스러운.
그러니까 앞으로 내가 분석할때 지표 삼을 만한 항목들이였다.
ETC를 ETH메인넷의 ERC20주소로 보내버렸다. 복구할 방법이 있는가? 단 ERC20주소를 만든 개인키는 잃어버리지 않았다.
있다. (이게 중요하다) 동일한 계약을 ETC에 배포하고, 되돌려 받는 코드를 추가하면 될듯)
solidity의 keccak함수의 연산은 EVM의 스택머신에서 이뤄질까? 그렇다면 혹은 그렇지 않다면 이유는 무엇인가?
비싸서 안한다( pre deploy된 함수를 고정가격에 사용한다.)
0x60 옵코드는 어떤 명령인가?
Push1 (1byte push)
EA가 CA한테 이더를 보냈다. CA의 balance와 storageRoot는 모두 바뀐다. 참일까 거짓일까? 그 이유는? 단 CA 코드에 msg.value를 사용하는 부분은 없다.
balance는 바뀌겠지만, 저장소 루트는 바뀌지 않는다.
옐로우페이퍼에 적힌 트랜잭션 value가 표현할 수 있는 값의 최대 범위는? 근거가 되는 수식 번호와 옐로우페이퍼 커밋 해시를 적어라.
EVM옵코드 중 JUMP와 JUMPDEST의 차이와 역할에 대해서 기술하라
모든 거래내역이 공개되어 있음에도 불구하고, 해커가 비트코인을 훔쳐갔을 때 추적하기 어려운 이유는?
UTXO
마이닝 노드가 20개, 풀노드가 10개인 프라이빗 네트워크가 있다. tx 2개가 생성되어 블록에 포함되었을 때, 생성되는 EVM의 갯수와 그 이유는?
10개
payable모디파이어에 대해서 설명하라. 그리고 payable모디파이어가 없는 ICO컨트랙트는 만들어 질 수 있을까? 있다면 그 이유는 무엇인가?
전체 토큰의 전송을 멈출 수 있는 transfer pause 기능은 블록체인의 위변조불가능한 특성을 위배하는가? 그렇다면 혹은 그렇지 않다면 그 이유는?
플라즈마 체인의 challenge과정에 대해서 서술하라
플라즈마 체인의 합의 알고리즘과 exit 프로세스의 관계에 대해서 서술하라
truffle migrate, truffle compile, truffle test 각각의 명령어는 어떤 일을 하는가?
github에 solidity코드가 알록달록하게 보이기 위해서는(linter) 어떤 조치를 해야할까?
이더리움 계정 생성간 뉴모닉 단어를 이용할 수 있다. 뉴모닉이 만들 수 있는 계정 갯수의 한도는 있는가? 그렇다면 혹은 그렇지 않다면 그 이유는?
패러티 멀티시그 해킹(해킹(https://paritytech.io/security-alert-2/)의 구조와 원리를 설명하라.
솔리디티 Proxy Pattern에 대해서 설명하라
call, delegate call, static call의 차이에 대해서 설명하라
solidity와 vyper의 차이점과 장단점에 대해서 설명하라
일단 O(n)이면 순차적인 어떤일이 연속으로 일어나야 하는데,
해당 일을 트렌젝션이라고 가정하면 연속으로 블록에 포함시키는건 불가능할것이다.
마이닝 노드의 상황(가스비 정책)이나 네트워크 상황(트렌젝션 풀의 트렌젝션 공유)에 따라
블록에 포함되는 순서들이 뒤바뀔것이다
물론 n이 적어서 1개의 블록 내부 모두 포함될 경우는 어카운트 논스로 정렬을 하니까 순서가 확보될것 같다.
solidity optimizer란 무엇인가?
ICO트릴레마에 대해서 설명하라
PoA 합의 알고리즘에서 validator를 변경할 수 있는가? 이유는 무엇인가?
토큰의 분류 중 Work Token의 개념을 설명하고 Work token의 경우 토큰의 이상적인 형태는 무엇인가? 그 예(2가지 이상)는 무엇이 있을까?
puppeth를 이용해 여러개의 Bootnode를 갖고 있는 프라이빗 네트워크를 운영할 수 있는가? 이유는 무엇인가?
puppeth를 이용해 프라이빗 네트워크를 구축하기 위해 필요한 준비사항을 모두 적으시오
solidity에서 함수 인자로 전달된 파라미터 a를 함수 내부에서 소괄호로 감쌌다. eq) (a) 무슨 의미인가?
비트코인의 블럭, TX 구조를 간략히 설명하고, UTXO 를 사용 / 검증하기 위한 과정을 설명하라
블록체인의 중요 요소는 해쉬함수와 머클 트리이다. 해쉬 함수를 사용하는 것의 의미(해쉬 함수의 특성)을 설명하고, 머클 트리, 머클 path 를 설명하라.
해쉬함수의 특성은 해쉬 생성시 결과값이 중복될 확률이 거의 없고, 입력이 조금만 변하더라도 출력이 엄청나게 변한다. 즉 뭔가를 변조하거나, 실수로 중복된 일이 생길확률이 줄어든다.
머클트리는 자식노드의 해시로 부모의 해시를 만들어 탑의 해시만을 가지고도 아랫쪽 값들이 위변조 되었는지 확인가능한 트리이고, 머클패스는 proof검증을 위해 root hash까지 도달하는데 필요한 노드들의 경로이다.
2세대 블록체인이라 불리는 이더리움과 비트코인의 구조적인 차이를 설명하라.
비트코인은 거래만을 담을수 있는 코인 기능에 한정적이고,
이더리움은 거래를 포함한 다양한 플랫폼을 체인을 활용해 구현할수 있도록 계약 코드실행계층이 있다
비트코인, 이더리움, 혹은 그 밖의 블록체인들의 현존하는 스케일링 솔루션을 제시하고 어떤 방식으로 구현하려는지 설명하라.
샤딩, 플라즈마. 라이트닝 네트워크...
PoW 에서 일어날 수 있는 공격 방식을 제시하라.
51% attack.
로컬의 체인을 길게 만들어서 한번에 바꿔칠수 있다.
PoW 가 아닌 합의 알고리즘은 어떤 것들이 있는가? Casper FFG, DPoS, Tendermint, 혹은 그 밖의 알고리즘을 설명하라.
Dpos는 위임된 대표자들이 합의하는것.
Casper는 이더리움의 Pos버전. 텐더민트는 어디서 들어봤는데..
PBTF도 있고..
Whisper, Swarm, IPFS, Infura, Gnosis, Aragon, Metamask, Golem, 혹은 그 밖의 이더리움 생태계에 기여하는 프로젝트를 설명하라.
whisper는 이더리움 메신져...
EA a 와 b 의 balance 가 각각 n_a, n_b 일 때, a 의 모든 잔액을 b 에게 보냈다. gas price 를 g_p 라고 한다면, b 의 밸런스는 n_b + α 이다. 이 때 α 는?
swarm ls 명령어를 실행하기 위해 필요한 값은 어떤것이 있는지 설명하시오
상호 독립적인 토큰이 서로 교환되는 Atomic Swap 방식에 대해 설명하고, Plasma Fast Withdrawl 절차에서의 Atomic Swap 방식을 설명하라.
아토믹 스압이 뭔지는 모르겠는데, 서로 분리된 체인의 토큰끼리 스왑을 하려면
서로다른 체인의 finalize시간에 차이가 있을 테니 중복지불같은걸 해결하기 위해 뭔가 양쪽에 락을 걸어야 할것같고
한쪽 체인의 트렌젝션을 다른쪽 체인에도 전달하는 로직과, 타 체인의 트렌젝션 내용 블록에 포함하는 처리하는 기능이 양쪽에 있어야 할것 같다.
Casper FFG가 어떻게 이더리움 블록체인의 확장성 문제를 해결할 수 있는지 근거를 제시하라.
이더리움 블록체인에 대해서 Oracle이 갖는 의미를 설명하고 Oracle Problem에 대해 설명하라.
Ethash 기반의 이더리움 PoW 체인은 비트코인 PoW 체인보다 어떤 비교우위가 있는지 설명하고 그 한계를 제시하라.
이더리움의 GHOST Protocol 방식과 비트코인의 블록 생성방식 간의 차이점을 설명하라.
Casepr는 51% 공격 문제를 어떻게 해결할 것인지에 대해서 PoW 체인의 경우와 비교하여 설명하라.
Casper는 전통적인 PoS 알고리즘의 Nothing at Stake 문제를 어떻게 해결하려고 하는지 설명하라. (최소삭감조건을 명시하시오)
Token Economy의 가치 확보 문제와 Token Velocity Problem을 연관지어 서술하세요.
PoW에서 확보되지 않았던 경제적 완결성 개념이 무엇인지 설명하고, Casper는 이 문제를 어떻게 해결하려고 하는지 서술하세요.
사실, World가 돌아가는 로직을 이해하면, 그것에 대한 implementation은 어쩔수 없이 따라가게 되어있다.
내가 분석중인 이더리움 구현 코드는 이더리움 프로토콜의 동작과 발생가능한 문제들을 해결하기 위해
그렇게 밖에 짜질수 없는 코드라는 뜻이다.
앞으로 이 글에 항목항목에 대해 조사하고 공부하는 시간을 가져야겠다.
채용공고를 통해 회사의 귀중한 자산을 과감하게 공유해주신 정순형 대표님께
다시한번 감사드린다. (채용공고 원문은 아래 링크를 참조)
https://m.facebook.com/story.php?story_fbid=2033070063402346&id=100000981176857