Waves - RIDE4DApps (RIDE for dApps) メモ

先月の後半頃にWavesPlatformのテストネットで使えるようになったDApps用のRIDEスクリプトについて、
大体動作確認ができたのでメモしておく。

概要は前回書いた

開発(確認した)環境について

動作確認はすべてWeb IDE上で実施。困ることはそんなにない。
開発中のものなので、ちょくちょく更新されていおり、ドキュメントだけをあてにするとハマるかもしれない。
実装が正であることに留意。

メモ

手数料について

最小Feeは、0.005Wavesだった。SmartAccountで何かする場合の最小手数料(Transfer: 0.001WAVES + スクリプト実行: 0.004WAVES)と同じ。
WriteSetやTransferSetの数によらない。それらの数も含めてスクリプト実行の範疇ということなのだろう。
ドキュメントにある0.004 * n WAVESというのは、おそらくInvokeSetとかいって他のスクリプトを呼び出せるような構想によるものだろう。
(そんな話も合ったような気がする。いずれそうなるかも知れない)
あとSponsored Fee対応なので、WAVES用意しなくても使える。

@Verifierな関数について

DApp用のRIDEスクリプトでは@Verifierアノテーションの付いた関数がトランザクションチェックに使われるが、
未定義の場合は全てfalse扱いとなり、別途のトランザクション発行や状態更新などできなくなるっぽい。
(変更される可能性あるが)全て許可や単独署名でOKよりは安全側?な感じか。
確認、検証する側からしたら見えないと不安な気もするが。

SmartAssetを使える

InvokeScriptTransactionのpaymentにSmartAssetを指定でき、設定したスクリプトが実行される。
ただし、従来(発行済み)のものだとトランザクション発行が否認されるので、必要があれば新しいバージョンのスクリプトで上書きする。
そして、InvokeScriptTransactionに対応したSmartAsset用のRIDEスクリプトは、STDLIB_VERSIONディレクティブを3に指定しないコンパイルできない。
今のところ、コンパイラのデフォルトは現行(今メインネットで動いているもの)の仕様のようだ。

コントラクト

コントラクトと言わなくなってきてる気がする。
DApp用とかスクリプト(Script)という単語になっているように思う。

その他

パスワードを入力としてスクリプト実行し、スクリプト内にてハッシュの一致確認。合致すれば(合わせて入力した)新しいパスワード(のハッシュ)を設定(いわゆるHashLock?)でアドレスの所有を実現できそうなので、とりあえずWavesを知らない人もWaves内資産が持てるようになりそう。
また、前払い式決済手段っぽい、DAppへの支払い(InvokeScriptTransactionのpayment)にのみ利用できるホワイトリスト管理なSmartAssetとか作れるので、
表面的にはブロックチェーンを見えなくできそうな気がしなくもない。
利用者がWAVESを持たなくてもDAppを使えるからね。

以上。


See also