Serum
Serum est un protocole pour les échanges décentralisés construit sur Solana. Vous pouvez utiliser Serum pour créer de nouveaux marchés, obtenir des carnets d'ordres, trade, etc.
Comment obtenir un marché de Serum
Un marché sur Serum contient tous les ordres et les fonctionnalités permettant de passer des ordres sur Serum. Pour tout ce que vous faites sur Serum, vous devez connaître le marché avec lequel vous travaillez.
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
);
})();
const market = await Market.load(connection, marketAddress, {}, programAddress);
Comment obtenir les carnets d'ordres de Serum
Les marchés de Serum sont constitués de carnets d'ordres qui comportent les offres et les demandes. Vous pouvez interroger ces informations afin de voir ce qui se passe sur le marché et agir en conséquence.
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);
}
})();
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);
}
Comment obtenir les ordres ouverts actuels
En tant que trader, vous souhaitez connaître les ordres ouverts en cours sur un marché. Avec Serum, il est possible d'interroger vos ordres ouverts ou ceux de n'importe qui d'autre sur un marché.
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);
}
})();
const orders = await market.loadOrdersForOwner(connection, traderPublicKey);