btc-wallet 0.5.12-beta → 0.5.14-beta
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.js +47 -28
- package/dist/index.js.map +2 -2
- package/esm/index.js +47 -28
- package/esm/index.js.map +2 -2
- package/package.json +1 -1
package/esm/index.js
CHANGED
@@ -3558,7 +3558,7 @@ function getWithdrawTransaction(_0) {
|
|
3558
3558
|
env = "mainnet"
|
3559
3559
|
}) {
|
3560
3560
|
const provider = getBtcProvider();
|
3561
|
-
const btcAddress =
|
3561
|
+
const btcAddress = provider.account;
|
3562
3562
|
const config = yield getConfig(env);
|
3563
3563
|
const brgConfig = yield nearCall(config.bridgeContractId, "get_config", {});
|
3564
3564
|
if (brgConfig.min_withdraw_amount) {
|
@@ -3582,7 +3582,7 @@ function getWithdrawTransaction(_0) {
|
|
3582
3582
|
};
|
3583
3583
|
});
|
3584
3584
|
const _feeRate = feeRate || (yield getBtcGasPrice());
|
3585
|
-
|
3585
|
+
let { inputs, outputs, fee } = coinselect(
|
3586
3586
|
utxos,
|
3587
3587
|
[{ address: btcAddress, value: Number(amount) }],
|
3588
3588
|
Math.ceil(_feeRate)
|
@@ -3591,32 +3591,61 @@ function getWithdrawTransaction(_0) {
|
|
3591
3591
|
throw new Error("The network is busy, please try again later.");
|
3592
3592
|
}
|
3593
3593
|
const maxBtcFee = Number(brgConfig.max_btc_gas_fee);
|
3594
|
-
const
|
3595
|
-
const
|
3596
|
-
if (
|
3594
|
+
const transactionFee = fee;
|
3595
|
+
const changeAddress = brgConfig.change_address;
|
3596
|
+
if (transactionFee > maxBtcFee) {
|
3597
3597
|
throw new Error("Gas exceeds maximum value");
|
3598
3598
|
}
|
3599
|
-
let
|
3599
|
+
let recipientOutput, changeOutput;
|
3600
3600
|
for (let i = 0; i < outputs.length; i++) {
|
3601
3601
|
const output = outputs[i];
|
3602
3602
|
if (output.value.toString() === amount.toString()) {
|
3603
|
-
|
3603
|
+
recipientOutput = output;
|
3604
3604
|
} else {
|
3605
|
-
|
3605
|
+
changeOutput = output;
|
3606
3606
|
}
|
3607
3607
|
if (!output.address) {
|
3608
|
-
output.address =
|
3608
|
+
output.address = changeAddress;
|
3609
3609
|
}
|
3610
3610
|
}
|
3611
|
-
|
3612
|
-
if (
|
3613
|
-
|
3611
|
+
recipientOutput.value = new Big(recipientOutput.value).minus(transactionFee).minus(withdrawFee).toNumber();
|
3612
|
+
if (changeOutput) {
|
3613
|
+
changeOutput.value = new Big(changeOutput.value).plus(transactionFee).plus(withdrawFee).toNumber();
|
3614
|
+
const remainingInputs = [...inputs];
|
3615
|
+
let smallestInput = Math.min.apply(
|
3616
|
+
null,
|
3617
|
+
remainingInputs.map((input) => input.value)
|
3618
|
+
);
|
3619
|
+
let remainingChangeAmount = changeOutput.value;
|
3620
|
+
while (remainingChangeAmount >= smallestInput && smallestInput > 0 && remainingInputs.length > 0) {
|
3621
|
+
remainingChangeAmount -= smallestInput;
|
3622
|
+
changeOutput.value = remainingChangeAmount;
|
3623
|
+
const smallestInputIndex = remainingInputs.findIndex(
|
3624
|
+
(input) => input.value === smallestInput
|
3625
|
+
);
|
3626
|
+
if (smallestInputIndex > -1) {
|
3627
|
+
remainingInputs.splice(smallestInputIndex, 1);
|
3628
|
+
}
|
3629
|
+
smallestInput = Math.min.apply(
|
3630
|
+
null,
|
3631
|
+
remainingInputs.map((input) => input.value)
|
3632
|
+
);
|
3633
|
+
}
|
3634
|
+
const minChangeAmount = Number(brgConfig.min_change_amount);
|
3635
|
+
let additionalFee = 0;
|
3636
|
+
if (changeOutput.value === 0) {
|
3637
|
+
outputs = outputs.filter((item) => item.value !== 0);
|
3638
|
+
} else if (changeOutput.value < minChangeAmount) {
|
3639
|
+
additionalFee = minChangeAmount - changeOutput.value;
|
3640
|
+
recipientOutput.value -= additionalFee;
|
3641
|
+
changeOutput.value = minChangeAmount;
|
3642
|
+
}
|
3614
3643
|
} else {
|
3615
|
-
|
3616
|
-
address:
|
3617
|
-
value: new Big(
|
3644
|
+
changeOutput = {
|
3645
|
+
address: changeAddress,
|
3646
|
+
value: new Big(transactionFee).plus(withdrawFee).toNumber()
|
3618
3647
|
};
|
3619
|
-
outputs.push(
|
3648
|
+
outputs.push(changeOutput);
|
3620
3649
|
}
|
3621
3650
|
const insufficientOutput = outputs.some((item) => item.value < 0);
|
3622
3651
|
if (insufficientOutput) {
|
@@ -3624,7 +3653,7 @@ function getWithdrawTransaction(_0) {
|
|
3624
3653
|
}
|
3625
3654
|
const inputSum = inputs.reduce((sum, cur) => sum + Number(cur.value), 0);
|
3626
3655
|
const outputSum = outputs.reduce((sum, cur) => sum + Number(cur.value), 0);
|
3627
|
-
if (
|
3656
|
+
if (transactionFee + outputSum !== inputSum) {
|
3628
3657
|
throw new Error("compute error");
|
3629
3658
|
}
|
3630
3659
|
const network = yield getNetwork();
|
@@ -4328,11 +4357,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4328
4357
|
tokenId: currentConfig.nearToken,
|
4329
4358
|
env
|
4330
4359
|
});
|
4331
|
-
const { balance: btcBalance } = yield getTokenBalance({
|
4332
|
-
csna: accountId,
|
4333
|
-
tokenId: currentConfig.btcToken,
|
4334
|
-
env
|
4335
|
-
});
|
4336
4360
|
const transferAmount = transactions2.reduce(
|
4337
4361
|
(acc, tx) => {
|
4338
4362
|
tx.actions.forEach((action) => {
|
@@ -4352,12 +4376,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4352
4376
|
{ near: new Big2(0), btc: new Big2(0) }
|
4353
4377
|
);
|
4354
4378
|
const nearAvailableBalance = new Big2(nearBalance).minus(transferAmount.near).toNumber();
|
4355
|
-
const btcAvailableBalance = new Big2(btcBalance).minus(transferAmount.btc).toNumber();
|
4356
|
-
if (btcAvailableBalance < 8e-6) {
|
4357
|
-
throw new Error("BTC balance is not enough, please deposit more BTC.");
|
4358
|
-
}
|
4359
4379
|
console.log("available near balance:", nearAvailableBalance);
|
4360
|
-
console.log("available btc balance:", btcAvailableBalance);
|
4361
4380
|
console.log("available gas token balance:", gasTokenBalance);
|
4362
4381
|
const convertTx = yield Promise.all(
|
4363
4382
|
transactions2.map((transaction, index) => convertTransactionToTxHex(transaction, index))
|
@@ -4505,7 +4524,7 @@ function setupBTCWallet({
|
|
4505
4524
|
|
4506
4525
|
// src/index.ts
|
4507
4526
|
var getVersion = () => {
|
4508
|
-
return "0.5.
|
4527
|
+
return "0.5.14-beta";
|
4509
4528
|
};
|
4510
4529
|
if (typeof window !== "undefined") {
|
4511
4530
|
window.__BTC_WALLET_VERSION = getVersion();
|