aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-05-21 20:26:14 -0700
committerAdam Soltys <[email protected]>2020-05-21 20:26:14 -0700
commit4f25e328965e8079327600c14e3d5f27a2a42ca4 (patch)
treee15638d3aa1425a06c9b88cc4200a2110264b76d
parent45b998a8b4d4947187d7ea78c12181232a99a3ae (diff)
downloadcoinos-server-4f25e328965e8079327600c14e3d5f27a2a42ca4.tar.gz
coinos-server-4f25e328965e8079327600c14e3d5f27a2a42ca4.zip
create raw transaction
-rw-r--r--package.json5
-rw-r--r--routes/liquid/fee.js107
-rw-r--r--routes/liquid/send.js2
-rw-r--r--yarn.lock3
4 files changed, 73 insertions, 44 deletions
diff --git a/package.json b/package.json
index 04795fcc..045b9fcb 100644
--- a/package.json
+++ b/package.json
@@ -47,5 +47,10 @@
"pino-pretty": "^3.6.1",
"pm2": "^4.4.0",
"prettier": "^1.18.2"
+ },
+ "dependenciesMeta": {
+ "bitcoin-core": {
+ "unplugged": true
+ }
}
}
diff --git a/routes/liquid/fee.js b/routes/liquid/fee.js
index 659d9a25..0e52bf1e 100644
--- a/routes/liquid/fee.js
+++ b/routes/liquid/fee.js
@@ -24,66 +24,87 @@ module.exports = async (req, res) => {
if (feeRate) params.feeRate = (feeRate / SATS).toFixed(8);
let info = await lq.getAddressInfo(address);
- l.info(info);
- tx = await lq.walletCreateFundedPsbt(
+ tx = await lq.createRawTransaction(
[],
{
- [address]: value,
+ [address]: (amount / SATS).toFixed(8),
},
0,
- params
+ false,
+ {
+ [address]: asset,
+ }
);
- let decoded = await lq.decodePsbt(tx.psbt);
+ tx = await lq.fundRawTransaction(tx, params);
- let {
- tx: { vin, vout },
- } = decoded;
+ /*
+ let psbt;
+ if (asset === config.liquid.btcasset) {
+ psbt = await lq.convertToPsbt(tx.hex);
+ let decoded = await lq.decodePsbt(psbt);
- l.info(decoded);
- let change, fee;
- for (let i = 0; i < vout.length; i++) {
- l.info("vout", vout[i]);
- if (vout[i].scriptPubKey) {
- if (vout[i].scriptPubKey.type === "fee") fee = vout.splice(i, 1)[0];
- else if (!(vout[i].scriptPubKey.addresses.includes(info.unconfidential)))
- change = vout[i];
+ let {
+ tx: { vin, vout },
+ } = decoded;
+
+ let change, fee;
+ for (let i = 0; i < vout.length; i++) {
+ if (vout[i].scriptPubKey) {
+ if (vout[i].scriptPubKey.type === "fee") fee = vout.splice(i, 1)[0];
+ else if (
+ !vout[i].scriptPubKey.addresses.includes(info.unconfidential)
+ )
+ change = vout[i];
+ }
}
- }
- if (!change) {
- change = {
- value: 0,
- scriptPubKey:
- { addresses: [(await lq.getAddressInfo(await lq.getNewAddress())).unconfidential] },
- }
- }
+ if (!change) {
+ change = {
+ value: 0,
+ scriptPubKey: {
+ addresses: [
+ (await lq.getAddressInfo(await lq.getNewAddress()))
+ .unconfidential,
+ ],
+ },
+ };
+ }
- let psbt = await lq.createPsbt(
- vin.map((input) => ({
- txid: input.txid,
- vout: input.vout,
- sequence: input.sequence,
- })),
- [
+ psbt = await lq.createPsbt(
+ vin.map((input) => ({
+ txid: input.txid,
+ vout: input.vout,
+ sequence: input.sequence,
+ })),
+ [
+ {
+ [change.scriptPubKey.addresses[0]]: (
+ change.value + fee.value
+ ).toFixed(8),
+ },
+ { [address]: value },
+ ],
+ 0,
+ false,
{
- [change.scriptPubKey.addresses[0]]: (
- change.value + fee.value
- ).toFixed(8),
- },
- { [address]: value },
- ]
- );
+ [address]: asset,
+ [change.scriptPubKey.addresses[0]]: asset,
+ fee: config.liquid.btcasset,
+ }
+ );
+ }
+ */
- let blinded = await lq.blindPsbt(tx.psbt);
- let signed = await lq.walletSignPsbt(blinded);
+ let blinded = await lq.blindRawTransaction(tx.hex);
+ let signed = await lq.signRawTransaction(blinded);
- decoded = await lq.decodePsbt(signed.psbt);
- feeRate = Math.round((decoded.fees.bitcoin * SATS * 1000) / decoded.tx.vsize);
+ decoded = await lq.decodeRawTransaction(signed.hex);
+ feeRate = Math.round((tx.fee * SATS * 1000) / decoded.vsize);
l.info("estimated", asset, feeRate);
- res.send({ feeRate, tx, psbt });
+ res.send({ feeRate, tx, /* psbt */ });
} catch (e) {
l.error("error estimating liquid fee", e.message);
return res.status(500).send(e.message);
diff --git a/routes/liquid/send.js b/routes/liquid/send.js
index 89e9d8b7..a0d2c232 100644
--- a/routes/liquid/send.js
+++ b/routes/liquid/send.js
@@ -9,7 +9,7 @@ module.exports = async (req, res) => {
const isChange = async address =>
(await lq.getAddressInfo(address)).ismine &&
- (!Object.keys(addresses).includes(address) || address === user.liquid);
+ (!Object.keys(addresses).includes(address) || address === user.liquid || address === user.confidential);
let decoded = await lq.decodePsbt(psbt);
diff --git a/yarn.lock b/yarn.lock
index e1d14e67..ad64b94c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1352,6 +1352,9 @@ __metadata:
uuid: ^3.3.2
ws: ^7.1.2
zeromq: ^5.1.0
+ dependenciesMeta:
+ bitcoin-core:
+ unplugged: true
languageName: unknown
linkType: soft