【李先生带你玩 CITA】聊聊 CITA 的配置

前几天有朋友在 talk 中提问 如何给生产环境初始化链 。生产环境是一个复杂的场景集合,没办法给出一个统一标准的答案,更多的是 case by case 分析,根据每个特殊的场景以及今后的扩展需求(其实包括很多方面,如性能、联盟的组织形态、业务的可靠性要求等等,一些看似不相关的点,都会影响到配置的选择)来确定。

由于我没有办法知道您具体的设计要求,在这里只能粗略聊聊 CITA 的配置。如果您愿意公开你的业务场景,也可以发到 talk 上,我们会给具体的建议;如果您不愿意公开你的业务场景,但又想知道更具体的建议,不防聊系我们的商务,以线下洽谈的方式将业务场景告诉我们,我们也可以给到你一些具本的建议。

CITA 的配置介绍

CITA 的配置分为三类:

  • 算法配置
  • 链级配置
  • 微服务配置

算法配置 是指选项不同的 签名算法 + 哈希算法 ,这两者在区块链系统里是很重要的,它将决定系统上的帐户体系。不同算法具有不同的账户体系,所以不同算法是不能混用的,也不可以在过程中变换。CITA 在当前在每次版本发布时,都会同时发布三个版本:

  • secp256k1_sha3
  • sm2_sm3
  • ed25519_blake2b

其本质便是算法的不同。

链级配置 ,指的是配置 属性。请注意, 是由许多节点组成的,一旦配置,将会影响到所有节点。如链的名称、超级管理员、是否有 token 等,这些在 链级配置 里有详细的说明,我不再重复。我这里想说的是,有些配置是必须在链创建时就给好的,链创建后不可更改,有些是在链创建后是很难更改的,而另外一些则较易做出更改。下面我就尝试做些归类 (可能不一定全面,后续如果碰到不准确的地方我会持续更新),供参考。

  • 链创建后可更改的配置:
    这里说可更改,指的是可以我们推荐能修改的项,它们不能对链的运行造成任何的风险,并且在 cita-cli 工具中提供相应的更改接口。

    • chainName:链名
    • operator:运营者
    • website:链对应用的相关网站
  • 链创建后不可更改类配置:

    • economicalModel:经济模式选择,是否需要在链上使用 CITA 的原生代币系统。这个选项一旦选择将不可更改。与其相关的下列选项,只有在 charge 模式下才有意义。

      • name:Token 名称
      • symbol :Token 符号
      • avatar :Token 图标链接
      • quotaPrice:配额价格
      • checkFeeBackPlatform:出块激励选择开关,默认为 false,表示返回给共识节点,为 true 时返回给运营方地址( chainOwner )
      • chainOwner:运营方地址,结合 checkFeeBackPlatform 一块使用
      • init_token:链的原生 token 数量
    • 权限系统开关相关配置

      • checkCallPermission : 合约调用权限检查开关
      • checkSendTxPermission : 发送交易权限检查开关
      • checkCreateContractPermission : 创建合约权限检查开关
      • checkQuota : 账户配额限制检查开关
    • autoExec:自动执行开关(默认:false),所谓自动执行,是指在每次出块的时候都自动去执行一个由你注册的一个合约,相当于一个出块的 hook。

  • 链创建后很难更改项
    剩下的都是很难更改的项,我们不推荐更改,更改后有一定的风险。并且没有提供专门的修改接口,需要你在熟悉区块链数据存储的情况下,使用 数据订正 的方式修改。

服务微配置,为节点内的配置,这些配置只能对一个区块链节点有效。所以,更改相对比较安全,不会直接影响链的运行(如果链的节点个数在 4 个及以上的话)。服务微配置详见 文档说明

CITA 的配置选择方式

  • 算法配置,选项对应的 CITA 发布包。
  • 链级配置,创建链时 或 发送交易。
  • 微服务配置,创建链时(大部分是默认配置) 或 直接修改对应微服务的配置文件。

其它

在生产环境中。首先需要选择对应的算法:

  • secp256k1_sha3:性能最好,如没有特殊要求,可以选择这个算法。
  • sm2_sm3:我们知道有些应用领域是必须使用国密算法的,如果你正好处在对应的应用场景,请选择这个算法。
  • ed25519_blake2b:根我所知,目前选择这个算法的用户很少,暂时不推荐。

其次,决定是否采用原生代币。使用原生代币,可以使你的系统有比较丰富的激励模式,但同时可能也会提高潜在用户的使用门槛。

再次,决定好链的配置项,特别是不可更改项,一定要想清楚,为了降低后续链的运行风险,最好不要去变更难更改项。另外需要提醒的是,所有链级配置的更改都是有链上记录的,也就是所有变更都会被盟联成员看到或者被你的用户看到。

最后,强烈建议选择通信加密,我在下面的分享中有说明过这个问题:

上一篇 : CITA 的账户与数字签名
下一篇 : 【李先生带你玩 CITA】数据隐私中的密码学概念

1赞