Skip to content

Commit

Permalink
feat(bindings-ts): support multi-auth workflows
Browse files Browse the repository at this point in the history
- switch from `ts-tests/package.json` to an `initialize.sh` script that
  uses a `.env` if available or defaults to environment variables. As
  before, this will build, deploy, and generate bindings for the new
  contracts, plus creating an `alice` identity and minting separate
  amounts of two separate tokens to the `root` user and `alice`
- add eslint to catch missing `await`s
- add transaction-rebuilding to increment transaction sequence numbers,
  so that all tests can pass when run in parallel
- add `atomic_swap` and `token` contracts from
  https://github.com/stellar/soroban-examples to `test-wasms`
- add tests for atomic swap functionality inspired by
  https://github.com/stellar/soroban-react-atomic-swap
- let this logic guide needed updates to `bindings typescript`-generated
  libraries:
  - don't return flat values
  - instead, return a `new AssembledTransaction`, a class that has a
    `result` getter that can be used to get the result of the simulation
    right away, or can be used to `await tx.signAndSend()`, which then
    returns a `SentTransaction`
  - `SentTransaction` contains all possibly-relevant fields
    from the logic it performs, such as `sendTransactionAll`
  - `AssembledTransaction` has a `needsNonInvokerSigningBy()` getter
    and a `signAuthEntriesFor(publicKey, signingFunction)` to facilitate
    multi-auth workflows.
  - Since assembling transactions may now take place across multiple
    users' browsers, you can also call `json = tx.toJSON()` on an
    `AssembledTransaction` and then `contract.fromJSON[method](json)` on
    the next machine to continue signing, as shown in `test-swap.ts`

Co-authored-by: Aristides Staffieri <[email protected]>
  • Loading branch information
chadoh and aristidesstaffieri committed Nov 18, 2023
1 parent 4862228 commit 2c6ae72
Show file tree
Hide file tree
Showing 39 changed files with 6,220 additions and 3,545 deletions.
23 changes: 23 additions & 0 deletions Cargo.lock

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

5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ version = "20.0.0-rc2"
git = "https://github.com/stellar/rs-soroban-sdk"
rev = "0992413f9b05e5bfb1f872bce99e89d9129b2e61"

[workspace.dependencies.soroban-token-sdk]
version = "20.0.0-rc2"
git = "https://github.com/stellar/rs-soroban-sdk"
rev = "0992413f9b05e5bfb1f872bce99e89d9129b2e61"

[workspace.dependencies.soroban-ledger-snapshot]
version = "20.0.0-rc2"
git = "https://github.com/stellar/rs-soroban-sdk"
Expand Down

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

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

Loading

0 comments on commit 2c6ae72

Please sign in to comment.