NICO

NICO

NICO is an Account Analytics Dapp designed to make users more familiar with Web3.0 during the period of forming diverse user pools as mass adoption thrives.

The problem NICO solves

Our team's project goes beyond being a mere variation of a block explorer. We aimed to bring a fresh perspective and create a new paradigm, setting us apart from other hackathon teams. Initially, our primary focus was on improving the frontend of the block explorer. We noticed that the existing block explorer had a user interface (UI) that was unfriendly and unappealing compared to the dreadful experience of web2 for users transitioning to web3.
As we delved deeper into the project, we seriously contemplated whether it was a fitting topic for the hackathon. Eventually, we made a crucial decision to enhance the user experience by incorporating additional entertainment elements and introducing a badge system. The badges would be minted as SBTs (Staking Badges Token) rather than NFTs (Non-Fungible Tokens) to maintain the clarity and significance of accomplishing challenge goals.
Implementing SBTs posed a challenge for our development team, as they were new to contract development using Rust. We brainstormed various ideas, including the creation of a 'lock' method to prevent user-to-user transfers. However, this approach introduced a significant issue of allowing certain entities to unlock the system, contradicting the decentralized nature we aimed to achieve. In light of this, we decided to issue SBTs in a form that eliminates the transfer method upon issuance, following the EIP5192 format, thereby implementing them on the NEAR blockchain.
We also explored recent advancements in NEAR, which has been actively expanding its social aspects within Web3. While we initially intended to follow this trend, we realized that incorporating permission modals and ensuring optimal processing speed presented potential challenges and drawbacks.

Challenges we ran into

Our team recently had a code review session with other university student members, where we formed a team and reviewed the project we had previously created. We had a lot of learning opportunities through this hackathon, where we examined code written by industry professionals, made predictions, and added additional features. One of the most common error codes we encountered during the hackathon was as follows:

gradle could not find mysql:mysql-connector-java ERROR 42580 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter org.hibernate.tool.schema.spi.CommandAcceptanceException

As students learning backend development without any practical experience, configuring the environment was quite complex, to the extent that it took us a considerable amount of time. Each of us identified the causes through the error codes (we discovered that as time passed, the version of Spring was updated and the Gradle input code for connecting to MySQL was changed. We created a resources file and an application.properties file since they were missing):

runtimeOnly 'mysql:mysql-connector-java' -> runtimeOnly 'com.mysql:mysql-connector-j' spring.datasource.url=jdbc:mysql://127.0.0.1:3306 spring.datasource.username=root spring.datasource.password=rootpass spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

We were able to resolve it by refactoring the code. Additionally, we enjoyed the hackathon by developing smart contracts using Rust and implementing FT (fungible tokens), as well as exploring blockchain development.

Discussion