내멋대로 블록체인 #4 - 현재까지 개발된 프로그램 소스

    주의(Warning)


    해당 포스팅은 자바로 블록체인을 구현하고 있으며, 특히 이번 포스팅은 그동안의 짜놓은 소스를 일부 공개하는 것으로, 1~2년간의 장기간 프로젝트를 목표를 잡고 초반의 삽질을 하겠다는 각오로 말도 안되는 설계가 있을 수 있다는 점 양해바랍니다.


    직접 블록체인을 설계를 하다보니, 보다 더 이해가 늘어나고 있으며 어떠한 문제가 있을지 체감이 더 잘되기에 앞으로도 꾸준한 삽질을 계속할 예정입니다. 참고로 저는 암호학에 관련되어서 지식이 있지만 보안 전문가 수준의 지식까지는 아니기 때문에 이 부분 이해를 해주시기 바랍니다.


    현재 제가 만들려는 프로젝트는 앞서 설명한 것처럼 웹기반의 API 방식의 블록체인입니다. 소켓통신도 안하고 HTTP 통신을 합니다. 그렇기 때문에 퍼블릭으로 구현되면 문제가 될거란 생각은 하고 있습니다. 타겟은 DPOS 혹은 Private으로서 해킹에 관련되어서는 보안 솔루션으로 인해서 문제가 없다를 포커스로 설계하고 있습니다. 제 머리가 커지면, 이 부분에 관련되어서도 설계를 변경할 수 있습니다. 어디까지나 이 프로젝트는 블록체인을 이해함이지, 상용화 혹은 실용화 되는 블록체인은 아닙니다.




    오늘은 현재까지 개발된 소스를 공개하려고 합니다. 개발의 짬이 되신 분들은 당연히 보지 않는 것을 권장 드립니다. 왜냐하면 아직 별 내용이 없기 때문입니다. 중요한 내용들을 채워넣지 않았기 때문에 진짜 별 내용이 없습니다. 


    참고로, 저는 웹개발을 할 때 규제가 된 것을 좋아해서 (사실 익숙해서) 국가에서 발행하고 있는 개발환경인 전자정부프레임워크를 선호합니다. 전자정부 프레임워크(EgovFramework)는 검색만 조금 하시면 되니 받으시면 됩니다. 그러나 개발은 스프링으로 했기 때문에 사실 그냥 스프링이 깔린 자바 개발환경이면 전혀 문제는 안됩니다.


    일단 아래는 현재까지 작성한 소스 목록입니다. 데이터 출력은 JSON기반이기 때문에 JsonView 환경을 세팅한 것을 알아두시면 좋겠습니다.


    (패키지) com.tistory.needjarvis.module

    CryptoModule.java     // 암호 관련 모듈 (해시 포함)

    PeerModule.java        // 노드를 체크하는 모듈

    WalletModule.java      // 지갑과 계좌에 관련된 모듈


    전반적으로 독립적인 모듈이 필요하다고 생각된다면, 모듈 패키지에서 알고리즘을 넣을 예정입니다. 가장 중요한 채굴에 관련된 모듈도 역시 module 패키지에 들어갈 예정입니다


    (패키지) com.tistory.needjarvis.service

    PeerService.java        // 피어 서비스 인터페이스

    WalletService.java      // 지갑과 계좌 서비스 인터페이스


    단순한 인터페이스입니다. 


    (패키지) com.tistory.needjarvis.service.impl

    PeerServiceImpl.java       // 피어 서비스 구현 클래스

    WalletServiceImpl.java    // 지갑과 계좌 서비스 구현 클래스


    인터페이스를 구현한 구현클래스입니다. 현재는 지갑에 관련된 내용과 피어에 관련된 내용밖에 없습니다. 소스가 현재는 매우 간단합니다


    (패키지) com.tistory.needjarvis.web

    PeerController.java        // 피어 관련 콘트롤러

    WalletContoller.java       // 지갑과 계좌 관련 콘트롤러


    웹 콘트롤러입니다. 모든 HTTP의 시작점이 바로 이 웹 콘트롤러로부터 시작됩니다.


    (패키지) com.tistory.needjarvis.vo

    AddressVO.java        // 주소가 저장된 Value Object

    IDVO.java        // ID 관련된 정보가 저장된 Value Object


    Value Object들을 넣는 패키지입니다. 데이터를 저장하기 위한 구조를 생성합니다.


    현재까지는 이렇게 구조를 만들었습니다. 참고로 DBMS는 존재하지 않습니다 블록체인 자체가 DB를 너도나도 누구나 볼 수 있게 오픈하는 개념이기 때문에 중간 데이터 관리를 DB에 저장하지 않는 구조입니다. 오로지 지정된 폴더에 파일로 저장되며, 데이터는 JSON형태로 넣습니다.


    전체 소스 다운로드 받기


    조만간, 블록에 대한 내용들을 꽉꽉 채워서 다시 포스팅을 하겠습니다.



    이전 포스팅 보기


    댓글

    Designed by JB FACTORY