Troubleshooting Docker Image
General troubleshooting while working with the docker image and individual tools inside of the image.
Smart Contract Debugging
If you are unable to determinne what the issue is inside of a smart contract we suggest the following methods.
Rubber Ducky Debugging
- Step through your code one at a time and read it back to yourself out loud.
- Ensure that it makes as much sense as possible as you read it out loud.
- Usually during the explanation page you can figure out where your error may be.
Cave Man Debugging
- Add various
eosio::print
statements inside of your smart contract. - Print out every step of the way to help figure out where your smart contract may be failing.
Test Based Debugging
- Using the
ultratest
framework inside of the Docker image, you can write your own tests for a smart contract. - This is very useful for debugging a smart contract that can already compile.
Container is not starting
Bind for 0.0.0.0:9876 failed: port is already allocated
Solution(s)
Make sure there are no processes listening to ports 8888
and 9876
. They're used by the container. To find the pid of the process listening to PORT
on linux run sudo lsof -i | grep PORT
, on windows - netstat -ano | findStr "PORT"
.
Compiling smart contracts
error 2022-03-16T09:23:47.545 cleos main.cpp:3985 main ] Failed with error: Assert Exception (10)
!action_type.empty(): Unknown action <action_name> in contract hello
Solution(s)
Make sure the <action_name>
is inside the abi file. If not check that it's marked with an [[eosio::action]]
compiler attribute.
Transaction Exceeding CPU Limit
Error 3080002: transaction exceeded the current network usage limit imposed on the transaction
Solution(s)
- Improve the efficiency of your smart contract
- Attempt to deploy the transaction multiple times
- Find an HTTP endpoint for Testnet / Mainnet deployment that is very close to your network
- Change transaction CPU Limits (Only applies to own networks)
Authorization Error
Provided keys, permissions, and delays do not satisfy declared authorizations
Solution(s)
Revolves around specific private keys not currently available in your wallet that match the account permissions.
No ABI or WASM Files
Error 3160010: No abi file found
Error 3160009: No wasm file found
Solution(s)
During the compilation of the smart contract it may not have compiled correctly. Try reviewing the compilation process and ensure that there are no additional errors showing inside of the console.
Out of ram error
Reading WASM from /Users/shankar/contracts/hello/hello.wasm...
Publishing contract...
Error 3080001: Account using more than allotted RAM usage
Error Details:
account youraccname1 has insufficient ram; needs 25588 bytes has 9547 bytes
The state of a contract, along with the code and ABI are stored in a in-memory database. Your storage quota is calculated based on the RAM resource.
Solution(s)
- Buy more ram using
buyram
action of the system contract - Reduce your code size by not relying on 3rdparty libraries