ysheokorea / DIDNOW

BEB-05-DIDNOW

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DIDNOW

GitHub language count GitHub language count GitHub contributors GitHub stars GitHub forks GitHub license
GitHub license GitHub license GitHub license

๐Ÿš€ ๋ฐฐํฌ๋งํฌ : https://didnow.cf/

๐ŸŽฅ ๋ฐœํ‘œ์˜์ƒ : https://youtu.be/G_nWCWi55kE

๐Ÿ“š ๋ชฉ์ฐจ

๐Ÿ“– ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๊ธฐ๊ด€์€ ๋งŽ์€ ์œ ์ €์˜ ์ธ์ฆ์„œ๋ฅผ ์ง์ ‘ ๋ฐœ๊ธ‰ํ•ด์ค˜์•ผ ํ•˜๊ณ , ์œ ์ €๊ฐ€ ์ธ์ฆ์„œ๋ฅผ ์žฌ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ ๋ณต์žกํ•œ ํ–‰์ •์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผ์•ผ ํ–ˆ๋‹ค. ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์€ ์œ ์ €๋Š” ์ธ์ฆ์„œ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์•ผ ํ–ˆ๊ณ , ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ธฐ๊ด€์€ ์ธ์ฆ์„œ์˜ ์œ„,๋ณ€์กฐ ์—ฌ๋ถ€๋ฅผ ์ •ํ™•ํžˆ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌํšŒ์  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋ธ”๋ก์ฒด์ธ์„ ํ™œ์šฉํ•œ ์ธ์ฆ์„œ ๊ด€๋ฆฌ ํ”Œ๋žซํผ DIDNOW๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€๋‹ค.

ํ”„๋กœ์ ํŠธ ์š”์•ฝ

  • ์œ„,๋ณ€์กฐ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธ์ฆ์„œ
  • ์ธ์ฆ์„œ ํ†ตํ•ฉ ๊ด€๋ฆฌ ์„œ๋น„์Šค

ํ”„๋กœ์ ํŠธ ํ”Œ๋กœ์šฐ์ฐจํŠธ

DB ์Šคํ‚ค๋งˆ

๐Ÿ”ง ์‚ฌ์šฉ ๊ธฐ์ˆ  (Technique)

๐Ÿ”จ๊ธฐ์ˆ  ์Šคํƒ (Technique Used)

FrontEnd

Icon Stack Description
REACT ํ”„๋ก ํŠธ์•ค๋“œ ๊ตฌ์„ฑ
ANTD ์ปดํฌ๋„ŒํŠธ UI
TAILWIND ์ปดํฌ๋„ŒํŠธ UI
THREEJS ๋Ÿฐ์นญ ํŽ˜์ด์ง€

BackEnd

Icon Stack Description
NODEJS API ์„œ๋ฒ„ 4๋Œ€ ์ œ์ž‘
MONGODB MongoDB Atlas M0 ์‚ฌ์šฉ
NGINX Load Balancing๊ณผ static ํŒŒ์ผ ๋ฐ˜ํ™˜ ์›น ์„œ๋ฒ„๋กœ ์‚ฌ์šฉ
ARTILLERY HTTP ํ”„๋กœํ† ์ฝœ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ง„ํ–‰์‹œ ์‚ฌ์šฉ
MOCHA Unit Test์— ์‚ฌ์šฉ
CHAI Unit Test Assert Library ์‚ฌ์šฉ

Smart Contract

Icon Stack Description
SOLIDITY ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ์ž‘์„ฑ
TRUFFLE ์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ ๋ฐฐํฌ
KLAYTN ๋ธ”๋ก์ฒด์ธ ๋„คํŠธ์›Œํฌ
KLIP ์ง€๊ฐ‘ ์—ฐ๋™
GANACHE ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธ

Deploy

Icon Stack Description
DOCKER ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ, ๋ฐฐํฌ ์‹œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ
EC2 ๋ฐฐํฌ ์„œ๋ฒ„
ROUTE 53 DNS์™€ EC2์„œ๋ฒ„ ์—ฐ๊ฒฐ
CERTIFICATE MANAGER SSL ์ธ์ฆ์„œ ์ƒ์„ฑ
GITHUB ACTIONS CI/CI ๋ฐฐํฌ ์ž๋™ํ™” ์‚ฌ์šฉ

๐ŸšงArchitecture

  1. Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Proxy, Front, Back์„ ๋”ฐ๋กœ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰. ์ด ๋•Œ Front๋Š” react๋ฅผ ๋นŒ๋“œํ•˜์—ฌ ์ƒ์„ฑ๋œ htmlํŒŒ์ผ์„ NginX์— ๋‹ด์•„ ๋นŒ๋“œํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•œ๋‹ค.
  2. Proxy๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” NginX๋Š” URL๋กœ ์ ‘์†ํ•œ ์œ ์ €๋ฅผ Front๋กœ ๋งํฌํ•ด์ฃผ๊ณ  Front์—์„œ ๋ฐœ์ƒํ•œ API Request๋ฅผ ์ ์ ˆํ•œ Back ์„œ๋ฒ„ ์ค‘ ํŠธ๋ž˜ํ”ฝ์ด ๊ฐ€์žฅ ์ ์€ ์„œ๋ฒ„๋กœ ์—ฐ๊ฒฐ์‹œํ‚จ๋‹ค.
  3. Back ์„œ๋ฒ„๋Š” ์š”์ฒญ์— ๋”ฐ๋ผ Klaytn ๋„คํŠธ์›Œํฌ์™€ MongoDB๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•œ๋‹ค.

๐ŸŒNetwork

Deploy ๐Ÿš€

  1. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง€์ •๋œ Repository์˜ ์ง€์ •๋œ Branch์— Pushํ•˜๋ฉด GuthubAction์ด ์‹คํ–‰๋˜์–ด DockerํŒŒ์ผ๋กœ ๋นŒ๋“œํ•˜๊ณ  DockerHub์— Pushํ•œ๋‹ค.
  2. ๊ทธ ํ›„ GithubAction์€ EC2์—์„œ ์‹คํ–‰์ค‘์ธ Runner๋ฅผ ํ˜ธ์ถœํ•ด DockerHub์—์„œ ์ด๋ฏธ์ง€๋ฅผ Pullํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

Connect

  1. ์œ ์ €๊ฐ€ URL์— ์ ‘์†ํ•˜๋ฉด AWS Route53์„ ํ†ตํ•ด ํ•ด๋‹น ๋„๋ฉ”์ธ์ด EC2์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐ๋œ๋‹ค.
  2. Certificate Manager์—์„œ ๋ฐœ๊ธ‰๋œ ์ธ์ฆ์„œ๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹น ๋„๋ฉ”์ธ ์ฃผ์†Œ์— ๋Œ€ํ•œ SSL ์ธ์ฆ์„ ํ™•์ธํ•˜๊ณ  https ์—ฐ๊ฒฐ์„ ์Šน์ธํ•œ๋‹ค.

ํผ๋ธ”๋ฆญ ๋ธ”๋ก์ฒด์ธ์„ ํ™œ์šฉํ•œ DID

DID๋ž€?

Decentralized Identity(ํƒˆ์ค‘์•™ ์‹ ์›์ฆ๋ช…, DID)๋Š” ๋ฐ์ดํ„ฐ์˜ ์ฃผ๊ถŒ์„ ๊ฐœ๊ฐœ์ธ์—๊ฒŒ ๋ถ€์—ฌํ•˜๊ณ  ์ค‘์•™ํ™”๋œ ์ œ3์ž๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ธ์ฆ์— ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์ฐจ์„ธ๋Œ€ ์ธ์ฆ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

Why public Blockchain?

  • DID๋ฅผ ๊ตฌํ˜„ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋น„์Šค๋“ค์€ ์ปจ์†Œ์‹œ์—„ ๋ธ”๋ก์ฒด์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์œ„์˜ ๊ฒฝ์šฐ ์ค‘์•™ํ™”๋œ ๋„คํŠธ์›Œํฌ๋กœ 100% ๋ถ„์‚ฐํ™”๋œ ๋ธ”๋ก์ฒด์ธ์ด๋ผ๊ณ  ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • ์ค‘์•™ํ™”๋œ ๋ธ”๋ก์ฒด์ธ์€ ๊ฒฐ๊ตญ ์†Œ์ˆ˜์˜ ๊ถŒ๋ ฅ์ž์— ์˜ํ•ด ๋ฐ์ดํ„ฐ ์œ„๋ณ€์กฐ์˜ ์œ„ํ—˜์ด ๋„์‚ฌ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • DIDNOW๋Š” ์œ„์ž„ ์ง€๋ถ„ ์ฆ๋ช…(DPoS)๋ฅผ ์‚ฌ์šฉํ•œ Klaytn public Blockchain์„ ํ™œ์šฉํ•œ DID ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ 100% ํƒˆ์ค‘์•™ํ™”๋œ ๋ธ”๋ก์ฒด์ธ ์œ„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Flowchart

VP ๊ฒ€์ฆ๊ณผ์ •

1. Holder์˜ ๋””์ง€ํ„ธ ์„œ๋ช… ํ™•์ธ

2. Issuer์˜ ๋””์ง€ํ„ธ ์„œ๋ช… ๋ณตํ˜ธํ™”

3. Issuer DID Document์—์„œ Holder ID ํ™•์ธ

4. Verifier๊ฐ€ ๊ฒ€์ฆํ•  ์ธ์ฆ์„œ์˜ ์ข…๋ฅ˜ ํ™•์ธ

๐Ÿ’พ ์„ค์น˜ & ์‹œ์ž‘ ์•ˆ๋‚ด (Installation Process & Getting Start)

1. FE .env ์„ค์ •

FE/client/.env.development๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด .env๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

2. BE .env ์„ค์ •

BE/01_AUTH-server/.env.example, BE/02_ISSUER-server/.env.example, BE/03_HOLDER-server/.env.example, BE/04_VERIFIER-server/.env.example๋ฅผ ์ฐธ๊ณ ํ•ด ๊ฐ๊ฐ .envํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

3. default.conf ์ƒ์„ฑ

$IP์— ์ž์‹ ์ด ์ ‘์†ํ•œ IP๋ฅผ ์ž…๋ ฅํ•˜์—ฌ default.conf ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

cd Proxy
echo url=$IP | cat - githubaction > githubaction.sh
chmod 777 githubaction.sh
./githubaction.sh
rm ./githubaction.sh
cd ..

4. docker-compose ์‹คํ–‰

docker-composeํŒŒ์ผ์„ ์‹คํ–‰ํ•˜์—ฌ localhost:80์— ์ ‘์†ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker-compose up -d

๐Ÿ’ป ์ œ๊ณต ๊ธฐ๋Šฅ (Service)

Common

ํšŒ์›๊ฐ€์ž…

Holder

์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ์ธ์ฆ์„œ ๋‹ค์šด๋กœ๋“œ
์ธ์ฆ์„œ ์ œ์ถœ ์ธ์ฆ์„œ ์ œ์ถœ ๋ชฉ๋ก

Issuer

์ธ์ฆ์„œ ์ œ์ž‘ ์ธ์ฆ์„œ ์ง€๊ธ‰

Verifier

์ธ์ฆ์„œ ๊ฒ€์ฆ

๐Ÿ‘ช ํŒ€ ์ •๋ณด (Team Information)

(ํŒ€์› ์ •๋ ฌ ์ˆœ์„œ๋Š” ์ด๋ฆ„์ˆœ์ž…๋‹ˆ๋‹ค.)
name role GitHub
์•ˆ๋ณ‘ํ˜„ Front-end
์˜ค๋™์žฌ SmartContract
ํ—ˆ์œค์„ Back-end

About

BEB-05-DIDNOW


Languages

Language:JavaScript 62.7%Language:HTML 17.4%Language:Solidity 14.2%Language:CSS 5.2%Language:Dockerfile 0.3%Language:Shell 0.1%