nspcc-dev / neofs-node

NeoFS is a decentralized distributed object storage integrated with the Neo blockchain
https://fs.neo.org
GNU General Public License v3.0
32 stars 38 forks source link

Investigate container size estimation #1506

Closed alexvanin closed 1 year ago

alexvanin commented 2 years ago

Container size estimation allows to roughly estimate container size in bytes. This is useful for basic income distribution and for network statistics in general.

I think there is an issue with that at least in N3 Testnet (T4). I invoked container.ListContainerSizes for couple of previous epochs (6643, 6642) and then invoked container.GetContainerSize.

It seems like many containers are actually missing. It is also not quite consistent, some container IDs may disappear in one epoch and appear in another. I didn't find anything interesting in logs using estimation keyword.

I guess we can increase log level for estimations or log more details during estimation synchronization. We did something similar for debugging https://github.com/nspcc-dev/neofs-node/issues/1037

carpawell commented 1 year ago

Have not found any missing estimations in the test net near the issue creation time.

roman-khimov commented 1 year ago
$ ./bin/neo-go contract testinvokefunction -r https://rpc3.morph.t5.fs.neo.org:51331 0x70cf38deb1ff7a4f64cb1127eafcd75cd38083d4 listContainerSizes 4042
{
  "state": "HALT",
  "gasconsumed": "640472",
  "script": "AcoPEcAfDBJsaXN0Q29udGFpbmVyU2l6ZXMMFNSDgNNc1/zqJxHLZE96/7HeOM9wQWJ9W1I=",
  "stack": [
    {
      "type": "Array",
      "value": [
        {
          "type": "Buffer",
          "value": "Y25yyg8F4F+ibOI1AqOxWb5ArAsmB1EskLi5x6Pa7E7lMuZzDw=="
        },
        {
          "type": "Buffer",
          "value": "Y25yyg8+/waCGkINMIdzAENKnbqXN13T9/Yvm7sSPwE/AHVMWw=="
        },
        {
          "type": "Buffer",
          "value": "Y25yyg+LyqAoEQPpICrqHAUAFFcqd6fLGqGb3g/4iaNijVUlrw=="
        },
        {
          "type": "Buffer",
          "value": "Y25yyg+vDgTHN7CbgwSv9Fb+NB2hCAAvILXX1agCobVubd+s4Q=="
        },
        {
          "type": "Buffer",
          "value": "Y25yyg+9CX/biZ7xyNpDkfedXz/h9PH1C6u4946EonVJC48HFw=="
        },
        {
          "type": "Buffer",
          "value": "Y25yyg/7lQGd+IhnwO/+u4cqQpd/OaadZCPCLjM8eEG/NO/Qeg=="
        }
      ]
    }
  ],
  "exception": null,
  "notifications": []
}
$ ./bin/neo-go contract testinvokefunction -r https://rpc3.morph.t5.fs.neo.org:51331 0x70cf38deb1ff7a4f64cb1127eafcd75cd38083d4 listContainerSizes 4041
{
  "state": "HALT",
  "gasconsumed": "328416",
  "script": "AckPEcAfDBJsaXN0Q29udGFpbmVyU2l6ZXMMFNSDgNNc1/zqJxHLZE96/7HeOM9wQWJ9W1I=",
  "stack": [
    {
      "type": "Array",
      "value": [
        {
          "type": "Buffer",
          "value": "Y25yyQ8gPL9iS6e2WZRiAHfhdZ2cY/lVNpIryThc5D4z5nimSg=="
        },
        {
          "type": "Buffer",
          "value": "Y25yyQ+Zk8zYn2A2LQC+eYEeUUVASah/+t2SEHVx3H004wNoFg=="
        }
      ]
    }
  ],
  "exception": null,
  "notifications": []
}
$ ./bin/neo-go contract testinvokefunction -r https://rpc3.morph.t5.fs.neo.org:51331 0x70cf38deb1ff7a4f64cb1127eafcd75cd38083d4 listContainerSizes 4040
{
  "state": "HALT",
  "gasconsumed": "172370",
  "script": "AcgPEcAfDBJsaXN0Q29udGFpbmVyU2l6ZXMMFNSDgNNc1/zqJxHLZE96/7HeOM9wQWJ9W1I=",
  "stack": [
    {
      "type": "Any"
    }
  ],
  "exception": null,
  "notifications": []
}

It's like random.

roman-khimov commented 1 year ago

Considering this as done for now (invocation fixed).

carpawell commented 1 year ago

Some problems are still here.

roman-khimov commented 1 year ago

Please forget this issue and open a new one if needed