MinaProtocol / mina

Mina is a cryptocurrency protocol with a constant size blockchain, improving scaling while maintaining decentralization and security.
https://minaprotocol.com
Apache License 2.0
1.97k stars 523 forks source link

MINA Rosetta API doesn't properly recognise layer2 token balance changes #15782

Open slnowak opened 5 days ago

slnowak commented 5 days ago

Preliminary Checks

Description

We're using https://rosetta-devnet.minaprotocol.network/search/transactions to get transaction details, however it looks like Rosetta API doesn't properly parse zkApp transactions containing Layer2 token balance changes.

For example: https://minascan.io/devnet/tx/5JuHSir8Nz8e2229pB8KCJuaeWJDSuRj2APG2CXLSDMHbFtCyktQ?type=zk-tx According to minascan, this transaction includes the following changes:

However, rosetta API responds with the following:

{
    "transactions": [
        {
            "block_identifier": {
                "index": 322205,
                "hash": "3NLBjWdUTu43MqdFzmgu8jt3teTRhnyT4eZ36F7THDhCqwLmxXXa"
            },
            "transaction": {
                "transaction_identifier": {
                    "hash": "5JuHSir8Nz8e2229pB8KCJuaeWJDSuRj2APG2CXLSDMHbFtCyktQ"
                },
                "operations": [
                    {
                        "operation_identifier": {
                            "index": 0
                        },
                        "type": "zkapp_fee_payer_dec",
                        "status": "Success",
                        "account": {
                            "address": "B62qrSZhDgpv9Gxz5dHtFpMauoXPyi6Ti52UCtTMvVApx5ZUeZ5V5Q2",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "-100000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 1
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qrSZhDgpv9Gxz5dHtFpMauoXPyi6Ti52UCtTMvVApx5ZUeZ5V5Q2",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "-1000000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 2
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qpgMPTf7NrafqHZm6fzQ76qaZ3gbz9XSLNFWN3VhDkQmV516SXSx",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "-150000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 3
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qjwDWxjf4LtJ4YWJQDdTNPqZ69ZyeCzbpAFKN7EoZzYig5ZRz8JE",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "0",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 4
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qmRs2Nypefz8kSK5hQwYrvJUjjJumpfR3qKn1ZmcKE9kbFHBJfMv",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "150000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 5
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qrSZhDgpv9Gxz5dHtFpMauoXPyi6Ti52UCtTMvVApx5ZUeZ5V5Q2",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "-1000000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 6
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qpgMPTf7NrafqHZm6fzQ76qaZ3gbz9XSLNFWN3VhDkQmV516SXSx",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "-150000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 7
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qjwDWxjf4LtJ4YWJQDdTNPqZ69ZyeCzbpAFKN7EoZzYig5ZRz8JE",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "0",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 8
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qmRs2Nypefz8kSK5hQwYrvJUjjJumpfR3qKn1ZmcKE9kbFHBJfMv",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "150000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 9
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qrSZhDgpv9Gxz5dHtFpMauoXPyi6Ti52UCtTMvVApx5ZUeZ5V5Q2",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "-1000000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 10
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qpgMPTf7NrafqHZm6fzQ76qaZ3gbz9XSLNFWN3VhDkQmV516SXSx",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "-150000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 11
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qjwDWxjf4LtJ4YWJQDdTNPqZ69ZyeCzbpAFKN7EoZzYig5ZRz8JE",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "0",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 12
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qmRs2Nypefz8kSK5hQwYrvJUjjJumpfR3qKn1ZmcKE9kbFHBJfMv",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "150000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 13
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qrSZhDgpv9Gxz5dHtFpMauoXPyi6Ti52UCtTMvVApx5ZUeZ5V5Q2",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "-1000000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 14
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qpgMPTf7NrafqHZm6fzQ76qaZ3gbz9XSLNFWN3VhDkQmV516SXSx",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "-150000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 15
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qjwDWxjf4LtJ4YWJQDdTNPqZ69ZyeCzbpAFKN7EoZzYig5ZRz8JE",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "0",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    },
                    {
                        "operation_identifier": {
                            "index": 16
                        },
                        "type": "zkapp_balance_update",
                        "status": "Success",
                        "account": {
                            "address": "B62qmRs2Nypefz8kSK5hQwYrvJUjjJumpfR3qKn1ZmcKE9kbFHBJfMv",
                            "metadata": {
                                "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf"
                            }
                        },
                        "amount": {
                            "value": "150000000",
                            "currency": {
                                "symbol": "MINA",
                                "decimals": 9
                            }
                        }
                    }
                ],
                "related_transactions": []
            }
        }
    ],
    "total_count": 1
}

Notice how it never mentions PUNK5 in operations - it always responds with
"currency": { "symbol": "MINA", "decimals": 9 }

Steps to Reproduce

curl --location 'https://rosetta-devnet.minaprotocol.network/search/transactions' \
--header 'Content-Type: application/json' \
--data '{
    "network_identifier":  {
        "blockchain": "mina",
        "network"    : "testnet"
},
"transaction_identifier": {"hash": "5JuHSir8Nz8e2229pB8KCJuaeWJDSuRj2APG2CXLSDMHbFtCyktQ"}
}'

Expected Result

Some operations should mention PUNK5, with appropriate decimals (or any other token being transferred) as a currency.

Actual Result

API always responds with

"currency": {"symbol": "MINA", "decimals": 9}

even though there was a l2 token balance change.

Also, it seems like the same change is included multiple times.

Daemon version

latest?

How frequently do you see this issue?

Always

What is the impact of this issue on your ability to run a node?

Medium

Status

n/a

Additional information

No response