Депозит в FunctionCallAction и TransferAction
Рассмотрим FunctionCallAction и TransferAction
pub struct FunctionCallAction {
// ...
pub deposit: Balance,
}
pub struct TransferAction {
pub deposit: Balance,
}
В чем разница между deposit
в FunctionCallAction
а также TransferAction
?
1 ответ
На первый взгляд это выглядит как FunctionCallAction
дублирует функциональность TransferAction
путем повторной реализации депозита. Например, можно утверждать, что мы можем избавиться отdeposit
в FunctionCallAction
и когда нам нужно отправить некоторый баланс вместе с вызовом функции, у нас может быть два действия в транзакции: одно для передачи, а другое для вызова функции. Однако в настоящее время мы не предоставляем смарт-контракту информацию о том, сколько токенов было коллективно депонировано в результате всех предыдущих действий в транзакциях, что является полезной информацией для API смарт-контрактов с оплатой. Итак, в настоящее время, когда кто-то хочет написать смарт-контракт, который имеет определенную связанную стоимость, выраженную в токенах, он может утверждать, что эти токены были депонированы вFunctionCallAction::deposit
через env::attached_balance
https://github.com/nearprotocol/near-bindgen/blob/master/near-bindgen/src/environment/env.rs.