1 import bytom from "./bytom";
2 import { snakeize } from "@/utils/utils";
7 transaction.list = function(guid, asset_id, start, limit, tx_types) {
8 const filter = {asset_id}
10 filter.tx_types = tx_types
12 return bytom.transaction.list(guid, filter, null, start, limit);
15 transaction.convertArgument = function(argArray) {
16 let fn = function asyncConvert(object){
17 const type = object.type
18 const value = object.value
19 return bytom.transaction.convertArgument(type, value)
20 .then(resp => resp.value);
23 let actionFunction = argArray.map(fn)
24 return Promise.all(actionFunction);
27 transaction.chainStatus = function() {
28 return bytom.query.getblockcount();
31 transaction.asset = function(asset_id) {
32 return bytom.query.asset(asset_id);
35 transaction.build = function(address, to, asset, amount, fee, confirmations) {
36 let retPromise = new Promise((resolve, reject) => {
38 .buildPayment(address, to, asset, amount.toString(), confirmations)
49 transaction.buildCrossChain = function(address, to, asset, amount, confirmations) {
50 let retPromise = new Promise((resolve, reject) => {
52 .buildCrossChain(address, to, asset, amount.toString(), confirmations)
63 transaction.buildVote = function(address, vote, amount, confirmations, memo) {
64 let retPromise = new Promise((resolve, reject) => {
66 .buildVote(address, vote, amount.toString(), confirmations, memo)
77 transaction.buildVeto = function(address, vote, amount, confirmations, memo) {
78 let retPromise = new Promise((resolve, reject) => {
80 .buildVeto(address, vote, amount.toString(), confirmations, memo)
91 transaction.buildTransaction = function(address, inputs, outputs, gas, confirmations) {
92 let retPromise = new Promise((resolve, reject) => {
94 .buildTransaction(address, inputs, outputs, gas, confirmations)
105 transaction.signTransaction = function(guid, transaction, password, context) {
106 let retPromise = new Promise((resolve, reject) => {
109 JSON.stringify(snakeize(transaction)),
123 transaction.decodeTransaction = function(rawTx) {
124 let retPromise = new Promise((resolve, reject) => {
126 .decodeTransaction(rawTx)
137 transaction.transfer = function(transaction, password, address, context) {
138 let retPromise = new Promise((resolve, reject) => {
140 const {to, asset, amount, confirmations} = transaction
142 .buildPayment(address, to, asset, amount.toString(), confirmations)
144 Promise.all(result.map( (data) =>
145 signSubmit( data, password, address, context)))
161 function signSubmit (txObject, password, address, context) {
162 let retPromise = new Promise((resolve, reject) => {
165 JSON.stringify(snakeize(txObject)),
171 .submitPayment(address, ret.raw_transaction, ret.signatures)
174 transactionHash: res3.txHash
190 transaction.signMessage = function(message, password, address) {
191 return bytom.keys.signMessage(message, password,address);
194 transaction.advancedTransfer = function(guid, transaction, password, arrayData, address, context) {
195 let retPromise = new Promise((resolve, reject) => {
198 JSON.stringify(snakeize(transaction)),
203 let signatures = ret.signatures
205 signatures[0] = arrayData
208 .submitPayment(address, ret.raw_transaction, signatures)
211 transactionHash: res3.txHash
229 function signTx(address, transaction, password, context){
230 const keyArray = context.bytom.keychain.findByAddress(address);
232 throw 'Account not found.'
234 const key = JSON.stringify(keyArray.keystore)
235 return bytom.transaction
244 transaction.estimateFee = function(address, asset_amounts, confirmations){
245 return bytom.transaction.estimateFee(address, asset_amounts, confirmations)
248 export default transaction;