Please describe your proposed solution.
<u>The Problem:</u>
Cardano's clever design leverages on storing around a 5% of data on-chain and keeping the rest of the 95% of the dapp code handling and storage off-chain to improve scaling and performance. It's that so that half of the Cardano community opts to name the "executable" part of this on-chain data as validators instead of smart contracts because it's mostly validation code, not the entire business logic inlined on the chain.
This while is great because give us the freedom to chose what to store on-chain or not, it's currently making developers store crucial data / dapp code on centralized hosting solutions (frontend and backend deployments, databases, configuration files, smart contract code, etc..), and 99% of all our current dapps and DAOs are not prepared for
- disaster recovery
- censorship resistance
- dapp hosting redundancy
- decentralized dapp hosting
- perpetual, updatable and versioned data/code hosting
- collaborative on-chain code/data repositories, with monetization included
- better and standarized on-chain data management
- on-chain byte footprint
- full transparency vs off-chain opaque code
- cryptographically signed oracle/dapp/DAO's data and code
- clearer and predictable DAO and treasury monetary operations
- and many more
Nevertheless Cardano general purpose features allows builders to store on-chain not only monetary transactional data but also arbitrary data in 2 different ways by protocol specification. All NFT's, dapp, oracle, messages, use this storage space every day, mostly without caring about data compression, de-duplication and indexing. Protocol "defends" itself with fees for each byte of allocated data but nevertheless we are not caring enough to optimize this on our current chain operations and infrastructure providers are already suffering the consecuencies. In the future, not everyone will be able to deploy a Cardano full node due to full data size.
While it's wise to make good use of these native data storage features, almost nobody is caring for optimizing, indexing, and avoiding data duplication on Cardano Layer 1…
We did.
We cared about all these issues and we have already solved almost all of them with <u>GCFS</u>, our functioning on-chain file/data storage system protocol.
Some issues left solving are just because we need tiny improvements and tooling around it, and we are a small team that needs your help to make these last efforts. We delivered first as this is already fully functioning and powering GameChanger Wallet Beta, but now we are asking funds to continue the work.
These GameChanger Wallet Beta (v2) working features are a living proof of the success of GCFS:
- Full on-chain dapp code and data storage
- Executable on-chain scripts, not only Plutus Validators
- Workspaces
- Multisig
- GCFS read. write and search features for developers and users on Dapp Connector API and UI
And specially an entire voting dapp coded in less than 12 hours exclusively for Catalyst, to proof and show all the stack working together,
- React + GCScripts (our JSON based DSL) + GCWallet + GCFS,
- without any specialized nor centralized backend to aggregate the data,
- a trully Web3 on-chain voting system.
- time window for voting expirity enforced by protocol,
- CIP-8 signature
- User updatable aliases and profiles
- and the dapp never receives personal information from the wallet to work, the voter remains anonymous
- works in desktop and mobile without any difference
- Try it out on preproduction testnet (less than 10 tADA, airdrop included if empty wallet and you wait a minute):
<u>https://gcvoting.netlify.app/catalyst/fund10/102594</u>
If you are in a hurry, here you have two simple voting actions with a pre-defined user alias setup, two simple links or buttons to quickly cast your votes for this proposal. Because also both or them are dapp connections, you haven't realize until now that this document it's also a dapp :) .
(* Links/dapp may get deprecated in time as it's on wallet Beta version and may get improvements)
<u>Frequently Asked Questions:</u>
- "OMG you want to store entire files on chain on a non file storage intended blockchain?"
Yes and no. GCFS was designed based on a file system approach instead of any other database design because dealing with files is a concept almost every user and developer understands. This being said, it's very versatile and you can use GCFS for example as a key-value database already. Every small piece of data, being an actual file or not, can be represented as a "file", a content with a file name to look it up.
Also this means that you can store entire image, audio, video, and other files there but protocol and Cardano design is not prepared for huge files so while it's posible, it's very impractical and expensive. So yes, file uploading (watch video), IPFS pinning and file hosting is already posible but network fees must be payed and transaction submission and confirmation time must be awaited for.
GCFS is already indexed, deals with storage footprint reduction, and creates statefull updatable and versioned NFTs (DiskNFTs) to handle this file system directory structures so yes, we want to store files on-chain to standarize and improve the way Cardano is currently using the chain for dealing with NFTs, oracles, and many other use cases.
- <u>"How to use if it's provided on GameChanger Dapp Connector which is not CIP30?"</u>
It's not because we speak "lenguajes diferentes" that we cannot connect together. GameChanger Wallet has a different Dapp Connector because it offers a
- unique,
- platform/device independent,
- privacy preserving,
- wallet agnostic
- open, auditable,clonable, reusable JSON DSL scripting language,
- easy to integrate everywhere
technology that was first conceived back in 2021 from scratch specially for Cardano without being inspired in any other blockchain. It's URL and JSON based, we have from PDFs to even hardware dapps already talking to the wallet. With GC you can turn everything into a dapp, from websites to social media, chats, emails, QR codes, hardware, PDFs, games, almost everything.
If this is not enough for you, and you want to stick to CIP30 and current technologies, several interoperability features are being worked on right now by the team, starting with having half of Ledger wallet integration complete (Catalyst funded project) and including plans related to CIP30 before 2024.
<u>Detailed Solution:</u>
In order to fully complete this solution, these deliverables will be worked on, to a certain degree in parallel to benefit from continuous protocol and end product relationship feedback.
Deliverable 1: Improve protocol and it current wallet implementations
- Improve or review protocol design, take time to do some further research.
- Improve and review the current working GameChanger Wallet API implementation of GCFS
- Improve or review current used backend API connections.
- Add an optional and default native compression algorithm to reduce the final on-chain byte footprint and reduce operation costs.
- If possible/reasonable, leverage all wallet GCFS read and lookup operations on a deployed GCFS service to benefit from cache and more performant query features.
- Update GC APIv2 dapp connector and documentation to use and reflect this improvements
- Update GC features depending on GCFS to use and reflect these improvements, such as GCScript storage compression ( and dapp connector URL compression to match it ), file system creator/deployer UI, Multisig Over GCFS Protocol and Workspace storage API and UI. These wallet features have been the first use cases of GCFS and provide immediate usage feedback and testing ground for it.
Deliverable 2: GCFS HTTP Server
- Research and design stage. Cache structure and features. External library and API dependencies.
- Create an HTTP service able to index or cache the files and file system metadata structures being requested to minimize future content delivery and lookup queries response times
- Maintain file system metadata in cache in such a way versioning can be used to run lookups, something currently impossible on wallet implementation
- Allow GCFS URI based content delivery on the web with directory paths and versioning
Deliverable 3: GCFS API Server
- Research and design stage. Endpoints. Paths. Cache structure and features. External library and API dependencies.
- Index the files and file system metadata structures being requested to minimize future content delivery and lookup queries response times
- Index file system metadata in such a way versioning can be used to run queries, something currently impossible on wallet implementation
- Add endpoints to run basic queries like file content, file name and keyword lookups across all existing DiskNFTs file systems on Cardano.
Deliverable 4: GCFS HTTP Service on Dandelion
- Service proudly provided for the community by Dandelion Decentralized APIs, a first stage supported by a portion of the budget to cover infrastructure and management costs.
- Adapt and connect wallet features to use it
Deliverable 5: GCFS API Service on Dandelion
- Service proudly provided for the community by Dandelion Decentralized APIs, a first stage supported by a portion of the budget to cover infrastructure and management costs.
- Adapt and connect wallet features to use it
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
-
Creation and improvement of tools and software that help make it easier for projects to develop on Cardano.
-
GameChanger Wallet by design makes developers life easier since 2021.
-
No more complex, low level transaction building on dapp side.
-
No more semi-senior or senior developers needed to create dapps.
-
No more huge complex library/SDK dependencies for builders
-
No more several different tooling dependencies, you can start coding right away from our in-wallet Playground IDE, the built-in Code Editor that already:
-
validates syntax
-
builds executable URLs (dapp connection)
-
builds executable QR Codes (dapp connection)
-
generates a minimal HTML5/JS Dapp for fast deploying and integrating Cardano on the web (dapp connection)
-
Has built-in code runner and live debugger (dapp connection)
-
Has integrated documentation explorer
-
Has integrated DSL JSON Schema explorer
-
Has a GCFS Filesystem deployer and updater
-
upload several files using UI
-
update an existing DiskNFT
-
one click code and generated HTML dapp deployment
-
Well known building blocks like JSON for script coding turns everyone into a Cardano dapp builder, even to accomplish very advanced use cases, our DSL is a very powerfull Cardano library by itself.
-
No more device limitations: GCWallet allows you to turn everything containing links into a dapp, like an email, chat, social network, QR code, web pages and even hardware devices. You can connect you wallet from desktop, mobile, and any other device containing a browser like Cardano Totem public terminals.
-
No more coercion to users to share personal data to dapps due to lack of alternative dapp connection technologies, our dapp connector is wallet-agnostic by design since 2021.
-
GCFS endless use cases:
-
Perpetual, Sensorship Resistant Dapp-Wallet Interfaces (Currently on GC Wallet Beta)
-
Colaborative code hosting and versioning powered by Cardano cryptography (Currently on GC Wallet Beta). Allows sustainable (open source or private) code modules as charging fees on GCScript is as easy as adding a couple lines of code.
-
Multisignature (Currently on GC Wallet Beta)
-
Workspaces (Currently on GC Wallet Beta)
-
Voting (Working demo available)
-
Perpetual, Sensorship Resistant, Web Hosted Dapps
-
Statefull NFTs use cases: games, social networks, project management, etc…
-
IPFS pinning on Cardano. We are not a file storage blockchain but we still need to store data everyday for the ecosystem, we can put order to chaos and also standarize this data by making it compatible with IPFS by implementing pinning services.
-
much more…
-
Research, analysis and creation of standards, resources or documentation that bring either novel innovation to the ecosystem or help with improving the education around what is available in the ecosystem for development or running infrastructure.
-
GCFS On-Chain File Storage Protocol standard and documentation
-
Code examples
-
Dandelion GCFS APIs available for the community
-
Live coding sessions, demos and tutorials.
How do you intend to measure the success of your project?
Blockchains are public ledgers, even when we store encrypted data there, we can still at least obtain usage metrics. Mainet metrics of course are the main goal but by also checking on testnet metrics we can take a clear picture of intent: How many developers and students are trying to integrate GCFS.
Usage metrics can also be obtained by analyzing our social media accounts, twitter, youtube, discord server.
Ledger metrics:
- Number of GCFS DiskNFTs minted
- Number of GCFS files created
- Number of transactions on GCFS write events - exponential network fee growth
Social metrics:
- Number of GCFS dapps and use cases, (not only dapps can implement GCFS, users, SPOs, DAOs, etc…)
- Number of developers/students curious or already integrating GCFS. (We have receive lot of questions regarding GCFS already, this makes us confident about launching this project)
- Number of users asking, interacting and learning about DiskNFTs and GCFS.
- Increase of productivity: check stories and videos on this proposal to confirm how much development time and efforts got reduced already to accomplish the shown use cases, such as an entire whitelisted, time limited, 1 wallet 1 vote, voting system in a couple of hours even fetching and filtering voting results, all through the wallet's built-in code editor. Further metrics will be also obtained by stories on community social media.
Please describe your plans to share the outputs and results of your project?
As done before on previous Catalyst funded projects, GameChanger Wallet team always delivers monthly reports non-stop, explaining the achieved milestones one by one plus adding screen captures, videos, demos, or if posible the entire code of the project if applies.
In this case we will share:
- screen captures of working demos, new documentation, file artifacts, or code advancements
- videos of working demos and other relevant knowledge
- Executable Dapp Connector links, allowing to test new features on wallet DSL/API
- Links to Dandelion API endpoints
- In-wallet code examples like we always provide to test right away on Playground IDE, our built-in code editor.
In this case we may also share:
- Links to Dapp Connector/DSL JSON schema (public already)
- Links to Dapp Connector/DSL Documentation (public already)
- Social/Community related feedback, news, events, articles, etc.