@tatumio/doge 2.1.17 → 2.1.19
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +8 -8
- package/src/index.d.ts +1 -0
- package/src/lib/doge.sdk.tx.d.ts +25 -1
- package/src/lib/doge.sdk.tx.js +84 -21
- package/src/lib/doge.sdk.tx.js.map +1 -1
package/package.json
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
{
|
2
2
|
"name": "@tatumio/doge",
|
3
|
-
"version": "2.1.
|
3
|
+
"version": "2.1.19",
|
4
4
|
"license": "MIT",
|
5
5
|
"main": "./src/index.js",
|
6
6
|
"types": "./src/index.d.ts",
|
7
7
|
"dependencies": {
|
8
|
-
"@tatumio/shared-testing-common": "2.1.
|
9
|
-
"@tatumio/api-client": "2.1.
|
8
|
+
"@tatumio/shared-testing-common": "2.1.19",
|
9
|
+
"@tatumio/api-client": "2.1.19",
|
10
10
|
"axios": "^0.26.0",
|
11
11
|
"form-data": "^4.0.0",
|
12
|
-
"@tatumio/shared-testing-btc-based": "2.1.
|
13
|
-
"@tatumio/shared-blockchain-btc-based": "2.1.
|
14
|
-
"@tatumio/shared-abstract-sdk": "2.1.
|
12
|
+
"@tatumio/shared-testing-btc-based": "2.1.19",
|
13
|
+
"@tatumio/shared-blockchain-btc-based": "2.1.19",
|
14
|
+
"@tatumio/shared-abstract-sdk": "2.1.19",
|
15
15
|
"bignumber.js": "^9.0.2",
|
16
|
-
"@tatumio/shared-core": "2.1.
|
16
|
+
"@tatumio/shared-core": "2.1.19",
|
17
17
|
"lodash": "^4.17.21",
|
18
|
-
"@tatumio/shared-blockchain-abstract": "2.1.
|
18
|
+
"@tatumio/shared-blockchain-abstract": "2.1.19",
|
19
19
|
"bip32": "^2.0.5",
|
20
20
|
"bip39": "^3.0.2",
|
21
21
|
"bitcoinjs-lib": "^5.2.0",
|
package/src/index.d.ts
CHANGED
package/src/lib/doge.sdk.tx.d.ts
CHANGED
@@ -1,6 +1,30 @@
|
|
1
1
|
import { ApiServices, DogeTransactionUTXO, DogeTransactionUTXOKMS } from '@tatumio/api-client';
|
2
2
|
import { BtcBasedTx } from '@tatumio/shared-blockchain-btc-based';
|
3
|
-
|
3
|
+
interface DogeTransactionBase {
|
4
|
+
to: Array<{
|
5
|
+
address: string;
|
6
|
+
value: number;
|
7
|
+
}>;
|
8
|
+
fee?: string;
|
9
|
+
changeAddress?: string;
|
10
|
+
}
|
11
|
+
export interface DogeTransactionAddress extends DogeTransactionBase {
|
12
|
+
fromAddress: {
|
13
|
+
address: string;
|
14
|
+
privateKey: string;
|
15
|
+
}[];
|
16
|
+
}
|
17
|
+
interface DogeTransactionAddressKMS extends DogeTransactionBase {
|
18
|
+
fromAddress: {
|
19
|
+
address: string;
|
20
|
+
signatureId: string;
|
21
|
+
index?: number;
|
22
|
+
}[];
|
23
|
+
}
|
24
|
+
export declare type DogeTransactionTypes = DogeTransactionUTXO | DogeTransactionUTXOKMS | DogeTransactionAddress | DogeTransactionAddressKMS;
|
4
25
|
export declare const dogeTransactions: (apiCalls?: {
|
5
26
|
dogeBroadcast: typeof ApiServices.blockchain.doge.dogeBroadcast;
|
27
|
+
getTxByAddress: typeof ApiServices.blockchain.doge.dogeGetTxByAddress;
|
28
|
+
getUtxo: typeof ApiServices.blockchain.doge.dogeGetUtxo;
|
6
29
|
}) => BtcBasedTx<DogeTransactionTypes>;
|
30
|
+
export {};
|
package/src/lib/doge.sdk.tx.js
CHANGED
@@ -9,41 +9,104 @@ const shared_abstract_sdk_1 = require("@tatumio/shared-abstract-sdk");
|
|
9
9
|
const doge_sdk_errors_1 = require("./doge.sdk.errors");
|
10
10
|
const dogeTransactions = (apiCalls = {
|
11
11
|
dogeBroadcast: api_client_1.ApiServices.blockchain.doge.dogeBroadcast,
|
12
|
+
getTxByAddress: api_client_1.ApiServices.blockchain.doge.dogeGetTxByAddress,
|
13
|
+
getUtxo: api_client_1.ApiServices.blockchain.doge.dogeGetUtxo,
|
12
14
|
}) => {
|
13
|
-
// @TODO add support - by address
|
14
15
|
const prepareSignedTransaction = (body) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
15
16
|
try {
|
16
|
-
const {
|
17
|
-
const
|
17
|
+
const { to, fee, changeAddress } = body;
|
18
|
+
const transaction = new bitcore_lib_doge_1.Transaction();
|
18
19
|
const privateKeysToSign = [];
|
19
|
-
|
20
|
-
tx.from({
|
21
|
-
txId: item.txHash,
|
22
|
-
outputIndex: item.index,
|
23
|
-
script: bitcore_lib_doge_1.Script.fromAddress(item.address).toString(),
|
24
|
-
satoshis: shared_abstract_sdk_1.amountUtils.toSatoshis(item.value),
|
25
|
-
});
|
26
|
-
if ('signatureId' in item)
|
27
|
-
privateKeysToSign.push(item.signatureId);
|
28
|
-
else if ('privateKey' in item)
|
29
|
-
privateKeysToSign.push(item.privateKey);
|
30
|
-
}
|
20
|
+
let totalOutputs = shared_abstract_sdk_1.amountUtils.toSatoshis(fee);
|
31
21
|
for (const item of to) {
|
32
|
-
|
22
|
+
const amount = shared_abstract_sdk_1.amountUtils.toSatoshis(item.value);
|
23
|
+
totalOutputs += amount;
|
24
|
+
transaction.to(item.address, amount);
|
25
|
+
}
|
26
|
+
if ('fromUTXO' in body) {
|
27
|
+
for (const item of body.fromUTXO) {
|
28
|
+
transaction.from({
|
29
|
+
txId: item.txHash,
|
30
|
+
outputIndex: item.index,
|
31
|
+
script: bitcore_lib_doge_1.Script.fromAddress(item.address).toString(),
|
32
|
+
satoshis: shared_abstract_sdk_1.amountUtils.toSatoshis(item.value),
|
33
|
+
});
|
34
|
+
if ('signatureId' in item)
|
35
|
+
privateKeysToSign.push(item.signatureId);
|
36
|
+
else if ('privateKey' in item)
|
37
|
+
privateKeysToSign.push(item.privateKey);
|
38
|
+
}
|
39
|
+
}
|
40
|
+
else if ('fromAddress' in body) {
|
41
|
+
let totalInputs = 0;
|
42
|
+
for (const item of body.fromAddress) {
|
43
|
+
const utxos = [];
|
44
|
+
const txs = yield apiCalls.getTxByAddress(item.address, 50, 0, 'incoming');
|
45
|
+
if (totalInputs >= totalOutputs) {
|
46
|
+
break;
|
47
|
+
}
|
48
|
+
for (const tx of txs) {
|
49
|
+
if (totalInputs >= totalOutputs) {
|
50
|
+
break;
|
51
|
+
}
|
52
|
+
if (!tx.outputs || !tx.hash)
|
53
|
+
continue;
|
54
|
+
for (const [i, o] of tx.outputs.entries()) {
|
55
|
+
if (o.address !== item.address) {
|
56
|
+
continue;
|
57
|
+
}
|
58
|
+
if (totalInputs >= totalOutputs) {
|
59
|
+
break;
|
60
|
+
}
|
61
|
+
const utxo = yield getUtxoSilent(tx.hash, i);
|
62
|
+
if (utxo === null) {
|
63
|
+
continue;
|
64
|
+
}
|
65
|
+
utxos.push(utxo);
|
66
|
+
const satoshis = shared_abstract_sdk_1.amountUtils.toSatoshis(utxo.value);
|
67
|
+
totalInputs += satoshis;
|
68
|
+
transaction.from([
|
69
|
+
bitcore_lib_doge_1.Transaction.UnspentOutput.fromObject({
|
70
|
+
txId: tx.hash,
|
71
|
+
outputIndex: i,
|
72
|
+
script: bitcore_lib_doge_1.Script.fromAddress(o.address).toString(),
|
73
|
+
satoshis,
|
74
|
+
}),
|
75
|
+
]);
|
76
|
+
if ('signatureId' in item)
|
77
|
+
privateKeysToSign.push(item.signatureId);
|
78
|
+
else if ('privateKey' in item)
|
79
|
+
privateKeysToSign.push(item.privateKey);
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
transaction.fee(shared_abstract_sdk_1.amountUtils.toSatoshis(fee)).change(changeAddress);
|
85
|
+
if ('fromUTXO' in body && 'signatureId' in body.fromUTXO[0] && body.fromUTXO[0].signatureId) {
|
86
|
+
return JSON.stringify(transaction);
|
33
87
|
}
|
34
|
-
|
35
|
-
|
36
|
-
return JSON.stringify(tx);
|
88
|
+
if ('fromAddress' in body && 'signatureId' in body.fromAddress[0] && body.fromAddress[0].signatureId) {
|
89
|
+
return JSON.stringify(transaction);
|
37
90
|
}
|
38
91
|
for (const pk of privateKeysToSign) {
|
39
|
-
|
92
|
+
transaction.sign(bitcore_lib_doge_1.PrivateKey.fromWIF(pk));
|
40
93
|
}
|
41
|
-
return
|
94
|
+
return transaction.serialize();
|
42
95
|
}
|
43
96
|
catch (e) {
|
44
97
|
throw new doge_sdk_errors_1.DogeSdkError(e);
|
45
98
|
}
|
46
99
|
});
|
100
|
+
function getUtxoSilent(hash, i) {
|
101
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
102
|
+
try {
|
103
|
+
return yield apiCalls.getUtxo(hash, i);
|
104
|
+
}
|
105
|
+
catch (e) {
|
106
|
+
return null;
|
107
|
+
}
|
108
|
+
});
|
109
|
+
}
|
47
110
|
const sendTransaction = (body) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
48
111
|
return apiCalls.dogeBroadcast({
|
49
112
|
txData: yield prepareSignedTransaction(body),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"doge.sdk.tx.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/doge/src/lib/doge.sdk.tx.ts"],"names":[],"mappings":";;;;AAAA,aAAa;AACb,uDAAkE;AAClE,
|
1
|
+
{"version":3,"file":"doge.sdk.tx.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/doge/src/lib/doge.sdk.tx.ts"],"names":[],"mappings":";;;;AAAA,aAAa;AACb,uDAAkE;AAClE,oDAM4B;AAE5B,sEAA0D;AAC1D,uDAAgD;AAgCzC,MAAM,gBAAgB,GAAG,CAC9B,WAII;IACF,aAAa,EAAE,wBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa;IACxD,cAAc,EAAE,wBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB;IAC9D,OAAO,EAAE,wBAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW;CACjD,EACiC,EAAE;IACpC,MAAM,wBAAwB,GAAG,CAAO,IAA0B,EAAmB,EAAE;QACrF,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;YACvC,MAAM,WAAW,GAAG,IAAI,8BAAW,EAAE,CAAA;YAErC,MAAM,iBAAiB,GAAG,EAAE,CAAA;YAC5B,IAAI,YAAY,GAAG,iCAAW,CAAC,UAAU,CAAC,GAAI,CAAC,CAAA;YAC/C,KAAK,MAAM,IAAI,IAAI,EAAE,EAAE;gBACrB,MAAM,MAAM,GAAG,iCAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACjD,YAAY,IAAI,MAAM,CAAA;gBACtB,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;aACrC;YACD,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;oBAChC,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,IAAI,CAAC,MAAM;wBACjB,WAAW,EAAE,IAAI,CAAC,KAAK;wBACvB,MAAM,EAAE,yBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;wBACnD,QAAQ,EAAE,iCAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;qBAC7C,CAAC,CAAA;oBACF,IAAI,aAAa,IAAI,IAAI;wBAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;yBAC9D,IAAI,YAAY,IAAI,IAAI;wBAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;iBACvE;aACF;iBAAM,IAAI,aAAa,IAAI,IAAI,EAAE;gBAChC,IAAI,WAAW,GAAG,CAAC,CAAA;gBACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;oBACnC,MAAM,KAAK,GAAe,EAAE,CAAA;oBAC5B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;oBAE1E,IAAI,WAAW,IAAI,YAAY,EAAE;wBAC/B,MAAK;qBACN;oBACD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;wBACpB,IAAI,WAAW,IAAI,YAAY,EAAE;4BAC/B,MAAK;yBACN;wBACD,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI;4BAAE,SAAQ;wBAErC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;4BACzC,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;gCAC9B,SAAQ;6BACT;4BACD,IAAI,WAAW,IAAI,YAAY,EAAE;gCAC/B,MAAK;6BACN;4BAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;4BAC5C,IAAI,IAAI,KAAK,IAAI,EAAE;gCACjB,SAAQ;6BACT;4BACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;4BAEhB,MAAM,QAAQ,GAAG,iCAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;4BACnD,WAAW,IAAI,QAAQ,CAAA;4BACvB,WAAW,CAAC,IAAI,CAAC;gCACf,8BAAW,CAAC,aAAa,CAAC,UAAU,CAAC;oCACnC,IAAI,EAAE,EAAE,CAAC,IAAI;oCACb,WAAW,EAAE,CAAC;oCACd,MAAM,EAAE,yBAAM,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE;oCAChD,QAAQ;iCACT,CAAC;6BACH,CAAC,CAAA;4BAEF,IAAI,aAAa,IAAI,IAAI;gCAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;iCAC9D,IAAI,YAAY,IAAI,IAAI;gCAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;yBACvE;qBACF;iBACF;aACF;YACD,WAAW,CAAC,GAAG,CAAC,iCAAW,CAAC,UAAU,CAAC,GAAI,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;YAEnE,IAAI,UAAU,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAC3F,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;aACnC;YACD,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBACpG,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;aACnC;YAED,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE;gBAClC,WAAW,CAAC,IAAI,CAAC,6BAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;aACzC;YAED,OAAO,WAAW,CAAC,SAAS,EAAE,CAAA;SAC/B;QAAC,OAAO,CAAM,EAAE;YACf,MAAM,IAAI,8BAAY,CAAC,CAAC,CAAC,CAAA;SAC1B;IACH,CAAC,CAAA,CAAA;IAED,SAAe,aAAa,CAAC,IAAY,EAAE,CAAS;;YAClD,IAAI;gBACF,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;aACvC;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,IAAI,CAAA;aACZ;QACH,CAAC;KAAA;IAED,MAAM,eAAe,GAAG,CAAO,IAA0B,EAA4B,EAAE;QACrF,OAAO,QAAQ,CAAC,aAAa,CAAC;YAC5B,MAAM,EAAE,MAAM,wBAAwB,CAAC,IAAI,CAAC;SAC7C,CAAC,CAAA;IACJ,CAAC,CAAA,CAAA;IAED,OAAO;QACL,eAAe;QACf,wBAAwB;KACzB,CAAA;AACH,CAAC,CAAA;AArHY,QAAA,gBAAgB,oBAqH5B"}
|