Problem

I am trying to deploy a smart contract via Remix. Unfortunately, it fails with a very unhelpful error message.

Error Message

creation of MyContract errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="", code=INVALID_ARGUMENT, version=bytes/5.5.0)

Code

Here is the constructor the contract uses:

struct RRSet { uint32 inception; uint32 expiration; bytes20 hash; } constructor(bytes memory _anchors) { // Insert the 'trust anchors' - the key hashes that start the chain // of trust for all other records. anchors = _anchors; rrsets[keccak256(hex"00")][DNSTYPE_DS] = RRSet({ inception: uint32(0), expiration: uint32(3767581600), // May 22 2089 - the latest date we can encode as of writing this hash: bytes20(keccak256(anchors)) }); emit RRSetUpdated(hex"00", anchors); } 

Some thoughts

My contract uses is to inherit from an abstract contract as wells as from a regular contract. Is there a way to see where to error or originates from or is there a possiblity to debug it?

2

1 Answer

The constructor takes a byte array as an argument.

When you pass an empty value, it results in the error message mentioned in your question. It's because you're effectively passing "no value" - not "empty byte array".

empty value

creation of MyContract errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="", code=INVALID_ARGUMENT, version=bytes/5.5.0)

If you want to pass an empty byte array, you need to use the [] or 0x expression (both options work):

empty array

empty array

0

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.