btc-wallet 0.5.12-beta → 0.5.14-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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();
|