abi 是不是都应该部署到链上?

原先以为部署合约会自动把 abi 也部署上去,后来发现两者是可以分开的。那部署 abi 与否的目的是什么呢?
现在我直观的感受上是在 microscope 的 contract 页面会出现 contract panel,然后在里面可以 call 方法。

我能想到的有:

  1. 作为在链上提供智能合适库的用户,他除了发布合约地址之外,还将其合约对应的 ABI 部署上去;那么对于他的用户来说,就可以直接从链上获得合约提供的 ABI 进行调用。

  2. 在 Microscope 上的 Data 区可以看到交易参数解析后的结果。你可以看一下下面的这个 talk:
    上链数据怎么在浏览器显示

  3. 放到链上,不容易丢失或者所发布的 ABI 与所部署智能合能不对应的情况。