openchain-sdk-yxl-wx-request
Version:
openchain sd YxL wx request
167 lines (133 loc) • 4.11 kB
JavaScript
;
require('chai').should();
const BigNumber = require('bignumber.js');
const co = require('co');
const OpenChainSDK = require('../index');
const sdk = new OpenChainSDK({
host: 'nodeapitest.yuxinlink.com',
// host: '192.168.1.162:56002',
});
describe('Test transaction', function() {
it('evaluateFee', function() {
const sourceAddress = 'YxLVdxKt6FJUTXCsdjSCEdMg4dSynBqTqLSnb';
const destAddress = 'YxLVkMLxmJEtDQEob3SvVnZGjp7XrWSDvKm7a';
sdk.account.getNonce(sourceAddress).then(info => {
if (info.errorCode !== 0) {
console.log(info);
return;
}
const nonce = new BigNumber(info.result.nonce).plus(1).toString(10);
let sendBuOperation = sdk.operation.buSendOperation({
destAddress,
opAmount: '60000',
// metadata: 'oh my send bu',
});
if (sendBuOperation.errorCode !== 0) {
console.log(sendBuOperation);
return;
}
const operationItem = sendBuOperation.result.operation;
// evaluation fee
const args = {
sourceAddress,
nonce,
operations: [operationItem],
signtureNumber: '1',
// ceilLedgerSeq: '30',
// metadata: 'Test evaluation fee',
};
sdk.transaction.evaluateFee(args).then(feeData => {
console.log(feeData)
}).catch(err => {
console.log(err);
});
}).catch(err => {
console.log(err);
});
});
it('test getInfo', function() {
const hash = 'e21fb61a66e251ec2cb593ab09781daaacaea6701f2ac2f26eb867d8e60324ba';
sdk.transaction.getInfo(hash).then(data => {
// console.log(data);
})
});
it('transaction', function() {
const privateKey = 'private key';
const sourceAddress = 'YxLVdMpKLkRLYG6LKed6DQ9yzprnpRdusz28m';
const destAddress = 'YxLVyL2Rr6u9nFpVdq16ycTJ3HssQBuc9BAVz';
co(function* () {
const result = yield sdk.account.getNonce(sourceAddress);
if (result.errorCode !== 0) {
console.log(result);
return;
}
let nonce = result.result.nonce;
nonce = new BigNumber(nonce).plus(1).toString(10);
// 1.build operation
let sendBuInfo = sdk.operation.buSendOperation({
// sourceAddress,
destAddress,
opAmount: '10000000',
// metadata: 'oh my send bu',
});
if (sendBuInfo.errorCode !== 0) {
console.log(sendBuInfo);
return;
}
const sendBuOperation = sendBuInfo.result.operation;
// console.log(sendBuOperation);
// return;
// evaluation fee
// const args = {
// sourceAddress,
// nonce,
// operations: [sendBuOperation],
// signtureNumber: '100',
// // metadata: 'Test evaluation fee',
// };
//
// let feeData = yield sdk.transaction.evaluateFee(args);
//
// if (feeData.errorCode !== 0) {
// console.log(feeData);
// return;
// }
// const feeLimit = feeData.result.feeLimit;
// const gasPrice = feeData.result.gasPrice;
// 2. build blob
let blobInfo = sdk.transaction.buildBlob({
sourceAddress,
gasPrice: '1000',
feeLimit: '14119000',
nonce,
// ceilLedgerSeq: '',
operations: [ sendBuOperation ],
// metadata: '6f68206d79207478',
});
if (blobInfo.errorCode !== 0) {
console.log(blobInfo);
return;
}
let blob = blobInfo.result.transactionBlob;
// 3. sign blob
let signatureInfo = sdk.transaction.sign({
privateKeys: [ privateKey ],
blob,
});
if (signatureInfo.errorCode !== 0) {
signatureInfo.errorCode.should.equal(11058);
// console.log(signatureInfo);
return;
}
let signature = signatureInfo.result.signatures;
// 4. submit transaction
let transactionInfo = yield sdk.transaction.submit({
blob,
signature: signature,
});
console.log(transactionInfo);
}).catch(err => {
console.log(err);
});
});
});