ERC-721 మార్కెట్ను ఎలా అమలు చేయాలి
ఈ వ్యాసంలో, Ethereum బ్లాక్చైన్ కోసం Craigslistని ఎలా కోడ్ చేయాలో నేను మీకు చూపించబోతున్నాను.
Gumtree, Ebay మరియు Craigslist కంటే ముందు, క్లాసిఫైడ్ బోర్డులు ఎక్కువగా కార్క్ లేదా కాగితంతో తయారు చేయబడేవి. పాఠశాల కారిడార్లలో, వార్తాపత్రికలలో, వీధి దీపాల వద్ద, దుకాణాల ముందు క్లాసిఫైడ్ బోర్డులు ఉండేవి.
ఇంటర్నెట్తో అదంతా మారిపోయింది. ఒక నిర్దిష్ట క్లాసిఫైడ్ బోర్డును చూడగల వ్యక్తుల సంఖ్య అనేక రెట్లు పెరిగింది. దానితో, అవి ప్రాతినిధ్యం వహించే మార్కెట్లు చాలా సమర్థవంతంగా మారాయి మరియు ప్రపంచ స్థాయికి విస్తరించాయి. Ebay ఒక భారీ వ్యాపారం, దాని మూలాలు ఈ భౌతిక క్లాసిఫైడ్ బోర్డులలో ఉన్నాయి.
బ్లాక్చైన్తో ఈ మార్కెట్లు మరోసారి మారబోతున్నాయి, అదెలాగో నేను మీకు చూపిస్తాను.
మానిటైజేషన్
ఒక పబ్లిక్ బ్లాక్చైన్ క్లాసిఫైడ్ బోర్డు యొక్క వ్యాపార నమూనా Ebay మరియు కంపెనీల వాటి కంటే భిన్నంగా ఉండాలి.
మొదట, వికేంద్రీకరణ కోణం ఉంది. ప్రస్తుత ప్లాట్ఫారమ్లు వాటి స్వంత సర్వర్లను నిర్వహించాలి. ఒక వికేంద్రీకృత ప్లాట్ఫారం దాని వినియోగదారులచే నిర్వహించబడుతుంది, కాబట్టి కోర్ ప్లాట్ఫారమ్ను నడపడానికి అయ్యే ఖర్చు ప్లాట్ఫారం యజమానికి సున్నాకి పడిపోతుంది.
ఆపై ఫ్రంట్ ఎండ్, అంటే ప్లాట్ఫారమ్కు యాక్సెస్ ఇచ్చే వెబ్సైట్ లేదా ఇంటర్ఫేస్ ఉంది. ఇక్కడ అనేక ఎంపికలు ఉన్నాయి. ప్లాట్ఫారం యజమానులు యాక్సెస్ను పరిమితం చేయవచ్చు మరియు ఒక రుసుము వసూలు చేస్తూ, ప్రతి ఒక్కరినీ వారి ఇంటర్ఫేస్ను ఉపయోగించమని బలవంతం చేయవచ్చు. ప్లాట్ఫారం యజమానులు యాక్సెస్ను తెరవాలని కూడా నిర్ణయించుకోవచ్చు (ప్రజలకే అధికారం!) మరియు ప్లాట్ఫారమ్కు ఇంటర్ఫేస్లను నిర్మించడానికి ఎవరినైనా అనుమతించవచ్చు. లేదా ఆ రెండు తీవ్రతల మధ్యలో ఏదైనా విధానాన్ని యజమానులు నిర్ణయించుకోవచ్చు.
నా కంటే ఎక్కువ దార్శనికత ఉన్న వ్యాపార నాయకులకు దీనిని ఎలా మానిటైజ్ చేయాలో తెలుస్తుంది. నాకు కనిపించేది ఏమిటంటే ఇది యథాతథ స్థితికి భిన్నంగా ఉంది మరియు బహుశా లాభదాయకం.
ఇంకా, ఆటోమేషన్ మరియు చెల్లింపుల కోణం ఉంది. కొన్ని విషయాలు చాలా సమర్థవంతంగా టోకెనైజ్ చేయబడతాయి (opens in a new tab) మరియు ఒక క్లాసిఫైడ్ బోర్డులో వర్తకం చేయబడతాయి. టోకెనైజ్డ్ ఆస్తులు ఒక బ్లాక్చైన్లో సులభంగా బదిలీ చేయబడతాయి. అత్యంత సంక్లిష్టమైన చెల్లింపు పద్ధతులను ఒక బ్లాక్చైన్లో సులభంగా అమలు చేయవచ్చు.
నాకు ఇక్కడ ఒక వ్యాపార అవకాశం కనిపిస్తోంది. నడిపించడానికి ఖర్చులు లేని ఒక క్లాసిఫైడ్ బోర్డును, ప్రతి లావాదేవీలో సంక్లిష్టమైన చెల్లింపు మార్గాలను చేర్చి సులభంగా అమలు చేయవచ్చు. దీనిని దేనికి ఉపయోగించాలనే దాని గురించి ఎవరో ఒకరు ఒక ఆలోచనతో వస్తారని నాకు నమ్మకం ఉంది.
నేను దీనిని నిర్మించడంలో సంతోషంగా ఉన్నాను. కోడ్ను ఒకసారి చూద్దాం.
అమలు
కొంత కాలం క్రితం మేము వ్యాపార కేసు ఉదాహరణ అమలులు మరియు ఇతర మంచి విషయాలతో కూడిన ఒక ఓపెన్ సోర్స్ రిపోజిటరీని (opens in a new tab) ప్రారంభించాము, దయచేసి ఒకసారి చూడండి.
ఈ Ethereum క్లాసిఫైడ్స్ బోర్డు (opens in a new tab) కోసం కోడ్ అక్కడ ఉంది, దయచేసి దానిని ఉపయోగించండి మరియు విరివిగా వాడండి. ఒక విషయం గుర్తుంచుకోండి, కోడ్ ఆడిట్ చేయబడలేదు మరియు దానిలో డబ్బు పెట్టే ముందు మీరు మీ స్వంత తగిన శ్రద్ధ వహించాలి.
బోర్డు యొక్క ప్రాథమికాలు సంక్లిష్టంగా లేవు. బోర్డులోని అన్ని ప్రకటనలు కేవలం కొన్ని ఫీల్డ్లతో ఒక స్ట్రక్ట్గా ఉంటాయి:
1struct Trade {2 address poster;3 uint256 item;4 uint256 price;5 bytes32 status; // ఓపెన్, ఎగ్జిక్యూటెడ్, క్యాన్సిల్డ్6}కాబట్టి ప్రకటనను పోస్ట్ చేసే వారు ఒకరు ఉంటారు. అమ్మకానికి ఒక వస్తువు. వస్తువుకు ఒక ధర. వర్తకం యొక్క స్థితి, అది ఓపెన్, ఎగ్జిక్యూటెడ్ లేదా క్యాన్సిల్డ్ కావచ్చు.
ఈ వర్తకాలన్నీ ఒక మ్యాపింగ్లో ఉంచబడతాయి. ఎందుకంటే Solidity లో ప్రతీదీ ఒక మ్యాపింగ్లా కనిపిస్తుంది. అంతేకాకుండా ఇది సౌకర్యవంతంగా ఉంటుంది.
1mapping(uint256 => Trade) public trades;ఒక మ్యాపింగ్ను ఉపయోగించడం అంటే ప్రతి ప్రకటనను పోస్ట్ చేసే ముందు దానికోసం ఒక ఐడిని మనం సృష్టించాలి, మరియు దానిపై పనిచేయడానికి ముందు మనకు ప్రకటన యొక్క ఐడి తెలిసి ఉండాలి. దీనిని స్మార్ట్ కాంట్రాక్ట్లో గానీ లేదా ఫ్రంట్-ఎండ్లో గానీ పరిష్కరించడానికి అనేక మార్గాలు ఉన్నాయి. మీకు కొన్ని సూచనలు కావాలంటే దయచేసి అడగండి.
తరువాత వచ్చే ప్రశ్న ఏమిటంటే, మనం వ్యవహరించే ఆ వస్తువులు ఏమిటి, మరియు లావాదేవీకి చెల్లించడానికి ఉపయోగించే ఈ కరెన్సీ ఏమిటి.
వస్తువుల కోసం, అవి ERC-721 (opens in a new tab) ఇంటర్ఫేస్ను అమలు చేయాలని మేము అడగబోతున్నాము, ఇది నిజానికి ఒక బ్లాక్చైన్లో నిజ ప్రపంచ వస్తువులను సూచించే ఒక మార్గం, అయినప్పటికీ ఇది డిజిటల్ ఆస్తులతో ఉత్తమంగా పనిచేస్తుంది (opens in a new tab). మేము కన్స్ట్రక్టర్లో మా స్వంత ERC721 కాంట్రాక్ట్ను పేర్కొనబోతున్నాము, అంటే మన క్లాసిఫైడ్ బోర్డులోని ఏవైనా ఆస్తులు ముందుగానే టోకెనైజ్ చేయబడి ఉండాలి.
చెల్లింపుల కోసం, మేము ఇలాంటిదే చేయబోతున్నాము. చాలా బ్లాక్చైన్ ప్రాజెక్టులు వాటి స్వంత ERC-20 (opens in a new tab) క్రిప్టోకరెన్సీని నిర్వచిస్తాయి. కొంతమంది ఇతరులు DAI వంటి ప్రధానమైన దాన్ని ఉపయోగించడానికి ఇష్టపడతారు. ఈ క్లాసిఫైడ్ బోర్డులో, నిర్మాణ సమయంలో మీ కరెన్సీ ఏమిటో మీరు నిర్ణయించుకోవాలి. సులభం.
1constructor (2 address _currencyTokenAddress, address _itemTokenAddress3) public {4 currencyToken = IERC20(_currencyTokenAddress);5 itemToken = IERC721(_itemTokenAddress);6 tradeCounter = 0;7}మనం అక్కడికి చేరుకుంటున్నాం. మన దగ్గర ప్రకటనలు, వర్తకం కోసం వస్తువులు మరియు చెల్లింపుల కోసం ఒక కరెన్సీ ఉన్నాయి. ఒక ప్రకటన చేయడం అంటే, అది మీ దగ్గర ఉందని మరియు మీరు దానిని రెండుసార్లు, బహుశా వేరొక బోర్డులో పోస్ట్ చేయలేదని చూపించడానికి ఒక వస్తువును ఎస్క్రోలో పెట్టడం.
కింది కోడ్ ఖచ్చితంగా అదే చేస్తుంది. వస్తువును ఎస్క్రోలో పెడుతుంది, ప్రకటనను సృష్టిస్తుంది, కొంత హౌస్కీపింగ్ చేస్తుంది.
1function openTrade(uint256 _item, uint256 _price)2 public3{4 itemToken.transferFrom(msg.sender, address(this), _item);5 trades[tradeCounter] = Trade({6 poster: msg.sender,7 item: _item,8 price: _price,9 status: "Open"10 });11 tradeCounter += 1;12 emit TradeStatusChange(tradeCounter - 1, "Open");13}వర్తకాన్ని అంగీకరించడం అంటే ఒక ప్రకటనను (వర్తకం) ఎంచుకోవడం, ధర చెల్లించడం, వస్తువును అందుకోవడం. కింది కోడ్ ఒక వర్తకాన్ని తిరిగి పొందుతుంది. అది అందుబాటులో ఉందో లేదో తనిఖీ చేస్తుంది. వస్తువుకు చెల్లిస్తుంది. వస్తువును పొందుతుంది. ప్రకటనను అప్డేట్ చేస్తుంది.
1function executeTrade(uint256 _trade)2 public3{4 Trade memory trade = trades[_trade];5 require(trade.status == "Open", "వర్తకం ఓపెన్లో లేదు.");6 currencyToken.transferFrom(msg.sender, trade.poster, trade.price);7 itemToken.transferFrom(address(this), msg.sender, trade.item);8 trades[_trade].status = "Executed";9 emit TradeStatusChange(_trade, "Executed");10}చివరగా, ఒక కొనుగోలుదారు దానిని అంగీకరించే ముందు అమ్మకందారులు ఒక వర్తకం నుండి వెనక్కి తగ్గడానికి మా వద్ద ఒక ఎంపిక ఉంది. కొన్ని నమూనాలలో, ప్రకటనలు గడువు ముగిసే ముందు కొంత కాలం పాటు బదులుగా లైవ్లో ఉంటాయి. మీ మార్కెట్ రూపకల్పనపై ఆధారపడి, అది మీ ఇష్టం.
ఈ కోడ్ ఒక వర్తకాన్ని అమలు చేయడానికి ఉపయోగించే కోడ్కు చాలా పోలి ఉంటుంది, కేవలం కరెన్సీ చేతులు మారదు మరియు వస్తువు ప్రకటన పోస్టర్కు తిరిగి వెళుతుంది.
1function cancelTrade(uint256 _trade)2 public3{4 Trade memory trade = trades[_trade];5 require(6 msg.sender == trade.poster,7 "వర్తకాన్ని పోస్టర్ మాత్రమే రద్దు చేయగలరు."8 );9 require(trade.status == "Open", "వర్తకం ఓపెన్లో లేదు.");10 itemToken.transferFrom(address(this), trade.poster, trade.item);11 trades[_trade].status = "Cancelled";12 emit TradeStatusChange(_trade, "Cancelled");13}అంతే. మీరు అమలు యొక్క చివరికి చేరుకున్నారు. కొన్ని వ్యాపార భావనలను కోడ్లో వ్యక్తీకరించినప్పుడు అవి ఎంత కాంపాక్ట్గా ఉంటాయో చూడటం చాలా ఆశ్చర్యకరంగా ఉంటుంది, మరియు ఇది అలాంటి కేసులలో ఒకటి. పూర్తి కాంట్రాక్ట్ను మా రెపోలో (opens in a new tab) తనిఖీ చేయండి.
ముగింపు
క్లాసిఫైడ్ బోర్డులు ఒక సాధారణ మార్కెట్ కాన్ఫిగరేషన్, ఇవి ఇంటర్నెట్తో భారీగా విస్తరించి, కొంతమంది గుత్తాధిపత్య విజేతలతో అత్యంత ప్రజాదరణ పొందిన వ్యాపార నమూనాగా మారాయి.
క్లాసిఫైడ్ బోర్డులు ఒక బ్లాక్చైన్ వాతావరణంలో పునరావృతం చేయడానికి కూడా ఒక సులభమైన సాధనం, ఇవి ప్రస్తుత దిగ్గజాలకు సవాలును సాధ్యం చేసే చాలా నిర్దిష్ట లక్షణాలను కలిగి ఉంటాయి.
ఈ వ్యాసంలో, నేను ఒక క్లాసిఫైడ్ బోర్డు వ్యాపారం యొక్క వ్యాపార వాస్తవికతను సాంకేతిక అమలుతో అనుసంధానించడానికి ఒక ప్రయత్నం చేశాను. మీకు సరైన నైపుణ్యాలు ఉంటే, అమలు కోసం ఒక దార్శనికతను మరియు ఒక రోడ్మ్యాప్ను సృష్టించడానికి ఈ జ్ఞానం మీకు సహాయపడాలి.
ఎప్పటిలాగే, మీరు ఏదైనా సరదాగా నిర్మించబోతున్నట్లయితే మరియు కొన్ని సలహాలను స్వాగతిస్తే, దయచేసి నాకు ఒక సందేశం పంపండి (opens in a new tab)! నేను సహాయం చేయడానికి ఎల్లప్పుడూ సంతోషిస్తాను.
పేజీ చివరి అప్డేట్: 3 మార్చి, 2026