Депозит в 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.

Другие вопросы по тегам