The problem Gamoly solves
So there are lots of video streaming sites which provides streaming features
but Gamoly is built different!
- It uses blockchain for data storage and management so this makes it super
secure since your data is stored in a smart contract.
- For streaming it uses livepeer's decentralized video streaming solution
which makes streaming much more safe and secure.
- For file storage we use Filecoin's decentralized storage network which is
similar to IPFS but stores data in a more encryted way.
- For NFT management we use solidity, truffle and filecoin all mixed together
to create a secure place for buying and selling it.
- We don't store data with ourselves which means even we can't access your
data directly and this is true even for login credentials!! We use
a method similar to Zero-knowledge-proof which makes your privacy more
secure.
- And last but not the least for subscriptions and memberships we use money
streaming (that is you are charged for every second instead of a full month, a bit complicated :)).
Challenges we ran into
While finishing this project we had to use a lot of technologies that we were
working on for the first time.
-
Integrating Arcana with Next Js:
- We created the whole project with Next Js and since it uses pre-rendering we
couldn't use any package, directly, that would use the window object and Arcana was one
of them. So we had to export it dynamically through 'next/dynamic' but that
seemed to be an in-efficient way. So we imported it while loading the login
page and used the same instance everywhere by creating a context of it.
-
Livepeer integration:
- Integrating livepeer was another challenge since we just not had to
create a livepeer connection but use that same connection for
streaming every stream by the user. We did that by creating a service
for user through which multiple users could request for stremaing at
the same time.
-
Storing stremaing details in smart contrat:
- We had to store every streaming detail for each user in smart contract.
And the main problem was to stop the user from creating another
stream while he was already streming. We created a simple switch which
would turn on when user is streaming and will prevent him from
creating another stream.
-
Creating smart contract for the whole process to work:
- Creating such a complex smart contract which could handle everything was
too a challenge. We had to create different structs for users, streams
and NFTs. The main problem arose in deploying them since deploying
each contract separately wouldn't make sense so we integrated all
these contracts into a single one and deployed it.