Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ let keyUtils = {
},

getPublicKey: async function (txInput, i) {
let privKeyBytes = getPrivateKey(txInput, i);
let privKeyBytes = await keyUtils.getPrivateKey(txInput, i);
let pubKeyBytes = await keyUtils.toPublicKey(privKeyBytes);

return pubKeyBytes;
Expand Down
14 changes: 7 additions & 7 deletions dashtx.js
Original file line number Diff line number Diff line change
Expand Up @@ -1269,14 +1269,13 @@ var DashTx = ("object" === typeof module && exports) || {};
}
}
if (output.memo) {
let invalid = output.satoshis || output.address || output.pubKeyHash;
let invalid = output.address || output.pubKeyHash;
if (invalid) {
throw new Error(
`memo outputs must not have 'satoshis', 'address', or 'pubKeyHash'`,
);
throw new Error(`memo outputs must not have 'address' or 'pubKeyHash'`);
}

let memoScriptHex = Tx._createMemoScript(output.memo, i);
let sats = output.satoshis || 0;
let memoScriptHex = Tx._createMemoScript(output.memo, sats, i);
let txOut = memoScriptHex.join(_sep);

tx.push(txOut);
Expand Down Expand Up @@ -1320,11 +1319,12 @@ var DashTx = ("object" === typeof module && exports) || {};

/**
* @param {String} memoHex - the memo bytes, in hex
* @param {Uint53} sats - typically 0, but 1.0 for proposal collateral
* @returns {Array<String>} - memo script hex
*/
Tx._createMemoScript = function (memoHex, i = 0) {
Tx._createMemoScript = function (memoHex, sats, i = 0) {
let outputHex = [];
let satoshis = TxUtils._toUint64LE(0);
let satoshis = TxUtils._toUint64LE(sats);
outputHex.push(satoshis);

assertHex(memoHex, `output[${i}].memo`);
Expand Down
38 changes: 0 additions & 38 deletions index.js

This file was deleted.

4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "dashtx",
"version": "0.18.1",
"version": "0.18.2",
"description": "Create DASH Transactions with Vanilla JS (0 deps, cross-platform)",
"main": "dashtx.js",
"module": "dashtx.mjs",
Expand Down Expand Up @@ -30,7 +30,7 @@
"test": "node ./tests/",
"--------------": "-----------------------------------------------",
"jshint": "npx -p [email protected] -- jshint -c ./.jshintrc ./*.js",
"prettier": "npx -p prettier@2.x -- prettier -w '**/*.{js,md}'",
"prettier": "npx -p prettier@3.x -- prettier -w '**/*.{js,md}'",
"reexport-types": "npx -p [email protected] -- reexport",
"tsc": "! npx -p [email protected] -- tsc -p ./jsconfig.json | grep '\\.js(\\d\\+,\\d\\+): error' | grep -v '\\<node_modules/'"
},
Expand Down
20 changes: 14 additions & 6 deletions tests/memo.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ Zora.test("memo lengths", function (t) {
let memo77 = "cc".repeat(77);
let memo80 = "bb".repeat(80);
let memo81 = "aa".repeat(81);
let memoProposal =
"2f3dbf4094c26594c7cd4b1c3d0af3740181d7e57f9f4faf5b7edbf6eddf4954";

let size1 = "01";
let size3 = "03";
Expand All @@ -47,41 +49,47 @@ Zora.test("memo lengths", function (t) {
//let size81 = "51";
//let size82 = "52";
let size83 = "53";
let sizeProposal = "20";

let OP_PD1 = "4c";

t.throws(
function () {
DashTx._createMemoScript(memo81);
DashTx._createMemoScript(memo81, 0);
},
/\b80 bytes\b/,
"memo > 80 bytes should throw an error",
);

let tx1 = DashTx._createMemoScript(memo1);
let tx1 = DashTx._createMemoScript(memo1, 0);
let tx1a = `0000000000000000${size3}6a${size1}${memo1}`;
let tx1b = tx1.join("");
t.deepEqual(tx1b, tx1a, "single-byte memo fits");

let tx75 = DashTx._createMemoScript(memo75);
let tx75 = DashTx._createMemoScript(memo75, 0);
let tx75a = `0000000000000000${size77}6a${size75}${memo75}`;
let tx75b = tx75.join("");
t.deepEqual(tx75b, tx75a, "75-byte memo fits");

let tx76a = `0000000000000000${size79}6a${OP_PD1}${size76}${memo76}`;
let tx76 = DashTx._createMemoScript(memo76);
let tx76 = DashTx._createMemoScript(memo76, 0);
let tx76b = tx76.join("");
t.deepEqual(tx76b, tx76a, "76-byte memo fits with OP_PUSHDATA1");

let tx77a = `0000000000000000${size80}6a${OP_PD1}${size77}${memo77}`;
let tx77 = DashTx._createMemoScript(memo77);
let tx77 = DashTx._createMemoScript(memo77, 0);
let tx77b = tx77.join("");
t.deepEqual(tx77b, tx77a, "77-byte memo fits with OP_PUSHDATA1");

let tx80a = `0000000000000000${size83}6a${OP_PD1}${size80}${memo80}`;
let tx80 = DashTx._createMemoScript(memo80);
let tx80 = DashTx._createMemoScript(memo80, 0);
let tx80b = tx80.join("");
t.deepEqual(tx80b, tx80a, "80-byte memo fits with OP_PUSHDATA1");

let txProposalA = `00e1f50500000000226a202f3dbf4094c26594c7cd4b1c3d0af3740181d7e57f9f4faf5b7edbf6eddf4954`;
let txProposal = DashTx._createMemoScript(memoProposal, 100000000);
let txProposalB = txProposal.join("");
t.deepEqual(txProposalB, txProposalA, "32-byte memo fits with OP_PUSHDATA1");
});

Zora.test("can create memo tx", async function (t) {
Expand Down
8 changes: 0 additions & 8 deletions types.js

This file was deleted.

Loading