Serum

Serum คือ protocol สำหรับ decentralized exchanges สร้างอยู่บน Solana. เราสามารถใช้ Serum เพื่อสร้าง markets, get order books, trade, และอื่นๆ อีกมากมาย

วิธีดึงข้อมูล Serum market

market บน Serum จะมี orders และความสามารถในการสร้าง orders บน Serum สำหรับการจะทำอะไรบน Serum เราต้องรู้ว่า market ไหนที่เราใช้งานอยู่ด้วย

Press </> button to view full source
import { Connection, PublicKey } from "@solana/web3.js";
import { Market } from "@project-serum/serum";

(async () => {
  const marketAddress = new PublicKey(
    "9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT"
  );
  const programAddress = new PublicKey(
    "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"
  );
  const connection = new Connection(
    "https://ssc-dao.genesysgo.net",
    "confirmed"
  );

  const market = await Market.load(
    connection,
    marketAddress,
    {},
    programAddress
  );
})();

วิธีดึงข้อมูล Serum order books

Serum markets ประกอบด้วย order books ที่มี bids และ asks. เราสามารค้นหาข้อมูลพวกนี้ได้ทำให้เรารู้ว่า market ตอนนี้เป็นยังไง และตัดสินใจว่าจะทำอะไรต่อไปได้

Press </> button to view full source
import { Connection, PublicKey } from "@solana/web3.js";
import { Market } from "@project-serum/serum";

(async () => {
  let marketAddress = new PublicKey(
    "9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT"
  );
  let programAddress = new PublicKey(
    "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"
  );
  let connection = new Connection("https://ssc-dao.genesysgo.net", "confirmed");

  let market = await Market.load(connection, marketAddress, {}, programAddress);

  let bids = await market.loadBids(connection);
  for (let [price, size] of bids.getL2(20)) {
    console.log(price, size);
  }

  let asks = await market.loadAsks(connection);
  for (let [price, size] of asks.getL2(20)) {
    console.log(price, size);
  }
})();

วิธีดึงข้อมูล open orders ในปัจจุบัน

ในมุมมองของ trader เราต้องการรู้ open orders ปัจจุบันของเราบน market. เราสามารถค้นหา open orders ของเราเอง หรือของคนอื่นๆ ได้ด้วย Serum.

Press </> button to view full source
import { Connection, PublicKey } from "@solana/web3.js";
import { Market } from "@project-serum/serum";

(async () => {
  let trader = new PublicKey("CuieVDEDtLo7FypA9SbLM9saXFdb1dsshEkyErMqkRQq");
  let marketAddress = new PublicKey(
    "9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT"
  );
  let programAddress = new PublicKey(
    "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"
  );
  let connection = new Connection("https://ssc-dao.genesysgo.net", "confirmed");

  let market = await Market.load(connection, marketAddress, {}, programAddress);

  const orders = await market.loadOrdersForOwner(connection, trader);
  for (let order of orders) {
    console.log(order);
  }
})();
Last Updated:
Contributors: Todsaporn Banjerdkit