NSIS, 윈도우용 설치 시스템

NSIS Nullsoft Scriptable Install System. 스크립트 기반으로 동작하는 Windows 설치 프로그램을 만드는 오픈소스 시스템. 인스톨실드와 같은 상용 제품들을 널리 대체하면서 인기를 끌고 있다. (= 윈도우용 설치 프로그램을 만들어주는 프로그램.) 공식사이트 :  http://nsis.sourceforge.net/Main_Page * HM NIS Edit : A Free NSIS Editor/IDE. 사람들이 제일 쓸만한 거라고 한다. 다른건 딱히 안보이므로 다운받아서 쓰도록 한다. 1. 라이센스 zlib 라이선스인 자유 소프트웨어 라이선스와 결합한 자유 소프트웨어. (출처 : 위키백과 ) NSIS는 완전 Free라서 다운 받아서 쓰고, 상용화 하는 것도 아무 문제가 없다고 한다. HM NIS Edit는 무료고, 맘에 들어서 개발자에게 Donation 할 수도 있다. 2. 설치 NSIS 다운로드 링크 :  http://nsis.sourceforge.net/Download HM NIS Edit 다운로드 링크 :  http://hmne.sourceforge.net/ HM NIS Edit 설치 중 에러 발생. 뭔지 몰라서 일단 무시하고 설치해본다. 무시하고 설치하니까 일사천리로 잘 된다. 해당 폴더에 가보니까 그 파일이 없어서 생긴 문제같은데, (.lng)파일은 언어파일이고, 내가 쓸 일 없는 언어인 것 같으므로 무시하고 써보도록 한다. 문제가 생기면 그때 생각해야지. NSIS를 설치하면 폴더 내에 'NSIS' 실행파일과 'makensisw' 실행파일 두개가 생성된다. makensisw 는 바로 컴파일 할 수 있는 프로그램이고, NSIS 에 들어가면 각종 매뉴얼, 설명서, 업데이트 등등 NSIS 사용에 도움되는 다양한 링크가 있다. 3. 관련 문법 NSIS 스크립트는 한 줄에 하나의 명령어를 쓰도록 되어있다. C에서 세미콜론(;)으로 구분하는...

Public Blockchain, 공개 블록체인

어제 블록체인의 개념에 대해서 간단하게 정리하는 포스팅을 했다. 이번에는 블록체인에 대해서 좀 더 깊게 들어가서, 블록체인 참여의 형태에 따라 퍼블릭, 프라이빗으로 구분되는 블록체인의 종류에 대해서 정리해보려고 한다. 오늘은 일단 먼저 퍼블릭 블록체인에 대해서 알아보기로 한다.

# 블록체인의 종류

블록체인의 종류는 크게는 두 가지, 굳이 한 번 더 구분하자면 세 가지로 나누어진다.

  • 퍼블릭 블록체인(Public Blockchain) : 비트코인, 이더리움처럼 누구나 블록체인 네트워크에 참여할 수 있는 블록체인
  • 프라이빗 블록체인(Private Blockchain) : 하나의 기관에서 독자적으로 사용하는 블록체인. 내부 망을 구축하거나 별도의 인증방식을 통해 참여가 제한되어 있다.
  • 컨소시움 블록체인(Consortium Blockchain) : 여러 기관들이 컨소시움을 이뤄 구성하는 블록체인. 허가된 기관만 네트워크에 참여할 수 있다.

# Public Blockchain

퍼블릭 블록체인은 누구나 네트워크에 참여해 모든 내역을 볼 수 있고, *트랜잭션 내역을 검증할 수 있다. 그렇기 때문에 인증이 안된 사용자나, 악의적인 목적을 가진 사용자가 네트워크에 참여할 수 있다는 문제가 있다. 그러면 수 많은 사용자들 중에서 블록체인 네트워크에 호의적인, 신뢰가능한 사용자를 어떻게 가려낼 수 있을까? 여기에서 '비잔틴 장군의 문제'가 언급된다.

* 트랜잭션(Transaction) : 처리되는 특정한 업무, 특정한 거래. 또는 그 결과 얻어지는 데이터 기록 (출처 : 네이버 지식백과)

<비잔틴 장군 문제>


비잔티움 장군 문제는 레슬리 램포트와 쇼스탁, 피스가 공저한 1982년 논문에서 처음 언급됐다. 이 논문에서 저자들은 적군의 도시를 공격하려는 비잔티움 제국군의 여러 부대가 지리적으로 떨어진 상태에서 각 부대의 지휘관들이 (중간에 잡힐지도 모르는) 전령을 통해 교신하면서 공격 계획을 함께 세우는 상황을 가정하고 있다. 

이 부대의 지휘관 중 일부에는 배신자가 섞여있을 수 있고, 배신자는 규칙을 충실히 따르는 충직한 지휘관들과 달리 규칙에 얽매이지 않고 마음대로 행동할 수 있다. 이 때 배신자의 존재에도 불구하고 충직한 지휘관들이 동일한 공격 계획을 세우기 위해서는 충직한 지휘관들의 수가 얼마나 있어야 하며, 이 지휘관들이 어떤 규칙을 따라 교신해야 하는지에 대한 문제가 비잔티움 장군 문제다. (출처 : 위키백과)



다수의 노드(PC)가 참여하는 분산 네트워크에서 오랫동안 계속되어 온 '비잔틴 장군 문제'를 비트코인에서는 블록 체인과 작업 증명이라는 방법을 통해 해결했다. 정직한 노드가 공격을 하려고 협력하는 노드 그룹보다 총체적으로 더 많은 CPU 파워를 통제하는 한, 보안상 안전하다는 것이다. (The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. - 비트코인 논문 원문)

조금 더 자세하게 이해해보자면, 작업증명이란 블록의 해시 값을 만족하는 nonce를 계산하는 과정으로 이를 수행한 블록은 사슬에 연결된다. 작업증명은 기본적으로 CPU당 1표이므로, 다수 의사는 최다 작업증명 동작이 투입된 가장 긴 사슬로 대표된다. 다수의 CPU 파워가 정직한 노드에 의해서 통제되면, 가장 정직한 사슬이 가장 빠르게 늘어나서 다른 경쟁 사슬들을 압도하게 되는 것이다.

작업증명이 수행되어 연결된 블록은 다시 작업증명을 수행하지 않으면 수정될 수 없고, 그 블록 이후의 모든 블록에 대해서도 작업증명을 다시 수행해야 한다. 그와 동시에 정직한 노드들의 작업을 따라잡아서 앞질러 더 긴 사슬을 형성해야 한다. (이것이 불가능한 것은 수학적으로 논문 원글에 증명되어 있음.)

이 부분과 관련해서 인센티브 챕터에 추가적인 설명이 있다. 공격자가 과반 이상의 CPU 파워를 확보했을 때, 결제를 속이는 것과 새로운 화폐를 만들어내는 데 쓰는 것 사이에서 선택하게 되는데 규칙을 따르는 것이 더 이득이라고 한다. (원문 : The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favor him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth.) 여기는 아직 제대로 이해를 못했으므로, 따로 포스팅을..

참고 링크 : https://steemit.com/kr/@antares007/cryptocurrency-and-byzantine-generals-problem



어쨌든, 이런 구조로 인해서 다수 사용자의 블록을 공유하는 시간, 선택하는 과정 등등 다양한 문제가 있기 때문에 블록 생성의 시간에 제한을 두고 있다. 작업 증명의 난이도를 조절해서 블록 생성 속도를 제어하는데, 비트코인의 경우에는 약 10분, 이더리움의 경우에는 약 12초마다 하나의 블록을 생성한다. 따라서 내가 보낸 트랜잭션의 결과를 확인하려면 대기시간이 필요하다. R3에 제출한 이더리움 보고서에 따르면, 현 이더리움의 TPS(Transaction Per Second)는 약 10tps, 비트코인은 약 7tps라고 한다.

퍼블릭 블록체인에서 거래 내역을 검증해 신뢰할 수 있는 블록을 만들 수 있는 노드를 선택하고, 이 대가로 코인을 지불하게 되는 과정. 일명 '채굴(mining)' 과정에서 작업 증명을 위해 많은 CPU 파워를 소모한다는 단점 또한 있다.

= 단점 : 시간 지연, CPU파워 소모

참고 링크 : https://www.bloter.net/archives/273344




댓글

이 블로그의 인기 게시물

쥬만지: 새로운 세계 리뷰

On-Demand 서비스

require(), module.exports