Skip to content

codestates/WBA-BC-Project-01

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WBA-BC-Project-01

📖 목차

소개

  • 구글 소셜 로그인을 이용한 멀티 체인 지갑 거래소가 아닌 개인지갑을 이용 예정인 신규 유저는 지갑생성부터 어려움을 느낀다. 그래서 구글 로그인을 하면 자동으로 지갑을 생성하고, 유저가 니모닉 단어와 지갑 키를 관리하지 않아도 되는 지갑이 있으면 좋겠다고 생각했습니다.

저희 프로젝트는 기존 소셜과 동일하게 메일주소와 패스워드만 있으면 누구나 사용 가능한 유저 친화적인 지갑을 제공합니다.

TEAM Mallet

이우석 : BE 변재진 : BE 심승훈 : BE
@wslee220420 @wlswo @simpsonhoon
💡 구글 로그인으로 유저 친화적인 지갑 서비스 구현
- 사용자는 니모닉 단어를 보관하지 않아도 됩니다.
- 구글 로그인과 비밀번호를 이용하여 PrivateKey를 보관합니다.
- 지갑주소의 트랜잭션 내용을 쉽게 트래킹 할 수 있습니다.

핵심 기능

  • 지갑
    • 구글 로그인을 통한 지갑 생성
    • 유저의 메일주소와 비밀번호로 Kerstore 관리
    • 멀티 체인의 보유하는 코인/토큰 자산을 한번에 확인
    • 코인, 토큰 전송
    • 멀티시그
  • 데몬
    • 멀티 체인 트랜잭션 뷰
    • 각 체인별 트랜잭션 이벤트 감지

차별점

  • 유저가 니모닉 단어나, PrivateKey관리를 하지 않아도 됩니다.
  • 서비스에서 검증한 토큰은 컨트랙트를 추가 하지 않아도 확인이 가능합니다.
  • 코인/토큰의 거래내역을 쉽게 확인할 수 있습니다.
  • 네트워크를 전환하지 않아도 사용할 수 있습니다.

사용법

  • 구글 로그인, 지갑 생성

    • 지갑 생성 버튼 클릭시 지갑 생성
  • 지갑 자산 가져오기

    • 지갑 주소로 자산 호출
      • http://localhost:8080/wallet/balance?address=0x314613c

      • 결과 값

        {
            "coinInfos :": [
                {
                    "Contract": "",
                    "SymbolName": "WEMIX",
                    "BalanceOf": "7.454006382490955452",
                    "Price": 0,
                    "Network": "WEMIX"
                },
                {
                    "Contract": "",
                    "SymbolName": "ETH",
                    "BalanceOf": "0.783477864499520535",
                    "Price": 0,
                    "Network": "ETH"
                },
                {
                    "Contract": "",
                    "SymbolName": "KLAY",
                    "BalanceOf": "149.932127875",
                    "Price": 0,
                    "Network": "KLAY"
                }
            ],
            "tokenInfos :": [
                {
                    "Contract": "0x9Fa7F4E848Df29B3F653c47cC12b4c9bBCf2b99c",
                    "SymbolName": "WAL",
                    "BalanceOf": "7.7731027138210594724e+08",
                    "Price": 0,
                    "Network": "WEMIX"
                },
                {
                    "Contract": "0x718B42c6E706383DB5e9dc1C1356f417E00b3977",
                    "SymbolName": "EWAL",
                    "BalanceOf": "9.999476683190259263e+08",
                    "Price": 0,
                    "Network": "ETH"
                },
                {
                    "Contract": "0xbccfb43e61bc1726861055f9169b817298441070",
                    "SymbolName": "KWAL",
                    "BalanceOf": "1e+09",
                    "Price": 0,
                    "Network": "KLAY"
                }
            ]
        }
  • 코인, 토큰 전송

  • 트랜잭션 확인

    • 위믹스, 클레이튼, 이더리움 체인에서 자신의 코인, 토큰의 거래내역 및 트랜잭션 리스트를 가져옵니다.
  • 다중서명 지갑 생성과 계약 제출

개발 환경

  • 언어
    • Go
  • Database
    • mongodb
  • API Test
    • Postman
  • 협업툴
    • Git
    • Discord

사용 기술

ERD

  • 데이터베이스 설계
    • 유저 Database
      • MEMBER
      
        type User struct {
         ObjectID primitive.ObjectID `json:"_id,omitempty" bson:"_id,omitempty"` //기본키
         Email    string             `json:"email" bson:"email"`                 //SNS ID
         Address  string             `json:"address" bson:"address"`             //지갑주소
        }
        
      • WALLET
    • 데몬 Database
      • WemixBlock
      • KlaytnBlock
      • EthereumBlock
      
        type Block struct {
         BlockHash    string        `bson:"blockHash"`
         BlockNumber  uint64        `bson:"blockNumber"`
         GasLimit     uint64        `bson:"gasLimit"`
         GasUsed      uint64        `bson:"gasUsed"`
         Time         uint64        `bson:"timestamp"`
         Nonce        uint64        `bson:"nonce"`
         Transactions []Transaction `bson:"transactions"`
        }
      
        type Transaction struct {
         TxHash      string `bson:"hash"`
         From        string `bson:"from"`
         To          string `bson:"to"` 
         Nonce       uint64 `bson:"nonce"`
         GasPrice    uint64 `bson:"gasPrice"`
         GasLimit    uint64 `bson:"gasLimit"`
         Amount      uint64 `bson:"amount"`
         BlockHash   string `bson:"blockHash"`
         BlockNumber uint64 `bson:"blockNumber"`
        }
        

서버 아키텍처

  • 서버구성
    • Application Server 1대
    • DataBase Server 1대
    • Deamon Server 3대

API 명세서


로그인 관련

/auth/google/login                  [GET]        // @Description  구글 로그인
/auth/google/callback               [GET]        // @Description  구글 로그인 콜백 

지갑 관련

/wallet/trackAddress/{from}         [GET]        // @Description  특정 주소 발생한 트랜잭션 가져오기
/wallet/trackContract               [POST]       // @Description  코인  가져오기
/wallet/mnemonics                   [POST]       // @Description  니모닉 생성
/wallet/                            [POST]       // @Description  지갑 생성
/wallet/balance                     [GET]        // @Description  자산 정보 가져오기
/wallet/transfer                    [POST]       // @Description  코인,토큰 전송

다중서명지갑 관련

/multisigwallet/                    [GET]         // @Description 다중서명지갑 생성 페이지 반환
/multisigwallet/                    [POST]         // @Description 다중서명지갑생성
/multisigwallet/submit              [POST]         // @Description 다중서명 계약 제출
/multisigwallet/confirm             [POST]         // @Description 계약 컨펌
/multisigwallet/txCount/{wallet}    [GET]         // @Description 계약 개수 가져오기
/multisigwallet/owners/{wallet}     [GET]         // @Description 지갑 소유자 목록 반환

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors