btc-wallet 0.5.12-beta → 0.5.13-beta
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.js +47 -18
- package/dist/index.js.map +2 -2
- package/esm/index.js +47 -18
- 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();
|
@@ -4505,7 +4534,7 @@ function setupBTCWallet({
|
|
4505
4534
|
|
4506
4535
|
// src/index.ts
|
4507
4536
|
var getVersion = () => {
|
4508
|
-
return "0.5.
|
4537
|
+
return "0.5.13-beta";
|
4509
4538
|
};
|
4510
4539
|
if (typeof window !== "undefined") {
|
4511
4540
|
window.__BTC_WALLET_VERSION = getVersion();
|