ஒரு ERC-721 சந்தையை எவ்வாறு செயல்படுத்துவது
இந்தக் கட்டுரையில், எத்திரியம் தொகுதிச்சங்கிலிக்கான Craigslist-ஐ எவ்வாறு குறியீடு செய்வது என்பதை நான் உங்களுக்குக் காட்டப் போகிறேன்.
Gumtree, Ebay மற்றும் Craigslist ஆகியவற்றிற்கு முன்பு, விளம்பரப் பலகைகள் பெரும்பாலும் கார்க் அல்லது காகிதத்தால் செய்யப்பட்டன. பள்ளி தாழ்வாரங்கள், செய்தித்தாள்கள், தெருவிளக்குகள், கடை முகப்புகளில் விளம்பரப் பலகைகள் இருந்தன.
இணையத்தின் வருகையால் இவை அனைத்தும் மாறின. ஒரு குறிப்பிட்ட விளம்பரப் பலகையைப் பார்க்கக்கூடிய மக்களின் எண்ணிக்கை பல மடங்கு பெருகியது. அதனுடன், அவை பிரதிநிதித்துவப்படுத்தும் சந்தைகள் மிகவும் திறமையானவையாக மாறி, உலகளாவிய அளவிற்கு விரிவடைந்தன. Ebay என்பது ஒரு பிரம்மாண்டமான வணிகமாகும், இது இந்த இயற்பியல் விளம்பரப் பலகைகளிலிருந்தே தனது தொடக்கத்தைக் கொண்டுள்ளது.
தொகுதிச்சங்கிலி மூலம் இந்தச் சந்தைகள் மீண்டும் ஒருமுறை மாறத் தயாராக உள்ளன, அது எப்படி என்பதை நான் உங்களுக்குக் காட்டுகிறேன்.
பணமாக்குதல்
ஒரு பொது தொகுதிச்சங்கிலி விளம்பரப் பலகையின் வணிக மாதிரி Ebay மற்றும் பிற நிறுவனங்களின் மாதிரியிலிருந்து வேறுபட்டதாக இருக்க வேண்டும்.
முதலில், பரவலாக்கம் என்ற கோணம் உள்ளது. தற்போதுள்ள தளங்கள் தங்களுடைய சொந்த சேவையகங்களைப் பராமரிக்க வேண்டும். ஒரு பரவலாக்கப்பட்ட தளம் அதன் பயனர்களால் பராமரிக்கப்படுகிறது, எனவே தள உரிமையாளருக்கு முக்கிய தளத்தை இயக்குவதற்கான செலவு பூஜ்ஜியமாகக் குறைகிறது.
பின்னர் முன்-முனை (front end) உள்ளது, அதாவது தளத்திற்கான அணுகலை வழங்கும் வலைத்தளம் அல்லது இடைமுகம். இதில் பல விருப்பங்கள் உள்ளன. தள உரிமையாளர்கள் அணுகலைக் கட்டுப்படுத்தலாம் மற்றும் கட்டணம் வசூலித்து, அனைவரையும் தங்கள் இடைமுகத்தைப் பயன்படுத்தும்படி கட்டாயப்படுத்தலாம். தள உரிமையாளர்கள் அணுகலைத் திறக்கவும் (மக்களுக்கே அதிகாரம்!) மற்றும் தளத்திற்கான இடைமுகங்களை யார் வேண்டுமானாலும் உருவாக்க அனுமதிக்கவும் முடிவு செய்யலாம். அல்லது உரிமையாளர்கள் இந்த இரண்டு உச்சங்களுக்கும் இடைப்பட்ட எந்தவொரு அணுகுமுறையையும் முடிவு செய்யலாம்.
என்னை விட அதிக தொலைநோக்கு பார்வை கொண்ட வணிகத் தலைவர்களுக்கு இதை எப்படிப் பணமாக்குவது என்று தெரியும். நான் பார்ப்பதெல்லாம், இது தற்போதைய நிலையிலிருந்து வேறுபட்டது மற்றும் லாபகரமானதாக இருக்கலாம் என்பது மட்டுமே.
மேலும், தானியக்கமாக்கல் மற்றும் கொடுப்பனவுகள் என்ற கோணமும் உள்ளது. சில விஷயங்களை மிகவும் திறம்பட டோக்கனாக்கம் செய்து (opens in a new tab) விளம்பரப் பலகையில் வர்த்தகம் செய்யலாம். டோக்கனாக்கப்பட்ட சொத்துக்களை ஒரு தொகுதிச்சங்கிலியில் எளிதாக மாற்ற முடியும். மிகவும் சிக்கலான கட்டண முறைகளை ஒரு தொகுதிச்சங்கிலியில் எளிதாகச் செயல்படுத்தலாம்.
நான் இங்கே ஒரு வணிக வாய்ப்பை உணர்கிறேன். ஒவ்வொரு பரிவர்த்தனையிலும் சிக்கலான கட்டண வழிகளை உள்ளடக்கி, இயங்கும் செலவுகள் இல்லாத ஒரு விளம்பரப் பலகையை எளிதாகச் செயல்படுத்த முடியும். இதை எதற்காகப் பயன்படுத்துவது என்பது பற்றி யாராவது ஒரு யோசனையுடன் வருவார்கள் என்று நான் உறுதியாக நம்புகிறேன்.
இதை உருவாக்குவதில் நான் மகிழ்ச்சியடைகிறேன். குறியீட்டைப் பார்ப்போம்.
செயல்படுத்துதல்
சில காலத்திற்கு முன்பு நாங்கள் வணிக ரீதியான எடுத்துக்காட்டுச் செயலாக்கங்கள் மற்றும் பிற பயனுள்ள விஷயங்களுடன் ஒரு திறந்த மூல களஞ்சியத்தை (opens in a new tab) தொடங்கினோம், தயவுசெய்து அதைப் பாருங்கள்.
இந்த எத்திரியம் விளம்பரப் பலகைக்கான (opens in a new tab) குறியீடு அங்கே உள்ளது, தயவுசெய்து அதைப் பயன்படுத்துங்கள் மற்றும் சோதித்துப் பாருங்கள். குறியீடு தணிக்கை செய்யப்படவில்லை என்பதை மட்டும் நினைவில் கொள்ளுங்கள், மேலும் இதில் பணத்தை முதலீடு செய்வதற்கு முன் நீங்கள் உங்கள் சொந்த ஆய்வைச் செய்ய வேண்டும்.
பலகையின் அடிப்படைகள் சிக்கலானவை அல்ல. பலகையில் உள்ள அனைத்து விளம்பரங்களும் சில புலங்களைக் கொண்ட ஒரு struct ஆக மட்டுமே இருக்கும்:
struct Trade {
address poster;
uint256 item;
uint256 price;
bytes32 status; // திறந்த, நிறைவேற்றப்பட்ட, ரத்து செய்யப்பட்ட
}
எனவே விளம்பரத்தை வெளியிடும் ஒருவர் இருக்கிறார். விற்பனைக்கு ஒரு பொருள். பொருளுக்கான விலை. வர்த்தகத்தின் நிலை, இது திறந்திருக்கலாம் (open), செயல்படுத்தப்பட்டிருக்கலாம் (executed) அல்லது ரத்து செய்யப்பட்டிருக்கலாம் (cancelled).
இந்த வர்த்தகங்கள் அனைத்தும் ஒரு மேப்பிங்கில் (mapping) வைக்கப்படும். ஏனெனில் Solidity-இல் உள்ள அனைத்தும் ஒரு மேப்பிங் போலவே தெரிகிறது. மேலும் இது வசதியானது என்பதாலும்.
mapping(uint256 => Trade) public trades;
ஒரு மேப்பிங்கைப் பயன்படுத்துவது என்பது, ஒவ்வொரு விளம்பரத்தையும் வெளியிடுவதற்கு முன்பு அதற்கான ஒரு ஐடியை (id) நாம் உருவாக்க வேண்டும், மேலும் ஒரு விளம்பரத்தின் மீது செயல்படுவதற்கு முன்பு அதன் ஐடியை நாம் தெரிந்து கொள்ள வேண்டும். திறன் ஒப்பந்தத்திலோ அல்லது முன்-முனையிலோ இதைக் கையாளுவதற்குப் பல வழிகள் உள்ளன. உங்களுக்குச் சில வழிகாட்டுதல்கள் தேவைப்பட்டால் தயவுசெய்து கேளுங்கள்.
அடுத்து நாம் கையாளும் அந்தப் பொருட்கள் யாவை, மற்றும் பரிவர்த்தனைக்குச் செலுத்தப் பயன்படுத்தப்படும் இந்த நாணயம் என்ன என்ற கேள்வி எழுகிறது.
பொருட்களைப் பொறுத்தவரை, அவை ERC-721 (opens in a new tab) இடைமுகத்தைச் செயல்படுத்த வேண்டும் என்று மட்டுமே நாம் கேட்கப் போகிறோம், இது உண்மையில் நிஜ உலகப் பொருட்களை ஒரு தொகுதிச்சங்கிலியில் பிரதிநிதித்துவப்படுத்துவதற்கான ஒரு வழியாகும், இருப்பினும் இது டிஜிட்டல் சொத்துக்களுடன் சிறப்பாகச் செயல்படுகிறது (opens in a new tab). ஆக்கியில் (constructor) நமது சொந்த ERC721 ஒப்பந்தத்தை நாம் குறிப்பிடப் போகிறோம், அதாவது நமது விளம்பரப் பலகையில் உள்ள எந்தவொரு சொத்துக்களும் முன்னதாகவே டோக்கனாக்கப்பட்டிருக்க வேண்டும்.
கொடுப்பனவுகளுக்கும், நாம் இதே போன்ற ஒன்றைச் செய்யப் போகிறோம். பெரும்பாலான தொகுதிச்சங்கிலி திட்டங்கள் தங்களுடைய சொந்த ERC-20 (opens in a new tab) மறைக்குறியீட்டு நாணயத்தை வரையறுக்கின்றன. வேறு சிலர் DAI போன்ற ஒரு பிரதான நாணயத்தைப் பயன்படுத்த விரும்புகிறார்கள். இந்த விளம்பரப் பலகையில், உங்கள் நாணயம் என்னவாக இருக்கும் என்பதை உருவாக்கும்போதே நீங்கள் முடிவு செய்ய வேண்டும். எளிதானது.
constructor (
address _currencyTokenAddress, address _itemTokenAddress
) public {
currencyToken = IERC20(_currencyTokenAddress);
itemToken = IERC721(_itemTokenAddress);
tradeCounter = 0;
}
நாம் இலக்கை நெருங்கிவிட்டோம். நம்மிடம் விளம்பரங்கள், வர்த்தகத்திற்கான பொருட்கள் மற்றும் கொடுப்பனவுகளுக்கான நாணயம் ஆகியவை உள்ளன. ஒரு விளம்பரத்தை உருவாக்குவது என்பது, உங்களிடம் அந்தப் பொருள் இருப்பதையும், அதை நீங்கள் இரண்டு முறை (ஒருவேளை வேறு பலகையில்) வெளியிடவில்லை என்பதையும் காட்ட, ஒரு பொருளை எஸ்க்ரோவில் (escrow) வைப்பதாகும்.
கீழே உள்ள குறியீடு சரியாக அதைத்தான் செய்கிறது. பொருளை எஸ்க்ரோவில் வைக்கிறது, விளம்பரத்தை உருவாக்குகிறது, சில பராமரிப்புப் பணிகளைச் செய்கிறது.
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) சரிபார்க்கவும்.
முடிவுரை
விளம்பரப் பலகைகள் என்பவை இணையத்தின் மூலம் பெருமளவில் விரிவடைந்த ஒரு பொதுவான சந்தை அமைப்பாகும், இது ஒரு சில ஏகபோக வெற்றியாளர்களைக் கொண்ட மிகவும் பிரபலமான வணிக மாதிரியாக மாறியுள்ளது.
விளம்பரப் பலகைகள் ஒரு தொகுதிச்சங்கிலி சூழலில் பிரதிபலிக்க எளிதான ஒரு கருவியாகவும் உள்ளன, மேலும் தற்போதுள்ள ஜாம்பவான்களுக்கு சவால் விடுவதைச் சாத்தியமாக்கும் மிகவும் குறிப்பிட்ட அம்சங்களையும் கொண்டுள்ளன.
இந்தக் கட்டுரையில், ஒரு விளம்பரப் பலகை வணிகத்தின் யதார்த்தத்திற்கும் தொழில்நுட்பச் செயலாக்கத்திற்கும் இடையே ஒரு பாலத்தை உருவாக்க நான் முயற்சி செய்துள்ளேன். உங்களிடம் சரியான திறன்கள் இருந்தால், ஒரு தொலைநோக்குப் பார்வையையும் செயலாக்கத்திற்கான திட்ட வரைபடத்தையும் உருவாக்க இந்த அறிவு உங்களுக்கு உதவ வேண்டும்.
எப்பொழுதும் போல, நீங்கள் வேடிக்கையான எதையாவது உருவாக்க விரும்பினால் மற்றும் சில ஆலோசனைகளை வரவேற்றால், தயவுசெய்து எனக்கு ஒரு செய்தி அனுப்புங்கள் (opens in a new tab)! நான் எப்போதும் உதவ மகிழ்ச்சியாக இருக்கிறேன்.