Sui 결제 거래 유형 소개
최신 Sui 릴리스에서는 세 가지 새로운 기본 트랜잭션 유형을 도입하고 기존 세 가지 방법을 더 이상 지원하지 않습니다: Pay, PaySui, PayAllSui입니다.
최신 Sui 릴리스에서는 세 가지 새로운 기본 트랜잭션 유형이 도입되고 기존 세 가지 방법은 더 이상 사용되지 않습니다. 새로운 API인 Pay, PaySui, PayAllSui-는TransferSui, SplitCoin, MergeCoin을 효과적으로대체합니다. 이전 세 가지 방법은 당분간 계속 사용할 수 있으며, 제거하기 전에 커뮤니티에 사전 공지를 제공할 예정입니다.
이러한 결제수단은 사용 편의성을 높이고 코인 관리 오버헤드를 줄이면서 다양한 시나리오를 지원할 수 있습니다. 저희의 바람은 개발자들이 더 다양한 사용 사례를 지원할 수 있는 유연성을 확보하고, 결제 사용 사례에 일반적으로 기대되는 더 강력한 API를 보장하는 것입니다.
Pay, PaySui 및 PayAllSui는 Sui 0.14.0의 일부로 출시되었습니다.
새로운 결제* 거래 유형
결제
거래는 여러 개의 코인을 받아 지정된 금액 목록에 따라 여러 주소로 전송합니다. 결제
트랜잭션은 SUI 를 포함한 모든 유형의 코인을 사용할 수 있습니다. 가스 결제에는 별도의 SUI 객체가 사용되며, 프로토콜은 필요한 경우 트랜잭션에 대해 하나를 선택합니다.
- 받는 사람과 보내는 사람이 동일한 경우,
결제
의 일반화 된 버전입니다.분할 코인
그리고mergeCoin
.
페이수이
트랜잭션은 여러 개의 SUI 코인을 받아 지정된 금액 목록에 따라 여러 주소로 전송합니다. 페이수이
는 SUI 코인만 사용하며 가스 코인 개체가 필요하지 않습니다.
- 첫 번째 SUI 코인 객체 입력은 가스 결제에 사용되므로 이 SUI 코인의 잔액은 가스 예산과 같거나 더 커야 합니다.
- 입력한 총 SUI 코인 잔액은 가스 예산과 송금할 금액을 모두 충당하기에 충분해야 합니다.
페이올수이
거래는 여러 개의 SUI 코인을 가져와 가스비 공제 후 한 명의 수신자에게 보냅니다. 트랜잭션이 끝나면 발신자 주소 아래에 입력한 SUI 코인이 0개가 남게 됩니다.
- 첫 번째 SUI 코인 객체 입력은 가스 결제에 사용되므로 이 SUI 코인의 잔액은 가스 예산과 같거나 더 커야 합니다.
- 발신자는 이 트랜잭션 유형을 통해 하나의 트랜잭션에 SUI 이 전혀 남지 않은 상태에서 모든 SUI 코인을 다른 주소로 이체할 수 있습니다.
마이그레이션 가이드
다음은 Typescript SDK를 기반으로 한 마이그레이션 코드 예제입니다. 이러한 변경 사항은 Rust SDK 및 RPC 엔드포인트에 사용되는 것과 매우 유사합니다.
전송수이
지정된 금액으로 마이그레이션됩니다.페이수이
// 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);
전송수이
지정되지 않은 금액은페이올수이
// 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);
진행 중인 관련 작업
저희 팀은 결제와 관련된 개발자 경험과 속도를 더욱 개선하기 위해 계속 노력할 것입니다. 그 밖에도 다음과 같은 이니셔티브가 진행 중입니다:
- 다음과 같은 유사한 활용 기능을 구현합니다.
결제
Move 모듈에 있습니다. - 더 나은 가스 예산 및 총 가스 비용 추정을 위해 가스 추정 기능을 도입하세요.
- 다양한 사용 사례를 위해 코인 선택 API를 더욱 개선합니다.