Commit 29f098f
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 29f098f
4 files changed
Lines changed: 190 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 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
292 | 437 | | |
293 | 438 | | |
294 | 439 | | |
| |||
297 | 442 | | |
298 | 443 | | |
299 | 444 | | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
300 | 448 | | |
301 | 449 | | |
302 | 450 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
| |||
1688 | 1689 | | |
1689 | 1690 | | |
1690 | 1691 | | |
1691 | | - | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
1692 | 1695 | | |
1693 | 1696 | | |
1694 | 1697 | | |
| |||
1789 | 1792 | | |
1790 | 1793 | | |
1791 | 1794 | | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
1792 | 1799 | | |
1793 | 1800 | | |
1794 | 1801 | | |
| |||
1839 | 1846 | | |
1840 | 1847 | | |
1841 | 1848 | | |
1842 | | - | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
1843 | 1852 | | |
1844 | 1853 | | |
1845 | 1854 | | |
| |||
1855 | 1864 | | |
1856 | 1865 | | |
1857 | 1866 | | |
1858 | | - | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
1859 | 1870 | | |
1860 | 1871 | | |
1861 | 1872 | | |
| |||
1877 | 1888 | | |
1878 | 1889 | | |
1879 | 1890 | | |
1880 | | - | |
| 1891 | + | |
1881 | 1892 | | |
1882 | 1893 | | |
1883 | 1894 | | |
| |||
1917 | 1928 | | |
1918 | 1929 | | |
1919 | 1930 | | |
1920 | | - | |
| 1931 | + | |
| 1932 | + | |
| 1933 | + | |
1921 | 1934 | | |
1922 | 1935 | | |
1923 | 1936 | | |
| |||
1986 | 1999 | | |
1987 | 2000 | | |
1988 | 2001 | | |
| 2002 | + | |
| 2003 | + | |
| 2004 | + | |
| 2005 | + | |
| 2006 | + | |
| 2007 | + | |
| 2008 | + | |
| 2009 | + | |
| 2010 | + | |
| 2011 | + | |
| 2012 | + | |
| 2013 | + | |
| 2014 | + | |
| 2015 | + | |
| 2016 | + | |
| 2017 | + | |
| 2018 | + | |
| 2019 | + | |
| 2020 | + | |
1989 | 2021 | | |
1990 | 2022 | | |
1991 | 2023 | | |
1992 | 2024 | | |
1993 | 2025 | | |
1994 | | - | |
| 2026 | + | |
1995 | 2027 | | |
1996 | 2028 | | |
1997 | 2029 | | |
| |||
2008 | 2040 | | |
2009 | 2041 | | |
2010 | 2042 | | |
2011 | | - | |
| 2043 | + | |
2012 | 2044 | | |
2013 | 2045 | | |
2014 | 2046 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
340 | 340 | | |
341 | 341 | | |
342 | 342 | | |
| 343 | + | |
343 | 344 | | |
344 | 345 | | |
345 | 346 | | |
| |||
0 commit comments