Page MenuHomePhabricator

[ecash-agora] Move helper functions to get utxos for accepting and canceling agora txs from Cashtab to ecash-agora
ClosedPublic

Authored by bytesofman on Tue, Feb 4, 19:59.

Details

Summary

ecash-agora exports helpful methods for getting the tx fee for accept or cancel txs. Also the AgoraOffer object has methods to accept or cancel. However, these methods require fuel utxos. Right now, it's on the app dev to get those utxos.

These functions belong in the libray, since

  • chronik-client is already a dependency of ecash-agora
  • utxos are typed, so we can expect app devs to be working with chronik-client utxos
  • they are specifically used for accepting or canceling agora txs

Move functions and tests from Cashtab to ecash-agora lib. Export from the lib and implement in Cashtab to show they still work as expected.

Test Plan

npm test, CI tests

Diff Detail

Event Timeline

Tail of the build log:

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

> chronik-client@2.1.1 build
> tsc

/work/modules/ecash-lib /work/abc-ci-builds/cashtab-tests

added 365 packages, and audited 369 packages in 2s

60 packages are looking for funding
  run `npm fund` for details

2 vulnerabilities (1 moderate, 1 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-lib@1.5.1 build
> tsc && tsc -p ./tsconfig.build.json && cp -r ./src/ffi ./dist

/work/modules/ecash-agora /work/abc-ci-builds/cashtab-tests

added 364 packages, and audited 367 packages in 1s

60 packages are looking for funding
  run `npm fund` for details

2 vulnerabilities (1 moderate, 1 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-agora@0.4.0 build
> tsc && tsc -p ./tsconfig.build.json

src/inputs.test.ts(187,25): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(190,28): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(198,25): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(198,45): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(201,28): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(201,48): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(209,25): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(209,45): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(209,61): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(212,28): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(212,48): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(212,64): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(220,25): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
Build cashtab-tests failed with exit code 2

Tail of the build log:

[561/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/openuridialog.cpp.o
[562/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrimagewidget.cpp.o
[563/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/overviewpage.cpp.o
[564/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionfilterproxy.cpp.o
[565/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/coincontroldialog.cpp.o
[566/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondescdialog.cpp.o
[567/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/recentrequeststablemodel.cpp.o
[568/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receivecoinsdialog.cpp.o
[569/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receiverequestdialog.cpp.o
[570/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentserver.cpp.o
[571/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsentry.cpp.o
[572/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/signverifymessagedialog.cpp.o
[573/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionrecord.cpp.o
[574/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiontablemodel.cpp.o
[575/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsdialog.cpp.o
[576/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondesc.cpp.o
[577/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodeltransaction.cpp.o
[578/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletframe.cpp.o
[579/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionview.cpp.o
[580/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentrequestplus.cpp.o
[581/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletcontroller.cpp.o
[582/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletview.cpp.o
[583/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodel.cpp.o
[584/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[585/589] Linking CXX static library src/qt/libbitcoin-qt-base.a
[586/589] Automatic MOC for target bitcoin-qt
[587/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[588/589] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[589/589] Linking CXX executable src/qt/bitcoin-qt
/work/modules/ecash-agora /work/abc-ci-builds/ecash-agora-integration-tests

added 364 packages, and audited 367 packages in 2s

60 packages are looking for funding
  run `npm fund` for details

2 vulnerabilities (1 moderate, 1 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-agora@0.4.0 build
> tsc && tsc -p ./tsconfig.build.json

src/inputs.test.ts(187,25): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(190,28): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(198,25): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(198,45): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(201,28): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(201,48): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(209,25): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(209,45): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(209,61): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(212,28): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(212,48): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(212,64): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
src/inputs.test.ts(220,25): error TS2739: Type '{ value: number; }' is missing the following properties from type 'ScriptUtxo': outpoint, blockHeight, isCoinbase, isFinal
Build ecash-agora-integration-tests failed with exit code 2

implement in cashtab, typecast for ts lint issue

Tail of the build log:

Run `npm audit` for details.

> ecash-lib@1.5.1 build
> tsc && tsc -p ./tsconfig.build.json && cp -r ./src/ffi ./dist

/work/modules/ecash-agora /work/abc-ci-builds/cashtab-tests

added 364 packages, and audited 367 packages in 2s

60 packages are looking for funding
  run `npm fund` for details

2 vulnerabilities (1 moderate, 1 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-agora@0.4.0 build
> tsc && tsc -p ./tsconfig.build.json

/work/cashtab /work/abc-ci-builds/cashtab-tests
npm warn deprecated @humanwhocodes/config-array@0.11.14: Use @eslint/config-array instead
npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm warn deprecated eslint@8.56.0: This version is no longer supported. Please see https://eslint.org/version-support for other options.

added 1494 packages, and audited 3315 packages in 25s

320 packages are looking for funding
  run `npm fund` for details

8 vulnerabilities (4 moderate, 4 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

> cashtab@3.13.0 build
> node scripts/build.js

Creating an optimized production build...
Failed to compile.

TS2339: Property 'path' does not exist on type 'ScriptUtxo'.
    213 |         const signedFuelInputs = [];
    214 |         for (const fuelUtxo of acceptFuelInputs) {
  > 215 |             const pathInfo = wallet.paths.get(fuelUtxo.path);
        |                                                        ^^^^
    216 |             if (typeof pathInfo === 'undefined') {
    217 |                 // Should never happen
    218 |                 return toast.error(`No path info for ${fuelUtxo.path}`);


Build cashtab-tests failed with exit code 1

Tail of the build log:

Run `npm audit` for details.

> ecash-lib@1.5.1 build
> tsc && tsc -p ./tsconfig.build.json && cp -r ./src/ffi ./dist

/work/modules/ecash-agora /work/abc-ci-builds/cashtab-tests

added 364 packages, and audited 367 packages in 2s

60 packages are looking for funding
  run `npm fund` for details

2 vulnerabilities (1 moderate, 1 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-agora@0.4.0 build
> tsc && tsc -p ./tsconfig.build.json

/work/cashtab /work/abc-ci-builds/cashtab-tests
npm warn deprecated @humanwhocodes/config-array@0.11.14: Use @eslint/config-array instead
npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm warn deprecated eslint@8.56.0: This version is no longer supported. Please see https://eslint.org/version-support for other options.

added 1494 packages, and audited 3315 packages in 24s

320 packages are looking for funding
  run `npm fund` for details

8 vulnerabilities (4 moderate, 4 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

> cashtab@3.13.0 build
> node scripts/build.js

Creating an optimized production build...

Treating warnings as errors because process.env.CI = true.
Most CI servers set it automatically.

Failed to compile.

[eslint] 
src/wallet/index.ts
  Line 13:10:  'AgoraOffer' is defined but never used            @typescript-eslint/no-unused-vars
  Line 117:7:  'DUMMY_INPUT' is assigned a value but never used  @typescript-eslint/no-unused-vars


Build cashtab-tests failed with exit code 1

Tail of the build log:

60 packages are looking for funding
  run `npm fund` for details

2 vulnerabilities (1 moderate, 1 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-lib@1.5.1 build
> tsc && tsc -p ./tsconfig.build.json && cp -r ./src/ffi ./dist

/work/modules/ecash-agora /work/abc-ci-builds/cashtab-tests

added 364 packages, and audited 367 packages in 2s

60 packages are looking for funding
  run `npm fund` for details

2 vulnerabilities (1 moderate, 1 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-agora@0.4.0 build
> tsc && tsc -p ./tsconfig.build.json

/work/cashtab /work/abc-ci-builds/cashtab-tests
npm warn deprecated @humanwhocodes/config-array@0.11.14: Use @eslint/config-array instead
npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm warn deprecated eslint@8.56.0: This version is no longer supported. Please see https://eslint.org/version-support for other options.

added 1494 packages, and audited 3315 packages in 25s

320 packages are looking for funding
  run `npm fund` for details

8 vulnerabilities (4 moderate, 4 high)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

> cashtab@3.13.0 build
> node scripts/build.js

Creating an optimized production build...
Failed to compile.

Attempted import error: 'DUMMY_KEYPAIR' is not exported from 'wallet' (imported as 'DUMMY_KEYPAIR').


Build cashtab-tests failed with exit code 1
bytesofman edited the test plan for this revision. (Show Details)
bytesofman published this revision for review.Wed, Feb 5, 03:54
bytesofman retitled this revision from [ecash-agora] Add helper functions to get utxos for accepting and canceling txs to [ecash-agora] Move helper functions to get utxos for accepting and canceling agora txs from Cashtab to ecash-agora.
bytesofman edited the summary of this revision. (Show Details)
This revision is now accepted and ready to land.Wed, Feb 5, 12:05