پرو ہوسٹر > بلاگ > انتظامیہ > RIDE dApp کی تشکیل، تعیناتی اور لہروں کی جانچ کیسے کریں۔
RIDE dApp کی تشکیل، تعیناتی اور لہروں کی جانچ کیسے کریں۔
ہیلو! اس آرٹیکل میں میں آپ کو دکھاؤں گا کہ ویوز نوڈ پر باقاعدہ ڈی اے پی کیسے لکھنا اور چلانا ہے۔ آئیے ضروری آلات، طریقوں اور ترقی کی ایک مثال کو دیکھتے ہیں۔
dApps اور ریگولر ایپلیکیشنز کے لیے ترقیاتی اسکیم تقریباً ایک جیسی ہے:
تحریری کوڈ
خودکار جانچ لکھنا
ایپلیکیشن لانچ کریں۔
ٹیسٹنگ
فورم کے اوزار
1. docker نوڈ اور ویوز ایکسپلورر چلانے کے لیے
اگر آپ نوڈ شروع نہیں کرنا چاہتے ہیں، تو آپ اس قدم کو چھوڑ سکتے ہیں۔ سب کے بعد، ایک ٹیسٹ اور تجرباتی نیٹ ورک ہے. لیکن آپ کے اپنے نوڈ کو تعینات کیے بغیر، جانچ کا عمل آگے بڑھ سکتا ہے۔
آپ کو ٹیسٹ ٹوکن والے نئے اکاؤنٹس کی مسلسل ضرورت ہوگی۔ ٹیسٹ نیٹ ورک ٹونٹی ہر 10 منٹ میں 10 لہریں منتقل کرتی ہے۔
ٹیسٹ نیٹ ورک میں بلاک کا اوسط وقت 1 منٹ ہے، نوڈ میں - 15 سیکنڈ۔ یہ خاص طور پر اس وقت نمایاں ہوتا ہے جب کسی لین دین کے لیے متعدد تصدیقوں کی ضرورت ہوتی ہے۔
عوامی ٹیسٹ نوڈس پر جارحانہ کیشنگ ممکن ہے۔
دیکھ بھال کی وجہ سے وہ عارضی طور پر غیر دستیاب بھی ہو سکتے ہیں۔
اب سے میں فرض کروں گا کہ آپ اپنے نوڈ کے ساتھ کام کر رہے ہیں۔
سرف بورڈ انسٹال کریں، ایک ایسا ٹول جو آپ کو موجودہ نوڈ پر ٹیسٹ چلانے کی اجازت دیتا ہے۔
npm install -g @waves/surfboard
3. بصری اسٹوڈیو کوڈ پلگ ان
یہ مرحلہ اختیاری ہے اگر آپ IDEs کے پرستار نہیں ہیں اور ٹیکسٹ ایڈیٹرز کو ترجیح دیتے ہیں۔ تمام ضروری ٹولز کمانڈ لائن یوٹیلیٹیز ہیں۔ اگر آپ vim استعمال کرتے ہیں تو پلگ ان پر توجہ دیں۔ ویم سواری.
بصری اسٹوڈیو کوڈ ڈاؤن لوڈ اور انسٹال کریں: https://code.visualstudio.com/
وی ایس کوڈ کھولیں اور ویوز رائڈ پلگ ان انسٹال کریں:
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 کوڈ واقع ہے۔ ہم اگلے بلاک میں dApps کا مختصراً تجزیہ کریں گے۔
./test/ فولڈر کے نیچے آپ کو ایک *.js فائل ملے گی۔ ٹیسٹ یہاں محفوظ ہیں۔
./surfboard.config.json - ٹیسٹ چلانے کے لیے کنفیگریشن فائل۔
Envs ایک اہم سیکشن ہے۔ ہر ماحول کو اس طرح ترتیب دیا گیا ہے:
نوڈ کا REST API اینڈ پوائنٹ جو نیٹ ورک کے dApp اور CHAIN_ID کو لانچ کرنے کے لیے استعمال کیا جائے گا۔
ٹوکن والے اکاؤنٹ کے لیے ایک خفیہ جملہ جو آپ کے ٹیسٹ ٹوکنز کا ذریعہ ہوگا۔
جیسا کہ آپ دیکھ سکتے ہیں، surfboard.config.json ڈیفالٹ کے لحاظ سے متعدد ماحول کو سپورٹ کرتا ہے۔ پہلے سے طے شدہ مقامی ماحول ہے (defaultEnv کلید ایک قابل تبدیلی پیرامیٹر ہے)۔
والیٹ ڈیمو ایپلی کیشن
یہ سیکشن RIDE زبان کا حوالہ نہیں ہے۔ بلکہ، اس ایپلیکیشن پر ایک نظر جسے ہم تعینات کرتے ہیں اور بہتر طور پر یہ سمجھنے کے لیے جانچتے ہیں کہ بلاکچین میں کیا ہو رہا ہے۔
آئیے ایک سادہ والیٹ ڈیمو ایپلیکیشن کو دیکھتے ہیں۔ کوئی بھی dApp ایڈریس پر ٹوکن بھیج سکتا ہے۔ آپ صرف اپنی لہروں کو واپس لے سکتے ہیں۔ دو @Callable فنکشنز InvokeScriptTransaction کے ذریعے دستیاب ہیں:
deposit()جس کے لیے WAVES میں منسلک ادائیگی کی ضرورت ہوتی ہے۔
withdraw(amount: Int)جو ٹوکن واپس کرتا ہے۔
dApp لائف سائیکل کے دوران، ساخت (پتہ → رقم) کو برقرار رکھا جائے گا:
عمل
نتیجہ خیز حالت
ابتدائی
خالی
ایلس نے 5 لہریں جمع کیں۔
ایلس ایڈریس → 500000000
باب 2 لہریں جمع کرتا ہے۔
ایلس ایڈریس → 500000000
باب ایڈریس → 200000000
باب نے 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 کے ذریعے متعدد اکاؤنٹس کو فنڈز فراہم کرتا ہے، اسکرپٹ کو مرتب کرتا ہے اور اسے بلاک چین میں تعینات کرتا ہے۔
"ڈپازٹ کر سکتے ہیں" نیٹ ورک کو ایک InvokeScriptTransaction بھیجتا ہے، دونوں اکاؤنٹس میں سے ہر ایک کے لیے deposit() فنکشن کو فعال کرتا ہے۔
"جمع کرائے گئے سے زیادہ نہیں نکال سکتے" ٹیسٹ کہ کوئی بھی دوسرے لوگوں کے ٹوکن چرا نہیں سکتا۔
"ڈپازٹ کر سکتے ہیں" چیک کہ نکالنے پر صحیح طریقے سے کارروائی کی گئی ہے۔
سرف بورڈ سے ٹیسٹ چلائیں اور ویوز ایکسپلورر میں نتائج کا تجزیہ کریں۔
ٹیسٹ چلانے کے لیے، دوڑنا
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. ٹیسٹ نیٹ ماحول میں جانچ کرنے کے لیے، استعمال کریں:
2. اگر آپ لین دین کے JSON ورژن دیکھنا چاہتے ہیں اور یہ دیکھنا چاہتے ہیں کہ نوڈ کے ذریعے ان پر کیسے عمل کیا جاتا ہے، تو -v کے ساتھ ٹیسٹ چلائیں (یعنی 'وربوز'):
مقامی نوڈ کے ساتھ کام کرنے کے لیے ویوز کیپر کو ترتیب دینا
2. نیٹ ورک کے لیے ٹوکن کے ساتھ خفیہ جملہ درآمد کریں؟ سادگی کے لیے، اپنے نوڈ کا ابتدائی بیج استعمال کریں: waves private node seed with waves tokens. پتہ: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.