1.原子性
若require走不下去,就会回滚,x += 1 就不会实现。
2.require:
如果不满足msg.sender == owner 这个条件,就会报 Not owner这个错误
如果,require抛出的自定义信息很长的话,就会很消耗gas。
推荐这种抛出错误的方式,消耗的gas比较少
3.try catch
当出现调用外部函数异常时,又不想中断程序,就采用try catch方法。
out of gas 错误部署程序异常,错误不能捕获
error是四字节选择器,所以走的是errBytes这个分支
若是require,就走errMsg这条分支
4.部署合约
new出一个二进制的字节码信息
最小代理合约:认证便利,gas消耗少
最小代理合约在需要合约升级、节省gas费用、访问控制、跨合约调用和增加安全性的场景中非常有用。
create2 提前确定地址