FIBOS.JS
FIBOS 和 EOSIO 区块链的通用库。
Basic
在区块链中对用户账户信息操作的各种方法
获取客户端实例
以链接到测试网为例
1 | var FIBOS = require('fibos.js'); |
getInfo
获取区块信息
1 | fibos_client.getInfo(); |
示例
同步:
1 | var getInfo = fibos_client.getInfoSync(); |
异步:
1 | fibos_client.getInfo().then(getInfo => { |
返回值
1 | { |
返回值参数说明
server_version: text 服务端版本
chain_id:string 区块链的链地址
head_block_num: number 当前区块高度
last_irreversible_block_num: number 不可逆区块高度
last_irreversible_block_id: string 不可逆区块地址
head_block_id: string 当前区块地址
head_block_time: date 当前区块时间
head_block_producer: string 当前区块进程
virtual_block_cpu_limit: number 虚拟区块 cpu 限制
virtual_block_net_limit: number 虚拟区块网络限制
block_cpu_limit: number 区块 cpu 限制
block_net_limit: number 区块网络限制
server_version_string: string 服务端版本字符表示
getBlock
获取块信息
1 | fibos_client.getBlock(block_number); |
参数
- block_number: int 块的高度
示例
同步:
1 | var getBlock = fibos_client.getBlockSync(1); |
异步:
1 | fibos_client.getBlock(1).then(getInfo => { |
返回值
1 | { |
getTableRows
返回指定表中的数据
1 | fibos_client.getTableRows(json, code, scope, table); |
参数
- json: boolean 是否明文展示
- code:string 合约名
- scope: string FIBOS 账户名
- table: string 表名
示例
同步:
1 | var rs = fibos_client.getTableRowsSync(true, '合约名', '你的 FIBOS 账户名', 'accounts'); |
异步:
1 | fibos_client.getTableRows(true, '合约名', '你的 FIBOS 账户名', 'accounts').then(rs=>{ |
contract
调用合约
1 | fibos_client.contract(contract_name); |
参数
- contract_name: string 合约名
示例
同步:
1 | //初始化 fibos 客户端 |
异步:
1 | //初始化 fibos 客户端 |
ecc 模块
椭圆曲线加密函数,内置多个方法用来生成我们需要的秘钥
unsafeRandomKey()
生成不安全的测试私钥
1 | fibos.modules.ecc.unsafeRandomKey(); |
返回值
- 同步: String
- 异步: Promise
返回一个测试私钥
示例
同步:
1 | var privateKey = fibos.modules.ecc.unsafeRandomKeySync(); |
异步:
1 | fibos.modules.ecc.unsafeRandomKey().then(unsaferandomkey=>{ |
randomKey()
生成随机私钥
1 | fibos.modules.ecc.randomKey(); |
返回值
- 同步: String
- 异步: Promise
返回一个随机私钥
示例
同步:
1 | var randomKey=fibos.modules.ecc.randomKeySync(); |
异步:
1 | fibos.modules.ecc.randomKey().then(randomKey=>{ |
seedPrivate()
同一种子每次都产生相同的私钥,使用至少 128 个随机位来产生一个安全的私钥。
1 | ecc.seedPrivate(seed); |
参数
- seed: string 任意长度的字符串。
返回值
- 同步: String
- 异步: Promise
返回私钥
示例
同步:
1 | var seedPrivate=fibos.modules.ecc.seedPrivateSync(seed);//任意字符串 |
异步:
1 | fibos.modules.ecc.seedPrivate(seed).then(seedprivate=>{ |
privateToPublic()
通过私钥信息来计算公钥信息
1 | fibos.modules.ecc.privateToPublic(PrivateKey); |
参数
- PrivateKey :PrivateKey 私钥
- pubkey_prefix: string 公钥前缀(可选,默认
'EOS'
)
返回值
- 同步: String
- 异步: Promise
返回公钥
示例
同步:
1 | var privateToPublic=fibos.modules.ecc.privateToPublicSync(PrivateKey);//私钥 |
异步:
1 | fibos.modules.ecc.privateToPublic(PrivateKey).then(privatetopublic={ |
isValidPublic()
判断公钥是否有效
1 | fibos.modules.ecc.isValidPublic(pubkey); |
参数
- pubkey: pubkey 公钥
- pubkey_prefix: string 公钥前缀(可选,默认
'EOS'
)
返回值
- 同步: boolean
- 异步: Promise
判断公钥是否有效
示例
同步:
1 | var isValidPublic =fibos.modules.ecc.isValidPublicSync(pubkey);//公钥 |
异步:
1 | fibos.modules.ecc.isValidPublic(pubkey).then(isvalidpublic=>{ |
isValidPrivate()
判断私钥是否有效
1 | fibos.modules.ecc.isValidPrivate(wif); |
参数
wif: PrivateKey 私钥
返回值
- 同步: boolean
- 异步: Promise
判断是否有效
示例
同步:
1 | var isValidPrivate=fibos.modules.ecc.isValidPrivateSync(wif);//私钥 |
异步:
1 | fibos.modules.ecc.isValidPrivate(wif).then(isvalidprivate=>{ |
sign()
使用 data 信息或 hash 来创建签名
1 | fibos.modules.ecc.sign(data,PrivateKey); |
参数
- data: 字符串 缓冲区
- PrivateKey: PrivateKey 私钥
- encoding: string 数据编码(可选,默认
'utf8'
)
返回值
- 同步: string
- 异步: Promise
字符串签名
示例
同步:
1 | var sign = fibos.modules.ecc.signSync(data,PrivateKey);//字符串和私钥 |
异步:
1 | fibos.modules.ecc.sign(data,PrivateKey).then(sign=>{//字符串和私钥 |
signHash()
使用进行 hash 加密的 data 信息和私钥来创建签名
1 | fibos.modules.ecc.signHash(dataSha256,PrivateKe); |
参数
- dataSha256: string | buffer sha256 hash 32 字节缓冲区或字符串
- privateKey: PrivateKey 私钥
- encoding: string dataSha256 编码(如果是字符串)(可选,默认
'hex'
)
返回值
同步: string
异步: Promise
带有 hash 加密的字符串签名
示例
同步:
1 | var signHash = fibos.modules.ecc.signHashSync(dataSha256,PrivateKe);//hash加密字符串和私钥 |
异步:
1 | fibos.modules.ecc.signHash(dataSha256,PrivateKe).then(signhash=>{//hash加密字符串和私钥 |
verify()
验证签名数据
1 | fibos.modules.ecc.verify(signature,data,pubkey); |
参数
- signature: string | buffer 缓冲区或十六进制字符串
- data: string | buffer 字符串数据
- pubkey: pubkey | PublicKey 公钥
返回值
- 同步: boolean
- 异步: Promise
判断签名数据是否成立
示例
同步:
1 | var verify = fibos.modules.ecc.verifySync(signature, data, pubkey);//签名,字符串,公钥 |
异步:
1 | fibos.modules.ecc.verify(signature, data, pubkey).then(verify=>{//签名,字符串,公钥 |
verifyHash()
验证签名数据hash
1 | fibos.modules.ecc.verifyHash(signature, hashData, pubkey); |
参数
- signature: string | buffer 缓冲区或十六进制字符串
- hashData: boolean|sha256 哈希数据(可选,默认
true
) - pubkey: pubkey | PublicKey 公钥
- encoding: string encoding(可选,默认
'utf8'
)
返回值
- 同步: boolean
- 异步: Promise
判断是否成立
示例
同步:
1 | fibos.modules.ecc.verifyHash(signature, sha256, pubkey);//签名, hash 字符串,公钥 |
异步:
1 | fibos.modules.ecc.verifyHash(signature, sha256, pubkey).then(verifyhash=>{//签名, hash 字符串,公钥 |
recover()
恢复用于创建签名的公钥
1 | fibos.modules.ecc.recover(signature, data); |
参数
- signature: string | buffer(EOSbase58sig ..,Hex,Buffer)
- data: string | buffer 完整数据
- encoding: string 数据编码(如果数据是字符串)(可选,默认
'utf8'
)
返回值
- 同步: string
异步: Promise
返回公钥
示例
同步:
1 | var recover = fibos.modules.ecc.recoverSync(signature, data);//签名,数据 |
异步:
1 | fibos.modules.ecc.recover(signature, 'I am alive').then(recover=>{//签名,数据 |
recoverHash()
恢复用于创建 hash 签名的公钥
1 | fibos.modules.ecc.recoverHash(signature,dataSha256); |
参数
- signature: string | buffer(EOSbase58sig ..,Hex,Buffer)
- dataSha256: string | buffer sha256 散列 32 字节缓冲区或十六进制字符串
- encoding: string |dataSha256 编码(如果 dataSha256 是字符串)(可选,默认
'hex'
)
返回值
- 同步: string
- 异步: Promise
返回一个公钥
示例
同步:
1 | var recoverHash = fibos.modules.ecc.recoverHash(signature,dataSha256 );//签名, hash 字符串 |
异步:
1 | fibos.modules.ecc.recoverHash(signature, dataSha256).then(recover_hash => {//签名, hash 字符串 |
sha256()
sha256 加密
1 | fibos.modules.ecc.sha256(data); |
参数
- data: string | buffer 二进制数据,需要 Buffer.from(data,’hex’)
- resultEncoding: string (可选,默认
'hex'
) - encoding: string 结果编码成 ‘hex’,’binary’ 或 ‘base64’(可选,默认
'hex'
)
返回值
- 同步: string | buffer
- 异步: Promise
使用 hash.sha256 加密后的数据
示例
同步:
1 | var sha256 = fibos.modules.ecc.sha256(data);//字符串 |
异步:
1 | fibos.modules.ecc.sha256(data).then(recover_hash => { |
System Contract
newaccount
创建一个新的 FIBOS 账户
1 | fibos_client.newaccount({ |
参数
- creator: string 创建者的账户名
- name: string 被创建者的账户名
- owner: string 被创建者账户 owner 权限公钥
- active: string 被创建者 active 权限公钥
示例
同步:
1 | fibos_client.newaccountSync({ |
异步:
1 | fibos_client.newaccount({ |
getAccount
获取账户信息
1 | fibos_client.getAccount(account_name); |
参数
- account_name: string 需要获取的账户名
示例
同步:
1 | var getAccount = fibos.getAccountSync("Account Name");//账户名 |
异步:
1 | fibos_client.getAccount("Account Name").then(getAccount => {//账户名 |
返回值
1 | { |
buyrambytes
创建者调用该方法为被创建者购买内存来存放新账户的信息
1 | fibos_client.buyrambytes({ |
参数
payer:string 创建者的账户名
receiver: string 被创建者的账户名
bytes: number 消耗的内存大小(字节)
示例
1 | fibos_client.buyrambytes({ |
delegatebw
抵押代币获取 cpu 和带宽资源
1 | fibos_client.delegatebw({ |
参数
from: string 抵押方的账户名
receiver: string 资源接收方的账户名
stake_net_quantity: string 创建者为被创建者抵押FO获取NET
stake_cpu_quantity: string 创建者为被创建者抵押FO获取CPU
transfer: number 通常用1 代表替别人抵押 FO 获取资源,如果你想要自己获取资源需要将其改为0
示例
1 | fibos_client.delegatebw({ |
Token Contract
在 FIBOS 中有两种通证:经典通证和智能通证
transfer
配置好 EOS MainNet 和 EOS RPC 地址 和 EOS 私钥后,便初始化了一个 eos 客户端,通过调用 transferSync
方法,实现转账操作
1 | ctx.transfer(from, to, quantity, memo, { |
参数
- form: string 转出方
- to: string 转入方
- quantity: number 数量 1.0000 EOS
- memo: string 备注
- authorization: string 授权
示例
同步:
1 | let r = ctx.transferSync('FROM Account Name', 'fiboscouncil', '11 FO', 'transfer 11 FO FROM xxx to xxx', { |
异步:
1 | ctx.transfer('FROM Account Name', 'fiboscouncil', '11 FO', 'transfer 11 FO FROM xxx to xxx', { |
exchange
在 FIBOS 使用 Bancor 进行通证之间兑换
1 | ctx.exchange(owner, quantity, tosym, memo, { |
参数
- owner: string 兑换账号名
- quantity: number 兑换通证数量
- tosym: string 兑换通证目标类型
- memo: string 备注信息
- authorization: string 授权
示例
同步:
1 | var result = ctx.exchangeSync('Owner Account', '1.0000 VO@fibostest123', '0.0000 FO@eosio', memo, { |
异步:
1 | ctx.exchange('Owner Account', '1.0000 VO@fibostest123', '0.0000 FO@eosio', memo, { |
excreate
调用 token 合约中的 excreate
接口来进行通证的发行
1 | ctx.excreate(issuer, maximum_supply, connector_weight, maximum_exchange, reserve_supply, reserve_connector_balance, expiration, buy_fee, sell_fee, connector_balance_issuer, { |
方法参数
- issuer: string 通证发行账号
- maximum_supply: assert 最大可发行通证数量
- connector_weight: number 连接器权重
- maximum_exchange: assert 最大可兑换(流通)的通证数量
- reserve_supply: assert 未流通通证数量
- reserve_connector_balance: assert 未流通通证保证金数量
- expiration: time_point_sec项目方预设的项目锁仓期
- buy_fee: double 项目方预设通证兑入手续费
- sell_fee: double 项目方预设通证兑出手续费
- connector_balance_issuer: string 准备金发行方
- authorization: string 权限
示例
发行普通通证
同步:
1 | //初始化 fibos 客户端 |
异步:
1 | //初始化 fibos 客户端 |
发行智能通证
同步:
1 | //初始化 fibos 客户端 |
异步:
1 | //初始化 fibos 客户端 |
exissue
增发通证
1 | ctx.exissue(issuer, maximum_supply, connector_weight, maximum_exchange, reserve_supply, reserve_connector_balance, expiration, { |
参数
- issuer: string 通证发行账号
- maximum_supply: assert 最大可发行通证数量
- connector_weight: number 连接器权重
- maximum_exchange: assert 最大可兑换(流通)的通证数量
- reserve_supply: assert 未流通通证数量
- reserve_connector_balance: assert 未流通通证保证金数量
- expiration: time_point_sec项目方预设的项目锁仓期
- authorization: string 权限
示例
同步:
1 | //初始化 fibos 客户端 |
异步:
1 | //初始化 fibos 客户端 |
exdestroy
销毁通证(只有流通量为 0 才能进行销毁)
1 | ctx.exdestroy(symbol, {authorization: 'author_name'}); |
参数
- symbol: string 通证兑换流通量
- authorization: string 授权
示例
同步:
1 | //初始化 fibos 客户端 |
异步:
1 | //初始化 fibos 客户端 |
exlocktrans
锁仓(项目方发行智能通证时,填写的 reserve_supply 这个参数的值,锁仓量会随着销毁和解锁通证的操作而变化。)
1 | ctx.exlocktrans(from, to, quantityt, expiration, expiration_to,memo, { |
方法参数
- from: string 通证转出方
- to: string 通证转入方
- quantity: number 通证数量
- expiration: time_point_sec 待转出锁仓时间
- expiration_to: time_point_sec 待转入锁仓时间
- memo: string 附言
- authorization: string 授权
示例
同步:
1 | //初始化 fibos 客户端 |
异步:
1 | //初始化 fibos 客户端 |
exunlock
解锁(用户通过解锁操作来讲锁仓中的通证变为流通中的通证)
1 | ctx.exunlock(owner, quantity, expiration, memo, { |
方法和参数
- owner: owner 通证持有者
- quantity: number 解锁数量
- expiration: time_point_sec 锁仓期
- memo: string 附言
- authorization: string 授权
示例
同步:
1 | //初始化 fibos 客户端 |
异步:
1 | //初始化 fibos 客户端 |
ctxrecharge
合约子钱包充值操作
1 | ctx.ctxrecharge(owner, quantity, memo, { |
方法和参数
- owner: string 账户拥有者
- quantity: number 充值通证数量
- memo: string 附言
- authorization: string 授权
示例
同步充值:
1 | //初始化 fibos 客户端 |
异步充值:
1 | //初始化 fibos 客户端 |
ctxextract
合约子钱包提现操作
1 | ctx.ctxextract(owner, quantity, memo, { |
方法和操作
同步提现:
1 | //初始化 fibos 客户端 |
异步提现:
1 | //初始化 fibos 客户端 |
ctxtransfer
合约子钱包转账
1 | ctx.ctxtransfer(from, to, quantity, memo, { |
参数
- from: string 通证转出方
- to: string 通证转入方
- quantity: number 通证数量
- memo: string 附言
- authorization: string 授权
示例
同步转账:
1 | //初始化 fibos 客户端 |
异步转账:
1 | //初始化 fibos 客户端 |