gongbell / ContractFuzzer

The Ethereum Smart Contract Fuzzer for Security Vulnerability Detection (ASE 2018)
226 stars 85 forks source link

Cannot build nor download docker image #2

Closed ezulkosk closed 4 years ago

ezulkosk commented 5 years ago

When trying to build a docker image from source, it immediately fails due to an unknown dependency:

Sending build context to Docker daemon  3.105GB
Step 1/15 : FROM golang_nodejs:v1-ly
pull access denied for golang_nodejs, repository does not exist or may require 'docker login'

Is there a docker image that was not made public?

Further, the pre-built image hosted on Baidu is, as far as I can tell, not accessible to anyone without a Chinese phone number. Can this be hosted elsewhere?

zqzqz commented 5 years ago

The same error. Is it https://github.com/XBWer/SmartContract-Fuzzer for go_lang_nodejs:v1-ly? It seems the repo includes all chain data, tmp files, libraries and binaries, which causes a size of 3.4 GB for this repo. The large size troubles me a lot. No offense but I wonder whether the author really knows the usage of git. Look forward to a reorganization. I am really interested in this work. Thanks!

Danc2050 commented 5 years ago

Sorry, this will be a duplicate issue I filed here. Change the dockerfile on line 1 to the following:

FROM agendolabs/golang_nodejs

Zhongwenn commented 5 years ago

Same error here. Step 1/15 : FROM golang_nodejs:v1-ly

Danc2050 commented 5 years ago

Same error here. Step 1/15 : FROM golang_nodejs:v1-ly

@Zhongwenn If you change the line to what I mentioned above, it should work. There are still errors though.

Zhongwenn commented 5 years ago

@Danc2050 Thanks a lot. Changing the dockerfile did work. But I got another error. Do you have any ideas :)

Sending build context to Docker daemon  3.105GB
Step 1/15 : FROM agendolabs/golang_nodejs
latest: Pulling from agendolabs/golang_nodejs
...

 ---> 1cf8db368597
Step 14/15 : RUN   (cd go-ethereum && make geth)                                &&   (cd contract_fuzzer && source ./gopath.sh && cd ./src/ContractFuzzer/contractfuzzer && go build -o contract_fuzzer) &&   cp contract_fuzzer/src/ContractFuzzer/contractfuzzer/contract_fuzzer /usr/local/bin   &&   cp go-ethereum/build/bin/geth /usr/local/bin/                &&   apk del git  make gcc musl-dev linux-headers                 &&   rm -rf ./go-ethereum && rm -rf ./contract_fuzzer                 &&   rm -rf /var/cache/apk/*
 ---> Running in 0e960df60faf
/bin/sh: make: not found
The command '/bin/sh -c (cd go-ethereum && make geth)                                &&   (cd contract_fuzzer && source ./gopath.sh && cd ./src/ContractFuzzer/contractfuzzer && go build -o contract_fuzzer) &&   cp contract_fuzzer/src/ContractFuzzer/contractfuzzer/contract_fuzzer /usr/local/bin   &&   cp go-ethereum/build/bin/geth /usr/local/bin/                &&   apk del git  make gcc musl-dev linux-headers                 &&   rm -rf ./go-ethereum && rm -rf ./contract_fuzzer                 &&   rm -rf /var/cache/apk/*' returned a non-zero code: 127
Danc2050 commented 5 years ago

@Zhongwenn The Docker version they are using is alpine -- a minimal linux distribution. It does not normally have /bin/shell. To overcome this, add this line to line 20:

RUN apk add --update alpine-sdk && apk update.

Let me know if you get further -- this is where I am stuck :). I believe the next error will be something about "context" not being found... which is a library imported from Go. My thoughts on this: Thought: an outdated version of go exists in the go_ethereum package Solution?: Potentially, if one could get Go to be installed/updated in the docker file it would solve this issue?

Zhongwenn commented 5 years ago

@Danc2050 Finally, I succeeded. LoL. Here is what I've done.

1st, git pull to get the newest version. I noticed that a Dockerfile was updated a few days ago. 2nd, find a stable network connection. I failed a lot of times because my office network is not friendly to download libs. After I switched to another WiFi, things got better.

Let me know if you have further questions. Good luck :)

Danc2050 commented 5 years ago

@Zhongwenn Hoorah! Glad you found this out. Looks like I was right with regards to the Go thing, at least the solution part.

I am having an issue still though, if you have a moment to help. The command:docker build -t ContractFuzzer . is, I believe wrong, so I use the command docker build -t contract_fuzzer .. However, I get neverending g++ compilations with error messages about functions "falling through". I don't think this is a network issue... did this happen to you? I can post a picture if this is unclear.

imrash commented 5 years ago

@Danc2050 The same thing happened with me. But I let it run nevertheless. After about 20 minutes or so.. it finally worked.