Я бег сервиса, который принимает вклады пользователей и отправляет изъятия. Я использую Bitcoin Ядро для кошелька.
Я хотел бы пойти на полную Segwit с моей службой, но вот проблема: bitcoind бумажник не генерирует адреса изменений P2SH-P2WPKH (Segwit) по умолчанию. Так что даже если я произвожу P2SH-P2WPKH адреса принимать депозиты от своих пользователей с помощью addwitnessaddress, всякий раз, когда я отправляю монеты, изменение будет адрес P2PKH.
Я мог бы вручную создать изменения адреса P2SH-P2WPKH по (в псевдокод):
Код:
Тх = createrawtransaction ([], количество)
chaddr = getrawchangeaddress ()
chaddr = addwitnessaddress (chaddr) # это создает P2SH-P2WPKH адрес из адреса изменений P2PKH
# Теперь финансировать сделку
Тх = fundrawtransaction (ТХ, changeAddress: chaddr) [ 'шестигранной']
Тх = signrawtransaction (ТХ) [ 'шестигранной']
sendrawtransaction (ТХ)
chaddr = getrawchangeaddress ()
chaddr = addwitnessaddress (chaddr) # это создает P2SH-P2WPKH адрес из адреса изменений P2PKH
# Теперь финансировать сделку
Тх = fundrawtransaction (ТХ, changeAddress: chaddr) [ 'шестигранной']
Тх = signrawtransaction (ТХ) [ 'шестигранной']
sendrawtransaction (ТХ)
Нет дело в том, addwitnessaddress (chaddr) ломает вещи немного, так как результирующий адрес добавляется к учетной записи адреса, и не помечен как адрес изменения. Поэтому он используется как обычный адрес счета и генерирует отправку / прием сделок. Похоже, что ничего не нарушал, за исключением создания дополнительных операций, возвращаемые listtransactions и неточные "количество" поля.
Таким образом, решение, которое я бы очень хотелось, чтобы увидеть это:
1. сделать бумажник генерировать segwit адреса изменения сам по себе, так что мы можем просто использовать sendtoaddress и другие RPC вызовы без обходных путей (возможно, вариант в конфигурации?),
2. каким-то образом сделать адрес в результате addwitnessaddress (chaddr) в качестве адреса изменения,
3. или разрешить getrawchangeaddress генерировать P2SH-P2WPH адрес в первую очередь.
Очевидно (1) было бы гораздо лучше, но в данный момент я ищу любое решение, которое будет "просто работай" и не нарушу рабочий процесс.
Приветствия и спасибо,
Итан