@lodestar/beacon-node 1.46.0 → 1.47.0-dev.404f68958c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/lib/chain/blocks/importBlock.js +1 -1
  2. package/lib/chain/blocks/importBlock.js.map +1 -1
  3. package/lib/chain/blocks/importExecutionPayload.js +1 -1
  4. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  5. package/lib/chain/blocks/index.d.ts.map +1 -1
  6. package/lib/chain/blocks/index.js +3 -5
  7. package/lib/chain/blocks/index.js.map +1 -1
  8. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  9. package/lib/chain/blocks/verifyBlock.js +11 -16
  10. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  11. package/lib/chain/chain.d.ts.map +1 -1
  12. package/lib/chain/chain.js +6 -1
  13. package/lib/chain/chain.js.map +1 -1
  14. package/lib/chain/options.d.ts +0 -2
  15. package/lib/chain/options.d.ts.map +1 -1
  16. package/lib/chain/options.js.map +1 -1
  17. package/lib/chain/prepareNextSlot.js +1 -1
  18. package/lib/chain/prepareNextSlot.js.map +1 -1
  19. package/lib/chain/produceBlock/produceBlockBody.js +2 -2
  20. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  21. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  22. package/lib/chain/seenCache/seenBlockProposers.js +7 -4
  23. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  24. package/lib/sync/range/batch.js +1 -1
  25. package/lib/sync/range/batch.js.map +1 -1
  26. package/lib/sync/range/utils/hashBlocks.d.ts +16 -4
  27. package/lib/sync/range/utils/hashBlocks.d.ts.map +1 -1
  28. package/lib/sync/range/utils/hashBlocks.js +49 -18
  29. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  30. package/package.json +16 -16
  31. package/src/chain/blocks/importBlock.ts +1 -1
  32. package/src/chain/blocks/importExecutionPayload.ts +1 -1
  33. package/src/chain/blocks/index.ts +3 -5
  34. package/src/chain/blocks/verifyBlock.ts +21 -25
  35. package/src/chain/chain.ts +6 -1
  36. package/src/chain/options.ts +0 -2
  37. package/src/chain/prepareNextSlot.ts +1 -1
  38. package/src/chain/produceBlock/produceBlockBody.ts +2 -2
  39. package/src/chain/seenCache/seenBlockProposers.ts +11 -4
  40. package/src/sync/range/batch.ts +1 -1
  41. package/src/sync/range/utils/hashBlocks.ts +56 -21
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,eAAe,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAE5F,OAAO,EAAC,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAC,mBAAmB,EAAC,MAAM,6CAA6C,CAAC;AAEhF,OAAO,EAAC,cAAc,EAAC,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,8CAA8C,CAAC;AAE5F,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAC;AAKvD,OAAO,EAAC,2BAA2B,EAAE,6BAA6B,EAAC,MAAM,iBAAiB,CAAC;AAE3F,OAAO,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAN,IAAY,WAiBX;AAjBD,WAAY,WAAW;IACrB,yFAAyF;IACzF,oDAAqC,CAAA;IACrC,qCAAqC;IACrC,0CAA2B,CAAA;IAC3B,4EAA4E;IAC5E,wDAAyC,CAAA;IACzC,oCAAoC;IACpC,wCAAyB,CAAA;IACzB;;;;;;OAMG;IACH,wDAAyC,CAAA;AAC3C,CAAC,EAjBW,WAAW,KAAX,WAAW,QAiBtB;AA6ED,SAAS,cAAc,CAAC,GAAqC;IAC3D,OAAO,aAAa,GAAG,CAAC,SAAS,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAwD;IAChF,OAAO,aAAa,GAAG,CAAC,SAAS,UAAU,GAAG,CAAC,KAAK,SAAS,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AACjG,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAC,oBAAoB,EAAE,cAAc,EAA0B;IACxF,OAAO;QACL,aAAa,EAAE,oBAAoB,IAAI,IAAI;QAC3C,cAAc,EAAE,IAAI,GAAG,CAAC,oBAAoB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7F,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAO,KAAK;IACP,QAAQ,CAAW;IACnB,UAAU,CAAQ;IAClB,SAAS,CAAO;IAChB,KAAK,CAAS;IAEvB,+GAA+G;IAC/G,QAAQ,CAA0B;IAClC,0BAA0B;IAC1B,KAAK,GAAe,EAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAC,CAAC;IAC/F,gFAAgF;IAC/D,mBAAmB,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC5E,2EAA2E;IAClE,wBAAwB,GAAc,EAAE,CAAC;IAClD,sFAAsF;IAC7E,sBAAsB,GAAc,EAAE,CAAC;IAChD,uFAAuF;IACtE,sBAAsB,GAAgB,EAAE,CAAC;IACzC,MAAM,CAAkB;IACxB,KAAK,CAAS;IACd,aAAa,CAAgB;IAC7B,mBAAmB,CAAU;IAC7B,SAAS,CAAwC;IAElE,YACE,UAAiB,EACjB,MAAuB,EACvB,KAAa,EACb,aAA4B,EAC5B,mBAA4B,EAC5B,SAAgD,EAChD,UAAgB;QAEhB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,MAAM,EAAC,SAAS,EAAE,KAAK,EAAC,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAEO,4BAA4B,CAAC,UAA8B;QACjE,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,OAAO,KAAK,CAAC;QAE5C,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,OAAO,KAAK,CAAC;QACf,CAAC;QAED,iFAAiF;QACjF,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC3C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,uBAAuB,GAAI,UAAU,CAAC,OAAO,CAAC,IAA8B,CAAC,yBAAyB,CAAC,OAAO;aACjH,eAAe,CAAC;QACnB,OAAO,eAAe,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,2BAA2B,CAAC,eAA2B;QACrD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,0FAA0F,SAAS,CAAC,eAAe,CAAC,EAAE,CACvH,CAAC;QACJ,CAAC;QACD,OAAO;YACL,SAAS,EAAE,eAAe;YAC1B,YAAY,EAAE,SAAS,CAAC,eAAe,CAAC;YACxC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB;SAClD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,MAAqB;QACvC,MAAM,wBAAwB,GAAG,CAAC,cAAc,CAC9C,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CAAC,YAAY,CACxB,CAAC;QAEF,8DAA8D;QAC9D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,aAAa,GAAsC;gBACvD,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,CAAC;aACR,CAAC;YACF,MAAM,QAAQ,GAA4B,EAAC,aAAa,EAAC,CAAC;YAE1D,8FAA8F;YAC9F,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,QAAQ,CAAC,gBAAgB,GAAG,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC;YAC7E,CAAC;YAED,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC;gBAC9D,QAAQ,CAAC,cAAc,GAAG;oBACxB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc;iBAC3C,CAAC;YACJ,CAAC;iBAAM,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC;gBACtE,QAAQ,CAAC,YAAY,GAAG,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC;YACzE,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,mHAAmH;QACnH,8CAA8C;QAC9C,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;QACnC,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,GAAG,EAA8B,CAAC;QAE7F,uCAAuC;QACvC,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;YAClC,0GAA0G;YAC1G,sGAAsG;YACtG,8GAA8G;YAC9G,YAAY;YACZ,EAAE;YACF,2GAA2G;YAC3G,mFAAmF;YACnF,EAAE;YACF,4GAA4G;YAC5G,uBAAuB;YACvB,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBAC1D,cAAc,GAAG,SAAS,GAAG,CAAC,CAAC;YACjC,CAAC;YAED,8FAA8F;YAC9F,gGAAgG;YAChG,gGAAgG;YAChG,IAAI,WAAW,EAAE,CAAC;gBAChB,kFAAkF;gBAClF,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpD,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,iBAAiB,KAAK,SAAS,IAAI,YAAY,EAAE,kBAAkB,EAAE,EAAE,CAAC;oBACnG,iBAAiB,GAAG,SAAS,GAAG,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBACvD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,2BAA2B,EAAE,CAAC,OAAO,EAAE,CAAC;wBACvE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC3B,CAAC;gBACH,CAAC;qBAAM,IAAI,YAAY,EAAE,kBAAkB,EAAE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAC7E,iFAAiF;oBACjF,kFAAkF;oBAClF,6DAA6D;oBAC7D,aAAa,GAAG,SAAS,GAAG,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;oBAClG,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;wBACpC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,2BAA2B,EAAE,CAAC,OAAO,EAAE,CAAC;4BACrE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC3B,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBACvC,aAAa,GAAG,SAAS,GAAG,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,iHAAiH;QACjH,yBAAyB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAChD,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;YAC9B,QAAQ,CAAC,aAAa,GAAG;gBACvB,SAAS,EAAE,cAAc;gBACzB,8FAA8F;gBAC9F,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,CAAC;gBACnC,IAAI,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;QACD,IAAI,aAAa,IAAI,OAAO,EAAE,CAAC;YAC7B,8FAA8F;YAC9F,MAAM,KAAK,GAAG,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC;YAC1C,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC;gBAC9D,kFAAkF;gBAClF,uCAAuC;gBACvC,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC3B,QAAQ,CAAC,cAAc,GAAG;wBACxB,KAAK;wBACL,SAAS,EAAE,aAAa;wBACxB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;qBACnC,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,wBAAwB,EAAE,CAAC;gBACtE,QAAQ,CAAC,YAAY,GAAG;oBACtB,KAAK;oBACL,SAAS,EAAE,aAAa;iBACzB,CAAC;YACJ,CAAC;YACD,kFAAkF;QACpF,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,iBAAiB,IAAI,OAAO,EAAE,CAAC;YACnE,QAAQ,CAAC,gBAAgB,GAAG;gBAC1B,SAAS,EAAE,iBAAiB;gBAC5B,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,CAAC;aACvC,CAAC;QACJ,CAAC;QAED,oFAAoF;QACpF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YACjF,yEAAyE;YACzE,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC5C,IAAI,kBAAoD,CAAC;gBACzD,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBAChC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;wBACtD,IAAI,EAAE,CAAC,YAAY,KAAK,aAAa,EAAE,CAAC;4BACtC,kBAAkB,GAAG,EAAE,CAAC;4BACxB,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,MAAM,aAAa,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;gBAChE,MAAM,cAAc,GAAG,kBAAkB;oBACvC,CAAC,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,CAAC,OAAO;oBAC1D,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBAEtC,IAAI,aAAa,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,QAAQ,CAAC,oBAAoB,GAAG;wBAC9B,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAC,iBAAiB,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzD,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;qBACvF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,IAAkB;QACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAED,yFAAyF;QACzF,MAAM,EAAC,cAAc,EAAE,oBAAoB,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE7D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,sBAAsB,GAC1B,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3F,MAAM,aAAa,GAAG,oBAAoB,EAAE,OAAO,CAAC;QACpD,MAAM,qBAAqB,GAAG,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7G,MAAM,oBAAoB,GACxB,cAAc,IAAI,IAAI,IAAI,sBAAsB,IAAI,IAAI;YACtD,CAAC,CAAC,EAAC,cAAc,EAAE,EAAC,GAAG,cAAc,EAAE,OAAO,EAAE,sBAAsB,EAAC,EAAC;YACxE,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,2BAA2B,GAC/B,oBAAoB,IAAI,IAAI,IAAI,qBAAqB,IAAI,IAAI;YAC3D,CAAC,CAAC,EAAC,oBAAoB,EAAE,EAAC,GAAG,oBAAoB,EAAE,OAAO,EAAE,qBAAqB,EAAC,EAAC;YACnF,CAAC,CAAC,EAAE,CAAC;QAET,OAAO;YACL,GAAG,IAAI,CAAC,QAAQ;YAChB,GAAG,oBAAoB;YACvB,GAAG,2BAA2B;SAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACpG,CAAC;IAED;;;;;OAKG;IACH,8BAA8B,CAAC,IAAkB;QAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,kBAAkB,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAE7C,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,aAAa;YAAE,OAAO,kBAAkB,CAAC,aAAa,CAAC;QAEnE,MAAM,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;QAErD,IAAI,qBAAqB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACrC,sDAAsD;YACtD,2CAA2C;YAC3C,wDAAwD;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CAAC,GAAG,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACrG,CAAC;IAEO,kBAAkB;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,WAAW;QACT,MAAM,EAAC,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtF,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvF,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,GAAG,CAAC,aAAa,IAAI,EAAC,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC,EAAC,CAAC;YAChE,GAAG,CAAC,YAAY,IAAI,EAAC,QAAQ,EAAE,cAAc,CAAC,YAAY,CAAC,EAAC,CAAC;YAC7D,GAAG,CAAC,cAAc,IAAI,EAAC,UAAU,EAAE,gBAAgB,CAAC,cAAc,CAAC,EAAC,CAAC;YACrE,GAAG,CAAC,gBAAgB,IAAI,EAAC,YAAY,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAAC,CAAC;YACzE,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM;YACpD,kBAAkB,EAAE,IAAI,CAAC,wBAAwB,CAAC,MAAM;YACxD,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,IAAI;gBAC5C,mBAAmB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;aAC3D,CAAC;YACF,GAAG,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,IAAI;gBACzC,qBAAqB,EAAE,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1D,CAAC;SACH,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAkB;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,gBAAgB,EAAE,CAAC;YACvD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjE,IAAI,CAAC,KAAK,GAAG;YACX,MAAM,EAAE,WAAW,CAAC,WAAW;YAC/B,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;SAC9C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAe,EACf,MAAqB,EACrB,gBAAwD;QAExD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,6GAA6G;QAC7G,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;YAC/D,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,IAAI,GAAG,EAAU;SAClC,CAAC;QACF,kBAAkB,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;gBACvD,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAEvD,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBAC7C,CAAC,CAAC,yCAAyC;oBACzC,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,kBAAkB,EAAE;gBAChD,CAAC,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,WAAW,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC;gBACnB,IAAI,EAAE,cAAc,CAAC,aAAa;gBAClC,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,QAAQ,EAAE,IAAI,CAAC,KAAK;gBACpB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,mBAAmB,GAAG,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAE5E,IAAI,WAAW,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAG,mBAAmB,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1D,+EAA+E;gBAC/E,6DAA6D;gBAC7D,IAAI,YAAY,EAAE,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBAC7E,WAAW,GAAG,KAAK,CAAC;oBACpB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,uFAAuF;QACvF,qFAAqF;QACrF,0FAA0F;QAC1F,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAChG,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3D,uDAAuD;YACvD,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC5C,IAAI,qBAAqB,GAAG,KAAK,CAAC;gBAClC,IAAI,mBAAmB,EAAE,CAAC;oBACxB,KAAK,MAAM,YAAY,IAAI,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC;wBACxD,IAAI,YAAY,CAAC,YAAY,KAAK,aAAa,EAAE,CAAC;4BAChD,qBAAqB,GAAG,YAAY,CAAC,kBAAkB,EAAE,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;4BAC/F,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC3B,WAAW,GAAG,KAAK,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,OAAO,GAAY;gBACvB,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE;gBAChC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;aACtC,CAAC;YACF,IAAI,CAAC,KAAK,GAAG,EAAC,MAAM,EAAE,WAAW,CAAC,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,OAAO,EAAC,CAAC;QAChH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,EAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAC,CAAC;YACnG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,IAAI,CAAC,KAA6B,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAe;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,2BAA2B,EAAE,CAAC;YACrE,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,cAAc,CAAC,qBAAqB,EAAC,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,KAAK,GAAG;YACX,MAAM,EAAE,WAAW,CAAC,gBAAgB;YACpC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;SAC9C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,sBAAsB;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,KAAK,GAAG;YACX,MAAM,EAAE,WAAW,CAAC,gBAAgB;YACpC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;SAC9C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QAKb,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACzD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,EAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,qFAAqF;QACrF,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,EAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAC,CAAC;QACjF,OAAO,EAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,UAAU,EAAE,CAAC;YACjD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,KAAK,GAAG;YACX,MAAM,EAAE,WAAW,CAAC,kBAAkB;YACtC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC7C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SAC5B,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,qBAAqB;QACnB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,UAAU,EAAE,CAAC;YACjD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,KAAK,GAAG;YACX,MAAM,EAAE,WAAW,CAAC,kBAAkB;YACtC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAC7C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SAC5B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,GAAU;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,UAAU,EAAE,CAAC;YACjD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,GAAU;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACzD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACzD,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IAEO,sBAAsB,CAAC,OAAgB;QAC7C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,6BAA6B,EAAE,CAAC;YACvE,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,cAAc,CAAC,mCAAmC,EAAC,CAAC,CAAC,CAAC;QACnG,CAAC;QAED,8CAA8C;QAC9C,yEAAyE;QACzE,IAAI,CAAC,KAAK,GAAG,EAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAC,CAAC;IAC1F,CAAC;IAEO,iBAAiB,CAAC,OAAgB;QACxC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,6BAA6B,EAAE,CAAC;YACzE,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,cAAc,CAAC,uBAAuB,EAAC,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,8CAA8C;QAC9C,yEAAyE;QACzE,IAAI,CAAC,KAAK,GAAG,EAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAC,CAAC;IAC1F,CAAC;IAED,kGAAkG;IAC1F,SAAS,CAAC,IAAoB;QACpC,OAAO,EAAC,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAC,CAAC;IAC3E,CAAC;IAEO,oBAAoB,CAAC,cAA2B;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,cAAc,CAAC,YAAY,EAAE,cAAc,EAAC,CAAC,CAAC;IAC7E,CAAC;CACF;AAED,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,2DAAyC,CAAA;IACzC,6DAA2C,CAAA;IAC3C,6EAA2D,CAAA;IAC3D,iFAA+D,CAAA;IAC/D,yGAAuF,CAAA;AACzF,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AAcD,MAAM,OAAO,UAAW,SAAQ,aAAkD;CAAG;AAErF,SAAS,sBAAsB,CAAC,GAAU;IACxC,IAAI,CAAC,CAAC,GAAG,YAAY,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,sBAAsB,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,kBAAkB;QACnD,GAAG,CAAC,IAAI,CAAC,KAAK,YAAY,YAAY;QACtC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,sBAAsB,CACrE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,20 @@
1
- import { ChainForkConfig } from "@lodestar/config";
2
- import { RootHex } from "@lodestar/types";
1
+ import { RootHex, Slot } from "@lodestar/types";
3
2
  import { IBlockInput } from "../../../chain/blocks/blockInput/types.js";
3
+ import { PayloadEnvelopeInput } from "../../../chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
4
4
  /**
5
- * String to uniquely identify block segments. Used for peer scoring and to compare if batches are equivalent.
5
+ * Root uniquely identifying a batch attempt (its blocks AND payloads). Used for peer scoring and to
6
+ * compare if two attempts are equivalent.
7
+ *
8
+ * Signatures are part of the id for BOTH blocks and payload envelopes, not just their message roots:
9
+ * a peer serving a correct message with a garbage signature would otherwise produce the same id as
10
+ * the honest attempt and escape scoring in `SyncChain.advanceChain`. Signatures are not verified at
11
+ * download time, only during processChainSegment (block signatures in verifyBlocksSignatures,
12
+ * envelope signatures in importExecutionPayload).
13
+ *
14
+ * Entries are written as raw bytes into a single exactly-sized buffer and digested once, so an
15
+ * `Attempt` retains 32 bytes rather than the ~16 KB a full 32-slot gloas batch would need if the
16
+ * roots and signatures were concatenated as hex. sha256 (not a 64-bit hash) because a peer that
17
+ * could force a collision with the winning attempt would escape peer scoring.
6
18
  */
7
- export declare function hashBlocks(blocks: IBlockInput[], config: ChainForkConfig): RootHex;
19
+ export declare function hashBlocks(blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null): RootHex;
8
20
  //# sourceMappingURL=hashBlocks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hashBlocks.d.ts","sourceRoot":"","sources":["../../../../src/sync/range/utils/hashBlocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,OAAO,EAAoB,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAC,WAAW,EAAC,MAAM,2CAA2C,CAAC;AAEtE;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAkBlF"}
1
+ {"version":3,"file":"hashBlocks.d.ts","sourceRoot":"","sources":["../../../../src/sync/range/utils/hashBlocks.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,IAAI,EAAM,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,WAAW,EAAC,MAAM,2CAA2C,CAAC;AACtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,oEAAoE,CAAC;AAUxG;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,GAAG,OAAO,CAgCnH"}
@@ -1,23 +1,54 @@
1
- import { toRootHex } from "@lodestar/utils";
1
+ import { digest } from "@chainsafe/as-sha256";
2
+ import { ssz } from "@lodestar/types";
3
+ import { fromHex, toRootHex } from "@lodestar/utils";
4
+ const ROOT_SIZE = 32;
5
+ const SIGNATURE_SIZE = 96;
6
+ /** Every block and every payload envelope contributes a fixed-size (root, signature) entry */
7
+ const ENTRY_SIZE = ROOT_SIZE + SIGNATURE_SIZE;
8
+ /** uint32 LE counts of block and envelope entries, so the variable-length sections are self-describing */
9
+ const COUNT_SIZE = 4;
10
+ const HEADER_SIZE = COUNT_SIZE * 2;
2
11
  /**
3
- * String to uniquely identify block segments. Used for peer scoring and to compare if batches are equivalent.
12
+ * Root uniquely identifying a batch attempt (its blocks AND payloads). Used for peer scoring and to
13
+ * compare if two attempts are equivalent.
14
+ *
15
+ * Signatures are part of the id for BOTH blocks and payload envelopes, not just their message roots:
16
+ * a peer serving a correct message with a garbage signature would otherwise produce the same id as
17
+ * the honest attempt and escape scoring in `SyncChain.advanceChain`. Signatures are not verified at
18
+ * download time, only during processChainSegment (block signatures in verifyBlocksSignatures,
19
+ * envelope signatures in importExecutionPayload).
20
+ *
21
+ * Entries are written as raw bytes into a single exactly-sized buffer and digested once, so an
22
+ * `Attempt` retains 32 bytes rather than the ~16 KB a full 32-slot gloas batch would need if the
23
+ * roots and signatures were concatenated as hex. sha256 (not a 64-bit hash) because a peer that
24
+ * could force a collision with the winning attempt would escape peer scoring.
4
25
  */
5
- export function hashBlocks(blocks, config) {
6
- switch (blocks.length) {
7
- case 0:
8
- return "0x";
9
- case 1: {
10
- const block0 = blocks[0].getBlock();
11
- return toRootHex(config.getForkTypes(block0.message.slot).SignedBeaconBlock.hashTreeRoot(block0));
12
- }
13
- default: {
14
- const block0 = blocks[0].getBlock();
15
- const blockN = blocks.at(-1)?.getBlock();
16
- return (
17
- // TODO(fulu): should we be doing checks for presence to make sure these do not blow up?
18
- toRootHex(config.getForkTypes(block0.message.slot).SignedBeaconBlock.hashTreeRoot(block0)) +
19
- toRootHex(config.getForkTypes(blockN.message.slot).SignedBeaconBlock.hashTreeRoot(blockN)));
20
- }
26
+ export function hashBlocks(blocks, payloadEnvelopes) {
27
+ // Envelopes without a payload carry no attributable data, so they are skipped entirely. A `null`
28
+ // map and a map whose entries all lack a payload are therefore equivalent, which is intended.
29
+ const envelopes = payloadEnvelopes && payloadEnvelopes.size > 0
30
+ ? Array.from(payloadEnvelopes.entries())
31
+ .filter(([, envelope]) => envelope.hasPayloadEnvelope())
32
+ .sort(([slotA], [slotB]) => slotA - slotB)
33
+ : [];
34
+ const buf = Buffer.allocUnsafe(HEADER_SIZE + (blocks.length + envelopes.length) * ENTRY_SIZE);
35
+ buf.writeUInt32LE(blocks.length, 0);
36
+ buf.writeUInt32LE(envelopes.length, COUNT_SIZE);
37
+ let offset = HEADER_SIZE;
38
+ for (const block of blocks) {
39
+ buf.set(fromHex(block.blockRootHex), offset);
40
+ offset += ROOT_SIZE;
41
+ buf.set(block.getBlock().signature, offset);
42
+ offset += SIGNATURE_SIZE;
21
43
  }
44
+ for (const [, envelope] of envelopes) {
45
+ const signedEnvelope = envelope.getPayloadEnvelope();
46
+ // envelope's root is cached thanks to cachePermanentRootStruct, so this avoids re-hashing
47
+ buf.set(ssz.gloas.ExecutionPayloadEnvelope.hashTreeRoot(signedEnvelope.message), offset);
48
+ offset += ROOT_SIZE;
49
+ buf.set(signedEnvelope.signature, offset);
50
+ offset += SIGNATURE_SIZE;
51
+ }
52
+ return toRootHex(digest(buf));
22
53
  }
23
54
  //# sourceMappingURL=hashBlocks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hashBlocks.js","sourceRoot":"","sources":["../../../../src/sync/range/utils/hashBlocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAG1C;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAqB,EAAE,MAAuB;IACvE,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,CAAC;YACJ,OAAO,IAAI,CAAC;QACd,KAAK,CAAC,EAAE,CAAC;YACP,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACpG,CAAC;QACD,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAuB,CAAC;YAC9D,OAAO;YACL,wFAAwF;YACxF,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1F,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAC3F,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"hashBlocks.js","sourceRoot":"","sources":["../../../../src/sync/range/utils/hashBlocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAgB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAC,OAAO,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAInD,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,8FAA8F;AAC9F,MAAM,UAAU,GAAG,SAAS,GAAG,cAAc,CAAC;AAC9C,0GAA0G;AAC1G,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,MAAqB,EAAE,gBAAwD;IACxG,iGAAiG;IACjG,8FAA8F;IAC9F,MAAM,SAAS,GACb,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC;QAC3C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;aACvD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC;IAC9F,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,MAAM,GAAG,WAAW,CAAC;IAEzB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,IAAI,SAAS,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,cAAc,CAAC;IAC3B,CAAC;IAED,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QACrD,0FAA0F;QAC1F,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACzF,MAAM,IAAI,SAAS,CAAC;QACpB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,cAAc,CAAC;IAC3B,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.46.0",
14
+ "version": "1.47.0-dev.404f68958c",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -102,8 +102,8 @@
102
102
  "dependencies": {
103
103
  "@chainsafe/as-sha256": "^1.2.4",
104
104
  "@chainsafe/blst": "^2.2.0",
105
- "@chainsafe/discv5": "^12.0.1",
106
- "@chainsafe/enr": "^6.0.1",
105
+ "@chainsafe/discv5": "^12.0.2",
106
+ "@chainsafe/enr": "^6.0.2",
107
107
  "@chainsafe/libp2p-noise": "^17.0.0",
108
108
  "@chainsafe/libp2p-quic": "^2.1.3",
109
109
  "@chainsafe/persistent-merkle-tree": "^1.3.0",
@@ -126,17 +126,17 @@
126
126
  "@libp2p/peer-id": "^6.0.4",
127
127
  "@libp2p/prometheus-metrics": "^5.0.14",
128
128
  "@libp2p/tcp": "^11.0.13",
129
- "@lodestar/api": "^1.46.0",
130
- "@lodestar/config": "^1.46.0",
131
- "@lodestar/db": "^1.46.0",
132
- "@lodestar/fork-choice": "^1.46.0",
133
- "@lodestar/logger": "^1.46.0",
134
- "@lodestar/params": "^1.46.0",
135
- "@lodestar/reqresp": "^1.46.0",
136
- "@lodestar/state-transition": "^1.46.0",
137
- "@lodestar/types": "^1.46.0",
138
- "@lodestar/utils": "^1.46.0",
139
- "@lodestar/validator": "^1.46.0",
129
+ "@lodestar/api": "^1.47.0-dev.404f68958c",
130
+ "@lodestar/config": "^1.47.0-dev.404f68958c",
131
+ "@lodestar/db": "^1.47.0-dev.404f68958c",
132
+ "@lodestar/fork-choice": "^1.47.0-dev.404f68958c",
133
+ "@lodestar/logger": "^1.47.0-dev.404f68958c",
134
+ "@lodestar/params": "^1.47.0-dev.404f68958c",
135
+ "@lodestar/reqresp": "^1.47.0-dev.404f68958c",
136
+ "@lodestar/state-transition": "^1.47.0-dev.404f68958c",
137
+ "@lodestar/types": "^1.47.0-dev.404f68958c",
138
+ "@lodestar/utils": "^1.47.0-dev.404f68958c",
139
+ "@lodestar/validator": "^1.47.0-dev.404f68958c",
140
140
  "@multiformats/multiaddr": "^13.0.1",
141
141
  "datastore-core": "^11.0.2",
142
142
  "datastore-level": "^12.0.2",
@@ -158,7 +158,7 @@
158
158
  "@libp2p/interface-internal": "^3.0.13",
159
159
  "@libp2p/logger": "^6.2.2",
160
160
  "@libp2p/utils": "^7.0.13",
161
- "@lodestar/spec-test-util": "^1.46.0",
161
+ "@lodestar/spec-test-util": "^1.47.0-dev.404f68958c",
162
162
  "@types/js-yaml": "^4.0.5",
163
163
  "@types/qs": "^6.9.7",
164
164
  "@types/tmp": "^0.2.3",
@@ -175,5 +175,5 @@
175
175
  "beacon",
176
176
  "blockchain"
177
177
  ],
178
- "gitHead": "3873dd5b032d0ad82581fc3416e9628b4f6f2642"
178
+ "gitHead": "e71166623745996c7e67cbe3a32896db45d74d8a"
179
179
  }
@@ -445,7 +445,7 @@ export async function importBlock(
445
445
  * zero block hash (pre TTD)
446
446
  */
447
447
  const safeBlockHash = getSafeExecutionBlockHash(this.forkChoice, this.logger);
448
- const finalizedBlockHash = getFinalizedExecutionBlockHash(this.forkChoice, this.logger);
448
+ const finalizedBlockHash = getFinalizedExecutionBlockHash(this.forkChoice);
449
449
  if (headBlockHash !== ZERO_HASH_HEX) {
450
450
  this.executionEngine
451
451
  .notifyForkchoiceUpdate(
@@ -250,7 +250,7 @@ export async function importExecutionPayload(
250
250
  const head = this.forkChoice.getHead();
251
251
  if (!this.opts.disableImportExecutionFcU && blockRootHex === head.blockRoot) {
252
252
  const safeBlockHash = getSafeExecutionBlockHash(this.forkChoice, this.logger);
253
- const finalizedBlockHash = getFinalizedExecutionBlockHash(this.forkChoice, this.logger);
253
+ const finalizedBlockHash = getFinalizedExecutionBlockHash(this.forkChoice);
254
254
  this.executionEngine.notifyForkchoiceUpdate(fork, blockHashHex, safeBlockHash, finalizedBlockHash).catch((e) => {
255
255
  if (!isErrorAborted(e) && !isQueueErrorAborted(e)) {
256
256
  this.logger.error("Error pushing notifyForkchoiceUpdate()", {blockHashHex, finalizedBlockHash}, e);
@@ -108,11 +108,9 @@ export async function processBlocks(
108
108
  throw segmentExecStatus.execAborted.execError;
109
109
  }
110
110
 
111
- if (opts.skipVerifyBlockSignatures !== true) {
112
- for (const blockInput of relevantBlocks) {
113
- const block = blockInput.getBlock().message;
114
- this.seenBlockProposers.add(block.slot, block.proposerIndex);
115
- }
111
+ for (const blockInput of relevantBlocks) {
112
+ const block = blockInput.getBlock().message;
113
+ this.seenBlockProposers.add(block.slot, block.proposerIndex);
116
114
  }
117
115
 
118
116
  const {executionStatuses} = segmentExecStatus;
@@ -6,9 +6,9 @@ import {
6
6
  computeEpochAtSlot,
7
7
  signedBlockToSignedHeader,
8
8
  } from "@lodestar/state-transition";
9
- import {IndexedAttestation, Slot, deneb, ssz} from "@lodestar/types";
10
- import {toRootHex} from "@lodestar/utils";
9
+ import {IndexedAttestation, Slot, deneb} from "@lodestar/types";
11
10
  import {getBlobKzgCommitments} from "../../util/dataColumns.js";
11
+ import {callInNextEventLoop} from "../../util/eventLoop.js";
12
12
  import type {BeaconChain} from "../chain.js";
13
13
  import {BlockError, BlockErrorCode} from "../errors/index.js";
14
14
  import {BlockProcessOpts} from "../options.js";
@@ -193,34 +193,30 @@ export async function verifyBlocksInEpoch(
193
193
  ),
194
194
 
195
195
  // All signatures at once
196
- opts.skipVerifyBlockSignatures !== true
197
- ? verifyBlocksSignatures(
198
- this.config,
199
- this.bls,
200
- this.logger,
201
- this.metrics,
202
- preState0,
203
- blocks,
204
- indexedAttestationsByBlock,
205
- opts
206
- )
207
- : Promise.resolve({verifySignaturesTime: Date.now()}),
196
+ verifyBlocksSignatures(
197
+ this.config,
198
+ this.bls,
199
+ this.logger,
200
+ this.metrics,
201
+ preState0,
202
+ blocks,
203
+ indexedAttestationsByBlock,
204
+ opts
205
+ ),
208
206
 
209
207
  // TODO GLOAS: can verify payload signatures in batch too
210
208
  // maybe chain with the above verifyBlocksSignatures()
211
209
  ]);
212
210
 
213
- if (opts.skipVerifyBlockSignatures !== true) {
214
- for (const block of blocks) {
215
- const {slot, proposerIndex} = block.message;
216
- const signedBlockHeader = signedBlockToSignedHeader(this.config, block);
217
- const blockRoot = toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(signedBlockHeader.message));
218
- this.seenBlockProposers.observeBlockRoot(slot, proposerIndex, blockRoot, signedBlockHeader);
219
- // Only produce a slashing while importing the block. A block that is verified before it is published
220
- // must not be treated as equivocation evidence since it may never be seen by the network
221
- if (opts.verifyOnly !== true && this.seenBlockProposers.isEquivocating(slot, proposerIndex)) {
222
- this.processProposerEquivocation(slot, proposerIndex);
223
- }
211
+ for (const blockInput of blockInputs) {
212
+ const block = blockInput.getBlock();
213
+ const {slot, proposerIndex} = block.message;
214
+ const signedBlockHeader = signedBlockToSignedHeader(this.config, block);
215
+ this.seenBlockProposers.observeBlockRoot(slot, proposerIndex, blockInput.blockRootHex, signedBlockHeader);
216
+ // Only produce a slashing while importing the block. A block that is verified before it is published
217
+ // must not be treated as equivocation evidence since it may never be seen by the network
218
+ if (opts.verifyOnly !== true && this.seenBlockProposers.isEquivocating(slot, proposerIndex)) {
219
+ callInNextEventLoop(() => this.processProposerEquivocation(slot, proposerIndex));
224
220
  }
225
221
  }
226
222
 
@@ -1217,7 +1217,12 @@ export class BeaconChain implements IBeaconChain {
1217
1217
  this.emitter.emit(routes.events.EventType.proposerSlashing, proposerSlashing);
1218
1218
  this.emitter.emit(ChainEvent.publishProposerSlashing, proposerSlashing);
1219
1219
  this.metrics?.opPool.proposerSlashingsProduced.inc();
1220
- this.logger.info("Produced proposer slashing from observed equivocation", {slot: blockSlot, proposerIndex});
1220
+ this.logger.info("Produced proposer slashing from observed equivocation", {
1221
+ slot: blockSlot,
1222
+ proposerIndex,
1223
+ header1Root: toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(header1.message)),
1224
+ header2Root: toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(header2.message)),
1225
+ });
1221
1226
  } finally {
1222
1227
  this.producingProposerSlashing.delete(proposerIndex);
1223
1228
  }
@@ -86,8 +86,6 @@ export type BlockProcessOpts = {
86
86
  verifyOnly?: boolean;
87
87
  /** Used to specify to skip execution payload validation */
88
88
  skipVerifyExecutionPayload?: boolean;
89
- /** Used to specify to skip block signatures validation */
90
- skipVerifyBlockSignatures?: boolean;
91
89
  };
92
90
 
93
91
  export type PoolOpts = {
@@ -224,7 +224,7 @@ export class PrepareNextSlotScheduler {
224
224
  this.metrics?.blockPayload.payloadAdvancePrepTime.observe(preparationTime);
225
225
 
226
226
  const safeBlockHash = getSafeExecutionBlockHash(this.chain.forkChoice, this.logger);
227
- const finalizedBlockHash = getFinalizedExecutionBlockHash(this.chain.forkChoice, this.logger);
227
+ const finalizedBlockHash = getFinalizedExecutionBlockHash(this.chain.forkChoice);
228
228
 
229
229
  // awaiting here instead of throwing an async call because there is no other task
230
230
  // left for scheduler and this gives nice semantics to catch and log errors in the
@@ -271,7 +271,7 @@ export async function produceBlockBody<T extends BlockType>(
271
271
  // full and blinded no longer makes sense in gloas, it might be a good idea to move
272
272
  // this into a completely separate function and have pre/post gloas more separated
273
273
  const safeBlockHash = getSafeExecutionBlockHash(this.forkChoice, this.logger);
274
- const finalizedBlockHash = getFinalizedExecutionBlockHash(this.forkChoice, this.logger);
274
+ const finalizedBlockHash = getFinalizedExecutionBlockHash(this.forkChoice);
275
275
  // TODO GLOAS: post-Gloas, proposer feeRecipient is also carried (signed) in
276
276
  // ProposerPreferencesPool. Consider using this unified cache instead
277
277
  // see https://github.com/ChainSafe/lodestar/issues/9379
@@ -417,7 +417,7 @@ export async function produceBlockBody<T extends BlockType>(
417
417
  }
418
418
 
419
419
  const safeBlockHash = getSafeExecutionBlockHash(this.forkChoice, this.logger);
420
- const finalizedBlockHash = getFinalizedExecutionBlockHash(this.forkChoice, this.logger);
420
+ const finalizedBlockHash = getFinalizedExecutionBlockHash(this.forkChoice);
421
421
  const feeRecipient = requestedFeeRecipient ?? this.beaconProposerCache.getOrDefault(proposerIndex);
422
422
  const feeRecipientType = requestedFeeRecipient
423
423
  ? "requested"
@@ -3,7 +3,7 @@ import {Epoch, RootHex, Slot, ValidatorIndex, phase0} from "@lodestar/types";
3
3
  import {MapDef} from "@lodestar/utils";
4
4
 
5
5
  /** Two distinct block roots signed by the same proposer for the same slot are sufficient to establish an equivocation */
6
- const MAX_BLOCK_ROOTS_PER_PROPOSAL = 2;
6
+ const MIN_EQUIVOCATION_BLOCK_ROOTS_PER_PROPOSAL = 2;
7
7
 
8
8
  /**
9
9
  * Keeps a cache to filter block proposals from the same validator in the same slot.
@@ -36,7 +36,8 @@ export class SeenBlockProposers {
36
36
 
37
37
  isEquivocating(blockSlot: Slot, proposerIndex: ValidatorIndex): boolean {
38
38
  return (
39
- (this.signedBlockHeadersBySlot.get(blockSlot)?.get(proposerIndex)?.size ?? 0) >= MAX_BLOCK_ROOTS_PER_PROPOSAL
39
+ (this.signedBlockHeadersBySlot.get(blockSlot)?.get(proposerIndex)?.size ?? 0) >=
40
+ MIN_EQUIVOCATION_BLOCK_ROOTS_PER_PROPOSAL
40
41
  );
41
42
  }
42
43
 
@@ -53,7 +54,10 @@ export class SeenBlockProposers {
53
54
  proposerIndex: ValidatorIndex
54
55
  ): [phase0.SignedBeaconBlockHeader, phase0.SignedBeaconBlockHeader] | null {
55
56
  const signedBlockHeaderByRoot = this.signedBlockHeadersBySlot.get(blockSlot)?.get(proposerIndex);
56
- if (signedBlockHeaderByRoot === undefined || signedBlockHeaderByRoot.size < MAX_BLOCK_ROOTS_PER_PROPOSAL) {
57
+ if (
58
+ signedBlockHeaderByRoot === undefined ||
59
+ signedBlockHeaderByRoot.size < MIN_EQUIVOCATION_BLOCK_ROOTS_PER_PROPOSAL
60
+ ) {
57
61
  return null;
58
62
  }
59
63
  const [signedHeader1, signedHeader2] = signedBlockHeaderByRoot.values();
@@ -72,7 +76,10 @@ export class SeenBlockProposers {
72
76
  }
73
77
 
74
78
  const signedBlockHeaderByRoot = this.signedBlockHeadersBySlot.getOrDefault(blockSlot).getOrDefault(proposerIndex);
75
- if (signedBlockHeaderByRoot.size < MAX_BLOCK_ROOTS_PER_PROPOSAL && !signedBlockHeaderByRoot.has(blockRoot)) {
79
+ if (
80
+ signedBlockHeaderByRoot.size < MIN_EQUIVOCATION_BLOCK_ROOTS_PER_PROPOSAL &&
81
+ !signedBlockHeaderByRoot.has(blockRoot)
82
+ ) {
76
83
  signedBlockHeaderByRoot.set(blockRoot, signedBlockHeader);
77
84
  }
78
85
  }
@@ -593,7 +593,7 @@ export class Batch {
593
593
  if (allComplete) {
594
594
  const attempt: Attempt = {
595
595
  peers: this.getSuccessfulPeers(),
596
- hash: hashBlocks(blocks, this.config),
596
+ hash: hashBlocks(blocks, payloadEnvelopes),
597
597
  };
598
598
  this.state = {status: BatchStatus.AwaitingProcessing, blocks, payloadEnvelopes: newPayloadEnvelopes, attempt};
599
599
  } else {
@@ -1,27 +1,62 @@
1
- import {ChainForkConfig} from "@lodestar/config";
2
- import {RootHex, SignedBeaconBlock} from "@lodestar/types";
3
- import {toRootHex} from "@lodestar/utils";
1
+ import {digest} from "@chainsafe/as-sha256";
2
+ import {RootHex, Slot, ssz} from "@lodestar/types";
3
+ import {fromHex, toRootHex} from "@lodestar/utils";
4
4
  import {IBlockInput} from "../../../chain/blocks/blockInput/types.js";
5
+ import {PayloadEnvelopeInput} from "../../../chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
6
+
7
+ const ROOT_SIZE = 32;
8
+ const SIGNATURE_SIZE = 96;
9
+ /** Every block and every payload envelope contributes a fixed-size (root, signature) entry */
10
+ const ENTRY_SIZE = ROOT_SIZE + SIGNATURE_SIZE;
11
+ /** uint32 LE counts of block and envelope entries, so the variable-length sections are self-describing */
12
+ const COUNT_SIZE = 4;
13
+ const HEADER_SIZE = COUNT_SIZE * 2;
5
14
 
6
15
  /**
7
- * String to uniquely identify block segments. Used for peer scoring and to compare if batches are equivalent.
16
+ * Root uniquely identifying a batch attempt (its blocks AND payloads). Used for peer scoring and to
17
+ * compare if two attempts are equivalent.
18
+ *
19
+ * Signatures are part of the id for BOTH blocks and payload envelopes, not just their message roots:
20
+ * a peer serving a correct message with a garbage signature would otherwise produce the same id as
21
+ * the honest attempt and escape scoring in `SyncChain.advanceChain`. Signatures are not verified at
22
+ * download time, only during processChainSegment (block signatures in verifyBlocksSignatures,
23
+ * envelope signatures in importExecutionPayload).
24
+ *
25
+ * Entries are written as raw bytes into a single exactly-sized buffer and digested once, so an
26
+ * `Attempt` retains 32 bytes rather than the ~16 KB a full 32-slot gloas batch would need if the
27
+ * roots and signatures were concatenated as hex. sha256 (not a 64-bit hash) because a peer that
28
+ * could force a collision with the winning attempt would escape peer scoring.
8
29
  */
9
- export function hashBlocks(blocks: IBlockInput[], config: ChainForkConfig): RootHex {
10
- switch (blocks.length) {
11
- case 0:
12
- return "0x";
13
- case 1: {
14
- const block0 = blocks[0].getBlock();
15
- return toRootHex(config.getForkTypes(block0.message.slot).SignedBeaconBlock.hashTreeRoot(block0));
16
- }
17
- default: {
18
- const block0 = blocks[0].getBlock();
19
- const blockN = blocks.at(-1)?.getBlock() as SignedBeaconBlock;
20
- return (
21
- // TODO(fulu): should we be doing checks for presence to make sure these do not blow up?
22
- toRootHex(config.getForkTypes(block0.message.slot).SignedBeaconBlock.hashTreeRoot(block0)) +
23
- toRootHex(config.getForkTypes(blockN.message.slot).SignedBeaconBlock.hashTreeRoot(blockN))
24
- );
25
- }
30
+ export function hashBlocks(blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null): RootHex {
31
+ // Envelopes without a payload carry no attributable data, so they are skipped entirely. A `null`
32
+ // map and a map whose entries all lack a payload are therefore equivalent, which is intended.
33
+ const envelopes =
34
+ payloadEnvelopes && payloadEnvelopes.size > 0
35
+ ? Array.from(payloadEnvelopes.entries())
36
+ .filter(([, envelope]) => envelope.hasPayloadEnvelope())
37
+ .sort(([slotA], [slotB]) => slotA - slotB)
38
+ : [];
39
+
40
+ const buf = Buffer.allocUnsafe(HEADER_SIZE + (blocks.length + envelopes.length) * ENTRY_SIZE);
41
+ buf.writeUInt32LE(blocks.length, 0);
42
+ buf.writeUInt32LE(envelopes.length, COUNT_SIZE);
43
+ let offset = HEADER_SIZE;
44
+
45
+ for (const block of blocks) {
46
+ buf.set(fromHex(block.blockRootHex), offset);
47
+ offset += ROOT_SIZE;
48
+ buf.set(block.getBlock().signature, offset);
49
+ offset += SIGNATURE_SIZE;
26
50
  }
51
+
52
+ for (const [, envelope] of envelopes) {
53
+ const signedEnvelope = envelope.getPayloadEnvelope();
54
+ // envelope's root is cached thanks to cachePermanentRootStruct, so this avoids re-hashing
55
+ buf.set(ssz.gloas.ExecutionPayloadEnvelope.hashTreeRoot(signedEnvelope.message), offset);
56
+ offset += ROOT_SIZE;
57
+ buf.set(signedEnvelope.signature, offset);
58
+ offset += SIGNATURE_SIZE;
59
+ }
60
+
61
+ return toRootHex(digest(buf));
27
62
  }