Beitrag
Teile dein Wissen.
How do I fix a type mismatch error in a Move transaction?
I'm working on a transaction in Move language involving a purchase function for a kiosk, but I keep hitting an error indicating a type mismatch, specifically EFieldTypeMismatch: u64 = 2
from dynamic_field.move
. I've tried using BUYER_KIOSK
instead of BUYER
, but with no success. The transaction script involves splitting coins, assigning to coin
, making move-call
s, and confirming requests, but it fails at remove_child_object
. Could this error be due to the incorrect type for function arguments? How can I resolve this?
(\
PRICE="5000000000"; \
PACKAGE="0x4"; \
PURCHASE_COIN="0x5"; \
ITEM="0x6"; \
ITEM_TRANSFER_POLICY_TYPE="<0x2::transfer_policy::TransferPolicy<$PACKAGE::factory::Nft>>"; \
ITEM_TRANSFER_POLICY="0x7"; \
SELLER_KIOSK="0x8"; \
BUYER_KIOSK="0x9"; \
BUYER="0x10"; \
sui client ptb \
--split-coins @$PURCHASE_COIN "[$PRICE]" \
--assign coin \
--move-call 0x2::kiosk::purchase "<0x2::kiosk::Kiosk>" @$SELLER_KIOSK @$ITEM coin.0 \
--assign purchase_result \
--move-call 0x2::transfer_policy::confirm_request $ITEM_TRANSFER_POLICY_TYPE @$ITEM_TRANSFER_POLICY purchase_result.1 \
--move-call 0x2::transfer::public_transfer "<0x2::kiosk::Item>" purchase_result.0 @$BUYER \
--gas-budget 1000000000 \
--json\
)
- Move CLI
- Move
Antworten
2Wie der Fehler erwähnt, könnte es zu einer Typinkongruenz kommen. Bitte geben Sie Ihren Code ein und zeigen Sie, wo das Problem liegt.
Ja, danke Kumpel, habe meine Frage bearbeitet. Könntest du es dir jetzt ansehen?
Es scheint, dass das Missverständnis auf den erwarteten Typ Ihrer Transaktion zurückzuführen ist. Das <TYPE>
in your move-call
ist nicht unbedingt der Typ des ersten Arguments; stattdessen verwendet die Funktion möglicherweise Generics. Indem Sie sicherstellen, dass die Typargumente den Erwartungen der Funktion entsprechen, können Sie das Problem lösen.
Weißt du die Antwort?
Bitte melde dich an und teile sie.