Page MenuHomePhabricator

[ecash-agora] Get true minimum buy amounts for agora offers
ClosedPublic

Authored by bytesofman on Oct 17 2024, 22:31.

Details

Summary

Depends on D16919

Discovered some unhandled cases in implementing agora partials in Cashtab.

  1. Using the library as is, it is possible to create an AgoraPartial offer where the price of the minimum accepted offer is less than dust. In this case, that's not really the price...the price dust / min qty.

I made sure such an offer could not be created with Cashtab validation. But it's the kind of thing better handled at the lib level.

  1. minAcceptedTokens() is not necessarily the true minimum accepted tokens for an offer. Since only discrete quantities may be accepted, you must prepareAcceptedTokens(minAcceptedTokens) to get the true min. However, prepareAcceptedTokens may return a value lower than minAcceptedTokens...which will cause an agora offer for such an amount to fail script sig verify.

Update the minAcceptedTokens() to return the true min, i.e. the lowest possible discrete interval above minAcceptedTokens().

Test Plan

npm test

Diff Detail

Repository
rABC Bitcoin ABC
Branch
agora-selectparams-dust
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 30637
Build 60790: Build Diffecash-agora-tests · ecash-agora-integration-tests
Build 60789: arc lint + arc unit

Event Timeline

remove unnecessary prep code from approximateParams now that it is handled in minAcceptedTokens()

tobias_ruck added a subscriber: tobias_ruck.

Similar for others

modules/ecash-agora/src/partial.approx.test.ts
223
This revision now requires changes to proceed.Oct 17 2024, 22:57
bytesofman marked an inline comment as done.

better mock formatting for adjusted dust tests

rebase, add validation to _acceptTxBuilder to prevent creation of unspendable offers

otherwise lgtm

modules/ecash-agora/src/partial.approx.test.ts
978 ↗(On Diff #50155)

What's this? If it's meant to be here, it should get a better title, otherwise it should be removed

modules/ecash-agora/src/partial.ts
470–475 ↗(On Diff #50155)

newline should be after the if block, not before

This revision is now accepted and ready to land.Oct 19 2024, 23:36
bytesofman marked 2 inline comments as done.

remove debug log test, move if newline from before to after

back out accept tx validation, handle in another diff

modules/ecash-agora/src/partial.approx.test.ts
978 ↗(On Diff #50155)

oops. yeah I used this to isolate the error msg tests, since it.only() would still always run them all.

Failed tests logs:

====== AgoraPartial ALP 7450M XEC vs 2p48-1 full accept: AgoraPartial ALP 7450M XEC vs 2p48-1 full accept AgoraPartial ALP 7450M XEC vs 2p48-1 full accept ======
Error: Accepting 281474959933440 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.bigsats.test.ts:149:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial 7450M XEC vs 2p47-1 full accept: AgoraPartial ALP 7450M XEC vs 2p47-1 full accept.AgoraPartial 7450M XEC vs 2p47-1 full accept AgoraPartial ALP 7450M XEC vs 2p47-1 full accept ======
Error: Accepting 140737475248128 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.bigsats.test.ts:362:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP 7450M XEC vs 100 full accept: AgoraPartial ALP 7450M XEC vs 100 full accept AgoraPartial ALP 7450M XEC vs 100 full accept ======
Error: Accepting 100 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.bigsats.test.ts:575:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000 for 1sat/token, dust accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1sat/token, dust accept ======
Error: Accepting 546 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000 for 1000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1000sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000 for 1000000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1000000sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 0.001sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 1sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000 for 1000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 1000sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000 for 0.001sat/token, full accept ======
Error: Accepting 1000000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000 for 1sat/token, full accept ======
Error: Accepting 1000000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000000000 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000000 for 0.000001sat/token, full accept ======
Error: Accepting 999999995904 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000000 for 0.001sat/token, full accept ======
Error: Accepting 999999995904 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 140737488355327 for 0.000000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 140737488355327 for 0.000000001sat/token, full accept ======
Error: Accepting 140736488407040 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 140737488355327 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 140737488355327 for 0.000001sat/token, full accept ======
Error: Accepting 140737487372288 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 281474976710655 for 0.000000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 281474976710655 for 0.000000001sat/token, full accept ======
Error: Accepting 281474959933440 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 281474976710655 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 281474976710655 for 0.000001sat/token, full accept ======
Error: Accepting 281474959933440 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== Agora Partial 7450M XEC vs 2p64-1 full accept: Agora Partial 7450M XEC vs 2p64-1 full accept Agora Partial 7450M XEC vs 2p64-1 full accept ======
Error: Accepting 18446742974197923840 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.bigsats.test.ts:152:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== Agora Partial 7450M XEC vs 2p63-1 full accept: Agora Partial 7450M XEC vs 2p63-1 full accept Agora Partial 7450M XEC vs 2p63-1 full accept ======
Error: Accepting 9223371220810989568 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.bigsats.test.ts:363:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== Agora Partial 7450M XEC vs 100 full accept: Agora Partial 7450M XEC vs 100 full accept Agora Partial 7450M XEC vs 100 full accept ======
Error: Accepting 100 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.bigsats.test.ts:570:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000 for 1sat/token, dust accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1sat/token, dust accept ======
Error: Accepting 546 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000 for 1000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1000sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000 for 1000000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1000000sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 0.001sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 1sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000 for 1000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 1000sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000 for 0.001sat/token, full accept ======
Error: Accepting 1000000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000 for 1sat/token, full accept ======
Error: Accepting 1000000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000 for 0.000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000 for 0.000001sat/token, full accept ======
Error: Accepting 999999995904 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000 for 0.001sat/token, full accept ======
Error: Accepting 999999995904 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000000 for 0.000000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000 for 0.000000001sat/token, full accept ======
Error: Accepting 999999986991104 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000000 for 0.000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000 for 0.000001sat/token, full accept ======
Error: Accepting 999999986991104 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000000000 for 0.000000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000000 for 0.000000001sat/token, full accept ======
Error: Accepting 999999997191651328 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Each failure log is accessible here:
AgoraPartial ALP 7450M XEC vs 2p48-1 full accept: AgoraPartial ALP 7450M XEC vs 2p48-1 full accept AgoraPartial ALP 7450M XEC vs 2p48-1 full accept
AgoraPartial 7450M XEC vs 2p47-1 full accept: AgoraPartial ALP 7450M XEC vs 2p47-1 full accept.AgoraPartial 7450M XEC vs 2p47-1 full accept AgoraPartial ALP 7450M XEC vs 2p47-1 full accept
AgoraPartial ALP 7450M XEC vs 100 full accept: AgoraPartial ALP 7450M XEC vs 100 full accept AgoraPartial ALP 7450M XEC vs 100 full accept
AgoraPartial ALP: AgoraPartial ALP 1000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000 for 1sat/token, dust accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1sat/token, dust accept
AgoraPartial ALP: AgoraPartial ALP 1000 for 1000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1000sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000 for 1000000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1000000sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 0.001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 1sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000 for 1000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 1000sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000 for 0.001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000 for 1sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000000000 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000000 for 0.000001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000000 for 0.001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 140737488355327 for 0.000000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 140737488355327 for 0.000000001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 140737488355327 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 140737488355327 for 0.000001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 281474976710655 for 0.000000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 281474976710655 for 0.000000001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 281474976710655 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 281474976710655 for 0.000001sat/token, full accept
Agora Partial 7450M XEC vs 2p64-1 full accept: Agora Partial 7450M XEC vs 2p64-1 full accept Agora Partial 7450M XEC vs 2p64-1 full accept
Agora Partial 7450M XEC vs 2p63-1 full accept: Agora Partial 7450M XEC vs 2p63-1 full accept Agora Partial 7450M XEC vs 2p63-1 full accept
Agora Partial 7450M XEC vs 100 full accept: Agora Partial 7450M XEC vs 100 full accept Agora Partial 7450M XEC vs 100 full accept
AgoraPartial SLP: AgoraPartial SLP 1000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000 for 1sat/token, dust accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1sat/token, dust accept
AgoraPartial SLP: AgoraPartial SLP 1000 for 1000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1000sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000 for 1000000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1000000sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 0.001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 1sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000 for 1000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 1000sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000 for 0.001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000 for 1sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000 for 0.000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000 for 0.000001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000 for 0.001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000000 for 0.000000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000 for 0.000000001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000000 for 0.000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000 for 0.000001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000000000 for 0.000000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000000 for 0.000000001sat/token, full accept

Failed tests logs:

====== AgoraPartial ALP 7450M XEC vs 2p48-1 full accept: AgoraPartial ALP 7450M XEC vs 2p48-1 full accept AgoraPartial ALP 7450M XEC vs 2p48-1 full accept ======
Error: Accepting 281474959933440 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.bigsats.test.ts:149:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial 7450M XEC vs 2p47-1 full accept: AgoraPartial ALP 7450M XEC vs 2p47-1 full accept.AgoraPartial 7450M XEC vs 2p47-1 full accept AgoraPartial ALP 7450M XEC vs 2p47-1 full accept ======
Error: Accepting 140737475248128 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.bigsats.test.ts:362:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP 7450M XEC vs 100 full accept: AgoraPartial ALP 7450M XEC vs 100 full accept AgoraPartial ALP 7450M XEC vs 100 full accept ======
Error: Accepting 100 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.bigsats.test.ts:575:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000 for 1sat/token, dust accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1sat/token, dust accept ======
Error: Accepting 546 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000 for 1000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1000sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000 for 1000000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1000000sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 0.001sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 1sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000 for 1000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 1000sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000 for 0.001sat/token, full accept ======
Error: Accepting 1000000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000 for 1sat/token, full accept ======
Error: Accepting 1000000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000000000 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000000 for 0.000001sat/token, full accept ======
Error: Accepting 999999995904 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 1000000000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000000 for 0.001sat/token, full accept ======
Error: Accepting 999999995904 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 140737488355327 for 0.000000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 140737488355327 for 0.000000001sat/token, full accept ======
Error: Accepting 140736488407040 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 140737488355327 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 140737488355327 for 0.000001sat/token, full accept ======
Error: Accepting 140737487372288 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 281474976710655 for 0.000000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 281474976710655 for 0.000000001sat/token, full accept ======
Error: Accepting 281474959933440 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial ALP: AgoraPartial ALP 281474976710655 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 281474976710655 for 0.000001sat/token, full accept ======
Error: Accepting 281474959933440 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeAlpOffer (tests/partial-helper-alp.ts:140:35)
    at Context.<anonymous> (tests/partial.alp.test.ts:463:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== Agora Partial 7450M XEC vs 2p64-1 full accept: Agora Partial 7450M XEC vs 2p64-1 full accept Agora Partial 7450M XEC vs 2p64-1 full accept ======
Error: Accepting 18446742974197923840 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.bigsats.test.ts:152:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== Agora Partial 7450M XEC vs 2p63-1 full accept: Agora Partial 7450M XEC vs 2p63-1 full accept Agora Partial 7450M XEC vs 2p63-1 full accept ======
Error: Accepting 9223371220810989568 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.bigsats.test.ts:363:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== Agora Partial 7450M XEC vs 100 full accept: Agora Partial 7450M XEC vs 100 full accept Agora Partial 7450M XEC vs 100 full accept ======
Error: Accepting 100 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.bigsats.test.ts:570:34)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000 for 1sat/token, dust accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1sat/token, dust accept ======
Error: Accepting 546 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000 for 1000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1000sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000 for 1000000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1000000sat/token, full accept ======
Error: Accepting 1000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 0.001sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 1sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000 for 1000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 1000sat/token, full accept ======
Error: Accepting 1000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000 for 0.001sat/token, full accept ======
Error: Accepting 1000000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000 for 1sat/token, full accept ======
Error: Accepting 1000000000 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000 for 0.000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000 for 0.000001sat/token, full accept ======
Error: Accepting 999999995904 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000 for 0.001sat/token, full accept ======
Error: Accepting 999999995904 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000000 for 0.000000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000 for 0.000000001sat/token, full accept ======
Error: Accepting 999999986991104 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000000 for 0.000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000 for 0.000001sat/token, full accept ======
Error: Accepting 999999986991104 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
====== AgoraPartial SLP: AgoraPartial SLP 1000000000000000000 for 0.000000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000000 for 0.000000001sat/token, full accept ======
Error: Accepting 999999997191651328 token satoshis would leave an amount lower than the min acceptable by the terms of this contract, and hence unacceptable. Accept fewer tokens or the full offer.
    at AgoraOffer._acceptTxBuilder (src/agora.ts:257:27)
    at AgoraOffer.acceptTx (src/agora.ts:147:30)
    at takeSlpOffer (tests/partial-helper-slp.ts:144:35)
    at Context.<anonymous> (tests/partial.slp.test.ts:518:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Each failure log is accessible here:
AgoraPartial ALP 7450M XEC vs 2p48-1 full accept: AgoraPartial ALP 7450M XEC vs 2p48-1 full accept AgoraPartial ALP 7450M XEC vs 2p48-1 full accept
AgoraPartial 7450M XEC vs 2p47-1 full accept: AgoraPartial ALP 7450M XEC vs 2p47-1 full accept.AgoraPartial 7450M XEC vs 2p47-1 full accept AgoraPartial ALP 7450M XEC vs 2p47-1 full accept
AgoraPartial ALP 7450M XEC vs 100 full accept: AgoraPartial ALP 7450M XEC vs 100 full accept AgoraPartial ALP 7450M XEC vs 100 full accept
AgoraPartial ALP: AgoraPartial ALP 1000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000 for 1sat/token, dust accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1sat/token, dust accept
AgoraPartial ALP: AgoraPartial ALP 1000 for 1000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1000sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000 for 1000000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000 for 1000000sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 0.001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 1sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000 for 1000sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000 for 1000sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000 for 0.001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000000 for 1sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000 for 1sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000000000 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000000 for 0.000001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 1000000000000 for 0.001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 1000000000000 for 0.001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 140737488355327 for 0.000000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 140737488355327 for 0.000000001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 140737488355327 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 140737488355327 for 0.000001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 281474976710655 for 0.000000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 281474976710655 for 0.000000001sat/token, full accept
AgoraPartial ALP: AgoraPartial ALP 281474976710655 for 0.000001sat/token, full accept.AgoraPartial ALP AgoraPartial ALP 281474976710655 for 0.000001sat/token, full accept
Agora Partial 7450M XEC vs 2p64-1 full accept: Agora Partial 7450M XEC vs 2p64-1 full accept Agora Partial 7450M XEC vs 2p64-1 full accept
Agora Partial 7450M XEC vs 2p63-1 full accept: Agora Partial 7450M XEC vs 2p63-1 full accept Agora Partial 7450M XEC vs 2p63-1 full accept
Agora Partial 7450M XEC vs 100 full accept: Agora Partial 7450M XEC vs 100 full accept Agora Partial 7450M XEC vs 100 full accept
AgoraPartial SLP: AgoraPartial SLP 1000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000 for 1sat/token, dust accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1sat/token, dust accept
AgoraPartial SLP: AgoraPartial SLP 1000 for 1000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1000sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000 for 1000000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000 for 1000000sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 0.001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 1sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000 for 1000sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000 for 1000sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000 for 0.001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000 for 1sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000 for 1sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000 for 0.000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000 for 0.000001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000 for 0.001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000 for 0.001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000000 for 0.000000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000 for 0.000000001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000000 for 0.000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000 for 0.000001sat/token, full accept
AgoraPartial SLP: AgoraPartial SLP 1000000000000000000 for 0.000000001sat/token, full accept.AgoraPartial SLP AgoraPartial SLP 1000000000000000000 for 0.000000001sat/token, full accept