UNPKG

openchain-sdk-yxl-wx-request

Version:

openchain sd YxL wx request

108 lines (84 loc) 2.72 kB
'use strict'; require('chai').should(); const BigNumber = require('bignumber.js'); const co = require('co'); const OpenChainSDK = require('../index'); const sdk = new OpenChainSDK({ host: 'nodeapitest.yuxinlink.com', }); describe('Test contract Invoke By BU transaction', function() { it('test contract Invoke By BU' , function() { const privateKey = 'private key'; const sourceAddress = 'YxLVyL2Rr6u9nFpVdq16ycTJ3HssQBuc9BAVz'; const contractAddress = 'YxLVdxKt6FJUTXCsdjSCEdMg4dSynBqTqLSnb'; // const contractAddress = '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); let contractinvokeByOPOperation = yield sdk.operation.contractinvokeByOPOperation({ contractAddress, sourceAddress, opAmount: '0', input: 'aaaa', // metadata: 'Test contract create operation', }); if (contractinvokeByOPOperation.errorCode !== 0) { console.log(contractinvokeByOPOperation); return; } // console.log(contractinvokeByOPOperation); // return; const operationItem = contractinvokeByOPOperation.result.operation; const args = { sourceAddress, nonce, operations: [operationItem], signtureNumber: '100', // metadata: 'Test evaluation fee', }; let feeData = yield sdk.transaction.evaluateFee(args); if (feeData.errorCode !== 0) { console.log(feeData); return; } let feeLimit = feeData.result.feeLimit; let gasPrice = feeData.result.gasPrice; // 2. build blob let blobInfo = sdk.transaction.buildBlob({ sourceAddress: sourceAddress, gasPrice, feeLimit, nonce: nonce, operations: [ operationItem ], }); 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) { 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); }); }); });