Skip to content

2020 participate ICON Hyperhacks Hackathon

Notifications You must be signed in to change notification settings

nickisworking/studicon

 
 

Repository files navigation

-----------------------------------------------------

➤ Inspiration


STUDICON is a blockchain-based platform which can manage the whole process from creating a study group to issuing the certificate. We provide various kinds of tools to simplify the process of study group management and issue certificate for those who want it. This will help people to make the best use of study groups easily and give study group members motivation to achieve their goals.

  • Vision : To make more useful study group management tool
  • Background
    • Lack of transparency of current application managing study group might lead to the risk of embezzlement of public fund(deposit).
    • Difficulty that current study group applications have when it comes to prove participation of each study group member
    • Currently there is no certificate to prove that someone has participated specific study group
  • Why Blockchain?
    • Since blockchain opens all records transparently, study group application which uses blockchain technology will increase the reliability of managing any kind of deposit for the study group
    • Once Information is transmitted to the blockchain, it is impossible to forge the information and it remains permanently. Therefore, the history of study group is permanently recorded on the blockchain and this platform issue certificate based on this information
  • Service Feature
    • Recruitment and participation of member of the study group
    • Automated program managing study rules and giving penalties
    • Incentive System for motivation
    • Issue certificate of completion
  • Expected effect
    • Study group members can motivate themselves by systemized penalty and incentive system
    • Study chief automates the management of rules to give any penalty or incentive to members.
    • Study culture will change based on STUDICON which will be extending the variety of study groups to a wider range from current acquaintance-oriented study.

-----------------------------------------------------

➤ Usage

import project

git clone https://github.com/Youngerjesus/studicon.git

edit application-dev.properties & application.properties

app.host=http://localhost:8080
server.port=8080

create jar file

mvn package

-----------------------------------------------------

➤ How I Built It


Source Code Management

  • We created a remote server configuration from Intellij IDEA Ultimate, and synced our works in real time.
  • Specific methods are described in the following link : Create a remote server configuration

Languages and Frameworks

Languages and Frameworks version
Java 11.0.8
spring-boot-starter-data-jpa 2.2.4
spring-boot-starter-mail 2.2.4
spring-boot-starter-security 2.2.4
spring-boot-starter-thymeleaf 2.2.4
spring-boot-starter-web 2.2.4
modelmapper 2.3.6
querydsl-jpa 4.2.2
postgresql 42.2.9
icon-sdk 0.9.15

Cloud Services


Score Variables and Methods

Studicon.py is an ICON Smart Contract that manages the major functions of Studicon service, deposit and certificates

Variables

self._allMemberList = ArrayDB("allMemberList", db, value_type = int)

: For managing accounts who join the study

self._memberStatus = DictDB("memberStatus", db, value_type = str)

: For updating each study member status, JOIN, LEAVE, EXPEL, or GRADUATE

self._studyStatus = VarDB("studyStatus", db, value_type = str)

: For updating study status, OPEN or CLOSE

self._depositInfo = DictDB("depositInfo", db, value_type = int)

: For managing study deposit of each member

Read only methods

@external(readonly=True)
def getMemberDepositInfo(self, _accountId: int) -> int:

: Get the amount of remain deposit owned each member

@external(readonly=True)
def getCommonDepositInfo(self) -> int:

: Get the amount of deposit owned SCORE address

@external(readonly=True)
def getPayBackDepositInfo(self, _accountId: int) -> int:

: Get the amount of pay back deposit for each member

External methods

@external
@payable
def openStudy(self, _attendPenalty: int, _homeworkPenalty: int, _initDeposit: int):

: Publish study and set initial deposit and penalties

@external
@payable
def joinStudy(self, _accountId: int):

: Register the account who joins the study with paying initial deposit

@external
def leaveStudy(self, _accountId: int) -> bool:

: Remove the account who leaves the study with paying back the remain deposit

@external
def applyPenalty(self, _accountId: int):

: Apply the penalty, absence, or incomplete assignment, to the member determined by voting : Reduced deposit is stored at the SCORE address

def expelMember(self, _accountId: int):

: Expel the member who no longer has the deposit left

@external
def closeStudy(self):

: Close study and graduate the members who has the deposit left

@external
def payBackDeposit(self, _accountId: int) -> bool:

: Pay back the member-owned and SCORE-owned deposit

-----------------------------------------------------

➤ Challenges I ran into


Every moment during our project was a challenge for us. Our team has just begun studying blockchain and this project was our first official project to make a tangible outcome. During the project, there were several challenges from designing to programming and we could learn many things from those challenges.

Designing Service - Why Blockchain?

  • When designing Dapp, we had to think about the reasons why blockchain should be applied to this application.
  • We needed the idea which is attractive as itself, get benefit from the blockchain, and is realistic.

Writing our new SCORE and deploying our SCORE

  • It was the first time for us to write SCORE and deploy it with t-bears environments in docker.
  • We studied for few weeks about writing and deploying SCORE.

Adapting SCORE in our application

  • We need to make java-sdk to adapt the score in our application.

Constructing Server with Spring Boot

  • We decided to learn and use Spring Boot framework as our web framework.

-----------------------------------------------------

➤ Accomplishment that I’m proud of.


Our own SCORE

  • We wrote our own SCORE- Studicon
  • Studicon is our own SCORE which controls the deposit of users in our service.
  • We are proud the fact that we can contribute to the ecosystem of ICON.

Our own Dapp

  • We designed our service in the aspect of business to get the real profit.
  • We are ready to launch our service, and we even prepared AWS domain.
  • We are going to keep monitoring our code in detail and test server so that we can improve some operations and fix bugs to launch Studicon.

Contribution to the popularization of blockchain and icon network.

  • After studying the concept of blockchain, we have learned the way to “discuss” how blockchain can be applied to our daily life.
  • Though there have been several trials to introduce blockchain to the public, blockchain technology is still quite unfamiliar to ordinary people.
  • We designed our idea for ordinary people, especially those in their 20-30 who are looking for the platform to find other people to study together.
  • The slogan of our team is to lower the barrier to enter the world of blockchain technology.
  • We hope our service can make blockchain technology more familiar to the public.

-----------------------------------------------------

➤ What I learned


The ICON Network and Writing SCORE.

  • Not only learning how to write SCORE, we studied ICON network and ICON loop chain for several weeks with regular sessions and seminars.
  • We read the whitepaper of ICON and discussed the components, key concepts, and governance of ICON ecosystem.
  • Especially, we are interested in deploying NFT and we found many practical applications of NFT deployed by ICON.

Improved developing skills.

  • Through this project, we got more familiar with web developing skills.
  • We studied several Web programming skills such as Spring, Spring JPA and Security, Thymeleaf and so on.
  • Also, we get more familiar with blockchain development environment.
  • We learned how to set the docker virtual environment with t-bears and how to deploy it with key-store file.

The developing process of Dapp

  • Through the entire process of project, we learned entire way of Dapp developing process.
  • The most important thing among what we have learned is that we should keep thinking why blockchain technology should be used.
  • Also, we learned how SCORE can be adapted to our web application through java sdk and what we should consider during programming web application.

-----------------------------------------------------

➤ What’s next for Skkrypto


As it is said before, the object of our team - Skkrypto is to lower the barrier to enter the world of blockchain technology.

We will keep monitoring Studicon and also try to take parts in ICON network in various ways.

Introducing ’Study Token’ concepts to the Studicon

  • Still, it is ICX which is exchanged between the users of Studicon.
  • We have plans to introduce ’Study Coin’ concepts to our service, which can enable each study group to deploy their own study token.
  • The following is the detail user flow of “Study Token”.
    1. When Study is established, the leader of study can deploy the unique token for the study group.
    2. Users who want to join the study should buy the token of the study group.
    3. There might be the auction system to buy the token of study group, which means if the study group gets famous, the token of the study group will be more expensive.

Study Token can be exchanged with ICX.

  • The following is the expected benefits of introducing study token into Studicon.
    1. Study Token can prevent malicious participants joining the study group.
    2. Through Study Token, there can be a high-quality study group which gives incentives to keep study group over and over.
    3. It makes it easier to introduce other gaming events to Studicon and makes services of Studicon much more unique.

-----------------------------------------------------

➤ Contributors

JeongMin Yeo SeungHo Park JunHo Bae YongWook Lee JiYeon Jin DongWoo Jeong MinSeung Shin
JeongMin Yeo SeungHo Park JunHo Bae YongWook Lee JiYeon Jin DongWoo Jeong MinSeung Shin
🔥 🔥 🔥 🔥 🔥 🔥 🔥

-----------------------------------------------------

➤ License

Licensed under MIT.

About

2020 participate ICON Hyperhacks Hackathon

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 62.2%
  • Java 36.1%
  • Python 1.7%