Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork31
Standard Library for Ethereum
License
wevm/ox
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Ox (⦻) is the foundation of robust Ethereum software written in TypeScript. It is an Ethereum Standard Library that provides a set of lightweight, performant, and type-safe TypeScript modules for Ethereum.
It offers core utilities & types for primitives such as: ABIs, Addresses, Blocks, Bytes, ECDSA, Hex, JSON-RPC, RLP, Signing & Signatures, Transaction Envelopes, and more.
As an unopinionated Standard Library, it is designed to be used by higher-level consumers (such asViem,Tevm, or their alternatives) to provide their own opinionated interfaces, and/or when reaching for low-level primitives may be needed without buying into a Client Abstraction stack (Viem, Ethers, Web3.js, etc).
Head to the documentation to read and learn more about Ox.
The example below demonstrates how to construct, sign, and broadcast a transaction envelope using Ox:
import{Provider,Secp256k1,TransactionEnvelopeEip1559,Value}from'ox'// 1. Construct a transaction envelope.constenvelope=TransactionEnvelopeEip1559.from({chainId:1,gas:21000n,nonce:0n,maxFeePerGas:Value.fromGwei('10'),maxPriorityFeePerGas:Value.fromGwei('1'),to:'0x70997970c51812dc3a010c7d01b50e0d17dc79c8',value:Value.fromEther('1'),})// 2. Get the signing payload for the envelope.constpayload=TransactionEnvelopeEip1559.getSignPayload(envelope)// 3. Sign the payload with your private key using secp256k1.constsignature=Secp256k1.sign({ payload,privateKey:'0x...'})// 4. Serialize the envelope with the signature.constserialized=TransactionEnvelopeEip1559.serialize(envelope,{ signature})// 5. Broadcast the envelope to the network.constprovider=Provider.from(window.ethereum)consthash=awaitprovider.request({method:'eth_sendRawTransaction',params:[serialized],})
Note
Ox's APIs are purposely stateless, unopinionated, and verbose. The example above can definitely be achieved in a few lines of code in a more concise manner, however, the goal is for higher-level abstractions (Viem, etc) built on top of Ox to handle this for you.
Check out the following places for more Ox-related content:
- Follow@wevm_dev,@jxom, and@awkweb on Twitter for project updates
- Join thediscussions on GitHub
About
Standard Library for Ethereum
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Contributors15
Uh oh!
There was an error while loading.Please reload this page.