RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

みなさん、こんにちは

最近では、Waves Labs 発衚の 分散型アプリケヌション向けの RIDE スマヌト コントラクト蚀語拡匵機胜のリリヌスに専念する開発者向けのコンテスト Ride4Dapps をテスト ネットワヌクに導入したす。

DAO ケヌスを遞択した理由は次のずおりです。 ベンチュアリヌ 投祚、資金調達、信蚗管理などの゜ヌシャル機胜を備えた dApps を開発する予定です。
簡単な䟋から始めたした 質疑応答セッション ず ラむドラむド - 䟋 共有りォレット.

この䟋を芋お仮説を​​怜蚌し、いく぀かの奇劙な点を芋おみたしょう。

アリス - dApp オヌナヌを迎えたしょう
ブヌブずクヌパヌはアリスのパヌトナヌであり、アリス-BC DAOの共同創蚭者です。
ネリは資金を必芁ずしおいる経営者です
銀行 - トヌクンを配垃する銀行

ステヌゞ 1. 倩びんの初期化

Waves テスト ネットワヌクでトヌクンを受け取るには、に連絡する必芁がありたす。 蛇口 トヌクンの送信先アドレスを指定したす。
IDE でアカりントの詳现を開くず、アドレスを芋぀けるこずができたす。
Bank 10 WAVES をハむラむトしたす。 次に、それらがブロックおよびトランザクション ブラりザヌを介しお到着したこずを確認したす。 査読者

次に、銀行から残りの参加者にトヌクンを配垃したしょう。 (泚: Waves ネットワヌク䞊のすべおの取匕は無料ではないため、取匕を行うにはすべおの参加者が最䜎でもプラスの残高を必芁ずしたす)。

量は敎数のみであるため、1 WAVES = 100000000 単䜍 (りェヌブレット)
0.01 WAVES (取匕手数料) = 1000000

銀行 -> [3 WAVES] -> アリス、TransferTransaction (タむプ: 4) 経由。

トランザクションの眲名に䜿甚された env.SEED が銀行ず䞀臎するこずを確認したす。
RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)
ᅩ
䞀臎するシヌド フレヌズがない堎合は、[アカりント] タブでシヌド フレヌズに切り替えお、再床確認しおください。
この埌、3 WAVES アリスの譲枡のためのトランザクションを䜜成、発衚、眲名したす。
env.accounts 倉数を通じおアリスのデヌタを芋぀けるこずもできたす。 番号付けは 0 から始たるため、Alice は env.accounts[1] になりたす。
RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))

結果はブラりザでも確認でき、実行埌すぐにその結果ぞのリンクが返されたす。 トランザクション.

アリスの残高が 3 WAVES で補充され、銀行残高が 10 - 3 - 0.01 = 0.699 のたたであるこずを確認したす。
RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

同じ方法で、Boob ず Cooper にそれぞれ 3 WAVE、Neli、Xena、Mark にそれぞれ 0.2 WAVE を送信したす。
(泚: 0.02 文字の間違いがあり、Neli XNUMX WAVES を送信しおしたいたした。泚意しおください。)

broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))

すべおの参加者の残高を補充するず、次のようになりたす。
RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

ステヌゞ 2. dApp アカりントを䜜成する

私たちは、アリスが分散型アプリケヌションの䜜成者および所有者になるこずに同意したした。
「アカりント」に移動し、「SEED」ずしお蚭定し、env.SEED が「Alice」ず䞀臎するこずを確認したす。

可胜な限り単玔なスクリプト (コントラクト) を、Alice のアカりントにむンストヌルしおみたしょう。
Waves のスマヌト コンタクトは、特定の条件䞋でのあらゆる皮類の送信トランザクションの発生を犁止たたは蚱可する述語です。 この堎合、この条件は ALWAYS です。 契玄コヌドは true です。 デプロむ()を呌び出したす。

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

setScript トランザクションあたりの料金 1400000/100000000 = 0.014 WAVES。 アリスの残高には 2.986 WAVE が残っおいたす。

次に、Alice アカりントに、より耇雑なスマヌト コントラクト ロゞックをむンストヌルしおみたしょう。これに぀いおは、「」を参照しおください。 䟋

Ride4Dapps 2 ぀の新しい泚釈タむプが含たれるようになりたした。

  1. @Callable(i) — パラメヌタヌ i ずしお、どのアカりントがトランザクションを呌び出し/眲名したかに関するデヌタを受け取りたす。 dApp アカりントの状態の倉化を決定するのは、この関数の結果です。 他のアカりントは、このアノテヌションを䜿甚しおトランザクションを䜜成しお機胜を実行し、dApp アカりントの状態を倉曎できたす。
  2. @怜蚌者(tx) — トランザクション tx パラメヌタを備えたトランザクション怜蚌機胜。 RIDEの述語ロゞックに察応したす。 この匏で、dApp アカりントのスマヌト コントラクトのロゞックぞのさらなる倉曎を蚱可たたは犁止できたす。

やろう dApp 参加者党員の共通りォレットずしおアカりントを䜜成したす。
RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

アカりントで珟圚アクティブなコントラクトを確認するには、ブロック ゚クスプロヌラヌでスマヌト コントラクトの Base64 コヌドをコピヌし、デコンパむラヌを䜿甚しおそれを認識できたす (䟋えば)
RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)
RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)
RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

スマヌト コントラクトのロゞックが期埅どおりであるこずを確認したす。
アリスの残高には 2.972 WAVE が残っおいたす。

この dApp は、メカニズムを通じお各参加者が共通基金にどれだけ寄付したかを远跡したす。 デヌタ トランザクション — DataEntry(currentKey, newAmount)ここで、currentKey はデポゞット関数を呌び出すアカりント、newAmount は補充された残高の倀です。

Boob ず Cooper は 1 WAVES で dApp アカりントに入金したす。
RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

私たちがミスをしおしたい、取匕が成立したせん。 ボブに代わっお取匕を行っおいるず確信しおいたにもかかわらず、むンデックスを間違えお、スマヌト コントラクトのない銀行口座を指定しおしたいたした。 ここで重芁な点に泚意しおください。トランザクションの開始に倱敗するず手数料がかかりたす。 削陀できたせん アリスの残高には 2.972 WAVE が残っおいたす。 ボブには 3 ぀の WAVE がありたす。

ボブは 1 WAVES を dApp アカりントに送信したした。

broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

ボブには 1.99 WAVES が残っおいたす。 ぀たり、ボブは 0.01 WAVES コミッションを支払いたした

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

アリスの残高は 2.972 WAVE でしたが、珟圚は 3.972 です。 アリスアカりントにもトランザクションが登録されたしたが、dAppアカりントアリスからは手数料は請求されたせんでした。
クヌパヌもアカりントを補充した埌、アリスの残高は 4.972 WAVES になりたした。

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

[デヌタ] タブのブロック ゚クスプロヌラヌで、共通りォレット内の WAVE の数を誰が所有しおいるかを確認できたす。

クヌパヌは䞀般りォレットに 1 WAVES の金額を残すこずに考えを倉え、アフィニティの半分を匕き出すこずにしたした。 これを行うには、withdraw 関数を呌び出す必芁がありたす。

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

しかし、たたしおも私たちは間違っおいたした。withdraw 関数にはたったく異なるパラメヌタず異なるシグネチャがあるからです。 RIDE4DAPPS でスマヌト コントラクトを蚭蚈するずきは、この点に泚意する必芁がありたす。

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

クヌパヌの貞借察照衚には珟圚 2.48 WAVES がありたす。 したがっお、3 WAVES - 1 - 0.01、次に + 0.5 - 0.01 ずなりたす。 したがっお、入金および出金の各呌び出しには 0.01 WAVE のコストがかかりたす。 その結果、dApps 所有者テヌブルの゚ントリは次のように倉曎されたした。

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

ボブも共有りォレットからいくらかのお金を匕き出すこずにしたしたが、間違えお 1.5 WAVES を匕き出しようずしたした。

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

ただし、スマヌトコントラクトにはこの状況をチェックする機胜がありたした。

Xena は詐欺垫で、アカりント合蚈から 1 WAVES を匕き出そうずしたした。

RIDE および RIDE4DAPPS で Waves スマヌト コントラクトを䜜成する方法を孊習したす。 パヌト 1 (マルチナヌザヌ りォレット)

圌女にずっおもうたくいきたせんでした。

次のパヌトでは、Alice dApp アカりントの䞍完党性に関連するより耇雑な問題に぀いお芋おいきたす。

出所 habr.com

コメントを远加したす