वेव्स ब्लॉकचैन पर एक विकेन्द्रीकृत सहबद्ध कार्यक्रम, बेटेक्स टीम द्वारा लहरों के लैब्स अनुदान के हिस्से के रूप में लागू किया गया।
पोस्ट विज्ञापन नहीं है! कार्यक्रम खुला स्रोत है, इसका उपयोग और वितरण मुफ्त है। कार्यक्रम का अनुप्रयोग डीएपी अनुप्रयोगों के विकास को उत्तेजित करता है और आम तौर पर विकेंद्रीकरण को बढ़ावा देता है, जो नेटवर्क के प्रत्येक उपयोगकर्ता के लिए फायदेमंद है।

सहबद्ध कार्यक्रमों के लिए dApp द्वारा प्रस्तुत परियोजनाओं के लिए एक टेम्पलेट है जो अपनी कार्यक्षमता के हिस्से के रूप में संबद्ध को शामिल करता है। कोड को कॉपी करने के लिए एक टेम्पलेट के रूप में, एक पुस्तकालय के रूप में या तकनीकी कार्यान्वयन के लिए विचारों के एक सेट के रूप में उपयोग किया जा सकता है।
कार्यक्षमता के संदर्भ में, यह एक नियमित सहबद्ध प्रणाली है जो एक रेफरल के संकेत के साथ पंजीकरण को लागू करता है, सिस्टम में पंजीकरण के लिए रेफरल और प्रेरणा के लिए पुरस्कारों की बहु-स्तरीय अभिवृद्धि (कैशबैक)। प्रणाली "शुद्ध" डीएपी है, अर्थात, वेब एप्लिकेशन सीधे अपने बैकएंड, डेटाबेस आदि के बिना ब्लॉकचेन के साथ इंटरैक्ट करता है।
तकनीकों का उपयोग किया जाता है जो कई अन्य परियोजनाओं में भी उपयोगी हो सकते हैं:
- तत्काल पुनर्भुगतान के साथ क्रेडिट पर स्मार्ट खाते को कॉल करना (कॉल के समय, कॉल का भुगतान करने के लिए खाते पर कोई टोकन नहीं हैं, लेकिन कॉल के परिणामस्वरूप वे वहां दिखाई देते हैं)।
- पीओडब्ल्यू-कैप्चा - स्मार्ट खाता कार्यों के उच्च आवृत्ति स्वचालित कॉलिंग के खिलाफ सुरक्षा - कैप्चा का एक एनालॉग, लेकिन कंप्यूटिंग संसाधनों के उपयोग के प्रमाण के माध्यम से।
- टेम्पलेट द्वारा डेटा कुंजी के लिए अनुरोध।
आवेदन के होते हैं:
- भाषा सवारी में स्मार्ट खाता कोड 4dapps (जो कि डिजाइन द्वारा, मुख्य स्मार्ट खाते में विलय कर दिया जाता है, जिसके लिए आपको संबद्ध-कार्यक्षमता को लागू करने की आवश्यकता होती है);
- js रैपर जो WAVES NODE REST API पर अमूर्तन के स्तर को लागू करते हैं;
- vuejs ढांचे पर कोड, जो पुस्तकालय और RIDE कोड का उपयोग करने का एक उदाहरण है।
हम इन सभी विशेषताओं का वर्णन करते हैं।
तत्काल पुनर्भुगतान के साथ क्रेडिट पर स्मार्ट खाता कॉल करेंइनवोकस्क्रिप्ट कॉल को लेन-देन आरंभ करने वाले खाते से शुल्क की आवश्यकता होती है। यह एक समस्या नहीं है यदि आप ब्लॉकचेन गीक्स के लिए एक परियोजना कर रहे हैं जिनके खाते में कुछ WAVES टोकन हैं, लेकिन यदि उत्पाद व्यापक उपयोग के उद्देश्य से है, तो यह एक गंभीर समस्या बन जाती है। आखिरकार, उपयोगकर्ता को WAVES टोकन (या किसी अन्य उपयुक्त संपत्ति जिसके साथ आप लेनदेन के लिए भुगतान कर सकते हैं) खरीदने का ध्यान रखना चाहिए, जो परियोजना में प्रवेश करने के लिए पहले से ही काफी सीमा बढ़ाता है। हम उपयोगकर्ताओं को परिसंपत्तियां वितरित कर सकते हैं, जो हमें लेनदेन के लिए भुगतान करने और उनके दुरुपयोग के जोखिम का सामना करने की अनुमति देगा जब स्वचालित प्रणाली हमारे सिस्टम से तरल संपत्ति को बाहर निकालने के लिए बनाई जाती है।
यह बहुत सुविधाजनक होगा अगर यह संभव होगा कि एक प्राप्तकर्ता को "प्राप्तकर्ता की कीमत पर" कॉल किया जाए (वह स्मार्ट खाता जिस पर स्क्रिप्ट स्थापित है), और ऐसी संभावना, हालांकि एक स्पष्ट तरीके से मौजूद नहीं है।
यदि आप कॉल करने वाले के पते पर InvokeScript के अंदर ScriptTransfer निष्पादित करते हैं, जो शुल्क पर खर्च किए गए टोकन की भरपाई करता है, तो ऐसी कॉल सफल होगी, भले ही कॉल के समय कॉलिंग खाते पर कोई संपत्ति न हो। यह इस तथ्य के कारण संभव है कि लेन-देन के बाद पर्याप्त संख्या में टोकन की जांच की जाती है, और इससे पहले नहीं, ताकि उनके तत्काल पुनर्भुगतान के अधीन क्रेडिट पर लेनदेन करना संभव हो।
ScriptTransfer (i.caller, i.fee, unit)नीचे दिया गया कोड स्मार्ट खाते की कीमत पर खर्च किए गए शुल्क को वापस कर देता है। इस सुविधा के दुरुपयोग से बचाने के लिए, आपको चेक का उपयोग करना चाहिए कि कॉलर सही संपत्ति में और उचित सीमा के भीतर शुल्क खर्च कर रहा है:
func checkFee(i:Invocation) = { if i.fee > maxFee then throw(“unreasonable large fee”) else if i.feeAssetId != unit then throw(“fee must be in WAVES”) else true }
इसके अलावा, निधियों के दुर्भावनापूर्ण और संवेदनहीन कचरे से सुरक्षा के लिए स्वचालित कॉलिंग (PoW-captcha) से सुरक्षा की आवश्यकता होती है
पॉव-कैप्चाप्रूफ-ऑफ-वर्क कैप्चा का विचार नया नहीं है और पहले से ही विभिन्न परियोजनाओं में लागू किया गया है, जिनमें WAVES के आधार पर लागू किए गए हैं। यह विचार यह है कि हमारी परियोजना के संसाधनों को बर्बाद करने वाली कार्रवाई के लिए, कॉल करने वाले को अपने स्वयं के संसाधनों को भी खर्च करना होगा, जो संसाधन की कमी पर हमले को काफी महंगा बनाता है। लेनदेन के प्रेषक ने पीओडब्ल्यू कार्य को हल किया है कि एक बहुत ही आसान और कम लागत वाले सत्यापन के लिए, लेनदेन के लिए एक जांच है:
अगर ले (toBase58String (i.transactionId), 3)! = "123" तब फेंक ("काम का प्रमाण विफल")लेन-देन का संचालन करने के लिए, कॉलर को ऐसे मापदंडों का चयन करना होगा ताकि उसका आधार 58 कोड (आईडी) 123 से शुरू हो, जो औसतन दसियों सेकंड के प्रोसेसर समय के औसत से मेल खाता है और आमतौर पर हमारे कार्य के लिए उचित है। यदि एक सरल या अधिक जटिल पीओडब्ल्यू की आवश्यकता होती है, तो कार्य को स्पष्ट तरीके से परिष्कृत करना आसान है।
टेम्पलेट द्वारा डेटा कुंजी के लिए अनुरोधडेटाबेस के रूप में ब्लॉकचेन का उपयोग करने के लिए, डेटाबेस को की-वैल टेम्प्लेट के रूप में क्वेरी करने के लिए एपीआई उपकरण होना महत्वपूर्ण है। ऐसा टूलकिट जुलाई 2019 की शुरुआत में दिखाई दिया था। REST API अनुरोध
/ पते / डेटा के मिलान पैरामीटर
= मिलान = regexp । अब, अगर हमें एक वेब अनुप्रयोग से एक बार में एक कुंजी नहीं बल्कि सभी कुंजी प्राप्त करने की आवश्यकता है, लेकिन केवल कुछ समूह, तो हम कुंजी नाम से चयन कर सकते हैं। उदाहरण के लिए, इस परियोजना में, निकासी लेनदेन को एन्कोड किया गया है
withdraw_${userAddress}_${txid}
जो आपको टेम्पलेट के अनुसार किसी भी पते के लिए धन निकालने के लिए लेनदेन की एक सूची प्राप्त करने की अनुमति देता है:
?matches=withdraw_${userAddress}_.*
अब हम टर्नकी समाधान के घटकों का विश्लेषण करेंगे।
Vuejs कोडकोड एक वास्तविक परियोजना के करीब एक कामकाजी डेमो है। यह वेव्स कीपर के माध्यम से लॉगिन को कार्यान्वित करता है और एफिलिएट.जेएस लाइब्रेरी के साथ काम करता है, जिसकी सहायता से यह सिस्टम में उपयोगकर्ता को पंजीकृत करता है, लेनदेन डेटा का सर्वेक्षण करता है, और आपको उपयोगकर्ता के खाते में अर्जित धन को वापस लेने की भी अनुमति देता है।
RIDE कोडइसमें रजिस्टर, फंड और निकासी कार्य शामिल हैं।
रजिस्टर फ़ंक्शन उपयोगकर्ता प्रणाली के साथ पंजीकृत करता है। इसके दो पैरामीटर हैं: रेफरर (रेफरर एड्रेस) और नमक पैरामीटर, जिसका उपयोग फ़ंक्शन कोड में नहीं किया जाता है, जिसे लेनदेन आईडी (पीओडब्ल्यू-कैप्चा कार्य) का चयन करने की आवश्यकता होती है।
फ़ंक्शन (इस परियोजना से अन्य कार्यों की तरह) उधार तकनीक का उपयोग करता है, फ़ंक्शन का परिणाम इस फ़ंक्शन को कॉल करने के लिए शुल्क का वित्तपोषण करता है। इस निर्णय के लिए धन्यवाद, जिस उपयोगकर्ता ने अभी-अभी वॉलेट बनाया है, वह तुरंत सिस्टम के साथ काम कर सकता है और उसे एक संपत्ति खरीदने या प्राप्त करने के मुद्दे से हैरान होने की आवश्यकता नहीं है जो आपको लेनदेन शुल्क का भुगतान करने की अनुमति देता है।
पंजीकरण समारोह का परिणाम दो प्रविष्टियाँ हैं:
${owner)_referer = referer ${referer}_referral_${owner} = owner
यह प्रत्यक्ष और रिवर्स खोज (इस उपयोगकर्ता का संदर्भ और इस उपयोगकर्ता के सभी संदर्भ) की अनुमति देता है।
वास्तविक कार्यक्षमता विकसित करने के लिए फंड फ़ंक्शन अधिक संभावना है। प्रस्तुत रूप में, यह लेन-देन द्वारा हस्तांतरित सभी निधियों को लेता है और उन्हें 1, 2, 3 के खातों में "कैशबैक" खाते और "परिवर्तन" खाते में वितरित करता है (पिछले खातों को वितरित करते समय जो कुछ भी रहता है)।
कैशबैक रेफरल सिस्टम में भाग लेने के लिए अंतिम उपयोगकर्ता को उत्तेजित करने का एक साधन है। उपयोगकर्ता सिस्टम द्वारा भुगतान किए गए कमीशन के हिस्से को "कैशबैक" के रूप में उसी तरह से वापस ले सकता है जैसे रेफरल के लिए पुरस्कार।
रेफरल सिस्टम का उपयोग करते समय, फंड फ़ंक्शन को स्मार्ट खाते के मुख्य तर्क में निर्मित किया जाना चाहिए, जिस पर सिस्टम काम करेगा। उदाहरण के लिए, यदि दांव के लिए रेफरल शुल्क का भुगतान किया जाता है, तो फंड फ़ंक्शन को उस तर्क में बनाया जाना चाहिए, जहां दांव बनाया जाता है (या कोई अन्य लक्षित कार्रवाई की जाती है, जिसके लिए शुल्क का भुगतान किया जाता है)। यह फ़ंक्शन रेफरल पुरस्कार के तीन स्तरों को एन्कोड करता है। यदि आपको अधिक या कम स्तर करने की आवश्यकता है, तो यह कोड में भी सही है। पारिश्रमिक का प्रतिशत Level1-level3 स्थिरांक द्वारा निर्धारित किया जाता है, कोड में इसे
राशि * स्तर / 1000 माना जाता है, अर्थात, मान 1 1 0.1% से मेल खाती है (इसे कोड में भी बदला जा सकता है)।
फंक्शन कॉल अकाउंट के बैलेंस को बदल देता है और फॉर्म में लॉग इन करने के उद्देश्य से प्रविष्टियाँ भी बनाता है:
fund_address_txid = address:owner:inc:level:timestamp timestamp ( ) func getTimestamp() = { let block = extract(blockInfoByHeight(height)) toString(block.timestamp) }
यही है, लेनदेन का समय उस ब्लॉक का समय है जिसमें यह स्थित है। यह लेनदेन से टाइमस्टैम्प का उपयोग करने से अधिक विश्वसनीय है, खासकर जब से यह कॉल करने योग्य से सुलभ नहीं है।
वापसी समारोह उपयोगकर्ता खाते पर सभी संचित पुरस्कार प्रदर्शित करता है। लॉगिंग उद्देश्यों के लिए प्रविष्टियाँ बनाता है:
# withdraw log: withdraw_user_txid=amount:timestamp
आवेदनएप्लिकेशन का मुख्य भाग सहबद्ध.जेएस लाइब्रेरी है, जो संबद्ध डेटा मॉडल और WAVES NODE REST API के बीच एक पुल है। इम्प्लांटेशन फ्रेमवर्क से स्वतंत्र मतिहीनता का एक स्तर है (कोई भी इस्तेमाल किया जा सकता है)। सक्रिय फ़ंक्शंस (रजिस्टर, वापस लेना) मान लेते हैं कि सिस्टम में वेव्स कीपर स्थापित किया गया है, पुस्तकालय स्वयं इसकी जांच नहीं करता है।
लागू करने के तरीके:
fetchReferralTransactions fetchWithdrawTransactions fetchMyBalance fetchReferrals fetchReferer withdraw register
विधियों की कार्यक्षमता नाम से स्पष्ट है, पैरामीटर और रिटर्न किए गए डेटा कोड में वर्णित हैं। रजिस्टर फ़ंक्शन को अतिरिक्त टिप्पणियों की आवश्यकता है - यह लेनदेन आईडी मिलान चक्र शुरू करता है ताकि यह 123 से शुरू हो जाए - यह ऊपर वर्णित पीओडब्ल्यू-कैप्चा है, जो बड़े पैमाने पर पंजीकरण से बचाता है। फ़ंक्शन वांछित आईडी के साथ लेनदेन पाता है, और फिर वेव्स कीपर के माध्यम से हस्ताक्षर करता है।
DEX सहबद्ध कार्यक्रम
GitHub.com पर उपलब्ध है।