ERC-721 मार्केट कसे लागू करावे
या लेखामध्ये, मी तुम्हाला इथेरियम ब्लॉकचेनसाठी Craigslist कसे कोड करायचे हे दाखवणार आहे.
Gumtree, Ebay आणि Craigslist च्या आधी, क्लासिफाइड्स बोर्ड (जाहिरात फलक) बहुतांश कॉर्क किंवा कागदाचे बनलेले असत. शाळेच्या कॉरिडॉरमध्ये, वर्तमानपत्रांमध्ये, रस्त्यावरील दिव्यांवर, दुकानांच्या दर्शनी भागात क्लासिफाइड्स बोर्ड असायचे.
इंटरनेटमुळे हे सर्व बदलले. एखादा विशिष्ट क्लासिफाइड्स बोर्ड पाहू शकणाऱ्या लोकांची संख्या अनेक पटींनी वाढली. यासोबतच, ते ज्या मार्केटचे प्रतिनिधित्व करतात ते अधिक कार्यक्षम झाले आणि जागतिक स्तरावर विस्तारले. Ebay हा एक प्रचंड मोठा व्यवसाय आहे ज्याचा उगम या भौतिक क्लासिफाइड्स बोर्ड्समध्ये आहे.
ब्लॉकचेनमुळे हे मार्केट्स पुन्हा एकदा बदलणार आहेत, ते कसे ते मी तुम्हाला दाखवतो.
मुद्रीकरण
सार्वजनिक ब्लॉकचेन क्लासिफाइड्स बोर्डचे बिझनेस मॉडेल Ebay आणि तत्सम कंपन्यांपेक्षा वेगळे असणे आवश्यक आहे.
प्रथम, यात विकेंद्रीकरणाचा दृष्टिकोन आहे. विद्यमान प्लॅटफॉर्म्सना त्यांचे स्वतःचे सर्व्हर्स मेंटेन करावे लागतात. विकेंद्रित प्लॅटफॉर्म त्याच्या वापरकर्त्यांद्वारे मेंटेन केला जातो, त्यामुळे प्लॅटफॉर्म मालकासाठी मूळ प्लॅटफॉर्म चालवण्याचा खर्च शून्यावर येतो.
त्यानंतर फ्रंट एंड, वेबसाइट किंवा इंटरफेस येतो जो प्लॅटफॉर्मवर प्रवेश देतो. येथे अनेक पर्याय आहेत. प्लॅटफॉर्म मालक प्रवेश मर्यादित करू शकतात आणि प्रत्येकाला त्यांचा इंटरफेस वापरण्यास भाग पाडून फी आकारू शकतात. प्लॅटफॉर्म मालक प्रवेश खुला करण्याचा (लोकांना अधिकार!) निर्णय देखील घेऊ शकतात आणि कोणालाही प्लॅटफॉर्मसाठी इंटरफेस तयार करू देऊ शकतात. किंवा मालक या दोन टोकांच्या मधील कोणताही दृष्टिकोन ठरवू शकतात.
माझ्यापेक्षा अधिक दूरदृष्टी असलेल्या व्यावसायिक नेत्यांना यातून मुद्रीकरण कसे करायचे हे समजेल. मला फक्त एवढेच दिसते की हे सद्यस्थितीपेक्षा वेगळे आहे आणि बहुधा फायदेशीर आहे.
याव्यतिरिक्त, ऑटोमेशन आणि पेमेंट्सचा दृष्टिकोन आहे. काही गोष्टी अतिशय प्रभावीपणे टोकनाइज केल्या जाऊ शकतात (opens in a new tab) आणि क्लासिफाइड्स बोर्डमध्ये त्यांचा व्यापार केला जाऊ शकतो. टोकनाइज्ड मालमत्ता ब्लॉकचेनमध्ये सहजपणे ट्रान्सफर केल्या जातात. अत्यंत गुंतागुंतीच्या पेमेंट पद्धती ब्लॉकचेनमध्ये सहजपणे लागू केल्या जाऊ शकतात.
मला येथे फक्त एक व्यवसायाची संधी दिसत आहे. कोणताही रनिंग कॉस्ट नसलेला क्लासिफाइड्स बोर्ड सहजपणे लागू केला जाऊ शकतो, ज्यामध्ये प्रत्येक व्यवहारामध्ये गुंतागुंतीचे पेमेंट मार्ग समाविष्ट असतील. मला खात्री आहे की याचा वापर कशासाठी करायचा याबद्दल कोणालातरी नक्कीच एखादी कल्पना सुचेल.
मी फक्त हे तयार करण्यात आनंदी आहे. चला कोडवर एक नजर टाकूया.
अंमलबजावणी
काही काळापूर्वी आम्ही बिझनेस केस उदाहरणांच्या अंमलबजावणी आणि इतर गोष्टींसह एक ओपन सोर्स रिपॉझिटरी (opens in a new tab) सुरू केली आहे, कृपया त्यावर एक नजर टाका.
या इथेरियम क्लासिफाइड्स बोर्ड (opens in a new tab) चा कोड तिथे आहे, कृपया त्याचा वापर करा आणि हवा तसा प्रयोग करा. फक्त हे लक्षात ठेवा की कोडचे ऑडिट झालेले नाही आणि यात पैसे गुंतवण्यापूर्वी तुम्हाला तुमची स्वतःची खात्री (due diligence) करणे आवश्यक आहे.
बोर्डच्या मूलभूत गोष्टी गुंतागुंतीच्या नाहीत. बोर्डमधील सर्व जाहिराती फक्त काही फील्ड्ससह एक struct असतील:
struct Trade {
address poster;
uint256 item;
uint256 price;
bytes32 status; // खुले, कार्यान्वित, रद्द केले
}
म्हणून कोणीतरी जाहिरात पोस्ट करत आहे. विक्रीसाठी एक वस्तू. वस्तूची किंमत. ट्रेडची स्थिती जी ओपन, एक्झिक्युटेड किंवा कॅन्सल असू शकते.
हे सर्व ट्रेड एका मॅपिंगमध्ये ठेवले जातील. कारण Solidity मधील प्रत्येक गोष्ट मॅपिंग असल्याचे दिसते. तसेच कारण ते सोयीचे आहे.
mapping(uint256 => Trade) public trades;
मॅपिंग वापरण्याचा अर्थ असा आहे की जाहिरात पोस्ट करण्यापूर्वी आपल्याला प्रत्येक जाहिरातीसाठी एक आयडी (id) तयार करावा लागेल, आणि त्यावर काम करण्यापूर्वी आपल्याला जाहिरातीचा आयडी माहित असणे आवश्यक आहे. स्मार्ट कॉन्ट्रॅक्टमध्ये किंवा फ्रंट-एंडमध्ये हे हाताळण्याचे अनेक मार्ग आहेत. तुम्हाला काही मार्गदर्शन हवे असल्यास कृपया विचारा.
पुढे प्रश्न येतो की आपण ज्या वस्तूंचा व्यवहार करतो त्या कोणत्या आहेत आणि व्यवहारासाठी पैसे देण्यासाठी वापरली जाणारी ही करन्सी कोणती आहे.
वस्तूंसाठी, आम्ही फक्त एवढेच विचारणार आहोत की ते ERC-721 (opens in a new tab) इंटरफेस लागू करतात का, जो खऱ्या अर्थाने ब्लॉकचेनमध्ये वास्तविक जगातील वस्तूंचे प्रतिनिधित्व करण्याचा एक मार्ग आहे, जरी तो डिजिटल मालमत्तेसह सर्वोत्तम कार्य करतो (opens in a new tab). आम्ही कन्स्ट्रक्टर मध्ये आमचे स्वतःचे ERC721 कॉन्ट्रॅक्ट निर्दिष्ट करणार आहोत, याचा अर्थ आमच्या क्लासिफाइड्स बोर्डमधील कोणत्याही मालमत्तेचे आधीच टोकनायझेशन झालेले असणे आवश्यक आहे.
पेमेंट्ससाठी, आम्ही असेच काहीतरी करणार आहोत. बहुतांश ब्लॉकचेन प्रकल्प त्यांची स्वतःची ERC-20 (opens in a new tab) क्रिप्टोकरन्सी परिभाषित करतात. काही इतर DAI सारखी मुख्य प्रवाहातील करन्सी वापरणे पसंत करतात. या क्लासिफाइड्स बोर्डमध्ये, तुम्हाला फक्त कन्स्ट्रक्शनच्या वेळी तुमची करन्सी कोणती असेल हे ठरवावे लागेल. सोपे आहे.
constructor (
address _currencyTokenAddress, address _itemTokenAddress
) public {
currencyToken = IERC20(_currencyTokenAddress);
itemToken = IERC721(_itemTokenAddress);
tradeCounter = 0;
}
आपण जवळ पोहोचत आहोत. आपल्याकडे जाहिराती, व्यापारासाठी वस्तू आणि पेमेंट्ससाठी करन्सी आहे. जाहिरात तयार करणे म्हणजे एखादी वस्तू एस्क्रो (escrow) मध्ये ठेवणे जेणेकरून हे दर्शवता येईल की ती तुमच्याकडे आहे आणि तुम्ही ती दोनदा पोस्ट केलेली नाही, शक्यतो वेगळ्या बोर्डवर.
खालील कोड नेमके तेच करतो. वस्तूला एस्क्रोमध्ये ठेवतो, जाहिरात तयार करतो आणि काही हाऊसकीपिंग (housekeeping) करतो.
function openTrade(uint256 _item, uint256 _price)
public
{
itemToken.transferFrom(msg.sender, address(this), _item);
trades[tradeCounter] = Trade({
poster: msg.sender,
item: _item,
price: _price,
status: "Open"
});
tradeCounter += 1;
emit TradeStatusChange(tradeCounter - 1, "Open");
}
ट्रेड स्वीकारणे म्हणजे जाहिरात (ट्रेड) निवडणे, किंमत भरणे, वस्तू प्राप्त करणे. खालील कोड ट्रेड मिळवतो. तो उपलब्ध आहे का ते तपासतो. वस्तूसाठी पैसे देतो. वस्तू प्राप्त करतो. जाहिरात अपडेट करतो.
function executeTrade(uint256 _trade)
public
{
Trade memory trade = trades[_trade];
require(trade.status == "Open", "Trade is not Open.");
currencyToken.transferFrom(msg.sender, trade.poster, trade.price);
itemToken.transferFrom(address(this), msg.sender, trade.item);
trades[_trade].status = "Executed";
emit TradeStatusChange(_trade, "Executed");
}
शेवटी, खरेदीदाराने स्वीकारण्यापूर्वी विक्रेत्यांना ट्रेडमधून माघार घेण्याचा पर्याय आमच्याकडे आहे. काही मॉडेल्समध्ये, जाहिराती कालबाह्य होण्यापूर्वी काही काळासाठी लाइव्ह राहतील. तुमच्या मार्केटच्या डिझाइनवर अवलंबून, ही तुमची निवड आहे.
हा कोड ट्रेड एक्झिक्युट करण्यासाठी वापरल्या जाणाऱ्या कोडसारखाच आहे, फक्त यात करन्सीची देवाणघेवाण होत नाही आणि वस्तू जाहिरात पोस्ट करणाऱ्याकडे परत जाते.
function cancelTrade(uint256 _trade)
public
{
Trade memory trade = trades[_trade];
require(
msg.sender == trade.poster,
"Trade can be cancelled only by poster."
);
require(trade.status == "Open", "Trade is not Open.");
itemToken.transferFrom(address(this), trade.poster, trade.item);
trades[_trade].status = "Cancelled";
emit TradeStatusChange(_trade, "Cancelled");
}
इतकेच. तुम्ही अंमलबजावणीच्या शेवटपर्यंत पोहोचला आहात. काही व्यावसायिक संकल्पना कोडमध्ये व्यक्त केल्यावर किती संक्षिप्त असतात हे खूप आश्चर्यकारक आहे आणि हे त्यापैकीच एक उदाहरण आहे. आमच्या रेपोमध्ये (opens in a new tab) संपूर्ण कॉन्ट्रॅक्ट तपासा.
निष्कर्ष
क्लासिफाइड्स बोर्ड्स ही एक सामान्य मार्केट रचना आहे जी इंटरनेटच्या आगमनाने मोठ्या प्रमाणावर विस्तारली आणि काही मोजक्या मक्तेदारी विजेत्यांसह एक अत्यंत लोकप्रिय बिझनेस मॉडेल बनली.
क्लासिफाइड्स बोर्ड्स हे ब्लॉकचेन वातावरणात प्रतिकृती (replicate) करण्यासाठी एक सोपे साधन देखील आहे, ज्यामध्ये अतिशय विशिष्ट वैशिष्ट्ये आहेत जी विद्यमान दिग्गजांना आव्हान देणे शक्य करतील.
या लेखामध्ये, मी क्लासिफाइड्स बोर्ड व्यवसायाच्या व्यावसायिक वास्तवाची तांत्रिक अंमलबजावणीशी सांगड घालण्याचा प्रयत्न केला आहे. जर तुमच्याकडे योग्य कौशल्ये असतील तर हे ज्ञान तुम्हाला अंमलबजावणीसाठी एक दृष्टी आणि रोडमॅप तयार करण्यास मदत करेल.
नेहमीप्रमाणे, जर तुम्ही काहीतरी मजेशीर तयार करत असाल आणि तुम्हाला काही सल्ल्याची आवश्यकता असेल, तर कृपया मला संपर्क करा (opens in a new tab)! मला मदत करायला नेहमीच आवडेल.