{
  "name": "ExtractAddressesFromReturn ABI decoder compatibility",
  "description": "Verifies byte-level ABI decoding of getMasternodes() return data. All clients must extract the same address list from the same byte sequence.",
  "vectors": [
    {
      "id": "extract-01",
      "description": "Single address: 0x0000...0001",
      "input_hex": "00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000",
      "expected_addresses": [
        "0x0000000000000000000000000000000000000001"
      ]
    },
    {
      "id": "extract-02",
      "description": "Three masternodes",
      "input_hex": "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030000000000000000000000001234567890abcdef1234567890abcdef1234567800000000000000000000000022222222222222222222222222222222222222220000000000000000000000003333333333333333333333333333333333333333",
      "expected_addresses": [
        "0x1234567890abcdef1234567890abcdef12345678",
        "0x2222222222222222222222222222222222222222",
        "0x3333333333333333333333333333333333333333"
      ]
    },
    {
      "id": "extract-03-security",
      "description": "Overflow length (0xFFFFFFFF...) — must return empty/nil, not panic",
      "input_hex": "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000ffffffff",
      "expected_addresses": []
    },
    {
      "id": "extract-04-security",
      "description": "Truncated payload — declared length > actual bytes",
      "input_hex": "0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000001234567890abcdef1234567890abcdef12345678",
      "expected_addresses": []
    }
  ]
}
