C 박재현, 오재훈, 박혜영 All Rights Reserved. 초판 1쇄발행 2018년 4월 19일지은이박재현, 오재훈, 박혜영펴낸이장성두펴낸곳주식회사제이펍출판신고 2009년 11월 10일제 호주소경기도파주시회동길 159 3층

Size: px
Start display at page:

Download "C 박재현, 오재훈, 박혜영 All Rights Reserved. 초판 1쇄발행 2018년 4월 19일지은이박재현, 오재훈, 박혜영펴낸이장성두펴낸곳주식회사제이펍출판신고 2009년 11월 10일제 호주소경기도파주시회동길 159 3층"

Transcription

1

2 C 박재현, 오재훈, 박혜영 All Rights Reserved. 초판 1쇄발행 2018년 4월 19일지은이박재현, 오재훈, 박혜영펴낸이장성두펴낸곳주식회사제이펍출판신고 2009년 11월 10일제 호주소경기도파주시회동길 159 3층 3-B호전화 / 팩스 홈페이지 / 원고투고 jeipub@gmail.com 독자문의 readers.jpub@gmail.com / 교재문의 jeipubmarketer@gmail.com 편집부황혜나, 이슬, 이주원 / 소통 기획팀민지환 / 회계팀김유미교정 교열장성두 / 본문디자인성은경 / 표지디자인미디어픽스용지에스에이치페이퍼 / 인쇄한승인쇄 / 제본광우제책사 ISBN (93000) 값 28,000원 이책은저작권법에따라보호를받는저작물이므로무단전재와무단복제를금지하며, 이책내용의전부또는일부를이용하려면반드시저작권자와제이펍의서면동의를받아야합니다. 잘못된책은구입하신서점에서바꾸어드립니다. 제이펍은독자여러분의아이디어와원고투고를기다리고있습니다. 책으로펴내고자하는아이디어나원고가있으신분께서는책의간단한개요와차례, 구성과저 ( 역 ) 자약력등을메일로보내주세요. jeipub@gmail.com

3

4 드리는말씀 이책에기재된내용을기반으로한운용결과에대해저자, 소프트웨어개발자및제공자, 제이펍출판사는일체의책임을지지않으므로양해바랍니다. 이책에기재한회사명및제품명은각회사의등록상표 ( 또는상표 ) 이며, 본문중에는 TM, C, R 등의기호를생략하고있습니다. 이책에서사용하고있는실제제품버전은독자의학습시점에따라책의버전과다를수있습니다. 책에삽입된그림중일부는인터넷에서복사해온것들이있는데, 이것들모두는 CCL에의하여허가를받은것들이나혹시문제가될만한것들이있다면출판사로연락주시기바랍니다. 책내용과관련된문의사항은지은이나출판사로연락주시기바랍니다. - 지은이 : jaehyunpark.kr@gmail.com - 출판사 : readers.jpub@gmail.com

5 차례 xi xvi xix Chapter 01 블록체인컴퓨팅 1 vi 1.1 비트코인 1 돌로만든스톤머니에서암호화폐까지 1 새로운암호화폐, 비트코인의출현 3 알트코인 블록체인기술의탄생 6 블록체인기술의탄생 6 중앙집중원장과분산공유원장 블록체인 P2P 컴퓨팅 P2P 11 P2P 컴퓨팅 11 P2P 네트워크연결방식 블록체인기반플랫폼분류 13 공개형블록체인 13 프라이빗블록체인 15 클라우드블록체인 블록체인운영모델에대한이해 22 중앙집중식플랫폼비즈니스모델 22 블록체인기반탈중앙형플랫폼비즈니스 23 독립형생태계를꿈꾸는블록체인 24 Chapter 02 이더리움플랫폼의작동원리 이더리움플랫폼살펴보기 이더리움지갑설치와사용 26 차례 v

6 모든거래기록의공유및블록체인구성 27 다양한응용앱개발 미스트설치 29 이더리움월릿으로돈주고받기 33 이더리움월릿으로스마트컨트랙트배포하기 이더리움단일상태모델 현실세계에서의거래 42 이더리움에서의거래, 상태전이 43 참고 : 비트코인상태정보모델 이더리움플랫폼구성 어카운트 49 어카운트생성 51 어카운트상태 54 트랜잭션과리시트 55 core 패키지 : 트랜잭션생성및전자서명 56 블록체인 합의알고리즘 89 이더리움합의엔진 스마트컨트랙트 107 이더리움가상머신 이더리움 P2P 네트워크 115 이더리움데이터저장 124 RLP 인코딩 DApp 130 P2P 메시징시스템, 휘스퍼 132 P2P 파일시스템, 스웜 136 Chapter 03 이더리움실습 이더리움시작 Geth 141 이더리움프로그래밍환경셋업 141 vi 차례

7 Geth에서사용하는데이터디렉터리구조 Geth Geth 이더리움네트워크접속 솔로네트워크접속하기 152 프라이빗네트워크구축하기 Chapter 04 스마트컨트랙트프로그래밍 스마트컨트랙트에대한이해 EVM의구조 162 튜링-컴플리트머신 164 스택기반가상머신 솔리디티개발언어 맥운영체제 167 미스트실행방법 168 윈도우운영체제 Greeter 스마트컨트랙트 컨트랙트함수의가시성 상태변수의가시성 178 스마트컨트랙트함수의상태변경성 이넘타입 182 매핑사용 스트럭트타입사용 버전프래그마 190 컨트랙트함수 솔리디티타입 194 차례 vii

8 불리언타입 194 정수타입 194 고정소수점수 195 어드레스 195 고정크기배열 컴플렉스타입 197 변수의데이터로케이션 197 데이터위치에따른할당연산 198 바이트배열 200 문자열 201 배열 202 동적메모리배열 토큰컨트랙트만들기 Wallet Token GeneralWalletCompatibleToken 토큰생성 222 트랜잭션과오류처리 ERC 크라우드펀드컨트랙트 CrowdFund 233 추상컨트랙트 235 인터페이스 235 라이브러리 236 상수와특수변수 236 폴백함수 237 함수모디파이어 CrowdFund DAO 해킹재현 솔리디티언어기본 네임드매개변수 250 출력매개변수 viii 차례

9 함수의가시성 253 외부함수호출시이더전송 using A for B 260 라이브러리배포 261 ABI 생성방법 Import 265 임포트 265 파일의경로 리믹스 IDE 새로운컨트랙트생성하기 271 기존컨트랙트불러오기 디버그시작하기 274 중단점사용하기 276 Chapter 05 이더리움응용 이더리움활용방법 Json RPC 278 RPC를위한 Geth 클라이언트구동 278 Json RPC API를이용한예제 Web3 js 281 Web3.js를이용한예제 DApp으로크라우드펀드개발하기 DApp 286 크라우드펀드웹서비스폴더구조 286 노드접속하기 287 스마트컨트랙트연동 288 Get 함수구현 292 Set 함수구현 293 Event Watch 295 차례 ix

10 Event Filter 296 POST /users/join 라우팅구현 296 Chapter 06 이더리움의현재와미래 이더리움의약점과해결을위한노력 처리성능과용량 299 작업증명방식의합의엔진 300 블록체인데이터크기증가 302 스마트컨트랙트와 EVM 302 ICO 버블 이더리움영지식증명, ZK-Snark 303 이더리움지분증명방식, 캐스퍼 306 샤딩 308 상태채널과라이덴네트워크 이더리움의현재와미래 ICO 315 암호화폐선판매란? 315 ICO에성공한회사와프로젝트들 316 ICO의성공여부, 어떻게검증할것인가? 316 건강한 ICO의필요성 x 차례

11 머리말 아두이노가연일암호화폐첫투기선을열풍이보인지도사회 10 관심사로년이흘렀다대두되고. 10년이면있는강산도지금, 암호화폐의변한다는말은기반너무기술인식상하블록겠지만체인에, 대한변화의진지한속도가고민이빠른필요한현대사회에서의상황이다. 과거에 10년이란다수의속담에서의사람은 10 인터넷을년보다더과학자들의긴시간임은호분명할기심만족을터인데도위한아두이노는장난으로치부했었고발매후지속해서, 디지털사진이그범위를인공적이며넓혀가고프린팅된있다. 아두이노는사진을사람들이 8비트 AVR 더좋아한다고마이크로컨트롤러를했었다. 마찬가지로사용한, 마이크로컨트롤러현재많은경제학자와보드이다사람들은. 스마트폰의여전히보급에암호화페와힘입어블록위체인을세를떨치고반짝유행으로있는 ARM치부하고의마이크로컨트롤러인있다. 과연그럴까 Cortex-M? 시리즈와비교해보면아두이노는그리훌륭한하드웨어라고는볼수없다. 그러나 100MHz 에달하는작동속도와 32비트처리능력을블록체인과가진이더리움 Cortex-M 마이크로컨트롤러가, 그것도아두이노와비슷한가격대에존재함에도블록체인은불구하고 16MHz 비즈니스에 8비트위키 (Wiki) 처리다능력의. 모든아두이노의사람이자유롭게위세가특정꺾이지항목에않는대한데에는내용을분명이유가함께정리있을하고것이다, 공유하고., 그내용을검증할수있는공간인위키처럼블록체인도불특정다수가자유롭게비즈니스거래내용을기록하고함께검증하는비즈니스백과사전이다. 이둘의차이점은아두이노가성공한이유는여러가지가있겠지만, 어른들을위한과학상자 또는 어른들을위위키는중앙에모든데이터가모이는데반해블록체인은모든거래데이터가참여자의컴퓨터한장난감 으로서의자리를차지하는데성공했다는점이크다고하겠다. 비전공자들이사용에분산되어있다는점이다. 할수있는쉬운마이크로컨트롤러보드로시작된아두이노는쉽다는강점을전면에내세움으로써아마블록체인이간단하게어떤나만의것인지작품을대충은만들어보고감이올것이다싶은사람들을. 좀더정교하게끌어들이고표현해, 수많은보자면참여자들에, 블록체인의해은여러재사용이거래를가능한블록이라는방대한작은소프트웨어구조체에라이브러리를저장한다. 그리고양산하도록과반이상의하였다사람들의. 이처럼검증에오픈소스의정신에해이상바탕을없음이둔밝혀진아두이노블록들을소프트웨어는시간순으로하드웨어의하나의체인약점을구조로보완하고도연결한다남는다. 연결된. 블록들은참여자들의컴퓨터에모두동일하게저장하는개인간분산장부 (ledger) 다. 이런구조를통해블쿼드콥터를만들어보고싶은가? 인터넷에서 아두이노쿼드콥터 를검색해보자. 수많은문서록체인은분산시스템이갖추어야할요건인신뢰성 (consistency), 가용성 (availability), 분리내구성들이쏟아져나온다. 방법을몰라만들지못하는것은아니다. 무엇을만들어야할지결정하지 (partitions tolerance) 을모두만족한다. 보통, 이들요건을만족하는분산시스템은거의없다. 못해망설이고있을따름이다. 마음을정하기만한다면아두이노는여느마이크로컨트롤러에비해신뢰할쉽게만한접근할분산수데이터있으며저장, 과학상자시스템인 를블록체인은조립하듯손쉽게초기재미있는가상화폐인나만의비트코인을 장난감 을위해만들어개발볼되었으나수있다, 하지만년비탈릭인터넷에서부테린에찾아볼의해수스마트있는수많은컨트랙트문서들이 (smart contract) 오히려와당탈중앙화된앱인댑 머리말 xi

12 (DApp, Decentralized App) 등의기술을통해다양한분야에적용할수있는컴퓨팅플랫폼인이더리움으로거듭난다. 따라서흔히들이더리움발표이후의블록체인을블록체인 2.0 이라부른다. 비트코인과이더리움은서로다른암호화폐이나블록체인기술을동일하게사용한다. 그러나비트코인이오직암호화폐인데반해, 이더리움은암호화폐뿐만아니라금융, 교통등다양한분야에적용가능한범용컴퓨팅플랫폼을지향하는점이서로다르다. 이더리움이혁신적인이유는? 이더리움은기존중앙집중식중계형플랫폼을개인간의분산된플랫폼으로바꿀수있다. 현재대부분의플랫폼기반서비스들은제공자와이용자들간의연결과거래를중계하며수수료를취하는모델이다. 가령, 우버는자동차를이용하려는사용자와제공자를연계하고, 에어비앤비는방이나집을빌려주려는제공자와빌리려는사용자를연결하면서수수료를취한다. 이는구글도네이버도모두마찬가지다. 블록체인은이러한중앙집중식중계형플랫폼모델을개인간의직거래모델로전환하고중간의수수료를없애는파괴적인혁신모델을구축할수있다. 또한, 이더리움은스마트컨트랙트 ( 계약 ) 라는혁신적인기능을제공한다. 이더리움개발자는거래세부내용을직접개발코드로프로그래밍하고이를블록내에포함할수있다. 이코드는제삼자의개입없이특정계약조건이만족되면자동으로실행한다. 가령, 특정사람간에어떤작업을완료했을경우자동으로암호화폐를통해대가가지급되도록만들수있으며, 이작업내용은블록체인사용자가모두투명하게검증하고관리하기때문에실생활에서간혹발생하는거래부정이나사기를막을수있다. 스마트컨트랙트등을활용해개발된다양한산업분야의분산애플리케이션이댑 (DApp) 이다. 댑은블록체인내에저장되고서버없이구동되기때문에아주유용하다. 이더리움의적용현황은? 블록체인은금융분야를비롯하여보험, 교통, 항공, 헬스케어, IoT, 에너지, 물류와배송, 음악, 제조, 보안, 소셜미디어그리고공공분야등거의모든주요산업분야에적용되어산업구조를바꾸고있다. 잠시금융과교통그리고공유경제등에대해생각해보자. 현재일반상점에서신용카드나직불카드결제시결제정보는 VAN사, 카드사, 은행등관련기관을거쳐처리된다. 이과정에서 VAN사는결제건당수수료를, 그리고카드사와은행은결제금액의일정비율을수수 xii 머리말

13 료로가져간다. 온라인도마찬가지다. 우리가 11번가같은커머스서비스를통해물건을구매하고결제할때 PG(Payment Gateway) 사를통해결제정보가전달되고, 카드사나은행등의관련기관이이를처리는과정에서수수료를가져간다. 이러한수수료는대개사업주가부담을지게되는데, 이로인해대부분의사업주는현금또는가능한한수수료가적은결제수단을선호하게된다. 이더리움을사용하면이러한복잡한과정을없애고구매자가직접판매자에게물건대금을지급할수있다. 이때의결제수단은암호화폐다. 물론, 암호화폐가변동성이있기때문에실제결제에쓸수없다. 라는의견도있으나, 실제결제시에적용되는암호화폐를법정화폐와일대일로연동하여안정적으로사용할수있다. 리플 (Ripple) 이나리얼코인 (Realcoin), 비트리저브 (BitReserve) 등이유사한수단을제공하고있다. 이렇듯, 블록체인은결제, 담보및신용대출, 송금, 융자, 환전등전금융분야에있어혁신을제공한다. 잠시자율주행차에대해서도생각해보자. 자율주행차가일반화되면이를관제하고모니터링하기위한새로운방법이필요하다. 새로운자율주행관제센터는실시간으로차량을모니터링하고, 문제발생시에는이를즉시온라인으로해결하기위한모든것을갖추어야한다. 특히, 긴급패치나업데이트가필요하고, 외부의침입으로부터차량을실시간으로보호해야한다. 자율주행차의운영시스템은비행기운영시스템처럼각기능은철저히고립되어야하고, 특정기능에문제가발생하면다른모듈로즉시대체되는등의안정성을높여야한다. 이들기능에모두우선하는기능으로킬스위치 (kill switch) 가필요하다. 이킬스위치는전체차량이나차량의일부기능의작동을즉시중단시켜긴급상황에서문제해결을가능하게해준다. 이러한새로운자율주행시대를어떻게관리해야할까? 블록체인기술을사용하여이를해결할수있다. 자동차지갑 (car wallet) 을통해유료도로, 주차장, 충전요금지급등을제공하고, 주행변조방지와변조불가능한블랙박스개발등에적용할뿐만아니라, 자동차의모든상태정보를보험사와공유하여다양한자동차보험을만들수도있다. 또한, 중앙에서공유거래를제어하는우버와는달리개인간에직접공유가가능한자동차공유서비스에도적용할수있다. 참고로, OAKEN 오픈소스프로젝트는테슬라의솔라시티를위해블록체인기반의충전소및고속도로결제솔루션을개발하고있다 (UAE GovHack - Tesla & Tollbooth on Blockchain(Official Submission)). 에어비엔비와우버로대표되는공유경제분야도마찬가지다. 사용하지않는자동차나주택, 가전제품같은물건등을필요로하는사람에게연결해주는공유경제플랫폼은 40% 에달하 머리말 xiii

14 는높은중계수수료를부과한다. 이중계수수료에는거래연결에대한대가뿐만아니라공급자에대한평가와거래보증등이모두포함된다. 그러나거래에대한문제발생시중앙의공유플랫폼이이에대한책임을지지않는다. 거래분쟁이발생하면거래당사자들이이를직접해결해야한다. 따라서심한경우공급자가정당한대가를받지못하거나, 사용자가대가를지급했음에도해당물건을사용하지못하는등의여러문제가발생하고있다. 블록체인기술을사용하면이러한문제를해결할수있다. 즉, 스마트컨트랙트를통해공급자와사용자가직접거래하고그대가를자동으로암호화폐를지급하게함으로써높은중계수수료를낮추거나없앨수있다. 또한, 거래분쟁이발생하면정해진규칙에따라자동으로문제를해결하고거래를완료시킬수도있다. 공급자와사용자간의거래정보를블록체인에저장하고이를활용하여투명한거래와공정한신뢰평가를할수있다. 결국, 블록체인과암호화폐를사용하여중앙집중형태의공유경제플랫폼을무력화하고탈중앙화된진정한공유경제플랫폼을만들수있다. 최근필자는블록체인기반의글로벌공유경제플랫폼을구축하기위한블루웨일재단 (Blue Whale Foundation) 을설립하고이를추진중에있다. 또한, 블록체인기반의주택공유플랫폼인비토큰 (BeeToken), 스톰 (Storm) 등많은블록체인기반공유경제플랫폼들이개발되고있다. 이더리움의미래는? 블록체인기술은다양한산업분야에퍼질것이다. 4차산업혁명시대를앞당길진정한주역이블록체인플랫폼이될것이다. 인공지능은실제데이터와알고리즘, 그리고컴퓨팅파워를가진소수의업체에의해주도되고있고, 이는더욱심화될것이다. 그러나블록체인은모두가동등한권리와권한을갖고, 투명한거래와프로세스를만들고, 이과정에서나온모든데이터를공유한다. 이더리움은현재가장앞서있고안정화되어있는블록체인플랫폼이다. 비록성능부족과컨트랙트실행시고비용등여러문제점이있는것도사실이나, 이를개선하기위해많은노력을기울이고있으므로머지않아이러한문제들은해결될것이다. 현재많은국가의정부와학교, 업계의리더급회사들이이더리움을사용하여여러서비스와시스템을개발하고있다. 항상새로운기술이태동하면발생하는문제이지만, 블록체인분야에서가장심각한당면문제는개발인력의절대부족이다. 이러한문제를해결하기위해서는전문개발서적과교육등이필요하다. 이를위해블록체인기술을이해하고이를바탕으로이더리움플랫폼을사용하여다양한서비스를개발하려는개발자들과학생, 그리고 IT 관련종 xiv 머리말

15 사자들을위해 코어이더리움 의집필과교육과정을개설하였다. 가능한블록체인개념설명을명확하게하고, 이를실제이더리움소스코드를통해이해할수있도록했다. 비록 Go 언어를모르더라도관련코드를통해개념을명확히이해할수있도록노력하였다. 또한, 이더리움클라이언트중가장활발하게개발되고있는, Go로개발된이더리움클라이언트인 geth의사용법과솔리디티언어를통한스마트컨트랙트개발방법, 그리고 web3.js 등을이용하여기존웹개발경험만으로도이더리움응용서비스를개발할수있도록작성하였다. 모쪼록이책이블록체인기술과이더리움플랫폼을정확히이해하고전문블록체인개발자로거듭나는계기가되었으면한다. 저자대표 머리말 xv

16 이책에대하여 아두이노가블록체인기술은첫선을암호화폐를보인지도넘어 10년이현실흘렀다세계의. 다양한 10년이면문제를강산도해결하기변한다는위한말은응용너무앱식상하개발에겠지만적용되는, 변화의등플랫폼으로서속도가빠른빠른현대속도로사회에서의발전하고 10년이란있다. 속담에서의이러한블록체인 10년보다플랫폼더긴중시간임은이더리움분명할은 2013년터인데도비탈릭아두이노는부테린 (Vitalik 발매 Buterin) 후지속해서에의해최초그범위를제안되면서넓혀가고시작되었고있다., 아두이노는 2015년 7월 830 비트일 AVR 최초버전이마이크로컨트롤러를출시된이후계속해서사용한마이크로컨트롤러기능이강화되고있다보드이다. 비록. 스마트폰의이더리움은보급에비트코인힘입어코어에위서세를출발하였지만떨치고있는, 암호화폐를 ARM의마이크로컨트롤러인지향하는비트코인과 Cortex-M 달리블록체인시리즈와기반의비교해범용보면서비스아두이노는개발을그리위한컴퓨팅훌륭한플랫폼을하드웨어라고는지향한다볼. 수특히없다, 이더리움은. 그러나 100MHz 스마트에컨트랙트와달하는작동가상속도와머신, 탈중앙화 32비트처리앱능력을 (Dapp) 등을가진통해 Cortex-M 프로그램마이크로컨트롤러가가능한블록체인, 플랫폼으로그것도아두이노와발전을거듭하고비슷한가격대에있다. 존재함에도불구하고 16MHz 에 8비트처리능력의아두이노의위세가꺾이지않는데에는분명이유가있이책은분산웹컴퓨팅등여러컴퓨팅플랫폼의변천과정을살펴보고, 특히 go-ethereum 을것이다. 소스분석을통해이더리움의상세한플랫폼아키텍처와주요기술을중심으로기술하였다. 아두이노가단순한개념성공한설명이이유는아닌실제여러암호화폐가지가있겠지만개발에참고할, 어른들을만한위한환경과과학상자유스케이스를 또는 어른들을통해실전위한활용장난감능력을 으로서의높일수자리를있으며, 차지하는블록체인과데성공했다는이더리움플랫폼에점이크다고대한아키텍처와하겠다. 비전공자들이기술이해및사용블할록체인의수있는기술쉬운발전마이크로컨트롤러방향까지다양한보드로시각으로시작된이더리움아두이노는생태계를쉽다는파악해강점을볼수전면에있다. 내세움으로써간단하게나만의작품을만들어보고싶은사람들을끌어들이고, 수많은참여자들에의해이책의재사용이구성가능한방대한소프트웨어라이브러리를양산하도록하였다. 이처럼오픈소스정신에이책은바탕을크게이론과둔아두이노프로그래밍소프트웨어는, 그리고하드웨어의블록체인과약점을이더리움보완하고도기술의미래에남는다대한. 전망으로구성되어있다. 쿼드콥터를만들어보고싶은가? 인터넷에서 아두이노쿼드콥터 를검색해보자. 수많은문서들이 1장과쏟아져 2장은이론나온다부분으로. 방법을, 몰라암호화폐와만들지블록체인의못하는것은기술적아니다배경과. 무엇을내용을만들어야설명하고할지결정하지이더리움못해플랫폼의망설이고상세분석을있을따름이다통해블록체인의. 마음을정하기만관련기술을한다면이해할아두이노는수있도록여느작성되었다마이크로컨트롤러에. 특히, 이더비해리움쉽게 Go 클라이언트의접근할수있으며구현, 소스를 과학상자상세 를분석하여조립하듯내부손쉽게패키지재미있는구성과나만의각패키지에서 장난감 을만들어사용한볼자료구조와수있다. 하지만핵심알고리즘을인터넷에서설명함으로써찾아볼수있는자칫수많은피상적인문서들이개념설명이오히려되는당것을최대한막고 xvi 이책에대하여

17 자노력하였다. 3장부터 5장까지는실제이더리움프로그래밍에관해자세히서술하였다. 3장에서는 Go 언어로개발된이더리움클라이언트인 Geth의사용법을자세히설명하였다. 이더리움네트워크에참여하여어카운트를생성하고, 암호화폐이더를송금하고, 마이닝을통해이더를획득하는등이더리움의다양한기능에관해설명한다. 특히, 개인용이더리움네트워크구성을통해독자적인플랫폼을구축하고이를운영하는방법도설명한다. 4장에서는스마트컨트랙트개발을위해필요한솔리디티언어를배우고이를기반으로스마트컨트랙트프로그램작성법을설명한다. 특히, 스스로컨트랙트작성을따라하면서배우고익힐수있도록예제중심으로프로그래밍방법을기술하였다. 5장에서는개발된스마트컨트랙트를활용하여탈중앙화된앱인댑 (DApp) 개발방법을설명하였는데, 이를통해이더리움네트워크를구축하고스마트컨트랙트와댑을개발해보며이더리움기반의전개발과정을이해할수있도록하였다. 마지막으로 6장에서는이더리움플랫폼의현문제점들과이를해결하기위해추진중인프로젝트들을정리하였고, 다양한연구기관들의자료와필자들의경험을바탕으로블록체인과이더리움기술의향후발전방향에관해기술하였다. 이책의대상독자이책은기존암호화폐와블록체인에대한일반적인내용을전달하는범용서가아니라, 공개형블록체인플랫폼의선두주자인이더리움플랫폼기반의기술과내부구조, 개발방법등을상세히설명한다. 따라서블록체인과특히이더리움의이해가필요한개발자및관련전공학생들과기획자들에게큰도움이될것이다. 이해를돕기위해그림을많이포함하였고, 실습중심의스마트컨트랙트프로그래밍을설명하고있어서스터디나학교수업에서의교재로활용하면유용할것이다. 이더리움스마트컨트랙트개발자가되고자하는분들은이책을통해블록체인과이더리움의기반기술을이해하고이를바탕으로스마트컨트랙트와댑등이더리움응용서비스를개발수있을것이다. 특히, 이더리움의내부구조와알고리즘을상세히설명했으며, 이를바탕으로이더리움응용서비스개발을넘어이더리움의기능개선이나새로운블록체인기술을개발하는데에도도움이될것이다. 또한, 블록체인이나암호화폐관련비즈니스와사업을기획하는분들이 ICO나블록체인기반 이책에대하여 xvii

18 신규사업을준비하는데필요한기술적인사항도얻을수있을것이다. 특히, 스마트컨트랙트의예제로독자자신의암호화폐를생성하고이를활용하는방법을예제로제공함으로써실질적인프로젝트나 ICO 추진등에많은도움이될것이다. 예제코드 이책에나오는모든소스코드는다음페이지에서다운로드할수있다. ( 출판사 ) 각소스코드는하나의파일로되어있으며, 파일이름에는각장번호와리스트번호가포함된다. 예를들어, 4장의있는소스코드는 4-7 Greeting.sol 파일에있다. 따라서실습에사용하는 IDE나코드편집기의종류와관계없이복사및붙여넣기를하면된다. 그러나가급적독자여러분이직접작성할것을권한다. 코드를입력하다보면자신도모르는사이에실력이향상되기때문이다. 예제코드표기법이책에는스마트컨트랙트와댑을더욱확실하게이해할수있고실제활용에도움을줄수있는예제코드가많이포함되어있다. 따라서알아보기쉽도록예제코드는별색박스를사용하여표기하였으며, 콘솔창에입력해야하는커맨드라인은 $ 를붙여표시하였다. ( 예 : $ geth consol) 독자 A/S 여러분이만족하는책이되었으면한다. 혹시오류를발견하거나문의사항이있으면저자 (jaehyunpark.kr@gmail.com) 나출판사 (readers.jpub@gmail.com) 로메일을보내주기바란다. 오탈자 이책의내용에오류가없도록최선의노력을했지만, 혹시오탈자가있을지도모르겠다. 그런경우는제이펍 ( 의이책소개페이지에있는정오표코너에서안내하도록하겠다. xviii 이책에대하여

19 베타리더후기 김용현 (Microsoft MVP) 이더리움등장이후이더리움네트워크를이용한각종 DApp 과 ICO들이하나의흐름이되어가고있습니다. 블록체인개발경험이많은저자들의노력으로지금까지나온솔리디티입문서중가장친근할뿐더러실제직면할수있는문제에대해따라하기형태의튜토리얼을제공하고있습니다. 이더리움네트워크를이용한프로그래밍을처음준비하고있다면가장추천하고싶습니다. 특히, 솔리디티실습부분은제가봤던책중에서가장좋은내용이었습니다. 백지부터에러를통해학습하는구성은참신선한접근법이었습니다. 노승헌 ( 라인플러스 ) 뜨거웠던암호화폐시장이차분해지면서이면에숨어있던암호화폐관련기술에대한관심이높아지고있습니다. 특히, 이더리움은비트코인과는다른노선으로기술을발전시키면서실질적으로사람들의생활에도움이될수있는방향으로진화하고있습니다. 이론적배경과실제코드를통해이더리움을공부하고자하는분들에게추천해드리고싶은책입니다. 변성윤 ( 레트리카 ) 최근에뜨거워진블록체인기술을공부하기에좋은입문서입니다. 블록체인기술중이더리움에집중한책으로, 솔리디티언어를몰라도실습을하며배우는데무리없게구성되어있습니다. 베타리딩을진행하는내내이책은많은분들의책장에꽂힐것같단생각을했습니다. 블록체인과이더리움관련기술을배우고싶은분들에게더할나위없는입문서인것같습니다. 베타리더후기 xix

20 양현림 ( 대구경북과학기술원 ) 이더리움시스템의기본개념부터응용사례까지설명해주고있어서블록체인기술을이해하는데많은도움이되었습니다. 블록체인을처음공부하고자하는사람들에게훌륭한가이드가될것같습니다. 다만, 책의도입부분에서블록체인시스템의전체적인개괄을조금더상세히설명하고세부적인내용으로전개해갔더라면하는아쉬움은있습니다. 이요셉 ( 지나가던 IT인 ) 개발자를위한블록체인입문서! 이더리움플랫폼에서스마트컨트랙트개발언어인솔리디티로직접코드를작성하며배울수있는책입니다. 뜬구름잡는블록체인설명에지친모든사람에게강력히추천합니다. 후반부로갈수록책의진가가발휘되네요. 이해를높여주는실습이곁들어져있어서블록체인관련해서는아마도가장주목받는책이될것같습니다. 한홍근 (ebrain) 이더리움과미스트를설명한후에그기반을설명하고있어서스마트컨트랙트에대해빠르게이해할수있습니다. 단순히코인을거래하는방법이나그와관련된잡기를설명하는것이아니라, 그근본기술을이해시키며하나씩실습하게합니다. 책후반부에서다루는응용예제를따라해보고활용해서독자가생각했던영역에도적용해본다면책내용을완전히이해할수있을겁니다. 책내용과구성모두만족한책이었습니다. 제이펍은책에대한애정과기술에대한열정이뜨거운베타리더들로하여금출간되는모든서적에사전검증을시행하고있습니다. xx 베타리더후기

21 Chapter 01 블록체인컴퓨팅 1.1 비트코인 아마일상에서없어서는안될것중하나가 돈 ( 錢, money) 일것이다. 돈은물건의가치를표현하는단위이자필요한물건과교환하기위한수단이다. 또한, 시공간의제약없이그가치가저장되고전달될수있어서부를저장하는수단이기도하다. 이러한돈은쉽게구하기어려운희소성이있어야하고, 똑같은모양과형상을하고있어야한다. 또한, 가벼워서이동자체가쉬어야하고, 쉽게변하거나손상되지않도록내구성이있어야한다. 그리고그가치를쉽게구별할수있어야한다. 돈은교환을쉽게하기위한매개수단이기때문에그가치는사회적합의와신뢰를통해인정되고유지된다. 돌로만든스톤머니에서암호화폐까지최초의인류에게돈은없었다. 원시공동체사회에서는모두함께수확하고나누는세상이었다. 남는것은물물교환방식으로직접필요한것들을가까운곳에있는사람들끼리서로교환했다. 이후농사를짓고가축을기르며점차먼거리에있는사람들과의물물교환이잦아지면서간편하게물건의가치를대신할수있는 돈 이라는것이생겨났다. 물론, 물물교환외에도부를축적하기위해서도필요하다. 초기의돈은조개껍데기나금, 은, 동등의실물로만들어졌다. 조개껍데기같은것들은오래보관하기도어렵고파손되기쉽기때문에돈으로사용하기어려웠다. 그래서금과은처럼희소성이있고, 쉽게파손되지않고, 보관과이동이쉬운것들로돈을만들어야모든사람이그가 1

22 치를인정하고신뢰할수있었다. 그림 1-1 세상에서가장오래된금화 리디아의사자 ( 출처 : 재미나게도돌로만들어진돈도있다. 오세아니아주근처미크로네시아의얍 (Yap) 이라는섬에는세상에서가장큰돈이있다. 이돈은돌로만들어진스톤머니이며, 레이스톤 (Rai Stone) 이라고한다. 가장큰돈이 4톤이넘는다고하는데, 뗏목으로실어날라서사용했고, 이동이어렵다보니소유자를돈에기록하고사용했다고한다. 부피가크다보니분실이나도둑맞을위험은없어보인다. 원석그대로가공하지않고쓰며크기가클수록값어치가높다. 그림 1-2 미크로네시아얍섬의스톤머니 2 Chapter 01 블록체인컴퓨팅

23 금이나은같은물질기반의돈이 1세대라면, 2세대는지폐와동전같은통화화폐다. 통화화폐는각나라의중앙은행이발행한다. 우리나라는한국은행이중앙은행이다. 그런데재미나게도미국의중앙은행인 FRB( 연방준비제도이사회, Federal Reserve Board) 는은행이아니다. FRB의 B 는 Bank가아니고 Board, 즉 이사회 를말한다. FRB는개인회사다. 개인회사이지만세계경제에가장큰영향을미치는곳이다. 개인회사인 FRB에의해달러가만들어진다. FRB는로스차일드, 록펠러, JP모간, 워버그가문처럼전통깊은금융가문들의소유다. 결국, 이금융가문들의결정에의해각연방은행들이달러를찍어낸다. 인터넷이활성화되면서도토리, 온라인고스톱이나포커, 롤플레잉게임의게임머니처럼특정커뮤니티에서사용되는온라인게임토큰또는가상화폐 ( 또는사이버머니 ) 와교통카드, 하이패스처럼다양한 IT 기술을사용하여기존화폐기능을보다편리하게활용하도록해주는일반전자화폐가생겨났다. 이러한전자화폐와가상화폐등도모두이를발행하는제3의기관이보증하고관리해야한다. 일반화폐와교환할수있고, 함부로사용자가전자화폐를증가시킬행위를할수없으며, 거래기록을모두보관하는등의관리가해당발행기관의역할이다. 새로운암호화폐, 비트코인의출현 2009년, 강력한수학적특성에기반을둔암호화폐가새로이등장했다. 위키피디아에따르면암호화폐의정의는다음과같다. 암호화폐는안전한거래와통화발행을조정하기위해암호학을사용하여교환의수단으로만들어진디지털자산이다. 현재가장널리알려진비트코인 (Bitcoin) 을비롯하여이더리움 (Ethereum) 의이더 (Ether), 라이트코인 (Litecoin), 리플 (Ripple), 네임코인 (Namecoin), 대시 (Dash), 모네로 (Monero) 등수많은암호화폐가존재한다. 혹자는이를 3세대화폐라고도부른다. 일반적으로전자화폐는암호화폐를포함하는좀더포괄적인범위의화폐개념이다. 암호화폐는전자화폐의일부인셈이다. 가령, 게임머니와도토리같은포인트는가상화폐이자전자화폐이지만, 암호화폐는아니다. 가상화폐가해당커뮤니티에서정한규칙에따라발행, 교환, 폐기되는것처럼암호화폐는암호경제학에의해서발행, 교환, 보상등의방식으로운영된다. 1983년에 UC 버클리의암호학자데이비드차움 (David Chaum) 이 RSA 암호화를사용하여디 1.1 비트코인 3

24 지캐시 (DigiCash) 라는기업을설립했으나 1999년에사업을정리했고, 1998년에웨이다이 (Wei Dai) 라는사람이익명이자분산화된전자화폐인 b-money에대한논문을발표했다 ( weidai.com/bmoney.txt). 논문이발표되고얼마지나지않아닉사보 (Nick Szabo) 라는컴퓨터공학자는비트코인의블록암호화및검증구조의근간이되는비트골드 (Bit Gold) 를만들었었다. 이러한노력을모아현실화한것이바로비트코인이다. 암호화폐를현실화한비트코인은사토시나카모토라는수수께끼의인물이 2008년 10월 31일에공개한논문 <Bitcoin: Peer-to-Peer Electronic Cash System( 을구현한것이다. 2008년 9월 15일, 리먼브러더스의파산으로글로벌금융위기가초래된바로그시점에논문을공개한것은현재달러중심의금융시스템에대한강력한항의가아니었겠는냐는생각을하게한다. 사토시는그의논문에서다음과같이말하고있다. 순수한 P2P 버전의전자화폐는은행같은금융기관을중간에거치지않고한대상이다른대상에게직접전달되는온라인지급을가능하게한다 (A purely Peer-to-Peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution). 비트코인은 2009년 1월 3일에최초로발행되었고, 누구든지자발적으로네트워크에참여하고채굴작업을통해비트코인발행에참여할수있다. 비트코인은화폐가갖추어야할공통적인특징을모두만족한다. 먼저, 내구성이높고, 2,100만개로발행량이미리정해져있어희소성이있으며, 공급량과시기가공개되어있다. 또한, 사기성거래가불가능하고, 쉽게작은단위로나누고다시합칠수있다. 더욱이보통의화폐와달리중앙통제식권력에의해조작되거나빼앗길염려가없으며, 어디서나거래할수있다. 내구성도뛰어나며, 모두에게민주적이며공평하다. 알트코인 Alternative Coin 은비트코인프로토콜을수정하여개발되었기때문에비트코인과는호환되지않는다. 따라서현재알트코인은비트코인을제외한암호화폐를지칭하는용어로사용되고있다. 대표적인알트코인으로는리플, 라이트코인, 대시, NEM, 이더리움클래식, 비트코인캐시, 모네로, Zcash, 디크리드등이있다. 이중몇가지알트코인에대해살펴보자. 먼저, 리플은 4 Chapter 01 블록체인컴퓨팅

25 XRP 코인이라는이름으로거래되는데, 글로벌정산네트워크에서정산을단순하게처리하기위해개발되었다. 현재글로벌결제서비스는사용자, 국내은행, 해외은행등여러기관을거쳐복잡하게처리된다. 각기관의정산과정을거칠때서로다른통화와시스템때문에시간과비용이많이들어가는데, 이런절차를줄이기위해개발된블록체인기반정산시스템이리플이며, 리플시스템을운영하기위해발행한암호화폐가 XRP 코인이다. 리플이현실세계의글로벌정산문제를해결하기위해개발되었다면, 라이트코인은비트코인의블록생성시간을단축시키기위해개발되었다. 현재비트코인의경우단일블록의생성시간은 10분이다. 그러나블록체인에연결된후최종완료까지는 6개의블록이블록체인에등록될때까지대기한후 7번째로등록되기때문에실제블록의생성시간은 1시간가량소요된다. 라이트코인은이문제를해결하기위해비트코인코어의프로토콜을수정하면서탄생했다. 이더리움클래식과비트코인캐시는블록체인기반암호화폐시스템이어떻게운영되는지를잘보여준다. 은이더리움의암호화폐인이더 (Ether) 를도난당했을때기술적으로이를어떻게해결할것인가에대한이견으로이더리움에서분리되어나왔다. 좀더자세히살펴보면다음과같다. 2016년에이더리움해킹사건이발생했다. 독일의 Slock.it은관리자의통제없이스마트컨트랙트를통해자동으로투자할수있는이더리움기반의크라우드펀딩시스템인 The DAO 를추진하였다. 이를위해 DAO 토큰을발행하고이를판매해투자자금을모집중이었다. 이과정에서다오는이더리움의스마트컨트랙트기술을이용해스피릿 (spilit) 이라는컨트랙트를개발했다. 스피릿컨트랙트는투자금을반환요청하면 DAO 토큰을이더로반환해준다. 그런데이과정에서즉시반환요청이처리되어금액이감소하는것이아니라일정시간이지난후에야반환요청이처리되는치명적인결함을갖고있었다 ( com/2016/06/18/analysis-of-the-dao-exploit/). 이결함을알아챈해커는투자반환요청후자신의잔고에서반환요청이처리되기전에반복적으로재진입해서반환요청을하는 reentrant attack 을하여다오가확보한전체자금중 3분의 1에해당하는 5,300만달러 ( 약 612억원 ) 를훔쳤다. 대다수의이더리움사용자는잃어버린암호화폐이더를다시찾고이문제를해결하기위해이더리움의코드변경을원했지만, 다른일부사람들은이더리움의블록체인자체의문제가아니라스마트컨트랙트의문제이기때문에코드변경을하지말아야한다고생각했다. 이때코드변경을원하지않는사람들이코드변경전의이더리움을갖고나와이더리움클래식을만들었고, 코드변경을한사람들이현재이더리움을운영중에있다. 1.1 비트코인 5

26 기존의비트코인블록체인에서하나의블록크기는 1MB다. 이블록크기를늘리면트랜잭션을확인 (confirm) 해주는속도를높이기때문에처리량을증가시키는효과를얻을수있고높은트랜잭션비용문제를해결할수있다. 이때문에비트코인커뮤니티에서는 2MB로의점진적인확장과 8MB 이상급진적인확장을하자는그룹간의의견이충돌했고, 투표로블록크기를 2MB로증가시키기로결정하였다. 이렇게해서기존비트코인과는다른프로토콜을갖는 가만들어졌다. 이처럼서로다른기술적인이견이나철학에따라암호화폐는분할될수있다. 이들외에모네로와 Zcash는익명성을강화한암호화폐다. 모네로는블록체인의트랜잭션을숨김으로써거래의익명성을강화하고, Zcash는영지식 (zero-knowledge) 이라는증명방식을사용하여거래당사자들이서로의신원을확인하지않고도화폐를교환할수있게해준다. 거래트랜잭션을블록체인에서숨기는모네로와달리 Zcash는연관된이용자들과거래된양처럼트랜잭션자체의세부사항만숨긴다. 이처럼암호화폐는다양한목적과용도를위해계속해서나타나고소멸되면서성장할것이다. 1.2 블록체인기술의탄생 블록체인기술의탄생암호화폐를구현하기위해서는여러문제를해결해야한다. 그중첫번째는악의적인참가자에의한위변조나거래부인같은문제가발생할수있다. 또한, 네트워크지연으로인해전송된정보상의불일치가발생할수있으며, 이로인해이중지급같은문제가발생할수도있다. 또한, 개인간거래시안정적으로 P2P 네트워크를유지하기위한방안과운영시스템이확보되어야한다. 잠시 1982년에레슬리램포트와쇼스탁, 피스등세명이발표한논문에서나온비잔티움장군의문제에대해생각해보자. 비잔티움제국에다섯명의장군이있었다. 이들은서로사이가좋지않아믿을수없는사이였다. 어느날황제가장군들에게비잔티움성을점령하라고명령을내렸고, 장군들은고생끝에비잔티움성을포위하는데성공하였다. 그런데비잔티움성에는 1,000여명의병사들이수비를하고있었다. 다섯명의장군은각기 300명의병사들을이끌고있었기에성을포위하고있는다섯장군이동시에공격해야만승리할수있었다. 그런데다섯명의장군이지리적으로떨어져있어연락병을통해서만연락할수있었고, 서로사이가좋 6 Chapter 01 블록체인컴퓨팅

27 지않다보니서로믿을수없는상황이었다. 만약장군 A가장군 B에게저녁 11시에기습공격을하자고전하고다시장군 B가장군 C에게전달했는데, 장군 C가배신을해서장군 D에게거짓시간을알려주고장군 D가다시이거짓정보를장군 E에게전달하는상황이발생했다고하자. 장군 D와 E가공격에함께참여하지못해결국에는비잔티움점령에실패할것이다. 과연어떻게해야서로신뢰할수없는장군들이정해진시간에함께공격할것인가? 이문제를풀려면어떤방법으로소통할지, 신뢰할만한장군들이몇명이필요한지결정하는것이필요하다. 위의문제를컴퓨터네트워크상황에맞춰생각해보자. 네트워크상에서서로신뢰할수없는컴퓨터들간에네트워크전송지연시간이발생하는상황에서 어떻게해당데이터에대해서로신뢰하고합의할수있는프로토콜을만들것인가 와동일한상황이다. 다음문제들은아주오래전부터분산시스템에서해결해야할중요한문제들이다. ➊ 악의적인참여자에의해데이터가위변조될수있다. ➋ 정보전달이지연되어불일치상태가되면서이중지급이되거나거래부인등여러문제가발생할수있다. ➌ 중앙의관리기구가없어도자율적으로네트워크가운영되면서성장해야한다. 네트워크기반의암호화폐를구현하기위해서는 를포함한, 앞서설명한여러문제점을해결해야한다. 비트코인은바로이러한문제점을해결하는안정적인암호화폐를만들기위해일련의거래 ( 트랜잭션 ) 정보를모아블록을만들고, 이블록을시간순으로연결한공유원장 (shared ledger) 기술인블록체인을고안하여거래시위변조가불가능하도록만들었다. 또한, 블록체인에신규블록들을연결할때는참가자들의거래에대한승인작업을반드시거쳐야한다. 이승인작업은거래기록에포함된해결하기어려운계산과제 ( 특정해시값을찾는것 ) 를가장빨리해결하고, 이결과를네트워크참가자들의과반수가승인함으로써완료된다. 이러한일련의계산을통한 Proof of Work 을비트코인마이닝 ( 채굴 ) 이라하며, 계산작업을가장빨리한사람은송금수수료와사례금으로비트코인을받는인센티브기반의운영시스템이다. 또한, 전자서명기술을사용하여이전소유자와본인을증명하기때문에거래부인이원천적으로불가능하도록만들었다. 1.2 블록체인기술의탄생 7

28 중앙집중원장과분산공유원장기존의비즈니스및거래시스템들은중앙에고성능 / 대용량시스템을구축하고모든거래와비즈니스관련정보를한곳에서공유및관리하는중앙집중원장을사용하고있다. 이방식은중앙집중화된시스템을관리하는기관의운영능력과정책에따른다. 가령, 수많은외부공격으로부터해당시스템을안전하게지켜내야하며, 동시에해당시스템을무정지로운영하기위해막대한비용을들여시스템및데이터의이중화등을해야한다. 또한, 관련시스템에대한합법적인모든접근도관리해야한다. 구축비용외에도많은운영비용이발생한다. 그림 1-3 중앙집중원장과분산공유원장 블록체인에서는비즈니스및거래데이터전부를해당서비스네트워크에참여한모두주체가동일하게복제하여공유하고관리하는분산공유원장을사용한다. 공유원장내에모든거래데이터는거래가발생한시간순서에따라순차적으로기록된다. 따라서중간에위변조를할경우해당시점이후의모든데이터를네트워크에연결되어있는모든참여주체의분산공유원장을위변조해야하기때문에실질적으로위변조가불가능하다. 또한, 각거래데이터는개인키로전자서명이되어있기그렇기때문에실제해당개인키 (private key) 를확보하지않는한위변조가불가능하다. 8 Chapter 01 블록체인컴퓨팅

29 1.3 블록체인 P2P 컴퓨팅 컴퓨팅플랫폼의발전과정 일반적으로컴퓨팅플랫폼은일련의소프트웨어프로그램을작동되게하는프레임워크를말한다. 보통, 컴퓨터아키텍처와운영시스템또는개발언어와런타임라이브러리등으로구성된다. 가령, 안드로이드플랫폼은안드로이드운영체제와안드로이드호환하드웨어, 그리고다양한앱을개발할수있는안드로이드프로그래밍언어, 구글스토어를통한배포와관리등을통해안드로이드기반의생태계를구축하고있다. 웹플랫폼또한마찬가지다. 웹플랫폼은웹브라우저와웹서버그리고자바스크립트와 HTML/CSS 같은웹개발언어와풍부한라이브러리를이용하여다양한웹애플리케이션을개발할수있다. 또한, 이렇게개발된웹애플리케이션과콘텐츠를웹의 HTTP 프로토콜을통해전달된다. 한마디로웹은컴퓨팅플랫폼이다. 다음은컴퓨팅플랫폼의발전과정을보여준다. 그림 1-4 컴퓨팅플랫폼의발전과정 1950년후반부터 1970 년후반까지는대형메인프레임이주요플랫폼이었다. 메인프레임은중앙의대형서버에터미널로연결한후모든데이터와뷰처리를중앙서버에서하고그결과를더미터미널에서보는처리방식이었다. 그후 1980년대개인용컴퓨터가일반화되면서모든데이터와결과화면처리를데스크톱애플리케이션이수행하는방식으로바뀌었다. 1990년들어서는네트워크를통해연결된클라이언트컴퓨터와서버컴퓨터가일정한역할을서로나눠서처리하는클라이언트 / 서버컴퓨팅방식으로전환되었다. 모든데이터처리와일부비즈니스로직은서버에서처리하고, 해당처리결과를받은클라이언트가필요에따라결과를저장하고 1.3 블록체인 P2P 컴퓨팅 9

30 그결과를화면에출력하는방식이다. 2000년대에들어웹 (World Wide Web) 플랫폼이확산되면서클라이언트 / 서버처리방식이경량웹처리방식으로발전하였다. 경량웹처리방식에서클라이언트는웹서버에 HTTP 프로토콜로요청하고그결과를 HTML로전달받은후, HTML을렌더링한결과화면을웹브라우저를통해사용자에게제공한다. 이때모든데이터와비즈니스로직은웹서버와이에연결되어있는 DBMS 에서처리한다. 실제대부분의처리가서버에서이루어지고, 클라이언트는결과 HTML을렌더링한결과만을제공하기때문에이방식을경량웹 (thin client) 처리방식이라한다. 이후웹기술이발전하면서경량웹처리방식이단일웹페이지애플리케이션 (SPA, Single Page Application) 방식으로발전하였다. 이방식은웹클라이언트에서자바스크립트 /HTML/CSS를사용하여서버로부터전체웹페이지를받아오지않고현재웹페이지를동적으로클라이언트에서재구성하여마치데스크톱용애플리케이션같은사용성을제공하는것이다. SPA를가능하게한기술은 Ajax(Asynchronous JavaScript and XML) 이다. Ajax는요청 (request) 에대한응답 (response) 이라는동기방식으로작동되는기존의웹작동방식을 XMLHttpRequest라는함수를이용하여비동기처리로가능하게한다. 이기술을사용하면서데스크톱용애플리케이션과동등한성능과경험을제공해준다는의미에서웹 2.0 이출현했고, 웹기반의서비스가급속히확산되었다. 2010년에들어서면서웹플랫폼과더불어가상화기술의발전으로스토리지와서버컴퓨팅, 네트워크, 그리고운영체제에이르기까지모든자원을논리적으로구분하여추상화함으로써하나의인프라를여러서비스가공유할수있고, 사용한만큼비용을지급하는과금방식의클라우드컴퓨팅방식이크게확산되었다. 클라우드컴퓨팅은기존의라이선스방식으로판매되던소프트웨어를사용한만큼지급 (pay as you go) 하는과금방식으로전환시켰다는데비즈니스적으로큰의미가있다. 그리고더이상인프라를직접구축하고운영하는데막대한비용을들이지않아도손쉽게서비스를개발하고운영할수있는인프라를제공하는데의의가있다. 현재비트코인의급속한성장과더불어주목받기시작한블록체인컴퓨팅은이더리움을통해컴퓨팅플랫폼으로거듭나기시작했다. 이더리움은실행가능한프로그램인스마트컨트랙트 10 Chapter 01 블록체인컴퓨팅

31 를다양한개발언어로개발한후, P2P 네트워크를통해블록체인에배포하고이를이더리움가상머신을통해실행해준다. 또한, 배포된스마트컨트랙트를기존자바스크립트와 HTML/ CSS와같은웹개발언어를이용하여다양한분산앱서비스를개발하고배포할수있다. 혹자는기존의중앙집중화된웹을탈중앙화된웹서비스로전환한다고하여웹 3.0 이라고부르기도한다 블록체인 P2P 컴퓨팅 P2P 컴퓨팅 P2P(Peer-to-Peer) 컴퓨팅은네트워크에참여한모든컴퓨터가동일한역할과기능을수행하는컴퓨팅처리방식을말한다 ( 일반적으로 P2P 네트워크상의컴퓨터를노드또는피어등으로부르는데, 이는모두같은의미다 ). 동일한역할과기능을수행한다는말은해당컴퓨터가클라이언트인동시에서버이기도하다는뜻이다. 현재에도다양한 P2P 컴퓨팅기반서비스들이존재하고있다. 냅스터 (Napster), 그누텔라 (Gnutella), 프리넷 (Freenet), 카자아 (KaZaA) 와같은 P2P 파일공유서비스를비롯하여세티앳홈 (SETI@Home), 폴딩앳홈 (Folding@Home), 디스트리뷰티드닷넷 (distributed.net), 월드와이드컴퓨터 (World-Wide Computer) 와같은 P2P 프로세스공유서비스, 그리고비트토렌트의블립 (Bleep) 같은 P2P 메시징서비스등다양한 P2P 컴퓨팅기반서비스가존재한다. 이들 P2P 서비스는크게컴퓨팅프로세스공유, 파일공유, 메시지공유로나눌수있는데, 공교롭게도이더리움플랫폼의경우에도이와유사하다. 이더리움의스마트컨트랙트는컴퓨팅프로세스공유에해당되며, 스웜 (Swarm) 은파일공유, 휘스퍼 (Whisper) 는메시지공유에해당한다. 결국, 이더리움플랫폼은 P2P 기반에컴퓨팅프로세스, 파일, 메시지공유기능을활용하여다양한응용서비스의개발을지원하는플랫폼으로발전하고있다. P2P 네트워크연결방식 네트워크상에서노드간에직접연결하는 P2P 방식의경우에도다양한네트워크연결방식이 존재한다. 다음은다양한 P2P 네트워크연결방식들이다. 1.3 블록체인 P2P 컴퓨팅 11

32 그림 1-5 P2P 네트워크연결방식 이더리움은완전분산형연결방식을사용한다. 이더리움이완전분산형토폴로지방법을사용하는이유는참여한모든노드가동등한권한과권리를갖고이더리움네트워크에참여하는것을기본철학으로갖기때문이다. 완전분산형인이더리움네트워크는다음과같은장점이있다. 네트워크에누구나참여할수있기때문에확장성이좋다. 노드들이모두서로연결되어있기때문에일부노드에문제가생겨도안전하다. 관리및감독기능이별도로없기때문에책임질것또한없다. 그러나장점외에아래의단점들도존재한다. 동등한권한의노드들로구성되기때문에관리가어렵다. 연결된노드가안전한지검증하기어렵기때문에신뢰성이떨어진다. 노드마다컴퓨팅파워, 네트워크속도등이다르기때문에전체성능에영향을미친다. 이더리움은자체 P2P 네트워크프레임워크인 DevP2P를구현하면서신뢰성있는노드를구별해내고이들노드를찾아연결하면서전체네트워크를안정화하기위한노력을하고있다 절에서이더리움 P2P 프레임워크에대해자세히살펴볼것이다. 참고로, 리눅스재단에서개발하고있는블록체인플랫폼인하이퍼레저패블릭은하이브리드 12 Chapter 01 블록체인컴퓨팅

33 Chapter 02 이더리움플랫폼의작동원리 2.1 이더리움플랫폼살펴보기 컴퓨팅분야에서플랫폼은일련의소프트웨어프로그램을작동되게하는프레임워크를말한다. 안드로이드플랫폼은안드로이드운영체제와개발언어그리고일련의런타임라이브러리로구성되며, 안드로이드언어로개발된모든애플리케이션이안드로이드플랫폼상에서작동한다. 또한, 구글플레이를통해쉽게배포되고관리된다. 이더리움은단순한암호화폐가아니라컴퓨팅플랫폼이다. 블록체인내부의이더리움가상머신운영체제와스마트컨트랙트개발언어, 이를작동하고관리하기위한다양한서비스를제공한다 이더리움작동과정 이더리움플랫폼은비트코인처럼블록체인기술기반하에이더 (Ether) 같은다양한암호화폐를생성하고운용할수있도록해준다. 이뿐만아니라이더리움은네트워크상에서서로신뢰할수없는대상간에서로합의한계약을준수하도록강제하는스마트컨트랙트를지원함으로써비트코인같은다른암호화폐시스템과달리분산된개발플랫폼을목표로한다. 이더리움커뮤니티는다음과같이이더리움을정의하고있다. 이더리움은정확히프로그래밍한대로작동하는스마트컨트랙트를작동시키는분산된플랫폼이다. 25

34 먼저, 이더리움플랫폼이어떻게작동하는지를큰틀에서살펴보자. 다음의그림은이더리움플랫폼이어떻게작동하고운영되는지를설명하고있다. 그림 2-1 이더리움플랫폼의작동과정 이더리움지갑설치와사용일반사용자는암호화폐이더를사용하기위해미스트 (Mist) 나이더리움월릿 (Ethereum Wallet) 을설치한다 (➊). 미스트나이더리움월릿은내부에이더리움클라이언트를내장하고있어서작동되면자동으로이더리움네트워크에연결된다. 미스트나이더리움월릿을설치했다면다음으로사용자어카운트를생성할차례다. 어카운트를생성할때사용자는어카운트이름을입력하지않는다. 대신, 해당어카운트에대한암호문구만입력하면자동으로생성된다. 어카운트가생성된후해당암호는절대변경될수없으며, 외부에유출되지않도록잘기억하고보관해야한다. 암호를분실하거나유출되면암호화폐를다시찾을수없다. 일단, 최초어카운트가만들어지면해당어카운트가메인어카운트 (main account) 가된다. 메인어카운트를이더베이스 (etherbase) 라고도하는데, 그이유는마이닝등의작업대가를이더로지급받을때기본어카운트로사용되기때문이다. 어카운트생성과정에어떠한개인정보도필요로하지않으며, 복수로어카운트를생성할수도있다. 어카운트주소는가령, 0x06 26 Chapter 02 이더리움플랫폼의작동원리

35 4C998923e7170D698dB010ca9F53479fff6BF6 라는형태처럼암호화된 16진수값이며, 이어카운트주소를통해이더 (Ether, ETH) 를주고받을수있다. 보다자세한설치와사용법은 절에서, 어카운트는 절에서자세히설명하겠다. 월릿과어카운트, 그리고어카운트주소를확보했다면이제이더를확보할차례다. 사용자입장에서가장손쉽게이더를획득하는방법은빗썸이나업비트처럼이더를거래하는거래소에서이더를구매하거나 (➋), 다른사용자에게이더를송금받는것이다 (➌). 물론, 이더리움채굴자가되어마이닝작업을통해이더를확보할수도있으나, 이를위해서는많은장비투자가필요하기때문에일반사용자입장에서이더를얻을수있는적합한방법은아니다. 또한, 사업주는상품이나서비스판매후이더로결제하고이를사용자로부터획득할수있다 (➍, ➎). 사업주도미리이더리움월릿과사용자어카운트를생성해두어야결제대가로이더를전송받을수있다. 모든거래기록의공유및블록체인구성사용자간의송금이나물건구매후이더를지급하는것은내부적으로사용자어카운트간의이더금액을이동시키는것이다. 이더금액의이동은특정시점에특정사용자의어카운트상태를다른상태로전이시키는셈이다. 이러한일련의상태변화 ( 전이 ) 를일으키는모든활동 (➋, ➌, ➍, ➎) 을트랜잭션 (transaction) 이라부른다. 이트랜잭션들이모여하나의블록이만들어지고, 이블록이시간순으로연결되면서일련의블록체인이된다. 이과정에대해서는 2.3 절에서자세히살펴보겠다. 이과정에서중요한점이발생한다. 기존의은행등에서사용하는중앙집중원장에서는중앙의은행이각거래시발생하는트랜잭션의이상유무를확인하고보장해준다. 그러나이더리움의블록체인은중앙의인증기관없이네트워크로직접연결된컴퓨터간에공유되기때문에정보도달에시차가발생할수있고, 이로인해정보지연이나미도달사태등의문제가발생할수있다. 이럴경우, 이중송수신에따른중복처리나오작동이발생할수있다. 이러한문제를해결하기위해서는해당정보가정확하고문제가없는지를확인하기위한방법이필요하다. 이방법이바로합의 ( 동의 ) 알고리즘이다. 이더리움에서사용하는합의알고리즘은 작업증명 (PoW, Proof of Work) 알고리즘을사용한다. PoW 합의알고리즘을실제수행하는사람이바로채굴자 ( 또는마이너 ) 다. 채굴자는각트랜잭션과이들이모여있는블록에정의된난이도보다 2.1 이더리움플랫폼살펴보기 27

36 적은수의해시값 (hash value) 을찾는컴퓨터해시연산을한후, 해당값을찾으면이를네트워크상에연결되어있는모든참여자노드에게전파하여이를알린다. 여러채굴자중가장빠르게이값을찾은채굴자가블록당 3이더 (ETH) 와블록내에포함되어있는트랜잭션들의처리비용을함께획득한다. PoW를통한채굴에성공하기위해서는높은컴퓨팅해시연산파워가필요하기때문에막대한장비투자와전기사용, 그리고대형채굴업자에의한영향도집중등여러문제점이많다. 따라서이를해결하기위해 지분증명 (PoS, Proof of Stake) 으로합의방식을변경중에있다. 마이닝과정에대한내용은 절에서자세히다룰것이다. 다양한응용앱개발개발자는오픈소스방식으로개발, 운영되는이더리움개발커뮤니티에참여할수있다 (➐). 소스코드공유및컨트롤서비스인깃허브 ( 에접속후이더리움오픈소스를다운로드하여해당소스코드의오류를수정하거나신규기능을추가할수있다. 또한, 이더리움플랫폼개선제안인 EIP Ethereum Improvement Proposal 를커뮤니티에제출하여새로운기능과기술을추가할수도있다. 참고로, 스위스에위치한이더리움재단이이더리움의모든개발과정을운영한다. 또한, 이더리움의스마트컨트랙트를이용하여다양한응용서비스를개발할수도있다 (➑). 스 마트컨트랙트를이용해서개발한일련의서비스를탈중앙화앱인 DApp(Decentralized App, 댑 ) 이라고한다. DApp 은기존의자바스크립트나 HTML, CSS 등을사용하여스마트컨트랙트를조작함으로써다양한서비스를개발할수있다. 이더리움은솔리디티같은상위스마트컨트랙트개발언어로개발된컨트랙트프로그램을바이트코드로컴파일한후이를블록체인에배포하고저장한다. 이렇게배포된스마트컨트랙트의바이트코드는일련의검증과정을통해이상이없을경우이더리움가상머신 (EVM, Ethereum Virtual Machine) 에서실행가능한코드 (Op코드) 로변환되어실행된다. 사용자가스마트컨트랙트를이용하기위해서는가스 (Gas) 라는내부운용토큰을사용대가로지급해야한다. DApp 은플랫폼으로서이더리움의목표를실현시켜주는가장중요한개념이자비트코인과같은다른암호화폐와이더리움을차별화하는중요한요소다. 이부분에대해서는 절에서좀더상세히다룬다. 지금까지개괄적으로이더리움의작동과정에대해살펴보았다. 이제부터본격적으로보다상세한내용을살펴보자. 28 Chapter 02 이더리움플랫폼의작동원리

37 2.1.2 미스트로이더리움이해하기미스트설치 다음의사이트에서최신버전의미스트 (Mist) 설치프로그램을다운로드하자. com/ethereum/mist/releases 설치가능한목록중가장최신버전의파일중자신의운영체제에맞는버전을다운로드한다. 최신파일목록에이더리움월릿 (Ethereum Wallet) 과미스트 (Mist) 가함께나열되어있는데, 미스트는표준월릿이자 DApp 서비스의구동이가능한 DApp 브라우저다. 미스트와이더리움월릿은동일한프로그램코드로작성되었다. 차이점은미스트는이더리움월릿을포함한브라우저이고, 이더리움월릿은미스트로구현된탈중앙화앱 (Decentralized App) 인 DApp 이라는점이다. 현재기준 ( 버전 0.9.3) 으로어떤것을설치하더라도같은기능을제공하고있다. 미스트로실제이더리움이어떻게작동되는지알아보도록하자. 이절에서는맥 (Mac) 용미스트버전을설치하여사용할것이다. 버전은 Mist-macosx dmg를사용한다. 그림 2-2 미스트설치파일 설치파일을적당한디렉터리에다운로드한후실행한다. 이더리움클라이언트인 Geth(Goethereum, 게스 ) 는따로다운로드할필요없이미스트에포함되어있으며, 미스트가구동되면서 Geth 프로그램을백그라운드로실행하여이더리움네트워크에연결한다. 2.1 이더리움플랫폼살펴보기 29

38 그림 2-3 최초미스트실행화면. Geth 가자동으로실행되어이더리움메인네트워크에연결된다. 이더리움메인네트워크에정상적으로접속되면피어 (peer) 노드를자동으로찾아이더리움블록데이터를다운로드한다. 최초설치시에블록동기화를해야하는데, 피어의상태나네트워크상황에따라최소수시간에서최대며칠까지싱크시간이걸릴수도있다. 만약이전에이더리움클라이언트 Geth를다운로드하여블록을싱크해두었다면별도의싱크작업없이바로시작된다 절에서 P2P 네트워크상에서피어노드를찾고연결하는과정에대해자세히살펴볼것이다. 그림 2-4 최초미스트에서이더리움메인네트워크의블록체인데이터를동기화한다. 30 Chapter 02 이더리움플랫폼의작동원리

39 Chapter 03 이더리움실습 3.1 이더리움시작 이더리움은다양한언어버전의클라이언트를지원한다. 현재 Go, C++, 파이썬, 자바버전의클라이언트를지원중이며, 이중에서 Go 언어로개발한 Geth(Go ethereum) 가가장활발히업데이트되고있다. 이장에서는 Geth를직접설치하여이더리움플랫폼의활용법을살펴볼것이다 Geth 설치 이더리움프로그래밍환경셋업 Geth 이더리움플랫폼을설치하고작동시키기위해서는다음 3개의오픈소스도구와언어가필요하다. 이책에서는 Mac OS X을기본운영체제로하고설명한다. Mac OS X용패키지관리자인 Brew Go-Ethereum 설치용 Go 컴파일러 Geth 설치프로그램 1 Brew 설치를위해다음의명령어를 OS X 터미널창에입력한다. /usr/bin/ruby -e "$(curl -fssl install/master/install)" 141

40 2 Go 언어공식웹사이트에가서 Mac OS X 용패키지를다운로드하여설치한다. PKG 형태이기때문에설치과정은일반맥용애플리케이션의설치과정과동일하다. 다운 로드후설치프로그램을작동시키면자동으로설치된다. 그림 3-1 Go 설치화면 설치를모두완료한후에 Go 실행환경을설정한다. 다른변경없이기본환경으로 Go 를 설치했다면다음의기본위치에 Go 가설치된다. /usr/local/go ( 윈도우는 c:\go) 만일기본위치에설치하지않았다면 GOROOT 환경변수에해당위치를설정해야한다. 다음그림을보면 Go 컴파일러가잘설치되어작동함을확인할수있다. 142 Chapter 03 이더리움실습

41 그림 3-2 Go 설치완료후환경 이더리움설치와운영, 컨트랙트개발을위해반드시 Go 언어를알아야하는것은아니다. 그러나이더리움플랫폼의상세구조를이해하기위해서는플랫폼소스를살펴볼필요가있다. 3 다음으로 Geth를설치한다. 최신버전의소스코드를다운로드한다. Geth : 혹은 git에익숙한사용자는다음과같이 git을사용하여해당소스코드를복제하는것도좋은방법이다. 다운로드하여압축해제한후해당디렉터리에서다음명령을실행하여소스코드를컴파일한다. $ git clone $ make geth 그림 3-3 geth 컴파일 최종적으로 geth 파일은아래경로에만들어진다. geth : ~/go/src/github.com/ethereum/go-ethereum/build/bin/geth 위의컴파일명령어는 geth 실행파일만을생성한다. 만약 evm 등전체실행파일을모두생성하려면다음과같이입력한다. 3.1 이더리움시작 143

42 $ make all Go 는컴파일후외부라이브러리참조없는독립실행파일을생성한다. 따라서생성된 geth 실행파일은해당파일단독으로작동된다. 컴파일후 build/bin/ 디렉터리에 geth 라는독립 실행파일이생성된다. 다음과같이 geth 파일을실행하면작동함을확인할수있다. 그림 3-4 geth 실행화면 Geth 에서사용하는데이터디렉터리구조 Geth 실행파일이외에 Geth 에서사용하는데이터는맥운영체제의경우 ~/Library/ Ethereum 디렉터리아래에기본으로저장된다. ( 리눅스는 ~/Ethereum, 윈도우는 C:\) ~/Library/Ethereum ---- geth -- chaindata -- ethash L -- nodes L ---- keystore 그림 3-5 Geth 에서사용하는데이터디렉터리구조 build/bin: Geth 실행파일이저장된다. chaindata: 블록체인데이터가저장된다. 별도옵션없이콘솔모드로작동시이더리움메인네트워크에풀노드동기화모드로연결후블록체인데이터를 chaindata 아래에저장한다. ethash: DAG(Dagger Hashimoto) 파일이저장된다. 마이너를구동시키면작업증명 (Proof of Work) 을위한해시문제를계산하기위해서최대 2GB 사이즈의 DAG 파일을만들어메모리를미리할당한다. keystore: 어카운트의개인키를저장한다. 144 Chapter 03 이더리움실습

43 TIP Geth $ sudo apt-get install software-properties-common $ sudo add-apt-repository -y ppa:ethereum/ethereum $ sudo apt-get update $ sudo apt-get install ethereum Geth 구동 Geth는이더리움전체기능을사용할수있는핵심애플리케이션으로커맨드라인명령어인 CLI(Command Line Interface) 를통해대화형태로쉽게명령을주고받을수있다. Geth : geth [global options] command [--command options] [arguments...] 전체 Geth 커맨드라인옵션 (Geth Command Line Option) 은아래링크를참고하거나 geth --help 를통해확인할수있다. 간단히 geth console 명령을이용해서콘솔모드로진입한다. geth가시작되면프롬프트 (>) 가뜬다. 프롬프트에서 exit를입력하고엔터키를누르면콘솔을빠져나간다. $ geth console > exit 콘솔모드로실행하면에러메시지들이콘솔창에출력되기때문에대화형명령어작업을수행하기가불편하다. 따라서표준에러를 /dev/null 디바이스에연결된파일로보내화면에는에러를출력하지않도록한다. $ geth console 2 >> /dev/null > exit 또한, 이미작동중인 geth 노드의콘솔에 attach 커맨드를사용하여원격으로연결한후콘솔 모드를이용할수있다. 3.1 이더리움시작 145

44 $ geth attach [ipc:/some/custom/path rpc: > exit 비대화형모드로특정 js 파일을실행할수도있다. 다음은 demo.js 파일을실행하고표준에러 는 tmp.log 에저장한다. $ geth js demo.js 2 >> tmp.log > exit 이제필요한커맨드라인옵션들을주고 Geth 를구동시켜보자. 주로사용하는명령은다음과 같다. $ geth --rpc --rpcport "8485" --rpccorsdomain "*" --datadir "private-data" --port "30303" --nodiscover --rpcapi "db,eth,net,web3" --networkid 15 console > exit --rpc RPC 인터페이스를가능하게함 --rpcport "8485" RPC 포트 ( 디폴트 : 8485) --rpccorsdomain "*" 접속가능한 RPC 클라이언트지정. * 보다 URL을지정하는게보안상 좋음 --datadir 커스텀데이터디렉터리지정 --port "30303" 네트워크리스닝포트 (Listening Port) 지정 ( 디폴트 : 30303) --nodiscover 같은제네시스블록과네트워크 ID에있는블록에대한연결방지 --rpcapi "db,eth,net,web3" RPC에의해서접근을허락할 API --networkid 15 1=Frontier, 2=Morden (disused), 3=Ropsten, 4=Rinkeby (default: 1) console 출력을콘솔로함 Geth 커맨드라인실습 Geth 클라이언트콘솔에서자바스크립트를통해대화형으로이더리움과통신할수있다. 이절에서는 Geth 클라이언트콘솔에서 Jay가 Sujie에게이더를송금하는것을직접실행해보자. 별도의옵션없이 Geth를실행할경우, 메인네트워크에서접속한후블록체인의모든데이터를동기화하는풀싱크모드로수행되기때문에 --dev 옵션을주어개발자네트워크에접속한 146 Chapter 03 이더리움실습

45 Chapter 04 스마트컨트랙트프로그래밍 4.1 스마트컨트랙트에대한이해 우리는일상생활에서많은계약을맺으면서살아간다. 회사에입사할때는근로계약서를작성하고, 집을임대할때는임대계약서를작성하며, 집을사고팔때는매매계약서를작성한다. 계약불이행으로이해당사자간에발생할수있는불이익이큰경우에는계약서를명시적으로작성하는경우가많다. 편의점에서과자한봉지를사거나커피숍에서커피한잔을마시는것처럼계약불이행시에손해가크게발생하지않는경우에는묵시적으로계약을맺을수도있다. 명시적인계약은종이에이행시기, 이행조건, 위반시에발생할수있는벌칙등을계약서로작성하고, 계약당사자간에사인을하고계약서를나눠갖거나공증을함으로써계약이정의된다. 계약당사자들은계약서에명시된조건을실행하고상대방이계약서에명시된행동을하도록요구한다. 계약에명시된행위를실행하지않거나계약에분쟁이발생하면법적으로문제를해결한다. 전통적인계약에서계약당사자간에분쟁이발생하여법적으로문제를해결하기위해서는변호사가개입하는경우가많고, 분쟁해결에도많은시간과비용이발생한다. 1996년에닉사보 (Nick Szabo) 는 Smart Contracts: Building Blocks for Digital Free Markets 이라는논문에서스마트컨트랙트를처음으로제안했다. 이논문에서사보는전자적인커머스프로토콜을이용해서인터넷에서서로모르는사람들끼리계약 (Contract Law) 을만들고계약과관련된비즈니스프랙티스 (Business Practice) 를만드는방법을기술했고, 이방법을 Smart Contract 라고불렀다. 161

46 스마트컨트랙트는프로그램의한가지형태이며, 디지털형식으로정의된계약들의집합이다. 스마트컨트랙트에는계약참가자들이정의된약속들을수행하는프로토콜을포함한다. 스마트컨트랙트는사람의개입없이프로그램으로명시된내용에따라계약을집행하기때문에계약당사자간에분쟁이발생하기어렵다. 전통적인계약에서는계약이행과관련된상황이변하는경우계약당사자들간에합의를통해서계약을변경할수있지만, 스마트컨트랙트는계약당시결정된프로그램에의해계약이자동으로집행되기때문에중간에계약을변경하기어렵다. 스마트컨트랙트와전통적인계약을비교하면다음과같은차이점이있다. 표 4-1 스마트컨트랙트와전통적인계약 계약명세 종이 프로그램코드 계약실행 계약당사자들이실행 코드에의해실행됨 분쟁발생시 법적으로해결 코드에의해실행되기때문에분쟁이발생할수없음 관련기록 계약당사자들이감사용서류보관 코드실행과관련된기록들이전자적으로기록 이장에서는미스트 (Mist) 와리믹스 (Remix) 를이용해서솔리디티언어로스마트컨트랙트를개발하는방법을설명한다 이더리움가상머신 EVM Ethereum Virtual Machine 은이더리움에서스마트컨트랙트를실행하기위한실행환경을제공한다. 스마트컨트랙트는 EVM에서실행가능한바이트코드로컴파일되고블록체인에저장된다. 스마트컨트랙트의함수를호출하는트랜잭션이발생하면 EVM은컴파일된바이트코드를실행한다. EVM의바이트코드명령어는 160비트 (20바이트) 주소를사용한다. EVM의구조 EVM의구조는그림 4-1과같이프로그램카운터 (Program Counter), 프로그램영역, 스택 (Stack), 콜데이터 (Call Data), 로그 (Log), 스토리지 (Storage), 메모리 (Memory) 영역으로구성된다. 프로그램영역에는 EVM이실행할스마트컨트랙트의 EVM 명령어목록을보관하기위해사용한다. 프로그램카운터는다음차례에실행할 EVM 명령어의위치를가리킨다. 162 Chapter 04 스마트컨트랙트프로그래밍

47 Program Counter Stack Storage PUSH1 0 CALLDATALOAD SLOAD NOT PUSH1 9 JUMPI STOP JUMPDEST PUSH1 32 CALLDATALOAD PUSH1 0 CALLDATALOAD SSTORE Memory Log Call Data 그림 4-1 EVM 의실행구조 Stack 은연산에필요한데이터를저장하기위한공간이다. 스택에는 256비트크기로값들이저장된다. 스택의최대크기는 1024개로제한되어있다. 따라서스마트컨트랙트에서 1024개를초과한스택을사용하면예외가발생되어컨트랙트실행이종료된다. 다른언어의실행환경에는함수호출을위한콜스택이별도로존재하지만, EVM 실행환경은내부함수를호출할때는 EVM이제공하는스택만을사용한다. 내부함수호출도마치일반적인연산처럼 EVM 스택을사용하도록설계되었다. EVM은다른컨트랙트의메소드를호출할때메시지콜을위한스택을사용하는데, 메시지콜스택의크기도 1024로제한되어있어서메시지콜을 1024회를초과하여호출하면오류가발생한다. Call Data 은이더리움에트랜잭션을요청했을때전송되는데이터들이기록되는저장공간이고, Log 는스마트컨트랙트가실행될때부가적인정보를기록하기위한공간이다. 스마트컨트랙트는로그영역에데이터를기록할수있지만, 로그영역에기록된데이터를읽을수는없다. 로그영역의데이터를읽으려면 web3.js를이용해서 DApp 을개발해야한다. web3.js를이용하면로그영역의데이터를조회하거나검색할수있다. Storage 는블록체인에영구적으로기록하기위한저장공간이다. 스토리지의구조는키 / 값을매핑하기위한구조이며, 키와값은모두 256비트크기를사용한다. 이더리움의모든어카운트는별도의스토리지를독자적으로보유하고있으며, 다른어카운트의스토리지에서 4.1 스마트컨트랙트에대한이해 163

48 데이터를읽어오거나다른어카운트의스토리지에데이터를기록할수없도록설계되었다. Memory 는함수를호출하거나메모리연산을수행할때임시로사용되는영역이다. 이더리움에서메시지호출이발생할때마다깨끗하게초기화된메모리영역이컨트랙트에제공되고, 바이트단위로메모리주소에접근할수있다. 데이터를읽을때는 256비트단위로읽도록제한되어있지만, 데이터를기록할때는 8비트단위로도기록할수있고 256비트단위로도기록할수있다. 이전에사용하지않은메모리공간에접근하면메모리는 256비트단위로확장된다. 튜링-컴플리트머신 EVM은튜링- 컴플리트 (turing-complete) 머신이다. 우리가현재사용하고있는컴퓨터들도튜링-컴플리트하다. 다시말해, 일반컴퓨터에서계산할수있는모든일을 EVM에서도계산할수있다는의미다. 그런데만약누군가가무한루프를실행하는스마트컨트랙트를작성해서이더리움에배포한후실행하면어떻게될까? 네트워크의모든노드가이스마트컨트랙트를실행하게되면모든컴퓨터가더이상아무일도하지못하는상황이발생할수있다. 디스크저장공간을전부소모하도록스마트컨트랙트를작성해서배포하면모든컴퓨터의데이터저장공간이소모되는일이발생할수도있다. 이더리움은가스 (Gas) 를도입하여이러한문제를해결한다. 스마트컨트랙트가 EVM 명령어를실행하거나, 스토리지, 로그, 메모리, 콜데이터등의데이터저장공간을소비할때마다가스를지급하도록 EVM이설계되었다. 스마트컨트랙트를실행하는트랜잭션을요청할때트랜잭션이사용할수있는최대가스량을사용자가지정하면, EVM은스마트컨트랙트의 EVM 명령어를실행할때마다가스를차감해나간다. 남은가스가 0이되면예외를발생시켜스마트컨트랙트실행을중지시킨다. 스마트컨트랙트실행에필요한비용은트랜잭션을요청한어카운트가지급한다. 따라서스마트컨트랙트를작성할때는컨트랙트실행비용을최소화하려는노력이필요하다. 특히, EVM 코드를실행하는것에비해서데이터를스토리지에저장하는가스비용이월등히높기때문에스토리지에저장할데이터를주의해서선택해야한다. 표 4-2 는데이터로케이션별가스비용을나타낸것이다. 데이터로케이션별비용을비교하면다른영역에비해서스토리지비용이월등히높은것을알수있다. 164 Chapter 04 스마트컨트랙트프로그래밍

49 표 4-2 데이터위치별가스비용 스토리지 32 바이트당 20,000 가스 로그 32 바이트당 96 가스 ( 바이트당 3 가스 ) 콜데이터 메모리 제로 (Zero) 바이트의경우 4 가스, 넌제로 (Non-zero) 바이트의경우 68 가스 32 바이트당 1 가스 스택기반가상머신 EVM은 256비트 (32바이트) 의스택기반가상머신이다. 현재가장많이사용되고있는인텔 CPU는레지스터기반머신이다. 레지스터기반머신에서는연산에필요한데이터를메모리에서레지스터로옮긴다음, 레지스터에서데이터를조회하고연산된결과를다시레지스터에저장한다. 다시말해, 대부분의 CPU 명령어 (instruction) 들이레지스터기반으로작동되도록설계한것이다. 예를들면, x = 4 + 5라는문장은레지스터기반머신에서다음과같이컴파일된다. 코드 4-1 레지스터기반머신명령어 MOV R1, 4 MOV R2, 5 ADD R1, R2, R3 EVM을설계한사람들은왜스택기반으로 EVM을설계했을까? EVM을스택기반으로설계한가장큰이유는 EVM 명령어를저장하는데필요한저장공간을최대한줄이기위해서다. 일반적인애플리케이션들은애플리케이션이실행되는컴퓨터에만설치되기때문에애플리케이션크기가별로중요하지않다. 하지만이더리움의스마트컨트랙트는이더리움블록에저장된다. 이블록은이더리움네트워크에참여한모든컴퓨터에복제되어야하므로애플리케이션크기가 1바이트만커지더라도네트워크에참여한컴퓨터수만큼저장공간을낭비하게된다. 스택기반머신이어떻게메모리연산량을줄일수있는지살펴보자. 스택기반머신은연산에필요한데이터를스택에서가져오고계산된결과를다시스택에저장하기때문에명령어에피연산자에대한정보가필요없다. 코드 4-2 스택기반머신명령어 PUSH 스마트컨트랙트에대한이해 165

50 PUSH 5 ADD 예를들어, x = 4 + 5에대한스택기반머신의명령어순서가앞에기술되어있다. 먼저, 피연산자인 4와 5를스택에푸시한다. 두숫자를더할때피연산자들이이미스택에들어있기때문에 ADD라는명령어만필요하다. ADD는스택에서피연산자 2개를꺼내서계산된결과를다시스택에푸시한다. 레지스터기반머신에서는명령어에총 7개의매개변수 (R1, 4, R2, 5, R1, R2, R3) 가필요했다면, 스택기반머신에서는 2개 (4, 5) 만있으면된다. 이더리움은 32바이트가상머신이므로각매개변수가 32바이트를차지한다면, 32바이트 5 = 160바이트만큼의저장공간을절약할수있다 솔리디티개발언어 스마트컨트랙트는조건과행동이프로그래밍언어로기술되는프로그램으로, EVM에서실행되는애플리케이션으로볼수도있다. Solidity 는이더리움플랫폼에서스마트컨트랙트를개발하기위해가장많이사용되는언어이자고수준의객체지향언어로이더리움가상머신 (EVM, Ethereum Virtual Machine) 을위한언어로설계되었다. 솔리디티프로그램은 EVM 상의 Op코드 (opcode) 로컴파일된후이더리움플랫폼에서실행된다. 솔리디티언어로작성된소스코드를컴파일하면솔리디티컴파일러는스마트컨트랙트를 EVM의 Op코드로변환한다 컨트랙트개발환경구축 먼저, 스마트컨트랙트의개발환경을설정해보자. 4장에서는미스트로실습을진행한다. 미스트 (Mist) 는현재굉장히활발히개발되고있는상태라서버전이바뀔때마다새로운기능이추가되고변경되고있다. 미스트를설치했다면필요한요소들이모두준비된상태다. 미스트를실행하면메인네트워크에연결되어메인네트워크에서블록을동기화한다. 이번장에서는이더리움메인네트워크환경이아니라개발을위한솔로네트워크 (Solo Network) 환경에서스마트컨트랙트개발과정을학습할것이기때문에메인네트워크에연결하지않아도된다. 미스트를설치하면함께패키징된 geth 클라이언트와 P2P 파일시스템인스 166 Chapter 04 스마트컨트랙트프로그래밍

51 웜 (swarm) 을순서대로다운로드하여설치하는데, 스웜설치가종료되면미스트애플리케이션 을종료한다. 그림 4-2 미스트실행화면 개발용프라이빗네트워크 (private-net) 를구축하려면 geth 클라이언트, geth 콘솔, 미스트각각을별도의터미널이나커맨드창에서실행해야한다. geth 클라이언트터미널은이더리움네트워크를구성하는노드를실행하고노드에서발생하는이벤트를모니터링하기위한터미널이다. geth 콘솔은계정관리, 블록체인정보조회등의명령을내리기위한터미널이다. 미스트터미널은미스트프로그램을실행하며미스트에서발생하는오류상황을확인할수있는터미널이다. 운영체제에따라실행환경과실행방법이다르다. 이후에는맥과윈도우에서개발용프라이빗네트워크를구축하는방법을설명할것이다. 맥운영체제미스트를설치한어카운트를 jaehoon이라고하면, 미스트는 geth 클라이언트프로그램을다운로드하여 /Users/jaehoon/Library/Application Support/Mist/binaries/Geth/unpacked 디렉터리에설치한다. Geth geth 클라이언트를다음과같이실행한다. rpc 옵션을지정하면원격에서 8545포트로 geth 클라이언트에접속할수있다. ipcpath 옵션은로컬시스템에서프로세스간통신을위한도메인 4.1 스마트컨트랙트에대한이해 167

52 소켓의위치를지정하고, datadir 옵션은블록데이터와어카운트데이터를저장하기위한디렉터리를지정한다. dev 옵션을주면 geth 클라이언트를개발자모드로실행한다. 개발자모드에서는채굴난이도 (mining difficulty) 가 1로설정되어있기때문에블록이매우빠르게채굴되어생성된다. networkid 옵션은개발자용으로생성하는프라이빗네트워크의번호를지정한다 대신임의의숫자를입력해도된다. 아래명령을실행하기전에새터미널을띄운다. 명령어중간에 Application Support 디렉터리는공백문자를포함하기때문에공백문자앞에역슬래시 (\) 를입력해야셸프로그램이명령어를제대로실행할수있다. $ mkdir /Users/jaehoon/Ethereum/privatenet-dev $ cd /Users/jaehoon/Ethereum/privatenet-dev $ /Users/jaehoon/Library/Application\ Support/Mist/binaries/Geth/unpacked/geth --rpc --ipcpath test-net/test.ipc --datadir test-data --dev --networkid 1234 Geth geth attach 명령을이용하면 IPC 를통해서실행중인 geth 클라이언트에접속할수있고, 콘솔 에서 web3 함수를호출해서 geth 클라이언트를제어할수있다. 다음명령을실행하기전에새로운터미널창을띄운다. $ cd /Users/jaehoon/Ethereum/privatenet-dev $ ~/Library/Application\ Support/Mist/binaries/Geth/unpacked/geth attach test-net/ geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.7.2-stable-1db4ecdc/darwin-amd64/go1.9 coinbase: 0x1183a1d470fd6de861832b3d8e91d0fb2ad0acc5 at block: 996 (Tue, 26 Dec :06:34 KST) datadir: /var/folders/sv/p7xj_83s3wl8w4ksx7l56zch0000gn/t/ethereum_dev_mode modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 shh:1.0 txpool:1.0 web3:1.0 > 미스트실행방법다음명령을실행하기전에새로운터미널창을띄운다. 168 Chapter 04 스마트컨트랙트프로그래밍

53 $ cd /Users/jaehoon/Ethereum/privatenet-dev $ /Applications/Mist.app/Contents/MacOS/Mist --rpc test-net/geth.ipc geth 클라이언트, geth 콘솔, 미스트를실행할때공통적으로 test-net/geth.ipc 파일을지정한다. 이파일은같은머신에서프로세스끼리의통신을위한통신소켓경로를지정한다. 소켓경로를지금과같이상대경로로지정한경우에는명령을실행할때같은디렉터리에서실행해야서로통신할수있다. Geth Mist Users jaehoon Ethereum privatenet dev 윈도우운영체제 geth 클라이언트프로그램은 %USERPROFILE%\AppData\Roaming\Mist\binaries\Geth\ unpacked 디렉터리에설치된다. 만일윈도우사용자이름이 jaehoon이라고했을때해당경로로접근하면 C:\Users\jaehoon\AppData\Roaming\Mist\binaries\Geth\unpacked로현재로그인한사용자이름의폴더에접근할수있다. ( 실제환경을구축할때는 jaehoon을여러분이사용하는계 정으로변경해야한다.) Geth geth 클라이언트옵션에대한설명은맥운영체제와동일하므로앞에있는맥운영체제의설명을참조하면된다. 다음명령어를실행하기전에새로운터미널창을띄운다. cmd> cd %USERPROFILE% cmd> mkdir Ethereum cmd> cd %USERPROFILE%\Ethereum cmd> mkdir devnet cmd> cd %USERPROFILE%\Ethereum\devnet cmd> %USERPROFILE%\AppData\Roaming\Mist\binaries\Geth\unpacked\geth rpc ipcpath test-net/test.ipc --datadir test-data --dev --networkid 1234 Geth geth 클라이언트를제어하기위한 geth 콘솔을다음과같이실행한다. 다음명령어를실행하기 전에새로운터미널창을띄운다. 4.1 스마트컨트랙트에대한이해 169

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 WSA 10 주차 (18.09..) Ethereum 김도윤 (doyunism@gmail.com) 백서연구조합 (WSA: Whitepaper Study Alliance) Ethereum Scalability CryptoKitties, Ethereum Killer(DApp) Source : https://medium.com/@512jay/cryptokitties-5b5e2899267f/

More information

말은 많은 Blockchain 2

말은 많은 Blockchain 2 loopchain-블록체인으로 진짜 서비스 만들어보기 말은 많은 Blockchain 2 진짜 만든 것은 있나? 뭐가 많이 있기는 한데 우리가 써먹어 볼건 있나요? 3 그런데 이런 일이 일어났습니다. 4 뭘 만든건가요?: 블록체인 기반 인증서 발급 각 증권사를 통해 인증서 발급 요청 후 인증서 발급에 필요한 정보를 기반으로 거래를 생성하고 이에 대한 Smart

More information

0. 세션순서 및 발표자 소개

0. 세션순서 및 발표자 소개 초대의글 이더리움플랫폼기술에관심있는개발자를초대합니다. 암호화폐로출발한블록체인기술이다양한분야의개발플랫폼으로성장을거듭하고있습니다. 특히, 이더리움은플랫폼으로서프로그램가능한블록체인기술을선도하고있습니다. 이런 상황에서지난 6 월, 4 명의개발자가모여서함께이더리움에대한스터디와향후이더리움개선및신규오픈소스과제등을추진해보기로하고모임을진행하였습니다. 그리고이를기반으로지난 8

More information

User interface design

User interface design Course Introduction Minsoo Ryu Hanyang University 교과목정보 1 강좌명 블록체인구조와원리 수업연도 2019 년수업학기 1 학기 과목구분전공학수번호 BLC6001 학점 - 이론 - 실습 3-3-0 수업코드 33451 교과목정보 설강대학한양대학교설강학과블록체인융합학과 강의시간 월 18:00 ~ 21:00 (X) 월 18:30

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

클라우드컴퓨팅 주요법령해설서 2017. 11. 목차 3... 5 I... 15 II... 39 1. 공공분야... 41 2. 금융분야... 71 3. 의료분야... 81 4. 교육분야... 95 5. 신산업등기타분야... 101 III... 109 요약문 5, 15 3, 1 16~ 18 15 11 16 4, 16 7,,, 5 16 5, 16 7~10,,,

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

vRealize Automation용 VMware Remote Console - VMware

vRealize Automation용 VMware Remote Console - VMware vrealize Automation 용 VMware Remote Console VMware Remote Console 9.0 이문서는새버전으로교체되기전까지나열된각제품버전및모든이후버전을지원합니다. 이문서에대한최신버전을확인하려면 http://www.vmware.com/kr/support/pubs 를참조하십시오. KO-002230-00 vrealize Automation

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우. 소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423

More information

Studuino소프트웨어 설치

Studuino소프트웨어 설치 Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...

More information

PowerPoint Template

PowerPoint Template 설치및실행방법 Jaewoo Shim Jun. 4. 2018 Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2 SQL 인젝션이란 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Internet

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

RHEV 2.2 인증서 만료 확인 및 갱신

RHEV 2.2 인증서 만료 확인 및 갱신 2018/09/28 03:56 1/2 목차... 1 인증서 확인... 1 인증서 종류와 확인... 4 RHEVM CA... 5 FQDN 개인 인증서... 5 레드햇 인증서 - 코드 서명 인증서... 6 호스트 인증... 7 참고사항... 8 관련링크... 8 AllThatLinux! - http://allthatlinux.com/dokuwiki/ rhev_2.2_

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

Install stm32cubemx and st-link utility

Install stm32cubemx and st-link utility STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7

More information

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation 1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation Board(EVB B/D) 들과 TCP/IP Protocol로연결되며, 연결된 TCP/IP

More information

Implement a business platform based on blockchain blockchain기반 비즈니스 플랫폼 구현을 위한 White Paper (요약본) -1- Qcity

Implement a business platform based on blockchain blockchain기반 비즈니스 플랫폼 구현을 위한 White Paper (요약본) -1- Qcity Implement a business platform based on blockchain blockchain기반 비즈니스 플랫폼 구현을 위한 White Paper (요약본) -1- Qcity 1. 배경 암호화폐의시중유통에있어서주된장애요소는가격변동성과결제시간지연의문제 이다. Qcity 는고정가치를유지하는큐코인 (Qcoin) 을생성하고이를거래수단으로유통시 킬 Q-

More information

게시판 스팸 실시간 차단 시스템

게시판 스팸 실시간 차단 시스템 오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : ios 3.0 이상 - 콘텐츠형식 : MP4 (H264,AAC ), MP3 * 디바이스별해상도,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 BOOTLOADER Jo, Heeseung 부트로더컴파일 부트로더소스복사및압축해제 부트로더소스는웹페이지에서다운로드 /working 디렉터리로이동한후, wget으로다운로드 이후작업은모두 /working 디렉터리에서진행 root@ubuntu:# cp /media/sm5-linux-111031/source/platform/uboot-s4210.tar.bz2 /working

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 03 장 도메인네임시스템과주소 패밀리 (IPv4-IPv6 서비스 ) 1 목차 제 3 장도메인네임시스템과주소패밀리 3.1 도메인네임주소를숫자주소로매핑하기 3.2 IP 버전에무관한주소-범용코드의작성 3.3 숫자주소에서도메인네임주소획득하기 2 getaddrinfo() 를활용한주소 범용 (Generic) 코드 주소범용 (Generic) 코드란? 주소버전

More information

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아 LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

TTA Journal No.157_서체변경.indd

TTA Journal No.157_서체변경.indd 표준 시험인증 기술 동향 FIDO(Fast IDentity Online) 생체 인증 기술 표준화 동향 이동기 TTA 모바일응용서비스 프로젝트그룹(PG910) 의장 SK텔레콤 NIC 담당 매니저 76 l 2015 01/02 PASSWORDLESS EXPERIENCE (UAF standards) ONLINE AUTH REQUEST LOCAL DEVICE AUTH

More information

PowerPoint Presentation

PowerPoint Presentation 오에스아이소프트코리아세미나세미나 2012 Copyright Copyright 2012 OSIsoft, 2012 OSIsoft, LLC. LLC. PI Coresight and Mobility Presented by Daniel Kim REGIONAL 세미나 SEMINAR 세미나 2012 2012 2 Copyright Copyright 2012 OSIsoft,

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

untitled

untitled Content Ⅰ. 기본방향 1. 목 적 3 2. 적용범위 3 Ⅱ. 사회복지관 운영 1. 사회복지관의 정의 7 2. 사회복지관의 목표 7 3. 사회복지관의 연혁 7 4. 사회복지관 운영의 기본원칙 8 Ⅲ. 사회복지관 사업 1. 가족복지사업 15 2. 지역사회보호사업 16 3. 지역사회조직사업 18 4. 교육 문화사업 19 5. 자활사업 20 6. 재가복지봉사서비스

More information

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with

More information

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1 IP 심화 º 각 P 의게이트웨이는해당네트워크의마지막주소를사용한다. - P1 (210.220.10.1/26) 의게이트웨이 (5의 Fa0/0) : 210.220.10.63 /26 = 255.255.255.192 호스트비트수 : 32-26 = 6 비트 => = 64 그러므로 P1의 IP 210.220.10.1 중서브넷마스크에의거 26비트는변함이없고, 나머지 6비트가호스트비트로변하므로

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - windows server 2003 수동설치_non pro support_.doc Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

ADP-2480

ADP-2480 Mitsubishi PLC 접속 GP 는 Mitsubishi FX Series 와통신이가능합니다. 시스템구성 6 7 8 GP-80 RS- Cable RS-C Cable FXN--BD FXN--BD 6 FX Series(FXS,FXN,FXN,FXNC, FXU) 7 FXS, FXN 8 FXN FX Series 는기본적으로 RS- 통신을하며, RS-/ converter

More information

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D> VHDL 프로그래밍 D. 논리합성및 Xilinx ISE 툴사용법 학습목표 Xilinx ISE Tool 을이용하여 Xilinx 사에서지원하는해당 FPGA Board 에맞는논리합성과정을숙지 논리합성이가능한코드와그렇지않은코드를구분 Xilinx Block Memory Generator를이용한 RAM/ ROM 생성하는과정을숙지 2/31 Content Xilinx ISE

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

Cloud Friendly System Architecture

Cloud Friendly System Architecture -Service Clients Administrator 1. -Service 구성도 : ( 좌측참고 ) LB(LoadBlancer) 2. -Service 개요 ucloud Virtual Router F/W Monitoring 개념 특징 적용가능분야 Server, WAS, DB 로구성되어 web service 를클라우드환경에서제공하기위한 service architecture

More information

wtu05_ÃÖÁ¾

wtu05_ÃÖÁ¾ 한 눈에 보는 이달의 주요 글로벌 IT 트렌드 IDG World Tech Update May C o n t e n t s Cover Story 아이패드, 태블릿 컴퓨팅 시대를 열다 Monthly News Brief 이달의 주요 글로벌 IT 뉴스 IDG Insight 개발자 관점에서 본 윈도우 폰 7 vs. 아이폰 클라우드 컴퓨팅, 불만 검증 단계 돌입 기업의

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration

More information

- 목차 - 1. 개요 가. 애터니티 (Aeternity, AE) 란? 나. 주요스펙 1) 기본정보 2) 시장정보 2. 주요팀멤버및재단소개 3. 애터니티컨셉및특징 - Aeon Token (AE) - Name 시스템 - Aepps 4. 기술적특징 - PoW, PoS Hy

- 목차 - 1. 개요 가. 애터니티 (Aeternity, AE) 란? 나. 주요스펙 1) 기본정보 2) 시장정보 2. 주요팀멤버및재단소개 3. 애터니티컨셉및특징 - Aeon Token (AE) - Name 시스템 - Aepps 4. 기술적특징 - PoW, PoS Hy 애터니티 (AE) 상장검토보고서 2018.06.07 - 목차 - 1. 개요 가. 애터니티 (Aeternity, AE) 란? 나. 주요스펙 1) 기본정보 2) 시장정보 2. 주요팀멤버및재단소개 3. 애터니티컨셉및특징 - Aeon Token (AE) - Name 시스템 - Aepps 4. 기술적특징 - PoW, PoS Hybrid - State Channels

More information

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자 SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전

More information

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형 AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형 언어 변환 1.4. 기대 효과 4.4. 프로그램 Restructuring 4.5. 소스 모듈 관리 2. SeeMAGMA 적용 전략 2.1. SeeMAGMA

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

Art & Technology #5: 3D 프린팅 - Art World | 현대자동차

Art & Technology #5: 3D 프린팅 - Art World | 현대자동차 Art & Technology #5: 3D 프린팅 새로운 기술, 새로운 가능성 미래를 바꿔놓을 기술 이 무엇인 것 같으냐고 묻는다면 어떻게 대답해야 할까요? 답은 한 마치 한 쌍(pair)과도 같은 3D 스캐닝-프린팅 산업이 빠른 속도로 진화하고 있는 이유입니 가지는 아닐 것이나 그 대표적인 기술로 3D 스캐닝 과 3D 프린팅 을 들 수 있을 것입니 다. 카메라의

More information

서현수

서현수 Introduction to TIZEN SDK UI Builder S-Core 서현수 2015.10.28 CONTENTS TIZEN APP 이란? TIZEN SDK UI Builder 소개 TIZEN APP 개발방법 UI Builder 기능 UI Builder 사용방법 실전, TIZEN APP 개발시작하기 마침 TIZEN APP? TIZEN APP 이란? Mobile,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Deep Learning 작업환경조성 & 사용법 ISL 안재원 Ubuntu 설치 작업환경조성 접속방법 사용예시 2 - ISO file Download www.ubuntu.com Ubuntu 설치 3 - Make Booting USB Ubuntu 설치 http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기 Mango-IMX6Q mfgtool 을 이용한이미지 Write 하기 http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

Windows 10 General Announcement v1.0-KO

Windows 10 General Announcement v1.0-KO Windows 10 Fuji Xerox 장비와의호환성 v1.0 7 July, 2015 머리말 Microsoft 는 Windows 10 이 Windows 자동업데이트기능을통해예약되어질수있다고 6 월 1 일발표했다. 고객들은 윈도우 10 공지알림을받기 를표시하는새로운아이콘을알아차릴수있습니다. Fuji Xerox 는 Microsoft 에서가장최신운영시스템인 Windows

More information

- i - - ii - - iii - - iv - - v - - vi - - vii - - viii - - ix - - x - - xi - - xii - - xiii - - xiv - - xv - - xvi - - xvii - - xviii - - xix - - xx - - xxi - - xxii - - xxiii - - xxiv - - 3 - - 4 -

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture4-1 Vulnerability Analysis #4-1 Agenda 웹취약점점검 웹사이트취약점점검 HTTP and Web Vulnerability HTTP Protocol 웹브라우저와웹서버사이에하이퍼텍스트 (Hyper Text) 문서송수신하는데사용하는프로토콜 Default Port

More information

<312E20C0AFC0CFC4B3B5E55F5352444320C0FCC0DAB1E2C6C720B1B8B8C5BBE7BEE7BCAD2E687770>

<312E20C0AFC0CFC4B3B5E55F5352444320C0FCC0DAB1E2C6C720B1B8B8C5BBE7BEE7BCAD2E687770> 페이지 2 / 6 첨부 1. 공급품 목록 및 납기일정 번호 품명 모델명/사양 Vendor 단위 수량 납기 비고 1 (샘플기판) 6Layer, FR-4, 1.6T, 1온스, 2 (샘플기판) 3 (샘플기판) 4 (샘플기판) 5 (샘플기판) FRONT PANEL BOARD 3종 1. 샘플기판은 Board 별 성능시험용 2. 샘플 기판 후 Board 별 육안점검 및

More information

Microsoft PowerPoint - 권장 사양

Microsoft PowerPoint - 권장 사양 Autodesk 제품컴퓨터사양 PRONETSOFT.CO 박경현 1 AutoCAD 시스템사양 시스템요구사양 32 비트 AutoCAD 2009 를위한시스템요구사항 Intel Pentium 4 프로세서 2.2GHz 이상, 또는 Intel 또는 AMD 듀얼 코어프로세서 16GH 1.6GHz 이상 Microsoft Windows Vista, Windows XP Home

More information

..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * A

..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * A ..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * Amazon Web Services, Inc.. ID Microsoft Office 365*

More information

슬라이드 1

슬라이드 1 Software Verification #3 정적분석도구, 단위 / 시스템테스트도구 Software Verification Team 4 강 정 모 송 상 연 신 승 화 1 Software Verification #3 정적분석도구, 단위 / 시스템테스트도구 CONTENTS 01 Overall Structure 02 Static analyzer SonarQube

More information

*2008년1월호진짜

*2008년1월호진짜 3. USB 이동식저장장치를이용하여전파되는악성코드분석 1. 개 요 최근 USB 이동식 저장장치를 통하여 전파되는 악성코드에 대한 감염피해가 증가하고 있어 주의가 필요하다. 이번에 확인된 ntion.exe 악성코드는 감염 시, 특정 사이트에 접속하여 추가 악성코드를 다운로드하는 Dropper 기능을 수행한다. 또한, 웹 서버가 감염될 경우는 웹 서버내의 웹 페이지가

More information

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim();

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim(); 인터페이스적용 오리객체설계하기 ) 청둥오리, 물오리를설계하세요. 1 단계 : 필요한객체설계 class 청둥오리 { class 물오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim(); mallardduck.fly(); mallardduck.quack(); redheadduck.swim();

More information

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다 이장에서사용되는 MATLAB 명령어들은비교적복잡하므로 MATLAB 창에서명령어를직접입력하지않고확장자가 m 인 text 파일을작성하여실행을한다. 즉, test.m 과같은 text 파일을만들어서 MATLAB 프로그램을작성한후실행을한다. 이와같이하면길고복잡한 MATLAB 프로그램을작성하여실행할수있고, 오류가발생하거나수정이필요한경우손쉽게수정하여실행할수있는장점이있으며,

More information

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 (https://www.kisarbl.or.kr) < 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10 Ⅰ. 개요 실시간스팸차단리스트 (RBL) 는메일서버를운영하는누구나손쉽게효과적으로스팸수신을차단하는데이용할수있도록한국인터넷진흥원 (KISA)

More information

09 강제근로의 금지 폭행의 금지 공민권 행사의 보장 38 10 중간착취의 금지 41 - 대판 2008.9.25, 2006도7660 [근로기준법위반] (쌍용자동차 취업알선 사례) 11 균등대우의 원칙 43 - 대판 2003.3.14, 2002도3883 [남녀고용평등법위

09 강제근로의 금지 폭행의 금지 공민권 행사의 보장 38 10 중간착취의 금지 41 - 대판 2008.9.25, 2006도7660 [근로기준법위반] (쌍용자동차 취업알선 사례) 11 균등대우의 원칙 43 - 대판 2003.3.14, 2002도3883 [남녀고용평등법위 01 노동법 법원으로서의 노동관행 15 - 대판 2002.4.23, 2000다50701 [퇴직금] (한국전력공사 사례) 02 노동법과 신의성실의 원칙 17 - 대판 1994.9.30, 94다9092 [고용관계존재확인등] (대한조선공사 사례) 03 퇴직금 청구권 사전 포기 약정의 효력 19 - 대판 1998.3.27, 97다49732 [퇴직금] (아시아나 항공

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

LTC 라이트코인명세서

LTC 라이트코인명세서 LTC 2017-10-27 라이트코인명세서 본명세서는회원님들의이해에도움이되고자작성한내용이며, 투자권유의의도는일절없음을안내드립니다. Index 1 개요 2 기술명세서 O ver view 2-1 라이트코인 (Litecoin) 이란? 2-2 기술적특징 2-3 관련웹사이트 3 시장명세서 3-1 라이트코인의유통구조 3-2 시장현황 3-3 해외라이트코인상장거래소및거래현황

More information

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot) 1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다. 1.1. 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot) 만별도로필요한경우도있어툴체인설치및설정에대해알아봅니다. 1.1.1. 툴체인설치 다음링크에서다운받을수있습니다.

More information

Cisco FirePOWER 호환성 가이드

Cisco FirePOWER 호환성 가이드 Cisco 호환성가이드 Cisco 호환성 이문서에서는 Cisco 소프트웨어와하드웨어의호환성및요건을다룹니다. 추가 릴리스또는제품정보는다음을참조하십시오. 설명서로드맵 : http://www.cisco.com/c/en/us/td/docs/security/firesight/ roadmap/firesight-roadmap.html Cisco ASA 호환성가이드 : http://www.cisco.com/c/en/us/td/docs/security/asa/compatibility/

More information

Microsoft Word - release note-VRRP_Korean.doc

Microsoft Word - release note-VRRP_Korean.doc VRRP (Virtual Router Redundancy Protocol) 기능추가 Category S/W Release Version Date General 7.01 22 Dec. 2003 Function Description VRRP 는여러대의라우터를그룹으로묶어하나의가상 IP 어드레스를부여해마스터로지정된라우터장애시 VRRP 그룹내의백업라우터가마스터로자동전환되는프로토콜입니다.

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

°æÁ¦Àü¸Á-µ¼º¸.PDF

°æÁ¦Àü¸Á-µ¼º¸.PDF www.keri.org i ii iii iv v vi vii viii ix x xi xii xiii xiv xv 3 4 5 6 7 8 9 10 11 12 13 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 47 48 49 50 51 52 53

More information

<BFDCB1B9C0CE20C5F5C0DAB1E2BEF7C0C720B3EBBBE7B0FCB0E82E687770>

<BFDCB1B9C0CE20C5F5C0DAB1E2BEF7C0C720B3EBBBE7B0FCB0E82E687770> 외국인 투자기업의 노사관계 요 약 i ii 외국인 투자기업의 노사관계 요 약 iii iv 외국인 투자기업의 노사관계 요 약 v vi 외국인 투자기업의 노사관계 요 약 vii viii 외국인 투자기업의 노사관계 요 약 ix x 외국인 투자기업의 노사관계 요 약 xi xii 외국인 투자기업의 노사관계 요 약 xiii xiv 외국인 투자기업의 노사관계

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

그린홈이용실태및만족도조사

그린홈이용실태및만족도조사 2009 년도연구용역보고서 그린홈이용실태및 만족도설문조사 - 2009. 11. - 이연구는국회예산정책처의연구용역사업으로수행된것으로서, 보고서의내용은연구용역사업을수행한연구자의개인의견이며, 국회예산정책처의공식견해가아님을알려드립니다. 책임연구원 이화여자대학교소비자학과교수정순희 그린홈이용실태및만족도 설문조사 2009. 11. 책임연구원 정순희 ( 이화여자대학교소비자학과교수

More information

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Armjtag_문서1.doc ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor

More information

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

server name>/arcgis/rest/services  server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지 ArcGIS for Server (Windows) 설치가이드 ArcGIS 10.2 for Server 설치변경사항 1 설치 간편해진설치 -.Net Framework나 Java Runtime 요구하지않음 - 웹서버 (IIS, WebSphere ) 와별도로분리되어순수하게웹서비스기반의 GIS 서버역할 - ArcGIS Server 계정을이용한서비스운영. 더이상 SOM,

More information

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52   /carrena/ VMware 에서 l VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 http://blog.naver.com /carrena/50163909320 VMware 에서 linux 설치하기 linux 는다양한버전이존재합니다. OS 자체가오픈소스이기때문에 redhat fedora, 우분투, centos 등등 100 가지가넘는버전이존재함

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 유니티와아두이노를활용한 VR 컨트롤러개발 Part 06 헬로앱스코딩교육 김영준 공학박사, 목원대학교겸임교수前 Microsoft 수석연구원 splduino@gmail.com http://www.helloapps.co.kr 키보드로물체생성하기 키보드로물체생성하기 public GameObject CubeObject; public GameObject MyCamera;

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

노트북 IT / 모바일 데스크탑 34 올인원PC 35 PC 소프트웨어 포터블SSD / SSD / 메모리카드 36 태블릿 37 휴대폰 39 PC 솔루션 IT / 모바일 IT / 모바일 노트북 29 삼성전자는 Windows 를 권장합니다. 삼성전자만의 편리하고 다양한 소프트웨어를 통해 초보자도 보다 쉽고 빠르게 이용 가능합니다. Easy Settings 삼성 패스트

More information

슬라이드 1

슬라이드 1 모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA Spotlight on Oracle V10.x DELL SOFTWARE KOREA 2016-11-15 Spotlight on Oracle 목차 1. 시스템요구사항... 2 1.1 지원하는데이터베이스...2 1.2 사용자설치홖경...2 2. 프로그램설치... 3 2.1 설치프로그램실행...3 2.2 라이선스사용관련내용확인및사용동의...3 2.3 프로그램설치경로지정...4

More information

LATEX과 Mendeley를 활용한 문헌 관리 2017년 2월 6일 제1절 서지 관리 프로그램 연구 주제를 찾거나 선행 연구를 조사하는 가장 대표적인 방법이 문헌들을 찾아보는 것이다. 수없이 많은 논문들을 찾게 되고, 이런 논문들을 다운로드한 후 체계적으로 관리할 필

LATEX과 Mendeley를 활용한 문헌 관리 2017년 2월 6일 제1절 서지 관리 프로그램 연구 주제를 찾거나 선행 연구를 조사하는 가장 대표적인 방법이 문헌들을 찾아보는 것이다. 수없이 많은 논문들을 찾게 되고, 이런 논문들을 다운로드한 후 체계적으로 관리할 필 LATEX과 Mendeley를 활용한 문헌 관리 2017년 2월 6일 제1절 서지 관리 프로그램 연구 주제를 찾거나 선행 연구를 조사하는 가장 대표적인 방법이 문헌들을 찾아보는 것이다. 수없이 많은 논문들을 찾게 되고, 이런 논문들을 다운로드한 후 체계적으로 관리할 필요가 있다. 서지 관리 프로그램(Reference management software, citation

More information

OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우 요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사

OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우  요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사 OM2M 기반의 OHP-M2M 오픈소스설치가이드 2015 년 8 월 경북대학교통신프로토콜연구실 최예찬, 강형우 zns038053@gmail.com, hwkang0621@gmail.com 요약 사물인터넷 (Internet of Things: IoT) 이이슈가되면서다양한사물인터넷기반의오픈소스가공개가되고있다. 본문서에서는그중 Eclipse에서공개한 OM2M 플랫폼을기반으로개발된헬스케어플랫폼인

More information

Security Issues in the Blockchain as a Service Platform 2019년 8월 30일 ( 금 ) 람다256 오재훈

Security Issues in the Blockchain as a Service Platform 2019년 8월 30일 ( 금 ) 람다256 오재훈 Security Issues in the Blockchain as a Service Platform 2019년 8월 30일 ( 금 ) 람다256 오재훈 Chapter 제목 Agenda 루니버스소개 Security Issues Smart Contract 보안 Private Key 보안 Infra 시스템보안 System Asset 보호 Operation System

More information