失敗したDuskトランザクションでも、あなたにDUSKの代金がかかることがあります。
リバート(取り消し)しても請求書は消えません。
取引がガス不足で実行され、リバートされた場合、失敗した実行は基本的に何も残さないのだと思っていました。
しかしDuskは、この2つの結果を分けます。
`gas_limit` と `gas_price` を設定しますが、実際の手数料は `gas_used * gas_price` に基づいて計算されます。実行がガス不足で終了すると、トランザクションはリバートされますが、すでに消費されたガス分の支払いは行われます。
作られた例で考えてみましょう。ある呼び出しにガスリミット50,000、ガス価格が2 LUXあるとします。すべて50,000ガスを使い切ってからガス不足で落ちた場合、失敗したトランザクションでも100,000 LUX(0.0001 DUSK)のコストがかかります。
状態の変更は消えます。
でも手数料は消えません。
それが私の想定外でした。
1つの仕組みが、完了しなかった実行を台帳にコミットしないように守ります。もう1つは、ネットワークがすでに行った計算に対して課金します。どちらも同じ失敗したトランザクションに作用しますが、同じ結果は生みません。
つまり「失敗」は「無料」を意味しません。状態変更は消える一方で、資源の利用に対する請求が残ることがある、という意味です。
Duskの取引安全性のうち、未完了の実行をリバートすることから来る部分はどれくらいで、さらに、すでに起きた作業に対してもなお課金するという資源規律の部分はどれくらいなのでしょうか?
@Dusk #dusk $DUSK
リバート(取り消し)しても請求書は消えません。
取引がガス不足で実行され、リバートされた場合、失敗した実行は基本的に何も残さないのだと思っていました。
しかしDuskは、この2つの結果を分けます。
`gas_limit` と `gas_price` を設定しますが、実際の手数料は `gas_used * gas_price` に基づいて計算されます。実行がガス不足で終了すると、トランザクションはリバートされますが、すでに消費されたガス分の支払いは行われます。
作られた例で考えてみましょう。ある呼び出しにガスリミット50,000、ガス価格が2 LUXあるとします。すべて50,000ガスを使い切ってからガス不足で落ちた場合、失敗したトランザクションでも100,000 LUX(0.0001 DUSK)のコストがかかります。
状態の変更は消えます。
でも手数料は消えません。
それが私の想定外でした。
1つの仕組みが、完了しなかった実行を台帳にコミットしないように守ります。もう1つは、ネットワークがすでに行った計算に対して課金します。どちらも同じ失敗したトランザクションに作用しますが、同じ結果は生みません。
つまり「失敗」は「無料」を意味しません。状態変更は消える一方で、資源の利用に対する請求が残ることがある、という意味です。
Duskの取引安全性のうち、未完了の実行をリバートすることから来る部分はどれくらいで、さらに、すでに起きた作業に対してもなお課金するという資源規律の部分はどれくらいなのでしょうか?
@Dusk #dusk $DUSK
