Skip to content

Instantly share code, notes, and snippets.

@ChoKyuWon
Last active September 22, 2019 06:49
Show Gist options
  • Save ChoKyuWon/a663796762623f037f57200d4abdb847 to your computer and use it in GitHub Desktop.
Save ChoKyuWon/a663796762623f037f57200d4abdb847 to your computer and use it in GitHub Desktop.

클레이튼을 사용한 쇼핑몰 아키텍처

<개요>

블록체인의 가장 큰 장점은 시스템을 신뢰할 수 있는 것입니다. 일반적인 서버-클라이언트 모델에서는 클라이언트 입장에서 서버는 완전한 블랙박스이기 때문에 내부적으로 어떤 일이 일어나는지 잘 알 수 없고, 따라서 신뢰할 수 없지만, 블록체인 모델에서는 프로그램이 실행되는 블록체인이 화이트박스이기 때문에 어떤 일이 벌어지는지 모두 볼 수 있고, 따라서 시스템을 신뢰할 수 있게 됩니다. 이러한 장점에 입각하여 우리 팀은 새로운 쇼핑몰 아키텍처를 소개하고자 합니다.

이 플랫폼의 특징은 구매자가 거의 항상 랜덤으로 정해진다는 점입니다. 이 쇼핑몰에서 물건이 판매될 때 일어나는 과정은 다음과 같습니다:

  1. 판매자가 우선 판매할 물건을 올리고, 그에 대한 가격을 책정합니다.
  2. 해당 물건을 구매하고 싶은 구매자는 원하는 만큼 가격을 지불합니다.
  3. 만약 물건에 대한 가격이 모두 지불되었다면, 구매자들중 임의로 한명을 뽑아 물건을 줍니다. 이때 지불한 금액/물건의 가격이 뽑힐 확률이 됩니다. 그림 1

<상세>

<백엔드>

벡엔드에서는 다음과 같은 작업들을 수행합니다.

  • 등록 : 회원 계정을 등록 받습니다. 이때 회원은 자신의 클레이튼 지갑 주소를 추가 정보로 입력 할 수 있습니다. 만약 하지 않는다면, 새로운 지갑을 생성하여 회원에게 할당합니다.
  • 판매 물품 신청 : 판매자가 물건 판매를 신청하였을 때 물건에 태그 형식으로 물건의 종류를 분류받습니다. 이후 id를 부여하고, 새로운 컨트랙트를 생성하여 이 물건과 맵핑해줍니다.
  • 실제 판매자 확정 : 컨트랙트에 의해 확정된 구매자의 정보를 판매자에게 보내 물건을 실제로 배송하게 합니다.

<컨트랙트>

컨트랙트는 다음과 같은 역할을 수행합니다.

  • stake 구매 : 구매자의 지갑 주소와 총 value를 입력으로 받아 지갑 주소의 주인에게 value 만큼 stake를 할당해 줍니다.
  • stake 현황 : 현재 물건에 얼마나 stake가 남아있는지 확인합니다. 만약 stake가 남지 않았다면 자동으로 추첨을 진행합니다.
  • 추첨 : stake 구매자들을 대상으로 추첨을 진행합니다. 이 때 당첨 확률은 stake 보유량에 비례하게 됩니다. 추첨에서 당첨된 사람에게 물건의 권리가 넘어갑니다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment