v0.21.0 has several important breaking changes that improve protocol scalability.
// old
const activeStateTrees = await connection.getCachedActiveStateTreeInfo();
const { tree } = pickRandomTreeAndQueue(activeStateTrees);
const compressIx = await CompressedTokenProgram.compress({
outputStateTree: tree,
});
// New
const treeInfos = await rpc.getStateTreeInfos();
const treeInfo = selectStateTreeInfo(treeInfos);
const infos = await getTokenPoolInfos(rpc, mint);
const tokenPoolInfo = selectTokenPoolInfo(infos);
const compressIx = await CompressedTokenProgram.compress({
outputStateTreeInfo: treeInfo,
tokenPoolInfo,
});
// ...
const stateTreeInfos = await rpc.getCachedActiveStateTreeInfo();
const { tree } = pickRandomTreeAndQueue(stateTreeInfos)
const ix = await CompressedTokenProgram.decompress({
...rest,
outputStateTree: tree,
});
// ...
const poolInfos = await getTokenPoolInfos(rpc, mint);
const selectedTokenPoolInfos = selectTokenPoolInfosForDecompression(
poolInfos,
amount,
);
const ix = await CompressedTokenProgram.decompress({
...rest
tokenPoolInfos: selectedTokenPoolInfos,
});