목 차 역사 o 상태변환시스템으로서의 비트코인 o 채굴 o 머클트리 o 블록체인 사용한 다른 사용사례
|
|
- 지우 안
- 8 years ago
- Views:
Transcription
1 차세대 스마트 컨트랙트와 탈중앙화된 어플리케이션 플랫폼 (A Next-Generation Smart Contract and Decentralized Application Platform) Written by Vitalik Buterin Translated and edited by EthereumKorea 사토시 나카모토에 의해 2009 년 개발된 비트코인은 종종 화폐와 통화분야에서 매우 근본적인 혁신으로 묘사되어 왔는데, 이것은 비트코인이 어떤 담보나 내재적인 가치를 가지지 않으며 또한 중앙화된 발행기관이나 통제기관도 없는 디지털 자산의 첫 번째 사례였기 때문이다. 하지만 비트코인 실험의 더욱 중요한 측면은 비트코인을 떠받치고 있는 분산 합의 수단으로서의 블록체인 기술이며, 이에 대한 관심이 급격하게 늘어나고 있다. 블록체인 기술을 이용한 대안적 어플리케이션들에는 다음과 같은 것들이 자주 거론되고 있다. 사용자 정의 화폐와 금융상품을 블록체인 위에 표현하는 컬러드 코인("colored coins"), 물리적 대상의 소유권을 표현하는 스마트 자산("smart property"), 도메인 이름과 같은 비동질적 자산을 기록하는 네임코인("Namecoin"), 임의적인 계약규칙을 구현한 코드에 의해 다지털 자산을 관리하는 좀 더 복잡한 형태의 스마트 컨트랙트 ("smart contracts"), 더 나아가 블록체인을 기반으로 한 탈중앙화된 자율 조직("decentralized autonomous organizations", DAOs) 등이다. 이더리움이 제공하려는 것은 완벽한 튜링완전(turing-complete) 프로그래밍 언어가 심어진 블록체인이다. 이 프로그래밍 언어는, 코딩 된 규칙에 따라 '어떤 상태'를 다르게 변환시키는 기능(arbitrary state transition functions)이 포함된 "계약(contracts)"을 유저들이 작성할 수 있게 함으로써 앞서 설명한 시스템들을 구현 가능하게 할 뿐만 아니라 우리가 아직 상상하지 못한 다른 많은 어플리케이션들도 매우 쉽게 만들 수 있도록 도와줄 것이다. 1
2 목 차 역사 o 상태변환시스템으로서의 비트코인 o 채굴 o 머클트리 o 블록체인 사용한 다른 사용사례 o 스크립팅 이더리움 o 이더리움 어카운트 o 메시지와 트랜잭션 o 이더리움 상태변환함수 o 코드실행 o 블록체인과 채굴 어플리케이션들 o 토큰 시스템 o 금융 파생상품 o 신원조회와 평판시스템 o 탈중앙화된 파일 저장공간 o 탈중앙화된 자율 조직 o 추가적인 어플리케이션들 기타 이슈들 o 수정된 GHOST 도입 o 수수료 o 연산과 튜링완전성 o 통화와 발행 o 채굴 중앙집중화 o 확장성 결 론 참고문헌과 추가 자료 2
3 비트코인과 기존 개념들에 대한 소개(Introduction to Bitcoin and Existing Concepts) 역사(History) 분산화된 디지털 통화의 개념은, 재산등록 같은 대안 어플리케이션과 마찬가지로 지난 수십 년간 우리 주변에 있었다. 1980~90 년대의 익명 e-cash 프로토콜은 주로 Chaumian blinding 으로 알려진 로우레벨 low-level cryptographic 암호 알고리즘(cryptographic primitive) 에 기반하였고 개인정보를 강력하게 보호하는 화폐를 algorithms frequently used 제공하였으나 중앙집권적인 중개인에 의존했기 때문에 별다른 주목을 받지 못했다 년 to build computer security Wei Dai 의 [b-money]( 분산합의와 계산 퍼즐을 systems 풀게 하는 방식을 통해서 화폐를 발행하게 하는 아이디어를 최초로 제안하였지만 분산 합의를 실제로 어떻게 구현할지에 대한 자세한 방법은 제시하지 못했다 년에 Hall Finney 는 "재사용 가능한 작업증명([reusable proofs of work]( 개념을 소개하였다. 이 시스템은 b-money 의 아이디어에 Adam Back 의 계산 난이도 해시캐시 퍼즐(computationally difficult Hashcash puzzles) 을 조합한 것이었다. 그러나 외부의 신뢰를 필요로 하는 컴퓨팅(trusted computing)을 그 기반에 둠으로써, 이상을 구현하는 데에는 또 다시 실패했다 년 '사토시 나카모토'에 의해 처음 실제적으로 구현된 탈중앙화된 화폐는 공개키 암호방식을 통한 소유권 관리를 위해 사용되던 기존의 알고리즘을 작업 증명(proof of work) 이라고 알려진 합의 알고리즘과 결합함으로써 가능하게 되었다. 작업증명이 기반이 되는 작동방식은 매우 혁신적인 것이었는데, 이것은 두 가지의 문제들을 동시에 해결하기 때문이다. 첫째, 이것은 간단하면서도 상당히 효과적인 합의 알고리즘을 제공해주었다. 즉, 네트워크 상에 있는 모든 '노드(node)'들이 비트코인의 장부상태(state of the Bitcoin ledger)에 일어난 표준 노드(Node)- 노드들은 블 업데이트의 집합(a set of canonical updates)에 공동으로 동의할 수 있도록 해주었다는 록체인 네트워크 상에 연결 것이다. 둘째, 누구나 합의 프로세스에 참여할 수 있도록 허용해줌으로써 합의결정권에 대한 되어 있는 개개의 주체들이 정치적 문제를 해결할 수 있을 뿐만 아니라 동시에 시빌공격(sybil attacks)도 방어해줄 수 며, 만일 당신이 블록체인 있는 메커니즘을 제공했다. 이것은 합의 프로세스에 대한 참여의 조건으로 특정한 리스트에 네트워크에 참여하게 되면 등록된 주체이어야만 한다 라는 어떤 형식적 장벽대신에, 경제적 장벽 - 각 노드의 결정권의 하나의 노드가 된다. 크기를 그 노드의 계산능력에 직접적으로 비례시키는 방식으로 대체하는 것이었다. 이후로, 지분증명(proof of stake)이라는 새로운 방식의 합의 알고리즘이 등장했는데, 이는 각 노드가 가진 계산능력이 아니라 화폐의 보유량에 따라 각 노드의 결정권 정도를 계산해야 한다는 것이다. 이 두 방식의 상대적인 장점들에 대한 논의는 이 백서에서는 다루지 않겠지만, 두 방법 모두 암호화화폐의 기반으로서 사용될 수 있다는 점은 지적해두고자 한다. 역사 3
4 상태변환시스템으로서의 비트코인(Bitcoin As A State Transition System) 기술적인 관점에서 보았을 때, 비트코인과 같은 암호화 화폐의 장부는 하나의 상태변환시스템(state transition system)으로 생각해볼 수 있다. 이 시스템은, 현재 모든 비트코인의 소유권 현황으로 이루어진 하나의 상태(state) 와 이 현재 상태와 트랜잭션을 받아서 그 결과로써 새로운 상태를 출력해주는 상태변환함수(state transition function) 로 구성되어 있다. 표준 은행 시스템에 비유하자면 상태는 모든계좌잔고표(balance sheet)이고 트랜잭션은 A 에서 B 로 $X 를 송금하라는 요청이며, 상태변환함수에 의해 A 의 계좌에서는 $X 가 감소하고 B 의 계좌에서는 $X 가 증가한다. 만약 처음에 A 의 계좌에 있는 금액이 $X 이하인 경우에는 상태변환함수가 에러를 리턴한다. 이러한 상태변환를 비트코인 장부에서는 다음과 같이 정의할 수 있다. APPLY(S,TX) -> S' or ERROR 은행 시스템 예시에서는 다음과 같다. APPLY({ Alice: $50, Bob: $50 },"send $20 from Alice to Bob") = { Alice: $30, Bob: $70 } APPLY({ Alice: $50, Bob: $50 },"send $70 from Alice to Bob") = ERROR 비트코인에서 "상태(state)"는 생성되었지만 아직 사용되지 않은 모든 코인들의 집합(기술적표현으로는 소비되지 않은 트랜잭션출력, UTXO(Unspent Transaction Outputs))이다. 각 UTXO 들에는 각자의 코인금액이 표시되어 있고 이 UTXO 의 소유자(20byte 의 주소로 정의되는 암호화된 공개키(public key))정보가 들어 있다. 트랜잭션은 하나 이상의 입력(inputs) 및 출력을 포함한다. 각 입력에는 보내는 쪽 지갑주소에서 선택된 기존 UTXO 에 대한 참조정보와, 해당지갑주소에 대응되는 개인키(private key)가 생성한 암호화된 서명을 담고 있다. 그리고 각 출력들은 상태에 추가될 새로운 UTXO 정보를 가지고 있다. 상태변환함수 `APPLY(S,TX) -> S'` 는 다음과 같이 정의할 수 있다. 1. TX 의 각 입력에 대해 : * 만약 참조된 UTXO 가 `S`에 없다면, 에러를 리턴. * 만약 서명이 UTXO 의 소유자와 매치되지 않으면, 에러를 리턴. 2. 만약 입력에 사용된 UTXO 들 금액의 합이 출력 UTXO 들 금액의 합보다 작으면, 에러를 리턴. 3. 입력에 사용된 UTXO 가 삭제되고 출력 UTXO 가 추가된 `S`를 리턴. 4
5 여기서 1 번의 첫번째 과정은 존재하지 않는 코인이 트랜잭션에 사용되는 것을 막기 위한 것이고 1 번의 두번째 과정은 다른 사람의 코인이 트랜잭션에 사용되는 것을 막기 위한 것이다. 위 절차를 실제 비트코인 지불과정에 적용하면 다음과 같다. Alice 가 Bob 에게 11.7 BTC 를 보내고 싶다고 가정하자. 먼저 Alice 지갑주소로부터 표시된 금액의 합이 적어도 11.7 BTC 이상인 UTXO 의 집합을 찾는다. 실제 대부분의 경우에는 11.7 BTC 를 정확히 바로 선택할 수 없다. Alice 의 지갑주소에서 각각 6, 4, 2 BTC 가 표시된 3 개의 UTXO 를 참조할 수 있다고 하자. 이 3 개의 UTXO 가 트랜잭션의 input 이 되고 2 개의 output 이 생성된다. Output 중 하나는 11.7 BTC 가 표시된 새로운 UTXO 이며 소유자는 Bob 의 지갑주소가 된다. 그리고 다른 하나는 12(6+4+2) = 0.3 BTC 의 "잔돈(change)"이 표시된 새로운 UTXO 이며 소유자는 Alice 자신의 지갑주소가 된다. 채굴(Mining) 만일 우리가 위에서 기술한 내용을 신뢰를 기반으로 하는 중앙집권화된 서비스 방식으로 구현하자면 매우 간단한 일이 될텐데, 왜냐하면 중앙 서버 하드드라이브에 상태변화의 과정을 저장만 하면 되기 때문이다. 그러나 비트코인에서는, 탈중앙화된 통화시스템을 구축하고자 하는 것이며, 이를 위해서는 모든 사람이 수긍할 수 있는 트랜잭션 순서 합의 시스템을 상태변화시스템과 결합해야만 한다. 비트코인의 분산 합의 과정은 네트워크에 "블록(blocks)"이라 불리는 트랜잭션 패키지를 계속적으로 생성하고자 시도하는 노드들을 필요로 한다. 이 네트워크는 약 10 분마다 하나의 블록을 생성하도록 계획되어 있고 각 블록은 타임스탬프, 논스(nonce), 이전 블록에 대한 참조(이전 블록의 해시), 그리고 이전 블록 이후에 발생한 모든 트랜잭션의 목록을 포함한다. 이 과정을 통해서 지속적으로 성장하는 블록체인이 생성되게 되는데, 비트코인 장부의 최신상태(state)를 나타내기 위해 지속적인 업데이트가 이루어진다. 이 체계에서 하나의 블록이 유효한지 아닌지를 확인하기 위한 알고리즘은 다음과 같다. 1. 이 블록에 의해 참조되는 이전 블록이 존재하는지, 유효한지 확인한다. 2. 타임스탬프 값이 이전 블록의 타임스탬프 값보다 크면서 2 시간 이내인지 확인한다. 3. 작업증명(proof of work)이 유효한지 확인한다. 4. `S[0]`를 이전 블록의 마지막 상태(state)가 되도록 설정한다. 5. `TX`를 `n`개의 트랜잭션을 가지는, 블록의 트랜잭션 목록으로 가정한다. 폐구간 `0...n-1`의 모든 i 에 대해, `S[i+1] = APPLY(S[i], TX[i])`집합 중 어느 하나라도 에러를 리턴하면 거짓(false)을 리턴하며 종료한다. 6. 참(true)을 리턴하고, `S[n]`를 이 블록의 마지막 상태로 등록한다. 5
6 기본적으로 블록의 각 트랜잭션은 유효한 상태변환을 일으켜야 한다. 여기서 상태가 블록 내에 어떠한 방법으로로 기록되지 않았다는 점에 주목해보자. 상태는 유효성을 검증하는 노드가 매번 계산해서 기억해야 할 완전히 추상적 것(abstraction)인데, 이것은 원시상태(genesis state)부터 해당 블록까지의 모든 트랜잭션을 순차적으로 적용함으로써 계산될 수 있다. 채굴자가 블록에 포함시키는 트랜잭션의 순서에 주목해보자. 만약 어떤 블록에 A 와 B 라는 두 트랜잭션이 있고 B 가 A 의 출력 UTXO 를 소비한다고 하자. 이때 A 가 B 이전의 트랜잭션인 경우 그 블록은 유효하지만, 그렇지 않을 경우 유효하지 않다. 블록 유효성 검증 알고리즘에서 특징적인 부분은 "작업증명(proof of work)"의 조건 즉, 256 비트의 숫자로 표현되는 각 블록의 이중-SHA256 해시값이 동적으로 조정되는 목표값(이더리움 영문 백서를 작성하는 시점에서 대략 2 192) 보다 반드시 작아야 된다는 조건이다. 작업증명의 목적은 블록 생성을 계산적으로 어렵게 만들어서 sybil 공격자들이 마음대로 전체 블록체인을 조작하는 것을 방지하는 것이다. SHA256 은 전혀 예측불가능한 유사난수 함수(pseudorandom function)로 설계되었기 때문에 유효 블록을 생성하기 위한 유일한 방법은 블록헤더의 논스(nonce) 값을 계속해서 증가시키면서, 생성되는 새로운 해시값이 위의 조건을 만족하는지 확인하는 과정을 반복하는 것뿐이다. 현재 목표값인 하에서 하나의 유효블록을 발견하기 위해서 평균적으로 2 64 번의 시도를 해야만 한다. 일반적으로 이 목표값은 매 2016 개의 블록마다 네트워크에 의해 재조정되어서 네트워크의 현재 노드들이 평균적으로 10 분마다 새로운 블록을 생성할 수 있도록 한다. 이러한 연산작업에 대한 보상으로 현 시점의 각 블록의 채굴자들은 25 BTC 를 획득할 자격을 가진다. 그리고 출력금액보다 입력금액이 큰 트랜잭션이 있다면 그 차액을 "트랜잭션 수수료(transaction fee)"로 얻는다. 이것이 BTC 가 발행되는 유일한 방법이며, 원시상태(genesis state)에는 아무런 코인이 포함되지 않았다. 채굴 목적을 더 잘 이해하기 위해서, 악의적인 공격자가 있을 때 어떤 일이 발생하는지 알아보자. 비트코인 기저를 이루는 암호기법은 안전한 것으로 알려져 있다. 그러므로 공격자는 비트코인 시스템에서 암호기법에 의해 직접 보호되지 않는 부분인 트랜잭션 순서 를 공격 목표로 잡을 것이다. 공격자의 전략은 매우 단순하다. 1. 어떤 상품(가급적이면 바로 전달되는 디지털 상품)을 구매하기 위해 판매자에게 100 BTC 를 지불한다. 2. 상품이 전송되기를 기다린다. 3. 판매자에게 지불한 것과 같은 100 BTC 를 공격자 자신에게 보내는 트랜잭션을 생성한다.(이중지불 시도) 4. 비트코인 네트워크가, 공격자 자신에게 보내는 트랜잭션이 판매자에게 지불하는 트랜잭션보다 먼저 수행된 것으로 인식하도록 한다. 1 번 과정이 발생하고 몇 분 후에 몇몇 채굴자가 그 트랜잭션을 블록에 포함할 것이다. 이 블록 번호를 이라 하자. 대략 1 시간 후에는 이 블록 다음의 체인에 5 개의 블록들이 추가될 것이다. 이 5 개의 블록들은 위 1 번 트랜잭션을 간접적으로 가리킴으로써 "컨펌(confirming)"한다. 이 시점에서 판매자는 지불이 완료된 것으로 판단하고 상품을 전송할 것이다. 디지털 상품으로 가정했으므로 전송은 바로 끝난다. 이제 공격자는 판매자에게 보낸 것과 동일한 100 BTC 를 공격자 자신에게 보내는 다른 트랜잭션을 생성한다. 만약 공격자가 그냥 단순하게 트랜잭션을 시도한다면, 채굴자들이 `APPLY(S,TX)`를 실행하고 이 `TX`는 상태에 더 이상 존재하지 않는 UTXO 를 소비하려 한다는 것을 알아차리므로 이 트랜잭션은 진행되지 않는다. 그러므로 대신에, 같은 부모 블록 을 가리키지만 판매자에게 보낸 것을 대체하는 새로운 트랜잭션이 포함된 다른 버전의 블록 을 채굴함으로서 블록체인 "분기점(fork)"을 생성한다. 이 블록 정보는 원래 것과 다르므로 작업증명(proof of work)이 다시 수행되어야 한다. 그리고 공격자의 새버전 블록 은 기존 과 다른 해시를 가지므로 원래 블록 부터 는 공격자의 블록을 가리키지 않는다. 그러므로 원래 체인과 공격자의 새로운 체인은 완전히 분리된다. 이러한 6
7 분기점에서 비트코인 네트워크의 규칙은 가장 긴 블록체인을 참으로 인식하는 것이다. 공격자가 자신의 체인에서 혼자 작업을 하는 동안 정당한 채굴자들은 원래의 체인에서 작업할 것이기 때문에 공격자 자신의 체인을 가장 길게 만들기 위해서는 네트워크의 다른 노드들의 계산능력 조합보다 더 큰 계산능력을 가져야 한다.(이를 51% attack 이라 한다.) 머클트리(Merkle Trees) 왼쪽: Merkle tree(머클트리)의 몇몇 노드만 보아도 곁가지(branch)의 유효성을 입증하기에 충분하다. 오른쪽: Merkle tree 의 어떤 부분을 바꾸려는 시도는 결국 상위 해시값 어딘가에 불일치를 만든다. 비트코인의 중요한 확장 기능은 블록이 여러 계층 구조(multi-layer data structure)에 저장된다는 것이다. 어떤 블록의 "해시(hash)"란 사실 블록헤더의 해시만을 의미한다. 이 블록헤더에는 타임스탬프, 논스(nonce), 이전 블록 해시, 그리고 블록에 포함된 모든 트랜잭션 정보에 의해 생성되는 Merkle tree 의 루트 해시가 들어있는 200 바이트 정도의 데이터이다. 머클트리(Merkle tree)는 이진트리(binary tree)의 일종으로서 트리의 최하위에 위치하고 기저 데이터가 들어있는 수 많은 잎노드, 자기 자신 바로 하위에 있는 두 자식 노드의 해시로 구성된 중간 노드, 자기 자신 바로 하위에 있는 두 자식 중간노드의 해시로 구성된 트리의 "최상위(top)"에 있는 하나의 루트 노드의 집합이다. 머클트리(Merkle tree)의 목적은 어떤 블록의 데이터가 분리돼서 전달될 수 있도록 하는 것이다. 만약에 비트코인의 어떤 노드가 한 소스로부터 블록헤더만을 다운로드 받고, 이 블록헤더와 관계된 트랜잭션 정보는 다른 소스로부터 다운받아도 이 데이터들이 여전히 정확하다는 것이 보장된다. 이것이 가능한 이유는 머클트리(Merkle tree)에서 하위 노드들의 해시값이 상위 노드에 영향을 주기 때문에 어떤 악의적인 유저가 머클트리 최하위에 있는 트랜잭션 정보를 가짜로 바꿔치기 하면 상위 부모들의 해시값들이 변해서 결국 트리의 루트값이 바뀌므로, 결과적으로 이 블록의 해시가 달라지기 때문이다. 이렇게 되면 이 블록은 완전히 다른 블록으로 인식되게 되며, 이것은 유효하지 않은 작업증명을 가지고 있게 될 것이 확실시된다. 머클트리 프로토콜은 비트코인 네트워크를 장기간 지속가능하게 만드는 기초가 된다. 비트코인 네트워크에서 각 블록의 모든 정보를 저장하고 처리하는 "완전노드(full node)"는 2014 년 4 월 기준으로 거의 15 GB 의 디스크 공간을 필요로 하며 매달 1 GB 넘게 증가하고 있다. 현재 데스크탑 컴퓨터 정도에서는 수용할 수 있지만 스마트폰에서는 7
8 불가능하다. 그리고 나중에는 소수의 사업체들이나 풀 노드를 유지할 수 있을 것이다. 반면 "단순화된 지불확인(simplified payment verification, SPV)"으로 알려진 프로토콜은 "가벼운 노드(light node)"라고 불리는 또 다른 형태의 노드를 가능하게 해준다. 가벼운 노드는 블록헤더를 다운로드하고 그 블록헤더에서 작업증명을 검증한다. 그리고 관련 트랜잭션들에 대한 "곁가지들(branches)"만을 다운로드 한다. 이렇게 전체 블록체인의 매우 작은 비율만을 다운로드 함에도 불구하고 강한 안전성을 보장하면서도, 임의의 트랜잭션의 상태 및 잔고 상태를 알아낼 수 있게 한다. 블록체인 기술을 이용한 다른 응용 사례 (Alternative Blockchain Applications) 블록체인의 근본 아이디어를 확장해 다른 개념으로 응용하려는 아이디어 역시 오랜 역사를 가지고 있다 년 Nick Szabo )는 "소유주 권한을 통한 재산권 보장"이라는 글을 발표했다. 그는 정주(homesteading), 불법점유, 지공주의(Georgism) 등의 개념을 포함한 정교한 틀을 설계해 누가 어떤 땅을 가지고 있느냐라는 등기 문제를 블록체인 기반 시스템으로 처리할 수 있음을 보였다. 그는 이것이 "데이터베이스 복제 기술의 새로운 발전"덕분에 가능해졌다고 말했다. 하지만, 불행히도 그 당시에는 쓸만한 효과적인 파일 복제 시스템이 없었다. 그래서 Nick Szabo 의 프로토콜은 실현되지 못했다. 하지만 2009 년 이후, 비트코인 분권 합의 시스템이 발전하면서, 수 많은 대안 응용 사례가 빠르게 부각되기 시작했다. * 네임코인 년에 만들어진 네임코인은 '탈중앙화된 명칭 등록 데이터베이스'라고 부르는 것이 가장 좋을 것이다. 토르, 비트코인, 비트메시지와 같은 탈중앙화된 자율조직 프로토콜을 이용할 때, 사용자는 타인과 서로 교류하기 위해 각자의 계정을 구분해내야 한다. 하지만 현존하는 가능한 구별 방법은 1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy 와 같은 식의 의사난수 해쉬를 이용하는 방식이었다. 이상적으로는, 사용자가 "george"같은 일상적인 이름을 계정 이름으로 갖는 것이 좋을 것이다. 하지만 이 때 문제는 어떤 사용자가 "george" 라는 이름을 계정을 만들수 있다면, 다른 누구도 똑같이 "george"라는 계정을 등록해 흉내낼 수 있다는 점이다. 유일한 해답은 선출원주의로, 먼저 등록한 사람이 성공하고 두 번째 등록한 사람은 실패하도록 하는 것이다. 이는 이미 비트코인 합의 규약에 완벽히 적용된 문제이기도 하다. 네임코인은 이런 아이디어를 응용한 가장 오래되고 가장 성공적인 명칭 등록 시스템이다. 컬러드 코인- 컬러드 코인의 목적은 누구나 비트코인 블록체인 위에서 자신만의 고유한 디지털 화폐를 발행할 수 있는 프로토콜 역할을 하는 것이다. 또는 (그 디지털 화폐의 발행량이 한 단위 밖에 없는 단순한 경우로 볼 수 있는) 자기 자신만의 디지털 토큰을 발행하는 프로토콜 역할을 하는 것이다. 컬러드 코인 프로토콜에서, 사용자는 특정 비트코인 UTXO 에 공개적으로 색깔을 부여함으로써 새 화폐를 "발행"할 수 있다. 다른 UTXO 의 색깔은 이미 소비된(혼합 색깔 입력의 경우에는 몇몇 특별한 규칙이 적용된다) 것으로 간주하는 거래의 입력과 같은 색깔이 되도록 재귀적으로 정의한다. 이 프로토콜은 블록체인을 처음부터 끝까지 역추적해 그들이받은 UTXO 의 색깔을 정함으로써, 사용자가 특정 색깔을 가진 UTXO 만 지갑에 간직하고 그 코인을 보통 비트코인처럼 여기저기 보낼 수 있게 한다. 메타코인- 메타코인이 품고 있는 아이디어는, 비트코인 거래를 메타코인 거래 저장에 이용하되, 상태 이동 함수 APPLY' 를 다르게 가짐으로써, 비트코인 시스템 위에서 운영되는 프로토콜을 갖는 것이다. 메타코인 프로토콜만으로는 비트코인 블록체인 속에 무효 메타코인 거래가 나타나는 현상을 예방 수 없기 때문에, 규칙이 하나 더해진다. 즉 만약 APPLY'(S, TX)가 에러를 리턴하면, 프로토콜은 APPLY'(S,TX)=S 로 정해진다. 비트코인 스스로는 내부 실행이 불가능한, 잠재적으로 더 발전된 성질을 가진 무작위 암호화폐 프로토콜을 만드는 쉬운 메커니즘이라고 할 수 있다. 반면 이 프로토콜의 개발비용은 적은데 왜냐하면 채굴과 네트워킹의 복잡성 문제가 이미 비트코인 프로토콜에 의해 처리되고 있기 때문이다. 8
9 일반적으로 합의 프로토콜을 건설하는 데 두 가지 접근방법이 있다. 하나는 독립적인 네트워크를 세우는 것이고 다른 하나는 비트코인 시스템과 연동되는 프로토콜을 세우는 것이다. 전자의 접근 방법은, 네임코인 같은 응용 사례에서는 상당히 성공적이었지만, 실제 실행하는 데 어려움이 있다; 각 개별 실행주체가 모든 필요한 상태변환과 네트워킹 코드를 건설하고 점검해야 할 뿐만 아니라 독립적인 블록체인을 구동시켜야 한다. 나아가, 분권 합의 기술에 관한 어플리케이션의 집합이 멱함수분포를 따를 것으로 예상된다. 즉, 대다수 어플리케이션은 자기 자신의 블록체인을 보장하기에는 너무 작을 것이다. 그리고 또 거대한 클래스의 분권화된 어플리케이션, 즉 서로 교류를 하기 위한 분권화된 자율 기구(DAO)가 생겨날 것이라고 예상한다. 후자의 접근 방법, 즉, 비트코인에 기반한 접근 방법은 비트코인의 단순 지불 검증(SPV)특징을 물려받지 못한다는 단점이 있다. 단순지불검증은 비트코인에서는 작동한다. 왜냐하면 비트코인은 블록체인 깊이(depth)를 검증 대리 수단으로 이용할 수 있기 때문이다. 한 거래의 근원을 찾아 충분히 뒤로 돌아가보면, 그 상태의 정합성을 증명하는 부분이 있었다고 말해도 무방하다. 반면, 블록체인에 기반한 메타-프로토콜은 무효 거래가 블록체인에 포함되지 않도록 막을 방법이 자기 자신의 프로토콜 자체에는 없다. 그렇기 때문에 완전히 안전보장이 된 단순지불검증 메타- 프로토콜이라면, 어떤 거래가 유효한지 아닌지를 결정하기위해, 항상 비트코인 블록체인의 원점까지 돌아가 훑어보는 작업이 필요하다. 현재까지 비트코인에 기반한 메타-프로토콜의 모든 "간단한"(light) 클라이언트 구현은 자료를 제공하는 믿을 만한 서버에 의지하고 있는 형편이다. 우리가 암호화폐를 만든 가장 중요한 목적이 제 3 의 신용기구의 필요성을 없애는 것이었다는 걸 특히 되새겨본다면, 이것은 아주 분명하게도, 차선의 결과가 될 뿐이다. 스크립팅(Scripting) 별도의 확장없이도 비트코인 프로토콜은 낮은 수준의 "스마트 계약"의 개념을 가능하게 할 수 있다. 비트코인의 UTXO 는 공개키만으로 획득할 수 있을 뿐만 아니라, 단순 스택-기반 프로그래밍 언어로 표현되는 더 복잡한 스크립트로도 획득할 수 있다. 이런 경우에는, UTXO 를 지출하는 거래는 그 스크립트를 만족하는 데이터를 제공해야만 한다. 사실, 기초적인 공개키 소유권 메커니즘도 스크립트를 통해 실행된다: 그 스크립트는 타원곡선서명을 입력 으로 받아 그 거래와 UTXO 를 가진 주소에 대해 검증을 하고 만약 검증이 성공하면 1 을, 실패하면 0 을 출력 한다. 여러 다른 다양한 사용 사례에 대해 좀 더 복잡한 여러 스크립트들이 있을 수 있다. 예를 들어, 주어진 세 개의 개인 키 가운데 두 개로부터 서명을 받아야만 승인이 되도록 스크립트를 짤 수 있다. 이런 스크립트는 회사 계정, 보안 저축 계정, 상업 공탁 상황 등에 유용하게 쓰일 수 있다. 스크립트는 또한 어떤 계산 문제의 답에 대한 포상금을 지불하는데도 쓰일 수 있다. "만약 당신이 이 액면가의 도기코인 거래를 나에게 보냈다는 SPV 증명을 제공한다면, 이 비트코인 UTXO 는 당신 것이다"라는 식으로 말하는 스크립트를 짤 수도 있다. 즉 근본적으로 탈중앙화된 상호-암호화폐 교환을 가능하게 한다. 하지만 비트코인에 구현된 스크립트 언어는 몇가지 중요한 한계가 있다. 튜링불완전성: 비트코인 스크립트 언어로 할 수 있는 작업이 많긴 하지만, 모든 경우의 프로그래밍을 다 지원하지는 않는다. 특히 while 이나 for 와 같은 순환(loop) 명령 카테고리가 빠져 있다. 순환 명령어를 없앤 이유는 거래 증명을 할 때 무한 순환에 빠지는 것을 막기 위해서였다. 이론적으로는 이건 스크립트 프로그래머가 극복할 수 있는 장애물이기는 하다..왜냐하면 어떤 순환 명령이든 단순히 하위 코드를 여러 차례 if 구문과 함께 반복함으로써 구현이 가능하기 때문이다. 하지만 이것은 아주 공간 비효율적인 프로그램이 된다. 예를 들어 대안 타원곡선서명 알고리즘을 실행하려면 코드 안에 있는 곱셈을 모두 개별적으로 256 번 반복하는 것이 필요하다. 9
10 가치 무지: UTXO 스크립트만으로는 인출 액수를 세밀하게 통제할 방법이 없다. 예를 들어, 신탁 계약의 강력한 실용 사례라 할수 있는 헷지 계약을 살펴보자. A 와 B 가 $1000 어치의 BTC 를 공동계좌에 입금했다고 하자. 시간이 지나면 비트코인의 가격이 오를 수가 있다. 두 사람은 30 일 후 자동으로 A 가 $1000 어치 BTC 를 받고 B 는 공동계좌의 나머지 잔액을 받는 그런 계약을 맺고 싶다. 하지만 이 계약은 1BTC 가 미국 달러로 얼마인지 정해줄 제 3 자를 필요로 한다. 만약 이런 계약이 실현가능하다면 지금 현존하는 완전 중앙집권적인 금융 시스템 아래에서도 고도로 발전된 계약 형태라고 볼 수 있다. 하지만 UTXO 는 인출액 전부가 송금되거나 말거나 밖에 선택할 수가 없다. 즉 세부 작은 단위로 나눠질 가능성을 포함할 수 없는 것이다. 위에 예를 든 계약 거래를 실행할 유일한 방법은 변하는 UTXO 의 액면가 단위를 아주 다양하게 양산하고(예를 들어 1 부터 30 까지의 모든 자연수 k 에 대해 2 의 k 승의 1 UTXO 를 만듦) A 가 B 에게 이중에서 필요한 금액에 맞는 것을 선택해서 보내게 하는 방식과 같이 매우 비효율적인 편법을 사용하는 길 뿐이다. 상태표현제한: UTXO 가 표현할 수 있는 상태는 사용되었거나 안 되거나 둘 뿐이다. 그렇기 때문에 이 두가지 상태 이외에 다른 어떤 내부적 상태를 가지는 다중 단계 계약이나 스크립트를 만들 수가 없다. 이 점이 분산 환전 거래나 이중 암호 실행 프로토콜(계산 보상금을 보장하기 위해 필요하다)과 같은 다중 조건 계약을 어렵게 한다. 즉 UTXO 은 단순하고 1 회적인 계약에만 이용될 수 있을 뿐, 분산조직과 같은 더 복잡한 "상태적(stateful)" 계약에는 이용될 수 없고 메타프로토콜을 적용하기 어렵게 만든다. 블록체인 무지(Blockchain-blindness): UTXO 는 논스(Nonce), 타임스탬프,이전 블록해시같은 블록체인 자료를 해독하지 못한다. 이 단점으로 인해 스크랩트 언어 속에 잠재적으로 가치있을 무작위성이 빠지게 된다. 그래서 도박이나 여러 다른 분야의 어플리케이션을 만드는 데 한계를 보인다. 정리하자면, 발전된 어플리케이션을 만드는 데 3 가지 접근법이 있다. 첫번째는 독립적인 블록체인을 만드는 것이고 두번째는 비트코인에 이미 내재된 스크립트를 이용하는 것이며, 세번째는 비트코인 상에서 작동되는 메타-규약을 건설하는 것이다. 독립적인 블록체을 쓰면 무한히 자유로운 프로그램을 짤 수 있지만 개발 기간, 초기 셋업 작업, 보안 등의 비용을 치뤄야 한다. 비트코인에 내재된 스크립트를 이용하면 실행이 간단하고 표준화된다는 장점이 있지만, 이용범위가 제한적이다. 메타규약을 쓰는 것은 간단하긴 하지만, 확장성의 결함을 감수해야 한다. 이더리움을 통해 우리는 개발하기도 쉽고 더 강력한 라이트 클라이언트 기능을 가지는 동시에 경제적인 개발 환경과 블록체인 보안을 공유하는 어플리케이션을 만들 수 있는, 대안 프레임워크(alternative framework)를 건설하려고 한다. 이더리움(Ethereum) 이더리움의 목적은 분산 어플리케이션 제작을 위한 대체 프로토콜을 만드는 것이다. 대규모 분산 어플리케이션에 유용할 것이라 생각되는 다른 종류의 제작기법을 제공하며, 빠른 개발 시간, 작고 드물게 사용되는 어플리케이션을 위한 보안, 다른 어플리케이션과의 효율적인 상호작용이 중요한 상황에 특히 주안점을 두고 있다. 이더리움은 튜링 완전 언어를 내장하고 있는 블록체인이라는 필수적이고 근본적인 기반을 제공함으로써 이 목적을 이루고자 한다. 누구든지 이 언어를 사용하여 스마트 컨트랙트, 분산 어플리케이션을 작성하여 소유권에 대한 임의의 규칙, 트랜잭션 형식(transaction format), 상태변환 함수(state transition function) 등을 생성 할 수 있다. 네임코인의 기본적인 형태는 두 줄 정도의 코드로 작성할 수 있고, 통화나 평판 시스템 관련 프로토콜은 스무 줄 내외의 코드로 만들 수 있다. 어떤 값을 저장하고, 특정한 조건들을 만족했을때만 그 값을 얻을 수 있게 하는 일종의 암호 상자인 스마트 컨트랙트 또한 이 플랫폼 위에 만들 수 있다. 이것은 비트코인의 스크립팅(scripting)이 제공하는 것보다 훨씬 강력한 10
11 기능들이 제공되기 때문에 가능한 것으로, 튜링-완전(Turing-completeness), 가치 인지능력(value-awareness), 블록체인 인지능력(blockchain-awareness), 상태(state)개념 등이 포함된다. 이더리움 어카운트(Ethereum Accounts) 이더리움에서, 상태(state)는 어카운트(account)라고 하는 오브젝트(object)들로 구성되어 있다. 각각의 어카운트는 20 바이트의 주소와 어카운트 간 값과 정보를 직접적으로 전달해 주는 상태변환(state transition)을 가지고 있다. 이더리움 어카운트는 다음 네 개의 필드를 가지고 있다. 논스(nonce): 각 트랜잭션이 오직 한번만 처리되게 하는 일종의 카운터 어카운트의 현재 이더(ether) 잔고 어카운트의 계약 코드 (존재한다면) 어카운트의 저장 공간 (초기설정(default) 상에서는 비어있음) 이더는 이더리움의 기본 내부 암호-연료(crypto-fuel) 이고, 트랜잭션 수수료를 지불하는데 사용된다. 보통 두가지 종류의 어카운트가 존재하는데, 프라이빗 키에 의해 통제되는 외부 소유 어카운트(Externally Owned Accounts) 와 컨트랙트 코드에 의해 통제되는 컨트랙트 어카운트(Contract Accounts)가 있다. 외부 소유 어카운트는 아무런 코드도 가지고 있지 않으며, 이 어카운트에서 메시지를 보내기 위해서는 새로운 트랜잭션을 하나 만들고, 서명(signing)을 해야 한다. 컨트랙트 어카운트는 메시지를 받을 때마다, 자신의 코드를 활성화시키고, 이에 따라 메시지를 읽거나 내부 저장공간에 기록하고, 다른 메시지들을 보내거나, 컨트랙트들을 차례로 생성하게 된다. 이더리움에서 컨트랙트는, 수행되거나 컴파일 되어야 할 어떤 것이라기 보다는, 이더리움의 실행 환경안에 살아있는 일종의 자율 에이전트(autonomous agents)로서, 메시지나 트랜잭션이 도착하면 항상 특정한 코드를 실행하고, 자신의 이더 잔고와, 영속적인 변수들을 추적하기 위해 자신의 키/값 저장소를 직접적으로 통제하는 역할을 한다. 메시지와 트랜잭션(Messages and Transactions) 이더리움에서 사용되는 트랜잭션(transaction)이란 용어는 외부 소유 어카운트가 보낼 메시지를 가지고 있는 서명된 데이터 패키지를 말한다. 이 트랜잭션은 다음을 포함하고 있다. 메시지 수신처 발신처를 확인할 수 있는 서명 발신처가 수신처로 보내는 이더의 양 선택적(optional) 데이터 필드 STARTGAS 값, 트랜잭션 실행이 수행되도록 허용된 최대 계산 단계수 GASPRICE 값, 매 계산단계마다 발신처가 지불하는 수수료 처음 세 항목은 암호 화폐에서는 거의 표준처럼 사용되는 값이다. 데이터 필드는 초기값으로 설정된 기능(function)은 가지고 있지 않지만, 버추얼 머신(virtual machine)은 컨트랙트가 이 데이터에 접근할 때 사용할 수행코드(opcode)를 가지고 있다. 예를 들어, 블록체인 위에 도메인 등록 서비스로 기능하고 있는 컨트랙트가 있을 경우, 이 컨트랙트로 보내지는 데이터는 두개의 필드를 가지고 있는 것으로 해석할 수 있다. 첫번째 필드는 등록하고자 하는 도메인이고, 두번째 필드는 IP 주소이다. 컨트랙트는 메시지 데이터로부터 이 값들을 읽어서 저장소 내 적당한 위치에 저장한다. 11
12 STARTGAS 와 GASPRICE 필드는 이더리움의 앤티-서비스거부(anti-DoS) 모델에 있어서 매우 중요한 역할을 한다. 코드내의 우연적이거나 악의적인 무한루프, 또는 계산 낭비를 방지하기 위해 각각의 트랜잭션은 사용할 수 있는 코드 실행의 계산 단계 수를 제한하도록 설정되어야 한다. 계산의 기본 단위는 gas 이고 보통, 계산 단계는 1 gas 의 비용이 소요되나, 어떤 연산은 더 비싼 계산 비용을 치루거나, 상태의 일부분으로 저장되어야 하는 데이터의 양이 많을 경우 더 많은 수의 gas 비용이 필요하게 된다. 또한 트랜잭션 데이터에 있는 모든 바이트는 바이트당 5 gas 의 수수료가 든다. 이러한 수수료 시스템의 의도는 어떤 공격자가 계산, 밴드위스, 저장소 등을 포함하여 그들이 소비하는 모든 리소스에 비례하여 강제로 수수료를 지불하게 하는데 있다. 따라서, 따라서 이런 리소스중 어떤 것이라도 상당량을 소비하는 네트웍과 연관된 트랜잭션은 대략 증가분에 비례한 gas 수수료를 가지고 있어야 한다. 메시지(Messages) 컨트랙트는 다른 컨트랙트에게 메시지 를 전달할 수 있다. 메시지는 따로 저장될 필요가 없는 이더리움의 실행 환경에서만 존재하는 가상의 오브젝트이다. 메시지는 다음의 것을 포함하고 있다. (암묵적으로) 메시지 발신처 메시지 수신처 메시지와 함께 전달되는 이더 선택적 데이터 필드 STARTGAS 값 본질적으로, 메시지는 외부 실행자가 아닌 컨트랙트에 의해 생성된다는 것을 제외하면 트랜잭션과 유사하다. 현재 코드 수행을 하고 있는 컨트랙트가 메시지를 생성하고 실행하라는 CALL opcode 를 만나게 되면 메시지를 생성한다. 트랜잭션과 마찬가지로, 메시지는 해당 코드를 실행하는 수신자 어카운트에 도달하게 된다. 따라서, 컨트랙트는 외부 실행자가 하는 것과 정확히 같은 방식으로 다른 컨트랙트와 관계를 맺을 수 있다. 트랜잭션이나 컨트랙트에 의해 할당된 gas 허용치는 그 트랜잭션과 모든 하위 실행에 의해 소모된 총 gas 에 적용된다. 예를 들어, 외부 실행자 A 가 B 에게 1000gas 와 함께 트랜잭션을 보내고, B 는 600 gas 를 소모한 뒤 C 에게 메시지를 보내고, C 의 내부 실행에 300 gas 를 소모한 후 반환하면, B 는 gas 가 모두 소모되기 전에 100 gas 를 더 사용할 수 있다. 이더리움 상태 변환 함수(Ethereum State Transition Function) 12
13 이더리움 상태 전이 함수 APPLY(S, TX) -> S 은 다음처럼 정의 될 수 있다. 1. 트랜잭션이 형식에 제대로 맞는지(즉, 올바른 개수의 값을 가지고 있는지) 체크하고, 서명이 유효한지, 논스가 발신처 어카운트의 논스와 일치하는지를 체크한다. 그렇지 않다면 오류를 반환한다. 2. STARTGAS * GASPRICE 로 트랜잭션 수수료를 계산하고, 서명으로부터 발신처주소를 결정한다. 발신처 어카운트 잔고에서 이 수수료를 빼고 발신자 논스를 증가시킨다. 발신처 잔고가 충분하지 않으면 오류를 반환한다. 3. GAS = STARTGAS 로 초기화 한후, 트랜잭션에서 사용된 바이트에 대한 값을 지불하기 위해 바이트당 gas 의 특정양을 차감한다. 4. 발신처 어카운트에서 수신처 어카운트로 트랜잭션 값을 보낸다. 수신처 어카운트가 존재하지 않으면 새로 생성한다. 수신처 어카운트가 컨트랙트이면, 컨트랙트의 코드를 끝까지 또는 gas 가 모두 소모될 때 까지 수행한다. 5. 발신처가 충분한 돈'을 가지고 있지 못해서 값 전송이 실패하거나, 코드 수행시 gas 가 부족하면, 모든 상태 변경을 원상태로 돌려놓는다. 단, 수수료 지불은 제외되고, 이 수수료는 채굴자 어카운트에 더해지게 된다. 6. 그 외에는, 모든 남아있는 모든 gas 에 대한 수수료를 발신처에게 돌려주고, 소모된 gas 에 지불된 수수료를 채굴자에게 보낸다. 예를 들어, 다음과 같은 컨트랙트 코드를 가정 해 보자. if!self.storage[calldataload(0)]: self.storage[calldataload(0)] = calldataload(32) 실제로 컨트랙트 코드는 로우-레벨 EVM 코드로 작성되나, 이 예제는 이해하기 쉽게 하기 위해, 이더리움 하이-레벨 언어중 하나인 Serpent 로 작성하였다. 이 코드는 EVM 코드로 컴파일 될 수 있다. 컨트랙트의 스토리지는 비어있다고 가정하고, 트랜잭션이 10 ether, 2000 gas, 0.001ether gasprice, 64 바이트의 데이터(0-31 바이트까지는 13
14 숫자 2 를 나타내고, 바이트는 CHARLIE 라는 문자열)를 보낸다고 가정하자. 이 경우 상태 변환 함수의 프로세스는 다음과 같다. 1. 트랜잭션이 유효하고 형식에 제대로 맞는지 확인한다. 2. 트랜잭션 발송처가 최소 2000 * 0.001=2 ether 를 가지고 있는지 확인하고, 그럴 경우, 발송처의 어카운트에서 2 ether 를 뺀다. 3. gas=2000 으로 초기화 한 후, 트랜잭션은 170 바이트 길이를 가지고, 바이트당 수수료는 5 라고 가정하면, 850 을 빼야 하고 결국 1150 gas 가 남게 된다. 4. 송신처 어카운트에서 추가 10 ether 를 빼고 이것을 컨트랙트 어카운트에 더한다. 5. 코드를 실행시킨다. 이 경우는 간단한데, 컨트랙트의 index 2 에 해당하는 스토리지가 사용되었는지 확인하고 (이 경우, 사용되지 않았다.) index 2 에 해당하는 스토리지 값을 CHARLIE 로 설정한다. 이 작업에 187 gas 가 소비됐다고 가정하면, 남아있는 gas 의 양은 = 963 이 된다 *0.001 = ether 를 송신처의 어카운트로 되돌려주고, 결과 상태를 반환한다. 트랜잭션의 수신처에 컨트랙트가 없으면, 총 트랜잭션 수수료는 제공된 GASPRICE 와 트랜잭션의 바이트 수를 곱한 값과 같아지고, 트랜잭션과 함께 보내진 데이터는 관련이 없어지게 된다. 메시지는 트랜잭션과 마찬가지 방식으로, 상태를 원래 상태로 되돌린다는 것에 주목하자. 메시지 실행 시 gas 가 부족하게 되면, 그 메시지 실행과 그 실행에 의해 촉발된 다른 모든 실행들은 원래대로 되돌려지게 되지만, 그 부모 실행은 되돌려질 필요가 없다. 이것은 컨트랙트가 다른 컨트랙트를 호출하는 것은 안전하다는 것을 의미한다. A 가 G gas 를 가지고 B 를 호출하면, A 의 실행은 최대 G gas 만을 잃는다는 것을 보장받게 된다. 컨트랙트를 생성하는 CREATE 라는 opcode 를 보면, 실행 방식은 대체로 CALL 과 유사하나, 실행 결과는 새로 생성된 컨트랙트의 코드를 결정한다는 차이가 있다. 코드 실행(Code Execution) 이더리움 컨트랙트를 구성하는 코드는 이더리움 버추얼 머신 코드 또는 EVM 코드 로 불리는 로우-레벨, 스택 기반의 바이트코드 언어로 작성된다. 이 코드는 연속된 바이트로 구성되어 있고, 각각의 바이트는 연산(operation)을 나타낸다. 보통, 코드 실행은 0 부터 시작하는 현재 프로그램 카운터를 하나씩 증가시키면서 반복적으로 연산을 수행하도록 구성된 무한 루프이고, 코드의 마지막에 도달하거나 오류, STOP, RETURN 명령을 만나면 실행을 멈추게 된다. 연산을 수행하기 위해서는 데이터를 저장하는 세가지 타입의 공간에 접근할 수 있어야 한다. 스택: last-in-first-out 컨테이너로 여기에 값들을 밀어 넣거나(push) 하거나 뺄(pop) 수 있다. 메모리: 무한대로 확장 가능한 바이트 배열 컨트랙트의 영속적인(long-term) 저장소(storage): 키/값 저장소. 계산이 끝나면 리셋되는 스택이나 메모리와는 달리 저장소는 영속적으로 유지된다. 코드는 또한 블록 헤더 데이터뿐만 아니라 특정 값이나, 발송자 및 수신되는 메시지의 데이터에 접근할 수 있고, 결과값으로 데이터의 바이트 배열을 반환할 수도 있다. EVM 코드의 공식 실행 모델은 놀랍도록 단순하다. 이더리움 버추얼 머신이 실행되는 동안, 모든 계산 상태는 (block_state, transaction, message, code, memory, stack, pc, gas) 튜플(tuple)로 정의 될 수 있고, block_state 는 모든 어카운트를 포함하는 전역상태(global state)로서 잔고와 저장소(storage)를 포함한다. 반복되는 매 코드 실행 14
15 순간의 시작 시, code 의 pc(프로그램 카운터)번째 바이트의 현재 명령이 실행되고, ( pc 가 코드의 길이보다 크면(pc >= len(code)) pc 는 0), 각각의 명령은 튜플을 어떻게 변화시킬지 대한 그 자신의 정의를 알고 있다. 예를 들어, ADD 는 스택에서 두 개의 아이템을 꺼내(pop), 그 합을 구한 후 다시 스택에 넣고(push) gas 를 1 만큼 감소시키고, pc 는 1 증가시킨다. SSTORE 는 스택에서 두 개의 아이템을 꺼내 이 아이템의 첫 번째 값이 가리키는 컨트랙트 저장소 인덱스에 두 번째 아이템을 넣는다. 이더리움 버추얼 머신 환경을 JIT 컴파일을 통해 최적화 하는 많은 방법이 있지만, 기본적인 이더리움은 수백줄의 코드로 구현될 수 있다. 블록체인과 채굴(Blockchain and Mining) 이더리움 블록체인은 여러면에서 비트코인 블록체인과 유사하나, 어느정도 차이점들이 있다. 이더리움과 비트코인에서의 각 블록체인 구조에 대한 주요 차이점으로는 비트코인과는 달리 이더리움 블록은 트랜잭션 리스트와 가장 최근의 상태(state) 복사본을 가지고 있다는 것이다. 그것 외에도, 두개의 다른 값 - 블록 넘버와 difficulty - 이 또한 블록내에 저장된다. 기본적인 이더리움 블록 검증 알고리즘은 다음과 같다. 1. 참조하고 있는 이전 블록이 존재하는지 그리고, 유효한지 확인한다. 2. 현재 블록의 타임스탬프가 참조하고 있는 이전 블록의 그것보다 크면서, 동시에 현 시점을 기준으로 15 분 후보다 작은 값인지 확인한다. 3. 블록 넘버, difficulty, 트랜잭션 루트, 삼촌 루트, gas 리미트등(기타 다양한 이더리움 로우 레벨 개념)이 유효한지 확인한다. 4. 블록에 포함된 작업 증명이 유효한지 확인한다. 5. S[0] 이 이전 블록의 마지막 상태(state)라고 가정 하자. 6. TX 를 현재 블록의 n 개의 트랜잭션 리스트라고 하자. 0 부터 n-1 에 대해, S[i+1] = APPLY(S[i], TX[i]) 로 설정하자. 어플리케이션이 오류를 반환하거나, 이 시점까지 블록에서 소모된 총 gas 가 GASLIMIT 를 초과하면 오류를 반환한다. 7. 채굴자에게 지불된 보상 블록을 S[n] 덧붙인 후 이것을 S_FINAL 이라 하자. 8. 상태 S_FINAL 의 머클 트리 루트가 블록 헤더가 가지고 있는 최종 상태 루트와 같은지를 검증한다. 이 값이 같으면 그 블록은 유효한 블록이며, 다르면 유효하지 않은 것으로 판단한다. 이러한 접근은 언뜻, 모든 상태를 각 블록에 저장할 필요성 때문에 매우 비효율적인 것처럼 보이지만, 실제로는 효율성의 측면에서는 비트코인과 비교할만 하다. 그 이유로는 상태가 트리 구조로 저장되고, 모든 블록 후에 단지 트리의 작은 부분만이 변경되기 때문이다. 보통, 인접한 두개의 블록간에는 트리의 대부분의 내용이 같고, 따라서 한번 데이터가 저장되면 포인터(서브트리의 해쉬)를 사용하여 참조될 수 있다. 패트리시아 트리(Patricia tree)로 알려진 이러한 종류의 특별한 트리는 머클 트리 개념을 수정하여 노드를 단지 수정할 뿐만 아니라, 효율적으로 삽입되거나 15
16 삭제하여 이러한 작업을 수행할 수 있도록 해준다. 또한, 모든 상태 정보가 마지막 블록에 포함되어 있기 때문에, 전체 블록체인 히스토리를 모두 저장할 필요가 없어지게 된다. 이 방법을 비트코인에 적용한다면 5-20 배의 저장 공간 절약의 효과가 생길 것이다. 물리적인 하드웨어 관점에서 볼 때, 컨트랙트 코드는 어디에서" 실행되는가 하는 의문이 쉽게 들 수 있다. 간단한 해답은 다음과 같다. 컨트랙트 코드를 실행하는 프로세스는 상태 전환 함수 정의의 한 부분이고, 이것은 블록 검증 알고리즘의 부분이다. 따라서, 트랜잭션이 블록 B 에 포함되면 그 트랜잭션에 의해 발생할 코드의 실행은 현재 또는 향후에 블록 B 를 다운로드 하고 검증하는 모든 노드들에 의해 실행될 것이다. 어플리케이션(Applications) 기본적으로, 이더리움을 이용하여 총 세 가지 카테고리의 어플리케이션을 제작할 수 있다. 첫번째 카테고리는 돈과 직접적으로 연관된 컨트랙트를 계약참여자들로 하여금 보다 강력하게 설정-관리하게끔 하는 금융 어플리케이션이다. 이의 예는 하위화폐 (=유로/달러 등의 상위화폐와 환율이 연동된 화폐를 지칭), 파생상품, 헷지컨트랙트, 예금용 전자지갑, 유언장, 그리고 최종적으로는 전면적인 고용계약 수준의 것들까지 포함한다. 두번째 카테고리는 준( 準 )금융 어플리케이션이다. 금전이 관여되어 있지만, 상당부분 비( 非 )화폐적인 면이 존재하는 계약을 위한 어플리케이션이 이에 해당된다. 이의 좋은 예로는 어려운 연산 문제의 솔루션을 제공할 시 자동적으로 포상금이 지급되는 계약이다. 마지막으로, 온라인 투표와 분권형( 分 權 形 ) 거버넌스(Governance)와 같이 금융과 관련성이 아예 없는 어플리케이션이 있다. 토큰 시스템(Token Systems) 블록체인토큰시스템(On-blockchain token system)은 미화/금 등과 연동된 하위화폐, 주식과 스마트자산* (Smart Property: 비트코인의 블록체인 상에서 소유권이 컨트롤/관리되는 자산), "위조불가능한(secure unforgeable)" 쿠폰, 그리고 통상적인 가치와 연결되어 있지 않은 기타 토큰시스템 (예, 인센티브 부여를 위한 포인트제도) 등에 이르기까지 다양한 형태의 거래시스템을 네트워크 상에서 구현하게끔 해주는 어플리케이션들을 갖고 있다. 이더리움에서 토큰시스템은 놀랍도록 쉽게 구현할 수 있다. 토큰시스템을 이해하는 데에 핵심은 아래와 같다. 모든 화폐 혹은 토큰시스템은 근본은 결국 한 가지 오퍼레이션만을 수행하는 데이터베이스이다. A 라는 주체로부터 X 단위의 화폐/토큰을 차감하고, 차감한 X 단위의 화폐/토큰을 B 에게 지급한다. 단, i. 거래 전, A 는 최소 X 단위를 보유하고 있었음 ii. A 가 이 거래를 승인함 이더리움에서 유저는 바로 위의 로직을 컨트랙트에 반영 시키기만 하면 된다. Serpent 에서 토큰시스템을 실행하는 기본적은 코드는 아래와 같다: def send(to, value): if self.storage[msg.sender] >= value: self.storage[msg.sender] = self.storage[msg.sender] - value self.storage[to] = self.storage[to] + value 16
17 이는 기본적으로 본 백서에서 설명한 은행시스템 의 "상태변환함수(state transition function)"를 아무런 가공없이 그대로적용시킨 것이다. 통화의 단위를 정의하고 배급하기 위한 최초 작업을 위해서, 또는 더 나아가 여타 컨트랙트들이 계좌의 잔금에 대한 정보요청을 처리하기 위한, 몇 줄의 코드가 추가적으로 더 쓰여져야 할 수도 있다. 하지만, 그 정도가 토큰시스템을 만드는 데 필요한 전부이다. 이론적으로, 이더리움에 기반한 하위화폐 체계로서의 토큰시스템은 비트코인에 기반한 메타화폐 (=비트코인 블록체인 연동된 화폐)가 갖고 있지 않는 중요한 특성을 지니고 있을 수 있다: 거래비용을 거래 시 사용한 화폐로 직접 지불할 수 있다는 점이 그것이다. 다음과 같은 과정을 통하여 이 특성은 발현될 수 있다: 컨트랙트을 집행하기 위해서는 발송인에게 지불해야 하는 비용 만큼의 이더 잔고를 유지해야 한다. 그리고 컨트랙트 집행 시 수수료로 받는 내부화폐(하위화폐)를 (상시 돌아가고 있는 내부화폐-이더 거래소에서) 즉각 환전하여 이더 잔고로 충전할 수 있다. 유저들은 그렇게 이더로 그들의 계좌들을 활성화 시켜야 하지만 각 컨트랙트를 통해 얻어지는 만큼의 금액을 이더로 매번 환전해 주기에, 한 번 충전된 이더는 재사용이 가능하다고 볼 수 있다. 금융파생상품(Financial derivatives) 파생상품은 스마트 컨트랙트 의 가장 일반적인 어플리케이션이며, 코드로 실행할 수 있는 가장 간단한 형태의 어플리케이션 중 하나다. 금융 컨트랙트를 실행하는 데 가장 주된 어려움은 대부분의 경우 계약에서 규정하는 자산에 대한 시세를 외부에서 참조해야 한다는 것이다. 예를 들어, 금융컨트랙트에 매우 필요한 것은 이더(또는 기타 가상화폐)-USD 변동성에 대해 헷지(hedge)하는 어플리케이션인데, 이 헷지컨트랙트를 실행하기 위해서는 ETH/USD 의 환율을 제공할 수 있는 컨트랙트가 필요하다. 환율을 알기 위한 가장 쉬운 방법은 주식시장의 NASDAQ 과 같은 특정한 제 3 자가 실시간으로 제공하는 데이터피드 컨트랙트를 통해서이고, 관여주체는 필요할 때 마다 환율을 업데이트할 수 있어야 하며, 여타 컨트랙트들과 환율에 대한 메시지를 주고받을 수 있는 인터페이스를 제공할 수 있어야 한다. 상기 핵심 요건들을 가정하고, 위 언급한 헷지컨트랙트는 다음과 같은 구조를 띌 것이다: 1. A 가 1000 이더를 입금할 때까지 기다린다 2. B 가 1000 이더를 입금할 때까지 기다린다 3. 입금된 이더의 달러가치를 기록하며 (환율은 Data feed 컨트랙트로 쿼리를 보냄으로써 계산한다), 이를 $X 라 한다 일 이후, 당시의 환율을 적용한 금액을 계산하여 A 에게는 $X 를 송금하고 당시 총금액에 나머지를 B 에게 송금하도록 A 또는 B 가 컨트랙트를 다시 활성화 시킬 수 있게끔 한다. 위와 같은 컨트랙트는 가상통화를 이용한 상거래의 향후 발전 가능성을 제시한다. 가상화폐 상거래 활성화의 장애물 중 하나는 가상화폐의 높은 변동성이다; 다수의 유저들과 상인들은 가상화폐 혹은 블록체인자산이 제공하는 보안성과 편의성에 대한 니즈가 있지만, 단 하루만의 그들의 자산가치가 23% 하락할지도 모른다는 리스크는 피하고 싶어한다. 이 문제에 대한 지금까지의 가장 보편적인 솔루션은 자산 발행자가 자산에 대한 보증을 서는 것이었다: 이는 곧, 빌헹자가 하위화폐를 만들어서 그를 통해서 통화량을 조절할 수 있는 권한을 갖고, 누군가가 일정 단위의 하위화폐를 지불하였을 때 그에 상응하는 특정한 베이스 자산 (예, USD, 금)으로 교환해주는 방식을 뜻한다. 이 방식을 본 사례에 적용한다면, 가상화폐 발행자는 가상화폐를 지불하는 자에게 그에 상응하는 베이스자산을 제공할 것이라고 공개적인 약속을 하는 것이다. 이 메커니즘은 비( 非 )가상화폐 혹은 비( 非 )디지털자산을 블록체인 자산화( 化 )자산화 시키는 결과를 낳는다 물론 가상화폐 발행자를 신뢰할 수 있다면 말이다. 17
18 다만, 현실적으로는 자산 발행인을 언제나 신뢰를 할 수 없으며, 몇몇 사례를 보면, 우리의 금융인프라는 자산보증 서비스가 존재하기에는 너무 취약하거나, 때로는 적대적이기도 하다. 파생상품은 이에 대한 대안을 제공해준다. 여기서 자산을 보증하기 위한 펀드를 제공하는 역활을 하나의 자산 발행자가 하는 것이 아니라 암호화 담보자산(cryptographic reference asset, 예: 이더)의 가격이 올라갈 것이라는 데에 베팅을 하는 투자자들(speculators)의 탈중앙화된 시장이 그 역할을 담당하게 된다. 파생상품을 통한 보증 또한 완전하게 탈중앙화된 방법론은 아니라는 것을 주의하기 바란다. 비록 자산 발행자을 통한 방법 보다 진입장벽(영업허가증 등이 필요 없음)이 없고 사기/조작 가능성이 줄어들기는 하지만, 신뢰성있는 제 3 기관이 USD/ETH 시세 또는 환율을 제공해야 하기 때문이다. 신원조회 / 평판 시스템(Identity and Reputation Systems) 최초의 알트코인(비트코인 이후에 생겨난 가상화폐)인 네임코인은 비트코인과 유사한 블록체인을 이용하여 사용자가 공공 DB 에 다른 데이터와 함께 본인의 이름을 등록하는 명의등록 시스템을 만들어냈다. 이의 주된 사용례는 bitcoin.org 와 (Namecoin 의 경우에는 bitcoin.bit ) 도메인명을 매핑하는 DNS 시스템이다. 다른 사용례에는 이메일 인증, 그리고 보다 진일보된 평판 시스템 등이 있다. 이더리움에서 네임코인과 같은 명의등록 시스템의 기본적인 컨트랙트는 아래와 같은 형태를 띈다: def register(name, value): if!self.storage[name]: self.storage[name] = value 이 컨트랙트는 매우 단순하게도, 이더리움 네트워크 안에서 저장되어 있는, 추가할 수는 있지만 수정하거나 지울 수 없는 데이터 베이스일 뿐이다. 누구든지 소량의 이더를 이용하여 본인의 명의를 등록할 수 있으며, 한 번 등록하면 영구적으로 보존된다. 보다 정교한 명의등록 컨트랙트는 다른 컨트랙트가 보내는 쿼리에 반응할 수 있는 함수조건이 걸려 있을 것으며, 명의 소유자 (곧, 최초 등록자)가 데이터를 변경하거나 명의소유권을 이전할 수 있는 메커니즘이 장착되어 있을 것이다. 혹자는 평판이나 인터넷신용도 기능등을 그 위에 추가할 수도 있다. 분산형 파일 저장소(Decentralized File Storage) 지난 몇년 동안, 드롭박스와 같은 웹 상에 파일을 저장시켜주는 인기있는 스타트업이 다수 생겨났다 (월 정액에 유저들이 하드드라이브를 백업 시켜 놓고 백업파일에 액세스 할 수 있는 비즈니스 모델임). 그러나, 현시점에서 파일저장 시장은 종종 상대적으로 비효율적일 때가 많다; 현재 존재하는 솔루션들의 월정액 가격을 보면 (특히 무료 할당량도 기업 할인도 없는 기가바이트 수준의 기업이 지불하는 월정액), 한달만 써도 전체 하드드라이브의 비용보다 더 비쌀 정도이다. 이더리움의 컨트랙트는 분산형 파일 저장소 생태계의 발전을 가능케한다. 이 생태계에서 유저 개개인은 본인의 하드드라이브를 대여해주는 대가로 소액의 돈을 받을 수 있으며 남는 하드디스크 공간은 파일저장의 비용을 더욱 낮추는 결과를 낳을 것이다. 분산형 파일 저장소의 핵심 기반은, 소위 분산형 드롭박스 컨트랙트 가 될 것이다. 이 컨트랙트는 다음과 같이 작동한다: 1) 유저가 업로드하려는 데이터를 블록으로 잘라내고, 2) 프라이버시를 위해 해당 데이터를 암호화 시킨 후, 3) 그 데이터로 머클트리를 만든다. 위 데이터에 대한 컨트랙트는 아래와 같은 룰에 의해서 유지된다: 18
19 N 개의 블록 마다 무작위 방식으로 (컨트랙트 코드로 접근가능한 전 블록의 해쉬에 기반한 무작위 방식) 머클트리의 인덱스를 뽑는다. 유저가 올린 파일에 해당하는 트리의 특정 인덱스에 대하여, 해당 데이터를 저장해주겠다는 첫 주체에게 (간소화된 지불증명이자 소유권증명의 의미를 띄는) X 이더를 지불한다. 파일을 올린 유저가 다시 자신의 파일을 다운로드 하고 싶을 때에는, 소액결제 채널 프로토콜(예, 32 킬로바이트에 1 szabo 를 지불한다)을 사용해서 파일을 복원할 수 있다; 수수료 측면에서 가장 효율적인 접근방법은 파일을 업로드한 유저가 저장이 끝나는 마지막까지 파일에 대한 트랜스액션을 공표하지 않고, 매 32 킬로바이트 마다 동일한 Nonce 를 갖고 있는 보다 수익성이 있는 트랜스액션으로 바꿔주는 방법이 있다. 비록 이 방식은 파일을 업로드한 유저가 다수의 랜덤한 노드들이 나의 파일을 계속 저장하고 있을 것이라고 믿어야 한다는 것을 전제하는 것 처럼 보이지만, 실제로는 유저는 업로드한 파일을 수많은 암호화된 조각으로 잘라내서 여러 노드들과 공유하고 또 컨트랙트를 통해서 외부 노드들이 내가 올린 파일을 저장하고 있다는 것을 모니터링함으로써 내가 올린 파일에 대한 분실 혹은 제 3 자에의한 도용이라는 리스크를 거의 0 에 가깝게 줄일 수 있다는 것이 분산형 드롭박스 컨트랙트 중요한 특징이다. 컨트랙트가 계속 돈을 지불하고 있다는 것은 곧 네트워크 상에서 누군가는 파일을 저장하고 있다는 것을 증명한다. 탈중앙화된 자율조직 (Decentralized Autonomous Organization) 탈중앙화된 자율조직 의 기본적인 개념은특정한 집합의 구성원 또는 주주들을 갖고 있는 가상 독립체(virtual entity)가 필요한 수만큼의 구성원의 동의하에(예, 67% 다수) 조직자금운용 권한 및 코드 변경 권한을 갖는다는 것이다. 구성원들은 그 조직이 어떻게 운영자금을 배분할지를 공동으로 결정할 것이다. DAO 의 자금을 배분하는 방식은 포상, 급여 형식부터 보다 색다른 내부화폐로 보상하는 형식까지 다양하다. 이것은 본질적으로 통상적인 기업이나 비영리재단에서 사용하는 법적인 장치들을 그대로 따르는 것이지만, 그 집행의 강제(enforcement)를 위해 암호화 블록체인 기술을 사용한다는 점이 차별점이다. 지금까지의 DAO 에 대한 논의는 주로 "자본주의적(capitalist)" 모델인 "탈중앙화된 자율기업(decentralized autonomous corporation, DAC)"에 관한 것이었는데, 이 DAC 는 배당을 받는 주주들과 매매가능한 지분을 가지고 있다. 이것에 대한 대안적인 형태로 "탈중앙화된 자율 커뮤니티(decentralized autonomous community)" 같은 개념도 생각해 볼 수 있는데, 이 안에서 구성원들은 의사결정에 있어서 모두 동일한 지분을 갖고있으며, 기존 구성원의 67%의 표결을 통한 동의가 있을 때 구성원을 충원하거나 탈퇴시킬 수 있을 것이다.그렇다면, 한사람이 오직 하나의 멤버십만을 가져야한다는 요건이 그 그룹에 의해 공동으로 시행될 필요가 있을 것이다. DAO 코딩에 관한 일반적인 개요는 다음과 같다. 가장 간단한 디자인은 단순하게도 구성원 2/3 가 동의/거부하였을 시 저절로 코드가 변경되는 컨셉이다. 비록 이론적으로 한 번 세팅된 코드는 바뀔수 없어도, 별도의 코드들을 각각 다른 컨트랙트들로 분리시켜서, 이것을 변경가능한 저장공간에 각각 넣어둔 다음, 이 코드들을 불러낼 수 있는 주소들을 제공함으로써 우리는 실제적으로 코드가 변경된 것과 같은 효과를 만들 수 있다. 아주 간단한 DAO 컨트랙에는 3 가지 종류의 트랙잭션들이 있을 수 있는데, 그 구분은 그 트랜잭션이 제공하는 데이터의 종류에 따른다: [0,i,K,V]는 저장공간 인덱스 k 에 있는 주소를 v 값으로 바꾸라는 인덱스 i 를 가진 제안을 등록 [0,i]는 제안 i 에 찬성하는 투표를 등록 [2,i] 는 충분한 투표가 이루어 졌을 때 제안 i 를 완결 19
20 컨트랙트는 상기 항목들 각각에 대한 '조건절'을 갖고 있을 것이다. 컨트랙트는 모든 오픈스토리지에 일어난 변화들과 '누가 그 변화들에 대해 투표했는가'에 대한 리스트를 보관하고 유지하게 될 것이다. 컨트랙트은 또한 전체 구성원 리스트도 보관한다. 어떤 스토리지 변경이던지 구성원의 2/3 의 투표를 받으면, 마지막으로 확정시키는 트랜잭션이 그 변경을 집행할 수 있게 된다. 이것보다 좀 더 발전된 형태는 내장 투표 기능을 이용해서 트랜잭션을 송신하거나, 구성원을 충원/탈퇴시키거나, 위임 민주주의 (Liquid Democracy 또는 Delegative Democracy, 투표위임등의 기능도 추가할 수 있을 것이다. 이런 투표위임을 통해 누구에게나 자신을 위해 투표할 수 있도록 위임할 수 있고, 또 이 권한은 다른 사람에게 다시 전가가 될 수도 있다. A 가 B 에게 위임하고, B 는 C 에게 위임하면, C 가 A 의 투표를 결정한다. 이러한 설계를 통해서, DAO 는 탈중앙화된 커뮤니티로 유기적으로 성장할 수 있으며, 더 나아가 누가 구성원인지 아닌지를 판단하는 기능을 전문가들에게 위임 할 수도 있도록 해줄 것이다. (물론 "현행시스템"과 달리, 각 커뮤니티 구성원들의 의견이 바뀜에 따라, 그러한 전문가들은 있을 수도/없을 수도 있게 된다.) 이것과 비교되는 다른 모델은 탈중앙화된 기업이라고 할 수 있는데, 여기에서 각 어카운트는 0 또는 그 이상의 지분을 가질 수 있고, 어떤 결정을 내리기 위해서는 지분의 2/3 가 필요하다. 그것의 가장 단순화된 핵심 골격은 자산 관리 기능, 지분을 매매할 수 있는 오퍼를 낼 수 있는 능력, 그리고 다른 오퍼들을 수락할 수 있는(아마도 컨트랙트내에 있는 주문매칭 메커니즘을 통해) 능력들을 포함하게 될 것이다. "이사회" 개념을 일반화하는 유동식 민주주의(Liquid Democracy) 스타일의 위임제도 또한 있게 될 것이다. 추가적인 어플리케이션(Further Applications) 1. 예금용 '전자지갑' 펀드를 안전하게 보관하고 싶은 A 가 펀드를 잃어버리거나 누군가에게 그녀의 Private key 를 해킹당할 것을 걱정한다고 가정해 보자. 그녀는 이더를 B 라는 은행과의 컨트랙트에 다음과 같은 방식으로 집어 넣을 것이다: A 만이 하루에 그녀가 소유하는 펀드의 최대 1%를 출금할 수 있다 B 또한 하루에 A 가 소유하는 펀드의 최대 1%를 출금할 수 있지만, A 는 그녀의 Private key 를 통해 트랜스액션을 발송함으로써 B 의 출금 권한을 없애버릴 수 있다 A 와 B 는 함께 어떤 금액도 출금할 수 있다. 일반적으로 하루의 1%라는 상한선은 A 에게 충분하며, 그 이상의 금액을 출금하고 싶을 시 A 는 B 에게 상한 조정 허가를 요청할 수 있다. Alice 의 Private key 가 해킹 당하였을 경우, B 에게 펀드를 새로운 컨트랙트로 이체 시키라고 요청할수 있다. A 가 본인의 Private key 를 분실하는 경우, B 는 오랜 시간에 걸쳐서라도 펀드의 금액을 출금할 수 있다. B 가 악당인 경우에는 A 는 B 의 출금 권한을 정지시킬 수 있다. 2. 작물보험 시세가 아닌 날씨 데이터피드를 이용해서 파생상품을 손쉽게 만들 수 있다. 아이오와주에 있는 농부가 강수량 데이터와 역비례하게 지불금이 산출되는 파생상품을 산다면, 가뭄이 있을 시 농부는 자동적으로 보상을 받을 수 있을 것이다. 이러한 어플리케이션은 자연재해 일반에 대한 보험상품으로 확대될 수 있을 것이다. 3. 탈중앙화된 데이터피드 20
21 쉘링코인(SchellingCoin) 이라는 프로토콜을 사용하여, 변량(Difference)을 다루는 금융계약(예, 로또)을 탈중앙화된 방식으로 운용할 수 있다. 쉘링코인은 다음과 같이 작동한다: 하나의 주어진 기준치(예, ETH/USD 시세)에 대해 N 명의 참여자가 각각 자신들이 맞다고 생각하는 값을 시스템에 제공한다. 이러한 값들은 그 값의 크기에 따라 순위가 매겨지며, 이 때 25 번째 퍼센타일과 75 번째 퍼센타일 사이에 있는 값을 제시한 사람은 토큰 1 개를 보상으로 받게 된다. 이렇게 되면 보상을 받기 위해서 모든 참가자들은 다른 사람들이 제시했을 똑같은 값을 제시하고자 할 것이고, 많은 다수의 참여자가 현실적으로 동의할 수 있는 유일한 값은 결국 명백한 기본값인 참값(truth)이 될 것이다. 이것은 ETH/USD 가격, 베를린의 온도, 심지어는 어려운 연산문제의 결과값까지도 포함하는, 어떤 수의 값들도 이론적으로 제공해줄 있는 탈중앙화된 프로토콜을 만들 수 있게 해준다. 4. 스마트 멀티시그 공탁 계좌 비트코인은 멀티시그 트랜잭션을 만들 수 있게 해주는데, 이는, 가령, 5 개의 키 중 3 개를 갖고 서명해야 출금을 허용하는 방식의 트랜잭션을 지칭한다. 이더리움은 보다 높은 세밀도를 제공한다. 예를 들어, 5 개 중 4 개가 있으면 기금은 전체를 사용할 수 있고, 5 개 중 3 개가 있으면 하루에 기금의 10%을 사용할 수 있고, 2 개가 있으면 하루에 0.5%를 사용할 수 있다. 추가적으로, 이더리움의 멀티시그는 동시에 집행해야 할 필요가 없다. 즉, 두 주체는 다른 시기에 블록체인에 본인의 전자 서명을 등록할 수 있고 최종의 전자서명이 이루어졌을 시 자동적으로 트랜잭션이 네트워크로 보내진다. 5. 클라우드 컴퓨팅 EVM 기술을 사용하여 입증 가능한 컴퓨팅 환경을 만들 수 있다. 입증 가능한 컴퓨팅 환경의 예시는 다음과 같다: 한 유저가 다른 유저에게 연산을 수행하게 한 후 랜덤한 시점에 연산을 수행한 주체에게 미리 설정된 연산 체크포인트가 올바른지에 대한 증명을 요구할 수 있다. 이 기술은 누구든지 자신의 데스크탑, 노트북, 또는 전문화된 서버를 갖고 참여할 수 있는 클라우드컴퓨팅 시장을 창조하게 될 것이며, 함께 연산의 정확성을 무작위 추출검사를 함으로써 시스템의 신뢰성이 더욱 강화될 것이다 (즉, 노드들이 이익을 내기 위해서는 유저들을 속일 수 없게 된다). 물론 그러한 시스템은 모든 작업들을 수행하는 데에 적합한 것은 아니다; 예를 들어, 높은 수준의 프로세스간 커뮤니케이션이 필요한 작업 같은 경우 여러 개의 클라우드 노드들로 수행하기에는 적합하지 않다. 하지만 그 외 작업들은 보다 수월하게 병렬진행이 가능하다; SETI@home, folding@home, 유전자 알고리즘 같은 경우는 분산화된 클라우드 컴퓨팅 플랫폼에서 쉽게 작업할 수 있는 프로젝트들이다. 6. P2P 도박 Frank Stajano 나 Richard Clayton 의 Cyberdice 같은 P2P 도박 프로토콜들은 모두 이더리움의 블록체인 위에 구현될 수 있다. 가장 단순한 도박 프로토콜은 다음 블록의 해시값의 차이에 대한 컨트랙트이며, 0 에 가까운 수수료와 그 누구도 사기를 칠 수 없는 보다 발전된 프로토콜이 그 위에 얹혀질 수 있다. 7. 예측 시장 오라클(Oracle) 혹은 쉘링코인(Schelling Coin) 등을 갖고, Robin Hanson 이 주창한 것과 같은 예측 시장도 쉽게 구현할 수 있다. 쉘링코인과 함께 예측시장은 분권화된 조직들에 대한 거버넌스 프로토콜로서 퓨터카(Futarchy, 역주: 정치인들이 국가복지에 관한 정책을 정의하면 예측시장이 정책 중 가장 긍정적인 효과가 많을 수 있는 정책을 결정하는 형식의 거버넌스)의 첫 번째 주류 어플리케이션이 될 수 있다. 8. 블록체인상의 탈중앙화된 장터 신원조회 / 평판 시스템을 기반으로 원활하게 돌아가는 P2P 장터를 구축할 수 있다. 그 밖의 이슈(Miscellanea And Concerns) 21
22 수정된 GHOST 도입(Modified GHOST Implementation) GHOST(Greedy Heaviest Observed Subtree)프로토콜은 Yonatan Sompolinsky 와 Aviv Zohar 에 의해 2013 년 12 월에 처음 소개된 혁신이다. GHOST 의 문제의식은, 현재 빠른 확인시간(confirmation times)을 가지고 있는 블록체인들이 높은 스테일(stale) 비율로 인해 보안성 저하라는 문제를 겪고 있다는 것인데, 이는 블록들이 네트워크를 통해 전파되는데 일정한 시간이 걸리기 때문이라는 것이다. 만일 채굴자 A 가 하나의 블록을 채굴했는데, 이 블록이 채굴자 B 에게 전파되기전에 채굴자 B 가 다른 또 하나의 블록을 채굴했다고 하면, 채굴자 B 의 블록은 결국 낭비될 것이고, 네트워크 보안에 기여하지 못하게 될 것이다. 중앙집중화- 게다가 중앙집중화(centralization) 이슈도 있다; 만일 채굴자 A 가 30%의 해시파워를, 블록생성주기가 짧은 블록체인 그리고 B 가 10%의 해시파워를 가지고 있다면, A 가 '스테일 블록(Stale block)'을 일수록 큰 해시파워를 가지는 풀 생산할 위험성은 매번 70%가 될 것이고(왜냐하면 다른 30%의 경우에는 A 가 마지막 에서 마이닝을 해야 효율성이 커 블록을 만들게 되었고, 따라서 즉각적으로 채굴데이터를 가지게 되기 때문이다), 반면 진다는 것이다. 해시파워가 적으 B 는 매번 90%의 경우에 스테일 블록을 생산하게 될 위험성을 가지고 있다. 따라서 면 적을 수록 스테일 블록이 될 만일 블록 주기가 스테일 비율이 높은 것에 필요한 만큼 충분히 짧다면, A 는 단순히 가능성이 커진다. 따라서 전체해 크기가 크다라는 사실 자체만으로 훨씬 더 높은 효율성을 가지게 된다. 이러한 두 가지 시파워의 상당부분을 차지하는 효과가 결합되어서, 블록주기가 짧은 블록체인에서는, 높은 해시파워 점유율을 가진 독점적인 풀이 생기게 될 가능성 단일한 풀이 채굴과정에 대한 사실상의 통제권을 가지게 될 가능성이 매우 높아진다. 이 높다는 이슈이다. 'Sompolinsky'와 'Zohar'가 설명했듯이, GHOST 는 어느 체인이 가장 스테일 블록(Stale block)- 긴(longest) 것인지 계산할 때 스테일블록도 포함으로써 위에서 제기한 첫 번째 이슈, 즉 블록생성에 성공하였고, 검증 작 네트워크 보안 손실이라는 문제를 해결한다. 다시 말해서 어느 블록이 가장 큰 전체 업 시, 오류가 없어서 네트워크 작업증명을 가지고 있는지 계산함에 있어서, 그 블록의 모블록(parent)과 그 를 통해 전파되었으나, 더 빨리 조상(ancestors)뿐만 아니라, 그 블록의 스테일 자손(stale descendants, 이더리움의 전파 된 다른 채굴자에 의한 블 용어로는 삼촌 )까지도 더한다는 것이다. 중앙화라는 두 번째 문제를 해결하기 위해서 록에 순위가 밀리는 바람에 주체 우리는 Sompolinsky 와 Zohar 가 설명한 프로토콜을 넘어서서, 스테일 블록들에 인에 산입되지 못한 블록이다. 대해서도 블록보상을 제공한다. 스테일 블록도 기본 보상의 87.5%를 받게 되며, 그 이더리움에서는 이러한 탈락블 스테일 블록을 포함하고 있는 사촌이 나머지 12.5%를 받는다. 하지만 수수료는 록도 여전히 주체인블록 보상의 삼촌들에게는 주어지지 않는다. 87.5%만큼의 보상을 받으며 보 안성을 강화하는 역할을 수행하 이더리움은 7 단계 레벨만 포함하는 단순화된 GHOST 버전을 구현한다. 그것은 다음과 게 된다. 같이 구체적으로 정의된다; 하나의 블록은 반드시 하나의 모블록을 지정해야 하며, 0 또는 그 이상의 삼촌을 지정해야 한다. 블록 B 에 포함된 삼촌은 다음과 같은 속성들을 가지고 있어야 한다. o B 의 k 번째 조상의 직접적인 자손이어야 한다. 여기서 2 <= k <= 7. o B 의 조상이어서는 안 된다. o 유효한 블록 헤더여야 하지만, 이전에 확인되었을 필요도, 또는 심지어 유효한 블록일 필요도 없다. o 이전 블록들에 포함된 모든 삼촌들, 그리고 같은 블록에 포함된 모든 다른 삼촌들과는 달라야 한다(중복포함방지) 블록 B 에 있는 각 삼촌 U 에 대해, B 의 채굴자는 코인베이스 보상에 더해 추가로 3.125%를 더 받고, U 의 채굴자는 기본 코인베이스 보상의 93.75%를 받는다. 22
23 단지 최대 7 세대만 삼촌을 포함할 수 있는 제한된 GHOST 버전을 사용하는 이유는 두 가지이다. 첫째, 무제한 GHOST 는 하나의 블록에 대해 어떤 삼촌이 유효한지에 대한 계산을 매우 복잡하게 만든다.. 둘째, 만일 이더리움과 같은 방식의 보상을 하면서도 무제한 GHOST 를 적용하게 되면 채굴자들이 공격자의 체인이 아니라 '주체인(mainchain)'에서 채굴을 할 동기를 잃게 될 것이다. 수수료(Fees) 블록체인에 올려지는 각 트랜잭션은 그것을 다운로드하고 검증하기 위한 비용을 네트워크에 부과하기 때문에, 남용을 방지하는 어떠한 규제 메커니즘, 일반적으로는 트랜잭션 수수료가 필요하게 된다. 비트코인에서 사용되는 기본적인 접근방법은 순수하게 자발적인 수수료를 징수하면서, 채굴자들이 게이트키퍼(gatekeeper)로서의 역할을 하고 유동적으로 최저액을 설정하도록 하는 것이다. 이런 접근방법은 비트코인 커뮤니티에서 매우 환영 받아왔는데, 그것이 시장-기반 이기 때문에, 채굴자와 트랜잭션 송신자들간의 수요와 공급이 그 가격을 결정한다는 이유에서였다. 하지만 이런 식의 사고방식에는 문제가 있는데, 트랜잭션 처리는 시장에서 일어나는 것이 아니라는 점이다. 트랜잭션 처리를 채굴자가 송신자에 제공하는 하나의 서비스로 해석하는 것이 직관적으로 솔깃해 보이기는 하지만, 실제적으로는 채굴자가 포함하는 모든 트랜잭션들은 네트워크의 모든 노드들에 의해 처리되어야 하고, 따라서 트랜잭션처리에 필요한 대부분의 비용은 제 3 자가 부담하는 것이지, 그 트랜잭션을 포함할지 말지를 결정하는 채굴자들이 아니라는 것이다. 그러므로 공유지의 비극(tragedy-of-the-commons) 문제들이 매우 일어나기 쉽다는 것이다. 하지만, 이러한 시장기반 메커니즘의 결함은 어떤 부정확한 단순화 전제들이 주워졌을 때, 마술처럼 그 결함자체를 상쇄하게 된다. 그 주장은 다음과 같다. 다음을 전제해 보자: 1. 하나의 트랜잭션이 k 개의 작업들(operations)을 초래하는데, 이 트랜잭션을 포함하는 채굴자에게 kr 만큼의 보상을 제공하게 된다. 여기서 R 은 송신자에 의해서 설정되고, k 와 R 은 (대략적으로) 채굴자에게 사전에 노출된다. 2. 하나의 작업은 어떤 노드에 대해서든 C 만큼의 처리비용을 가진다(즉, 모든 노드들은 똑같은 효율성을 가지고 있다). 3. N 개의 채굴노드들이 있고, 각각은 정확히 똑같은 처리파워(즉, 전체의 1/N)를 가지고 있다. 4. 채굴을 하지 않는 완전노드(full nodes)는 없다. 채굴자는 어떠한 트랜잭션이 그 비용보다 기대보상이 클 경우 처리하려고 할 것이다. 따라서, 기대 보상은 kr/n 인데, 왜냐하면 채굴자는 다음 번 블록을 처리할 1/N 확률을 가지고 있으며, 이 채굴자에게 처리비용은 단순히 kc 이다. 그러므로 채굴자들은 kr/n > kc 이거나, R > NC 일 때 트랜잭션들을 포함하려 할 것이다. 여기서 R 은 송신자에 의해 제공된 단위작업(pre-operation)당 수수료이고, 따라서 이것은 송신자가 그 트랜잭션에서 보게 될 혜택에 대한 '하한값'이 되고, NC 는 하나의 작업을 처리하기 위해 전체 네트워크에 부과된 비용임을 주목하자. 따라서 채굴자들은 비용보다 전체 공리적인 혜택이 큰 트랜잭션들만 포함하려 하는 인센티브를 갖게 된다. 하지만 현실에서는 이러한 가정들이 맞지 않는 몇 가지 중요한 차이들이 있다. 23
24 1. 채굴자는 다른 검증 노드들보다 트랜잭션을 처리하는데 더 많은 비용을 지불하게 되는데, 왜냐하면, 추가적인 검증시간은 블록전파를 지연시키고, 따라서 블록이 스테일되는 확률을 증가시키기 때문이다. 2. 비채굴 완전노드(full note)들이 존재한다. 3. 채굴 파워의 분포는 실제로 심각하게 불평등하게 될 수 있다. 4. 네트워크에 피해를 주는 이해관계를 가진 투기자들, 정치적 적, 그리고 일탈자들이 존재하고, 그들은 다른 검증노드가 지불하는 비용보다 훨씬 적은 비용이 들게 될 그런 컨트랙트들을 교묘하게 만들 수 있다. (1)은 채굴자가 더 적은 수의 트랜잭션들을 포함하게 되는 경향을 제공하게 되고, (2)는 NC 를 증가시키게 되며, 따라서 이 두 가지의 효과들은 부분적으로는 서로를 상쇄한다. (3)과 (4)가 주요한 문제인데, 이것들을 해결하기 위해, '플로팅 상한값(floating cap)'을 도입한다. 어떤 블록이던지 BLK_LIMIT_FACTOR 곱하기 장기 지수 이동평균(the long-term exponential moving average)보다 더 많은 오퍼레이션들을 가질 수 없다는 것이다. 정확히는: blk.oplimit = floor((blk.parent.oplimit * (EMAFACTOR - 1) + floor(parent.opcount * BLK_LIMIT_FACTOR)) / EMA_FACTOR) BLK_LIMIT_FACTOR 와 EMA_FACTOR 은 상수이며 각각 잠정적으로 와 1.5 로 정해질 것이지만, 추후 분석 후에 바뀔 가능성이 많다. 비트코인에 있어서 큰 블록크기를 막는 또 다른 요인도 있다. 큰 블록이 전파되는 데에 더 오래 걸리기 때문에, 스테일 될 가능성이 높다는 점이다. 이더리움에서도 높은 가스(GAS)사용 블록은 전파되는데 더 오래 걸리는데, 그것은 크기가 물리적으로 크다는 점과, 트랜잭션 상태변환들(state transitions)을 검증 처리하는데 더 오래 걸린다는 점 때문에 그러하다. 이러한 지연 불이익(delay disincentive)은 비트코인의 경우에는 중요한 고려사항이지만, 이더리움의 경우에는 GHOST 프로토콜 덕분에 중요도가 낮아진다. 따라서 조정된 '블록리미트(block limit)'로 인해, 보다 안정적인 기본기준(baseline)을 얻을 수 있게 된다. 연산과 튜링완전성(Computation And Turing-Completeness) 중요한 점은 이더리움 가상 머신(EVM)이 튜링-완전하다는 것이다. 즉 EVM 은 무한 순환을 포함한 상상가능한 모든 계산 수행을 코딩할 수 있다. EVM 코드는 순환 계산을 다음 두 가지 방법으로 수행한다. 첫 번째는 JUMP 명령어로 코드의 이전 장소로 되돌아가고, JUMPI 명령어로 while x < 27: x = x * 2 같은 문장처럼 조건에 따라 건너뛰게 하는 것이다. 두 번째는 한 계약이 재귀 반복을 통해 순환을 일으킬 가능성이 있는 다른 계약을 호출하는 것이다. 이것은 자연스럽게 어떤 문제를 야기한다: 악의적인 사용자가 계산을 무한 순환에 빠뜨리는 방법으로 채굴자와 풀 노드를 마비시켜버릴 수 있을까? 컴퓨터 학계에서 정지문제(halting problem)라고 알려진 유명한 문제를 통해 이런 이슈를 피할 수 없음을 알 수 있다. 일반적으로 어떤 주어진 문제가 궁극적으로 멈추는지 아닌지를 미리 판별할 방법은 없다. 상태변환 과정에서 설명했듯이, 한 거래에 최대로 계산할 수 있는 단계 수를 설정함으로써 우리는 해답을 얻을 수 있다. 만약 계산 단계가 그 최대수보다 더 많으면 계산은 원점으로 돌아가지만 수수료는 그대로 지불된다 메시지들도 같은 방법으로 작동한다. 우리가 제시한 해답의 의미를 더 잘 이해하기 위해, 아래와 같은 몇 가지 보기를 생각해보자. 24
25 한 악의적 공격자가 무한 순환을 실행하는 계약을 만들어 채굴자로 하여금 무한 순환을 실행하도록 거래를 보냈다고 하자. 채굴자는 거래를 진행하고 무한 순환을 실행해 가스를 다 소모해서 실행 도중에 멈춘다고 하더라도, 거래는 여전히 유효하고 채굴자는 여전히 공격자에게 이미 실행된 각 계산 단계마다의 수수료를 요구할 수 있다. 한 악의적 공격자가 채굴자에게 계산을 오랫동안 계속하게 할 목적으로 아주 긴 무한 순환 프로그램을 짰다고 하자. 계산이 끝났을 때 아주 조금의 블록만이 생성되어 채굴자가 수수료를 요구하기 위해 그 거래를 포함하는 것이 불가능하도록 만드는 게 악의적 공격자의 목적이다. 하지만, 그 공격자는 실제 실행되는 계산 단계의 상한선을 규정하는 STARTGAS 명령어에 대한 값을 제출해야만 하고, 따라서 채굴자는 해당 계산이 과도하게 많은 단계의 수를 필요로 한다는 것을 계산 전에 미리 알게 된다. 예를 들어 send(a,contract.storage[a]); contract.storage[a] = 0, 같은 명령이 들어간 계약이 있다고 하자. 한 악의적 공격자가 이 계약을 본 후 첫 번째 계산 단계만 실행시키고 두 번째 단계는 실행할 수 없을 만큼의(예를 들어 예금 인출만 한 다음 장부에 기록되는 스텝은 실행되지 않게) 가스만 넣고 거래를 진행시켰다고 하자. 계약 작성자는 이런 공격에 대해 방어를 걱정할 필요가 없다. 왜냐하면 계산 실행이 도중에 멈추면, 해당 변화도 원상복구되기 때문이다. 어떤 금융 계약이 9 개의 금융상품 자료값의 평균을 취해 위험을 최소화하도록 작동하고 있다고 하자. 그 중 DAOs 섹션에서 설명된 것 같은 가변주소요청 메커니즘을 통해 변경이 가능하도록 디자인 된 하나의 자료값을 악의적 공격자가 취한다고 하자. 그렇게 함으로써 이 금융 계약으로부터 펀드를 찾으려는 모든 시도에 대해 가스가 다 소모되도록 시도하게 된다. 하지만 금융 계약은 이 문제를 막기 위해 메시지 위에 가스 한도를 설정해 두는 것으로 공격을 방어할 수 있다.. 튜링-완전에 대한 대칭적인 개념은 튜링-불완전이다. 즉 JUMP 명령어나 JUMPI 명령어가 존재하지 않으며, 그 어떤 주어진 시간에도 오직 각각의 계약의 복사본 하나만이 허용된다. 이런 시스템 아래에서는 위에 서술된 수수료 시스템이라든지 우리가 제시한 해답의 효율성을 둘러싼 불확실성에 관한 논쟁은 불필요할 것이다. 한 계약을 실행하는데 드는 비용은 프로그램의 크기에 따라 상한선이 정해질 것이기 때문이다. 나아가, 튜링-비완전성은 그리 큰 제한도 아니다. 우리가 현재까지 상상했던 계약 가운데, 순환 명령을 필요로 했던 것은 단 하나 뿐이었다. 그리고 그 순환 명령조차도 프로그램 코딩에서 한 문장을 26 번 반복함으로써 없앨수 있었다. 튜링-완전이 함의하고 있는 심각성과 그 제한적인 이점을 생각해볼 때, 왜 튜링-불완전 언어를 쓰면 안되는 걸까? 하지만 현실적으로, 튜링-불완전성은 순환 문제와 악성 공격에 대한 깔끔한 해답이 아니다. 왜 그런지를 알기 위해 아래와 같은 예제 계약을 보자. C0: call(c1); call(c1); C1: call(c2); call(c2); C2: call(c3); call(c3);... C49: call(c50); call(c50); C50: (프로그램의 한 단계를 실행한 후 그 변화를 저장소에 기록한다.) 이제 A 에게 거래를 보내자. 51 번의 거래에서 우리는 2 의 50 승의 계산 단계를 계속하는 계약을 보낸다..채굴자들은 각 계약에 따른 계산 단계의 최대 수와 다른 계약을 재귀적으로 호출하는 계약에 대한 계산 단계 수를 모두 확보함으로써, 이런 논리 폭탄을 사전에 감지하려고 시도할 수 있을지도 모른다. 하지만 이런 시도는 채굴자들이 다른 계약을 호출하는 계약은 다루지 못하게 만든다. (왜냐하면 위의 모든 26 개 계약의 작성과 실행은 한 줄의 계약으로 쉽게 합쳐질 수 있기 때문이다.) 다른 문제적 지점은 메시지의 주소 필드는 변수라는 점이다. 그래서 일반적으로, 주어진 계약이 사전에 미리 호출하는 다른 계약이 뭔지를 판별하는 것조차 불가능할지도 모른다. 25
26 그래서,결국 우리는 놀라운 결론에 도달한다. 튜링-완전은 놀랍도록 다루기 쉬우며, 만약 튜링완전성이 없으면 정확히 같은 계약으로 대체할 수 없는 한, 마찬가지로 다루기가 놀랍도록 어렵다는 점이다. 그렇다면, 그냥 그 프로토콜을 튜링-완전하게 놔두는 것이 좋을 것이다. 통화 그리고 발행(Currency and Issuance) 이더리움(Ethereum) 네트워크는 그 안에서 자체적으로 통용되는, 이더(Ether) 라는 화폐를 가지고 있다. 이더는 여러가지 가상자산들간의 효율적인 교환을 가능하게 하는 매개물의 역할을 하며, 또한 트랜잭션 수수료(transaction fee)를 지불하기 위한 방법을 제공한다. 사용자의 편의와 향후 있을 지 모르는 논쟁을 예방하는 차원에서, 이더(Ether)의 각 단위에 대한 명칭은 다음과 같이 미리 정해졌다. (비트코인 명칭과 관련하여 벌어지는 논쟁 참조) 1: wei (웨이) 1012: szabo (재보) 1015: finney (피니) 1018: ether (이더: ETH) 위 명칭들은, 미화 명칭인 달러 와 센트 또는 비트코인의 BTC 와 사토시 등의 확장개념으로 생각하면 이해하는데 도움이 될 것이다. 가까운 미래에, 이더(ether) 는 일반 거래(transaction)를 위해, 피니(finney) 는 소액결제를 위해, 그리고 재보(zsabo) 와 웨이(wei) 가 수수료나 프로토콜도입 등과 관련된 기술적논의를 위해 사용될 것으로 기대된다. 나머지 명칭들은, 지금 당장은 클라이언트에 포함시키지 않는다. 나머지 명칭들shannon, babbage, lovelace 등이 있다. 지금의 암호화화폐가 존재할 수 있 도록 기여한 사람들을 기리 기 위해 그들의 이름을 화폐 단위로 사용하고 있다. 화페발행 모델: BTC 당 개의 가격으로 이더를 판매한다. Matercoin 이나 NXT 와 같은 다른 암호화화폐 플랫폼에서 성공적으로 사용했던 방법으로, 이더리움 조직을 금전적으로 지원하고 개발에 필요한 비용을 댄다. 이 시기에 이더를 구매하는 구매자들은 큰 폭의 할인을 통해 저렴하게 이더를 얻게 된다. 이렇게 모인 자금은 전액, 개발자를 위한 월급과 보상, 그리고 여러가지의 이더리움 관련 영리와 비영리프로젝트를 위한 투자금으로써 사용된다. 판매 된 총 이더(60,102,216 ETH)의 배만큼(5,950,110)의 이더가 신규발행 되어, 이더리움 런칭 전의 초기기여자들과 이더로 이미 발생 된 비용에 대한 미지급금 을 처리하기 위해 이더리움조직(Ethereum organization)에게 분배된다. 또 다른 배만큼의 이더는 장기보유금으로 신규 발행하여 적립해둔다. 채굴시점 이후부터 영구히 매년, 총 판매수량(60,102,216 ETH)의 0.26 배만큼(15,626,576)씩을 채굴자에게 신규 발행해준다. 분류 런칭 시 런칭 1 년 후 런칭 5 년 후 초기 판매 이더 총량에 대한 배수 배 배 배 구매자 83.5% 68.6% 40.0% 런칭 전 발생한 미지급금을 위한 보유금(endowment pool) 8.26% 6.79% 3.96% 런칭 후 적립금(endowment pool) 8.26% 6.79% 3.96% 채굴자 채굴량 0% 17.8% 52.0% 26
27 이더 장기 공급 성장률(%) 매년 신규발행량이 일정함에도 불구하고, 비트코인이 그러한 것처럼, 발행된 총 이더에 대한 신규 이더의 발행률은 그 비중이 0 을 향하여 계속 줄어들게 된다. 위 모델에서 결정되어야할 두 가지 선택이 있다. (1) 하나는, 재단보유금(endowment pool) 의 존재유무와 그 규모이며, (2) 둘째는 총 발행코인량이 정해져 있는 비트코인과는 달리, 신규코인을 끊임없이 발행해야 하는지의 여부이다. 재단보유금(endowment pool) 의 정당성에 대해서는 다음과 같이 설명할 수 있다. 만일 이러한 보유금이 없는 상황이라면, 같은 인플레이션율을 유지하기 위해서는 연간 발행량이 26%가 아닌, 21.7%로 줄어들어야 한다. 그렇게 되면 이더의 총량은 16.5% 줄어들게 되며, 각 이더의 가치는 19.8%증가하게 된다. 이 경우 균형을 위해서는 19.8%의 이더가 더 프리세일에서 판매되어야 한다. 그렇게 되면 각 경우의 이더 가치는 서로 정확히 동일해진다. 그렇게 되면 이더리움 재단이 배의 BTC 를 가지게 되는데, 이를 처음 BTC 액수(1 배수)와 추가된 배수의 BTC 로 나누어보면 결국 상황이 동일해진다는 점을 알 수 있다. 그러나 한 가지 차이점은 이 경우 조직이 가진것은 이더가 아닌 BTC 이므로, 이더의 가치를 높이기 위한 인센티브를 얻지 못한다는 점이다. 여기서의 정당성은 개발금을 네트워 크에서 지원여부 문제라기 보다는(당 연히 지원하는 것을 전제하며), 프리 세일 때 이더교환권을 팔아서 얻은 BTC를 쓰는 것이 나은지, 아니면 처 음부터 이더로 발행해서 가지고 있는 것이 나은지에 대한 문제이다. 금액상 으로는 차이가 없으므로, 이더의 형태 로 조금이라도 더 가지고 있는 편이 동기부여에 도움이 된다는 주장이다. 정해진 양의 이더를 영구적으로 신규발행하는 모델(permanent linear supply growth 공급성장률=신규발행 이더량/기발 model)은 비트코인이 겪고있는 부의 집중현상 을 완화시킬 수 있다. 또한 현재 또는 행 이더총량*100 미래의 참여자들이 계속해서 이더를 시장이 아닌 채굴을 통해 얻을 수 있는 기회를 제공한다. 동시에, 공급성장률(Supply Growth Rate) 은 계속해서 0 을 향해 줄어들게 된다. 이론적으로는 다음의 현상을 예상해 볼 수 있다. 시간이 흐름에 따라 사용자들의 부주의, 죽음 등으로 인해 현실적으로 일부의 이더들이 계속해서 시장에서 사라지게 된다. 이렇게 사라지는 이더로 인해 점점 줄어드는 시장유통가능 이더총량(the total currency supply in circulation) 은 매년 신규발행되는 이더에 의해 균형을 이루게 된다(ex. 만일 총 이더량이 26 배수(1,562,657,616 ETH)에 달했고, 매년 이 중 1%(0.26 배수)에 해당하는 이더가 소실된다면, 이는 매년 새로이 발행되는 0.26 배수의 이더와 균형을 이루게 된다). 27
28 장래에, 공급성장률을 약 0 에서 0.05 배수 이내 가 되도록 수정을 하면서, POS 로 채굴모델을 변경할 계획이 있다. 만일, 이더리움 재단(Ethereum organization) 이 보유금을 모두 잃거나, 또는 여타의 이유로 사라지게 되면, 사회적계약(social contract) 을 열어둘 것이다. 이를 통해, 이더 발행량을 최대 * ( * n) 를 넘지 않도록만(n 은 첫 블록 생성 이후의 총 년수) 지킨다면, 누구든지 이더리움의 후속버전(a future candidate version:rc 버전) 을 만들 수 있을 것이다. 이 후속버전의 창시자는 개발/관리에 필요한 비용을 충당하기 위해서, 공개판매(crowd-sell)를 하거나, 총 가능 이더발행량 과 POS 를 통한 공급량 간의 차액 중 일부나 전부를 이용할 수 있을 것이다. 만일 어떠한 창시자가 이러한 사회적계약(social contract) 에 반하는 내용을 업데이트하게 된다면, 결국 대의에 의해 합당한(compliant) 버전에서 별개로 포크되어(forked)나와 탈락하게 될 것이다. 채굴 중앙집중화(Mining Centralization) POS로 전환되면, POS가 발행해야 할 신규코인수를 프리세일량의 0.05 배수 이내로 줄이겠다는 것이다. POS 전환이후의 전체 발행량의 변화 에 대한 분석은 아직 없다. 최종적인 POS 모델 자체도 아직 정립되지 않 았다. POS에 의한 채굴량때 발행량 이 변경되면, 위에서 이야기한 균형 등 여러가지 그림이 재조정되어야 할 것으로 보인다. 현재 이더리움 재단은 '비영리(Nonprofit organizations)'로 활동 중이다. 자세한 내용은 아래문서의 'Organizational Structure'부분 참조: thereum-dev-plan.pdf 비트코인 채굴 방식은, 목표 값(현재 기준 약 )보다 낮은 값이 나올 때까지, 블록헤더에 대한 'SHA256 해싱' 작업을 무한정 반복하는 것이다. 하지만 해당 방식에는 두 가지 약점이 존재한다. 첫 번째는 현재 채굴참여에 대한 장벽이 매우 높아졌다는 것이다. 현재 채굴생태계는 ASIC(특수목적을 위해 전용으로 설계된 반도체로, 범용반도체에 비해 성능이 뛰어남)에 의해 완전히 잠식되었다. 이러한 ASIC 채굴기는 일반 GPU 채굴기 등에 비해 수 천배 이상의 효율을 가지는데, 따라서 ASIC 이 아닌 일반컴퓨터를 통한 일반사용자들의 채굴행위는 경쟁력에서 밀려 효용을 잃게 되었다. 과거의 채굴행위가 분권화되고 이타적인 참여자 중심의 생태계 였다면, 현재는 수십억원의 투자가 되어야만 참여가 가능한 재력가들의 사업 으로 변질되고 말았다. 두 번째는 채굴방식이다. 이전처럼 여러 지역에서 여러 참여자가 블록생성에 참여하는 것이 아니라, 중앙집중화된 채굴풀(Mining pool)이 제공하는 블록헤더(block header)에 의존하여 채굴에 실제 비트코인 네트워크에 직접연결 참여한다는 점이다. 이로 인한 부작용이 상당한데, 현재 기준으로는, 3 개 채굴풀들이 되어 블록생성을 하는 노드의 수는 개인들의 컴퓨팅파워를 인계 받아서 무려 50%에 육박하는 해시를 간접적으로 기하급수적으로 줄어들고 있다. 통제하고 있다. 물론 해당 풀의 점유율이 50%를 넘어가기 전에 개인들이 다른 소규모 풀들로 이동을 할 수 있기 때문에, 풀들이 마음대로 자원을 남용할 수는 개인들이 전체네크워크 해시점유율을 없겠지만, 이는 여전히 큰 문제이다. 나눠가진 것이 아니라, 그 해시를 인 계받은 거대 풀(Pool) 소유주가 그것 이더리움의 채굴 방식은 조금 다르다. 각 채굴자가 상태정보(the state)에서 무작위의 을 독점하고 있기 때문이다. 정보를 가져와서, 무작위로 선택 된 최근 몇개의 블록내역을 해싱 작업하고 결과값을 내놓는 것이다. 이렇게 하게 되면 두 가지 이점이 있다. 28
29 첫번째는 이더리움 계약이 모든 종류의 컴퓨터 계산방식을 포괄할 수 있다는 점이다. 따라서 자연히 ASIC 도 모든 계산방식에 적합하게 설계되어야 하는데, 이렇게 되면 결국 ASIC 이라기 보다는 일종의 고성능 CPU 가 되는 셈이다. 즉 현실적으로 ASIC(주문형 전용반도체) 자체가 무용지물이 된다. 두번째로, 채굴자들은 작업 시 전체 블록체인을 다운 받아 모든 이체내역을 검증해야 한다는 점이다. 이렇게 되면 중앙집중화 된 대형 풀이 필요없게 된다. 물론 대형풀 자체는 신규블록생성 보상을 균일하게 참여자들에게 배분해 주는 효과가 있긴 하지만, 그러한 효과는 P2P 형식의 풀(pool)을 통해서도 충분히 구현이 가능하다. 굳이 중앙집중형 풀(centralized pool) 방식을 사용할 필요가 참여자 개개인들이 각자의 노드를 통해 채 없다. 굴을 하는 경우, 한 블록 당 오직 하나의 노드만 보상을 받기 때문에, 운이 없다면 물론 위의 채굴 모델이 아직 검증된 것은 아니다. 또한 ASIC 장비에 대한 평생 보상을 받지 못하는 경우도 생긴다. 저항성을 높이는 작업도, 이론처럼 현실에서 적용이 될 수 있을지에 대하여는 이러한 도박성을 제거하기 위해 한 개의 의문의 여지가 있다. 하지만 한 가지 확실한 것은, 여러종류의 수많은 계약이 노드가 참여자들을 대표해서 컴퓨팅파워 적용이 되면, 이를 모두 포괄하는 ASIC 을 예전처럼 만들어 내기는 어렵다는 를 모으고 채굴작업을 하여 이로 인한 보 점이다. 또한 어떠한 종류의 작업에 특화 된 ASIC 이 존재한다면, 이에 반하는 상을 기여도에 따라 균등히 참여자들에게 작업을 요하는 계약이 생성되는 것을 원치 않을 것이다. 그러면 해당 배분함으로써, 해당 작업에 참여한 모두가 ASIC 채굴자의 경쟁자는 그에 적대적인, 즉 비효율적인 작업을 요하는 계약들을 소량의 안정적 수익을 얻을 수 있게 해준 생성해 냄으로써 공격을 가할 것이다. 즉, 각 부분에 특화된 ASIC 을 소유한 다. 연합채굴(mining pool) 행위는 블록생 채굴자들은 서로에게 불리한 작업을 하게하는 계약들을 만들어 냄으로써 서로를 성작업에 대해 균일성과 예측성을 제공함 공격할 것이다. 물론 이러한 방법은 기술적 인 접근이라기보다는 경제학적 으로써, 블록생성을 단순한 '도박'에서, 경 인간행동론 에 근거한 접근에 가깝다. 영이 가능한 '사업'으로 바꾸어 놓았다. 확장성(Scalability) 이더리움에 대한 한 가지 공통된 의문점은 확장성 부분이다. 비트코인과 마찬가지로 이더리움도 모든 이체작업이 네크워크 상의 전체 노드에 의해서 일일이 검증 및 작업이 되어야 한다는 약점이 있다. 비트코인의 경우, 현재 전체 블록체인의 크기가 약 15GB 에 이르며, 그 크기는 매 시간 1MB 씩 꾸준히 늘어나고 있다. VISA 의 경우 초당 2,000 여 건의 이체작업을 처리하는데, 이는 매 3 초당 1MB 씩의 확장(시간 당 1GB, 매 년 8TB)을 의미한다. 이더리움도 비슷한 문제를 겪을 것이고, 단순히 화폐로써의 역할 만하는 비트코인에 비한다면, 온갖 종류의 탈중앙화된 어플리케이션들(Dapps: Decentralized applications)을 포괄하는 이더리움은 이 부분에서 훨씬 더 많은 문제를 겪을 수도 있을 것이다. 하지만 한 가지 다른 점은, 이더리움은 전체 블록체인 히스토리 가 아닌, 단지 상태 정보(the state) 만 가지고 있으면 된다는 점이다. 즉 처리(process & verify)할 정보는 더 많아졌지만, 보관(store)할 정보는 더 만일 개개의 모든 노드가 전체 블록체인을 보관해야 한다면, 아래와 같은 문제가 적어진다고 할 수 있겠다. 생길 수 있다. 블록체인의 크기가 점점 커져 100TB 에 육박하게 되었다고 생각해보자. 이 정도 수준으로 보관해야 하는 블록체인의 크기가 커지면, 오직 라이트SPV- 이전의 이체 내역이나 블 소수의 사업가나 기업 형태의 참여자만이 이를 감당할 수 있게 된다. 다수의 일반 록체인의 총액 균형이 아닌, 실시간 이 사용자들은 라이트 SPV(Simple Payment Verification) 노드만들 사용하게 될 체 내역만을 검증하는 검증방식이다. 것이다. 이렇게 되면, 전체 블록체인의 내역을 가진 소수의 참여자들이 결탁하여, 전체 블록체인 내역을 보관할 필요가 장부내역을 수정하거나 블록보상량을 바꿔치기 하는 등의 조작행위가 일어날 수 없으므로, 용량이 상당히 줄어든다는 장점이 있으나, 그만큼 할 수 있는 29 기 능에도 제약이 생긴다는 단점이 있다.
30 있을 것이다. 단순한 라이트 노드(light node) 로써는 이러한 조작을 감지할 방법이 없다. 물론 전체 블록체인를 소유한 노드(full node) 중에서도 선의의 참가자가 있을지 모른다. 그러나 다수의 완전노드(full node) 가 작심하여 블록체인 조작을 시도한다면, 이를 발견하는 시점에서는 이미 늦었다고 봐야 할 것이다. 실제로 비트코인이 현재 이와 비슷한 문제에 처할 위험이 있다고 경고받고 있으며, 해당 문제를 완화시키는 방법에 대하여는 Peter Todd 에 의해 논의된 바 있다. 완전노드(full node)- '전체노드'를 의미 하는 것이 아니라, '탄생블록(genesis block)'에서부터 '최근블록(current block)'에 이르는 블록체인 '전체장부' 를 가지고 있는 노드를 가리킨다. 위의 문제를 해결키 위해, 가까운 시일 안에 두 가지의 전략을 추가로 도입할 예정이다. 첫 번째로 이더리움도 기본적으로 블록체인 기술을 바탕으로 한 채굴 알고리즘을 사용하고 있기 때문에, 모든 채굴자들은 완전노드(full node) 가 되도록 의무화 될 것이며, 이는 필요한 최소한의 완전노드 숫자를 확보할 수 있도록 해줄 것이다. 두번째로, 이체내역 검증 작업 이후 블록체인에 중간상태 트리루트(an intermediate state tree root) 를 도입하는 것이다. 이렇게 되면, 아무리 블록생성 작업이 소수의 노드에 집중되더라도, 단 하나의 '선의의 노드(honest node)'만 존재한다면 검증 프로토콜(verification protocol)을 통해 이 문제를 해결할 수 있다. 만일 어떠한 채굴노드가 전파한 블록이 검증오류(invalid)처리가 되었다면, 해당 블록의 구성(format) 이 맞지 않거나 상태내역 S [ n ] 이 틀린 경우일 것이다. S [ 0 ] 상태가 옳은 것으로 간주되기 때문에, S[ i-1 ] 이 맞다면, S[ i ] 에 오류가 있는 것이다. 검증작업에 참여하는 노드는, APPLY(S[i-1],TX[i]) -> S[i] 작업(processing)을 하는 페트리샤 트리 노드의 부분집합(the subset of Patricia tree) 을 통해 검증오류증명(proof of invalidity) 과 인덱스 i 를 제공한다. 노드들은, 위의 노드들을 이용해 해당 작업을 수행하며, 생성한 S[ i ] 가 제공받은 S[ i ] 와 일치하지 않음을 발견하게 된다. 또한 불완전한 블록(incomplete block) 을 전파하려는 악의의 채굴노드들과 관련된 더욱 정교한 공격이 이루어질 수 있다. 블록을 검증하는데에 필요한 정보가 온전히 존재하지 않을 수도 있다. 이 경우, 질의-응답프로토콜(challengeresponse protocol) 기법이 사용될 수 있다. 검증노드가 목표 블록의 인덱스 형태 (target transaction indices) 로 질문(challenge) 을 생성하고, 노드를 수신하는 전자여권, 보안카드 등의 인증기법에서 라이트노드(light node)는 해당 블록(challenge)을 일단 검증오류블록으로 취급한다. 흔히 사용되는 방법으로, 사실상 웹싸이 이후, 다른 노드(채굴노드이든 검증노드이든)가 페트리샤 트리 노드의 부분집합 트에 로그인 하기 위한 '비밀번호' 도 이 (the subset of Patricia tree) 을 검증증명(proof of validity)으로써 제공한다면, 기법의 일종으로 볼 수 있다. 그때서 위의 블록은 검증된(유효한) 것으로 취급된다. 일정한 질문에 대해 올바른 답변을 하 는 것으로 신원을 증명하며, 질문을 예 측불허하게 계속 바꿈으로써 해킹시도 를 무력화 시킨다. 다중비밀번호 설정이 결론(Conclusion) 나, 보안카드가 좋은 예가 될 수 있다. 이더리움 프로토콜은 본래 매우 범용적인 프로그래밍 언어를 통해 블록체인상 에스크로나 인출한도설정, 금전계약, 도박 시장 등의 고급 기능 을 제공하는, 가상화폐의 업그레이드 버전으로 구상되었다. 이더리움 프로토콜은 이러한 어플리케이션들을 직접적으로 제공하는 것이 아니라, 튜링완전언어(Turing-complete programming language)를 통해 이론적으로 거의 모든 형태의 이체방식이나 어플리케이션을 만들어낼 수 있도록 지원한다. 더욱 흥미로운 점은, 이더리움은 단순한 화폐 의 차원을 훨씬 뛰어넘는다는 점이다. 분산저장공간(DFS:decentralized file storage)이나, 분산컴퓨팅, 분산예측시장(decentralized prediction market) 프로토콜 등은 사실 수많은 일종의 P2P로 구현되는 응용개념들 중 일부에 불과하다. 이러한 새로운 개념들은 컴퓨팅 산업의 효율성을 폭발적으로 금융파생상품시장 높일 수 있는 잠재력이 있으며, P2P 프로토콜에 처음으로 경제적인 차원(economic layer) 을 30
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 informationPOPKET CHAIN Best of breed security! Rest Assured That Your Cryptocurrency Are Securely Stored In The World s Most Trusted Cryptocurrency Wallet We Pr
POPKET CHAIN Best of breed security! Rest Assured That Your Cryptocurrency Are Securely Stored In The World s Most Trusted Cryptocurrency Wallet We Provide You Full Control Back Up Your Funds And Protect
More information말은 많은 Blockchain 2
loopchain-블록체인으로 진짜 서비스 만들어보기 말은 많은 Blockchain 2 진짜 만든 것은 있나? 뭐가 많이 있기는 한데 우리가 써먹어 볼건 있나요? 3 그런데 이런 일이 일어났습니다. 4 뭘 만든건가요?: 블록체인 기반 인증서 발급 각 증권사를 통해 인증서 발급 요청 후 인증서 발급에 필요한 정보를 기반으로 거래를 생성하고 이에 대한 Smart
More informationMicrosoft 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 information04 Çмú_±â¼ú±â»ç
42 s p x f p (x) f (x) VOL. 46 NO. 12 2013. 12 43 p j (x) r j n c f max f min v max, j j c j (x) j f (x) v j (x) f (x) v(x) f d (x) f (x) f (x) v(x) v(x) r f 44 r f X(x) Y (x) (x, y) (x, y) f (x, y) VOL.
More informationWindows 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 informationView Licenses and Services (customer)
빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차
More informationUser interface design
Course Introduction Minsoo Ryu Hanyang University 교과목정보 1 강좌명 블록체인구조와원리 수업연도 2019 년수업학기 1 학기 과목구분전공학수번호 BLC6001 학점 - 이론 - 실습 3-3-0 수업코드 33451 교과목정보 설강대학한양대학교설강학과블록체인융합학과 강의시간 월 18:00 ~ 21:00 (X) 월 18:30
More informationChapter ...
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<B3EDB9AEC0DBBCBAB9FD2E687770>
(1) 주제 의식의 원칙 논문은 주제 의식이 잘 드러나야 한다. 주제 의식은 논문을 쓰는 사람의 의도나 글의 목적 과 밀접한 관련이 있다. (2) 협력의 원칙 독자는 필자를 이해하려고 마음먹은 사람이다. 따라서 필자는 독자가 이해할 수 있는 말이 나 표현을 사용하여 독자의 노력에 협력해야 한다는 것이다. (3) 논리적 엄격성의 원칙 감정이나 독단적인 선언이
More information= " (2014), `` ,'' .." " (2011), `` ,'' (.)"
학습목표 Finance Lectue Note Seies 파생금융상품의 이해 화폐의 시간가치(time value of money): 화폐의 시간가치에 대해 알아본다 제강 화폐의 시간가치 연금의 시간가치(time value of annuity): 일정기간 매년 동일금액을 지급하는 연금의 시간가치에 대해 알아본다 조 승 모 3 영구연금의 시간가치(time value
More information비트코인 : 개인간전자화폐시스템 사토시나카모토 초록. 순개인과개인간의전자화폐는한집단에서다른곳으로금융기관을거치지않고직접온라인지불을가능하게할것이다. 디지털서명기술이일부해결해주지만, 믿을수있는제 3자가이중지불을방지해
비트클라우드백서 비트코인 : 개인간전자화폐시스템 사토시나카모토 satoshin@gmx.com www.bitcoin.org 초록. 순개인과개인간의전자화폐는한집단에서다른곳으로금융기관을거치지않고직접온라인지불을가능하게할것이다. 디지털서명기술이일부해결해주지만, 믿을수있는제 3자가이중지불을방지해야한다면그주요한장점은사라지게된다. 우리는이논문에서 P2P 네트워크를이용한이중지불문제의해결방법을제안하고자한다.
More information아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상
Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는
More information1 9 9 2년 2 월 1 1일에 모 스 크 바 에 서 서명된 북 태 평양 소하 성어족자 원보존협약 (이하 협약 이라 한다) 제8조 1항에는 북태평양소하성어류위원회 (이하 위원회 라 한다)를 설립한다고 규정되어 있다. 제8조 16항에는 위원회가 을 채택해야 한다고 규정
1993년 2월 24일 발효 1994년 1월 11일 개정 1998년 11월 6일 개정 2001년 11월 2일 개정 2003년 10월 31일 개정 2013년 11월 15일 개정 2014년 5월 16일 개정 제목 규칙 페이지 적용 1 110 회계연도 2 110 예산 3-9 110-111 분담금 10-11 111 계상예산의 지출대상 12-13 111 전용 14 111
More information기본소득문답2
응답하라! 기본소득 응답하라! 기본소득 06 Q.01 07 Q.02 08 Q.03 09 Q.04 10 Q.05 11 Q.06 12 Q.07 13 Q.08 14 Q.09 응답하라! 기본소득 contents 16 Q.10 18 Q.11 19 Q.12 20 Q.13 22 Q.14 23 Q.15 24 Q.16 Q.01 기본소득의 개념을 쉽게 설명해주세요. 06 응답하라
More information2013unihangulchar {45380} 2unihangulchar {54617}unihangulchar {44592} unihangulchar {49328}unihangulchar {50629}unihangulchar {51312}unihangulchar {51
Proem Se 4 산업조직론 (ECM004N) Fall 03. 독점기업이 다음과 같은 수요함수를 각각 가지고 있는 두 개의 소비자 그룹에게 제품을 공급한다고 하자. 한 단위 제품을 생산하는 데 드는 비용은 상수 이다. 다음 질문에 답하시오. P = A B Q P = A B Q () 두 그룹에 대하여 가격차별을 하고자 할 때 각 그룹의 균형생산량(Q, Q )과
More informationSIGIL 완벽입문
누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS
More informationwtu05_ÃÖÁ¾
한 눈에 보는 이달의 주요 글로벌 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 informationUSC HIPAA AUTHORIZATION FOR
연구 목적의 건강정보 사용을 위한 USC HIPAA 승인 1. 본 양식의 목적: 건강보험 이전과 책임에 관한 법(Health Insurance Portability and Accountability Act, HIPAA)이라고 알려진 연방법은 귀하의 건강정보가 이용되는 방법을 보호합니다. HIPAA 는 일반적으로 귀하의 서면 동의 없이 연구를 목적으로 귀하의
More information041~084 ¹®È�Çö»óÀбâ
1998 60 1 1 200 2 6 4 7 29 1975 30 2 78 35 1 4 2001 2009 79 2 9 2 200 3 1 6 1 600 13 6 2 8 21 6 7 1 9 1 7 4 1 2 2 80 4 300 2 200 8 22 200 2140 2 195 3 1 2 1 2 52 3 7 400 60 81 80 80 12 34 4 4 7 12 80 50
More information[Brochure] KOR_TunA
LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /
More informationArt & Technology #5: 3D 프린팅 - Art World | 현대자동차
Art & Technology #5: 3D 프린팅 새로운 기술, 새로운 가능성 미래를 바꿔놓을 기술 이 무엇인 것 같으냐고 묻는다면 어떻게 대답해야 할까요? 답은 한 마치 한 쌍(pair)과도 같은 3D 스캐닝-프린팅 산업이 빠른 속도로 진화하고 있는 이유입니 가지는 아닐 것이나 그 대표적인 기술로 3D 스캐닝 과 3D 프린팅 을 들 수 있을 것입니 다. 카메라의
More informationActFax 4.31 Local Privilege Escalation Exploit
NSHC 2013. 05. 23 악성코드 분석 보고서 [ Ransomware 악성코드 ] 사용자의 컴퓨터를 강제로 잠그고 돈을 요구하는 형태의 공격이 기승을 부리고 있 습니다. 이러한 형태의 공격에 이용되는 악성코드는 Ransomware로 불리는 악성코 드 입니다. 한번 감염 시 치료절차가 복잡하며, 보고서 작성 시점을 기준으로 지속 적인 피해자가 발생되고
More information<B1DDC0B6B1E2B0FCB0FAC0CEC5CDB3DDB0B3C0CEC1A4BAB82E687770>
여 48.6% 남 51.4% 40대 10.7% 50대 이 상 6.0% 10대 0.9% 20대 34.5% 30대 47.9% 초등졸 이하 대학원생 이 0.6% 중졸 이하 상 0.7% 2.7% 고졸 이하 34.2% 대졸 이하 61.9% 직장 1.9% e-mail 주소 2.8% 핸드폰 번호 8.2% 전화번호 4.5% 학교 0.9% 주소 2.0% 기타 0.4% 이름
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More information이도경, 최덕재 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 informationPathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.
PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는
More information<5BB0EDB3ADB5B55D32303131B3E2B4EBBAF12DB0ED312D312DC1DFB0A32DC0B6C7D5B0FAC7D02D28312E28322920BAF2B9F0B0FA20BFF8C0DAC0C720C7FCBCBA2D3031292D3135B9AEC7D72E687770>
고1 융합 과학 2011년도 1학기 중간고사 대비 다음 글을 읽고 물음에 답하시오. 1 빅뱅 우주론에서 수소와 헬륨 의 형성에 대한 설명으로 옳은 것을 보기에서 모두 고른 것은? 4 서술형 다음 그림은 수소와 헬륨의 동위 원 소의 을 모형으로 나타낸 것이. 우주에서 생성된 수소와 헬륨 의 질량비 는 약 3:1 이. (+)전하를 띠는 양성자와 전기적 중성인 중성자
More information2. 4. 1. 업무에 활용 가능한 플러그인 QGIS의 큰 들을 찾 아서 특징 설치 마 폰 은 스 트 그 8 하 이 업무에 필요한 기능 메뉴 TM f K 플러그인 호출 와 TM f K < 림 > TM f K 종항 그 중에서 그 설치 듯 할 수 있는 플러그인이 많이 제공된다는 것이다. < 림 > 다. 에서 어플을 다운받아 S or 8, 9 의 S or OREA
More informationMicrosoft 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 informationWIZBL_WHITEPAPER 한글
WIZBL WHITE PAPER 5th Generation of Blockchain Technology v 0.8 content subject to change 2018 WIZBL. All rights reserved. 면책조항 본 백서는 정보 제공을 목적으로만 작성된 것이므로 이 문서의 진술에 의존해서는 안됩니다. WIZBL은 어떠한 진술이나 보증(표현이나
More information특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가
www.kdnetwork.com 특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가능할 삭제할 건전지 사용자를 위한 개별 비밀번호 및 RF카드
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More information내지(교사용) 4-6부
Chapter5 140 141 142 143 144 145 146 147 148 01 02 03 04 05 06 07 08 149 활 / 동 / 지 2 01 즐겨 찾는 사이트와 찾는 이유는? 사이트: 이유: 02 아래는 어느 외국계 사이트의 회원가입 화면이다. 국내의 일반적인 회원가입보다 절차가 간소하거나 기입하지 않아도 되는 개인정보 항목이 있다면 무엇인지
More information노트북 IT / 모바일 데스크탑 34 올인원PC 35 PC 소프트웨어 포터블SSD / SSD / 메모리카드 36 태블릿 37 휴대폰 39 PC 솔루션 IT / 모바일 IT / 모바일 노트북 29 삼성전자는 Windows 를 권장합니다. 삼성전자만의 편리하고 다양한 소프트웨어를 통해 초보자도 보다 쉽고 빠르게 이용 가능합니다. Easy Settings 삼성 패스트
More informationconsulting
CONSULTING 전략 컨설팅 클라우드 마이그레이션 애플리케이션 마이그레이션 데이터 마이그레이션 HELPING YOU ADOPT CLOUD. 클라우드로 가기로 결정했다면 누구와 함께 갈지를 선택해야 합니다. 처음부터 끝까지 믿을만한 파트너를 찾는다면 베스핀글로벌이 정답입니다. 전략 컨설팅 다양한 클라우드 공급자가 존재하고, 클라우드 공급자마다 다른 장단점을
More informationSBR-100S User Manual
( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S
More informationPowerPoint 프레젠테이션
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 informationMicrosoft Word - 20040422_pricing strategy.doc
HUNET Information 2004-04-22 전략적인 가격 설정 고객과 함께 성장하는, 신뢰받는 경영지식 파트너 휴넷 마케팅 믹스의 4P 중 가격은 판매와 시장 점유율에 가장 큰 직접적 인 영향을 미치는 요소라고 할 수 있다. 실제 많은 소비재의 가격 탄력성이 광고탄력성보다 10~20배 높다고 한다. 또한 다른 마케팅 믹스 변수에 비해서 가격 결정은
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More information비잔틴 노드에 의한 네트워크 분기 시도와, 네트워크 정지 시도를 막기 위하여 네트 워크의 모든 노드들에 2번에 거쳐 합의 데이터를 전송한다. Tendermint와 같은 선행 연구들은 PBFT를 이용하여 비트코인으로 대표되는 작업증명 알고리즘을 사용하는 블록체인 시스템의
LFT: Byzantine Fault Tolerance를 지원하는 경량화된 고성능 합의 알고리즘 theloop June 23, 2017 Abstract 최초의 블록체인 구현 서비스인 비트코인은 작업증명 (Proof of Work) 알고리 즘을 이용하여 전 세계 규모의 네트워크에서 거래장부에 대한 합의를 이루었다. 그러나 비트코인에서 사용한 작업증명 알고리즘은
More information레이아웃 1
Seed Money Bank Savings Banks vol.126 Seed Money Bank Savings Banks + vol.126 www.fsb.or.kr 20163 + 4 Contents 20163 + 4 vol.126 www.fsb.or.kr 26 02 08 30 SB Theme Talk 002 004 006 SB Issue 008 012 014
More information소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기
소규모 비즈니스를 위한 YouTube 플레이북 YouTube에서 호소력 있는 동영상으로 고객과 소통하기 소규모 비즈니스를 위한 플레이북 여기서 다룰 내용은 다음과 같습니다. 1. YouTube 소개 2. YouTube에서 비즈니스를 위한 채널 만들기 3. 눈길을 끄는 동영상 만들기 4. 고객의 액션 유도하기 5. 비즈니스에 중요한 잠재고객에게 더 많이 도달하기
More information4 7 7 9 3 3 4 4 Ô 57 5 3 6 4 7 Ô 5 8 9 Ô 0 3 4 Ô 5 6 7 8 3 4 9 Ô 56 Ô 5 3 6 4 7 0 Ô 8 9 0 Ô 3 4 5 지역 대표를 뽑는 선거. 선거의 의미와 필요성 ① 선거의 의미`: 우리들을 대표하여 일할 사람을 뽑는 것을 말합니다. ② 선거의 필요성`: 모든 사람이 한자리에 모여 지역의 일을 의논하고
More information연구노트
#2. 종이 질 - 일단은 OK. 하지만 만년필은 조금 비침. 종이질은 일단 합격점. 앞으로 종이질은 선택옵션으로 둘 수 있으리라 믿는다. 종이가 너무 두꺼우면, 뒤에 비치지 는 않지만, 무겁고 유연성이 떨어진다. 하지만 두꺼우면 고의적 망실의 위험도 적고 적당한 심리적 부담도 줄 것이 다. 이점은 호불호가 있을 것으로 생각되지만, 일단은 괜찮아 보인다. 필자의
More informationÃѼŁ1-ÃÖÁ¾Ãâ·Â¿ë2
경기도 도서관총서 1 경기도 도서관 총서 경기도도서관총서 1 지은이 소개 심효정 도서관 특화서비스 개발과 사례 제 1 권 모든 도서관은 특별하다 제 2 권 지식의 관문, 도서관 포털 경기도 도서관 총서는 도서관 현장의 균형있는 발전과 체계적인 운 영을 지원함으로써 도서관 발전에 기여하기 위한 목적으로 발간되 고 있습니다. 더불어 이를 통해 사회전반의 긍정적인
More information<C3E6B3B2B1B3C0B0313832C8A32DC5BEC0E7BFEB28C0DBB0D4292D332E706466>
11-8140242-000001-08 2013-927 2013 182 2013 182 Contents 02 16 08 10 12 18 53 25 32 63 Summer 2 0 1 3 68 40 51 57 65 72 81 90 97 103 109 94 116 123 130 140 144 148 118 154 158 163 1 2 3 4 5 8 SUMMER
More information쓰리 핸드(삼침) 요일 및 2405 요일 시간, 및 요일 설정 1. 용두를 2의 위치로 당기고 반시계방향으로 돌려 전날로 를 설정합니다. 2. 용두를 시계방향으로 돌려 전날로 요일을 설정합니다. 3. 용두를 3의 위치로 당기고 오늘 와 요일이 표시될 때까지 시계방향으로
한국어 표준 설정안내 서브 초침 시간 및 설정 1. 용두를 2의 위치로 뽑아냅니다. 2. 용두를 시계방향 또는 반시계방향으로 돌려(모델에 따라 다름) 를 전날로 설정합니다. 3. 용두를 3의 위치로 당기고 현재 가 표시될 때까지 시계방향으로 돌립니다. 4. 용두를 계속 돌려 정확한 오전/오후 시간을 설정합니다. 5. 용두를 1의 위치로 되돌립니다. 169 쓰리
More information804NW±¹¹®
Copyright Samsung SDS All rights Reserved. 1 2 3 4 센트에서 빼낸 다음 삼성 S D S 고객센터 기사에게 연락합니다. 5 6 삼성 고객센터 기사에게 이지온 영상 전화기가 작동하는 상태에서 안전점검을 수행토록 요구해야 합니다 7 8 반드시 삼성 에서 승인된 부품만을 사용해야 합니다 삼성 에서 승인된 부품을 사용하지 않을
More informationThinkVantage Fingerprint Software
ThinkVantage 지문 인식 소프트웨어 First Edition (August 2005) Copyright Lenovo 2005. Portions Copyright International Business Machines Corporation 2005. All rights reserved. U.S. GOVERNMENT USERS RESTRICTED RIGHTS:
More information....pdf..
Korea Shipping Association 조합 뉴비전 선포 다음은 뉴비전 세부추진계획에 대한 설명이다. 우리 조합은 올해로 창립 46주년을 맞았습니다. 조합은 2004년 이전까 지는 조합운영지침을 마련하여 목표 를 세우고 전략적으로 추진해왔습니 다만 지난 2005년부터 조합원을 행복하게 하는 가치창출로 해운의 미래를 열어 가자 라는 미션아래 BEST
More informationH3250_Wi-Fi_E.book
무선 LAN 기능으로 할 수 있는 것 2 무선 LAN 기능으로 할 수 있는 것 z q l D w 3 Wi-Fi 기능 플로우차트 z q l D 4 Wi-Fi 기능 플로우차트 w 5 본 사용 설명서의 기호 설명 6 각 장별 목차 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7 목차 1 2 3 4 8 목차 5 6 7 8 9 9 목차 10 11 12
More informationMicrosoft PowerPoint - chap04-연산자.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에
More information<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 informationgdac-token-whitepaper-full-version-v1.2
지닥 거래소 토큰(GT) 백서 GT White Paper: The Origin (Full version) Issue date 2018.12.05 Publisher GDAC Index 1. GDAC 거래소의 비전 2. GT(GDAC Token) 2.A. 기존 거래소 토큰의 한계점 2.B. GT가 추구하는 구조 3. GT 소개 3.A. 마이닝 플랫폼 3.B. 사용성
More information<4D6963726F736F667420576F7264202D204B42C1F6BDC4BAF1C5B8B9CE5F32303133313132315FBAF1C6AEC4DAC0CEC0C720C0CCC7D8BFCD20C0FCB8C12E646F63>
2013. 11. 21 (13-122호) : 비트코인(Bitcoin)의 이해와 전망 비트코인이란? 비트코인의 개발 및 성장 비트코인의 사례 및 사용처 비트코인에 대한 우려와 대중화 가능성 비트코인(Bitcoin)은 가상 화폐 시스템이자 새로운 화폐로, 사용자가 수요/공급의 주체가 된다 는 점에서 중앙정부의 통제를 받는 기존 실물 화폐와 차별화된다. 세계 온라인
More information와플-4년-2호-본문-15.ps
1 2 1+2 + = = 1 1 1 +2 =(1+2)+& + *=+ = + 8 2 + = = =1 6 6 6 6 6 2 2 1 1 1 + =(1+)+& + *=+ =+1 = 2 6 1 21 1 + = + = = 1 1 1 + 1-1 1 1 + 6 6 0 1 + 1 + = = + 7 7 2 1 2 1 + =(+ )+& + *= + = 2-1 2 +2 9 9 2
More information750 1,500 35
data@opensurvey.co.kr 750 1,500 35 Contents Part 1. Part 2. 1. 2. 3. , 1.,, 2. skip 1 ( ) : 2 ( ) : 10~40 (, PC, ) 1 : 70 2 : 560 1 : 2015. 8. 25~26 2 : 2015. 9. 1 4 10~40 (, PC, ) 500 50.0 50.0 14.3 28.6
More information¾ç¼ºÄÀ-2
양성평등 캠퍼스 문화 조성을 위하여... 고려대학교 양성평등센터 는 2001년 6월에 제정된 성희롱 및 성폭력 예방과 처리에 관한 규정 에 의거하여 같은 해 7월에 설치된 성희롱및성폭력상담소 를 2006년 10월 개칭한 것입니다. 양성평등 센터 로의 개칭은 교내에서 발생하는 성피해에 대한 즉각적인 대응과 상담 제공뿐만 아니라 상호 존중을 바탕으로 한 양성평등
More information<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 informationRHEV 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 informationstatistics
수치를이용한자료요약 statistics hmkang@hallym.ac.kr 한림대학교 통계학 강희모 ( 한림대학교 ) 수치를이용한자료요약 1 / 26 수치를 통한 자료의 요약 요약 방대한 자료를 몇 개의 의미있는 수치로 요약 자료의 분포상태를 알 수 있는 통계기법 사용 중심위치의 측도(measure of center) : 어떤 값을 중심으로 분포되어 있는지
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 information41호-소비자문제연구(최종추가수정0507).hwp
소비자문제연구 제41호 2012년 4월 해외 소셜 네트워크 서비스이용약관의 약관규제법에 의한19)내용통제 가능성* : Facebook 게시물이용약관의 유효성을 중심으로 이병준 업 요약 업 규 규 논 업 쟁 때 셜 네트워 F b k 물 규 았 7 계 건 됨 규 규 업 객 계 규 므 받 객 드 객 규 7 말 계 률 업 두 않 트 접속 록 트 른징 볼 규 업 내
More informationMicrosoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집
Modern Modern www.office.com ( ) 892 5 : 1577-9700 : http://www.microsoft.com/korea Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와
More informationLTC 라이트코인명세서
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 informationinance Lectue Note Seies 금융시장과 투자분석 제강. 화폐의 시간가치 조 승 모 영남대학교 경제금융학부 04학년도 학기 학습목표. 화폐의 시간가치(tie value of oney): 동일한 금액의 화폐라도 시점에 따라 다른 가치를 가지게 되는 화폐의 시간가치에 대해 알아본다.. 수익률(ate of etun): 단순 수익률과 로그 수익률을 정의하고
More information공정한합의알고리즘 : deb 합의알고리즘 (A fair consensus algorithm : deb consensus algorithm) 목차 1. 개요 2. 합의알고리즘의공정성 3. deb 합의알고리즘 4. 공정한노드의역할및신뢰성검증 5. 성능 6. deb 합의알고
공정한합의알고리즘 : deb 합의알고리즘 (A fair consensus algorithm : deb consensus algorithm) 목차 1. 개요 2. 합의알고리즘의공정성 3. deb 합의알고리즘 4. 공정한노드의역할및신뢰성검증 5. 성능 6. deb 합의알고리즘특성 7. 결론 1. 개요 2008년분산원장 (distributed ledger) 개념과합의알고리즘인작업증명
More informationDrucker Innovation_CEO과정
! 피터드러커의 혁신과 기업가정신 허연 경희대학교 경영대학원 Doing Better Problem Solving Doing Different Opportunity ! Drucker, Management Challenges for the 21st Century, 1999! Drucker, Management: Tasks, Responsibilities,
More information152*220
152*220 2011.2.16 5:53 PM ` 3 여는 글 교육주체들을 위한 교육 교양지 신경림 잠시 휴간했던 우리교육 을 비록 계간으로이지만 다시 내게 되었다는 소식을 들으니 우 선 반갑다. 하지만 월간으로 계속할 수 없다는 현실이 못내 아쉽다. 솔직히 나는 우리교 육 의 부지런한 독자는 못 되었다. 하지만 비록 어깨너머로 읽으면서도 이런 잡지는 우 리
More information백서_
PEPS COIN WHITE PAPER VER. 1.3 Table of Contents 01 REALCOIN is PEPSCOIN!! 02 펩스코인의 비젼 03 펩스코인의 탄생 04 펩스코인 기본 특징 05 펩스코인의 특징과 활용 06 펩스 결제시스템 구축을 위한 다양한 마케팅 계획 07 PEPS 추진 로드맵과 개발 계획 08 결론 09 기타 코인의 목표 안정적인
More informationXSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks
XSS s XSS, s, May 25, 2010 XSS s 1 2 s 3 XSS s MySpace 사건. Samy (JS.Spacehero) 프로필 페이지에 자바스크립트 삽입. 스크립트 동작방식 방문자를 친구로 추가. 방문자의 프로필에 자바스크립트를 복사. 1시간 만에 백만 명이 친구등록. s XSS s 위험도가 낮은 xss 취약점을 다른 취약점과 연계하여
More information810 & 820 810 는 소기업 및 지사 애 플리케이션용으로 설계되었으며, 독립 실행형 장치로 구성하거 나 HA(고가용성)로 구성할 수 있습니다. 810은 표준 운영 체제를 실행하는 범용 서버에 비해 가격 프리미엄이 거의 또는 전혀 없기 때문에 화이트박스 장벽 을
목적에 맞게 설계된 어플라 이언스 원격 용도로 최적화된 어플라이언스 관리 및 에너지 효율성 향상 원격 관리 LOM(Lights Out Management), IPMI 2.0 장치 식별 버튼/LED 실시간 시스템 환경 및 오류 모 니터링 Infoblox MIBS를 통한 SNMP 모니터링 고가용성 공급 장치 예비 디스크 예비 냉각 팬 전원 공급 장치 현장 교체
More informationIRISCard Anywhere 5
이 빠른 사용자 가이드는 IRISCard Anywhere 5 및 IRISCard Corporate 5 스캐너의 설치와 시작을 도와 드립니다. 이 스캐너와 함께 제공되는 소프트웨어는: - Cardiris Pro 5 및 Cardiris Corporate 5 for CRM (Windows 용) - Cardiris Pro 4 (Mac OS 용) Cardiris 의
More information03_queue
Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,
More information= ``...(2011), , (.)''
Finance Lecture Note Series 사회과학과 수학 제2강. 미분 조 승 모2 영남대학교 경제금융학부 학습목표. 미분의 개념: 미분과 도함수의 개념에 대해 알아본다. : 실제로 미분을 어떻게 하는지 알아본다. : 극값의 개념을 알아보고 미분을 통해 어떻게 구하는지 알아본다. 4. 미분과 극한: 미분을 이용하여 극한값을 구하는 방법에 대해 알아본다.
More informationSequences with Low Correlation
레일리페이딩채널에서의 DPC 부호의성능분석 * 김준성, * 신민호, * 송홍엽 00 년 7 월 1 일 * 연세대학교전기전자공학과부호및정보이론연구실 발표순서 서론 복호화방법 R-BP 알고리즘 UMP-BP 알고리즘 Normalied-BP 알고리즘 무상관레일리페이딩채널에서의표준화인수 모의실험결과및고찰 결론 Codig ad Iformatio Theory ab /15
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More information2
2 About Honeyscreen Copyright All Right Reserved by Buzzvil 3 2013.06 2013.1 2014.03 2014.09 2014.12 2015.01 2015.04 전체 가입자 수 4 7 8 10대 20대 30대 40대 50대 9 52.27 % 42.83 % 38.17 % 33.46 % 10 Why Honeyscreen
More information필수 요소이다 본 논문에서는 우선 현재 대표적으로 이용되고 있는 인터넷 금융거래시스템인 페이팔 비트코인 핀테크의 개념에 대하여 살펴본다 다음으로 향후 인터넷 금융거래 시스템이 나아갈 전망을 예측해 보고 이를 위한 연구 방향을 소개한다 생하는 등의 문점을 지적한 바 있다
김 윤 정 금융거래를 기존의 은행 시스템 경유가 아닌 인터넷을 통하여 수행하는 인터넷 금융거래 시스템이 근래 활성화되고 있 다 본 논문에서는 대표적인 인터넷 금융거래시스템인 페이팔 비트코인 핀테크의 현황 및 세부 내용에 대하여 살펴본다 그리고 이들 내용을 기반으로 앞으로의 인터넷 금융거래 시스템이 나아가야 할 전망에 대하여 살펴본다 이들 전망은 온 라인만으로
More informationNetwork Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University
Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University Outline Network Network 구조 Source-to-Destination 간 packet 전달과정 Packet Capturing Packet Capture 의원리 Data Link Layer 의동작 Wired LAN Environment
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More informationAmazon EBS (Elastic Block Storage) Amazon EC2 Local Instance Store (Ephemeral Volumes) Amazon S3 (Simple Storage Service) / Glacier Elastic File Syste (EFS) Storage Gateway AWS Import/Export 1 Instance
More information참고 : 더블링크드리스트 노드는데이터와포인터를가지고포인터가다음노드의데이터부분을참조하면서 연결되는자료구조이며, 데이터검색시포인터로연결된노드를검색하여값을찾음 < 더블링크드리스트연결구조 > 구분인덱스 ( 데이터베이스 ) 더블링크드리스트 장점 단점 < 인덱스및더블링크드리스트방
보안연구부 -2015-029 블록체인및비트코인보안기술 ( 보안연구부보안기술팀 / 2015.11.23) 개요 블록체인 (BlockChain) 은보안성, 무결성을제공하는저장플랫폼으로써, 비트코인 (Bitcoin), 거래정보, 저작권관리등다양한서비스가출시되고있음 본보고서에서는블록체인의대표적인이용사례인비트코인을통해적용된주요보안기술에대해알아보고자함 블록체인 ( 개념
More informationCR2006-41.hwp
연구책임자 가나다 순 머 리 말 2006년 12월 한국교육학술정보원 원장 - i - - ii - - iii - 평가 영역 1. 교육계획 2. 수업 3. 인적자원 4. 물적자원 5. 경영과 행정 6. 교육성과 평가 부문 부문 배점 비율(%) 점수(점) 영역 배점 1.1 교육목표 3 15 45점 1.2 교육과정 6 30 (9%) 2.1 수업설계 6 30 2.2
More information1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut
경영학을 위한 수학 Fial Eam 5//(토) :-5: 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오.. (각 6점) 다음 적분을 구하시오 4 ( ) (a) ( )4 8 8 (b) d이 성립한다. d C C log log (c) 이다. 양변에 적분을 취하면 log C (d) 라 하자. 그러면 d 4이다. 9 9 4 / si (e) cos si
More informationOUTLINE 행사개요 행사명 Inside Bitcoins Conference & Expo 2015 장소 KINTEX 제 2전시장 3층 (회의실 301~304호) 행사시기 2015년 12월 9일(수) - 11일(금)ㅣ9일은
Fueling the Blockchain Technology Revolution CONFERENCE and EXPO 2015 Seoul, Korea 2015. 12. 9-112(3 ) T. 031-995-8074/8076 E. insidebitcoins@kintex.com www.insidebitcoins.co.kr OUTLINE 행사개요 행사명 Inside
More informationTTA 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정부3.0 국민디자인단 운영을 통해 국민과의 소통과 참여로 정책을 함께 만들 수 있었고 그 결과 국민 눈높이에 맞는 다양한 정책 개선안을 도출하며 정책의 완성도를 제고할 수 있었습니다. 또한 서비스디자인 방법론을 각 기관별 정부3.0 과제에 적용하여 국민 관점의 서비스 설계, 정책고객 확대 등 공직사회에 큰 반향을 유도하여 공무원의 일하는 방식을 변화시키고
More information기후변화는 인류사회가 직면한 가장 거대한 불확실성 중 하나
기후변화는 인류사회가 직면한 가장 거대한 불확실성 중 하나 세계적 차원서 기온 상승 해수면 상승 일어날 가능성 높아 기후변화는 인류사회가 직면한 가장 거대한 불확실성 중 하나 물에 관한 리스크가 감소되지 않고 있지만 이해는 증진 세계적 차원서 기온 상승 해수면 상승 일어날 가능성 높아 제4편 불확실성과 리스크에서 물관리(Managing Water under
More informationIP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : 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 informationPowerPoint 프레젠테이션
MOST Coin white paper 해킹이불가능한블럭체인기반의 X11 알고리즘의 MOST COIN 목차 도입배경과제안 3P MOST COIN 이란? 4P VISION 5P X11 Algorithm 8P POW(Proof of Work) 9P 블록체인의역사 11P 블록체인구조 13P 도입배경과제안 2009년에처음출시된 Bitcoin은오늘날의시장에급속히도입되었습니다.
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More information레이아웃 1
2010 3 5 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 우리가 함께 만들어 나갈 수 있습니다. - 인간의 존업성과 여성인권의 수호 - 성 산업의 구조적 사슬 단절 31 - 성매매 피해여성 적극 보호 - 성매매방지법이 시행됩니다. 32 - 인식부터 바뀌어야 합니다. - 성매매에 대한 처벌
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More information슬라이드 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 informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More information온습도 판넬미터(JTH-05) 사양서V1.0
온습도 조절기 Model:JTH-05 1. 제품 사양. [제품 구분] JTH-05A(입력 전원 AC), JTH-05D(입력 전원 DC) [전원 사양] JTH-05A 입력 전압 출력 전원 소비 전력 JTH-05D AC 90~240V DC 10~36V 12Vdc / Max.170mA Max.2W [본체 사이즈] ~ 온/습도 범위(본체): 사용 [0 ~ 50, 85%RH
More informationº»ÀÛ¾÷-1
Contents 10 http://www.homeplus.co.kr 11 http://www.homeplus.co.kr 12 http://www.homeplus.co.kr 13 http://www.homeplus.co.kr Interview 14 http://www.homeplus.co.kr Interview 15 http://www.homeplus.co.kr
More information백지 개정판 1.6 / 2001 년 8 월 7 일
백지 개정판 1.6 / 2001 년 8 월 7 일 내용 내용 1. 소개 2. 핵심 기술 2.1 스테이크 증명 2.1.1 POW와 DPOS의 비교 2.1.2 암호화 2.1.3 블록 및 블록 생성 2.1.4 주화 및 단조 공정 2.1.5 노드 2.1.6 트랜잭션 : 수수료 및 처리 시간 2.2 SegWit 2.2.1 개관 2.2.2 보안 2.2.3 블록 크기 및
More information