เชจเชฎเชธเซเชคเซ! เช เชฒเซเชเชฎเชพเช เชนเซเช เชคเชฎเชจเซ เชฌเชคเชพเชตเซเชถ เชเซ เชตเซเชตเซเชธ เชจเซเชก เชชเชฐ เชจเชฟเชฏเชฎเชฟเชค dApp เชเซเชตเซ เชฐเซเชคเซ เชฒเชเชตเซเช เช เชจเซ เชเชฒเชพเชตเชตเซเช. เชเชพเชฒเซ เชเชฐเซเชฐเซ เชธเชพเชงเชจเซ, เชชเชฆเซเชงเชคเชฟเช เช เชจเซ เชตเชฟเชเชพเชธเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชเซเชเช.
dApps เช
เชจเซ เชจเชฟเชฏเชฎเชฟเชค เชเชชเซเชฒเชฟเชเซเชถเชจเซ เชฎเชพเชเซเชจเซ เชตเชฟเชเชพเชธ เชฏเซเชเชจเชพ เชฒเชเชญเช เชธเชฎเชพเชจ เชเซ:
- เชฒเซเชเชจ เชเซเชก
- เชธเซเชตเชเชพเชฒเชฟเชค เชชเชฐเซเชเซเชทเชฃ เชฒเซเชเชจ
- เชเชชเซเชฒเชฟเชเซเชถเชจ เชฒเซเชจเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช
- เชชเชฐเซเชเซเชทเชฃ
เชธเชพเชงเชจเซ
1. docker
เชจเซเชก เช
เชจเซ เชตเซเชตเซเช เชเชเซเชธเชชเซเชฒเซเชฐเชฐ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ
เชเซ เชคเชฎเซ เชจเซเชก เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเชเชคเชพ เชจเชฅเซ, เชคเซ เชคเชฎเซ เช เชชเชเชฒเซเช เชเซเชกเซ เชถเชเซ เชเซ. เชเซเชตเชเซ, เชเช เชชเชฐเซเชเซเชทเชฃ เช เชจเซ เชชเซเชฐเชพเชฏเซเชเชฟเช เชจเซเชเชตเชฐเซเช เชเซ. เชชเชฐเชเชคเซ เชคเชฎเชพเชฐเชพ เชชเซเชคเชพเชจเชพ เชจเซเชกเชจเซ เชเชฎเชพเชตเซเชฏเชพ เชตเชฟเชจเชพ, เชชเชฐเซเชเซเชทเชฃ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชเชณ เชตเชงเซ เชถเชเซ เชเซ.
- เชคเชฎเชพเชฐเซ เชเซเชธเซเช เชเซเชเชจเซเชธ เชธเชพเชฅเซ เชธเชคเชค เชจเชตเชพ เชเชเชพเชเชจเซเชเซเชธเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ. เชเซเชธเซเช เชจเซเชเชตเชฐเซเช เชซเซเชธเซเช เชฆเชฐ 10 เชฎเชฟเชจเชฟเชเซ 10 เชตเซเชตเซเชธ เชเซเชฐเชพเชจเซเชธเชซเชฐ เชเชฐเซ เชเซ.
- เชชเชฐเซเชเซเชทเชฃ เชจเซเชเชตเชฐเซเชเชฎเชพเช เชธเชฐเซเชฐเชพเชถ เชฌเซเชฒเซเช เชธเชฎเชฏ 1 เชฎเชฟเชจเชฟเช เชเซ, เชจเซเชกเชฎเชพเช - 15 เชธเซเชเชจเซเชก. เช เชเชพเชธ เชเชฐเซเชจเซ เชจเซเชเชงเชจเซเชฏ เชเซ เชเซเชฏเชพเชฐเซ เชเซเช เชตเซเชฏเชตเชนเชพเชฐ เชฎเชพเชเซ เชฌเชนเซเชตเชฟเชง เชชเซเชทเซเชเชฟเชเชฐเชฃเซเชจเซ เชเชฐเซเชฐ เชนเซเชฏ.
- เชธเชพเชฐเซเชตเชเชจเชฟเช เชชเชฐเซเชเซเชทเชฃ เชเชพเชเช เซ เชชเชฐ เชเชเซเชฐเชฎเช เชเซเชถเซเชเช เชถเชเซเชฏ เชเซ.
- เชเชพเชณเชตเชฃเซเชจเซ เชเชพเชฐเชฃเซ เชคเซเช เช เชธเซเชฅเชพเชฏเซ เชฐเซเชชเซ เช เชจเซเชชเชฒเชฌเซเชง เชชเชฃ เชนเซเช เชถเชเซ เชเซ.
เชนเชตเซเชฅเซ เชนเซเช เชงเชพเชฐเซเชถ เชเซ เชคเชฎเซ เชคเชฎเชพเชฐเชพ เชชเซเชคเชพเชจเชพ เชจเซเชก เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซ.
2. เชธเชฐเซเชซเชฌเซเชฐเซเชก เชเชฎเชพเชจเซเชก เชฒเชพเชเชจ เชเซเชฒ
- เช
เชนเซเช ppa, homebrew เช
เชฅเชตเชพ exe เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ Node.js เชกเชพเชเชจเชฒเซเชก เชเชฐเซ เช
เชจเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
https://nodejs.org/en/download/ . - เชธเชฐเซเชซเชฌเซเชฐเซเชก เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ, เชเช เชธเชพเชงเชจ เชเซ เชคเชฎเชจเซ เชนเชพเชฒเชจเชพ เชจเซเชก เชชเชฐ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
npm install -g @waves/surfboard
3. เชตเชฟเชเซเชฏเซเช เชฒ เชธเซเชเซเชกเชฟเชฏเซ เชเซเชก เชชเซเชฒเชเชเชจ
เชเซ เชคเชฎเซ IDE เชจเชพ เชเชพเชนเช เชจ เชนเซเชต เช
เชจเซ เชเซเชเซเชธเซเช เชเชกเชฟเชเชฐเซเชธ เชชเชธเชเชฆ เชเชฐเซ เชคเซ เช เชชเชเชฒเซเช เชตเซเชเชฒเซเชชเชฟเช เชเซ. เชฌเชงเชพ เชเชฐเซเชฐเซ เชธเชพเชงเชจเซ เชเชฆเซเชถ เชตเชพเชเซเชฏ เชเชชเชฏเซเชเชฟเชคเชพเช เชเซ. เชเซ เชคเชฎเซ เชตเชฟเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชคเซ เชชเซเชฒเชเชเชจ เชชเชฐ เชงเซเชฏเชพเชจ เชเชชเซ
เชตเชฟเชเซเชฏเซเช
เชฒ เชธเซเชเซเชกเชฟเชฏเซ เชเซเชก เชกเชพเชเชจเชฒเซเชก เช
เชจเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
VS เชเซเชก เชเซเชฒเซ เช เชจเซ เชตเซเชตเซเชธ-เชฐเชพเชเชก เชชเซเชฒเชเชเชจ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
เชตเซเชตเซเชธ เชเซเชชเชฐ เชฌเซเชฐเชพเชเชเชฐ เชเชเซเชธเซเชเซเชเชถเชจ:
เชฅเช เชเชฏเซเช!
เชจเซเชก เช เชจเซ เชตเซเชตเซเช เชเชเซเชธเชชเซเชฒเซเชฐเชฐ เชฒเซเชเช เชเชฐเซ
1. เชจเซเชก เชถเชฐเซ เชเชฐเซ:
docker run -d -p 6869:6869 wavesplatform/waves-private-node
เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชจเซเชก เชเชฐเชเชเชธเชเซ เชเชชเซเชเช เชฆเซเชตเชพเชฐเชพ เชฒเซเชจเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ
เชจเซเชก เชฎเชพเชเซ เชธเซเชตเซเชเชฐ REST API
2. เชตเซเชตเซเช เชเชเซเชธเชชเซเชฒเซเชฐเชฐเชจเซ เชฆเชพเชเชฒเซ เชถเชฐเซ เชเชฐเซ:
docker run -d -e API_NODE_URL=http://localhost:6869 -e NODE_LIST=http://localhost:6869 -p 3000:8080 wavesplatform/explorer
เชฌเซเชฐเชพเชเชเชฐ เชเซเชฒเซ เช
เชจเซ เชชเชฐ เชเชพเช
เชตเซเชตเซเช เชเชเซเชธเชชเซเชฒเซเชฐเชฐ เชธเซเชฅเชพเชจเชฟเช เชจเซเชก เชฆเชพเชเชฒเซ เชฆเชฐเซเชถเชพเชตเซ เชเซ
เชฐเชพเชเชก เชธเซเชเซเชฐเชเซเชเชฐ เช เชจเซ เชธเชฐเซเชซเชฌเซเชฐเซเชก เชเซเชฒ
เชเชพเชฒเซ เชกเชฟเชฐเซเชเซเชเชฐเซ เชฌเชจเชพเชตเซ เช เชจเซ เชคเซเชฎเชพเช เชเชฆเซเชถ เชเชฒเชพเชตเซ
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 เชธเชฐเชจเชพเชฎเชพเช เชชเชฐ เชเซเชเชจเซเชธ เชฎเซเชเชฒเซ เชถเชเซ เชเซ. เชคเชฎเซ เชซเชเซเชค เชคเชฎเชพเชฐเชพ WAVES เชชเชพเชเซ เชเซเชเชเซ เชถเชเซ เชเซ. เชฌเซ @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 เชเชฎเซเชชเชพเชเชฒ เชเชฐเซเชฒ เชฐเชพเชเชก เชเซเชกเชจเซ เชถเซเชฐเซเชฃเซเชจเซเช เชเชเชเชชเซเช เชเชฐเชถเซ.
'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. เชเซเชธเซเชเชจเซเช เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช เชชเชฐเซเชเซเชทเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ, เชเชจเซ เชเชชเชฏเซเช เชเชฐเซ:
surfboard test --env=testnet
2. เชเซ เชคเชฎเซ เชตเซเชฏเชตเชนเชพเชฐเซเชจเชพ JSON เชธเชเชธเซเชเชฐเชฃเซ เช เชจเซ เชจเซเชก เชฆเซเชตเชพเชฐเชพ เชเซเชตเซ เชฐเซเชคเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชคเซ เชเซเชตเชพ เชฎเชพเชเชเชคเชพ เชนเซ, เชคเซ -v (เชเชเชฒเซ โโเชเซ 'เชตเชฐเซเชฌเซเช') เชธเชพเชฅเซ เชชเชฐเซเชเซเชทเชฃ เชเชฒเชพเชตเซ:
surfboard test -v
เชตเซเชตเซเชธ เชเซเชชเชฐ เชธเชพเชฅเซ เชเชชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ
1. เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชตเซเชตเซเชธ เชเซเชชเชฐ เชธเซเช เชเชฐเซ:
เชธเซเชฅเชพเชจเชฟเช เชจเซเชก เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชตเซเชตเซเชธ เชเซเชชเชฐเชจเซ เชธเซเช เชเชฐเชตเซเช
2. เชจเซเชเชตเชฐเซเช เชฎเชพเชเซ เชเซเชเชจเซเชธ เชธเชพเชฅเซ เชเซเชชเซเชค เชถเชฌเซเชฆเชธเชฎเซเชน เชเชฏเชพเชค เชเชฐเซเช? เชธเชฐเชณเชคเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเชพ เชจเซเชกเชจเชพ เชชเซเชฐเชพเชฐเชเชญเชฟเช เชฌเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ: waves private node seed with waves tokens
. เชธเชฐเชจเชพเชฎเซเช: 3M4qwDomRabJKLZxuXhwfqLApQkU592nWxF
.
3. เชคเชฎเซ npm เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเชฐเซเชตเชฐเชฒเซเชธ เชธเชฟเชเชเชฒ เชชเซเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชพเชคเซ เชเชฒเชพเชตเซ เชถเชเซ เชเซ. เช
เชฅเชตเชพ เชนเชพเชฒเชจเชพ เชเช เชชเชฐ เชเชพเช:
4. dApp เชเชกเซเชฐเซเชธ เชเซเชเซเชธเซเช เชฌเซเชเซเชธเชฎเชพเช เชเซเชธเซเช เชฐเชจ (เชเชชเชฐ เชฐเซเชเชพเชเชเชฟเชค) เชฎเชพเชเชฅเซ เชตเซเชฒเซเช เชธเชฐเชจเชพเชฎเซเช เชฆเชพเชเชฒ เชเชฐเซ
5. โเชฅเชพเชชเชฃโ เชซเซเชฒเซเชกเชฎเชพเช เชจเชพเชจเซ เชฐเชเชฎ เชฆเชพเชเชฒ เชเชฐเซ เช เชจเซ เชฌเชเชจ เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ:
เชตเซเชตเซเชธ เชเซเชชเชฐ 10 WAVES เชจเซ เชเซเชเชตเชฃเซ เชธเชพเชฅเซ InvokeScriptTransaction เชชเชฐ เชนเชธเซเชคเชพเชเซเชทเชฐ เชเชฐเชตเชพเชจเซ เชชเชฐเชตเชพเชจเชเซเชจเซ เชตเชฟเชจเชเชคเซ เชเชฐเซ เชเซ.
6. เชตเซเชฏเชตเชนเชพเชฐเชจเซ เชชเซเชทเซเชเชฟ เชเชฐเซ:
เชตเซเชฏเชตเชนเชพเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช
เชจเซ เชจเซเชเชตเชฐเซเช เชชเชฐ เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชพเชฏ เชเซ. เชนเชตเซ เชคเชฎเซ เชคเซเชจเซเช เชเชเชกเซ เชเซเช เชถเชเซ เชเซ
7. เชตเซเชตเซเช เชเชเซเชธเชชเซเชฒเซเชฐเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชตเซเชฏเชตเชนเชพเชฐเชจเซเช เชจเชฟเชฐเซเชเซเชทเชฃ เชเชฐเซ. เชถเซเชง เชเซเชทเซเชคเซเชฐเชฎเชพเช ID เชฆเชพเชเชฒ เชเชฐเซ
เชคเชพเชฐเชฃเซ เช เชจเซ เชตเชงเชพเชฐเชพเชจเซ เชฎเชพเชนเชฟเชคเซ
เช เชฎเซ เชตเซเชตเซเช เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชชเชฐ เชธเชฐเชณ dApps เชตเชฟเชเชธเชพเชตเชตเชพ, เชชเชฐเซเชเซเชทเชฃ เชเชฐเชตเชพ, เชเชฎเชพเชตเช เชเชฐเชตเชพ เช เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซเชจเชพเช เชธเชพเชงเชจเซ เชเซเชฏเชพเช:
- เชฐเชพเชเชก เชญเชพเชทเชพ
- VS เชเซเชก เชเชกเชฟเชเชฐ
- เชตเซเชตเซเช เชเชเซเชธเชชเซเชฒเซเชฐเชฐ
- เชธเชฐเซเชซเชฌเซเชฐเซเชก
- เชตเซเชตเซเชธ เชเซเชชเชฐ
เชฐเชพเชเชก เชถเซเชเชตเชพเชจเซเช เชเชพเชฒเซ เชฐเชพเชเชตเชพ เชฎเชพเชเชเชคเชพ เชฒเซเชเซ เชฎเชพเชเซ เชฒเชฟเชเชเซเชธ:
เชฐเชพเชเชก เชตเชฟเชทเชฏเชฎเชพเช เชกเชพเชเชต เชเชฐเชตเชพเชจเซเช เชเชพเชฒเซ เชฐเชพเชเซ เช เชจเซ เชคเชฎเชพเชฐเซ เชชเซเชฐเชฅเชฎ dApp เชฌเชจเชพเชตเซ!
TL; DR:
เชธเซเชฐเซเชธ: www.habr.com