Self-referential native-invoke argument slips past the first-child-only cycle detector and crashes a node with a fatal stack overflow
`CircularRefAndDepthDetection` records each container's backing pointer but `return`s from inside its loop after examining only child index 0, so a self-referential array shaped as `[false, self]` — cycle hidden in a later child — is reported cycle-free. `BuildParamToNative`, the native-invoke argument serializer (which, unlike `System.Runtime.Serialize`, has no sink-size cap), then re-enters the public detector per child, misses the cycle every time, and recurses into the self-reference until the Go runtime aborts with `fatal error: stack overflow`. It runs during transaction pre-execution on the unauthenticated `sendrawtransaction` handler — both the explicit pre-exec branch and the default txpool route, before signature, balance, or gas checks — so a 222-byte transaction from a zero-balance signer deterministically kills any reachable RPC node (exit code 2); being a Go runtime throw, the handler's `recover()` cannot contain it, and every validator that executes the tx crashes identically. Fixed by restoring whole-graph traversal (every child, one shared visited-set, across array/struct/map) and adding a MAX_BYTEARRAY_SIZE sink cap to the native serializer.