请问下 cita中合约生命周期是否存在升级的情况、如何判断账户是合约账户还是外部账户、账户和合约问题

我这边有三个问题,麻烦了
1.合约的升级问题
问题描述:我看了cita的官方文档,没有看到关于合约升级相关的问题,想确认下是否存在合约升级的情况,如果存在,如何判断合约是升级的
2.合约账户和外部账户
问题描述:通过系统合约接口–getAccounts 能够查到组下面的账户,但是如何判断账户是合约账户还是外部账户,文档没有看到相关接口,请问下有没有接口判断。
3.账户和合约之间的关系
问题描述:在账户下如何获知已经部署了哪些合约?

  1. 合约升级现在一般是用的proxy的方式。参见 在CITA上如何升级智能合约?有无最佳实践 如何判断合约是否升级过,要看这个proxy合约有没有保留相关的信息。
  2. 区分外部帐号和合约帐号,可以用 https://docs.citahub.com/zh-CN/cita/rpc-guide/rpc#getcode 通过返回值来区分,外部帐号没有代码,会返回空的结果。
  3. 简单粗暴的方式就是把所有的交易都过滤一遍,找到特定账户发送的所有的交易。部署合约的交易有别于普通交易,它的to字段是空的,可以用这个过滤。在区块链浏览器里有相应的功能 https://docs.citahub.com/zh-CN/toolchain/microscope/microscope-intro 如果是想要编程接口的话,可以看看 https://docs.citahub.com/zh-CN/toolchain/rebirth/rebirth-intro