챕터9:스마트 컨트랙트 보안 다른 프로그램들과 마찬가지로 스마트 컨트랙트도 작성된 그대로 실행되는데, 프로그래머가 의도한 내용과 반드시 일치하지 않을 때가 있다. 또한 모든 스마트 컨트랙트는 공개되어 있으며, 모든 사용자는 트랜잭션을 생성하여 간단하게 상호작용할 수 있다. 어떤 취약점이라도 악용될 수 있으며, 손실은 거의 항상 복구할 수 없다. 따라서 모범 사례를 따르고 잘 테스트된 디자인 패턴을 사용하는 것이 가장 중요하다. 보안 모범 사례 방어적 프로그래밍은 스마트컨트랙트에 특히 적합하다. 미니멀리즘/단순성 - 코드는 간단할수록 안전하다. 코드 재사용 - 같은 코드를 반복하지마라(함수, 라이브러리로 정리), 개발된 라이브러리를 사용하는 것이 디자인이나 기능은 몰라도 일단 안전하다. 코드 품질 - 스마..
블록체인/책
챕터8:스마트 컨트랙트와 바이퍼 바이퍼(vyper)는 이더리움 가상 머신을 위한 실험적인 컨트랙트용 프로그래밍 언어인데, 개발자들이 이해하기 쉬운 코드를 작성할 수 있도록 함으로써 뛰어난 감사 용이성(auditability)을 제공하고자 만들어졌다. 사실, 바이퍼의 주요 원칙 중 하나는 개발자들이 오독하기 쉬운 코드(misleading code)를 작성할 수 없게 하자는 것이다. 취약점과 바이퍼 이 책에서는 최근이라고 나와 있지만, 이젠 예전이 되어버린 한 연구에서 https://arxiv.org/pdf/1802.06038.pdf 배포된 약 백만개의 이더리움 스마트 컨트랙트를 분석한 결과 심각한 취약점을 가진 스마트 컨트랙트가 아주 많다는 사실을 확인했다고 한다. 취약점의 유형은 다음과 같다. 자기파괴 ..
챕터7:스마트 컨트랙트와 솔리디티 컨트랙트 계정은 개인키를 갖지 않으므로 스마트 컨트랙트에 규정된 미리 결정된 방식으로 '스스로 제어'하는 반면, EOA는 프로토콜의 외부에 있어서 프로토콜에 독립적인 '실제 세계'의 개인키로 생성되고 암호로 서명된 거래에 의해 제어된다. 여러번 나오는 얘기이지만 이더리움에는 EOA와 컨트랙트 계정 이렇게 두가지 유형의 계정이 있다. 이번장에서는 컨트랙트 계정과 이를 제어하는 코드에 대해서 설명한다. 스마트 컨트랙트란 무엇인가 이 책에서는 '스마트 컨트랙트'라는 용어를 불변적인(immutable) 컴퓨터 프로그램을 지칭하는데, 이 프로그램은 이더리움 네트워크 프로토콜(즉, 탈중앙화된 이더리움 월드 컴퓨터)의 일부인 이더리움 가상 머신의 컨텍스트 상에서 결정론적으로(dete..
챕터 6 : 트랜잭션 트랜잭션은 외부 소유 계정(EOA)에 의해 서명된 메세지인데, 이더리움 네트워크에 의해 전송되고 이더리움 블록체인에 기록된다. 이 기본 정의는 놀라울 정도로 매력적인 의미를 담고 있다. 다른 관점으로 바라보면, 트랜잭션은 EVM에서 상태 변경을 유발하거나 컨트랙트를 실행할 수 있는 유일한 방법이라는 것이다. 이더리움은 글로벌 싱글톤 상태 머신이며, 트랜잭션은 이 상태 머신을 움직여서 상태를 변경할 수 있도록 만든다. 컨트랙트는 독자적으로 실행되지 않는다. 또한 이더리움도 자율적으로 실행되지 않는다. 모든 것은 트랜잭션으로부터 시작된다. 다 중요한 말이라 그대로 가져왔다. 이더리움 네트워크에서 모든 상태변화는 트랜잭션으로 이뤄진다. 이더리움 혼자 실행되고 돌아갈 수 있는 게 아니라 그..
챕터 5 : 지갑 넓은 의미에서 지갑은 이더리움의 주요 사용자 인터페이스를 제공하는 소프트웨어 어플리케이션이다. 지갑은 사용자 돈에 대한 접근을 통제하고, 키와 주소를 관리하며, 잔액을 추적하고, 트랜잭션 생성과 서명을 제어한다. 여기에 더해서 몇몇 이더리움 지갑은 ERC20 토큰처럼 컨트랙트와 상호작용할 수 있다. 사실 이더리움이나 비트코인 네트워크에서 지갑이라는 것에 어떤 형태는 존재하지 않는다. 그냥 개인키랑 공개키가 다다. 그걸 통해서 블록안에서 내 기록을 가져오는 형태이다. 우리가 흔히 알고 있는 메타마스크 같이 잔고를 표시해주고, 송금, 스왑과 같은 기능을 탑재한 지갑들이 사실은 당연한게 아니라, 그 지갑에서 우리의 편의를 위해 대신 처리해주는 것이다. 우리가 직접 그 기능들을 쓰려고 한다면,..
챕터 4 : 암호학 출판 시점 기준 이더리움 프로토콜의 어떤 부분도 암호화되어있지 않다. 따라서 누구나 내용을 읽고 확인할 수 있다. 향후에는 영 지식 증명이나 동형 암호화 같은 고급 암호화 도구를 사용하여 암호화된 계산을 블록체인에 기록할 수 있을 것이다. 암호화 도구를 제공할 준비는 마쳤으나 아직 배포되지는 않았다. 이 책이 19년도 5월 초판이다. 원본은 18년 12월 23일 발행. (생각보다 번역본이 빨리 나왔다 신기...) 지금이 21년 5월 10일이니 2년반이 지났는데, 서칭을 해보니 지금도 아직 적용이 안된 것 같다. 다만 이더리움 네트워크 위에서 동형암호를 이용한 서비스들은 가능한 것 같다. www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE076122..
챕터 3 : 이더리움 클라이언트 "이더리움 클라이언트는 이더리움 사양을 구현하고 다른 이더리움 클라이언트와 피어투피어 네트워크를 통해 통신하는 소프트웨어 애플리케이션이다. 기준 사양과 표준 통신 프로토콜을 준수한다면, 서로 다른 이더리움 클라이언트들끼리 상호운용(interoperate)이 가능하다." 그냥 이 문장만 딱 봤을 때 무슨 말인지 사실 이해하기 힘들었다. 챕터를 다 읽고나서 대충 이해한 것 같은데 쉽게 설명하자면, 1. 이더리움 네트워크가 있고 2. 네트워크에 접속할 수 있도록 도와주는 클라이언트가 있는 것이다. 더 쉽게 비유해서 설명하면 네트워크가 있고 통신사가 여러개 있다고 생각하면 맞는 것 같다. 통신 규격만 맞춰서 통신하면 통신사끼리 통신이 가능하듯이 이더리움 사양을 구현한 이더리움 클..
챕터 2 : 이더리움 기초 이더 화폐 단위, 이더리움 지갑 선택하기, 통제와 책임,메타마스크 설치하기, 네트워크 바꾸기, 테스터 이더 얻기, 메타마스크에서 이더 보내기,주소의 트랜잭션 내역 탐색 지갑을 만들고 테스터넷을 통하여 이더를 발급받고 전송해보고 가스비를 확인하는 내용까지를 알려준다,. 이 과정에서 나는 이상함을 느꼈는데, 이더의 테스터넷의 경우 종류도 많고 제각기 운영방식이 달라 의아했다. 찾아보니 각 커뮤니티에서 하드포크하여 자체적으로 운영하는 형태인 듯 하였다. 월드 컴퓨터 소개 이더리움은 이더리움 가상머신(EVM)이라고 하는 에뮬레이트 된 컴퓨터에서, 스마트컨트랙트 라는 프로그램을 실행하기 위해 사용되는 화폐이다. EVM은 글로벌 싱글톤으로, 세계 어디서든 하나의 컴퓨터처럼 작동한다. 이더..
Chapter 2: Evolution of Economics 2.1. What is Economics: An Evolution Economics is a science. It primarily examines how decisions are made and which alternatives provide the greatest benefits to various stakeholders. It has always been, and continues to be, about the study of allocation of scarce resources (behaviours). One of the key differences in token economics is to create rules around the..
서론 내가 들어가 있는 페이스북 그룹에서 크립토 이코노미 온라인 세미나를 연다기에, 참가하고자 했는데 그에 필요한 사전 지식이 이 책의 전반적인 내용이라기에, 이 책 읽고 공부하기로 결정했다. 원래 이더리움에 관한 대략적인 내용만 주워듣는 정도로 알고 있었는데 이 책을 읽고 정확한 지식들을 쌓을 수 있기를 기대한다. 본문 감수자의 글 '... 탈중앙화된 어플리케이션들이 앞으로 어떤 역할을 할 수 있을지에 대해 본격적으로 고민하기 시작했다. 초기의 기대와는 달리 갈수록 독점화, 집중화되어 가고 있는 인터넷 산업의 문제들에 대한 새로운 돌파구를 열어줄 수 있을 것이라는 기대감 때문이었다. ...그들이 제공하는 서비스를 사용하는 사람들은 점점 더 자신들의 권리가 축소되어 왔음을 경험해 왔다' 블록체인은 중앙의..
Chapter 1: Introduction to the Economics of Token Engineering1.1. Layer 1 vs DApps Protocols In blockchain and technology systems we can divide the entire system into three layers, Layer 1, Layer 2 and Application Layer. The language that these systems run is called protocols. 블록체인의 레이어를 영어에 빗대어 이야기 한다. 레이어1은 영어다. 영어를 쓰는 국가들은 다양하다. 영어는 그 국가들이 소통하고 거래를 할 수 있도록 도와준다. 그 국가 별로 영어 사용법이 다른데 그게 레이어2다. ..