# 智能合约手续费介绍

GXChain中,部署合约、更新合约、调用合约会产生不同数额的手续费。本篇文档对智能合约相关的手续费进行说明。

# 部署合约手续费

部署合约手续费由调用者支付,支付的手续费计算方式如下:

// base_fee为0.01GXC,contract_size为合约大小,price_per_kbyte为1kb ram的费用,当前为0.2GXC
fee = base_fee + contract_size / 1024 * price_per_kbyte

# 更新合约手续费

更新合约手续费由调用者支付,支付的手续费计算方式如下:

// base_fee为0.01GXC,contract_size为合约大小,price_per_kbyte为1kb ram的费用,当前为0.2GXC
fee = base_fee + new_contract_size / 1024 * price_per_kbyte

# 调用合约手续费

调用合约是免费的,但是在调用时会产生手续费,手续费共包含三部分,ram_fee、cpu_fee和base_fee,之后会进行返还。

  • ram_fee

在合约的table中创建或修改对象时产生,ram_fee可以指定关联账户来支付。ram_fee的计算方式:

// ram_bytes为占用的内存字节数,price_per_kbyte_ram为1kb ram的费用,当前为0.2GXC
ram_fee = ram_bytes / 1024 * price_per_kbyte_ram 
ram_fee payer 说明
0 合约账户自身(同_slef)
_self 合约账户自身(同0)
sender 合约调用账户
original 合约原始调用账户,跨合约调用中,为起始调用账户

ram_fee的返还:删除table中的对象后,会立即将创建时消耗的手续费返还给该内存所属payer。

  • cpu_fee

cpu_fee当前单价为0

  • base_fee

调用合约除了使用cpu_fee和ram_fee之外,基础手续费为0.001GXC。

base_fee的返还:调用合约产生的基本手续费,会返还到用户的待解冻余额,需要用户手工领取。

调用智能合约手续费计算方式为:

// base_fee为0.001GXC,ram_fee根据payer和所占内存来计算,cpu_fee为0
fee = base_fee + ram_fee + cpu_fee