Commit 550927a
committed
rpc: enforce BIP 145 SegWit rules in getblocktemplate
This commit updates the getblocktemplate RPC to enforce the SegWit
rules specified in BIP 145. Specifically, it ensures that:
- Client requests are rejected with ErrRPCInvalidParameter if SegWit
is active but the client does not explicitly support the 'segwit' rule.
- The 'rules' array in the response conditionally includes '!segwit'
if the generated block template contains transactions with witness
data (indicating a witness commitment is required).
- The 'rules' array includes 'segwit' (without the '!' prefix) when
SegWit is active but the template does not contain any witness
transactions.
Additionally, integration tests have been added to verify that rule
signaling and SegWit activation behave correctly during block template
generation.1 parent 6cfd717 commit 550927a
3 files changed
Lines changed: 173 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
308 | 308 | | |
309 | 309 | | |
310 | 310 | | |
| 311 | + | |
| 312 | + | |
311 | 313 | | |
312 | 314 | | |
313 | 315 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
289 | 290 | | |
290 | 291 | | |
291 | 292 | | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
292 | 425 | | |
293 | 426 | | |
294 | 427 | | |
| |||
297 | 430 | | |
298 | 431 | | |
299 | 432 | | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
300 | 436 | | |
301 | 437 | | |
302 | 438 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1688 | 1688 | | |
1689 | 1689 | | |
1690 | 1690 | | |
1691 | | - | |
| 1691 | + | |
1692 | 1692 | | |
1693 | 1693 | | |
1694 | 1694 | | |
| |||
1789 | 1789 | | |
1790 | 1790 | | |
1791 | 1791 | | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
1792 | 1796 | | |
1793 | 1797 | | |
1794 | 1798 | | |
| |||
1839 | 1843 | | |
1840 | 1844 | | |
1841 | 1845 | | |
1842 | | - | |
| 1846 | + | |
1843 | 1847 | | |
1844 | 1848 | | |
1845 | 1849 | | |
| |||
1855 | 1859 | | |
1856 | 1860 | | |
1857 | 1861 | | |
1858 | | - | |
| 1862 | + | |
1859 | 1863 | | |
1860 | 1864 | | |
1861 | 1865 | | |
| |||
1877 | 1881 | | |
1878 | 1882 | | |
1879 | 1883 | | |
1880 | | - | |
| 1884 | + | |
1881 | 1885 | | |
1882 | 1886 | | |
1883 | 1887 | | |
| |||
1917 | 1921 | | |
1918 | 1922 | | |
1919 | 1923 | | |
1920 | | - | |
| 1924 | + | |
1921 | 1925 | | |
1922 | 1926 | | |
1923 | 1927 | | |
| |||
1986 | 1990 | | |
1987 | 1991 | | |
1988 | 1992 | | |
| 1993 | + | |
| 1994 | + | |
| 1995 | + | |
| 1996 | + | |
| 1997 | + | |
| 1998 | + | |
| 1999 | + | |
| 2000 | + | |
| 2001 | + | |
| 2002 | + | |
| 2003 | + | |
| 2004 | + | |
| 2005 | + | |
| 2006 | + | |
| 2007 | + | |
| 2008 | + | |
| 2009 | + | |
| 2010 | + | |
| 2011 | + | |
| 2012 | + | |
| 2013 | + | |
| 2014 | + | |
| 2015 | + | |
| 2016 | + | |
1989 | 2017 | | |
1990 | 2018 | | |
1991 | 2019 | | |
1992 | 2020 | | |
1993 | 2021 | | |
1994 | | - | |
| 2022 | + | |
1995 | 2023 | | |
1996 | 2024 | | |
1997 | 2025 | | |
| |||
2008 | 2036 | | |
2009 | 2037 | | |
2010 | 2038 | | |
2011 | | - | |
| 2039 | + | |
2012 | 2040 | | |
2013 | 2041 | | |
2014 | 2042 | | |
| |||
0 commit comments