diff --git a/eth/tracers/internal/tracers/assets.go b/eth/tracers/internal/tracers/assets.go index 6abfa79153..15a7776d8b 100644 --- a/eth/tracers/internal/tracers/assets.go +++ b/eth/tracers/internal/tracers/assets.go @@ -6,7 +6,7 @@ // evmdis_tracer.js (4.194kB) // noop_tracer.js (1.271kB) // opcount_tracer.js (1.372kB) -// prestate_tracer.js (4.207kB) +// prestate_tracer.js (4.234kB) // trigram_tracer.js (1.788kB) // unigram_tracer.js (1.51kB) @@ -92,7 +92,7 @@ func _4byte_tracerJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "4byte_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "4byte_tracer.js", size: 2933, mode: os.FileMode(0664), modTime: time.Unix(1545311315, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb4, 0xc5, 0x48, 0x2d, 0xd9, 0x43, 0x95, 0x93, 0x3b, 0x93, 0x2c, 0x47, 0x8c, 0x84, 0x32, 0x3c, 0x8b, 0x2e, 0xf3, 0x72, 0xc4, 0x57, 0xe6, 0x3a, 0xb3, 0xdf, 0x1d, 0xbf, 0x45, 0x3, 0xfc, 0xa}} return a, nil } @@ -112,7 +112,7 @@ func bigram_tracerJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "bigram_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "bigram_tracer.js", size: 1712, mode: os.FileMode(0664), modTime: time.Unix(1545311315, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x6c, 0xd, 0x24, 0xf2, 0x49, 0xbd, 0x58, 0x8b, 0xb5, 0xd1, 0xc9, 0xcd, 0xcf, 0x5b, 0x3e, 0x5c, 0xfb, 0x14, 0x50, 0xe7, 0xe3, 0xb9, 0xd1, 0x54, 0x69, 0xe6, 0x5e, 0x45, 0xa6, 0x2c, 0x6c}} return a, nil } @@ -132,7 +132,7 @@ func call_tracerJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "call_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "call_tracer.js", size: 8643, mode: os.FileMode(0664), modTime: time.Unix(1545382727, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xef, 0x68, 0xda, 0xd8, 0x9, 0xf5, 0xd5, 0x71, 0xa8, 0x8a, 0xfb, 0x30, 0xe8, 0xf0, 0x72, 0x14, 0x36, 0x6b, 0x62, 0x5a, 0x4e, 0xff, 0x16, 0xdc, 0xd3, 0x2c, 0x68, 0x7b, 0x79, 0x9f, 0xd3}} return a, nil } @@ -152,7 +152,7 @@ func evmdis_tracerJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "evmdis_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "evmdis_tracer.js", size: 4194, mode: os.FileMode(0664), modTime: time.Unix(1521112219, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0xe8, 0x96, 0xa1, 0x8b, 0xc, 0x68, 0x3c, 0xe8, 0x5d, 0x7e, 0xf0, 0xab, 0xfe, 0xec, 0xd1, 0xb, 0x3d, 0xfc, 0xc7, 0xac, 0xb5, 0xa, 0x41, 0x55, 0x0, 0x3a, 0x60, 0xa7, 0x8e, 0x46, 0x93}} return a, nil } @@ -172,7 +172,7 @@ func noop_tracerJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "noop_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "noop_tracer.js", size: 1271, mode: os.FileMode(0664), modTime: time.Unix(1545311315, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xf, 0x1c, 0x6f, 0x65, 0xaf, 0x90, 0x31, 0xab, 0xf, 0xe0, 0xca, 0x54, 0x7, 0xfd, 0xd3, 0xa1, 0x4a, 0x14, 0x1, 0x2a, 0x9d, 0xdc, 0xb9, 0x64, 0x69, 0x83, 0x30, 0xb1, 0x2a, 0xbd, 0xfb}} return a, nil } @@ -192,12 +192,12 @@ func opcount_tracerJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "opcount_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "opcount_tracer.js", size: 1372, mode: os.FileMode(0664), modTime: time.Unix(1521112219, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x27, 0xe, 0x97, 0x88, 0x9b, 0x53, 0xbb, 0x20, 0x44, 0xd8, 0xf5, 0xeb, 0x41, 0xd2, 0x7e, 0xd6, 0xda, 0x6b, 0xf5, 0xaf, 0x0, 0x75, 0x9f, 0xd9, 0x22, 0xc, 0x6e, 0x74, 0xac, 0x2a, 0xa9, 0xa7}} return a, nil } -var _prestate_tracerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x57\xdb\x6e\x1b\x39\xd2\xbe\xee\x7e\x8a\x42\x6e\x24\x61\x94\x56\xec\x01\xe6\x07\xe4\xdf\x0b\x74\x14\x25\x31\xe0\xb1\x0d\x49\x59\xaf\x77\x30\x17\x6c\xb2\xba\xc5\x11\x45\x36\x48\xb6\x64\x6d\xe0\x77\x5f\x14\xfb\xa0\x43\x7c\xc8\xec\x9d\x44\x16\xbf\x3a\x7f\x55\x3d\x1a\xc1\xc4\x94\x3b\x2b\x8b\xa5\x87\xf3\x0f\x67\xff\x07\x8b\x25\x42\x61\xde\xa3\x5f\xa2\xc5\x6a\x0d\x69\xe5\x97\xc6\xba\x78\x34\x82\xc5\x52\x3a\xc8\xa5\x42\x90\x0e\x4a\x66\x3d\x98\x1c\xfc\x89\xbc\x92\x99\x65\x76\x97\xc4\xa3\x51\xfd\xe6\xd9\x6b\x42\xc8\x2d\x22\x38\x93\xfb\x2d\xb3\x38\x86\x9d\xa9\x80\x33\x0d\x16\x85\x74\xde\xca\xac\xf2\x08\xd2\x03\xd3\x62\x64\x2c\xac\x8d\x90\xf9\x8e\x20\xa5\x87\x4a\x0b\xb4\x41\xb5\x47\xbb\x76\xad\x1d\x5f\x6e\xbe\xc1\x35\x3a\x87\x16\xbe\xa0\x46\xcb\x14\xdc\x55\x99\x92\x1c\xae\x25\x47\xed\x10\x98\x83\x92\x4e\xdc\x12\x05\x64\x01\x8e\x1e\x7e\x26\x53\xe6\x8d\x29\xf0\xd9\x54\x5a\x30\x2f\x8d\x1e\x02\x4a\xb2\x1c\x36\x68\x9d\x34\x1a\x7e\x6d\x55\x35\x80\x43\x30\x96\x40\xfa\xcc\x93\x03\x16\x4c\x49\xef\x06\xc0\xf4\x0e\x14\xf3\xfb\xa7\x3f\x11\x90\xbd\xdf\x02\xa4\x0e\x6a\x96\xa6\x44\xf0\x4b\xe6\xc9\xeb\xad\x54\x0a\x32\x84\xca\x61\x5e\xa9\x21\xa1\x65\x95\x87\xfb\xab\xc5\xd7\xdb\x6f\x0b\x48\x6f\x1e\xe0\x3e\x9d\xcd\xd2\x9b\xc5\xc3\x05\x6c\xa5\x5f\x9a\xca\x03\x6e\xb0\x86\x92\xeb\x52\x49\x14\xb0\x65\xd6\x32\xed\x77\x60\x72\x42\xf8\x7d\x3a\x9b\x7c\x4d\x6f\x16\xe9\xc7\xab\xeb\xab\xc5\x03\x18\x0b\x9f\xaf\x16\x37\xd3\xf9\x1c\x3e\xdf\xce\x20\x85\xbb\x74\xb6\xb8\x9a\x7c\xbb\x4e\x67\x70\xf7\x6d\x76\x77\x3b\x9f\x26\x30\x47\xb2\x0a\xe9\xfd\xdb\x31\xcf\x43\xf6\x2c\x82\x40\xcf\xa4\x72\x6d\x24\x1e\x4c\x05\x6e\x69\x2a\x25\x60\xc9\x36\x08\x16\x39\xca\x0d\x0a\x60\xc0\x4d\xb9\xfb\xe9\xa4\x12\x16\x53\x46\x17\xc1\xe7\x17\x0b\x12\xae\x72\xd0\xc6\x0f\xc1\x21\xc2\xff\x2f\xbd\x2f\xc7\xa3\xd1\x76\xbb\x4d\x0a\x5d\x25\xc6\x16\x23\x55\xc3\xb9\xd1\x3f\x92\x98\x30\x4b\x8b\xce\x33\x8f\x0b\xcb\x38\x5a\x30\x95\x2f\x2b\xef\xc0\x55\x79\x2e\xb9\x44\xed\x41\xea\xdc\xd8\x75\xa8\x14\xf0\x06\xb8\x45\xe6\x11\x18\x28\xc3\x99\x02\x7c\x44\x5e\x85\xbb\x3a\xd2\xa1\x5c\x2d\xd3\x8e\xf1\x70\x9a\x5b\xb3\x26\x5f\x2b\xe7\xe9\x87\x73\xb8\xce\x14\x0a\x28\x50\xa3\x93\x0e\x32\x65\xf8\x2a\x89\xbf\xc7\xd1\x81\x31\x54\x27\xc1\xc3\x46\x28\xd4\xc6\x16\x7b\x16\x21\xab\xa4\x12\x52\x17\x49\x1c\xb5\xd2\x63\xd0\x95\x52\xc3\x38\x40\x28\x63\x56\x55\x99\x72\x6e\xaa\x60\xfb\x5f\xc8\x7d\x0d\xe6\x4a\xe4\x32\xa7\xe2\x60\xdd\xad\x37\xe1\xaa\xd3\x6b\x32\x92\x4f\xe2\xe8\x08\x66\x0c\x79\xa5\x83\x3b\x7d\x26\x84\x1d\x82\xc8\x06\xdf\xe3\x28\xda\x30\x4b\x58\x70\x09\xde\x7c\xc5\xc7\x70\x39\xb8\x88\xa3\x48\xe6\xd0\xf7\x4b\xe9\x92\x16\xf8\x0f\xc6\xf9\x9f\x70\x79\x79\x19\x9a\x3a\x97\x1a\xc5\x00\x08\x22\x7a\x4e\xac\xbe\x89\x32\xa6\x98\xe6\x38\x86\xde\x87\xc7\x1e\xfc\x02\x22\x4b\x0a\xf4\x1f\xeb\xd3\x5a\x59\xe2\xcd\xdc\x5b\xa9\x8b\xfe\xd9\x6f\x83\x61\x78\xa5\x4d\x78\x03\x8d\xf8\x8d\xe9\x84\xeb\x7b\x6e\x44\xb8\x6e\x6c\xae\xa5\x26\x46\x34\x42\x8d\x94\xf3\xc6\xb2\x02\xc7\xf0\xfd\x89\xfe\x3f\x91\x57\x4f\x71\xf4\x74\x14\xe5\x79\x2d\xf4\x42\x94\x1b\x08\x40\xed\x6d\x57\xe7\x85\xa4\x4e\x3d\x4c\x40\xc0\x7b\x2d\x09\xf3\xd6\x94\x93\x24\xac\x70\xf7\x76\x26\xe8\x42\x8a\xc7\xee\x62\x85\xbb\xc1\x45\xfc\x62\x8a\x92\xc6\xe8\x3f\xa4\x78\xfc\xd9\x7c\x9d\xbc\x39\x8a\xeb\x9c\xa4\xf6\xf6\x0e\x06\x27\x71\xb4\xe8\x2a\xe5\xa9\xdc\xa5\xde\x98\x15\x11\xd7\x92\xe2\xa3\x54\x08\x89\x29\x29\x5b\xae\x66\x8e\x0c\x51\x83\xf4\x68\x19\x51\xa7\xd9\xa0\xa5\xa9\x01\x16\x7d\x65\xb5\xeb\xc2\x98\x4b\xcd\x54\x0b\xdc\x44\xdd\x5b\xc6\xeb\x9e\xa9\xcf\x0f\x62\xc9\xfd\x63\x88\x62\xf0\x6e\x34\x82\xd4\x03\xb9\x08\xa5\x91\xda\x0f\x61\x8b\xa0\x11\x05\x35\xbe\x40\x51\x71\x1f\xf0\x7a\x1b\xa6\x2a\xec\xd5\xcd\x4d\x14\x19\x9e\x9a\x8a\x26\xc1\x41\xf3\x0f\x83\x81\x6b\xb3\x09\x23\x2e\x63\x7c\x05\x4d\xc3\x19\x2b\x0b\xa9\xe3\x26\x9c\x47\xcd\x46\x16\x25\x04\x1c\xcc\x0a\xb9\xa2\x24\xd2\xc9\x47\xa6\xe0\x12\x32\x59\x5c\x69\x7f\x92\xbc\x3a\xe8\xed\xd3\xc1\x9f\x49\xd3\x3c\x89\x23\xc2\xeb\x9f\x0f\x86\x70\xf6\x5b\x57\x11\xde\x10\x14\xbc\x0d\xe6\xcd\xcb\x50\xf1\x69\x31\x3c\xff\x2c\xa8\xa1\x0e\xfe\x25\x68\x4d\x5c\x95\x51\x3a\x6a\x3f\x43\x1c\x8f\xbb\xf8\xe2\x15\xdc\x63\xdf\x5a\xdc\x26\x34\x09\x13\xe2\x65\xd0\x3a\x45\x9f\x90\x5b\x5c\x13\xab\x53\x16\x38\x53\x0a\x6d\xcf\x41\xe0\x8c\x61\x53\x4e\x21\x5f\xb8\x2e\xfd\xae\xe5\x7a\xcf\x6c\x81\xde\xbd\x6d\x58\xc0\x79\xff\xbe\xa5\xc0\x10\x8a\x5d\x89\x70\x79\x09\xbd\xc9\x6c\x9a\x2e\xa6\xbd\xa6\x8d\x46\x23\xb8\xc7\xb0\x09\x65\x4a\x66\x42\xed\x40\xa0\x42\x8f\xb5\x5d\x46\x87\x10\x75\x94\x30\xa4\x95\x86\x96\x0d\x7c\x94\xce\x4b\x5d\x40\xcd\x14\x5b\x9a\xab\x0d\x5c\xe8\x11\xce\x2a\x47\xd5\x7a\x32\x84\xbc\xa1\x8d\xc2\x22\xf1\x0a\xf1\x7f\x68\x37\xa6\x64\xb7\x81\xe4\xd2\x3a\x0f\xa5\x62\x1c\x13\xc2\xeb\x8c\x79\x39\xbf\x4d\x27\x93\xea\x59\x68\xc1\x00\xb4\x1f\x70\x4c\xd1\x80\x24\xf5\x0e\xfa\x2d\xc6\x20\x8e\x22\xdb\x4a\x1f\x60\x5f\xec\x29\xc1\x79\x2c\x0f\x09\x81\x16\x0b\xdc\x20\x51\x68\x60\x83\x7a\x18\x92\xae\x7f\xfe\xde\x4c\x5f\x74\x49\x1c\xd1\xbb\x83\xbe\x56\xa6\x38\xee\x6b\x51\x87\x85\x57\xd6\x52\xfe\x3b\x0a\xce\xa9\xc7\xff\xaa\x9c\xa7\x98\x5a\x0a\x4f\xc3\x16\xcf\x91\x64\xa0\x44\x9a\xb6\x83\x1f\xc9\x90\xe6\x56\x98\x13\xa4\xae\x99\x52\xf5\x36\x57\x1a\x8f\xda\x4b\xa6\xd4\x8e\xf2\xb0\xb5\xb4\xc6\xd0\xe2\x32\x04\x27\x49\x2a\x30\x4e\x10\x95\x9a\xab\x4a\xd4\x65\x10\xea\xb8\xc1\x73\xc1\xe6\xe3\xfd\x67\x8d\xce\xb1\x02\x13\xaa\xa4\x5c\x3e\x36\x1b\xa4\x86\x5e\x4d\x72\xfd\x41\x2f\xe9\x8c\x3c\xa6\x18\x65\x8a\xa4\x2d\x32\xa2\xe9\x54\x08\x8b\xce\xf5\x07\x0d\xe7\x74\x99\xbd\x5f\xa2\xa6\xe0\x83\xc6\x2d\x74\xab\x09\xe3\x9c\x56\x35\x31\x04\x26\x04\x51\xdb\xc9\x1a\x11\x47\x91\xdb\x4a\xcf\x97\x10\x34\x99\x72\xdf\x8b\x83\xa6\xfe\x39\x73\x08\xef\xa6\xff\x5a\x4c\x6e\x3f\x4d\x27\xb7\x77\x0f\xef\xc6\x70\x74\x36\xbf\xfa\xf7\xb4\x3b\xfb\x98\x5e\xa7\x37\x93\xe9\xbb\x71\x98\xcd\xcf\x38\xe4\x4d\xeb\x02\x29\x74\x9e\xf1\x55\x52\x22\xae\xfa\x1f\x8e\x79\x60\xef\x60\x14\x65\x16\xd9\xea\x62\x6f\x4c\xdd\xa0\x8d\x8e\x96\x72\xe1\x12\x5e\x0c\xd6\xc5\xcb\xd6\x4c\x1a\xf9\x7e\x4b\xe4\xfb\x55\x24\x50\xc5\xdb\x76\x9c\xff\x6d\x43\x42\xef\x30\xbe\x1a\x83\x63\x8a\x36\x60\xf9\x1f\xfa\x72\xc9\x73\x87\x7e\x08\xa8\x85\xd9\x12\xf3\x75\xa8\xf5\x4d\x83\x7b\x10\xb2\xb3\x41\xcd\xa0\xb7\x79\x7f\xd0\x09\x13\xd8\x8f\xa2\xe7\xa7\xa2\xaf\x06\xe3\xbc\x89\xc6\x09\xc8\xaf\x27\x5b\x5c\xb8\x5f\xe3\xda\xd8\x5d\x33\x72\x5a\x1f\xc8\x88\xd7\x43\x97\x5e\x5f\x77\x45\x43\x7f\xa8\x92\xba\x83\x4f\xd3\xeb\xe9\x97\x74\x31\x3d\x92\x9a\x2f\xd2\xc5\xd5\xa4\x3e\xfa\xdb\xd5\x75\xf6\xd3\xd5\xd5\x9b\xcf\x17\xb7\xb3\x69\x6f\xdc\xfc\xbb\xbe\x4d\x3f\xf5\x7e\x50\xd8\xac\x7a\xaf\xf5\xa7\x37\xf7\xc6\x8a\xff\xa5\xcc\x0f\xd6\xae\x9c\x3d\xb7\x75\x05\xfe\xe6\xbe\x3a\xf9\xaa\x01\xa6\x5b\xea\xcd\xeb\x2f\xbb\x28\xbc\x7f\x96\x6c\x9f\xe2\xa7\xf8\xbf\x01\x00\x00\xff\xff\xa4\x1c\x7b\xe1\x6f\x10\x00\x00") +var _prestate_tracerJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x57\xdd\x6f\xdb\x38\x12\x7f\x96\xfe\x8a\x41\x5f\x6c\xa3\xae\xdc\x64\x81\x3d\xc0\xb9\x1c\xa0\xba\x6e\x1b\x20\x9b\x04\xb6\x7b\xb9\xdc\x62\x1f\x28\x72\x24\x73\x4d\x93\x02\x49\xd9\xf1\x15\xf9\xdf\x0f\x43\x7d\xf8\xa3\x49\xd3\xdd\x37\x9b\x1c\xfe\xe6\xfb\x37\xa3\xd1\x08\x26\xa6\xdc\x59\x59\x2c\x3d\x9c\xbf\x3f\xfb\x07\x2c\x96\x08\x85\x79\x87\x7e\x89\x16\xab\x35\xa4\x95\x5f\x1a\xeb\xe2\xd1\x08\x16\x4b\xe9\x20\x97\x0a\x41\x3a\x28\x99\xf5\x60\x72\xf0\x27\xf2\x4a\x66\x96\xd9\x5d\x12\x8f\x46\xf5\x9b\x67\xaf\x09\x21\xb7\x88\xe0\x4c\xee\xb7\xcc\xe2\x18\x76\xa6\x02\xce\x34\x58\x14\xd2\x79\x2b\xb3\xca\x23\x48\x0f\x4c\x8b\x91\xb1\xb0\x36\x42\xe6\x3b\x82\x94\x1e\x2a\x2d\xd0\x06\xd5\x1e\xed\xda\xb5\x76\x7c\xbe\xf9\x0a\xd7\xe8\x1c\x5a\xf8\x8c\x1a\x2d\x53\x70\x57\x65\x4a\x72\xb8\x96\x1c\xb5\x43\x60\x0e\x4a\x3a\x71\x4b\x14\x90\x05\x38\x7a\xf8\x89\x4c\x99\x37\xa6\xc0\x27\x53\x69\xc1\xbc\x34\x7a\x08\x28\xc9\x72\xd8\xa0\x75\xd2\x68\xf8\xa5\x55\xd5\x00\x0e\xc1\x58\x02\xe9\x33\x4f\x0e\x58\x30\x25\xbd\x1b\x00\xd3\x3b\x50\xcc\xef\x9f\xfe\x44\x40\xf6\x7e\x0b\x90\x3a\xa8\x59\x9a\x12\xc1\x2f\x99\x27\xaf\xb7\x52\x29\xc8\x10\x2a\x87\x79\xa5\x86\x84\x96\x55\x1e\xee\xaf\x16\x5f\x6e\xbf\x2e\x20\xbd\x79\x80\xfb\x74\x36\x4b\x6f\x16\x0f\x17\xb0\x95\x7e\x69\x2a\x0f\xb8\xc1\x1a\x4a\xae\x4b\x25\x51\xc0\x96\x59\xcb\xb4\xdf\x81\xc9\x09\xe1\xb7\xe9\x6c\xf2\x25\xbd\x59\xa4\x1f\xae\xae\xaf\x16\x0f\x60\x2c\x7c\xba\x5a\xdc\x4c\xe7\x73\xf8\x74\x3b\x83\x14\xee\xd2\xd9\xe2\x6a\xf2\xf5\x3a\x9d\xc1\xdd\xd7\xd9\xdd\xed\x7c\x9a\xc0\x1c\xc9\x2a\xa4\xf7\xaf\xc7\x3c\x0f\xd9\xb3\x08\x02\x3d\x93\xca\xb5\x91\x78\x30\x15\xb8\xa5\xa9\x94\x80\x25\xdb\x20\x58\xe4\x28\x37\x28\x80\x01\x37\xe5\xee\xa7\x93\x4a\x58\x4c\x19\x5d\x04\x9f\x5f\x2c\x48\xb8\xca\x41\x1b\x3f\x04\x87\x08\xff\x5c\x7a\x5f\x8e\x47\xa3\xed\x76\x9b\x14\xba\x4a\x8c\x2d\x46\xaa\x86\x73\xa3\x7f\x25\x31\x61\x96\x16\x9d\x67\x1e\x17\x96\x71\xb4\x60\x2a\x5f\x56\xde\x81\xab\xf2\x5c\x72\x89\xda\x83\xd4\xb9\xb1\xeb\x50\x29\xe0\x0d\x70\x8b\xcc\x23\x30\x50\x86\x33\x05\xf8\x88\xbc\x0a\x77\x75\xa4\x43\xb9\x5a\xa6\x1d\xe3\xe1\x34\xb7\x66\x4d\xbe\x56\xce\xd3\x0f\xe7\x70\x9d\x29\x14\x50\xa0\x46\x27\x1d\x64\xca\xf0\x55\x12\x7f\x8b\xa3\x03\x63\xa8\x4e\x82\x87\x8d\x50\xa8\x8d\x2d\xf6\x2c\x42\x56\x49\x25\xa4\x2e\x92\x38\x6a\xa5\xc7\xa0\x2b\xa5\x86\x71\x80\x50\xc6\xac\xaa\x32\xe5\xdc\x54\xc1\xf6\x3f\x91\xfb\x1a\xcc\x95\xc8\x65\x4e\xc5\xc1\xba\x5b\x6f\xc2\x55\xa7\xd7\x64\x24\x9f\xc4\xd1\x11\xcc\x18\xf2\x4a\x07\x77\xfa\x4c\x08\x3b\x04\x91\x0d\xbe\xc5\x51\xb4\x61\x96\xb0\xe0\x12\xbc\xf9\x82\x8f\xe1\x72\x70\x11\x47\x91\xcc\xa1\xef\x97\xd2\x25\x2d\xf0\xef\x8c\xf3\x3f\xe0\xf2\xf2\x32\x34\x75\x2e\x35\x8a\x01\x10\x44\xf4\x9c\x58\x7d\x13\x65\x4c\x31\xcd\x71\x0c\xbd\xf7\x8f\x3d\x78\x0b\x22\x4b\x0a\xf4\x1f\xea\xd3\x5a\x59\xe2\xcd\xdc\x5b\xa9\x8b\xfe\xd9\xaf\x83\x61\x78\xa5\x4d\x78\x03\x8d\xf8\x8d\xe9\x84\xeb\x7b\x6e\x44\xb8\x6e\x6c\xae\xa5\x26\x46\x34\x42\x8d\x94\xf3\xc6\xb2\x02\xc7\xf0\xed\x89\xfe\x3f\x91\x57\x4f\x71\xf4\x74\x14\xe5\x79\x2d\xf4\x42\x94\x1b\x08\x40\xed\x6d\x57\xe7\x85\xa4\x4e\x3d\x4c\x40\xc0\xfb\x51\x12\xe6\xad\x29\x27\x49\x58\xe1\xee\xf5\x4c\xd0\x85\x14\x8f\xdd\xc5\x0a\x77\x83\x8b\xf8\xc5\x14\x25\x8d\xd1\xbf\x4b\xf1\xf8\xb3\xf9\x3a\x79\x73\x14\xd7\x39\x49\xed\xed\x1d\x0c\x4e\xe2\x68\xd1\x55\xca\x53\xb9\x4b\xbd\x31\x2b\x22\xae\x25\xc5\x47\xa9\x10\x12\x53\x52\xb6\x5c\xcd\x1c\x19\xa2\x06\xe9\xd1\x32\xa2\x4e\xb3\x41\x4b\x53\x03\x2c\xfa\xca\x6a\xd7\x85\x31\x97\x9a\xa9\x16\xb8\x89\xba\xb7\x8c\xd7\x3d\x53\x9f\x1f\xc4\x92\xfb\xc7\x10\xc5\xe0\xdd\x68\x04\xa9\x07\x72\x11\x4a\x23\xb5\x1f\xc2\x16\x41\x23\x0a\x6a\x7c\x81\xa2\xe2\x3e\xe0\xf5\x36\x4c\x55\xd8\xab\x9b\x9b\x28\x32\x3c\x35\x15\x4d\x82\x83\xe6\x1f\x06\x03\xd7\x66\x13\x46\x5c\xc6\xf8\x0a\x9a\x86\x33\x56\x16\x52\xc7\x4d\x38\x8f\x9a\x8d\x2c\x4a\x08\x38\x98\x15\x72\x45\x49\xa4\x93\x0f\x4c\xc1\x25\x64\xb2\xb8\xd2\xfe\x24\x79\x75\xd0\xdb\xa7\x83\x3f\x92\xa6\x79\x12\x47\x84\xd7\x3f\x1f\x0c\xe1\xec\xd7\xae\x22\xbc\x21\x28\x78\x1d\xcc\x9b\x97\xa1\xe2\xd3\x62\x78\xfe\x59\x50\x43\x1d\xfc\x36\x68\x4d\x5c\x95\x51\x3a\x6a\x3f\x43\x1c\x8f\xbb\xf8\xe2\x07\xb8\xc7\xbe\xb5\xb8\x4d\x68\x12\x26\xc4\xcb\xa0\x75\x8a\x3e\x22\xb7\xb8\x26\x56\xa7\x2c\x70\xa6\x14\xda\x9e\x83\xc0\x19\xc3\xa6\x9c\x42\xbe\x70\x5d\xfa\x5d\xcb\xf5\x9e\xd9\x02\xbd\x7b\xdd\xb0\x80\xf3\xee\x5d\x4b\x81\x21\x14\xbb\x12\xe1\xf2\x12\x7a\x93\xd9\x34\x5d\x4c\x7b\x4d\x1b\x8d\x46\x70\x8f\x61\x13\xca\x94\xcc\x84\xda\x81\x40\x85\x1e\x6b\xbb\x8c\x0e\x21\xea\x28\x61\x48\x2b\x0d\x2d\x1b\xf8\x28\x9d\x97\xba\x80\x9a\x29\xb6\x34\x57\x1b\xb8\xd0\x23\x9c\x55\x8e\xaa\xf5\x64\x08\x79\x43\x1b\x85\x45\xe2\x15\xe2\xff\xd0\x6e\x4c\xc9\x6e\x03\xc9\xa5\x75\x1e\x4a\xc5\x38\x26\x84\xd7\x19\xf3\x72\x7e\x9b\x4e\x26\xd5\xb3\xd0\x82\x01\x68\x3f\xe0\x98\xa2\x01\x49\xea\x1d\xf4\x5b\x8c\x41\x1c\x45\xb6\x95\x3e\xc0\xbe\xd8\x53\x82\xf3\x58\x1e\x12\x02\x2d\x16\xb8\x41\xa2\xd0\xc0\x06\xf5\x30\x24\x5d\xff\xfe\xad\x99\xbe\xe8\x92\x38\xa2\x77\x07\x7d\xad\x4c\x71\xdc\xd7\xa2\x0e\x0b\xaf\xac\xa5\xfc\x77\x14\x9c\x53\x8f\xff\x59\x39\x4f\x31\xb5\x14\x9e\x86\x2d\x9e\x23\xc9\x40\x89\x34\x6d\x07\xdf\x93\x21\xcd\xad\x30\x27\x48\x5d\x33\xa5\xea\x6d\xae\x34\x1e\xb5\x97\x4c\xa9\x1d\xe5\x61\x6b\x69\x8d\xa1\xc5\x65\x08\x4e\x92\x54\x60\x9c\x20\x2a\x35\x57\x95\xa8\xcb\x20\xd4\x71\x83\xe7\x82\xcd\xc7\xfb\xcf\x1a\x9d\x63\x05\x26\x54\x49\xb9\x7c\x6c\x36\x48\x0d\xbd\x9a\xe4\xfa\x83\x5e\xd2\x19\x79\x4c\x31\xca\x14\x49\x5b\x64\x44\xd3\xa9\x10\x16\x9d\xeb\x0f\x1a\xce\xe9\x32\x7b\xbf\x44\x4d\xc1\x07\x8d\x5b\xe8\x56\x13\xc6\x39\xad\x6a\x62\x08\x4c\x08\xa2\xb6\x93\x35\x22\x8e\x22\xb7\x95\x9e\x2f\x21\x68\x32\xe5\xbe\x17\x07\x4d\xfd\x73\xe6\x10\xde\x4c\xff\xb3\x98\xdc\x7e\x9c\x4e\x6e\xef\x1e\xde\x8c\xe1\xe8\x6c\x7e\xf5\xdf\x69\x77\xf6\x21\xbd\x4e\x6f\x26\xd3\x37\xe3\x30\x9b\x9f\x71\xc8\x9b\xd6\x05\x52\xe8\x3c\xe3\xab\xa4\x44\x5c\xf5\xdf\x1f\xf3\xc0\xde\xc1\x28\xca\x2c\xb2\xd5\xc5\xde\x98\xba\x41\x1b\x1d\x2d\xe5\xc2\x25\xbc\x18\xac\x8b\x97\xad\x99\x34\xf2\xfd\x96\xc8\xf7\xab\x48\xa0\x8a\xd7\xed\x38\xff\xcb\x86\x84\xde\x61\x7c\x35\x06\xc7\x14\x6d\xc0\xf2\x7f\xf4\xe5\x92\xe7\x0e\xfd\x10\x50\x0b\xb3\x25\xe6\xeb\x50\xeb\x9b\x06\xf7\x20\x64\x67\x83\x9a\x41\x6f\xf3\xfe\xa0\x13\x26\xb0\xef\x45\xcf\x9f\x13\x45\x2d\xe0\xb2\x45\x7f\x1b\x5e\xbe\x1e\xa8\xf3\x26\x52\x27\x0a\x7e\x39\xd9\xf0\xc2\xfd\x1a\xd7\xc6\xee\x9a\x71\x74\xe0\xdf\x8f\xa3\x9a\x5e\x5f\x77\xf5\x44\x7f\xa8\xc8\xba\x83\x8f\xd3\xeb\xe9\xe7\x74\x31\x3d\x92\x9a\x2f\xd2\xc5\xd5\xa4\x3e\xfa\xcb\x85\x77\xf6\xd3\x85\xd7\x9b\xcf\x17\xb7\xb3\x69\x6f\xdc\xfc\xbb\xbe\x4d\x3f\xf6\xbe\x53\xd8\x6c\x81\x3f\x6a\x5d\x6f\xee\x8d\x15\x7f\xa7\x03\x0e\x36\xb2\x9c\x3d\xb7\x90\x05\x6a\xe7\xbe\x3a\xf9\xe0\x01\xa6\x5b\x56\xce\xeb\x8f\xbe\x28\xbc\x7f\x96\x87\x9f\xe2\xa7\xf8\xff\x01\x00\x00\xff\xff\xb1\x28\x85\x2a\x8a\x10\x00\x00") func prestate_tracerJsBytes() ([]byte, error) { return bindataRead( @@ -212,8 +212,8 @@ func prestate_tracerJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "prestate_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0x97, 0x7e, 0x7b, 0x40, 0x71, 0x58, 0x4e, 0xb9, 0xbc, 0x83, 0xa6, 0x2d, 0x1a, 0x0, 0xb4, 0x35, 0xcd, 0x94, 0x86, 0x4c, 0x1, 0xcb, 0x4a, 0xc1, 0xb, 0xc1, 0xdf, 0x5e, 0xf5, 0x51, 0xee}} + info := bindataFileInfo{name: "prestate_tracer.js", size: 4234, mode: os.FileMode(0664), modTime: time.Unix(1545387660, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0x79, 0x70, 0x4f, 0xc5, 0x78, 0x57, 0x63, 0x6f, 0x5, 0x31, 0xce, 0x3e, 0x5d, 0xbd, 0x71, 0x4, 0x46, 0x78, 0xcd, 0x1d, 0xcd, 0xb9, 0xd8, 0x10, 0xff, 0xe6, 0xc5, 0x59, 0xb9, 0x25, 0x6e}} return a, nil } @@ -232,7 +232,7 @@ func trigram_tracerJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "trigram_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "trigram_tracer.js", size: 1788, mode: os.FileMode(0664), modTime: time.Unix(1545311315, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x40, 0x63, 0xe1, 0x42, 0x60, 0x7, 0x1b, 0x79, 0x47, 0x1, 0xa1, 0xbf, 0xc4, 0x66, 0x19, 0x9b, 0x2b, 0x5a, 0x1f, 0x82, 0x3d, 0xcf, 0xee, 0xe7, 0x60, 0x25, 0x2c, 0x4f, 0x13, 0x97, 0xc7, 0x18}} return a, nil } @@ -252,7 +252,7 @@ func unigram_tracerJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "unigram_tracer.js", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + info := bindataFileInfo{name: "unigram_tracer.js", size: 1510, mode: os.FileMode(0664), modTime: time.Unix(1545311315, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0x36, 0x14, 0xc2, 0xf6, 0xc3, 0x80, 0x2b, 0x4a, 0x11, 0x7d, 0xd5, 0x3e, 0xef, 0x23, 0xb5, 0xd6, 0xe6, 0xe6, 0x5, 0x41, 0xf6, 0x14, 0x7a, 0x39, 0xf7, 0xf8, 0xac, 0x89, 0x8e, 0x43, 0xe6}} return a, nil } diff --git a/eth/tracers/internal/tracers/prestate_tracer.js b/eth/tracers/internal/tracers/prestate_tracer.js index 931de892e0..e0a22bf157 100644 --- a/eth/tracers/internal/tracers/prestate_tracer.js +++ b/eth/tracers/internal/tracers/prestate_tracer.js @@ -91,7 +91,8 @@ // stack: salt, size, offset, endowment var offset = log.stack.peek(1).valueOf() var size = log.stack.peek(2).valueOf() - this.lookupAccount(toContract2(from, log.stack.peek(3).toString(16), log.memory.slice(offset, size)), db); + var end = offset + size + this.lookupAccount(toContract2(from, log.stack.peek(3).toString(16), log.memory.slice(offset, end)), db); break; case "CALL": case "CALLCODE": case "DELEGATECALL": case "STATICCALL": this.lookupAccount(toAddress(log.stack.peek(1).toString(16)), db); diff --git a/eth/tracers/tracers_test.go b/eth/tracers/tracers_test.go index d25fc459a1..1d68400e5a 100644 --- a/eth/tracers/tracers_test.go +++ b/eth/tracers/tracers_test.go @@ -17,7 +17,10 @@ package tracers import ( + "crypto/ecdsa" + "crypto/rand" "encoding/json" + "fmt" "io/ioutil" "math/big" "path/filepath" @@ -31,7 +34,9 @@ import ( "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/tests" ) @@ -116,6 +121,83 @@ type callTracerTest struct { Result *callTrace `json:"result"` } +func TestPrestateTracerCreate2(t *testing.T) { + unsigned_tx := types.NewTransaction(1, common.HexToAddress("0x00000000000000000000000000000000deadbeef"), + new(big.Int), 5000000, big.NewInt(1), []byte{}) + + privateKeyECDSA, err := ecdsa.GenerateKey(crypto.S256(), rand.Reader) + if err != nil { + t.Fatalf("err %v", err) + } + signer := types.NewEIP155Signer(big.NewInt(1)) + tx, err := types.SignTx(unsigned_tx, signer, privateKeyECDSA) + if err != nil { + t.Fatalf("err %v", err) + } + /** + This comes from one of the test-vectors on the Skinny Create2 - EIP + + address 0x00000000000000000000000000000000deadbeef + salt 0x00000000000000000000000000000000000000000000000000000000cafebabe + init_code 0xdeadbeef + gas (assuming no mem expansion): 32006 + result: 0x60f3f640a8508fC6a86d45DF051962668E1e8AC7 + */ + origin, _ := signer.Sender(tx) + context := vm.Context{ + CanTransfer: core.CanTransfer, + Transfer: core.Transfer, + Origin: origin, + Coinbase: common.Address{}, + BlockNumber: new(big.Int).SetUint64(8000000), + Time: new(big.Int).SetUint64(5), + Difficulty: big.NewInt(0x30000), + GasLimit: uint64(6000000), + GasPrice: big.NewInt(1), + } + alloc := core.GenesisAlloc{} + // The code pushes 'deadbeef' into memory, then the other params, and calls CREATE2, then returns + // the address + alloc[common.HexToAddress("0x00000000000000000000000000000000deadbeef")] = core.GenesisAccount{ + Nonce: 1, + Code: hexutil.MustDecode("0x63deadbeef60005263cafebabe6004601c6000F560005260206000F3"), + Balance: big.NewInt(1), + } + alloc[origin] = core.GenesisAccount{ + Nonce: 1, + Code: []byte{}, + Balance: big.NewInt(500000000000000), + } + statedb := tests.MakePreState(ethdb.NewMemDatabase(), alloc) + // Create the tracer, the EVM environment and run it + tracer, err := New("prestateTracer") + if err != nil { + t.Fatalf("failed to create call tracer: %v", err) + } + evm := vm.NewEVM(context, statedb, params.MainnetChainConfig, vm.Config{Debug: true, Tracer: tracer}) + + msg, err := tx.AsMessage(signer) + if err != nil { + t.Fatalf("failed to prepare transaction for tracing: %v", err) + } + st := core.NewStateTransition(evm, msg, new(core.GasPool).AddGas(tx.Gas())) + if _, _, _, err = st.TransitionDb(); err != nil { + t.Fatalf("failed to execute transaction: %v", err) + } + // Retrieve the trace result and compare against the etalon + res, err := tracer.GetResult() + if err != nil { + t.Fatalf("failed to retrieve trace result: %v", err) + } + ret := make(map[string]interface{}) + if err := json.Unmarshal(res, &ret); err != nil { + t.Fatalf("failed to unmarshal trace result: %v", err) + } + if _, has := ret["0x60f3f640a8508fc6a86d45df051962668e1e8ac7"]; !has { + t.Fatalf("Expected 0x60f3f640a8508fc6a86d45df051962668e1e8ac7 in result") + } +} + // Iterates over all the input-output datasets in the tracer test harness and // runs the JavaScript tracers against them. func TestCallTracer(t *testing.T) { @@ -185,8 +267,9 @@ func TestCallTracer(t *testing.T) { if err := json.Unmarshal(res, ret); err != nil { t.Fatalf("failed to unmarshal trace result: %v", err) } + if !reflect.DeepEqual(ret, test.Result) { - t.Fatalf("trace mismatch: have %+v, want %+v", ret, test.Result) + t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", ret, test.Result) } }) }