## Vouch issue trace report ### CASE 1 Beacon node response error,sign 成功且submit proposal。 debug log ```log 2024-04-23 19:44:24.686 {"level":"debug","service":"client","impl":"http","id":"3c8f89f0","address":"localhost:3500","endpoint":"/eth/v1/validator/blinded_blocks/1499622?randao_reveal=0xad3521e11e93796303c5245b1110c5c54ff157825a8dcf4d1fcda5591a3bd7b91ec5c1506d8bb658eec4174202cc9dfc0aea30107570eef37aba30dac67585597d5e4a821b7fdffe001450da08c42d964ec40d1325ae47851c593863359d506d&graffiti=0x7365637572657270632e636f6d00000000000000000000000000000000000000","status_code":500,"status_code":500,"response":{"message":"Prepared block is not blinded","code":500},"time":"2024-04-23T18:44:24Z","message":"GET failed"} ``` error log ```log 2024-04-23 19:44:24.686 {"level":"error","service":"beaconblockproposer","impl":"standard","slot":1499622,"error":"failed to request blinded beacon block proposal: GET failed with status 500: {\"message\":\"Prepared block is not blinded\",\"code\":500}","time":"2024-04-23T18:44:24Z","message":"Failed to obtain blinded proposal"} ``` error發生行數 https://github.com/MEV-Protocol/auction-vouch/blob/7ae50aeeda2b69a5d2317b13e491e56d72320f62/services/beaconblockproposer/standard/propose.go#L467 https://github.com/MEV-Protocol/auction-vouch/blob/7ae50aeeda2b69a5d2317b13e491e56d72320f62/services/beaconblockproposer/standard/propose.go#L238 經比對 API url與錯誤訊息,判斷是Prysm的錯誤,這個錯誤目前還是open狀態。 Prysm issue: https://github.com/prysmaticlabs/prysm/issues/12103 執行obtainBlindedProposal function失敗,回傳auctionResultFailedCanTryWithout,程式會執行proposeBlockWithoutAuction function,這一步最後是成功地submit proposal。 code block: https://github.com/MEV-Protocol/auction-vouch/blob/7ae50aeeda2b69a5d2317b13e491e56d72320f62/services/beaconblockproposer/standard/propose.go#L191 執行 proposeBlockWithoutAuction log: ```log 2024-04-23 19:44:24.686 {"level":"warn","service":"beaconblockproposer","impl":"standard","slot":1499622,"time":"2024-04-23T18:44:24Z","message":"Failed to propose with auction; attempting to propose without auction"} ``` ```log 2024-04-23 19:44:25.038 {"level":"trace","service":"beaconblockproposer","impl":"standard","proposing_slot":1499622,"validator_index":1613385,"elapsed":993.96429,"time":"2024-04-23T18:44:24Z","message":"Submitted proposal"} ``` 問題: 1. 根據Prysm github issue討論,Prysm log有沒有出現 ```Proposer: using local execution payload because higher value``` ### CASE 2 Beacon node didn't response error error log ```log 2024-04-23 19:44:25.406 {"level":"error","service":"beaconblockproposer","impl":"standard","proposing_slot":1499622,"validator_index":1613385,"error":"failed to propose with auction too late in process, cannot fall back","time":"2024-04-23T18:44:25Z","message":"Failed to propose block"} 2024-04-23 19:44:25.406 {"level":"error","service":"beaconblockproposer","impl":"standard","slot":1499622,"error":"failed to sign blinded beacon block proposal: failed to sign beacon block proposal: failed to obtain signature: not enough signatures: 0 signed, 2 denied, 0 failed, 1 errored","time":"2024-04-23T18:44:25Z","message":"Failed to sign blinded proposal"} ``` code block: https://github.com/MEV-Protocol/auction-vouch/blob/7ae50aeeda2b69a5d2317b13e491e56d72320f62/services/beaconblockproposer/standard/propose.go#L266 ```golang signedBlindedBlock, err := s.signBlindedProposal(ctx, duty, proposal) if err != nil { log.Error().Err(err).Msg("Failed to sign blinded proposal") return auctionResultFailed } ``` Sign 失敗會回傳auctionResultFailed,不會跑proposeBlockWithoutAuction function,會直接回傳錯誤訊息(failed to propose with auction too late in process, cannot fall back) 問題: 1. 理論上程式不應該跑兩次,但一開始的log都有執行兩次的跡象,所以CASE 2打API成功但簽名失敗。