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

1.0.0-2 #36

Merged
merged 7 commits into from
Mar 12, 2024
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 83 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,83 @@
# usability
# usability

Convenient data about token transfers and involved parties for Ethereum L1 and L2 transactions

### Input
Raw transaction data from an EVM RPC

### Output
Transaction objects with
* a `parties` key containing an array of involved parties (addresses included in input data, logs, etc.) in the transaction.
* an `assetTransfers` key containing an array of objects for all individual ETH, ERC20, ERC721, ERC1155 transfers that took place in that transaction.
* a `netAssetTransfers` key containing an object with rolled up net balance change information for each address involved in the transaction, containing their net gain or loss of ETH, ERC20, ERC721, ERC1155 in that that transaction.

In other words, `assetTransfers` shows everything that happened under the hood in order, and `netAssetTransfers` is a summary of the end result.

### Example

```typescript
const inputTransaction = {
to: '0xabc...123',
// ...
};

const outputTransaction = {
to: '0xabc...123',
// ...
parties: [
"0x662127bf82b794a26b7ddb6b495f6a5a20b81738",
"0x2d660d49473dbbcaf63929d10d0e3501b4533182",
"0x8ca5e648c5dfefcdda06d627f4b490b719ccfd98",
// ...
],
assetTransfers: [
{
"asset": "0x2d660d49473dbbcaf63929d10d0e3501b4533182",
pcowgill marked this conversation as resolved.
Show resolved Hide resolved
"from": "0x0000000000000000000000000000000000000000",
"to": "0x662127bf82b794a26b7ddb6b495f6a5a20b81738",
"tokenId": "610",
"type": "erc721"
},
// ..
],
netAssetTransfers: {
"0x662127bf82b794a26b7ddb6b495f6a5a20b81738": {
"received": [
{
"asset": "0x2d660d49473dbbcaf63929d10d0e3501b4533182",
pcowgill marked this conversation as resolved.
Show resolved Hide resolved
"id": "0x2d660d49473dbbcaf63929d10d0e3501b4533182-610",
pcowgill marked this conversation as resolved.
Show resolved Hide resolved
"tokenId": "610",
"type": "erc721"
}
],
"sent": [
{
"asset": "eth",
"id": "eth",
"type": "eth",
"value": "100777000000000000"
}
]
},
// ..
},
};
```

### Tests

```
npm run test
```

### Contributing

Please open a PR on this repo and request review from [pcowgill](https://github.com/pcowgill) and [jordanmessina](https://github.com/jordanmessina)

### Other resources

For additional decoration of transaction objects with more context, this library can be used in combination with [@once-upon/evm-context](https://github.com/Once-Upon/context).

## License

See the [LICENSE](LICENSE.md) file for license rights and limitations (MIT).
4 changes: 2 additions & 2 deletions package-lock.json

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

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@once-upon/evm-usability",
"version": "1.0.0-1",
"version": "1.0.0-2",
"description": "",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down