➤ Inspiration

Omnia is a blockchain-based p2p(peer-to-peer) insurance platform.


Personally, we were dissatisfied with the chronic problems of the existing insurance industry.
For example, because of the issue of revenue structures, there were complaints about the inability of insurance to be generated for small needs, large amounts to be paid to cover risks, and complex contract procedures.
We had only vaguely thought of solving the problem, but through this opportunity, we were able to solve the problems one by one by designing and developing a p2p service that specifically introduced blockchain.

Omnia's Vision

“Uni navi ne committas omnia” is a Latin saying, ‘Don’t leave everything in one boat.’ As such, we decided to make catchphrase in hopes of safely distributing risks through our platform. Namely, We created a platform called ‘Omnia’ to give people a well-being life by creating an insurance platform that can safely distribute risks with a blockchain.


➤ What it does

P2P Insurance?

P2P insurance is for people who want to be guaranteed the same risk to collect their own insurance money and pay the money saved as insurance money in case of an accident. The advantage of P2P insurance is that it can reduce the cost of insurance companies and get the reserves back at the end of the insurance period, which lowers the loss rate because subscribers try to be careful on their own and avoid accidents.


Blockchain is a distributed computing technology-based ledger management technology where small data, called blocks, are stored in a chain-type connection-based distributed data storage environment created based on the P2P method, and anyone can access the results of changes. This is fundamentally a form of distributed data storage technology, a list of changes that record continuously changing data on all participating nodes, designed to be impossible to arbitrarily manipulate by operators of distributed nodes. logo

=> Blockchain-based p2p Platform, Omnia

By applying blockchain technology with many good values to the p2p insurance platform, we tried to solve the chronic problems of the existing insurance industry.


➤ Service Features


We serve as a platform for connecting small needs that individuals have. Specifically, Recruit people who want to be guaranteed risks, and create insurance groups when a certain number of people gather in our platform. Then, Customers check the price and benefits and get insurance with higher benefits and lower costs than traditional insurance. Finally, in the total amount of insurance money each paid, insurance money shall be paid in the event of an accident. At this time, the entire process from subscription to payment of screening was designed to introduce smart contract technology.

Only Omnia


It was difficult to receive insurance money because of an accident in the existing p2p insurance. Of course, there are cases in some insurance that reduce up to 90 percent, but it is rare. The reason may be that there are risks in terms of profitability. Omnia intends to use blockchain technology not only for the process of insurance procedures, but also for the formation of profitable models. Using DEFI, it is intended to be returned to the user by dividing the amount collected from the entire population, excluding the premium deducted. At this time, the fee for the platform was set very low at 5%. Still, the company can take a stable profit model. This is because there is revenue operated by fees and DEFI. Currently, we envision a model for making DAI of MakerDAo and Staking of AAVE.


In the current insurance industry, the use of blockchain is being partially utilized. Omnia intends to provide efficient infrastructure by introducing smart contract technology throughout the entire process, including subscription, screening, and insurance payments. Omnia has more advantages than the traditional insurance industry. First of all, it has simple and fast procedures, so you can experience high UX in terms of consumers, and it is also economical for the company. If operating costs decrease, it will also be replaceable with a large amount that can be returned to consumers. In addition, contracts are all written in code, thus reducing the ambiguity of contracts. Blockchain technology will provide high security, reduced fraud, and immutability. Finally, we also try to minimize the chronic 'oracle problem' experienced by existing blockchain industries using chainlink's adapter.


We also considered ways to improve UX from the perspective of consumers. So what we've come up with is two functions. It will gradually introduce functions such as ordering and consulting by voice by linking voice recognition api inside the web. It is expected that this will improve the quality of experience for the underprivileged who are struggling with the IT UI. In addition, in addition to the automatic upload function that Verifier automatically sends documents, we will also introduce the function to manually upload insurance review documents by linking OCR API. As we are still students, we can't cope with cloud charges because we can't afford it now, so we haven't developed each technology and connected it completely, but we will also connect additional functions when we carry out our business in the future.


➤ Service Architecture


The following is our servie architecture.

Our platform introduced blockchain technology throughout the entire process of insurance contracts, such as purchasing insurance, receiving insurance premiums, and screening. Users check and purchase insurance. Direct variables of Contract such as "Insurance Fee Amount & Inflow, Outflow" are recorded on the Ethereum network as on-chain smart contracts. The metamask was then linked to web3.js. General data is written to storage(MySQL).

The concept of Verifier emerges in the process of screening before users receive insurance money. Since it is a demonstration, it is not possible to recruit verifiers realistically, so it was assumed and set up when the business was expanded. At this point, Verifier can be considered to be a person who can officially verify examination documents in the course of contracts such as hospitals and courts. When a user is verified by an external party called verifier, this content is delivered to the nodes directly configured through chainlink api, which is sent back to the on-chain contact. In addition, we plan to link external adapters to prevent Oracle problems.

Omnia operated a web server and also linked AAVE Protocol to utilize defi. AAVE is a coin lending platform for obtaining interest on deposits and borrowing assets. Although the deposit rate varies for each coin, the annual apy is about 5.91% based on DAI. Therefore, we have formed a system that earns profits through interest through the deposit of DAI, a stable coin, and returns some of its profits to customers who have not had an accident.

To be specific, transfer the ether sent to the metamask to the AAVE Reserve Lending Pool. The transferred ether can be stored in the AAVE Wallet and converts the ETH into DAI through the built-in SWAP functionality of the AAVE platform. The DAI is deposited in the AAVE Staking Pool, and the revenue generated at this time is stored in the AAVE Wallet and transferred to the Metamask Wallet. For liquidity, it was developed that all amounts transferred to the Omnia platform could be automatically deposited into Pool at a set rate, rather than staking.


➤ How we built it


Using React, express(nodejs framework), we made web server for communicating with client. React for client screen, express for backend server and truffle for smartcontract deploy. Also we made smartcontract for the insurance on the insurance page. This operates insurance payment when accidents when an accident occurred and it was certified. It is also operated when an accident does not occur and is overdue. The chainlink node will be built for importing the insurer's external data into the blockchain network. Also, we made database for managing user's data using MySQL and connected AAVE API for defi staking.

Languages and Frameworks & version


Languages and Frameworks version
yarn 1.22.10


Languages and Frameworks version
redux 4.0.5
react 17.0.2
react-redux 7.2.3
react-dom 17.0.2
react-router-dom 5.2.0
react-scripts 4.0.3
react-transition-group 4.4.1
styled-components 5.2.3
typescript 4.1.2


Languages and Frameworks version
node.js 12.18
MySQL 2.18.1
nvm 0.38.0
cors 2.8.5
ejs 3.1.6
express 4.17.1
express-react-views 0.11.0
express-session 1.17.1
morgan 1.10.0
mustache 4.2.0
nodemon 2.0.7
path 0.12.7
session-file-store 1.5.0
ts-node 9.1.1

Smart Contract

Languages and Frameworks version
geth 1.8+
solidity compiler 0.6.12


a. Front-end

1. Main Page : In this page, there are important three features about service omnia (Reimbursement, Reliable procedure, User-friendly interface). Read informations carefully at this page. At the end of this page there is footer which has member's data

2. Insurance List Page : In this page, users can select what insurance is fit to him or her. There are six kinds of insurance (Health care, Pet, Car Rental, Accomodation, Kickboard, Keyperson). If user wants to know about insurance, just click the image. And then users can know that insurance's features. Also at the end of page, there is a insurance suggest program. If you curious that what insurance is fit to you click the suggest! At last you also sign up to insurance through Metamask transaction.

3. My Page : At this page, users can watch all of informations about user's data and insurance'data. Such as users' address, users'confirmation code, due date etc ... If you want to expire insurance, It is really easy. Just click withdraw button!

b. Back-end

< Overview >

Server made with Express js (Node js), Typescript and MySQL. Server deployed with Heroku (Cloud Application Platform)

< API >

> 1. Purchase Insurance ( '/api/create' )

  • request -> user can purchase insurance with this request. It requires user's confirmation code, user's name, Insurance's end date and user's wallet address.

    // Request Body
    confirmationCode: String,
    name: String,
    dueDate: Date,
    walletAddress: String
  • DB Query -> Insert user's data into insurance table.

    INSERT into insurance(confirmation_code, name, due_date, wallet_address) VALUES(?, ?, ?, ?)
  • response -> If there is an error, response error or not response success code.

    // Success Response Body
    code: 1
    // Fail Response Body
    code: 0

> 2. Get My Insurance Data ( '/api/myPage' )

  • request -> User can check he or she's insurance data with this request. It requires user's wallet address.

    // Request Body
    walletAddress: String
  • DB Query -> SELECT insurance data which user purchased from insurance table.

    SELECT * FROM insurance WHERE wallet_address=?
  • response -> If there is an error, response error or not response insurance data

    // Response Body
    confirmationCode: String,
    name: String,
    dueDate: Date

c. Smart Contract

  1. Client structure: Depending on the state and the amount of money deposited by the person, 0 means not insurance payment target and 1 means insurance payment target

  2. ClientInfo Mapping : Created to map with address => client structure format and address as key KeyList Address Array: To store the addresses of the people who have deposited and to count the total number of people later on. Mappings are not Iterative, so counting is inconvenient because of this, I make this array.

  3. The things in the constructor() 1 Ether must be initially deposited by the issuer to issue the contract.

  4. using setPublicChainlinkToken() -> using chainlink token Oracle -> External Adapter Oracle Address I Use JobId -> External Adapter id Clstatus -> First of all false

  5. RequestAlarmClock,fullfillAlarm —> supplied by the chainlink external adapter, and entered a few seconds in the requestalarmclock, then replaced the status value with true after the chainlink Oracle has run it all automatically.

  6. authorizeLendingPool(), depositTolending(), withdrawFromlending(), _safeTransferETH —> functions that deposit and withdraw all the money in the contract into the lendingpool.

  7. giveRight —>Contract Issuer makes the status of a particular client 1 If clstatus is true (i.e. the original goal was to get data from an external adapter when certified by the insurer and change the status corresponding to the person's address to 1, but after a certain period of time using alarm clock as an alternative, the contract issuer enters and executes the insured's address).

  8. withdrawForadmin() —> All balance withdrawals in the contract

  9. withdrawForclient(uint256 amount) —> a function that allows withdrawals and payments to be made only by those authorized to pay insurance.

  10. divideInsurancePayment() —> Distribute insurance money to those who are not involved in the accident.

  11. insurancePayment() —> a function that customers pay for insurance (0.1 ether default)

  12. size() —> Shows the number of people insured

  13. Balance() —> Show how much insurance you put in

  14. getInsuranceBalance() —> Shows the balance currently in this contract

  15. payTarget() —> You can check if you are eligible for insurance Payable Must not be 0 and must be 1 to be eligible for insurance payTarget()

  16. withdrawLINK() —> To use chainlink, contract has some LINK token and after the end, rest of LINK will be recalled


➤ Challenges we ran into

@Backend developer (HeeYoun Kim)

  • I challenged using express js in typescript. It was really hard to use. Because I am not good at using typescript and It was the first time to me. Also I deploy with heroku with mysql. If I want to use mysql at heroku I must use clearDB which help connect mysql to heroku. There were a lot of errors. However finally I did all of my challenges.

@Frontend developer (Yongwook Lee)

  • At first, I had a little difficulty because I didn't have much experience in organizing and developing the environment with typescript, but I am proud that I ultimately did it.

@Smartcontract developer (Jeongmin Lee)

  • In chainlink YouTube, there are many videos about chainlink and other sponsers. I want to know develop local node so I watch the video in chainlink YouTube. I tried to copy the contents while watching the video, but I failed in my laptop. Also during development, I want to know my fault in code so I asked problems in discord but the feedback didn’t come well.

@Product Manager (Chaewon Jeong)

  • I thought the design was important because I thought that constructing an intuitive UI would eventually attract more users. So I didn't use templates, I designed all the pages myself with Figma, but I had a hard time with the front-end developer(@Yongwook Lee) because there was no designer on our team. From graphic design references like award-winning, I'm proud to learn about designs that can improve the user experience and eventually create good designs.


➤ Accomplishments that we're proud of

@backend developer (HeeYoun Kim)

  • I can make Web with express js server and react client. Also I got knowledge about web3 structure with metamask.

@Frontend developer (Yongwook Lee)

  • I was very proud to participate in page design and ultimately implement user-friendly pages at the front end.

@Smartcontract developer (Jeongmin Lee)

  • I can make simple service implementation using chainlink, aave protocol and special insurance service using blockchain

@Product Manager (Chaewon Jeong)

  • As a Product Manager, I designed detailed functions of the service and organized architecture and development specifications to lead developers. There were a lot of things to take care of, but I'm glad that I finally created a satisfactory service as I solved it step by step.


➤ What we learned

@backend developer (HeeYoun Kim)

  • I learned if I do the efforts to solve problem, I can solve any problems. Beacause of experiences in Chainlink Hackathon I learned that precious thing.

@Frontend developer (Yongwook Lee)

  • It was really good to know about blockchain-based services and to be able to satisfy development knowledge. It was a time to develop my capabilities as a developer.

@Smartcontract developer (Jeongmin Lee)

  • I can get deep knowledge about smartcontract and chainlink working method and oracle node through chainlink YouTube and developer docs. I can also get knowlege about aave protocol contract.

@Product Manager (Chaewon Jeong)

  • I was able to accumulate knowledge about the blockchain industry by listening to various lectures provided by Hackathon. Especially, I wanted to study about DEFI, but I was able to accumulate related knowledge by applying it directly to the service.


➤ What's next for Omnia

If the competitive edge is verified through this competition, it will start a business so that it can become a real service.

We think it is important to recruit customers because of our item characteristics(p2p platform). This is because the types of insurance generated within the platform will vary only when customers gather, and we think this will soon create a virtuous cycle that brings in another customer.

Therefore, we want to bring together many customers and create network effects by gradually introducing 'management strategies' and 'technology strategies' in order to prosper the platform.

Our management goal


Through SWOT analysis, we selected management strategies that should be adopted when commercializing Omnia services based on priorities. When analyzed by the analysis tool, Omnia's OS strategy was appropriate. There are two main strategies recommended in the OS strategy. There are Market Opportunity Preoccupation Strategy, Product and Market Diversification Strategy.

Then We divided the strategies to proceed step by step like below lists.

Phase 1. Leaping as the first mover in the blockchain-based P2P insurance platform sector by pre-entering related markets

Phase2. Products, Market Diversification

Phase 3. Strategic Alliance Partner Recruitment -> Increase accessibility by embedding in unicorn platform services

Our technical goal

We will fully link services that have been invested and have not been linked because of lack of funds. We will link paid domains, servers, and api, which were not technically implemented and interlocked only, using cloud services. Furthermore, we will continue to refactory the code and strive to create clean code. In addition, we currently plan to introduce DID technology to the identity certification stage when the platform stabilizes to enhance convenience. We will continue to add customer-friendly services like this.

Our Final goal

First of all, we want to solve chronic problems that have occurred in the existing insurance industry by achieving prosperity of the platform. Especially young age groups, such as the MZ generation, are reluctant to insure at a cost, and we design insurance to be reasonable and short-term, and try to connect even the slightest risk to each peer. Through this, we want to make a leap forward into a stable society where money can share at least a little risk.

In addition, we want to overcome the negative perception of the blockchain industry and solve the challenges of scalability that the industry has. For general users, blockchain is more known as cryptocurrency than the value of technology, and there are still many negative perceptions that it is a means of speculation. In addition, the word trilemma is used in the blockchain industry(scability, decentralization,security), and among the three values, there are still fewer practical services that are highly scalable. we think this challenge of scalability can be solved by creating attractive customer-friendly services and expanding the number of users. Therefore, we tried to design it without significant difference from the UX experienced by ordinary users when using existing general sites. The technical difficulties were turned over to the back-end as much as possible, and the client interface was designed intuitively.

In the same context, additional features such as OCR and STT (voice recognition) are designed. we want to gather many users by providing the best UX from the perspective of consumers as much as much as possible. Through this, "Omnia" wants to be a precedent for solving the challenges of scalability and driving the revitalization of the blockchain industry. This is our ultimate goal.


➤ Contributors

HeeYoun Kim YongWook Lee JeongMin Lee Chaewon Jeong
HeeYoun Kim YongWook Lee JeongMin Lee Chaewon Jeong
🐹 🐻‍❄️ 🐵 🐶
Back-end Developer Front-end Developer Smart Contract Developer Product Manager
+ 21 more
Share this project: