I am trying to deploy a smart contract via Remix . Unfortunately, it fails with a very unhelpful error message.
creation of MyContract errored: Error encoding arguments: Error: invalid arrayify value (argument="value", value="", code=INVALID_ARGUMENT, version=bytes/5.5.0)
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);
}
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?
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".
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):
It works to input "[]" or "0x", what I understand the "data" which should has a format like "[xxx]", I suggest holders can update a description to clarify it. Thank you Petr answers this question.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.