@tradelayerprotocol/tradelayer 1.9.1

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.
Files changed (249) hide show
  1. package/.claude/settings.local.json +13 -0
  2. package/.claude/skills/tl-algo/SKILL.md +255 -0
  3. package/.gitattributes +2 -0
  4. package/.github/workflows/publish.yaml +26 -0
  5. package/4mm.js +163 -0
  6. package/LICENSE +21 -0
  7. package/NPMSwapRefactor.zip +0 -0
  8. package/README.md +217 -0
  9. package/address.sh +26 -0
  10. package/algoAPI.js +581 -0
  11. package/analyzepsbt.js +92 -0
  12. package/apiEx.js +99 -0
  13. package/bb_hyperscalper.js +290 -0
  14. package/bbo_demo.js +111 -0
  15. package/buyer.js +622 -0
  16. package/client.js +50 -0
  17. package/createTxTest.js +26 -0
  18. package/createWallet.js +75 -0
  19. package/daytrader.js +531 -0
  20. package/decodeTest.js +69 -0
  21. package/fundingManager.js +144 -0
  22. package/index.js +4 -0
  23. package/listener.js +27 -0
  24. package/litecoreTxBuilder.js +1128 -0
  25. package/mmEx.js +356 -0
  26. package/networks.js +51 -0
  27. package/orderbook.js +200 -0
  28. package/package.json +34 -0
  29. package/perTradeQueue.js +36 -0
  30. package/projectsTLNPMTLNPM/package-lock.json +162 -0
  31. package/projectsTLNPMTLNPM/package.json +5 -0
  32. package/quick.js +32 -0
  33. package/quickFut.js +37 -0
  34. package/quickSell.js +37 -0
  35. package/relayerClient.js +117 -0
  36. package/run4mm.js +80 -0
  37. package/run_bbo_tracker.js +241 -0
  38. package/seller.js +443 -0
  39. package/session.js +45 -0
  40. package/setup-lin-ltc.sh +139 -0
  41. package/setup-lin.sh +203 -0
  42. package/setup-win-ltc.bat +108 -0
  43. package/setup-win.bat +167 -0
  44. package/spam_screamer_futures.js +222 -0
  45. package/tradelayer.js/.gitattributes +2 -0
  46. package/tradelayer.js/README.md +2 -0
  47. package/tradelayer.js/oldTests/activationTest.js +6 -0
  48. package/tradelayer.js/oldTests/base58.test.js +23 -0
  49. package/tradelayer.js/oldTests/base64Decode.test.js +16 -0
  50. package/tradelayer.js/oldTests/blocksRefactor.js +140 -0
  51. package/tradelayer.js/oldTests/checkVestBalance.js +25 -0
  52. package/tradelayer.js/oldTests/consensusHashProto.js +151 -0
  53. package/tradelayer.js/oldTests/contractOrderbook.js +243 -0
  54. package/tradelayer.js/oldTests/createPayload.js +0 -0
  55. package/tradelayer.js/oldTests/createTestnetAddr.js +43 -0
  56. package/tradelayer.js/oldTests/decode.js +205 -0
  57. package/tradelayer.js/oldTests/decodeTest.js +50 -0
  58. package/tradelayer.js/oldTests/displayTallyMap.js +19 -0
  59. package/tradelayer.js/oldTests/encodeDecode.js +340 -0
  60. package/tradelayer.js/oldTests/expressTest.js +29 -0
  61. package/tradelayer.js/oldTests/extractBlocksVanilla.js +214 -0
  62. package/tradelayer.js/oldTests/extractBlocksVanillaa.js +179 -0
  63. package/tradelayer.js/oldTests/extractPubkeyTest.js +60 -0
  64. package/tradelayer.js/oldTests/fillInputCacheProto.js +111 -0
  65. package/tradelayer.js/oldTests/getRawTxTest.js +22 -0
  66. package/tradelayer.js/oldTests/indexTest.js +26 -0
  67. package/tradelayer.js/oldTests/initTokensTest.js +32 -0
  68. package/tradelayer.js/oldTests/interfaceChild.js +129 -0
  69. package/tradelayer.js/oldTests/listenerChild.js +112 -0
  70. package/tradelayer.js/oldTests/opdecode.js +26 -0
  71. package/tradelayer.js/oldTests/options.js +79 -0
  72. package/tradelayer.js/oldTests/optxtest.js +116 -0
  73. package/tradelayer.js/oldTests/optxtest1.js +64 -0
  74. package/tradelayer.js/oldTests/oracle.test.js +32 -0
  75. package/tradelayer.js/oldTests/orderbook.test.js +36 -0
  76. package/tradelayer.js/oldTests/parsing.js +93 -0
  77. package/tradelayer.js/oldTests/payload.js +13 -0
  78. package/tradelayer.js/oldTests/persistenceUnitTest.js +23 -0
  79. package/tradelayer.js/oldTests/property.test.js +53 -0
  80. package/tradelayer.js/oldTests/propertyLevel.js +75 -0
  81. package/tradelayer.js/oldTests/propertyTest.js +32 -0
  82. package/tradelayer.js/oldTests/queryAddressTest.js +17 -0
  83. package/tradelayer.js/oldTests/salter.js +14 -0
  84. package/tradelayer.js/oldTests/tally.js +81 -0
  85. package/tradelayer.js/oldTests/tally.test.js +48 -0
  86. package/tradelayer.js/oldTests/tally2.js +124 -0
  87. package/tradelayer.js/oldTests/tally3.js +142 -0
  88. package/tradelayer.js/oldTests/tallyDiag.js +38 -0
  89. package/tradelayer.js/oldTests/testGetRaw.js +40 -0
  90. package/tradelayer.js/oldTests/testHexConvert.js +47 -0
  91. package/tradelayer.js/oldTests/testNewEncoding.js +96 -0
  92. package/tradelayer.js/oldTests/testNewEncoding2.js +113 -0
  93. package/tradelayer.js/oldTests/testNewEncoding3 +112 -0
  94. package/tradelayer.js/oldTests/testNewEncoding3.js +168 -0
  95. package/tradelayer.js/oldTests/testOPReturn.js +102 -0
  96. package/tradelayer.js/oldTests/testPayload.js +23 -0
  97. package/tradelayer.js/oldTests/testRaw.js +50 -0
  98. package/tradelayer.js/oldTests/testSendTooMuch.js +20 -0
  99. package/tradelayer.js/oldTests/testTxBuild +28 -0
  100. package/tradelayer.js/oldTests/testTxBuild.js +42 -0
  101. package/tradelayer.js/oldTests/tokenOrderbook.js +243 -0
  102. package/tradelayer.js/oldTests/txUtilsA.js +515 -0
  103. package/tradelayer.js/oldTests/validityUnitTest.js +53 -0
  104. package/tradelayer.js/oldTests/vaults.js +72 -0
  105. package/tradelayer.js/oldTests/volumeIndex.js +117 -0
  106. package/tradelayer.js/oldTests/volumeIndex2.js +88 -0
  107. package/tradelayer.js/output_base64.txt +1 -0
  108. package/tradelayer.js/package-lock.json +9967 -0
  109. package/tradelayer.js/package.json +61 -0
  110. package/tradelayer.js/server/index.js +88 -0
  111. package/tradelayer.js/server/litecoind.exe +0 -0
  112. package/tradelayer.js/src/activation.js +303 -0
  113. package/tradelayer.js/src/adjuster.js +77 -0
  114. package/tradelayer.js/src/amm.js +400 -0
  115. package/tradelayer.js/src/base256.js +55 -0
  116. package/tradelayer.js/src/base94.js +79 -0
  117. package/tradelayer.js/src/channels.js +1163 -0
  118. package/tradelayer.js/src/clearing.js +3109 -0
  119. package/tradelayer.js/src/clearlist.js +364 -0
  120. package/tradelayer.js/src/client.js +295 -0
  121. package/tradelayer.js/src/consensus.js +613 -0
  122. package/tradelayer.js/src/contractRegistry.js +964 -0
  123. package/tradelayer.js/src/db.js +89 -0
  124. package/tradelayer.js/src/init.js +24 -0
  125. package/tradelayer.js/src/insurance.js +347 -0
  126. package/tradelayer.js/src/interface.js +218 -0
  127. package/tradelayer.js/src/interfaceExpress.js +178 -0
  128. package/tradelayer.js/src/iou.js +509 -0
  129. package/tradelayer.js/src/listener.js +226 -0
  130. package/tradelayer.js/src/logic.js +1702 -0
  131. package/tradelayer.js/src/main.js +927 -0
  132. package/tradelayer.js/src/marginMap.js +2165 -0
  133. package/tradelayer.js/src/options.js +126 -0
  134. package/tradelayer.js/src/oracle.js +394 -0
  135. package/tradelayer.js/src/orderbook.js +4123 -0
  136. package/tradelayer.js/src/persistence.js +554 -0
  137. package/tradelayer.js/src/property.js +411 -0
  138. package/tradelayer.js/src/reOrg.js +41 -0
  139. package/tradelayer.js/src/scaling.js +145 -0
  140. package/tradelayer.js/src/tally.js +1275 -0
  141. package/tradelayer.js/src/tradeHistoryManager.js +552 -0
  142. package/tradelayer.js/src/txDecoder.js +584 -0
  143. package/tradelayer.js/src/txEncoder.js +610 -0
  144. package/tradelayer.js/src/txIndex.js +502 -0
  145. package/tradelayer.js/src/txUtils.js +1392 -0
  146. package/tradelayer.js/src/types.js +429 -0
  147. package/tradelayer.js/src/validity.js +3077 -0
  148. package/tradelayer.js/src/vaults.js +430 -0
  149. package/tradelayer.js/src/vesting.js +491 -0
  150. package/tradelayer.js/src/volumeIndex.js +618 -0
  151. package/tradelayer.js/src/walletInterface.js +220 -0
  152. package/tradelayer.js/src/walletListener.js +665 -0
  153. package/tradelayer.js/tests/256decode.js +82 -0
  154. package/tradelayer.js/tests/UTXOracle.js +205 -0
  155. package/tradelayer.js/tests/base94test.js +23 -0
  156. package/tradelayer.js/tests/cancelTxTest.js +62 -0
  157. package/tradelayer.js/tests/contractInterfaceTest.js +48 -0
  158. package/tradelayer.js/tests/decimalTest.js +65 -0
  159. package/tradelayer.js/tests/decoderTest.js +100 -0
  160. package/tradelayer.js/tests/deltaCount.js +47 -0
  161. package/tradelayer.js/tests/deltaCount2.js +60 -0
  162. package/tradelayer.js/tests/interfaceTest.js +37 -0
  163. package/tradelayer.js/tests/mainTest.js +53 -0
  164. package/tradelayer.js/tests/makeActivationTest.js +24 -0
  165. package/tradelayer.js/tests/maxHeightTest.js +49 -0
  166. package/tradelayer.js/tests/reverseHash.js +72 -0
  167. package/tradelayer.js/tests/sensitiveConsoleOutput.txt +267 -0
  168. package/tradelayer.js/tests/tallyTest.js +40 -0
  169. package/tradelayer.js/tests/testBuybacks.js +46 -0
  170. package/tradelayer.js/tests/testCodeHash.js +49 -0
  171. package/tradelayer.js/tests/testConsensusHash.js +91 -0
  172. package/tradelayer.js/tests/testDecode.js +30 -0
  173. package/tradelayer.js/tests/testEncodingLengths.js +129 -0
  174. package/tradelayer.js/tests/testGetTx +32 -0
  175. package/tradelayer.js/tests/testGetTx.js +32 -0
  176. package/tradelayer.js/tests/testHexHash.js +32 -0
  177. package/tradelayer.js/tests/testIndexHash.js +35 -0
  178. package/tradelayer.js/tests/testInitContracts.js +38 -0
  179. package/tradelayer.js/tests/testMaxConsensus.js +12 -0
  180. package/tradelayer.js/tests/testMaxSynth.js +44 -0
  181. package/tradelayer.js/tests/testMint.js +21 -0
  182. package/tradelayer.js/tests/testNetwork.js +33 -0
  183. package/tradelayer.js/tests/testOrderbookLoad.js +62 -0
  184. package/tradelayer.js/tests/testRebates.js +32 -0
  185. package/tradelayer.js/tests/testRedeem.js +22 -0
  186. package/tradelayer.js/tests/testTokenTrade.js +39 -0
  187. package/tradelayer.js/tests/testTxBuild.js +42 -0
  188. package/tradelayer.js/tests/testUTXOTrade.js +27 -0
  189. package/tradelayer.js/tests/tokenTradeHistory.js +27 -0
  190. package/tradelayer.js/tests/tradeFutures.js +40 -0
  191. package/tradelayer.js/tests/tradeHistoryExample.js +35 -0
  192. package/tradelayer.js/tests/tradeHistoryLoad.js +15 -0
  193. package/tradelayer.js/tests/txScanTest.js +134 -0
  194. package/tradelayer.js/tests/validateTest.js +136 -0
  195. package/tradelayer.js/tests/vestingTest.js +37 -0
  196. package/tradelayer.js/utils/activateMainnet.js +59 -0
  197. package/tradelayer.js/utils/activateMainnetDoge.js +63 -0
  198. package/tradelayer.js/utils/autocompactdb.js +23 -0
  199. package/tradelayer.js/utils/base64toHex.js +32 -0
  200. package/tradelayer.js/utils/broadcastDoge.js +38 -0
  201. package/tradelayer.js/utils/calcRedeem.js +19 -0
  202. package/tradelayer.js/utils/checkNetwork.js +27 -0
  203. package/tradelayer.js/utils/createAddress.js +48 -0
  204. package/tradelayer.js/utils/createAttestation.js +133 -0
  205. package/tradelayer.js/utils/createContract.js +118 -0
  206. package/tradelayer.js/utils/createOracle.js +94 -0
  207. package/tradelayer.js/utils/createwallet.js +20 -0
  208. package/tradelayer.js/utils/crossFuturesTrades.js +57 -0
  209. package/tradelayer.js/utils/crossTokenTrades.js +62 -0
  210. package/tradelayer.js/utils/dumpPriv.js +29 -0
  211. package/tradelayer.js/utils/generateChannel.js +34 -0
  212. package/tradelayer.js/utils/getInfo.js +21 -0
  213. package/tradelayer.js/utils/hardWipe.js +20 -0
  214. package/tradelayer.js/utils/hexTo64.js +16 -0
  215. package/tradelayer.js/utils/importAddress.js +28 -0
  216. package/tradelayer.js/utils/importpriv.js +20 -0
  217. package/tradelayer.js/utils/issueOracleContract.js +67 -0
  218. package/tradelayer.js/utils/issueTokens.js +41 -0
  219. package/tradelayer.js/utils/listunspent.js +66 -0
  220. package/tradelayer.js/utils/litecoinClient.js +30 -0
  221. package/tradelayer.js/utils/loadwallet.js +20 -0
  222. package/tradelayer.js/utils/publishOracle.js +113 -0
  223. package/tradelayer.js/utils/sendActivation.js +21 -0
  224. package/tradelayer.js/utils/sendChannelContractTrade.js +34 -0
  225. package/tradelayer.js/utils/sendChannelTokenTrade.js +34 -0
  226. package/tradelayer.js/utils/sendCommit.js +24 -0
  227. package/tradelayer.js/utils/sendDoge.js +62 -0
  228. package/tradelayer.js/utils/sendDogeMain.js +67 -0
  229. package/tradelayer.js/utils/sendDogeTx.js +46 -0
  230. package/tradelayer.js/utils/sendLTC.js +63 -0
  231. package/tradelayer.js/utils/sendMainnet.js +62 -0
  232. package/tradelayer.js/utils/sendTransfer.js +19 -0
  233. package/tradelayer.js/utils/sendVestTest.js +88 -0
  234. package/tradelayer.js/utils/sendWithdrawal.js +26 -0
  235. package/tradelayer.js/utils/simpleStart.js +8 -0
  236. package/tradelayer.js/utils/startStop.js +27 -0
  237. package/tradelayer.js/utils/structuredTrades.js +136 -0
  238. package/tradelayer.js/utils/verifySignature.js +90 -0
  239. package/tradelayer.js/utils/verifyWitnessAndScriptPubkey.js +41 -0
  240. package/tradelayer.js/utils/walletCache.js +172 -0
  241. package/tradelayer.js/utils/walletContractInterface.js +48 -0
  242. package/tradelayer.js/utils/walletFetchTxs.js +66 -0
  243. package/tradelayer.js/utils/walletUtils.js +97 -0
  244. package/tradelayer.js/utils/wipeDB.js +55 -0
  245. package/tradelayer.js/utils/wipeDBNotTx.js +50 -0
  246. package/txEncoder.js +529 -0
  247. package/utility.js +28 -0
  248. package/verifymessage.js +38 -0
  249. package/ws-transport.js +311 -0
package/session.js ADDED
@@ -0,0 +1,45 @@
1
+ class OrderbookSession {
2
+ constructor(socket, myInfo, txsService, client) {
3
+ this.socket = socket;
4
+ this.myInfo = myInfo;
5
+ this.txsService = txsService;
6
+ this.client = client;
7
+ this.handleOrderMatches();
8
+ }
9
+
10
+ handleOrderMatches() {
11
+ this.socket.on('orderMatched', (matchData) => {
12
+ // Assume matchData contains buyer, seller, tradeInfo, type of trade, etc.
13
+ const { buyerInfo, sellerInfo, tradeInfo, typeTrade } = matchData;
14
+
15
+ // Check if we are the buyer or seller
16
+ if (this.myInfo.address === buyerInfo.address) {
17
+ this.initiateBuySwap(typeTrade, tradeInfo, buyerInfo, sellerInfo);
18
+ } else if (this.myInfo.address === sellerInfo.address) {
19
+ this.initiateSellSwap(typeTrade, tradeInfo, buyerInfo, sellerInfo);
20
+ }
21
+ });
22
+ }
23
+
24
+ initiateBuySwap(typeTrade, tradeInfo, buyerInfo, sellerInfo) {
25
+ const buySwapper = new BuySwapper(typeTrade, tradeInfo, buyerInfo, sellerInfo, this.client, this.socket, this.txsService);
26
+ buySwapper.onReady().then((res) => {
27
+ if (res.error) {
28
+ console.error(`Buy Swap Failed: ${res.error}`);
29
+ } else {
30
+ console.log(`Buy Swap Complete: ${res.data}`);
31
+ }
32
+ });
33
+ }
34
+
35
+ initiateSellSwap(typeTrade, tradeInfo, buyerInfo, sellerInfo) {
36
+ const sellSwapper = new SellSwapper(typeTrade, tradeInfo, sellerInfo, buyerInfo, this.client, this.socket, this.txsService);
37
+ sellSwapper.onReady().then((res) => {
38
+ if (res.error) {
39
+ console.error(`Sell Swap Failed: ${res.error}`);
40
+ } else {
41
+ console.log(`Sell Swap Complete: ${res.data}`);
42
+ }
43
+ });
44
+ }
45
+ }
@@ -0,0 +1,139 @@
1
+ #!/bin/bash
2
+
3
+ # Print a message to the user
4
+ echo "Starting setup for TradeLayer environment..."
5
+
6
+ # Install npm dependencies (for the NPM package)
7
+ echo "Installing NPM dependencies..."
8
+ npm install
9
+
10
+ #!/bin/bash
11
+
12
+ APP_DIR="/path/to/your/project/node_modules/tradelayer"
13
+
14
+ # write the .env for client.js bootstrap
15
+ cat > "$APP_DIR/.env" <<EOF
16
+ CHAIN=LTC
17
+ RPC_HOST=127.0.0.1
18
+ RPC_PORT=9332
19
+ RPC_USER=user
20
+ RPC_PASS=pass
21
+ AUTODETECT=0
22
+ TIMEOUT_MS=60000
23
+ EOF
24
+
25
+ echo ".env written to $APP_DIR/.env"
26
+
27
+ # Fetch litecoind binaries from official Litecoin GitHub
28
+ echo "Fetching litecoind binaries..."
29
+ LITECOIN_VERSION=0.21.3
30
+ wget https://download.litecoin.org/litecoin-${LITECOIN_VERSION}/linux/litecoin-${LITECOIN_VERSION}-x86_64-linux-gnu.tar.gz
31
+
32
+ # Extract the downloaded binaries
33
+ echo "Extracting litecoind binaries..."
34
+ tar -xzf litecoin-${LITECOIN_VERSION}-x86_64-linux-gnu.tar.gz
35
+ mv litecoin-${LITECOIN_VERSION} ~/litecoin
36
+
37
+ # Check if litecoin.conf exists, if not create it
38
+ chmod 755 $HOME/.litecoin
39
+ LITECOIN_CONF_DIR="$HOME/.litecoin" # Replace ~ with $HOME to ensure the correct home directory is used
40
+ LITECOIN_CONF_FILE=$LITECOIN_CONF_DIR/litecoin.conf
41
+
42
+ echo "Checking for litecoin.conf at: $LITECOIN_CONF_FILE"
43
+
44
+ if [ ! -f "$LITECOIN_CONF_FILE" ]; then
45
+ echo "Creating litecoin.conf file..."
46
+ mkdir -p "$LITECOIN_CONF_DIR" # Ensure the directory is created
47
+ echo "rpcuser=user" > "$LITECOIN_CONF_FILE"
48
+ echo "rpcpassword=pass" >> "$LITECOIN_CONF_FILE"
49
+ echo "rpcallowip=127.0.0.1" >> "$LITECOIN_CONF_FILE"
50
+ echo "testnet=1" >> "$LITECOIN_CONF_FILE"
51
+ echo "txindex=1" >> "$LITECOIN_CONF_FILE"
52
+ echo "[test]"
53
+ echo "rpcport=19322" >> "$LITECOIN_CONF_FILE"
54
+ echo "[main]"
55
+ echo "rpcport=9322" >> "$LITECOIN_CONF_FILE"
56
+ echo "litecoin.conf created successfully."
57
+ else
58
+ echo "litecoin.conf already exists."
59
+ fi
60
+
61
+ # Clone the TradeLayer.js repository if it doesn't exist
62
+ echo "Checking for TradeLayer.js directory..."
63
+ if [ ! -d "tradelayer.js" ]; then
64
+ echo "Cloning TradeLayer.js repository..."
65
+ git clone https://github.com/patrickdugan/tradelayer.js.git
66
+ else
67
+ echo "TradeLayer.js directory already exists."
68
+ fi
69
+
70
+ # Navigate to the TradeLayer directory
71
+ cd tradelayer.js
72
+
73
+ # Check out the dtf-UTXO branch
74
+ echo "Checking out the dtf-UTXO branch..."
75
+ git checkout dtf-UTXO
76
+
77
+ # Run npm install in the TradeLayer.js directory
78
+ echo "Installing NPM dependencies for TradeLayer.js..."
79
+ npm install
80
+
81
+ # Run npm dedupe for the TradeLayer.js directory
82
+ echo "Removing redundant lib for TradeLayer.js..."
83
+ npm uninstall bitcore-lib-ltc
84
+
85
+
86
+ # Start litecoind from the bin folder
87
+ echo "Starting litecoind..."
88
+ ~/litecoin/bin/litecoind -daemon -server -testnet -rpcuser=user -rpcpassword=pass -rpcport=18332
89
+
90
+ # Function to check if litecoind is ready
91
+ check_litecoind() {
92
+ while true; do
93
+ sleep 10 # Wait before checking again
94
+ response=$(~/litecoin/bin/litecoin-cli -testnet -rpcport=18332 getblockchaininfo 2>/dev/null)
95
+
96
+ if [[ $? -eq 0 ]]; then
97
+ echo "litecoind is ready."
98
+ break
99
+ else
100
+ echo "Waiting for litecoind to initialize..."
101
+ fi
102
+ done
103
+ }
104
+
105
+ # Wait for litecoind to be ready
106
+ check_litecoind
107
+
108
+ # Check if the wallet exists, if not create a new wallet
109
+ WALLET_NAME="mywallet" # You can customize the wallet name here
110
+ WALLET_FILE="$HOME/.litecoin/$WALLET_NAME"
111
+
112
+ echo "Checking for existing wallet at: $WALLET_FILE"
113
+ if [ ! -f "$WALLET_FILE" ]; then
114
+ echo "Creating new wallet..."
115
+ ~/litecoin/bin/litecoin-cli -rpcport=18332 createwallet "$WALLET_NAME"
116
+
117
+ else
118
+ echo "Wallet already exists, loading wallet..."
119
+ ~/litecoin/bin/litecoin-cli -rpcport=18332 loadwallet "$WALLET_NAME"
120
+ fi
121
+
122
+ # Create a wallet address
123
+ echo "Creating wallet address..."
124
+ address=$(~/litecoin/bin/litecoin-cli -testnet -rpcport=19332 -rpcwallet="$WALLET_NAME" getnewaddress)
125
+ echo "Wallet address created: $address"
126
+
127
+ # Command to dump the entire wallet to a file
128
+ echo "Exporting wallet..."
129
+ ~/litecoin/bin/litecoin-cli -testnet dumpwallet ./dumpfile.txt
130
+
131
+
132
+
133
+ # Build TradeLayer API
134
+ echo "Building TradeLayer API..."
135
+ cd src
136
+ npm install # Ensure dependencies are installed
137
+ cd ..
138
+
139
+ echo "Setup complete!"
package/setup-lin.sh ADDED
@@ -0,0 +1,203 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ ########################################
5
+ # CONFIG — change these for your machine
6
+ ########################################
7
+ PROJECT_ROOT="/path/to/your/project" # <- set to your project root
8
+ APP_DIR="$PROJECT_ROOT/node_modules/tradelayer"
9
+ BTC_VERSION="22.0" # Taproot-capable old-but-stable release
10
+ NETWORK="bitcoin-mainnet" # bitcoin-mainnet | bitcoin-testnet
11
+
12
+ # RPC creds for your algo (simple mode)
13
+ RPC_USER="user"
14
+ RPC_PASS="pass"
15
+
16
+ # Wallet name (created if missing)
17
+ WALLET_NAME="mywallet"
18
+
19
+ ########################################
20
+ # Derived settings (do not edit)
21
+ ########################################
22
+ if [[ "$NETWORK" == "bitcoin-testnet" ]]; then
23
+ IS_TESTNET=1
24
+ RPC_PORT=18332
25
+ NET_FLAG="-testnet"
26
+ CONF_SECTION="[test]"
27
+ else
28
+ IS_TESTNET=0
29
+ RPC_PORT=8332
30
+ NET_FLAG=""
31
+ CONF_SECTION="[main]"
32
+ fi
33
+
34
+ DATADIR="$HOME/.bitcoin"
35
+ BITCOIN_CONF="$DATADIR/bitcoin.conf"
36
+ BITCOIN_URL="https://bitcoincore.org/bin/bitcoin-core-$BTC_VERSION/bitcoin-$BTC_VERSION-x86_64-linux-gnu.tar.gz"
37
+ PKG_TAR="bitcoin-$BTC_VERSION-x86_64-linux-gnu.tar.gz"
38
+ PKG_DIR="bitcoin-$BTC_VERSION"
39
+
40
+ echo "=== Starting setup for TradeLayer (Bitcoin) ==="
41
+
42
+ ########################################
43
+ # 0) NPM deps (for your package / repo)
44
+ ########################################
45
+ echo "Installing NPM dependencies (project root)…"
46
+ cd "$PROJECT_ROOT"
47
+ npm install
48
+
49
+ ########################################
50
+ # 1) Write .env for the core module (BTC)
51
+ ########################################
52
+ mkdir -p "$APP_DIR"
53
+ cat > "$APP_DIR/.env" <<EOF
54
+ CHAIN=BTC
55
+ RPC_HOST=127.0.0.1
56
+ RPC_PORT=$RPC_PORT
57
+ RPC_USER=$RPC_USER
58
+ RPC_PASS=$RPC_PASS
59
+ AUTODETECT=0
60
+ TIMEOUT_MS=60000
61
+ EOF
62
+ echo ".env written to $APP_DIR/.env"
63
+
64
+ ########################################
65
+ # 2) Fetch & install Bitcoin Core $BTC_VERSION
66
+ ########################################
67
+ echo "Fetching bitcoind binaries (v$BTC_VERSION)…"
68
+ cd "$HOME"
69
+ if [[ ! -f "$PKG_TAR" ]]; then
70
+ wget -q "$BITCOIN_URL"
71
+ fi
72
+
73
+ echo "Extracting bitcoind…"
74
+ tar -xzf "$PKG_TAR"
75
+ sudo install -m 0755 -o root -g root "$PKG_DIR/bin/"* /usr/local/bin/
76
+ bitcoind -version
77
+
78
+ ########################################
79
+ # 3) Write bitcoin.conf (simple RPC creds + prune)
80
+ ########################################
81
+ echo "Configuring $BITCOIN_CONF …"
82
+ mkdir -p "$DATADIR"
83
+ # Create fresh if missing; otherwise ensure required keys exist/updated
84
+ if [[ ! -f "$BITCOIN_CONF" ]]; then
85
+ cat > "$BITCOIN_CONF" <<EOF
86
+ server=1
87
+ daemon=1
88
+ prune=2000
89
+ txindex=0
90
+ dbcache=450
91
+
92
+ rpcuser=$RPC_USER
93
+ rpcpassword=$RPC_PASS
94
+
95
+ $CONF_SECTION
96
+ rpcport=$RPC_PORT
97
+ EOF
98
+ echo "Created $BITCOIN_CONF"
99
+ else
100
+ # Ensure essential values are present/updated
101
+ grep -q '^server=' "$BITCOIN_CONF" || echo "server=1" >> "$BITCOIN_CONF"
102
+ grep -q '^daemon=' "$BITCOIN_CONF" || echo "daemon=1" >> "$BITCOIN_CONF"
103
+ grep -q '^prune=' "$BITCOIN_CONF" || echo "prune=2000" >> "$BITCOIN_CONF"
104
+ grep -q '^txindex=' "$BITCOIN_CONF" || echo "txindex=0" >> "$BITCOIN_CONF"
105
+ grep -q '^dbcache=' "$BITCOIN_CONF" || echo "dbcache=450" >> "$BITCOIN_CONF"
106
+
107
+ if grep -q '^rpcuser=' "$BITCOIN_CONF"; then
108
+ sed -i "s/^rpcuser=.*/rpcuser=$RPC_USER/" "$BITCOIN_CONF"
109
+ else
110
+ echo "rpcuser=$RPC_USER" >> "$BITCOIN_CONF"
111
+ fi
112
+
113
+ if grep -q '^rpcpassword=' "$BITCOIN_CONF"; then
114
+ sed -i "s/^rpcpassword=.*/rpcpassword=$RPC_PASS/" "$BITCOIN_CONF"
115
+ else
116
+ echo "rpcpassword=$RPC_PASS" >> "$BITCOIN_CONF"
117
+ fi
118
+
119
+ # Ensure correct port under the right section
120
+ if ! grep -q "^\[test\]\|\[main\]" "$BITCOIN_CONF"; then
121
+ # add section if none present
122
+ echo "$CONF_SECTION" >> "$BITCOIN_CONF"
123
+ fi
124
+ # remove any existing rpcport in file and set current
125
+ sed -i "/^rpcport=/d" "$BITCOIN_CONF"
126
+ echo "rpcport=$RPC_PORT" >> "$BITCOIN_CONF"
127
+
128
+ echo "Updated $BITCOIN_CONF"
129
+ fi
130
+
131
+ ########################################
132
+ # 4) Start bitcoind (mainnet or testnet)
133
+ ########################################
134
+ echo "Starting bitcoind ($NETWORK) …"
135
+ # Stop any stray instance (ignore errors)
136
+ bitcoin-cli $NET_FLAG stop >/dev/null 2>&1 || true
137
+ pkill -f bitcoind >/dev/null 2>&1 || true
138
+ sleep 2
139
+
140
+ bitcoind -daemon $NET_FLAG
141
+ sleep 3
142
+
143
+ ########################################
144
+ # 5) Wait until RPC is ready
145
+ ########################################
146
+ echo "Waiting for bitcoind RPC @ 127.0.0.1:$RPC_PORT …"
147
+ until bitcoin-cli $NET_FLAG -rpcconnect=127.0.0.1 -rpcport=$RPC_PORT -rpcuser="$RPC_USER" -rpcpassword="$RPC_PASS" getblockchaininfo >/dev/null 2>&1; do
148
+ echo " … still initializing (will retry)…"
149
+ sleep 5
150
+ done
151
+ echo "bitcoind is ready."
152
+
153
+ ########################################
154
+ # 6) Create or load wallet; print address
155
+ ########################################
156
+ echo "Preparing wallet: $WALLET_NAME"
157
+ # listwallets returns a JSON array of loaded wallets
158
+ if ! bitcoin-cli $NET_FLAG -rpcport=$RPC_PORT -rpcuser="$RPC_USER" -rpcpassword="$RPC_PASS" listwallets | grep -q "\"$WALLET_NAME\""; then
159
+ # if wallet file exists on disk, load; else create
160
+ if bitcoin-cli $NET_FLAG -rpcport=$RPC_PORT -rpcuser="$RPC_USER" -rpcpassword="$RPC_PASS" listwalletdir | grep -q "\"$WALLET_NAME\""; then
161
+ echo "Loading existing wallet…"
162
+ bitcoin-cli $NET_FLAG -rpcport=$RPC_PORT -rpcuser="$RPC_USER" -rpcpassword="$RPC_PASS" loadwallet "$WALLET_NAME" >/dev/null
163
+ else
164
+ echo "Creating new wallet…"
165
+ bitcoin-cli $NET_FLAG -rpcport=$RPC_PORT -rpcuser="$RPC_USER" -rpcpassword="$RPC_PASS" createwallet "$WALLET_NAME" >/dev/null
166
+ fi
167
+ fi
168
+
169
+ echo "Generating a new address…"
170
+ ADDR=$(bitcoin-cli $NET_FLAG -rpcport=$RPC_PORT -rpcuser="$RPC_USER" -rpcpassword="$RPC_PASS" -rpcwallet="$WALLET_NAME" getnewaddress "" bech32)
171
+ echo "Wallet address: $ADDR"
172
+
173
+ ########################################
174
+ # 7) TradeLayer JS setup (your repo)
175
+ ########################################
176
+ cd "$PROJECT_ROOT"
177
+
178
+ if [[ ! -d "tradelayer.js" ]]; then
179
+ echo "Cloning TradeLayer.js…"
180
+ git clone https://github.com/patrickdugan/tradelayer.js.git
181
+ fi
182
+
183
+ cd tradelayer.js
184
+ echo "Checking out dtf-UTXO…"
185
+ git fetch --all
186
+ git checkout dtf-UTXO || true
187
+
188
+ echo "Installing TradeLayer.js deps…"
189
+ npm install
190
+ echo "Removing bitcore-lib-ltc (not needed for BTC case)…"
191
+ npm uninstall bitcore-lib-ltc || true
192
+
193
+ # Optionally build API
194
+ if [[ -d "src" ]]; then
195
+ echo "Building TradeLayer API…"
196
+ pushd src >/dev/null
197
+ npm install
198
+ popd >/dev/null
199
+ fi
200
+
201
+ echo "=== Setup complete (Bitcoin, $NETWORK) ==="
202
+ echo "RPC: http://$RPC_USER:$RPC_PASS@127.0.0.1:$RPC_PORT/"
203
+ echo "Wallet: $WALLET_NAME Address: $ADDR"
@@ -0,0 +1,108 @@
1
+ #!/bin/bash
2
+
3
+ # Print a message to the user
4
+ echo "Starting setup for TradeLayer environment..."
5
+
6
+ # Install npm dependencies (for the NPM package)
7
+ echo "Installing NPM dependencies..."
8
+ npm install
9
+
10
+ @echo off
11
+ REM Change this to your actual project path
12
+ set "APP_DIR=%~dp0node_modules\tradelayer"
13
+
14
+ REM Write .env file
15
+ (
16
+ echo CHAIN=LTC
17
+ echo RPC_HOST=127.0.0.1
18
+ echo RPC_PORT=9332
19
+ echo RPC_USER=user
20
+ echo RPC_PASS=pass
21
+ echo AUTODETECT=0
22
+ echo TIMEOUT_MS=60000
23
+ ) > "%APP_DIR%\.env"
24
+
25
+ echo .env written to %APP_DIR%\.env
26
+
27
+ # Fetch litecoind binaries from official Litecoin GitHub
28
+ echo "Fetching litecoind binaries..."
29
+ LITECOIN_VERSION=0.21.3
30
+ wget https://download.litecoin.org/litecoin-${LITECOIN_VERSION}/linux/litecoin-${LITECOIN_VERSION}-x86_64-linux-gnu.tar.gz
31
+
32
+ # Extract the downloaded binaries
33
+ echo "Extracting litecoind binaries..."
34
+ tar -xzf litecoin-${LITECOIN_VERSION}-x86_64-linux-gnu.tar.gz
35
+ mv litecoin-${LITECOIN_VERSION} ~/litecoin
36
+
37
+ # Check if litecoin.conf exists, if not create it
38
+ LITECOIN_CONF_DIR=~/.litecoin
39
+ LITECOIN_CONF_FILE=$LITECOIN_CONF_DIR/litecoin.conf
40
+
41
+ if [ ! -f "$LITECOIN_CONF_FILE" ]; then
42
+ echo "Creating litecoin.conf file..."
43
+ mkdir -p $LITECOIN_CONF_DIR
44
+ echo "rpcuser=user" > $LITECOIN_CONF_FILE
45
+ echo "rpcpassword=pass" >> $LITECOIN_CONF_FILE
46
+ echo "rpcallowip=127.0.0.1" >> $LITECOIN_CONF_FILE
47
+ echo "[test]"
48
+ echo "rpcport=18322" >> "$LITECOIN_CONF_FILE"
49
+ echo "[main]"
50
+ echo "rpcport=8322" >> "$LITECOIN_CONF_FILE"
51
+ else
52
+ echo "litecoin.conf already exists."
53
+ fi
54
+
55
+ # Clone the TradeLayer.js repository if it doesn't exist
56
+ echo "Checking for TradeLayer.js directory..."
57
+ if [ ! -d "tradelayer.js" ]; then
58
+ echo "Cloning TradeLayer.js repository..."
59
+ git clone https://github.com/patrickdugan/tradelayer.js.git
60
+ else
61
+ echo "TradeLayer.js directory already exists."
62
+ fi
63
+
64
+ # Navigate to the TradeLayer directory
65
+ cd tradelayer.js
66
+
67
+ # Check out the dtf-UTXO branch
68
+ echo "Checking out the dtf-UTXO branch..."
69
+ git checkout dtf-UTXO
70
+
71
+ # Start litecoind from the bin folder
72
+ echo "Starting litecoind..."
73
+ ~/litecoin/bin/litecoind -daemon -server -testnet -conf=$LITECOIN_CONF_FILE
74
+
75
+ # Function to check if litecoind is ready
76
+ check_litecoind() {
77
+ while true; do
78
+ sleep 5 # Wait before checking again
79
+ response=$(~/litecoin/bin/litecoin-cli -testnet getblockchaininfo 2>/dev/null)
80
+
81
+ if [[ $? -eq 0 ]]; then
82
+ echo "litecoind is ready."
83
+ break
84
+ else
85
+ echo "Waiting for litecoind to initialize..."
86
+ fi
87
+ done
88
+ }
89
+
90
+ # Wait for litecoind to be ready
91
+ check_litecoind
92
+
93
+ # Create an address and save it to .env
94
+ echo "Creating wallet address..."
95
+ address=$(~/litecoin/bin/litecoin-cli -testnet getnewaddress)
96
+ echo "Wallet address created: $address"
97
+
98
+ # Update .env file
99
+ echo "Updating .env file..."
100
+ echo "USER_ADDRESS=$address" >> .env
101
+
102
+ # Build TradeLayer API
103
+ echo "Building TradeLayer API..."
104
+ cd src
105
+ npm install # Ensure dependencies are installed
106
+ cd ..
107
+
108
+ echo "Setup complete!"
package/setup-win.bat ADDED
@@ -0,0 +1,167 @@
1
+ @echo off
2
+ setlocal EnableExtensions EnableDelayedExpansion
3
+
4
+ REM ================================
5
+ REM CONFIG — edit these as needed
6
+ REM ================================
7
+ set "PROJECT_ROOT=%~dp0"
8
+ set "APP_DIR=%PROJECT_ROOT%node_modules\tradelayer"
9
+ set "BTC_VERSION=22.0"
10
+ REM NETWORK can be mainnet or testnet
11
+ set "NETWORK=mainnet"
12
+
13
+ REM Simple RPC creds for your algo / core client
14
+ set "RPC_USER=user"
15
+ set "RPC_PASS=pass"
16
+
17
+ REM Wallet name
18
+ set "WALLET_NAME=mywallet"
19
+
20
+ REM ================================
21
+ REM Derived (do not edit)
22
+ REM ================================
23
+ if /I "%NETWORK%"=="testnet" (
24
+ set "NET_FLAG=-testnet"
25
+ set "RPC_PORT=18332"
26
+ ) else (
27
+ set "NET_FLAG="
28
+ set "RPC_PORT=8332"
29
+ )
30
+
31
+ set "BITCOIN_URL=https://bitcoincore.org/bin/bitcoin-core-%BTC_VERSION%/bitcoin-%BTC_VERSION%-win64.zip"
32
+ set "ZIP_FILE=%USERPROFILE%\Downloads\bitcoin-%BTC_VERSION%-win64.zip"
33
+ set "EXTRACT_DIR=%USERPROFILE%\bitcoin-%BTC_VERSION%"
34
+ set "BIN_DIR=%EXTRACT_DIR%\bin"
35
+ set "DATADIR=%APPDATA%\Bitcoin"
36
+ set "CONF_FILE=%DATADIR%\bitcoin.conf"
37
+
38
+ echo === Starting setup for TradeLayer (Bitcoin / Windows) ===
39
+
40
+ REM 0) Project deps
41
+ echo.
42
+ echo Installing NPM dependencies (project root)...
43
+ pushd "%PROJECT_ROOT%"
44
+ call npm install || goto :fail
45
+ popd
46
+
47
+ REM 1) Write .env for the tradelayer package (BTC)
48
+ echo.
49
+ echo Writing .env to "%APP_DIR%\.env" ...
50
+ if not exist "%APP_DIR%" mkdir "%APP_DIR%"
51
+ (
52
+ echo CHAIN=BTC
53
+ echo RPC_HOST=127.0.0.1
54
+ echo RPC_PORT=%RPC_PORT%
55
+ echo RPC_USER=%RPC_USER%
56
+ echo RPC_PASS=%RPC_PASS%
57
+ echo AUTODETECT=0
58
+ echo TIMEOUT_MS=60000
59
+ ) > "%APP_DIR%\.env"
60
+ echo Done.
61
+
62
+ REM 2) Fetch & install Bitcoin Core
63
+ echo.
64
+ echo Fetching Bitcoin Core v%BTC_VERSION% for Win64 ...
65
+ if not exist "%ZIP_FILE%" (
66
+ powershell -NoProfile -Command "Invoke-WebRequest -Uri '%BITCOIN_URL%' -OutFile '%ZIP_FILE%'" || goto :fail
67
+ ) else (
68
+ echo Zip already present at %ZIP_FILE%
69
+ )
70
+
71
+ echo Extracting Bitcoin Core to "%EXTRACT_DIR%" ...
72
+ if exist "%EXTRACT_DIR%" rmdir /s /q "%EXTRACT_DIR%"
73
+ powershell -NoProfile -Command "Expand-Archive -Path '%ZIP_FILE%' -DestinationPath '%EXTRACT_DIR%'" || goto :fail
74
+
75
+ REM 3) Write bitcoin.conf
76
+ echo.
77
+ echo Configuring %CONF_FILE% ...
78
+ if not exist "%DATADIR%" mkdir "%DATADIR%"
79
+
80
+ REM Create/overwrite minimal config with prune and rpc creds
81
+ (
82
+ echo server=1
83
+ echo prune=2000
84
+ echo txindex=0
85
+ echo dbcache=450
86
+ echo rpcuser=%RPC_USER%
87
+ echo rpcpassword=%RPC_PASS%
88
+ if /I "%NETWORK%"=="testnet" (
89
+ echo [test]
90
+ echo rpcport=%RPC_PORT%
91
+ ) else (
92
+ echo [main]
93
+ echo rpcport=%RPC_PORT%
94
+ )
95
+ ) > "%CONF_FILE%"
96
+ echo Wrote %CONF_FILE%
97
+
98
+ REM 4) Start bitcoind (note: no -daemon on Windows; use 'start')
99
+ echo.
100
+ echo Starting bitcoind (%NETWORK%) ...
101
+ REM Stop any stray instance
102
+ "%BIN_DIR%\bitcoin-cli.exe" %NET_FLAG% stop >nul 2>&1
103
+ REM Give it a moment
104
+ timeout /t 2 /nobreak >nul
105
+
106
+ start "" "%BIN_DIR%\bitcoind.exe" %NET_FLAG%
107
+
108
+ REM 5) Wait until RPC is ready
109
+ echo Waiting for bitcoind RPC @ 127.0.0.1:%RPC_PORT% ...
110
+ :waitrpc
111
+ "%BIN_DIR%\bitcoin-cli.exe" %NET_FLAG% -rpcconnect=127.0.0.1 -rpcport=%RPC_PORT% -rpcuser="%RPC_USER%" -rpcpassword="%RPC_PASS%" getblockchaininfo >nul 2>&1
112
+ if errorlevel 1 (
113
+ echo ... still initializing, retrying in 5s
114
+ timeout /t 5 /nobreak >nul
115
+ goto :waitrpc
116
+ )
117
+ echo bitcoind is ready.
118
+
119
+ REM 6) Create or load wallet; print a new address
120
+ echo.
121
+ echo Preparing wallet: %WALLET_NAME%
122
+ REM Is it already loaded?
123
+ for /f "usebackq tokens=*" %%A in (`"%BIN_DIR%\bitcoin-cli.exe" %NET_FLAG% -rpcport=%RPC_PORT% -rpcuser="%RPC_USER%" -rpcpassword="%RPC_PASS%" listwallets 2^>nul`) do set "WALLETS=%%A"
124
+ echo %WALLETS% | find /I "\"%WALLET_NAME%\"" >nul
125
+ if errorlevel 1 (
126
+ REM Not loaded — does it exist on disk?
127
+ for /f "usebackq tokens=*" %%B in (`"%BIN_DIR%\bitcoin-cli.exe" %NET_FLAG% -rpcport=%RPC_PORT% -rpcuser="%RPC_USER%" -rpcpassword="%RPC_PASS%" listwalletdir 2^>nul`) do set "WALLETDIR=%%B"
128
+ echo %WALLETDIR% | find /I "\"%WALLET_NAME%\"" >nul
129
+ if errorlevel 1 (
130
+ echo Creating new wallet ...
131
+ "%BIN_DIR%\bitcoin-cli.exe" %NET_FLAG% -rpcport=%RPC_PORT% -rpcuser="%RPC_USER%" -rpcpassword="%RPC_PASS%" createwallet "%WALLET_NAME%" >nul
132
+ ) else (
133
+ echo Loading existing wallet ...
134
+ "%BIN_DIR%\bitcoin-cli.exe" %NET_FLAG% -rpcport=%RPC_PORT% -rpcuser="%RPC_USER%" -rpcpassword="%RPC_PASS%" loadwallet "%WALLET_NAME%" >nul
135
+ )
136
+ ) else (
137
+ echo Wallet already loaded.
138
+ )
139
+
140
+ echo.
141
+ echo Generating a new bech32 address ...
142
+ for /f "usebackq tokens=*" %%C in (`"%BIN_DIR%\bitcoin-cli.exe" %NET_FLAG% -rpcport=%RPC_PORT% -rpcuser="%RPC_USER%" -rpcpassword="%RPC_PASS%" -rpcwallet="%WALLET_NAME%" getnewaddress "" bech32 2^>nul`) do set "ADDR=%%C"
143
+ echo Wallet address: %ADDR%
144
+
145
+ REM 7) Append address to .env
146
+ echo.
147
+ echo Appending USER_ADDRESS to .env ...
148
+ >> "%APP_DIR%\.env" echo USER_ADDRESS=%ADDR%
149
+ echo Done.
150
+
151
+ REM 8) (Optional) start your app
152
+ echo.
153
+ echo Starting your app (npm start) ...
154
+ pushd "%PROJECT_ROOT%"
155
+ call npm start
156
+ popd
157
+
158
+ echo.
159
+ echo === Setup complete (Bitcoin / %NETWORK%) ===
160
+ echo RPC: http://%RPC_USER%:%RPC_PASS%@127.0.0.1:%RPC_PORT%/
161
+ echo Wallet: %WALLET_NAME% Address: %ADDR%
162
+ goto :eof
163
+
164
+ :fail
165
+ echo.
166
+ echo *** ERROR: Setup failed. See messages above. ***
167
+ exit /b 1