made UniversalResolver significantly more stable in it's return values
BatchGateway's errors are now documented within solidity. HTTP errors now use HttpError(tuple(uint16 status, string message)[]) to differentiate them from regular solidity errors.
single data resolve (resolve(bytes,bytes)/etc) calls will now revert if the call was unsuccessful, rather than just returning the error data.
errors from the name's resolver are propagated by being wrapped with ResolverError(bytes). this makes it easier to identify when an error is coming from the UniversalResolver itself, or an external resolver.
batchgateway HTTP errors are propagated directly via HttpError(tuple(uint16 status, string message)[])
batch data results from resolve are now tuple(bool success, bytes returnData), rather than just bytes
added ResolverNotContract error for if a name's resolver is not a contract
external resolver calls are now all checked for safety via ERC165's supportsInterface
this is to avoid situations where in older versions of solidity, reverts would use all the remaining gas for a call
this was already implemented for extended resolver capability, but now applies to all calls (excl. callbacks)
unsafe calls will still be attempted with a maximum of 50k gas
changes:
UniversalResolver
significantly more stable in it's return valuesBatchGateway
's errors are now documented within solidity. HTTP errors now useHttpError(tuple(uint16 status, string message)[])
to differentiate them from regular solidity errors.resolve
(resolve(bytes,bytes)
/etc) calls will now revert if the call was unsuccessful, rather than just returning the error data.ResolverError(bytes)
. this makes it easier to identify when an error is coming from the UniversalResolver itself, or an external resolver.HttpError(tuple(uint16 status, string message)[])
resolve
are nowtuple(bool success, bytes returnData)
, rather than justbytes
ResolverNotContract
error for if a name's resolver is not a contractsupportsInterface