Logo

    CryptoNet is a Protocol Labs initiative.

    FVM issues brought by Medusa

    Context

    In the course of trying to deploy Medusa to FVM, we have encountered several issues that are actually blockers for us to deploy Medusa. We have documented each issues in depth and worked with the FVM team as far as possible to solve them when possible.

    The issues concern mostly the usage of logs, enabling smart contract to issue “external events” that are picked up by applications. It is an essential part of the EVM stack that many dapps are using.

    List of issues

    • ClosedClosed
    • ClosedClosed
    • ClosedClosed
    • ClosedClosed
    • ClosedClosed
    • ClosedClosed
    • ClosedClosed
    • ClosedClosed
    • ClosedClosed
    • ClosedClosed
    • ClosedClosed
    • Slack thread related to request routing for stateful RPC requests
    • Slack thread related to dropped Websocket connections w/ Wallaby RPC

    List of Errors

    These errors have been observed, but require more information in order to create an issue

    RPC incompatibility with “message” field + RPC infrastructure (failure to get peer)

    This one has two errors, one is that message should not be used in an RPC response because it breaks ethers-rs. “message” is used to signify that there was an error in the RPC, in this case the error message is failure to get a peer from the ring-balancer

    • RPC incompatibility: Should not use field messagein RPC response
      • Caused by failure to get a peer from the ring-balancer
    RPC method: eth_blockNumber
    [2022-12-12T19:33:57Z TRACE ethers_providers::transports::retry] should not retry err=JsonRpcClientError(SerdeJson { err: Error("unknown field `message`, expected one of `id`, `jsonrpc`, `result`, `error`, `params`, `method`", line: 1, column: 10), text: "{\"message\":\"failure to get a peer from the ring-balancer\"}" })

    Also "An invalid response was received from the upstream server"

    [2023-01-30T05:00:25Z TRACE ethers_providers::transports::retry] should not retry err=JsonRpcClientError(SerdeJson { err: Error("unknown field `message`, expected one of `id`, `jsonrpc`, `result`, `error`, `params`, `method`", line: 2, column: 11), text: "{\n  \"message\":\"An invalid response was received from the upstream server\"\n}" })
    [2023-01-19T07:51:55Z TRACE ethers_providers::transports::retry] should not retry err=JsonRpcClientError(SerdeJson { err: Error("unknown field `message`, expected one of `id`, `jsonrpc`, `result`, `error`, `params`, `method`", line: 1, column: 10), text: "{\"message\":\"failure to get a peer from the ring-balancer\"}" })
    thread 'tokio-runtime-worker' panicked at 'Blockwatcher should run forever and not fail: Deserialization Error: unknown field `message`, expected one of `id`, `jsonrpc`, `result`, `error`, `params`, `method` at line 1 column 10. Response: {"message":"failure to get a peer from the ring-balancer"}