Move.

Beitrag

Teile dein Wissen.

kryptoschain.
Apr 10, 2025
Experten Q&A

Wie übertrage ich ein Objekt, das einem anderen Objekt gehört?

Ich habe ein Problem mit der Übertragung eines Objekts A, das Objekt B gehört, und Objekt B gehört mir. Ich erhalte eine Fehlermeldung, die besagt, dass die Transaktion nicht vom richtigen Absender signiert wurde. Weiß jemand, wie man das löst und Objekt A richtig empfängt?

  • Move CLI
  • Move
0
2
Teilen
Kommentare
.

Antworten

2
deriss.
Apr 11 2025, 03:36

Es hört sich so an, als müssten Sie den Prozess „Transfer To Object“ (TTO) verwenden. Stellen Sie sicher, dass Sie die Fähigkeiten der beteiligten Objekte überprüfen. Der übergeordnete Objekttyp (obj_b) muss den Empfang von Objekten zulassen, da er einen veränderbaren Zugriff auf seine UID benötigt. Stellen Sie außerdem sicher, dass das untergeordnete Objekt (obj_a), wenn es nicht über diese storeFähigkeit verfügt, so eingerichtet sein muss, dass es empfangbar ist. Weitere Informationen finden Sie in dieser Tabelle: https://docs.sui.io/concepts/transfers/transfer-to-object#custom-receiving-rules

0
Kommentare
.
24p30p.
Jul 9 2025, 07:13

Wenn du beim Versuch, Objekt A zu übertragen, das zu Objekt B gehört und Objekt B zu deinem Konto gehört, eine Fehlermeldung erhältst, die besagt, dass die Transaktion nicht vom richtigen Absender signiert wurde, liegt das daran, wie das Eigentum in Sui funktioniert. Wenn ein Objekt einem anderen Objekt gehört, wie in Ihrem Fall, können Sie es nicht direkt von Ihrem Konto übertragen. Stattdessen müssen Sie Objekt B (das übergeordnete Objekt) in die Transaktion einbeziehen und es verwenden, um Aktionen für Objekt A zu autorisieren. Es reicht nicht aus, die Transaktion einfach mit Ihrem Konto zu signieren, da Objekt A nicht direkt Ihrer Adresse gehört. Um dies zu beheben, stellen Sie sicher, dass Sie Objekt B als veränderbare Eingabe in Ihren Move-Aufruf oder Transaktionsblock aufnehmen, damit die Sui-Laufzeit weiß, dass die Aktion autorisiert ist.

Hier ist ein einfaches Beispiel dafür, wie das in einem Transaktionsblock mithilfe des Sui SDK aussehen könnte:

const tx = new TransactionBlock();
const parentObject = tx.object('0xB'); // object B
const childObject = tx.object('0xA'); // object A
// use parentObject to perform operations involving childObject
// for example, calling a Move function to transfer object A

tx.moveCall({
  target: '0xYourPackage::your_module::transfer_child',
  arguments: [parentObject, childObject, tx.pure(recipientAddress)]
});

await wallet.signAndExecuteTransactionBlock({ transactionBlock: tx });

Stellen Sie nur sicher, dass Ihre Move-Funktion sowohl Objekt B als auch Objekt A korrekt als Eingaben definiert und dass Objekt B die Berechtigung hat, mit A zu arbeiten. Weitere Informationen zum Besitz und zu den Berechtigungen von Sui-Objekten finden Sie in den offiziellen Dokumenten hier: https://docs.sui.io/understand/ownership

0
Kommentare
.

Weißt du die Antwort?

Bitte melde dich an und teile sie.

Move is an executable bytecode language used to implement custom transactions and smart contracts.

148Beiträge240Antworten
Sui.X.Peera.

Verdiene deinen Anteil an 1000 Sui

Sammle Reputationspunkte und erhalte Belohnungen für deine Hilfe beim Wachstum der Sui-Community.

BelohnungskampagneJuli