-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Application: Project Aurras MVP - Phase 2 #814
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 4 commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
bd14302
add application for aurras mvp phase 2
MuhammedIrfan cf6cecc
update application
MuhammedIrfan 3149071
include polkadot validator payout usecase
MuhammedIrfan 8df0ab3
update application
MuhammedIrfan f261333
update application
MuhammedIrfan 10a6ba3
Update application
MuhammedIrfan 1ecc5bf
fix typos
MuhammedIrfan c4c4c20
add flow daigram
MuhammedIrfan 504838b
fixed typo
MuhammedIrfan 81d482b
add video tutorial deliverable
MuhammedIrfan d36f0c7
update team profile
MuhammedIrfan d97c8e0
fix typo
MuhammedIrfan c6c5d2b
fix typo
MuhammedIrfan 5ae3c5a
Update applications/project_aurras_mvp_phase_2.md
MuhammedIrfan 2ecd34d
Update applications/project_aurras_mvp_phase_2.md
MuhammedIrfan 14e31f0
Update applications/project_aurras_mvp_phase_2.md
MuhammedIrfan f805930
Update applications/project_aurras_mvp_phase_2.md
MuhammedIrfan 69c3762
Update applications/project_aurras_mvp_phase_2.md
MuhammedIrfan 0310dc7
Update applications/project_aurras_mvp_phase_2.md
MuhammedIrfan 7673b2f
update application
MuhammedIrfan File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,225 @@ | ||
| # W3F Grant Proposal | ||
|
|
||
| - **Project Name:** Project Aurras - MVP - Phase 2 | ||
| - **Team Name:** HugoByte AI Labs Private Limited | ||
| - **Payment Address:** 18axrB6cfmaUs7thCKzPQmRekYiAvQi5QX (BTC) | ||
| - **[Level](https://github.com/w3f/Grants-Program/tree/master#level_slider-levels):** 2 | ||
|
|
||
| ## Project Overview :page_facing_up: | ||
|
|
||
| This is an application for a follow-up grant: https://github.com/w3f/Grants-Program/pull/163 | ||
|
|
||
| ### Overview | ||
|
|
||
| Aurras is a middleware that acts as an event processor and a low code workflow orchestration platform. Aurras is being pitched as a next-generation system for enabling decentralized push notification. This middleware solution listens to events from blockchain applications and propagates them to a registered pool of MQTT brokers. The broader architecture consist of parachain from which the middleware listens for the events. | ||
|
|
||
| Aurras as a part of Substrate / Kusama / Polkadot / Web 3 Ecosystem | ||
| * A core part of Decentralized Push Notification Architecture | ||
| * Can be used for business-critical and production-grade IoT devices to listen to events from blockchain | ||
| * Can be used with microservices across industry verticals | ||
| * Can be expanded to get integrated with data analytics, knowledge visualization, and machine and deep learning (ML/DL) algorithms | ||
|
|
||
| ### Project Details | ||
|
|
||
| #### Architecture | ||
|  | ||
|
|
||
| #### Technologies | ||
|
|
||
| 1. [Apache OpenWhisk](https://openwhisk.apache.org) is an open source, distributed Serverless platform that executes functions (fx) in response to events at any scale. OpenWhisk manages the infrastructure, servers and scaling using Docker containers. The OpenWhisk platform supports a programming model in which developers write functional logic (called Actions), in any supported programming language, that can be dynamically scheduled and run in response to associated events (via Triggers) from external sources (Feeds) or from HTTP requests | ||
| 2. [Apache Kafka](https://kafka.apache.org) is an open-source distributed event streaming platform. Kafka works well as a replacement for a more traditional message broker. Message brokers are used for a variety of reasons (to decouple processing from data producers, to buffer unprocessed messages, etc.). In comparison to most messaging systems, Kafka has better throughput, built-in partitioning, replication, and fault-tolerance which makes it a good solution for large scale message processing applications. | ||
| 3. [Tackle box](https://robcxyz.github.io/tackle-box/) is a declarative DSL for building modular utilities and code generators. Tool is plugins based and can easily be extended by writing additional hooks or importing external providers creating a web of interoperable CLIs. | ||
|
takahser marked this conversation as resolved.
Outdated
|
||
| 4. Docker | ||
| 5. Rust | ||
| 6. Go | ||
|
|
||
| #### Components | ||
|
|
||
| **1.Event Sources (Substrate Event Feed)** | ||
|
MuhammedIrfan marked this conversation as resolved.
Outdated
|
||
| This is the source for events from the blockchain and the events will be sent to the OpenWhisk system. The MVP event source will be implemented using [polkadot-js/api](https://github.com/polkadot-js/api). For the actual implementation, we will be using a custom version of the substrate archive. Substrate archive will be indexing the blocks and an event actor will be decoding the events and data from the block and posting them to the OpenWhisk system. | ||
|
|
||
| The indexer will use a NoSQL database to store the last indexed block and metadata. Using the substrate indexer as our event source will help us in solving many challenges ranging from fault tolerance to scalability to uniquely identifying multiple events with the same payload within a single block. The indexer will be connected to a substrate-based chain and RocksDB where the chain data is stored. When a new block is produced by the chain, the indexer collects the raw blocks from the RocksDB and sends it to the event actor. The event actor processes the block. The block data is decoded using the parity scale codec and mapped with the data types provided to the runtime. Once the event is decoded, the event actor posts a trigger to the event trigger manager. | ||
|
takahser marked this conversation as resolved.
|
||
|
|
||
| **2.Event Trigger Manager** | ||
|
MuhammedIrfan marked this conversation as resolved.
Outdated
|
||
| Event trigger manager is composed of multiple actions including using a database to store trigger URLs and their respective auths, and Kafka provider, consumer and producer. Once the event manager receives an event from the event feed, this data is produced to a topic. The feed action in the trigger manager lets the user hook into the system. That is, once an event is indexed to a particular topic, it can invoke a particular action. While creating the workflow, users can choose the event trigger as feed and provide necessary parameters from which chain it should be listening to and from which block it should start listening. | ||
|
|
||
| Under the hood, a feed action is invoked with create lifecycle, which accepts the mandatory parameters the lifecycle, auth, trigger name, and other optional parameters of the event source. The feed action invokes the related actions of creating the entry in the database, adding to the Kafka consumer group, etc. The next component in the event trigger manager is a persistent connection to Kafka where it is used to produce and consume the stream of data. Once data is received in Kafka, the event trigger manager invokes the action to check the consumer groups for that particular topic and if found any, the trigger for the users under that particular group is invoked, which in turn invokes the workflow action. | ||
|
|
||
| **3.Workflow Composer** | ||
|
MuhammedIrfan marked this conversation as resolved.
Outdated
|
||
| The workflow composer is at the heart of Aurras and is responsible for composing and deploying the necessary workflows. It consists of an async Rust library to compose multiple triggers, a deployment configuration generator, providers for Tackle Box, several operators, macros and a whisk deployment tool. | ||
|
|
||
| To create a workflow, the only necessary input is the YAML configuration file. The composition, direction of flow, triggers and actions are laid out in the YAML file. This YAML is parsed using Tackle Box, which in turn composes it into a wasm which can be deployed to openwhisk. Once deployed to a namespace, each workflow will have a unique workflow id. | ||
|
|
||
| Workflow configuration comprises the input URL of workflow tasks, the sequence of processing tasks, and argument structure. Arguments must match the task input parameters. | ||
|
|
||
| **4.Web API Gateway and Backend Service** | ||
|
MuhammedIrfan marked this conversation as resolved.
Outdated
|
||
| This is the end-user facing component that enables easy and intuitive usage of Aurras. This final component is has a backend application that provides user registration, workflow registration and workflow management. Users can also easily create, select or manage workflows along with providing the necessary input parameters. | ||
|
|
||
| ### Ecosystem Fit | ||
|
|
||
| * https://github.com/playproject-io/datdot-service | ||
| * https://github.com/open-web3-stack/guardian | ||
|
|
||
| Similar projects | ||
| * https://github.com/PipedreamHQ/pipedream | ||
| * https://github.com/snakemake/snakemake | ||
| * https://github.com/aelassas/Wexflow | ||
|
|
||
| What makes us different is | ||
|
|
||
| As a part of the Web 3 Community and Ecosystem | ||
| * First class support to connect blockchains | ||
| * Deployment and definition of workflows will be done through easy-to-write YAML configuration. | ||
| * Workflow tasks can be written in multiple languages - NodeJS, Go, Java, Scala, PHP, Python, Ruby, Ballerina, .NET and Rust (We prefer and recommend WASM compatible Rust) | ||
| * First class support to MQTT Endpoints. | ||
|
|
||
| ## Team :busts_in_silhouette: | ||
|
|
||
| ### Team members | ||
|
|
||
| * Muhammed Irfan K - CTO & Co-Founder - HugoByte AI Labs | ||
| * Hanumantappa Budihal - CIO, Project Manager & Solutions Architect, DevOps - HugoByte AI Labs | ||
| * Shreyas Kura Subramanya - Development Team Lead - HugoByte AI Labs | ||
|
|
||
| ### Contact | ||
|
|
||
| - **Contact Name:** Muhammed Irfan K | ||
| - **Contact Email:** muhammedirfan@hugobyte.com | ||
| - **Website:** https://hugobyte.com | ||
|
|
||
| ### Legal Structure | ||
|
|
||
| - **Registered Address:** HugoByte AI Labs Private limited, 1st & 2nd Floor, IBIS Hotel, Hosur Road, Bommanahalli, Bengaluru, Karnataka, India, 560068 | ||
| - **Registered Legal Entity:** HugoByte AI Labs Private limited, CIN: U72900KA2020PTC140106 | ||
|
|
||
| ### Team's experience | ||
|
|
||
| **Muhammed Irfan K** | ||
| Muhammed Irfan K is a strategic thinker and implementer of innovative ideas with an emphasis on educating and bringing back privacy to the people. Having co-founded HugoByte AI Labs and serving as its CTO, he envisions a world where AI is open, distributed and democratized by building a decentralized infrastructure and policy framework to regulate it. He has extensive experience in designing and building Highly Scalable Enterprise Architecture, leading high-impact teams, Full-Stack Development, Microservices and Machine Learning. | ||
|
|
||
| **Hanumantappa Budihal** | ||
| Hanumantappa Budihal is the Chief Information Officer and Solutions Architect at HugoByte AI Labs. He has worked for 4 years as an Application Developer and Azure DevOps Engineer. He is adept at designing, describing and managing the solution engineering for specific business problems by finding the best tech solution by analysing all possibilities. He is proficient in defining features, phases, and solution requirements. He is currently invested in decentralising the blockchain space and is working on the enhancement of the Blockchain Transmission Protocol to achieve it. | ||
|
|
||
| His technical skills include ML, AI ,Blockchain, .NET Core Framework, Azure DevOps, SQL Developer, ASP .NET MVC, REST Web API, WPF, Microsoft Azure, Cognitive Services, Algorithms Design for a complex business requirement, and Watson Discovery, with good knowledge of Application Architecture and Design pattern implementation and data analysis skills. He has also worked on cognitive application development using various IBM Bluemix services such as Conversation, Natural language understanding, Watson discovery, and has developed chatbots using Api.ai and Microsoft bot framework. As a testimony to his exemplary technical skills, he is now pursuing his MTech in computer science at IIT Madras. | ||
|
|
||
| **Shreyas Kura Subramanya** | ||
| Shreyas is an experienced software developer with great zeal in implementing solutions in the software domain. He is skilled in Blockchain, smart contracts, ethical hacking, RUST and GOlang. He currently is the Development Team Lead at HugoByte AI Labs and is instrumental in driving the team to great success. He obtained his Bachelor's degree focused in Computer Science from Bapuji Institute of Engineering & Technology, Davanagere. | ||
|
|
||
| ### Team Code Repos | ||
|
|
||
| - https://github.com/hugobyte | ||
| - https://github.com/HugoByte?q=aurras | ||
| - https://github.com/MuhammedIrfan | ||
| - https://github.com/HanumantappaBudihal | ||
| - https://github.com/shreyasbhat0 | ||
|
|
||
| ### Team LinkedIn Profiles (if available) | ||
|
|
||
| - https://www.linkedin.com/in/muhammed-irfan-k | ||
| - https://www.linkedin.com/in/hanumantappa-budihal/ | ||
| - https://www.linkedin.com/in/shreyas-ks/ | ||
|
|
||
| ## Development Status :open_book: | ||
|
|
||
| #### Article | ||
| - https://medium.com/hugobyte/completion-of-aurras-mvp-a-middleware-for-the-web3-ecosystem-ee4f666be6aa | ||
|
|
||
| #### Documentation | ||
| - https://docs.aurras.hugobyte.com/ | ||
|
|
||
| #### Codebase | ||
| - https://github.com/HugoByte/aurras | ||
| - https://github.com/HugoByte/aurras-deployment-docker-compose | ||
| - https://github.com/HugoByte/aurras-event-feed-substrate-js | ||
| - https://github.com/HugoByte/aurras-deployment-kubernetes | ||
|
|
||
|
|
||
| ## Development Roadmap :nut_and_bolt: | ||
|
|
||
| ### Overview | ||
|
|
||
| - **Description** Development of Project Aurras - MVP - Phase 2 | ||
| - **Total Estimated Duration:** 268 Person Days | ||
| - **Full-time equivalent (FTE):** 4 | ||
| - **Total Costs:** 42880 USD | ||
|
|
||
| ### Milestone 1 — Workflow Composer - Part 1 | ||
|
takahser marked this conversation as resolved.
|
||
|
|
||
| - **Estimated Duration:** 30 Working days | ||
| - **FTE:** 4 | ||
| - **Costs:** 19200 USD | ||
|
|
||
| | Number | Deliverable | Specification | | ||
| | ------------- | ------------- | ------------- | | ||
| | 0a. | License | Apache 2.0 | | ||
| | 0b. | Documentation | Documentation includes Inline Code Documentation, Composer Configuration Documentation, Readme file | | ||
| | 0c. | Testing Guide | The code will have unit-test coverage (min. 50%) to ensure functionality and robustness. In the guide we will describe how to run these tests| | ||
| | 1a. | Workflow Composer: Rust Openwhisk Client Library | Minimal Implementation to Openwhisk Rust Client | | ||
| | 1b. | Workflow Composer: Composer | Wrapper Library to integrate plugging operators and Openwhisk Client | | ||
| | 1c. | Workflow Composer: Pipe | Interface to connect other operators and tasks | | ||
| | 1d. | Workflow Composer: structured YAML file | A YAML with a predefined structure to configure the workflow composer. | | ||
| | 1e. | Workflow Composer: Concat Operator | Operator interface to merge two flows. | | ||
| | 1f. | Workflow Composer: Map Operator | Operator to map the inputs to the outputs of each type. | | ||
| | 2 | Predefined boiler plate | Predefined Rust code for flow generation. | | ||
| | 3a. | Flow Provider for Tackle Box |Create the necessary hooks for the workflow | | ||
| | 3b. | Task Provider for Tackle Box | Generate Rust code with structure for the given arguments | | ||
| | 3c. | Workflow Provider for Tackle Box | Interface to connect other operators and tasks | | ||
|
|
||
|
|
||
| ### Milestone 2 Workflow Composer - Part 2 | ||
|
|
||
| - **Estimated Duration:** 17 Working days | ||
| - **FTE:** 4 | ||
| - **Costs:** 10880 USD | ||
|
|
||
| | Number | Deliverable | Specification | | ||
| | ------------- | ------------- | ------------- | | ||
| | 0a. | License | Apache 2.0 | | ||
| | 0b. | Documentation | Documentation includes Inline Code Documentation, Operator Documentation, Flow design, Readme file | | ||
| | 0c. | Testing Guide | The code will have unit-test coverage (min. 50%) to ensure functionality and robustness. In the guide we will describe how to run these tests | | ||
| | 1a. | Workflow Composer: Flow Macro | There are of three types of flow: init, pipe and terminator. The init is used to create the first task in the workflow and the terminator is used to create the last task. The pipe method is used to create other tasks that accept inputs and are dependent on other tasks. | | ||
| | 1b. | Workflow Composer: Derive Macro(s) | Derive macros for tasks in a workflow: invoking OpenWhisk action, invoking OpenWhisk trigger, invoking smart contracts. The tasks are structs, based on a generic format that would include name, inputs and endpoints and macros add functionalities for the tasks | | ||
|
|
||
|
|
||
| ### Milestone 3 Example — Web API/Backend | ||
|
|
||
| - **Estimated Duration:** 20 Working days | ||
| - **FTE:** 4 | ||
| - **Costs:** 12800 USD | ||
|
|
||
| | Number | Deliverable | Specification | | ||
| | ------------- | ------------- | ------------- | | ||
| | 0a. | License | Apache 2.0 | | ||
| | 0b. | Documentation | Documentation includes Inline Code Documentation, Operator Documentation, API doc, Readme file | | ||
| | 0c. | Testing Guide | The code will have unit-test coverage (min. 50%) to ensure functionality and robustness. In the guide we will describe how to run these tests | | ||
| | 0d. | Article | We will write a Medium article that explains the work done as part of the grant. | | ||
| | 1a. | Web API: Workflow Registration | API Exposed as a part of workflow deployment, Workflow will be registered and made available to specific namespace | | ||
| | 1b. | Web API: User Registration | Basic User Registration API to register user to the system | | ||
| | 1c. | Web API: User Workflow Management | User to select workflow and provide argument values, Pause Workflow, Delete Workflow | | ||
| | 2a. | Workflow Yaml Polkadot Payouts | Workflow yaml defining the flow for claims payout | | ||
| | 2b. | Claim actions | Claim the validator rewards to the provided wallet | | ||
|
alxs marked this conversation as resolved.
Outdated
|
||
| | 2c. | Reward actions | Index validator reward details to kafka | | ||
| | 2d. | Polkadot API Derive macro for workflow task | Derive macro for smartcontract call | | ||
|
alxs marked this conversation as resolved.
Outdated
|
||
|
|
||
|
|
||
| ## Future Plans | ||
|
|
||
| Immediate Plans in the timeline Includes | ||
| * Develop full fledge system | ||
| * Implement Custom Version of Substrate Archive | ||
| * Add more operators | ||
| * Add Analytics and Monitoring | ||
| * MQTT Endpoints | ||
| * Decentralized push notification | ||
|
|
||
| Our Roadmap includes | ||
| * Decentralized Pub/Sub Network to replace Apache Kafka in Aurras | ||
| * WASI Runtime for Openwhisk | ||
|
|
||
| ## Additional Information :heavy_plus_sign: | ||
|
|
||
| **How did you hear about the Grants Program?** Web3 Foundation Website. | ||
|
|
||
| Here you can also add any additional information that you think is relevant to this application but isn't part of it already, such as: | ||
|
|
||
| - Previous grant: https://github.com/w3f/Grants-Program/pull/163 | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.