📘
solanaとserumの勉強 #1 -orderbookの中身見てみる-
solanaとserumの勉強をしていきたいと思います。
今回は、とりあえず、orderbookの中身を見るところまでやっていきたいと思います。
コード
import { Account, Connection, PublicKey } from '@solana/web3.js'
import { Market } from '@project-serum/serum'
(async () => {
let connection = new Connection('https://api.mainnet-beta.solana.com/')
// https://github.com/project-serum/serum-ts/blob/master/packages/serum/src/markets.json
let marketAddress = new PublicKey('9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT')
let programAddress = new PublicKey('9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin')
let market = await Market.load(connection, marketAddress, {}, programAddress)
// Fetching orderbooks
let bids = await market.loadBids(connection)
let asks = await market.loadAsks(connection)
// L2 orderbook data
for (let [price, size] of bids.getL2(40)) {
console.log(price, size)
}
// Full orderbook data
const gen = bids.items(true)
let item = gen.next()
while(!item.done) {
console.log(item.value)
item = gen.next()
}
})()
気になった点
marketAddressとprogramAddress
// https://github.com/project-serum/serum-ts/blob/master/packages/serum/src/markets.json
let marketAddress = new PublicKey('9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT')
let programAddress = new PublicKey('9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin')
-
depreceted: false
のものにすること(当たり前ですが...)
サンプルコードが動かない?
(サンプルコードが動かないってことあるんですね...)
// Full orderbook data
for (let order of asks) {
console.log(
order.orderId,
order.price,
order.size,
order.side, // 'buy' or 'sell'
);
}
これで動くようになりました。
// Full orderbook data
const gen = bids.items(true)
let item = gen.next()
while(!item.done) {
console.log(item.value)
item = gen.next()
}
item.value
の中はこんなものが表示されました。
{
orderId: <BN: 1fffffffff96b3b7f>,
clientId: <BN: 0>,
openOrdersAddress: PublicKey {
_bn: <BN: 3b57eaa1d0efaf77abb4cb854e6a437e5da9e2ae4f3d751eca247acf6f4e2243>
},
openOrdersSlot: 1,
feeTier: 0,
price: 0.001,
priceLots: <BN: 1>,
size: 0.1,
sizeLots: <BN: 1>,
side: 'buy'
}
Discussion