ಪ್ರೊಹೋಸ್ಟರ್ > Блог > ಆಡಳಿತ > ವೇವ್ಸ್ ರೈಡ್ ಡಿಆಪ್ ಅನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸುವುದು, ನಿಯೋಜಿಸುವುದು ಮತ್ತು ಪರೀಕ್ಷಿಸುವುದು
ವೇವ್ಸ್ ರೈಡ್ ಡಿಆಪ್ ಅನ್ನು ಹೇಗೆ ನಿರ್ಮಿಸುವುದು, ನಿಯೋಜಿಸುವುದು ಮತ್ತು ಪರೀಕ್ಷಿಸುವುದು
ನಮಸ್ಕಾರ! ಈ ಲೇಖನದಲ್ಲಿ ವೇವ್ಸ್ ನೋಡ್ನಲ್ಲಿ ನಿಯಮಿತ 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. ಖಾಲಿ ಸ್ಥಳೀಯ ನೋಡ್ ಸರ್ಕ್ಯೂಟ್ ಅನ್ನು ಎಷ್ಟು ಬೇಗನೆ ನಿರ್ಮಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ನೀವು ನೋಡುತ್ತೀರಿ.
ವೇವ್ಸ್ ಎಕ್ಸ್ಪ್ಲೋರರ್ ಸ್ಥಳೀಯ ನೋಡ್ ನಿದರ್ಶನವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ
ರೈಡ್ ರಚನೆ ಮತ್ತು ಸರ್ಫ್ಬೋರ್ಡ್ ಉಪಕರಣ
ಖಾಲಿ ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸಿ ಮತ್ತು ಅದರಲ್ಲಿ ಆಜ್ಞೆಯನ್ನು ಚಲಾಯಿಸಿ
surfboard init
ಆಜ್ಞೆಯು ಯೋಜನೆಯ ರಚನೆ, "ಹಲೋ ವರ್ಲ್ಡ್" ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ಪರೀಕ್ಷೆಗಳೊಂದಿಗೆ ಡೈರೆಕ್ಟರಿಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ನೀವು VS ಕೋಡ್ನೊಂದಿಗೆ ಈ ಫೋಲ್ಡರ್ ಅನ್ನು ತೆರೆದರೆ, ನೀವು ನೋಡುತ್ತೀರಿ:
Surfboard.config.json
./ride/ ಫೋಲ್ಡರ್ ಅಡಿಯಲ್ಲಿ ನೀವು ಒಂದೇ ಫೈಲ್ wallet.ride ಅನ್ನು ಕಾಣಬಹುದು - dApp ಕೋಡ್ ಇರುವ ಡೈರೆಕ್ಟರಿ. ನಾವು ಮುಂದಿನ ಬ್ಲಾಕ್ನಲ್ಲಿ dApps ಅನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ವಿಶ್ಲೇಷಿಸುತ್ತೇವೆ.
./test/ ಫೋಲ್ಡರ್ ಅಡಿಯಲ್ಲಿ ನೀವು *.js ಫೈಲ್ ಅನ್ನು ಕಾಣಬಹುದು. ಪರೀಕ್ಷೆಗಳನ್ನು ಇಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ.
Envs ಒಂದು ಪ್ರಮುಖ ವಿಭಾಗವಾಗಿದೆ. ಪ್ರತಿಯೊಂದು ಪರಿಸರವನ್ನು ಈ ರೀತಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ:
ನೆಟ್ವರ್ಕ್ನ dApp ಮತ್ತು CHAIN_ID ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಬಳಸಲಾಗುವ ನೋಡ್ನ REST API ಅಂತಿಮ ಬಿಂದು.
ನಿಮ್ಮ ಪರೀಕ್ಷಾ ಟೋಕನ್ಗಳ ಮೂಲಗಳಾಗಿರುವ ಟೋಕನ್ಗಳೊಂದಿಗಿನ ಖಾತೆಗಾಗಿ ರಹಸ್ಯ ನುಡಿಗಟ್ಟು.
ನೀವು ನೋಡುವಂತೆ, surfboard.config.json ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಬಹು ಪರಿಸರವನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಡೀಫಾಲ್ಟ್ ಸ್ಥಳೀಯ ಪರಿಸರವಾಗಿದೆ (defaultEnv ಕೀ ಬದಲಾಯಿಸಬಹುದಾದ ನಿಯತಾಂಕವಾಗಿದೆ).
ವಾಲೆಟ್-ಡೆಮೊ ಅಪ್ಲಿಕೇಶನ್
ಈ ವಿಭಾಗವು RIDE ಭಾಷೆಗೆ ಉಲ್ಲೇಖವಾಗಿಲ್ಲ. ಬದಲಿಗೆ, ಬ್ಲಾಕ್ಚೈನ್ನಲ್ಲಿ ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಚೆನ್ನಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ನಾವು ನಿಯೋಜಿಸುವ ಮತ್ತು ಪರೀಕ್ಷಿಸುವ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನೋಡೋಣ.
ಸರಳವಾದ ವಾಲೆಟ್-ಡೆಮೊ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನೋಡೋಣ. dApp ವಿಳಾಸಕ್ಕೆ ಯಾರಾದರೂ ಟೋಕನ್ಗಳನ್ನು ಕಳುಹಿಸಬಹುದು. ನಿಮ್ಮ ಅಲೆಗಳನ್ನು ಮಾತ್ರ ನೀವು ಹಿಂಪಡೆಯಬಹುದು. InvokeScript ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಮೂಲಕ ಎರಡು @ಕರೆ ಮಾಡಬಹುದಾದ ಕಾರ್ಯಗಳು ಲಭ್ಯವಿವೆ:
ಪರಿಸ್ಥಿತಿಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಕೋಡ್ ಇಲ್ಲಿದೆ:
# 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
"ಠೇವಣಿ ಮಾಡಬಹುದು" ಹಿಂಪಡೆಯುವಿಕೆಗಳನ್ನು ಸರಿಯಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗಿದೆಯೆ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ.
ಸರ್ಫ್ಬೋರ್ಡ್ನಿಂದ ಪರೀಕ್ಷೆಗಳನ್ನು ರನ್ ಮಾಡಿ ಮತ್ತು ವೇವ್ಸ್ ಎಕ್ಸ್ಪ್ಲೋರರ್ನಲ್ಲಿ ಫಲಿತಾಂಶಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ
ಪರೀಕ್ಷೆಯನ್ನು ನಡೆಸಲು, ಓಡಿ
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 ಸ್ಥಿತಿ, ಡಿಕಂಪೈಲ್ ಮಾಡಿದ ಬೈನರಿ ಫೈಲ್ ಅನ್ನು ಕಾಣಬಹುದು.
2. ನೀವು ವಹಿವಾಟುಗಳ JSON ಆವೃತ್ತಿಗಳನ್ನು ನೋಡಲು ಬಯಸಿದರೆ ಮತ್ತು ಅವುಗಳನ್ನು ನೋಡ್ನಿಂದ ಹೇಗೆ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತದೆ, ಪರೀಕ್ಷೆಯನ್ನು -v ನೊಂದಿಗೆ ರನ್ ಮಾಡಿ (ಅಂದರೆ 'ವರ್ಬೋಸ್'):
ಸ್ಥಳೀಯ ನೋಡ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ವೇವ್ಸ್ ಕೀಪರ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ
2. ನೆಟ್ವರ್ಕ್ಗಾಗಿ ಟೋಕನ್ಗಳೊಂದಿಗೆ ರಹಸ್ಯ ಪದಗುಚ್ಛವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವುದೇ? ಸರಳತೆಗಾಗಿ, ನಿಮ್ಮ ನೋಡ್ನ ಆರಂಭಿಕ ಬೀಜವನ್ನು ಬಳಸಿ: waves private node seed with waves tokens. ವಿಳಾಸ: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF.