选择经济模型
什么是 Quota?
CITA 作为面向企业的高性能区块链内核,拥有支持智能合约的虚拟机,用户发送交易(转账,调用合约,部署合约)中的每个运算都会消耗一定的资源,这里消耗的资源用 Quota 作为单位来计数。
选择适合的经济模型
为了对链上有限的计算资源进行管理和控制,我们需要对链的经济模型进行设计。实际的业务场景中普遍存在链运营方(发起链,维护浏览器等链的生态)、记账人(矿工,提供计算资源)、用户(消耗链上计算资源)等参与方角色。其中运营方、记账人可能由同一方承担,也可能是有独立利益诉求的不同参与方。CITA 作为一个通用的区块链内核,提供了诸多配置参数,让用户可以根据自己的业务场景进行定制经济模型。概括来说可以分为两种模式:
Quota 模式
无代币的模式,系统默认模式。系统仅对用户交易消耗的资源进行统计。
- 参数设置。通过设置 Quota Limit,系统可以对区块内交易总体消耗的资源进行限制,也可以对单个账户设定一个块内交易资源消耗的限制。详细内容与操作参见 Quota 模式。
- 场景举例:
- 几个企业组成一个联盟运行区块链,每一个成员既是“矿工”(维护区块链账本),又是用户(消耗计算资源)。矿工“无偿”工作,旨在维护系统稳定。这种场景可以选择 Quota 模式。
Charge 模式
有代币的模式,链上发行原生代币。系统先对用户交易消耗的资源进行统计 (quotaUsed),并换算为原生代币对用户进行收费。收取的费用有多种灵活的分配方式,方便用户根据业务场景进行定制。
- 参数设置。与 Quota 模式一样,charge 模式也可以通过设置 Quota Limit,对区块内交易总体消耗的资源进行限制,对账户的单次交易设定资源消耗的限制。并且可以灵活的设置代币总量和分发方式。在链的运行过程中,还可以通过通过设置 QuotaPrice 对手续费进行调控。详细内容与操作参见 Charge 模式。
- 场景举例:
- 场景一:矿工和用户分属不同的参与方
- 运营方提供运营、宣传、推广工作并发行 Token,并作为矿工(维护账本)收取手续费。
- 用户购买 Token,使用区块链平台。用户发起交易支付 Token 作为手续费。
- 场景二:运营方,矿工、用户分属不同的参与方
- 运营方提供运营、宣传、推广工作并发行 Token。
- 用户购买 Token,使用区块链平台。用户发起交易支付 Token 作为手续费。
- 矿工维护分布式账本,获取手续费,运营方回购或者用户购买,以实现价值流转。
- 场景一:矿工和用户分属不同的参与方
起链前对链进行配置
在对链进行初始化配置时,需要对这两种经济模型进行选择,我们在链级配置文档中可以看到,SysConfig.economicalModel
字段中:economicalModel = 0
表示 Quota 模型;economicalModel = 1
表示 Charge 模型。链一旦启动,经济模型的选择将不可以更改。如果选择了 Charge 模式,代币的总量也需要在起链前设置好,具体操作可以参考代币总量设置。
选择经济模型的示例操作:
以下命令生成一条包含四个节点的新链,经济模型默认为
Quota
, 端口默认 4000、4001、4002、4003,默认超级管理员,所有权限控制关闭。$ ./bin/cita create --super_admin "0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523" --nodes "127.0.0.1:4000,127.0.0.1:4001,127.0.0.1:4002,127.0.0.1:4003"
以下命令生成一条包含四个节点的新链,经济模型为 Charge,端口默认 4000、4001、4002、4003,默认超级管理员, 所有权限控制关闭。
$ ./bin/cita create --super_admin "0x4b5ae4567ad5d9fb92bc9afd6a657e6fa13a2523" --nodes "127.0.0.1:4000,127.0.0.1:4001,127.0.0.1:4002,127.0.0.1:4003" --contract_argument SysConfig.economicalModel=1
链启动后,你可以通过设置 Quota Limit 来对账户或者区块消耗的链上计算资源进行限制,详情请参考设置 Quota Limit。
如果选择了 Charge 模式,你可以定制代币的发行总量和发行模式,也可以通过设置 gasPrice 对手续费进行调控,详情请参考 Charge 模式。