【问题标题】:pyserum place order unknow instruction errorpyserum 下单未知指令错误
【发布时间】:2021-11-08 09:39:41
【问题描述】:

我正在尝试使用 pyserum 将 SOL 转换为 USDT。 这是我正在使用的代码。

import base58
from pyserum.connection import conn
from pyserum.enums import OrderType, Side
from pyserum.market import Market
from pyserum.connection import get_live_markets, get_token_mints
from solana.publickey import PublicKey
from solana.rpc.types import TxOpts
from solana.keypair import Keypair
from spl.token.client import Token
from spl.token.constants import TOKEN_PROGRAM_ID
from config import PRIVATEKEYPHANTOM

all_mint_address = get_token_mints()
all_market_address = get_live_markets()

if __name__ == '__main__':
    from_coin = 'SOL'
    to_coin = 'USDT'
    symbol = f"{from_coin}/{to_coin}"
    market_address = fetch_market_address(symbol)
    mint_address = fetch_mint_address(symbol)
    
    sender_key_pair = get_keypair(PRIVATEKEYPHANTOM)
    payer = Keypair(sender_key_pair[:32])
    
    cc = conn("https://api.mainnet-beta.solana.com")

    quote_token = Token(
        cc,
        pubkey=PublicKey(mint_address), # mint address of token USDT
        program_id=TOKEN_PROGRAM_ID,
        payer=payer,
    )


    quote_wallet = quote_token.create_account(
    payer.public_key,
    skip_confirmation=True)  # Make sure you send tokens to this address
    print("quote wallet: ", str(quote_wallet))


    market_address = PublicKey(market_address) # Address for SOL/USDT
    print(market_address)
    market = Market.load(cc, market_address)

    tx_sig = market.place_order(
        payer=quote_wallet,
        owner=payer,
        side=Side.BUY,
        order_type=OrderType.LIMIT,
        limit_price=0.01,
        max_quantity=1,
        opts = TxOpts(skip_preflight=True)
    )
    print(tx_sig)
    

虽然,我在执行后收到以下错误。 ** 交易失败:错误处理指令1:未知指令错误 **

完整的错误可以找到here

【问题讨论】:

  • 我得到了同样的错误。你设法解决了这个问题吗?

标签: python solana


【解决方案1】:

我遇到了同样的错误,最后我发现在某些基于 Serum 的 UI 中复制订单是个好主意。我使用了https://dex.raydium.io,当我尝试复制我遇到的错误时

价格必须是 0.1 的增量

至少对于 SOL/USDC,有一条规则是我需要至少交易 0.1 的数量。 我不知道为什么在 DEX 上设置了这个限制,为什么 pyserum 没有显示一些更具可读性的错误,但至少从 0.01 更改为 0.1 对我有帮助。

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2012-11-11
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多