Skip to content

codestates/BTAFinalProject-02

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BTAFinalProject-02

[2팀] Ultra Lisk

  • 모임시간: 오후 7시
  • 선정코인: Lisk (LSK)

Ultra Lisk 팀 소개


[개인 임무]

이름 공통 임무 GitHub
박준혁 Blockchain Node 구성 및 운영 팀장, 익스플로러 프론트엔드, 지갑 백엔드
황인철 Blockchain Node 구성 및 운영 익스플로러 백엔드, Daemon, 지갑 총괄
전도후 Blockchain Node 구성 및 운영 익스플로러 총괄, 지갑 백엔드
김원호 Blockchain Node 구성 및 운영 익스플로러 백엔드, 문서 정리

일정

image

선정 코인 소개

1. Lisk

  • Obelisk에서 이름을 따온 독일에서 만들어진 암호화폐
  • 코인 심볼 : LSK
  • 발행일 : 2016년 5월
  • 법인 소재지 : 독일 베를린
  • 총 공급량 : 제한 없음
  • 합의알고리즘 : DPoS

2. 코인 선정 이유

  • 자바스크립트 기반의 노드제이에스 (Node.js) 프레임워크를 사용하여 접근성을 높였습니다.
  • 새로운 언어와 방법을 배울 필요 없이 자바스크립트만의 장점인 개발 용이성과 확장성, 호환성 등을 활용하여 개발을 할 수 있습니다.
  • 모든 디앱의 데이터를 메인 블록체인에 다 올리지 않아서 메인 블록체인의 데이터를 최소화하기 때문에 보다 빠른 속도로 확장성을 갖는 사이드체인 기술을 사용합니다.
  • GitHub 오픈소스 프로젝트에 꾸준히 커밋되는 등, 프로젝트의 꾸준한 참여가 돋보입니다.

프로젝트 소개

1. 개요 및 목적

  • BlockChain Node, Explorer, wallet 이해와 활용

2. 핵심 기능

  • 지갑

    • Chrome Extension 기반 지갑
    • 중앙 서버 통제 없이 사용자가 직접 지갑 보유
    • 지갑 발급 및 계정 발급 기능
    • 토큰 전송
  • 익스플로러

    • 최신 블록 및 트랜잭션 실시간 조회
    • 계정 정보 조회 및 계정별 트랜잭션 조회
    • 과거 블록 및 트랜잭션 조회
    • 블록, 계정, 트랜잭션 검색 기능
  • 데몬

    • 블록 생성 subscribe 및 db 저장

3. 기술 스택

Untitled

프로젝트 상세

1. 지갑

📎 기존의 desktop 지갑으로만 존재하던 Lisk 지갑을 중앙 서버의 통제 없이 사용자 지갑 정보를 구글 플러그인을 이용해 자신의 PC에서 간편하게 관리할 수 있도록 설계되었습니다.
  • 상세보기

    - 로그인 및 니모닉 코드(Mnemonic Code) 생성

    ezgif com-gif-maker

    - 로그인 및 지갑 가져오기

    ezgif com-gif-maker_(1)

    - 잔액 조회

    ezgif com-gif-maker_(2)

    - 송금

    - 로그아웃

    ezgif com-gif-maker (9)

2. Explorer

📎 Daemon으로 DB에 적재한 블록과 트랜잭션, 그리고 JSON-RPC 기반의 API를 통해서 웹의 데이터를 동기화하고 조회하는 익스플로러 입니다.
  • 상세보기

    - Dashboard

    ezgif com-gif-maker_(5)

    - Block 조회

    ezgif com-gif-maker_(1) 1

    ezgif com-gif-maker 2

    - Transction 조회

    ezgif com-gif-maker_(6)

    - Account 조회

    ezgif com-gif-maker_(7)

    - 검색 기능

    ezgif com-gif-maker_(8)

3. Daemon

📎 Lisk 에서 제공해주는 JSON-RPC 기반의 API를 통해 블록과 트랜잭션 정보들을 DB 에 동기화 해주는 프로그램입니다.
  • 상세보기

    ezgif com-gif-maker_(2) 1

4. Blockchain Node

📎 Node 2 개를 로컬 네트워크로 구성하고 서로 동기화 하여 블록 생성 및 검증이 잘되는지 여부를 확인해보았습니다.
  • 상세보기

    ezgif com-gif-maker_(1) 2

어려웠던 점

  1. wallet

    • 크롬 익스텐션을 처음 개발하면서 webpack을 브라우저가 사용할 수 있도록 모듈화 하는 부분에서 빌드 이후 에러가 표시되지 않는 경우가 많아 많은 시간을 소요하였으며, webpack을 학습하고 새로운 방식으로 수정하여 해결하였습니다.
    • transaction을 전송하면서 lisk-service 노드에 대한 sdk의 부재로 transaction sign과 전송을 할 수 없었습니다. transaction을 sign하기 위해 lisk-client의 소스코드를 분석하였고 결국 sign을 조각별로 합쳐 구현하였고 websocket을 이용한 rpc call 까지 구현해 성공적으로 transaciton을 주고 받을 수 있게 되었습니다.
    • transaction의 완료 시점을 알아낼 수 없었습니다. 기존의 web3.js 모듈을 사용할 때는 transaction의 receipt를 sendTransaction의 응답으로 주어 알 수 있었지만 lisk에서는 send transaction에 대한 응답이 없어 trasnaction의 결과를 몰라 사용자에게 알려줄 수 없었습니다. 따라서 부득이하게 결과를 띄울 수는 없지만 계정의 잔액을 새로고침할 수 있는 버튼을 만들게 되었습니다.
  2. Explorer & Daemon

    • expolorer와 서버와의 통신은 api를 잘 만들어 주셔서 어려움은 없었으나 시간이 부족했어서 만들려고 했던 기능들을 못 만들어서 아쉬웠습니다. 또한 공통으로 쓰이는 컴포넌트들을 최대한 모듈화를 통해 작업을 하려했으나 다 하지 못해 아쉬움이 남습니다.
    • lisk의 블록을 동기화 하면서 많은 요청과 응답이 오고 가기 때문에 websocket을 이용하여 connection을 구성하였고 node에서 잘못된 응답을 주거나 요청에 실패하여도 daemon은 계속해서 돌아가며 동기화를 시도해야 하기 때문에 에러제어를 해주었습니다. 또한 daemon을 꺼두었다가 다시 실행하면 해당 상황에 맞게 그 다음 block부터 동기화 하도록 설정하였습니다.
  3. Blockchain node

    • lisk-core에 대한 자료가 부족하여 genesis block의 설정과 config 파일을 작성하는데 어려움이 있었습니다.

      문서에는 mainnet과 testnet에 대해 연결하는 방법만 나와 있어 직접 mainnet과 testnet의 설정을 참고하고 lisk-core의 소스코드를 분석하여 config를 작성해야 했습니다. 이 과정에서 lisk community에도 질문을 올려보고 lisk의 github을 뒤져가며 많은 시행착오 끝에 node를 성공적으로 구성하고 2개의 노드를 동기화 하였습니다.

느낀 점

  1. 박준혁

    이번 프로젝트를 통해 팀원들에게 많은 부분을 배우는 시간을 가졌습니다. 예를 지난 wallet 프로젝트 때 보안 적으로 놓치고 있던 부분을 깨닫게 되어 다시 학습하게 되었고 팀원들의 코드를 보면서 많이 배웠으며 좋은 코드 작성을 위한 지속적인 학습이 필요하다고 느꼈습니다.

    이외 explorer를 구현하면서 블록, 트랜잭션에서 확인할 수 있는 정보를 알 수 있게 되어 다른 체인의 explorer 또한 사용할 수 있는 계기가 되었으며 이 프로젝트를 통해 비트코인, 이더리움 외의 다른 다양한 솔루션을 가진 코인에도 관심을 가지게 되었습니다.

  2. 황인철

    시가총액이 높은편인 lisk 코인을 선정하여 진행하였지만 어려움이 많았다. 코인이 발행된지 몇년의 시간이 지났는데도 불구하고 문서가 생각보다 많이 부실하고 인터넷에도 자료가 없어 lisk 네트워크에 대한 구조와 동작 방식을 이해하는데 오랜 시간이 소요되었다. 하지만 이렇게 맨몸으로 부딪혀 보고 코드 분석과 community에 질문을 올려가며 프로젝트를 진행하면서 힘들다는 느낌 보다는 재미있다는 느낌이 강했다. 원래 무언가를 분석하는것을 좋아하여 보안을 공부했었는데 그때에 기른 코드 분석 능력이 빛을 발했던것 같다. 또한 이전에는 항상 이더리움 계열의 네트워크들에 대해서만 공부를 했었지만 새로운 네트워크에 대해 알게 되어 좋았다. 평소 개발을 진행하면서 초기 구조 설계가 부실하여 구조를 뒤엎는 경우가 종종 있었는데 이번에는 먼저 설계도 해보고 구조를 가독성있고 효율적으로 작성해야 한다는 생각을 가지고 개발을 진행하였는데 만족스럽게 진행이 된것 같다. 하지만 세세한 기능까지는 완벽하게 구현하지 못한 점은 아쉽다. 다른 여러 사람들과 협업할 수 있는 기회가 적었는데 이번 프로젝트를 통해 여러 분야에서 종사하시던 분들을 만나 다 새로 학습하는 주제에 대해 함께 공부하고 공유하며 프로젝트를 협업할 수 있어 좋은 경험이였다.

  3. 전도후

    공식문서를 참고하여 노드 구성을 진행했는데 생각보다 자료가 많지 않고 예상치 못한 에러가 많이 생겨서 진행하는데 어려움이 많았습니다. 그때마다 팀원 분들이 도와주셔서 많이 배울 수 있었습니다. 회사 일로 인해 참여 못 할 때도 최대한 제 부분까지 커버해주셔서 너무 감사했습니다. 프로젝트를 진행하면서 언제나 새로운것을 배우고 활용한다는 것은 쉽지 않다는 것을 다시 한번 느꼈고 개발실력이 많이 부족하다고 느꼈습니다. 팀원분들의 코드를 보며 많이 배웠고 다들 너무 잘해주셔서 결과가 나온것 같습니다.

  4. 김원호

    짧은 개발 경험과 언어스펙으로 실질적인 개발에 참여하지 못해 팀원분들께 더 큰 부담을 드렸습니다. 노드 구성 진행 과정만으로도 어려움에 많이 부딪쳤지만, 같이 고민해주고 찾아주는 팀원분들에게 많이 배웠습니다. 특히 존재조차 몰랐던 각종 툴과 스킬들을 배울 수 있어 많은 도움이 되었습니다. 향후 차근히 준비를 더 쌓아 개인적으로 해당 프로젝트를 진행해보고자 합니다.

참고 자료

  1. Lisk 공식 문서

Overview - Lisk Documentation

  1. Lisk Discord community

Join the Lisk Discord Server!

  1. Testnet faucet

Lisk - Faucet

About

Lisk blockchain wallet, explorer

Resources

Stars

Watchers

Forks

Contributors

Languages