@iota/pearl-diver-react-native
Version:
Transaction nonce searcher for IOTA apps built with react-native.
50 lines • 2.31 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
exports.__esModule = true;
var converter_1 = require("@iota/converter");
var transaction_1 = require("@iota/transaction");
var transaction_converter_1 = require("@iota/transaction-converter");
var react_native_1 = require("react-native");
/**
* Attaches transactions to tangle by finding a valid nonce.
* Proof-of-Work puzzle is solved with native modules that use
* [`entangled`](https://github.com/iotaledger/entangled/tree/develop/mobile) libraries.
*
* @method attachToTangle
*
* @param {Hash} trunkTransaction
*
* @param {Hash} branchTransaction
*
* @param {number} minWeightMagnitude
*
* @param {Trytes} trytes
*
* @return {Promise<Trytes[]>} Attached trytes
*/
exports.attachToTangle = function (trunkTransaction, branchTransaction, minWeightMagnitude, trytes) {
var search = function (transactions, trunk) {
if (transactions === void 0) { transactions = []; }
if (trunk === void 0) { trunk = trunkTransaction; }
if (transactions.length === trytes.length) {
return transactions.slice().reverse();
}
var transaction = __assign({}, transaction_converter_1.asTransactionObject(trytes[transactions.length]), { trunkTransaction: trunk, branchTransaction: branchTransaction, attachmentTimestamp: Date.now(), attachmentTimestampLowerBound: 0, attachmentTimestampUpperBound: (Math.pow(3, 27) - 1) / 2 });
return react_native_1.NativeModules.PearlDiver.doPOW(transaction_converter_1.asTransactionTrytes(transaction), minWeightMagnitude).then(function (nonce) {
var transactionTrytes = transaction_converter_1.asTransactionTrytes(__assign({}, transaction, { nonce: nonce }));
return search(transactions.concat([transactionTrytes]), converter_1.tritsToTrytes(transaction_1.transactionHash(converter_1.trytesToTrits(transactionTrytes))));
});
};
return search();
};
//# sourceMappingURL=index.js.map