nspcc-dev / neo-go

Go Node and SDK for the Neo blockchain
MIT License
123 stars 80 forks source link

[2.x] panic in testnet at block 5899351 #1900

Closed roman-khimov closed 3 years ago

roman-khimov commented 3 years ago
panic: bad integer length

goroutine 58 [running]:
github.com/nspcc-dev/neo-go/pkg/core/state.(*NEP5Transfer).EncodeBinary(0xc00c62c400, 0xc00c62c500)
        github.com/nspcc-dev/neo-go/pkg/core/state/nep5.go:219 +0x356
github.com/nspcc-dev/neo-go/pkg/core/state.(*TransferLog).Append(0xc00c61a438, 0xff40f8, 0xc00c62c400, 0x1c0684bb3b8, 0xc00c61a438)
        github.com/nspcc-dev/neo-go/pkg/core/state/nep5.go:111 +0x16c
github.com/nspcc-dev/neo-go/pkg/core/dao.(*Cached).AppendNEP5Transfer(0xc0005f7620, 0x8108a57ca4b606c8, 0xee3a4d0937a6fdfd, 0x1c0684bb3b8, 0xc00c62c400, 0x0, 0x0, 0x7feb6ba81060)
        github.com/nspcc-dev/neo-go/pkg/core/dao/cacheddao.go:210 +0x99
github.com/nspcc-dev/neo-go/pkg/core.(*Blockchain).processNEP5Transfer(0xc000224240, 0xc0005f7620, 0xc00c62c400)
        github.com/nspcc-dev/neo-go/pkg/core/blockchain.go:960 +0x5a9
github.com/nspcc-dev/neo-go/pkg/core.(*Blockchain).storeBlock(0xc000224240, 0xc00c5a6000, 0x0, 0xd6b100)
        github.com/nspcc-dev/neo-go/pkg/core/blockchain.go:809 +0x200e
github.com/nspcc-dev/neo-go/pkg/core.(*Blockchain).AddBlock(0xc000224240, 0xc00c5a6000, 0x0, 0x0)
        github.com/nspcc-dev/neo-go/pkg/core/blockchain.go:444 +0xeb
github.com/nspcc-dev/neo-go/pkg/network.(*blockQueue).run(0xc00c0cd5c0)
        github.com/nspcc-dev/neo-go/pkg/network/blockqueue.go:48 +0x168
created by github.com/nspcc-dev/neo-go/pkg/network.(*Server).Start
        github.com/nspcc-dev/neo-go/pkg/network/server.go:183 +0x25d

Not sure if it's particular node gone wild or something more serious.

roman-khimov commented 3 years ago
{
   "jsonrpc" : "2.0",
   "id" : 1,
   "result" : {
      "executions" : [
         {
            "trigger" : "Application",
            "vmstate" : "HALT",
            "contract" : "0x62eac2c6d53ec2c4a5cc63a914804da136dbb23a",
            "notifications" : [
               {
                  "state" : {
                     "value" : [
                        {
                           "value" : "4661756c743a4e6f74206f776e6572",
                           "type" : "ByteArray"
                        }
                     ],
                     "type" : "Array"
                  },
                  "contract" : "0x35d8e442403d150d81d13bb14f9b4bed036dcc26"
               },
               {
                  "contract" : "0x35d8e442403d150d81d13bb14f9b4bed036dcc26",
                  "state" : {
                     "value" : [
                        {
                           "value" : "7472616e73666572",
                           "type" : "ByteArray"
                        },
                        {
                           "type" : "ByteArray",
                           "value" : "c806b6a47ca50881fdfda637094d3aeeb8b34b68"
                        },
                        {
                           "type" : "ByteArray",
                           "value" : "e716fac9b001e5b86783f9c8e3bc0e4d59c67c93"
                        },
                        {
                           "type" : "ByteArray",
                           "value" : "37666137346638366461646633363039316331373337313463353061343338636237613037323135613137626531633565643364336230396438396166633739"
                        }
                     ],
                     "type" : "Array"
                  }
               },
               {
                  "contract" : "0x35d8e442403d150d81d13bb14f9b4bed036dcc26",
                  "state" : {
                     "value" : [
                        {
                           "type" : "ByteArray",
                           "value" : "4661756c743a4e6f74206f776e6572"
                        }
                     ],
                     "type" : "Array"
                  }
               },
               {
                  "contract" : "0x35d8e442403d150d81d13bb14f9b4bed036dcc26",
                  "state" : {
                     "type" : "Array",
                     "value" : [
                        {
                           "value" : "7472616e73666572",
                           "type" : "ByteArray"
                        },
                        {
                           "type" : "ByteArray",
                           "value" : "c806b6a47ca50881fdfda637094d3aeeb8b34b68"
                        },
                        {
                           "value" : "e716fac9b001e5b86783f9c8e3bc0e4d59c67c93",
                           "type" : "ByteArray"
                        },
                        {
                           "type" : "ByteArray",
                           "value" : "61623039333562373136623036353865376134623039353931383464663439326630376162393135663731636430333937663734643636386433656465666131"
                        }
                     ]
                  }
               }
            ],
            "stack" : [
               {
                  "value" : "1",
                  "type" : "Integer"
               },
               {
                  "value" : "1",
                  "type" : "Integer"
               }
            ],
            "gas_consumed" : "7.976"
         }
      ],
      "txid" : "0x2d98120da625c313ca6a424fe1a5ba6353acf9f0d2ad0977ec43bafc97a159e4"
   }
}

These transfers are obviously invalid (in that they can't be NEP-5 transfers due to integer overflow).