자바(Java) 개발자를 위한 가상화폐 소스코드
가상화폐(Cryptocurrency)는 하나의 프로그램 언어에 국한된 것은 아닙니다. 백서(Whitepaper, 때로는 Yellowpaper)에 정의되어 있는 내용이 중요하며 어떤 언어로 구현을 하던 상관이 없습니다. 그러나, 막상 백서를 이해하는 것도 어려운 일이며 아주 세세한 부분까지 백서에 모두 나열되어 있지는 않기때문에 실제 개발을 하려면 프로그램 소스를 분석해야 합니다.
가상화폐의 1인자인 비트코인은 공식적으로 C언어로 개발되어 있고, 스마트 컨트랙트(Smart Contract)의 대표주자인 이더리움은 공식적으로 GO언어로 개발되어 있습니다. 우리나라는 자바 개발자가 많은데 새로운 언어를 배워서 하기는 좀 어렵고... 어떻게 공부할 방법이 없을까를 생각하는 분들한테 도움이 되고자 이 글을 적습니다.
BitcoinJ
비트코인은 공식적으로 C언어로 개발되어 있습니다만 나온지 오래됐고 또 유명하기 때문에 다양한 프로그램 언어들로 구현한 것들이 많습니다. 그 중에 자바로 구현한 것이 BitcoinJ입니다. 최신 내용의 적용은 아무래도 공식 언어인 C언어보다 느리지만 꾸준이 반영되고 있으며, 설명도 잘되어 있습니다. 1세대 가상화폐인 비트코인은 가상화폐 프로그램 중에 단순한 편에 속하지만 내용을 이해하려면 기본적인 비트코인의 내용과 용어들은 알아야 합니다.
구분 | 내용 |
---|---|
홈페이지 | https://bitcoinj.github.io |
소스코드 | https://github.com/bitcoinj/bitcoinj |
라이센스 | Apache License |
EthereumJ
이더리움도 비트코인과 마찬가지로 다양한 프로그램 언어들로 구현하려한 흔적들이 많습니다. 그 중에 자바로 구현한 것이 EthereumJ입니다. 저도 아직 자세히 들여다본 적이 없어서 평가를 하기는 어렵네요.
구분 | 내용 |
---|---|
홈페이지 | 없음 |
소스코드 | https://github.com/ethereum/ethereumj |
라이센스 | LGPL-V3 license |
이더리움은 공식적으로 GO 언어로 되어 있습니다. 개인적인 생각이지만 GO 언어는 아주 매력적 이더군요. 문법이 간단하고 컴파일 속도가 빠르며 실행속도는 아주 뛰어납니다. https://golang.org 로 가셔서 한 번 배워보세요.
NXT
NXT는 공식적인 언어가 자바입니다. 그런데 라이센스는 마음에 좀 안드네요. 가상화폐 소스들은 대부분 기존에 있는 오픈소스(Open source) 라이센스들을 적용하고 있습니다만, NXT는 Jelurida Public License 라는 별도의 라이센스를 적용하고 있습니다. 이 소스로 새로운 코인을 만들게 되면 기존 NXT를 가지고 있는 사람들에게 10% 에어드랍(Airdrop)을 해야한다고 하네요. 상세 내용은 아래 링크를 참조하세요.
구분 | 내용 |
---|---|
홈페이지 | https://www.jelurida.com |
소스코드 | https://bitbucket.org/Jelurida/nxt |
라이센스 | Jelurida Public License(https://www.jelurida.com/jpl) |
IOTA
IOTA는 자바로 되어 있습니다. IOTA도 잘 알려져 있고 블록체인(Blockchain)도 잘 알려져 있어서 IOTA가 블록체인으로 되어 있다고 생각하시는 분들이 많은 것 같습니다. IOTA는 블록체인으로 구성되어 있지 않고 탱글(Tangle)이라는 독특한 형태로 되어 있습니다. 블록체인(Blockchain)은 직선형 형태(https://en.wikipedia.org/wiki/Blockchain)로 되어 있는 것에 반해, 탱글(Tangle)은 DAG(Directed acyclic graph)라는 그래프 형태(https://iota.org)로 되어 있습니다. 그래서 블록체인을 공부하기에는 적절하지 않습니다. 그리고 탱글(Tangle)의 DAG(Directed acyclic graph) 형태가 보안에 취약하다는 글도 자주 올라오고 있네요.
구분 | 내용 |
---|---|
홈페이지 | http://iota.org |
소스코드 | https://github.com/iotaledger/iri |
라이센스 | GNU General Public License |
Semux
마지막으로 지갑까지 순수 자바로만 개발된 Semux 코인을 소개합니다.
클라이언트 프로그램을 자바로 개발하기에는 적당하지 않다고 생각합니다. 그 이유는 아무래도 런타임(Runtime) 설치가 귀찮기 때문이죠. 사용자 입장에서는 C 언어나 GO 언어처럼 실행파일로 배포되는 것이 좋을 겁니다.
구분 | 내용 |
---|---|
홈페이지 | https://www.semux.org |
소스코드 | https://github.com/semuxproject/semux |
라이센스 | MIT License |
라이센스를 일일이 적은 이유는 혹시나 상업적으로 이용하시려는 분들이 있을 것 같아서 입니다. 오픈 소스 라이센스들은 https://olis.or.kr/license/licenseClassiFication.do?mapcode=010001&page=1 에 잘 정리가 되어 있으니 참고하시면 됩니다.
자바 개발자 분들, 도전해 보세요.