Cardano JS SDK QQ 输入选择 QQ CIP-0002
这套软件包执行正在拟订的规格草案中的概念 CIP-0002 (中文(简体) )。 。 。 .
目前,只有1个输入选择算法: Round RobinRandom 改进,这是一个 随机改进 用于处理资产选择的适应.
用法示例
import { roundRobinRandomImprove, defaultSelectionConstraints, InputSelector, SelectionResult, SelectionSkeleton } from '@cardano-sdk/input-selection';
import { loadCardanoSerializationLib, CSL, CardanoSerializationLib, ProtocolParametersRequiredByWallet } from '@cardano-sdk/core';
const demo = async (protocolParameters: ProtocolParametersRequiredByWallet): Promise<SelectionResult> => {
const csl: CardanoSerializationLib = await loadCardanoSerializationLib();
const selector: InputSelector = roundRobinRandomImprove(coinsPerUtxoWord);
// It is important that you use the same instance of cardano-serialization-lib across your application.
// Bad: TransactionUnspentOutput.new(...)
// Good: CSL.TransactionUnspentOutput.new(...)
const utxo: CSL.TransactionUnspentOutput[] = [CSL.TransactionUnspentOutput.new(...), ...];
const outputs: CSL.TransactionOutput[] = [CSL.TransactionOutput.new(...), ...];
// Used to estimate min fee and validate transaction size
const buildTx = (inputSelection: SelectionSkeleton): Promise<CSL.Transaction> => {...};
const constraints = defaultSelectionConstraints({
protocolParameters, buildTx,
});
return selector.select({
utxo,
outputs,
constraints,
});
};
测试
使用基于属性的测试测试输入选择 快速检查,以及一些常规的以实例为基础的测试.
由于基于地产的测试的性质,每个建筑的代码覆盖报告略有不同.
RobinRandomImprove在使用高码时有100%的码面 numRuns 选项(例如100 000).
请注意,运行它与高 numRuns 您必须增加 欢乐 财务报告和审定财务报表 快速检查 暂停 .
见 代码覆盖报告。 。 。 .