Page MenuHomePhabricator

[ecash-wallet] Support LIST agora action for ALP tokens
AbandonedPublic

Authored by bytesofman on Sep 8 2025, 19:17.

Details

Reviewers
None
Group Reviewers
Restricted Project
Summary

Continuing through ecash-wallet min required functionality to drop-in to Cashtab.

Agora actions are ... a bit complicated. For this reason they are already constructed and indexed with their own library, ecash-agora.

We want agora txs to be as standardized as possible. To do this, we should continue to use ecash-agora to determine outputs for agora txs. This is somewhat counterthetical to the extreme output granularity we have established in ecash-wallet.

However, this same granularity can help us with the approach adopted in this diff. We use ecash-agora and the agora spec to determine what the outputs should be. Then we create the appropriate token action and handle it with ecash-wallet.

Test Plan

npm test, CI test

Diff Detail

Event Timeline

Tail of the build log:


> chronik-client@3.4.0 build
> tsc


added 171 packages, and audited 173 packages in 4s

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

6 vulnerabilities (1 low, 3 moderate, 1 high, 1 critical)

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@3.4.0 build
> tsc

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

added 271 packages, and audited 275 packages in 1s

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

7 vulnerabilities (1 low, 5 moderate, 1 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

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

/work/modules/ecash-wallet /work/abc-ci-builds/cashtab-faucet-tests

added 222 packages, and audited 226 packages in 2s

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

3 low severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-wallet@1.5.0 build
> tsc -p ./tsconfig.build.json

src/wallet.ts(43,47): error TS2307: Cannot find module 'ecash-agora' or its corresponding type declarations.
Build cashtab-faucet-tests failed with exit code 2

add ecash-agora to CI deps for ecash-wallet, comment and copy changes

Tail of the build log:

[556/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[557/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[558/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/addressbookpage.cpp.o
[559/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[560/596] Linking CXX executable src/bench/bitcoin-bench
[561/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/createwalletdialog.cpp.o
[562/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[563/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/coincontroltreewidget.cpp.o
[564/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/editaddressdialog.cpp.o
[565/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[566/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrimagewidget.cpp.o
[567/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/askpassphrasedialog.cpp.o
[568/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/openuridialog.cpp.o
[569/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/addresstablemodel.cpp.o
[570/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionfilterproxy.cpp.o
[571/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/overviewpage.cpp.o
[572/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondescdialog.cpp.o
[573/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receiverequestdialog.cpp.o
[574/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/recentrequeststablemodel.cpp.o
[575/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsentry.cpp.o
[576/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/coincontroldialog.cpp.o
[577/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[578/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionrecord.cpp.o
[579/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receivecoinsdialog.cpp.o
[580/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentserver.cpp.o
[581/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodeltransaction.cpp.o
[582/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletframe.cpp.o
[583/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/signverifymessagedialog.cpp.o
[584/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionview.cpp.o
[585/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondesc.cpp.o
[586/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiontablemodel.cpp.o
[587/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentrequestplus.cpp.o
[588/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsdialog.cpp.o
[589/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletcontroller.cpp.o
[590/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletview.cpp.o
[591/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodel.cpp.o
[592/596] Linking CXX static library src/qt/libbitcoin-qt-base.a
[593/596] Automatic MOC for target bitcoin-qt
[594/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[595/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[596/596] Linking CXX executable src/qt/bitcoin-qt
/work/modules/ecash-wallet /work/abc-ci-builds/ecash-wallet-integration-tests

added 222 packages, and audited 226 packages in 2s

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

3 low severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-wallet@1.5.0 build
> tsc -p ./tsconfig.build.json

src/wallet.ts(43,47): error TS2307: Cannot find module 'ecash-agora' or its corresponding type declarations.
Build ecash-wallet-integration-tests failed with exit code 2

Tail of the build log:

[556/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[557/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/addressbookpage.cpp.o
[558/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[559/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/coincontroltreewidget.cpp.o
[560/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/createwalletdialog.cpp.o
[561/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[562/596] Linking CXX executable src/bench/bitcoin-bench
[563/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[564/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/editaddressdialog.cpp.o
[565/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/askpassphrasedialog.cpp.o
[566/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[567/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/openuridialog.cpp.o
[568/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrimagewidget.cpp.o
[569/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/overviewpage.cpp.o
[570/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionfilterproxy.cpp.o
[571/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/addresstablemodel.cpp.o
[572/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receiverequestdialog.cpp.o
[573/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondescdialog.cpp.o
[574/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/recentrequeststablemodel.cpp.o
[575/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsentry.cpp.o
[576/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/coincontroldialog.cpp.o
[577/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionrecord.cpp.o
[578/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[579/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/receivecoinsdialog.cpp.o
[580/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentserver.cpp.o
[581/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodeltransaction.cpp.o
[582/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactionview.cpp.o
[583/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletframe.cpp.o
[584/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/signverifymessagedialog.cpp.o
[585/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiondesc.cpp.o
[586/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/transactiontablemodel.cpp.o
[587/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/paymentrequestplus.cpp.o
[588/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/sendcoinsdialog.cpp.o
[589/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletcontroller.cpp.o
[590/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletview.cpp.o
[591/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/walletmodel.cpp.o
[592/596] Linking CXX static library src/qt/libbitcoin-qt-base.a
[593/596] Automatic MOC for target bitcoin-qt
[594/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[595/596] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[596/596] Linking CXX executable src/qt/bitcoin-qt
/work/modules/ecash-wallet /work/abc-ci-builds/ecash-wallet-integration-tests

added 222 packages, and audited 226 packages in 2s

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

3 low severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.

> ecash-wallet@1.5.0 build
> tsc -p ./tsconfig.build.json

src/wallet.ts(43,47): error TS2307: Cannot find module 'ecash-agora' or its corresponding type declarations.
Build ecash-wallet-integration-tests failed with exit code 2

add ecash-agora to the integration tests deps in CI

bytesofman published this revision for review.Sep 8 2025, 19:45

We may end up taking this approach. But, first will look at handling this entirely within the ecash-agora library.

It's important that agora interactions are made more accessible for new XEC developers, and incorporating these methods into ecash-wallet is one way to do that. However, users will still need to rely on ecash-agora methods to prepare such txs, so perhaps it is better if, instead of ecash-agora being a dep of ecash-wallet, we add methods to ecash-agora that accept an ecash-wallet.