AIOU Chain Docs

AIOU Chain Docs

  • Docs
  • Languages icon中文
    • English

›AIOU Javascript SDK

Getting started

  • Overview
  • Quickstart

AIOU Design and Concepts

  • Account
  • Economic model

Smart Contract

  • Smart Contract Quick Start
  • AIOU Blockchain API
  • Update Contract
  • Generate Receipt in Smart Contract
  • Create IRC20 Token

Running AIOU node

  • Join AIOU Network
  • Become Servi Node

Reference

  • API
  • System Contract
  • Economic Contract
  • Token Contract
  • Gas Charge Table

AIOU Javascript SDK

  • AIOU
  • Blockchain
  • KeyPair
  • Transaction

AIOU Tech Internals

  • VM
  • Database
  • Network layer

Blockchain

Blockchain类负责与AIOU区块链和AIOU智能合约交互以从中获取信息。

constructor

构造函数 不要新建这个类的实例,只需使用rpc.Blockchain。

getChainInfo

从区块链获取链信息

Returns

Promise返回chainInfo对象。

名称类型描述
net_nameString网络的名称,例如mainnet或testnet
protocol_versionStringaiou协议版本
head_blockNumber头部高度
head_block_hashString头块哈希
lib_blockNumber最后一个不可逆的区号
lib_block_hashString最后一个不可逆的块哈希
witness_listArray目前的witness列表

Example

const rpc = new AIOU.RPC(new AIOU.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getChainInfo().then(console.log);

/*{
    "net_name": "debugnet",
    "protocol_version": "1.0",
    "head_block": "142",
    "head_block_hash": "ryj9qWvbypFd1VJeUiyxmyNiav9E8ZHH1t47zSbMmGk",
    "lib_block": "142",
    "lib_block_hash": "ryj9qWvbypFd1VJeUiyxmyNiav9E8ZHH1t47zSbMmGk",
    "witness_list": [
        "AIOUfQFocqDn7VrKV7vvPqhAQGyeFU9XMYo5SNn5yQbdbzC75wM7C"
    ]
}*/

getBlockByHash

通过哈希从区块链获取块信息

Parameters

名称类型描述
hashString块的哈希值
completeBoolean是否包括完整交易和交易收据

Returns

Promise返回块对象。

名称类型描述
statusString交易状态
blockObject[Block Object](#block-object)

Block Object

名称类型描述
hashString块哈希
versionNumber块版本
parent_hashString父块哈希
tx_merkle_hashString事务merkle树根哈希
tx_receipt_merkle_hashString交易收据merkle树根哈希
numberString区号
witnessString当前block的witness列表
timeStringblock时间
gas_usageStringblock的gas使用量
tx_countString交易数量
transactionsArray[Transaction Object]数组(7-aiou-js / Transaction-class.md#transaction-object)
infoObject[Info Object](#info-object)

AmountLimit Object

名称类型描述
tokenStringtoken名称
valueNumber限制值

Info Object

名称类型描述
modeNumber包模式
threadNumber事务执行线程号
batch_indexArray每批执行的事务索引

Example

const rpc = new AIOU.RPC(new AIOU.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getBlockByNum(1, true).then(console.log);

/*{
    "status": "IRREVERSIBLE",
    "block": {
        "hash": "HSSXypC9GwRowiG6e1FG9qGbvVZFjT9mR7RY8mGZzoLJ",
        "version": "0",
        "parent_hash": "CyoyPDfRM8a4HWwSbDBRv3UbFoUUQxWu4T5JuaJsmLvs",
        "tx_merkle_hash": "7thvoWaULNdrXVYR6wRTfWYSpJDFj6vKX1jitCsh7KRj",
        "tx_receipt_merkle_hash": "GvjAbjP9c626UPSMFjPMERyVDxqwvdu5uziqyiZdmoox",
        "number": "1",
        "witness": "AIOUfQFocqDn7VrKV7vvPqhAQGyeFU9XMYo5SNn5yQbdbzC75wM7C",
        "time": "1545384717001253745",
        "gas_usage": 0,
        "tx_count": "1",
        "info": null,
        "transactions": [
            {
                "hash": "5YdA8qPq5N6W47rZV4u31FdbQzeMt2QX9KGj4uPyERZa",
                "time": "0",
                "expiration": "0",
                "gas_ratio": 1,
                "gas_limit": 1000000,
                "delay": "0",
                "actions": [
                    {
                        "contract": "base.aiou",
                        "action_name": "Exec",
                        "data": "[{\"parent\":[\"AIOU2FpDWNFqH9VuA8GbbVAwQcyYGHZxFeiTwSyaeyXnV84yJZAG7A\", \"0\"]}]"
                    }
                ],
                "signers": [],
                "publisher": "_Block_Base",
                "referred_tx": "",
                "amount_limit": [],
                "tx_receipt": {
                    "tx_hash": "5YdA8qPq5N6W47rZV4u31FdbQzeMt2QX9KGj4uPyERZa",
                    "gas_usage": 0,
                    "ram_usage": {
                        "_Block_Base": "0",
                        "base.aiou": "284",
                        "bonus.aiou": "107"
                    },
                    "status_code": "SUCCESS",
                    "message": "",
                    "returns": [
                        "[\"\"]"
                    ],
                    "receipts": [
                        {
                            "func_name": "token.aiou/issue",
                            "content": "[\"contribute\",\"AIOU2FpDWNFqH9VuA8GbbVAwQcyYGHZxFeiTwSyaeyXnV84yJZAG7A\",\"900\"]"
                        }
                    ]
                }
            }
        ]
    }
}*/

getBlockByNum

通过块高度从块链获取块信息

Parameters

名称类型描述
numNumber块的高度
completeBoolean是否包括完整交易和交易收据

Returns

Promise返回块对象。 check [getBlockByHash](#getBlockByHash)

getBalance

获得帐户余额

###参数

名称类型描述
nameString用户名
by_longest_chainBoolean通过最长链的头部块或最后一个不可逆块来获取帐户

Returns

Promise返回余额对象。

Example

const rpc = new AIOU.RPC(new AIOU.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getBalance('myaccount', true).then(console.log);

/*{
    balance: 12000,
    frozen_balances: null
}*/

getToken721Balance

获得帐户token721余额

###参数

名称类型描述
nameString用户名
tokenSymbolStringtoken721的名字
by_longest_chainBoolean通过最长链的头部块而非最新不可逆块来获取

Returns

Pormise返回余额对象。

Example

const rpc = new AIOU.RPC(new AIOU.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getToken721Balance('myaccount', 'my721Token', true).then(console.log);

/*{
    balance: 12000,
    tokenIDs: null
}*/

getToken721Metadata

获取token721元数据

###参数

名称类型描述
tokenStringtoken名称
token_idStringtoken ID
by_longest_chainBoolean通过最长链的头部块而非最新不可逆块来获取

Returns

Promise返回元数据对象。

名称类型描述
metadataString元数据

Example

const rpc = new AIOU.RPC(new AIOU.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getToken721Metadata('symbol', 'id', true).then(console.log);

/*{
    metadata: ''
}*/

getToken721Owner

得到token721所有者

###参数

名称类型描述
tokenStringtoken名称
token_idStringtokenID
by_longest_chainBoolean通过最长链的头部块或最后一个不可逆块来获取帐户

Returns

Promise返回所有者对象。

名称类型描述
ownerString元数据

Example

const rpc = new AIOU.RPC(new AIOU.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getToken721Owner('symbol', 'id', true).then(console.log);

/*{
    owner: 'theowner'
}*/

getContract

从区块链获得合同

###参数

名称类型描述
idString合同ID
by_longest_chainBoolean通过最长链的头部块或最后一个不可逆块来获取帐户

Returns

Promise返回合同对象。

名称类型描述
idString合同ID
codeString合同代码
languageString合同语言
versionString合同版
abisArray[ABI对象]的数组(#abi-object)

ABI对象

名称类型描述
nameString合同ID
argsArrayabi论点
amount_limitArray[AmountLimit对象]的数组(#amountlimit-object)

getContractStorage

从区块链获得合同存储

###参数

名称类型描述
idString合同ID
keyStringStateDB中的关键
fieldString从StateDB获取值,如果StateDB [key]是一个map,则需要该字段。(在这种情况下我们得到StateDB [key] [field])
by_longest_chainBoolean通过最长链的头部块或最后一个不可逆块来获取帐户

Returns

Promise返回合同结果对象。

名称类型描述
dataString数据

getAccountInfo

从区块链获取帐户信息

###参数

名称类型描述
nameString用户名
by_longest_chainBoolean通过最长链的头部块或最后一个不可逆块来获取帐户

Returns

Promise返回帐户对象。

名称类型描述
nameString用户名
balanceNumber账户余额
gas_info对象[GasInfo对象](#gasinfo-object)
ram_info对象[RAMInfo对象](#raminfo-object)
permissions地图map <String,[Permission Object](#permission-object)>
groups地图map <String,[Group Object](#group-object)>
frozen_balancesArray[FrozenBalance Object]的数组(#frozenbalance-object)

GasInfo对象

名称类型描述
current_totalNumber目前的总气量
transferable_gasNumber目前可转移的天然气
pledge_gasNumber目前的质押气
increase_speedNumber天然气增加速度
limitNumber用户名
pledged_infoArray[PledgeInfo对象]的数组(#pledgeinfo-object)

PledgeInfo对象

名称类型描述
pledgerString质押的帐户
balanceNumber质押金额

RAMInfo对象

名称类型描述
availableNumber可用的ram字节

Permission Object

名称类型描述
nameString许可名称
groupsArray权限组的数组
itemsArray[Item Object]数组(#item-object)
thresholdNumber许可阈值

Item Object

名称类型描述
idString权限名称或密钥对ID
is_key_pairBoolen是否是一对钥匙
weightNumber许可权重
permissionString权限

Group Object

名称类型描述
nameStringgroup名字
itemsArray[Item Object]数组(#item-object)

FrozenBalance Object

名称类型描述
amountNumber余额
timeNumber空闲时间

Example

const rpc = new AIOU.RPC(new AIOU.HTTPProvider('http://127.0.0.1:30001'));
rpc.blockchain.getAccountInfo("myaccount").then(console.log);

/*{
    "name": "myaccount",
    "balance": 993939700,
    "gas_info": {
        "current_total": 3000000,
        "transferable_gas": 0,
        "pledge_gas": 3000000,
        "increase_speed": 11,
        "limit": 3000000,
        "pledged_info": [
            {
                "pledger": "myaccount",
                "amount": 100
            }
        ]
    },
    "ram_info": {
        "available": "100000"
    },
    "permissions": {
        "active": {
            "name": "active",
            "groups": [],
            "items": [
                {
                    "id": "AIOU2mCzj85xkSvMf1eoGtrexQcwE6gK8z5xr6Kc48DwxXPCqQJva4",
                    "is_key_pair": true,
                    "weight": "1",
                    "permission": ""
                }
            ],
            "threshold": "1"
        },
        "owner": {
            "name": "owner",
            "groups": [],
            "items": [
                {
                    "id": "AIOU2mCzj85xkSvMf1eoGtrexQcwE6gK8z5xr6Kc48DwxXPCqQJva4",
                    "is_key_pair": true,
                    "weight": "1",
                    "permission": ""
                }
            ],
            "threshold": "1"
        }
    },
    "groups": {},
    "frozen_balances": []
}*/
← AIOUKeyPair →
  • constructor
  • getChainInfo
    • Returns
    • Example
  • getBlockByHash
    • Parameters
    • Returns
    • Example
  • getBlockByNum
    • Parameters
    • Returns
  • getBalance
    • Returns
    • Example
  • getToken721Balance
    • Returns
    • Example
  • getToken721Metadata
    • Returns
    • Example
  • getToken721Owner
    • Returns
    • Example
  • getContract
    • Returns
  • getContractStorage
    • Returns
  • getAccountInfo
    • Returns
    • Example
AIOU Chain Docs
Community
BlogGitHubStar
Facebook Open Source
Copyright © 2021 Your Name or Your Company Name