Inspiration
Following Neo since the Antshares days it is great to see all pieces coming together with Neo N3. For the first time Neo becomes the all in one platform for truly decentralized applications.
The idea of implementing new features of N3 into one application that serves only the community has grown over the last months and eventually lead to Neo-Knights.
What it does
Neo reddit community members can become Neo-Knights, securing their place besides the most active and valuable community members.
The project shall honor their effort and passion, putting a basic funding system into place.
Neo-Knights is a smart contract running on N3. It has different features:
- Accept only GAS payments (<10 for donation, >=10 for mint new NFT or update existing NFT)
- Register Neo-Knights as NFTs (NFT is holding the Knight's data)
- Keep track of Neo-Knights and their strength
- Enable verifying for Neo-Knights
- Fund management options for verified knights
Any GAS balance in the Neo-Knights smart contract is dedicated for registered knights. There are three options for a verified knight to manage the GAS balance:
- Burn it to benefit the N3 network
- Distribute it equally to all registered knights (distributed GAS is protected from burn)
- Withdraw their distributed GAS to any N3 address
To mint a new Neo-Knight, simply send 10 GAS to the contract address. The contract will invoke a new oracle request to*: https://www.reddit.com/r/NEO/top/. The author with the most upvotes will be registered as new Neo-Knight. If the Neo-Knight is already registered, he will gain +1 strength instead.
Deployed on N3 Testnet: 0x0af362def0832d8616ce84d3b9960785fd780a10
*1 The oracle request is relayed through an own api, since direct calls to reddit are not functioning currently.
How we built it
From beginning the tech stack was set:
- c# for contract development
- Javascript (Angular or React) for frontend on github pages
The contract development was beeing done with Visual Studio Code and Neo Blockchain Toolkit. The frontend was developed in VSC too. Neon-js enables all blockchain interaction.
Challenges we ran into
The documentation is good but not complete. Many questions and issues had to be analyzed and solved by looking through the code of Neo.
Accomplishments that we're proud of
A simple yet fully functional application.
What we learned
Basically everything around N3's new tech and how to develop a functional dApp.
What's next for Neo Knights
Neo Knights should work in a decentralized manner, nevertheless its value is yet to be proven. If there is community engagement, launching on N3 MainNet should improve the protocol based on community suggestions.
Some ideas are:
- Deploy different security roles, based on strenght
- Enable a multiSig for Updates and parameter changes, based on verified Knight's public keys
- Support more actions beside distribute and burn
- Handle burning of Neo-Knights, releasing their distributed GAS
- Fine tuning of governance
- Build a Twitter version
There are more considerations to make regarding trust and decentralisation. The concept of Neo-Knights relies strongly on the credibility of reddit. We assume that the information provided by reddit is not manipulated in a way to exploit the smart contract. Currently a knight can get verified by having a gilded post with the correct signature. Giving reddit gold is not expensive. Generating enough upvotes to get the top post of the week is possible as well. These are weaknesses of the protocol that needs to be mitigated. Raising the hurdle to get verified (e.g. you need at least strength of 2 or the need of a gilded top post of the week) is one option to strengthen the protocol.
Currently Neo-Knights is filtering the oracle response to one specific field. Widening the filter (to get more data in the response) and parsing more information on-chain can bring much more possibilities to greatly enhance the protocol.
Neo-Knights is looking forward to get feedback from the jury and the community.
Built With
- .net5.0
- angular.js
- c#
- gh-pages
- n3
- neo-blockchain-toolkit
- neo-express
- neon-js
- typescript
- visual-studio
- visual-studio-code
Log in or sign up for Devpost to join the conversation.