curl 개요


curl은 명령어로 데이터를 전송할 수 있는 도구이다.

업로드, 다룬로드 모두 가능하며 HTTP, HTTPS, FTP, LDAP, TELNET, SMTP, POP3, SCP등 주요 프로토콜을 지원한다.

윈도우, 유닉스, 리눅스등 다양한 플랫폼에서 실행가능한다.



설치


리눅스나 Mac OS X는 기본적으로 설치되어 있다.

윈도우에서는 

https://winampplugins.co.uk/curl/ 에서 다운로드 받아서 설치한다. 




curl 사용법


 curl [options...] <URL>


옵션은 -short 형식 과 --long형식 두가지를 사용할 수 있다.




HTTP/HTTPS 옵션 정리


-k  --insecure 


https 사이트를 SSL certificate 검증없이 연결한다.


-l  --head 


HTTP header 만 보여주고 content 는 표시하지 않는다


-D  --dump-header <file> 


<file> 에 HTTP header 를 기록한다.


-L  --location


서버에서 HTTP 301 이나 HTTP 302 응답이 왔을 경우 redirection URL 로 따라간다.

--max-redirs 뒤에 숫자로 redirection 을 몇 번 따라갈지 지정할 수 있다. 기본 값은 50이다


curl -v daum.net 을 실행하면 결과값으로 다음과 같이 HTTP 302 가 리턴된다.

< HTTP/1.1 302 Object Moved
< Location: http://www.daum.net/

-L 옵션을 추가하면 www.daum.net 으로 재접속하여 결과를 받아오게 된다.


-d  --data

HTTP Post data

FORM 을 POST 하는 HTTP나 JSON 으로 데이타를 주고받는 REST 기반의 웹서비스 디버깅시 유용한 옵션이다


-v  --verbose

동작하면서 자세한 옵션을 출력한다.


-J   --remote-header-name

어떤 웹서비스는 파일 다운로드시 Content-Disposition Header 를 파싱해야 정확한 파일이름을 알 수 있을 경우가 있다. -J 옵션을 주면 헤더에 있는 파일 이름으로 저장한다.


-o  --output  FILE

curl 은 remote 에서 받아온 데이타를 기본적으로는 콘솔에 출력한다. -o 옵션 뒤에 FILE 을 적어주면 해당 FILE 로 저장한다. (download 시 유용)


-O  --remote-name

file 저장시 remote 의 file 이름으로 저장한다. -o 옵션보다 편리하다.


-s  --silent

정숙 모드. 진행 내역이나 메시지등을 출력하지 않는다. -o 옵션으로 remote data 도 /dev/null 로 보내면 결과물도 출력되지 않는다.

HTTP response code 만 가져오거나 할 경우 유리하다.




블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

[체크 또 체크] 이더리움 스마트 컨트랙트 프로그램을 작성할 때 반드시 주의 해야 하는 사항들 



(1) 접근제어자(Access Modifier) 설정


실수를 방지하기 위해서는 최소한의 접근 권한을 가지도록 접근제어자를 설정한다.


public: 어디에서나 호출가능

external: 해당 컨트랙트 내부에서는 호출 불가능, 외부에서만 호출 가능

private: 해당 컨트랙트 내부에서만 호출 가능

internal: 해당 컨트랙트와 derived 컨트랙트만 호출 가능 



(2) 오버플로우/언더플로우


오버플로우는 숫자가 최댓값 이상으로 증가하는 경우이다.


   0xFFFF.......FF

+ 0x000.........01

-----------------

   0x0000......00


연산을 수행하는 경우 오픈제플린에서 제공하는 safeMath를 사용하여 연산을 수행하게 되면 오버플로우나 언더플로우가 발생시 예외를 발생시키고 revert되어서 안전하게 연산을 수행할 수 있다.


오픈제플린: https://openzeppelin.org/api/docs/math_SafeMath.html

오픈제플린Git: https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/math/SafeMath.sol



(3) 함수의 Reenter 방지


외부 스마트 컨트랙트 함수를 호출하는 경우, 그 함수에서 호출한 함수를 재귀 호출하게 되어 있다면 반복적으로 토큰을 전송하는 등 예상치 못한 결과를 발생 시킬 수 있다.


사례) The DAO 해킹

2016년 6월17일, 다오의 기능 중 하나인, 투자자들이 클아우드 세일에 참여해서 다오 토큰 구매를 위해 지불했던 이더를 환불받는 기능에서, 이더를 환불신청(,split)해서 이더를 먼저 받고, 자신의 다오토큰을 되돌려주기전에 다시 이더를 환불 받는 재귀 call 코드 (Recursive calling vulnerability)를 통해 무한환불 공격을 수행하여 총 243만 이더(약 750억)가 해킹당함.


이를 방지하기 위해서는 nonReentrant라는 modifier 사용.

noReentrant를 사용하면 reentrancy_lock이라는 플래그 변수로 lock 상태로 전환되어, 해당 함수가 실행되는 도중에 해당 함수 재귀 호출을 막아준다.



[작성중]


(4)  Storage 변수 사용 주의


(5) memory 변수 선언 


(6) 버전 선언 규칙 지정


(7) 다중 상속 주의 


(8) 컨트랙트 오너 관리 




블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

데이터 해싱



해시함수(Hash Function)는 어떤 형태의 데이터이든 입력데이터의 길이와 상관없이 고정된 길이의 숫자를 반환하는 함수이다.


암호화 해시 함수(Cryptographic hash function)는 어떤 데이터라도 고유의 디지털 지문을 생성해 주는 함수이다.  


해시함수의 특징은 어떤 종류의 데이터도 빠르게 해시값을 계산할 수 있으며, 동일한 입력값에 대해서는 동일한 해시값을 생성한다.

입력값이 변하게 되면 해시값도 예측 불가능하게 변해야하며, 해시값에서 원문을 추출할 수 없다. 또한 둘이상의 입력값이 같은 해시값을 생성할 수 없다. 그래서 해시값은 디지털 지문으로 사용가능한것 이다.



다음은 해싱 데이터의 5가지 패턴이다.





블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

[시나리오] 소유권을 관리하는 블록체인 구축 


1. 시스템은 순수 분산 P2P시스템이고, 각 사용자가 기여한 계산자원으로 이루어진다.

2. 인터넷을 사용해 개별노드의 네트워크를 연결한다.

3. 노드의 개수는 물론 노드의 안정성과 신뢰성도 전혀 알 수 없다.

4. 목표는 디지털재화( ex: 쇼핑몰 포인트, 디지털 화폐 등)의 소유권을 관리하는 것이다.



시스템 개발에 고려해야 하는 사항들.

1. 소유권 기술(설명)

2. 소유권 보호

3. 트랜잭션 데이터 저장

4. 신뢰할 수 없는 환경에 배분할 원장 준비

5. 원장 배분

6. 원장에 새 트랜잭션 추가

7. 어느 원장이 진실인지 판단



소유권 기술(Describe)

트랜잭션은 소유권의 이전을 설명하는 좋은 방법이며, 트랜잭션 전체 이력은 현 소유자를 확인할 수 있는 핵심이다.


소유권 보호

타인이 다른 사람의 자산에 함부로 접근하지 못하도록 보호해 줄 장치가 필요하다. 암호화 기술을 이용하여 개별적인 트랜잭션을 보호할 수 있게 한다.


트랜잭션 데이터 저장

트랜잭션 이력은 소유권을 명확히 하는 핵심 요소이므로 안전한 방법으로 저장해야 한다.


신뢰할 수 없는 환경에 배분할 원장 준비

원장의 복사본들이 신뢰할 수 없는 네트워크의 신뢰할 수 없는 노드들 사이에 흩어져 있고, 원장을 통제하거나 조정하는 중앙통제 노드는 존재하지 않으므로 각 노드에게 원장의 제어를 맡겨야 하는 상황에서 원장이 위조되거나 조작되지 않게 해야 한다.


원장과 트랜잭션이력 모두 한번 기록되면 바꿀 수 없게 하여 이러한 문제점을 해결할 수 있다.


블록체인데이터구조는 한편으로는 변경을 못하게 하면서 다른 한편으로는 새로운트랜잭션을 추가할 수 있도록 승인하여 해결한다.


원장배분

데이터구조에 새로운 트랜잭션을 추가할때 오직 유효하고 승인된 트랜잭션만 추가될 수 있도록 보장해야 한다. P2P시스템의 모든 구성원이 새 데이터를 추가할 수 있도록 허용하는 동시에 각 구성원이 P2P 시스템의 각 피어를 감독하게 해서 해결한다.


어느원장이 진실인지 판단

모든 구성원이 새로운 데이터를 추가할 수 있으므로, 각 피어들이 서로 다른 트랜잭션 데이터를 받을 가능성이 생긴다. 


순수 분산 P2P 시스템에는 어떤 트랜잭션 이력을 서택해야 할지 결정해 줄 중앙통제 장치가 없기 때문에 모든 노드가 독립적인 다수 의견을 따라 "진실된 트랜잭션 이력"을 개별적으로 결정해서 이 문제를 해결해야 한다.



블록체인으로 소유권을 기록하려면 다음 두가지가 필요하다.


1. 소유권 이전을 기술한다.

2. 트랜잭션 이력을 유지한다.



소유권 이전을 기술한다.


트랜잭션은 현 소유자의 소유권을 다른 사람에게 이전하는 행위를 의미하며, 예를 들어 계좌이체를 수행하는 경우 트랜잭션은 다음과 같은 정보를 관리해야 한다.


. 소유권을 이전하는 계정의 식별자

. 소유권을 이전받는 계정의 식별자

. 이전하려는 재화의 총액

. 이전이 완료되는 시각

. 이전을 위해 지불해야 하는 수수료 <= 블록체인은 분산시스템이기 때문에 통일된 

                                                    수수료 체계가 없다.

. 이전에 동의한다는 원소유자의 증명 



트랜잭션 이력을 유지한다.


트랜잭션을 수행하는것은 트랜잭션 데이터에 기록된 대로 소유권의 이전이 일어난다는 것을 의미한다. 또한 원장에 트랜잭션 데이터를 추가한다는 의미이기도 하다.


블록체인은 모든 트랜잭션을 일어난 순서대로 블록체인데이터구조에 저장하여 전체 이력을 유지한다.



트랜잭션 이력의 무결성을 유지하기 위한 필수 3가지 요소


1. 형식적 정확성

2. 의미상 정확성

3. 승인



형식적 정확성


트랜잭션 데이터가 필요한 모든 정보를 정확한 형식으로 기술해야 한다.



의미상 정확성


트랜잭션 데이터의 의미와 의도한 결과의 관련이 명확해야 한다. 예를 들면 계정에 있는 잔고이상의 금액이 이전되지 않도돌 보장해야 한다. 와 같이 업무에 대한 정확한 이해를 바탕으로 데이터가 정의되어야 한다.



승인


소유권을 이전하는 소유권자 본인만 트랜잭션을 실행해야 한다.


블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

소유권의 본질은 내가 가진것이 내것이라고 증명하는 것이다. 그럼 내가 가진것이 내것이라는 것을 어떻게 증명할 수 있을까?


소유권을 입증하기위해 다음과 같은 3가지 요소가 필요하다.

- 소유자가 누구인가?

- 소유 물건은 무엇인가?

- 그 물건이 소유자의 것인가?


내가 가지고 있는 물건이 내것임을 증언하는 사람이 많다면 그 사실이 진실일 가능성이 높아진다. 이 아이디어가 블록체인의 핵심 개념중의 하나이다.


식별(Identification) 

이름이나 ID등을 사용하여 "누구"라고 주장하는것이다.


인증(Authentication)

내가 나라고 증명하는 것이다. 이 증명을 위해 그 사람만의 고유한 무엇(지문, 얼굴, 패스워드, 신분증, 일련번호 등) 을 사용하게 된다.


승인(Authorization)

식별된 사람의 성질과 특성에 기반해 특정 자원이나 서비스에 접근을 허가해 주는것이다.  성공적인 인증과 함께 인증된 특정인이가진 특성과 권한에 대한 평가를 토대로 얻는 최종 결과이다.



소유자와 물건의 매핑은 무엇으로 할 수 있나?


소유자와 물건의 매핑은 원장(장부)에 기록해 유지할수 있다.  

원장에는  소유권증명, 소유권이전, 투명성, 개인정보보호, 데이터 읽기, 데이터쓰기, 데이터 사용이력, 신규데이터 생성, 상태유지, 상태변경과 같은 것들이 포함될 수 있다.



소유권과 블록 체인은 어떤 관계가 있나?


원장을 하나만 생성해서 관리된다면... 손상되거나 파괸된다면? 실수로 또는 고의로 위조된다면... 조작될 위험이 있는 원장을 하나만 유지하는 대신 순수 분산 P2P 시스템을 활용해 다수의 노드가 동의하는 진실을 이용해 소유권을 확인한다면 마치 다수의 증인을 확보한 재판과 유사할 수 있다.


즉 하나의 중앙 통제된 원장 대신 소유권을 기록하는 개별 원장들의 그룹을 형성한 뒤 대다수의 개별 원장이 동의하는 진실을 사용해 소유권을 관리하게 하는 것이다.


원장을 블록체인-데이터-구조를 이용하여 순수 분산 P2P시스템의 각 노드에서 의해 관리하여 하나의 일관된 소유권상태를 집단에 증명할 수 있도록 할 수 있다.


원장의 순수 분산 P2P 시스템의 무결성은 소유권에 대한 신뢰할 수 있는 판단이 가능하도록 해주고 법적으로 허가된 소유자만 자산의 소유권을 타인에게 이전할 수 있도록 보장한다.




블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

블록체인이란 용어는 다음과 같은 네가지 다른 의미로 사용된다.


1. 데이터 구조 이름

2. 알고리즘 이름

3. 기술묶음 이름

4. 일반 응용분야를 가지는 순수 분산 P2P 시스템을 포괄하는 용어



데이터 구조 이름


"블록"은 데이터의 단위를 의미하며, "체인"은 순서대로 연결되어 있다는 의미이다.

예를 들어 책의 한 페이지는 블록인 된다. 이러한 페이지들은 페이지 번호를 붙여 한권의 책으로 구성된다. 책에 포함되어 있는 정보는 페이지 순서대로 정렬되어 있다고 볼 수 있다. 혹 누군가 페이지를 찢었는지 확인하려면 페이지 번호에 누락이 있는지 살펴보면 된다.



알고리즘 이름


알고리즘이란 컴퓨터가 실행해야 하는 일련의 명령어들을 의미한다. 즉 데이터 구조 내의 정보 내용을 민주주의 투표 방식과 비슷한 방법으로 서로 협상하는 절차를 설명할때 "블록체인"이라는 단어를 사용한다.



기술묶음 이름


순수 P2P 시스템의 무결성확보를 위해 사용하는 데이터구조, 알고리즘, 암호화, 보안기술의 조합등을 통칭할때 "블록체인" 이라는 단어를 사용한다.



기술묶음 이름


블록체인의 기술묶은을 활용하는 거래 방부들의 순수 P2P 시스템을 지칭하는 포괄적인 용어로 "블록체인"이라는 단어가 사용된다.



"블록체인"이라고 불리는 이 기술은 2008년 "사토시 나카모토"라는 가명으로 처음 제안되었다.



"블록체인"이란 "무결성을 확보하고 유지하기 위해" 순서에 따라 연결된 블록들의 정보를 "암호화 기법과 보안기술을 이용해 협상하는 알고리즘으로 구성된" 소프트웨어 요소를 활용하는 "원장의 순수 분산 P2P시스템"을 의미한다.



 다니엘 드레셔가 지은 "블록체인 무엇인가?"를 정리하고 있습니다.

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

P2P시스템 정의


P2P(Peer to Peer) 시스템은 여러개의 개별 컴퓨터들로 구성된 분산 시스템으로, 한 노드의 자원(계산능력, 저장공간, 정보배분등)을 다른 노드들이 직접 사용할 수 있다는 특징을 가진다.


즉 P2P시스템에 참여 하게 되면 사용자의 컴퓨터는 P2P시스템의 노드로 전환되고, 모든 노드에게는 동등한 권리와 역할이 주어진다. 


예를 들어 P2P 파일공유시스템에 가입하게 되면 개별 파일은 각자의 컴퓨터에 저장되어 있으나 모든 사용자와 공유된다. 누군가 파일 다운로드를 실행하면 다른 누군가의 컴퓨터로 부터 파일이 다운로드 되기 시작한다. 





P2P시스템 아키텍처



P2P는 분산 컴퓨터 시스템으로 운영된다.  


순수 분산 P2P 시스템에서는 모든 노드는 동일한 과제를 수행하며 자원과 서비스의 생산자이인 동시에 소비자 역할을 한다.


중앙통제 P2P시스템은 중앙 노드를 이용해 노드간 상호작용을 중재하고 피어노드가 제공하는 서비스 목록을 유지 관리하고 노드를 검색하고 식별하는 역할을 수행한다. 대표적인 예가 냅스터이다. 냅스터는 중앙 데이터베이스에 접속한 모든 노드가 각 노드가 보유한 노래 정보를 저장하고 있다.



P2P 시스템과 블록체인의 연관성


블록체인은 분산시스템에서 무결성을 확보하고 유지하는 도구라고 할 수 있다. 즉 순수 분산 P2P 시스템은 무결성의 확보와 유지를 위해 블록체인 시스템을 사용한다.




P2P 시스템과 무결성


무결성이란?

소프트웨어 시스템 관점에서 무결성은 시스템의 안전성, 완결성, 일관성, 정확성 및 변형과 오류 없음을 의미하는 비기능적 측면이다. 


순수 P2P 시스템의 무결성을 위협하는 요소로 다음 2가지를 고려해 볼 수 있다.


- 기술적 결함

   인터넷으로 연결된 개별 컴퓨터로 구성되는 시스템이기 때문에 모든 기계장비는 언제든지 고장이나 오류를 일으킬 수 있다. 


- 악의적 피어

   시스템을 자신의 이익을 위해 착취하려는 개인의 악의가 원인이 될 수 있다.  P2P시스템 사용자들은 다른 피어를 믿지 못하는 순간 시스템을 떠날것이고, 더 이상 계산 자원에 기여하지 않게 되어 시스템 구성원이 감소하게 되고, 저하된 시스템 효용성으로 인해 또 다른 이탈자가 나오게 되어 시스템이 완전히 와해 되는 상황이 발생될 수 있다.



블록체인이 해결해야 할 핵심 문제는 "개수도 알려져 있지 않고 신뢰성과 안정성도 알수 없는 피어들로 구성된 순수 분산 P2P 시스템의 무결성을 확보하고 유지하는 것이다"





 다니엘 드레셔가 지은 "블록체인 무엇인가?"를 정리하고 있습니다.



블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

[원문] https://medium.com/blockchain-blog/17-blockchain-platforms-a-brief-introduction-e07273185a0b  의 일부를 번역하였으며, 원문을 클릭하여 더 많은 정보를 확인하는것을 권장합니다.


17개의 많이 사용되는 블록체인 플랫폼


Blockchain 기술은 2008 년 Satoshi Nakamoto의 " Bitcoin : Peer-to-Peer Electronic Cash System " 이라는 제목의 논문을 통해 발표 되었지만 이 문서에서는 특별히 블록체인이라는 단어를 사용하지는 않았다. 이 논문에서는 "해시기반의 작업증명을 지속적인 사슬로 해싱하여 크랜잭션을 타임스탬프로 처리하며, 작업증명을 다시 하지 않으면 변경될수 없는 레코드를 형성한다고 설명하고 있다. 


분산 원장은 정의 된 합의 메커니즘을 사용하여 순서가 지정된 일련의 타임 스탬프가 기록 된 레코드를 수정하지 못하도록하는 피어 투 피어 네트워크로 정의한다.  


다음은 알파벳 순서로 많이 사용되는 블록체인 / 분산원장시스템이다.


1. BigChainDB:   분산 데이터베이스 빅데이터로 시작하여 블록체인 특성을 추가한 오픈소스 시스템. .


2. Chain Core: 허가 된 블록 체인 인프라에서 금융 자산을 발행하고 전송하는 블록 체인 플랫폼.


3. Corda : 플러그 가능한 컨센서스가있는 분산 원장 플랫폼.


4. Credits:  권한이 부여 된 분산 원장 구축을 위한 개발프레임워크.


5. Domus Tower Blockchain: 초당 백만건이상의 트랜잭션처리 처리 환경을 위해 설계된 플랫폼.


6. Elements Blockchain Platform : Bitcoin 기능 확장을 위한 오픈 소스 프로토콜 레벨 기술.


7. Eris : Bitcoin기능 확장을 위한  오픈소스 프로토콜 레벨 기술.


8. Ethereum:  맞춤형 블록체인에서 스마트 계약을 실행하는 분산 플랫폼.


9. HydraChain: 사설 및 컨소시엄 체인에서 Permissioned Distributed Redgers 를 만들기위한 Ethereum 확장.


10. Hyperledger Fabric : 서로 다른 구성원 노드 집합간에 서로 다른 자산, 계약 및 트랜잭션을 관리하는 시스템.


11. Hyperledger Iroha:  모바일 응용 프로그램 개발에 중점을 둔 "단순하고 모듈화 된"분산 원장 시스템.


12. Hyperledger Sawtooth Lake : 거래 비즈니스 로직이 합의계층과 분리된 모듈식 블록체인 제품군.


13. Multichain: 다중 자산 금융 거래를 위한 비트코인 블록체인을 기반으로하는 오픈 소스 블록 체인 플랫폼.


14. Openchain: 디지털 자산 발행 및 관리를 위한 오픈소스 분산원장 시스템.


15. Quorum: Ethereum을 기반의 오픈소스 분산원장 및 스마트 계약 플랫폼.


16. Stellar: Stellar네트워크 백본인 Stellar Core에 연결되는 RESTful HTTP API 서버를 제공하는 오픈소스 분산형 지불 인프라.


17. Symbiont Assembly: 아파치 카프카 (Apache Kafka)에서 영감을 얻은 분산원장



======================================================

[원문] https://medium.com/blockchain-blog/17-blockchain-platforms-a-brief-introduction-e07273185a0b


17 blockchain platforms — a brief introduction


Blockchain technology was announced through the paper titled “Bitcoin: A Peer-to-Peer Electronic Cash System” by Satoshi Nakamoto in 2008. Interestingly, this paper does not specifically use the word “blockchain”.


This paper talks about a “purely peer-to-peer version of electronic cash” where “the network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of- work”.


The open source PT-BSC (Blockchain Security Controls) defines a blockchain as a peer-to-peer network which timestamps records by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. A blockchain can be permissioned, permission-less or hybrid.


On the other hand, a distributed ledger is defined as a peer-to-peer network, which uses a defined consensus mechanism to prevent modification of an ordered series of time-stamped records. Consensus mechanisms include Proof of stake, Federated Byzantine Agreement etc.


The more popular blockchain / distributed ledger systems in alphabetical order are:


1. BigChainDB, an open source system that “starts with a big data distributed database and then adds blockchain characteristics — decentralized control, immutability and the transfer of digital assets”.


2. Chain Core, a blockchain platform for issuing and transferring financial assets on a permissioned blockchain infrastructure.


3. Corda, a distributed ledger platform with pluggable consensus.


4. Credits, a development framework for building permissioned distributed ledgers.


5. Domus Tower Blockchain, designed for regulated environments, benchmarked at ingesting over 1 million transactions per second.


6. Elements Blockchain Platform, an open source, protocol-level technology for extending the functionality of Bitcoin.


7. Eris:db, an open source, protocol-level technology for extending the functionality of Bitcoin.


8. Ethereum, a decentralized platform that runs smart contracts on a custom built blockchain.


9. HydraChain, an Ethereum extension for creating Permissioned Distributed Ledgers for private and consortium chains.


10. Hyperledger Fabric, which supports the use of one or more networks, each managing different Assets, Agreements and Transactions between different sets of Member nodes.


11. Hyperledger Iroha, a “simple and modularized” distributed ledger system with emphasis on mobile application development.


12. Hyperledger Sawtooth Lake, a modular blockchain suite in which transaction business logic is decoupled from the consensus layer.


13. Multichain, an open-source blockchain platform, based on bitcoin’s blockchain, for multi-asset financial transactions.


14. Openchain, an open source distributed ledger system for issuing and managing digital assets.


15. Quorum, an open source distributed ledger and smart contract platform based on Ethereum.


16. Stellar, an open-source, distributed payments infrastructure that provides RESTful HTTP API servers which connect to Stellar Core, the backbone of the Stellar network.


17. Symbiont Assembly, a distributed ledger inspired by Apache Kafka.

Note: In this article, the terms blockchain and distributed ledger systems are used inter-changeably.



1. BigchainDB


BigchainDB is an open source system that “starts with a big data distributed database and then adds blockchain characteristics — decentralized control, immutability and the transfer of digital assets”.


BigchainDB seeks to attain performance of 1 million writes per second throughput, storing petabytes of data, and sub-second latency.


BigchainDB key features include:

1. Each write is recorded on the blockchain database without the need for Merkle Trees or sidechains.

2. Support for custom assets, transactions, permissions and transparency.

3. Federation Consensus Model (federation of voting nodes).

4. Supports public and private networks.

5. Has no native currency — any asset, token or currency can be issued.

6. Set permissions at transaction level.

7. It is open source.


Consensus mechanism: Federation of nodes with voting permissions


Useful links:

BigchainDB official website: https://www.bigchaindb.com/

BigchainDB whitepaper: https://www.bigchaindb.com/whitepaper/bigchaindb-whitepaper.pdf

BigchainDB roadmap: https://github.com/bigchaindb/org/blob/master/ROADMAP.md



2. Chain Core


Chain Core is a blockchain platform for issuing and transferring financial assets on a permissioned blockchain infrastructure. Chain Core runs on the open-source Chain Protocol.


Chain Core Developer Edition is free while the Chain Core Enterprise Edition is a commercial product.


The creation, control and transfer of assets are decentralised among participants on Chain blockchain networks. The operation of the network is governed by a federation — a designated set of entities. The assets on Chain blockchain networks include currencies, securities, derivatives, gift cards, and loyalty points.


Chain core key features include:


1. Native digital assets — currencies, securities etc.

2. Role-based permissions for operating, accessing, and participating in a network.

3. Support for multi-signature accounts.

4. Federated consensus.

5. Support for smart contracts.

6. Transaction privacy.


Consensus mechanism: Federated consensus

Useful links:

Chain Core official website: https://chain.com

Chain Core whitepaper: https://chain.com/docs/protocol/papers/whitepaper



3. Corda


Corda is an open-source distributed ledger platform with pluggable consensus — “it supports multiple consensus providers employing different algorithms on the same network”.


Corda is probably the only distributed ledger platform with pluggable consensus.


Corda’s key features include:


1. No global broadcasting of data across the network.

2. Pluggable consensus.

3. Querying with SQL, join to external databases, bulk imports.


Consensus mechanism: Pluggable consensus

Useful links:

Corda official website: https://www.corda.net

Corda whitepaper: https://docs.corda.net/_static/corda-technical-whitepaper.pdf



4. Credits


Credits is a development framework for building permissioned distributed ledgers.

Consensus mechanism: Credits uses a variant of Proof of Stake (a leaderless two-phase commit algorithm with variable voting power).


Useful links:

Credits official website: https://credits.works/

Credits documentation: https://credits.readthedocs.io/en/latest/



5. Domus Tower Blockchain


Domus Tower Blockchain is an interesting solution that has been designed for regulated environments such as securities trading where participants know each other and can independently decide whom to trust.


According to its whitepaper, Domus Tower Blockchain has been “benchmarked at ingesting over 1 million transactions per second on hardware costing less than $50 per hour on Amazon’s Web Services with the potential to scale to greater than 10 million transactions per second”.


Data storage is contained in a Merkle directional acyclic graph (MerkleDAG) and nodes on this graph are referred to as “blocks”. The data transmitted to the blockchain is digitally signed and verified before it is written to a block.

Domus Tower Blockchain’s key features include:


1. Creation of linked blockchains where the assets of an account on one blockchain must match the liabilities on the account of another blockchain.

2. Capability of recording a high rate of transactions in a scalable manner.

3. Recording of double-entry balance sheet that tracks credits and debits.


Consensus mechanism: Any agent that has write access to a blockchain has 100% authority to write transactions to that chain. Authority is centralized under this model.


Useful links:

Domus Tower Blockchain official website http://domustower.com/

Domus Tower Blockchain whitepaper http://domustower.com/domus-tower-blockchain-latest.pdf



6. Elements Blockchain Platform


Elements is an open source, protocol-level technology for extending the functionality of Bitcoin.


Elements’ key features include:


1. Confidential Assets — issue multiple assets who’s identifiers and amounts are blinded yet auditable.

2. Confidential Transactions — keep the amounts transferred visible only to participants in the transaction and to designated entities.

3. Additional opcodes — these include previously disabled opcodes (including string concatenation and substrings, integer shifts, and several bitwise operations), new DETERMINISTICRANDOM operation (which produces a random number within a range from a seed) and new CHECKSIGFROMSTACK operation (which verifies a signature against a message on the stack, rather than the spending transaction itself).

4. Deterministic Pegs — which allow cross-chain transactions to be constructed in a decentralized fashion and tokens to be moved from one blockchain to another.

5. Signed Blocks — this allows blocks can be cryptographically signed, thereby allowing the creator of the block to verify their identity in the future.

6. Segregated Witness. Bitcoin transactions contain two things i.e. information about the effect on the ledger and data proving that the transaction is authorized. Using witness segregation, transaction IDs are redefined to only depend on the effect information and blocks commit separately to the witness data. This eliminates all known forms of transaction malleability.

7. Relative Lock Time which allows a transaction to be time-locked.


Useful links:

Elements official website: https://elementsproject.org/

Github page: https://github.com/ElementsProject/elements



7. Eris:db


Eris-db is a permissioned distributed ledger client that executes Ethereum smart contracts on a permissioned virtual machine.


Eris’ key features include:


1. Multiple interfaces

2. Ethereum Virtual Machine

3. Permissioned systems


Consensus mechanism: Byzantine fault-tolerant Tendermint consensus engine, which is a deposit based proof of stake protocol.


Useful links:

Eris’ official website: https://monax.io/platform/db/



8. Ethereum


Ethereum is a decentralized platform that runs smart contracts on a custom built blockchain.


Ethereum’s key features include:


1. Ethereum Wallet — which facilitates holding crypto-assets as well as writing, deploying and using smart contracts.

2. Creation of crypto-currencies

3. Creation of democratic autonomous organizations (DAOs)

4. Command line tools built in Go, C++, Python, Java etc.


Consensus mechanism: Ethash, a proof of work algorithm


Useful links:

Ethereum’s official website: https://ethereum.org/

Ethereum whitepaper: https://github.com/ethereum/wiki/wiki/White-Paper



9. Hydrachain


HydraChain is an Ethereum extension for creating Permissioned Distributed Ledgers for private and consortium chains.


HydraChain’s key features include:


1. Full Compatibility with the Ethereum Protocol

2. Accountable Validators

3. Instant finality of blocks and no forks or reverts.

4. Support for sub-second block times.

5. New blocks are only created in the presence of pending transactions.

6. Infrastructure for developing smart contracts in Python.

7. Customizability of transaction fees, gas limits, genesis allocation, block time etc.

8. Open Source


Consensus mechanism: Byzantine fault tolerant consensus protocol


Useful links:

HydraChain official site: https://github.com/HydraChain/hydrachain



10. Hyperledger Fabric


Hyperledger Fabric supports the use of one or more networks, each managing different Assets, Agreements and Transactions between different sets of Member nodes.


Hyperledger Fabric’s key features include:


1. Query and update ledger using key-based lookups, range queries, and composite key queries.

2. Read-only history queries.

3. Transactions contain signatures of every endorsing peer and are submitted to ordering service

4. Peers validate transactions against endorsement policies and enforce the policies

5. A channel’s ledger contains a configuration block defining policies, access control lists, and other pertinent information

6. Channel’s allow crypto materials to be derived from different certificate authorities


Consensus mechanism: Consensus is ultimately achieved when the order and results of a block’s transactions have met the explicit policy criteria checks.


Useful links:

Hyperledger Fabric’s githib page: https://github.com/hyperledger/fabric




11. Hyperledger Iroha


Hyperledger Iroha is a “simple and modularized” distributed ledger system with emphasis on mobile application development.


Consensus mechanism: Sumeragi, a Byzantine Fault Tolerant consensus algorithm heavily inspired by the B-Chain algorithm.


Useful links:

Hyperledger Iroha’s github page: https://github.com/hyperledger/iroha




12. Hyperledger Sawtooth Lake


Hyperledger Sawtooth Lake is a modular blockchain suite that supports both permissioned and permissionless deployments. Transaction business logic in Hyperledger Sawtooth Lake is decoupled from the consensus layer.


Consensus mechanism: Proof of Elapsed Time


Useful links:

Hyperledger Sawtooth’s official website: https://01.org/sawtooth/

Hyperledger Sawtooth’s github page: https://github.com/hyperledger/sawtooth-core

Hyperledger Sawtooth’s demo on “Bringing traceability and accountability to the supply chain”: https://01.org/sawtooth/seafood.html

Hyperledger Sawtooth’s demo on “Enabling secure and efficient bond settlement”: https://01.org/sawtooth/bond.html



13. Multichain


Multichain is an open-source blockchain platform, based on bitcoin’s blockchain, for multi-asset financial transactions.


Multichain’s key features include:


1. Native multi-currency support.

2. Atomic two- or multi-way exchanges of assets between participants.

3. Permission management.

4. Rapid deployment.

5. Multiple networks can simultaneously be on a single server.

6. Per-network custom parameter (permitted transaction types, confirmation times, minimum quantities, transaction rate and size limits).

7. Data streams.


Consensus mechanism: Distributed consensus between identified block validators. This is similar to Practical Byzantine Fault Tolerance) with one validator per block, working in a round-robin type of fashion.


Useful links:


Multichain official site: http://www.multichain.com/developers/

Multichain whitepaper: http://www.multichain.com/white-paper/

YobiChain, an open source project for creating a private blockchain 


ecosystem preloaded with MultiChain and related tools: https://github.com/Primechain/yobichain



14. Openchain


Openchain is an open source distributed ledger system for issuing and managing digital assets.


Openchain’s key features include:


1. Tokens on Openchain can be pegged to Bitcoin, making it a sidechain.

2. Smart contract modules.

3. Unified API

4. Assign aliases to users instead of using base-58 addresses.

5. Multiple levels of control.

6. Hierarchical account system allowing to set permissions at any level.

7. Ability to have multiple Openchain instances replicating from each other.


Consensus mechanism: Partionned Consensus


Useful links:

Openchain’s official website: https://www.openchain.org/

Openchain on github: https://github.com/openchain



15. Quorum


Quorum us an open source distributed ledger and smart contract platform based on Ethereum.


Quorum’s key features include:


1. Cakeshop — provides an easy to use graphic interface for working with Quorum networks, smart contracts, and APIs

2. Ideal for applications requiring high speed and high throughput processing of private transactions


Consensus mechanism: Consensus model based on majority voting. Raft-based consensus model for faster blocktimes, transaction finality, and on-demand block creation.


Useful links:

Quorum’s official website: https://www.jpmorgan.com/country/US/EN/Quorum

Quorum on github: https://github.com/jpmorganchase/quorum



16. Stellar


Stellar is an open-source, distributed payments infrastructure that connects banks, payments systems, and people. Stellar enables building of mobile wallets, banking tools, smart devices. It provides RESTful HTTP API servers called Horizon, which connect to Stellar Core, the backbone of the Stellar network.


Consensus mechanism: Stellar Consensus Protocol


Useful links:

Stellar official website: https://www.stellar.org

Stellar Consensus Protocol: https://www.stellar.org/papers/stellar-consensus-protocol.pdf



17. Symbiont Assembly


Symbiont Assembly, inspired by Apache Kafka, is the distributed ledger that powers the Symbiont Smart Securities platform.


Symbiont Assembly’s key features include:

1. Capability to handle thousands of transactions per second.

2. Assembly API — ReSTful, standard JSON over HTTP.


Consensus mechanism: Byzantine Fault-Tolerance


Useful links:

Symbiont Assembly’s official website: 


https://symbiont.io/technology/introducing-symbiont-assembly/


References and Sources:

https://bitcoin.org/bitcoin.pdf

https://github.com/primechain/blockchain-security-controls

https://www.bigchaindb.com/

https://www.bigchaindb.com/whitepaper/bigchaindb-whitepaper.pdf

https://chain.com/faq/

https://www.corda.net/

https://credits.works/

https://www.elementsproject.org/elements/

https://monax.io/docs/documentation

https://ethereum.org/

https://github.com/HydraChain/hydrachain

http://hyperledger-fabric.readthedocs.io/en/latest/


This was originally published on: https://www.linkedin.com/pulse/16-blockchain-platforms-brief-introduction-rohas-nagpal


블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

티스토리 툴바