BSN-DDC 合约研究02---计费合约

计费合约包括的文件:ICharge.sol, Charge.sol。
计费合约用于对参与 DDC 业务中的各方的链上账户进行统一管理,其中包括
    计费规则的定义
    各种类型账户按照计费规则调用DDC合约所扣除的DDC业务费。
各参与方的链上账户类型包含以下:
1. 运营方:运营方在计费合约中所对应的账户。
2. 平台方:平台方在计费合约中所对应的账户。
3. 普通用户:普通用户在计费合约中所对应的账户,每个普通用户只能所属于一个平台方
1 BSN的数据结构
 uint256 private _total;
    // Mapping from ddc address to function fee 合约地址--函数数据
    mapping(address => FuncFee) private _ddcFees;
// 函数签名--执行费用
    struct FuncFee {
        mapping(bytes4 => uint32) funcFee;
        bool used;
    }
    // Mapping from ddc address to account balances
    mapping(address => uint256) private _balances;
本质上是一个2层map映射: map(contract,  map(bytes4, fee) ),附带启用开关used。    
功能分析
合约中的关键函数mint、burn、 transfer执行时需要支付一笔交易费用,这就是DDC铸造NFT收费的根源。
2.1 充值、查询余额
(1)充值,recharge:
运营方、平台方用该 API 将账户的 DDC 业务费充值给下级用户。
业务规则
 运营方可以充值给平台方以及终端用户;
 平台方可以充值所属自己平台的用户,不可以充值给其他平台方以及
其他平台方所属的用户;
 用户不能调用该方法充值给任何账户;
 业务场景
 平台方在运营方处充值,运营方调用充值 API 给平台方充值;
 用户在某平台方充值,平台方调用充值 API 给该用户充值;
(2) 运营账户充值,selfRecharge
在业务费总量不足以满足当前业务时,运营方可以充值业务费总量。
只允许给运营方账户充值业务费总量;
(3) 链账户余额查询 balanceOf
运营方、平台方或终端用户通过该 API 可以查询某一个用户的 DDC 业务 费余额。
DDC 业务费计费规则查询
2.2 DDC 业务费计费规则
(4) 设置 DDC 业务费计费规则, setFee
运营账户调用该 API 授权设置 DDC 合约收费标准,如果已经设置过计费, 将会覆盖原有的计费规则。并且表示该 DDC 合约为授权合约,可以调用计费 合约对调用者扣除费用。
(5)删除 DDC 业务费计费规则,delFee
运营方调用该接口删除设置的 DDC 合约计费规则,即便是删除了全部的 计费规则也不表示不再授权 DDC 业务主代理合约。
(6)删除 DDC 业务主合约授权,delDDC
运营方调用该接口删除 DDC 合约,表示该 DDC 合约不在被授权管理, 同时也会删除该合约调用计费合约扣费的权限以及在计费合约中设置的计费 规则。
(7)查询DDC 业务费计费规则,queryFee
运营方、平台方或终端用户可以查询某一个 DDC 合约的各个 API 的费用。
(8)查询业务费总量, totalSupply
运营方可以查询计费合约的链上的业务费总量。
2.3 DDC 合约结算, settlement
运营账户调用该合约方法,对授权的 DDC 业务主代理合约账户发起结算。

你可能感兴趣的:(BSN-DDC数藏合约研究,区块链,智能合约)