"Say Network (Oracle 2.0)" for Aeternity - Q3 Final Report

Q3 Final Report of “Say Network (Oracle 2.0)”:

“Say Network” (Oracle 2.0)

“Say Network” is a trustless data delivery service that provides data with proofs on top of Public Networks such as Aeternity Blockchain. “Say Network” utilizes unique Aeternity native oracles & other features to build a new type of Oracle system with a modularized approach.

Please find this post as an extension of my last post here.

Requirements

After the next approvals, Please find these requirements for the “Say Network” Grant to proceed with.

To Utilize Say Network Modules
“Say API” Say.aes is required to include in your smart contract.

For the next
Future for “Say Network” holds big potential with newer modules to introduce.

After
As mentioned in the main grant post’s “Required Work” section, please check here.

Development
“Say Network” is being built with Sophia programming language. “Say Network” processors are being hosted under an isolated environment and continue to do so, to provide good throughput to our users.

Use Cases
“What good technology is without its use?” With this in mind, for each module developed, there is a planned unique & innovative use case in the form of DApps, Tools, etc on top of the Aeternity Ecosystem.

→ Please check out Momp.network if you haven’t already, It represents the use case of the “Plain Query” module in the form of a twisted query type for encrypted emails to deliver, using Aeternity blockchain, also called “SMTP module”.

Summary of the Development with time report

01-JUL-2021 to 22-JUL-2021
→ Hackathon project ending preparation, Extraction begins for the required elements.
→ Planning for the grant and grant proposal to propose
→ Creating a brand new project for the production line with previous elements.
→ New code pushed & updated with the appropriate license on the new repo.

22-JUL-2021 to 30-SEP-2021 (for every week)
[Active] Grant request for Oracle 2.0 (Say.network) - #5 by genievot
[Active] Grant request for Oracle 2.0 (Say.network) - #6 by genievot
[Active] Grant request for Oracle 2.0 (Say.network) - #7 by genievot
[Active] Grant request for Oracle 2.0 (Say.network) - #8 by genievot
[Active] Grant request for Oracle 2.0 (Say.network) - #10 by genievot
[Active] Grant request for Oracle 2.0 (Say.network) - #11 by genievot
[Active] Grant request for Oracle 2.0 (Say.network) - #12 by genievot
[Active] Grant request for Oracle 2.0 (Say.network) - #13 by genievot
[Active] Grant request for Oracle 2.0 (Say.network) - #14 by genievot
[Active] Grant request for Oracle 2.0 (Say.network) - #15 by genievot

These (Above links) are the updates I added every week for the work I did in the duration of Q3 2021 on this grant.

Challenges

Here is a summary of the challenges I got.

Managing modules at smart contract level
“Say Network” is about diversifying the existing approaches and making each of its module independent from the another one. This makes the project easy to scale in multiple forms and also increases the developers productivity.

However, introducing such an approach bring its own challenges. There are different types of management required when a new module is introduced.

  • query type submission.
  • response handling.
  • managing queries and their responses.
  • adding separate functionality for each module suitability (like type conversions, aggregations, etc.).
  • module properties management, etc.

Using native Oracle System with Say Network
Oracles are basic to implement where one catches the request on-chain and responds to the request. However, It is different when it is handled through multiple technology stacks & distributed systems to make the system reliable, efficient & easy to use by DApp developers, furthermore it wants to provide trustlessness on top of a public network with such a working Engine.

Utilizing Aeternity native oracles for storage efficiency and separation in development is beneficial but brings its own challenges with each new module added. The challenges here are like:

  • Redesigning each module from the existing approach to fit with the native oracle system.
  • Native query and response management, etc.

Providing version control
Version control is important in case of a bug is detected in a module or a module requires an update. With that in mind, “Say Network” high-level infrastructure is designed from the bottom up to have such functionality in the first place.

Version control where provide comfort but have its challenges like:

  • Design it to be immutable but updatable!
  • To provide access from a separate contract.
  • Managing each change/update on every stack (front-end, back-end), etc.

Handling backend (microservices)
“Say Network” uses distributed systems to provide isolation to every module. This brings scalability to this stack and reliability to the users.

This comes with its own challenges:

  • Cost increase for each module handler added.
  • Updating / Modifying each module separately.
  • Handling multiple requests.
  • Managing system processes for every system.
  • Tracking multiple updated states from contracts, etc.

Cost Management
Quality services should have at least reasonable costs, Here are some challenges in Cost Management:

  • Hosting services (back-end, front-end).
  • Developer services (cloud & local).
  • Development environments (cloud & local).
  • Other services (media representation, docs, tutorials), etc.

Managing different network types
Handling a single network with multiple modules is challenging but it is even more challenging and fun with handling everything on every network added. The responsibility increases exponentially with every newly introduced network. For e.g. managing all the stacks separately for Testnet as well.

Media management
The technology is represented through websites, blogs, social networks pages, etc. which needs to be updated regularly to address advancements/updates in the technology and this is a challenging task on its own.

Technology management
New technology should provide enough knowledge for it to become easily understandable & adaptable by others. For this, providing documentation, writing technical blog posts, making video tutorials, etc. to teach others about technology, is a very challenging task.

Development tools bugs & more efficiency require
Currently, AE is growing as I speak and developers are handling many other issues/bugs in the current ecosystem to make it better for the future, However being a part of this journey I don’t want to add much info here for the issues I found with the tools I used (specifically with aeproject, aecli-js, aesdk-js) but will try to help developers as much as possible to fix those and help them in the growth of the ecosystem.

I got some challenges regarding the development, Some of those are the issues with the current aeproject framework & ae-sdk which I found the current development team positive to hear about, there are some additional bugs which I found in the current development tools. I will post more information about those under the respective GitHub repositories in the future.

Workaround

related to development tools:
There are mechanics in which I was able to find the correctness of my process by applying opposite methods. For e.g. If there is a value that is represented in a different type (Big Number) then I found it harder to compare it correctly and for which I need to look for finding the value of other party to confirm the working of my process. The process is time-consuming but works fine. Also, the transaction confirmation time for each tx is anywhere from 10s-30s. which means a test file with 50 tests takes around 15 minutes running over a local network which also is time-consuming (So for the local network, lower transaction mining time should be good for future development productivity).

Solution

Solutions regarding challenges are separately handled and can be discussed with me. Please find below my contact details if you like to discuss this further.

Documentation and Video with links

Contact details for the future questions of the community

Name: Jeevanjot Singh
Linkedin: https://www.linkedin.com/in/jeevanjot-singh/
Discord: Genievot#6561
Email: xe33zTgc9RxMvAymjOlJi2JU3gUf6ydFh2D0ANZMtD8= (Decrypt it using this page)

7 Likes

You are amazing!

3 Likes

Thanks a LOT…