BAC001 是一套区块链积分合约,可以积分相关的增发,销毁,暂停合约,黑白名单等权限控制。
-
description
此积分的具体描述
-
shortName
积分简称
-
minUnit
积分最小单位
-
totalAmount
积分总数量
-
发行
调用合约的 deploy 方法,传入你初始化的四个元素即可,即在区块链上发行了你指定总量和名称的积分。
- 其中 minUnit 和 totalAmount 不能为负数或小数
-
转账
调用 send 方法即可实现转账,之后调用 balance 方法可以查看自己的积分余额
-
增发
调用 issue 方法特定地址增发积分, 并可以通过 addIssuer 增加有权限增发积分的人,也可以通过renounceIssuer 方法移除增发权限
-
销毁
调用 destory 以及 destoryFrom 销毁自己地址下积分和特定地址下的积分
-
暂停
遇到紧急状况,你可以调用 suspend 方法,暂停合约,这样任何人都不能调用 send 函数。故障修复后,可以调用 unSuspend 方法解除暂停。也可以通过 addSuspender 和 renounceSuspender 相应增加和移除暂停者权限
// 示例中Alice和Bob都为一个外部账号地址。
// 部署合约,即初始化积分,示例初始化信息如下:
// 积分描述:car points
// 积分简称 TTT
// 最小转账单位 1
// 发行总量10000000
// 默认合约部署者为第一个发行者
BAC001 bac001 = BAC001.deploy(web3j, credentials,
contractGasProvider, "car points", "TTT", BigInteger.valueOf(1), BigInteger.valueOf(1000000)).send();
String contractAddress = bac001.getContractAddress();
// 增加积分发行者
bac001.addIssuer(Alice).send();
// 增发积分
bac001.issue(Alice, new BigInteger("10000"),"increase 10000 asset ").send();
// 积分转账,以及积分转账备注 Owner -> Alice
bac001.send(Alice,new BigInteger("10000"),"dinner Points").send();
// 查询积分余额
assertEquals( bac001.balance(Alice).send().toString(),"30000");
-
totalAmount()
返回积分总量
- 这里的积分总量需要计算最小转账单位,所以实际返回值为 totalAmount * 10minUnit
-
balance(address owner)
返回owner的帐户的积分余额
-
send(address to, uint256 value , string data)
将数量为value的积分转入地址 to 并触发 transfer 事件, data 是转账备注
- suspend 状态下无法进行此操作
- 请避免 to 为自身进行操作
-
sendFrom(address from,address to,uint256 value,string data))
将地址 from 中的 value 数量的积分转入地址 to ,并触发 transfer 事件,data 是转账备注。
-
方法的调用者可以不为 from, 此时需要预先进行 approve 授权
-
from 不能为调用者自身地址,否则会报错
-
suspend 状态下无法执行此操作
-
-
safeSendFrom(address from, address to, uint256 value, string data)
安全的将地址 from 中的 value 数量的积分转入地址 to ( to如果是合约地址,必须实现接收接口 BAC001Holder 才可以接收转账) ,并触发 transfer 事件,data 是转账备注
- suspend 状态下无法执行此操作
-
safeBatchSend( address[] to, uint256[] values, string data)
批量将自己账户下的积分转给 to 数组的地址, to 和 values 的个数要一致
- suspend 状态下无法执行此操作
-
approve(address spender,uint256 value)
允许 spender 从自己账户提取限额 value 的积分
- 此方法配合 sendfrom / safesendfrom 一起使用
- 重复授权时,最终授权额度为最后一次授权的值
-
allowance(address owner,address spender)
返回 spender 可从 owner 提取的积分数量上限
- 此方法配合 approve 一起使用
-
increaseAllowance(address spender, uint256 addedValue)
允许 spender 提取的积分上限在原有基础上增加 addedValue
- 此方法配合 approve 使用
-
decreaseAllowance(address spender, uint256 subtractedValue)
允许 spender 提取的积分上限在原有基础上减少 subtractedValue
- 此方法配合 approve 使用
-
minUnit()
积分最小单位
-
shortName()
积分简称
-
description()
积分描述
-
destory(uint256 value, string data)
减少自己的积分,data 是转账备注
- 调用时,value 值需要小于等于目前自己的积分总量
-
destroyFrom(address from, uint256 value, string data)
减少地址 from 积分,data 是转账备注
- 调用此方法时,需要配合 approve 进行使用
-
issue(address to, uint256 value,string data)
给地址 to 增加数量为 value 的积分,data 是转账备注
-
isIssuer(address account)
检查 account 是否有增加积分的权限
-
addIssuer(address account)
使地址 account 拥有增加积分的权限
-
renounceIssuer()
移除增加积分的权限
-
suspend()
暂停合约
- suspend 后无法进行 send / safesendfrom / sendfrom / safeBatchSend / approves 操作
-
unSuspend()
重启合约
-
suspended
判断合约是否处于暂停状态
-
isSuspender(address account)
是否有暂停合约权限
- 配合 suspend 方法一起使用
-
addSuspender(address account)
增加暂停权限者
- 配合 suspend 方法一起使用
-
renounceSuspender()
移除暂停权限
- 配合 suspend / addSuspender 方法使用