accjs
用于使用 ACC RPC API 与基于 ACC 的区块链集成的 Javascript API。
文档可以在这里找到
Installation
NPM
官方分发包可以在npm。
Add dependency to your project
yarn add accjs
Browser Distribution
在本地克隆此存储库,然后运行 yarn build-web
。 浏览器分布将位于 dist-web
中,可以直接复制到您的项目存储库中。 dist-web
文件夹包含准备用于生产的缩小包,以及用于调试的库的源映射版本。 有关完整的浏览器使用示例,请参阅文档。
Import
ES Modules
使用 TypeScript、webpack 或 带有 --experimental-modules
标志
import { Api, JsonRpc, RpcError } from 'accjs';
import { JsSignatureProvider } from 'accjs/dist/accjs-jssig'; // development only
CommonJS
的 Node.js 开箱即用的 Node.js 支持使用 commonJS 语法导入。
const { Api, JsonRpc, RpcError } = require('accjs');
const { JsSignatureProvider } = require('accjs/dist/accjs-jssig'); // development only
const fetch = require('node-fetch'); // node only; not needed in browsers
const { TextEncoder, TextDecoder } = require('util'); // node only; native TextEncoder/Decoder
const { TextEncoder, TextDecoder } = require('text-encoding'); // React Native, IE11, and Edge Browsers only
Basic Usage
Signature Provider
签名提供者持有私钥并负责签署交易。
在浏览器中使用 JsSignatureProvider 是不安全的,只能用于开发目的。 在网页上下文之外使用安全保险库以确保在生产中签署交易时的安全性
const defaultPrivateKey = "5JtUScZK2XEp3g9gh7F8bwtPTRAkASmNrrftmx4AxDKD5K4zDnr"; // bob
const signatureProvider = new JsSignatureProvider([defaultPrivateKey]);
JSON-RPC
打开与 JSON-RPC 的连接,在 Node.js 上包括 fetch
。
const rpc = new JsonRpc('http://127.0.0.1:8888', { fetch });
API
在 Node、React Native、IE11 或 Edge 浏览器中使用时包括 textDecoder 和 textEncoder。
const api = new Api({ rpc, signatureProvider, textDecoder: new TextDecoder(), textEncoder: new TextEncoder() });
Sending a transaction
transact()
用于通过可选的配置对象参数签署交易并将其推送到区块链上。 此参数可以覆盖 broadcast: true
的默认值,并可用于填充给定 blocksBehind
和 expireSeconds
的 TAPOS 字段。 如果没有配置选项,交易预计将使用 TAPOS 字段(expiration
、ref_block_num
、ref_block_prefix
)解包,并自动广播到链上.
(async () => {
const result = await api.transact({
actions: [{
account: 'acc.token',
name: 'transfer',
authorization: [{
actor: 'useraaaaaaaa',
permission: 'active',
}],
data: {
from: 'useraaaaaaaa',
to: 'useraaaaaaab',
quantity: '0.0001 SYS',
memo: '',
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.dir(result);
})();
Error handling
使用 RpcError
处理 RPC 错误
...
try {
const result = await api.transact({
...
} catch (e) {
console.log('\nCaught exception: ' + e);
if (e instanceof RpcError)
console.log(JSON.stringify(e.json, null, 2));
}
...
Contributing
贡献指南
行为准则
License
MIT
Important
有关版权和许可条款,请参阅许可。 Block.one 作为 ACC 社区的成员在自愿的基础上做出贡献,不负责确保软件或任何相关应用程序的整体性能。 我们对软件或任何相关文档不作任何明示或暗示的陈述、保证、担保或承诺,包括但不限于适销性、特定用途适用性和不侵权等方面的保证。 在任何情况下,我们均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权诉讼还是其他诉讼中,因软件或文档或软件或软件的使用或其他交易而产生或与之相关的文档。 任何测试结果或性能数据都是指示性的,不会反映所有条件下的性能。 任何对任何第三方或第三方产品、服务或其他资源的引用均不是 Block.one 的背书或推荐。 对于您使用或依赖任何这些资源,我们不承担任何责任,也不承担任何责任和义务。 第三方资源可能随时更新、更改或终止,因此此处的信息可能已过时或不准确。
accjs
Javascript API for integration with ACC-based blockchains using ACC RPC API.
Documentation can be found here
Installation
NPM
The official distribution package can be found at npm.
Add dependency to your project
yarn add accjs
Browser Distribution
Clone this repository locally then run yarn build-web
. The browser distribution will be located in dist-web
and can be directly copied into your project repository. The dist-web
folder contains minified bundles ready for production, along with source mapped versions of the library for debugging. For full browser usage examples, see the documentation.
Import
ES Modules
Importing using ESM syntax is supported using TypeScript, webpack, or Node.js with --experimental-modules
flag
import { Api, JsonRpc, RpcError } from 'accjs';
import { JsSignatureProvider } from 'accjs/dist/accjs-jssig'; // development only
CommonJS
Importing using commonJS syntax is supported by Node.js out of the box.
const { Api, JsonRpc, RpcError } = require('accjs');
const { JsSignatureProvider } = require('accjs/dist/accjs-jssig'); // development only
const fetch = require('node-fetch'); // node only; not needed in browsers
const { TextEncoder, TextDecoder } = require('util'); // node only; native TextEncoder/Decoder
const { TextEncoder, TextDecoder } = require('text-encoding'); // React Native, IE11, and Edge Browsers only
Basic Usage
Signature Provider
The Signature Provider holds private keys and is responsible for signing transactions.
Using the JsSignatureProvider in the browser is not secure and should only be used for development purposes. Use a secure vault outside of the context of the webpage to ensure security when signing transactions in production
const defaultPrivateKey = "5JtUScZK2XEp3g9gh7F8bwtPTRAkASmNrrftmx4AxDKD5K4zDnr"; // bob
const signatureProvider = new JsSignatureProvider([defaultPrivateKey]);
JSON-RPC
Open a connection to JSON-RPC, include fetch
when on Node.js.
const rpc = new JsonRpc('http://127.0.0.1:8888', { fetch });
API
Include textDecoder and textEncoder when using in Node, React Native, IE11 or Edge Browsers.
const api = new Api({ rpc, signatureProvider, textDecoder: new TextDecoder(), textEncoder: new TextEncoder() });
Sending a transaction
transact()
is used to sign and push transactions onto the blockchain with an optional configuration object parameter. This parameter can override the default value of broadcast: true
, and can be used to fill TAPOS fields given blocksBehind
and expireSeconds
. Given no configuration options, transactions are expected to be unpacked with TAPOS fields (expiration
, ref_block_num
, ref_block_prefix
) and will automatically be broadcast onto the chain.
(async () => {
const result = await api.transact({
actions: [{
account: 'acc.token',
name: 'transfer',
authorization: [{
actor: 'useraaaaaaaa',
permission: 'active',
}],
data: {
from: 'useraaaaaaaa',
to: 'useraaaaaaab',
quantity: '0.0001 SYS',
memo: '',
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.dir(result);
})();
Error handling
use RpcError
for handling RPC Errors
...
try {
const result = await api.transact({
...
} catch (e) {
console.log('\nCaught exception: ' + e);
if (e instanceof RpcError)
console.log(JSON.stringify(e.json, null, 2));
}
...
Contributing
Contributing Guide
Code of Conduct
License
MIT
Important
See LICENSE for copyright and license terms. Block.one makes its contribution on a voluntary basis as a member of the ACC community and is not responsible for ensuring the overall performance of the software or any related applications. We make no representation, warranty, guarantee or undertaking in respect of the software or any related documentation, whether expressed or implied, including but not limited to the warranties or merchantability, fitness for a particular purpose and noninfringement. In no event shall we be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or documentation or the use or other dealings in the software or documentation. Any test results or performance figures are indicative and will not reflect performance under all conditions. Any reference to any third party or third-party product, service or other resource is not an endorsement or recommendation by Block.one. We are not responsible, and disclaim any and all responsibility and liability, for your use of or reliance on any of these resources. Third-party resources may be updated, changed or terminated at any time, so the information here may be out of date or inaccurate.