La función IsStandardTx
puede devolver varias razones para transacciones no estándar. Algunos de ellos se prueban actualmente, por un lado, con la prueba unitaria test_IsStandard
( transaction_tests.cpp
), verificando directamente el resultado de la llamada a la función, por otro lado, con la prueba funcional mempool_accept.py
, probando indirectamente usando el RPC testmempoolaccept
y verificando el campo reject-reason
en el resultado. En la rama maestra actual (7967104aee055476107dc17265cefc4ae4e75378), la cobertura de prueba es similar a la siguiente:
| IsStandardTx()
Motivo del rechazo | Prueba funcional ( mempool_accept.py
) | Prueba unitaria ( transaction_tests.cpp
) |
| ------------- |:-------------:|:------:|
| "version"
| :heavy_check_mark: | |
| "tx-size"
| :heavy_check_mark: | |
| "scriptsig-size"
|
| "scriptsig-not-pushonly"
| :heavy_check_mark: | |
| "scriptpubkey"
| :heavy_check_mark: | :heavy_check_mark: |
| "bare-multisig"
|
| "dust"
| :heavy_check_mark: | :heavy_check_mark: |
| "multi-op-return"
| :heavy_check_mark: | :heavy_check_mark: |
Creo que tendría sentido tener al menos una prueba para cada motivo, ya sea una prueba unitaria o una prueba funcional; para "scriptsig-size"
y "bare-multisig"
no tenemos ninguna, así que esas son las más necesario como ahora. Dado eso, eso conduciría a la siguiente lista de siete tareas pequeñas (más o menos ordenadas por prioridad descendente):
"scriptsig-size"
razón (PR #17480, cometer 5e8a56348b5e1026e9ddcae0b2fa2a68faf4439e, hecho por mi humilde yo)"bare-multisig"
razón (PR #17502, cometer 1bb5d517aa616c1d5b5801d2ea36a2de5fb61eba, hecho por mi humilde yo)"scriptsig-size"
razón (PR #17532, cometer 8f2d7737cc236b6122f30e31856eb3181960fba1, hecho por mi humilde yo)"bare-multisig"
razón (PR #17541, cometer 1be0b1fb2adcf95d76f879195564c0bf84162e31, hecho por mi humilde yo)"scriptsig-not-pushonly"
razón (PR #17720, cometer 5aab011805ceb12801644170700b1a62e0bf4a5d, hecho por mi humilde yo)"tx-size"
razón (PR #17947, cometer 4537ba5f21ad8afb705325cd8e15dd43877eb28f, dony por humildad)"version"
razón (PR #17555, confirmar https://github.com/bitcoin/bitcoin/pull/17555/commits/76303f65f92a0fbe9a90c0e807554a6daa860636, hecho por dspicher)Supongo que este sería un buen candidato para un "buen primer número"; estoy tentado a trabajar en eso yo mismo, pero para alentar a los nuevos colaboradores (y sabiendo lo útil que puede ser entrar en "buenos primeros números"), no lo haré. tócalo un rato.
Me gustaría trabajar en esto.
@theStack , ¿ya comenzó con las pruebas "bare-multisig"
?
@dspicher : ¡Me alegra saber que está interesado! En los últimos días, ya abrí PR para la unidad y la prueba funcional para "bare-multisig"
(ver #17502 y #17541; sin embargo, ambos aún no se fusionaron), por lo tanto, en este momento las siguientes tres pruebas son desaparecido:
"scriptsig-not-pushonly"
razón"tx-size"
razón"version"
razón¡Siéntete libre de trabajar en eso y diviértete! :)
Todas las pruebas unitarias y funcionales que faltan se implementan y fusionan en la rama maestra ahora :tada: :beer: así que estoy cerrando este problema.
Comentario más útil
@dspicher : ¡Me alegra saber que está interesado! En los últimos días, ya abrí PR para la unidad y la prueba funcional para
"bare-multisig"
(ver #17502 y #17541; sin embargo, ambos aún no se fusionaron), por lo tanto, en este momento las siguientes tres pruebas son desaparecido:"scriptsig-not-pushonly"
razón"tx-size"
razón"version"
razón¡Siéntete libre de trabajar en eso y diviértete! :)