Edit me

English / 中文

Ontology DAPP开发教材

Version 1.0.0

这个教程教你如何使用Ontology dApp API (dAPI)开发dApp。

大纲:

安装开发环境

Ontology dAPI

运行例子

为你的dApp写智能合约

安装开发环境

请确保安装以下软件。.

Ontology dAPI

dAPI 安装

创建dApp时,Ontology dAPI是与Ontology链交互的核心API之一,可以从这里下载源码。 这里. 通过 npm 安装ontology-dapi :

$ npm install ontology-dapi

dAPI 实例

创建dAPI 实例时,要先导入库ontology-dapi,并注册客户端:

import { client } from 'ontology-dapi';

client.registerClient({});

dAPI 方法

创建dAPI 实例成功后, 就可以在你的dApp中调用 dAPI 方法.

与链交互方法
const network = await client.api.network.getNetwork();
const height = await client.api.network.getBlockHeight();
const block = await client.api.network.getBlock({ block: 1 });
const transaction = await client.api.network.getTransaction({txHash: '314e24e5bb0bd88852b2f13e673e5dcdfd53bdab909de8b9812644d6871bc05f'});
const balance = await client.api.network.getBalance({ address: 'AcyLq3tokVpkMBMLALVMWRdVJ83TTgBUwU' });
转账方法
const result = await client.api.asset.makeTransfer({ recipient, asset, amount });
智能合约方法
const result = await client.api.smartContract.invoke({contract,method,parameters,gasPrice,gasLimit,requireIdentity});
const result = await client.api.smartContract.invokeRead({ contract, method, parameters });
const result = await client.api.smartContract.deploy({code,name,version,author,email,description,needStorage,gasPrice,gasLimit});
数据签名
const message: string = values.message;
const signature: Signature = {
  data,
  publicKey
};
const result = await client.api.message.signMessage({ message });
const result = await client.api.message.verifyMessage({ message, signature });

所有方法列表可以在文档中找到 dAPI 规范.

运行例子

拷贝 dAPI 例子 ,可以测试dAPI提供了哪些功能.

$ git clone https://github.com/ontio/ontology-dapi-demo.git

$ npm install

$ npm run start

启动成功后,在浏览器打开页面 http://localhost:3000

页面成功打开后, 点击 Provider->GetProvider.

dApp Demo Provider dApp Demo Get Provider

就通过 API 调用与链交互了. 例如, 点击 Network->Get Block ,结果如下:

dApp Demo getBlock

运行转账例子,点击 Asset->Make Transfer , Cyano Wallet会弹出确认框. 点击 Confirm 确认交易.

Cyano Wallet Confirm

如何填写gaslimit和gasprice

每笔交易都包含gas limit和gas price。gasprice 会影响到该笔交易被打包所需等待的时间,目前主网和测试网最小值都是500。

gaslimit根据合约执行复杂性而定,可以通过预执行查询该调用需要的最小gaslimit值。Native合约调用gaslimit默认是20000。部署合约根据合约而定,gaslimit一般是20000000以上。

为你的dApp写智能合约

dApp后端逻辑和存储需要使用智能合约,可以通过SmartX编辑和调试智能合约,SmartX中包含多个合约例子。SmartXSmart Contract 教程

SmartX Login

编译和部署你的智能合约

SmartX 使用 Cyano Wallet 帮助部署和调用合约. 请确保按照了 Cyano 并创建了测试网账号.

编译你的智能合约

使用 SmartX 编译合约

smart contract deploy and invoke

部署你的智能合约

写完智能合约,编译成功后,下一步是部署和调用智能合约. 如果你没有测试网的ONG,需要 申请 测试网 ONG in Discord

Deploy

Invoke

测试你的智能合约

可以使用测试框架测试你的智能合约 smart contract automated testing framework, 如果需要部署到私链,请下载最新版Ontology并启动, Ontology release.

$ ./ontology --testmode