Modular APIs for Web3, Smart Wallets, and Dynamic Smart Contracts
git clone [email protected]:owlprotocol/workspace-public.git && cd workspace-public
pnpm install
pnpm run build
pnpm run test
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
Owl Protocol uses a monorepo architecture. We uses pnpm along with a pnpm-workspace.yaml file to configure managing the following packages.
General Web3 Typescript packages built by Owl Protocol.
Package | Version | Description |
---|---|---|
chains | Chain configurations | |
zod-sol | zod validators for Solidity types (eg. address, uint256 ) and Ethereum structs (eg. Block, Transaction ) |
Smart Contract Libraries built and used by Owl Protocol.
Package | Version | Description |
---|---|---|
contracts-diamond | Modular upgradeable smart contract library. Uses EIP-2535 Diamond Standard to implement popular standards such as EIP-20/EIP-721/EIP-1155 | |
contracts-create2factory | Deterministic deployment factory similar to Arachnid but designed to work with initializable contracts and batch deployments. | |
contracts-account-abstraction | EIP-4337 Contracts from eth-infinitism/account-abstraction and pimlicolabs/alto but with re-exported artifacts for easier use in Typescript. |
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 | Owl Protocol Firebase data models for web3 data such as indexing or chain configurations | |
core-firebase | Owl Protocol Firebase data models for non-web3 data such as web2 integrations | |
crud-firebase | Generic Firebase SDK helpers for usage with firebase web & admin SDKs. |
Other packages used by Owl Protocol.
Package | Version | Description |
---|---|---|
Other | ||
viem-utils | viem helper utils | |
utils | ||
dfns-sdk-mock | Mock DFNS SDK for testing |
The process for releaseing new packages is as follows.
⚠️ 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
⚠️ This should only be done ondevelop
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
intomain
- Merge the
develop > main
PR - A new PR will be created called
chore: update versions
which modifiespackage.json
versions, andCHANGELOG.md
files - Merge the
chore: update versions > main
PR - CI will now autopublish all necessary packages to npmjs
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
MIT License