블록체인의 가장 큰 장점은 시스템을 신뢰할 수 있는 것입니다. 일반적인 서버-클라이언트 모델에서는 클라이언트 입장에서 서버는 완전한 블랙박스이기 때문에 내부적으로 어떤 일이 일어나는지 잘 알 수 없고, 따라서 신뢰할 수 없지만, 블록체인 모델에서는 프로그램이 실행되는 블록체인이 화이트박스이기 때문에 어떤 일이 벌어지는지 모두 볼 수 있고, 따라서 시스템을 신뢰할 수 있게 됩니다. 이러한 장점에 입각하여 우리 팀은 새로운 쇼핑몰 아키텍처를 소개하고자 합니다.
이 플랫폼의 특징은 구매자가 거의 항상 랜덤으로 정해진다는 점입니다. 이 쇼핑몰에서 물건이 판매될 때 일어나는 과정은 다음과 같습니다:
- 판매자가 우선 판매할 물건을 올리고, 그에 대한 가격을 책정합니다.
- 해당 물건을 구매하고 싶은 구매자는 원하는 만큼 가격을 지불합니다.
- 만약 물건에 대한 가격이 모두 지불되었다면, 구매자들중 임의로 한명을 뽑아 물건을 줍니다. 이때 지불한 금액/물건의 가격이 뽑힐 확률이 됩니다.
벡엔드에서는 다음과 같은 작업들을 수행합니다.
- 등록 : 회원 계정을 등록 받습니다. 이때 회원은 자신의 클레이튼 지갑 주소를 추가 정보로 입력 할 수 있습니다. 만약 하지 않는다면, 새로운 지갑을 생성하여 회원에게 할당합니다.
- 판매 물품 신청 : 판매자가 물건 판매를 신청하였을 때 물건에 태그 형식으로 물건의 종류를 분류받습니다. 이후 id를 부여하고, 새로운 컨트랙트를 생성하여 이 물건과 맵핑해줍니다.
- 실제 판매자 확정 : 컨트랙트에 의해 확정된 구매자의 정보를 판매자에게 보내 물건을 실제로 배송하게 합니다.
컨트랙트는 다음과 같은 역할을 수행합니다.
- stake 구매 : 구매자의 지갑 주소와 총 value를 입력으로 받아 지갑 주소의 주인에게 value 만큼 stake를 할당해 줍니다.
- stake 현황 : 현재 물건에 얼마나 stake가 남아있는지 확인합니다. 만약 stake가 남지 않았다면 자동으로 추첨을 진행합니다.
- 추첨 : stake 구매자들을 대상으로 추첨을 진행합니다. 이 때 당첨 확률은 stake 보유량에 비례하게 됩니다. 추첨에서 당첨된 사람에게 물건의 권리가 넘어갑니다.