UNPKG

@iota/pearl-diver-react-native

Version:

Transaction nonce searcher for IOTA apps built with react-native.

50 lines 2.31 kB
"use strict"; 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