1. 블록체인 기반 중고 거래 플랫폼 개발 – 시작 및 블록체인 서비스 구성
  2. 블록체인 기반 중고 거래 플랫폼 개발 – 개인 인증 메커니즘 구현
  3. 블록체인 기반 중고 거래 플랫폼 개발 – 중고거래를 위한 스마트 컨트랙트 코드 구현
  4. 블록체인 기반 중고 거래 시스템 개발 – 웹 어플리케이션 구현

블록체인 기반으로 구축된 환경은 그 자체만으로도 시스템적인 신뢰성을 확보할 수 있는 장점이 있습니다.
그것은 블록체인이 근본적으로 가지고 있는 동작 메커니즘인 합의(Consensus)의 과정을 거쳐야지만 트랜잭션 정보가 저장되기 때문입니다.
또한, 한 번 저장된 정보는 위,변조되거나 삭제할 수 없으므로 블록체인으로 관리되는 데이터는 안정성을 확보할 수 있으며, 블록체인 네트워크의 모든 참여기관들에게 공개되어 관리됨으로 투명성 또한 확보됩니다.

그럼, 이런 특성을 가진 블록체인은 어디에 적용해서 볼 수 있을까요?
사실, 최근에 기업들에서 거론되고 있는 블록체인은 프라이빗 블록체인으로 여러 참여자(기업)들이 관계되어 거래가 일어나는 환경에 가장 적용하기 적합한 형태일 것입니다.
개인이 그런 환경에 적용을 고려하긴 쉽지 않아서, 좀 더 대중적인 내용으로 고민하다가 몇 년 전부터 주목 받고 있는 공유경제(Sharing economy)를 주제로 블록체인을 적용하면 어떨까라는 생각을 해봤습니다.

공유경제를 적용할 수 있는 영역은 너무나도 폭넓어서 우선은 많은 분들이 경험을 해봤을 것 같은 중고거래를 첫번째 구현 과제로 잡았습니다.
(이 플랫폼의 우선의 목표는 다양한 공유경제 시나리오를 담을 수 있는 근간 플랫폼을 만드는데 있습니다. 너무 거창한 목표인가요? ^^)

첫번째 구현 환경 목표

  • 플랫폼 구동 환경 : 클라우드 이용 (Bluemix.net)
  • 블록체인 네트워크 : Bluemix의 블록체인 서비스 활용
  • Authentication & Authorization : Membership service를 이용하여 구현
  • 사용자 그룹 : 일반 사용자(판매자, 구매자 동일), Regulator

플랫폼의 로드맵(향후 확장)

  • 시나리오 추가/확장 : Fabric v1.0 채널을 이용하여 시나리오 추가/확장 (가능여부 검토 필요)

개발을 위한 준비사항

  • Node.js : 6.2 ~ 6.10 버전 설치
  • Git : Git 클라이언트 설치
  • 추가 개발을 위한 IDE 등

1. 블록체인 서비스 생성

우선 개발을 위해서 Bluemix에서 Blockchain 서비스를 생성합니다.
(당연히 Bluemix 계정이 있어야 하며, 이 블로그에서는 계정생성과 관련된 내용은 작성하지 않겠습니다.)

로그인을 하여 메인 페이지에서 “Catalog” 메뉴를 선택합니다. 그러면 생성할 수 있는 모든 서비스들의 리스트를 보실 수 있습니다.
그런 다음 검색항목에서 “blockchain”이라고 검색을 하면 아래 그림과 같이 Blockchain 서비스가 검색됩니다.
서비스 생성을 위해 클릭해서 들어갑니다.

Blockchain 서비스 상세 페이지에서 “Create” 버튼을 클릭하여 서비스를 생성합니다.
이 때, 기본값으로 두어도 상관없으나 “Service name” 등은 알아보기 쉬운 이름으로 변경하여도 무방합니다. Pricing plans도 “Free” 로 선택합니다.

Docker 기반의 환경 설정에서는 몇 번의 블로그를 통해서 복잡하게 설명하였으나 지금까지 간단하게 생성한 결과 위의 Pricing plans에 설명되어 있는데로,
4개의 피어와 멤버쉽 서비스가 생성되고 도커 기반에선 없는 간단한 모니터링 화면도 함께 사용할 수 있습니다.
물론 PBFT도 enable되어 있구요, 간단하죠?^^
이제 실질적으로는 블록체인 클라이언트 애플리케이션과 체인코드만 작성하면 됩니다.

2. 생성된 서비스 확인

Blockchain 서비스가 정상적으로 생성이 되었으면 아래와 같은 화면을 보실 수 있습니다. “Launch Dashboard” 버튼을 클릭하여 들어가면 화면 왼쪽으로 Blockchain 서비스의 상태를 확인 할 수 있는 메뉴들을 확인 할 수 있습니다.
상세한 정보들은 한번 살펴보시기 바랍니다.



3. 로컬 개발 환경 설정

다음 단계로 로컬(개발 PC)에 Node.js 기반의 애플리케이션 개발환경을 셋팅하겠습니다.
현재 개발은 로컬 개발 PC에서 진행하나 추후에 Bluemix 상으로 업로드 할 예정이며, 현재는 샘플 소스를 통해서 앞서 생성한 Bluemix상의 Blockchain 서비스에 애플리케이션에서 접속이 되며 체인코드 디플로이가 되는지 확인부터 하겠습니다.

적당한 위치에 개발을 위한 디렉토리를 생성합니다.

mkdir -p $HOME/workspace

디렉토리 생성 후 Blockchain 샘플 소스를 다운 받습니다.

cd $HOME/workspaces"
git clone https://github.com/IBM-Blockchain/SDK-Demo.git
cd SDK-Demo

다음으로 의존관계에 있는 모든 패키지들을 설치합니다.

npm install

여기까지 준비를 하였으면 다시 Bluemix로 돌아가서 앞서 생성한 Blockchain 서비스들의 접속정보를 확인하여 소스에 반영하도록 하겠습니다.
최초 Blockchain 서비스를 만들고나서 “Launch Dashboard” 버튼이 있던 화면이 기억나실 겁니다. 이 페이지로 가서 화면 왼쪽 메뉴에 “Service credentials” 메뉴를 클릭합니다.
혹시 화면에서의 위치를 찾지 못하시는 분들을 위해서 다시 설명드리면 아래 그림에서와 같이 Bluemix의 화면 왼쪽 상단의 “햄버거” 아이콘을 클릭하여 “Dashboard” 메뉴로 들어간 뒤
생성했던 Blockchain 서비스 명을 찾아서 클릭하시면 됩니다.

“Service credentials” 메뉴에 들어갔으면 아래그림과 같이 credential 정보를 모두 복사합니다.

복사한 credentials 정보는 앞서 받은 소스 위치 (SDK-Demo) 하위에 있는 “ServiceCredentials.json” 파일에 있는 내용 모두와 대체합니다.

다시 소스의 위치로 가서 다음의 명령을 실행하여 Blockchain 서비스와 연결 및 체인코드 디플로이가 정상적으로 이루어지는지 확인합니다.

cd $HOME/workspace/SDK-Demo
node helloblockchain.js

정상적으로 실행이 되었으면 다음의 그림과 같은 결과가 나옵니다.

Bluemix에서 Blockchain Dashboard를 확인하면 처음 생성했을 때와 틀리게 Deploy와 Invoke 활동이 일어났다는 것을 확인 할 수 있습니다.

여기까지 과정을 완료하면 기본적으로 클라우드 기반의 Blockchain 서비스를 이용하여 로컬에서 Blockchain 기반 애플리케이션을 개발하기 위한 환경이 준비되었습니다.
앞서 자세하게 설명하진 않았지만 git으로 부터 받은 소스에서 “npm install” 명령 실행시 Hyperledger Fabric의 nodejs sdk 를 다운 받았으며
helloblockchain.js는 sdk를 이용하여 Blockchain 서비스에 연결하여 명령을 실행하는 구조입니다.

다음 편에서는 이 환경을 기준으로 개인 인증 메커니즘을 구현해보겠습니다.

11 개의 댓글"블록체인 기반 중고 거래 플랫폼 개발하기"

  1. 안녕하세요. 공무제님. 저는 도서공유 플랫폼인 국민도서관 책꽂이라는 인터넷 도서관을 운영하고 있는 장웅이라고 합니다. 블록체인에 대해서는 저는 잘 모르고 있습니다만, 제가 앞으로 계획하는 것이 그에 상응하는 것 같은데, 기획한 것을 바닥부터 만들것이 아니라 그에 적합한 개발 플랫폼이나 솔루션이 있다면 이론에 근거해서 확립하는것이 맞겠다는 생각을 하게되었습니다. 새롭게 도입되는 기능은 기획단계입니다만, 혹시 시간이 되시면 기획하고 있는 것에 대해 말씀 여쭙고 올바른 기획을 세울 수 있도록 조언을 구하고 싶습니다. 바쁘신 가운데 시간 내주시면 꼭 찾아뵙도록 하겠습니다. 감사합니다.

  2. 대박 자료군요. 감사합니다! 영어 번역을 해서 제 블로그에 올려도 될까요?

    • 공무제 5월 17, 2017

      네 당연히 괜찮습니다. 다만, 원문에 대한 링크는 올려주세요^^

  3. 현상원 5월 21, 2017

    안녕하세요! 처음부터 쭉 잘읽어어 보았습니다(Docker 설치때 부터^^) 블록체인을 계속 보고 있는데요!
    블록체인 구조는 크게 블록헤더 구조와 트랜잭션 구조(부분)이 있는걸로 알고있습니다. 저희가 쭉 작업해온 부분은 트랙잰션 부분에 해당하는 것인가요?
    블록헤더 구조에는 이전 블록의 해쉬 값이 들어있는걸로 알고있씁니다. 합의 알고리즘을 통해 블록을 쌓는데(그 전 블록 해쉬값과 같이) 그 이전 해쉬값을 넣는 과정을
    너무 알고 싶습니다 ㅠㅠ …

  4. 여태껏 좋은 자료 잘 보고 있습니다. 감사합니다.
    지난 자료를 모아 출력해서 책으로 만들었는데, Hyperledger 1.0버전이 나왔군요…ㅎㅎ
    소중한 글 계속 올려주시면, 완결되는대로 다시 책으로 만들어서 공부해야겠습니다.

    항상 감사ㅏ드립니다.

  5. 블록체인을알고싶은남자 5월 22, 2017

    안녕하세요! 질문이 있습니다 블록체인에 저장을 하려면 전 블록 해시값이 필요한걸로 알고있씁니다. 그거는 다 합의 알고리즘으로 다 이미 형성되 있는건가요?

  6. 방경용 6월 20, 2017

    블루믹스에서 패브릭을 사용할 수 있는 걸로 알고있습니다.
    그렇다면 지금 올려주신 포스트와 같이 블루믹스에서 블록체인을 생성한다면, 그 것은 패브릭 기반으로 생성되는 건가요?

  7. 안녕하세요~~블록체인 관련하여 관심이 많아 찾아서 공부하고있습니다.
    다음편은 언제쯤 볼수 있을까요 ?

  8. VoxelGorilla 7월 25, 2017

    안녕하세요. Hyperledger는 기본적으로 화폐개념이 없는데요, 중고거래시에 지불은 어떤방식으로 하게되나요?

  9. 제가 개발하고자 하는것이 있는데요ᆢ
    만들어 주실분이 필요하신데요ᆢ
    딱! 맞으시는듯 합니다.
    연락하고 싶읍니다.
    꼭 연락부탁드립니다

토론 참가

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.