use {super::*, crate::wallet::Wallet, std::collections::BTreeSet}; #[derive(Serialize, Deserialize)] pub struct CardinalUtxo { pub output: OutPoint, pub amount: u64, } pub(crate) fn run(options: Options) -> SubcommandResult { let index = Index::open(&options)?; index.update()?; let unspent_outputs = index.get_unspent_outputs(Wallet::load(&options)?)?; let inscribed_utxos = index .get_inscriptions(&unspent_outputs)? .keys() .map(|satpoint| satpoint.outpoint) .collect::<BTreeSet<OutPoint>>(); let cardinal_utxos = unspent_outputs .iter() .filter_map(|(output, amount)| { if inscribed_utxos.contains(output) { None } else { Some(CardinalUtxo { output: *output, amount: amount.to_sat(), }) } }) .collect::<Vec<CardinalUtxo>>(); Ok(Box::new(cardinal_utxos)) } #44,987,569textword, and the second is the number of times it appears in the corpus. The entries are sorted from least-frequently occurring to most-frequently occurring. `frequency.tsv` was compiled using [this program](https://github.com/casey/onegrams). To search an `ord` wallet for sats with a name in `frequency.tsv`, use the following [`ord`](https://github.com/ordinals/ord) command: ``` ord wallet sats --tsv frequency.tsv ``` This command requires the sat index, so `--index-sats` must be passed to ord when first creating the index. ### Part 0 *Rare sats pair best with rare words.* The transaction that submits the UTXO containing the sat whose name appears with the lowest number of occurrences in `frequency.tsv` shall be the winner of part 0. ### Part 1 *Popularity is the font of value.* The transaction that submits the UTXO containing the sat whose name appears with the highest number of occurrences in `frequency.tsv` shall be the winner of part 1. ### Tie Breaking In the case of a tie, where two submissions occur with the same frequency, the #44,987,335textdmt-mint.nat#43,433,850tapdmt-mint.nat#43,433,808tapdmt-mint.nat#43,433,694tapmint1,000,000.piin#38,756,730brc-20