புரோஹோஸ்டர் > Блог > நிர்வாகம் > அலைகளை உருவாக்குவது, வரிசைப்படுத்துவது மற்றும் சோதனை செய்வது எப்படி RIDE dApp
அலைகளை உருவாக்குவது, வரிசைப்படுத்துவது மற்றும் சோதனை செய்வது எப்படி RIDE dApp
வணக்கம்! இந்தக் கட்டுரையில், அலைகள் முனையில் ஒரு வழக்கமான dApp ஐ எவ்வாறு எழுதுவது மற்றும் இயக்குவது என்பதைக் காண்பிப்பேன். தேவையான கருவிகள், முறைகள் மற்றும் வளர்ச்சியின் உதாரணம் ஆகியவற்றைப் பார்ப்போம்.
dApps மற்றும் வழக்கமான பயன்பாடுகளுக்கான மேம்பாட்டுத் திட்டம் கிட்டத்தட்ட ஒரே மாதிரியாக உள்ளது:
எழுத்து குறியீடு
தானியங்கி சோதனை எழுதுதல்
பயன்பாட்டைத் தொடங்கவும்
சோதனை
கருவிகள்
1. docker முனை மற்றும் வேவ்ஸ் எக்ஸ்ப்ளோரரை இயக்க
நீங்கள் முனையைத் தொடங்க விரும்பவில்லை என்றால், இந்தப் படிநிலையைத் தவிர்க்கலாம். எல்லாவற்றிற்கும் மேலாக, ஒரு சோதனை மற்றும் சோதனை நெட்வொர்க் உள்ளது. ஆனால் உங்கள் சொந்த முனையை பயன்படுத்தாமல், சோதனை செயல்முறை இழுக்கப்படலாம்.
சோதனை டோக்கன்களுடன் உங்களுக்கு தொடர்ந்து புதிய கணக்குகள் தேவைப்படும். சோதனை நெட்வொர்க் குழாய் ஒவ்வொரு 10 நிமிடங்களுக்கும் 10 அலைகளை மாற்றுகிறது.
சோதனை நெட்வொர்க்கில் சராசரி தொகுதி நேரம் 1 நிமிடம், முனையில் - 15 வினாடிகள். ஒரு பரிவர்த்தனைக்கு பல உறுதிப்படுத்தல்கள் தேவைப்படும்போது இது குறிப்பாக கவனிக்கப்படுகிறது.
பொது சோதனை முனைகளில் ஆக்கிரமிப்பு கேச்சிங் சாத்தியமாகும்.
பராமரிப்பு காரணமாக அவை தற்காலிகமாக கிடைக்காமல் போகலாம்.
இனிமேல் நீங்கள் உங்கள் சொந்த முனையுடன் வேலை செய்கிறீர்கள் என்று கருதுகிறேன்.
சர்போர்டை நிறுவவும், இது ஏற்கனவே உள்ள முனையில் சோதனைகளை இயக்க உங்களை அனுமதிக்கும் கருவியாகும்.
npm install -g @waves/surfboard
3. விஷுவல் ஸ்டுடியோ குறியீடு சொருகி
நீங்கள் IDEகளின் ரசிகராக இல்லாவிட்டால் மற்றும் உரை எடிட்டர்களை விரும்பினால் இந்தப் படி விருப்பமானது. தேவையான அனைத்து கருவிகளும் கட்டளை வரி பயன்பாடுகள். நீங்கள் விம் பயன்படுத்தினால், சொருகி கவனம் செலுத்துங்கள் விம்-சவாரி.
விஷுவல் ஸ்டுடியோ குறியீட்டைப் பதிவிறக்கி நிறுவவும்: https://code.visualstudio.com/
VS குறியீட்டைத் திறந்து வேவ்ஸ்-ரைடு செருகுநிரலை நிறுவவும்:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
உலாவியைத் திறந்து அதற்குச் செல்லவும் http://localhost:3000. வெற்று உள்ளூர் முனை சுற்று எவ்வளவு விரைவாக கட்டப்பட்டது என்பதை நீங்கள் காண்பீர்கள்.
Waves Explorer ஒரு உள்ளூர் முனை நிகழ்வைக் காட்டுகிறது
RIDE அமைப்பு மற்றும் சர்ப்போர்டு கருவி
வெற்று கோப்பகத்தை உருவாக்கி அதில் கட்டளையை இயக்கவும்
surfboard init
கட்டளையானது திட்ட அமைப்பு, "ஹலோ வேர்ல்ட்" பயன்பாடுகள் மற்றும் சோதனைகளுடன் ஒரு கோப்பகத்தை துவக்குகிறது. இந்த கோப்புறையை VS குறியீட்டுடன் திறந்தால், நீங்கள் பார்ப்பீர்கள்:
Surfboard.config.json
./ride/ கோப்புறையின் கீழ் நீங்கள் ஒரு ஒற்றை கோப்பை wallet.ride-ஐக் காண்பீர்கள் - dApp குறியீடு அமைந்துள்ள கோப்பகம். அடுத்த தொகுதியில் dApps பற்றி சுருக்கமாக பகுப்பாய்வு செய்வோம்.
./test/ கோப்புறையின் கீழ் நீங்கள் *.js கோப்பைக் காண்பீர்கள். சோதனைகள் இங்கே சேமிக்கப்படுகின்றன.
./surfboard.config.json – இயங்கும் சோதனைகளுக்கான உள்ளமைவு கோப்பு.
Envs ஒரு முக்கியமான பகுதி. ஒவ்வொரு சூழலும் இவ்வாறு கட்டமைக்கப்பட்டுள்ளது:
நெட்வொர்க்கின் dApp மற்றும் CHAIN_ID ஐத் தொடங்கப் பயன்படுத்தப்படும் முனையின் REST API இறுதிப்புள்ளி.
உங்கள் சோதனை டோக்கன்களின் ஆதாரமாக இருக்கும் டோக்கன்களைக் கொண்ட கணக்கிற்கான ரகசிய சொற்றொடர்.
நீங்கள் பார்க்க முடியும் என, surfboard.config.json முன்னிருப்பாக பல சூழல்களை ஆதரிக்கிறது. இயல்புநிலை என்பது உள்ளூர் சூழல் (defaultEnv விசை மாற்றக்கூடிய அளவுரு).
Wallet-டெமோ பயன்பாடு
இந்தப் பிரிவு RIDE மொழிக்கான குறிப்பு அல்ல. மாறாக, பிளாக்செயினில் என்ன நடக்கிறது என்பதை நன்கு புரிந்துகொள்ள, நாங்கள் பயன்படுத்திய மற்றும் சோதிக்கும் பயன்பாட்டைப் பாருங்கள்.
ஒரு எளிய Wallet-டெமோ பயன்பாட்டைப் பார்ப்போம். dApp முகவரிக்கு யார் வேண்டுமானாலும் டோக்கன்களை அனுப்பலாம். உங்கள் அலைகளை மட்டுமே நீங்கள் திரும்பப் பெற முடியும். InvokeScript பரிவர்த்தனை மூலம் இரண்டு @Callable செயல்பாடுகள் கிடைக்கின்றன:
பாப் 7 அலைகளை திரும்பப் பெறுகிறார்
மறுக்கப்பட்டது!
ஆலிஸ் 4 அலைகளை திரும்பப் பெறுகிறார்
ஆலிஸ்-முகவரி → 100000000
பாப் முகவரி → 200000000
நிலைமையை முழுமையாகப் புரிந்துகொள்ள இங்கே குறியீடு உள்ளது:
# In this example multiple accounts can deposit their funds and safely take them back. No one can interfere with this.
# An inner state is maintained as mapping `address=>waves`.
{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
@Callable(i)
func deposit() = {
let pmt = extract(i.payment)
if (isDefined(pmt.assetId))
then throw("works with waves only")
else {
let currentKey = toBase58String(i.caller.bytes)
let currentAmount = match getInteger(this, currentKey) {
case a:Int => a
case _ => 0
}
let newAmount = currentAmount + pmt.amount
WriteSet([DataEntry(currentKey, newAmount)])
}
}
@Callable(i)
func withdraw(amount: Int) = {
let currentKey = toBase58String(i.caller.bytes)
let currentAmount = match getInteger(this, currentKey) {
case a:Int => a
case _ => 0
}
let newAmount = currentAmount - amount
if (amount < 0)
then throw("Can't withdraw negative amount")
else if (newAmount < 0)
then throw("Not enough balance")
else ScriptResult(
WriteSet([DataEntry(currentKey, newAmount)]),
TransferSet([ScriptTransfer(i.caller, amount, unit)])
)
}
@Verifier(tx)
func verify() = false
VSCode செருகுநிரல் ஒரு கோப்பைத் திருத்தும் போது தொடர்ச்சியான தொகுப்பை ஆதரிக்கிறது. எனவே, நீங்கள் எப்போதும் பிரச்சனைகள் தாவலில் பிழைகளை கண்காணிக்க முடியும்.
கோப்பை தொகுக்கும்போது வேறு டெக்ஸ்ட் எடிட்டரைப் பயன்படுத்த விரும்பினால், பயன்படுத்தவும்
surfboard compile ride/wallet.ride
இது பேஸ்64 தொகுக்கப்பட்ட RIDE குறியீட்டின் தொடரை வெளியிடும்.
'wallet.ride'க்கான சோதனை ஸ்கிரிப்ட்
பார்க்கலாம் சோதனை கோப்பு. ஜாவாஸ்கிரிப்ட்டின் மோச்சா கட்டமைப்பால் இயக்கப்படுகிறது. "முன்" செயல்பாடு மற்றும் மூன்று சோதனைகள் உள்ளன:
"முன்" MassTransferTransaction மூலம் பல கணக்குகளுக்கு நிதியளிக்கிறது, ஸ்கிரிப்டை தொகுத்து அதை பிளாக்செயினில் பயன்படுத்துகிறது.
"டெபாசிட் செய்யலாம்" என்பது பிணையத்திற்கு இன்வோக்ஸ்கிரிப்ட் பரிவர்த்தனையை அனுப்புகிறது, இரண்டு கணக்குகளில் ஒவ்வொன்றிற்கும் டெபாசிட்() செயல்பாட்டைச் செயல்படுத்துகிறது.
"டெபாசிட் செய்ததை விட அதிகமாக எடுக்க முடியாது" சோதனைகள் பிறரின் டோக்கன்களை யாரும் திருட முடியாது.
"டெபாசிட் செய்யலாம்" திரும்பப் பெறுதல்கள் சரியாகச் செயலாக்கப்பட்டதா என்பதைச் சரிபார்க்கிறது.
சர்போர்டில் இருந்து சோதனைகளை இயக்கவும் மற்றும் Waves Explorer இல் முடிவுகளை பகுப்பாய்வு செய்யவும்
சோதனையை இயக்க, இயக்கவும்
surfboard test
உங்களிடம் பல ஸ்கிரிப்ட்கள் இருந்தால் (உதாரணமாக, உங்களுக்கு தனி வரிசைப்படுத்தல் ஸ்கிரிப்ட் தேவை), நீங்கள் இயக்கலாம்
surfboard test my-scenario.js
சர்ப்போர்டு சோதனைக் கோப்புகளை ./test/ கோப்புறையில் சேகரித்து, surfboard.config.json இல் உள்ளமைக்கப்பட்ட முனையில் ஸ்கிரிப்டை இயக்கும். சில வினாடிகளுக்குப் பிறகு நீங்கள் இதைப் போன்ற ஒன்றைக் காண்பீர்கள்:
wallet test suite
Generating accounts with nonce: ce8d86ee
Account generated: foofoofoofoofoofoofoofoofoofoofoo#ce8d86ee - 3M763WgwDhmry95XzafZedf7WoBf5ixMwhX
Account generated: barbarbarbarbarbarbarbarbarbar#ce8d86ee - 3MAi9KhwnaAk5HSHmYPjLRdpCAnsSFpoY2v
Account generated: wallet#ce8d86ee - 3M5r6XYMZPUsRhxbwYf1ypaTB6MNs2Yo1Gb
Accounts successfully funded
Script has been set
√ Can deposit (4385ms)
√ Cannot withdraw more than was deposited
√ Can withdraw (108ms)
3 passing (15s)
ஹூரே! சோதனைகள் தேர்ச்சி பெற்றன. இப்போது Waves Explorer ஐப் பயன்படுத்தும் போது என்ன நடக்கிறது என்பதைப் பார்ப்போம்: தொகுதிகளைப் பாருங்கள் அல்லது மேலே உள்ள முகவரிகளில் ஒன்றைத் தேடலில் ஒட்டவும் (எடுத்துக்காட்டாக, தொடர்புடையது wallet#. அங்கு நீங்கள் பரிவர்த்தனை வரலாறு, dApp நிலை, சிதைக்கப்பட்ட பைனரி கோப்பு ஆகியவற்றைக் காணலாம்.
அலைகள் எக்ஸ்ப்ளோரர். இப்போது பயன்படுத்தப்பட்ட ஒரு பயன்பாடு.
2. பரிவர்த்தனைகளின் JSON பதிப்புகள் மற்றும் அவை கணு மூலம் எவ்வாறு செயலாக்கப்படுகின்றன என்பதைப் பார்க்க விரும்பினால், -v உடன் சோதனையை இயக்கவும் ('வெர்போஸ்' என்று பொருள்):
லோக்கல் நோட் உடன் வேலை செய்ய வேவ்ஸ் கீப்பரை அமைத்தல்
2. நெட்வொர்க்கிற்கான டோக்கன்களுடன் இரகசிய சொற்றொடரை இறக்குமதி செய்யவா? எளிமைக்காக, உங்கள் முனையின் ஆரம்ப விதையைப் பயன்படுத்தவும்: waves private node seed with waves tokens. முகவரி: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.