Inspiration

For the last 4 years after several Dapps created on existing data providing solutions on different blockchains, I am working on a data provider on decentralized systems that can be trustless and scalable throughout the different blockchains, as well as the types of services it can provide. With this step, I am looking forward to growing my vision even further by providing trustless data not only through deploying smart contracts on each blockchain but creating a decentralized hub for it.

What it does

This VRF Module developed and tested with starport creates and stores Verifiable Random Values with user input as the maximum number and 0 being the minimum. It provides values in multiple different formats uint64, float64, and hex. The uint64 and float64 values are the converted versions of hex (which is the raw result converted in hex format). It also provides the original message (that is used to pass as a seed), a public key, and proof.

The module can verify the random values on top of the blockchain as well. To verify values one must perform the query on top of the blockchain. This approach to verify random values is non-interactive. One can also verify the values from the outside (off-chain) by utilizing the VRF module repository as mentioned in the video.

This Module has also Implemented an IBC interface to allow other chains to request verifiable random values from it. These values are delivered through the relayer as an acknowledgement to the source chain (that makes the request in this case) with a unique index that can also trace the full stored values on the target chain (that creates and store random values plus required data).

The module is very useful to create unpredictable random values which are transparent with their creation and can be verified later.

How we built it

First, manage the VRF implementation in go. Then creating a module. Then scaffold message creation using VRF module and manage stores. After this, declare and execute the IBC interface in the module. Now scaffold the packets and manage the IBC standard operations to create and deliver random values.

The current module is scaffolded with starport and currently using "coniks-sys" VRF implementation in go.

Challenges we ran into

VRF implementation in go was one of the tricky challenges.

Diving into the ecosystem that I was unfamiliar with before and this hackathon encourages me to not only learn more about it but also create something unique & usable on top of it as well.

Implementing IBC interface with methods to handle source-> target-> source blockchains flow in the name of request/response architecture with processing inputs and then providing outputs.

Managing a store with different maps and lists as required by IBC as well as fulfilling the local chain operations requirements.

I took these and more challenges and stronger my vision (as mentioned above) to complete this by delivering it successfully which I believe I did.

Accomplishments that we're proud of

A useful and working product created with enough material shared around it so anyone can start with it.

What we learned

I gained a new experience. Learning about Inter Blockchain Communication ecosystem, Diving into cosmos and starport, Modules implementation, and a lot more.

What's next for Blockin Random

With this first step, I am looking forward to becoming a Verifiable data provider on the Cosmos ecosystem as well.

Built With

Share this project:

Updates