@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.
- package/.claude/settings.local.json +13 -0
- package/.claude/skills/tl-algo/SKILL.md +255 -0
- package/.gitattributes +2 -0
- package/.github/workflows/publish.yaml +26 -0
- package/4mm.js +163 -0
- package/LICENSE +21 -0
- package/NPMSwapRefactor.zip +0 -0
- package/README.md +217 -0
- package/address.sh +26 -0
- package/algoAPI.js +581 -0
- package/analyzepsbt.js +92 -0
- package/apiEx.js +99 -0
- package/bb_hyperscalper.js +290 -0
- package/bbo_demo.js +111 -0
- package/buyer.js +622 -0
- package/client.js +50 -0
- package/createTxTest.js +26 -0
- package/createWallet.js +75 -0
- package/daytrader.js +531 -0
- package/decodeTest.js +69 -0
- package/fundingManager.js +144 -0
- package/index.js +4 -0
- package/listener.js +27 -0
- package/litecoreTxBuilder.js +1128 -0
- package/mmEx.js +356 -0
- package/networks.js +51 -0
- package/orderbook.js +200 -0
- package/package.json +34 -0
- package/perTradeQueue.js +36 -0
- package/projectsTLNPMTLNPM/package-lock.json +162 -0
- package/projectsTLNPMTLNPM/package.json +5 -0
- package/quick.js +32 -0
- package/quickFut.js +37 -0
- package/quickSell.js +37 -0
- package/relayerClient.js +117 -0
- package/run4mm.js +80 -0
- package/run_bbo_tracker.js +241 -0
- package/seller.js +443 -0
- package/session.js +45 -0
- package/setup-lin-ltc.sh +139 -0
- package/setup-lin.sh +203 -0
- package/setup-win-ltc.bat +108 -0
- package/setup-win.bat +167 -0
- package/spam_screamer_futures.js +222 -0
- package/tradelayer.js/.gitattributes +2 -0
- package/tradelayer.js/README.md +2 -0
- package/tradelayer.js/oldTests/activationTest.js +6 -0
- package/tradelayer.js/oldTests/base58.test.js +23 -0
- package/tradelayer.js/oldTests/base64Decode.test.js +16 -0
- package/tradelayer.js/oldTests/blocksRefactor.js +140 -0
- package/tradelayer.js/oldTests/checkVestBalance.js +25 -0
- package/tradelayer.js/oldTests/consensusHashProto.js +151 -0
- package/tradelayer.js/oldTests/contractOrderbook.js +243 -0
- package/tradelayer.js/oldTests/createPayload.js +0 -0
- package/tradelayer.js/oldTests/createTestnetAddr.js +43 -0
- package/tradelayer.js/oldTests/decode.js +205 -0
- package/tradelayer.js/oldTests/decodeTest.js +50 -0
- package/tradelayer.js/oldTests/displayTallyMap.js +19 -0
- package/tradelayer.js/oldTests/encodeDecode.js +340 -0
- package/tradelayer.js/oldTests/expressTest.js +29 -0
- package/tradelayer.js/oldTests/extractBlocksVanilla.js +214 -0
- package/tradelayer.js/oldTests/extractBlocksVanillaa.js +179 -0
- package/tradelayer.js/oldTests/extractPubkeyTest.js +60 -0
- package/tradelayer.js/oldTests/fillInputCacheProto.js +111 -0
- package/tradelayer.js/oldTests/getRawTxTest.js +22 -0
- package/tradelayer.js/oldTests/indexTest.js +26 -0
- package/tradelayer.js/oldTests/initTokensTest.js +32 -0
- package/tradelayer.js/oldTests/interfaceChild.js +129 -0
- package/tradelayer.js/oldTests/listenerChild.js +112 -0
- package/tradelayer.js/oldTests/opdecode.js +26 -0
- package/tradelayer.js/oldTests/options.js +79 -0
- package/tradelayer.js/oldTests/optxtest.js +116 -0
- package/tradelayer.js/oldTests/optxtest1.js +64 -0
- package/tradelayer.js/oldTests/oracle.test.js +32 -0
- package/tradelayer.js/oldTests/orderbook.test.js +36 -0
- package/tradelayer.js/oldTests/parsing.js +93 -0
- package/tradelayer.js/oldTests/payload.js +13 -0
- package/tradelayer.js/oldTests/persistenceUnitTest.js +23 -0
- package/tradelayer.js/oldTests/property.test.js +53 -0
- package/tradelayer.js/oldTests/propertyLevel.js +75 -0
- package/tradelayer.js/oldTests/propertyTest.js +32 -0
- package/tradelayer.js/oldTests/queryAddressTest.js +17 -0
- package/tradelayer.js/oldTests/salter.js +14 -0
- package/tradelayer.js/oldTests/tally.js +81 -0
- package/tradelayer.js/oldTests/tally.test.js +48 -0
- package/tradelayer.js/oldTests/tally2.js +124 -0
- package/tradelayer.js/oldTests/tally3.js +142 -0
- package/tradelayer.js/oldTests/tallyDiag.js +38 -0
- package/tradelayer.js/oldTests/testGetRaw.js +40 -0
- package/tradelayer.js/oldTests/testHexConvert.js +47 -0
- package/tradelayer.js/oldTests/testNewEncoding.js +96 -0
- package/tradelayer.js/oldTests/testNewEncoding2.js +113 -0
- package/tradelayer.js/oldTests/testNewEncoding3 +112 -0
- package/tradelayer.js/oldTests/testNewEncoding3.js +168 -0
- package/tradelayer.js/oldTests/testOPReturn.js +102 -0
- package/tradelayer.js/oldTests/testPayload.js +23 -0
- package/tradelayer.js/oldTests/testRaw.js +50 -0
- package/tradelayer.js/oldTests/testSendTooMuch.js +20 -0
- package/tradelayer.js/oldTests/testTxBuild +28 -0
- package/tradelayer.js/oldTests/testTxBuild.js +42 -0
- package/tradelayer.js/oldTests/tokenOrderbook.js +243 -0
- package/tradelayer.js/oldTests/txUtilsA.js +515 -0
- package/tradelayer.js/oldTests/validityUnitTest.js +53 -0
- package/tradelayer.js/oldTests/vaults.js +72 -0
- package/tradelayer.js/oldTests/volumeIndex.js +117 -0
- package/tradelayer.js/oldTests/volumeIndex2.js +88 -0
- package/tradelayer.js/output_base64.txt +1 -0
- package/tradelayer.js/package-lock.json +9967 -0
- package/tradelayer.js/package.json +61 -0
- package/tradelayer.js/server/index.js +88 -0
- package/tradelayer.js/server/litecoind.exe +0 -0
- package/tradelayer.js/src/activation.js +303 -0
- package/tradelayer.js/src/adjuster.js +77 -0
- package/tradelayer.js/src/amm.js +400 -0
- package/tradelayer.js/src/base256.js +55 -0
- package/tradelayer.js/src/base94.js +79 -0
- package/tradelayer.js/src/channels.js +1163 -0
- package/tradelayer.js/src/clearing.js +3109 -0
- package/tradelayer.js/src/clearlist.js +364 -0
- package/tradelayer.js/src/client.js +295 -0
- package/tradelayer.js/src/consensus.js +613 -0
- package/tradelayer.js/src/contractRegistry.js +964 -0
- package/tradelayer.js/src/db.js +89 -0
- package/tradelayer.js/src/init.js +24 -0
- package/tradelayer.js/src/insurance.js +347 -0
- package/tradelayer.js/src/interface.js +218 -0
- package/tradelayer.js/src/interfaceExpress.js +178 -0
- package/tradelayer.js/src/iou.js +509 -0
- package/tradelayer.js/src/listener.js +226 -0
- package/tradelayer.js/src/logic.js +1702 -0
- package/tradelayer.js/src/main.js +927 -0
- package/tradelayer.js/src/marginMap.js +2165 -0
- package/tradelayer.js/src/options.js +126 -0
- package/tradelayer.js/src/oracle.js +394 -0
- package/tradelayer.js/src/orderbook.js +4123 -0
- package/tradelayer.js/src/persistence.js +554 -0
- package/tradelayer.js/src/property.js +411 -0
- package/tradelayer.js/src/reOrg.js +41 -0
- package/tradelayer.js/src/scaling.js +145 -0
- package/tradelayer.js/src/tally.js +1275 -0
- package/tradelayer.js/src/tradeHistoryManager.js +552 -0
- package/tradelayer.js/src/txDecoder.js +584 -0
- package/tradelayer.js/src/txEncoder.js +610 -0
- package/tradelayer.js/src/txIndex.js +502 -0
- package/tradelayer.js/src/txUtils.js +1392 -0
- package/tradelayer.js/src/types.js +429 -0
- package/tradelayer.js/src/validity.js +3077 -0
- package/tradelayer.js/src/vaults.js +430 -0
- package/tradelayer.js/src/vesting.js +491 -0
- package/tradelayer.js/src/volumeIndex.js +618 -0
- package/tradelayer.js/src/walletInterface.js +220 -0
- package/tradelayer.js/src/walletListener.js +665 -0
- package/tradelayer.js/tests/256decode.js +82 -0
- package/tradelayer.js/tests/UTXOracle.js +205 -0
- package/tradelayer.js/tests/base94test.js +23 -0
- package/tradelayer.js/tests/cancelTxTest.js +62 -0
- package/tradelayer.js/tests/contractInterfaceTest.js +48 -0
- package/tradelayer.js/tests/decimalTest.js +65 -0
- package/tradelayer.js/tests/decoderTest.js +100 -0
- package/tradelayer.js/tests/deltaCount.js +47 -0
- package/tradelayer.js/tests/deltaCount2.js +60 -0
- package/tradelayer.js/tests/interfaceTest.js +37 -0
- package/tradelayer.js/tests/mainTest.js +53 -0
- package/tradelayer.js/tests/makeActivationTest.js +24 -0
- package/tradelayer.js/tests/maxHeightTest.js +49 -0
- package/tradelayer.js/tests/reverseHash.js +72 -0
- package/tradelayer.js/tests/sensitiveConsoleOutput.txt +267 -0
- package/tradelayer.js/tests/tallyTest.js +40 -0
- package/tradelayer.js/tests/testBuybacks.js +46 -0
- package/tradelayer.js/tests/testCodeHash.js +49 -0
- package/tradelayer.js/tests/testConsensusHash.js +91 -0
- package/tradelayer.js/tests/testDecode.js +30 -0
- package/tradelayer.js/tests/testEncodingLengths.js +129 -0
- package/tradelayer.js/tests/testGetTx +32 -0
- package/tradelayer.js/tests/testGetTx.js +32 -0
- package/tradelayer.js/tests/testHexHash.js +32 -0
- package/tradelayer.js/tests/testIndexHash.js +35 -0
- package/tradelayer.js/tests/testInitContracts.js +38 -0
- package/tradelayer.js/tests/testMaxConsensus.js +12 -0
- package/tradelayer.js/tests/testMaxSynth.js +44 -0
- package/tradelayer.js/tests/testMint.js +21 -0
- package/tradelayer.js/tests/testNetwork.js +33 -0
- package/tradelayer.js/tests/testOrderbookLoad.js +62 -0
- package/tradelayer.js/tests/testRebates.js +32 -0
- package/tradelayer.js/tests/testRedeem.js +22 -0
- package/tradelayer.js/tests/testTokenTrade.js +39 -0
- package/tradelayer.js/tests/testTxBuild.js +42 -0
- package/tradelayer.js/tests/testUTXOTrade.js +27 -0
- package/tradelayer.js/tests/tokenTradeHistory.js +27 -0
- package/tradelayer.js/tests/tradeFutures.js +40 -0
- package/tradelayer.js/tests/tradeHistoryExample.js +35 -0
- package/tradelayer.js/tests/tradeHistoryLoad.js +15 -0
- package/tradelayer.js/tests/txScanTest.js +134 -0
- package/tradelayer.js/tests/validateTest.js +136 -0
- package/tradelayer.js/tests/vestingTest.js +37 -0
- package/tradelayer.js/utils/activateMainnet.js +59 -0
- package/tradelayer.js/utils/activateMainnetDoge.js +63 -0
- package/tradelayer.js/utils/autocompactdb.js +23 -0
- package/tradelayer.js/utils/base64toHex.js +32 -0
- package/tradelayer.js/utils/broadcastDoge.js +38 -0
- package/tradelayer.js/utils/calcRedeem.js +19 -0
- package/tradelayer.js/utils/checkNetwork.js +27 -0
- package/tradelayer.js/utils/createAddress.js +48 -0
- package/tradelayer.js/utils/createAttestation.js +133 -0
- package/tradelayer.js/utils/createContract.js +118 -0
- package/tradelayer.js/utils/createOracle.js +94 -0
- package/tradelayer.js/utils/createwallet.js +20 -0
- package/tradelayer.js/utils/crossFuturesTrades.js +57 -0
- package/tradelayer.js/utils/crossTokenTrades.js +62 -0
- package/tradelayer.js/utils/dumpPriv.js +29 -0
- package/tradelayer.js/utils/generateChannel.js +34 -0
- package/tradelayer.js/utils/getInfo.js +21 -0
- package/tradelayer.js/utils/hardWipe.js +20 -0
- package/tradelayer.js/utils/hexTo64.js +16 -0
- package/tradelayer.js/utils/importAddress.js +28 -0
- package/tradelayer.js/utils/importpriv.js +20 -0
- package/tradelayer.js/utils/issueOracleContract.js +67 -0
- package/tradelayer.js/utils/issueTokens.js +41 -0
- package/tradelayer.js/utils/listunspent.js +66 -0
- package/tradelayer.js/utils/litecoinClient.js +30 -0
- package/tradelayer.js/utils/loadwallet.js +20 -0
- package/tradelayer.js/utils/publishOracle.js +113 -0
- package/tradelayer.js/utils/sendActivation.js +21 -0
- package/tradelayer.js/utils/sendChannelContractTrade.js +34 -0
- package/tradelayer.js/utils/sendChannelTokenTrade.js +34 -0
- package/tradelayer.js/utils/sendCommit.js +24 -0
- package/tradelayer.js/utils/sendDoge.js +62 -0
- package/tradelayer.js/utils/sendDogeMain.js +67 -0
- package/tradelayer.js/utils/sendDogeTx.js +46 -0
- package/tradelayer.js/utils/sendLTC.js +63 -0
- package/tradelayer.js/utils/sendMainnet.js +62 -0
- package/tradelayer.js/utils/sendTransfer.js +19 -0
- package/tradelayer.js/utils/sendVestTest.js +88 -0
- package/tradelayer.js/utils/sendWithdrawal.js +26 -0
- package/tradelayer.js/utils/simpleStart.js +8 -0
- package/tradelayer.js/utils/startStop.js +27 -0
- package/tradelayer.js/utils/structuredTrades.js +136 -0
- package/tradelayer.js/utils/verifySignature.js +90 -0
- package/tradelayer.js/utils/verifyWitnessAndScriptPubkey.js +41 -0
- package/tradelayer.js/utils/walletCache.js +172 -0
- package/tradelayer.js/utils/walletContractInterface.js +48 -0
- package/tradelayer.js/utils/walletFetchTxs.js +66 -0
- package/tradelayer.js/utils/walletUtils.js +97 -0
- package/tradelayer.js/utils/wipeDB.js +55 -0
- package/tradelayer.js/utils/wipeDBNotTx.js +50 -0
- package/txEncoder.js +529 -0
- package/utility.js +28 -0
- package/verifymessage.js +38 -0
- package/ws-transport.js +311 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const Datastore = require('nedb');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
const chain = 'ltc-test'; // Change this to 'btc' or 'doge' as needed
|
|
5
|
+
const baseDir = path.join(__dirname, '..', 'nedb-data', chain);
|
|
6
|
+
|
|
7
|
+
function clearDatastore(dbPath, dbName) {
|
|
8
|
+
const db = new Datastore({ filename: dbPath, autoload: true });
|
|
9
|
+
db.remove({}, { multi: true }, (err, numRemoved) => {
|
|
10
|
+
if (err) {
|
|
11
|
+
console.error(`Error clearing the ${dbName} database:`, err);
|
|
12
|
+
} else {
|
|
13
|
+
console.log(`Cleared ${numRemoved} entries from the ${dbName} database.`);
|
|
14
|
+
db.loadDatabase(loadErr => {
|
|
15
|
+
if (loadErr) {
|
|
16
|
+
console.error(`Error reloading the ${dbName} database:`, loadErr);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
const txIndexDbPath = path.join(baseDir, 'txIndex.db');
|
|
25
|
+
clearDatastore(txIndexDbPath, 'txIndex');
|
|
26
|
+
|
|
27
|
+
const paths = {
|
|
28
|
+
propertyListDbPath: 'propertyList.db',
|
|
29
|
+
tallyMapDbPath: 'tallyMap.db',
|
|
30
|
+
activationsDbPath: 'activations.db',
|
|
31
|
+
consensusDbPath: 'consensus.db',
|
|
32
|
+
orderBooksDbPath: 'orderBooks.db',
|
|
33
|
+
insuranceDbPath: 'insurance.db',
|
|
34
|
+
oracleListDbPath: 'oracleList.db',
|
|
35
|
+
contractListDbPath: 'contractList.db',
|
|
36
|
+
tradeHistoryDbPath: 'tradeHistory.db',
|
|
37
|
+
oracleDataDbPath: 'oracleData.db',
|
|
38
|
+
marginMapDbPath: 'marginMaps.db',
|
|
39
|
+
tallyMapDeltasDbPath: 'tallyMapDelta.db',
|
|
40
|
+
marginMapDeltasDbPath: 'marginMapDelta.db',
|
|
41
|
+
channelsDbPath: 'channels.db',
|
|
42
|
+
withdrawalQueueDbPath: 'withdrawalQueue.db',
|
|
43
|
+
liquidationsDbPath: 'liquidations.db',
|
|
44
|
+
feeCacheDbPath: 'feeCache.db',
|
|
45
|
+
volumeIndexDbPath: 'volumeIndex.db',
|
|
46
|
+
clearListDbPath: 'clearLists.db',
|
|
47
|
+
attestationsDbPath: 'attestations.db',
|
|
48
|
+
vaultsDbPath: 'vaults.db',
|
|
49
|
+
syntheticTokensDbPath: 'syntheticTokens.db',
|
|
50
|
+
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
for (const [name, relativePath] of Object.entries(paths)) {
|
|
54
|
+
clearDatastore(path.join(baseDir, relativePath), name);
|
|
55
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const Datastore = require('nedb');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
const chain = 'ltc-test'; // Change this to 'btc' or 'doge' as needed
|
|
5
|
+
const baseDir = path.join(__dirname, '..', 'nedb-data', chain);
|
|
6
|
+
|
|
7
|
+
function clearDatastore(dbPath, dbName) {
|
|
8
|
+
const db = new Datastore({ filename: dbPath, autoload: true });
|
|
9
|
+
db.remove({}, { multi: true }, (err, numRemoved) => {
|
|
10
|
+
if (err) {
|
|
11
|
+
console.error(`Error clearing the ${dbName} database:`, err);
|
|
12
|
+
} else {
|
|
13
|
+
console.log(`Cleared ${numRemoved} entries from the ${dbName} database.`);
|
|
14
|
+
db.loadDatabase(loadErr => {
|
|
15
|
+
if (loadErr) {
|
|
16
|
+
console.error(`Error reloading the ${dbName} database:`, loadErr);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const paths = {
|
|
24
|
+
propertyListDbPath: 'propertyList.db',
|
|
25
|
+
tallyMapDbPath: 'tallyMap.db',
|
|
26
|
+
activationsDbPath: 'activations.db',
|
|
27
|
+
consensusDbPath: 'consensus.db',
|
|
28
|
+
orderBooksDbPath: 'orderBooks.db',
|
|
29
|
+
insuranceDbPath: 'insurance.db',
|
|
30
|
+
oracleListDbPath: 'oracleList.db',
|
|
31
|
+
contractListDbPath: 'contractList.db',
|
|
32
|
+
tradeHistoryDbPath: 'tradeHistory.db',
|
|
33
|
+
oracleDataDbPath: 'oracleData.db',
|
|
34
|
+
marginMapDbPath: 'marginMaps.db',
|
|
35
|
+
tallyMapDeltasDbPath: 'tallyMapDelta.db',
|
|
36
|
+
marginMapDeltasDbPath: 'marginMapDelta.db',
|
|
37
|
+
channelsDbPath: 'channels.db',
|
|
38
|
+
withdrawalQueueDbPath: 'withdrawalQueue.db',
|
|
39
|
+
liquidationsDbPath: 'liquidations.db',
|
|
40
|
+
feeCacheDbPath: 'feeCache.db',
|
|
41
|
+
volumeIndexDbPath: 'volumeIndex.db',
|
|
42
|
+
clearListDbPath: 'clearLists.db',
|
|
43
|
+
attestationsDbPath: 'attestations.db',
|
|
44
|
+
vaultsDbPath: 'vaults.db',
|
|
45
|
+
syntheticTokensDbPath: 'syntheticTokens.db',
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
for (const [name, relativePath] of Object.entries(paths)) {
|
|
49
|
+
clearDatastore(path.join(baseDir, relativePath), name);
|
|
50
|
+
}
|
package/txEncoder.js
ADDED
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
const BigNumber = require('bignumber.js');
|
|
2
|
+
|
|
3
|
+
const marker = 'tl';
|
|
4
|
+
|
|
5
|
+
const Encode = {
|
|
6
|
+
// Encode Simple Token Issue Transaction
|
|
7
|
+
encodeActivateTradeLayer(params) {
|
|
8
|
+
const payload = [
|
|
9
|
+
params.txTypeToActivate.toString(36),
|
|
10
|
+
params.codeHash,
|
|
11
|
+
params.wasmHash
|
|
12
|
+
];
|
|
13
|
+
const txNumber = 0; // Example starting tx type number
|
|
14
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
// Encode Token Issue Transaction
|
|
18
|
+
encodeTokenIssue(params) {
|
|
19
|
+
const payload = [
|
|
20
|
+
params.initialAmount.toString(36),
|
|
21
|
+
params.ticker,
|
|
22
|
+
params.whitelists.map(val => val.toString(36)).join(','),
|
|
23
|
+
params.managed ? '1' : '0',
|
|
24
|
+
params.backupAddress,
|
|
25
|
+
params.nft ? '1' : '0'
|
|
26
|
+
];
|
|
27
|
+
const txNumber = 1;
|
|
28
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
// Encode Send Transaction
|
|
32
|
+
|
|
33
|
+
encodeSend(params){
|
|
34
|
+
const { sendAll, address, propertyId, amount } = params;
|
|
35
|
+
|
|
36
|
+
if (sendAll) return `1;${address}`;
|
|
37
|
+
|
|
38
|
+
// Function to encode amounts using bimodal encoding
|
|
39
|
+
const encodeAmount = (amt) => {
|
|
40
|
+
const scaledAmt = new BigNumber(amt).times(1e8);
|
|
41
|
+
const isWholeNumber = Boolean(amt%1==0);
|
|
42
|
+
|
|
43
|
+
return isWholeNumber
|
|
44
|
+
? amt.toString(36) // Normal base36 encoding
|
|
45
|
+
: scaledAmt.integerValue().toString(36) + '~'; // Base36 with `~` flag
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
if (Array.isArray(propertyId) && Array.isArray(amount)) {
|
|
49
|
+
const payload = [
|
|
50
|
+
'0',
|
|
51
|
+
'',
|
|
52
|
+
propertyId.map(id => id.toString(36)).join(','),
|
|
53
|
+
amount.map(encodeAmount).join(',')
|
|
54
|
+
];
|
|
55
|
+
return payload.join(';');
|
|
56
|
+
} else {
|
|
57
|
+
const amountValue = Array.isArray(amount) ? amount[0] : amount;
|
|
58
|
+
const payload = [
|
|
59
|
+
'0',
|
|
60
|
+
address,
|
|
61
|
+
propertyId.toString(36),
|
|
62
|
+
encodeAmount(amountValue)
|
|
63
|
+
];
|
|
64
|
+
const txNumber = 2;
|
|
65
|
+
const txNumber36 = txNumber.toString(36);
|
|
66
|
+
return `tl${txNumber36}${payload.join(';')}`;
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
// Helper function to encode property ID
|
|
71
|
+
encodePropertyId(propertyId) {
|
|
72
|
+
if (typeof propertyId === 'string' && propertyId.startsWith('s-')) {
|
|
73
|
+
const [_, collateralId, contractId] = propertyId.split('-');
|
|
74
|
+
const encodedCollateralId = parseInt(collateralId).toString(36);
|
|
75
|
+
const encodedContractId = parseInt(contractId).toString(36);
|
|
76
|
+
return `s-${encodedCollateralId}-${encodedContractId}`;
|
|
77
|
+
} else {
|
|
78
|
+
return propertyId.toString(36);
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
// Encode Trade Token for UTXO Transaction
|
|
83
|
+
encodeTradeTokenForUTXO(params) {
|
|
84
|
+
const amount = new BigNumber(params.amountOffered).times(1e8).toString(36);
|
|
85
|
+
const payload = [
|
|
86
|
+
params.propertyId.toString(36),
|
|
87
|
+
amount,
|
|
88
|
+
params.columnA,
|
|
89
|
+
params.satsExpected.toString(36),
|
|
90
|
+
params.tokenOutput,
|
|
91
|
+
params.payToAddress
|
|
92
|
+
].join(',');
|
|
93
|
+
const txNumber = 3;
|
|
94
|
+
return marker + txNumber.toString(36) + payload;
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
// Encode Commit Token Transaction
|
|
98
|
+
encodeCommit(params) {
|
|
99
|
+
const amount = new BigNumber(params.amount).times(1e8).toString(36);
|
|
100
|
+
const channelAddress = params.channelAddress.length > 42 ? `ref:${params.ref || 0}` : params.channelAddress;
|
|
101
|
+
const payload = [
|
|
102
|
+
params.propertyId.toString(36),
|
|
103
|
+
amount,
|
|
104
|
+
channelAddress
|
|
105
|
+
].join(',');
|
|
106
|
+
const txNumber = 4;
|
|
107
|
+
return marker + txNumber.toString(36) + payload;
|
|
108
|
+
},
|
|
109
|
+
|
|
110
|
+
// Encode On-chain Token for Token Transaction
|
|
111
|
+
encodeOnChainTokenForToken(params) {
|
|
112
|
+
const amountOffered = new BigNumber(params.amountOffered).times(1e8).toString(36);
|
|
113
|
+
const amountExpected = new BigNumber(params.amountExpected).times(1e8).toString(36);
|
|
114
|
+
const payload = [
|
|
115
|
+
params.propertyIdOffered.toString(36),
|
|
116
|
+
params.propertyIdDesired.toString(36),
|
|
117
|
+
amountOffered,
|
|
118
|
+
amountExpected,
|
|
119
|
+
params.stop ? '1' : '0',
|
|
120
|
+
params.post ? '1' : '0'
|
|
121
|
+
].join(',');
|
|
122
|
+
const txNumber = 5;
|
|
123
|
+
return marker + txNumber.toString(36) + payload;
|
|
124
|
+
},
|
|
125
|
+
|
|
126
|
+
// Encode Cancel Order Transaction
|
|
127
|
+
encodeCancelOrder(params) {
|
|
128
|
+
let encodedTx = params.isContract ? `1` : `0`;
|
|
129
|
+
|
|
130
|
+
if (params.isContract) {
|
|
131
|
+
encodedTx += `,${params.contractId.toString(36)},${params.cancelAll ? 1 : 0}`;
|
|
132
|
+
} else {
|
|
133
|
+
encodedTx += `,${params.offeredPropertyId.toString(36)},${params.desiredPropertyId.toString(36)},${params.cancelAll ? 1 : 0}`;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (params.cancelParams && params.cancelParams.price !== undefined) {
|
|
137
|
+
const priceEncoded = params.isContract ? params.cancelParams.price.toString(36) : new BigNumber(params.cancelParams.price).times(8).toString(36);
|
|
138
|
+
encodedTx += `,${priceEncoded},${params.cancelParams.side.toString(36)}`;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (params.cancelParams && params.cancelParams.txid) {
|
|
142
|
+
encodedTx += `,${params.cancelParams.txid}`;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const txNumber = 6;
|
|
146
|
+
return marker + txNumber.toString(36) + encodedTx;
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
encodeCreateWhitelist: (params) => {
|
|
150
|
+
const payload = [
|
|
151
|
+
params.backupAddress,
|
|
152
|
+
params.name,
|
|
153
|
+
params.url,
|
|
154
|
+
params.description
|
|
155
|
+
];
|
|
156
|
+
const txNumber = 7; // Transaction type 7
|
|
157
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
// Transaction type 8: Encode Update Whitelist Admin Transaction
|
|
161
|
+
encodeUpdateAdmin: (params) => {
|
|
162
|
+
const payload = [
|
|
163
|
+
params.newAddress,
|
|
164
|
+
params.whitelist ? '1' : '0',
|
|
165
|
+
params.oracle ? '1' : '0',
|
|
166
|
+
params.token ? '1' : '0',
|
|
167
|
+
params.id.toString(36),
|
|
168
|
+
params.updateBackup ? '1' : '0'
|
|
169
|
+
];
|
|
170
|
+
const txNumber = 8; // Transaction type 8
|
|
171
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
172
|
+
},
|
|
173
|
+
|
|
174
|
+
// Transaction type 9: Encode Issue Attestation Transaction
|
|
175
|
+
encodeIssueOrRevokeAttestation: (params) => {
|
|
176
|
+
const payload = [
|
|
177
|
+
params.revoke,
|
|
178
|
+
params.id,
|
|
179
|
+
params.targetAddress,
|
|
180
|
+
params.metaData
|
|
181
|
+
];
|
|
182
|
+
const txNumber = 9; // Transaction type 9
|
|
183
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
184
|
+
},
|
|
185
|
+
|
|
186
|
+
// Transaction type 10: Encode Revoke Attestation Transaction
|
|
187
|
+
encodeAMMPool: (params) => {
|
|
188
|
+
const payload = [
|
|
189
|
+
params.isRedeem,
|
|
190
|
+
params.isContract,
|
|
191
|
+
params.id,
|
|
192
|
+
params.amount,
|
|
193
|
+
params.id2,
|
|
194
|
+
params.amount2,
|
|
195
|
+
];
|
|
196
|
+
const txNumber = 10; // Transaction type 10
|
|
197
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
198
|
+
},
|
|
199
|
+
|
|
200
|
+
// Transaction type 11: Encode Create Oracle Transaction
|
|
201
|
+
encodeCreateOracle: (params) => {
|
|
202
|
+
const payload = [
|
|
203
|
+
params.ticker,
|
|
204
|
+
params.url,
|
|
205
|
+
params.backupAddress,
|
|
206
|
+
params.whitelists.map(whitelist => whitelist.toString(36)).join(','),
|
|
207
|
+
params.lag.toString(36)
|
|
208
|
+
];
|
|
209
|
+
const txNumber = 11; // Transaction type 11
|
|
210
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
211
|
+
},
|
|
212
|
+
|
|
213
|
+
// Transaction type 12: Encode Grant Managed Token Transaction
|
|
214
|
+
encodeGrantManagedToken: (params) => {
|
|
215
|
+
const amountGranted = new BigNumber(params.amountGranted).times(1e8).toString(36);
|
|
216
|
+
const payload = [
|
|
217
|
+
params.propertyid.toString(36),
|
|
218
|
+
amountGranted,
|
|
219
|
+
params.addressToGrantTo
|
|
220
|
+
];
|
|
221
|
+
const txNumber = 12; // Transaction type 12
|
|
222
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
223
|
+
},
|
|
224
|
+
|
|
225
|
+
// Transaction type 13: Encode Redeem Managed Token Transaction
|
|
226
|
+
encodeRedeemManagedToken: (params) => {
|
|
227
|
+
const amountGranted = new BigNumber(params.amountGranted).times(1e8).toString(36);
|
|
228
|
+
const payload = [
|
|
229
|
+
params.propertyid.toString(36),
|
|
230
|
+
amountGranted,
|
|
231
|
+
params.addressToGrantTo
|
|
232
|
+
];
|
|
233
|
+
const txNumber = 13; // Transaction type 13
|
|
234
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
235
|
+
},
|
|
236
|
+
|
|
237
|
+
// Transaction type 14: Encode Publish Oracle Data Transaction
|
|
238
|
+
encodePublishOracleData: (params) => {
|
|
239
|
+
const payload = [
|
|
240
|
+
params.oracleid.toString(36),
|
|
241
|
+
params.price.toString(36)
|
|
242
|
+
];
|
|
243
|
+
if (params.high !== undefined) {
|
|
244
|
+
payload.push(params.high.toString(36));
|
|
245
|
+
}
|
|
246
|
+
if (params.low !== undefined) {
|
|
247
|
+
payload.push(params.low.toString(36));
|
|
248
|
+
}
|
|
249
|
+
if (params.close !== undefined) {
|
|
250
|
+
payload.push(params.close.toString(36));
|
|
251
|
+
}
|
|
252
|
+
const txNumber = 14; // Transaction type 14
|
|
253
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
254
|
+
},
|
|
255
|
+
|
|
256
|
+
// Transaction type 15: Encode Close Oracle Transaction
|
|
257
|
+
encodeCloseOracle: (id) => {
|
|
258
|
+
const txNumber = 15; // Transaction type 15
|
|
259
|
+
return marker + txNumber.toString(36) + id.toString(36); // No other parameters
|
|
260
|
+
},
|
|
261
|
+
|
|
262
|
+
// Transaction type 16: Encode Create Future Contract Series Transaction
|
|
263
|
+
encodeCreateFutureContractSeries: (params) => {
|
|
264
|
+
const payload = [
|
|
265
|
+
params.native ? '1' : '0',
|
|
266
|
+
params.underlyingOracleId.toString(36),
|
|
267
|
+
params.onChainData.map(data => `${data[0].toString(36)}:${data[1].toString(36)}`).join(';'),
|
|
268
|
+
params.notionalPropertyId.toString(36),
|
|
269
|
+
params.notionalValue.toString(36),
|
|
270
|
+
params.collateralPropertyId.toString(36),
|
|
271
|
+
params.leverage,
|
|
272
|
+
params.expiryPeriod !== undefined ? params.expiryPeriod.toString(36) : '0',
|
|
273
|
+
params.series.toString(36),
|
|
274
|
+
params.inverse ? '1' : '0',
|
|
275
|
+
params.fee !== undefined ? params.fee ? '1' : '0' : '0'
|
|
276
|
+
];
|
|
277
|
+
const txNumber = 16; // Transaction type 16
|
|
278
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
279
|
+
},
|
|
280
|
+
|
|
281
|
+
// Transaction type 17: Encode Exercise Derivative Transaction
|
|
282
|
+
encodeExerciseDerivative: (params) => {
|
|
283
|
+
const payload = [
|
|
284
|
+
params.derivativeContractId.toString(36),
|
|
285
|
+
params.amount.toString(36),
|
|
286
|
+
];
|
|
287
|
+
const txNumber = 17; // Transaction type 17
|
|
288
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
// Transaction type 18: Encode Trade Contract On-chain Transaction
|
|
292
|
+
encodeTradeContractOnchain: (params) => {
|
|
293
|
+
const payload = [
|
|
294
|
+
params.contractId.toString(36),
|
|
295
|
+
params.price.toString(36),
|
|
296
|
+
params.amount.toString(36),
|
|
297
|
+
params.sell ? '1' : '0',
|
|
298
|
+
params.insurance ? '1' : '0',
|
|
299
|
+
params.reduce ? '1' : '0',
|
|
300
|
+
params.post ? '1' : '0',
|
|
301
|
+
params.stop ? '1' : '0'
|
|
302
|
+
];
|
|
303
|
+
const txNumber = 18; // Transaction type 18
|
|
304
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
305
|
+
},
|
|
306
|
+
|
|
307
|
+
// Transaction type 19: Encode Trade Contract in Channel Transaction
|
|
308
|
+
encodeTradeContractChannel: (params) => {
|
|
309
|
+
const payload = [
|
|
310
|
+
params.contractId.toString(36),
|
|
311
|
+
new BigNumber(params.price).times(1e8).integerValue(BigNumber.ROUND_HALF_UP).toString(36),
|
|
312
|
+
params.amount.toString(36),
|
|
313
|
+
params.columnAIsSeller ? '1' : '0',
|
|
314
|
+
params.expiryBlock.toString(36),
|
|
315
|
+
params.insurance ? '1' : '0',
|
|
316
|
+
];
|
|
317
|
+
const txNumber = 19; // Transaction type 19
|
|
318
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
319
|
+
},
|
|
320
|
+
|
|
321
|
+
// Transaction type 20: Encode Trade Tokens in Channel Transaction
|
|
322
|
+
encodeTradeTokensChannel: (params) => {
|
|
323
|
+
const amountOffered = new BigNumber(params.amountOffered1).times(1e8).toNumber();
|
|
324
|
+
const amountDesired = new BigNumber(params.amountDesired2).times(1e8).toNumber();
|
|
325
|
+
const payload = [
|
|
326
|
+
params.propertyId1.toString(36),
|
|
327
|
+
params.propertyId2.toString(36),
|
|
328
|
+
amountOffered.toString(36),
|
|
329
|
+
amountDesired.toString(36),
|
|
330
|
+
params.columnAIsOfferer ? '1' : '0',
|
|
331
|
+
params.expiryBlock.toString(36),
|
|
332
|
+
];
|
|
333
|
+
const txNumber = 20; // Transaction type 20
|
|
334
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
335
|
+
},
|
|
336
|
+
|
|
337
|
+
// Transaction type 21: Encode Withdrawal Transaction
|
|
338
|
+
encodeWithdrawal: (params) => {
|
|
339
|
+
const amounts = new BigNumber(params.amountOffered).times(1e8).toNumber().toString();
|
|
340
|
+
const withdrawAll = params.withdrawAll;
|
|
341
|
+
const propertyIds = params.propertyId.toString(36);
|
|
342
|
+
const column = params.column; // 0 is A, 1 is B
|
|
343
|
+
const payload = [withdrawAll, propertyIds, amounts, column, params.channelAddress];
|
|
344
|
+
const txNumber = 21; // Transaction type 21
|
|
345
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
346
|
+
},
|
|
347
|
+
|
|
348
|
+
// Transaction type 22: Encode Transfer Transaction
|
|
349
|
+
encodeTransfer: (params) => {
|
|
350
|
+
const propertyId = params.propertyId.toString(36);
|
|
351
|
+
const amounts = new BigNumber(params.amount).times(1e8).toString(36);
|
|
352
|
+
const isColumnA = params.isColumnA ? 1 : 0;
|
|
353
|
+
const destinationAddr = params.destinationAddr.length > 42 ? `ref:${params.ref || 0}` : params.destinationAddr; // Handle long multisig addresses
|
|
354
|
+
const payload = [propertyId, amounts, isColumnA, destinationAddr];
|
|
355
|
+
const txNumber = 22; // Transaction type 22
|
|
356
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
357
|
+
},
|
|
358
|
+
|
|
359
|
+
// Transaction type 23: Encode Settle Channel PNL Transaction
|
|
360
|
+
encodeSettleChannelPNL: (params) => {
|
|
361
|
+
const payload = [
|
|
362
|
+
params.txidNeutralized,
|
|
363
|
+
params.contractId.toString(36),
|
|
364
|
+
params.amountCancelled.toString(36),
|
|
365
|
+
params.propertyId.toString(36),
|
|
366
|
+
params.amountSettled.toString(36),
|
|
367
|
+
params.close ? '1' : '0',
|
|
368
|
+
params.propertyId2 ? params.propertyId2.toString(36) : '0',
|
|
369
|
+
params.amountDelivered ? params.amountDelivered.toString(36) : '0',
|
|
370
|
+
];
|
|
371
|
+
const txNumber = 23; // Transaction type 23
|
|
372
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
373
|
+
},
|
|
374
|
+
|
|
375
|
+
// Transaction type 24: Encode Mint Synthetic Transaction
|
|
376
|
+
encodeMintSynthetic: (params) => {
|
|
377
|
+
const payload = [
|
|
378
|
+
params.propertyIdUsed.toString(36),
|
|
379
|
+
params.contractIdUsed.toString(36),
|
|
380
|
+
params.amount.toString(36),
|
|
381
|
+
];
|
|
382
|
+
const txNumber = 24; // Transaction type 24
|
|
383
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
384
|
+
},
|
|
385
|
+
|
|
386
|
+
// Transaction type 25: Encode Redeem Synthetic Transaction
|
|
387
|
+
encodeRedeemSynthetic: (params) => {
|
|
388
|
+
const payload = [
|
|
389
|
+
params.propertyIdUsed.toString(36),
|
|
390
|
+
params.contractIdUsed.toString(36),
|
|
391
|
+
params.amount.toString(36),
|
|
392
|
+
];
|
|
393
|
+
const txNumber = 25; // Transaction type 25
|
|
394
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
395
|
+
},
|
|
396
|
+
|
|
397
|
+
// Transaction type 26: Encode Pay to Tokens Transaction
|
|
398
|
+
encodePayToTokens: (params) => {
|
|
399
|
+
const payload = [
|
|
400
|
+
params.propertyIdTarget.toString(36),
|
|
401
|
+
params.propertyIdUsed.toString(36),
|
|
402
|
+
params.amount.toString(36),
|
|
403
|
+
];
|
|
404
|
+
const txNumber = 26; // Transaction type 26
|
|
405
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
406
|
+
},
|
|
407
|
+
|
|
408
|
+
// Transaction type 27: Encode Create Option Chain Transaction
|
|
409
|
+
encodeCreateOptionChain: (params) => {
|
|
410
|
+
const payload = [
|
|
411
|
+
params.contractSeriesId.toString(36),
|
|
412
|
+
params.strikePercentInterval.toString(36),
|
|
413
|
+
params.europeanStyle ? '1' : '0',
|
|
414
|
+
];
|
|
415
|
+
const txNumber = 27; // Transaction type 27
|
|
416
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
417
|
+
},
|
|
418
|
+
|
|
419
|
+
// Transaction type 28: Encode Trade Bai Urbun Transaction
|
|
420
|
+
encodeTradeBaiUrbun: (params) => {
|
|
421
|
+
const payload = [
|
|
422
|
+
params.propertyIdDownPayment.toString(36),
|
|
423
|
+
params.propertyIdToBeSold.toString(36),
|
|
424
|
+
params.price.toString(36),
|
|
425
|
+
params.amount.toString(36),
|
|
426
|
+
params.expiryBlock.toString(36),
|
|
427
|
+
params.tradeExpiryBlock.toString(36),
|
|
428
|
+
];
|
|
429
|
+
const txNumber = 28; // Transaction type 28
|
|
430
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
431
|
+
},
|
|
432
|
+
|
|
433
|
+
// Transaction type 29: Encode Trade Murabaha Transaction
|
|
434
|
+
encodeTradeMurabaha: (params) => {
|
|
435
|
+
const payload = [
|
|
436
|
+
params.propertyIdDownPayment.toString(36),
|
|
437
|
+
params.downPaymentPercent.toString(36),
|
|
438
|
+
params.propertyIdToBeSold.toString(36),
|
|
439
|
+
params.price.toString(36),
|
|
440
|
+
params.amount.toString(36),
|
|
441
|
+
params.expiryBlock.toString(36),
|
|
442
|
+
params.installmentInterval.toString(36),
|
|
443
|
+
params.tradeExpiryBlock.toString(36),
|
|
444
|
+
];
|
|
445
|
+
const txNumber = 29; // Transaction type 29
|
|
446
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
447
|
+
},
|
|
448
|
+
|
|
449
|
+
// Transaction type 30: Encode Issue Invoice Transaction
|
|
450
|
+
encodeIssueInvoice: (params) => {
|
|
451
|
+
const payload = [
|
|
452
|
+
params.propertyIdToReceivePayment.toString(36),
|
|
453
|
+
params.amount.toString(36),
|
|
454
|
+
params.dueDateBlock.toString(36),
|
|
455
|
+
params.optionalPropertyIdCollateral ? params.optionalPropertyIdCollateral.toString(36) : '0',
|
|
456
|
+
params.receivesPayToToken ? '1' : '0',
|
|
457
|
+
];
|
|
458
|
+
const txNumber = 30; // Transaction type 30
|
|
459
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
460
|
+
},
|
|
461
|
+
|
|
462
|
+
// Transaction type 31: Encode Batch Move Zk Rollup Transaction
|
|
463
|
+
encodeBatchMoveZkRollup: (params) => {
|
|
464
|
+
// Assuming params.payments is an array of payment objects
|
|
465
|
+
const paymentsPayload = params.payments.map(payment => {
|
|
466
|
+
const paymentDetails = [
|
|
467
|
+
payment.fromAddress,
|
|
468
|
+
payment.propertyIds.map(id => id.toString(36)).join(':'),
|
|
469
|
+
payment.amounts.map(amt => amt.toString(36)).join(':'),
|
|
470
|
+
payment.toAddress,
|
|
471
|
+
payment.sentPropertyIds.map(id => id.toString(36)).join(':'),
|
|
472
|
+
payment.sentAmounts.map(amt => amt.toString(36)).join(':'),
|
|
473
|
+
];
|
|
474
|
+
return paymentDetails.join(',');
|
|
475
|
+
}).join(';');
|
|
476
|
+
const payload = [
|
|
477
|
+
params.proof,
|
|
478
|
+
paymentsPayload,
|
|
479
|
+
JSON.stringify(params.miscLogic),
|
|
480
|
+
JSON.stringify(params.miscData),
|
|
481
|
+
];
|
|
482
|
+
const txNumber = 31; // Transaction type 31
|
|
483
|
+
return marker + txNumber.toString(36) + payload.join('|');
|
|
484
|
+
},
|
|
485
|
+
|
|
486
|
+
// Transaction type 32: Encode Publish New Transaction Type
|
|
487
|
+
encodePublishNewTx: (params) => {
|
|
488
|
+
const txNumber = 32; // Transaction type 32
|
|
489
|
+
return marker + txNumber.toString(36) + params.ordinalRevealJSON; // Assuming this is a JSON string
|
|
490
|
+
},
|
|
491
|
+
|
|
492
|
+
// Transaction type 33: Encode Create Derivative of LRC20 or RGB
|
|
493
|
+
encodeColoredCoin: (params) => {
|
|
494
|
+
const payload = [
|
|
495
|
+
params.lrc20TokenSeriesId1.toString(36),
|
|
496
|
+
params.lrc20TokenSeriesId2.toString(36),
|
|
497
|
+
params.rgb ? '1' : '0',
|
|
498
|
+
];
|
|
499
|
+
const txNumber = 33; // Transaction type 33
|
|
500
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
501
|
+
},
|
|
502
|
+
|
|
503
|
+
// Transaction type 34: Encode Register OP_CTV Covenant
|
|
504
|
+
encodeRegisterOPCTVCovenant: (params) => {
|
|
505
|
+
const payload = [
|
|
506
|
+
params.redeem,
|
|
507
|
+
params.txid,
|
|
508
|
+
params.associatedPropertyId1 ? params.associatedPropertyId1.toString(36) : '0',
|
|
509
|
+
params.associatedPropertyId2 ? params.associatedPropertyId2.toString(36) : '0',
|
|
510
|
+
params.covenantType.toString(36),
|
|
511
|
+
];
|
|
512
|
+
const txNumber = 34; // Transaction type 34
|
|
513
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
514
|
+
},
|
|
515
|
+
|
|
516
|
+
// Transaction type 35: Encode Cross TL Chain Bridging Transaction
|
|
517
|
+
encodeCrossLayerBridge: (params) => {
|
|
518
|
+
const payload = [
|
|
519
|
+
params.propertyId.toString(36),
|
|
520
|
+
params.amount.toString(36),
|
|
521
|
+
params.destinationAddr
|
|
522
|
+
];
|
|
523
|
+
const txNumber = 35; // Transaction type 35
|
|
524
|
+
return marker + txNumber.toString(36) + payload.join(',');
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
module.exports = Encode;
|
package/utility.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const litecore = require('litecore-lib');
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
buildTx(commitUTXO, toAddress, payload) {
|
|
5
|
+
const tx = new litecore.Transaction()
|
|
6
|
+
.from(commitUTXO)
|
|
7
|
+
.addOutput(new litecore.Transaction.Output({
|
|
8
|
+
script: litecore.Script.buildDataOut(payload),
|
|
9
|
+
satoshis: 0
|
|
10
|
+
}))
|
|
11
|
+
.to(toAddress, 1000); // Example value in satoshis
|
|
12
|
+
return tx;
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
signTx(tx, keypair) {
|
|
16
|
+
const privateKey = litecore.PrivateKey.fromWIF(keypair.wif);
|
|
17
|
+
return tx.sign(privateKey);
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
signPsbt(keypair, psbtHex) {
|
|
21
|
+
// Psbt signing logic
|
|
22
|
+
return psbtHex; // Placeholder
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
sendTx(signedTx) {
|
|
26
|
+
// Send tx logic using wallet listener
|
|
27
|
+
}
|
|
28
|
+
};
|