ChargeTransactionPayment:验证和 pre_dispatch
ChargeTransactionPayment: validate and pre_dispatch
pallet-transaction-payment
有 ChargeTransactionPayment
实现了 SignedExtension
。在其代码中,validate()
和 pre_dispatch()
都在内部调用 withdraw_fee()
。
为什么这不会导致多次提款?
另外,validate()
可以调用多次。
https://github.com/paritytech/substrate/blob/v2.0.0/frame/transaction-payment/src/lib.rs#L511-L534
Why doesn't this cause multiple withdrawals?
在验证阶段,所有状态更改都将被丢弃。当交易存在于池中时使用验证阶段。在创作和导入时,它只经过 pre_dispatch
.
Also, validate() could be called many times.
事实上,池(或者通常是运行时之外的任何组件)可能想要多次 re-validate 事务。关键是要记住状态更改在验证中被丢弃。
pallet-transaction-payment
有 ChargeTransactionPayment
实现了 SignedExtension
。在其代码中,validate()
和 pre_dispatch()
都在内部调用 withdraw_fee()
。
为什么这不会导致多次提款?
另外,validate()
可以调用多次。
https://github.com/paritytech/substrate/blob/v2.0.0/frame/transaction-payment/src/lib.rs#L511-L534
Why doesn't this cause multiple withdrawals?
在验证阶段,所有状态更改都将被丢弃。当交易存在于池中时使用验证阶段。在创作和导入时,它只经过 pre_dispatch
.
Also, validate() could be called many times.
事实上,池(或者通常是运行时之外的任何组件)可能想要多次 re-validate 事务。关键是要记住状态更改在验证中被丢弃。