Metaplex 拍卖行错误 "Error processing Instruction 0: insufficient account keys for instruction"
Metaplex Auction House Error "Error processing Instruction 0: insufficient account keys for instruction"
我一直在尝试 运行 来自 mpl-auction-house 软件包的 execute_sale 修复程序,但我在日志中收到此错误 我已经让 sellInstruction 和 buyInstruction 正常工作
这是我的代码
const executeSellInstructionAccounts:ExecuteSaleInstructionAccounts = {
buyer:buyerwallet.publicKey,
seller:Sellerwallet.publicKey,
tokenAccount:tokenAccountKey,
tokenMint:mint,
metadata:await getMetadata(mint),
treasuryMint:new anchor.web3.PublicKey(AuctionHouse.mint),
auctionHouse:new anchor.web3.PublicKey(AuctionHouse.address),
auctionHouseFeeAccount:new anchor.web3.PublicKey(AuctionHouse.feeAccount),
authority:new anchor.web3.PublicKey(AuctionHouse.authority),
programAsSigner:programAsSigner,
auctionHouseTreasury:new anchor.web3.PublicKey(AuctionHouse.treasuryAccount),
buyerReceiptTokenAccount:buyerATA.address,
sellerPaymentReceiptAccount:Sellerwallet.publicKey,
buyerTradeState:BuyertradeState,
escrowPaymentAccount:escrowPaymentAccount,
freeTradeState:freeTradeState,
sellerTradeState:SellertradeState,
}
const executeSellInstructionArgs:ExecuteSaleInstructionArgs = {
escrowPaymentBump:escrowBump,
freeTradeStateBump:freeTradeBump,
programAsSignerBump:programAsSignerBump,
buyerPrice:buyPriceAdjusted,
tokenSize:tokenSizeAdjusted,
}
const execute_sale_ix = createExecuteSaleInstruction(
executeSellInstructionAccounts,executeSellInstructionArgs
)
const execute_sale_tx = new anchor.web3.Transaction(
{
recentBlockhash: blockhash,
feePayer: Sellerwallet.publicKey,
}
)
execute_sale_tx.add(execute_sale_ix);
const execute_sale_res = await sprovider.sendAndConfirm(execute_sale_tx);
目前已发布的 AuctionHouse SDK 与底层 Rust 程序之间存在差异。
控制台参考实现在这里:https://github.com/metaplex-foundation/metaplex/blob/master/js/packages/cli/src/auction-house-cli.ts
控制台参考实现之所以有效,是因为它直接从链中加载 idl,因此是最新的。它完全绕过了 AuctionHouse SDK。
但是,如果您在浏览器中执行此操作,您可能不想从链中加载 IDL。你需要解压库之类的东西,这会大大增加你的包大小。
为了解决这个问题,我在这里分叉了 metaplex 存储库:https://github.com/neftworld/metaplex
上面的分叉有以下变化:
- 将 IDL 定义包括为打字稿 src 文件(截至 2022 年 5 月 30 日正确)
- 正在从本地 IDL 定义中获取 auctionHouse 程序,而不是从链中获取它
因此,您可以将其用作网络实施的基础。要在网络上进行此操作,您需要删除对密钥对的引用 - 控制台使用密钥对文件 - 并在发送前使用浏览器钱包签署交易。
我一直在尝试 运行 来自 mpl-auction-house 软件包的 execute_sale 修复程序,但我在日志中收到此错误 我已经让 sellInstruction 和 buyInstruction 正常工作
这是我的代码
const executeSellInstructionAccounts:ExecuteSaleInstructionAccounts = {
buyer:buyerwallet.publicKey,
seller:Sellerwallet.publicKey,
tokenAccount:tokenAccountKey,
tokenMint:mint,
metadata:await getMetadata(mint),
treasuryMint:new anchor.web3.PublicKey(AuctionHouse.mint),
auctionHouse:new anchor.web3.PublicKey(AuctionHouse.address),
auctionHouseFeeAccount:new anchor.web3.PublicKey(AuctionHouse.feeAccount),
authority:new anchor.web3.PublicKey(AuctionHouse.authority),
programAsSigner:programAsSigner,
auctionHouseTreasury:new anchor.web3.PublicKey(AuctionHouse.treasuryAccount),
buyerReceiptTokenAccount:buyerATA.address,
sellerPaymentReceiptAccount:Sellerwallet.publicKey,
buyerTradeState:BuyertradeState,
escrowPaymentAccount:escrowPaymentAccount,
freeTradeState:freeTradeState,
sellerTradeState:SellertradeState,
}
const executeSellInstructionArgs:ExecuteSaleInstructionArgs = {
escrowPaymentBump:escrowBump,
freeTradeStateBump:freeTradeBump,
programAsSignerBump:programAsSignerBump,
buyerPrice:buyPriceAdjusted,
tokenSize:tokenSizeAdjusted,
}
const execute_sale_ix = createExecuteSaleInstruction(
executeSellInstructionAccounts,executeSellInstructionArgs
)
const execute_sale_tx = new anchor.web3.Transaction(
{
recentBlockhash: blockhash,
feePayer: Sellerwallet.publicKey,
}
)
execute_sale_tx.add(execute_sale_ix);
const execute_sale_res = await sprovider.sendAndConfirm(execute_sale_tx);
目前已发布的 AuctionHouse SDK 与底层 Rust 程序之间存在差异。
控制台参考实现在这里:https://github.com/metaplex-foundation/metaplex/blob/master/js/packages/cli/src/auction-house-cli.ts
控制台参考实现之所以有效,是因为它直接从链中加载 idl,因此是最新的。它完全绕过了 AuctionHouse SDK。
但是,如果您在浏览器中执行此操作,您可能不想从链中加载 IDL。你需要解压库之类的东西,这会大大增加你的包大小。
为了解决这个问题,我在这里分叉了 metaplex 存储库:https://github.com/neftworld/metaplex
上面的分叉有以下变化:
- 将 IDL 定义包括为打字稿 src 文件(截至 2022 年 5 月 30 日正确)
- 正在从本地 IDL 定义中获取 auctionHouse 程序,而不是从链中获取它
因此,您可以将其用作网络实施的基础。要在网络上进行此操作,您需要删除对密钥对的引用 - 控制台使用密钥对文件 - 并在发送前使用浏览器钱包签署交易。