Developers Forum for XinFin XDC Network

Cover image for D-center tube
Sagar Subahan
Sagar Subahan

Posted on

D-center tube

Inspiration

Just like Metaverse, we create a completely decentralized blockchain video streaming platform to enhance the education system and change the boring Textbook studies into VR studies among the students and researchers with the help of our VR educational video streaming platform that runs on the blockchain

What it does

This platform is a combination of both (AR/VR) technology and the Data has been maintained in the blockchain securely Students can experience a virtual form of real-world and actively participate in the lesson with virtual reality, they can explore World tours, industrial tours, underwater marine tours even a spacecraft tour virtually with the help of D-center tube.

How we built it

D-center tube our D-center tube interface is built with the help of React.js as the front-end and solidity for the back-end (solidity-constructing and designing smart contracts on Blockchain platforms). blockchain secures the data of the students and educational videos. after completion of software development, it needs hardware (VR box)to perform the task
VR box our VR box is made by 3d printed surface on the outside and Raspberry pi 4 hardware and 2 pcs of convex Lens (50 mm Diameter) (Focal Length 10 cm) on the inside, raspberry pi was used to detect the motion and interaction of the person who wears the VR box
and student or college organizations have to create a crypto wallet and connect the wallet to the
D-center tube smart contract in our blockchain verifies the digital signature and enables you to access the D-center tube.

Challenges we ran into

It is challenging to connect all the Virtual reality, Augmented reality, and IoT with a Decentralized blockchain environment so it took some time to develop this software, and trying to cover all the complex topics has to be filmed in 360- degree

Accomplishments that we're proud of

we're proud of introducing the world's first blockchain-based educational video streaming platform

What we learned

learned about how the blockchain work on decentralized media like(Metaverse, Decenterland, SandBox, apelike, and Metamask) and how we can implement the blockchain and (AR/VR) together for creating the decentralized video streaming platform.

What's next for the D-center tube

to enhance the user experience and connect all the modules to form the D-center tube and publish it in schools, colleges, libraries and Research centers

back-end for D-center tube

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract DcenterTube{
struct tutor{
string subjectName;
string tutorName;
address payable seller;
uint price;
address buyer;
bool recieved;
uint productid;
uint passcode;
}
tutor[] public data;
address payable manager;
constructor(){
manager=payable(msg.sender);
}
bool destroyed = false;
modifier destroycontract(){
require(!destroyed,"this contract does not exist");
_;
}
uint count=1;
event register(string ProductName,uint ProductId,address selleraddress);
event buyer(address SellerAddress,uint ProductId);
event delivered(uint ProductId,bool status);
function Register(string memory _productname,string memory _sellername, uint _price,uint _passcode) public destroycontract{
require(_price>0,"product price must be greater than zero");
tutor memory p1;
p1.subjectName=_productname;
p1.tutorName=_sellername;
p1.seller=payable(msg.sender);
p1.price=_price*10**18;
p1.productid=count;
p1.passcode=_passcode;
count++;
data.push(p1);
emit register(p1.subjectName,p1.productid,msg.sender);
}
function buy(uint _productid) payable public destroycontract{
require(data[_productid-1].price==msg.value,"pay the exact amaount");
require(data[_productid-1].seller!=msg.sender,"seller cannot bet the buyer ");
data[_productid-1].buyer==msg.sender;
emit buyer(msg.sender,_productid);
}
function delivery(uint _productid) public destroycontract{
require(data[_productid-1].buyer==msg.sender,"only buyer can confirm");
data[_productid-1].recieved=true;
data[_productid-1].seller.transfer(data[_productid-1].price);
emit delivered(_productid, data[_productid-1].recieved);
}
function Destroycontract() payable public destroycontract{
require(manager==msg.sender);
selfdestruct(manager);
manager.transfer(address(this).balance);
destroyed=true;
}
}

Discussion (0)