【技术】井通区块链开发指南
井通区块链介绍
井通区块链是基于区块链技术构建的一个去中心化互享生态的互联网交易网络,简单点说,就是区块链技术+交易网络。
井通区块链开发示例[以简单的抽奖为例]
目前主要针对一些业务需要使用区块链进行信息存证类的开发人员
1. 选定井通区块链部署环境
井通公链环境是:https://api.jingtum.com/
井通测试环境是:https://tapi.jingtum.com/
其他的环境,比如http(s)://{ip}:{port}/
备注:在示例中,使用井通测试环境,https://tapi.jingtum.com/
2. 使用API还是SDK进行开发
基于JSON的RESTful API开发,比较简洁,适合任何语言,不方便的地方在于,需要在不同的语言中,处理JSON格式,获取需要的数据;
- 具体文档见附件[井通标准接口-v1.0.0.pdf];
SDK, 是API在具体语言中的实现,使用SDK开发,上手与开发都很方便,目前支持四种语言,php-jingtum-sdk, python-jingtum-sdk, nodejs-jingtum-sdk以及java-jingtum-sdk,需要熟悉井通区块链里边一些概念,比如银关等。
- SDK使用具体见,http://developer.jingtum.com/
- 相关SDK的代码在:
https://github.com/jingtum/jingtum-php-sdk
https://github.com/jingtum/jingtum-python-sdk
https://github.com/jingtum/jingtum-js-sdk
https://github.com/jingtum/jingtum-java-sdk
在示例中,使用API进行开发,需要对API进行简单的封装
具体见附件[lottery.tar.gz里边的modules/jingtum-api/ApiRequest.js]
程序代码: [选择]
const request = require('request');
...
const CREATE_WALLET_PATH = '/wallet/new';
const BALANCE_PATH = '/accounts/{0}/balances';
const PAYMENT_PATH = '/accounts/{0}/payments?validated={1}';
const TRANSACTION_LIST_PATH = '/accounts/{0}/transactions';
...
var apiRequest = {
createWallet: function (callback) {
var url = CREATE_WALLET_PATH;
url = config.api.url + config.api.version + url;
request(url, function (err, res, data) {
var _data = JSON.parse(data);
if (true === _data.success) {
console.log('create wallet:', _data.wallet.address);
callback(null, _data.wallet);
} else {
callback(null, null);
}
});
},
getBalance: function (address, callback) {
...
},
sendGift: function(dest, callback) {
...
},
transfer: function(sourceAddress, sourceSecret, destAddress, amount, memos, validated, callback){
...
},
submitPayment: function (wallet, payment, client_id, validated, callback) {
...
},
getTransactionList: function (address, callback) {
...
}
};
module.exports = apiRequest;
3. 业务分析
抽奖这个示例,业务比较简单,设定抽奖目标,不同的用户表达抽奖意愿之后,等待抽奖结果。
4. 业务流程设计
- 创建抽奖目标
- 用户对抽奖目标进行抽奖
- 通过一定的逻辑,计算并回复中奖用户
5. 业务上链设计
具体见附件[lottery.tar.gz里边的modules/lottery-api/LotteryRequest.js]
- 为抽奖目标创建帐户
- 为每个用户创建帐户
- 用户对应的帐户向抽奖目标对应的帐户发送交易,表达抽奖意愿
- 抽奖目标对应的帐户向中奖的用户对应的帐户发送交易,说明该用户中奖
其他相关开发资源
获得井通区块链相关信息
https://www.npmjs.com/package/jingtum-lib
npm install jingtum-lib
如下就是使用jingtum-lib来监听井通区块链生成区块的事件,并返回当前区块相关信息
程序代码: [选择]
var Jingtum = require('jingtum-lib');
//ws://ts.jingtum.com:5020
//wss://hc.jingtum.com:5020
var remote = new Jingtum.Remote({
server: 'ws://ts.jingtum.com:5020',
local_sign: false
});
remote.connect(function(err, ret){
if(err){
console.log('connect to jingtum failed');
}else{
console.log('connect to jingtum');
}
remote.on('ledger_closed', function(data){
console.log(data);
});
});
lottery.tar.gz (200.43 kB )
原文链接:井通区块链开发指南