
В нашем последнем выпуске Sui представлены три новых собственных типа транзакций и объявлены устаревшими три существующих метода. Новые API —Платить,PaySui, а также PayAllSui— эффективно заменить TransferSui, SplitCoin и MergeCoin. Три старых метода пока остаются функциональными, и мы заранее уведомим сообщество, прежде чем удалять их.
Эти способы оплаты обеспечивают большую простоту использования и могут поддерживать различные сценарии с меньшими затратами на управление монетами. Мы надеемся, что разработчики найдут больше гибкости для поддержки более широкого набора вариантов использования, а также более надежные гарантии API, которые обычно ожидаются от вариантов использования платежей.
Платить,PaySui, а такжеPayAllSuiбыли выпущены как часть Sui 0.14.0.
Новые типы транзакций Pay*
Pay
транзакции принимают несколько монет и отправляют на несколько адресов, следуя указанному списку сумм. Pay
транзакции принимают любой тип монеты, включая SUI. Для оплаты газа будет использоваться отдельный объект SUI, и при необходимости протокол выберет его для транзакции.
- Если получатель и отправитель одни и те же,
Pay
фактически является обобщенной версиейsplitCoin
иmergeCoin
.
PaySui
транзакции принимают несколько монет SUI и отправляют их на несколько адресов в соответствии с указанным списком сумм. PaySui
принимает только монеты SUI и не требует газовой монеты.
- Первый ввод объекта монеты SUI будет использоваться для оплаты газа, поэтому баланс этой монеты SUI должен быть равен или превышать бюджет газа.
- Общий ввод баланса монет SUI должен быть достаточным для покрытия как газового бюджета, так и сумм, подлежащих переводу.
PayAllSui
транзакции берут несколько монет SUI и отправляют их одному получателю после вычета оплаты за газ. После транзакции под адресом отправителя останется строго ноль введенных монет SUI.
- Первый ввод объекта монеты SUI будет использоваться для оплаты газа, поэтому баланс этой монеты SUI должен быть равен или превышать бюджет газа.
- Отправитель может перевести все свои монеты SUI на другой адрес со строго нулевым SUI, оставшимся в одной транзакции с помощью этого типа транзакции.
Руководство по миграции
Ниже приведены примеры кода миграции на основе Typescript SDK. Эти изменения очень похожи на то, что будет использоваться для конечных точек Rust SDK и RPC.
TransferSui
с указанной суммой перейдет наPaySui
// pre-migration codes in TS
const txn = {
suiObjectId: id,
gasBudget: GAS_BUDGET,
recipient: recipient_addr,
amount: amount,
};
await signer.transferSuiWithRequestType(txn);
// post-migration codes in TS
const txn = {
inputCoins: [id],
// length of recipients need to be the same as amounts
recipients: [recipient_addr],
amounts: [amount],
gasBudget: GAS_BUDGET,
};
await signer.paySuiWithRequestType(txn);
TransferSui
без указанной суммы будет мигрировать вPayAllSui
// pre-migration codes in TS
const txn = {
suiObjectId: id,
gasBudget: GAS_BUDGET,
recipient: recipient_addr,
amount: null,
};
await signer.transferSuiWithRequestType(txn);
// post-migration codes in TS
const txn = {
inputCoins: [id],
recipient: recipient_addr,
gasBudget: GAS_BUDGET,
};
await signer.payAllSuiWithRequestType(txn);
SplitCoin
иMergeCoin
перейдет на Pay
// pre-migration split coin
const txn = {
coinObjectId: id;
splitAmounts: [amount0, amount1],
gasPayment: gas_obj_id,
gasBudget: GAS_BUDGET,
};
await signer.SplitCoinWithRequestType(txn);
// post-migration pay txn for splitting
const txn = {
inputCoins: [id],
// length of recipients need to be the same as amounts
recipients: [sender_addr, sender_addr],
amounts: [amount0, amount1],
gasPayment: gas_obj_id,
gasBudget: GAS_BUDGET,
};
await signer.PayWithRequestType(txn);
// pre-migration merge coin
const txn = {
primaryCoin: primary_coin_id,
coinToMerge: coin_to_merge,
gasPayment?: gas_obj_id,
gasBudget: GAS_BUDGET,
};
await signer.MergeCoinWithRequestType(txn);
// post-migration pay txn for merging
const txn = {
inputCoins: [primary_coin_id, coin_to_merge],
recipients: [sender_addr],
amounts: [primary_coin_amount + coin_to_merge_amount],
gasPayment: gas_obj_id,
gasBudget: GAS_BUDGET,
};
await signer.PayWithRequestType(txn);
Текущая связанная работа
Наша команда будет продолжать работать над дальнейшим улучшением опыта разработчиков и скорости, связанной с платежами. Другие инициативы, над которыми мы работаем, включают:
- Реализуйте аналогичные полезные функции, как
Pay
в модулях Move. - Внедрите оценку газа для улучшения баланса газа и оценки общей стоимости газа.
- Дальнейшее улучшение API выбора монет для различных вариантов использования.
Узнать больше о Sui
- Сайт Sui
- Портал разработчиков Sui
- Переместить язык программирования
- Суй Технический документ
- Форумы сообщества
Стройте вместе с нами!
Мы в восторге от того, как разворачивается будущее, и приглашаем создателей и строителей Присоединяйтесь к нам.