Здравствуй,
Я пытаюсь понять функцию SelectCoins (по крайней мере, на высоком уровне):
https://github.com/bitcoin/bitcoin/blob/master/src/wallet.cpp#L746
Похоже, что у него есть куча оптимизаций, но мне интересно, если что-то простое, как это будет работать, как наивные реализации:
1. найти все выходы ТХ, которые удовлетворяют следующим условиям
- послал ко мне (есть hash160 принадлежащих к ключу в моем бумажнике)
- не были потрачены еще
- находятся в подтвержденном блоке
2. сортировать выходы наименьшего до наибольшего количества
3. для каждого выхода
- создать вход, который ссылается и добавить к current_amount
- Перерыв если current_amount > сумма, которую я хочу, чтобы отправить
4. создать один выход (изменить) посылая разницу обратно ко мне на новый адрес
Есть ли что-то подобное имеет смысл или я упускаю какие части? Кроме того, имеет ли смысл использовать самые мелкие монеты первым, чтобы предотвратить фрагментацию или есть способ лучше?
Благодаря! Не видели хорошую рецензию на этом в другом месте, но если я пропустил это, не стесняйтесь, чтобы связать меня с ним.