Bitcoin: Agregue pruebas que verifiquen los motivos de rechazo faltantes para la función IsStandardTx

Creado en 6 nov. 2019  ·  3Comentarios  ·  Fuente: bitcoin/bitcoin

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):

  • [x] agregar prueba unitaria por "scriptsig-size" razón (PR #17480, cometer 5e8a56348b5e1026e9ddcae0b2fa2a68faf4439e, hecho por mi humilde yo)
  • [x] agregar prueba unitaria por "bare-multisig" razón (PR #17502, cometer 1bb5d517aa616c1d5b5801d2ea36a2de5fb61eba, hecho por mi humilde yo)
  • [x] agregar prueba funcional por "scriptsig-size" razón (PR #17532, cometer 8f2d7737cc236b6122f30e31856eb3181960fba1, hecho por mi humilde yo)
  • [x] agregar prueba funcional por "bare-multisig" razón (PR #17541, cometer 1be0b1fb2adcf95d76f879195564c0bf84162e31, hecho por mi humilde yo)
  • [x] agregar prueba unitaria por "scriptsig-not-pushonly" razón (PR #17720, cometer 5aab011805ceb12801644170700b1a62e0bf4a5d, hecho por mi humilde yo)
  • [x] agregar prueba unitaria por "tx-size" razón (PR #17947, cometer 4537ba5f21ad8afb705325cd8e15dd43877eb28f, dony por humildad)
  • [x] agregar prueba unitaria por "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.

Tests good first issue

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:

  • prueba unitaria por "scriptsig-not-pushonly" razón
  • prueba unitaria por "tx-size" razón
  • prueba unitaria por "version" razón

¡Siéntete libre de trabajar en eso y diviértete! :)

Todos 3 comentarios

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:

  • prueba unitaria por "scriptsig-not-pushonly" razón
  • prueba unitaria por "tx-size" razón
  • prueba unitaria por "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.

¿Fue útil esta página
0 / 5 - 0 calificaciones