블록체인
블록체인

블록체인

목차

블록체인의 탄생 배경

사이버펑크
암호로 개인의 프라이버시 보호를 극대화하고자 했던 행동주의자
E-cash(1983년), David Chaum
모든 금융 거래의 이체 내역 암호화
B-money(1998년), Wei Dai
분합산의 계산 퍼즐
Hash Cash(2002년), Adam Back
POW 기반 금융거래
RPOW(2005년)
개념에서 탈피한 첫번째 SW 구현
비트코인
2008년에 최초의 논문으로 탄생
논문에 블록체인이라는 고유명사는 사용되지 않음
블록체인에 대한 정의가 상호간의 불일치되는 현상이 나타남
2009년에 소프트웨어로 구현
기반 기술
이미 존재하던 기술을 새로운 방식으로 조합
중앙 서버 없이 처리 가능함으로서 블록체인으로 소개됨

사토시 나카모토와 비트코인

사토시 나카모토
최초의 블록체인을 만든 익명의 단체
5~6명 정도가 모인 것으로 알려짐
크레이그 스티븐 라이트가 사토시 나카모토의 일원이라고 추정
2008년도에 인터넷으로 논문을 게재
9페이지 분량의 기술적 개념 및 효용
정보보호를 극대화할 수 있는 금융거래
비트코인을 사용해서 서로 금융거래 시 익명성 보장(개인의 프라이버시 보호)
2009년도에 최초의 블록(제네시스 블록) 탄생 후 6일 뒤 블록 본격 생산
소프트웨어적으로 만들어지는 시간을 제어하여 평균 10분에 하나꼴로 새로운 블록 생성
2009년 : 하루 144개씩 생성 / 2017년 말 : 50만개 이상 생성 → 약 3억개의 거래내역 보유(약 3억번 정도 비트코인 교환) / 비트코인을 주고받은 내역이 블록에 저장
비트코인에서 블록의 정의
거래내역을 쌓아서 최대 1MB(약 3천개의 거래내역)까지 기록할 수 있는 논리적인 단위
(* 거래내역 : 어떤 계정이 다른 계정으로의 얼마 정도의 비트코인을 주고받았다는 거래내역의 기록)
블록은 블록체인을 설계할때마다 다르게 설계 가능

0번 블록과 50만 번 블록의 비교

2009년 1월 3일에는 0번 블록이, 2017년 12월 18일에는 50만 번 블록이 탄생
구분
제니시스 블록
500,000번 블록
블록 번호(높이)
0
500,000
생성 시각
2009-01-03
2017-12-18
크기(바이트)
285
981,404(1MB에 육박)
기록된 거래내역 개수
1
2,701
1MB를 넘지 못하는 블록의 제약조건때문에 2,701개의 거래내역이 담김(저장 공간이 없을 경우 다음 블록으로 넘어감)
10분에 하나꼴로 블록이 생성 = 10분에 2,701건의 거래 처리 → 비트코인의 수요가 늘더라도 처리능력이 그것을 따라가지 못함을 암시
블록을 생성한 사람들에게 보상금이 주어짐
블록 생성을 수학 문제를 푸는 것에 비유
보상금은 비트코인으로 주어짐
보상금 : 고정적인 보조금+변동금인 수수료(거래내역으로부터 거둬들인 금액)
50만 번 블록에 저장된 2,701개의 거래내역은 각각 수수료를 지급(약 3.4 비트코인)하면 블록 생성자에게 전달됨
구분
제네시스 블록
500,000번 블록
블록 보조금
50비트코인
12.5비트코인
트랜잭션 수수료
0비트코인
3.39351625 비트코인
보상금과 비트코인 시세는 연동
보상금은 블록 생성 경쟁에 영향을 미치며 거래 시세에도 영향을 미침
비트코인의 가치가 블록체인의 존립을 결정
블록 생성자에게 취급되는 수수료
비트코인의 소유주가 건네주는 사람을 대신하여 수수료를 지불, 얼마의 수수료를 낼 지는 비트코인의 소유자가 정함
수수료 액수에 따라 비트코인 처리 속도 좌우(낮을수록 느리게, 높을수록 빠르게)
수수료 경쟁을 해서 더 빨리 처리되는 역효과 등장
블록 생성의 난이도
엄청난 양의 에너지와 하드웨어가 필요함
제네시스 블록을 생성하기 위한 척도를 1이라고 한다면 50만 번 블록을 만들기 위한 척도는 1,873,105,475,221.61이라고 할 수 있음
블록 생성 에너지는 계속해서 올라갔으며 앞으로도 올라갈 것으로 예상

블록체인과 전통적 거래 원장의 비교

블록 1개에 약 2,000~3,000개 정도의 거래 내역 기록 = 거래장부 특정 페이지의 2,000~3,000개 기록
블록 전체 = 거래장부
씌여진 기록은 삭제나 변경 불가능
블록체인에 생성된 블록도 순서가 바뀌지 않음 = 원장의 체계 순서가 바뀌지 않음
블록체인 : 거래내역을 시간 순서대로 담을 수 있도록 만든 저장공간장치
블록체인에 담겨져있는 거래내역 (최소)정보
보내는 사람 비트코인 주소
받는 사람 비트코인 주소
보내는 금액
수수료 : 비트코인을 처리하기 위해 블록을 만든 사람에게 지불하는 금액 / 수수료 액수에 따라 비트코인 유통 속도 좌우 / 현재는 대체로 2만원 정도대로 수수료가 형성되어 있음
* 비트코인(계정) 주소 : 은행에서의 계좌번호에 비유, 주로 34자리 정도의 복잡한 문자
브로드캐스팅
당사자 외에도 모든 사람이 누구에게 얼마를 줬는지 알 수 있음

비트코인의 발행량

비트코인 발행
새로운 블록이 생성될 때마다 소프트웨어적으로 보조금의 형태로 발생
약 21만 개의 블록이 만들어질때마다 생성량이 저감되도록 설계(210,000개의 블록이 만들어질때마다 보조금이 1/2개씩 저감되도록 프로그래밍되어 있음)
보조금이 약 4년을 주기로 반감하도록 설계 : 10분에 하나의 블록 생성 → 하루에 144개의 블록 생성 → 21만 개의 블록까지 약 4년 소요
2140년이 되면 비트코인 발행 중단 → 비트코인은 한정된 자원 → 미래에는 금과 같은 가치가 될 것 → 하지만 비트코인은 단순한 프로그램에 불과하여 코드의 변경으로 발행량도 변경 가능하며, 비슷한 프로그램도 얼마든지 복제할 수 있음

비트코인과 이더리움 등의 거래 방식과 단위

비트코인 및 이더리움의 단위
비트코인 : 1억사토시(Sat.) = 1비트코인(BTC)
이더리움 : 1Ether = 1,000 Finney = 1,000,000 Szabo = 10^18Wei
100센트 = 1달러
비트코인의 교환 방식
전체 금액을 모두 지불 하고 거스름돈을 받음
ex. 7BTC를 전송한다면, 자신이 가지고 있는 10BTC를 모두 지불하고 3BTC를 거스름돈으로 받음
수령인은 단 하나의 기록도 없으며, 소유자가 모든 내역을 기술
거스름든 또한 소유자가 직접 작성해야 함

분산 시스템과 블록체인 시스템

개념
Node : 하나의 컴퓨터(서버)
Peer : 특정 노드 중 직접적으로 연결된 노드
분산 시스템
여러 개의 서버가 일을 나누어 처리
일의 효율성이 높음
처리속도가 신속함
여러 개의 서버가 마비된 서버를 대신하여 서비스 처리, 해커의 공격으로부터 안전(해커는 하나의 서비스만 마비시키는 것이 아닌 모든 서버의 서비스를 무력화 시켜야 하므로 공격 목표가 모호해짐)
단일 서버에 비해 구성 비용이 높음
특정 순간에 데이터 간의 내용이 서로 상이함 → 여러 개의 서버는 저장하고 있는 내용을 동기화하는 과정이 필요
블록체인 시스템
분산 시스템의 일부
모든 노드가 이용자 역할을 하는 동시에 서버 역할을 함 ex. peer to peer
해커가 서비스를 중단시키거나 데이터를 위조/변조 시키려면 모든 노드를 공격해야 하는 어려움 존재
해커가 데이터 절취하여 경제적 이익을 취하려고 한다면 안전하지 않음
이유
모든 노드가 공유해서 들여다볼 수 있도록 설계
데이터 자체는 전혀 보호되지 않고 모든 노드가 공유하는 구조
블록체인 안전의 양면성 : 데이터 자체 보호에 무력 / 데이터의 변형과 서비스 무력화에 저항
일을 나눈 것이 아니라 같은 일을 모든 노드가 여러 번 반복(데이터 변경 시 모든 노드가 검증)하므로 효율성이 없으나 정확성, 투명성을 획득함
변형된 블록체인 시스템
모든 노드는 동일한 역할을 수행(각 노드가 모든 역할을 반복하여 비효율적) → 특정 노드가 특정 역할을 수행(속도 등의 성능 향상, 안전성의 상대적 취약)
브로드캐스팅
전달 받은 데이터를 다른 피어에 전달하는 방식으로 전체 노드에 모든 데이터 브로드캐스팅(가십 프로토콜)
특성
저장된 데이터는 비밀로할 수 없음 → 개인정보가 들어있는 데이터는 사용하면 안됨
브로드캐스팅되는 시간은 노드 별로 상이할 수 있음
시간이 흐르면 모든 노드는 동일한 데이터를 전달 받음
거래내역의 작성 및 전송
중앙화시스템 : 웹 서버 이용
블록체인시스템 : 지갑소프트웨어 이용
구분
중앙화시스템
블록체인시스템
처리하는 노드
일정한 중앙 서버가 모든 이체 처리
브로드캐스팅 후 매번 다른 노드가 처리(예측 불가능)
소요되는 시간
예측 가능
수수료에 따라 달라짐
은행에서의 계좌이체 : 요청한 계좌이체를 장부에 기록
블록체인에서의 계좌이체 : 계좌이체를 요청한 메시지를 누군가 기록
리더의 선출과 검증
리더 선출 : 거래내역을 적을 수 있는 권한을 가진 사람을 선출
리더 선출 방법 : 비트코인과 이더리움에서는 해시 퍼즐을 가장 먼저 해결한 노드가 요청서를 기록함
* 해시 퍼즐 : 많은 시간과 에너지를 소모하여 겨우 해결할 수 있는 문제로 무차별 대입법에 의한 모든 경우를 순차적으로 계산
피트코인은 해시 퍼즐을 해결하는데 보통 10분 정도 소요됨
블록체인의 사이클
1.
누가 기록할 것인지 선발(리더선출)
2.
모든 노드가 기록의 규칙 준수 여부 확인(검증)
3.
기록의 영구 보관 및 변경 불가
중앙화시스템
기록을 의뢰한 은행을 신뢰하여 기록을 검증하는 절차 필요 없음
블록체인 시스템
특정노드가 메시지를 기록할 수 있는 전권을 획득하여 해당 노드의 기록 후 검증하는 절차가 필요함
특정노드가 완성한 블록을 브로드캐스팅하여 모든 노드에게 검증을 받음
검증을 통과하면 기록을 인정하여 노드 로컬의 블록체인 데이터에 추가, 검증을 통과하지 못하면 기록을 폐기함
원할 때 누구든지 시스템에 참여하여 기록 전체에 대해서 검증 가능하며, 어떠한 자격 조건도 필요 없음
검증절차가 생긴 이유
특정 노드를 신뢰할 수 없음
블록체인에 참여한 모든 노드를 신뢰할 수 없음
비트코인은 10분에 1번 반복, 이더리음은 15초에 1번 반복
작업증명
많은 리소스 사용, 많은 계산 횟수를 사용해야만 하는 방식

블록체인 원리

해시함수
입력 길이와 상관없이 항상 일정한 길이의 출력을 나타내는 함수
충돌회피기능 : 입력값이 달라지면 항상 다른 출력값을 나타내는 성질 → 입력의 사소한 변화도 인지 가능(변경탐지기능)
비대칭 암호화 기법
특정 입력 메시지를 알아볼 수 없는 출력 메시지로 변경
암호화키와 복호화키가 다름
블록체인에서 해시함수와 암호화 기법의 이용
거래내역 위변조 방지 : 비트코인에서는 SHA-256 해시함수를 이용하여 항상 32바이트 정수를 출력
디지털 서명 수행 : 블록체인에서는 비대칭형 암호화 기법을 이용
비트코인 수령자 보호(실제 수령자만 비트코인 사용) : 비트코인 주소에는 수령자의 공개키에 대한 정보가 들어있음. 개인키로 복호화 / 거래내역은 모든 사람에게 노출되지만 실제로 그 거래내역을 사용할 수 있는 사람은 개인키를 가진 실수령자
거래내역의 조작 방지 : A는 B에게 비트코인을 주었다는 사실을 기록하고 A의 개인키로 서명 → 공개된 A의 공개키로 이 사실이 복호화(A가 싸인했다는 의미)
→ 공개키로 수령자만이 비트코인을 받을 수 있도록 보호
→ 개인키를 이용하여 실제 거래자를 증명

블록의 구조

블록 : 특정 데이터를 다루는 단위로 프로그래밍마다 서로 다른 방식으로 적용
비트코인에서 정의한 블록은 1MB를 한도로 하지만, 이더리움에서는 이론적인 한도는 없음
비트코인 블록 1MB 내용
블록헤더 : 데이터의 요약 정보, 80byte(항상 일정한 크기), 블록 체인을 만들 때 기능에 따라 서로 다르게 정의(비트코인의 헤더와 이더리움의 헤더는 개수도 다름)
버전정보(블록을 만들 당시의 소프트웨어 버전, 어떤 규칙을 사용해 블록을 검증할지 알려주는 값) : 4byte
이전 블록 해시 값(SHA-256을 통한 해시값) : 32byte
이전 블록에서 해시 값을 생성하고, 생성된 해시값이 현재 블록에도 기록
이전 기록과 비교로 변조 여부 확인
머클트리 루트 : 32byte
블록 데이터에 담겨있는 모든 트랜잭션의 요약 정보(해시값)
1MB에 달하는 3,000여개의 트랜잭션을 요약
타임스탬프 : 4byte
블록의 생성 시간
타깃 난이도 비트 : 4byte
블록 생셩의 난이도에 대한 값을 저장하는 부분
난스(정수) : 4byte
해시 퍼즐의 정답
블록데이터 : 실제 데이터 담는 부분, 실제 블록에 담겨 있는 1MB 까지의 정보
블록크기 : 4byte
거래내역(트랜잭션) 개수 : 가변(1~9byte)
실제 거래내역 개수가 절을 때 실제로 개수를 저장, 개수가 많아질 때는 바이트를 사용
트랜잭션(2000~3000여 개 데이터 축적) : 가변
하나의 비트코인 주소로부터 다른 다수의(하나의) 비트코인의 주소로 거래
하나의 거래의 최소 크기는 대략 166byte(하나의 거래, 보내는사람의 비트코인 주소, 받는사람의 비트코인 주소), 실제 거래내역 크기는 300byte 초과(다수의 거래, 거스름돈)
해시 퍼즐
유효한 블록의 해시값을 찾을때까지 무한 반복(하나의 해시 함수 해결)
일정계산을 주어진 목표값을 찾을때까지 반복
T(목표값)가 작을 수록 만족하기 힘듬
해시 퍼즐을 푸는 수학적 공식은 없으므로 무수히 반복되는 산수 문제 해결
엄청난 에너지와 막대한 하드웨어 필요
작업증명 : 퍼즐을 이용해서 의도적으로 막대한 에너지를 소모하게 만든 방식
블록체인은 기록할 때 힘들게하여 변경자체의 욕구를 최소화 한 시스템
최초 기록 및 변경에 막대한 에너지 소모
반대 급부의 경제적 이득이 없으면 변경 이유 없음
합당한 이유 없다면 정상적 기록을 통한 보상금을 받는 것이 경제적으로 합리적임
해시퍼즐의 난이도
난이도 조절 이유 : 컴퓨터가 발달하여도 10분에 하나씩 블록 생성
10분이 걸리도록 자동 조절하면서 목표값을 낮추고, 시행 횟수를 올림
원래 소요시간보다 적을 경우 : 난이도 상승, 오래 걸렸을 경우 : 난이도 하향
탈중앙화 합의 규칙의 개념
모든 노드는 현재 자신이 가지고 있는 데이터와 피어로부터 전달받은 데이터에 의존해서 모든 것을 판단해야 함
탈중앙화 합의 규칙에서는 규칙을 지켰을 때도 퇴출하는 방식 필요(=서로 내용이 상이하여 하나의 값으로 통일하는 과정)
이유 : 각각 어떤 블록이 존재한다는 사실을 모른 채 피어 블록만 검증하려 하기 때문
규칙 : 동일한 규칙을 지켰음에도 서로 내용이 다르다면 길이를 비교하고 더 긴 것을 따라 가게 됨
이중사용
동일한 암호화폐를 여러 번 사용하려는 악의적 시도
둘 다 폐기되거나, 둘 중하나 먼저 처리가 되어 두 가지가 모두 처리되는 일은 없음
그러나 사기를 당하는 경우가 생김 → 안전한 방법 : 기록이 블록에 적힌 후 6개의 블록이 생성될 떄까지 기다리는 것(퇴출가능성이 낮아짐) → 그러나 거래의 즉시성을 해침
비가역성의 의미
비역적 기록 : 기록 후 어떠한 경우에도 변경하지 못하게 하는 성질
블록체인은 기록을 하기 힘들며, 기록 후 수정이 매우 힘든 장치/비가역성을 소프트웨어로 구현하기 위한 방식
현실적으로 비가역적 기록성을 가진 장치의 제작은 불가능하나 비가역적 기록장치처럼 변경이 힘들게 하는 것은 가능
기록의 무결성 유지 방법
모든 노드가 항상 검증에 참여
비가역성 구현
비역성을 구현하기 위해 해시함수, 작업증명을 활용
1단계 : 작업증명
2단계 : 연쇄해시를 통한 작업변경의 기하급수적 증가
특정 블록을 변경하려면, 바꾸려는 블록 이후의 모든 블록의 해시값을 다시 계산해야 함
하드 포크와 소프트 포크
블록체인은 중앙화서버에 비해 소프트웨어 관리가 어려움
동일한 블록에서 노드가 다른 행동을 하는 이유
모든 사람의 소프트웨어 버전이 다르기 때문에 발생
규칙이 변경되었을 경우 동일한 블록에 대해 서로 다른 규칙을 적용
소프트포크, 하드포그 : 동일한 블록에 대해 서로 다른 규칙을 적용, 서로 다른 결론에 이르는 현상
하드포크
과거에 무효이던 규칙이 유효화되는 순간 발생
규칙을 어겼기 때문에 더 긴 블록이라도 따라가지 않는 그룹 발생
이전 소프트웨어 사용 그룹이 모두 업데이트하기 전까지 절대 하나로 합쳐지지 않는 현상
모든 노드가 소프트웨어를 업그레이드해야 블록체인 데이터 통일
예시 : 1MB 블록을 허용했다가 2MB을 허용하는 경우
소프트포크
과거에 유효이던 규칙이 무효화되는 순간 발생
이전 노드는 최신 소프트웨어 블록에 블록체인 데이터 강제적 통일(업그레이드 노드가 더 긴 블록체인을 생성할 경우)
최신 버전을 사용하는 채굴업자가 늘어날 수록 소프트 포크의 성공 가능성이 높아짐
최신 소프트웨어를 채굴업자를 많이 사용하게하려면? 소포트 포크 감행 전 반드시 협조 요청
보안상 결함을 발견하여 규칙을 삭제
51% 공격
단 한명이 나머지 사람들의 하드웨어보다 더 많은 자원을 가지는 현상
자원 및 계산량이 많으므로 블록을 만들 가능성이 높아짐
거내역 미작성 : 서비스 자체가 방해되어 블록체인 서비스 비활성화
수수료 인상 : 특정수수료 지급 전까지 트랜잭션 미처리(블록 생산자가 원하는 수수료를 지불할 수 밖에 없음)
이중사용 : 독점권 소유자가 자신에게 되돌아오는 거래내역만 처리하여 이중사용 항상 성공
긴 블록 생성 후 기존 블록 퇴출 : 시스템 자체의 안정성 저해
해시파워의 90%는 상위 10개 채굴업체가 보유 / 상위 3개 업체가 전체 해시파워의 55%장악하여 언제든 51% 공격 가능
단 10개의 노드가 채굴 중지 시 더이상 거래 불가능할정도로 블록체인 존립에 심각한 위협 요소
블록체인 거래내역 조작은 디지털 서명 / 비대칭 암호화 기법 / 해시함수로 원칙적즉으로는 불가능하여 타인의 비트코인 약탈이 불가능
경제적 이득이 적어서 공격 확률이 적음 → 정상 블록을 생성하는 것이 더 많은 경제적 이익을 취할 수 있음
이클립스 공격, 이기적인 채굴자 공격
과반수 해시 파워 없이 시스템 교란 가능
25% 시스템 독점 시 시스템 교란 가능 입증
중개인이 없는 거래
아래의 경우 복구할 수 없음
비트코인을 사용하다 비밀번호를 잊어버리면?
비트코인 키를 저장한 장치를 훼손하게 되면?
잘못된 주소로 비트코인을 전송하게 되면
블록체인을 통한 중고차 직거래
하자 발생 시 중재자 없음
개인정보보호 문제 해결 필요(브로드캐스팅에 개인정보를 담아서는 안 됨)
스마트 계약
제3자가 개입하지 않아도 계약 집행 가능(블록체인의 직접 거래와 같은 맥락)
정적인 거래내역 이외에 거래내역 자체를 컴퓨터 프로그램으로 기술하는 방식
호출이 가능하여 호출 때마다 실행
메시지를 통한 매개변수에 따라 서로 다른 작용
이더리움 : 스마트 컨트랙트의 모습을 완전히 갖춘 최초의 블록체인
이더리움에서의 스마트 계약
프로그램화된 내용을 블록에 담을 수 있는 환경 제공(IDE)
원하는 프로그램 작성 → 컴파일 → 이더리움에 불러오도록 저장
사용자가 작성 프로그램 결정
방식에 따라 무한가지의 새로운 용도 탄생
언제든 호출 가능하고 호출되면 프로그램 실행, 결과는 블록체인에 저장
같은 기록이라도 실행될 때의 매개변수, 컨디션에 따라 다른 결과 도출
이더리움에 사용되는 언어
솔리더티
이더리움을 통해 축구 내기를 한 경우
비트코인은 제3자가 필요하나, 이더리움은 축구 내기 프로그램을 통해 당사자가 만날 필요 없이 승자에게 자동으로 이더리움을 전송
블록체인의 보안
1.
정보의 탈취로부터 가장 취약한 시스템
암호화 자체가 안전을 보장하지 않음
중요한 데이터를 블록체인에 담으면 안됨
비트코인 : 익명성 보장(정보는 노출되지만 개인정보는 노출되지 않음) / 구조적으로 개인정보가 막혀있음
이더리움 : 스마트컨트랙트를 이용해 개인정보를 저장했다면 누출이 일어날 수 있음
2.
서비스 중단 공격이나 기록을 변경시키려는 시도로부터는 현존하는 가장 안전한 시스템
공격이나 기록 변경을 위해서는 모든 노드를 공격해야 함
해시코드를 다 풀어야 하기 때문에 이론적으로 불가능
중개소와 블록체인
블록체인의 안전성과 암호화폐 중개소의 안전성은 관련이 없음
블록체인의 안전성은 블록체인과 비트코인시스템에 국한됨
지갑은 프로그램의 안전성이 별도로 존재(지갑을 개발하는 사람마다 안전성을 다르게 만들 수도 있기 때문)
중개소는 블록체인의 외부 요소로 블록체인 기술과는 상관이 없음
비트코인 중개소는 중앙화 시스템으로 되어있음
최근 발생한 암호화폐 해킹사건은 블록체인이 아닌 중개소를 해킹하려 많으 자원을 획득하려는 시도였음
중개소는 거래 내용을 시뮬레이션만 하고 있음
비트코인 블록체인의 문제점
1.
용도가 제한적임
비트코인을 주고 받는 정적인 기록만 하므로 새로운 것을 기록하기 위해서는 프로그램 모두가 수정되어야 함
2.
상태가 기록되어 있지 않음
비트코인의 특정 상태는 어떤 한 블록에 있지 않으므로 하나의 블록만으로는 상태를 알 수 없음
3.
해시퍼즐 방식은 계산만 빨리하면 풀 수 있음
해시파워가 일부 세력에 의해 독점 될 위험이 큼
이더리움에서의 개선점
1.
스마트 컨트랙트
프로그램을 이용하여 각각의 용도가 바뀜
프로그램을 통해 원하는 내용을 블록에 저장 및 호출할 수 있는 환경 제공
솔리디티 언어를 이용하여 프로그래밍화
계약 계정 속에 프로그램을 저장할 수 있는 방식
비트코인 : 모든 거래를 비트코인 주소를 이용하여 전달
이더리움 : 계정 단위 관리를 위한 계정 정의
1.
EOA(Externally Owned Account) : 비트코인 주소와 비슷함 / 정적인 내용 기록이 기본 목표 / 개인키로 통제할 수 있음 / 이더리움 간 전송 가능
2.
계약 계정 : 스마트 컨트랙트 저장 / 전송 내용과 특정 스마트 컨트랙트 저장 / 코드에 의해 통제 / 계약 계정 내의 실행 코드가 실행되면 그 결과가 저장되게 됨 / 코드에 의해 통제 / 실행된 코드는 또 다른 계약 계정 호출 가능
계약계정을 호출하려면 EOA에서 호출해야 하고 계약계정은 또 다른 계약계정을 호출할 수 있음
최초의 계약 계정은 반드시 EOA를 통해 호출
2.
계정별 상태 관리
각각의 블록에서 각각의 계정으로 이어가는 다리 역할을 통해 어떤 계정이던 특정 블록에서 바로 액세스 가능
이더리움의 블록 : 현재 계정 상태가 저장된 별도의 공간이 있음 / 글로벌 데이터를 가짐(모든 계정의 잔고는 한 곳에 저장) / 각 블록에서 특정 계정의 데이터와 상태까지 찾을 수 있음
3.
메모리-하드 해시를 사용
메모리 상자가 있음
하나의 해시 함수 계산시 64회의 메모리 액세스 필요 → 계산속도 저하
d.
통합 개발 프로그램(IDE)의 제공
IDE툴을 사용해 스마트 컨트랙트 생성 가능
e.
토큰의 개념 도입
토큰 개념 도입 전 : 독자적인 네트워크를 구성하고, 구축된 네트워크에서 암호화폐 발행
토큰 개념 도입 후 : 스마트 컨트랙트 이용하여 개념만으로 전송 및 판매 가능 - 누구나 손쉽게 토큰 발행 가능
토큰의 기능 : 채굴, 네트워크도 없음. 일정 디지털 화폐를 서로 주고받는 기능 / 이더리움에서는 스마트 컨트랙트를 위해서 토큰을 주고받을 수 있음
15만개의 토큰이 스마트컨트랙트 형태로 이더리움에 들어가 있음(1,000여개가 실제로 거래되고 있음)
토큰의 이면 : 거래되고 있는 대부분의 토큰이 중개소에 의해 만들어지고 있음
이더리움 메인넷을 제공하고 메인넷을 이용하는 사람들이 스마트컨트랙트를 이용하여 탈중화 프로그램을 제공할 수 있도록 하겠다는 포부가 있음
Dapp의 한계 : 중요한 정보를 저장할 수 없음 - 사용 제한에 대한 문제가 발생할 수 있음 - 효율을 포기하고 값 저장 - 저장된 것에 대한 변화를 최소화
퍼블릭 블록체인 vs 프라이빗(컨소시엄) 블록체인
프라이빗 블록체인
하나의 서버가 기록과 검증 실시 / 중앙화 시스템과 유사 / 분산 저장을 통한 차별화 / 중앙화 시스템으로 분류 가능
컨소시엄 블록체인
여러개의 서버로 나눠 저장할 뿐 기록과 검증을 정의된 소수에 의전 / 사전에 정의된 컨소시엄에 합류해야 기록의 검증에 참여 가능 / 몇 개의 동종업계가 기록 분사 저장 방식 채택
블록체인의 효용성 훼손점
1.
서비스 중단 공격 및 기록 변경 공격 안전성 저해(해커의 목표가 뚜렷하게 됨)
2.
확장성 보유 불가 : 사전에 정한 노드 외에는 검증에 참여할 수 없음
3.
기록의 불변성 저해 : 채굴 과정이 없어서 기록 변경에 대해 쉽게 감지하나 엄청난 에너지가 드는 리소스가 없음 / 해시 함수만 다시 계산하면 언제든지 기록을 변경할 수 있음
4.
탈중앙화, 제3자의 개입 없는 거래 불가능
작업증명 vs 지분증명
지분증명
작업증명을 대체할 수 있는 방식
다수결이나 발행한 코인량으로 결정 → 안전성이 담보되지 않음, 투명성 문제가 제기되고 있음
DAO(탈중화된 자율조직)
개입없이 자율적으로 실현될 수 있는 환경 추구
불필요한 수수료 제거
더다오 사건
채굴업자와 담합 : 지금의 이더리움
채굴업자와 담합에 반기 : 이더리움 클래식