블록체인 소개 - (3) 블록체인 활용 사례

|

블록체인 활용 사례

블록체인을 실제로 업무에 활용하거나 서비스에 적용한 사례는 꽤 많이 있습니다.


암호 화페(Cryptocurrency)

블록체인의 대표적인 예시가 ‘비트코인’입니다. 그 외에도 이더리움이나 기타 수많은 암호 화폐들이 존재합니다. 이 부분은 현재 엄청난 사회적 이슈가 되어 수많은 논의가 이루어지고 있는데, 이번 포스팅에서는 암호 화폐에 대한 부분은 패스하도록 하겠습니다.


송금 서비스

송금 중에서도 특히 국제 송금은 상당히 느리고 많은 수수료를 필요로 합니다. 또한 블랙박스 형태로 처리되기 때문에 송금하는 사람과 받는 사람 모두 처리 상태를 알 수 없는 불편함이 존재했습니다. 블록체인을 이용하면 보다 간편하고 빠르게, 저렴한 수수료로 송금 서비스를 제공할 수 있습니다. 다만, 실제 화폐와 블록체인 기반의 가상 화폐와의 환전을 위한 중개소가 필요하며, 세계 각국에 그런 환전소가 안정적으로 유지되어야 할 필요가 있습니다.

미국 Align Commerce사는 블록체인을 이용해서 국제 송금 서비스를 제공하고 있습니다. 2016년 6월 기준으로 60개국에 서비스를 제공하고 있습니다.

Image


무역 금융

무역은 운송에 많은 시간이 걸리며, 그로 인해 상품의 인도와 대금 결제간의 시차가 크게 발생하는 경우가 많습니다. 또한 여러 관계자가 엮이기 때문에 거래가 복잡한 문제가 있습니다. 그래서 리스크 관리를 위해 신용장을 메일이나 우편 등으로 발행하고 있습니다.

Image

일본의 오릭스 은행, NTT 도코모 벤처스, 시즈오카 은행 등에서는 신용장 거래에 블록체인 기술을 적용하는 실증 실험을 완료한 적이 있으며, Bank of America, HSBC 홀디딩스 등에서도 블록체인 기반 신용장 거래를 검증 완료했습니다. 또한 글로벌 금융 기관의 컨소시움인 R3CEV에서도 신용장과 미수금 청구서 관리를 위해 블록체인 기술을 적용한 사례 등이 있습니다.


크라우드 펀딩(Crowd Funding)

코인을 이용한 자금 조달 방식(ICO, Initial Coin Offering)으로 역시나 현재 엄청난 사회적 이슈가 되고 있는 부분입니다. 현재 수많은 사례들이 있으며, 여기서는 일단 패스하도록 하겠습니다.


마켓 플레이스

중고나라와 같은 중고 거래, 지마켓, 옥션 등의 상품 거래 등에도 블록체인을 적용할 수는 있습니다. 하지만, 블록체인은 블록체인 외부의 상품에 대해서는 어떻게 할 수가 없습니다. 예를 들어 중고나라에서 블록체인을 이용해 입금은 했으니, 실제 택배를 받아보니 벽돌이 포장되어서 오는 것은 방지할 수가 없습니다.

하지만, 실물 상품이 아닌 음악이나 영화, 이미지같은 데이터 상품에는 블록체인을 응용하기가 쉽습니다.

예를 들어 멜론과 같은 음악 마켓에서 IU의 노래를 판매한다고 가정합시다. 100명이 구매를 하든, 100,000명이 구매를 하든 IU는 멜론이 알려준 판매량밖에 알지를 못합니다. 즉, 멜론이 자사의 이득을 위해 거짓말을 하더라도 작곡자와 소비자는 자신이 구매한 금액이 작곡자에게 정상적으로 흘러갔는지를 확인할 수가 없습니다.

만약 블록체인 기반의 음악 마켓이 있다면 이런 문제를 해결할 수 있습니다. IU는 블록체인내에 스마트 컨트랙트(Smart Contract)를 이용해서 자신의 노래를 등록하고 적당한 가격을 입력합니다. 그리고 소비자는 블록체인을 통해 노래를 구매하면 자신이 구매한 금액이 작곡자에게 그대로 전달되는 것을 투명하게 확인할 수 있습니다.

그외에도 미디어 스트리밍 종량 과금 모델에 블록체인을 적용할 수 있습니다. 1시간 분량의 시청료를 블록체인에 등록해놓으면 고객은 구매를 해서 사용할 수 있으며, 컨텐츠 시청을 이용하지 못한 경우에 환불 등을 해줄 수 있습니다.

dotBlockchainMedia 등의 회사에서 블록체인 기반 음악 마켓을 운영하고 있으며, Kodak은 블록체인 기반 사진 마켓 시장에 뛰어들었습니다.


전력 시장

개인이 자가발전 등으로 생산한 전기를 주변 마을 사람들에게 블록체인 기반으로 판매를 하는 사례가 있었습니다. 2016년 4월 미국 뉴욕에서 TransActive Grid 프로젝트로 실증 실험을 완료했습니다. 전기 판매 방법은 다음과 같습니다.

Image

자가발전을 하는 가정에 스마트 계측기를 설치하고, 스마트 계측기는 생산되는 전기량을 블록체인을 기록하며 인근 주민들은 블록체인을 통해 저렴한 가격에 전력을 구매해서 사용합니다. 특별한 중개자 없이 거래가 되어 판매자, 구매자 모두 가격적인 혜택을 누리며 블록체인의 스마트 컨트랙트로 자동으로 계약을 체결해주니 판매자가 크게 신경을 쓰고 있지 않아도 생태계가 유지되어 블록체인의 대표적인 사례 중 하나로 언급되고 있습니다.


저작권 관리 및 문서 공증

작품 정보를 블록체인에 등록을 하면 해당 저작권이 누구에게 귀속되었는지를 쉽게 증명할 수 있습니다. 음악이나 이미지, 예술 작품 등의 디지털 정보를 블록체인에 등록하면 해당 정보는 위변조 될 수 없기 때문에 언제라도 증명이 가능합니다.

미국 Blockai사에서는 블록체인에 저작물을 등록하고, 또한 저작물에 대한 저작권 증명서를 발급해주는 서비스를 제공하고 있습니다. 또한 Copytrack이라는 글로벌 저작권 등록 업체도 최근에 서비스를 시작했습니다.

또한 문서 정보를 블록체인에 기록해서 공증을 대체하기 위한 노력도 진행되고 있습니다. Factom과 같은 전자 문서를 블록체인으로 공증해주는 오픈 플랫폼도 존재합니다.

해시값을 쉽게 추출할 수 있고 블록체인을 이용해서 기록하기만 하면 쉽게 증명이 되는 분야이기 때문에 많은 업체들에서 서비스화가 이루어질 것이 예상되고 있습니다.


고가 물품 거래 추적

다이아몬드와 같은 고가의 물품을 블록체인을 이용해서 등록하고 관리할 수 있습니다. 그래서 물품 거래 관리나 유통 추적을 쉽게 할 수 있습니다.

Image

영국의 Everledger사에서는 다이아몬드와 그 소유자 정보, 감정서 등을 블록체인으로 관리하는 서비스를 제공하고 있으며, 2016년 6월 기준으로 85만개 이상의 다이아몬드가 블록체인에 등록이 되었습니다. 다이아몬드가 가진 약 40가지 이상의 특징을 추출하여 블록체인에 등록했으며, 독일의 국제 보험사인 알리안츠사와 제휴하고 있습니다.


IoT 활용

IoT에도 블록체인과 스마트 컨트랙트를 활용하는 연구가 많이 진행되고 있습니다. 엄청나게 많은 수의 IoT 디바이스가 특정 서버에 몰려 과부화 상태가 되는 것을 방지하기 위해 분산 시스템 구조가 많이 연구되고 있으며 블록체인을 이용한 기기 인증 등도 많이 시도되고 있습니다.

일본의 Nayuta사의 경우는 블록체인 기반 IoT 전원 소켓을 공개했습니다. 사용자가 스마트폰을 이용해서 전원 소켓 이용권을 신청하면, 블록체인으로부터 이용권 전자 토큰을 발급받습니다. 이를 이용해서 전원 소켓을 활성화해서 사용할 수 있습니다.

Image


독일 Slock사는 블록체인 기반 집 임대 서비스를 제공하고 있습니다. 사용자가 블록체인을 통해 임대료의 2배의 금액을 보증금으로 제출한다음 스마트폰을 이용해서 현관 문을 열고 집안의 다양한 서비스를 이용합니다. 그리고 이용이 끝나면 블록체인의 계약 내용과 비교하여 남은 금액을 정산해주는 서비스입니다.

Image


투표

블록체인을 투표에 활용하기 위한 연구도 많이 진행되고 있습니다. 블록체인을 활용하면 투표 여부 확인이나 집계의 투명화를 얻을 수 있고, 어떻게 익명성을 유지할 것인가가 과제로 남아 있습니다. 사실 해시함수와 같이 단방향 함수가 많이 있기 때문에 익명성을 보장하면서 유효성을 증명할 수 있는 다양한 방법이 있으리라 예상됩니다.

호주의 정당인 Flux에서는 블록체인을 이용해 당원들에게 투표권 토큰을 발행했었습니다. 또한 투표권은 양도가 가능해서 정치에 관심이 없거나 지식이 없는 사람들은 자신이 믿을 수 있는 사람들에게 토큰을 양도해서 대리 투표도 가능하게 했었습니다.

Image

앞으로 좀 더 많은 연구가 진행되긴 해야겠지만 투표 역시 블록체인을 적용하기에 좋은 분야임은 틀림없는 것 같습니다.

Windows 10 - 자동 설치 App 기능 차단

|

자동 설치 기능

Windows 10을 쓰다보면 제가 설치하지도 않은 App들이 자동으로 설치되는 현상을 겪을 수 있습니다. 일부러 삭제까지 해줬는데도 어느 날 보면 ‘새로 설치되었음’이라는 메시지와 함께 프로그램 리스트에 뜨는 App들을 보면 황당함을 느끼게 됩니다.

자동 설치 기능을 차단하기 위해서는 아래 레지스트리 파일을 다운받아서 실행하면 됩니다.

레지스트리 파일

pandas, matplotlib, seaborn 모듈 활용하기

|

여기서 사용한 테스트 데이터는 여기에서 받을 수 있습니다.

Pandas

pandas는 많은 데이터를 쉽게 다룰 수 있는 기능을 제공하는 Python 모듈입니다.

예제 코드

import pandas as pd

data_set = pd.read_csv('pima-indians-diabetes.csv',
                       names=["pregnant", "plasma", "presure", "thickness",
                              "insulin", "BMI", "pedigree", "age", "class"])

print(data_set.head(5))

print('====================================================================\n')

print(data_set.info())

print('====================================================================\n')

print(data_set.describe())

data_set.head(5)는 상위 5개의 데이터들의 리스트를 조회하는 명령어입니다. 또한 info() 함수를 이용해서 각 정보들의 데이터 타입이나 데이터 개수 등을 확인할 수 있고, describe() 함수를 이용해서 정보별 샘플의 개수, 평균, 표준 편차, 최소/최대값 등을 조회할 수 있습니다.


실행 결과

   pregnant  plasma  presure  thickness  insulin   BMI  pedigree  age  class
0         6     148       72         35        0  33.6     0.627   50      1
1         1      85       66         29        0  26.6     0.351   31      0
2         8     183       64          0        0  23.3     0.672   32      1
3         1      89       66         23       94  28.1     0.167   21      0
4         0     137       40         35      168  43.1     2.288   33      1
==================================================================================

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 768 entries, 0 to 767
Data columns (total 9 columns):
pregnant     768 non-null int64
plasma       768 non-null int64
presure      768 non-null int64
thickness    768 non-null int64
insulin      768 non-null int64
BMI          768 non-null float64
pedigree     768 non-null float64
age          768 non-null int64
class        768 non-null int64
dtypes: float64(2), int64(7)
memory usage: 54.1 KB
None
==================================================================================

         pregnant      plasma     presure   thickness     insulin         BMI  \
count  768.000000  768.000000  768.000000  768.000000  768.000000  768.000000   
mean     3.845052  120.894531   69.105469   20.536458   79.799479   31.992578   
std      3.369578   31.972618   19.355807   15.952218  115.244002    7.884160   
min      0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   
25%      1.000000   99.000000   62.000000    0.000000    0.000000   27.300000   
50%      3.000000  117.000000   72.000000   23.000000   30.500000   32.000000   
75%      6.000000  140.250000   80.000000   32.000000  127.250000   36.600000   
max     17.000000  199.000000  122.000000   99.000000  846.000000   67.100000   

         pedigree         age       class  
count  768.000000  768.000000  768.000000  
mean     0.471876   33.240885    0.348958  
std      0.331329   11.760232    0.476951  
min      0.078000   21.000000    0.000000  
25%      0.243750   24.000000    0.000000  
50%      0.372500   29.000000    0.000000  
75%      0.626250   41.000000    1.000000  
max      2.420000   81.000000    1.000000  


matplotlib, seaborn

matplotlib은 Python에서 그래프를 그리기 쉽도록 해주는 모듈입니다. 그리고 seaborn 모듈은 각 정보들끼리의 상관관계를 쉽게 볼 수 있도록 해줍니다.

Heatmap 예제 코드

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

data_set = pd.read_csv('pima-indians-diabetes.csv',
                       names=["pregnant", "plasma", "presure", "thickness",
                              "insulin", "BMI", "pedigree", "age", "class"])

# 그래프의 크기 지정
plt.figure(figsize=(8, 8))

# Heatmap 설정
sns.heatmap(data_set.corr(), linewidths=0.1, vmax=0.5, cmap=plt.cm.gist_heat,
            linecolor='white', annot=True)

# 렌더링
plt.show()


실행 결과

Image

Heatmap을 이용하면 각 속성들간의 상관관계 크기를 알 수 있습니다. 위 결과에서는 plasma 항목과 class의 항목의 상관관계가 높은 것을 확인할 수 있습니다.


Grid 예제 코드

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

data_set = pd.read_csv('pima-indians-diabetes.csv',
                       names=["pregnant", "plasma", "presure", "thickness",
                              "insulin", "BMI", "pedigree", "age", "class"])

grid = sns.FacetGrid(data_set, col='class')
grid.map(plt.hist, 'plasma', bins=10)

plt.show()


실행 결과

Image

위 그래프를 보면 class 속성이 1인 경우(위 데이터는 당뇨병 환자를 의미하는 속성) plasma 항목의 수치가 150 이상일 때, class = 0일 때의 경우와 다르다는 것을 확인할 수 있습니다.

블록체인 소개 - (2) 블록과 해시함수

|

블록체인에 대하여

앞서 분산 장부에 대한 이야기를 잠깐 했었습니다. 그러면 블록체인은 무엇인지를 간단하게 알아보도록 하겠습니다.

블록체인은 모든 거래 정보를 블록에 기록하고, 그 블록을 체인처럼 연결시켜놓은 분산 장부


블록

블록체인을 이루고 있는 ‘블록(Block)’은 장부의 페이지 한 장 한 장이라고 생각하시면 편합니다. 장부의 페이지들이 모여서 커다란 하나의 책이 만들어지는 것처럼 블록이 모여서 블록체인을 이룹니다. 장부의 페이지에는 매일 발생하는 거래의 기록이 쓰여지듯이 각 블록에도 특정 시간동안 발생한 모든 거래의 기록이 저장됩니다.

블록은 블록 헤더, 거래 정보 및 기타 정보들로 이루어지는데 깊이 들어가면 복잡하니깐 그냥 거래 정보가 저장된다고만 이해해도 충분할 것 같습니다.


해시

블록체인을 이야기하다보면 ‘해시(Hash)’라는 단어가 자주 등장합니다. 해시는 ‘어떤 데이터를 고정된 길이의 데이터로 변환’하는 것을 의미합니다.

예를 들면 다음과 같은 문장이 있다고 합시다.

안녕하세요. snowdeer 입니다.

이걸 32자리 해시코드로 바꾸면 다음과 같이 됩니다.

xi0jDkl34erRhaNj349JKs23gth2rGw2

해시 함수를 거치면 원본 데이터를 알아볼 수 없도록 특수한 문자열로 변환이 됩니다. 해시 함수는 압축이 아니라 단방향 변환이기 때문에 해시값을 이용해서 원본 데이터를 복원할 수 없습니다.

해시 함수는 다음과 같은 성격이 있기 때문에 보안에서 유용하게 쓰입니다.

  • 눈사태 효과 : 원본 데이터에 아주 작은 변화만 있어도 완전히 다른 해시값이 만들어지게 됩니다. 예를 들어 위의 ‘안녕하세요. snowdeer 입니다.’ 문장에 마침표 하나만 더 찍어도 해시값은 ‘n4k3049fjdId843jKiro23jf50l3sL23’와 같이 완전히 다른 값이 나옵니다. 즉, 원본 데이터의 사소한 변화도 쉽게 확인할 수 있습니다.
  • 단방향 변환 : 해시 함수가 양방향 변환이 가능했더라면 암호화에 쓰일 수가 없었을 것입니다. 해시값만 봐도 원래 데이터를 알아낼 수 있었을테니깐요. 단방향 변환이고 복원이 불가능하기 때문에 해시 함수는 전자 서명 등 다양한 암호화에 사용되고 있습니다.

눈사태 효과 덕분에 전자 서명 등에서 해시 값을 많이 활용하고 있습니다. 본문에 약간의 수정만 가해져도 해시 값이 완전히 달라져서 위변조 판별이 쉬워지기 때문입니다.

그리고 단방향 변환만 가능한 점을 이용해서 각종 서버에서 사용자 정보들, 특히 비밀번호 등을 해시값으로 변환해서 저장하는 이유도 이런 성질때문입니다. 행여라도 서버가 해킹을 당해 사용자 정보가 유출이 되더라도 해시값으로 암호화된 값이 유출이 되면 원본 값을 복원할 수 없기 때문에 그나마 피해를 줄일 수 있습니다.

블록체인에서는 이 해시값을 이용해 해당 블록을 서명하며, 또한 이전 블록의 해시값을 다음 블록에 기록함으로써 체인 형태의 연결 리스트(Linked List)를 형성합니다. 그래서 특정 블록을 해킹하려면 그 블록에 연결된 다른 블록들도 수정을 해야 하기 때문에 데이터의 위변조가 아주 어렵습니다.

Image


블록체인

블록체인은 이렇게 거래 내역이 기록된 블록들을 차곡차곡 쌓음으로써 위변조가 어렵도록 만들었고, 또한 블록체인에 참여한 모든 노드들이 동일한 블록을 가짐으로써 더욱 더 안전한 보안성을 갖게 되었습니다.

블록체인의 대표 산출물, 비트코인의 경우 개발된지 약 10년이 지났지만 아직까지 네트워크가 안정적으로 동작하고 있습니다. 2011년 마운틴곡스 사례가 유명한데 이는 비트코인 네트워크가 해킹된 것은 아니고 거래서 내부의 헛점이 발생해서 해커로부터 대량의 비트코인을 잃어버린 사건입니다.

Windows 10 - PicPick 설정

|

PicPick

PicPick은 화면 캡쳐 프로그램입니다. 그동안 반디카메라만 사용하다가 지인에게 PicPick에 대한 소개를 듣고 잠시 써보다가 완전히 PicPick으로 넘어왔습니다.

개인, 기업 어디에서나 무료로 사용할 수 있습니다.

아래는 지극히 개인적인 PicPick 설정입니다. 맥북을 같이 쓰다보니 상당 부분의 단축키를 서로 비슷하게 맞추고 있습니다. 맥북의 화면 캡쳐 단축키가 직관성이 없긴 하지만, 맥북의 단축키를 바꾸기는 어려워서 Windows에서 해당 단축키를 맥북과 비슷하게 설정하기로 했습니다.


PickPick 설정

이미지 저장 파일 이름 포맷

image

저는 단순 일련번호보다는 날짜, 시간 정보가 더 유용한 것 같아서 아래와 같은 포맷을 사용합니다.

image_%y%m%d-%h%n%s


이미지 저장 폴더 위치

image


단축키

image