@witnet/sdk 1.1.3 → 1.2.0
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/.env_witnet +13 -1
- package/dist/package.json +31 -24
- package/dist/src/bin/helpers.d.ts +59 -49
- package/dist/src/bin/helpers.d.ts.map +1 -1
- package/dist/src/bin/helpers.js +228 -229
- package/dist/src/index.d.ts +3 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -47
- package/dist/src/lib/crypto/account.d.ts +3 -3
- package/dist/src/lib/crypto/account.d.ts.map +1 -1
- package/dist/src/lib/crypto/account.js +31 -25
- package/dist/src/lib/crypto/coinbase.d.ts +4 -4
- package/dist/src/lib/crypto/coinbase.d.ts.map +1 -1
- package/dist/src/lib/crypto/coinbase.js +8 -13
- package/dist/src/lib/crypto/index.d.ts +7 -7
- package/dist/src/lib/crypto/index.d.ts.map +1 -1
- package/dist/src/lib/crypto/index.js +7 -30
- package/dist/src/lib/crypto/interfaces.d.ts +5 -5
- package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
- package/dist/src/lib/crypto/interfaces.js +2 -3
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +5 -5
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.js +107 -95
- package/dist/src/lib/crypto/payloads/StakePayload.d.ts +3 -4
- package/dist/src/lib/crypto/payloads/StakePayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/StakePayload.js +81 -71
- package/dist/src/lib/crypto/payloads/UnstakePayload.d.ts +4 -5
- package/dist/src/lib/crypto/payloads/UnstakePayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/UnstakePayload.js +36 -43
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.d.ts +3 -4
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +46 -48
- package/dist/src/lib/crypto/payloads.d.ts +5 -5
- package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads.js +44 -45
- package/dist/src/lib/crypto/signer.d.ts +3 -3
- package/dist/src/lib/crypto/signer.d.ts.map +1 -1
- package/dist/src/lib/crypto/signer.js +45 -88
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts +6 -6
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +6 -10
- package/dist/src/lib/crypto/transmitters/StakeDeposits.d.ts +5 -5
- package/dist/src/lib/crypto/transmitters/StakeDeposits.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/StakeDeposits.js +7 -11
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.d.ts +6 -7
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +9 -13
- package/dist/src/lib/crypto/transmitters/ValueTransfers.d.ts +5 -5
- package/dist/src/lib/crypto/transmitters/ValueTransfers.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/ValueTransfers.js +6 -10
- package/dist/src/lib/crypto/transmitters.d.ts +6 -6
- package/dist/src/lib/crypto/transmitters.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters.js +88 -76
- package/dist/src/lib/crypto/types.d.ts +1 -2
- package/dist/src/lib/crypto/types.d.ts.map +1 -1
- package/dist/src/lib/crypto/types.js +71 -67
- package/dist/src/lib/crypto/utils.d.ts +5 -5
- package/dist/src/lib/crypto/utils.d.ts.map +1 -1
- package/dist/src/lib/crypto/utils.js +48 -66
- package/dist/src/lib/crypto/wallet.d.ts +3 -3
- package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
- package/dist/src/lib/crypto/wallet.js +72 -89
- package/dist/src/lib/index.d.ts +5 -4
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +6 -44
- package/dist/src/lib/radon/ccdr/eth.d.ts +1 -1
- package/dist/src/lib/radon/ccdr/eth.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/eth.js +95 -83
- package/dist/src/lib/radon/ccdr/index.d.ts +2 -2
- package/dist/src/lib/radon/ccdr/index.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/index.js +3 -39
- package/dist/src/lib/radon/ccdr/wit.d.ts +2 -2
- package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +17 -19
- package/dist/src/lib/radon/filters.d.ts.map +1 -1
- package/dist/src/lib/radon/filters.js +23 -19
- package/dist/src/lib/radon/index.d.ts +10 -11
- package/dist/src/lib/radon/index.d.ts.map +1 -1
- package/dist/src/lib/radon/index.js +205 -187
- package/dist/src/lib/radon/reducers.d.ts +2 -2
- package/dist/src/lib/radon/reducers.d.ts.map +1 -1
- package/dist/src/lib/radon/reducers.js +48 -34
- package/dist/src/lib/radon/types.d.ts +2 -2
- package/dist/src/lib/radon/types.d.ts.map +1 -1
- package/dist/src/lib/radon/types.js +80 -110
- package/dist/src/lib/radon/utils.d.ts +3 -3
- package/dist/src/lib/radon/utils.d.ts.map +1 -1
- package/dist/src/lib/radon/utils.js +49 -52
- package/dist/src/lib/rest/kermit.d.ts +20 -0
- package/dist/src/lib/rest/kermit.d.ts.map +1 -0
- package/dist/src/lib/rest/kermit.js +68 -0
- package/dist/src/lib/rest/types.d.ts +5 -0
- package/dist/src/lib/rest/types.d.ts.map +1 -0
- package/dist/src/lib/rest/types.js +2 -0
- package/dist/src/lib/rpc/index.d.ts +2 -2
- package/dist/src/lib/rpc/index.d.ts.map +1 -1
- package/dist/src/lib/rpc/index.js +3 -19
- package/dist/src/lib/rpc/nodes.d.ts +13 -13
- package/dist/src/lib/rpc/nodes.d.ts.map +1 -1
- package/dist/src/lib/rpc/nodes.js +69 -98
- package/dist/src/lib/rpc/provider.d.ts +4 -4
- package/dist/src/lib/rpc/provider.d.ts.map +1 -1
- package/dist/src/lib/rpc/provider.js +111 -125
- package/dist/src/lib/rpc/types.d.ts +2 -2
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +13 -16
- package/dist/src/lib/types.d.ts +5 -4
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +3 -9
- package/dist/src/lib/utils.d.ts +5 -5
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +40 -99
- package/dist/witnet/assets/index.cjs +6 -0
- package/dist/witnet/assets/index.d.cts +29 -0
- package/dist/witnet/assets/index.d.cts.map +1 -0
- package/dist/witnet/assets/modals/index.cjs +9 -0
- package/dist/witnet/assets/modals/index.d.cts +16 -0
- package/dist/witnet/assets/modals/index.d.cts.map +1 -0
- package/dist/witnet/assets/modals/web3/eth.cjs +23 -0
- package/dist/witnet/assets/modals/web3/eth.d.cts +4 -0
- package/dist/witnet/assets/modals/web3/eth.d.cts.map +1 -0
- package/dist/witnet/assets/modals/web3/ipfs.cjs +18 -0
- package/dist/witnet/assets/modals/web3/ipfs.d.cts +3 -0
- package/dist/witnet/assets/modals/web3/ipfs.d.cts.map +1 -0
- package/dist/witnet/assets/modals/web3/wit.cjs +24 -0
- package/dist/witnet/assets/modals/web3/wit.d.cts +3 -0
- package/dist/witnet/assets/modals/web3/wit.d.cts.map +1 -0
- package/dist/witnet/assets/requests.cjs +43 -0
- package/dist/witnet/assets/requests.d.cts +10 -0
- package/dist/witnet/assets/requests.d.cts.map +1 -0
- package/package.json +31 -24
- package/src/bin/bots/watcher.cjs +354 -0
- package/src/bin/cli/history.cjs +31 -0
- package/src/bin/cli/inspect.js +545 -471
- package/src/bin/cli/network.js +658 -557
- package/src/bin/cli/nodes.js +392 -332
- package/src/bin/cli/radon.js +1071 -844
- package/src/bin/cli/wallet.js +1317 -1074
- package/src/bin/helpers.js +969 -868
- package/src/bin/index.js +329 -0
- package/witnet/assets/_index.cjs +5 -0
- package/witnet/assets/_requests.cjs +25 -0
- package/witnet/assets/_sources.cjs +36 -0
- package/witnet/assets/_templates.cjs +36 -0
- package/witnet/assets/index.cjs +4 -0
- package/witnet/assets/modals/index.cjs +7 -0
- package/witnet/assets/modals/web3/eth.cjs +27 -0
- package/witnet/assets/modals/web3/ipfs.cjs +22 -0
- package/witnet/assets/modals/web3/wit.cjs +28 -0
- package/witnet/assets/requests.cjs +49 -0
- package/witnet/witnet copy.proto +457 -0
- package/witnet/witnet.proto +456 -0
- package/witnet/witnet_toolkit-1.6.7-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-1.7.1-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.0-rc.7-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.2-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.21-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.7-x86_64-pc-windows-msvc.exe +0 -0
- package/witnet/witnet_toolkit-2.0.8-x86_64-pc-windows-msvc.exe +0 -0
- package/dist/witnet/assets/index.d.ts +0 -29
- package/dist/witnet/assets/index.d.ts.map +0 -1
- package/dist/witnet/assets/index.js +0 -6
- package/dist/witnet/assets/modals/index.d.ts +0 -16
- package/dist/witnet/assets/modals/index.d.ts.map +0 -1
- package/dist/witnet/assets/modals/index.js +0 -11
- package/dist/witnet/assets/modals/web3/eth.d.ts +0 -5
- package/dist/witnet/assets/modals/web3/eth.d.ts.map +0 -1
- package/dist/witnet/assets/modals/web3/eth.js +0 -26
- package/dist/witnet/assets/modals/web3/ipfs.d.ts +0 -4
- package/dist/witnet/assets/modals/web3/ipfs.d.ts.map +0 -1
- package/dist/witnet/assets/modals/web3/ipfs.js +0 -18
- package/dist/witnet/assets/modals/web3/wit.d.ts +0 -4
- package/dist/witnet/assets/modals/web3/wit.d.ts.map +0 -1
- package/dist/witnet/assets/modals/web3/wit.js +0 -17
- package/dist/witnet/assets/requests.d.ts +0 -11
- package/dist/witnet/assets/requests.d.ts.map +0 -1
- package/dist/witnet/assets/requests.js +0 -43
- package/src/bin/cli/history.js +0 -31
- package/src/bin/postinstall.js +0 -9
- package/src/bin/toolkit.js +0 -290
- package/witnet/assets/_index.js +0 -8
- package/witnet/assets/_requests.js +0 -25
- package/witnet/assets/_sources.js +0 -36
- package/witnet/assets/_templates.js +0 -36
- package/witnet/assets/index.js +0 -4
- package/witnet/assets/modals/index.js +0 -9
- package/witnet/assets/modals/web3/eth.js +0 -29
- package/witnet/assets/modals/web3/ipfs.js +0 -22
- package/witnet/assets/modals/web3/wit.js +0 -21
- package/witnet/assets/requests.js +0 -49
- /package/witnet/assets/modals/web3/{btc.js → btc.cjs} +0 -0
- /package/witnet/assets/modals/web3/{sol.js → sol.cjs} +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const { RadonModal, RadonScript, retrievals, types, } = require("../../../../dist/src/lib/radon/index.js");
|
|
3
|
+
module.exports = {
|
|
4
|
+
WitOracleEthBlockNumber: new RadonModal({
|
|
5
|
+
retrieval: retrievals.JsonRPC({
|
|
6
|
+
rpc: retrievals.rpc.eth.blockNumber(),
|
|
7
|
+
script: RadonScript(types.RadonString).asFloat().floor(),
|
|
8
|
+
}),
|
|
9
|
+
}),
|
|
10
|
+
WitOracleEthGetBalance: new RadonModal({
|
|
11
|
+
retrieval: retrievals.JsonRPC({
|
|
12
|
+
rpc: retrievals.rpc.eth.getBalance("\\0\\"),
|
|
13
|
+
script: RadonScript(types.RadonString).asFloat().floor(),
|
|
14
|
+
}),
|
|
15
|
+
}),
|
|
16
|
+
WitOracleEthGetTransactionReceipt: new RadonModal({
|
|
17
|
+
retrieval: retrievals.JsonRPC({
|
|
18
|
+
rpc: retrievals.rpc.eth.getTransactionByHash("\\0\\"),
|
|
19
|
+
script: RadonScript(types.RadonString).parseJSONMap(),
|
|
20
|
+
}),
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoLmNqcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3dpdG5ldC9hc3NldHMvbW9kYWxzL3dlYjMvZXRoLmNqcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUNMLFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLEtBQUssR0FDTCxHQUFHLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0FBRXZELE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDaEIsdUJBQXVCLEVBQUUsSUFBSSxVQUFVLENBQUM7UUFDdkMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDN0IsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtZQUNyQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUU7U0FDeEQsQ0FBQztLQUNGLENBQUM7SUFDRixzQkFBc0IsRUFBRSxJQUFJLFVBQVUsQ0FBQztRQUN0QyxTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUM3QixHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUMzQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUU7U0FDeEQsQ0FBQztLQUNGLENBQUM7SUFDRixpQ0FBaUMsRUFBRSxJQUFJLFVBQVUsQ0FBQztRQUNqRCxTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUM3QixHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDO1lBQ3JELE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksRUFBRTtTQUNyRCxDQUFDO0tBQ0YsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7XHJcblx0UmFkb25Nb2RhbCxcclxuXHRSYWRvblNjcmlwdCxcclxuXHRyZXRyaWV2YWxzLFxyXG5cdHR5cGVzLFxyXG59ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL2Rpc3Qvc3JjL2xpYi9yYWRvbi9pbmRleC5qc1wiKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG5cdFdpdE9yYWNsZUV0aEJsb2NrTnVtYmVyOiBuZXcgUmFkb25Nb2RhbCh7XHJcblx0XHRyZXRyaWV2YWw6IHJldHJpZXZhbHMuSnNvblJQQyh7XHJcblx0XHRcdHJwYzogcmV0cmlldmFscy5ycGMuZXRoLmJsb2NrTnVtYmVyKCksXHJcblx0XHRcdHNjcmlwdDogUmFkb25TY3JpcHQodHlwZXMuUmFkb25TdHJpbmcpLmFzRmxvYXQoKS5mbG9vcigpLFxyXG5cdFx0fSksXHJcblx0fSksXHJcblx0V2l0T3JhY2xlRXRoR2V0QmFsYW5jZTogbmV3IFJhZG9uTW9kYWwoe1xyXG5cdFx0cmV0cmlldmFsOiByZXRyaWV2YWxzLkpzb25SUEMoe1xyXG5cdFx0XHRycGM6IHJldHJpZXZhbHMucnBjLmV0aC5nZXRCYWxhbmNlKFwiXFxcXDBcXFxcXCIpLFxyXG5cdFx0XHRzY3JpcHQ6IFJhZG9uU2NyaXB0KHR5cGVzLlJhZG9uU3RyaW5nKS5hc0Zsb2F0KCkuZmxvb3IoKSxcclxuXHRcdH0pLFxyXG5cdH0pLFxyXG5cdFdpdE9yYWNsZUV0aEdldFRyYW5zYWN0aW9uUmVjZWlwdDogbmV3IFJhZG9uTW9kYWwoe1xyXG5cdFx0cmV0cmlldmFsOiByZXRyaWV2YWxzLkpzb25SUEMoe1xyXG5cdFx0XHRycGM6IHJldHJpZXZhbHMucnBjLmV0aC5nZXRUcmFuc2FjdGlvbkJ5SGFzaChcIlxcXFwwXFxcXFwiKSxcclxuXHRcdFx0c2NyaXB0OiBSYWRvblNjcmlwdCh0eXBlcy5SYWRvblN0cmluZykucGFyc2VKU09OTWFwKCksXHJcblx0XHR9KSxcclxuXHR9KSxcclxufTtcclxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth.d.cts","sourceRoot":"","sources":["../../../../../witnet/assets/modals/web3/eth.cjs"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const { RadonModal, RadonScript, retrievals, types, } = require("../../../../dist/src/lib/radon/index.js");
|
|
3
|
+
module.exports = {
|
|
4
|
+
WitOracleIpfsFileExists: new RadonModal({
|
|
5
|
+
retrieval: retrievals.HttpHead({
|
|
6
|
+
script: RadonScript(types.RadonMap)
|
|
7
|
+
.getString("etag")
|
|
8
|
+
.slice(1, -1)
|
|
9
|
+
.match(types.RadonBoolean, { "\\0\\": true }, false),
|
|
10
|
+
}),
|
|
11
|
+
}),
|
|
12
|
+
WitOracleIpfsFileSha256: new RadonModal({
|
|
13
|
+
retrieval: retrievals.HttpGet({
|
|
14
|
+
script: RadonScript(types.RadonBytes).hash(),
|
|
15
|
+
}),
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBmcy5janMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aXRuZXQvYXNzZXRzL21vZGFscy93ZWIzL2lwZnMuY2pzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLEVBQ0wsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsS0FBSyxHQUNMLEdBQUcsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7QUFFdkQsTUFBTSxDQUFDLE9BQU8sR0FBRztJQUNoQix1QkFBdUIsRUFBRSxJQUFJLFVBQVUsQ0FBQztRQUN2QyxTQUFTLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM5QixNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2pDLFNBQVMsQ0FBQyxNQUFNLENBQUM7aUJBQ2pCLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ1osS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDO1NBQ3JELENBQUM7S0FDRixDQUFDO0lBQ0YsdUJBQXVCLEVBQUUsSUFBSSxVQUFVLENBQUM7UUFDdkMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDN0IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFO1NBQzVDLENBQUM7S0FDRixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtcclxuXHRSYWRvbk1vZGFsLFxyXG5cdFJhZG9uU2NyaXB0LFxyXG5cdHJldHJpZXZhbHMsXHJcblx0dHlwZXMsXHJcbn0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGlzdC9zcmMvbGliL3JhZG9uL2luZGV4LmpzXCIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcblx0V2l0T3JhY2xlSXBmc0ZpbGVFeGlzdHM6IG5ldyBSYWRvbk1vZGFsKHtcclxuXHRcdHJldHJpZXZhbDogcmV0cmlldmFscy5IdHRwSGVhZCh7XHJcblx0XHRcdHNjcmlwdDogUmFkb25TY3JpcHQodHlwZXMuUmFkb25NYXApXHJcblx0XHRcdFx0LmdldFN0cmluZyhcImV0YWdcIilcclxuXHRcdFx0XHQuc2xpY2UoMSwgLTEpXHJcblx0XHRcdFx0Lm1hdGNoKHR5cGVzLlJhZG9uQm9vbGVhbiwgeyBcIlxcXFwwXFxcXFwiOiB0cnVlIH0sIGZhbHNlKSxcclxuXHRcdH0pLFxyXG5cdH0pLFxyXG5cdFdpdE9yYWNsZUlwZnNGaWxlU2hhMjU2OiBuZXcgUmFkb25Nb2RhbCh7XHJcblx0XHRyZXRyaWV2YWw6IHJldHJpZXZhbHMuSHR0cEdldCh7XHJcblx0XHRcdHNjcmlwdDogUmFkb25TY3JpcHQodHlwZXMuUmFkb25CeXRlcykuaGFzaCgpLFxyXG5cdFx0fSksXHJcblx0fSksXHJcbn07XHJcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipfs.d.cts","sourceRoot":"","sources":["../../../../../witnet/assets/modals/web3/ipfs.cjs"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const { RadonModal, RadonScript, retrievals, types, } = require("../../../../dist/src/lib/radon/index.js");
|
|
3
|
+
module.exports = {
|
|
4
|
+
WitOracleWitGetBalance: new RadonModal({
|
|
5
|
+
retrieval: retrievals.JsonRPC({
|
|
6
|
+
rpc: retrievals.rpc.wit.getBalance("\\0\\"),
|
|
7
|
+
script: RadonScript(types.RadonString)
|
|
8
|
+
.parseJSONMap()
|
|
9
|
+
.getMap("result")
|
|
10
|
+
.values(),
|
|
11
|
+
}),
|
|
12
|
+
}),
|
|
13
|
+
WitOracleWitGetValueTransfer: new RadonModal({
|
|
14
|
+
retrieval: retrievals.JsonRPC({
|
|
15
|
+
rpc: retrievals.rpc.wit.getValueTransfer("\\0\\", "\\1\\"),
|
|
16
|
+
script: RadonScript(types.RadonString)
|
|
17
|
+
.parseJSONMap()
|
|
18
|
+
.getMap("result")
|
|
19
|
+
.getMap("\\1\\")
|
|
20
|
+
.values(),
|
|
21
|
+
}),
|
|
22
|
+
}),
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0LmNqcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3dpdG5ldC9hc3NldHMvbW9kYWxzL3dlYjMvd2l0LmNqcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUNMLFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLEtBQUssR0FDTCxHQUFHLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0FBRXZELE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDaEIsc0JBQXNCLEVBQUUsSUFBSSxVQUFVLENBQUM7UUFDdEMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDN0IsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDM0MsTUFBTSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2lCQUNwQyxZQUFZLEVBQUU7aUJBQ2QsTUFBTSxDQUFDLFFBQVEsQ0FBQztpQkFDaEIsTUFBTSxFQUFFO1NBQ1YsQ0FBQztLQUNGLENBQUM7SUFDRiw0QkFBNEIsRUFBRSxJQUFJLFVBQVUsQ0FBQztRQUM1QyxTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUM3QixHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztZQUMxRCxNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7aUJBQ3BDLFlBQVksRUFBRTtpQkFDZCxNQUFNLENBQUMsUUFBUSxDQUFDO2lCQUNoQixNQUFNLENBQUMsT0FBTyxDQUFDO2lCQUNmLE1BQU0sRUFBRTtTQUNWLENBQUM7S0FDRixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtcclxuXHRSYWRvbk1vZGFsLFxyXG5cdFJhZG9uU2NyaXB0LFxyXG5cdHJldHJpZXZhbHMsXHJcblx0dHlwZXMsXHJcbn0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGlzdC9zcmMvbGliL3JhZG9uL2luZGV4LmpzXCIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcblx0V2l0T3JhY2xlV2l0R2V0QmFsYW5jZTogbmV3IFJhZG9uTW9kYWwoe1xyXG5cdFx0cmV0cmlldmFsOiByZXRyaWV2YWxzLkpzb25SUEMoe1xyXG5cdFx0XHRycGM6IHJldHJpZXZhbHMucnBjLndpdC5nZXRCYWxhbmNlKFwiXFxcXDBcXFxcXCIpLFxyXG5cdFx0XHRzY3JpcHQ6IFJhZG9uU2NyaXB0KHR5cGVzLlJhZG9uU3RyaW5nKVxyXG5cdFx0XHRcdC5wYXJzZUpTT05NYXAoKVxyXG5cdFx0XHRcdC5nZXRNYXAoXCJyZXN1bHRcIilcclxuXHRcdFx0XHQudmFsdWVzKCksXHJcblx0XHR9KSxcclxuXHR9KSxcclxuXHRXaXRPcmFjbGVXaXRHZXRWYWx1ZVRyYW5zZmVyOiBuZXcgUmFkb25Nb2RhbCh7XHJcblx0XHRyZXRyaWV2YWw6IHJldHJpZXZhbHMuSnNvblJQQyh7XHJcblx0XHRcdHJwYzogcmV0cmlldmFscy5ycGMud2l0LmdldFZhbHVlVHJhbnNmZXIoXCJcXFxcMFxcXFxcIiwgXCJcXFxcMVxcXFxcIiksXHJcblx0XHRcdHNjcmlwdDogUmFkb25TY3JpcHQodHlwZXMuUmFkb25TdHJpbmcpXHJcblx0XHRcdFx0LnBhcnNlSlNPTk1hcCgpXHJcblx0XHRcdFx0LmdldE1hcChcInJlc3VsdFwiKVxyXG5cdFx0XHRcdC5nZXRNYXAoXCJcXFxcMVxcXFxcIilcclxuXHRcdFx0XHQudmFsdWVzKCksXHJcblx0XHR9KSxcclxuXHR9KSxcclxufTtcclxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wit.d.cts","sourceRoot":"","sources":["../../../../../witnet/assets/modals/web3/wit.cjs"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const { RadonRequest, RadonScript, filters, reducers, retrievals, types, } = require("../../dist/src/lib/radon/index.js");
|
|
3
|
+
module.exports = {
|
|
4
|
+
defi: {
|
|
5
|
+
tickers: {
|
|
6
|
+
crypto: {
|
|
7
|
+
WitOracleRequestPriceCryptoWitUsdt6: new RadonRequest({
|
|
8
|
+
sources: [
|
|
9
|
+
retrievals.HttpGet({
|
|
10
|
+
url: "https://api.mexc.com/api/v3/ticker/price?symbol=WITUSDT",
|
|
11
|
+
script: RadonScript(types.RadonString)
|
|
12
|
+
.parseJSONMap()
|
|
13
|
+
.getFloat("price")
|
|
14
|
+
.multiply(1e6)
|
|
15
|
+
.round(),
|
|
16
|
+
}),
|
|
17
|
+
],
|
|
18
|
+
sourcesReducer: reducers.Median(filters.Stdev(1.4)),
|
|
19
|
+
witnessReducer: reducers.PriceTally(),
|
|
20
|
+
}),
|
|
21
|
+
WitOracleRequestPriceCryptoUsdtWit9: new RadonRequest({
|
|
22
|
+
sources: [
|
|
23
|
+
retrievals.HttpGet({
|
|
24
|
+
url: "https://api.mexc.com/api/v3/ticker/price?symbol=WITUSDT",
|
|
25
|
+
script: RadonScript(types.RadonString)
|
|
26
|
+
.parseJSONMap()
|
|
27
|
+
.getFloat("price")
|
|
28
|
+
.multiply(1e6)
|
|
29
|
+
.round(),
|
|
30
|
+
}),
|
|
31
|
+
],
|
|
32
|
+
sourcesReducer: reducers.Median(filters.Stdev(1.4)),
|
|
33
|
+
witnessReducer: reducers.PriceTally(),
|
|
34
|
+
}),
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
WitOracleRequestRandomness: new RadonRequest({
|
|
39
|
+
sources: retrievals.RNG(),
|
|
40
|
+
witnessReducer: reducers.ConcatHash(),
|
|
41
|
+
}),
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdHMuY2pzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vd2l0bmV0L2Fzc2V0cy9yZXF1ZXN0cy5janMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sRUFDTCxZQUFZLEVBQ1osV0FBVyxFQUNYLE9BQU8sRUFDUCxRQUFRLEVBQ1IsVUFBVSxFQUNWLEtBQUssR0FDTCxHQUFHLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBRWpELE1BQU0sQ0FBQyxPQUFPLEdBQUc7SUFDaEIsSUFBSSxFQUFFO1FBQ0wsT0FBTyxFQUFFO1lBQ1IsTUFBTSxFQUFFO2dCQUNQLG1DQUFtQyxFQUFFLElBQUksWUFBWSxDQUFDO29CQUNyRCxPQUFPLEVBQUU7d0JBQ1IsVUFBVSxDQUFDLE9BQU8sQ0FBQzs0QkFDbEIsR0FBRyxFQUFFLHlEQUF5RDs0QkFDOUQsTUFBTSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2lDQUNwQyxZQUFZLEVBQUU7aUNBQ2QsUUFBUSxDQUFDLE9BQU8sQ0FBQztpQ0FDakIsUUFBUSxDQUFDLEdBQUcsQ0FBQztpQ0FDYixLQUFLLEVBQUU7eUJBQ1QsQ0FBQztxQkFDRjtvQkFDRCxjQUFjLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuRCxjQUFjLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRTtpQkFDckMsQ0FBQztnQkFDRixtQ0FBbUMsRUFBRSxJQUFJLFlBQVksQ0FBQztvQkFDckQsT0FBTyxFQUFFO3dCQUNSLFVBQVUsQ0FBQyxPQUFPLENBQUM7NEJBQ2xCLEdBQUcsRUFBRSx5REFBeUQ7NEJBQzlELE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztpQ0FDcEMsWUFBWSxFQUFFO2lDQUNkLFFBQVEsQ0FBQyxPQUFPLENBQUM7aUNBQ2pCLFFBQVEsQ0FBQyxHQUFHLENBQUM7aUNBQ2IsS0FBSyxFQUFFO3lCQUNULENBQUM7cUJBQ0Y7b0JBQ0QsY0FBYyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbkQsY0FBYyxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUU7aUJBQ3JDLENBQUM7YUFDRjtTQUNEO0tBQ0Q7SUFDRCwwQkFBMEIsRUFBRSxJQUFJLFlBQVksQ0FBQztRQUM1QyxPQUFPLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUN6QixjQUFjLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRTtLQUNyQyxDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtcclxuXHRSYWRvblJlcXVlc3QsXHJcblx0UmFkb25TY3JpcHQsXHJcblx0ZmlsdGVycyxcclxuXHRyZWR1Y2VycyxcclxuXHRyZXRyaWV2YWxzLFxyXG5cdHR5cGVzLFxyXG59ID0gcmVxdWlyZShcIi4uLy4uL2Rpc3Qvc3JjL2xpYi9yYWRvbi9pbmRleC5qc1wiKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG5cdGRlZmk6IHtcclxuXHRcdHRpY2tlcnM6IHtcclxuXHRcdFx0Y3J5cHRvOiB7XHJcblx0XHRcdFx0V2l0T3JhY2xlUmVxdWVzdFByaWNlQ3J5cHRvV2l0VXNkdDY6IG5ldyBSYWRvblJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0c291cmNlczogW1xyXG5cdFx0XHRcdFx0XHRyZXRyaWV2YWxzLkh0dHBHZXQoe1xyXG5cdFx0XHRcdFx0XHRcdHVybDogXCJodHRwczovL2FwaS5tZXhjLmNvbS9hcGkvdjMvdGlja2VyL3ByaWNlP3N5bWJvbD1XSVRVU0RUXCIsXHJcblx0XHRcdFx0XHRcdFx0c2NyaXB0OiBSYWRvblNjcmlwdCh0eXBlcy5SYWRvblN0cmluZylcclxuXHRcdFx0XHRcdFx0XHRcdC5wYXJzZUpTT05NYXAoKVxyXG5cdFx0XHRcdFx0XHRcdFx0LmdldEZsb2F0KFwicHJpY2VcIilcclxuXHRcdFx0XHRcdFx0XHRcdC5tdWx0aXBseSgxZTYpXHJcblx0XHRcdFx0XHRcdFx0XHQucm91bmQoKSxcclxuXHRcdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHRdLFxyXG5cdFx0XHRcdFx0c291cmNlc1JlZHVjZXI6IHJlZHVjZXJzLk1lZGlhbihmaWx0ZXJzLlN0ZGV2KDEuNCkpLFxyXG5cdFx0XHRcdFx0d2l0bmVzc1JlZHVjZXI6IHJlZHVjZXJzLlByaWNlVGFsbHkoKSxcclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRXaXRPcmFjbGVSZXF1ZXN0UHJpY2VDcnlwdG9Vc2R0V2l0OTogbmV3IFJhZG9uUmVxdWVzdCh7XHJcblx0XHRcdFx0XHRzb3VyY2VzOiBbXHJcblx0XHRcdFx0XHRcdHJldHJpZXZhbHMuSHR0cEdldCh7XHJcblx0XHRcdFx0XHRcdFx0dXJsOiBcImh0dHBzOi8vYXBpLm1leGMuY29tL2FwaS92My90aWNrZXIvcHJpY2U/c3ltYm9sPVdJVFVTRFRcIixcclxuXHRcdFx0XHRcdFx0XHRzY3JpcHQ6IFJhZG9uU2NyaXB0KHR5cGVzLlJhZG9uU3RyaW5nKVxyXG5cdFx0XHRcdFx0XHRcdFx0LnBhcnNlSlNPTk1hcCgpXHJcblx0XHRcdFx0XHRcdFx0XHQuZ2V0RmxvYXQoXCJwcmljZVwiKVxyXG5cdFx0XHRcdFx0XHRcdFx0Lm11bHRpcGx5KDFlNilcclxuXHRcdFx0XHRcdFx0XHRcdC5yb3VuZCgpLFxyXG5cdFx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0XHRzb3VyY2VzUmVkdWNlcjogcmVkdWNlcnMuTWVkaWFuKGZpbHRlcnMuU3RkZXYoMS40KSksXHJcblx0XHRcdFx0XHR3aXRuZXNzUmVkdWNlcjogcmVkdWNlcnMuUHJpY2VUYWxseSgpLFxyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFdpdE9yYWNsZVJlcXVlc3RSYW5kb21uZXNzOiBuZXcgUmFkb25SZXF1ZXN0KHtcclxuXHRcdHNvdXJjZXM6IHJldHJpZXZhbHMuUk5HKCksXHJcblx0XHR3aXRuZXNzUmVkdWNlcjogcmVkdWNlcnMuQ29uY2F0SGFzaCgpLFxyXG5cdH0pLFxyXG59O1xyXG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export namespace defi {
|
|
2
|
+
namespace tickers {
|
|
3
|
+
namespace crypto {
|
|
4
|
+
let WitOracleRequestPriceCryptoWitUsdt6: any;
|
|
5
|
+
let WitOracleRequestPriceCryptoUsdtWit9: any;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export let WitOracleRequestRandomness: any;
|
|
10
|
+
//# sourceMappingURL=requests.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requests.d.cts","sourceRoot":"","sources":["../../../witnet/assets/requests.cjs"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@witnet/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Typescript library and CLI tooling for Web3 buidlers willing to interact with the Witnet blockchain.",
|
|
5
5
|
"author": "Witnet Foundation",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"private": false,
|
|
8
|
-
"type": "
|
|
8
|
+
"type": "module",
|
|
9
9
|
"bin": {
|
|
10
|
-
"
|
|
11
|
-
"
|
|
10
|
+
"watcher": "src/bin/bots/watcher.cjs",
|
|
11
|
+
"witsdk": "src/bin/index.js",
|
|
12
|
+
"witnet-sdk": "src/bin/index.js"
|
|
12
13
|
},
|
|
13
14
|
"files": [
|
|
14
15
|
"dist",
|
|
16
|
+
"src/assets",
|
|
15
17
|
"src/bin",
|
|
16
|
-
"witnet
|
|
17
|
-
"witnet/assets",
|
|
18
|
+
"witnet",
|
|
18
19
|
".env_witnet"
|
|
19
20
|
],
|
|
20
21
|
"exports": {
|
|
@@ -23,7 +24,11 @@
|
|
|
23
24
|
"require": "./dist/src/index.js",
|
|
24
25
|
"default": "./dist/src/index.js"
|
|
25
26
|
},
|
|
26
|
-
"./assets":
|
|
27
|
+
"./assets": {
|
|
28
|
+
"types": "./dist/witnet/assets/*.d.cts",
|
|
29
|
+
"require": "./witnet/assets/index.cjs",
|
|
30
|
+
"default": "./witnet/assets/index.cjs"
|
|
31
|
+
},
|
|
27
32
|
"./utils": {
|
|
28
33
|
"types": "./dist/src/lib/*.d.ts",
|
|
29
34
|
"require": "./dist/src/lib/utils.js",
|
|
@@ -33,40 +38,42 @@
|
|
|
33
38
|
"types": "./dist",
|
|
34
39
|
"dependencies": {
|
|
35
40
|
"@bitcoinerlab/secp256k1": "^1.2.0",
|
|
36
|
-
"axios": "^1.
|
|
41
|
+
"axios": "^1.13.2",
|
|
37
42
|
"bech32": "~2.0.0",
|
|
38
|
-
"bip32": "^
|
|
43
|
+
"bip32": "^5.0.0",
|
|
39
44
|
"cbor": "^10.0.11",
|
|
40
|
-
"
|
|
45
|
+
"commander": "^14.0.2",
|
|
46
|
+
"dotenv": "^17.2.3",
|
|
41
47
|
"ethers": "^6.15.0",
|
|
42
48
|
"graphql-query-compress": "1.2.4",
|
|
43
|
-
"inquirer": "^12.
|
|
49
|
+
"inquirer": "^12.10.0",
|
|
44
50
|
"json-bigint": "^1.0.0",
|
|
45
51
|
"keccak256": "^1.0.6",
|
|
46
52
|
"lodash.merge": "^4.6.2",
|
|
47
53
|
"long": "^5.3.2",
|
|
48
54
|
"moment": "^2.30.1",
|
|
49
|
-
"
|
|
55
|
+
"node-cron": "^4.2.1",
|
|
56
|
+
"promise-poller": "^1.9.1",
|
|
50
57
|
"protobufjs": "^7.5.4",
|
|
51
58
|
"qrcode-terminal": "^0.12.0",
|
|
52
59
|
"secp256k1": "^5.0.1"
|
|
53
60
|
},
|
|
54
61
|
"devDependencies": {
|
|
55
|
-
"@
|
|
62
|
+
"@biomejs/biome": "^2.3.4",
|
|
63
|
+
"@types/cbor": "^5.0.1",
|
|
64
|
+
"@types/json-bigint": "^1.0.4",
|
|
65
|
+
"@types/node": "^24.10.0",
|
|
66
|
+
"@types/promise-poller": "^1.7.4",
|
|
56
67
|
"cross-env": "10.0.0",
|
|
57
|
-
"eslint": "8.56.0",
|
|
58
|
-
"eslint-config-standard": "^17.1.0",
|
|
59
|
-
"eslint-plugin-import": "^2.32.0",
|
|
60
|
-
"eslint-plugin-n": "^17.23.0",
|
|
61
|
-
"eslint-plugin-promise": "^7.2.1",
|
|
62
68
|
"protobufjs-cli": "^1.1.3",
|
|
63
|
-
"typescript": "^5.9.
|
|
69
|
+
"typescript": "^5.9.3"
|
|
64
70
|
},
|
|
65
71
|
"scripts": {
|
|
66
|
-
"build": "pbjs --target json witnet/witnet.proto -o witnet/witnet.proto.json && tsc -p tsconfig.json",
|
|
67
|
-
"
|
|
68
|
-
"fmt
|
|
69
|
-
"
|
|
70
|
-
"
|
|
72
|
+
"build": "pbjs --target json witnet/witnet.proto -o witnet/witnet.proto.json && npm run clean && tsc -p tsconfig.json",
|
|
73
|
+
"clean": "node ./scripts/clean.cjs dist",
|
|
74
|
+
"fmt": "npx biome check",
|
|
75
|
+
"fmt!": "npx biome check --write --unsafe",
|
|
76
|
+
"postinstall": "node scripts/postinstall.cjs",
|
|
77
|
+
"witsdk": "cross-env-shell WITNET_SDK_RADON_ASSETS_PATH='../../../witnet/assets' node ./src/bin/index.js"
|
|
71
78
|
}
|
|
72
79
|
}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
const cron = require("node-cron");
|
|
2
|
+
require("dotenv").config({ quiet: true, path: _spliceFromArgs(process.argv, `--config-path`) });
|
|
3
|
+
const { Command } = require("commander");
|
|
4
|
+
const moment = require("moment")
|
|
5
|
+
const program = new Command();
|
|
6
|
+
|
|
7
|
+
const { utils, Witnet } = require("../../../dist/src/index.js");
|
|
8
|
+
const { version } = require("../../../package.json");
|
|
9
|
+
|
|
10
|
+
const CHECK_BALANCE_SCHEDULE =
|
|
11
|
+
process.env.WITNET_SDK_WATCHER_BALANCE_SCHEDULE || "*/15 * * * *"; // every 15 minutes
|
|
12
|
+
const DRY_RUN_SCHEDULE = process.env.WITNET_SDK_WATCHER_DRY_RUN_SCHEDULE || "* * * * *" // every minute
|
|
13
|
+
const WIT_WALLET_MASTER_KEY = process.env.WITNET_SDK_WALLET_MASTER_KEY;
|
|
14
|
+
|
|
15
|
+
const lastUpdate = {}
|
|
16
|
+
|
|
17
|
+
main();
|
|
18
|
+
|
|
19
|
+
async function main() {
|
|
20
|
+
const headline = `WITNET WATCHER BOT v${version}`;
|
|
21
|
+
console.info("=".repeat(120));
|
|
22
|
+
console.info(headline);
|
|
23
|
+
|
|
24
|
+
program
|
|
25
|
+
.name("npx --package @witnet/sdk watcher")
|
|
26
|
+
.description("Watcher bot for polling and notarizing data feed updates in Witnet.")
|
|
27
|
+
.version(version);
|
|
28
|
+
|
|
29
|
+
program
|
|
30
|
+
.option(
|
|
31
|
+
"--cooldown <secs>",
|
|
32
|
+
"Min. amount of seconds that must elapse before notarizing the next data update in Witnet.",
|
|
33
|
+
process.env.WITNET_SDK_WATCHER_WIT_COOLDOWN_SECS || 900
|
|
34
|
+
)
|
|
35
|
+
.option(
|
|
36
|
+
"--deviation <percentage>",
|
|
37
|
+
"Deviation percentage threshold that will force notarizing a data update in Witnet (numeric data feeds only).",
|
|
38
|
+
process.env.WITNET_SDK_WATCHER_WIT_DEVIATION_PERCENTAGE
|
|
39
|
+
)
|
|
40
|
+
.option(
|
|
41
|
+
"--heartbeat <secs>",
|
|
42
|
+
"If set, max. amount of seconds between data feed updates in Witnet.",
|
|
43
|
+
process.env.WITNET_SDK_WATCHER_WIT_HEARTBEAT_SECS
|
|
44
|
+
)
|
|
45
|
+
.option(
|
|
46
|
+
"--min-balance <wits>",
|
|
47
|
+
"Min. balance threshold",
|
|
48
|
+
process.env.WITNET_SDK_WATCHER_WIT_MIN_BALANCE || 1000.0,
|
|
49
|
+
)
|
|
50
|
+
.option(
|
|
51
|
+
"--network <mainnet|testnet|url>",
|
|
52
|
+
"The name of the Witnet network, or the WIT/RPC provider URL, to connect to.",
|
|
53
|
+
process.env.WITNET_SDK_WATCHER_WIT_NETWORK
|
|
54
|
+
|| process.env.WITNET_SDK_PROVIDER_URL
|
|
55
|
+
|| "mainnet"
|
|
56
|
+
)
|
|
57
|
+
.option(
|
|
58
|
+
"--priority <priority>",
|
|
59
|
+
"Network priority when notarizing data updates in Witnet.",
|
|
60
|
+
process.env.WITNET_SDK_WATCHER_WIT_NETWORK_PRIORITY ||
|
|
61
|
+
Witnet.TransactionPriority.Medium,
|
|
62
|
+
)
|
|
63
|
+
.option(
|
|
64
|
+
"--notarize-errors",
|
|
65
|
+
"If set, eventual data retrieving errors will also get notarized."
|
|
66
|
+
)
|
|
67
|
+
.option(
|
|
68
|
+
"--signer <wit_pkh>",
|
|
69
|
+
"Witnet public key hash in charge of notarizing data updates.",
|
|
70
|
+
process.env.WITNET_SDK_WATCHER_WIT_SIGNER,
|
|
71
|
+
)
|
|
72
|
+
.option(
|
|
73
|
+
"--target <hex>",
|
|
74
|
+
"Either the RAD hash or the actual bytecode of the Radon Request used for detecting data updates.",
|
|
75
|
+
process.env.WITNET_SDK_WATCHER_WIT_RADON_REQUEST
|
|
76
|
+
)
|
|
77
|
+
.option(
|
|
78
|
+
"--witnesses <number>",
|
|
79
|
+
"Size of the witnessing committee when notarizing data updates in Witnet.",
|
|
80
|
+
process.env.WITNET_SDK_WATCHER_WIT_WITNESSES || undefined,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
program.parse();
|
|
84
|
+
|
|
85
|
+
let { deviation, minBalance } = program.opts();
|
|
86
|
+
const {
|
|
87
|
+
debug,
|
|
88
|
+
target,
|
|
89
|
+
cooldown,
|
|
90
|
+
heartbeat,
|
|
91
|
+
network,
|
|
92
|
+
notarizeErrors,
|
|
93
|
+
priority,
|
|
94
|
+
signer,
|
|
95
|
+
witnesses
|
|
96
|
+
} = program.opts();
|
|
97
|
+
|
|
98
|
+
if (!debug) console.debug = () => {};
|
|
99
|
+
|
|
100
|
+
if (!WIT_WALLET_MASTER_KEY) {
|
|
101
|
+
console.error(
|
|
102
|
+
`❌ Fatal: a Witnet wallet's master key is not settled on this environment.`,
|
|
103
|
+
);
|
|
104
|
+
process.exit(0);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const provider = network === "mainnet" ? "https://rpc-01.witnet.io" : (network === "testnet" ? "https://rpc-testnet.witnet.io" : network)
|
|
108
|
+
const wallet = await Witnet.Wallet.fromXprv(WIT_WALLET_MASTER_KEY, {
|
|
109
|
+
limit: 1,
|
|
110
|
+
provider: await Witnet.JsonRpcProvider.fromURL(provider),
|
|
111
|
+
});
|
|
112
|
+
const ledger = wallet.getSigner(signer || wallet.coinbase.pkh);
|
|
113
|
+
if (!ledger) {
|
|
114
|
+
console.error(
|
|
115
|
+
`❌ Fatal: hot wallet address ${signer} not found in wallet!`,
|
|
116
|
+
);
|
|
117
|
+
process.exit(0);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
console.info(`Wit/RPC provider: ${provider}`);
|
|
121
|
+
console.info(
|
|
122
|
+
`Witnet network: WITNET:${wallet.provider.network.toUpperCase()} (${wallet.provider.networkId.toString(16)})`,
|
|
123
|
+
);
|
|
124
|
+
console.info(`Witnet hot wallet: ${ledger.pkh}`);
|
|
125
|
+
console.info(`Network priority: ${priority.toUpperCase()}`);
|
|
126
|
+
console.info(
|
|
127
|
+
`Balance threshold: ${Witnet.Coins.fromWits(minBalance).toString(2)}`,
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
if (!target || !utils.isHexString(target)) {
|
|
131
|
+
console.error(
|
|
132
|
+
`❌ Fatal: a valid hex string must be provided as --target.`,
|
|
133
|
+
);
|
|
134
|
+
process.exit(0);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
let request
|
|
138
|
+
try {
|
|
139
|
+
request = Witnet.Radon.RadonRequest.fromBytecode(target)
|
|
140
|
+
} catch {
|
|
141
|
+
const txs = await wallet.provider.searchDataRequests(target, { limit: 1, mode: "ethereal" })
|
|
142
|
+
if (txs.length > 0 && txs[0]?.query) {
|
|
143
|
+
const bytecode = txs[0].query.rad_bytecode
|
|
144
|
+
request = Witnet.Radon.RadonRequest.fromBytecode(bytecode)
|
|
145
|
+
|
|
146
|
+
} else {
|
|
147
|
+
console.error(
|
|
148
|
+
`❌ Fatal: provided --target is not a valid Radon Request bytecode nor a known Radon Request hash.`
|
|
149
|
+
)
|
|
150
|
+
process.exit(0)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const dataType = request.dataType
|
|
155
|
+
const authorities = request.sources.map(source => source.authority.split(".").slice(-2)[0].toUpperCase())
|
|
156
|
+
console.info(`Radon bytecode: ${request.toBytecode()}`)
|
|
157
|
+
console.info(`Radon RAD hash: ${request.radHash}`)
|
|
158
|
+
console.info(`Radon data type: ${dataType}`)
|
|
159
|
+
console.info(`Data authorities: ${authorities}`)
|
|
160
|
+
if (heartbeat) console.info(`Update heartbeat: ${_commas(heartbeat)} "`);
|
|
161
|
+
if (cooldown) console.info(`Update cool-down: ${_commas(cooldown)} "`);
|
|
162
|
+
|
|
163
|
+
// validate deviation parameter, only on integer or float data feeds
|
|
164
|
+
if (["RadonInteger", "RadonFloat"].includes(request.dataType)) {
|
|
165
|
+
deviation = parseFloat(deviation || 0.0)
|
|
166
|
+
console.info(`Update deviation: ${deviation.toFixed(2)} %`)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// create DR transaction factory
|
|
170
|
+
const DRs = Witnet.DataRequests.from(ledger, request);
|
|
171
|
+
|
|
172
|
+
// schedule signer's balance check
|
|
173
|
+
let balance = Witnet.Coins.fromPedros((await ledger.getBalance()).unlocked);
|
|
174
|
+
minBalance = Witnet.Coins.fromWits(minBalance)
|
|
175
|
+
console.info(
|
|
176
|
+
`Initial balance: ${balance.toString(2)}`,
|
|
177
|
+
);
|
|
178
|
+
if (balance.pedros < minBalance.pedros) {
|
|
179
|
+
console.error(
|
|
180
|
+
`❌ Fatal: hot wallet must be funded with at least ${minBalance.toString(2)}.`,
|
|
181
|
+
);
|
|
182
|
+
process.exit(0);
|
|
183
|
+
} else {
|
|
184
|
+
if (!cron.validate(CHECK_BALANCE_SCHEDULE)) {
|
|
185
|
+
console.error(
|
|
186
|
+
`❌ Fatal: invalid check balance schedule: ${CHECK_BALANCE_SCHEDULE}`,
|
|
187
|
+
);
|
|
188
|
+
process.exit(0);
|
|
189
|
+
}
|
|
190
|
+
console.info(`Checking balance schedule: ${CHECK_BALANCE_SCHEDULE}`);
|
|
191
|
+
cron.schedule(CHECK_BALANCE_SCHEDULE, async () => checkWitnetBalance());
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// schedule data feeding dry runs
|
|
195
|
+
if (!cron.validate(DRY_RUN_SCHEDULE)) {
|
|
196
|
+
console.error(
|
|
197
|
+
`❌ Fatal: invalid dry-run schedule: ${DRY_RUN_SCHEDULE}`,
|
|
198
|
+
)
|
|
199
|
+
process.exit(0)
|
|
200
|
+
}
|
|
201
|
+
console.info(`Dry running schedule: ${DRY_RUN_SCHEDULE}`)
|
|
202
|
+
cron.schedule(DRY_RUN_SCHEDULE, async () => dryRunRadonRequest(), { noOverlap: true })
|
|
203
|
+
|
|
204
|
+
// ----------------------------------------------------------------------------------------------------------------
|
|
205
|
+
async function dryRunRadonRequest() {
|
|
206
|
+
const tag = `[@witnet/sdk/watcher][witnet:${wallet.provider.network}]`
|
|
207
|
+
try {
|
|
208
|
+
let notarize = false
|
|
209
|
+
let dryrun = JSON.parse(await request.execDryRun())
|
|
210
|
+
let result
|
|
211
|
+
if (Object.keys(dryrun).includes("RadonError")) {
|
|
212
|
+
if (notarizeErrors) {
|
|
213
|
+
notarize = true
|
|
214
|
+
result = dryrun.RadonError
|
|
215
|
+
} else {
|
|
216
|
+
throw `Unexpected dry run error: ${JSON.stringify(result)}`
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
} else if (["RadonInteger", "RadonFloat"].includes(dataType) && Object.keys(dryrun).includes(`${dataType}`)) {
|
|
220
|
+
result = parseFloat(dryrun[`${dataType}`])
|
|
221
|
+
if (deviation && lastUpdate?.value) {
|
|
222
|
+
notarize = (Math.abs(result - lastUpdate.value) / lastUpdate.value) >= deviation
|
|
223
|
+
} else {
|
|
224
|
+
notarize = true
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
} else if (!lastUpdate?.value || lastUpdate.value !== result) {
|
|
228
|
+
notarize = true
|
|
229
|
+
}
|
|
230
|
+
console.info(`${tag} Dry run result => ${JSON.stringify(dryrun)}`)
|
|
231
|
+
const clock = Math.floor(Date.now() / 1000)
|
|
232
|
+
const elapsed = clock - (lastUpdate?.timestamp || (clock - cooldown - 1))
|
|
233
|
+
if (!notarize && heartbeat && elapsed >= heartbeat) {
|
|
234
|
+
console.info(`${tag} Notarizing data due to heartbeat after ${elapsed} secs ...`)
|
|
235
|
+
notarize = true
|
|
236
|
+
} else if (notarize) {
|
|
237
|
+
if (!cooldown || elapsed >= cooldown) {
|
|
238
|
+
console.info(`${tag} Notarizing possible data update as provided by ${authorities} ...`)
|
|
239
|
+
} else {
|
|
240
|
+
throw `Postponing possible data update as only ${elapsed} out of ${cooldown} secs elapsed since the last notarized update.`
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (notarize) {
|
|
244
|
+
lastUpdate.timestamp = clock
|
|
245
|
+
lastUpdate.value = result
|
|
246
|
+
return notarizeRadonRequest(tag)
|
|
247
|
+
}
|
|
248
|
+
} catch (err) {
|
|
249
|
+
console.warn(`${tag} ${err}`)
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// ----------------------------------------------------------------------------------------------------------------
|
|
254
|
+
async function notarizeRadonRequest(tag) {
|
|
255
|
+
try {
|
|
256
|
+
// create, sign and send new data request transaction
|
|
257
|
+
let tx = await DRs.sendTransaction({ witnesses, fees: priority })
|
|
258
|
+
console.info(`${tag} RAD hash =>`, tx.radHash);
|
|
259
|
+
console.info(`${tag} DRT hash =>`, tx.hash);
|
|
260
|
+
console.info(`${tag} DRT weight =>`, _commas(tx.weight));
|
|
261
|
+
console.info(`${tag} DRT wtnsss =>`, tx.witnesses);
|
|
262
|
+
console.debug(
|
|
263
|
+
`${tag} DRT inputs =>`,
|
|
264
|
+
tx.tx?.DataRequest?.signatures.length,
|
|
265
|
+
);
|
|
266
|
+
console.info(
|
|
267
|
+
`${tag} DRT cost =>`,
|
|
268
|
+
Witnet.Coins.fromNanowits(
|
|
269
|
+
tx.fees.nanowits + tx.value?.nanowits,
|
|
270
|
+
).toString(2),
|
|
271
|
+
);
|
|
272
|
+
|
|
273
|
+
// await inclusion in Witnet
|
|
274
|
+
tx = await DRs.confirmTransaction(tx.hash, {
|
|
275
|
+
onStatusChange: () => console.info(`${tag} DRT status =>`, tx.status),
|
|
276
|
+
}).catch((err) => {
|
|
277
|
+
throw err;
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
console.debug(
|
|
281
|
+
`${tag} Cache info after confirmation =>`,
|
|
282
|
+
ledger.cacheInfo,
|
|
283
|
+
);
|
|
284
|
+
|
|
285
|
+
// await resolution in Witnet
|
|
286
|
+
let status = tx.status;
|
|
287
|
+
do {
|
|
288
|
+
const report = await ledger.provider.getDataRequest(
|
|
289
|
+
tx.hash,
|
|
290
|
+
"ethereal",
|
|
291
|
+
);
|
|
292
|
+
if (report.status !== status) {
|
|
293
|
+
status = report.status;
|
|
294
|
+
console.info(`${tag} DRT status =>`, report.status);
|
|
295
|
+
}
|
|
296
|
+
if (report.status === "solved" && report?.result) {
|
|
297
|
+
lastUpdate.cborBytes = report.result.cbor_bytes
|
|
298
|
+
const result = utils.cbor.decode(
|
|
299
|
+
utils.fromHexString(report.result.cbor_bytes),
|
|
300
|
+
);
|
|
301
|
+
console.info(`${tag} DRT result =>`, result);
|
|
302
|
+
console.info(`${tag} DRT tmstmp =>`, moment.unix(report.result.timestamp));
|
|
303
|
+
lastUpdate.value = result
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
const delay = (ms) =>
|
|
307
|
+
new Promise((_resolve) => setTimeout(_resolve, ms));
|
|
308
|
+
await delay(5000);
|
|
309
|
+
} while (status !== "solved");
|
|
310
|
+
} catch (err) {
|
|
311
|
+
console.warn(`${tag} ${err}`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// ----------------------------------------------------------------------------------------------------------------
|
|
316
|
+
async function checkWitnetBalance() {
|
|
317
|
+
const tag = `[@witnet/sdk/watcher][witnet:${wallet.provider.network}:${ledger.pkh}]`
|
|
318
|
+
try {
|
|
319
|
+
balance = Witnet.Coins.fromPedros(
|
|
320
|
+
(await ledger.getBalance()).unlocked,
|
|
321
|
+
);
|
|
322
|
+
} catch (err) {
|
|
323
|
+
console.error(
|
|
324
|
+
`${tag} Cannot check balance: ${err}`,
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
console.info(
|
|
328
|
+
`${tag} Balance: ${balance.toString(2)}`,
|
|
329
|
+
);
|
|
330
|
+
if (balance.pedros < minBalance.pedros)
|
|
331
|
+
console.warn(
|
|
332
|
+
`${tag} Low funds !!!`,
|
|
333
|
+
);
|
|
334
|
+
return balance;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
const _commas = (number) => {
|
|
339
|
+
const parts = number.toString().split(".");
|
|
340
|
+
const result =
|
|
341
|
+
parts.length <= 1
|
|
342
|
+
? `${parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",")}`
|
|
343
|
+
: `${parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",")}.${parts[1]}`;
|
|
344
|
+
return result;
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
function _spliceFromArgs(args, flag) {
|
|
348
|
+
const argIndex = args.indexOf(flag)
|
|
349
|
+
if (argIndex >= 0 && args.length > argIndex + 1) {
|
|
350
|
+
const value = args[argIndex + 1]
|
|
351
|
+
args.splice(argIndex, 2)
|
|
352
|
+
return value
|
|
353
|
+
}
|
|
354
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
/// CLI SUBMODULE CONSTANTS ===========================================================================================
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
flags: {
|
|
6
|
+
start: {
|
|
7
|
+
hint: "Epoch from which search starts (default: -2048).",
|
|
8
|
+
param: ":epoch",
|
|
9
|
+
},
|
|
10
|
+
end: {
|
|
11
|
+
hint: "Epoch on which search ends (default: -1).",
|
|
12
|
+
param: ":epoch",
|
|
13
|
+
},
|
|
14
|
+
limit: { hint: "Limit output records (default: 100).", param: ":number" },
|
|
15
|
+
},
|
|
16
|
+
router: {
|
|
17
|
+
miners: {
|
|
18
|
+
hint: "Report most successful miners.",
|
|
19
|
+
},
|
|
20
|
+
requests: {
|
|
21
|
+
hint: "Report most successful data requests.",
|
|
22
|
+
},
|
|
23
|
+
witnesses: {
|
|
24
|
+
hint: "Report most successful witnesses.",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
subcommands: {},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
31
|
+
/// CLI SUBMODULE COMMANDS ============================================================================================
|