오라클 서비스
오라클 서비스(oracle service)란 현실 세계의 다양한 데이터를 수집하여 스마트 계약을 운영하려는 블록체인 네트워크에 API 방식으로 제공해 주는 서비스를 말한다. 오라클 서비스를 제공하는 회사 또는 소프트웨어를 오라클 문제(oracle problem) 해결을 위한 중간자 또는 미들웨어(middleware)라고 부른다. 오라클 서비스를 제공하는 중간자 역할을 하는 회사에는 오라클라이즈(Oraclize), 체인링크(Chainlink) 등이 있다.
개요
오라클은 스마트 계약의 사전 정의된 조치를 트리거할 수 있는 외부 정보를 스마트 계약에 공급한다. 이 외부 데이터는 소프트웨어(빅데이터 애플리케이션) 또는 하드웨어(사물 인터넷)에서 비롯된다. 이러한 조건은 날씨 온도, 성공적인 지불 또는 가격 변동과 같은 데이터일 수 있다. 그러나 스마트 계약은 외부 소스의 데이터가 시스템으로 전송될 때까지 기다리지 않고 계약을 실행한다. 즉, 외부 세계에서 데이터를 호출하기 위해 네트워크 리소스를 사용해야 하며, 이때, 네트워크 트랜잭션 비용이 발생한다. 이더리움의 경우 이것은 '가스'이다.[1]
항목
오라클을 설치하게 되면 아래와 같은 서비스들이 생기게 된다. 처음 서비스 중 중요 서비스들은 자동으로 시작하게 되어 있는데 그럴 경우 PC 상에서 부팅이 오래 걸리게 된다. 따라서 아래의 서비스들을 모두 수동으로 설정하여 필요하면 시작할 수 있도록 하는 것이 좋다. 윈도우7기준 아래 서비스를 하러 가기 위해서는 '제어판->시스템 및 보안->관리 도구->서비스'로 이동하면 된다.
- Oracle ORCL VSS Writer Service : Oracle VSS(Volume Shadow Copy Service)로 백업과 복원을 위한 서비스
- OracleDBConsoleorcl : Oracle Enterprise Manager Database Control을 위한 서비스
- OracleJobSchedulerORCL : Oracle Job Schedule을 위한 서비스
- OracleMTSRecoveryService : MTS(Microsoft Transaction Server)의 Recovery Service
- OracleOraDb11g_home1ClrAgent : .net으로 확장하기 위한 Oracle Service
- OracleOraDb11g_home1TNSListener : 원격상의 Client에게 Oracle Service를 제공하기 위한 TNSListener (필수 시작)
- OracleServiceORCL : Database를 시작하기 위한 필수 Service (필수 시작)[2]
사례
중간자
중간자는 블록체인의 오라클 문제를 해결하기 위한 대안 중 하나이다. 여기서 오라클 문제(oracle problem)란 블록체인 밖에 있는 데이터를 블록체인 안으로 가져올 때 발생하는 문제를 말한다. 이 오라클 문제를 해결하기 위해 현실 세계와 블록체인 사이에서 신뢰할 수 있는 데이터를 제공해 주는 중간자(middleware)를 두는 방법이 있다. 이러한 중간자의 예로 오라클라이즈(Oraclize), 체인링크(Chainlink), 아이캐시(iCash)등이 있다. 이러한 중간자는 네트워크에 중간에 존재하면서, 신뢰할 수 있는 데이터를 안정적이고 체계적으로 제공하여 오라클 문제를 해결할 수 있다. 하지만 탈중앙화를 지향하는 블록체인에서 중간자 역할을 하는 조직이나 소프트웨어가 새로운 형태의 중앙이 될 가능성이 존재한다.[3]
- 오라클라이즈(Oraclize)
- 영국 런던에 있는 데이터 제공 회사이다. 현실 세계의 다양한 데이터를 수집하여 스마트 계약을 운영하려는 블록체인 네트워크에 API 방식으로 제공해 주는 오라클 서비스를 하고 있다. 오라클라이즈의 데이터는 http 방식의 URL, 울프럼 알파(Wolfram Alpha) 검색엔진, 분산 파일 시스템인 IPFS, 랜덤하게 생성된 값, 계산을 거쳐서 생성된 값 등 5종류로 나뉘어 제공된다. 호출 수수료(call fee)는 쿼리 1건당 약 $0.01 ~ $0.05 달러 정도이다. 오라클라이즈는 이더리움뿐만 아니라 비트코인, 루트스톡, 코다에서도 사용할 수 있다. 또한 이들은 특정 시점에 특정 서버가 제공한 데이터라는 사실을 보장하는 TLSNOtary 암호화 인정서를 사용한다. 한 예로, 에스토니아 정부의 eID 스마트카드 프로젝트에 이더리움 주소를 연결한 사례가 있다. 그 외에 안드로이드 기기가 최신 버전의 운영체제를 사용하는지 증명하거나, 오라클라이즈가 개발한 하드웨어 지갑 레저에서 제대로 동작하는지 제3자에게 증명하는 서비스 역시 제공하고 있다.
- 체인링크(Chainlink)
- 블록체인의 스마트 계약을 블록체인 외부의 데이터, 결제, API 등에 연결하기 위해 사용하는 블록체인 미들웨어 플랫폼이자 암호화폐이다. 체인링크는 이더리움 기반으로 작동하는 각종 스마트 계약이 현실 세계의 데이터와 쉽게 연결되도록 돕는 역할을 한다. 2014년에 설립된 스마트 콘트랙트 닷컴의 자회사이다. 2017년 9월에 체인링크 코인 10억 개가 발행되었다. 화폐 심벌은 LINK이다. 2017년 가트너에 의해 블록체인 애플리케이션 쿨 벤더 업체로 선정되었다. 또한 스위프트(Swift)와 협력하여 '스위프트 스마트 오라클'이라는 기능을 개발했다. 체인링크는 세계경제포럼(World Economic Forum)에서 스마트 계약 기술 업체로 소개되었다. 또한 체인링크는 기존 오라클 시스템의 탈중앙화를 이뤄 분산형 오라클 및 소스 시스템을 통해 실물 세계를 블록체인과 연결하는 데 있어서 더욱 정확한 데이터를 제공하는 등 업계의 주목을 받고 있다. 해당 프로젝트는 풍부한 지식과 경험을 겸비한 든든한 자문위원단을 보유하고 있다. 또한, 전 세계 약 11,000개 은행에서 사용되고 있는 스위프트 외 다수의 파트너십 제휴를 맺고 있어 향후 스마트 콘트랙트 활성화의 촉매 역할을 할 수 있을 것이란 기대를 받고 있다.[4]
- 아이캐시(i-Cash) : 아이캐시는 신뢰증명(PoT) 프로토콜을 다중 플랫폼으로써 블록체인 애플리케이션으로 도입해, 대규모로 스마트 계약 결제 시 여러 곳에 분산된 참가자들에게 실제 입력값을 검증 받도록 지원하는 플랫폼이다. 신뢰증명 프로토콜은 블록체인 거래에 보증과 인증을 제공함으로써 시스템 전반에 걸친 신뢰도를 높여주는 역할을 한다. 원래 블록체인의 기술의 가장 큰 장점은 중앙집권적 관리자나 중개인을 두지 않고도 모든 데이터 조작이나 해킹의 위험이 없이 원장에 거래가 기록된다는 점이다. 그러나 아직 블록체인상에 기록된 데이터의 신뢰성을 인증해주는 솔루션이 많이 존재하지 않았다. 그런 가운데 등장한 아이캐시 솔루션은 신뢰증명 프로토콜에 기반한 것으로 스마트 계약의 입력과 결과의 정확성을 보장해주는 역할을 한다. 또한, 신뢰증명(PoT)은 블록체인에 입력하는 데이터의 분산형 신뢰와 보증을 제공해준다. 아이캐시가 활용하는 기술은 블록체인을 제도권 내로 진입시키고자 하는 것이며, 사용자들이 블록체인 내에 부정확하거나 악의적인 데이터 입력으로 인해 피해를 보는 일이 없도록 보호하고자 한다. 아이캐시는 자체적인 프로토콜을 통해서 모든 원장 상에서 스마트계약 결과를 검사하고 그를 통해 채택 범위를 넓힐 수 있다. 데이터 조작의 우려가 전혀 없는 거래 결제는 대리자 네트워크를 통해서 이뤄질 수 있다. 그리고 이는 데이터 입력과 결과의 정확성을 항상 인증하고 감사를 실시한다. 아이캐시는 장시간에 걸친 대리자 네트워크의 신뢰성을 추적하고 신뢰성의 순위를 매기는 데 평판 알고리즘을 활용한다. 그리고 가장 신뢰성이 높은 대리자들만 데이터 입력 인증을 받고 아이캐시 적립을 할 수 있게 만들고 있다. 아이캐시의 기술팀은 현재 이더리움, 이오스, 네오 블록체인 등에 초점을 맞추고 있다. 그러나 다른 모든 블록체인상에서 작동이 가능한 플랫폼도 현재 개발하는 중이다. 아이캐시의 전 세계에 실행하고 있으며, 지금까지 100개국에 걸쳐 70개에 달하는 특허를 출원했다.[5]
작동 방법
윈도우
윈도우 서비스 목록에서 보면 아래의 두 이름을 가진 서비스가 있는데, 이 서비스를 시작/중지하면 된다.
- OracleOraDb10g_home1TNSListener → 오라클 리스너
- OracleService"DB명" → 오라클 DB (TESTDB : DB 명)
이 두 프로그램을 시작하고 중지하면 된다. 이 두 프로그램을 시작하고 중지하려면 매번 윈도우 서비스를 열어야 하는 불편함이 있는데, 배치파일을 만들어서 사용하면 간편하다.
- 오라클 시작 (Start_TestDB.bat)
net start OracleOraDb10g_home1TNSListener net start OracleServiceTestDB
- 오라클 중지 (Stop_TestDB.bat)
net stop OracleOraDb10g_home1TNSListener net stop OracleServiceTestDB
리눅스
명령어
오라클 DB는 인스턴스와 리스너를 따로 시작하게 되어 있다.
- 인스턴스 시작/중지
- sqlplus를 시작하여 나오는 SQL> 프롬프트에서 인스턴스를 시작/중지할 수 있다.
sqlplus '/as sysdba'
startup shutdown
- 리스너 시작/중지
lsnrctl start lsnrctl stop
예시
- 인스턴스 시작
oracle@jmnote:/oracle> sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.1.0 - Production on 화 5월 7 13:04:31 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1241513984 bytes
Fixed Size 1219136 bytes
Variable Size 234882496 bytes
Database Buffers 989855744 bytes
Redo Buffers 15556608 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
oracle@jmnote:/oracle>
- 인스턴스 중지
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.1.0 - 64bit Production
oracle@jmnote:/oracle>
- 리스너 시작
oracle@jmnote:/oracle> lsnrctl start
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 07-5월 -2013 12:31:59
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Starting /oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=jmn)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jmnote)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=JMP)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 07-5월 -2013 12:32:01
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=jmn)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jmnote)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
oracle@jmnote:/oracle> netstat -anp | grep 1521 | grep LISTEN (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN 3534/tnslsnr
- →리스너가 1521 포트를 LISTEN 한다.[7]
- 리스너 중지
oracle@jmnote:/oracle> lsnrctl stop
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 07-5월 -2013 12:33:02
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully
각주
- ↑ 〈Blockchain Oracles〉, 《BlockchainHub Berlin》
- ↑ 커피코더, 〈오라클 서비스 항목〉, 《티스토리》, 2015-08-20
- ↑ 장경재, 〈(Makers Basic 11) 블록체인의 문제점과 대안1〉, 《Medium》, 2018-10-06
- ↑ 해시넷, 〈(해시넷 블록체인 시리즈 4) 블록체인의 문제점과 대안 (작업증명 문제, 체인 알고리즘 문제, 오라클 문제)〉, 《네이버 블로그》, 2018-08-29
- ↑ 〈중간자〉, 《해시넷》
- ↑ 〈윈도우/리눅스 오라클 서비스 시작/중지〉, 《이글루스》
- ↑ 〈리눅스 오라클 시작/중지〉, 《제타위키》
- ↑ 나비와꽃기린, 〈ORACLE DB 시작 및 중지 / 리스너 시작 및 중지 하는방법〉, 《티스토리》, 2016-10-26
참고자료
- 〈Blockchain Oracles〉, 《BlockchainHub Berlin》
- 해시넷, 〈(해시넷 블록체인 시리즈 4) 블록체인의 문제점과 대안 (작업증명 문제, 체인 알고리즘 문제, 오라클 문제)〉, 《네이버 블로그》, 2018-08-29
- 〈중간자〉, 《해시넷》
- 장경재, 〈(Makers Basic 11) 블록체인의 문제점과 대안1〉, 《Medium》, 2018-10-06
- 〈윈도우/리눅스 오라클 서비스 시작/중지〉, 《이글루스》
- 〈리눅스 오라클 시작/중지〉, 《제타위키》
- 커피코더, 〈오라클 서비스 항목〉, 《티스토리》, 2015-08-20
- 나비와꽃기린, 〈ORACLE DB 시작 및 중지 / 리스너 시작 및 중지 하는방법〉, 《티스토리》, 2016-10-26
같이 보기