Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

package up utilities for dapps #9109

Closed
turadg opened this issue Mar 19, 2024 · 2 comments
Closed

package up utilities for dapps #9109

turadg opened this issue Mar 19, 2024 · 2 comments
Assignees
Labels
enhancement New feature or request needs-design

Comments

@turadg
Copy link
Member

turadg commented Mar 19, 2024

What is the Problem Being Solved?

We have a bunch of support code in the agoric package that helps with making transactions and queries on chain. However they're not exported because they were never carefully factored or designed for longevity.

We've repeated some of that code in ui-kit, a3p and now https://github.com/Agoric/agoric-sdk/pull/9078/files/58141ac551088158552d5ff2d9805f66ba3aaa66#diff-88e9ae2b981c19291ac56e9300af03daeed1e1edee3793aecae9a377fdc5745b

Description of the Design

Package up an abstraction for transactions and querying of the chain, for use in JS code. It should also provide abstractions for smart wallet use and potentially common use cases.

It could be in the ui-kit repo but since the domains are in agoric-sdk it's probably best to keep it here. They should be pretty low level and not have to change much once published. This also allows them to be published in sync with agd and Cosmos SDK updates.

Security Considerations

Scaling Considerations

Test Plan

Upgrade Considerations

@turadg turadg added the enhancement New feature or request label Mar 19, 2024
@turadg
Copy link
Member Author

turadg commented Mar 19, 2024

#9044 has another example of open coding unmarshalling

@turadg turadg self-assigned this Nov 4, 2024
mergify bot added a commit that referenced this issue Nov 6, 2024
closes: #10168

## Description
Provide a new package, `client-utils`, as a home for utilities that are useful to clients of an Agoric chain. This doesn't currently use `@agoric/rpc` but over time some of it may be pushed down into that package. 

Related work…

- #9200 
This will be where those client factories are kept.

- #10369

This will solve most of what we need for functional testing. Some aspects are specific to the A3P synthetic chain (like account addresses and references to history) but most of what the tests are doing with the chain are operations that any client might do.

- #9109
- #8963

This will contribute to those goals.


### Security Considerations

Reduces authority needed to query chain (from child_process to fetch)

### Scaling Considerations
This is a big package, but it's not to be run on chain. Most client apps use some form of code shaking so they'll only take what they need.

### Documentation Considerations
Once this settles down it ought to be a part of docs.agoric.com

### Testing Considerations
The only test yet is a live one to make sure a query to Emerynet for Swingset params succeeds as expected, even under SES.

No package CI yet. Mostly it's refactoring of existing code so those uses serve as coverage. I do think this would benefit from some additional testing.

### Upgrade Considerations
Will never be on chain
mergify bot added a commit that referenced this issue Nov 11, 2024
refs: #9109

## Description

The new `@agoric/client-utils` package provides a place to hang a type mapping of what's published in vstorage to the JS type one should have after unmarshalling.

This adds:
- a `PublishedType` utility type mapper to the package
- a `readPublished` helper to RpcUtils (and passed through WalletUtils)
- a `readPublished` help in the SwingsetToolkit for boot tests
- uses the above through agoric CLI and bootstrap tests

I don't think I got everywhere this could be used. Looking for feedback on,

- Should we have a `readPublished` abstraction or continue to use `published.` everywhere? I opted for the latter thinking it would be a proxy for whether the stores values were CapData
- Should WalletUtils pass through readPublished or provide a reference to RpcUtils ? 

### Security Considerations


### Scaling Considerations


### Documentation Considerations


### Testing Considerations


### Upgrade Considerations
@turadg
Copy link
Member Author

turadg commented Nov 11, 2024

Packaged as @agoric/client-utils

@turadg turadg closed this as completed Nov 11, 2024
mergify bot added a commit that referenced this issue Dec 4, 2024
refs: #9109

## Description

#9109 packaged up `@agoric/client-utils` but left duplicated in a3p-integration the files copied from agoric-cli.

This makes agoric-cli export its lib modules and uses the `yarn link` established in 9109 to import them.

### Security Considerations
agoric-cli package now exports the libraries it uses.

### Scaling Considerations
none

### Documentation Considerations
The libs of agoric-cli are not yet stabilized, but since the `agoric` CLI is at 0.21 it doesn't claim to maintain backwards compatibility.

### Testing Considerations
CI

### Upgrade Considerations
n/a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request needs-design
Projects
None yet
Development

No branches or pull requests

1 participant