ప్రోహోస్టర్ > బ్లాగ్ > పరిపాలన > RIDE dApp వేవ్లను ఎలా నిర్మించాలి, అమలు చేయాలి మరియు పరీక్షించాలి
RIDE dApp వేవ్లను ఎలా నిర్మించాలి, అమలు చేయాలి మరియు పరీక్షించాలి
హలో! ఈ ఆర్టికల్లో వేవ్స్ నోడ్లో సాధారణ dAppని ఎలా వ్రాయాలి మరియు అమలు చేయాలో నేను మీకు చూపుతాను. అవసరమైన సాధనాలు, పద్ధతులు మరియు అభివృద్ధి యొక్క ఉదాహరణను చూద్దాం.
dApps మరియు సాధారణ అప్లికేషన్ల అభివృద్ధి పథకం దాదాపు ఒకే విధంగా ఉంటుంది:
కోడ్ రాయడం
స్వయంచాలక పరీక్ష రాయడం
అప్లికేషన్ను ప్రారంభిస్తోంది
పరీక్షిస్తోంది
సాధన
1. docker నోడ్ మరియు వేవ్స్ ఎక్స్ప్లోరర్ని అమలు చేయడానికి
మీరు నోడ్ను ప్రారంభించకూడదనుకుంటే, మీరు ఈ దశను దాటవేయవచ్చు. అన్ని తరువాత, ఒక పరీక్ష మరియు ప్రయోగాత్మక నెట్వర్క్ ఉంది. కానీ మీ స్వంత నోడ్ని అమలు చేయకుండా, పరీక్ష ప్రక్రియ లాగబడవచ్చు.
పరీక్ష టోకెన్లతో మీకు నిరంతరం కొత్త ఖాతాలు అవసరం. టెస్ట్ నెట్వర్క్ పీపాలో నుంచి నీళ్లు బయిటికి రావడమునకు వేసివుండే చిన్న గొట్టము ప్రతి 10 నిమిషాలకు 10 వేవ్లను బదిలీ చేస్తుంది.
పరీక్ష నెట్వర్క్లో సగటు బ్లాక్ సమయం 1 నిమిషం, నోడ్లో - 15 సెకన్లు. లావాదేవీకి బహుళ నిర్ధారణలు అవసరమైనప్పుడు ఇది ప్రత్యేకంగా గమనించవచ్చు.
పబ్లిక్ టెస్ట్ నోడ్లలో దూకుడు కాషింగ్ సాధ్యమవుతుంది.
నిర్వహణ కారణంగా అవి కూడా తాత్కాలికంగా అందుబాటులో ఉండకపోవచ్చు.
ఇప్పటి నుండి మీరు మీ స్వంత నోడ్తో పని చేస్తున్నారని నేను అనుకుంటాను.
సర్ఫ్బోర్డ్ను ఇన్స్టాల్ చేయండి, ఇది ఇప్పటికే ఉన్న నోడ్లో పరీక్షలను అమలు చేయడానికి మిమ్మల్ని అనుమతించే సాధనం.
npm install -g @waves/surfboard
3. విజువల్ స్టూడియో కోడ్ ప్లగ్ఇన్
మీరు IDEల అభిమాని కాకపోతే మరియు టెక్స్ట్ ఎడిటర్లను ఇష్టపడితే ఈ దశ ఐచ్ఛికం. అవసరమైన అన్ని సాధనాలు కమాండ్ లైన్ యుటిలిటీలు. మీరు vim ఉపయోగిస్తే, ప్లగ్ఇన్పై శ్రద్ధ వహించండి విమ్-రైడ్.
విజువల్ స్టూడియో కోడ్ని డౌన్లోడ్ చేసి, ఇన్స్టాల్ చేయండి: https://code.visualstudio.com/
VS కోడ్ని తెరిచి, వేవ్స్-రైడ్ ప్లగిన్ను ఇన్స్టాల్ చేయండి:
2. వేవ్స్ ఎక్స్ప్లోరర్ యొక్క ఉదాహరణను ప్రారంభించండి:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
బ్రౌజర్ని తెరిచి, దీనికి వెళ్లండి http://localhost:3000. ఖాళీ స్థానిక నోడ్ సర్క్యూట్ ఎంత త్వరగా నిర్మించబడిందో మీరు చూస్తారు.
వేవ్స్ ఎక్స్ప్లోరర్ స్థానిక నోడ్ ఉదాహరణను ప్రదర్శిస్తుంది
RIDE నిర్మాణం మరియు సర్ఫ్బోర్డ్ సాధనం
ఖాళీ డైరెక్టరీని సృష్టించండి మరియు దానిలో ఆదేశాన్ని అమలు చేయండి
surfboard init
కమాండ్ ప్రాజెక్ట్ నిర్మాణం, "హలో వరల్డ్" అప్లికేషన్లు మరియు పరీక్షలతో డైరెక్టరీని ప్రారంభిస్తుంది. మీరు VS కోడ్తో ఈ ఫోల్డర్ని తెరిస్తే, మీరు చూస్తారు:
Surfboard.config.json
./ride/ ఫోల్డర్ క్రింద మీరు ఒకే ఫైల్ wallet.rideని కనుగొంటారు - dApp కోడ్ ఉన్న డైరెక్టరీ. మేము తదుపరి బ్లాక్లో dAppలను క్లుప్తంగా విశ్లేషిస్తాము.
./test/ ఫోల్డర్ కింద మీరు *.js ఫైల్ను కనుగొంటారు. పరీక్షలు ఇక్కడ నిల్వ చేయబడతాయి.
./surfboard.config.json – నడుస్తున్న పరీక్షల కోసం కాన్ఫిగరేషన్ ఫైల్.
Envs ఒక ముఖ్యమైన విభాగం. ప్రతి పర్యావరణం ఇలా కాన్ఫిగర్ చేయబడింది:
నెట్వర్క్ యొక్క dApp మరియు CHAIN_IDని ప్రారంభించేందుకు ఉపయోగించే నోడ్ యొక్క REST API ముగింపు స్థానం.
మీ పరీక్ష టోకెన్లకు మూలాలుగా ఉండే టోకెన్లతో కూడిన ఖాతా కోసం రహస్య పదబంధం.
మీరు చూడగలిగినట్లుగా, surfboard.config.json డిఫాల్ట్గా బహుళ వాతావరణాలకు మద్దతు ఇస్తుంది. డిఫాల్ట్ స్థానిక పర్యావరణం (defaultEnv కీ మార్చదగిన పరామితి).
Wallet-డెమో అప్లికేషన్
ఈ విభాగం RIDE భాషకు సూచన కాదు. బదులుగా, బ్లాక్చెయిన్లో ఏమి జరుగుతుందో బాగా అర్థం చేసుకోవడానికి మేము అమలు చేసే మరియు పరీక్షించే అప్లికేషన్ను చూడండి.
సాధారణ Wallet-డెమో అప్లికేషన్ను చూద్దాం. ఎవరైనా dApp చిరునామాకు టోకెన్లను పంపవచ్చు. మీరు మీ వేవ్లను మాత్రమే ఉపసంహరించుకోవచ్చు. ఇన్వోక్స్క్రిప్ట్ ట్రాన్సాక్షన్ ద్వారా రెండు @కాల్ చేయగల ఫంక్షన్లు అందుబాటులో ఉన్నాయి:
deposit()వేవ్స్లో జోడించిన చెల్లింపు అవసరం
withdraw(amount: Int)ఇది టోకెన్లను తిరిగి ఇస్తుంది
dApp జీవితచక్రం అంతటా, నిర్మాణం (చిరునామా → మొత్తం) నిర్వహించబడుతుంది:
క్రియ
ఫలిత స్థితి
ప్రారంభ
ఖాళీగా
ఆలిస్ 5 వేవ్లను డిపాజిట్ చేసింది
ఆలిస్-చిరునామా → 500000000
పరిస్థితిని పూర్తిగా అర్థం చేసుకోవడానికి ఇక్కడ కోడ్ ఉంది:
# 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 ద్వారా బహుళ ఖాతాలకు నిధులు సమకూరుస్తుంది, స్క్రిప్ట్ను కంపైల్ చేస్తుంది మరియు దానిని బ్లాక్చెయిన్కు అమలు చేస్తుంది.
“డిపాజిట్ చేయగలదు” అనేది నెట్వర్క్కు ఇన్వోక్స్క్రిప్ట్ లావాదేవీని పంపుతుంది, ప్రతి రెండు ఖాతాలకు డిపాజిట్() ఫంక్షన్ని సక్రియం చేస్తుంది.
ఇతరుల టోకెన్లను ఎవరూ దొంగిలించలేని “డిపాజిట్ చేసిన దానికంటే ఎక్కువ తీసుకోలేరు” పరీక్షలు.
ఉపసంహరణలు సరిగ్గా ప్రాసెస్ చేయబడతాయో లేదో తనిఖీలను "డిపాజిట్ చేయవచ్చు".
సర్ఫ్బోర్డ్ నుండి పరీక్షలను అమలు చేయండి మరియు వేవ్స్ ఎక్స్ప్లోరర్లో ఫలితాలను విశ్లేషించండి
పరీక్షను అమలు చేయడానికి, అమలు చేయండి
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)
హుర్రే! పరీక్షలు పాసయ్యాయి. వేవ్స్ ఎక్స్ప్లోరర్ని ఉపయోగిస్తున్నప్పుడు ఏమి జరుగుతుందో ఇప్పుడు చూద్దాం: బ్లాక్లను చూడండి లేదా పైన ఉన్న చిరునామాలలో ఒకదాన్ని శోధనలో అతికించండి (ఉదాహరణకు, సంబంధిత wallet#. అక్కడ మీరు లావాదేవీ చరిత్ర, dApp స్థితి, డీకంపైల్డ్ బైనరీ ఫైల్ను కనుగొనవచ్చు.
వేవ్స్ ఎక్స్ప్లోరర్. ఇప్పుడే అమలు చేయబడిన అప్లికేషన్.
కొన్ని సర్ఫ్బోర్డ్ చిట్కాలు:
1. testnet వాతావరణంలో పరీక్షించడానికి, ఉపయోగించండి:
2. మీరు లావాదేవీల యొక్క JSON సంస్కరణలను చూడాలనుకుంటే మరియు అవి నోడ్ ద్వారా ఎలా ప్రాసెస్ చేయబడతాయో చూడాలనుకుంటే, పరీక్షను -vతో అమలు చేయండి (అంటే 'వెర్బోస్'):
స్థానిక నోడ్తో పని చేయడానికి వేవ్స్ కీపర్ని సెటప్ చేస్తోంది
2. నెట్వర్క్ కోసం టోకెన్లతో రహస్య పదబంధాన్ని దిగుమతి చేయాలా? సరళత కోసం, మీ నోడ్ యొక్క ప్రారంభ సీడ్ని ఉపయోగించండి: waves private node seed with waves tokens. చిరునామా: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.