Pustakam Library

Free Programming learning guide

Build A Decentralized Prediction Market Smart Contract With Solidity And Chainlink Oracles

Build A Decentralized Prediction Market Smart Contract With Solidity And Chainlink Oracles — a free advanced-level guide covering build a decentralized...

79 min read7 chaptersadvanced

What you will learn

  1. Bhai Ka ToolKit: Solidity Aur Hardhat Ka Bhandar
  2. Scene Palo: Market Ka Blueprint Taiyaar Kar
  3. Paise Lagao Boss: Betting Aur Share Minting Ka Khel
  4. Chainlink Ka Jadu: Bahar Ka Data Andar Kheench
  5. Khel Khatam Paisa Bat: Market Resolve Aur Claim
  6. Bina Guard Ke Mat Jayio: Security Aur Reentrancy
  7. Pakka Wala Test: Mainnet Jaane Se Pehle Dimag Lagao

1. Bhai Ka ToolKit: Solidity Aur Hardhat Ka Bhandar

Abe sun, raat ke 3 baj rahe hain. Tu screen ke aage baith kar "Web3 revolution" ka sapna dekh raha hai. Bhai tera ekdum se startup pe baith kar aag lagani hai, lekin pata hai tera kya haal hai? Tu aise react kar raha hai jaise local train mein bina ticket ghuse hai aur TC aage khada hai—bilkul ghabraya hua. Saale, pehle diya toh aag laga, baad mein chay banega. Tu seedha "Decentralized Prediction Market" banane ki bhashan deta hai. BC, market banane se pehle tere haath mein toh loha hona chahiye na? Sharma ji ka beta bhi pehle 'A,B,C' seekhta hai, tab jaakar IIT crack karta hai. Tu direct IIT mein baithne ki taiyaari kar raha hai bina padhe. Aaj hum naya karenge, lekin foundation pakka karenge. Is chapter mein hum apna Bhai Ka ToolKit taiyaar karenge—Solidity, Hardhat, aur ek basic token jiska use hum aage bet (paise) lagane ke kaam mein karenge. Agar ye chapter skip kiya toh tera poora project aise ud jayega jaise monsoon mein Mumbai ka pocha. Samjha? Nahi? Padh dubara BC. Chal, aag lagate hain. Asli Funda (Core Concepts) 1. Hardhat: Teri Workshop Dekh bhai, smart contract likhna ekdum aasan hai. Lekin usko compile karna, test karna, aur blockchain pe daalna—ye sab aise hai jaise tere ghar ka naali block ho gaya ho aur tu usko khud khol ke saaf kar raha ho. Bilkull ganda aur painful. Yahan aata hai Hardhat. Hardhat teri workshop hai. Ye tera code compile karega, local blockchain ka node chalayega taaki tu bina paise diye apna contract test kar sake, aur testing ka environment dega. 💡 Pro Tip: Bina Hardhat (ya Foundry) ke direct mainnet pe contract deploy karna aise hai jaise bandh aankhon se Mahim creek cross kar raha ho. Ek kadam galat, aur paise doob. Hamesha local node pe pehle thok ke check kar. Setup Kar Bhai: Terminal khol aur ye commands daal. Pehle Node.js tera system mein hona chahiye, warna mat padhna iske aage. Ab seedha bootstrap karne ke liye ye maaro: Isme poochega kya banana hai. Tu "Create a JavaScript project" select kar. Saale mat chalak banana ke TypeScript choose karke, warna type errors mein tera dimaag ghasal dega. JavaScript simple hai, tapori ke kaam ka hai. Enter, enter maarte ja, sab default rakho. Ek baar setup ho gaya, toh tera folder aise dikhega: - contracts/ (Yahan aasli Solidity code rahega) - scripts/ (Ye script contract deploy karegi) - test/ (Yahan tu apna contract thokega/pitwayega) 2. Solidity: Tapori ki Bhasha Solidity smart contract likhne ki language hai. Ye thodi C++ aur JavaScript jaisi dikhti hai, par iska dimaag alag hai. Isme ekdum se paise (wei/ether) handle hote hain. Dekh, prediction market ka asli khel kya …

2. Scene Palo: Market Ka Blueprint Taiyaar Kar

Abe sun, kal raat 3 baje ek banda code likh raha tha. Coffee ki 4 piping pi chuki hai. Dimag ka fuse ud raha hai. Usne socha "Chal bhai, prediction market bana leta hoon, aaj hi complete karunga." Usne sidha Bhai Ka ToolKit kholi, Hardhat ka server chalaya, aur direct mapping likhna shuru kar diya. Saale ne ek variable ka data type galat rakh diya. 200 line ka code likha, debug karne mein 5 ghante lag gaye. Pata chala uint8 use kiya tha time ke liye, aur time 255 seconds ke baad wapas zero ho gaya. BC! Sherlocked tha saala apne hi code mein. Ye hota hai jab tu bina blueprint ke ghar banane pe lag jaata hai. Pehle chapter mein tera Bhai Ka ToolKit set ho gaya, Hardhat chal raha hai, Foundry bhi ready hai test marne ke liye. Ab naya scene palne ka time hai. Aaj hum market ka naksha banayenge. Agar ye blueprint galti ban gaya, toh baad mein jo betting aur share minting ka khel khelna hai, wo sab kachra ho jaayega. Photocopy mat kar, dimaag lagaa. Samjha? Nahi? Padh dubara BC. Asli Funda (Core Concepts) Dekh bhai, ye aise samajh. Tu marriage hall book kar raha hai shaadi ke liye. Tujhe kya chahiye? 1. Hall ka address (Market ID). 2. Shaadi kab hai (Deadline). 3. Ladka hai ya ladki (Outcomes: YES/NO). 4. Kitne log aayenge aur kitne paise laayenge (Liquidity Pool aur Balances). Agar tu ye chaar cheezein pehle se solid nahi karega, toh baarati aayenge aur pata chalega ki hall toh kisi aur ne book kar liya. Market ka data structure waise hi kaam karta hai. Ye teri jaan hai. Isko chhote se chhota galti mat dena. 1. Market Struct: Samaan Ka Thela Prediction market ka core ek struct hai. Ye wo dabba hai jisme tere market ki saari jaankari rakhi jaayegi. Hum isko ekdum loha banayenge. Saale, time hamesha uint256 mein store karna. Kabhi uint8 mat use karna time ke liye, warna market 4 minute mein expire ho jaayega. Unix timestamp use kar, Solidity ka block.timestamp ekdum mast kaam karta hai. 💡 Pro Tip: question ko string mein rakhna theek hai, lekin gas bachane ke liye agar fixed format ho sakta hai toh bytes32 use kar. String storage mein mehenga padta hai bhai, har character ka hisaab hota hai. Ab is struct ka ekdum perfect example dekh. Ye Market struct ekdum clean hai. marketId se pata chalega kaunsa market hai. question se pata chalega kis baat pe bet lag rahi hai. deadline se pata chalega kab tak bet lag sakti hai. isResolved batayega ki kya market ka result aa gaya hai. winningOutcome mein 0 ya 1 aayega (0 = NO, 1 = YES). …

3. Paise Lagao Boss: Betting Aur Share Minting Ka Khel

Abe sun, raat ke 3 baj rahe hain. Tu coffee peeta hai, code run karta hai, aur error aate hi rota hai. "Bhai error kyun aa raha hai?" Saale dimag lagaa, gas limit ki jagah tu apni life ka limit khaa raha hai. Pichle chapter mein tera market ka blueprint (Struct aur Mappings:, Constructor:, Create Market:) toh set ho gaya. Ab waqt hai asli khel ka. Ab paise aane hain. Dekh bhai, prediction market ka asli maza tab hai jab log apne paise lagayein. Ek side bol raha hai "Modi jeetega", doosra side bol rahi hai "Nahi BC, Rahul aayega". Tu asli bookie nahi hai, tu ek decentralized harami hai. Tujhe aisa system banana hai ki log paise daalein, aur unke hisaab se shares milen. Agar tere contract mein bug nikla, toh hacker tera pura contract khali karke Baga beach pe cocktail peene chala jayega, aur tu footpath pe ro raha hoga. Isliye, aaj ka chapter "Paise Lagao Boss: Betting Aur Share Minting Ka Khel" — isko dhyaan se padh. Ye teri contract ki jaan hai, warna Integer Overflow/Underflow aur Reentrancy jaise saale aake tera poora system barbaad kar denge. Asli Funda (Core Concepts) Bhai, betting ka system samajh pehle. Tere paas do outcomes hain: Yes (0) aur No (1). Jab koi paise lagata hai, toh use ek "Share" milta hai. Ye share wahi hai jo local train ka ticket hota hai — agar tu destination pohch gaya (matlab outcome sahi nikla), toh ticket ka pura paisa mil jayega. Agar galat raha, toh ticket kachre mein. Ab pricing ka dhanda. IIT wale chte AMM (Automated Market Maker) ka formula lagate hain, par hum simple rkhenge. Kyun? Kyunki over-engineering karna chutiyaapan hai. Hum Fixed-Odds Pricing use karenge. Matlab, ek share ka price fix hai: 0.01 ETH. Simple, clean, aur hacker ko bhi dimag khaana padega. 💡 Pro Tip: Fixed-odds mein 1 share = fixed price (jaise 0.01 ETH). Jab market resolve hoga, jitne shares winning side ke hain, total pool mein se unka hisaab baat jayega. Ye xy=k wale AMM se zyada safe aur predictable hai beginner ke liye. 1. BuyShares Function: Paise Kaise Aayenge? Ye function tera hero hai. Iska kaam simple hai: 1. Dekh user kis outcome pe bet kar raha hai (Yes ya No). 2. Dekh kitne paise de raha hai. 3. Uske hisaab se shares calculate kar (e.g., 0.01 ETH = 1 share). 4. Shares uske account mein daal de. 5. Total pool update kar de. ⚠️ Common Mistake: Bhai, function mein payable keyword bhool jaata hai. Agar payable nahi likhega, toh contract paise khaayega hi nahi. Fir log msg.value bhejenge aur error aayega "revert". Fir tu royyega "BC paise kyun nahi aaye?" Saale, paise lene ke …

4. Chainlink Ka Jadu: Bahar Ka Data Andar Kheench

Abe sun, tera bhai local train mein 6:17 ke Churchgate fast mein travel kar raha hai. Bheed itni tight hai ki saamne wale bande ki wallet ki khushboo aa rahi hai. Suddenly train thodi hilti hai, tu hilta hai, aur tu apne dimaag mein sochta hai: "Aaj India match jeetega kya?" Tu apne phone pe Dream11 ya kisi betting app pe check karta hai. Lekin ruk... ye prediction market jo tu bana raha hai, isko kaise pata chalega ki India jeeta ya nahi? Smart contract toh andha hai, BC. Wo blockchain ke andar band hai. Usne match dekha nahi, TV pe nahi hai, Twitter pe scroll nahi karta. Saale, ye sabse crucial chapter hai. Agar ye skip kiya toh tera pura prediction market ek dumb, andha, bekaar piece of code ban ke reh jaayega jiska koi matlab nahi hai. Tu market bana dega, log paise lagayenge, lekin jab result aana hoga... contract bolega "Bhai main toh andar band hoon, mujhe kya pata India jeeta ya Australia?" Isliye aaj hum bahar ki duniya ka data blockchain ke andar kheenchenge. Chainlink ka jadu hai ye. Tyaar ho ja, chai pi le, aur dhyan se padh. Ye chapter teri prediction market ki aatma hai. --- Asli Funda (Core Concepts) Dekh bhai, ye aise samajh... jaise tu ek room mein band hai. Kamra bahut accha hai, AC hai, Netflix hai, khana hai. Lekin tujhe bahar ka mausam pata nahi. Tu khidki se bahar dekh nahi sakta. Tu kisi ko phone karega aur poochega "Bhai bahar baarish ho rahi hai kya?" Jo banda phone uthake tujhe mausam bataayega, wo tera Oracle hai. Blockchain ek closed room hai. Smart contracts khidki nahi dekh sakte. Wo bahar ki duniya—stock price, cricket match result, election result—kuch nahi dekh sakte. Inhe bahar ka data chahiye hota hai decisions lene ke liye. Yahan aata hai Oracle. Oracle Ka Pehla Funda: Centralized Oracle Mat Bana, BC Pehla sawal: "Bhai, main ek simple API bana dunga, wo internet se data uthayega aur smart contract ko de dega. Itni kya bakwaas hai?" Saale, agar tera contract ek hi API pe depend karta hai, toh wo decentralized nahi raha. Agar tera server hack ho gaya, ya tune galti se galat data bhej diya, ya tu chala gaya Fiji island vacation pe aur band kar diya API, toh lakho rupaye logon ke doob jayenge. Isko Single Point of Failure bolte hain. ⚠️ Common Mistake: Centralized oracle pe bharosa karna. "Apna API bana lunga" wali soch chhod de. Ek hack ho gaya aur tera pura reputation gutter mein. Isliye hum use karte hain Chainlink. Chainlink ek decentralized network hai. Bahut saare nodes bahar se data uthate hain, consensus karte hain, aur phir ek verified data blockchain …

5. Khel Khatam Paisa Bat: Market Resolve Aur Claim

Abe sun, tera startup ka idea fail ho gaya, investor ne paisa nahi diya, aur tu raat 3 baje ro raha tha ki "Bhai kya hi zindagi hai." Saale, ek cheez miss kar gaya tu — execution. Idea koi bhi de sakta hai, execution karna sabse mushkil hai. Prediction market bhi same hai. Tu market bana, log paise lagayein, sab mast chal raha hai — lekin jab result aana hota hai, tab asli game hota hai. Wahan tu fail hua toh poora system gnd mara. Chapter 4 mein tu Chainlink se data kheench na seekha, ab us data se winner decide karna hai aur paise baatna hai. Yeh hai asli settlement ka scene. Aaj ka chapter hai — "Khel Khatam Paisa Bat: Market Resolve Aur Claim". Bhai, agar yeh chapter skip kiya toh tera contract ek dhaal (shield) hai jismein hole itna bada hoga ki hacker tera paisa kha jayega aur tu chup-chap apni mummy ko bhi nahi bata paayega. Ready? Chal biryani order kar, chai mangwa, aur dhyaan se padh. --- Asli Funda (Core Concepts) Dekh bhai, ye settlement ka process do hisson mein bata hua hai. Ek hai Resolve (winner pata karna), aur doosra hai Claim (paise baantna). Jaise IPL ke final ke baad pehle trophy decide hoti hai (Resolve), fir team walon ko prize money milti hai (Claim). Dono alag kaam hai, dono ko mix mat kar warna gadbad ho jayegi. 1. ResolveMarket: Winner Ka Faisla Abey, soch. Market ban gaya (Chapter 2), logon ne shares khareed liye (Chapter 3), Chainlink oracle ne bahar ka data andar kheench liya (Chapter 4). Ab market ko "resolve" karna hai. Iska matlab? Market ki final outcome decide karna. Jaise, "Kya 2024 mein India World Cup jitega?" iska answer "Yes" ya "No" hona chahiye. Ye decision sirf owner lega — kyunki market maker bhai tu hi hai, aur tu hi Chainlink data dekh ke decide karega ki aram se. 💡 Pro Tip: ResolveMarket function mein onlyOwner modifier lagana mat bhulna. Agar tu ye bhool gaya, toh koi bhi random aadmi tere market ko resolve kar dega aur winners ko paise baant dega. BC, tera market nahi, uska market ban jayega. Dekh iska code. Humne Chapter 2 mein Struct aur Mappings se market ka blueprint banaya tha. Wahi use hoga. Samjha? Nahi? Padh dubara BC. resolveMarket function mein humne onlyOwner lagaya. Owner aayega, market ki ID dega, aur winning outcome (0 ya 1) batayega. require(!market.isResolved) check lagaya ki ek hi market do baar resolve na ho jaye. Agar tu ye check nahi dega, toh koi hacker aayega, market ko doosri baar resolve karega, aur paise losers ko baant dega. block.timestamp market.deadline check lagaya ki market ka deadline pass ho chuka ho. Agar …

6. Bina Guard Ke Mat Jayio: Security Aur Reentrancy

Abe sun, raat ke 3 baj rahe hain. Tu khud ko samajh raha hai Contract Killer, hacker bana baittha hai. Screen pe green code chal rahi hai, Zerion pe 50 ETH ka balance dikh raha hai. Sapna dekh raha hai tu mainnet pe deploy karke lambi neend lega. BC, sapne bahut acche hote hain, par reality ekdum kutte ki tarah kaat-ti hai. Tu sapne mein lambi neend lega, par real world mein ek Russian hacker tera pura contract khali karke Bahamas mein pina shuru kar dega, aur tu footpath pe aake sharma ji ke bete se comparison hoga. "Sharma ji ka beta IAS ban gaya, tu smart contract banate waqt bhi smart nahi tha." Saale, pichle 5 chapters mein tune market banaya, paise lagaye, Chainlink se data kheencha, aur resolve bhi kiya. Sab masta hai. Par ek choti si galti ki tujhe abhi tak aadat nahi padi—Security. Tu ek ghar bana raha hai jiska gate solid gold ka hai, par peeche ka darwaza khulla chhod diya hai. Chapter 6 hai. Ye chapter nahi, tera armor hai. Isko skip kiya toh tera career ka barbaad ho jaayega, pakka. Aaj hum hackers ko gaali denge, aur apne contract ko pehle se loha banayenge. Chalo, collar theek kar, chai ki tapri pe baith, aur dimaag lagaa. Asli Funda (Core Concepts) Dekh bhai, smart contract ek baar deploy ho gaya, toh usko badalna almost namumkin hai. Web2 mein agar bug milta hai, toh tu raat ke 3 baje uthke server restart karke patch laga deta hai. Web3 mein agar bug milta hai, toh tu sirf Twitter pe "We got hacked, funds are safu (nahi)" wala post likh sakta hai. Isliye, hum security ko pehle se code mein ghusana padta hai. Jaise arranged marriage se pehle ladke ki background check hoti hai, waise hi deploy se pehle contract ki security check honi choti. 1. Reentrancy: Wo Wapas Aane Wala Saala Pehle chapter se yaad rakh, humne Reentrancy ka naam liya tha. Aaj iska kachha chit karenge. Bhai ye aise samajh, jaise tu Mumbai local train mein Andheri station pe utarne wala hai. Train ruki, tu ek pair bahar rakha, aur achanak se yaad aaya ki "Abe, mera mask pehenna tha!" Tu wapas train mein ghusa. Local ne phir se hoot baja diya, tu wapas bahar aaya? Nahi. Tu wapas andar gaya, kuch uthaya, aur phir se bahar aaya. Jab tak tu fully bahar nahi aata, koi aur tujhe wapas andar kheench sakta hai. Smart contract mein ye kaise hota hai? Maan le tujhe ek function banaya hai jisme user apna balance check karta hai, paise receive karta hai, aur uska balance zero ho jaata hai. Agar tu pehle paise bhej raha hai aur baad mein …

7. Pakka Wala Test: Mainnet Jaane Se Pehle Dimag Lagao

Abe sun, raat ke 3 baj rahe hain. Tu 6 chapter chatakh ke padh liya, contract likh liya, security ke chakkar mein reentrancy guard laga diya. Ab tu soch raha hai, "Bhai main toh hacker ban gaya, ab seedha mainnet pe deploy karte hain aur lambo khareedte hain!" Ruk ja bhai. Teri aukaat aur dimaag dono pe dhyan de. Seedha mainnet pe daalega toh Tera paisa, sharma ji ka paisa, aur investor ka paisa—sab gobar mein mil jayega. Mainnet pe gas fees sone ke rate pe chalti hai. Ek chhota sa bug, ek reentrancy ka chhed, aur tera pura contract khali ho jayega faster than teri ex ne block kiya. Saale, ye itna important hai ki isko skip kiya toh tera career ka barbaad ho jaayega, pakka. Pehle tapri pe chai pi, dimag thanda kar, aur sun. Mainnet jane se pehle testnet pe thok ke test karna zaroori hai. Ye chapter tujhe sikhayega kaise ek gully ka don apne hathode (weapons) pe bharosa karne se pehle unko zameen pe thokta hai. Asli Funda (Core Concepts) 1. Testing: Unit aur Integration Ka Khel Dekh bhai, testing aise samajh, jaise tu shaadi se pehle ladki ko date pe le jata hai. Date pe uska nature dekhta hai (Unit Test). Fer uske ghar walo se milta hai (Integration Test). Agar tu seedha shaadi (Mainnet) pe chala gaya aur pata chala ladki ko panipuri pasand nahi hai, toh zindagi barbaad. Unit Test: Isme tu ek-ek function ko alag-alag thokta hai. createMarket sahi kaam kar raha? buyShares paise khinch raha? Ye sab individual level pe check hota hai. Tumhare pichle chapters mein testCreateMarket, testBuyShares, testDeadlineExpiry, testInvalidOutcome likhe the. Ye sab unit tests the. Integration Test: Isme tu pura system ek sath chalata hai. Market banao, log shares khariden, Chainlink se data aao, market resolve ho, aur paise claim ho. Ye pura cycle ek flow mein chalna chahiye bina kisi "Out of Gas" ya "Revert" ke. Tumne Module 1 mein Foundry aur Hardhat dono ka zikr kiya tha. Foundry aisa tapori hai jo Solidity mein test likhwaata hai. Hardhat Typescript wala sanskari ladka hai. Hum Foundry ka use karenge kyunki wo fast hai aur fuzz testing karwa deta hai. ⚠️ Common Mistake: "Bhai maine code likh liya, error nahi aaya, chalo deploy karte hain." Saale, error na aana matlab code sahi hai ye zaroori nahi. Code tere dimaag jaisa soch raha hai, user jaisa nahi. User tere contract ko chaba ke thuk dega agar edge cases test nahi kiye. 2. Chainlink Mock Contracts: Asli Data Ka Jugaad Dekh, tera contract real world ka data use karta hai (jaise BTC price ya match ka score) using Chainlink. Par testnet pe hum asli data kyu laate? Asli data …

Continue learning