Repository navigation
Conversation
The test token moved storage without events, so upstream's exact verifier, which reads the simulated SEP-41 transfer event, refused every payment in it with no_transfer_events. transfer, approve and mint now publish their SEP-41 events, and a test checks the literal topics and data the verifier reads.
One exact payment each in testnet USDC, a self-issued SAC and the non-SAC test token goes through /verify and /settle of a facilitator built by main(), with only the asset changing, then a concurrent batch across four channels. The script restores archived state from the facilitator account first and commits its results with every transaction hash.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Task 0021, M1 Story 1.7: evidence that a seller can charge in any SEP-41 token, not only USDC. One
exactpayment in testnet USDC, a self-issued SAC and a non-SAC SEP-41 token each verifies and settles through the facilitator on testnet, with the facilitator paying every fee, and a concurrent batch lands in one ledger through several channels.apps/facilitator/scripts/token-matrix.ts): a facilitator frommain()with 4 new channels and a new seller. Each token goes through the samepay(asset)(/verify,/settle, the transaction read back from the chain, the seller's balance), with onlyassetchanging; then 6 test-token payments go to/settleat once. The buyer is 0004's e2e client, which holds testnet USDC (only Circle's faucet hands it out).apps/facilitator/scripts/results/token-matrix-testnet.json): every hash, ledger, channel and fee, the buyer's XLM and sequence number before and after, and the checks. Addresses only.contracts/test-token):transfer,approveandmintnow publish their SEP-41 events. Deployed withdeploy/scripts/deploy-contract.sh test-tokenatCBFIYRHJG4C4E4AU3K5XCCMSZKZR3IMVFPCKNAJ3OBRQCHDLPCT3GV53(WASMd3108f81…3d31); 0004's upto e2e deploys through the same script, so its next run picks up the new ID./verifydoes when a payment must restore archived state.Please note
exact. Upstream's verifier reads the simulated SEP-41transferevent and answeredinvalid_exact_stellar_payload_no_transfer_events. 0004's upto path never reads events, so nobody saw it. A Rust test now checks the literal topics and data the verifier reads.MAX_FEE_STROOPS. Since Protocol 23 a transaction restores the archived entries it touches and pays their rent. 0004'sUPTOE2ESAC instance and the buyer's old test-token balance were archived, which made the buyer's transaction cost 551,787 and 342,189 stroops of resource fee against the 250,000 cap, so/verifyansweredfee_exceeds_maximum. The script restores such entries from the facilitator account before paying, the same way for every token; what the facilitator itself should do is 0066.Testing
pnpm format:check(flags only untracked local files),pnpm lint,pnpm typecheck,pnpm test,pnpm buildpass;pnpm contracts:lint,pnpm contracts:test(test-token 1, upto-proxy 42) andpnpm contracts:test:wasmpass. The event test fails whentransferis switched to map data.cd apps/facilitator && CLIENT_SECRET=… npx tsx scripts/token-matrix.ts, the committed run (2026-10-23 14:16 UTC), every check true: