Published
Edited
Oct 26, 2020
Insert cell
Insert cell
Insert cell
Insert cell
await client.version()
Insert cell
chainHead = await client.chainHead()
Insert cell
Insert cell
Insert cell
viewof selectedHeight = html`<input type=range max=${currentHeight} value=${currentHeight}>`
Insert cell
Insert cell
tipSet = (await client.chainGetTipSetByHeight(selectedHeight, headTipSet)).Cids
Insert cell
Insert cell
// disabled ... deal list too big. // deals = client.StateMarketDeals(tipSet)
Insert cell
Object.keys(deals).length
Insert cell
Insert cell
dealArray = [...Object.entries(deals)].map(([dealNumber, { Proposal, State }]) => ({ dealNumber, ...Proposal, ...State }))
Insert cell
arrowDeals = arrow.Table.new(
[
arrow.Uint32Vector.from(dealArray.map(deal => Number(deal.dealNumber))),
arrow.Vector.from({
values: dealArray.map(deal => deal.Client),
type: new arrow.Dictionary(new arrow.Utf8(), new arrow.Int32())
}),
arrow.Vector.from({
values: dealArray.map(deal => deal.Provider),
type: new arrow.Dictionary(new arrow.Utf8(), new arrow.Int32())
}),
arrow.Int32Vector.from(dealArray.map(deal => Number(deal.StartEpoch))),
arrow.Int32Vector.from(dealArray.map(deal => Number(deal.EndEpoch))),
arrow.Int32Vector.from(dealArray.map(deal => Number(deal.SectorStartEpoch))),
arrow.BoolVector.from(dealArray.map(deal => deal.VerifiedDeal))
],
[
"dealNumber",
"client",
"provider",
"startEpoch",
"endEpoch",
"sectorStartEpoch",
"verifiedDeal"
]
)
Insert cell
arrowDeals.count()
Insert cell
viewof rowNumber = html`<input type=range max=${arrowDeals.count() - 1} value=${arrowDeals.count() - 1}>`
Insert cell
rowNumber
Insert cell
JSON.parse(`${arrowDeals.get(rowNumber)}`)
Insert cell
activeArrowDeals = arrowDeals.filter(arrow.predicate.col('sectorStartEpoch').ne(-1))
Insert cell
activeArrowDeals.count()
Insert cell
verifiedArrowDeals = arrowDeals.filter(arrow.predicate.col('verifiedDeal').eq(true))
Insert cell
verifiedArrowDeals.count()
Insert cell
jimArrowDeals = arrowDeals.filter(arrow.predicate.col('verifiedDeal').eq(true))
Insert cell
activeArrowDeals.get(0)
Insert cell
arrowDeals.getColumn('dealNumber')
Insert cell
filteredActiveDeals = {
const result = []
let dealNumber, client, provider, startEpoch, endEpoch, sectorStartEpoch, verifiedDeal
activeArrowDeals.scan(idx => {
result.push({
dealNumber: Uint32Array.from([dealNumber(idx)])[0],
client: `${client(idx)}`,
provider: `${provider(idx)}`,
startEpoch: Int32Array.from([startEpoch(idx)])[0],
endEpoch: Int32Array.from([endEpoch(idx)])[0],
sectorStartEpoch: Int32Array.from([sectorStartEpoch(idx)])[0],
verifiedDeal: verifiedDeal(idx)
})
}, batch => {
dealNumber = arrow.predicate.col('dealNumber').bind(batch)
client = arrow.predicate.col('client').bind(batch)
provider = arrow.predicate.col('provider').bind(batch)
startEpoch = arrow.predicate.col('startEpoch').bind(batch)
endEpoch = arrow.predicate.col('endEpoch').bind(batch)
sectorStartEpoch = arrow.predicate.col('sectorStartEpoch').bind(batch)
verifiedDeal = arrow.predicate.col('verifiedDeal').bind(batch)
})
return result
}
Insert cell
filteredVerifiedDeals = {
const result = []
let dealNumber, client, provider, startEpoch, endEpoch, sectorStartEpoch, verifiedDeal
verifiedArrowDeals.scan(idx => {
result.push({
dealNumber: Uint32Array.from([dealNumber(idx)])[0],
client: `${client(idx)}`,
provider: `${provider(idx)}`,
startEpoch: Int32Array.from([startEpoch(idx)])[0],
endEpoch: Int32Array.from([endEpoch(idx)])[0],
sectorStartEpoch: Int32Array.from([sectorStartEpoch(idx)])[0],
verifiedDeal: verifiedDeal(idx)
})
}, batch => {
dealNumber = arrow.predicate.col('dealNumber').bind(batch)
client = arrow.predicate.col('client').bind(batch)
provider = arrow.predicate.col('provider').bind(batch)
startEpoch = arrow.predicate.col('startEpoch').bind(batch)
endEpoch = arrow.predicate.col('endEpoch').bind(batch)
sectorStartEpoch = arrow.predicate.col('sectorStartEpoch').bind(batch)
verifiedDeal = arrow.predicate.col('verifiedDeal').bind(batch)
})
return result
}
Insert cell
Insert cell
md`# Verified Deals

Height: ${selectedHeight}

Deal # | Client | Miner | Sector Start | Start | End | Verified
--- | --- | --- | --- | --- | --- | ---
${filteredVerifiedDeals.map(({dealNumber, client, provider, sectorStartEpoch, startEpoch, endEpoch, verifiedDeal }) =>
`${dealNumber} | ${client} | ${provider} | ${sectorStartEpoch} | ${startEpoch} | ${endEpoch} | ${verifiedDeal} \n`)}
`
Insert cell
Insert cell
LotusRPC = (await import('@filecoin-shipyard/lotus-client-rpc')).LotusRPC
Insert cell
BrowserProvider = (await import('@filecoin-shipyard/lotus-client-provider-browser')).BrowserProvider
Insert cell
schema = (await import('@filecoin-shipyard/lotus-client-schema')).mainnet.fullNode
Insert cell
Insert cell
Object.keys(schema.methods)
Insert cell
Insert cell
Insert cell
endpointUrl
Insert cell
client = {
const provider = new BrowserProvider(endpointUrl)
return new LotusRPC(provider, { schema })
}
Insert cell
Insert cell
arrow = require('@apache-arrow/es5-umd@0.15.1')
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more