개발 목적과 다르 설계로 해당 프로잭트는 중단하고 다른 설계를 기반으로 한 별도의 프로잭트를 수행함. 기존 1인 1노드로 설계된 부분이 1회사 1노드로 변경하면서 암호화 비대칭키의 저장 설계와 체인 데이터 공유 설계가 바뀜.
이 프로잭트는 군산대학교 컴퓨터 정보 공학과와 순천대학교와 협업 프로잭트로써 국가 사업에 기반한다. 농수산 식품의 이력 관리 및 추적 시스템을 블록체인으로써 구현하는 것을 목표로 한다. 필자는 군산대학교 컴퓨터 정보 공학과 학생이고 DAD 연구실에 소속되어있다.
현재 A팀, B팀으로 나누어져 개발, 연구가 진행중이다
A팀은 P2P, 맴버쉽, 암호화.
B팀은 분산원장, 분산합의, 트랜잭션.
필자는 B팀에 속해있고 분산원장을 다루고 있다.
기본적으로 트랜잭션과 분산원장이 기본 블록체인의 폼을 따르기 때문에 이 프로그램은 자체 제작으로 순수한 이론적 개념을 어떤 참조없이 창작한 것을 명시한다.
추가적으로 gRPC, couchDB등 참조가 생기면 분명히 명시를 할 것이다.
현재 버젼은 아주 기본적인 부분조차 구현이 안되어있기 때문에 파이썬의 기본 모듈로써 작업이 가능했다.
팀 구조 변경
-
A 팀 : P2P.
-
B 팀 : 분산원장, 분산합의, 트랜잭션, 맴버쉽, 암호화.
기본적으로 이런 구조이긴 하지만 앞으로 진행하면서 또 다르게 바뀔 가능성이 매우 충분하다. 아래 개발 환경은 팀 전부의 개발환경이 아닌 필자 혼자만의 개발 환경임.
이번 팀 조정으로 인해서 암호화와 기존 foodchain과 합치는 중 pycrypto를 불러오는 과정에서 오류가 발생함. 아나콘다3 5.1.0 (3.6 - 32bit) 버전으로 통합할 가능성이 충분함. 테스트 빌드 환경이 파이썬 3.6.5 32bit 환경이여서 필요한 모듈을 전부 pip를 이용하여 설치했으나 추후 조정을 하여 아나콘다와 순정 파이썬과의 조율이 있을 예정.
처음부터 그래왔지만 이 소스들은 B팀에 속해있는 필자가 주도적으로 만들었기 때문에 A팀에 관련된 소스는 거의 없고 통신에 관련된 내용은 전부 B팀 자체적으로 추가한 부분임을 밝힘.
-
A 팀 : 네트워크
-
B 팀 : 분산원장, 원장 인터페이스, 암호화, 합의 알고리즘, 맴버쉽
-
C 팀 : 웹, QR코드, 안드로이드 App
-
파이썬 버전 3.7.0 으로 변경 (64-bit)
-
각 소스 위에 참조 링크를 첨부함.
-
H/W 1
- CPU Ryzen r5 1600
- ram samsung ddr4 8gb x 2 (3200 O.C)
- VGA GTX 970 4gb
- ssd 1tb (m.2 2280) 256gb (sata3)
- hdd 1tb (sata3)
-
S/W 1
- 윈도우 10 RS5 insight preview (64 bit)
- 비주얼 스튜디오 2017 커뮤니티
- 파이썬 3.6.5 (32, 64 bit)
- 아나콘다3 (32, 64 bit)
-
H/W 2
- CPU i7 3770
- ram samsung ddr3 8gb x 2
- VGA GTX 750ti 1gb
- ssd SSD 240gb
-
S/W 2
- 윈도우 10 RS4 (64 bit)
- 비주얼 스튜디오 2017 커뮤니티
- 파이썬 3.6.5 (32, 64 bit)
- 아나콘다3 (32, 64 bit)
-
foodchain
-
chaincode
- randFileName.py # 각 인터페이스 이름 생성
-
data # 테스트 원장 파일
-
DIgitalEnvelope # 전자 봉투 모듈
- lib # 암호화 라이브러리
- libAES.py # AES 알고리즘
- libDES.py # DES 알고리즘
- libhash.py # hash 알고리즘 256, 3_512, md5
- libRSA.py # RSA 알고리즘
- lib # 암호화 라이브러리
- binding.py # 전자 봉투
- signing.py # 전자 서명
-
ledger
- block.py # 블록 인터페이스
- blockheader.py # 블록헤더 인터페이스
- chain.py # 체인 인터페이스
- transaction.py # 트랜잭션 인터페이스
-
test_result # 테스트를 하면서 생기는 로그나 캡쳐등 증빙자료
- metadata.py # 이 프로잭트의 metadata
- readme.txt # 패치노트
-