[Ethereum] How to check if a bytes32 represents an empty string

bytes32soliditytesting

Why does the require not throw here when I am passing an empty string for the _name param?

function MyContract(bytes32 _name) public {
        require(_name.length > 0);
        name = _name;
    }

Best Answer

The bytes32 type is always exactly 32 bytes. Therefore, its length is always 32. It is unaware of whether it contains a string, number or something else.

I would recommend doing:

require(_name[0] != 0);

to verify that it does not represent an empty string.

Related Topic