ERC-721 మార్కెట్ను ఎలా అమలు చేయాలి
ఈ ఆర్టికల్లో, ఎథీరియం బ్లాక్చైన్ కోసం Craigslistను ఎలా కోడ్ చేయాలో నేను మీకు చూపించబోతున్నాను.
Gumtree, Ebay మరియు Craigslist కంటే ముందు, క్లాసిఫైడ్ బోర్డులు ఎక్కువగా కార్క్ లేదా కాగితంతో తయారు చేయబడేవి. పాఠశాల కారిడార్లు, వార్తాపత్రికలు, వీధి దీపాలు, దుకాణాల ముందు క్లాసిఫైడ్స్ బోర్డులు ఉండేవి.
ఇంటర్నెట్తో అదంతా మారిపోయింది. ఒక నిర్దిష్ట క్లాసిఫైడ్ బోర్డును చూడగలిగే వ్యక్తుల సంఖ్య అనేక రెట్లు పెరిగింది. దానితో, అవి ప్రాతినిధ్యం వహించే మార్కెట్లు మరింత సమర్థవంతంగా మారాయి మరియు ప్రపంచ స్థాయికి విస్తరించాయి. Ebay అనేది ఒక భారీ వ్యాపారం, దీని మూలాలు ఈ భౌతిక క్లాసిఫైడ్స్ బోర్డులలో ఉన్నాయి.
బ్లాక్చైన్తో ఈ మార్కెట్లు మరోసారి మారడానికి సిద్ధంగా ఉన్నాయి, అది ఎలాగో నేను మీకు చూపిస్తాను.
మానిటైజేషన్
పబ్లిక్ బ్లాక్చైన్ క్లాసిఫైడ్స్ బోర్డు యొక్క వ్యాపార నమూనా Ebay మరియు ఇతర కంపెనీల కంటే భిన్నంగా ఉండాలి.
మొదట, వికేంద్రీకరణ కోణం ఉంది. ప్రస్తుతం ఉన్న ప్లాట్ఫారమ్లు తమ సొంత సర్వర్లను నిర్వహించుకోవాలి. వికేంద్రీకృత ప్లాట్ఫారమ్ దాని వినియోగదారులచే నిర్వహించబడుతుంది, కాబట్టి ప్లాట్ఫారమ్ యజమానికి కోర్ ప్లాట్ఫారమ్ను నడిపే ఖర్చు సున్నాకి పడిపోతుంది.
ఆ తర్వాత ఫ్రంట్ ఎండ్, అంటే ప్లాట్ఫారమ్కు యాక్సెస్ను ఇచ్చే వెబ్సైట్ లేదా ఇంటర్ఫేస్ ఉంటుంది. ఇక్కడ అనేక ఎంపికలు ఉన్నాయి. ప్లాట్ఫారమ్ యజమానులు యాక్సెస్ను పరిమితం చేయవచ్చు మరియు ప్రతి ఒక్కరూ తమ ఇంటర్ఫేస్ను ఉపయోగించేలా చేసి, రుసుము వసూలు చేయవచ్చు. ప్లాట్ఫారమ్ యజమానులు యాక్సెస్ను తెరవాలని (ప్రజలకే అధికారం!) నిర్ణయించుకోవచ్చు మరియు ప్లాట్ఫారమ్కు ఇంటర్ఫేస్లను ఎవరైనా నిర్మించుకోవడానికి అనుమతించవచ్చు. లేదా యజమానులు ఈ రెండు తీవ్రతల మధ్య ఏదైనా విధానాన్ని నిర్ణయించుకోవచ్చు.
నా కంటే ఎక్కువ దార్శనికత ఉన్న వ్యాపార నాయకులకు దీనిని ఎలా మానిటైజ్ చేయాలో తెలుస్తుంది. నేను చూస్తున్నదల్లా ఇది ప్రస్తుత పరిస్థితికి భిన్నంగా ఉంటుంది మరియు బహుశా లాభదాయకంగా ఉంటుంది.
అంతేకాకుండా, ఆటోమేషన్ మరియు చెల్లింపుల కోణం కూడా ఉంది. కొన్ని వస్తువులను చాలా సమర్థవంతంగా టోకనైజ్ చేయవచ్చు (కొత్త ట్యాబ్లో తెరవబడుతుంది) మరియు క్లాసిఫైడ్స్ బోర్డులో ట్రేడ్ చేయవచ్చు. టోకనైజ్ చేయబడిన ఆస్తులు బ్లాక్చైన్లో సులభంగా బదిలీ చేయబడతాయి. అత్యంత సంక్లిష్టమైన చెల్లింపు పద్ధతులను బ్లాక్చైన్లో సులభంగా అమలు చేయవచ్చు.
నేను ఇక్కడ ఒక వ్యాపార అవకాశాన్ని పసిగడుతున్నాను. ఎటువంటి నిర్వహణ ఖర్చులు లేని క్లాసిఫైడ్స్ బోర్డును సులభంగా అమలు చేయవచ్చు, ప్రతి లావాదేవీలో సంక్లిష్టమైన చెల్లింపు మార్గాలను చేర్చవచ్చు. దీనిని దేనికి ఉపయోగించాలనే దానిపై ఎవరైనా ఒక ఆలోచనతో ముందుకు వస్తారని నేను ఖచ్చితంగా అనుకుంటున్నాను.
దీన్ని నిర్మించడం నాకు సంతోషంగా ఉంది. కోడ్ను ఒకసారి చూద్దాం.
అమలు
కొంతకాలం క్రితం మేము వ్యాపార కేసు ఉదాహరణల అమలులు మరియు ఇతర ప్రయోజనాలతో కూడిన ఓపెన్ సోర్స్ రిపోజిటరీ (కొత్త ట్యాబ్లో తెరవబడుతుంది)ని ప్రారంభించాము, దయచేసి ఒకసారి చూడండి.
ఈ ఎథీరియం క్లాసిఫైడ్స్ బోర్డ్ (కొత్త ట్యాబ్లో తెరవబడుతుంది) కోసం కోడ్ అక్కడ ఉంది, దయచేసి దాన్ని ఉపయోగించండి మరియు ప్రయోగాలు చేయండి. అయితే ఈ కోడ్ ఆడిట్ చేయబడలేదని గుర్తుంచుకోండి మరియు ఇందులో డబ్బు పెట్టే ముందు మీరు మీ స్వంత పరిశీలన చేసుకోవాలి.
బోర్డు యొక్క ప్రాథమిక అంశాలు సంక్లిష్టమైనవి కావు. బోర్డులోని అన్ని ప్రకటనలు కేవలం కొన్ని ఫీల్డ్లతో కూడిన ఒక స్ట్రక్ట్ (struct) మాత్రమే:
struct Trade {
address poster;
uint256 item;
uint256 price;
bytes32 status; // ఓపెన్, అమలు చేయబడింది, రద్దు చేయబడింది
}
కాబట్టి ప్రకటనను పోస్ట్ చేసే వ్యక్తి ఒకరు ఉంటారు. అమ్మకానికి ఒక వస్తువు. వస్తువుకు ఒక ధర. ట్రేడ్ యొక్క స్థితి, ఇది ఓపెన్, ఎగ్జిక్యూటెడ్ లేదా క్యాన్సిల్డ్ కావచ్చు.
ఈ ట్రేడ్లన్నీ మ్యాపింగ్లో ఉంచబడతాయి. ఎందుకంటే Solidityలో ప్రతిదీ మ్యాపింగ్ లాగానే అనిపిస్తుంది. అంతేకాకుండా ఇది సౌకర్యవంతంగా ఉంటుంది కాబట్టి.
mapping(uint256 => Trade) public trades;
మ్యాపింగ్ను ఉపయోగించడం అంటే, ప్రతి ప్రకటనను పోస్ట్ చేయడానికి ముందు దానికి ఒక idని మనం సృష్టించాలి, మరియు దానిపై ఆపరేట్ చేయడానికి ముందు మనకు ఆ ప్రకటన యొక్క id తెలిసి ఉండాలి. స్మార్ట్ కాంట్రాక్ట్లో లేదా ఫ్రంట్-ఎండ్లో దీనిని నిర్వహించడానికి అనేక మార్గాలు ఉన్నాయి. మీకు ఏవైనా సూచనలు కావాలంటే దయచేసి అడగండి.
తరువాత, మనం డీల్ చేసే ఆ వస్తువులు ఏమిటి, మరియు లావాదేవీకి చెల్లించడానికి ఉపయోగించే ఈ కరెన్సీ ఏమిటి అనే ప్రశ్న వస్తుంది.
వస్తువుల కోసం, అవి ERC-721 (కొత్త ట్యాబ్లో తెరవబడుతుంది) ఇంటర్ఫేస్ను అమలు చేయాలని మాత్రమే మనం అడగబోతున్నాము, ఇది నిజానికి వాస్తవ ప్రపంచ వస్తువులను బ్లాక్చైన్లో సూచించడానికి ఒక మార్గం మాత్రమే, అయినప్పటికీ ఇది డిజిటల్ ఆస్తులతో ఉత్తమంగా పనిచేస్తుంది (కొత్త ట్యాబ్లో తెరవబడుతుంది). మనం కన్స్ట్రక్టర్లో మన స్వంత ERC721 కాంట్రాక్ట్ను పేర్కొనబోతున్నాము, అంటే మన క్లాసిఫైడ్స్ బోర్డులోని ఏవైనా ఆస్తులు ముందుగానే టోకనైజ్ చేయబడి ఉండాలి.
చెల్లింపుల కోసం, మనం ఇలాంటిదే చేయబోతున్నాము. చాలా బ్లాక్చైన్ ప్రాజెక్ట్లు తమ స్వంత ERC-20 (కొత్త ట్యాబ్లో తెరవబడుతుంది) క్రిప్టోకరెన్సీని నిర్వచించుకుంటాయి. మరికొందరు DAI లాంటి ప్రధానమైన దానిని ఉపయోగించడానికి ఇష్టపడతారు. ఈ క్లాసిఫైడ్స్ బోర్డులో, మీ కరెన్సీ ఏమిటో మీరు నిర్మాణ సమయంలో నిర్ణయించుకుంటే సరిపోతుంది. చాలా సులభం.
constructor (
address _currencyTokenAddress, address _itemTokenAddress
) public {
currencyToken = IERC20(_currencyTokenAddress);
itemToken = IERC721(_itemTokenAddress);
tradeCounter = 0;
}
మనం దగ్గరపడుతున్నాము. మనకు ప్రకటనలు, ట్రేడ్ చేయడానికి వస్తువులు మరియు చెల్లింపుల కోసం కరెన్సీ ఉన్నాయి. ఒక ప్రకటన చేయడం అంటే, ఆ వస్తువు మీ వద్ద ఉందని మరియు మీరు దానిని బహుశా వేరే బోర్డులో రెండుసార్లు పోస్ట్ చేయలేదని చూపించడానికి దానిని ఎస్క్రోలో ఉంచడం.
క్రింది కోడ్ సరిగ్గా అదే చేస్తుంది. వస్తువును ఎస్క్రోలో ఉంచుతుంది, ప్రకటనను సృష్టిస్తుంది, కొన్ని నిర్వహణ పనులను చేస్తుంది.
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");
}
అంతే. మీరు అమలు చివరికి చేరుకున్నారు. కొన్ని వ్యాపార భావనలను కోడ్లో వ్యక్తపరిచినప్పుడు అవి ఎంత సంక్షిప్తంగా ఉంటాయో ఆశ్చర్యం కలిగిస్తుంది, మరియు ఇది అలాంటి సందర్భాలలో ఒకటి. పూర్తి కాంట్రాక్ట్ను మా రెపోలో (కొత్త ట్యాబ్లో తెరవబడుతుంది) తనిఖీ చేయండి.
ముగింపు
క్లాసిఫైడ్స్ బోర్డులు అనేవి ఇంటర్నెట్తో భారీగా విస్తరించిన ఒక సాధారణ మార్కెట్ ఆకృతీకరణ, ఇవి కొద్దిమంది గుత్తాధిపత్య విజేతలతో అత్యంత ప్రజాదరణ పొందిన వ్యాపార నమూనాగా మారాయి.
క్లాసిఫైడ్స్ బోర్డులు బ్లాక్చైన్ వాతావరణంలో ప్రతిరూపం చేయడానికి సులభమైన సాధనంగా కూడా ఉంటాయి, ఇవి ప్రస్తుతం ఉన్న దిగ్గజాలకు సవాలు విసరడాన్ని సాధ్యం చేసే నిర్దిష్ట లక్షణాలను కలిగి ఉంటాయి.
ఈ ఆర్టికల్లో, క్లాసిఫైడ్స్ బోర్డ్ వ్యాపారం యొక్క వాస్తవికతను సాంకేతిక అమలుతో అనుసంధానించడానికి నేను ఒక ప్రయత్నం చేశాను. మీకు సరైన నైపుణ్యాలు ఉంటే, అమలు కోసం ఒక దార్శనికతను మరియు రోడ్మ్యాప్ను రూపొందించడానికి ఈ జ్ఞానం మీకు సహాయపడుతుంది.
ఎప్పటిలాగే, మీరు ఏదైనా సరదాగా నిర్మించడానికి బయలుదేరితే మరియు కొన్ని సలహాలను స్వాగతిస్తే, దయచేసి నాకు ఒక సందేశం పంపండి (కొత్త ట్యాబ్లో తెరవబడుతుంది)! సహాయం చేయడానికి నేను ఎల్లప్పుడూ సంతోషిస్తాను.