Sui 결제 거래 유형 소개

최신 Sui 릴리스에서는 세 가지 새로운 기본 트랜잭션 유형을 도입하고 기존 세 가지 방법을 더 이상 지원하지 않습니다: Pay, PaySui, PayAllSui입니다.

Sui 결제 거래 유형 소개

최신 Sui 릴리스에서는 세 가지 새로운 기본 트랜잭션 유형이 도입되고 기존 세 가지 방법은 더 이상 사용되지 않습니다. 새로운 API인 Pay, PaySui, PayAllSui-는TransferSui, SplitCoin, MergeCoin을 효과적으로대체합니다. 이전 세 가지 방법은 당분간 계속 사용할 수 있으며, 제거하기 전에 커뮤니티에 사전 공지를 제공할 예정입니다.

이러한 결제수단은 사용 편의성을 높이고 코인 관리 오버헤드를 줄이면서 다양한 시나리오를 지원할 수 있습니다. 저희의 바람은 개발자들이 더 다양한 사용 사례를 지원할 수 있는 유연성을 확보하고, 결제 사용 사례에 일반적으로 기대되는 더 강력한 API를 보장하는 것입니다.

Pay, PaySuiPayAllSui는 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를 더욱 개선합니다.