Skip to content

owlprotocol/workspace-public

Repository files navigation

Owl Protocol

Modular APIs for Web3, Smart Wallets, and Dynamic Smart Contracts

TL;DR

git clone [email protected]:owlprotocol/workspace-public.git && cd workspace-public
pnpm install
pnpm run build
pnpm run test

Docs

Visit our docs at docs.owl.build for in-depth tutorials on using Smart Wallets & Modular Smart Contracts. Contribute to our docs by adding content to docs

Packages

Owl Protocol uses a monorepo architecture. We uses pnpm along with a pnpm-workspace.yaml file to configure managing the following packages.

Typescript

General Web3 Typescript packages built by Owl Protocol.

Package Version Description
chains chains-npm Chain configurations
zod-sol zod-sol-npm zod validators for Solidity types (eg. address, uint256) and Ethereum structs (eg. Block, Transaction)

Smart Contracts

Smart Contract Libraries built and used by Owl Protocol.

Package Version Description
contracts-diamond contracts-diamond-npm Modular upgradeable smart contract library. Uses EIP-2535 Diamond Standard to implement popular standards such as EIP-20/EIP-721/EIP-1155
contracts-create2factory contracts-create2factory-npm Deterministic deployment factory similar to Arachnid but designed to work with initializable contracts and batch deployments.
contracts-account-abstraction contracts-account-abstraction-npm EIP-4337 Contracts from eth-infinitism/account-abstraction and pimlicolabs/alto but with re-exported artifacts for easier use in Typescript.

Firebase

Firebase is used extensively by Owl Protocol as a simple NoSQL storage layer for web3 indexing & non-web3 platform data.

Package Version Description
eth-firebase eth-firebase-npm Owl Protocol Firebase data models for web3 data such as indexing or chain configurations
core-firebase core-firebase-npm Owl Protocol Firebase data models for non-web3 data such as web2 integrations
crud-firebase crud-firebase-npm Generic Firebase SDK helpers for usage with firebase web & admin SDKs.

Other

Other packages used by Owl Protocol.

Package Version Description
Other
viem-utils viem-utils-npm viem helper utils
utils utils-npm
dfns-sdk-mock dfns-sdk-mock-npm Mock DFNS SDK for testing

Release

The process for releaseing new packages is as follows.

Create Changeset

⚠️ Do not manually bump package versions

We first create a changeset markdown file that specifies which packages will be version bumped.

  • Create a changeset with pnpm run changeset:add this will prompt you on which packages should be version bumped (major, minor, patch).
  • Changeset will create a markdown file in the .changeset folder.
  • Commit this markdown file
  • If not on develop create a PR to merge

Consume Changeset

⚠️ This should only be done on develop branch

Once the changeset markdown file is merged into develop we will merge into main and have the changeset/action create a PR for us.

  • Create a PR to merge develop into main
  • Merge the develop > main PR
  • A new PR will be created called chore: update versions which modifies package.json versions, and CHANGELOG.md files
  • Merge the chore: update versions > main PR
  • CI will now autopublish all necessary packages to npmjs

Merge Develop

TODO: This should not be necessary if develop was actually forked from main?

Finally, update develop branch with latest code from main

  • Update local version git checkout main && git pull main
  • Merge diff git checkout develop && git merge main --strategy-option=theirs
  • Push changes git commit . && git push

LICENSE

MIT License