From 1c12e272421262bd86faa8811fe147a3101ae08a Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Fri, 1 Dec 2023 12:31:17 +0900 Subject: [PATCH 001/137] docs: order how to documents --- docs/docs/build/how-to/bitcoin-testing.md | 3 +++ docs/docs/build/how-to/relay.md | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/docs/build/how-to/bitcoin-testing.md b/docs/docs/build/how-to/bitcoin-testing.md index 4f9d4df3..869aee33 100644 --- a/docs/docs/build/how-to/bitcoin-testing.md +++ b/docs/docs/build/how-to/bitcoin-testing.md @@ -1,3 +1,6 @@ +--- +sidebar_position: 1 +--- # Bitcoin Testing The recommended approach to start a local Bitcoin node for testing is to use "regtest" mode. If you have downloaded Bitcoin Core from [bitcoin.org](https://bitcoin.org/en/download) use `bitcoind -regtest` to start a regtest node. To create and fund the "Alice" wallet, use the following `bitcoin-cli` commands: diff --git a/docs/docs/build/how-to/relay.md b/docs/docs/build/how-to/relay.md index dc75387d..f82a518c 100644 --- a/docs/docs/build/how-to/relay.md +++ b/docs/docs/build/how-to/relay.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 2 --- # Bitcoin Light Client From 01565d5e556dbd03ee2da998b8278a1abbdfed8c Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Fri, 1 Dec 2023 13:29:13 +0900 Subject: [PATCH 002/137] docs: WIP of technical vision --- docs/docs/drafts/stack.md | 63 ---------------- docs/docs/learn/introduction/_category_.yml | 2 +- docs/docs/learn/introduction/ideal-l2.md | 2 +- docs/docs/learn/introduction/overview.md | 17 ++--- docs/docs/learn/introduction/use-cases.md | 2 +- docs/docs/learn/networks/_category_.yml | 4 ++ docs/docs/learn/networks/op-stack.md | 50 +++++++++++++ .../learn/{rollup => stack}/_category_.yml | 2 +- docs/docs/learn/stack/bob-stack.md | 26 +++++++ docs/docs/learn/stack/vision.md | 72 +++++++++++++++++++ 10 files changed, 165 insertions(+), 75 deletions(-) delete mode 100644 docs/docs/drafts/stack.md create mode 100644 docs/docs/learn/networks/_category_.yml create mode 100644 docs/docs/learn/networks/op-stack.md rename docs/docs/learn/{rollup => stack}/_category_.yml (70%) create mode 100644 docs/docs/learn/stack/bob-stack.md create mode 100644 docs/docs/learn/stack/vision.md diff --git a/docs/docs/drafts/stack.md b/docs/docs/drafts/stack.md deleted file mode 100644 index 41311b0a..00000000 --- a/docs/docs/drafts/stack.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -sidebar_position: 3 -hide: true ---- -# The BOB Stack - -As BOB is compatible with the OP Stack, it uses the [six OP Stack layers](https://stack.optimism.io/docs/understand/landscape/) and adds one layer for Bitcoin interoperability. - -BOB has the following stack: - -1. Governance: on-chain governance is used to upgrade and change the BOB stack. -2. Settlement layer: the settlement layer is the L1 from which BOB receives its finality and consensus security. BOB uses Ethereum for settlement with the long-term vision to rollup against Bitcoin once suitable OP codes are available. -3. Execution layer: The execution layer is implemented in substrate and exposes three domains for state transition functions: - 1. Core runtime: implemented in Rust and substrate as a governance-controlled upgradeable runtime that houses a BTC light client, DeFi functions, governance, and more. - 2. Rust smart contracts: implemented in Rust and the ink! eDSL as a way for Bitcoin smart contract engineers to leverage the power of `rust-bitcoin` and other libraries to implement immutable smart contracts interacting with the core runtime and the EVM. - 3. EVM smart contracts: implemented through the frontier pallet, a runtime to execute EVM smart contracts that can interact with the core runtime and the Rust smart contracts to support EVM wallets and tooling (Safe, Fireblocks, Etherscan, …) -4. Derivation layer: -5. Sequencing layer: -6. Data availability layer: The data availability layer stores inputs to the execution layer. BOB is yet to decide which DA layer to use among several options iuncluding Bitcoin, Ethereum, or Celestia. -7. Bitcoin layer: The Bitcoin layer provides access to BTC and other assets from the Bitcoin chain as well as data reads from Bitcoin via alight client. BOB uses a novel bridge design where minters create a synthetic Bitcoin on BOB that can be swapped cross-chain with BTC without trusted intermediaries. - -## Data Availability - -A Data Availability (DA) layer stores the raw inputs to the state transition function for the execution layer. The OP Stack supports [multiple DAs but sets Ethereum as the de-facto DA](https://stack.optimism.io/docs/understand/landscape/#data-availability). The OP Stack Superchain is considering a dedicated [Plasma DA chain](https://stack.optimism.io/docs/understand/explainer/#alt-data-availability-layer-plasma-protocol) to address rising cost and limited scalability of Ethereum as a DA layer. - -BOB is considering the following DA layers: - -- Bitcoin: The Celestia team has a specification for [using Bitcoin as a DA layer](https://github.com/rollkit/bitcoin-da/blob/main/spec.md) that suits BOB needs and would ensure compatibility with Celestia deployments. -- Ethereum: OP Stack uses Ethereum as a DA [with a dedicated specification](https://github.com/ethereum-optimism/optimism/blob/129032f15b76b0d2a940443a39433de931a97a44/specs/derivation.md#batch-submission-wire-format). -- Others: There are other DA options like Celestia. - -## Sequencing - -The OP Stack uses a single, centralized sequencer. - -OPEN QUESTIONS -- Should we stick with a PoA-style sequencer as well? We could use AURA for that. -- Should we keep GRANDPA and BABE consensus style block production and finalization? This will likely require some custom implmenetation on the Settlement layer. - -## Execution - -OP Stack uses a geth fork for its EVM state and state transition functions. Instead of using op-geth directly, BOB's execution layer is implemented such that a state transition is applied as follows: - -1. Initial state: The initial state is retrieved from an EVM and OP Stack compatible Patricia Merkle trie stored in the DA layer. The Frontier pallet in substrate already implements decoding of EVM-compatible state. Having the initial state in an EVM/OP Stack-compatible trie (i.e., encoding and decoding of the trie is possible via Ethereum defined RPCs) allows wallets, block explorers, and other EVM-compatible tooling to read from this state. -2. State transition: State transitions are applied through a Substrate-based runtime implementation. The key difference to vanilla OP Stack is that instead of relying on the EVM core runtime and EVM smart contracts, the Substrate-based runtime is implemented in WASM and houses three distinct state transition domains. A state transition is achieved by the successful execution of a state transition function on either of the three domains. - a. Core runtime: The core runtime exposes functions that are implemented in Rust/Substrate and can be upgraded via governance. The are the equivalent of pre-compiles in the Ethereumm world. BOB exposes several core functions that builders can make use of including a Bitcoin light client, DeFi (AMM and lending), a Bitcoin bridge, transaction fee converters, and many more. Deployment of new core runtime functions is subject to governance vote. - b. Rust smart contracts: The core runtime has a dedicated space for builders to deploy arbitrary smart contracts written in Rust using an eDSL called ink!. Through an SDK, developers can write smart contracts within macros that can utilize the types from `rust-bitcoin`. Deploying Rust smart contracts is permissionless and deployed contracts are immutable. - c. EVM smart contracts: The core runtime further has a dedicated space for builders to deploy EVM-compatible contracts that can be written in Solidity or other languages that compile to the EVM. Deploying EVM smart contracts is permissionless and deployed contracts are immutable. -3. Resulting state: Upon successful completion of the state transition function, the state stored in the Patricia Merkle trie is updated as indicated in the deterministic state transition function. The state is then updated and stored in the DA layer. - -## Settlement - -OP Stack settles on Ethereum and uses fraud proofs. While BOB is made for Bitcoin, there are distinct reasons where BOB will initially not roll up against Bitcoin: - -1. Bitcoin's consensus only validates BTC as an asset. By rolling up against Ethereum, users can exit Ethereum-native assets (those that are validted by Ethereum consensus). This requires a bridge to Bitcoin, but having a fully collaterlaized Bitcoin bridge offers similar security levels as a *threoretically* possible roll-up to Bitcoin. -2. Bitcoin lacks the possibility have its consensus validate a roll-up at the moment. While the BOB project closely follows developments areound adding an `OP_ZKPVERIFY`, it remains quesitonable when such a code will be available. - -In the future, BOB can also expose capabilities to be ZK-compatible where the data structure is rather compatible with Starkware instead of the OP Stack to enable a ZKP roll-up on Bitcoin and ZKP bridges to Ethereum and other EVM networks. - -## Bridge - -...add details about bridge here. - diff --git a/docs/docs/learn/introduction/_category_.yml b/docs/docs/learn/introduction/_category_.yml index 32e32693..502635d2 100644 --- a/docs/docs/learn/introduction/_category_.yml +++ b/docs/docs/learn/introduction/_category_.yml @@ -1,4 +1,4 @@ position: 1 label: 'Introduction' collapsible: true -collapsed: true \ No newline at end of file +collapsed: false \ No newline at end of file diff --git a/docs/docs/learn/introduction/ideal-l2.md b/docs/docs/learn/introduction/ideal-l2.md index 6c172644..fc6b1f07 100644 --- a/docs/docs/learn/introduction/ideal-l2.md +++ b/docs/docs/learn/introduction/ideal-l2.md @@ -1,6 +1,6 @@ --- sidebar_position: 1 -sidebar_label: Ideal Bitcoin L2 +sidebar_label: Scaling Bitcoin --- # The Ideal Bitcoin L2 diff --git a/docs/docs/learn/introduction/overview.md b/docs/docs/learn/introduction/overview.md index 30327b9e..1b69645d 100644 --- a/docs/docs/learn/introduction/overview.md +++ b/docs/docs/learn/introduction/overview.md @@ -5,12 +5,13 @@ sidebar_label: Building on Bitcoin # Building on Bitcoin -BOB positions itself as the builder stack for experimentation, real-world impact, and freedom of choice. +BOB is the builder stack for experimentation, real-world impact, and freedom of choice. It launches as an OP Stack rollup connecting Bitcoin and Ethereum. The BOB tools can be deployed on any EVM chain or rollup to facilitate onboarding users from Bitcoin as well as accessing Bitcoin from the EVM. -1. **Rust smart contracts**: Provide developers with the ability to use existing SDKs and libraries based on Rust. Extending Bitcoin with new apps (e.g., https://github.com/ordinals/ord and https://github.com/rust-nostr/nostr), libraries (e.g., https://github.com/rust-bitcoin), and SDKs (e.g., https://github.com/lightningdevkit and https://bitcoindevkit.org/) are primarily based on Rust. Existing L2 or sidechains fail to deliver on that as they are purely EVM-based or use other execution layers like Stacks and Liquid. BOB will provide builders with the ability to write smart contracts in Rust and leverage the existing ecosystem. -2. **EVM compatibility**: The EVM is not the greatest VM created. However, it benefits from a large ecosystem that is focused on improving UX via smart contract wallets, innovations in rollups, DeFi, and a maturing set of tooling. Instead of builders having to reinvent the wheel, BOB comes with the EVM built in to provide projects with access to EVM space innovations and not require them to rewrite code in a new programming language. As an added benefit, this eliminates vendor lock-in since projects can deploy on other EVM chains or spin up a BOB-compatible rollup. -3. **Rollup**: Deploying an app-specific rollup will become as simple as deploying a smart contract. With the maturing of standardized rollup stacks, the enhancements made to the rollup itself will be the key differentiators. BOB provides a Bitcoin augmentation layer enabling access to Bitcoin types and data (e.g., BRC20s, ordinals, …) and a BTC bridge to enable access to BTC. This allows builders to focus on the unique value of their application and its impact on users without having to worry about the platform risk of BOB. -4. **Bitcoin access**: BOB will support a range of BTC bridges, both institutional and decentralized, enabling builders pick the model that best suits their needs. BOB further provides trustless access to Bitcoin block and transactional data via a BTC light client (BTC Relay), as well as a range of specialized tools including but not limited to cross-chain P2P swap logic and support for advanced Bitcoin scripts such as DLCs (Discrete Log Contracts). +1. **EVM compatibility**: The EVM is not the greatest VM ever created. However, it benefits from a large ecosystem that is focused on improving UX via smart contract wallets, innovations in rollups, DeFi tooling, audited libraries, and a maturing set of tooling. Instead of builders having to reinvent the wheel, BOB comes with the EVM built in to provide projects with access to EVM space innovations and not require them to rewrite code in a new programming language. As an added benefit, this eliminates vendor lock-in since projects can deploy on other EVM chains or spin up a BOB-compatible rollup. +2. **Rust off-chain programs with on-chain verification**: A key puzzle to the scaling problem is to compute complex programs off-chain and verify their correctness on-chain. BOB allows developers to use existing Bitcoin Rust SDKs and libraries. Extending Bitcoin with new apps (e.g., https://github.com/ordinals/ord and https://github.com/rust-nostr/nostr), libraries (e.g., https://github.com/rust-bitcoin), and SDKs (e.g., https://github.com/lightningdevkit and https://bitcoindevkit.org/) are primarily based on Rust. Existing L2 or sidechains fail to deliver on that as they are purely EVM-based or use other execution layers like Stacks and Liquid. BOB leverages Risc Zero's [zkVM](https://dev.risczero.com/api/zkvm/) to write complex programs like proofing ownership of multiple ordinals in Rust and verifying the proof on-chain in the EVM. +3. **Rollup**: Deploying an app-specific rollup will become as simple as deploying a smart contract. With the maturing of standardized rollup stacks, the enhancements made to rollup stacks will be the key differentiators. BOB provides a Bitcoin augmentation layer enabling access to Bitcoin types and data (e.g., BRC20s, ordinals, …). This allows builders to focus on the unique value of their application and its impact on users without worrying about the platform risk of BOB. +4. **Bitcoin access**: BOB will support a range of BTC bridges, both institutional and decentralized, enabling builders to pick the model that best suits their needs. BOB further provides trustless access to Bitcoin block and transactional data via a BTC light client (BTC Relay), as well as a range of specialized tools including but not limited to cross-chain P2P swap logic and support for advanced Bitcoin scripts such as DLCs (Discrete Log Contracts). +5. **Merged mining securtiy**: BOB facilitates merged mining capabilities to allow developers to anchor the security of their apps in the Proof of Work of Bitcoin. ![values](values.png) @@ -19,11 +20,11 @@ BOB positions itself as the builder stack for experimentation, real-world impact BOB is three things: - A builder platform that allows anyone to create novel applications: - - BOB supports Rust smart contracts. Many Bitcoin innovations (ord, LN, nostr, BDK) happen in Rust, a mature and well-designed language. This allows innovation for new use cases without having to rewrite logic. + - BOB supports Rust off-chain programs with on-chain verification. Many Bitcoin innovations (ord, LN, nostr, BDK) happen in Rust, a mature and well-designed language. This allows innovation for new use cases without having to rewrite logic. - BOB is EVM-compatible. Novel applications and mature tooling already exist on EVM chains. Innovators can build on top of these applications without having to rewrite existing logic in other programming languages. -- A novel BTC bridge that allows users and builders access to BTC and Bitcoin data (BRC20s, ordinals, …). - A rollup that allows users and builders access to ETH, ERC20s, and Ethereum data (NFTs, ENS, …). +- A merged mining security provider for apps to anchor their security on Bitcoin's Proof of Work. BOB will be the catalyst for the building on Bitcoin renaissance. The movement combines the Bitcoin core values with new avenues of thought. BOB is a Bitcoin-augmented rollup for free experimentation and innovation with real-world impact. -![BOB Components](bob-components.png) + diff --git a/docs/docs/learn/introduction/use-cases.md b/docs/docs/learn/introduction/use-cases.md index 1fa6e6a1..9cf237d7 100644 --- a/docs/docs/learn/introduction/use-cases.md +++ b/docs/docs/learn/introduction/use-cases.md @@ -1,6 +1,6 @@ --- sidebar_position: 3 -sidebar_label: Build with BOB +sidebar_label: Use Case Ideas --- # Use Case Ideas diff --git a/docs/docs/learn/networks/_category_.yml b/docs/docs/learn/networks/_category_.yml new file mode 100644 index 00000000..c3cf371f --- /dev/null +++ b/docs/docs/learn/networks/_category_.yml @@ -0,0 +1,4 @@ +position: 3 +label: 'Networks' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/docs/docs/learn/networks/op-stack.md b/docs/docs/learn/networks/op-stack.md new file mode 100644 index 00000000..dfe17184 --- /dev/null +++ b/docs/docs/learn/networks/op-stack.md @@ -0,0 +1,50 @@ +--- +sidebar_position: 1 +--- +# BOB on the OP Stack + +The first deployment of BOB will be using the [OP Stack](https://stack.optimism.io) and seeks to be compatible with the Superchain to allow users to easily transfer assets from Ethereum and other OP Stack rollups such as Optimism and Base in addition to the easy access to Bitcoin that comes with the BOB stack itself. + +Below we are giving a description of how BOB is adopting the OP Stack layers and where changes are made. + +## Goverance + +BOB will have its own governance to reach community decisions and enact changes. + +The BOB OP Stack rollup will be partly subject to OP governance with the Superchain upgrade. A OP Security Council will be capable of enacting security upgrades of the OP chain and L1 and L2 bridge contracts. + +## Data Availability + +A Data Availability (DA) layer stores the raw inputs to the state transition function for the execution layer. The OP Stack supports [multiple DAs but sets Ethereum as the de-facto DA](https://stack.optimism.io/docs/understand/landscape/#data-availability). The OP Stack Superchain is considering a dedicated [Plasma DA chain](https://stack.optimism.io/docs/understand/explainer/#alt-data-availability-layer-plasma-protocol) to address rising cost and limited scalability of Ethereum as a DA layer. + +BOB will follow the OP Stack standard to retain Superchain compatibility. + +However, we will lobby to offer alterantive DA layers that are in our opinion more closely aligned with Bitcoin: + +- Bitcoin: The Celestia team has a specification for [using Bitcoin as a DA layer](https://github.com/rollkit/bitcoin-da/blob/main/spec.md) that suits BOB needs and would ensure compatibility with Celestia deployments. Using Bitcoin as a DA layer would introduce complexity around wallets as users would need to provide BTC alongside their EVM transactions to pay for DA cost. +- Celestia: If Celestia were to add an option to pay for DA cost in (bridged) Bitcoin, Celestia might become a cheaper and decent alterantive to using Ethereum or Bitcoin as a DA layer. + +## Sequencing + +The OP Stack uses a single, centralized sequencer. BOB will use the same sequencer model for its launch but with the addition of merged mining, add functionality to verify the work of the sequencer by Bitcoin miners. + +We are welcoming efforts to decentralize sequencers pushed by the OP Stack. + +## Execution + +OP Stack uses a fork of go-ethereum called op-geth. BOB has no changes to op-geth. + +Instead of changing the execution client, necessary features including proving Bitcoin state and paying transaction fees in bridged Bitcoin are added within the EVM as smart contracts. This has the advantage that: + +1. The BOB OP Stack deployment stays up-to-date with improvements made by other teams improving the OP Stack without haivng to maintain a custom fork. In turn, this ensures that features available on other EVM chains and rollups are 1:1 applicable to BOB. +2. Technology built on top of the EVM within BOB like the merged mining security, paying in bridged Bitcoin for transaction fees, and the BTC light client can be deployed on any EVM chain. BOB is thus ready for a multi-chain and multi-rollup world. + +## Settlement + +The OP Stack settles on Ethereum. Currently, the OP Stack is lacking fraud proofs which is a major downside of using OP Stack as users have no possiblity to prove fraudulent behavior by the sequencer. + +However, OP Stack has a candidate for fraud proofs in testing and is actively working on increasing efficiency of fraud proofs using ZK. + +In stage 1 of Bitcoin security, apps deployed on BOB can verify the Bitcoin merged mining security of BOB to react to issues with the sequencer. + +In stage 2 of Bitcoin security, BOB will include merged mining security within the fraud proofs. Based on the verdict of miners, settlement on Ethereum can be prevented. \ No newline at end of file diff --git a/docs/docs/learn/rollup/_category_.yml b/docs/docs/learn/stack/_category_.yml similarity index 70% rename from docs/docs/learn/rollup/_category_.yml rename to docs/docs/learn/stack/_category_.yml index 6fac012b..717ab88a 100644 --- a/docs/docs/learn/rollup/_category_.yml +++ b/docs/docs/learn/stack/_category_.yml @@ -1,4 +1,4 @@ position: 2 -label: 'Rollup' +label: 'BOB Stack' collapsible: true collapsed: true \ No newline at end of file diff --git a/docs/docs/learn/stack/bob-stack.md b/docs/docs/learn/stack/bob-stack.md new file mode 100644 index 00000000..73c3e7e2 --- /dev/null +++ b/docs/docs/learn/stack/bob-stack.md @@ -0,0 +1,26 @@ +--- +sidebar_position: 2 +--- +# BOB Stack + +The BOB stack consists of the following parts: + +1. Governance: Decisions in BOB deployments are made through an on-chain governance process. +2. Settlement: BOB receives security through L1 consensus. BOB uses a multi-rollup model where applications deployed on BOB can use both Bitcoin security as well as other L1 security like Ethereum or operate custom models for institutional use cases. +3. Execution: At the core, BOB uses the EVM as an execution layer for state transitions. +4. Rollup: BOB can be deployed on any EVM-compatible rollup or sidechain stack. This means that sequencing, data availability, and derivation specifics can direclty be inherited from the underlying stack such as OP Stack, Arbitrum, Starkware, zkSync, or any other EVM-compatible stack. +5. Bitcoin-augumentation: Bitcoin light client, abstraction of transaction fees via Account Abstraction and Meta Transactions. + +## Governance + +:::info +The governance of BOB is work in progress. You can contribute with ideas by joining the [forum](https://forum.gobob.xyz). +::: + +## Settlement + +## Execution + +## Rollup + +## Bitcoin-augumentation \ No newline at end of file diff --git a/docs/docs/learn/stack/vision.md b/docs/docs/learn/stack/vision.md new file mode 100644 index 00000000..a6ad8fb7 --- /dev/null +++ b/docs/docs/learn/stack/vision.md @@ -0,0 +1,72 @@ +--- +sidebar_position: 1 +--- +# Technical Vision + +We see BOB as a collective undertaking to scale Bitcoin the right way: inheriting security from Bitcoin while providing usable decentralization for builders today without waiting for hardforks. + +The technical vision outlines the endgame for BOB and describes how it differs from the first deployments. The discrepency between endgame and current state forms opportunities to contribute and push the BOB stack further. + +## Bringing Bitcoin Security to Rollups on Any Chain + +We belive that rollups and sidechains should receive their consensus security from Bitcoin rather than relying on other L1s. + +### Ideal World: Verifiably Secure through Zero Knowledge Proofs + +To inherit full Bitcoin security, Bitcoin miners need to validate a BOB rollup state transition as part of Bitcoin consensus such that the rollups state transition function becomes part of the Bitcoin state transition function. No current Bitcoin sidechain achieves this level of security as this will require a hard fork of Bitcoin. + +In our opinion, non-interactive zero-knowledge proofs (NIZKP) are the ideal candidate to achieve full Bitcoin security as the verification of the proof is much simpler than its creation. The creation of the proof can be done by the rollup nodes. Bitcoin would need to add an OP code to verify ZK proofs or there would need to be great improvements in the efficiency of [BitVM](https://bitvm.org) to be able to verify ZK proofs. + +However, adding a ZK verification OP code and being able to verify ZK proofs in BitVM will likely take years as there is still heavy changes around ZK proofs and no "gold standard" has yet emerged. + +### Hardfork-free Bitcoin Security through Merged Mining + +As we expect that verifying ZK proofs is still a long way to go, the next best thing to inhert Bitcoin security for BOB rollups is to allow miners to verify rollup state transitions. Miners can opt-in to verify rollups and if all miners were to merge mine a rollup, it would have equivalent PoW security as Bitcoin itself. + +The process of merged mining allows a Bitcoin miner to: + +1. Run a full node of the rollup to verify blocks produced by rollup sequencers (or become a sequencer). This removes trust from the sequencer. +2. Fetch the latest block hash and include the block hash into the coinbase transaction of a Bitcoin block. +3. Submit Bitcoin blocks that meet the difficulty target of the BOB rollup to the rollup. + +When using Ethereum rollups, Ethereum becomes a co-processor to Bitcoin where the computation happens on the EVM rollup but the verification is done by the miner. + +We see a staged approach to make use of the rollup PoW: + +- Stage 1: Dapps deployed on an EVM rollup can check the submitted PoW to the rollup and customize their interpretation. For example, a ordinals P2P exchange might want to pause their platform if insufficient PoW is attached to the rollup, Other dapps might ignore the PoW alltogether, making the model quite flexible. +- Stage 2: Merged minig becomes a condition for a valid state transition of the rollup. Assuming that a rollup is launched on an L1 with smart contracts like Ethereum, the sequencer needs to ensure that at certain intervals a sufficient PoW is added. The rollup would be paused and its state could be invalidated through including the PoW as part of the fraud proofs (in optimistic rollups) and validity proofs (in zk rollups). Requiring PoW as part of a valid state transition for the rollup ensures that the state transition of the rollup on say Ethereum cannot settle without the explicit consent from Bitcoin miners. +- Stage 3: Staking sequencers on Bitcoin and proving incorrect behavior through BitVM, one-time signatures, and other techniques ensures that sequencers are ecnomically incentivized on Bitcoin to correctly produce L2 blocks. +- Stage 4: In the final stage, the rollup transitions to a fully zk-verified rollup that can then be verified by Bitcoin consensus without merged mining. We expect this to take about five years from now as it will require zk technology to mature and Bitcoin made capable of verifying zk proofs. + +:::info +We will share a technical paper on optimistic sequenced merged mining detailing the technical protocol soon. +::: + +:::note BOB Launch PLan +BOB launches as an [optimistic rollup using the OP Stack](op-stack) which may seem counterintuitive to the above goal of eventually being a ZK rollup. However, we see having full EVM compatibility and tooling a worthwhile trade-off to adopting zkEVM rollups. Moreover, we see extremely promising progress around abstracting the entire EVM execution into higher level zkVM like Risc Zero. Executing entire rollup blocks in a zkVM requires no changes to the EVM while still allowing validity proof production that then can eventually be used for a Bitcoin verified ZK rollup. + +We further will launch the merged mining option shortly after BOB will go live in the stage 1 option described above. +::: + +## Usable Decentralization + +Centralization is plaguing development on Bitcoin today. Due to Bitcoin's limited programmability, many applications building on Bitcoin, like the majority of Lightning wallets, are centralized as it allows for a better UX than their dencentralized counterparts. + +Lack of decentalized appliocations with great UX is a major issue that can be resolved by (1) allowing more epxressive smart contracts and piggy-backing off of the developments made on Ethereum and other L1 chains, and (2) ensuring that the EVM rollups are still secured by Bitcoin. + +### Adoption Through UX + +- Readily available assets for Bitcoin users by native bridged (rollups) to Ethereum +- Unified UX of Bitcoin with BOB-enhanced rollups will win out +- Mass adoption will need privacy + +## Multi-Chain and Multi-Rollup Future + +- BOB is not a single rollup: different rollups can make different trade-offs for various use cases. Examples: very fast block times with limited contracting for payments, large blocks for storing ordinals, ... +- BOB is an enhancer of existing sidechains and rollups and can be added to existing EVM chains + +## Off-chain Computation before On-chain Computation + +- Even in the EVM, some computations/programs might still be too complex +- Complex programs like a BRC20 or Ordinals co-processor should be operated off-chain and its correct execution proven on-chain +- Simple programs can be kept on-chain \ No newline at end of file From 129e785f65d1bb87594539b3ca6d3aeedc4212fa Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Fri, 1 Dec 2023 16:48:49 +0900 Subject: [PATCH 003/137] fix: broken links --- docs/docs/learn/stack/bob-stack.md | 18 +++++++++++++++++- docs/docs/learn/stack/vision.md | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/docs/docs/learn/stack/bob-stack.md b/docs/docs/learn/stack/bob-stack.md index 73c3e7e2..e9e04876 100644 --- a/docs/docs/learn/stack/bob-stack.md +++ b/docs/docs/learn/stack/bob-stack.md @@ -19,8 +19,24 @@ The governance of BOB is work in progress. You can contribute with ideas by join ## Settlement +:::info +TODO +::: + ## Execution +:::info +TODO +::: + ## Rollup -## Bitcoin-augumentation \ No newline at end of file +:::info +TODO +::: + +## Bitcoin-augumentation + +:::info +TODO +::: \ No newline at end of file diff --git a/docs/docs/learn/stack/vision.md b/docs/docs/learn/stack/vision.md index a6ad8fb7..df1f99cb 100644 --- a/docs/docs/learn/stack/vision.md +++ b/docs/docs/learn/stack/vision.md @@ -43,7 +43,7 @@ We will share a technical paper on optimistic sequenced merged mining detailing ::: :::note BOB Launch PLan -BOB launches as an [optimistic rollup using the OP Stack](op-stack) which may seem counterintuitive to the above goal of eventually being a ZK rollup. However, we see having full EVM compatibility and tooling a worthwhile trade-off to adopting zkEVM rollups. Moreover, we see extremely promising progress around abstracting the entire EVM execution into higher level zkVM like Risc Zero. Executing entire rollup blocks in a zkVM requires no changes to the EVM while still allowing validity proof production that then can eventually be used for a Bitcoin verified ZK rollup. +BOB launches as an [optimistic rollup using the OP Stack](/docs/learn/networks/op-stack.md) which may seem counterintuitive to the above goal of eventually being a ZK rollup. However, we see having full EVM compatibility and tooling a worthwhile trade-off to adopting zkEVM rollups. Moreover, we see extremely promising progress around abstracting the entire EVM execution into higher level zkVM like Risc Zero. Executing entire rollup blocks in a zkVM requires no changes to the EVM while still allowing validity proof production that then can eventually be used for a Bitcoin verified ZK rollup. We further will launch the merged mining option shortly after BOB will go live in the stage 1 option described above. ::: From 361b36be1f3675479e8de7b0533b6079de5c6f30 Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Mon, 4 Dec 2023 16:37:31 +0900 Subject: [PATCH 004/137] docs: add bridging details --- docs/docs/learn/stack/vision.md | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/docs/learn/stack/vision.md b/docs/docs/learn/stack/vision.md index df1f99cb..0da57780 100644 --- a/docs/docs/learn/stack/vision.md +++ b/docs/docs/learn/stack/vision.md @@ -7,7 +7,7 @@ We see BOB as a collective undertaking to scale Bitcoin the right way: inheritin The technical vision outlines the endgame for BOB and describes how it differs from the first deployments. The discrepency between endgame and current state forms opportunities to contribute and push the BOB stack further. -## Bringing Bitcoin Security to Rollups on Any Chain +## Bringing Bitcoin Security to Rollups We belive that rollups and sidechains should receive their consensus security from Bitcoin rather than relying on other L1s. @@ -60,13 +60,27 @@ Lack of decentalized appliocations with great UX is a major issue that can be re - Unified UX of Bitcoin with BOB-enhanced rollups will win out - Mass adoption will need privacy -## Multi-Chain and Multi-Rollup Future +### Multi-Chain and Multi-Rollup Future - BOB is not a single rollup: different rollups can make different trade-offs for various use cases. Examples: very fast block times with limited contracting for payments, large blocks for storing ordinals, ... - BOB is an enhancer of existing sidechains and rollups and can be added to existing EVM chains -## Off-chain Computation before On-chain Computation +### Off-chain Computation before On-chain Computation - Even in the EVM, some computations/programs might still be too complex - Complex programs like a BRC20 or Ordinals co-processor should be operated off-chain and its correct execution proven on-chain -- Simple programs can be kept on-chain \ No newline at end of file +- Simple programs can be kept on-chain + +## Briding BTC, Ordinals, and BRC20s + +We believe that in some cases, bridging BTC, Ordinals, and BRC20s to more chains with higher programmability than Bitcoin is required. + +### Bitcoin Bridges without Trusted Parties + +- In theory, if Bitcoin could verify the consensus of another chain, it would be possible to build a bridge that would only rely on the Bitcoin and other chains consensus security plus untrusted block relayers +- In practice, verifying another chains consensus is not possible on Bitcoin and therefore we have to find workarounds +- Add details about different bridge models + +:::note BOB Launch Plan +BOB will launch with the tBTC bridge as it provides a good trade-off that features a 1:1 peg, a distribution of trust among many parties through their threshold signatures, and partial collateralization. +::: \ No newline at end of file From 4520cd37614cb88fa28159565a1d3248dc75259a Mon Sep 17 00:00:00 2001 From: Sander Bosma Date: Wed, 15 Nov 2023 12:42:58 +0100 Subject: [PATCH 005/137] forge install: account-abstraction v0.6.0 --- .gitmodules | 3 +++ lib/account-abstraction | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/account-abstraction diff --git a/.gitmodules b/.gitmodules index 9852da38..591818e3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "lib/bitcoin-spv"] path = lib/bitcoin-spv url = https://github.com/bob-collective/bitcoin-spv +[submodule "lib/account-abstraction"] + path = lib/account-abstraction + url = https://github.com/eth-infinitism/account-abstraction diff --git a/lib/account-abstraction b/lib/account-abstraction new file mode 160000 index 00000000..abff2aca --- /dev/null +++ b/lib/account-abstraction @@ -0,0 +1 @@ +Subproject commit abff2aca61a8f0934e533d0d352978055fddbd96 From 9d429efef7829b16cde7e6fc1254bd6cbd182006 Mon Sep 17 00:00:00 2001 From: Sander Bosma Date: Wed, 15 Nov 2023 12:43:14 +0100 Subject: [PATCH 006/137] forge install: gsn v2.2.5 --- .gitmodules | 3 +++ lib/gsn | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/gsn diff --git a/.gitmodules b/.gitmodules index 591818e3..2d562494 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "lib/account-abstraction"] path = lib/account-abstraction url = https://github.com/eth-infinitism/account-abstraction +[submodule "lib/gsn"] + path = lib/gsn + url = https://github.com/opengsn/gsn diff --git a/lib/gsn b/lib/gsn new file mode 160000 index 00000000..8e0c9ed2 --- /dev/null +++ b/lib/gsn @@ -0,0 +1 @@ +Subproject commit 8e0c9ed23d9798b7384e8255054631c3cb414fdf From f9ab6e5768e214101590e0eb13e173656e8e526e Mon Sep 17 00:00:00 2001 From: Sander Bosma Date: Wed, 8 Nov 2023 16:10:27 +0100 Subject: [PATCH 007/137] feat: metatransaction and account abstraction --- deploy-all.md | 105 ++++++++ foundry.toml | 1 + lib/gsn | 2 +- remappings.txt | 10 + script/AATokenPaymaster.sol | 41 +++ script/Gsn.sol | 34 +++ script/Marketplace.sol | 23 ++ script/OnboardingPaymaster.sol | 33 +++ script/OracleTokenPaymaster.sol | 43 +++ script/TestingWbtc.sol | 34 +++ src/TestingErc20.sol | 48 ++++ .../AccountAbstraction/AATokenPaymaster.sol | 235 ++++++++++++++++ .../AccountAbstraction/SafeTransferLib.sol | 247 +++++++++++++++++ src/paymasters/OnboardingPaymaster.sol | 89 +++++++ src/paymasters/Oracle.sol | 50 ++++ src/paymasters/OracleTokenPaymaster.sol | 251 ++++++++++++++++++ src/swap/Bridge.sol | 23 +- src/swap/Btc_Marketplace.sol | 37 +-- src/swap/Faucet.sol | 50 ++++ src/swap/Marketplace.sol | 21 +- test/OnboardingPaymaster.t.sol | 35 +++ test/OracleTokenPaymaster.t.sol | 103 +++++++ test/swap/Marketplace.t.sol | 2 +- 23 files changed, 1479 insertions(+), 38 deletions(-) create mode 100644 deploy-all.md create mode 100644 remappings.txt create mode 100644 script/AATokenPaymaster.sol create mode 100644 script/Gsn.sol create mode 100644 script/Marketplace.sol create mode 100644 script/OnboardingPaymaster.sol create mode 100644 script/OracleTokenPaymaster.sol create mode 100644 script/TestingWbtc.sol create mode 100644 src/TestingErc20.sol create mode 100644 src/paymasters/AccountAbstraction/AATokenPaymaster.sol create mode 100644 src/paymasters/AccountAbstraction/SafeTransferLib.sol create mode 100644 src/paymasters/OnboardingPaymaster.sol create mode 100644 src/paymasters/Oracle.sol create mode 100644 src/paymasters/OracleTokenPaymaster.sol create mode 100644 src/swap/Faucet.sol create mode 100644 test/OnboardingPaymaster.t.sol create mode 100644 test/OracleTokenPaymaster.t.sol diff --git a/deploy-all.md b/deploy-all.md new file mode 100644 index 00000000..a4605793 --- /dev/null +++ b/deploy-all.md @@ -0,0 +1,105 @@ +# Steps to deploy all required contracts + +The steps below use various variables. In the latest deployments, these were set to: + +```sh +export PRIVATE_KEY= +export ENTRYPOINT_ADDRESS=0x8b57d6ec08e09078Db50F265729440713E024C6a +export RELAY_ADDRESS=0x7B72bA8c9f3Ba4A94E6d8fA07c822228034d2e61 +export ERC_ADDRESS=0x2868d708e442A6a940670d26100036d426F1e16b # wbtc +export ORACLE_ADDRESS=0x9AfBdFF0434acD4F325e3c35b739a62365099BCE # wbtc oracle +export ERC_DECIMALS=8 +export FORWARDER_ADDRESS=0xFd0042D3d05c82acb937aC86F23247a2D77785f2 +export RPC_URL=https://l2-puff-bob-jznbxtoq7h.t.conduit.xyz +export VERIFIER_URL='https://explorerl2new-puff-bob-jznbxtoq7h.t.conduit.xyz/api?' +export OWNER_ADDRESS='0x09Af4E864b84706fbCFE8679BF696e8c0B472201' +export BITCOIN_PRICE=3761500000000 +``` + +## GSN standard infrastructure + +Use the `gsn` tool to deploy the standard gsn infrasturcture. I believe the beta.10 version was used for the most recent deployment. + +```sh +npx gsn deploy --network https://l2-puff-bob-jznbxtoq7h.t.conduit.xyz --privateKeyHex $PRIVATE_KEY --testToken --burnAddress 0x09Af4E864b84706fbCFE8679BF696e8c0B472201 --devAddress 0x09Af4E864b84706fbCFE8679BF696e8c0B472201 +# Output: +# +# info: Setting minimum stake of 1 TestWeth on Hub +# info: Setting minimum stake of 0.000000000000000001 wnTok (0x14d8...446) +# Deployed GSN to network: https://l2-puff-bob-jznbxtoq7h.t.conduit.xyz +# +# RelayHub: 0x7B72bA8c9f3Ba4A94E6d8fA07c822228034d2e61 +# RelayRegistrar: 0x6Ff484e7530C4ab20aEa1B19E5b33FE7415dB9Fd +# StakeManager: 0xE5a27E68bE43A69dfd3A26be7DaE9Feac236C826 +# Penalizer: 0x1C36129916E3EA2ACcD516Ae92C8f91deF7c4146 +# Forwarder: 0xFd0042D3d05c82acb937aC86F23247a2D77785f2 +# TestToken (test only): 0x14d8b98c9f685FB3e13F5BB24B8016BD709A5446 +# Paymaster (Default): 0x0000000000000000000000000000000000000000 +``` + +## Miscelaneous deployments + +### Tokens + +```sh +# wbtc oracle: 0x9AfBdFF0434acD4F325e3c35b739a62365099BCE +# wbtc: 0x2868d708e442A6a940670d26100036d426F1e16b + +export ERC_PRICE=$BITCOIN_PRICE && forge script script/TestingWbtc.sol --rpc-url=$RPC_URL --broadcast --verify --verifier=blockscout --verifier-url=$VERIFIER_URL +``` + +### Marketplace +```sh +# btc marketplace: 0x0cfd830a59e94b6957609fFd85CcDD742C521F34 +# marketplace: 0x69F14d077Fcc88e70F4737a48fE09C0FD32506FB +# dummy relay: 0x077c5ed60fABb260784891786c6573373fDa8A3E +forge script script/Marketplace.sol --rpc-url=$RPC_URL --broadcast --verify --verifier blockscout --verifier-url=$VERIFIER_URL +``` + +### GSN Paymaster + +```sh +# paymaster: 0x25Aa86d188E37A47dd2011535534E53Cf994559d +forge script script/OracleTokenPaymaster.sol --rpc-url=$RPC_URL --broadcast --verify --verifier=blockscout --verifier-url=$VERIFIER_URL +``` + +# ERC-4337 + +## Entrypoint + +Clone [our fork](https://github.com/bob-collective/account-abstraction/tree/sepolia-bob) of the account-abstraction repo, set the `PRIVATE_KEY` environment variable, and deploy: + +```sh +yarn hardhat deploy --network sepoliaBob +``` + +The command above will output an address. Specify that address to verify the contract: +```sh +yarn hardhat verify --network sepoliaBob 0x8b57d6ec08e09078Db50F265729440713E024C6a +``` + + +## Deterministic deployer + +Clone [our fork](https://github.com/bob-collective/deterministic-deployment-proxy) of deterministic-deployment-proxy. This contract is used by the account abstraction wallets to deploy wallets to deterministic addresses. Edit the `chainIdNum` in the `scripts/compile.ts` file and then run `ts-node scripts/compile.ts`. Check the output as follows: + + +```sh +❯ cat output/deployment.json +{ + "gasPrice": 100000000000, + "gasLimit": 100000, + "signerAddress": "3760847f009a294e07309e80514ac0a7ee194269", + "transaction": "f8a78085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3820101a02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222", + "address": "250f60877f1397002ae79528b218be925b6b4c79" +} +``` + +Then, in the front-end code, update `DeterministicDeployer.ts` using the values from above. See https://github.com/bob-collective/demo-account-abstraction-transfer/pull/4 for an example. + + + +# Dummy oracle: 0x31b36BB047f6D5e3B49E95c4c99Cce4591e82E3f +# Dummy oracle: 0x6669d0C53fCf30c00F5AbE5a32cFa2EaD2bc2d5a +# Paymaster: 0x777FA19ea9e771018678161ABf2f1E2879D3cA6C +# forge script script/AATokenPaymaster.sol --rpc-url=$RPC_URL --broadcast --verify --verifier blockscout --verifier-url=$VERIFIER_URL \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 575f1994..19188228 100644 --- a/foundry.toml +++ b/foundry.toml @@ -2,6 +2,7 @@ src = "src" out = "out" libs = ["lib"] +solc = "0.8.17" # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/lib/gsn b/lib/gsn index 8e0c9ed2..da4222b7 160000 --- a/lib/gsn +++ b/lib/gsn @@ -1 +1 @@ -Subproject commit 8e0c9ed23d9798b7384e8255054631c3cb414fdf +Subproject commit da4222b76e3ae1968608dc5c5d80074dcac7c4be diff --git a/remappings.txt b/remappings.txt new file mode 100644 index 00000000..5fe3d82a --- /dev/null +++ b/remappings.txt @@ -0,0 +1,10 @@ +@bob-collective/bitcoin-spv/=lib/bitcoin-spv/src/ +ds-test/=lib/forge-std/lib/ds-test/src/ +forge-std/=lib/forge-std/src/ +@openzeppelin/=lib/openzeppelin-contracts/ +openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/ +account-abstraction/=lib/account-abstraction/contracts/ +bitcoin-spv/=lib/bitcoin-spv/ +gsn.git/=lib/gsn/ +@opengsn/=lib/gsn/ +@account-abstraction=lib/account-abstraction/ \ No newline at end of file diff --git a/script/AATokenPaymaster.sol b/script/AATokenPaymaster.sol new file mode 100644 index 00000000..4807c748 --- /dev/null +++ b/script/AATokenPaymaster.sol @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console2} from "forge-std/Script.sol"; +import {PimlicoERC20Paymaster, IERC20, IEntryPoint} from "../src/paymasters/AccountAbstraction/AATokenPaymaster.sol"; +import {DummyOracle} from "../src/paymasters/Oracle.sol"; + + +contract AATokenPaymasterScript is Script { + function setUp() public {} + + function run() public { + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + IERC20 token = IERC20(vm.envAddress("ERC_ADDRESS")); + int tokenPrice = vm.envInt("ERC_PRICE"); + uint8 tokenDecimals = uint8(vm.envUint("ERC_DECIMALS")); + IEntryPoint entrypoint = IEntryPoint( + vm.envAddress("ENTRYPOINT_ADDRESS") + ); + address owner = vm.envAddress("OWNER_ADDRESS"); + + vm.startBroadcast(deployerPrivateKey); + + DummyOracle ethOracle = new DummyOracle(); + ethOracle.setPrice(189100000000); // 1 eth = 1891usd + DummyOracle tokenOracle = new DummyOracle(); + tokenOracle.setPrice(tokenPrice); // set usd price * 10^8 + PimlicoERC20Paymaster paymaster = new PimlicoERC20Paymaster( + token, + entrypoint, + tokenOracle, + ethOracle, + owner, + tokenDecimals + ); + paymaster.updatePrice(); + paymaster.addStake{value: 0.1 ether}(1); + entrypoint.depositTo{value: 1 ether}(address(paymaster)); + vm.stopBroadcast(); + } +} diff --git a/script/Gsn.sol b/script/Gsn.sol new file mode 100644 index 00000000..a2981ada --- /dev/null +++ b/script/Gsn.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console2} from "forge-std/Script.sol"; +import "../src/paymasters/OracleTokenPaymaster.sol"; +import {DummyOracle} from "../src/paymasters/Oracle.sol"; +import {IRelayHub} from "../lib/gsn/packages/contracts/src/interfaces/IRelayHub.sol"; +import {TestingErc20} from "../src/TestingErc20.sol"; + +contract TestingWbtcScript is Script { + function setUp() public {} + + function run() public { + + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + + address forwarder = vm.envAddress("FORWARDER_ADDRESS"); + int tokenPrice = vm.envInt("ERC_PRICE"); + // address payable mtPaymaster = payable(vm.envAddress("MT_PAYMASTER_ADDRESS")); + + vm.startBroadcast(deployerPrivateKey); + + TestingErc20 token = new TestingErc20("Wrapped BTC", "WBTC", 8); + token.setTrustedForwarder(forwarder); + + DummyOracle oracle = new DummyOracle(); + oracle.setPrice(tokenPrice); + + // OracleTokenPaymaster paymaster = OracleTokenPaymaster(mtPaymaster); + // mtPaymaster.addOracle(token, token.decimals(), oracle); + + vm.stopBroadcast(); + } +} diff --git a/script/Marketplace.sol b/script/Marketplace.sol new file mode 100644 index 00000000..a60b1249 --- /dev/null +++ b/script/Marketplace.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console2} from "forge-std/Script.sol"; +import {BtcMarketPlace} from "../src/swap/Btc_Marketplace.sol"; +import {MarketPlace} from "../src/swap/Marketplace.sol"; +import {DummyRelay} from "../src/relay/DummyRelay.sol"; + +contract MarketplaceScript is Script { + function setUp() public {} + + function run() public { + + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + address forwarder = vm.envAddress("FORWARDER_ADDRESS"); + + vm.startBroadcast(deployerPrivateKey); + BtcMarketPlace btcMarketplace = new BtcMarketPlace(new DummyRelay(), forwarder); + MarketPlace marketplace = new MarketPlace(forwarder); + + vm.stopBroadcast(); + } +} diff --git a/script/OnboardingPaymaster.sol b/script/OnboardingPaymaster.sol new file mode 100644 index 00000000..af75ca06 --- /dev/null +++ b/script/OnboardingPaymaster.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console2} from "forge-std/Script.sol"; +import "../src/paymasters/OnboardingPaymaster.sol"; +import {DummyOracle} from "../src/paymasters/Oracle.sol"; +// import {IERC2771} from "../lib/gsn/packages/contracts/src/interfaces/IERC2771Recipient.sol"; +import {IRelayHub} from "../lib/gsn/packages/contracts/src/interfaces/IRelayHub.sol"; + +contract OnboardingPaymasterScript is Script { + function setUp() public {} + + function run() public { + + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + IRelayHub relay = IRelayHub(vm.envAddress("RELAY_ADDRESS")); + // bytes memory b = vm.envBytes("WHITELIST_SELECTOR"); + // (uint32 whitelistSelector) = abi.decode(b, (uint32)); + uint tmp = vm.envUint("WHITELIST_SELECTOR"); + address forwarder = vm.envAddress("FORWARDER_ADDRESS"); + uint32 whitelistSelector = uint32(tmp); + address whitelistAddress = vm.envAddress("WHITELIST_ADDRESS"); + + vm.startBroadcast(deployerPrivateKey); + OnboardingPaymaster paymaster = new OnboardingPaymaster(whitelistAddress, whitelistSelector); + + relay.depositFor{value: 1 ether}(address(paymaster)); + paymaster.setRelayHub(relay); + paymaster.setTrustedForwarder(forwarder); + + vm.stopBroadcast(); + } +} diff --git a/script/OracleTokenPaymaster.sol b/script/OracleTokenPaymaster.sol new file mode 100644 index 00000000..7eeafa5b --- /dev/null +++ b/script/OracleTokenPaymaster.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console2} from "forge-std/Script.sol"; +import "../src/paymasters/OracleTokenPaymaster.sol"; +import {DummyOracle} from "../src/paymasters/Oracle.sol"; +// import {IERC2771} from "../lib/gsn/packages/contracts/src/interfaces/IERC2771Recipient.sol"; +import {IRelayHub} from "../lib/gsn/packages/contracts/src/interfaces/IRelayHub.sol"; +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract OracleTokenPaymasterScript is Script { + function setUp() public {} + + function run() public { + + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + IRelayHub relay = IRelayHub(vm.envAddress("RELAY_ADDRESS")); + address forwarder = vm.envAddress("FORWARDER_ADDRESS"); + ERC20 token = ERC20(vm.envAddress("ERC_ADDRESS")); + IOracle oracle = IOracle(vm.envAddress("ORACLE_ADDRESS")); + // IERC2771 target = IERC2771(vm.envAddress("TARGET_ADDRESS")); + + vm.startBroadcast(deployerPrivateKey); + DummyOracle nativeTokenOracle = new DummyOracle(); + OracleTokenPaymaster paymaster = new OracleTokenPaymaster(nativeTokenOracle); + + relay.depositFor{value: 1 ether}(address(paymaster)); + paymaster.setRelayHub(relay); + paymaster.setTrustedForwarder(forwarder); + + nativeTokenOracle.setPrice(189100000000); // 1 eth = 1891usd + + paymaster.addOracle(token, token.decimals(), oracle); + +// cast send 0x3D7bA9A1c001b33Abd97648948A751401A546D0F "depositFor(address)" --rpc-url "https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz" --private-key b9176fa68b7c590eba66b7d1894a78fad479d6259e9a80d93b9871c232132c01 0x57249a410CD4730769B0D50e68564DFed5EaC80E --value 1ether && +// cast send 0x57249a410CD4730769B0D50e68564DFed5EaC80E "setRelayHub(address)" --rpc-url "https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz" --private-key b9176fa68b7c590eba66b7d1894a78fad479d6259e9a80d93b9871c232132c01 0x3D7bA9A1c001b33Abd97648948A751401A546D0F && +// cast send 0x57249a410CD4730769B0D50e68564DFed5EaC80E "setTrustedForwarder(address)" --rpc-url "https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz" --private-key b9176fa68b7c590eba66b7d1894a78fad479d6259e9a80d93b9871c232132c01 0x06F798121007F32d67AA43194E58d3e0e3689392 && +// cast send 0xFeCC3F37038999Ede8e58A3c9E5B0E9a16e7d5bC "approve(address,uint)" --rpc-url "https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz" --private-key b9176fa68b7c590eba66b7d1894a78fad479d6259e9a80d93b9871c232132c01 0x57249a410CD4730769B0D50e68564DFed5EaC80E 1ether + + + vm.stopBroadcast(); + } +} diff --git a/script/TestingWbtc.sol b/script/TestingWbtc.sol new file mode 100644 index 00000000..1c9ce8d9 --- /dev/null +++ b/script/TestingWbtc.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console2} from "forge-std/Script.sol"; +import "../src/paymasters/OracleTokenPaymaster.sol"; +import {DummyOracle} from "../src/paymasters/Oracle.sol"; +// import {IERC2771} from "../lib/gsn/packages/contracts/src/interfaces/IERC2771Recipient.sol"; +import {IRelayHub} from "../lib/gsn/packages/contracts/src/interfaces/IRelayHub.sol"; +import {TestingErc20} from "../src/TestingErc20.sol"; + +contract TestingWbtcScript is Script { + function setUp() public {} + + function run() public { + + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); + address forwarder = vm.envAddress("FORWARDER_ADDRESS"); + int tokenPrice = vm.envInt("ERC_PRICE"); + // address payable mtPaymaster = payable(vm.envAddress("MT_PAYMASTER_ADDRESS")); + + vm.startBroadcast(deployerPrivateKey); + + TestingErc20 token = new TestingErc20("Wrapped BTC", "WBTC", 8); + token.setTrustedForwarder(forwarder); + + DummyOracle oracle = new DummyOracle(); + oracle.setPrice(tokenPrice); + + new TestingErc20("USD Coin", "USDC", 6); + new TestingErc20("Tether USD", "USDT", 6); + + vm.stopBroadcast(); + } +} diff --git a/src/TestingErc20.sol b/src/TestingErc20.sol new file mode 100644 index 00000000..edaa94ea --- /dev/null +++ b/src/TestingErc20.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; +import {ERC2771Recipient} from "@opengsn/packages/contracts/src/ERC2771Recipient.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; + +// created using https://wizard.openzeppelin.com/ and then modified. +// todo: naming +contract TestingErc20 is ERC20, ERC20Burnable, Ownable, ERC2771Recipient { + uint8 _numDecimals; + + constructor(string memory _name, string memory _symbol, uint8 _decimals) ERC20(_name, _symbol) { + _numDecimals = _decimals; + } + + function setTrustedForwarder(address _forwarder) public onlyOwner { + _setTrustedForwarder(_forwarder); + } + + function mint(uint256 amount) external { + _mint(_msgSender(), amount); + } + + function _msgSender() + internal + view + override(Context, ERC2771Recipient) + returns (address sender) + { + sender = ERC2771Recipient._msgSender(); + } + + function _msgData() + internal + view + override(Context, ERC2771Recipient) + returns (bytes calldata) + { + return ERC2771Recipient._msgData(); + } + + // override decimals + function decimals() public view virtual override returns (uint8) { + return _numDecimals; + } +} \ No newline at end of file diff --git a/src/paymasters/AccountAbstraction/AATokenPaymaster.sol b/src/paymasters/AccountAbstraction/AATokenPaymaster.sol new file mode 100644 index 00000000..77722e77 --- /dev/null +++ b/src/paymasters/AccountAbstraction/AATokenPaymaster.sol @@ -0,0 +1,235 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity ^0.8.0; + +// adapted from https://github.com/pimlicolabs/erc20-paymaster-contracts/blob/60c3ea1c2d75069f9aa7f8d35bc08545a2edb34b/src/PimlicoERC20Paymaster.sol +// Import the required libraries and contracts +import "@account-abstraction/contracts/core/BasePaymaster.sol"; +import "@account-abstraction/contracts/core/Helpers.sol"; +import "@account-abstraction/contracts/interfaces/UserOperation.sol"; +import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +// import "./interfaces/IOracle.sol"; +import "@account-abstraction/contracts/core/EntryPoint.sol"; +// import "./utils/SafeTransferLib.sol"; +import {IERC20} from "openzeppelin-contracts/token/ERC20/IERC20.sol"; +import {IOracle} from "../Oracle.sol"; +// import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +// import "./SafeTransferLib.sol"; + + + +// using SafeERC20 for IERC20; + +/// @title PimlicoERC20Paymaster +/// @notice An ERC-4337 Paymaster contract by Pimlico which is able to sponsor gas fees in exchange for ERC20 tokens. +/// The contract refunds excess tokens if the actual gas cost is lower than the initially provided amount. +/// It also allows updating price configuration and withdrawing tokens by the contract owner. +/// The contract uses an Oracle to fetch the latest token prices. +/// @dev Inherits from BasePaymaster. + +contract PimlicoERC20Paymaster is BasePaymaster { + uint256 public constant priceDenominator = 1e6; + uint256 public constant REFUND_POSTOP_COST = 40000; // Estimated gas cost for refunding tokens after the transaction is completed + + // The token, tokenOracle, and nativeAssetOracle are declared as immutable, + // meaning their values cannot change after contract creation. + IERC20 public immutable token; // The ERC20 token used for transaction fee payments + uint256 public immutable tokenDecimals; + IOracle public immutable tokenOracle; // The Oracle contract used to fetch the latest token prices + IOracle public immutable nativeAssetOracle; // The Oracle contract used to fetch the latest ETH prices + + uint192 public previousPrice; // The cached token price from the Oracle + uint32 public priceMarkup; // The price markup percentage applied to the token price (1e6 = 100%) + uint32 public priceUpdateThreshold; // The price update threshold percentage that triggers a price update (1e6 = 100%) + + event ConfigUpdated(uint32 priceMarkup, uint32 updateThreshold); + + event UserOperationSponsored( + address indexed user, + uint256 actualTokenNeeded, + uint256 actualGasCost + ); + + /// @notice Initializes the PimlicoERC20Paymaster contract with the given parameters. + /// @param _token The ERC20 token used for transaction fee payments. + /// @param _entryPoint The EntryPoint contract used in the Account Abstraction infrastructure. + /// @param _tokenOracle The Oracle contract used to fetch the latest token prices. + /// @param _nativeAssetOracle The Oracle contract used to fetch the latest native asset (ETH, Matic, Avax, etc.) prices. + /// @param _owner The address that will be set as the owner of the contract. + constructor( + IERC20 _token, + IEntryPoint _entryPoint, + IOracle _tokenOracle, + IOracle _nativeAssetOracle, + address _owner, + uint8 _tokenDecimals + ) BasePaymaster(_entryPoint) { + token = _token; + tokenOracle = _tokenOracle; // oracle for token -> usd + nativeAssetOracle = _nativeAssetOracle; // oracle for native asset(eth/matic/avax..) -> usd + priceMarkup = 110e4; // 110% 1e6 = 100% + priceUpdateThreshold = 25e3; // 2.5% 1e6 = 100% + transferOwnership(_owner); + tokenDecimals = 10 ** _tokenDecimals; + require( + _tokenOracle.decimals() == 8, + "PP-ERC20 : token oracle decimals must be 8" + ); + require( + _nativeAssetOracle.decimals() == 8, + "PP-ERC20 : native asset oracle decimals must be 8" + ); + } + + /// @notice Updates the price markup and price update threshold configurations. + /// @param _priceMarkup The new price markup percentage (1e6 = 100%). + /// @param _updateThreshold The new price update threshold percentage (1e6 = 100%). + function updateConfig( + uint32 _priceMarkup, + uint32 _updateThreshold + ) external onlyOwner { + require(_priceMarkup <= 120e4, "PP-ERC20 : price markup too high"); + require(_priceMarkup >= 1e6, "PP-ERC20 : price markeup too low"); + require( + _updateThreshold <= 1e6, + "PP-ERC20 : update threshold too high" + ); + priceMarkup = _priceMarkup; + priceUpdateThreshold = _updateThreshold; + emit ConfigUpdated(_priceMarkup, _updateThreshold); + } + + /// @notice Allows the contract owner to withdraw a specified amount of tokens from the contract. + /// @param to The address to transfer the tokens to. + /// @param amount The amount of tokens to transfer. + function withdrawToken(address to, uint256 amount) external onlyOwner { + token.transfer(to, amount); + } + + /// @notice Updates the token price by fetching the latest price from the Oracle. + function updatePrice() external { + // This function updates the cached ERC20/ETH price ratio + uint192 tokenPrice = fetchPrice(tokenOracle); + uint192 nativeAssetPrice = fetchPrice(nativeAssetOracle); + previousPrice = + (nativeAssetPrice * uint192(tokenDecimals)) / + tokenPrice; + } + + /// @notice Validates a paymaster user operation and calculates the required token amount for the transaction. + /// @param userOp The user operation data. + /// @param requiredPreFund The amount of tokens required for pre-funding. + /// @return context The context containing the token amount and user sender address (if applicable). + /// @return validationResult A uint256 value indicating the result of the validation (always 0 in this implementation). + function _validatePaymasterUserOp( + UserOperation calldata userOp, + bytes32, + uint256 requiredPreFund + ) + internal + override + returns (bytes memory context, uint256 validationResult) + { + unchecked { + uint256 cachedPrice = previousPrice; + require(cachedPrice != 0, "PP-ERC20 : price not set"); + uint256 length = userOp.paymasterAndData.length - 20; + // 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf is the mask for the last 6 bits 011111 which mean length should be 100000(32) || 000000(0) + require( + length & + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf == + 0, + "PP-ERC20 : invalid data length" + ); + // NOTE: we assumed that nativeAsset's decimals is 18, if there is any nativeAsset with different decimals, need to change the 1e18 to the correct decimals + uint256 tokenAmount = ((requiredPreFund + + (REFUND_POSTOP_COST) * + userOp.maxFeePerGas) * + priceMarkup * + cachedPrice) / (1e18 * priceDenominator); + if (length == 32) { + require( + tokenAmount <= + uint256(bytes32(userOp.paymasterAndData[20:52])), + "PP-ERC20 : token amount too high" + ); + } + token.transferFrom(userOp.sender, address(this), tokenAmount); + context = abi.encodePacked(tokenAmount, userOp.sender); + // No return here since validationData == 0 and we have context saved in memory + validationResult = 0; + } + } + + /// @notice Performs post-operation tasks, such as updating the token price and refunding excess tokens. + /// @dev This function is called after a user operation has been executed or reverted. + /// @param mode The post-operation mode (either successful or reverted). + /// @param context The context containing the token amount and user sender address. + /// @param actualGasCost The actual gas cost of the transaction. + function _postOp( + PostOpMode mode, + bytes calldata context, + uint256 actualGasCost + ) internal override { + if (mode == PostOpMode.postOpReverted) { + return; // Do nothing here to not revert the whole bundle and harm reputation + } + unchecked { + uint192 tokenPrice = fetchPrice(tokenOracle); + uint192 nativeAsset = fetchPrice(nativeAssetOracle); + uint256 cachedPrice = previousPrice; + uint192 price = (nativeAsset * uint192(tokenDecimals)) / tokenPrice; + uint256 cachedUpdateThreshold = priceUpdateThreshold; + if ( + (uint256(price) * priceDenominator) / cachedPrice > + priceDenominator + cachedUpdateThreshold || + (uint256(price) * priceDenominator) / cachedPrice < + priceDenominator - cachedUpdateThreshold + ) { + previousPrice = uint192(int192(price)); + cachedPrice = uint192(int192(price)); + } + // Refund tokens based on actual gas cost + // NOTE: we assumed that nativeAsset's decimals is 18, if there is any nativeAsset with different decimals, need to change the 1e18 to the correct decimals + uint256 actualTokenNeeded = ((actualGasCost + + REFUND_POSTOP_COST * + tx.gasprice) * + priceMarkup * + cachedPrice) / (1e18 * priceDenominator); // We use tx.gasprice here since we don't know the actual gas price used by the user + if (uint256(bytes32(context[0:32])) > actualTokenNeeded) { + // If the initially provided token amount is greater than the actual amount needed, refund the difference + token.transfer( + address(bytes20(context[32:52])), + uint256(bytes32(context[0:32])) - actualTokenNeeded + ); + } // If the token amount is not greater than the actual amount needed, no refund occurs + + emit UserOperationSponsored( + address(bytes20(context[32:52])), + actualTokenNeeded, + actualGasCost + ); + } + } + + /// @notice Fetches the latest price from the given Oracle. + /// @dev This function is used to get the latest price from the tokenOracle or nativeAssetOracle. + /// @param _oracle The Oracle contract to fetch the price from. + /// @return price The latest price fetched from the Oracle. + function fetchPrice(IOracle _oracle) internal view returns (uint192 price) { + ( + uint80 roundId, + int256 answer, + , + uint256 updatedAt, + uint80 answeredInRound + ) = _oracle.latestRoundData(); + require(answer > 0, "PP-ERC20 : Chainlink price <= 0"); + // 2 days old price is considered stale since the price is updated every 24 hours + require( + updatedAt >= block.timestamp - 60 * 60 * 24 * 2, + "PP-ERC20 : Incomplete round" + ); + require(answeredInRound >= roundId, "PP-ERC20 : Stale price"); + price = uint192(int192(answer)); + } +} diff --git a/src/paymasters/AccountAbstraction/SafeTransferLib.sol b/src/paymasters/AccountAbstraction/SafeTransferLib.sol new file mode 100644 index 00000000..72c25bbc --- /dev/null +++ b/src/paymasters/AccountAbstraction/SafeTransferLib.sol @@ -0,0 +1,247 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.4; + +// From: https://github.com/pimlicolabs/erc20-paymaster-contracts/blob/60c3ea1c2d75069f9aa7f8d35bc08545a2edb34b/src/utils/SafeTransferLib.sol +// Note: this is used instead of openzeppelin to avoid selfbalance opcodes + +/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values. +/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol) +/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol) +/// @dev Caution! This library won't check that a token has code, responsibility is delegated to the caller. +library SafeTransferLib { + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* CUSTOM ERRORS */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + /// @dev The ETH transfer has failed. + error ETHTransferFailed(); + + /// @dev The ERC20 `transferFrom` has failed. + error TransferFromFailed(); + + /// @dev The ERC20 `transfer` has failed. + error TransferFailed(); + + /// @dev The ERC20 `approve` has failed. + error ApproveFailed(); + + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* CONSTANTS */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + /// @dev Suggested gas stipend for contract receiving ETH + /// that disallows any storage writes. + uint256 internal constant _GAS_STIPEND_NO_STORAGE_WRITES = 2300; + + /// @dev Suggested gas stipend for contract receiving ETH to perform a few + /// storage reads and writes, but low enough to prevent griefing. + /// Multiply by a small constant (e.g. 2), if needed. + uint256 internal constant _GAS_STIPEND_NO_GRIEF = 100000; + + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ + /* ERC20 OPERATIONS */ + /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ + + /// @dev Sends `amount` of ERC20 `token` from `from` to `to`. + /// Reverts upon failure. + /// + /// The `from` account must have at least `amount` approved for + /// the current contract to manage. + function safeTransferFrom(address token, address from, address to, uint256 amount) internal { + /// @solidity memory-safe-assembly + assembly { + let m := mload(0x40) // Cache the free memory pointer. + + mstore(0x60, amount) // Store the `amount` argument. + mstore(0x40, to) // Store the `to` argument. + mstore(0x2c, shl(96, from)) // Store the `from` argument. + // Store the function selector of `transferFrom(address,address,uint256)`. + mstore(0x0c, 0x23b872dd000000000000000000000000) + + if iszero( + and( // The arguments of `and` are evaluated from right to left. + // Set success to whether the call reverted, if not we check it either + // returned exactly 1 (can't just be non-zero data), or had no return data. + or(eq(mload(0x00), 1), iszero(returndatasize())), + call(gas(), token, 0, 0x1c, 0x64, 0x00, 0x20) + ) + ) { + // Store the function selector of `TransferFromFailed()`. + mstore(0x00, 0x7939f424) + // Revert with (offset, size). + revert(0x00, 0x20) + } + + mstore(0x60, 0) // Restore the zero slot to zero. + mstore(0x40, m) // Restore the free memory pointer. + } + } + + /// @dev Sends all of ERC20 `token` from `from` to `to`. + /// Reverts upon failure. + /// + /// The `from` account must have at least `amount` approved for + /// the current contract to manage. + function safeTransferAllFrom(address token, address from, address to) internal returns (uint256 amount) { + /// @solidity memory-safe-assembly + assembly { + let m := mload(0x40) // Cache the free memory pointer. + + mstore(0x40, to) // Store the `to` argument. + mstore(0x2c, shl(96, from)) // Store the `from` argument. + // Store the function selector of `balanceOf(address)`. + mstore(0x0c, 0x70a08231000000000000000000000000) + if iszero( + and( // The arguments of `and` are evaluated from right to left. + gt(returndatasize(), 0x1f), // At least 32 bytes returned. + staticcall(gas(), token, 0x1c, 0x24, 0x60, 0x20) + ) + ) { + // Store the function selector of `TransferFromFailed()`. + mstore(0x00, 0x7939f424) + // Revert with (offset, size). + revert(0x00, 0x20) + } + + // Store the function selector of `transferFrom(address,address,uint256)`. + mstore(0x00, 0x23b872dd) + // The `amount` argument is already written to the memory word at 0x6c. + amount := mload(0x60) + + if iszero( + and( // The arguments of `and` are evaluated from right to left. + // Set success to whether the call reverted, if not we check it either + // returned exactly 1 (can't just be non-zero data), or had no return data. + or(eq(mload(0x00), 1), iszero(returndatasize())), + call(gas(), token, 0, 0x1c, 0x64, 0x00, 0x20) + ) + ) { + // Store the function selector of `TransferFromFailed()`. + mstore(0x00, 0x7939f424) + // Revert with (offset, size). + revert(0x00, 0x20) + } + + mstore(0x60, 0) // Restore the zero slot to zero. + mstore(0x40, m) // Restore the free memory pointer. + } + } + + /// @dev Sends `amount` of ERC20 `token` from the current contract to `to`. + /// Reverts upon failure. + function safeTransfer(address token, address to, uint256 amount) internal { + /// @solidity memory-safe-assembly + assembly { + mstore(0x14, to) // Store the `to` argument. + mstore(0x34, amount) // Store the `amount` argument. + // Store the function selector of `transfer(address,uint256)`. + mstore(0x00, 0xa9059cbb000000000000000000000000) + + if iszero( + and( // The arguments of `and` are evaluated from right to left. + // Set success to whether the call reverted, if not we check it either + // returned exactly 1 (can't just be non-zero data), or had no return data. + or(eq(mload(0x00), 1), iszero(returndatasize())), + call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20) + ) + ) { + // Store the function selector of `TransferFailed()`. + mstore(0x00, 0x90b8ec18) + // Revert with (offset, size). + revert(0x00, 0x20) + } + // Restore the part of the free memory pointer that was overwritten. + mstore(0x34, 0) + } + } + + /// @dev Sends all of ERC20 `token` from the current contract to `to`. + /// Reverts upon failure. + function safeTransferAll(address token, address to) internal returns (uint256 amount) { + /// @solidity memory-safe-assembly + assembly { + mstore(0x00, 0x70a08231) // Store the function selector of `balanceOf(address)`. + mstore(0x20, address()) // Store the address of the current contract. + if iszero( + and( // The arguments of `and` are evaluated from right to left. + gt(returndatasize(), 0x1f), // At least 32 bytes returned. + staticcall(gas(), token, 0x1c, 0x24, 0x34, 0x20) + ) + ) { + // Store the function selector of `TransferFailed()`. + mstore(0x00, 0x90b8ec18) + // Revert with (offset, size). + revert(0x00, 0x20) + } + + mstore(0x14, to) // Store the `to` argument. + // The `amount` argument is already written to the memory word at 0x34. + amount := mload(0x34) + // Store the function selector of `transfer(address,uint256)`. + mstore(0x00, 0xa9059cbb000000000000000000000000) + + if iszero( + and( // The arguments of `and` are evaluated from right to left. + // Set success to whether the call reverted, if not we check it either + // returned exactly 1 (can't just be non-zero data), or had no return data. + or(eq(mload(0x00), 1), iszero(returndatasize())), + call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20) + ) + ) { + // Store the function selector of `TransferFailed()`. + mstore(0x00, 0x90b8ec18) + // Revert with (offset, size). + revert(0x00, 0x20) + } + // Restore the part of the free memory pointer that was overwritten. + mstore(0x34, 0) + } + } + + /// @dev Sets `amount` of ERC20 `token` for `to` to manage on behalf of the current contract. + /// Reverts upon failure. + function safeApprove(address token, address to, uint256 amount) internal { + /// @solidity memory-safe-assembly + assembly { + mstore(0x14, to) // Store the `to` argument. + mstore(0x34, amount) // Store the `amount` argument. + // Store the function selector of `approve(address,uint256)`. + mstore(0x00, 0x095ea7b3000000000000000000000000) + + if iszero( + and( // The arguments of `and` are evaluated from right to left. + // Set success to whether the call reverted, if not we check it either + // returned exactly 1 (can't just be non-zero data), or had no return data. + or(eq(mload(0x00), 1), iszero(returndatasize())), + call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20) + ) + ) { + // Store the function selector of `ApproveFailed()`. + mstore(0x00, 0x3e3f8f73) + // Revert with (offset, size). + revert(0x00, 0x20) + } + // Restore the part of the free memory pointer that was overwritten. + mstore(0x34, 0) + } + } + + /// @dev Returns the amount of ERC20 `token` owned by `account`. + /// Returns zero if the `token` does not exist. + function balanceOf(address token, address account) internal view returns (uint256 amount) { + /// @solidity memory-safe-assembly + assembly { + mstore(0x14, account) // Store the `account` argument. + // Store the function selector of `balanceOf(address)`. + mstore(0x00, 0x70a08231000000000000000000000000) + amount := + mul( + mload(0x20), + and( // The arguments of `and` are evaluated from right to left. + gt(returndatasize(), 0x1f), // At least 32 bytes returned. + staticcall(gas(), token, 0x10, 0x24, 0x20, 0x20) + ) + ) + } + } +} diff --git a/src/paymasters/OnboardingPaymaster.sol b/src/paymasters/OnboardingPaymaster.sol new file mode 100644 index 00000000..f170f104 --- /dev/null +++ b/src/paymasters/OnboardingPaymaster.sol @@ -0,0 +1,89 @@ +// SPDX-License-Identifier:MIT +pragma solidity ^0.8.0; +pragma experimental ABIEncoderV2; + +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +import "gsn/packages/contracts/src/forwarder/IForwarder.sol"; +import "gsn/packages/contracts/src/BasePaymaster.sol"; + +contract OnboardingPaymaster is BasePaymaster { + address public whitelistedContract; + uint32 public whitelistedSelector; + uint256 public gasUsedByPost; + + constructor(address _whitelistedContract, uint32 _whitelistedSelector) { + whitelistedContract = _whitelistedContract; + whitelistedSelector = _whitelistedSelector; + } + + event PreRelay(address indexed sender); + event PostRelay(address indexed sender); + + function versionPaymaster() + external + view + virtual + override + returns (string memory) + { + return "3.0.0-beta.10+opengsn.oracle.token.ipaymaster"; + } + + function setPostGasUsage(uint256 _gasUsedByPost) external onlyOwner { + gasUsedByPost = _gasUsedByPost; + } + + function _getPaymasterData( + bytes memory paymasterData + ) private returns (IERC20 token, uint maxTokens) { + (address tokenAddress, uint _maxTokens) = abi.decode( + paymasterData, + (address, uint) + ); + + maxTokens = _maxTokens; + token = IERC20(tokenAddress); + } + + function getSelector(bytes calldata call) public view returns (uint32) { + uint32 ret = uint32(bytes4(call[0:4])); + return ret; + } + + function _preRelayedCall( + GsnTypes.RelayRequest calldata relayRequest, + bytes calldata signature, + bytes calldata approvalData, + uint256 maxPossibleGas + ) + internal + virtual + override + returns (bytes memory context, bool revertOnRecipientRevert) + { + require( + relayRequest.request.to == whitelistedContract, + "Recipient is not whitelisted" + ); + + uint32 selector = getSelector(relayRequest.request.data); + + require(selector == whitelistedSelector, "Selector is not whitelisted"); + + emit PreRelay(relayRequest.request.from); + + return (abi.encode(relayRequest.request.from), false); + } + + function _postRelayedCall( + bytes calldata context, + bool, + uint256 gasUseWithoutPost, + GsnTypes.RelayData calldata relayData + ) internal virtual override { + address from = abi.decode(context, (address)); + emit PostRelay(from); + } +} diff --git a/src/paymasters/Oracle.sol b/src/paymasters/Oracle.sol new file mode 100644 index 00000000..363b49c3 --- /dev/null +++ b/src/paymasters/Oracle.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier:MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + + +interface IOracle { + function decimals() external view returns (uint8); + + function latestRoundData() + external + view + returns ( + uint80 roundId, + int256 answer, + uint256 startedAt, + uint256 updatedAt, + uint80 answeredInRound + ); +} + +contract DummyOracle is IOracle { + int256 public price; + + function decimals() external view returns (uint8) { + return 8; + } + + function latestRoundData() + external + view + returns ( + uint80 roundId, + int256 answer, + uint256 startedAt, + uint256 updatedAt, + uint80 answeredInRound + ) + { + roundId = 0; + answer = price; + startedAt = 0; + updatedAt = block.timestamp; // pretend we just got the block + answeredInRound = 0; + } + + function setPrice(int256 _price) public { + price = _price; + } +} diff --git a/src/paymasters/OracleTokenPaymaster.sol b/src/paymasters/OracleTokenPaymaster.sol new file mode 100644 index 00000000..6bcd976c --- /dev/null +++ b/src/paymasters/OracleTokenPaymaster.sol @@ -0,0 +1,251 @@ +// SPDX-License-Identifier:MIT +pragma solidity ^0.8.0; +pragma experimental ABIEncoderV2; + +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +import "gsn/packages/contracts/src/forwarder/IForwarder.sol"; +import "gsn/packages/contracts/src/BasePaymaster.sol"; + +import {IOracle} from "./Oracle.sol"; + +// Based on https://github.com/opengsn/gsn/blob/v3.0.0-beta.10/packages/paymasters/contracts/TokenPaymaster.sol +// But modified to use an oracle rather than uniswap. + +/// A very basic paymaster that makes the payer pay in ERC20 tokens. +/// - The token prices need to be provided by an IOracle. +/// - No swaps are done - the paymaster simply receives ERC20 tokens. This means +/// that over time, the paymaster's eth balance will decrease. It is up to the +/// owner of the contract to replenish the eth balance. +/// - The owner of the contract can withdraw their received erc20 balances. +/// - Users specify an erc20 address and a maximum amount they are willing to pay +/// for the tx. This reduces the trust put in the oracle. +contract OracleTokenPaymaster is BasePaymaster { + IOracle nativeTokenOracle; + mapping(IERC20 => TokenDetails) public tokenOracles; + uint256 public gasUsedByPost; + + struct TokenDetails { + uint div; // the scaling factor of the token (NOT oracle). Usually 1e18 + IOracle oracle; + } + event PreRelayPayment( + uint ethAmount, + IERC20 token, + uint tokenAmount, + address indexed payer + ); + event PostRelay( + uint actualEthAmount, + IERC20 token, + uint actualTokenAmount, + address payer + ); + + constructor(IOracle _nativeTokenOracle) { + require(_nativeTokenOracle.decimals() == 8, "OTP: native token oracle decimals must be 8"); + + nativeTokenOracle = _nativeTokenOracle; + } + + function versionPaymaster() + external + view + virtual + override + returns (string memory) + { + return "3.0.0-beta.10+opengsn.oracle.token.ipaymaster"; + } + + function addOracle( + IERC20 _token, + uint _decimals, + IOracle _oracle + ) external onlyOwner { + require(_oracle.decimals() == 8, "OTP: token oracle decimals must be 8"); + tokenOracles[_token] = TokenDetails({ + div: 10 ** _decimals, + oracle: _oracle + }); + } + + function fetchPrice(IOracle _oracle) internal view returns (uint192 price) { + ( + uint80 roundId, + int256 answer, + , + uint256 updatedAt, + uint80 answeredInRound + ) = _oracle.latestRoundData(); + require(answer > 0, "OTP : Chainlink price <= 0"); + // 2 days old price is considered stale since the price is updated every 24 hours + require( + updatedAt >= block.timestamp - 60 * 60 * 24 * 2, + "OTP : Incomplete round" + ); + require(answeredInRound >= roundId, "OTP : Stale price"); + price = uint192(int192(answer)); + } + + function _ethToTokens( + IERC20 token, + uint ethAmount + ) internal view returns (uint) { + TokenDetails memory _tokenOracle = tokenOracles[token]; + require( + address(_tokenOracle.oracle) != address(0x00), + "OTP: Oracle does not exist" + ); + + uint192 tokenPrice = fetchPrice(_tokenOracle.oracle); // #decimals: 8 + uint192 nativeAssetPrice = fetchPrice(nativeTokenOracle); // #decimals: 8 + uint192 relativePrice = (nativeAssetPrice * uint192(_tokenOracle.div)) / + tokenPrice; // #decimals: _tokenOracle.div + + // #decimals: 18 + _tokenOracle.div - 18 = _tokenOracle.div + uint tokenAmount = (ethAmount * relativePrice) / 1e18; + + return tokenAmount; + } + + function setPostGasUsage(uint256 _gasUsedByPost) external onlyOwner { + gasUsedByPost = _gasUsedByPost; + } + + function withdrawAll(IERC20 token) external onlyOwner { + uint balance = token.balanceOf(address(this)); + token.transfer(msg.sender, balance); + } + + function getPayer( + GsnTypes.RelayRequest calldata relayRequest + ) public view virtual returns (address) { + (this); + return relayRequest.request.from; + } + + function _getPaymasterData( + bytes memory paymasterData + ) private returns (IERC20 token, uint maxTokens) { + (address tokenAddress, uint _maxTokens) = abi.decode( + paymasterData, + (address, uint) + ); + + maxTokens = _maxTokens; + token = IERC20(tokenAddress); + } + + function _calculatePreCharge( + IERC20 token, + GsnTypes.RelayRequest calldata relayRequest, + uint256 maxPossibleGas + ) + internal + returns (address payer, uint256 ethPrecharge, uint256 tokenPreCharge) + { + payer = this.getPayer(relayRequest); + uint256 ethMaxCharge = relayHub.calculateCharge( + maxPossibleGas, + relayRequest.relayData + ); + ethMaxCharge += relayRequest.request.value; + tokenPreCharge = _ethToTokens(token, ethMaxCharge); + ethPrecharge = ethMaxCharge; + } + + function _verifyPaymasterData( + GsnTypes.RelayRequest calldata relayRequest + ) internal view virtual override { + require( + relayRequest.relayData.paymasterData.length == 64, + "paymasterData: invalid length" + ); + } + + function __preRelayedCall( + GsnTypes.RelayRequest calldata relayRequest, + bytes calldata signature, + bytes calldata approvalData, + uint256 maxPossibleGas + ) public returns (bytes memory context, bool revertOnRecipientRevert) { + _preRelayedCall(relayRequest, signature, approvalData, maxPossibleGas); + } + + function _preRelayedCall( + GsnTypes.RelayRequest calldata relayRequest, + bytes calldata signature, + bytes calldata approvalData, + uint256 maxPossibleGas + ) + internal + virtual + override + returns (bytes memory context, bool revertOnRecipientRevert) + { + (IERC20 token, uint maxTokens) = _getPaymasterData( + relayRequest.relayData.paymasterData + ); + ( + address payer, + uint ethPrecharge, + uint256 tokenPrecharge + ) = _calculatePreCharge(token, relayRequest, maxPossibleGas); + + require( + tokenPrecharge <= maxTokens, + "Tx cost more than the user-supplied limit" + ); + + token.transferFrom(payer, address(this), tokenPrecharge); + + emit PreRelayPayment(ethPrecharge, token, tokenPrecharge, payer); + + return (abi.encode(payer, tokenPrecharge, token), false); + } + + function _postRelayedCall( + bytes calldata context, + bool, + uint256 gasUseWithoutPost, + GsnTypes.RelayData calldata relayData + ) internal virtual override { + (address payer, uint256 tokenPrecharge, IERC20 token) = abi.decode( + context, + (address, uint256, IERC20) + ); + _postRelayedCallInternal( + payer, + tokenPrecharge, + 0, + gasUseWithoutPost, + relayData, + token + ); + } + + function _postRelayedCallInternal( + address payer, + uint256 tokenPrecharge, + uint256 valueRequested, + uint256 gasUseWithoutPost, + GsnTypes.RelayData calldata relayData, + IERC20 token + ) internal { + uint256 ethActualCharge = relayHub.calculateCharge( + gasUseWithoutPost + gasUsedByPost, + relayData + ); + uint256 tokenActualCharge = _ethToTokens( + token, + valueRequested + ethActualCharge + ); + uint256 tokenRefund = tokenPrecharge - tokenActualCharge; + + emit PostRelay(ethActualCharge, token, tokenActualCharge, payer); + + require(token.transfer(payer, tokenRefund), "failed refund"); + } +} diff --git a/src/swap/Bridge.sol b/src/swap/Bridge.sol index 11508243..a2aa8195 100644 --- a/src/swap/Bridge.sol +++ b/src/swap/Bridge.sol @@ -2,8 +2,9 @@ pragma solidity ^0.8.13; import {BobWrappedBtc} from "./Wrapped.sol"; +import {ERC2771Recipient} from "@opengsn/packages/contracts/src/ERC2771Recipient.sol"; -contract Bridge { +contract Bridge is ERC2771Recipient { uint256 public number; uint256 public collateralThreshold; uint256 nextOrderId; @@ -38,16 +39,16 @@ contract Bridge { function mint() public payable { uint256 collateral = msg.value; // this is the amount of eth sent to the contract uint256 mintedAmount = colToBtc(collateral) / collateralThreshold; - wrapped.sudoMint(msg.sender, mintedAmount); + wrapped.sudoMint(_msgSender(), mintedAmount); - suppliedCollateral[msg.sender] += collateral; + suppliedCollateral[_msgSender()] += collateral; totalCollateral += collateral; } /// request zBTC to be redeemed for given amount of BTC. function requestSwap(uint256 amountZbtc, uint256 amountBtc, BitcoinAddress calldata bitcoinAddress) public { // lock Zbtc by transfering it to the contract address - wrapped.sudoTransferFrom(msg.sender, address(this), amountZbtc); + wrapped.sudoTransferFrom(_msgSender(), address(this), amountZbtc); require(amountZbtc != 0); uint256 id = nextOrderId++; @@ -55,7 +56,7 @@ contract Bridge { open: true, amountZbtc: amountZbtc, amountBtc: amountBtc, - requesterAddress: msg.sender, + requesterAddress: _msgSender(), accepterAddress: address(0), bitcoinAddress: bitcoinAddress }); @@ -68,13 +69,13 @@ contract Bridge { // todo: protocol should probably require some sort of collateral deposit here order.open = false; - order.accepterAddress = msg.sender; + order.accepterAddress = _msgSender(); } // not documented, but presumably required function cancelSwap(uint256 id) public { Order storage order = orders[id]; - require(order.requesterAddress == msg.sender); + require(order.requesterAddress == _msgSender()); // ensure the request was not accepted yet require(order.accepterAddress == address(0)); @@ -99,11 +100,11 @@ contract Bridge { function liquidate(uint256 amountZbtc) public { // burn the zbtc erc20 - wrapped.sudoBurnFrom(msg.sender, amountZbtc); + wrapped.sudoBurnFrom(_msgSender(), amountZbtc); // transfer eth to caller uint256 collateral = btcToCol(amountZbtc); - address payable callerAddress = payable(msg.sender); + address payable callerAddress = payable(_msgSender()); callerAddress.transfer(collateral); } @@ -111,8 +112,8 @@ contract Bridge { uint256 totalZbtc = wrapped.totalSupply(); uint256 requiredCol = btcToCol(totalZbtc * collateralThreshold); uint256 colFree = totalCollateral - requiredCol; - uint256 withdrawal = colFree < suppliedCollateral[msg.sender] ? colFree : suppliedCollateral[msg.sender]; - suppliedCollateral[msg.sender] -= withdrawal; + uint256 withdrawal = colFree < suppliedCollateral[_msgSender()] ? colFree : suppliedCollateral[_msgSender()]; + suppliedCollateral[_msgSender()] -= withdrawal; totalCollateral -= withdrawal; } diff --git a/src/swap/Btc_Marketplace.sol b/src/swap/Btc_Marketplace.sol index b4ed8dc3..08e82b77 100644 --- a/src/swap/Btc_Marketplace.sol +++ b/src/swap/Btc_Marketplace.sol @@ -4,12 +4,13 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {BTCUtils} from "@bob-collective/bitcoin-spv/BTCUtils.sol"; import {BitcoinTx} from "../bridge/BitcoinTx.sol"; +import {ERC2771Recipient} from "@opengsn/packages/contracts/src/ERC2771Recipient.sol"; import {IRelay} from "../bridge/IRelay.sol"; import {BridgeState} from "../bridge/BridgeState.sol"; using SafeERC20 for IERC20; -contract BtcMarketPlace { +contract BtcMarketPlace is ERC2771Recipient { using BitcoinTx for BridgeState.Storage; mapping(uint256 => BtcBuyOrder) public btcBuyOrders; @@ -22,7 +23,8 @@ contract BtcMarketPlace { BridgeState.Storage internal relay; - constructor(IRelay _relay) { + constructor(IRelay _relay, address erc2771Forwarder) { + _setTrustedForwarder(erc2771Forwarder); relay.relay = _relay; relay.txProofDifficultyFactor = 1; // will make this an arg later on } @@ -111,7 +113,7 @@ contract BtcMarketPlace { amountBtc: amountBtc, askingToken: buyingToken, askingAmount: buyAmount, - requester: msg.sender + requester: _msgSender() }); emit placeBtcSellOrderEvent(id, amountBtc, buyingToken, buyAmount); @@ -133,7 +135,7 @@ contract BtcMarketPlace { order.amountBtc -= amountBtc; // "lock" selling token by transferring to contract - IERC20(order.askingToken).safeTransferFrom(msg.sender, address(this), sellAmount); + IERC20(order.askingToken).safeTransferFrom(_msgSender(), address(this), sellAmount); uint256 acceptId = nextOrderId++; acceptedBtcSellOrders[acceptId] = AcceptedBtcSellOrder({ @@ -143,7 +145,7 @@ contract BtcMarketPlace { ercToken: order.askingToken, ercAmount: sellAmount, requester: order.requester, - accepter: msg.sender, + accepter: _msgSender(), acceptTime: block.timestamp }); @@ -156,7 +158,8 @@ contract BtcMarketPlace { public { AcceptedBtcSellOrder storage accept = acceptedBtcSellOrders[id]; - require(accept.requester == msg.sender); + + require(accept.requester == _msgSender()); relay.validateProof(transaction, proof); @@ -171,7 +174,7 @@ contract BtcMarketPlace { function withdrawBtcSellOrder(uint256 id) public { BtcSellOrder storage order = btcSellOrders[id]; - require(order.requester == msg.sender); + require(order.requester == _msgSender()); delete btcSellOrders[id]; @@ -183,9 +186,9 @@ contract BtcMarketPlace { require(block.timestamp > order.acceptTime + REQUEST_EXPIRATION_SECONDS); - require(order.accepter == msg.sender); + require(order.accepter == _msgSender()); // give accepter its tokens back - IERC20(order.ercToken).safeTransfer(msg.sender, order.ercAmount); + IERC20(order.ercToken).safeTransfer(_msgSender(), order.ercAmount); delete acceptedBtcSellOrders[id]; @@ -201,7 +204,7 @@ contract BtcMarketPlace { require(sellingToken != address(0x0)); // "lock" selling token by transferring to contract - IERC20(sellingToken).safeTransferFrom(msg.sender, address(this), saleAmount); + IERC20(sellingToken).safeTransferFrom(_msgSender(), address(this), saleAmount); uint256 id = nextOrderId++; btcBuyOrders[id] = BtcBuyOrder({ @@ -209,7 +212,7 @@ contract BtcMarketPlace { bitcoinAddress: bitcoinAddress, offeringToken: sellingToken, offeringAmount: saleAmount, - requester: msg.sender + requester: _msgSender() }); emit placeBtcBuyOrderEvent(amountBtc, bitcoinAddress, sellingToken, saleAmount); @@ -236,7 +239,7 @@ contract BtcMarketPlace { ercToken: order.offeringToken, ercAmount: buyAmount, requester: order.requester, - accepter: msg.sender, + accepter: _msgSender(), acceptTime: block.timestamp }); @@ -252,7 +255,7 @@ contract BtcMarketPlace { function proofBtcBuyOrder(uint256 id, BitcoinTx.Info calldata transaction, BitcoinTx.Proof calldata proof) public { AcceptedBtcBuyOrder storage accept = acceptedBtcBuyOrders[id]; - require(accept.accepter == msg.sender); + require(accept.accepter == _msgSender()); relay.validateProof(transaction, proof); @@ -269,10 +272,10 @@ contract BtcMarketPlace { function withdrawBtcBuyOrder(uint256 id) public { BtcBuyOrder storage order = btcBuyOrders[id]; - require(order.requester == msg.sender); + require(order.requester == _msgSender()); // release the locked erc20s - IERC20(order.offeringToken).safeTransfer(msg.sender, order.offeringAmount); + IERC20(order.offeringToken).safeTransfer(_msgSender(), order.offeringAmount); delete btcBuyOrders[id]; @@ -282,12 +285,12 @@ contract BtcMarketPlace { function cancelAcceptedBtcBuyOrder(uint256 id) public { AcceptedBtcBuyOrder storage accept = acceptedBtcBuyOrders[id]; - require(accept.requester == msg.sender); + require(accept.requester == _msgSender()); require(block.timestamp > accept.acceptTime + REQUEST_EXPIRATION_SECONDS); // release the locked erc20s - IERC20(accept.ercToken).safeTransfer(msg.sender, accept.ercAmount); + IERC20(accept.ercToken).safeTransfer(_msgSender(), accept.ercAmount); // note: we don't make the accepted amount available for new trades but if we want to, // we could implement that diff --git a/src/swap/Faucet.sol b/src/swap/Faucet.sol new file mode 100644 index 00000000..d3fa4a76 --- /dev/null +++ b/src/swap/Faucet.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.13; + +import {Ownable, Context} from "@openzeppelin/contracts/access/Ownable.sol"; +import {ERC2771Recipient} from "@opengsn/packages/contracts/src/ERC2771Recipient.sol"; + +interface Erc20Mintable { + function decimals() external returns (uint); + + function mint(uint256 amount) external; + + function transfer(address to, uint256 value) external returns (bool); +} + +contract Faucet is Ownable, ERC2771Recipient { + uint nextTokenId; + mapping(uint => address) supportedErc20Addresses; + + function addErc20(address newErc20) public onlyOwner { + supportedErc20Addresses[nextTokenId++] = newErc20; + } + + // Mints 30000 of each erc20 + function mint() public { + for (uint id = 0; id < nextTokenId; id++) { + Erc20Mintable token = Erc20Mintable(supportedErc20Addresses[id]); + uint amount = 30000 * (10 ** token.decimals()); + token.mint(amount); + token.transfer(_msgSender(), amount); + } + } + + function _msgSender() + internal + view + override(Context, ERC2771Recipient) + returns (address sender) + { + sender = ERC2771Recipient._msgSender(); + } + + function _msgData() + internal + view + override(Context, ERC2771Recipient) + returns (bytes calldata) + { + return ERC2771Recipient._msgData(); + } +} diff --git a/src/swap/Marketplace.sol b/src/swap/Marketplace.sol index 43f24584..af9db471 100644 --- a/src/swap/Marketplace.sol +++ b/src/swap/Marketplace.sol @@ -2,10 +2,11 @@ pragma solidity ^0.8.13; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {ERC2771Recipient} from "@opengsn/packages/contracts/src/ERC2771Recipient.sol"; using SafeERC20 for IERC20; -contract MarketPlace { +contract MarketPlace is ERC2771Recipient { mapping(uint256 => Order) public ercErcOrders; // cant have struct as key, nor tupple event placeOrder( @@ -29,6 +30,10 @@ contract MarketPlace { address requesterAddress; } + constructor(address erc2771Forwarder) { + _setTrustedForwarder(erc2771Forwarder); + } + function placeErcErcOrder(address sellingToken, uint256 saleAmount, address buyingToken, uint256 buyAmount) public { @@ -36,7 +41,7 @@ contract MarketPlace { require(buyingToken != address(0x0)); // "lock" selling token by transferring to contract - IERC20(sellingToken).safeTransferFrom(msg.sender, address(this), saleAmount); + IERC20(sellingToken).safeTransferFrom(_msgSender(), address(this), saleAmount); uint256 id = nextOrderId++; Order memory order = Order({ @@ -44,7 +49,7 @@ contract MarketPlace { offeringToken: sellingToken, askingAmount: buyAmount, askingToken: buyingToken, - requesterAddress: msg.sender + requesterAddress: _msgSender() }); ercErcOrders[id] = order; @@ -71,17 +76,17 @@ contract MarketPlace { ercErcOrders[id].offeringAmount -= buyAmount; ercErcOrders[id].askingAmount -= saleAmount; - IERC20(order.askingToken).safeTransferFrom(msg.sender, order.requesterAddress, saleAmount); - IERC20(order.offeringToken).safeTransfer(msg.sender, buyAmount); + IERC20(order.askingToken).safeTransferFrom(_msgSender(), order.requesterAddress, saleAmount); + IERC20(order.offeringToken).safeTransfer(_msgSender(), buyAmount); - emit acceptOrder(id, msg.sender, buyAmount, saleAmount); + emit acceptOrder(id, _msgSender(), buyAmount, saleAmount); } function withdrawErcErcOrder(uint256 id) public { Order memory order = ercErcOrders[id]; - require(order.requesterAddress == msg.sender); + require(order.requesterAddress == _msgSender()); - IERC20(order.offeringToken).safeTransfer(msg.sender, order.offeringAmount); + IERC20(order.offeringToken).safeTransfer(_msgSender(), order.offeringAmount); delete ercErcOrders[id]; diff --git a/test/OnboardingPaymaster.t.sol b/test/OnboardingPaymaster.t.sol new file mode 100644 index 00000000..5b35ed3f --- /dev/null +++ b/test/OnboardingPaymaster.t.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +using stdStorage for StdStorage; + +import {stdStorage, StdStorage, Test, console} from "forge-std/Test.sol"; +import {Utilities} from "./swap/Utilities.sol"; +import {OnboardingPaymaster} from "../src/paymasters/OnboardingPaymaster.sol"; +// import {} +import "lib/gsn/packages/contracts/src/BasePaymaster.sol"; + + +contract OnboardingPaymasterTest is OnboardingPaymaster, Test { + Utilities internal utils; + address payable[] internal users; + address internal alice; + address internal bob; + + constructor() OnboardingPaymaster(address(0x00), 0) {} + + function setUp() public { + utils = new Utilities(); + users = utils.createUsers(5); + + alice = users[0]; + vm.label(alice, "Alice"); + bob = users[1]; + vm.label(bob, "Bob"); + } + + function testDecodeSelector() public { + bytes memory rawBytes = hex"1234567890"; + this.getSelector(rawBytes); + } +} \ No newline at end of file diff --git a/test/OracleTokenPaymaster.t.sol b/test/OracleTokenPaymaster.t.sol new file mode 100644 index 00000000..71a8b06e --- /dev/null +++ b/test/OracleTokenPaymaster.t.sol @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; +// +// using stdStorage for StdStorage; +// +// import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; +// import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +// import {stdStorage, StdStorage, Test, console} from "forge-std/Test.sol"; +// import {Utilities} from "./swap/Utilities.sol"; +// import {OracleTokenPaymaster} from "../src/OracleTokenPaymaster.sol"; +// // import {} +// import "lib/gsn/packages/contracts/src/BasePaymaster.sol"; +// import {Oracle} from "../src/Oracle.sol"; +// +// contract ArbitaryErc20 is ERC20, Ownable { +// constructor( +// string memory name_, +// string memory symbol_ +// ) ERC20(name_, symbol_) {} +// +// function sudoMint(address to, uint256 amount) public onlyOwner { +// _mint(to, amount); +// } +// } +// +// contract OracleTokenPaymasterTest is OracleTokenPaymaster, Test { +// Utilities internal utils; +// address payable[] internal users; +// address internal alice; +// address internal bob; +// +// ArbitaryErc20 token1; +// +// constructor() OracleTokenPaymaster(new Oracle()) {} +// +// function setUp() public { +// utils = new Utilities(); +// users = utils.createUsers(5); +// +// alice = users[0]; +// vm.label(alice, "Alice"); +// bob = users[1]; +// vm.label(bob, "Bob"); +// +// token1 = new ArbitaryErc20("Some token", "TKN"); +// } +// +// function testQ() public { +// token1.sudoMint(alice, 100); +// vm.startPrank(alice); +// token1.approve(address(this), 100); +// vm.stopPrank(); +// +// IForwarder.ForwardRequest memory forwardRequest = IForwarder.ForwardRequest({ +// from: address(0x00), +// to: alice, +// value: 0, +// gas: 0, +// nonce: 0, +// data: hex"", +// validUntilTime: 0 +// }); +// +// GsnTypes.RelayData memory relayData = GsnTypes.RelayData({ +// maxFeePerGas: 0, +// maxPriorityFeePerGas: 0, +// transactionCalldataGasUsed: 0, +// relayWorker: address(0x00), +// paymaster: address(0x00), +// forwarder: address(0x00), +// paymasterData: abi.encode(token1), +// clientId: 0 +// }); +// +// GsnTypes.RelayRequest memory relayRequest = GsnTypes.RelayRequest({ +// request: forwardRequest, +// relayData: relayData +// }); +// +// bytes memory signature = hex""; +// bytes memory approvalData = hex""; +// uint maxPossibleGas = 10000; +// // this.__preRelayedCall( +// // relayRequest, +// // signature, +// // approvalData, +// // maxPossibleGas +// // ); +// +// // address tokenAddress = abi.decode(abi.encode(address(0x4Cb8b11EfF23E56A4546787b418102eD4180B2e8)), (address)); +// // assertEq(hex"00", abi.encode(address(0x4Cb8b11EfF23E56A4546787b418102eD4180B2e8))); +// address tokenAddress = abi.decode(hex"0000000000000000000000004cb8b11eff23e56a4546787b418102ed4180b2e8", (address)); +// +// // IERC20 a = this._getToken(hex"4Cb8b11EfF23E56A4546787b418102eD4180B2e8"); +// // IERC20 b = IERC20(address(0x00)); +// // +// // assertEq(address(a), address(b)); +// } +// // function testW() public { +// // bytes memory b = abi.encode(token1); +// // address a = abi.decode(b, (address)); +// // } +// } diff --git a/test/swap/Marketplace.t.sol b/test/swap/Marketplace.t.sol index 1056a0e3..be8b61cc 100644 --- a/test/swap/Marketplace.t.sol +++ b/test/swap/Marketplace.t.sol @@ -26,7 +26,7 @@ contract MarketPlaceTest is MarketPlace, Test { ArbitaryErc20 token1; ArbitaryErc20 token2; - constructor() MarketPlace() {} + constructor() MarketPlace(address(0x00)) {} function setUp() public { utils = new Utilities(); From dfa046312c539840272d2431099a1f6045aab36b Mon Sep 17 00:00:00 2001 From: Peter Date: Thu, 7 Dec 2023 13:49:38 +0100 Subject: [PATCH 008/137] fix: return ids for open orders --- src/swap/Marketplace.sol | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/swap/Marketplace.sol b/src/swap/Marketplace.sol index af9db471..6619398d 100644 --- a/src/swap/Marketplace.sol +++ b/src/swap/Marketplace.sol @@ -93,7 +93,7 @@ contract MarketPlace is ERC2771Recipient { emit withdrawOrder(id); } - function getOpenOrders() external view returns (Order[] memory) { + function getOpenOrders() external view returns (Order[] memory, uint256[] memory) { uint256 numOpenOrders = 0; for (uint256 i = 0; i < nextOrderId; i++) { if (ercErcOrders[i].offeringAmount > 0) { @@ -101,13 +101,15 @@ contract MarketPlace is ERC2771Recipient { } } Order[] memory ret = new Order[](numOpenOrders); + uint256[] memory identifiers = new uint256[](numOpenOrders); uint256 numPushed = 0; for (uint256 i = 0; i < nextOrderId; i++) { if (ercErcOrders[i].offeringAmount > 0) { ret[numPushed] = ercErcOrders[i]; + identifiers[numPushed] = i; numPushed++; } } - return ret; + return (ret, identifiers); } } From 5955c0400c55b4d0880d76bf352cf1a19484dbf0 Mon Sep 17 00:00:00 2001 From: Sander Bosma Date: Tue, 12 Dec 2023 12:39:36 +0100 Subject: [PATCH 009/137] fix: fix broken rebase --- script/Marketplace.sol | 4 ++-- src/faucet/Erc20Minter.sol | 2 +- test/swap/Btc_Marketplace.t.sol | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/script/Marketplace.sol b/script/Marketplace.sol index a60b1249..dee04654 100644 --- a/script/Marketplace.sol +++ b/script/Marketplace.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.13; import {Script, console2} from "forge-std/Script.sol"; import {BtcMarketPlace} from "../src/swap/Btc_Marketplace.sol"; import {MarketPlace} from "../src/swap/Marketplace.sol"; -import {DummyRelay} from "../src/relay/DummyRelay.sol"; +import {TestLightRelay} from "../src/relay/TestLightRelay.sol"; contract MarketplaceScript is Script { function setUp() public {} @@ -15,7 +15,7 @@ contract MarketplaceScript is Script { address forwarder = vm.envAddress("FORWARDER_ADDRESS"); vm.startBroadcast(deployerPrivateKey); - BtcMarketPlace btcMarketplace = new BtcMarketPlace(new DummyRelay(), forwarder); + BtcMarketPlace btcMarketplace = new BtcMarketPlace(new TestLightRelay(), forwarder); MarketPlace marketplace = new MarketPlace(forwarder); vm.stopBroadcast(); diff --git a/src/faucet/Erc20Minter.sol b/src/faucet/Erc20Minter.sol index 40566617..a6fe3175 100644 --- a/src/faucet/Erc20Minter.sol +++ b/src/faucet/Erc20Minter.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.18; +pragma solidity ^0.8.13; import "@openzeppelin/contracts/access/Ownable.sol"; diff --git a/test/swap/Btc_Marketplace.t.sol b/test/swap/Btc_Marketplace.t.sol index 09763223..5cc3308f 100644 --- a/test/swap/Btc_Marketplace.t.sol +++ b/test/swap/Btc_Marketplace.t.sol @@ -28,7 +28,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { ArbitaryErc20 token1; TestLightRelay testLightRelay; - constructor() BtcMarketPlace(testLightRelay) {} + constructor() BtcMarketPlace(testLightRelay, address(0x00)) {} function setUp() public { utils = new Utilities(); From cab049c1223e6f77d587a58d64ff1afd257be13e Mon Sep 17 00:00:00 2001 From: Sander Bosma Date: Tue, 12 Dec 2023 13:50:40 +0100 Subject: [PATCH 010/137] chore: forge fmt --- script/AATokenPaymaster.sol | 19 +-- script/Gsn.sol | 3 +- script/Marketplace.sol | 1 - script/OnboardingPaymaster.sol | 3 +- script/OracleTokenPaymaster.sol | 7 - script/TestingWbtc.sol | 3 +- src/TestingErc20.sol | 16 +- .../AccountAbstraction/AATokenPaymaster.sol | 97 +++-------- src/paymasters/OnboardingPaymaster.sol | 29 +--- src/paymasters/Oracle.sol | 17 +- src/paymasters/OracleTokenPaymaster.sol | 150 ++++-------------- src/swap/Faucet.sol | 24 +-- test/OnboardingPaymaster.t.sol | 3 +- test/OracleTokenPaymaster.t.sol | 38 ++--- 14 files changed, 99 insertions(+), 311 deletions(-) diff --git a/script/AATokenPaymaster.sol b/script/AATokenPaymaster.sol index 4807c748..82ee3541 100644 --- a/script/AATokenPaymaster.sol +++ b/script/AATokenPaymaster.sol @@ -5,18 +5,15 @@ import {Script, console2} from "forge-std/Script.sol"; import {PimlicoERC20Paymaster, IERC20, IEntryPoint} from "../src/paymasters/AccountAbstraction/AATokenPaymaster.sol"; import {DummyOracle} from "../src/paymasters/Oracle.sol"; - contract AATokenPaymasterScript is Script { function setUp() public {} function run() public { uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); IERC20 token = IERC20(vm.envAddress("ERC_ADDRESS")); - int tokenPrice = vm.envInt("ERC_PRICE"); + int256 tokenPrice = vm.envInt("ERC_PRICE"); uint8 tokenDecimals = uint8(vm.envUint("ERC_DECIMALS")); - IEntryPoint entrypoint = IEntryPoint( - vm.envAddress("ENTRYPOINT_ADDRESS") - ); + IEntryPoint entrypoint = IEntryPoint(vm.envAddress("ENTRYPOINT_ADDRESS")); address owner = vm.envAddress("OWNER_ADDRESS"); vm.startBroadcast(deployerPrivateKey); @@ -25,14 +22,10 @@ contract AATokenPaymasterScript is Script { ethOracle.setPrice(189100000000); // 1 eth = 1891usd DummyOracle tokenOracle = new DummyOracle(); tokenOracle.setPrice(tokenPrice); // set usd price * 10^8 - PimlicoERC20Paymaster paymaster = new PimlicoERC20Paymaster( - token, - entrypoint, - tokenOracle, - ethOracle, - owner, - tokenDecimals - ); + + PimlicoERC20Paymaster paymaster = + new PimlicoERC20Paymaster(token, entrypoint, tokenOracle, ethOracle, owner, tokenDecimals); + paymaster.updatePrice(); paymaster.addStake{value: 0.1 ether}(1); entrypoint.depositTo{value: 1 ether}(address(paymaster)); diff --git a/script/Gsn.sol b/script/Gsn.sol index a2981ada..35b6b083 100644 --- a/script/Gsn.sol +++ b/script/Gsn.sol @@ -11,11 +11,10 @@ contract TestingWbtcScript is Script { function setUp() public {} function run() public { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); address forwarder = vm.envAddress("FORWARDER_ADDRESS"); - int tokenPrice = vm.envInt("ERC_PRICE"); + int256 tokenPrice = vm.envInt("ERC_PRICE"); // address payable mtPaymaster = payable(vm.envAddress("MT_PAYMASTER_ADDRESS")); vm.startBroadcast(deployerPrivateKey); diff --git a/script/Marketplace.sol b/script/Marketplace.sol index dee04654..6cc8ca2d 100644 --- a/script/Marketplace.sol +++ b/script/Marketplace.sol @@ -10,7 +10,6 @@ contract MarketplaceScript is Script { function setUp() public {} function run() public { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); address forwarder = vm.envAddress("FORWARDER_ADDRESS"); diff --git a/script/OnboardingPaymaster.sol b/script/OnboardingPaymaster.sol index af75ca06..871c9d87 100644 --- a/script/OnboardingPaymaster.sol +++ b/script/OnboardingPaymaster.sol @@ -11,12 +11,11 @@ contract OnboardingPaymasterScript is Script { function setUp() public {} function run() public { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); IRelayHub relay = IRelayHub(vm.envAddress("RELAY_ADDRESS")); // bytes memory b = vm.envBytes("WHITELIST_SELECTOR"); // (uint32 whitelistSelector) = abi.decode(b, (uint32)); - uint tmp = vm.envUint("WHITELIST_SELECTOR"); + uint256 tmp = vm.envUint("WHITELIST_SELECTOR"); address forwarder = vm.envAddress("FORWARDER_ADDRESS"); uint32 whitelistSelector = uint32(tmp); address whitelistAddress = vm.envAddress("WHITELIST_ADDRESS"); diff --git a/script/OracleTokenPaymaster.sol b/script/OracleTokenPaymaster.sol index 7eeafa5b..cbe00fda 100644 --- a/script/OracleTokenPaymaster.sol +++ b/script/OracleTokenPaymaster.sol @@ -12,7 +12,6 @@ contract OracleTokenPaymasterScript is Script { function setUp() public {} function run() public { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); IRelayHub relay = IRelayHub(vm.envAddress("RELAY_ADDRESS")); address forwarder = vm.envAddress("FORWARDER_ADDRESS"); @@ -32,12 +31,6 @@ contract OracleTokenPaymasterScript is Script { paymaster.addOracle(token, token.decimals(), oracle); -// cast send 0x3D7bA9A1c001b33Abd97648948A751401A546D0F "depositFor(address)" --rpc-url "https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz" --private-key b9176fa68b7c590eba66b7d1894a78fad479d6259e9a80d93b9871c232132c01 0x57249a410CD4730769B0D50e68564DFed5EaC80E --value 1ether && -// cast send 0x57249a410CD4730769B0D50e68564DFed5EaC80E "setRelayHub(address)" --rpc-url "https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz" --private-key b9176fa68b7c590eba66b7d1894a78fad479d6259e9a80d93b9871c232132c01 0x3D7bA9A1c001b33Abd97648948A751401A546D0F && -// cast send 0x57249a410CD4730769B0D50e68564DFed5EaC80E "setTrustedForwarder(address)" --rpc-url "https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz" --private-key b9176fa68b7c590eba66b7d1894a78fad479d6259e9a80d93b9871c232132c01 0x06F798121007F32d67AA43194E58d3e0e3689392 && -// cast send 0xFeCC3F37038999Ede8e58A3c9E5B0E9a16e7d5bC "approve(address,uint)" --rpc-url "https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz" --private-key b9176fa68b7c590eba66b7d1894a78fad479d6259e9a80d93b9871c232132c01 0x57249a410CD4730769B0D50e68564DFed5EaC80E 1ether - - vm.stopBroadcast(); } } diff --git a/script/TestingWbtc.sol b/script/TestingWbtc.sol index 1c9ce8d9..84c78e06 100644 --- a/script/TestingWbtc.sol +++ b/script/TestingWbtc.sol @@ -12,10 +12,9 @@ contract TestingWbtcScript is Script { function setUp() public {} function run() public { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); address forwarder = vm.envAddress("FORWARDER_ADDRESS"); - int tokenPrice = vm.envInt("ERC_PRICE"); + int256 tokenPrice = vm.envInt("ERC_PRICE"); // address payable mtPaymaster = payable(vm.envAddress("MT_PAYMASTER_ADDRESS")); vm.startBroadcast(deployerPrivateKey); diff --git a/src/TestingErc20.sol b/src/TestingErc20.sol index edaa94ea..4e4cae59 100644 --- a/src/TestingErc20.sol +++ b/src/TestingErc20.sol @@ -23,21 +23,11 @@ contract TestingErc20 is ERC20, ERC20Burnable, Ownable, ERC2771Recipient { _mint(_msgSender(), amount); } - function _msgSender() - internal - view - override(Context, ERC2771Recipient) - returns (address sender) - { + function _msgSender() internal view override(Context, ERC2771Recipient) returns (address sender) { sender = ERC2771Recipient._msgSender(); } - function _msgData() - internal - view - override(Context, ERC2771Recipient) - returns (bytes calldata) - { + function _msgData() internal view override(Context, ERC2771Recipient) returns (bytes calldata) { return ERC2771Recipient._msgData(); } @@ -45,4 +35,4 @@ contract TestingErc20 is ERC20, ERC20Burnable, Ownable, ERC2771Recipient { function decimals() public view virtual override returns (uint8) { return _numDecimals; } -} \ No newline at end of file +} diff --git a/src/paymasters/AccountAbstraction/AATokenPaymaster.sol b/src/paymasters/AccountAbstraction/AATokenPaymaster.sol index 77722e77..75f2db2c 100644 --- a/src/paymasters/AccountAbstraction/AATokenPaymaster.sol +++ b/src/paymasters/AccountAbstraction/AATokenPaymaster.sol @@ -15,8 +15,6 @@ import {IOracle} from "../Oracle.sol"; // import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; // import "./SafeTransferLib.sol"; - - // using SafeERC20 for IERC20; /// @title PimlicoERC20Paymaster @@ -43,11 +41,7 @@ contract PimlicoERC20Paymaster is BasePaymaster { event ConfigUpdated(uint32 priceMarkup, uint32 updateThreshold); - event UserOperationSponsored( - address indexed user, - uint256 actualTokenNeeded, - uint256 actualGasCost - ); + event UserOperationSponsored(address indexed user, uint256 actualTokenNeeded, uint256 actualGasCost); /// @notice Initializes the PimlicoERC20Paymaster contract with the given parameters. /// @param _token The ERC20 token used for transaction fee payments. @@ -70,29 +64,17 @@ contract PimlicoERC20Paymaster is BasePaymaster { priceUpdateThreshold = 25e3; // 2.5% 1e6 = 100% transferOwnership(_owner); tokenDecimals = 10 ** _tokenDecimals; - require( - _tokenOracle.decimals() == 8, - "PP-ERC20 : token oracle decimals must be 8" - ); - require( - _nativeAssetOracle.decimals() == 8, - "PP-ERC20 : native asset oracle decimals must be 8" - ); + require(_tokenOracle.decimals() == 8, "PP-ERC20 : token oracle decimals must be 8"); + require(_nativeAssetOracle.decimals() == 8, "PP-ERC20 : native asset oracle decimals must be 8"); } /// @notice Updates the price markup and price update threshold configurations. /// @param _priceMarkup The new price markup percentage (1e6 = 100%). /// @param _updateThreshold The new price update threshold percentage (1e6 = 100%). - function updateConfig( - uint32 _priceMarkup, - uint32 _updateThreshold - ) external onlyOwner { + function updateConfig(uint32 _priceMarkup, uint32 _updateThreshold) external onlyOwner { require(_priceMarkup <= 120e4, "PP-ERC20 : price markup too high"); require(_priceMarkup >= 1e6, "PP-ERC20 : price markeup too low"); - require( - _updateThreshold <= 1e6, - "PP-ERC20 : update threshold too high" - ); + require(_updateThreshold <= 1e6, "PP-ERC20 : update threshold too high"); priceMarkup = _priceMarkup; priceUpdateThreshold = _updateThreshold; emit ConfigUpdated(_priceMarkup, _updateThreshold); @@ -110,9 +92,7 @@ contract PimlicoERC20Paymaster is BasePaymaster { // This function updates the cached ERC20/ETH price ratio uint192 tokenPrice = fetchPrice(tokenOracle); uint192 nativeAssetPrice = fetchPrice(nativeAssetOracle); - previousPrice = - (nativeAssetPrice * uint192(tokenDecimals)) / - tokenPrice; + previousPrice = (nativeAssetPrice * uint192(tokenDecimals)) / tokenPrice; } /// @notice Validates a paymaster user operation and calculates the required token amount for the transaction. @@ -120,11 +100,7 @@ contract PimlicoERC20Paymaster is BasePaymaster { /// @param requiredPreFund The amount of tokens required for pre-funding. /// @return context The context containing the token amount and user sender address (if applicable). /// @return validationResult A uint256 value indicating the result of the validation (always 0 in this implementation). - function _validatePaymasterUserOp( - UserOperation calldata userOp, - bytes32, - uint256 requiredPreFund - ) + function _validatePaymasterUserOp(UserOperation calldata userOp, bytes32, uint256 requiredPreFund) internal override returns (bytes memory context, uint256 validationResult) @@ -135,22 +111,16 @@ contract PimlicoERC20Paymaster is BasePaymaster { uint256 length = userOp.paymasterAndData.length - 20; // 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf is the mask for the last 6 bits 011111 which mean length should be 100000(32) || 000000(0) require( - length & - 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf == - 0, + length & 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf == 0, "PP-ERC20 : invalid data length" ); // NOTE: we assumed that nativeAsset's decimals is 18, if there is any nativeAsset with different decimals, need to change the 1e18 to the correct decimals - uint256 tokenAmount = ((requiredPreFund + - (REFUND_POSTOP_COST) * - userOp.maxFeePerGas) * - priceMarkup * - cachedPrice) / (1e18 * priceDenominator); + uint256 tokenAmount = ( + (requiredPreFund + (REFUND_POSTOP_COST) * userOp.maxFeePerGas) * priceMarkup * cachedPrice + ) / (1e18 * priceDenominator); if (length == 32) { require( - tokenAmount <= - uint256(bytes32(userOp.paymasterAndData[20:52])), - "PP-ERC20 : token amount too high" + tokenAmount <= uint256(bytes32(userOp.paymasterAndData[20:52])), "PP-ERC20 : token amount too high" ); } token.transferFrom(userOp.sender, address(this), tokenAmount); @@ -165,11 +135,7 @@ contract PimlicoERC20Paymaster is BasePaymaster { /// @param mode The post-operation mode (either successful or reverted). /// @param context The context containing the token amount and user sender address. /// @param actualGasCost The actual gas cost of the transaction. - function _postOp( - PostOpMode mode, - bytes calldata context, - uint256 actualGasCost - ) internal override { + function _postOp(PostOpMode mode, bytes calldata context, uint256 actualGasCost) internal override { if (mode == PostOpMode.postOpReverted) { return; // Do nothing here to not revert the whole bundle and harm reputation } @@ -180,34 +146,22 @@ contract PimlicoERC20Paymaster is BasePaymaster { uint192 price = (nativeAsset * uint192(tokenDecimals)) / tokenPrice; uint256 cachedUpdateThreshold = priceUpdateThreshold; if ( - (uint256(price) * priceDenominator) / cachedPrice > - priceDenominator + cachedUpdateThreshold || - (uint256(price) * priceDenominator) / cachedPrice < - priceDenominator - cachedUpdateThreshold + (uint256(price) * priceDenominator) / cachedPrice > priceDenominator + cachedUpdateThreshold + || (uint256(price) * priceDenominator) / cachedPrice < priceDenominator - cachedUpdateThreshold ) { previousPrice = uint192(int192(price)); cachedPrice = uint192(int192(price)); } // Refund tokens based on actual gas cost // NOTE: we assumed that nativeAsset's decimals is 18, if there is any nativeAsset with different decimals, need to change the 1e18 to the correct decimals - uint256 actualTokenNeeded = ((actualGasCost + - REFUND_POSTOP_COST * - tx.gasprice) * - priceMarkup * - cachedPrice) / (1e18 * priceDenominator); // We use tx.gasprice here since we don't know the actual gas price used by the user + uint256 actualTokenNeeded = ((actualGasCost + REFUND_POSTOP_COST * tx.gasprice) * priceMarkup * cachedPrice) + / (1e18 * priceDenominator); // We use tx.gasprice here since we don't know the actual gas price used by the user if (uint256(bytes32(context[0:32])) > actualTokenNeeded) { // If the initially provided token amount is greater than the actual amount needed, refund the difference - token.transfer( - address(bytes20(context[32:52])), - uint256(bytes32(context[0:32])) - actualTokenNeeded - ); + token.transfer(address(bytes20(context[32:52])), uint256(bytes32(context[0:32])) - actualTokenNeeded); } // If the token amount is not greater than the actual amount needed, no refund occurs - emit UserOperationSponsored( - address(bytes20(context[32:52])), - actualTokenNeeded, - actualGasCost - ); + emit UserOperationSponsored(address(bytes20(context[32:52])), actualTokenNeeded, actualGasCost); } } @@ -216,19 +170,10 @@ contract PimlicoERC20Paymaster is BasePaymaster { /// @param _oracle The Oracle contract to fetch the price from. /// @return price The latest price fetched from the Oracle. function fetchPrice(IOracle _oracle) internal view returns (uint192 price) { - ( - uint80 roundId, - int256 answer, - , - uint256 updatedAt, - uint80 answeredInRound - ) = _oracle.latestRoundData(); + (uint80 roundId, int256 answer,, uint256 updatedAt, uint80 answeredInRound) = _oracle.latestRoundData(); require(answer > 0, "PP-ERC20 : Chainlink price <= 0"); // 2 days old price is considered stale since the price is updated every 24 hours - require( - updatedAt >= block.timestamp - 60 * 60 * 24 * 2, - "PP-ERC20 : Incomplete round" - ); + require(updatedAt >= block.timestamp - 60 * 60 * 24 * 2, "PP-ERC20 : Incomplete round"); require(answeredInRound >= roundId, "PP-ERC20 : Stale price"); price = uint192(int192(answer)); } diff --git a/src/paymasters/OnboardingPaymaster.sol b/src/paymasters/OnboardingPaymaster.sol index f170f104..2c85dd61 100644 --- a/src/paymasters/OnboardingPaymaster.sol +++ b/src/paymasters/OnboardingPaymaster.sol @@ -21,13 +21,7 @@ contract OnboardingPaymaster is BasePaymaster { event PreRelay(address indexed sender); event PostRelay(address indexed sender); - function versionPaymaster() - external - view - virtual - override - returns (string memory) - { + function versionPaymaster() external view virtual override returns (string memory) { return "3.0.0-beta.10+opengsn.oracle.token.ipaymaster"; } @@ -35,13 +29,8 @@ contract OnboardingPaymaster is BasePaymaster { gasUsedByPost = _gasUsedByPost; } - function _getPaymasterData( - bytes memory paymasterData - ) private returns (IERC20 token, uint maxTokens) { - (address tokenAddress, uint _maxTokens) = abi.decode( - paymasterData, - (address, uint) - ); + function _getPaymasterData(bytes memory paymasterData) private returns (IERC20 token, uint256 maxTokens) { + (address tokenAddress, uint256 _maxTokens) = abi.decode(paymasterData, (address, uint256)); maxTokens = _maxTokens; token = IERC20(tokenAddress); @@ -57,16 +46,8 @@ contract OnboardingPaymaster is BasePaymaster { bytes calldata signature, bytes calldata approvalData, uint256 maxPossibleGas - ) - internal - virtual - override - returns (bytes memory context, bool revertOnRecipientRevert) - { - require( - relayRequest.request.to == whitelistedContract, - "Recipient is not whitelisted" - ); + ) internal virtual override returns (bytes memory context, bool revertOnRecipientRevert) { + require(relayRequest.request.to == whitelistedContract, "Recipient is not whitelisted"); uint32 selector = getSelector(relayRequest.request.data); diff --git a/src/paymasters/Oracle.sol b/src/paymasters/Oracle.sol index 363b49c3..cb591fc0 100644 --- a/src/paymasters/Oracle.sol +++ b/src/paymasters/Oracle.sol @@ -3,20 +3,13 @@ pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; - interface IOracle { function decimals() external view returns (uint8); function latestRoundData() external view - returns ( - uint80 roundId, - int256 answer, - uint256 startedAt, - uint256 updatedAt, - uint80 answeredInRound - ); + returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound); } contract DummyOracle is IOracle { @@ -29,13 +22,7 @@ contract DummyOracle is IOracle { function latestRoundData() external view - returns ( - uint80 roundId, - int256 answer, - uint256 startedAt, - uint256 updatedAt, - uint80 answeredInRound - ) + returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { roundId = 0; answer = price; diff --git a/src/paymasters/OracleTokenPaymaster.sol b/src/paymasters/OracleTokenPaymaster.sol index 6bcd976c..a355d9c8 100644 --- a/src/paymasters/OracleTokenPaymaster.sol +++ b/src/paymasters/OracleTokenPaymaster.sol @@ -27,85 +27,47 @@ contract OracleTokenPaymaster is BasePaymaster { uint256 public gasUsedByPost; struct TokenDetails { - uint div; // the scaling factor of the token (NOT oracle). Usually 1e18 + uint256 div; // the scaling factor of the token (NOT oracle). Usually 1e18 IOracle oracle; } - event PreRelayPayment( - uint ethAmount, - IERC20 token, - uint tokenAmount, - address indexed payer - ); - event PostRelay( - uint actualEthAmount, - IERC20 token, - uint actualTokenAmount, - address payer - ); + + event PreRelayPayment(uint256 ethAmount, IERC20 token, uint256 tokenAmount, address indexed payer); + event PostRelay(uint256 actualEthAmount, IERC20 token, uint256 actualTokenAmount, address payer); constructor(IOracle _nativeTokenOracle) { require(_nativeTokenOracle.decimals() == 8, "OTP: native token oracle decimals must be 8"); - + nativeTokenOracle = _nativeTokenOracle; } - function versionPaymaster() - external - view - virtual - override - returns (string memory) - { + function versionPaymaster() external view virtual override returns (string memory) { return "3.0.0-beta.10+opengsn.oracle.token.ipaymaster"; } - function addOracle( - IERC20 _token, - uint _decimals, - IOracle _oracle - ) external onlyOwner { + function addOracle(IERC20 _token, uint256 _decimals, IOracle _oracle) external onlyOwner { require(_oracle.decimals() == 8, "OTP: token oracle decimals must be 8"); - tokenOracles[_token] = TokenDetails({ - div: 10 ** _decimals, - oracle: _oracle - }); + tokenOracles[_token] = TokenDetails({div: 10 ** _decimals, oracle: _oracle}); } function fetchPrice(IOracle _oracle) internal view returns (uint192 price) { - ( - uint80 roundId, - int256 answer, - , - uint256 updatedAt, - uint80 answeredInRound - ) = _oracle.latestRoundData(); + (uint80 roundId, int256 answer,, uint256 updatedAt, uint80 answeredInRound) = _oracle.latestRoundData(); require(answer > 0, "OTP : Chainlink price <= 0"); // 2 days old price is considered stale since the price is updated every 24 hours - require( - updatedAt >= block.timestamp - 60 * 60 * 24 * 2, - "OTP : Incomplete round" - ); + require(updatedAt >= block.timestamp - 60 * 60 * 24 * 2, "OTP : Incomplete round"); require(answeredInRound >= roundId, "OTP : Stale price"); price = uint192(int192(answer)); } - function _ethToTokens( - IERC20 token, - uint ethAmount - ) internal view returns (uint) { + function _ethToTokens(IERC20 token, uint256 ethAmount) internal view returns (uint256) { TokenDetails memory _tokenOracle = tokenOracles[token]; - require( - address(_tokenOracle.oracle) != address(0x00), - "OTP: Oracle does not exist" - ); + require(address(_tokenOracle.oracle) != address(0x00), "OTP: Oracle does not exist"); uint192 tokenPrice = fetchPrice(_tokenOracle.oracle); // #decimals: 8 uint192 nativeAssetPrice = fetchPrice(nativeTokenOracle); // #decimals: 8 - uint192 relativePrice = (nativeAssetPrice * uint192(_tokenOracle.div)) / - tokenPrice; // #decimals: _tokenOracle.div + uint192 relativePrice = (nativeAssetPrice * uint192(_tokenOracle.div)) / tokenPrice; // #decimals: _tokenOracle.div // #decimals: 18 + _tokenOracle.div - 18 = _tokenOracle.div - uint tokenAmount = (ethAmount * relativePrice) / 1e18; + uint256 tokenAmount = (ethAmount * relativePrice) / 1e18; return tokenAmount; } @@ -115,54 +77,35 @@ contract OracleTokenPaymaster is BasePaymaster { } function withdrawAll(IERC20 token) external onlyOwner { - uint balance = token.balanceOf(address(this)); + uint256 balance = token.balanceOf(address(this)); token.transfer(msg.sender, balance); } - function getPayer( - GsnTypes.RelayRequest calldata relayRequest - ) public view virtual returns (address) { + function getPayer(GsnTypes.RelayRequest calldata relayRequest) public view virtual returns (address) { (this); return relayRequest.request.from; } - function _getPaymasterData( - bytes memory paymasterData - ) private returns (IERC20 token, uint maxTokens) { - (address tokenAddress, uint _maxTokens) = abi.decode( - paymasterData, - (address, uint) - ); + function _getPaymasterData(bytes memory paymasterData) private returns (IERC20 token, uint256 maxTokens) { + (address tokenAddress, uint256 _maxTokens) = abi.decode(paymasterData, (address, uint256)); maxTokens = _maxTokens; token = IERC20(tokenAddress); } - function _calculatePreCharge( - IERC20 token, - GsnTypes.RelayRequest calldata relayRequest, - uint256 maxPossibleGas - ) + function _calculatePreCharge(IERC20 token, GsnTypes.RelayRequest calldata relayRequest, uint256 maxPossibleGas) internal returns (address payer, uint256 ethPrecharge, uint256 tokenPreCharge) { payer = this.getPayer(relayRequest); - uint256 ethMaxCharge = relayHub.calculateCharge( - maxPossibleGas, - relayRequest.relayData - ); + uint256 ethMaxCharge = relayHub.calculateCharge(maxPossibleGas, relayRequest.relayData); ethMaxCharge += relayRequest.request.value; tokenPreCharge = _ethToTokens(token, ethMaxCharge); ethPrecharge = ethMaxCharge; } - function _verifyPaymasterData( - GsnTypes.RelayRequest calldata relayRequest - ) internal view virtual override { - require( - relayRequest.relayData.paymasterData.length == 64, - "paymasterData: invalid length" - ); + function _verifyPaymasterData(GsnTypes.RelayRequest calldata relayRequest) internal view virtual override { + require(relayRequest.relayData.paymasterData.length == 64, "paymasterData: invalid length"); } function __preRelayedCall( @@ -179,25 +122,12 @@ contract OracleTokenPaymaster is BasePaymaster { bytes calldata signature, bytes calldata approvalData, uint256 maxPossibleGas - ) - internal - virtual - override - returns (bytes memory context, bool revertOnRecipientRevert) - { - (IERC20 token, uint maxTokens) = _getPaymasterData( - relayRequest.relayData.paymasterData - ); - ( - address payer, - uint ethPrecharge, - uint256 tokenPrecharge - ) = _calculatePreCharge(token, relayRequest, maxPossibleGas); - - require( - tokenPrecharge <= maxTokens, - "Tx cost more than the user-supplied limit" - ); + ) internal virtual override returns (bytes memory context, bool revertOnRecipientRevert) { + (IERC20 token, uint256 maxTokens) = _getPaymasterData(relayRequest.relayData.paymasterData); + (address payer, uint256 ethPrecharge, uint256 tokenPrecharge) = + _calculatePreCharge(token, relayRequest, maxPossibleGas); + + require(tokenPrecharge <= maxTokens, "Tx cost more than the user-supplied limit"); token.transferFrom(payer, address(this), tokenPrecharge); @@ -212,18 +142,8 @@ contract OracleTokenPaymaster is BasePaymaster { uint256 gasUseWithoutPost, GsnTypes.RelayData calldata relayData ) internal virtual override { - (address payer, uint256 tokenPrecharge, IERC20 token) = abi.decode( - context, - (address, uint256, IERC20) - ); - _postRelayedCallInternal( - payer, - tokenPrecharge, - 0, - gasUseWithoutPost, - relayData, - token - ); + (address payer, uint256 tokenPrecharge, IERC20 token) = abi.decode(context, (address, uint256, IERC20)); + _postRelayedCallInternal(payer, tokenPrecharge, 0, gasUseWithoutPost, relayData, token); } function _postRelayedCallInternal( @@ -234,14 +154,8 @@ contract OracleTokenPaymaster is BasePaymaster { GsnTypes.RelayData calldata relayData, IERC20 token ) internal { - uint256 ethActualCharge = relayHub.calculateCharge( - gasUseWithoutPost + gasUsedByPost, - relayData - ); - uint256 tokenActualCharge = _ethToTokens( - token, - valueRequested + ethActualCharge - ); + uint256 ethActualCharge = relayHub.calculateCharge(gasUseWithoutPost + gasUsedByPost, relayData); + uint256 tokenActualCharge = _ethToTokens(token, valueRequested + ethActualCharge); uint256 tokenRefund = tokenPrecharge - tokenActualCharge; emit PostRelay(ethActualCharge, token, tokenActualCharge, payer); diff --git a/src/swap/Faucet.sol b/src/swap/Faucet.sol index d3fa4a76..1fc1c226 100644 --- a/src/swap/Faucet.sol +++ b/src/swap/Faucet.sol @@ -5,7 +5,7 @@ import {Ownable, Context} from "@openzeppelin/contracts/access/Ownable.sol"; import {ERC2771Recipient} from "@opengsn/packages/contracts/src/ERC2771Recipient.sol"; interface Erc20Mintable { - function decimals() external returns (uint); + function decimals() external returns (uint256); function mint(uint256 amount) external; @@ -13,8 +13,8 @@ interface Erc20Mintable { } contract Faucet is Ownable, ERC2771Recipient { - uint nextTokenId; - mapping(uint => address) supportedErc20Addresses; + uint256 nextTokenId; + mapping(uint256 => address) supportedErc20Addresses; function addErc20(address newErc20) public onlyOwner { supportedErc20Addresses[nextTokenId++] = newErc20; @@ -22,29 +22,19 @@ contract Faucet is Ownable, ERC2771Recipient { // Mints 30000 of each erc20 function mint() public { - for (uint id = 0; id < nextTokenId; id++) { + for (uint256 id = 0; id < nextTokenId; id++) { Erc20Mintable token = Erc20Mintable(supportedErc20Addresses[id]); - uint amount = 30000 * (10 ** token.decimals()); + uint256 amount = 30000 * (10 ** token.decimals()); token.mint(amount); token.transfer(_msgSender(), amount); } } - function _msgSender() - internal - view - override(Context, ERC2771Recipient) - returns (address sender) - { + function _msgSender() internal view override(Context, ERC2771Recipient) returns (address sender) { sender = ERC2771Recipient._msgSender(); } - function _msgData() - internal - view - override(Context, ERC2771Recipient) - returns (bytes calldata) - { + function _msgData() internal view override(Context, ERC2771Recipient) returns (bytes calldata) { return ERC2771Recipient._msgData(); } } diff --git a/test/OnboardingPaymaster.t.sol b/test/OnboardingPaymaster.t.sol index 5b35ed3f..48295163 100644 --- a/test/OnboardingPaymaster.t.sol +++ b/test/OnboardingPaymaster.t.sol @@ -9,7 +9,6 @@ import {OnboardingPaymaster} from "../src/paymasters/OnboardingPaymaster.sol"; // import {} import "lib/gsn/packages/contracts/src/BasePaymaster.sol"; - contract OnboardingPaymasterTest is OnboardingPaymaster, Test { Utilities internal utils; address payable[] internal users; @@ -32,4 +31,4 @@ contract OnboardingPaymasterTest is OnboardingPaymaster, Test { bytes memory rawBytes = hex"1234567890"; this.getSelector(rawBytes); } -} \ No newline at end of file +} diff --git a/test/OracleTokenPaymaster.t.sol b/test/OracleTokenPaymaster.t.sol index 71a8b06e..4bf42a77 100644 --- a/test/OracleTokenPaymaster.t.sol +++ b/test/OracleTokenPaymaster.t.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; -// +// // using stdStorage for StdStorage; -// +// // import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; // import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; // import {stdStorage, StdStorage, Test, console} from "forge-std/Test.sol"; @@ -11,46 +11,46 @@ pragma solidity ^0.8.13; // // import {} // import "lib/gsn/packages/contracts/src/BasePaymaster.sol"; // import {Oracle} from "../src/Oracle.sol"; -// +// // contract ArbitaryErc20 is ERC20, Ownable { // constructor( // string memory name_, // string memory symbol_ // ) ERC20(name_, symbol_) {} -// +// // function sudoMint(address to, uint256 amount) public onlyOwner { // _mint(to, amount); // } // } -// +// // contract OracleTokenPaymasterTest is OracleTokenPaymaster, Test { // Utilities internal utils; // address payable[] internal users; // address internal alice; // address internal bob; -// +// // ArbitaryErc20 token1; -// +// // constructor() OracleTokenPaymaster(new Oracle()) {} -// +// // function setUp() public { // utils = new Utilities(); // users = utils.createUsers(5); -// +// // alice = users[0]; // vm.label(alice, "Alice"); // bob = users[1]; // vm.label(bob, "Bob"); -// +// // token1 = new ArbitaryErc20("Some token", "TKN"); // } -// +// // function testQ() public { // token1.sudoMint(alice, 100); // vm.startPrank(alice); // token1.approve(address(this), 100); // vm.stopPrank(); -// +// // IForwarder.ForwardRequest memory forwardRequest = IForwarder.ForwardRequest({ // from: address(0x00), // to: alice, @@ -60,7 +60,7 @@ pragma solidity ^0.8.13; // data: hex"", // validUntilTime: 0 // }); -// +// // GsnTypes.RelayData memory relayData = GsnTypes.RelayData({ // maxFeePerGas: 0, // maxPriorityFeePerGas: 0, @@ -68,15 +68,15 @@ pragma solidity ^0.8.13; // relayWorker: address(0x00), // paymaster: address(0x00), // forwarder: address(0x00), -// paymasterData: abi.encode(token1), +// paymasterData: abi.encode(token1), // clientId: 0 // }); -// +// // GsnTypes.RelayRequest memory relayRequest = GsnTypes.RelayRequest({ // request: forwardRequest, // relayData: relayData // }); -// +// // bytes memory signature = hex""; // bytes memory approvalData = hex""; // uint maxPossibleGas = 10000; @@ -86,14 +86,14 @@ pragma solidity ^0.8.13; // // approvalData, // // maxPossibleGas // // ); -// +// // // address tokenAddress = abi.decode(abi.encode(address(0x4Cb8b11EfF23E56A4546787b418102eD4180B2e8)), (address)); // // assertEq(hex"00", abi.encode(address(0x4Cb8b11EfF23E56A4546787b418102eD4180B2e8))); // address tokenAddress = abi.decode(hex"0000000000000000000000004cb8b11eff23e56a4546787b418102ed4180b2e8", (address)); -// +// // // IERC20 a = this._getToken(hex"4Cb8b11EfF23E56A4546787b418102eD4180B2e8"); // // IERC20 b = IERC20(address(0x00)); -// // +// // // // assertEq(address(a), address(b)); // } // // function testW() public { From 47cb516ee09547b7e5748d46f5fbea85e050ec5f Mon Sep 17 00:00:00 2001 From: nakul1010 Date: Thu, 14 Dec 2023 10:53:05 +0530 Subject: [PATCH 011/137] feat: ord marketplace contract --- src/bridge/BitcoinTx.sol | 13 ++ src/swap/Ord_Marketplace.sol | 222 +++++++++++++++++++++++++++++++++++ 2 files changed, 235 insertions(+) create mode 100644 src/swap/Ord_Marketplace.sol diff --git a/src/bridge/BitcoinTx.sol b/src/bridge/BitcoinTx.sol index f7a9fedc..d82154fe 100644 --- a/src/bridge/BitcoinTx.sol +++ b/src/bridge/BitcoinTx.sol @@ -128,6 +128,19 @@ library BitcoinTx { bytes bitcoinHeaders; } + /// @notice Represents info about an unspent transaction output. + struct UTXO { + /// @notice Hash of the transaction the output belongs to. + /// @dev Byte order corresponds to the Bitcoin internal byte order. + bytes32 txHash; + /// @notice Index of the transaction output (0-indexed). + uint32 txOutputIndex; + /// @notice Value of the transaction output. + uint64 txOutputValue; + } + // This struct doesn't contain `__gap` property as the structure is not + // stored, it is used as a function's calldata argument. + /// @notice Validates the SPV proof of the Bitcoin transaction. /// Reverts in case the validation or proof verification fail. /// @param txInfo Bitcoin transaction data. diff --git a/src/swap/Ord_Marketplace.sol b/src/swap/Ord_Marketplace.sol new file mode 100644 index 00000000..0e0e6092 --- /dev/null +++ b/src/swap/Ord_Marketplace.sol @@ -0,0 +1,222 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {BTCUtils} from "@bob-collective/bitcoin-spv/BTCUtils.sol"; +import {BitcoinTx} from "../bridge/BitcoinTx.sol"; +import {IRelay} from "../bridge/IRelay.sol"; +import {BridgeState} from "../bridge/BridgeState.sol"; + +using SafeERC20 for IERC20; + +contract Ord_Marketplace { + using BitcoinTx for BridgeState.Storage; + + mapping(uint256 => OrdinalSellOrder) public ordinalSellOrders; + mapping(uint256 => AcceptedOrdinalSellOrder) public acceptedOrdinalSellOrders; + + uint256 nextOrdinalId; + uint256 public constant REQUEST_EXPIRATION_SECONDS = 6 hours; + + BridgeState.Storage internal relay; + + constructor(IRelay _relay) { + relay.relay = _relay; + relay.txProofDifficultyFactor = 1; // will make this an arg later on + } + + function setRelay(IRelay _relay) internal { + relay.relay = _relay; + } + + event placeOrdinalSellOrderEvent(uint256 indexed orderId, bytes ordinalID, address sellToken, uint256 sellAmount); + event acceptOrdinalSellOrderEvent( + uint256 indexed id, uint256 indexed acceptId, BitcoinAddress bitcoinAddress, uint256 ercAmount, address ercToken + ); + event proofOrdinalSellOrderEvent(uint256 id); + event withdrawOrdinalSellOrderEvent(uint256 id); + event cancelAcceptedOrdinalSellOrderEvent(uint256 id); + + struct OrdinalSellOrder { + bytes ordinalID; + address sellToken; + uint256 sellAmount; + BitcoinTx.UTXO utxo; + address requester; + } + + struct AcceptedOrdinalSellOrder { + uint256 orderId; + BitcoinAddress bitcoinAddress; + address ercToken; + uint256 ercAmount; + address requester; + address acceptor; + uint256 acceptTime; + } + + struct BitcoinAddress { + bytes scriptPubKey; + } + + struct OrdinalId { + bytes ordinalID; + } + + function placeOrdinalSellOrder( + bytes calldata ordinalID, + BitcoinTx.UTXO calldata utxo, + address sellToken, + uint256 sellAmount + ) public { + require(sellToken != address(0x0), "Invalid buying token"); + require(sellAmount > 0, "Buying amount should be greater than 0"); + require(ordinalID.length == 64, "Invalid ordinal ID provided"); + + uint256 id = nextOrdinalId++; + + ordinalSellOrders[id] = OrdinalSellOrder({ + ordinalID: ordinalID, + sellToken: sellToken, + sellAmount: sellAmount, + utxo: utxo, + requester: msg.sender + }); + + emit placeOrdinalSellOrderEvent(id, ordinalID, sellToken, sellAmount); + } + + function acceptOrdinalSellOrder(uint256 id, BitcoinAddress calldata bitcoinAddress) public returns (uint256) { + OrdinalSellOrder storage order = ordinalSellOrders[id]; + // ToDo: Check if ordinal not already reserve + + // "lock" sell token by transferring to contract + IERC20(order.sellToken).safeTransferFrom(msg.sender, address(this), order.sellAmount); + + uint256 acceptId = nextOrdinalId++; + + acceptedOrdinalSellOrders[acceptId] = AcceptedOrdinalSellOrder({ + orderId: id, + bitcoinAddress: bitcoinAddress, + ercToken: order.sellToken, + ercAmount: order.sellAmount, + requester: order.requester, + acceptor: msg.sender, + acceptTime: block.timestamp + }); + + emit acceptOrdinalSellOrderEvent(id, acceptId, bitcoinAddress, order.sellAmount, order.sellToken); + + return acceptId; + } + + function proofOrdinalSellOrder(uint256 id, BitcoinTx.Info calldata transaction, BitcoinTx.Proof calldata proof) + public + { + AcceptedOrdinalSellOrder storage accept = acceptedOrdinalSellOrders[id]; + require(accept.requester == msg.sender); + + (bytes32 txHash) = relay.validateProof(transaction, proof); + + OrdinalSellOrder storage order = ordinalSellOrders[accept.orderId]; + require(txHash == order.utxo.txHash, "TxHash not matching"); + + // check if output to the buyer's address + _checkBitcoinTxOutput(accept.bitcoinAddress, transaction); + + IERC20(accept.ercToken).safeTransfer(accept.requester, accept.ercAmount); + + delete acceptedOrdinalSellOrders[id]; + emit proofOrdinalSellOrderEvent(id); + } + + /** + * Checks output script pubkey (recipient address) matches output script. + * Reverts if bitcoin address is not found. + * + * @param bitcoinAddress Recipient's bitcoin address. + * @param transaction Transaction fulfilling the order. + */ + function _checkBitcoinTxOutput(BitcoinAddress storage bitcoinAddress, BitcoinTx.Info calldata transaction) + private + { + // Prefixes scriptpubkey with its size to match script output data. + bytes32 scriptPubKeyHash = + keccak256(abi.encodePacked(uint8(bitcoinAddress.scriptPubKey.length), bitcoinAddress.scriptPubKey)); + + // it will revert if no match for scriptPubKeyHash found in any outputScriptHash + BitcoinTx.getTxOutputValue(scriptPubKeyHash, transaction.outputVector); + } + + function withdrawOrdinalSellOrder(uint256 id) public { + OrdinalSellOrder storage order = ordinalSellOrders[id]; + + require(order.requester == msg.sender); + + delete ordinalSellOrders[id]; + + emit withdrawOrdinalSellOrderEvent(id); + } + + function cancelAcceptedOrdinalSellOrder(uint256 id) public { + AcceptedOrdinalSellOrder storage order = acceptedOrdinalSellOrders[id]; + + require(block.timestamp > order.acceptTime + REQUEST_EXPIRATION_SECONDS); + + require(order.acceptor == msg.sender); + + // give acceptor its tokens back + IERC20(order.ercToken).safeTransfer(msg.sender, order.ercAmount); + + delete acceptedOrdinalSellOrders[id]; + + emit cancelAcceptedOrdinalSellOrderEvent(id); + } + + function getOpenOrdinalSellOrders() external view returns (OrdinalSellOrder[] memory, uint256[] memory) { + uint256 numOpenOrders = 0; + for (uint256 i = 0; i < nextOrdinalId; i++) { + if (ordinalSellOrders[i].requester != address(0x0)) { + numOpenOrders++; + } + } + + OrdinalSellOrder[] memory ret = new OrdinalSellOrder[](numOpenOrders); + uint256[] memory identifiers = new uint256[](numOpenOrders); + uint256 numPushed = 0; + for (uint256 i = 0; i < nextOrdinalId; i++) { + if (ordinalSellOrders[i].requester != address(0x0)) { + ret[numPushed] = ordinalSellOrders[i]; + identifiers[numPushed] = i; + numPushed++; + } + } + return (ret, identifiers); + } + + function getOpenAcceptedOrdinalSellOrders() + external + view + returns (AcceptedOrdinalSellOrder[] memory, uint256[] memory) + { + uint256 numOpenOrders = 0; + for (uint256 i = 0; i < nextOrdinalId; i++) { + if (acceptedOrdinalSellOrders[i].ercAmount > 0) { + numOpenOrders++; + } + } + + AcceptedOrdinalSellOrder[] memory ret = new AcceptedOrdinalSellOrder[](numOpenOrders); + uint256[] memory identifiers = new uint256[](numOpenOrders); + uint256 numPushed = 0; + for (uint256 i = 0; i < nextOrdinalId; i++) { + if (acceptedOrdinalSellOrders[i].ercAmount > 0) { + ret[numPushed] = acceptedOrdinalSellOrders[i]; + identifiers[numPushed] = i; + numPushed++; + } + } + return (ret, identifiers); + } +} From 492bf37d167b6b5ccc86ebfaad09c9b743b93cfc Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Thu, 14 Dec 2023 14:43:46 +0900 Subject: [PATCH 012/137] docs: update stack --- docs/docs/learn/guides/_category_.yml | 4 + docs/docs/learn/guides/index.md | 2 + .../learn/introduction/bob-components.png | Bin 104226 -> 0 bytes docs/docs/learn/introduction/contribution.md | 3 +- docs/docs/learn/introduction/overview.md | 30 -- docs/docs/learn/introduction/stack.md | 27 ++ .../docs/learn/introduction/values.excalidraw | 391 ------------------ docs/docs/learn/introduction/values.png | Bin 53285 -> 0 bytes docs/docs/learn/stack/bob-stack.md | 42 -- .../{stack => technology}/_category_.yml | 2 +- .../learn/{stack => technology}/vision.md | 0 docs/src/pages/index.mdx | 16 +- 12 files changed, 46 insertions(+), 471 deletions(-) create mode 100644 docs/docs/learn/guides/_category_.yml create mode 100644 docs/docs/learn/guides/index.md delete mode 100644 docs/docs/learn/introduction/bob-components.png delete mode 100644 docs/docs/learn/introduction/overview.md create mode 100644 docs/docs/learn/introduction/stack.md delete mode 100644 docs/docs/learn/introduction/values.excalidraw delete mode 100644 docs/docs/learn/introduction/values.png delete mode 100644 docs/docs/learn/stack/bob-stack.md rename docs/docs/learn/{stack => technology}/_category_.yml (69%) rename docs/docs/learn/{stack => technology}/vision.md (100%) diff --git a/docs/docs/learn/guides/_category_.yml b/docs/docs/learn/guides/_category_.yml new file mode 100644 index 00000000..7f381651 --- /dev/null +++ b/docs/docs/learn/guides/_category_.yml @@ -0,0 +1,4 @@ +position: 4 +label: 'Using BOB' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/docs/docs/learn/guides/index.md b/docs/docs/learn/guides/index.md new file mode 100644 index 00000000..e12022ba --- /dev/null +++ b/docs/docs/learn/guides/index.md @@ -0,0 +1,2 @@ +# Using BOB + diff --git a/docs/docs/learn/introduction/bob-components.png b/docs/docs/learn/introduction/bob-components.png deleted file mode 100644 index b8c09b80666d85ab345ae867941ba6fb37f3dc4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104226 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 UOm9>m4D_WSqbgl3X%hT@0J%3|{{R30 diff --git a/docs/docs/learn/introduction/contribution.md b/docs/docs/learn/introduction/contribution.md index b9b44caf..751766ca 100644 --- a/docs/docs/learn/introduction/contribution.md +++ b/docs/docs/learn/introduction/contribution.md @@ -7,5 +7,6 @@ We are just getting started with BOB and there are plenty of new things to be bu The best way to get started is to: - Checkout the GitHub: [bob-collective](https://github.com/bob-collective/bob) -- Try the early alpha: [builder docs](/docs/build/getting-started/helloworld) +- Deploy your first contracts on BOB: [Hello World](/docs/build/getting-started/helloworld) +- Try out the demos: [Demos](/docs/build/getting-started/#examples) - Join the [Discord](https://discordapp.com/invite/interlay) diff --git a/docs/docs/learn/introduction/overview.md b/docs/docs/learn/introduction/overview.md deleted file mode 100644 index 1b69645d..00000000 --- a/docs/docs/learn/introduction/overview.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -sidebar_position: 2 -sidebar_label: Building on Bitcoin ---- - -# Building on Bitcoin - -BOB is the builder stack for experimentation, real-world impact, and freedom of choice. It launches as an OP Stack rollup connecting Bitcoin and Ethereum. The BOB tools can be deployed on any EVM chain or rollup to facilitate onboarding users from Bitcoin as well as accessing Bitcoin from the EVM. - -1. **EVM compatibility**: The EVM is not the greatest VM ever created. However, it benefits from a large ecosystem that is focused on improving UX via smart contract wallets, innovations in rollups, DeFi tooling, audited libraries, and a maturing set of tooling. Instead of builders having to reinvent the wheel, BOB comes with the EVM built in to provide projects with access to EVM space innovations and not require them to rewrite code in a new programming language. As an added benefit, this eliminates vendor lock-in since projects can deploy on other EVM chains or spin up a BOB-compatible rollup. -2. **Rust off-chain programs with on-chain verification**: A key puzzle to the scaling problem is to compute complex programs off-chain and verify their correctness on-chain. BOB allows developers to use existing Bitcoin Rust SDKs and libraries. Extending Bitcoin with new apps (e.g., https://github.com/ordinals/ord and https://github.com/rust-nostr/nostr), libraries (e.g., https://github.com/rust-bitcoin), and SDKs (e.g., https://github.com/lightningdevkit and https://bitcoindevkit.org/) are primarily based on Rust. Existing L2 or sidechains fail to deliver on that as they are purely EVM-based or use other execution layers like Stacks and Liquid. BOB leverages Risc Zero's [zkVM](https://dev.risczero.com/api/zkvm/) to write complex programs like proofing ownership of multiple ordinals in Rust and verifying the proof on-chain in the EVM. -3. **Rollup**: Deploying an app-specific rollup will become as simple as deploying a smart contract. With the maturing of standardized rollup stacks, the enhancements made to rollup stacks will be the key differentiators. BOB provides a Bitcoin augmentation layer enabling access to Bitcoin types and data (e.g., BRC20s, ordinals, …). This allows builders to focus on the unique value of their application and its impact on users without worrying about the platform risk of BOB. -4. **Bitcoin access**: BOB will support a range of BTC bridges, both institutional and decentralized, enabling builders to pick the model that best suits their needs. BOB further provides trustless access to Bitcoin block and transactional data via a BTC light client (BTC Relay), as well as a range of specialized tools including but not limited to cross-chain P2P swap logic and support for advanced Bitcoin scripts such as DLCs (Discrete Log Contracts). -5. **Merged mining securtiy**: BOB facilitates merged mining capabilities to allow developers to anchor the security of their apps in the Proof of Work of Bitcoin. - -![values](values.png) - -## BOB: A Bitcoin L2 for Builders - -BOB is three things: - -- A builder platform that allows anyone to create novel applications: - - BOB supports Rust off-chain programs with on-chain verification. Many Bitcoin innovations (ord, LN, nostr, BDK) happen in Rust, a mature and well-designed language. This allows innovation for new use cases without having to rewrite logic. - - BOB is EVM-compatible. Novel applications and mature tooling already exist on EVM chains. Innovators can build on top of these applications without having to rewrite existing logic in other programming languages. -- A rollup that allows users and builders access to ETH, ERC20s, and Ethereum data (NFTs, ENS, …). -- A merged mining security provider for apps to anchor their security on Bitcoin's Proof of Work. - -BOB will be the catalyst for the building on Bitcoin renaissance. The movement combines the Bitcoin core values with new avenues of thought. BOB is a Bitcoin-augmented rollup for free experimentation and innovation with real-world impact. - - diff --git a/docs/docs/learn/introduction/stack.md b/docs/docs/learn/introduction/stack.md new file mode 100644 index 00000000..f9273639 --- /dev/null +++ b/docs/docs/learn/introduction/stack.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 2 +--- + +# BOB Stack + +BOB is the builder stack for experimentation, real-world impact, and freedom of choice. + +## Rollup Layer + +As the base layer, BOB can use any EVM rollup or chain. Initially, BOB launches on the [OP stack](https://docs.optimism.io/) including the upcoming ZK improvements by [RiscZero](https://www.risczero.com/) and can be rolled up to [Ethereum](https://www.risczero.com/) for 1-click onboarding of users, assets and liquidity. In addition, BOB can inherit Bitcoin security via a novel [merged mining](https://academy.binance.com/en/glossary/merged-mining) protocol (re-staking for Bitcoin). + +## EVM Core + +At the core, BOB leverages the [Ethereum Virtual Machine (EVM)](https://ethereum.org/en/developers/docs/evm/) to enable the creation and execution of smart contracts, primarily developed using the [Solidity smart contract programming language](https://soliditylang.org/). The EVM version deployed on BOB will be equivalent to that of Ethereum, ensuring compatibility with existing developer tooling ([Hardhat](https://hardhat.org/), [Foundry](https://getfoundry.sh/), [Remix](https://remix.ethereum.org/), …), wallets ([Metamask](https://metamask.io/), [WalletConnect](https://walletconnect.com/) supported wallets,...), best-in-class multisig ([Safe](https://www.safe.io/)), as well as key infrastructure, including block explorers like [BlockScout](https://www.blockscout.com/) and data analytics ([TheGraph](https://thegraph.com/), [Dune](https://dune.com/), [GoldSky](https://goldsky.com/)). + +## BTC Bridges + +BOB provides trustless access to Bitcoin block and transactional data via a [BTC light client](https://blog.threshold.network/blockchain-relays-101/), allowing EVM contracts to process BTC transactions (e.g. P2P BTC swaps, Ordinal auctions, hashrate tokenization,...). BOB also supports a range of Bitcoin bridges, both decentralized and institutional. Through a native ETH L1/L2 bridge, BOB has access to market leader [wBTC](https://wbtc.network/) and the more secure, threshold-based version, [tBTC v2](https://threshold.network/). In the future, BOB will support advanced bridge models including opt-in collateralization (see [iBTC](https://www.interlay.io/)) and ideally a 2-way light-client BTC bridge powered by [BitVM](https://bitvm.org/bitvm.pdf). + +## Rust zkVM + +The majority of Bitcoin’s stack and applications built around it are implemented in Rust, including core [SDKs](https://github.com/rust-bitcoin/rust-bitcoin), [Lightning](https://github.com/lightningdevkit/rust-lightning), and [Ordinals](https://github.com/ordinals/ord). BOB can support Bitcoin’s Rust libraries, most notably via the [RISC Zero zkVM](https://dev.risczero.com/api/zkvm/) that allows off-chain execution of Rust programs while using [ZK proofs](https://ethereum.org/en/zero-knowledge-proofs/) to verify correct execution in EVM smart contracts. In the future, we see this as an avenue for [ZK rollups](https://vitalik.ca/general/2021/01/05/rollup.html) directly on Bitcoin where BOB itself can be proven in the zkVM and verified by Bitcoin consensus. + +## BOB SDK + +Similar to [OpenZeppelin](https://www.openzeppelin.com/) and other great Solidity libraries, BOB provides a powerful SDK for all things building on Bitcoin. This includes a wide range of Solidity contracts that can be used to interact with Bitcoin including core, [Ordinals](https://docs.ordinals.com/), [BRC20s](https://brc20.gitbook.io/brc20/overview/introduction), and [Lightning](https://lightning.network/), as well as improved inscription APIs and tools for a unified BTC and EVM wallet experience (e.g. manage Ordinals in your MetaMask wallet via [Snaps](https://metamask.io/snaps/)). Plus the ability to leverage [Account Abstraction](https://ethereum.org/en/roadmap/account-abstraction/) with bridged BTC. diff --git a/docs/docs/learn/introduction/values.excalidraw b/docs/docs/learn/introduction/values.excalidraw deleted file mode 100644 index 1164e8a4..00000000 --- a/docs/docs/learn/introduction/values.excalidraw +++ /dev/null @@ -1,391 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "id": "WpQRmBQrZbLK35c5dKsdG", - "type": "rectangle", - "x": 499.83203125, - "y": 245.96484375, - "width": 309.765625, - "height": 147.8515625000001, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "seed": 1838345696, - "version": 115, - "versionNonce": 1820718560, - "isDeleted": false, - "boundElements": null, - "updated": 1693286586207, - "link": null, - "locked": false - }, - { - "id": "ShGCZa6eRQQDpQ17I0Ooi", - "type": "text", - "x": 530, - "y": 215.796875, - "width": 91.08393859863281, - "height": 35, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 887060960, - "version": 32, - "versionNonce": 2116772320, - "isDeleted": false, - "boundElements": null, - "updated": 1693286711148, - "link": null, - "locked": false, - "text": "Bitcoin", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 25, - "containerId": null, - "originalText": "Bitcoin", - "lineHeight": 1.25 - }, - { - "id": "fbbCNG_bYyIsmLkZf1J62", - "type": "text", - "x": 510.796875, - "y": 269.390625, - "width": 178.83984375, - "height": 100, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 765718560, - "version": 265, - "versionNonce": 2027867168, - "isDeleted": false, - "boundElements": null, - "updated": 1693286581301, - "link": null, - "locked": false, - "text": "- Scarcity\n- Immutability\n- Decentralization\n- Portability", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 93, - "containerId": null, - "originalText": "- Scarcity\n- Immutability\n- Decentralization\n- Portability", - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "version": 71, - "versionNonce": 784447968, - "isDeleted": false, - "id": "byWWUb866C6Og_IfTY59m", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 982.828125, - "y": 238.30859375, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 309.765625, - "height": 158.8203125, - "seed": 1145905184, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [], - "updated": 1693286092181, - "link": null, - "locked": false - }, - { - "id": "qhDuHSDy_W_O8I7Vdai7u", - "type": "text", - "x": 1215.66015625, - "y": 201.4609375, - "width": 61.03996276855469, - "height": 35, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 351784992, - "version": 142, - "versionNonce": 1566306784, - "isDeleted": false, - "boundElements": null, - "updated": 1693286717573, - "link": null, - "locked": false, - "text": "BOB", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 25, - "containerId": null, - "originalText": "BOB", - "lineHeight": 1.25 - }, - { - "id": "wCO8uCaGR0vgdcsom2j7r", - "type": "text", - "x": 993, - "y": 269, - "width": 198.87985229492188, - "height": 75, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1352938976, - "version": 205, - "versionNonce": 534986208, - "isDeleted": false, - "boundElements": [ - { - "id": "Keao_NUs7_f4_ugDAkAb0", - "type": "arrow" - } - ], - "updated": 1693286623549, - "link": null, - "locked": false, - "text": "- Experimentation\n- Real-World Impact\n- Freedom of Choice", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 68, - "containerId": null, - "originalText": "- Experimentation\n- Real-World Impact\n- Freedom of Choice", - "lineHeight": 1.25 - }, - { - "id": "Keao_NUs7_f4_ugDAkAb0", - "type": "arrow", - "x": 978.26171875, - "y": 258.90625, - "width": 173.87890625, - "height": 38.23046875, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 791446560, - "version": 151, - "versionNonce": 2119008288, - "isDeleted": false, - "boundElements": null, - "updated": 1693286655200, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -85.421875, - -38.23046875 - ], - [ - -173.87890625, - -0.33984375 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "wCO8uCaGR0vgdcsom2j7r", - "focus": -0.04276101897334255, - "gap": 14.73828125 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "FHScA5Hr7ngKb10aMu2eh", - "type": "arrow", - "x": 803.72265625, - "y": 382.44921875, - "width": 182.39453125, - "height": 35.0625, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 131397664, - "version": 122, - "versionNonce": 822281248, - "isDeleted": false, - "boundElements": null, - "updated": 1693286653161, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 92.265625, - 35.0625 - ], - [ - 182.39453125, - 1.07421875 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "TgfHBgZq8Z-yb1Xine1AN", - "type": "text", - "x": 739.078125, - "y": 437.39453125, - "width": 364.1796875, - "height": 25, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1225053664, - "version": 142, - "versionNonce": 474159136, - "isDeleted": false, - "boundElements": null, - "updated": 1693286746634, - "link": null, - "locked": false, - "text": "Fallback to Bitcoin to protect users", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 18, - "containerId": null, - "originalText": "Fallback to Bitcoin to protect users", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 199, - "versionNonce": 1146777632, - "isDeleted": false, - "id": "7zmq9FbF-gl6MozbjRUOm", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 738.6246109008789, - "y": 181.3359375, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 373.17962646484375, - "height": 25, - "seed": 2036558304, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1693286723811, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Provide value through experimentation", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Provide value through experimentation", - "lineHeight": 1.25, - "baseline": 18 - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/docs/docs/learn/introduction/values.png b/docs/docs/learn/introduction/values.png deleted file mode 100644 index de2a093c8eea2c66d9541e7f72b9c85c296157f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53285 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 z 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 Mr>mdKI;Vst0L<4JjsO4v diff --git a/docs/docs/learn/stack/bob-stack.md b/docs/docs/learn/stack/bob-stack.md deleted file mode 100644 index e9e04876..00000000 --- a/docs/docs/learn/stack/bob-stack.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -sidebar_position: 2 ---- -# BOB Stack - -The BOB stack consists of the following parts: - -1. Governance: Decisions in BOB deployments are made through an on-chain governance process. -2. Settlement: BOB receives security through L1 consensus. BOB uses a multi-rollup model where applications deployed on BOB can use both Bitcoin security as well as other L1 security like Ethereum or operate custom models for institutional use cases. -3. Execution: At the core, BOB uses the EVM as an execution layer for state transitions. -4. Rollup: BOB can be deployed on any EVM-compatible rollup or sidechain stack. This means that sequencing, data availability, and derivation specifics can direclty be inherited from the underlying stack such as OP Stack, Arbitrum, Starkware, zkSync, or any other EVM-compatible stack. -5. Bitcoin-augumentation: Bitcoin light client, abstraction of transaction fees via Account Abstraction and Meta Transactions. - -## Governance - -:::info -The governance of BOB is work in progress. You can contribute with ideas by joining the [forum](https://forum.gobob.xyz). -::: - -## Settlement - -:::info -TODO -::: - -## Execution - -:::info -TODO -::: - -## Rollup - -:::info -TODO -::: - -## Bitcoin-augumentation - -:::info -TODO -::: \ No newline at end of file diff --git a/docs/docs/learn/stack/_category_.yml b/docs/docs/learn/technology/_category_.yml similarity index 69% rename from docs/docs/learn/stack/_category_.yml rename to docs/docs/learn/technology/_category_.yml index 717ab88a..67287ab0 100644 --- a/docs/docs/learn/stack/_category_.yml +++ b/docs/docs/learn/technology/_category_.yml @@ -1,4 +1,4 @@ position: 2 -label: 'BOB Stack' +label: 'Technology' collapsible: true collapsed: true \ No newline at end of file diff --git a/docs/docs/learn/stack/vision.md b/docs/docs/learn/technology/vision.md similarity index 100% rename from docs/docs/learn/stack/vision.md rename to docs/docs/learn/technology/vision.md diff --git a/docs/src/pages/index.mdx b/docs/src/pages/index.mdx index cd61e805..2ea7dcc3 100644 --- a/docs/src/pages/index.mdx +++ b/docs/src/pages/index.mdx @@ -8,18 +8,22 @@ import styles from "./index.module.css";

Build on Bitcoin

- A layer 2 stack empowering everyone to build and innovate on Bitcoin. + BOB is a layer 2 stack empowering everyone to build and innovate on Bitcoin.

-## Builder Values +## What is BOB? -BOB encompasses a set of core values enabling builders to innovate on Bitcoin. +BOB combines the power of Bitcoin security and stability with innovation enabled by the EVM and the OP stack. BOB supports the Bitcoin ecosystem incl. Ordinals, Lightning and Nostr, powered by cross-chain light clients, a universal Bitcoin smart contract SDK and the RiscZero zkVM. -- **Experimentation**: Technology (rollups, ZK, AI, …), art (NFTs, …), organization (DAOs), and entertainment (social, …). We don’t close off BOB to areas but instead want a diverse space of innovators. -- **Real-world impact**: The innovations made should have an improvement for people by giving them access to Bitcoin values. BOB is an enabler to bring the BTC advantages to new and existing use cases. -- **Freedom of choice**: Projects deployed on BOB should also be able to deploy on other rollups and chains. Builders should focus on the unique values of the product without having to worry about platform risk of BOB. +Our mission is to create a Bitcoin rollup ecosystem to power innovation and experimentation without relying on Bitcoin forks. + +## Values + +- **Experimentation**: We enable a diverse space of innovators to play with ordinals, ZK, SocialFi, DAOs, and more. +- **Real-world impact**: Innovations improve people's lives by giving them access to Bitcoin values. +- **Freedom of choice**: Builders focus on the unique values of their projects without having to re-invent the wheel.
From 5f10c4b698de314119bbcca26713e776338cd5db Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Tue, 28 Nov 2023 11:53:11 +0000 Subject: [PATCH 013/137] metamask documentation --- .../examples/metamask-ordinals/_category_.yml | 3 + .../build/examples/metamask-ordinals/index.md | 59 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 docs/docs/build/examples/metamask-ordinals/_category_.yml create mode 100644 docs/docs/build/examples/metamask-ordinals/index.md diff --git a/docs/docs/build/examples/metamask-ordinals/_category_.yml b/docs/docs/build/examples/metamask-ordinals/_category_.yml new file mode 100644 index 00000000..85869009 --- /dev/null +++ b/docs/docs/build/examples/metamask-ordinals/_category_.yml @@ -0,0 +1,3 @@ +position: 4 +collapsible: true +collapsed: false diff --git a/docs/docs/build/examples/metamask-ordinals/index.md b/docs/docs/build/examples/metamask-ordinals/index.md new file mode 100644 index 00000000..d7b290a8 --- /dev/null +++ b/docs/docs/build/examples/metamask-ordinals/index.md @@ -0,0 +1,59 @@ +# Use Metamask to Inscribe and Transfer Ordinals, and Transfer BTC + +This example demonstrates how a Metamask Snap can be used to inscribe and transfer ordinals, and transfer BTC, using only Metamask. + +:::info Example Code + +The code for this example can be [found in the GitHub repository](https://github.com/bob-collective/demo-brc20-metamask) + +::: + +## Demo + +We have created a testnet demo of the application at [https://ordinals.gobob.xyz](https://ordinals.gobob.xyz), allowing anyone to inscribe, view and transfer ordinals, and transfer BTC. + +:::info Metamask Flask + +This demo uses [Metamask Snaps](https://metamask.io/snaps/) and can only be used with [Metamask Flask](https://metamask.io/flask/). Metamask Snaps are not currently supported on mobile wallets, so this demo will only run in the desktop version of Chrome or Firefox. + +::: + +### Creating a test profile + +To use this demo, you will need to create a new browser profile to use with the Metamask Flask extension, as having Metamask and Metamask Flask installed in the same browser profile can cause issues. + +We recommend creating two test profiles so that you can test transferring Ordinals and BTC between two accounts. + +### Installing the Metamask Snap + +Once you have installed Metamask Flask, click the 'Connect Wallet' button on https://ordinals.gobob.xyz. Metamask will prompt you to install the Snap, and give it permissions. + +### Funding your account + +One you have connected your wallet, you will see your derived BTC address in place of the 'Connect Wallet' button. Click on the address to copy it to the clipboard and then fund it using a BTC faucet: + +- [https://coinfaucet.eu/en/btc-testnet/](https://coinfaucet.eu/en/btc-testnet/) +- [https://bitcoinfaucet.uo1.net/](https://bitcoinfaucet.uo1.net/) + +You can check your BTC balance by clicking on the 'Transfer BTC' button. + +:::note + +BTC may show in your balance before it is confirmed. If you try to use the application before the funds are confirmed, your balance will be too low and you may see errors. + +::: + +### Inscribing a text ordinal + +- Click on the 'Inscribe Ordinal' button, enter the inscription text, and submit the form. +- The ordinal will be shown in the Ordinals Portfolio table (this may take a few seconds) + +### Transferring an ordinal + +- Click on the 'Transfer Ordinal' button next to the ordinal you would like to transfer. +- Enter a testnet BTC address, and submit the form. + +### Transferring BTC + +- Click on the 'Transfer BTC' button at the top of the page. +- Enter a testnet BTC address, and submit the form. From dbabee59007b377e9b4b48ed506cf1addfa655f0 Mon Sep 17 00:00:00 2001 From: nakul1010 Date: Wed, 29 Nov 2023 15:25:40 +0530 Subject: [PATCH 014/137] fix: remove contracts dir --- contracts/hello-zkvm | 1 - 1 file changed, 1 deletion(-) delete mode 160000 contracts/hello-zkvm diff --git a/contracts/hello-zkvm b/contracts/hello-zkvm deleted file mode 160000 index 8a783d30..00000000 --- a/contracts/hello-zkvm +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8a783d30bb92226fe3b72dc514486b9f045fcf07 From bb4a9b76ea4522c3f2707b2b97e1933986a65c44 Mon Sep 17 00:00:00 2001 From: nakul1010 Date: Wed, 29 Nov 2023 15:42:26 +0530 Subject: [PATCH 015/137] fix: formatting --- src/swap/Btc_Marketplace.sol | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/swap/Btc_Marketplace.sol b/src/swap/Btc_Marketplace.sol index 505442e1..275a0b58 100644 --- a/src/swap/Btc_Marketplace.sol +++ b/src/swap/Btc_Marketplace.sol @@ -298,7 +298,7 @@ contract BtcMarketPlace { } BtcSellOrder[] memory ret = new BtcSellOrder[](numOpenOrders); - uint256[] memory identifiers = new uint[](numOpenOrders); + uint256[] memory identifiers = new uint256[](numOpenOrders); uint256 numPushed = 0; for (uint256 i = 0; i < nextOrderId; i++) { if (btcSellOrders[i].requester != address(0x0)) { @@ -318,10 +318,8 @@ contract BtcMarketPlace { } } - AcceptedBtcSellOrder[] memory ret = new AcceptedBtcSellOrder[]( - numOpenOrders - ); - uint256[] memory identifiers = new uint[](numOpenOrders); + AcceptedBtcSellOrder[] memory ret = new AcceptedBtcSellOrder[](numOpenOrders); + uint256[] memory identifiers = new uint256[](numOpenOrders); uint256 numPushed = 0; for (uint256 i = 0; i < nextOrderId; i++) { if (acceptedBtcSellOrders[i].amountBtc > 0) { @@ -342,7 +340,7 @@ contract BtcMarketPlace { } BtcBuyOrder[] memory ret = new BtcBuyOrder[](numOpenOrders); - uint256[] memory identifiers = new uint[](numOpenOrders); + uint256[] memory identifiers = new uint256[](numOpenOrders); uint256 numPushed = 0; for (uint256 i = 0; i < nextOrderId; i++) { if (btcBuyOrders[i].requester != address(0x0)) { @@ -362,10 +360,8 @@ contract BtcMarketPlace { } } - AcceptedBtcBuyOrder[] memory ret = new AcceptedBtcBuyOrder[]( - numOpenOrders - ); - uint256[] memory identifiers = new uint[](numOpenOrders); + AcceptedBtcBuyOrder[] memory ret = new AcceptedBtcBuyOrder[](numOpenOrders); + uint256[] memory identifiers = new uint256[](numOpenOrders); uint256 numPushed = 0; for (uint256 i = 0; i < nextOrderId; i++) { if (acceptedBtcBuyOrders[i].amountBtc > 0) { From 40bee1c407f19e13b965945c6db153d35976cc98 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Thu, 30 Nov 2023 14:59:26 +0000 Subject: [PATCH 016/137] Add images to ordinal docs --- .../build/examples/metamask-ordinals/index.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/docs/build/examples/metamask-ordinals/index.md b/docs/docs/build/examples/metamask-ordinals/index.md index d7b290a8..6f30cb2e 100644 --- a/docs/docs/build/examples/metamask-ordinals/index.md +++ b/docs/docs/build/examples/metamask-ordinals/index.md @@ -45,7 +45,20 @@ BTC may show in your balance before it is confirmed. If you try to use the appli ### Inscribing a text ordinal -- Click on the 'Inscribe Ordinal' button, enter the inscription text, and submit the form. +- Click on the 'Inscribe Ordinal' button, and then the 'Text' tab. +- Enter the inscription text, and submit the form. +- The ordinal will be shown in the Ordinals Portfolio table (this may take a few seconds) + +### Inscribing an image ordinal + +:::info Supported file types + +Only `png` files are currently supported. + +::: + +- Click on the 'Inscribe Ordinal' button, and then the 'Image' tab. +- Click on Select File (only png files are supported), select your image, and submit the form. - The ordinal will be shown in the Ordinals Portfolio table (this may take a few seconds) ### Transferring an ordinal From 5751bcf1e1b78ddd3510d1cb01736d1ca4e258f1 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Fri, 1 Dec 2023 10:13:27 +0000 Subject: [PATCH 017/137] Update docs to add jpg support --- docs/docs/build/examples/metamask-ordinals/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/build/examples/metamask-ordinals/index.md b/docs/docs/build/examples/metamask-ordinals/index.md index 6f30cb2e..51757a46 100644 --- a/docs/docs/build/examples/metamask-ordinals/index.md +++ b/docs/docs/build/examples/metamask-ordinals/index.md @@ -53,12 +53,12 @@ BTC may show in your balance before it is confirmed. If you try to use the appli :::info Supported file types -Only `png` files are currently supported. +Only `png` and `jpg` files are currently supported. ::: - Click on the 'Inscribe Ordinal' button, and then the 'Image' tab. -- Click on Select File (only png files are supported), select your image, and submit the form. +- Click on Select File (only png and jpg files are supported), select your image, and submit the form. - The ordinal will be shown in the Ordinals Portfolio table (this may take a few seconds) ### Transferring an ordinal From 94d30c91edacb9bf971475e7cb29b95c9d8cdcf7 Mon Sep 17 00:00:00 2001 From: Gregory Hill Date: Tue, 28 Nov 2023 09:03:16 +0000 Subject: [PATCH 018/137] refactor: cleanup ordinals api, commit + reveal, add inscription parsing Signed-off-by: Gregory Hill --- sdk/src/inscription.ts | 116 +++++++ sdk/src/ordinal-api/index.ts | 514 +++++++++++++++++++++++++++++ sdk/src/ordinal-indexer/index.ts | 1 - sdk/src/ordinal-indexer/indexer.ts | 439 ------------------------ sdk/src/ordinals/commit.ts | 75 +++-- sdk/src/ordinals/index.ts | 17 +- sdk/src/ordinals/reveal.ts | 29 +- sdk/src/ordinals/signer.ts | 15 +- sdk/test/indexer.test.ts | 108 ------ sdk/test/inscription.test.ts | 121 +++++++ sdk/test/ordinal-api.test.ts | 113 +++++++ sdk/test/ordinals.test.ts | 25 +- 12 files changed, 965 insertions(+), 608 deletions(-) create mode 100644 sdk/src/inscription.ts create mode 100644 sdk/src/ordinal-api/index.ts delete mode 100644 sdk/src/ordinal-indexer/index.ts delete mode 100644 sdk/src/ordinal-indexer/indexer.ts delete mode 100644 sdk/test/indexer.test.ts create mode 100644 sdk/test/inscription.test.ts create mode 100644 sdk/test/ordinal-api.test.ts diff --git a/sdk/src/inscription.ts b/sdk/src/inscription.ts new file mode 100644 index 00000000..2331b32f --- /dev/null +++ b/sdk/src/inscription.ts @@ -0,0 +1,116 @@ +import * as bitcoin from "bitcoinjs-lib"; +import { ElectrsClient } from "./electrs"; +import { InscriptionId } from "./ordinal-api"; + +// https://github.com/rust-bitcoin/rust-bitcoin/blob/64bd34cffb54603db58efd718bd0b44c86366529/bitcoin/src/taproot.rs#L146 +const TAPROOT_ANNEX_PREFIX = 0x50; + +// https://github.com/ordinals/ord/blob/3bdbb00f57d06935f6ea78f115fca471ca8941be/src/envelope.rs#L9-L17 +export const PROTOCOL_ID = Buffer.from("6f7264", "hex"); + +const CONTENT_TYPE_TAG = bitcoin.opcodes.OP_1; +const CONTENT_ENCODING_TAG = bitcoin.opcodes.OP_9; + +// https://github.com/rust-bitcoin/rust-bitcoin/blob/8aa5501827a0dd5b27abf304a5f9bdefb07a2cc6/bitcoin/src/blockdata/witness.rs#L386-L406 +function getTapscript(witness: Buffer[]) { + const len = witness.length; + const last = witness[len - 1]; + if (typeof last === 'undefined') { + return null; + } + let scriptPosFromLast = 2; + if (len >= 2 && last[0] == TAPROOT_ANNEX_PREFIX) { + scriptPosFromLast = 3 + } + if (typeof witness[len - scriptPosFromLast] === 'undefined') { + return null; + } + return bitcoin.script.decompile(witness[len - scriptPosFromLast]); +} + +interface Tags { [key: number]: Buffer | null }; +interface Inscription { + tags: Tags, + body: Buffer[], +} + +export function getContentType(inscription: Inscription): string | null { + const data: Buffer | null = inscription.tags[CONTENT_TYPE_TAG]; + if (Buffer.isBuffer(data)) { + return data.toString("utf-8"); + } + return null; +} + +export function getContentEncoding(inscription: Inscription): string | null { + const data: Buffer | null = inscription.tags[CONTENT_ENCODING_TAG]; + if (Buffer.isBuffer(data)) { + return data.toString("utf-8"); + } + return null; +} + +export function parseInscriptions(tx: bitcoin.Transaction) { + let inscriptions: Inscription[] = []; + + for (const txInput of tx.ins) { + const tapscript = getTapscript(txInput.witness); + if (tapscript == null) { + continue; + } + + const chunks = tapscript.values(); + for (let chunk = chunks.next(); !chunk.done; chunk = chunks.next()) { + // envelope is `OP_FALSE OP_IF ... OP_ENDIF` + if (chunk.value != bitcoin.opcodes.OP_FALSE) { + continue; + } + if (chunks.next().value != bitcoin.opcodes.OP_IF) { + continue; + } + + // check next push is "ord" + const data = chunks.next().value; + if (!Buffer.isBuffer(data) && !data.equals(PROTOCOL_ID)) { + continue; + } + + let tags: Tags = {}; + let body: Buffer[] = []; + let isBody = false; + for (let chunk = chunks.next(); !chunk.done; chunk = chunks.next()) { + if (chunk.value == bitcoin.opcodes.OP_ENDIF) { + inscriptions.push({ tags, body }); + break; + } else if (chunk.value == bitcoin.opcodes.OP_0) { + // `OP_PUSH 0` indicates that subsequent data pushes contain the content itself + isBody = true; + continue; + } + // fields are before body, e.g. `OP_PUSH 1` is content type + if (!isBody) { + const data = chunks.next().value; + if (typeof chunk.value == 'number' && Buffer.isBuffer(data)) { + tags[chunk.value] = data; + } + } else if (Buffer.isBuffer(chunk.value)) { + body.push(chunk.value); + } + } + } + } + + return inscriptions; +} + +export async function getTxInscriptions(electrsClient: ElectrsClient, txid: string) { + const txHex = await electrsClient.getTransactionHex(txid); + const tx = bitcoin.Transaction.fromHex(txHex); + return parseInscriptions(tx); +} + +export async function getInscriptionFromId(electrsClient: ElectrsClient, inscriptionId: string) { + const { txid, index } = InscriptionId.fromString(inscriptionId); + const inscriptions = await getTxInscriptions(electrsClient, txid); + return inscriptions[index]; +} \ No newline at end of file diff --git a/sdk/src/ordinal-api/index.ts b/sdk/src/ordinal-api/index.ts new file mode 100644 index 00000000..dcb7172a --- /dev/null +++ b/sdk/src/ordinal-api/index.ts @@ -0,0 +1,514 @@ +/** + * Base path for Ordinals regtest Explorer. + * @default "http://0.0.0.0:3003" + */ +export const REGTEST_ORD_BASE_PATH = "http://0.0.0.0:3003"; + +/** + * Base path for Ordinals mainnet Explorer. + * @default "https://ordinals-mainnet.gobob.xyz" + */ +export const MAINNET_ORD_BASE_PATH = "https://ordinals-mainnet.gobob.xyz"; + +/** + * Base path for Ordinals testnet Explorer. + * @default "https://ordinals-testnet.gobob.xyz" + */ +export const TESTNET_ORD_BASE_PATH = "https://ordinals-testnet.gobob.xyz"; + +// https://github.com/ordinals/ord/blob/e39031a46531696e5dd0c853146f8bfab5b7582c/src/inscription_id.rs#L4-L7 +export type InscriptionId = { + txid: string; + index: number; +}; + +export module InscriptionId { + export function toString(id: InscriptionId): string { + return `${id.txid}i${id.index}`; + } + + export function fromString(id: string): InscriptionId { + // TODO: throw error if invalid? + const [txid, index] = id.split("i"); + return { + txid, + index: parseInt(index, 10), + }; + } +} + +// https://github.com/rust-bitcoin/rust-bitcoin/blob/ee787c64810e4bce9c3c5e6e29da83010820a6c2/bitcoin/src/blockdata/transaction.rs#L50-L55 +export type OutPoint = { + txid: string; + vout: number; +} + +export module OutPoint { + export function toString(id: OutPoint): string { + return `${id.txid}:${id.vout}`; + } + + export function fromString(id: string): OutPoint { + // TODO: throw error if invalid? + const [txid, vout] = id.split(":"); + return { + txid, + vout: parseInt(vout, 10), + }; + } +} + +// https://github.com/ordinals/ord/blob/5a9872bd96801987031217d6203d295b07f5e022/src/sat_point.rs#L4-L7 +export type SatPoint = { + outpoint: OutPoint; + offset: number; +} + +export module SatPoint { + export function toString(id: SatPoint): string { + return `${OutPoint.toString(id.outpoint)}:${id.offset}`; + } + + export function fromString(id: string): SatPoint { + // TODO: throw error if invalid? + const [txid, vout, offset] = id.split(":"); + return { + outpoint: { + txid, + vout: parseInt(vout, 10), + }, + offset: parseInt(offset, 10), + }; + } +} + +/** + * @ignore + */ +// https://github.com/ordinals/ord/blob/e39031a46531696e5dd0c853146f8bfab5b7582c/src/templates/inscriptions.rs#L11-L17 +export interface InscriptionsJson { + /** + * An array of inscription ids. + */ + inscriptions: InscriptionId[]; + + /** + * The previous entry. + */ + prev: number | null; + + /** + * The next entry. + */ + next: number | null; + + /** + * The lowest value. + */ + lowest: number | null; + + /** + * The highest value. + */ + highest: number | null; +} + +/** + * @ignore + */ +// https://github.com/ordinals/ord/blob/e39031a46531696e5dd0c853146f8bfab5b7582c/src/templates/output.rs#L14-L22 +export interface OutputJson { + /** + * The value of the UTXO. + */ + value: number; + + /** + * The scriptPubKey associated with the UTXO. + */ + script_pubkey: string; + + /** + * The address associated with the UTXO. + */ + address: string | null; + + /** + * The transaction related to the UTXO. + */ + transaction: string; + + /** + * The SAT ranges. + */ + sat_ranges: string | null; + + /** + * An array of inscription ids. + */ + inscriptions: string[]; + + /** + * A map of runes. + */ + runes: Record; +} + +/** + * @ignore + */ +// https://github.com/ordinals/ord/blob/e39031a46531696e5dd0c853146f8bfab5b7582c/src/templates/sat.rs#L12-L27 +export interface SatJson { + /** + * The number of the ordinal. + */ + number: number; + + /** + * The decimal representation of the ordinal. + */ + decimal: string; + + /** + * The degree representation of the ordinal. + */ + degree: string; + + /** + * The name of the ordinal. + */ + name: string; + + /** + * The block associated with the ordinal. + */ + block: number; + + /** + * The cycle associated with the ordinal. + */ + cycle: number; + + /** + * The epoch associated with the ordinal. + */ + epoch: number; + + /** + * The period associated with the ordinal. + */ + period: number; + + /** + * The offset associated with the ordinal. + */ + offset: number; + + /** + * The rarity of the ordinal. + */ + rarity: string; + + /** + * The percentile representation of the ordinal. + */ + percentile: string; + + /** + * The SAT point of the ordinal. + */ + satpoint: string | null; + + /** + * The timestamp of the ordinal. + */ + timestamp: number; + + /** + * An array of inscription ids. + */ + inscriptions: InscriptionId[]; +} + +/** + * @ignore + */ +// https://github.com/ordinals/ord/blob/e39031a46531696e5dd0c853146f8bfab5b7582c/src/templates/inscription.rs#L23-L40 +export interface InscriptionJson { + /** + * The address associated with the inscription. + */ + address: string | null; + + /** + * An array of child IDs. + */ + children: InscriptionId[]; + + /** + * The length of the content. + */ + content_length: number | null; + + /** + * The content type of the inscription. + */ + content_type: string | null; + + /** + * The genesis fee of the inscription. + */ + genesis_fee: number; + + /** + * The genesis height of the inscription. + */ + genesis_height: number; + + /** + * The ID of the inscription. + */ + inscription_id: InscriptionId; + + /** + * The number of the inscription. + */ + inscription_number: number; + + /** + * The next inscription ID. + */ + next: InscriptionId | null; + + /** + * The output value of the inscription. + */ + output_value: number | null; + + /** + * The parent inscription ID. + */ + parent: InscriptionId | null; + + /** + * The previous inscription ID. + */ + previous: InscriptionId | null; + + /** + * The rune associated with the inscription. + */ + rune: string | null; + + /** + * The SAT associated with the inscription. + */ + sat: string | null; + + /** + * The SAT point of the inscription, this is the current UTXO. + */ + satpoint: SatPoint; + + /** + * The timestamp of the inscription. + */ + timestamp: number; +} + + +export interface OrdinalsClient { + /** + * Retrieves an inscription based on its ID. + * @param {string} id - The ID of the inscription to retrieve. + * @returns {Promise} A Promise that resolves to the inscription data. + * + * @example + * ```typescript + * const client = new DefaultOrdinalsClient("regtest"); + * let inscriptionId = InscriptionId.fromString("enter_your_inscription_id_here"); + * const inscription = await client.getInscriptionFromId(inscriptionId); + * console.log("Inscription:", inscription); + * ``` + */ + getInscriptionFromId(id: InscriptionId): Promise>; + + /** + * Retrieves a list of inscriptions. + * @returns {Promise>} A Promise that resolves to a inscriptions data. + * + * @example + * ```typescript + * const client = new DefaultOrdinalsClient("regtest"); + * const inscriptions = await client.getInscriptions(); + * console.log("Inscriptions:", inscriptions); + * ``` + */ + getInscriptions(): Promise>; + + /** + * Retrieves an inscription based on its block height. + * @param {number} height - The block height of the inscription to retrieve. + * @returns {Promise>} A Promise that resolves to the inscription data. + * + * @example + * ```typescript + * const client = new DefaultOrdinalsClient("regtest"); + * let block: number = "enter_your_block_number_here"; + * const inscriptions = await client.getInscriptionsFromBlock(block); + * console.log("Inscriptions:", inscriptions); + * ``` + */ + getInscriptionsFromBlock(height: number): Promise>; + + /** + * Retrieves inscriptions based on the UTXO (Unspent Transaction Output). + * @param {OutPoint} outPoint - The ID and output index of the UTXO. + * @returns {Promise} A Promise that resolves to the inscription data. + * + * @example + * ```typescript + * const client = new DefaultOrdinalsClient("regtest"); + * let txid: string = "enter_your_utxo_txid_here"; + * let vout = 0; // enter the UTXO index here + * const output = await client.getInscriptionsFromOutPoint({ txid, vout }); + * console.log("Output:", output); + * ``` + */ + getInscriptionsFromOutPoint(outPoint: OutPoint): Promise; + + /** + * Retrieves an inscription based on its sat (something specific to your use case). + * @param {number} sat - The sat of the inscription to retrieve. + * @returns {Promise>} A Promise that resolves to the SatJson data type. + * + * @example + * ```typescript + * const client = new DefaultOrdinalsClient("regtest"); + * let sat: number = 0 // enter the sat number here + * const inscriptions = await client.getInscriptionsFromSat(sat); + * console.log("Inscriptions:", inscriptions); + * ``` + */ + getInscriptionsFromSat(sat: number): Promise>; + + /** + * Retrieves a list of inscriptions starting from a specified block and moving forward. + * @param {number} startHeight - The start block height. + * @returns {Promise>} A Promise that resolves to the inscription data. + * + * @example + * ```typescript + * const client = new DefaultOrdinalsClient("regtest"); + * let startBlock: number = "enter_your_block_number_here"; + * const inscriptions = await client.getInscriptionsFromStartBlock(block); + * console.log("Inscriptions:", inscriptions); + * ``` + */ + getInscriptionsFromStartBlock(startHeight: number): Promise>; +} + +export class DefaultOrdinalsClient implements OrdinalsClient { + private basePath: string; + + constructor(networkOrUrl: string = "mainnet") { + switch (networkOrUrl) { + case "mainnet": + this.basePath = MAINNET_ORD_BASE_PATH; + break; + case "testnet": + this.basePath = TESTNET_ORD_BASE_PATH; + break; + case "regtest": + this.basePath = REGTEST_ORD_BASE_PATH; + break; + default: + this.basePath = networkOrUrl; + } + } + + /** + * @ignore + */ + async getInscriptionFromId(id: InscriptionId): Promise> { + const inscriptionJson = await this.getJson>(`${this.basePath}/inscription/${InscriptionId.toString(id)}`); + return { + ...inscriptionJson, + children: inscriptionJson.children.map(InscriptionId.fromString), + inscription_id: InscriptionId.fromString(inscriptionJson.inscription_id), + next: (inscriptionJson.next != null) ? InscriptionId.fromString(inscriptionJson.next) : null, + parent: (inscriptionJson.parent != null) ? InscriptionId.fromString(inscriptionJson.parent) : null, + previous: (inscriptionJson.previous != null) ? InscriptionId.fromString(inscriptionJson.previous) : null, + satpoint: SatPoint.fromString(inscriptionJson.satpoint), + }; + } + + /** + * @ignore + */ + async getInscriptions(): Promise> { + // TODO: add filtering, sorting and pagination based on different parameters + const inscriptionsJson = await this.getJson>(`${this.basePath}/inscriptions`); + return this.parseInscriptionsJson(inscriptionsJson); + } + + /** + * @ignore + */ + async getInscriptionsFromBlock(height: number): Promise> { + const inscriptionsJson = await this.getJson>(`${this.basePath}/inscriptions/block/${height}`); + return this.parseInscriptionsJson(inscriptionsJson); + } + + /** + * @ignore + */ + async getInscriptionsFromOutPoint(outPoint: OutPoint): Promise { + return await this.getJson(`${this.basePath}/output/${OutPoint.toString(outPoint)}`); + } + + /** + * @ignore + */ + async getInscriptionsFromSat(sat: number): Promise> { + const satJson = await this.getJson>(`${this.basePath}/sat/${sat}`); + return { + ...satJson, + inscriptions: satJson.inscriptions.map(id => InscriptionId.fromString(id)), + }; + } + + /** + * @ignore + */ + async getInscriptionsFromStartBlock(startHeight: number): Promise> { + const inscriptionsJson = await this.getJson>(`${this.basePath}/inscriptions/${startHeight}`); + return this.parseInscriptionsJson(inscriptionsJson); + } + + /** + * @ignore + */ + async getJson(url: string): Promise { + const response = await fetch(url, { + headers: { + 'Accept': 'application/json', + }, + }); + if (!response.ok) { + throw new Error(response.statusText); + } + return await response.json() as Promise; + } + + /** + * @ignore + */ + parseInscriptionsJson(inscriptionsJson: InscriptionsJson): InscriptionsJson { + const ids = inscriptionsJson.inscriptions.map(id => InscriptionId.fromString(id)); + return { + ...inscriptionsJson, + inscriptions: ids, + }; + } +} diff --git a/sdk/src/ordinal-indexer/index.ts b/sdk/src/ordinal-indexer/index.ts deleted file mode 100644 index f69d5a86..00000000 --- a/sdk/src/ordinal-indexer/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./indexer"; \ No newline at end of file diff --git a/sdk/src/ordinal-indexer/indexer.ts b/sdk/src/ordinal-indexer/indexer.ts deleted file mode 100644 index 302b8c17..00000000 --- a/sdk/src/ordinal-indexer/indexer.ts +++ /dev/null @@ -1,439 +0,0 @@ -/** - * Base path for Ordinals regtest Explorer. - * @default "http://0.0.0.0:3003" - */ -export const REGTEST_ORD_BASE_PATH = "http://0.0.0.0:3003"; - -/** - * Base path for Ordinals mainnet Explorer. - * @default "https://ordinals-mainnet.gobob.xyz" - */ -export const MAINNET_ORD_BASE_PATH = "https://ordinals-mainnet.gobob.xyz"; - -/** - * Base path for Ordinals testnet Explorer. - * @default "https://ordinals-testnet.gobob.xyz" - */ -export const TESTNET_ORD_BASE_PATH = "https://ordinals-testnet.gobob.xyz"; - - -/** - * @ignore - */ -export type InscriptionId = string & { length: 64 }; - -/** - * @ignore - */ -export type InscriptionIds = InscriptionId[]; - - -/** - * @ignore - */ -export interface InscriptionsData { - /** - * An array of inscription ids. - */ - inscriptions: InscriptionIds[]; - - /** - * The previous entry. - */ - prev: string; - - /** - * The next entry. - */ - next: string; - - /** - * The lowest value. - */ - lowest: number; - - /** - * The highest value. - */ - highest: number; -} - -/** - * @ignore - */ -export interface InscriptionUTXO { - /** - * The value of the UTXO. - */ - value: number; - - /** - * The address associated with the UTXO. - */ - address: string; - - /** - * The transaction related to the UTXO. - */ - transaction: string; - - /** - * The SAT ranges. - */ - sat_ranges: string; - - /** - * An array of inscription ids. - */ - inscriptions: InscriptionIds[]; - - /** - * A map of runes. - */ - runes: Record; -} - -/** - * @ignore - */ -export interface Ordinal { - /** - * The number of the ordinal. - */ - number: number; - - /** - * The decimal representation of the ordinal. - */ - decimal: string; - - /** - * The degree representation of the ordinal. - */ - degree: string; - - /** - * The name of the ordinal. - */ - name: string; - - /** - * The block associated with the ordinal. - */ - block: number; - - /** - * The cycle associated with the ordinal. - */ - cycle: number; - - /** - * The epoch associated with the ordinal. - */ - epoch: number; - - /** - * The period associated with the ordinal. - */ - period: number; - - /** - * The offset associated with the ordinal. - */ - offset: number; - - /** - * The rarity of the ordinal. - */ - rarity: string; - - /** - * The percentile representation of the ordinal. - */ - percentile: string; - - /** - * The SAT point of the ordinal. - */ - satpoint: string; - - /** - * The timestamp of the ordinal. - */ - timestamp: number; - - /** - * An array of inscription ids. - */ - inscriptions: InscriptionIds[]; -} - -/** - * @ignore - */ -export interface InscriptionDataFromId { - /** - * The address associated with the inscription. - */ - address: string; - - /** - * An array of child IDs. - */ - children: string[]; - - /** - * The length of the content. - */ - content_length: number; - - /** - * The content type of the inscription. - */ - content_type: string; - - /** - * The genesis fee of the inscription. - */ - genesis_fee: number; - - /** - * The genesis height of the inscription. - */ - genesis_height: number; - - /** - * The ID of the inscription. - */ - inscription_id: string; - - /** - * The number of the inscription. - */ - inscription_number: number; - - /** - * The next inscription ID. - */ - next: string; - - /** - * The output value of the inscription. - */ - output_value: number; - - /** - * The parent inscription ID. - */ - parent: InscriptionId; - - /** - * The previous inscription ID. - */ - previous: InscriptionId; - - /** - * The rune associated with the inscription. - */ - rune: string; - - /** - * The SAT associated with the inscription. - */ - sat: string; - - /** - * The SAT point of the inscription. - */ - satpoint: string; - - /** - * The timestamp of the inscription. - */ - timestamp: number; -} - - -export interface OrdinalsClient { - /** - * Retrieves an inscription based on its ID. - * @param {string} id - The ID of the inscription to retrieve. - * @returns {Promise} A Promise that resolves to the inscription data. - * - * @example - * ```typescript - * const client = new DefaultOrdinalsClient("regtest"); - * let inscription_id: InscriptionId = "enter_your_inscription_id_here" as InscriptionId; - * const inscriptions: InscriptionDataFromId = await client.getInscriptionFromId(id); - * console.log("Inscriptions Data:", inscriptions); - * ``` - */ - getInscriptionFromId(id: InscriptionId): Promise; - - /** - * Retrieves a list of inscriptions. - * @returns {Promise} A Promise that resolves to a inscriptions data. - * - * @example - * ```typescript - * const client = new DefaultOrdinalsClient("regtest"); - * const inscriptions: InscriptionsData = await client.getInscriptions(); - * console.log("Inscriptions Data:", inscriptions); - * ``` - */ - getInscriptions(): Promise; - - /** - * Retrieves an inscription based on its block height. - * @param {number} height - The block height of the inscription to retrieve. - * @returns {Promise} A Promise that resolves to the inscription data. - * - * @example - * ```typescript - * const client = new DefaultOrdinalsClient("regtest"); - * let block: number = "enter_your_block_number_here"; - * const inscriptions: InscriptionsData = await client.getInscriptionsFromBlock(block); - * console.log("Inscriptions Data:", inscriptions); - * ``` - */ - getInscriptionsFromBlock(height: number): Promise; - - /** - * Retrieves an inscription based on its UTXO (Unspent Transaction Output). - * @param {string} utxo - The UTXO of the inscription to retrieve. - * @returns {Promise} A Promise that resolves to the inscription data. - * - * @example - * ```typescript - * const client = new DefaultOrdinalsClient("regtest"); - * let utxo: string = "enter_your_utxo_here"; - * const inscriptions: InscriptionUTXO = await client.getInscriptionFromUTXO(utxo); - * console.log("Inscriptions Data:", inscriptions); - * ``` - */ - getInscriptionFromUTXO(utxo: string): Promise; - - /** - * Retrieves an inscription based on its sat (something specific to your use case). - * @param {number} sat - The sat of the inscription to retrieve. - * @returns {Promise} A Promise that resolves to the ordinal data type. - * - * @example - * ```typescript - * const client = new DefaultOrdinalsClient("regtest"); - * let sat: string = "enter_your_sat_number_here"; - * const ordinal: Ordinal = await client.getInscriptionsFromSat(sat); - * console.log("Ordinal Data:", inscriptions); - * ``` - */ - getInscriptionsFromSat(sat: number): Promise; - - /** - * Retrieves a list of inscriptions starting from a specified block and moving forward. - * @param {number} startHeight - The start block height. - * @returns {Promise} A Promise that resolves to the inscription data. - * - * @example - * ```typescript - * const client = new DefaultOrdinalsClient("regtest"); - * let startBlock: number = "enter_your_block_number_here"; - * const inscriptions: InscriptionsData = await client.getInscriptionsFromStartBlock(block); - * console.log("Inscriptions Data:", inscriptions); - * ``` - */ - getInscriptionsFromStartBlock(startHeight: number): Promise; -} - -export class DefaultOrdinalsClient implements OrdinalsClient { - private basePath: string; - - constructor(networkOrUrl: string = "mainnet") { - switch (networkOrUrl) { - case "mainnet": - this.basePath = MAINNET_ORD_BASE_PATH; - break; - case "testnet": - this.basePath = TESTNET_ORD_BASE_PATH; - break; - case "regtest": - this.basePath = REGTEST_ORD_BASE_PATH; - break; - default: - this.basePath = networkOrUrl; - } - } - - /** - * @ignore - */ - async getInscriptionFromId(id: InscriptionId): Promise { - return await this.getJson(`${this.basePath}/inscription/${id}`); - } - - /** - * @ignore - */ - async getInscriptions(): Promise { - //ToDo: add filtering, sorting and pagination based on different parameters - return await this.getJson(`${this.basePath}/inscriptions`); - } - - /** - * @ignore - */ - async getInscriptionsFromBlock(height: number): Promise { - return await this.getJson(`${this.basePath}/inscriptions/block/${height}`); - } - - /** - * @ignore - */ - async getInscriptionFromUTXO(utxo: string): Promise { - const response = await this.getJson<{ - "value": number; - "address": string; - "transaction": string; - "sat_ranges": string; - "inscriptions": InscriptionIds[]; - "runes": Record; - }>(`${this.basePath}/output/${utxo}`); - return { - value: response.value, - address: response.address, - transaction: response.transaction, - sat_ranges: response.sat_ranges, - inscriptions: response.inscriptions, - runes: response.runes, - }; - - } - - /** - * @ignore - */ - async getInscriptionsFromSat(sat: number): Promise { - return await this.getJson(`${this.basePath}/sat/${sat}`); - } - - /** - * @ignore - */ - async getInscriptionsFromStartBlock(startHeight: number): Promise { - return await this.getJson(`${this.basePath}/inscriptions/${startHeight}`); - } - - /** - * @ignore - */ - async getJson(url: string): Promise { - const response = await fetch(url, { - headers: { - 'Accept': 'application/json', - }, - }); - if (!response.ok) { - throw new Error(response.statusText); - } - return await response.json() as Promise; - } -} diff --git a/sdk/src/ordinals/commit.ts b/sdk/src/ordinals/commit.ts index 5118aeb8..0aa83bd6 100644 --- a/sdk/src/ordinals/commit.ts +++ b/sdk/src/ordinals/commit.ts @@ -1,12 +1,12 @@ -import * as bitcoinjsLib from "bitcoinjs-lib"; +import * as bitcoin from "bitcoinjs-lib"; const encoder = new TextEncoder(); -function toXOnly(pubkey: Buffer) { - return pubkey.subarray(1, 33); -} +// individual data pushes may not be larger than 520 bytes +export const MAX_CHUNK_SIZE = 520; -interface Inscription { +export interface Inscription { + // MIME type contentType: Buffer; content: Buffer; } @@ -15,32 +15,52 @@ interface Inscription { * Create a basic text inscription. */ export function createTextInscription(text: string): Inscription { - const contentType = Buffer.from(encoder.encode("text/plain;charset=utf-8")); - const content = Buffer.from(encoder.encode(text)); - return { contentType, content }; + return createInscription( + "text/plain;charset=utf-8", + Buffer.from(encoder.encode(text)) + ); +} + +/** + * Create an inscription. + */ +export function createInscription(contentType: string, content: Buffer): Inscription { + return { + // e.g. `image/png` + contentType: Buffer.from(encoder.encode(contentType)), + content + }; } -function createInscriptionScript(xOnlyPublicKey: Buffer, inscription: Inscription) { +export function chunkContent(data: Buffer) { + const body: Buffer[] = []; + let start = 0; + while (start < data.length) { + body.push(data.subarray(start, start + MAX_CHUNK_SIZE)); + start += MAX_CHUNK_SIZE; + } + return body; +} + +export function createInscriptionScript(xOnlyPublicKey: Buffer, inscription: Inscription) { const protocolId = Buffer.from(encoder.encode("ord")); return [ xOnlyPublicKey, - bitcoinjsLib.opcodes.OP_CHECKSIG, - bitcoinjsLib.opcodes.OP_0, - bitcoinjsLib.opcodes.OP_IF, + bitcoin.opcodes.OP_CHECKSIG, + bitcoin.opcodes.OP_0, + bitcoin.opcodes.OP_IF, protocolId, 1, - 1, + 1, // NOTE: Buffer.from([1]) is replaced here https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/src/script.js#L53 inscription.contentType, - bitcoinjsLib.opcodes.OP_0, - inscription.content, - bitcoinjsLib.opcodes.OP_ENDIF, + bitcoin.opcodes.OP_0, + ...chunkContent(inscription.content), + bitcoin.opcodes.OP_ENDIF, ]; } export interface CommitTxData { - script: (number | Buffer)[]; - scriptTaproot: bitcoinjsLib.payments.Payment; - outputScript: Buffer; + scriptTaproot: bitcoin.payments.Payment; tapLeafScript: { leafVersion: number; script: Buffer; @@ -48,26 +68,30 @@ export interface CommitTxData { } } +function toXOnly(pubkey: Buffer) { + return pubkey.subarray(1, 33); +} + /** * Create the commit tx of the input public key and inscription data. * @dev Requires caller to initialize ECC lib. */ export function createCommitTxData( - network: bitcoinjsLib.Network, + network: bitcoin.Network, publicKey: Buffer, inscription: Inscription ): CommitTxData { const xOnlyPublicKey = toXOnly(publicKey); const script = createInscriptionScript(xOnlyPublicKey, inscription); - const outputScript = bitcoinjsLib.script.compile(script); + const outputScript = bitcoin.script.compile(script); const scriptTree = { output: outputScript, redeemVersion: 192, // 0xc0 }; - const scriptTaproot = bitcoinjsLib.payments.p2tr({ + const scriptTaproot = bitcoin.payments.p2tr({ internalPubkey: xOnlyPublicKey, scriptTree, redeem: scriptTree, @@ -83,15 +107,8 @@ export function createCommitTxData( }; return { - script, scriptTaproot, - outputScript, tapLeafScript, }; } -export interface CommitTxResult { - txId: string; - sendUtxoIndex: number; - sendAmount: number; -} diff --git a/sdk/src/ordinals/index.ts b/sdk/src/ordinals/index.ts index 1d4133be..637b38a8 100644 --- a/sdk/src/ordinals/index.ts +++ b/sdk/src/ordinals/index.ts @@ -1,4 +1,4 @@ -import * as bitcoinjsLib from "bitcoinjs-lib"; +import * as bitcoin from "bitcoinjs-lib"; import { DummySigner, RemoteSigner } from "./signer"; import { CommitTxData, createCommitTxData, createTextInscription } from "./commit"; @@ -10,13 +10,13 @@ export { RemoteSigner }; * Estimate the virtual size of a 1 input 1 output reveal tx. */ function estimateTxSize( - network: bitcoinjsLib.Network, + network: bitcoin.Network, publicKey: Buffer, commitTxData: CommitTxData, toAddress: string, amount: number, ) { - const psbt = new bitcoinjsLib.Psbt({ network }); + const psbt = new bitcoin.Psbt({ network }); const { scriptTaproot, tapLeafScript } = commitTxData; psbt.addInput({ @@ -73,12 +73,15 @@ export async function inscribeText( const commitAddress = commitTxData.scriptTaproot.address!; const commitTxId = await signer.sendToAddress(commitAddress, commitTxAmount); - const commitUtxoIndex = await signer.getUtxoIndex(commitAddress, commitTxId); + const commitTx = await signer.getTransaction(commitTxId); + + const scriptPubKey = bitcoin.address.toOutputScript(commitAddress, bitcoinNetwork); + const commitUtxoIndex = commitTx.outs.findIndex(out => out.script.equals(scriptPubKey)); const commitTxResult = { - txId: commitTxId, - sendUtxoIndex: commitUtxoIndex, - sendAmount: commitTxAmount, + tx: commitTx, + outputIndex: commitUtxoIndex, + outputAmount: commitTxAmount, }; const revealPsbt = createRevealTx( diff --git a/sdk/src/ordinals/reveal.ts b/sdk/src/ordinals/reveal.ts index 65c6a34a..4249b714 100644 --- a/sdk/src/ordinals/reveal.ts +++ b/sdk/src/ordinals/reveal.ts @@ -1,16 +1,22 @@ -import * as bitcoinjsLib from "bitcoinjs-lib"; +import * as bitcoin from "bitcoinjs-lib"; import * as psbtUtils from "bitcoinjs-lib/src/psbt/psbtutils"; import { RemoteSigner } from "./signer"; -import { CommitTxData, CommitTxResult } from "./commit"; +import { CommitTxData } from "./commit"; const { witnessStackToScriptWitness } = psbtUtils; +export interface CommitTxResult { + tx: bitcoin.Transaction; + outputIndex: number; + outputAmount: number; +} + /** * Create the reveal tx which spends the commit tx. */ export function createRevealTx( - network: bitcoinjsLib.Network, + network: bitcoin.Network, commitTxData: CommitTxData, commitTxResult: CommitTxResult, toAddress: string, @@ -18,15 +24,16 @@ export function createRevealTx( ) { const { scriptTaproot, tapLeafScript } = commitTxData; - const psbt = new bitcoinjsLib.Psbt({ network }); + const psbt = new bitcoin.Psbt({ network }); psbt.addInput({ - hash: commitTxResult.txId, - index: commitTxResult.sendUtxoIndex, + hash: commitTxResult.tx.getId(), + index: commitTxResult.outputIndex, witnessUtxo: { - value: commitTxResult.sendAmount, + value: commitTxResult.outputAmount, script: scriptTaproot.output!, }, + nonWitnessUtxo: commitTxResult.tx.toBuffer(), tapLeafScript: [tapLeafScript], }); @@ -39,11 +46,11 @@ export function createRevealTx( } export const customFinalizer = (commitTxData: CommitTxData) => { - const { outputScript, tapLeafScript } = commitTxData; + const { tapLeafScript } = commitTxData; return (inputIndex: number, input: any) => { const witness = [input.tapScriptSig[inputIndex].signature] - .concat(outputScript) + .concat(tapLeafScript.script) .concat(tapLeafScript.controlBlock); return { @@ -55,10 +62,10 @@ export const customFinalizer = (commitTxData: CommitTxData) => { export async function signRevealTx( signer: RemoteSigner, commitTxData: CommitTxData, - psbt: bitcoinjsLib.Psbt + psbt: bitcoin.Psbt ) { // reveal should only have one input - psbt = await signer.signPsbt(0, psbt); + psbt = await signer.signInput(0, psbt); // we have to construct our witness script in a custom finalizer psbt.finalizeInput(0, customFinalizer(commitTxData)); diff --git a/sdk/src/ordinals/signer.ts b/sdk/src/ordinals/signer.ts index 40e5a87c..f400e135 100644 --- a/sdk/src/ordinals/signer.ts +++ b/sdk/src/ordinals/signer.ts @@ -1,4 +1,4 @@ -import { Network, Psbt, Signer } from "bitcoinjs-lib"; +import { Network, Psbt, Signer, Transaction } from "bitcoinjs-lib"; /** * Dummy signer implementation used to estimate tx fees. @@ -10,7 +10,7 @@ export class DummySigner implements Signer { } sign(_hash: Buffer, _lowR?: boolean | undefined): Buffer { // https://github.com/bitcoin/bitcoin/blob/607d5a46aa0f5053d8643a3e2c31a69bfdeb6e9f/src/script/sign.cpp#L611 - return Buffer.from("304502210100000000000000000000000000000000000000000000000000000000000000000220010000000000000000000000000000000000000000000000000000000000000001", "hex"); + return Buffer.alloc(64, 0); } signSchnorr(hash: Buffer): Buffer { // https://github.com/bitcoin/bitcoin/blob/607d5a46aa0f5053d8643a3e2c31a69bfdeb6e9f/src/script/sign.cpp#L626 @@ -40,13 +40,12 @@ export interface RemoteSigner { */ sendToAddress(toAddress: string, amount: number): Promise; /** - * Get the index of a UTXO in a transaction based on the recipient address. + * Get the transaction based on its ID. * - * @param {string} toAddress - The address of the recipient. - * @param {string} txId - The transaction ID to check. - * @returns {Promise} A promise that resolves to the UTXO index. + * @param {string} txId - The transaction ID to fetch. + * @returns {Promise} A promise that resolves to the hex encoded transaction. */ - getUtxoIndex(toAddress: string, txId: string): Promise; + getTransaction(txId: string): Promise; /** * Sign the PSBT at the specified input index. * @@ -54,5 +53,5 @@ export interface RemoteSigner { * @param {Psbt} psbt - The PSBT containing that input. * @returns {Promise} A promise that resolves to the signed PSBT. */ - signPsbt(inputIndex: number, psbt: Psbt): Promise; + signInput(inputIndex: number, psbt: Psbt): Promise; }; diff --git a/sdk/test/indexer.test.ts b/sdk/test/indexer.test.ts deleted file mode 100644 index 8d11698a..00000000 --- a/sdk/test/indexer.test.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { - DefaultOrdinalsClient, - Ordinal, - InscriptionsData, - InscriptionUTXO, - InscriptionDataFromId, InscriptionId, -} from '../src/ordinal-indexer/indexer'; -import {assert} from "chai"; - - -describe("Indexer Tests", () => { - it("should get inscriptions from id", async () => { - const client = new DefaultOrdinalsClient("testnet"); - const inscriptionId: InscriptionId = "74c86592f75716a14a534898913e6077fb5d7650cfc17600868964bbe2b7e512i0" as InscriptionId; - const inscriptions: InscriptionDataFromId = await client.getInscriptionFromId(inscriptionId); - - const expectedInscription: InscriptionDataFromId = { - address: 'tb1pfwdp9xswfxcd4f33mxgqul6f56gt7q9v5gjmrtgs4xs3ezxks03swrsr2d', - children: [], - content_length: 868, - content_type: 'text/javascript', - genesis_fee: 395, - genesis_height: 2537128, - inscription_id: '74c86592f75716a14a534898913e6077fb5d7650cfc17600868964bbe2b7e512i0', - inscription_number: 560474, - next: 'dd90d8222da2a6f3260109b1e4d1a2c341d999fce4707b1d77e49956a51a0305i0', - output_value: 546, - parent: null as InscriptionId, - previous: '332d3fae125de51de29e97cd9e80aab7c63025d5094944a3dceb117c556c41cci0' as InscriptionId, - rune: null, - sat: null, - satpoint: '74c86592f75716a14a534898913e6077fb5d7650cfc17600868964bbe2b7e512:0:0', - timestamp: 1699246476 - }; - - assert.deepStrictEqual(expectedInscription, inscriptions); - }); - - it("should get inscriptions", async () => { - const client = new DefaultOrdinalsClient("testnet"); - const inscriptions: InscriptionsData = await client.getInscriptions(); - // Assert that inscriptions is not null or undefined - assert.isNotNull(inscriptions); - }); - - it("should get inscriptions from block", async () => { - const client = new DefaultOrdinalsClient("testnet"); - const block: number = 2537133; - const inscriptions: InscriptionsData = await client.getInscriptionsFromBlock(block); - const expectedInscription: InscriptionsData = { - inscriptions: [ - '4d8e7ad2b410eaa79e3aa703bbe5a314cc89be9a07532bfab09f3c5dffac6348i0' as InscriptionId, - 'd370be1b6bf74677c82226d7a0d65743cbe3846b9216e0ad207a7b03a5230ec3i0' as InscriptionId - ], - prev: null, - next: null, - lowest: null, - highest: null, - }; - assert.deepStrictEqual(expectedInscription, inscriptions); - }); - - it("should get inscriptions from UTXO", async () => { - const client = new DefaultOrdinalsClient("testnet"); - const utxo: string = "d370be1b6bf74677c82226d7a0d65743cbe3846b9216e0ad207a7b03a5230ec3:0"; - const inscriptions: InscriptionUTXO = await client.getInscriptionFromUTXO(utxo); - const expectedInscription: InscriptionUTXO = { - value: 1967, - address: 'tb1pyjkjq93n0zvenjlyy5gp3euk4jeza3w35mu2rpe6m33k8czd0e7s3ha8st', - transaction: 'd370be1b6bf74677c82226d7a0d65743cbe3846b9216e0ad207a7b03a5230ec3', - sat_ranges: null, - inscriptions: [], - runes: {} - }; - assert.deepStrictEqual(expectedInscription, inscriptions); - }); - - it("should get inscriptions from Sat", async () => { - const client = new DefaultOrdinalsClient("testnet"); - const sat: number = 100; - const ordinal: Ordinal = await client.getInscriptionsFromSat(sat); - const expectedOrdinal: Ordinal = { - number: 100, - decimal: '0.100', - degree: '0°0′0″100‴', - name: 'nvtdijuwxht', - block: 0, - cycle: 0, - epoch: 0, - period: 0, - offset: 100, - rarity: 'common', - percentile: '0.0000000000047619047671428594%', - satpoint: null, - timestamp: 1296688602, - inscriptions: [] - }; - assert.deepStrictEqual(expectedOrdinal, ordinal); - }); - - it("should get inscriptions from start block", async () => { - const client = new DefaultOrdinalsClient("testnet"); - const startBlock: number = 2537138; - const inscriptions: InscriptionsData = await client.getInscriptionsFromStartBlock(startBlock); - // Assert that inscriptions is not null or undefined - assert.isNotNull(inscriptions); - }); -}); diff --git a/sdk/test/inscription.test.ts b/sdk/test/inscription.test.ts new file mode 100644 index 00000000..aec0b117 --- /dev/null +++ b/sdk/test/inscription.test.ts @@ -0,0 +1,121 @@ +import * as bitcoin from "bitcoinjs-lib"; +import { DefaultElectrsClient } from "../src/electrs"; +import { PROTOCOL_ID, getContentEncoding, getContentType, parseInscriptions } from "../src/inscription"; +import { assert } from "chai"; +import { createInscriptionScript, createTextInscription } from "../src/ordinals/commit"; + +const encoder = new TextEncoder(); + +function createOrdinalTransaction(outputScript: Buffer) { + const tx = new bitcoin.Transaction(); + tx.ins.push({ + hash: Buffer.alloc(32, 0), + index: 0, + script: Buffer.alloc(0), + sequence: 0, + witness: [ + Buffer.alloc(64, 0), // tapScriptSig + outputScript, // outputScript + Buffer.alloc(33, 0), // controlBlock + ], + }); + return tx; +} + +describe("Inscription Tests", () => { + it("should parse text inscription", async () => { + const electrsClient = new DefaultElectrsClient("mainnet"); + + const txHex = await electrsClient.getTransactionHex("b61b0172d95e266c18aea0c624db987e971a5d6d4ebc2aaed85da4642d635735"); + const tx = bitcoin.Transaction.fromHex(txHex); + + const inscriptions = parseInscriptions(tx); + assert(inscriptions.length == 1, "Inscription not found"); + + const contentType = getContentType(inscriptions[0]); + assert.equal(contentType, "text/plain;charset=utf-8"); + + const content = Buffer.concat(inscriptions[0].body); + assert.deepStrictEqual( + JSON.parse(content.toString('utf-8')), + { + p: 'brc-20', + op: 'deploy', + tick: 'ordi', + max: '21000000', + lim: '1000' + } + ); + }); + + it("should parse image inscription", async () => { + const electrsClient = new DefaultElectrsClient("mainnet"); + + const txHex = await electrsClient.getTransactionHex("79ddcce9b4aaa4d2c3ba512a1dfd9bf2dd1f840eab98101c41bf8b801bcb3e0c"); + const tx = bitcoin.Transaction.fromHex(txHex); + + const inscriptions = parseInscriptions(tx); + assert(inscriptions.length == 1, "Inscription not found"); + + const contentType = getContentType(inscriptions[0]); + assert.equal(contentType, "image/webp"); + }); + + it("should parse custom text inscription", async () => { + const textContent = "Hello World"; + const script = createInscriptionScript( + Buffer.alloc(32, 0), + createTextInscription(textContent) + ); + const outputScript = bitcoin.script.compile(script); + const tx = createOrdinalTransaction(outputScript); + + const inscriptions = parseInscriptions(tx); + assert.equal(inscriptions.length, 1, "Inscription not found"); + assert.equal(inscriptions[0].body.length, 1); + assert.equal(inscriptions[0].body[0].toString("utf-8"), textContent); + }); + + it("should parse custom inscription without content type", async () => { + const outputScript = bitcoin.script.compile([ + Buffer.alloc(32, 0), + bitcoin.opcodes.OP_CHECKSIG, + bitcoin.opcodes.OP_0, + bitcoin.opcodes.OP_IF, + PROTOCOL_ID, + bitcoin.opcodes.OP_0, + Buffer.alloc(520, 0), + bitcoin.opcodes.OP_ENDIF, + ]); + const tx = createOrdinalTransaction(outputScript); + + const inscriptions = parseInscriptions(tx); + assert.equal(inscriptions.length, 1, "Inscription not found"); + assert.equal(inscriptions[0].body.length, 1); + assert.equal(inscriptions[0].body[0].length, 520); + }); + + it("should parse custom inscription with content encoding", async () => { + const outputScript = bitcoin.script.compile([ + Buffer.alloc(32, 0), + bitcoin.opcodes.OP_CHECKSIG, + bitcoin.opcodes.OP_0, + bitcoin.opcodes.OP_IF, + PROTOCOL_ID, + Buffer.from([9]), + Buffer.from(encoder.encode("gzip")), + bitcoin.opcodes.OP_0, + Buffer.alloc(520, 1), + Buffer.alloc(300, 0), + bitcoin.opcodes.OP_ENDIF, + ]); + const tx = createOrdinalTransaction(outputScript); + + const inscriptions = parseInscriptions(tx); + assert.equal(inscriptions.length, 1, "Inscription not found"); + assert.equal(inscriptions[0].body.length, 2); + + const contentEncoding = getContentEncoding(inscriptions[0]); + assert.equal(contentEncoding, "gzip"); + }); +}); diff --git a/sdk/test/ordinal-api.test.ts b/sdk/test/ordinal-api.test.ts new file mode 100644 index 00000000..8cd60752 --- /dev/null +++ b/sdk/test/ordinal-api.test.ts @@ -0,0 +1,113 @@ +import { + DefaultOrdinalsClient, + InscriptionJson, + OutputJson, + InscriptionId, + SatPoint, +} from '../src/ordinal-api'; +import { assert } from "chai"; + +describe("Ordinal API Tests", () => { + it("should get inscription from id", async () => { + const client = new DefaultOrdinalsClient("testnet"); + const inscriptionJson = await client.getInscriptionFromId({ + txid: "74c86592f75716a14a534898913e6077fb5d7650cfc17600868964bbe2b7e512", + index: 0, + }); + + const expectedInscriptionJson: InscriptionJson = { + address: 'tb1pn2ujghy4l0la62c0e2n9q7s8a2yc4nx3kszdtdphwrsyap46ln4q3aveda', + children: [], + content_length: 868, + content_type: 'text/javascript', + genesis_fee: 395, + genesis_height: 2537128, + inscription_id: InscriptionId.fromString('74c86592f75716a14a534898913e6077fb5d7650cfc17600868964bbe2b7e512i0'), + inscription_number: 560474, + next: InscriptionId.fromString('dd90d8222da2a6f3260109b1e4d1a2c341d999fce4707b1d77e49956a51a0305i0'), + output_value: 730, + parent: null, + previous: InscriptionId.fromString('332d3fae125de51de29e97cd9e80aab7c63025d5094944a3dceb117c556c41cci0'), + rune: null, + sat: null, + satpoint: SatPoint.fromString('2523f1ac7594c1f45e9156588d78caa445e2dcacf5e80fdd3d5d74fa02e1c30a:171:584'), + timestamp: 1699246476 + }; + + assert.deepStrictEqual(expectedInscriptionJson, inscriptionJson); + }); + + it("should get inscriptions", async () => { + const client = new DefaultOrdinalsClient("testnet"); + const inscriptionsJson = await client.getInscriptions(); + // assert that inscriptionsJson is not null, undefined or empty + assert.isNotNull(inscriptionsJson); + assert.isNotEmpty(inscriptionsJson); + }); + + it("should get inscriptions from block", async () => { + const client = new DefaultOrdinalsClient("testnet"); + const block: number = 2537133; + const inscriptionsJson = await client.getInscriptionsFromBlock(block); + const expectedInscriptionsJson = { + inscriptions: [ + InscriptionId.fromString('4d8e7ad2b410eaa79e3aa703bbe5a314cc89be9a07532bfab09f3c5dffac6348i0'), + InscriptionId.fromString('d370be1b6bf74677c82226d7a0d65743cbe3846b9216e0ad207a7b03a5230ec3i0') + ], + prev: null, + next: null, + lowest: null, + highest: null, + }; + assert.deepStrictEqual(expectedInscriptionsJson, inscriptionsJson); + }); + + it("should get inscriptions from UTXO", async () => { + const client = new DefaultOrdinalsClient("testnet"); + const outputJson = await client.getInscriptionFromOutPoint({ + txid: "d370be1b6bf74677c82226d7a0d65743cbe3846b9216e0ad207a7b03a5230ec3", + vout: 0 + }); + const expectedOutputJson: OutputJson = { + value: 1967, + script_pubkey: 'OP_PUSHNUM_1 OP_PUSHBYTES_32 24ad201633789999cbe4251018e796acb22ec5d1a6f8a1873adc6363e04d7e7d', + address: 'tb1pyjkjq93n0zvenjlyy5gp3euk4jeza3w35mu2rpe6m33k8czd0e7s3ha8st', + transaction: 'd370be1b6bf74677c82226d7a0d65743cbe3846b9216e0ad207a7b03a5230ec3', + sat_ranges: null, + inscriptions: [], + runes: {} + }; + assert.deepStrictEqual(expectedOutputJson, outputJson); + }); + + it("should get inscriptions from Sat", async () => { + const client = new DefaultOrdinalsClient("testnet"); + const sat: number = 100; + const satJson = await client.getInscriptionsFromSat(sat); + const expectedSatJson = { + number: 100, + decimal: '0.100', + degree: '0°0′0″100‴', + name: 'nvtdijuwxht', + block: 0, + cycle: 0, + epoch: 0, + period: 0, + offset: 100, + rarity: 'common', + percentile: '0.0000000000047619047671428594%', + satpoint: null, + timestamp: 1296688602, + inscriptions: [] + }; + assert.deepStrictEqual(expectedSatJson, satJson); + }); + + it("should get inscriptions from start block", async () => { + const client = new DefaultOrdinalsClient("testnet"); + const startBlock: number = 2537138; + const inscriptions = await client.getInscriptionsFromStartBlock(startBlock); + // assert that inscriptions is not null or undefined + assert.isNotNull(inscriptions); + }); +}); diff --git a/sdk/test/ordinals.test.ts b/sdk/test/ordinals.test.ts index efd758d6..18449976 100644 --- a/sdk/test/ordinals.test.ts +++ b/sdk/test/ordinals.test.ts @@ -4,16 +4,19 @@ import * as ECPairFactory from "ecpair"; import { RemoteSigner, inscribeText } from "../src/ordinals"; import { Network, Psbt, Transaction, address, initEccLib } from "bitcoinjs-lib"; import { bitcoin } from "bitcoinjs-lib/src/networks"; +import { chunkContent, MAX_CHUNK_SIZE } from "../src/ordinals/commit"; const ECPair = ECPairFactory.default(ecc); initEccLib(ecc); class StaticSigner implements RemoteSigner { keyPair: ECPairFactory.ECPairInterface; + txs: Map; constructor(secret: string) { const privateKey = Buffer.from(secret, "hex"); this.keyPair = ECPair.fromPrivateKey(privateKey); + this.txs = new Map(); } async getNetwork(): Promise { @@ -26,15 +29,18 @@ class StaticSigner implements RemoteSigner { async sendToAddress(toAddress: string, amount: number): Promise { const tx = new Transaction(); + tx.addInput(Buffer.alloc(32, 0), 0); tx.addOutput(address.toOutputScript(toAddress), amount); - return tx.getId(); + const txId = tx.getId(); + this.txs.set(txId, tx); + return txId; } - async getUtxoIndex(_toAddress: string, _txId: string): Promise { - return 0; + async getTransaction(txId: string): Promise { + return this.txs.get(txId)!; } - async signPsbt(inputIndex: number, psbt: Psbt): Promise { + async signInput(inputIndex: number, psbt: Psbt): Promise { psbt.signInput(inputIndex, this.keyPair); return psbt; } @@ -46,6 +52,15 @@ describe("Ordinal Tests", () => { const signer = new StaticSigner(secret); const toAddress = "bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqyfgy06"; const tx = await inscribeText(signer, toAddress, 1, "Hello World!", 546); - assert(tx.getId() == "5fbafffdccaecb857c2a405c4e9bb54094b10c2c3cc548222bb57d25a3f69b82"); + assert(tx.getId() == "9312bc8a9541dd3e4b22993740ff96449a52dbca00b8be22b2979bb25053f7d6"); + }); + + it("should chunk large data", async () => { + const data = Buffer.alloc(MAX_CHUNK_SIZE * 2 + 20, 0); + const chunks = chunkContent(data); + assert.equal(chunks.length, 3); + assert.equal(chunks[0].length, MAX_CHUNK_SIZE); + assert.equal(chunks[1].length, MAX_CHUNK_SIZE); + assert.equal(chunks[2].length, 20); }); }); From cb2202b6081f9c4970a9df323f439ea856d3fdfe Mon Sep 17 00:00:00 2001 From: nakul1010 Date: Tue, 28 Nov 2023 16:43:34 +0530 Subject: [PATCH 019/137] fix: add electrs test --- sdk/test/electrs.test.ts | 36 +++++++++++++++++++++++++++++++----- sdk/test/ordinal-api.test.ts | 2 +- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/sdk/test/electrs.test.ts b/sdk/test/electrs.test.ts index 12c6c5b6..76ac4296 100644 --- a/sdk/test/electrs.test.ts +++ b/sdk/test/electrs.test.ts @@ -1,13 +1,33 @@ -import { assert } from "chai"; -import { DefaultElectrsClient } from "../src/electrs"; +import { assert,expect } from "chai"; +import {DefaultElectrsClient, UTXO} from "../src/electrs"; describe("Electrs Tests", () => { - it("should get fee rate", async () => { + + it("should get block hash", async () => { const client = new DefaultElectrsClient("testnet"); - const feeRate = await client.getFeeEstimate(1); - assert(feeRate == 1); + const blockHash = await client.getBlockHash(0); + assert.equal(blockHash,"000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"); + }); + + it("should get block header", async () => { + const client = new DefaultElectrsClient("testnet"); + const blockHeader = await client.getBlockHeader("000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"); + assert.equal(blockHeader,"0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4adae5494dffff001d1aa4ae18"); + }); + + it("should get block header at certain height", async () => { + const client = new DefaultElectrsClient("testnet"); + const blockHeader = await client.getBlockHeaderAt(10); + assert.equal(blockHeader,"010000001e93aa99c8ff9749037d74a2207f299502fa81d56a4ea2ad5330ff50000000002ec2266c3249ce2e079059e0aec01a2d8d8306a468ad3f18f06051f2c3b1645435e9494dffff001d008918cf"); }); + it("should get tx hex", async () => { + const client = new DefaultElectrsClient("testnet"); + const txHex = await client.getTransactionHex("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"); + assert.equal(txHex,"01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000"); + }); + + it("should serialize merkle proof", async () => { const client = new DefaultElectrsClient(); const proof = await client.getMerkleProof("b61b0172d95e266c18aea0c624db987e971a5d6d4ebc2aaed85da4642d635735"); @@ -21,4 +41,10 @@ describe("Electrs Tests", () => { "f4b70f697168502d62ead0c0194bcf77321a85a1e127afc4477dcc3c3636a7818601d9ff43f837b15ef74d387c688fc0a45b79" + "aec0b6"); }); + + it("should get fee rate", async () => { + const client = new DefaultElectrsClient("testnet"); + const feeRate = await client.getFeeEstimate(1); + assert(feeRate == 1); + }); }); diff --git a/sdk/test/ordinal-api.test.ts b/sdk/test/ordinal-api.test.ts index 8cd60752..e205251a 100644 --- a/sdk/test/ordinal-api.test.ts +++ b/sdk/test/ordinal-api.test.ts @@ -64,7 +64,7 @@ describe("Ordinal API Tests", () => { it("should get inscriptions from UTXO", async () => { const client = new DefaultOrdinalsClient("testnet"); - const outputJson = await client.getInscriptionFromOutPoint({ + const outputJson = await client.getInscriptionsFromOutPoint({ txid: "d370be1b6bf74677c82226d7a0d65743cbe3846b9216e0ad207a7b03a5230ec3", vout: 0 }); From 62e42cf606f04a1e30a377d9ac4994696c937891 Mon Sep 17 00:00:00 2001 From: nakul1010 Date: Wed, 29 Nov 2023 12:30:17 +0530 Subject: [PATCH 020/137] fix: remove unused imports --- sdk/test/electrs.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/test/electrs.test.ts b/sdk/test/electrs.test.ts index 76ac4296..5f716fe7 100644 --- a/sdk/test/electrs.test.ts +++ b/sdk/test/electrs.test.ts @@ -1,5 +1,5 @@ -import { assert,expect } from "chai"; -import {DefaultElectrsClient, UTXO} from "../src/electrs"; +import { assert } from "chai"; +import { DefaultElectrsClient } from "../src/electrs"; describe("Electrs Tests", () => { From 035ae183f8b9fca105403a6dc089dc6cfd77f79b Mon Sep 17 00:00:00 2001 From: Gregory Hill Date: Wed, 1 Nov 2023 08:44:18 +0000 Subject: [PATCH 021/137] refactor: use test light relay stub Signed-off-by: Gregory Hill --- script/Bridge.s.sol | 4 ---- src/bridge/BitcoinTx.sol | 5 ----- src/bridge/IRelay.sol | 3 --- src/relay/DummyRelay.sol | 28 ---------------------------- src/relay/LightRelay.sol | 4 ---- src/relay/TestLightRelay.sol | 30 ++++++++++++++++++++++++++++++ src/swap/Btc_Marketplace.sol | 5 ++++- test/swap/Btc_Marketplace.t.sol | 9 +++++++-- 8 files changed, 41 insertions(+), 47 deletions(-) delete mode 100644 src/relay/DummyRelay.sol create mode 100644 src/relay/TestLightRelay.sol diff --git a/script/Bridge.s.sol b/script/Bridge.s.sol index 047784fe..cc4e6840 100644 --- a/script/Bridge.s.sol +++ b/script/Bridge.s.sol @@ -8,10 +8,6 @@ contract BridgeScript is Script { function setUp() public {} function run() public { - bytes memory data = - hex"04000000473ed7b7ef2fce828c318fd5e5868344a5356c9e93b6040400000000000000004409cae5b7b2f8f18ea55f558c9bfa7c5f4778a1a53172a48fc57e172d0ed3d264c5eb56c3a40618af9bc1c7"; - uint256 height = 403200; - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); bytes memory genesisHeader = vm.envBytes("GENESIS_HEADER"); diff --git a/src/bridge/BitcoinTx.sol b/src/bridge/BitcoinTx.sol index 1e4616e0..f7a9fedc 100644 --- a/src/bridge/BitcoinTx.sol +++ b/src/bridge/BitcoinTx.sol @@ -162,11 +162,6 @@ library BitcoinTx { function evaluateProofDifficulty(BridgeState.Storage storage self, bytes memory bitcoinHeaders) internal view { IRelay relay = self.relay; - // for testing - if (!relay.difficultyCheckEnabled()) { - return; - } - uint256 currentEpochDifficulty = relay.getCurrentEpochDifficulty(); uint256 previousEpochDifficulty = relay.getPrevEpochDifficulty(); diff --git a/src/bridge/IRelay.sol b/src/bridge/IRelay.sol index 43e47573..6d18d24f 100644 --- a/src/bridge/IRelay.sol +++ b/src/bridge/IRelay.sol @@ -14,7 +14,4 @@ interface IRelay { /// @notice Returns the difficulty of the previous epoch. function getPrevEpochDifficulty() external view returns (uint256); - - /// @notice Returns true iff difficulty check should be performed. - function difficultyCheckEnabled() external view returns (bool); } diff --git a/src/relay/DummyRelay.sol b/src/relay/DummyRelay.sol deleted file mode 100644 index 2e02b6a4..00000000 --- a/src/relay/DummyRelay.sol +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only - -// Forked from https://github.com/keep-network/tbtc-v2 - -pragma solidity 0.8.17; - -import "@openzeppelin/contracts/access/Ownable.sol"; - -import {BytesLib} from "@bob-collective/bitcoin-spv/BytesLib.sol"; -import {BTCUtils} from "@bob-collective/bitcoin-spv/BTCUtils.sol"; -import {ValidateSPV} from "@bob-collective/bitcoin-spv/ValidateSPV.sol"; - -import "../bridge/IRelay.sol"; - -/// @dev DEV-only! -contract DummyRelay is IRelay { - function getCurrentEpochDifficulty() external view returns (uint256) { - return 0; - } - - function getPrevEpochDifficulty() external view returns (uint256) { - return 0; - } - - function difficultyCheckEnabled() external view returns (bool) { - return false; - } -} diff --git a/src/relay/LightRelay.sol b/src/relay/LightRelay.sol index 46a98cd2..fd46f4ff 100644 --- a/src/relay/LightRelay.sol +++ b/src/relay/LightRelay.sol @@ -471,10 +471,6 @@ contract LightRelay is Ownable, ILightRelay { return (currentEpochDifficulty, prevEpochDifficulty); } - function difficultyCheckEnabled() external view returns (bool) { - return true; - } - /// @notice Get the difficulty of the specified epoch. /// @param epochNumber The number of the epoch (the height of the first /// block of the epoch, divided by 2016). Must fall within the relay range. diff --git a/src/relay/TestLightRelay.sol b/src/relay/TestLightRelay.sol new file mode 100644 index 00000000..c77e2b74 --- /dev/null +++ b/src/relay/TestLightRelay.sol @@ -0,0 +1,30 @@ +pragma solidity 0.8.17; + +// Forked from https://github.com/keep-network/tbtc-v2 + +import {BTCUtils} from "@bob-collective/bitcoin-spv/BTCUtils.sol"; + +import "./LightRelay.sol"; + +/// @title Test Light Relay +/// @notice TestLightRelay is a stub version of LightRelay intended to be +/// used on for testing network. It allows to set the relay's +/// difficulty based on arbitrary Bitcoin headers thus effectively +/// bypass the validation of difficulties of Bitcoin testnet blocks. +/// Since difficulty in Bitcoin testnet often falls to `1` it would not +/// be possible to validate blocks with the real LightRelay. +/// @dev Notice that TestLightRelay is derived from LightRelay so that the two +/// contracts have the same API and correct bindings can be generated. +contract TestLightRelay is LightRelay { + using BTCUtils for bytes; + using BTCUtils for uint256; + + /// @notice Sets the current and previous difficulty based on the difficulty + /// inferred from the provided Bitcoin headers. + function setDifficultyFromHeaders(bytes memory bitcoinHeaders) external onlyOwner { + uint256 firstHeaderDiff = bitcoinHeaders.extractTarget().calculateDifficulty(); + + currentEpochDifficulty = firstHeaderDiff; + prevEpochDifficulty = firstHeaderDiff; + } +} diff --git a/src/swap/Btc_Marketplace.sol b/src/swap/Btc_Marketplace.sol index 275a0b58..7cdc241e 100644 --- a/src/swap/Btc_Marketplace.sol +++ b/src/swap/Btc_Marketplace.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.13; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import {BitcoinTx} from "../bridge/BitcoinTx.sol"; -// import {LightRelay} from "../relay/LightRelay.sol"; import {IRelay} from "../bridge/IRelay.sol"; import {BridgeState} from "../bridge/BridgeState.sol"; @@ -27,6 +26,10 @@ contract BtcMarketPlace { relay.txProofDifficultyFactor = 1; // will make this an arg later on } + function setRelay(IRelay _relay) internal { + relay.relay = _relay; + } + // todo: should we merge buy&sell structs? They're structurally identical except for the // bitcoinaddress location. diff --git a/test/swap/Btc_Marketplace.t.sol b/test/swap/Btc_Marketplace.t.sol index 30fcaa63..6a360fa8 100644 --- a/test/swap/Btc_Marketplace.t.sol +++ b/test/swap/Btc_Marketplace.t.sol @@ -9,7 +9,7 @@ import {stdStorage, StdStorage, Test, console} from "forge-std/Test.sol"; import {BtcMarketPlace} from "../../src/swap/Btc_Marketplace.sol"; import {Utilities} from "./Utilities.sol"; import {BitcoinTx} from "../../src/bridge/BitcoinTx.sol"; -import {DummyRelay} from "../../src/relay/DummyRelay.sol"; +import {TestLightRelay} from "../../src/relay/TestLightRelay.sol"; contract ArbitaryErc20 is ERC20, Ownable { constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_) {} @@ -26,8 +26,9 @@ contract MarketPlaceTest is BtcMarketPlace, Test { address internal bob; ArbitaryErc20 token1; + TestLightRelay testLightRelay; - constructor() BtcMarketPlace(new DummyRelay()) {} + constructor() BtcMarketPlace(testLightRelay) {} function setUp() public { utils = new Utilities(); @@ -39,6 +40,10 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.label(bob, "Bob"); token1 = new ArbitaryErc20("Some token", "TKN"); + + testLightRelay = new TestLightRelay(); + super.setRelay(testLightRelay); + testLightRelay.setDifficultyFromHeaders(dummyProof().bitcoinHeaders); } function dummyTransaction() public view returns (BitcoinTx.Info memory) { From a903904eff9d857e8e707aeb33eeafbb252be22f Mon Sep 17 00:00:00 2001 From: Peter Date: Thu, 16 Nov 2023 18:01:28 +0100 Subject: [PATCH 022/137] refactor: add valid bitcoin address type and check output value in proof function --- src/swap/Bridge.sol | 2 +- src/swap/Btc_Marketplace.sol | 13 +++++++++++-- test/swap/Bridge.t.sol | 2 +- test/swap/Btc_Marketplace.t.sol | 12 ++++++------ 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/swap/Bridge.sol b/src/swap/Bridge.sol index f6121bbd..b9f1712c 100644 --- a/src/swap/Bridge.sol +++ b/src/swap/Bridge.sol @@ -22,7 +22,7 @@ contract Bridge { } struct BitcoinAddress { - uint256 bitcoinAddress; // todo: use the right type + bytes scriptPubKey; } struct TransactionProof { diff --git a/src/swap/Btc_Marketplace.sol b/src/swap/Btc_Marketplace.sol index 7cdc241e..03f03acb 100644 --- a/src/swap/Btc_Marketplace.sol +++ b/src/swap/Btc_Marketplace.sol @@ -92,7 +92,7 @@ contract BtcMarketPlace { } struct BitcoinAddress { - string bitcoinAddress; // todo: use the right type + bytes scriptPubKey; } struct TransactionProof { @@ -155,11 +155,14 @@ contract BtcMarketPlace { public { AcceptedBtcSellOrder storage accept = acceptedBtcSellOrders[id]; - require(accept.requester == msg.sender); relay.validateProof(transaction, proof); + // Check output script pubkey (recipient address) and amount + uint txOutputValue = BitcoinTx.getTxOutputValue(keccak256(accept.bitcoinAddress.scriptPubKey), transaction.outputVector); + assert(txOutputValue >= accept.amountBtc); + IERC20(accept.ercToken).safeTransfer(accept.requester, accept.ercAmount); delete acceptedBtcSellOrders[id]; @@ -254,6 +257,12 @@ contract BtcMarketPlace { relay.validateProof(transaction, proof); + BtcBuyOrder storage order = btcBuyOrders[accept.orderId]; + // Check output script pubkey (recipient address) and amount + uint txOutputValue = BitcoinTx.getTxOutputValue(keccak256(order.bitcoinAddress.scriptPubKey), transaction.outputVector); + assert(txOutputValue >= order.amountBtc); + + IERC20(accept.ercToken).safeTransfer(accept.accepter, accept.ercAmount); delete acceptedBtcBuyOrders[id]; diff --git a/test/swap/Bridge.t.sol b/test/swap/Bridge.t.sol index be2fb205..126896c2 100644 --- a/test/swap/Bridge.t.sol +++ b/test/swap/Bridge.t.sol @@ -84,7 +84,7 @@ contract BridgeTest is Bridge, Test { (bool _success,) = address(this).call{value: amountCol}(abi.encodeWithSignature("mint()", alice)); assertTrue(_success, "deposited payment."); - BitcoinAddress memory btcAddress = BitcoinAddress({bitcoinAddress: 1}); + BitcoinAddress memory btcAddress = BitcoinAddress({scriptPubKey: "0xa91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}); this.requestSwap(zbtcAmount, btcAmount, btcAddress); // Order memory order = orders(0); diff --git a/test/swap/Btc_Marketplace.t.sol b/test/swap/Btc_Marketplace.t.sol index 6a360fa8..658447a8 100644 --- a/test/swap/Btc_Marketplace.t.sol +++ b/test/swap/Btc_Marketplace.t.sol @@ -74,7 +74,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(bob); token1.approve(address(this), 40); - this.acceptBtcSellOrder(0, BitcoinAddress({bitcoinAddress: ""}), 40); + this.acceptBtcSellOrder(0, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), 40); vm.startPrank(alice); this.proofBtcSellOrder(1, dummyTransaction(), dummyProof()); @@ -88,7 +88,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(bob); token1.approve(address(this), 40); - this.acceptBtcSellOrder(0, BitcoinAddress({bitcoinAddress: ""}), 40); + this.acceptBtcSellOrder(0, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), 40); vm.startPrank(alice); this.withdrawBtcSellOrder(0); @@ -104,7 +104,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(bob); token1.approve(address(this), 40); - this.acceptBtcSellOrder(0, BitcoinAddress({bitcoinAddress: ""}), 40); + this.acceptBtcSellOrder(0, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), 40); vm.warp(block.timestamp + REQUEST_EXPIRATION_SECONDS + 1); assertEq(token1.balanceOf(address(this)), 4); @@ -119,7 +119,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(alice); token1.approve(address(this), 100); - this.placeBtcBuyOrder(1000, BitcoinAddress({bitcoinAddress: ""}), address(token1), 100); + this.placeBtcBuyOrder(1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100); vm.startPrank(bob); this.acceptBtcBuyOrder(0, 40); @@ -135,7 +135,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(alice); token1.approve(address(this), 100); - this.placeBtcBuyOrder(1000, BitcoinAddress({bitcoinAddress: ""}), address(token1), 100); + this.placeBtcBuyOrder(1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100); vm.startPrank(bob); this.acceptBtcBuyOrder(0, 40); @@ -153,7 +153,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(alice); token1.approve(address(this), 100); - this.placeBtcBuyOrder(1000, BitcoinAddress({bitcoinAddress: ""}), address(token1), 100); + this.placeBtcBuyOrder(1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100); vm.startPrank(bob); this.acceptBtcBuyOrder(0, 40); From 429d9db6803aebbb43904b0247ea5a456657e277 Mon Sep 17 00:00:00 2001 From: Peter Date: Thu, 16 Nov 2023 18:09:31 +0100 Subject: [PATCH 023/137] chore: format files --- src/swap/Bridge.sol | 2 +- src/swap/Btc_Marketplace.sol | 7 ++++--- test/swap/Bridge.t.sol | 3 ++- test/swap/Btc_Marketplace.t.sol | 12 +++++++++--- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/swap/Bridge.sol b/src/swap/Bridge.sol index b9f1712c..11508243 100644 --- a/src/swap/Bridge.sol +++ b/src/swap/Bridge.sol @@ -22,7 +22,7 @@ contract Bridge { } struct BitcoinAddress { - bytes scriptPubKey; + bytes scriptPubKey; } struct TransactionProof { diff --git a/src/swap/Btc_Marketplace.sol b/src/swap/Btc_Marketplace.sol index 03f03acb..78acc0e2 100644 --- a/src/swap/Btc_Marketplace.sol +++ b/src/swap/Btc_Marketplace.sol @@ -160,7 +160,8 @@ contract BtcMarketPlace { relay.validateProof(transaction, proof); // Check output script pubkey (recipient address) and amount - uint txOutputValue = BitcoinTx.getTxOutputValue(keccak256(accept.bitcoinAddress.scriptPubKey), transaction.outputVector); + uint256 txOutputValue = + BitcoinTx.getTxOutputValue(keccak256(accept.bitcoinAddress.scriptPubKey), transaction.outputVector); assert(txOutputValue >= accept.amountBtc); IERC20(accept.ercToken).safeTransfer(accept.requester, accept.ercAmount); @@ -259,10 +260,10 @@ contract BtcMarketPlace { BtcBuyOrder storage order = btcBuyOrders[accept.orderId]; // Check output script pubkey (recipient address) and amount - uint txOutputValue = BitcoinTx.getTxOutputValue(keccak256(order.bitcoinAddress.scriptPubKey), transaction.outputVector); + uint256 txOutputValue = + BitcoinTx.getTxOutputValue(keccak256(order.bitcoinAddress.scriptPubKey), transaction.outputVector); assert(txOutputValue >= order.amountBtc); - IERC20(accept.ercToken).safeTransfer(accept.accepter, accept.ercAmount); delete acceptedBtcBuyOrders[id]; diff --git a/test/swap/Bridge.t.sol b/test/swap/Bridge.t.sol index 126896c2..00ce8759 100644 --- a/test/swap/Bridge.t.sol +++ b/test/swap/Bridge.t.sol @@ -84,7 +84,8 @@ contract BridgeTest is Bridge, Test { (bool _success,) = address(this).call{value: amountCol}(abi.encodeWithSignature("mint()", alice)); assertTrue(_success, "deposited payment."); - BitcoinAddress memory btcAddress = BitcoinAddress({scriptPubKey: "0xa91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}); + BitcoinAddress memory btcAddress = + BitcoinAddress({scriptPubKey: "0xa91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}); this.requestSwap(zbtcAmount, btcAmount, btcAddress); // Order memory order = orders(0); diff --git a/test/swap/Btc_Marketplace.t.sol b/test/swap/Btc_Marketplace.t.sol index 658447a8..88c989bc 100644 --- a/test/swap/Btc_Marketplace.t.sol +++ b/test/swap/Btc_Marketplace.t.sol @@ -119,7 +119,9 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(alice); token1.approve(address(this), 100); - this.placeBtcBuyOrder(1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100); + this.placeBtcBuyOrder( + 1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100 + ); vm.startPrank(bob); this.acceptBtcBuyOrder(0, 40); @@ -135,7 +137,9 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(alice); token1.approve(address(this), 100); - this.placeBtcBuyOrder(1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100); + this.placeBtcBuyOrder( + 1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100 + ); vm.startPrank(bob); this.acceptBtcBuyOrder(0, 40); @@ -153,7 +157,9 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(alice); token1.approve(address(this), 100); - this.placeBtcBuyOrder(1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100); + this.placeBtcBuyOrder( + 1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100 + ); vm.startPrank(bob); this.acceptBtcBuyOrder(0, 40); From 390e1e2a3e04805306b888ff105f6be62d6efef7 Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 17 Nov 2023 17:04:45 +0100 Subject: [PATCH 024/137] fix: include scriptPubKey size in hash that is checked --- src/swap/Btc_Marketplace.sol | 32 ++++++++++++++++++++++++-------- test/swap/Btc_Marketplace.t.sol | 22 ++++++++++------------ 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/src/swap/Btc_Marketplace.sol b/src/swap/Btc_Marketplace.sol index 78acc0e2..f35481f4 100644 --- a/src/swap/Btc_Marketplace.sol +++ b/src/swap/Btc_Marketplace.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.13; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {BTCUtils} from "@bob-collective/bitcoin-spv/BTCUtils.sol"; import {BitcoinTx} from "../bridge/BitcoinTx.sol"; import {IRelay} from "../bridge/IRelay.sol"; import {BridgeState} from "../bridge/BridgeState.sol"; @@ -159,10 +160,7 @@ contract BtcMarketPlace { relay.validateProof(transaction, proof); - // Check output script pubkey (recipient address) and amount - uint256 txOutputValue = - BitcoinTx.getTxOutputValue(keccak256(accept.bitcoinAddress.scriptPubKey), transaction.outputVector); - assert(txOutputValue >= accept.amountBtc); + _checkBitcoinTxOutput(accept.amountBtc, accept.bitcoinAddress, transaction); IERC20(accept.ercToken).safeTransfer(accept.requester, accept.ercAmount); @@ -259,10 +257,7 @@ contract BtcMarketPlace { relay.validateProof(transaction, proof); BtcBuyOrder storage order = btcBuyOrders[accept.orderId]; - // Check output script pubkey (recipient address) and amount - uint256 txOutputValue = - BitcoinTx.getTxOutputValue(keccak256(order.bitcoinAddress.scriptPubKey), transaction.outputVector); - assert(txOutputValue >= order.amountBtc); + _checkBitcoinTxOutput(order.amountBtc, order.bitcoinAddress, transaction); IERC20(accept.ercToken).safeTransfer(accept.accepter, accept.ercAmount); @@ -385,4 +380,25 @@ contract BtcMarketPlace { } return (ret, identifiers); } + + /** + * Checks output script pubkey (recipient address) and amount. + * Reverts if transaction amount is lower or bitcoin address is not found. + * + * @param expectedBtcAmount BTC amount requested in order. + * @param bitcoinAddress Recipient's bitcoin address. + * @param transaction Transaction fulfilling the order. + */ + function _checkBitcoinTxOutput( + uint256 expectedBtcAmount, + BitcoinAddress storage bitcoinAddress, + BitcoinTx.Info calldata transaction + ) private { + // Prefixes scriptpubkey with its size to match script output data. + bytes32 b = keccak256(abi.encodePacked(uint8(bitcoinAddress.scriptPubKey.length), bitcoinAddress.scriptPubKey)); + + uint256 txOutputValue = BitcoinTx.getTxOutputValue(b, transaction.outputVector); + + require(txOutputValue >= expectedBtcAmount, "Bitcoin transaction amount is lower than in accepted order."); + } } diff --git a/test/swap/Btc_Marketplace.t.sol b/test/swap/Btc_Marketplace.t.sol index 88c989bc..09763223 100644 --- a/test/swap/Btc_Marketplace.t.sol +++ b/test/swap/Btc_Marketplace.t.sol @@ -66,6 +66,10 @@ contract MarketPlaceTest is BtcMarketPlace, Test { }); } + function dummyBitcoinAddress() public returns (BitcoinAddress memory) { + return BitcoinAddress({scriptPubKey: hex"76a914fd7e6999cd7e7114383e014b7e612a88ab6be68f88ac"}); + } + function testSellBtc() public { token1.sudoMint(bob, 100); @@ -74,7 +78,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(bob); token1.approve(address(this), 40); - this.acceptBtcSellOrder(0, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), 40); + this.acceptBtcSellOrder(0, dummyBitcoinAddress(), 40); vm.startPrank(alice); this.proofBtcSellOrder(1, dummyTransaction(), dummyProof()); @@ -88,7 +92,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(bob); token1.approve(address(this), 40); - this.acceptBtcSellOrder(0, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), 40); + this.acceptBtcSellOrder(0, dummyBitcoinAddress(), 40); vm.startPrank(alice); this.withdrawBtcSellOrder(0); @@ -104,7 +108,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(bob); token1.approve(address(this), 40); - this.acceptBtcSellOrder(0, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), 40); + this.acceptBtcSellOrder(0, dummyBitcoinAddress(), 40); vm.warp(block.timestamp + REQUEST_EXPIRATION_SECONDS + 1); assertEq(token1.balanceOf(address(this)), 4); @@ -119,9 +123,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(alice); token1.approve(address(this), 100); - this.placeBtcBuyOrder( - 1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100 - ); + this.placeBtcBuyOrder(1000, dummyBitcoinAddress(), address(token1), 100); vm.startPrank(bob); this.acceptBtcBuyOrder(0, 40); @@ -137,9 +139,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(alice); token1.approve(address(this), 100); - this.placeBtcBuyOrder( - 1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100 - ); + this.placeBtcBuyOrder(1000, dummyBitcoinAddress(), address(token1), 100); vm.startPrank(bob); this.acceptBtcBuyOrder(0, 40); @@ -157,9 +157,7 @@ contract MarketPlaceTest is BtcMarketPlace, Test { vm.startPrank(alice); token1.approve(address(this), 100); - this.placeBtcBuyOrder( - 1000, BitcoinAddress({scriptPubKey: "a91476fe4e664d67c35931096d90aabbdbd8e0e11bad87"}), address(token1), 100 - ); + this.placeBtcBuyOrder(1000, dummyBitcoinAddress(), address(token1), 100); vm.startPrank(bob); this.acceptBtcBuyOrder(0, 40); From adc897b9f943622d061c29c854129af5c7799f14 Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 17 Nov 2023 17:07:58 +0100 Subject: [PATCH 025/137] chore: cleanup --- src/swap/Btc_Marketplace.sol | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/swap/Btc_Marketplace.sol b/src/swap/Btc_Marketplace.sol index f35481f4..b4ed8dc3 100644 --- a/src/swap/Btc_Marketplace.sol +++ b/src/swap/Btc_Marketplace.sol @@ -395,9 +395,10 @@ contract BtcMarketPlace { BitcoinTx.Info calldata transaction ) private { // Prefixes scriptpubkey with its size to match script output data. - bytes32 b = keccak256(abi.encodePacked(uint8(bitcoinAddress.scriptPubKey.length), bitcoinAddress.scriptPubKey)); + bytes32 scriptPubKeyHash = + keccak256(abi.encodePacked(uint8(bitcoinAddress.scriptPubKey.length), bitcoinAddress.scriptPubKey)); - uint256 txOutputValue = BitcoinTx.getTxOutputValue(b, transaction.outputVector); + uint256 txOutputValue = BitcoinTx.getTxOutputValue(scriptPubKeyHash, transaction.outputVector); require(txOutputValue >= expectedBtcAmount, "Bitcoin transaction amount is lower than in accepted order."); } From 11bd213e674ba83faea77b318c7b34c2fc0a9feb Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Tue, 5 Dec 2023 09:07:18 +0000 Subject: [PATCH 026/137] update demo positions --- docs/docs/build/examples/metamask-ordinals/_category_.yml | 2 +- docs/docs/build/examples/unified-assets-tracker/_category_.yml | 3 +++ docs/docs/build/examples/zkvm-taproot/_category_.yml | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 docs/docs/build/examples/unified-assets-tracker/_category_.yml create mode 100644 docs/docs/build/examples/zkvm-taproot/_category_.yml diff --git a/docs/docs/build/examples/metamask-ordinals/_category_.yml b/docs/docs/build/examples/metamask-ordinals/_category_.yml index 85869009..672c1aa3 100644 --- a/docs/docs/build/examples/metamask-ordinals/_category_.yml +++ b/docs/docs/build/examples/metamask-ordinals/_category_.yml @@ -1,3 +1,3 @@ -position: 4 +position: 3 collapsible: true collapsed: false diff --git a/docs/docs/build/examples/unified-assets-tracker/_category_.yml b/docs/docs/build/examples/unified-assets-tracker/_category_.yml new file mode 100644 index 00000000..bed989e6 --- /dev/null +++ b/docs/docs/build/examples/unified-assets-tracker/_category_.yml @@ -0,0 +1,3 @@ +position: 4 +collapsible: true +collapsed: true diff --git a/docs/docs/build/examples/zkvm-taproot/_category_.yml b/docs/docs/build/examples/zkvm-taproot/_category_.yml new file mode 100644 index 00000000..015d962c --- /dev/null +++ b/docs/docs/build/examples/zkvm-taproot/_category_.yml @@ -0,0 +1,3 @@ +position: 5 +collapsible: true +collapsed: true From da8c1544b493646c7e9a88d3bf5d64a3e03fe257 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Tue, 5 Dec 2023 09:11:00 +0000 Subject: [PATCH 027/137] Correct MetaMask casing --- .../docs/build/examples/metamask-ordinals/index.md | 14 +++++++------- .../build/examples/unified-assets-tracker/index.md | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/docs/build/examples/metamask-ordinals/index.md b/docs/docs/build/examples/metamask-ordinals/index.md index 51757a46..7a31b0ba 100644 --- a/docs/docs/build/examples/metamask-ordinals/index.md +++ b/docs/docs/build/examples/metamask-ordinals/index.md @@ -1,6 +1,6 @@ -# Use Metamask to Inscribe and Transfer Ordinals, and Transfer BTC +# Use MetaMask to Inscribe and Transfer Ordinals, and Transfer BTC -This example demonstrates how a Metamask Snap can be used to inscribe and transfer ordinals, and transfer BTC, using only Metamask. +This example demonstrates how a MetaMask Snap can be used to inscribe and transfer ordinals, and transfer BTC, using only MetaMask. :::info Example Code @@ -12,21 +12,21 @@ The code for this example can be [found in the GitHub repository](https://github We have created a testnet demo of the application at [https://ordinals.gobob.xyz](https://ordinals.gobob.xyz), allowing anyone to inscribe, view and transfer ordinals, and transfer BTC. -:::info Metamask Flask +:::info MetaMask Flask -This demo uses [Metamask Snaps](https://metamask.io/snaps/) and can only be used with [Metamask Flask](https://metamask.io/flask/). Metamask Snaps are not currently supported on mobile wallets, so this demo will only run in the desktop version of Chrome or Firefox. +This demo uses [MetaMask Snaps](https://metamask.io/snaps/) and can only be used with [MetaMask Flask](https://metamask.io/flask/). MetaMask Snaps are not currently supported on mobile wallets, so this demo will only run in the desktop version of Chrome or Firefox. ::: ### Creating a test profile -To use this demo, you will need to create a new browser profile to use with the Metamask Flask extension, as having Metamask and Metamask Flask installed in the same browser profile can cause issues. +To use this demo, you will need to create a new browser profile to use with the MetaMask Flask extension, as having MetaMask and MetaMask Flask installed in the same browser profile can cause issues. We recommend creating two test profiles so that you can test transferring Ordinals and BTC between two accounts. -### Installing the Metamask Snap +### Installing the MetaMask Snap -Once you have installed Metamask Flask, click the 'Connect Wallet' button on https://ordinals.gobob.xyz. Metamask will prompt you to install the Snap, and give it permissions. +Once you have installed MetaMask Flask, click the 'Connect Wallet' button on https://ordinals.gobob.xyz. MetaMask will prompt you to install the Snap, and give it permissions. ### Funding your account diff --git a/docs/docs/build/examples/unified-assets-tracker/index.md b/docs/docs/build/examples/unified-assets-tracker/index.md index 2d6ca965..7ab954b7 100644 --- a/docs/docs/build/examples/unified-assets-tracker/index.md +++ b/docs/docs/build/examples/unified-assets-tracker/index.md @@ -21,7 +21,7 @@ The source code for this demo can be found in [this repository](https://github.c 2. Move to API directory `$ cd api/` 3. Compile and run the service with `cargo run` 4. The API server should be now running at `localhost:8000` -5. The API documentation can be found in `api/README.md` directory. +5. The API documentation can be found in `api/README.md` directory. ## Installing the UI project @@ -38,8 +38,8 @@ The source code for this demo can be found in [this repository](https://github.c 1. Run `pnpm dev` in `ui` directory. 2. The UI is now running locally on port 5173. -3. Go to `localhost:5173` and click on `Connect wallet`, your wallet will get connected and the Bitcoin snap extension will be installed. After this, you have to approve all the permissions in Metamask to access the Bitcoin addresses. -4. Now you have Bitcoin address derived from your Metamask account, you can send testnet BTC or brc20s to see them in the app and move them around. +3. Go to `localhost:5173` and click on `Connect wallet`, your wallet will get connected and the Bitcoin snap extension will be installed. After this, you have to approve all the permissions in MetaMask to access the Bitcoin addresses. +4. Now you have Bitcoin address derived from your MetaMask account, you can send testnet BTC or brc20s to see them in the app and move them around. ## Notes From 8818b6f74437acd0e3db737621c8b418777226bd Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Tue, 5 Dec 2023 09:12:32 +0000 Subject: [PATCH 028/137] Copy change --- docs/docs/build/examples/metamask-ordinals/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/build/examples/metamask-ordinals/index.md b/docs/docs/build/examples/metamask-ordinals/index.md index 7a31b0ba..d265c43a 100644 --- a/docs/docs/build/examples/metamask-ordinals/index.md +++ b/docs/docs/build/examples/metamask-ordinals/index.md @@ -1,6 +1,6 @@ # Use MetaMask to Inscribe and Transfer Ordinals, and Transfer BTC -This example demonstrates how a MetaMask Snap can be used to inscribe and transfer ordinals, and transfer BTC, using only MetaMask. +This example demonstrates how users can use a single web wallet to manage assets on both Bitcoin and BOB. The BOB MetaMask Snap can be used to inscribe and transfer ordinals, and transfer BTC, using only MetaMask as well as access any other EVM functions on BOB. :::info Example Code From 65c09c0b0160d6c7702cf5a9a18a657c93ca1370 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Tue, 5 Dec 2023 09:18:01 +0000 Subject: [PATCH 029/137] add screenshots --- .../build/examples/metamask-ordinals/index.md | 10 +++++++++- .../metamask-ordinals/inscribe-image.png | Bin 0 -> 44748 bytes .../metamask-ordinals/inscribe-text.png | Bin 0 -> 54510 bytes .../examples/metamask-ordinals/transfer-btc.png | Bin 0 -> 78027 bytes .../metamask-ordinals/transfer-ordinal.png | Bin 0 -> 39739 bytes 5 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 docs/docs/build/examples/metamask-ordinals/inscribe-image.png create mode 100644 docs/docs/build/examples/metamask-ordinals/inscribe-text.png create mode 100644 docs/docs/build/examples/metamask-ordinals/transfer-btc.png create mode 100644 docs/docs/build/examples/metamask-ordinals/transfer-ordinal.png diff --git a/docs/docs/build/examples/metamask-ordinals/index.md b/docs/docs/build/examples/metamask-ordinals/index.md index d265c43a..ef79e5dc 100644 --- a/docs/docs/build/examples/metamask-ordinals/index.md +++ b/docs/docs/build/examples/metamask-ordinals/index.md @@ -26,7 +26,7 @@ We recommend creating two test profiles so that you can test transferring Ordina ### Installing the MetaMask Snap -Once you have installed MetaMask Flask, click the 'Connect Wallet' button on https://ordinals.gobob.xyz. MetaMask will prompt you to install the Snap, and give it permissions. +Once you have installed MetaMask Flask, click the 'Connect Wallet' button on [https://ordinals.gobob.xyz](https://ordinals.gobob.xyz). MetaMask will prompt you to install the Snap, and give it permissions. ### Funding your account @@ -49,6 +49,8 @@ BTC may show in your balance before it is confirmed. If you try to use the appli - Enter the inscription text, and submit the form. - The ordinal will be shown in the Ordinals Portfolio table (this may take a few seconds) +![inscribe-text](inscribe-text.png) + ### Inscribing an image ordinal :::info Supported file types @@ -61,12 +63,18 @@ Only `png` and `jpg` files are currently supported. - Click on Select File (only png and jpg files are supported), select your image, and submit the form. - The ordinal will be shown in the Ordinals Portfolio table (this may take a few seconds) +![inscribe-image](inscribe-image.png) + ### Transferring an ordinal - Click on the 'Transfer Ordinal' button next to the ordinal you would like to transfer. - Enter a testnet BTC address, and submit the form. +![transfer-ordinal](transfer-ordinal.png) + ### Transferring BTC - Click on the 'Transfer BTC' button at the top of the page. - Enter a testnet BTC address, and submit the form. + +![transfer-btc](transfer-btc.png) diff --git a/docs/docs/build/examples/metamask-ordinals/inscribe-image.png b/docs/docs/build/examples/metamask-ordinals/inscribe-image.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3ba251fc74afb02a75db147a1b25d48b361f71 GIT binary patch literal 44748 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 literal 0 HcmV?d00001 diff --git a/docs/docs/build/examples/metamask-ordinals/inscribe-text.png b/docs/docs/build/examples/metamask-ordinals/inscribe-text.png new file mode 100644 index 0000000000000000000000000000000000000000..6277bb81e93e5f20559ad218fe83779044d215c0 GIT binary patch literal 54510 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 literal 0 HcmV?d00001 diff --git a/docs/docs/build/examples/metamask-ordinals/transfer-btc.png b/docs/docs/build/examples/metamask-ordinals/transfer-btc.png new file mode 100644 index 0000000000000000000000000000000000000000..afdf7b6285c174b7d6390ec7c21c2e2e788c220f GIT binary patch literal 78027 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 XrzIzFw~PA^@bByyU9DUVi-7+Ha7e5Q literal 0 HcmV?d00001 diff --git a/docs/docs/build/examples/metamask-ordinals/transfer-ordinal.png b/docs/docs/build/examples/metamask-ordinals/transfer-ordinal.png new file mode 100644 index 0000000000000000000000000000000000000000..f15692af38a16818261193d0ad36d761dcbcc829 GIT binary patch literal 39739 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 S0^m`@Q Date: Tue, 5 Dec 2023 09:20:23 +0000 Subject: [PATCH 030/137] Add demo link to examples --- docs/docs/build/getting-started/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docs/build/getting-started/index.md b/docs/docs/build/getting-started/index.md index 3b293d3a..6dd313e2 100644 --- a/docs/docs/build/getting-started/index.md +++ b/docs/docs/build/getting-started/index.md @@ -27,7 +27,8 @@ This is alpha-stage software. We love to work closely with you to make BOB usefu ## Examples - [P2P Swap BTC and ERC20](/docs/build/examples/btc-swap/): Learn how to build a P2P Bitcoin marketplace on BOB using a BTC light client to eliminate trusted thrid parties. -- [Inscribing Ordinals](/docs/build/examples/brc20-octopus/): Learn how to inscribe Ordinals (text, BRC20s, ...) with the UniSat wallet. +- [Inscribing Ordinals With Unisat Wallet](/docs/build/examples/brc20-octopus/): Learn how to inscribe Ordinals (text, BRC20s, ...) with the UniSat wallet. +- [Use MetaMask to Inscribe and Transfer Ordinals](/docs/build/examples/metamask-ordinals/): Learn how to inscribe Ordinals (text, BRC20s, ...) with the UniSat wallet. - [Unify BTC and EVM Assets](/docs/build/examples/unified-assets-tracker/): Learn how to unify BTC and EVM assets with a single wallet by using MetaMask snaps. - [zkVM Taproot Address Verification](/docs/build/examples/zkvm-taproot/): Learn how to prove ownership of a Bitcoin taproot address using zkVM and Bonsai. From 5dba6f66698ef6a2042fd16a58afe67e22f50fd2 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Tue, 5 Dec 2023 09:36:23 +0000 Subject: [PATCH 031/137] Copy change --- docs/docs/build/examples/metamask-ordinals/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/build/examples/metamask-ordinals/index.md b/docs/docs/build/examples/metamask-ordinals/index.md index ef79e5dc..330cd3c5 100644 --- a/docs/docs/build/examples/metamask-ordinals/index.md +++ b/docs/docs/build/examples/metamask-ordinals/index.md @@ -4,7 +4,7 @@ This example demonstrates how users can use a single web wallet to manage assets :::info Example Code -The code for this example can be [found in the GitHub repository](https://github.com/bob-collective/demo-brc20-metamask) +Find the code for this example on [our GitHub repository](https://github.com/bob-collective/demo-brc20-metamask). ::: From 0584df3ffe02412f549f40cf6585ea635260458a Mon Sep 17 00:00:00 2001 From: tomjeatt <40243778+tomjeatt@users.noreply.github.com> Date: Tue, 5 Dec 2023 09:42:55 +0000 Subject: [PATCH 032/137] Update docs/docs/build/examples/metamask-ordinals/index.md Co-authored-by: Brendon Votteler --- docs/docs/build/examples/metamask-ordinals/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/docs/build/examples/metamask-ordinals/index.md b/docs/docs/build/examples/metamask-ordinals/index.md index 330cd3c5..4eea9db4 100644 --- a/docs/docs/build/examples/metamask-ordinals/index.md +++ b/docs/docs/build/examples/metamask-ordinals/index.md @@ -28,6 +28,8 @@ We recommend creating two test profiles so that you can test transferring Ordina Once you have installed MetaMask Flask, click the 'Connect Wallet' button on [https://ordinals.gobob.xyz](https://ordinals.gobob.xyz). MetaMask will prompt you to install the Snap, and give it permissions. +Take note that your BTC wallet in the Snap derives its private keys from the MetaMask's seed phrase. + ### Funding your account One you have connected your wallet, you will see your derived BTC address in place of the 'Connect Wallet' button. Click on the address to copy it to the clipboard and then fund it using a BTC faucet: From b0088d115f80666571daa4fc46bb006a36c2a242 Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 1 Dec 2023 13:53:31 +0100 Subject: [PATCH 033/137] docs: add docs about wbtc transfer using erc-2771 and erc-4337 --- .../wbtc-gas-fee-erc-2771/_category_.yml | 3 + .../examples/wbtc-gas-fee-erc-2771/index.md | 84 ++++++++++++++++++ .../wbtc-gas-fee-erc-2771/preview.png | Bin 0 -> 80409 bytes .../wbtc-gas-fee-erc-4337/_category_.yml | 3 + .../examples/wbtc-gas-fee-erc-4337/index.md | 78 ++++++++++++++++ .../wbtc-gas-fee-erc-4337/preview.png | Bin 0 -> 57387 bytes 6 files changed, 168 insertions(+) create mode 100644 docs/docs/build/examples/wbtc-gas-fee-erc-2771/_category_.yml create mode 100644 docs/docs/build/examples/wbtc-gas-fee-erc-2771/index.md create mode 100644 docs/docs/build/examples/wbtc-gas-fee-erc-2771/preview.png create mode 100644 docs/docs/build/examples/wbtc-gas-fee-erc-4337/_category_.yml create mode 100644 docs/docs/build/examples/wbtc-gas-fee-erc-4337/index.md create mode 100644 docs/docs/build/examples/wbtc-gas-fee-erc-4337/preview.png diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-2771/_category_.yml b/docs/docs/build/examples/wbtc-gas-fee-erc-2771/_category_.yml new file mode 100644 index 00000000..4eed7a1b --- /dev/null +++ b/docs/docs/build/examples/wbtc-gas-fee-erc-2771/_category_.yml @@ -0,0 +1,3 @@ +position: 4 +collapsible: true +collapsed: true \ No newline at end of file diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-2771/index.md b/docs/docs/build/examples/wbtc-gas-fee-erc-2771/index.md new file mode 100644 index 00000000..48c564db --- /dev/null +++ b/docs/docs/build/examples/wbtc-gas-fee-erc-2771/index.md @@ -0,0 +1,84 @@ +# Gas fee payment in WBTC using ERC-2771 + +In this example, we will show how WBTC can be used for gas fee payments using the [ERC-2771 standard](https://eips.ethereum.org/EIPS/eip-2771) on the BOB testnet. This enables users to transact without the necessity to own ether. + +:::info Example Code + +The source code for this demo can be found in [this repository](https://github.com/bob-collective/demo-meta-transactions-transfer/). + +::: + +![preview](preview.png) + +## Local development + +### Contract addresses and links + +WBTC contract address: `0x833d9398A3DBa68994AdE7Db42Ff597831933aeD` + +Paymaster contract address: `0x7F1c9BFcBcc36a09a24473af485cf25e6cfe3Fd6` + +OpenGSN relayer: +`https://gsn-relay-fluffy-bob.gobob.xyz` + + +### Installing the project + +1. Install [pnpm](https://pnpm.io/installation) +2. Run `pnpm install` + +### Starting the project + +1. Run `pnpm run dev` +2. Open `localhost:5173` in browser. + + +## Using the dApp + +This application contains a simple form that allows you to transfer WBTC between accounts with the gas fee paid in WBTC. Simply enter the WBTC amount and the recipient's EVM address and the transaction will be sent to the Open Gas Network relay and relayed using the WBTC paymaster. + +:::note +Before the first relayed transaction is done, the paymaster smart contract has to be approved to spend your WBTC. That is why there will be a transaction request before the first relayed transfer transaction. +::: + +## Interacting with OpenGSN relay + +To allow simple interaction with the relay `ethers.Contract` instance is created using OpenGSN provider: +```typescript +const getRelayedContract = async (contractType: ContractType) => { + if (!window.ethereum) { + throw new Error('Injected provider not found!'); + } + + const { address, abi } = contracts[contractType]; + + const config = { + preferredRelays: ['https://gsn-relay-fluffy-bob.gobob.xyz'], + performDryRunViewRelayCall: false, + gasPriceSlackPercent: 1000, + maxPaymasterDataLength: 100, + paymasterAddress: erc20PaymasterAddress + }; + + const gsnProvider = await RelayProvider.newProvider({ + provider: window.ethereum, + config, + overrideDependencies: { asyncPaymasterData: getErc20PaymasterData } + }).init(); + + const ethersProvider = new providers.Web3Provider(gsnProvider); + + const relayedContract = new Contract(address, abi, ethersProvider.getSigner()); + + return relayedContract; +}; +``` + +Then the `Contract` instance can be used in a standard way: +```typescript +const transferTx = await relayedContract.transfer(form.address, atomicAmount.toString()); + +await transferTx.wait(); +``` + + diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-2771/preview.png b/docs/docs/build/examples/wbtc-gas-fee-erc-2771/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..9c19340dc2fa9cb9cfc7708dbfd7efcfa4e68a43 GIT binary patch literal 80409 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

+@@y%q6^yx=XVfKZQ0Y>;-r4Ti`j|WD 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 literal 0 HcmV?d00001 diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-4337/_category_.yml b/docs/docs/build/examples/wbtc-gas-fee-erc-4337/_category_.yml new file mode 100644 index 00000000..6c45e769 --- /dev/null +++ b/docs/docs/build/examples/wbtc-gas-fee-erc-4337/_category_.yml @@ -0,0 +1,3 @@ +position: 3 +collapsible: true +collapsed: true \ No newline at end of file diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-4337/index.md b/docs/docs/build/examples/wbtc-gas-fee-erc-4337/index.md new file mode 100644 index 00000000..f4742c81 --- /dev/null +++ b/docs/docs/build/examples/wbtc-gas-fee-erc-4337/index.md @@ -0,0 +1,78 @@ +# Gas fee payment in WBTC using ERC-4337 + +In this example, we will show how WBTC can be used for gas fee payment using the [ERC-4337 account abstraction standard](https://eips.ethereum.org/EIPS/eip-4337) on the BOB testnet. This enables users to use smart contract wallets and transact without the need to own ether. + +:::info Example Code + +The source code for this demo can be found in [this repository](https://github.com/bob-collective/demo-account-abstraction-transfer/). + +::: + +![preview](preview.png) + +## Local development + +### Contract addresses and links +WBTC contract address: `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` + +Entry point contract address: `0x7A660708DB3D56BB0dC3694344777c805716Fca7` + +WBTC paymaster address: +`0xD8Ae58534d5488571E248DdC0A3aD42aD5dBaD26` + +Bundler (eth-infinitism): +`https://bundler-fluffy-bob.gobob.xyz/rpc` + +### Installing the project + +1. Install [pnpm](https://pnpm.io/installation) +2. Run `pnpm install` + + +### Starting the project + +1. Run `pnpm run dev` +2. Open `localhost:5173` in browser. + + + +## Using the dApp + +This application uses the ERC-4337 standard and showcases how a smart contract wallet can be integrated. It contains an implementation of a custom account abstraction client that simplifies the integration of this standard into the UI. + + +The application consists of a simple form that allows you to send WBTC from the smart contract account with the gas fee paid in WBTC. To use it enter the WBTC amount and the recipient's EVM address. Then the injected wallet will ask for a user operation signature. After that, a signed user operation will be sent to the bundler which will broadcast it to the network. + +:::note +Before the first user operation can be made, the paymaster smart contract has to be approved to spend your WBTC. That is why the first wallet prompt will be the WBTC approval transaction request. +::: + + +## Using account abstraction client + +To allow easy integration of ERC-4337 into dApps, a simple account abstraction client is included in this repository. This client handles smart account creation and bundler connection, manages user operations and allows paymaster usage. This repository also includes a React hook and context provider which enable straightforward usage of the client in the React application. + +To use `AaClient` in your app wrap it in the `AccountAbstractionProvider`: +```typescript + + + +``` + +Now you can use the `useAccountAbstraction` hook anywhere within the app to get the client and utilize its functionality: +```typescript +const { client } = useAccountAbstraction(); +... +const userOp = await client.createUserOp({ +address: contract.address, +callData, +value: 0, +nonce: approvalUserOpNonce +}); + +const transferResult = await client.signAndSendUserOp(userOp); + + +``` + +To view the example of a full account abstraction flow please navigate to the `src/App.tsx` component. \ No newline at end of file diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-4337/preview.png b/docs/docs/build/examples/wbtc-gas-fee-erc-4337/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..8336a20591c0df74fca851cc8c23578292d3e99a GIT binary patch literal 57387 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 literal 0 HcmV?d00001 From 528d8f14a0ea69d4e9e89d678c1c693e32b6389c Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 5 Dec 2023 17:34:46 +0100 Subject: [PATCH 034/137] docs: restructure and extends wbtc gas fee payment --- .../account-abstraction}/_category_.yml | 2 +- .../account-abstraction}/index.md | 42 +++++++++++------- .../account-abstraction}/preview.png | Bin .../build/how-to/bridged-btc-gas-fee/index.md | 15 +++++++ .../meta-transactions}/_category_.yml | 2 +- .../meta-transactions}/index.md | 39 +++++++++++----- .../meta-transactions}/preview.png | Bin 7 files changed, 72 insertions(+), 28 deletions(-) rename docs/docs/build/{examples/wbtc-gas-fee-erc-2771 => how-to/bridged-btc-gas-fee/account-abstraction}/_category_.yml (73%) rename docs/docs/build/{examples/wbtc-gas-fee-erc-4337 => how-to/bridged-btc-gas-fee/account-abstraction}/index.md (71%) rename docs/docs/build/{examples/wbtc-gas-fee-erc-4337 => how-to/bridged-btc-gas-fee/account-abstraction}/preview.png (100%) create mode 100644 docs/docs/build/how-to/bridged-btc-gas-fee/index.md rename docs/docs/build/{examples/wbtc-gas-fee-erc-4337 => how-to/bridged-btc-gas-fee/meta-transactions}/_category_.yml (73%) rename docs/docs/build/{examples/wbtc-gas-fee-erc-2771 => how-to/bridged-btc-gas-fee/meta-transactions}/index.md (55%) rename docs/docs/build/{examples/wbtc-gas-fee-erc-2771 => how-to/bridged-btc-gas-fee/meta-transactions}/preview.png (100%) diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-2771/_category_.yml b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/_category_.yml similarity index 73% rename from docs/docs/build/examples/wbtc-gas-fee-erc-2771/_category_.yml rename to docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/_category_.yml index 4eed7a1b..b640c4da 100644 --- a/docs/docs/build/examples/wbtc-gas-fee-erc-2771/_category_.yml +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/_category_.yml @@ -1,3 +1,3 @@ -position: 4 +position: 2 collapsible: true collapsed: true \ No newline at end of file diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-4337/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md similarity index 71% rename from docs/docs/build/examples/wbtc-gas-fee-erc-4337/index.md rename to docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md index f4742c81..50fee5c0 100644 --- a/docs/docs/build/examples/wbtc-gas-fee-erc-4337/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md @@ -1,4 +1,4 @@ -# Gas fee payment in WBTC using ERC-4337 +# Gas Fee Payment in WBTC using Account Abstraction (ERC-4337) In this example, we will show how WBTC can be used for gas fee payment using the [ERC-4337 account abstraction standard](https://eips.ethereum.org/EIPS/eip-4337) on the BOB testnet. This enables users to use smart contract wallets and transact without the need to own ether. @@ -10,6 +10,32 @@ The source code for this demo can be found in [this repository](https://github.c ![preview](preview.png) +## Using the dApp + +This application uses the ERC-4337 standard and showcases how a smart contract wallet can be integrated. It contains an implementation of a custom account abstraction client that simplifies the integration of this standard into the UI. + + +The application consists of a simple form that allows you to send WBTC from the smart contract account with the gas fee paid in WBTC. To use it enter the WBTC amount and the recipient's EVM address. Then the injected wallet will ask for a user operation signature. After that, a signed user operation will be sent to the bundler which will broadcast it to the network. + +:::note +Before the first user operation can be made, the paymaster smart contract has to be approved to spend your WBTC. That is why the first wallet prompt will be the WBTC approval transaction request. +::: + +### Try it out + +1. Go to [demo-acccount-abstraction-transfer.vercel.app](https://demo-account-abstraction-transfer.vercel.app/) +2. Connect with your MetaMask account and get WBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 WBTC that you can spend.) +3. Add WBTC to your MetaMask, WBTC address is `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` +4. Transfer WBTC to the smart contract account via MetaMask (displayed above the amount field in the form). +5. Input the amount you wish to send and the recipient's address into the form fields. +6. Click on 'Transfer'. This will require three interactions with MetaMask: first one will deposit small amount of ETH to the entry point contract so that you can sign the user operation that allows the paymaster contract to spend your WBTC. Then you will sign the approval user operation. Finally, you will sign the transfer user operation. +7. Wait for the transfer user operation to be executed. + + +## Limitations + +Given that ERC-4337 is still relatively new, there is not a lot of support for this standard available yet. + ## Local development ### Contract addresses and links @@ -34,20 +60,6 @@ Bundler (eth-infinitism): 1. Run `pnpm run dev` 2. Open `localhost:5173` in browser. - - -## Using the dApp - -This application uses the ERC-4337 standard and showcases how a smart contract wallet can be integrated. It contains an implementation of a custom account abstraction client that simplifies the integration of this standard into the UI. - - -The application consists of a simple form that allows you to send WBTC from the smart contract account with the gas fee paid in WBTC. To use it enter the WBTC amount and the recipient's EVM address. Then the injected wallet will ask for a user operation signature. After that, a signed user operation will be sent to the bundler which will broadcast it to the network. - -:::note -Before the first user operation can be made, the paymaster smart contract has to be approved to spend your WBTC. That is why the first wallet prompt will be the WBTC approval transaction request. -::: - - ## Using account abstraction client To allow easy integration of ERC-4337 into dApps, a simple account abstraction client is included in this repository. This client handles smart account creation and bundler connection, manages user operations and allows paymaster usage. This repository also includes a React hook and context provider which enable straightforward usage of the client in the React application. diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-4337/preview.png b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/preview.png similarity index 100% rename from docs/docs/build/examples/wbtc-gas-fee-erc-4337/preview.png rename to docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/preview.png diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/index.md new file mode 100644 index 00000000..8cace7e5 --- /dev/null +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/index.md @@ -0,0 +1,15 @@ +# Using bridged BTC as Transaction Fees + +There are two standard approaches to how the gas fee can be paid in bridged BTC (ERC-20 token): + +- [Meta Transactions (ERC-2771)](meta-transactions) +- [Account Abstraction (ERC-4337)](account-abstraction) + +## Meta Transactions vs. Account Abstraction + +| | Meta Transactions | Account Abstraction | +| ---------------------- | ------------------------------------- | ----------------------------------------------------------------------- | +| Smart contract changes | Requires changes to smart contracts. | No changes to smart contracts needed. | +| UX changes | Uses standard UX approach. | New UX approach is needed to distinguish between signer and smart account. | +| Wallets compatibility | Compatible with standard EOA wallets. | Requires new smart contract wallets. | +| Production readiness | OpenGSN v3 is in beta. | New standard that is currently getting adopted. | diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-4337/_category_.yml b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/_category_.yml similarity index 73% rename from docs/docs/build/examples/wbtc-gas-fee-erc-4337/_category_.yml rename to docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/_category_.yml index 6c45e769..431ac78e 100644 --- a/docs/docs/build/examples/wbtc-gas-fee-erc-4337/_category_.yml +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/_category_.yml @@ -1,3 +1,3 @@ -position: 3 +position: 1 collapsible: true collapsed: true \ No newline at end of file diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-2771/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md similarity index 55% rename from docs/docs/build/examples/wbtc-gas-fee-erc-2771/index.md rename to docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md index 48c564db..b9d804ca 100644 --- a/docs/docs/build/examples/wbtc-gas-fee-erc-2771/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md @@ -1,6 +1,6 @@ -# Gas fee payment in WBTC using ERC-2771 +# Gas Fee Payment in WBTC using Meta Transactions (OpenGSN & ERC-2771) -In this example, we will show how WBTC can be used for gas fee payments using the [ERC-2771 standard](https://eips.ethereum.org/EIPS/eip-2771) on the BOB testnet. This enables users to transact without the necessity to own ether. +In this example, we will show how WBTC can be used for gas fee payments using the OpenGSN and [ERC-2771 standard](https://eips.ethereum.org/EIPS/eip-2771) on the BOB testnet. This enables users to transact without the necessity to own ETH. :::info Example Code @@ -8,8 +8,34 @@ The source code for this demo can be found in [this repository](https://github.c ::: +## OpenGSN +OpenGSN, or the Ethereum Gas Station Network, is a decentralized solution abstracting gas fee payments away from users. OpenGSN enables gasless transactions, allowing users to interact with smart contracts without needing ETH. It provides use cases such as privacy-focused transactions, payments in ERC-20 tokens, off-chain payments, and onboarding subsidies. Learn more in [OpenGSN docs](https://docs.opengsn.org/). + + +### Smart contract changes + +To enable OpenGSN functionality in smart contracts, developers need to make specific modifications. The smart contracts must inherit from the `ERC2771Recipient` contract. It's crucial to note that, when working with GSN recipient contracts, developers must refrain from using `msg.sender` directly. Instead, they should utilize `_msgSender()`, a function provided by `ERC2771Recipient`. This ensures accurate retrieval of user addresses during transactions and facilitates seamless integration with the Gas Station Network. +[Read the full smart contract modification instructions here.](https://docs.opengsn.org/contracts/#writing-gsn-capable-contracts) + + ![preview](preview.png) +## Using the dApp + +This application contains a simple form that allows you to transfer WBTC between accounts with the gas fee paid in WBTC. Simply enter the WBTC amount and the recipient's EVM address and the transaction will be sent to the Open Gas Network relay and relayed using the WBTC paymaster. + +:::note +Before the first relayed transaction is done, the paymaster smart contract has to be approved to spend your WBTC. That is why there will be a transaction request before the first relayed transfer transaction. +::: + +### Try it out + +1. Go to [demo-meta-transactions-transfer.vercel.app](https://demo-meta-transactions-transfer.vercel.app/) +2. Connect with your MetaMask account and get WBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 WBTC that you can spend.) +4. Input the amount you wish to send and the recipient's address into the form fields. +5. Click on 'Approve & Transfer' to approve the paymaster to spend your WBTC and to sign the relayed transaction. +6. Wait for the transfer transaction to be relayed. + ## Local development ### Contract addresses and links @@ -32,15 +58,6 @@ OpenGSN relayer: 1. Run `pnpm run dev` 2. Open `localhost:5173` in browser. - -## Using the dApp - -This application contains a simple form that allows you to transfer WBTC between accounts with the gas fee paid in WBTC. Simply enter the WBTC amount and the recipient's EVM address and the transaction will be sent to the Open Gas Network relay and relayed using the WBTC paymaster. - -:::note -Before the first relayed transaction is done, the paymaster smart contract has to be approved to spend your WBTC. That is why there will be a transaction request before the first relayed transfer transaction. -::: - ## Interacting with OpenGSN relay To allow simple interaction with the relay `ethers.Contract` instance is created using OpenGSN provider: diff --git a/docs/docs/build/examples/wbtc-gas-fee-erc-2771/preview.png b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/preview.png similarity index 100% rename from docs/docs/build/examples/wbtc-gas-fee-erc-2771/preview.png rename to docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/preview.png From ae8b357e5ce7a5dc325ba8e5b294994fa9bbaf85 Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 5 Dec 2023 18:01:56 +0100 Subject: [PATCH 035/137] docs: add section about smart contract wallets --- .../how-to/bridged-btc-gas-fee/account-abstraction/index.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md index 50fee5c0..0f96b268 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md @@ -1,6 +1,6 @@ # Gas Fee Payment in WBTC using Account Abstraction (ERC-4337) -In this example, we will show how WBTC can be used for gas fee payment using the [ERC-4337 account abstraction standard](https://eips.ethereum.org/EIPS/eip-4337) on the BOB testnet. This enables users to use smart contract wallets and transact without the need to own ether. +In this example, we will show how WBTC can be used for gas fee payment using the [ERC-4337 account abstraction standard](https://eips.ethereum.org/EIPS/eip-4337) on the BOB testnet. This enables users to use smart contract wallets and transact without the need to own ETH. :::info Example Code @@ -8,6 +8,10 @@ The source code for this demo can be found in [this repository](https://github.c ::: +## Smart Contract wallets + +This demo showcases WBTC transfer from the smart contract wallet. Smart contract wallets utilize smart contracts rather than single private keys found in Externally Owned Address (EOA) wallets. The programmable nature of smart contract wallets allows for diverse use cases. Unlike EOAs, smart contract wallets can contain logic but rely on EOAs to sign the user operations. Therefore, integration of the smart contract wallet into UI adds an additional complexity - users need to distinguish between the signer (EAO) and the account that holds assets (smart contract wallet). + ![preview](preview.png) ## Using the dApp From 9670049cc6e496343da1e0a9cc5fdb543f33a294 Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Wed, 6 Dec 2023 10:26:45 +0900 Subject: [PATCH 036/137] docs: update bitcoin local testing and how to sidebar --- docs/docs/build/examples/_category_.yml | 2 +- .../docs/build/getting-started/helloworld.mdx | 2 +- docs/docs/build/how-to/bitcoin-testing.md | 47 +++++++++++++++++-- docs/docs/build/how-to/brc-20.md | 1 + docs/docs/build/how-to/ordinals.md | 1 + docs/docs/build/how-to/relay.md | 1 + 6 files changed, 49 insertions(+), 5 deletions(-) diff --git a/docs/docs/build/examples/_category_.yml b/docs/docs/build/examples/_category_.yml index b0fc077f..d7315c96 100644 --- a/docs/docs/build/examples/_category_.yml +++ b/docs/docs/build/examples/_category_.yml @@ -1,4 +1,4 @@ position: 3 label: 'Examples' collapsible: true -collapsed: false \ No newline at end of file +collapsed: true \ No newline at end of file diff --git a/docs/docs/build/getting-started/helloworld.mdx b/docs/docs/build/getting-started/helloworld.mdx index 128dd809..f41925b4 100644 --- a/docs/docs/build/getting-started/helloworld.mdx +++ b/docs/docs/build/getting-started/helloworld.mdx @@ -252,7 +252,7 @@ BOB is built to make it easy to interact with Bitcoin. ### Verifying Bitcoin Transactions -You might be interested in verifying Bitcoin transactions on BOB. Check out the [Bitcoin](/docs/build/how-to/relay) Light Client](/docs/build/how-to/relay) guide to learn more. +You might be interested in verifying Bitcoin transactions on BOB. Check out the [Bitcoin Light Client](/docs/build/how-to/relay) guide to learn more. ### Examples diff --git a/docs/docs/build/how-to/bitcoin-testing.md b/docs/docs/build/how-to/bitcoin-testing.md index 869aee33..14ed0af4 100644 --- a/docs/docs/build/how-to/bitcoin-testing.md +++ b/docs/docs/build/how-to/bitcoin-testing.md @@ -1,9 +1,50 @@ --- sidebar_position: 1 +sidebar_label: Test Bitcoin Locally with Regtest --- # Bitcoin Testing -The recommended approach to start a local Bitcoin node for testing is to use "regtest" mode. If you have downloaded Bitcoin Core from [bitcoin.org](https://bitcoin.org/en/download) use `bitcoind -regtest` to start a regtest node. To create and fund the "Alice" wallet, use the following `bitcoin-cli` commands: +## Starting a Local Bitcoin Development Environment + +### Using Docker (Recommended) + +We have a [`docker-compose.yml`](https://github.com/bob-collective/bob/blob/master/docker-compose.yml) setup script in the BOB repository. + +The docker file will: + +- Run the Bitcoin daemon +- Fund the "Alice" wallet +- Mine a block every ten seconds +- Start the [Esplora](https://github.com/Blockstream/esplora) backend to index the local chain and provide a [REST API](https://github.com/blockstream/esplora/blob/master/API.md) +- Start the [ord](https://github.com/ordinals/ord) ordinals indexer, block explorer, and wallet + +### Using Bitcoin Core + +The recommended approach to start a local Bitcoin node for testing is to use "regtest" mode. If you have downloaded Bitcoin Core from [bitcoin.org](https://bitcoin.org/en/download) use the following to start a regtest node. + +```shell +bitcoind -regtest -daemon +``` + +To stop the node, use the following command: + +```shell +bitcoin-cli -regtest stop +``` + +### Using Nigiri Bitcoin + +For an alterantive development environment check out [Nigiri Bitcoin](https://github.com/vulpemventures/nigiri/) which also packages a Liquid daemon and an Electrum server. + +## Funding a Wallet + +:::info + +This step is only required if you are not using the `docker-compose.yml` script. + +::: + +To create and fund the "Alice" wallet, use the following `bitcoin-cli` commands: ```shell bitcoin-cli -regtest createwallet Alice @@ -13,11 +54,11 @@ bitcoin-cli -regtest generatetoaddress 101 ${ALICE_ADDRESS} :::info -Funds from the coinbase transaction need 100 confirmations to be spendable, so make sure to mine a sufficient number of blocks. +Funds from the coinbase transaction need 100 confirmations to be spendable, so make sure to mine a sufficient number of blocks. The command above mines 101 blocks, which is the minimum required for the funds to be spendable. ::: -We also have a [`docker-compose.yml`](https://github.com/bob-collective/bob/blob/master/docker-compose.yml) setup script in the BOB repository to run the Bitcoin daemon, fund the "Alice" wallet and mine a block every ten seconds. This will also run the [Esplora](https://github.com/Blockstream/esplora) backend to index the local chain and provide a REST API. For a more complete development environment check out [Nigiri Bitcoin](https://github.com/vulpemventures/nigiri/) which also packages a Liquid daemon and an Electrum server. +## Transferring Funds To create and send funds to the "Bob" wallet, use the following commands: diff --git a/docs/docs/build/how-to/brc-20.md b/docs/docs/build/how-to/brc-20.md index 46e1df2e..0a3c08a9 100644 --- a/docs/docs/build/how-to/brc-20.md +++ b/docs/docs/build/how-to/brc-20.md @@ -1,5 +1,6 @@ --- sidebar_position: 4 +sidebar_label: Deploy, Mint, and Transfer BRC-20 --- # BRC-20 diff --git a/docs/docs/build/how-to/ordinals.md b/docs/docs/build/how-to/ordinals.md index 7967648d..de91915d 100644 --- a/docs/docs/build/how-to/ordinals.md +++ b/docs/docs/build/how-to/ordinals.md @@ -1,5 +1,6 @@ --- sidebar_position: 3 +sidebar_label: Inscribe and Transfer Ordinals --- # Ordinals diff --git a/docs/docs/build/how-to/relay.md b/docs/docs/build/how-to/relay.md index f82a518c..18857c07 100644 --- a/docs/docs/build/how-to/relay.md +++ b/docs/docs/build/how-to/relay.md @@ -1,5 +1,6 @@ --- sidebar_position: 2 +sidebar_label: Use the Bitcoin Light Client --- # Bitcoin Light Client From 55950d23ffad80a3fdf18f9ec1d5bc978e8e40e1 Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Wed, 6 Dec 2023 16:22:55 +0900 Subject: [PATCH 037/137] docs: update MT and AA demo descriptions --- .../account-abstraction/index.md | 61 +++++++++++-------- .../build/how-to/bridged-btc-gas-fee/index.md | 28 ++++++--- .../meta-transactions/index.md | 41 +++++++------ 3 files changed, 73 insertions(+), 57 deletions(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md index 0f96b268..c3d45656 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md @@ -1,64 +1,71 @@ -# Gas Fee Payment in WBTC using Account Abstraction (ERC-4337) +# Gas Fee Payment in wBTC using Account Abstraction (ERC-4337) -In this example, we will show how WBTC can be used for gas fee payment using the [ERC-4337 account abstraction standard](https://eips.ethereum.org/EIPS/eip-4337) on the BOB testnet. This enables users to use smart contract wallets and transact without the need to own ETH. +In this example, we will show how wBTC can be used for gas fee payment using the [ERC-4337 account abstraction standard](https://eips.ethereum.org/EIPS/eip-4337) on the BOB testnet. This enables users to use smart contract wallets and transact without the need to own ETH. + +:::tip Live Demo + +Check out the live demo at [demo-account-abstraction.gobob.xyz](https://demo-account-abstraction.gobob.xyz/). + +::: :::info Example Code -The source code for this demo can be found in [this repository](https://github.com/bob-collective/demo-account-abstraction-transfer/). +Check out the code of the demo in [this repository](https://github.com/bob-collective/demo-account-abstraction-transfer/). ::: ## Smart Contract wallets -This demo showcases WBTC transfer from the smart contract wallet. Smart contract wallets utilize smart contracts rather than single private keys found in Externally Owned Address (EOA) wallets. The programmable nature of smart contract wallets allows for diverse use cases. Unlike EOAs, smart contract wallets can contain logic but rely on EOAs to sign the user operations. Therefore, integration of the smart contract wallet into UI adds an additional complexity - users need to distinguish between the signer (EAO) and the account that holds assets (smart contract wallet). +This demo showcases wBTC transfer from the smart contract wallet. Smart contract wallets utilize smart contracts rather than single private keys found in Externally Owned Address (EOA) wallets. The programmable nature of smart contract wallets allows for diverse use cases. Unlike EOAs, smart contract wallets can contain logic but rely on EOAs to sign the user operations. Therefore, integration of the smart contract wallet into UI adds an additional complexity - users need to distinguish between the signer (EAO) and the account that holds assets (smart contract wallet). ![preview](preview.png) ## Using the dApp -This application uses the ERC-4337 standard and showcases how a smart contract wallet can be integrated. It contains an implementation of a custom account abstraction client that simplifies the integration of this standard into the UI. +This application uses the ERC-4337 standard and showcases how a smart contract wallet can be integrated. It contains an implementation of a custom account abstraction client that simplifies the integration of this standard into the UI. - -The application consists of a simple form that allows you to send WBTC from the smart contract account with the gas fee paid in WBTC. To use it enter the WBTC amount and the recipient's EVM address. Then the injected wallet will ask for a user operation signature. After that, a signed user operation will be sent to the bundler which will broadcast it to the network. +The application consists of a simple form that allows you to send wBTC from the smart contract account with the gas fee paid in wBTC. To use it enter the wBTC amount and the recipient's EVM address. Then the injected wallet will ask for a user operation signature. After that, a signed user operation will be sent to the bundler which will broadcast it to the network. :::note -Before the first user operation can be made, the paymaster smart contract has to be approved to spend your WBTC. That is why the first wallet prompt will be the WBTC approval transaction request. +Before the first user operation can be made, the paymaster smart contract has to be approved to spend your wBTC. That is why the first wallet prompt will be the wBTC approval transaction request. ::: ### Try it out -1. Go to [demo-acccount-abstraction-transfer.vercel.app](https://demo-account-abstraction-transfer.vercel.app/) -2. Connect with your MetaMask account and get WBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 WBTC that you can spend.) -3. Add WBTC to your MetaMask, WBTC address is `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` -4. Transfer WBTC to the smart contract account via MetaMask (displayed above the amount field in the form). +1. Go to [demo-acccount-abstraction.gobob.xyz](https://demo-account-abstraction.gobob.xyz/) +2. Connect with your MetaMask account and get wBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 wBTC that you can spend.) +3. Add wBTC to your MetaMask, wBTC address is `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` +4. Transfer wBTC to the smart contract account via MetaMask (displayed above the amount field in the form). 5. Input the amount you wish to send and the recipient's address into the form fields. -6. Click on 'Transfer'. This will require three interactions with MetaMask: first one will deposit small amount of ETH to the entry point contract so that you can sign the user operation that allows the paymaster contract to spend your WBTC. Then you will sign the approval user operation. Finally, you will sign the transfer user operation. +6. Click on 'Transfer'. This will require three interactions with MetaMask: first one will deposit small amount of ETH to the entry point contract so that you can sign the user operation that allows the paymaster contract to spend your wBTC. Then you will sign the approval user operation. Finally, you will sign the transfer user operation. 7. Wait for the transfer user operation to be executed. - ## Limitations -Given that ERC-4337 is still relatively new, there is not a lot of support for this standard available yet. +Given that ERC-4337 is still relatively new, there is not a lot of support for this standard available yet on "traditiona" crypto wallets like MetaMask, Ledger, and others. -## Local development +## Opportunities -### Contract addresses and links -WBTC contract address: `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` +There are a interesting use cases that account abstraction enables being pushed by several team. Some places to look for inspiration: -Entry point contract address: `0x7A660708DB3D56BB0dC3694344777c805716Fca7` +- [Privy](https://docs.privy.io/): Privy allows users to chose from traditional crypto wallets and social logins to create accounts. +- [Safe](https://docs.safe.global/getting-started/readme): Safe allows complex multi-sig setups, simple authetication, and onramping. +- [Pimlico](https://pimlico.notion.site/Product-Directory-5d92fe60243b4c5aac6650de390e7cb3): Pimlico tracks several products around account abstraction and it is worthwhile checking out the rapid and new developments in this space. -WBTC paymaster address: -`0xD8Ae58534d5488571E248DdC0A3aD42aD5dBaD26` +## Local development + +### Contract addresses and links -Bundler (eth-infinitism): -`https://bundler-fluffy-bob.gobob.xyz/rpc` +- wBTC contract address: `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` +- Entry point contract address: `0x7A660708DB3D56BB0dC3694344777c805716Fca7` +- wBTC paymaster address: `0xD8Ae58534d5488571E248DdC0A3aD42aD5dBaD26` +- Bundler (eth-infinitism): `https://bundler-fluffy-bob.gobob.xyz/rpc` ### Installing the project 1. Install [pnpm](https://pnpm.io/installation) 2. Run `pnpm install` - ### Starting the project 1. Run `pnpm run dev` @@ -69,6 +76,7 @@ Bundler (eth-infinitism): To allow easy integration of ERC-4337 into dApps, a simple account abstraction client is included in this repository. This client handles smart account creation and bundler connection, manages user operations and allows paymaster usage. This repository also includes a React hook and context provider which enable straightforward usage of the client in the React application. To use `AaClient` in your app wrap it in the `AccountAbstractionProvider`: + ```typescript @@ -76,6 +84,7 @@ To use `AaClient` in your app wrap it in the `AccountAbstractionProvider`: ``` Now you can use the `useAccountAbstraction` hook anywhere within the app to get the client and utilize its functionality: + ```typescript const { client } = useAccountAbstraction(); ... @@ -87,8 +96,6 @@ nonce: approvalUserOpNonce }); const transferResult = await client.signAndSendUserOp(userOp); - - ``` -To view the example of a full account abstraction flow please navigate to the `src/App.tsx` component. \ No newline at end of file +To view the example of a full account abstraction flow please navigate to the `src/App.tsx` component. diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/index.md index 8cace7e5..903d61ca 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/index.md @@ -1,15 +1,23 @@ -# Using bridged BTC as Transaction Fees +# Using Bridged BTC as Gas Token on Ethereum Rollups -There are two standard approaches to how the gas fee can be paid in bridged BTC (ERC-20 token): +On Ethereum rollups, gas fees need to be paid in ETH as the base currency. While a rollup can in theory chose to use their own gas token, part of the gas fees on the rollup are used on Ethereum to pay for data availability. -- [Meta Transactions (ERC-2771)](meta-transactions) -- [Account Abstraction (ERC-4337)](account-abstraction) +In many cases, it is desirable to pay gas fees in other tokens. In particular, on BOB, we want to allow users to pay gas fees in bridged BTC to create a seamless experience for Bitcoin users. + +There are two approaches to how gas fees can be paid in bridged BTC (or any other ERC-20 token like USDT or USDC) that can be implemented directly on the rollup without changing the rollup client: + +- [Meta Transactions (ERC-2771)](meta-transactions): Let someone else submit a transaction on your behalf. +- [Account Abstraction (ERC-4337)](account-abstraction): Use a smart contract wallet with a paymaster to pay gas fees. + +BOB supports both approaches and leaves it up to projects to decide which approach they want to use. ## Meta Transactions vs. Account Abstraction -| | Meta Transactions | Account Abstraction | -| ---------------------- | ------------------------------------- | ----------------------------------------------------------------------- | -| Smart contract changes | Requires changes to smart contracts. | No changes to smart contracts needed. | -| UX changes | Uses standard UX approach. | New UX approach is needed to distinguish between signer and smart account. | -| Wallets compatibility | Compatible with standard EOA wallets. | Requires new smart contract wallets. | -| Production readiness | OpenGSN v3 is in beta. | New standard that is currently getting adopted. | +Both approaches have their pros and cons. The following table briefly summarizes the differences between the two approaches but we recommend reading the individual pages for more details: + +| | Meta Transactions | Account Abstraction | +| ---------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------- | +| Smart contract changes | Requires changes to smart contracts. | No changes to smart contracts needed. | +| UX changes | Uses standard crypto-wallet UX approach. | New UX approach is needed to distinguish between signer and smart account. | +| Wallets compatibility | Compatible with standard EOA wallets. | Requires new smart contract wallets. | +| Production readiness | OpenGSN v3 is in beta. | New standard that is currently getting adopted. | diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md index b9d804ca..b9829a8d 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md @@ -1,52 +1,54 @@ -# Gas Fee Payment in WBTC using Meta Transactions (OpenGSN & ERC-2771) +# Gas Fee Payment in wBTC using Meta Transactions (OpenGSN & ERC-2771) -In this example, we will show how WBTC can be used for gas fee payments using the OpenGSN and [ERC-2771 standard](https://eips.ethereum.org/EIPS/eip-2771) on the BOB testnet. This enables users to transact without the necessity to own ETH. +In this example, we will show how wBTC can be used for gas fee payments using the OpenGSN and [ERC-2771 standard](https://eips.ethereum.org/EIPS/eip-2771) on the BOB testnet. This enables users to transact without the necessity to own ETH. + +:::tip Live Demo + +Check out the live demo at [demo-meta-transactions.gobob.xyz](https://demo-meta-transactions.gobob.xyz). + +::: :::info Example Code -The source code for this demo can be found in [this repository](https://github.com/bob-collective/demo-meta-transactions-transfer/). +Check out the code of the demo in [this repository](https://github.com/bob-collective/demo-meta-transactions-transfer/). ::: ## OpenGSN -OpenGSN, or the Ethereum Gas Station Network, is a decentralized solution abstracting gas fee payments away from users. OpenGSN enables gasless transactions, allowing users to interact with smart contracts without needing ETH. It provides use cases such as privacy-focused transactions, payments in ERC-20 tokens, off-chain payments, and onboarding subsidies. Learn more in [OpenGSN docs](https://docs.opengsn.org/). +[OpenGSN](https://opengsn.org/), or the Ethereum Gas Station Network, is a decentralized solution abstracting gas fee payments away from users. OpenGSN enables gasless transactions, allowing users to interact with smart contracts without needing ETH. It provides use cases such as privacy-focused transactions, payments in ERC-20 tokens, off-chain payments, and onboarding subsidies. Learn more in [OpenGSN docs](https://docs.opengsn.org/). ### Smart contract changes To enable OpenGSN functionality in smart contracts, developers need to make specific modifications. The smart contracts must inherit from the `ERC2771Recipient` contract. It's crucial to note that, when working with GSN recipient contracts, developers must refrain from using `msg.sender` directly. Instead, they should utilize `_msgSender()`, a function provided by `ERC2771Recipient`. This ensures accurate retrieval of user addresses during transactions and facilitates seamless integration with the Gas Station Network. [Read the full smart contract modification instructions here.](https://docs.opengsn.org/contracts/#writing-gsn-capable-contracts) - ![preview](preview.png) ## Using the dApp -This application contains a simple form that allows you to transfer WBTC between accounts with the gas fee paid in WBTC. Simply enter the WBTC amount and the recipient's EVM address and the transaction will be sent to the Open Gas Network relay and relayed using the WBTC paymaster. +This application contains a simple form that allows you to transfer wBTC between accounts with the gas fee paid in wBTC. Simply enter the wBTC amount and the recipient's EVM address and the transaction will be sent to the Open Gas Network relay and relayed using the wBTC paymaster. :::note -Before the first relayed transaction is done, the paymaster smart contract has to be approved to spend your WBTC. That is why there will be a transaction request before the first relayed transfer transaction. +Before the first relayed transaction is done, the paymaster smart contract has to be approved to spend your wBTC. That is why there will be a transaction request before the first relayed transfer transaction. ::: ### Try it out -1. Go to [demo-meta-transactions-transfer.vercel.app](https://demo-meta-transactions-transfer.vercel.app/) -2. Connect with your MetaMask account and get WBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 WBTC that you can spend.) +1. Go to [demo-meta-transactions.gobob.xyz](https://demo-meta-transactions.gobob.xyz) +2. Connect with your MetaMask account and get wBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 wBTC that you can spend.) +3. Add wBTC to your MetaMask, wBTC address is `0x833d9398A3DBa68994AdE7Db42Ff597831933aeD` 4. Input the amount you wish to send and the recipient's address into the form fields. -5. Click on 'Approve & Transfer' to approve the paymaster to spend your WBTC and to sign the relayed transaction. -6. Wait for the transfer transaction to be relayed. +5. Click on 'Approve & Transfer' to approve the paymaster to spend your wBTC and to sign the relayed transaction. +6. Wait for the transfer transaction to be relayed. ## Local development ### Contract addresses and links -WBTC contract address: `0x833d9398A3DBa68994AdE7Db42Ff597831933aeD` - -Paymaster contract address: `0x7F1c9BFcBcc36a09a24473af485cf25e6cfe3Fd6` - -OpenGSN relayer: -`https://gsn-relay-fluffy-bob.gobob.xyz` - +- wBTC contract address: `0x833d9398A3DBa68994AdE7Db42Ff597831933aeD` +- Paymaster contract address: `0x7F1c9BFcBcc36a09a24473af485cf25e6cfe3Fd6` +- OpenGSN relayer: `https://gsn-relay-fluffy-bob.gobob.xyz` ### Installing the project @@ -92,10 +94,9 @@ const getRelayedContract = async (contractType: ContractType) => { ``` Then the `Contract` instance can be used in a standard way: + ```typescript const transferTx = await relayedContract.transfer(form.address, atomicAmount.toString()); await transferTx.wait(); ``` - - From 086d7fb85d9cc024fab83de2d965b153d373e047 Mon Sep 17 00:00:00 2001 From: Gregory Hill Date: Wed, 6 Dec 2023 06:11:25 +0000 Subject: [PATCH 038/137] chore: add mm snap to ordinal wallet list Signed-off-by: Gregory Hill --- docs/docs/build/how-to/ordinals.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/docs/build/how-to/ordinals.md b/docs/docs/build/how-to/ordinals.md index de91915d..0dffc1c7 100644 --- a/docs/docs/build/how-to/ordinals.md +++ b/docs/docs/build/how-to/ordinals.md @@ -7,7 +7,6 @@ sidebar_label: Inscribe and Transfer Ordinals [Ordinals](https://docs.ordinals.com/) are a system for tracking and transferring satoshis, Bitcoin's smallest units and attaching data to satoshis. When such attachment of data to satoshi happens an __inscription__ is created. Inscription content is entirely on-chain, stored in taproot script-path spend scripts forever. These scripts receive witness discounts, making inscription content storage relatively economical. - ## How to create an inscription Inscriptions are created using taproot script. That means you have to use a P2TR type of address to be able to create the inscription. @@ -16,7 +15,8 @@ Inscriptions are created using taproot script. That means you have to use a P2TR - [`ord` wallet](https://docs.ordinals.com/guides/inscriptions.html) (Desktop, full Bitcoin node requirement) - [Sparrow wallet](https://sparrowwallet.com/) (Desktop) - [Xverse](https://www.xverse.app/download) (Browser and mobile) -- [Unisat](https://unisat.io/download ) (Browser) +- [Unisat](https://unisat.io/download) (Browser) +- [MetaMask](https://metamask.io/) [btcsnap](https://github.com/bob-collective/btcsnap) (Browser) ### Inscribing data If you're developing an app with Javascript or Typescript you can use the BOB SDK to create the commit and reveal transactions required to inscribe data to an ordinal. Refer to the `inscribeText` function and provide a custom `RemoteSigner` implementation for your wallet. The test in [`sdk/test/ordinals.test.ts`](https://github.com/bob-collective/bob/blob/master/sdk/test/ordinals.test.ts) provides an example implementation using [`bitcoinjs-lib`](https://github.com/bitcoinjs/bitcoinjs-lib) and [`tiny-secp256k1`](https://github.com/bitcoinjs/tiny-secp256k1). @@ -30,14 +30,13 @@ There are other ways to create inscriptions, the following two are advised: Even though the inscribing process requires only 1 satoshi to which data are inscribed, there are associated fees to store the data based on inscription size and padding - an amount of satoshis included in the UTXO to pay for future inscriptions transfers. ::: -## How to transfer inscription +## How to transfer an inscription To transfer the inscription, the satoshi to which the data were inscribed has to be transferred. To do that, simply select the inscription in your wallet and send it to the recipient's address. :::tip Make sure that the recipient of the transfer provided a valid P2TR address. ::: - ## How to explore ordinal data Even though inscription data are stored on the blockchain, they are not directly accessible by calling a Bitcoin node. To be able to work with inscriptions, an ordinals indexer has to be run. There is a main [open-source indexer implementation](https://github.com/casey/ord) which contains an ordinals explorer web interface and an API deployed at [ordinals.com](https://ordinals.com/). From 985702b2583481ab01cb1a10f41578918353c4d0 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 6 Dec 2023 17:07:58 +0100 Subject: [PATCH 039/137] feat: add erc20 faucet contract --- src/faucet/Erc20Minter.sol | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/faucet/Erc20Minter.sol diff --git a/src/faucet/Erc20Minter.sol b/src/faucet/Erc20Minter.sol new file mode 100644 index 00000000..511b4210 --- /dev/null +++ b/src/faucet/Erc20Minter.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; +import "@openzeppelin/contracts/access/Ownable.sol"; + +interface Erc20Mintable { + function decimals() external returns (uint); + function mint(uint256 amount) external; + function transfer(address to, uint256 amount) external returns (bool); + function approve(address spender, uint256 amount) external; + function balanceOf(address account) external view returns (uint); +} + +contract Erc20Minter is Ownable { + uint nextTokenId; + mapping (uint => address) supportedErc20Addresses; + + function addErc20(address newErc20) public onlyOwner{ + supportedErc20Addresses[nextTokenId++] = newErc20; + } + + + // Mints 30000 of each erc20 + function mint () public { + for(uint id = 0; id < nextTokenId; id++ ) { + Erc20Mintable token = Erc20Mintable(supportedErc20Addresses[id]); + uint amount = 30000 * (10 ** token.decimals()); + token.mint(amount); + token.transfer(msg.sender, amount); + } + } +} \ No newline at end of file From a00321e25729a580118225abd95d3ac0f87a9c34 Mon Sep 17 00:00:00 2001 From: Peter Date: Wed, 6 Dec 2023 17:10:00 +0100 Subject: [PATCH 040/137] chore: format --- src/faucet/Erc20Minter.sol | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/faucet/Erc20Minter.sol b/src/faucet/Erc20Minter.sol index 511b4210..40566617 100644 --- a/src/faucet/Erc20Minter.sol +++ b/src/faucet/Erc20Minter.sol @@ -1,31 +1,31 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.18; + import "@openzeppelin/contracts/access/Ownable.sol"; interface Erc20Mintable { - function decimals() external returns (uint); + function decimals() external returns (uint256); function mint(uint256 amount) external; function transfer(address to, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external; - function balanceOf(address account) external view returns (uint); + function balanceOf(address account) external view returns (uint256); } contract Erc20Minter is Ownable { - uint nextTokenId; - mapping (uint => address) supportedErc20Addresses; + uint256 nextTokenId; + mapping(uint256 => address) supportedErc20Addresses; - function addErc20(address newErc20) public onlyOwner{ + function addErc20(address newErc20) public onlyOwner { supportedErc20Addresses[nextTokenId++] = newErc20; } - // Mints 30000 of each erc20 - function mint () public { - for(uint id = 0; id < nextTokenId; id++ ) { + function mint() public { + for (uint256 id = 0; id < nextTokenId; id++) { Erc20Mintable token = Erc20Mintable(supportedErc20Addresses[id]); - uint amount = 30000 * (10 ** token.decimals()); + uint256 amount = 30000 * (10 ** token.decimals()); token.mint(amount); token.transfer(msg.sender, amount); } } -} \ No newline at end of file +} From b70b9eab8ea3d5ab7bab87cd95774d83f2ead545 Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Thu, 7 Dec 2023 16:43:09 +0900 Subject: [PATCH 041/137] docs: WIP testnet update --- docs/docs/build/contracts/_category_.yml | 2 ++ docs/docs/build/contracts/index.md | 18 ++++++++++++ .../docs/build/getting-started/helloworld.mdx | 6 ++-- docs/docs/build/getting-started/index.md | 2 +- docs/docs/build/getting-started/networks.md | 23 +++++++++++++++ docs/docs/build/getting-started/testnet.md | 29 ------------------- 6 files changed, 47 insertions(+), 33 deletions(-) create mode 100644 docs/docs/build/contracts/_category_.yml create mode 100644 docs/docs/build/contracts/index.md create mode 100644 docs/docs/build/getting-started/networks.md delete mode 100644 docs/docs/build/getting-started/testnet.md diff --git a/docs/docs/build/contracts/_category_.yml b/docs/docs/build/contracts/_category_.yml new file mode 100644 index 00000000..a5c47752 --- /dev/null +++ b/docs/docs/build/contracts/_category_.yml @@ -0,0 +1,2 @@ +position: 5 +label: 'Contracts' \ No newline at end of file diff --git a/docs/docs/build/contracts/index.md b/docs/docs/build/contracts/index.md new file mode 100644 index 00000000..efa7408a --- /dev/null +++ b/docs/docs/build/contracts/index.md @@ -0,0 +1,18 @@ +# Contracts + +## BOB Testnet (Sepolia) + +### Multicall3 + +- Multicall3: `0x089b191d95417817389c8eD9075b51a38ca46DE8` + +### BOB Core Contracts + +- tBTC Relay: `` + +### Tokens (ERC20) + +- Erc20Minter (faucet): `0x7884560F14c62E0a83420F17832988cC1a775df1` +- TBTC: +- USDT: +- WBTC: \ No newline at end of file diff --git a/docs/docs/build/getting-started/helloworld.mdx b/docs/docs/build/getting-started/helloworld.mdx index f41925b4..be75ab44 100644 --- a/docs/docs/build/getting-started/helloworld.mdx +++ b/docs/docs/build/getting-started/helloworld.mdx @@ -28,7 +28,7 @@ We will provide instructions for using Remix and Foundry. Before you can deploy smart contracts on BOB, ensure you have the following prerequisites: -- An EVM wallet with funds from the [testnet](testnet) faucet. +- An EVM wallet with funds from the [testnet](networks) faucet. - Setup either Remix or Foundry as your development environment. @@ -236,7 +236,7 @@ At this point, your smart contract is ready to be used, but we can go a step fur 5. Click on the "Code" tab and click on "Verify & Publish" button. -6. Now you should be presented we a set of possilities for verifying you published contract, but we will procced with "Via flattened source code". +6. Now you should be presented we a set of possilities for verifying you published contract, but we will proceed with "Via flattened source code". 7. Fill the form with the specific information about the contract and how it was deployed. Make sure every field is correctly populated before submitting. Any incorrect field will lead to a failed verification. After submitting, the verification might take a couple of minutes. @@ -277,4 +277,4 @@ Feel free to revisit this guide and check for updates or changes in the links an - [Coin contract code](https://github.com/ethereum/solidity/blob/develop/docs/introduction-to-smart-contracts.rst) - [Remix](https://remix.ethereum.org/) - [Foundry](https://book.getfoundry.sh/) -- [BOB testnet](testnet) +- [BOB testnet](networks) diff --git a/docs/docs/build/getting-started/index.md b/docs/docs/build/getting-started/index.md index 6dd313e2..ce00ffa9 100644 --- a/docs/docs/build/getting-started/index.md +++ b/docs/docs/build/getting-started/index.md @@ -18,7 +18,7 @@ This is alpha-stage software. We love to work closely with you to make BOB usefu ## Getting Started - [Hello World](helloworld): Develop your first smart contract on BOB. -- [Testnet](testnet): Learn how to deploy your contracts to the testnet and interact with them. +- [Networks](networks): Learn how to deploy your contracts to the BOB networks and interact with them. ## How To diff --git a/docs/docs/build/getting-started/networks.md b/docs/docs/build/getting-started/networks.md new file mode 100644 index 00000000..64e3acd3 --- /dev/null +++ b/docs/docs/build/getting-started/networks.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 2 +--- + +# Networks + +## Start Building + +BOB is fully EVM compatible so you can use any tools you are used to from Ethereum. + +## BOB Testnet (Sepolia) + +- Name: BOB Testnet +- Description: Official public BOB testnet +- Chain ID: 111 +- RPC URL (BOB): https://testnet.rpc.gobob.xyz/ +- Explorer (BOB): +- Bridge (BOB - Sepolia): https://puff-bob-jznbxtoq7h.testnets.superbridge.app/ +- RPC URL (Ethereum Sepolia): https://chainlist.org/chain/11155111 +- Explorer (Ethereum Sepolia): https://sepolia.etherscan.io/ +- Faucet (Ethereum Sepolia): https://faucetlink.to/sepolia +- Ordinals API (Bitcoin testnet): https://ord-testnet.gobob.xyz/docs/ +- Explorer (Bitcoin testnet): https://blockstream.info/testnet/ diff --git a/docs/docs/build/getting-started/testnet.md b/docs/docs/build/getting-started/testnet.md deleted file mode 100644 index d9c0ae93..00000000 --- a/docs/docs/build/getting-started/testnet.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Testnet - -## Start Building - -BOB is fully EVM compatible so you can use any tools you are used to from Ethereum. - -## Fluffy BOB - -We are hosting a public devnet for BOB using [conduit](https://conduit.xyz/). - -- Published testnet: https://app.conduit.xyz/published/view/fluffy-bob-7mjgi9pmtg - -This page also contains a button you can click to add the BOB testnet to your wallet. For convenience, the most useful links are copied below. - -- **L2 RPC** https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz -- **L2 WS** wss://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz -- **L2 Block Explorer** https://explorerl2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz -- **Chain ID** `901` -- **Faucet** https://app.conduit.xyz/published/view/fluffy-bob-7mjgi9pmtg - use the L2 faucet box. -- **Ordinals API** https://ord-testnet.gobob.xyz/docs/ -Sometimes the faucet fails, in which case you can use curl to directly call the API: - -```sh -curl -XPOST -i https://faucetl2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz/drip/[address] -``` From fc4120e383dabb1249ca5869b7ff0c3242686306 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Thu, 7 Dec 2023 16:24:23 +0000 Subject: [PATCH 042/137] contract addresses and explorer --- docs/docs/build/contracts/index.md | 3 ++- docs/docs/build/getting-started/networks.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/docs/build/contracts/index.md b/docs/docs/build/contracts/index.md index efa7408a..1812c473 100644 --- a/docs/docs/build/contracts/index.md +++ b/docs/docs/build/contracts/index.md @@ -14,5 +14,6 @@ - Erc20Minter (faucet): `0x7884560F14c62E0a83420F17832988cC1a775df1` - TBTC: +- USDC: `0x27c3321E40f039d10D5FF831F528C9CEAE601B1d` - USDT: -- WBTC: \ No newline at end of file +- WBTC: `0x2868d708e442A6a940670d26100036d426F1e16b` diff --git a/docs/docs/build/getting-started/networks.md b/docs/docs/build/getting-started/networks.md index 64e3acd3..b786e803 100644 --- a/docs/docs/build/getting-started/networks.md +++ b/docs/docs/build/getting-started/networks.md @@ -14,7 +14,7 @@ BOB is fully EVM compatible so you can use any tools you are used to from Ethere - Description: Official public BOB testnet - Chain ID: 111 - RPC URL (BOB): https://testnet.rpc.gobob.xyz/ -- Explorer (BOB): +- Explorer (BOB): https://explorerl2new-puff-bob-jznbxtoq7h.t.conduit.xyz/ - Bridge (BOB - Sepolia): https://puff-bob-jznbxtoq7h.testnets.superbridge.app/ - RPC URL (Ethereum Sepolia): https://chainlist.org/chain/11155111 - Explorer (Ethereum Sepolia): https://sepolia.etherscan.io/ From 761009466fb433c9dd151dffee2e34ab14a4ecc4 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Fri, 8 Dec 2023 13:16:38 +0000 Subject: [PATCH 043/137] Update P2P demo docs --- docs/docs/build/examples/btc-swap/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs/build/examples/btc-swap/index.md b/docs/docs/build/examples/btc-swap/index.md index 44301b17..cf3b001d 100644 --- a/docs/docs/build/examples/btc-swap/index.md +++ b/docs/docs/build/examples/btc-swap/index.md @@ -10,7 +10,7 @@ The code for this example can be [found in the P2P swap demo GitHub repository]( ## Demo -We have created a testnet demo of the P2P swap, allowing anyone to swap BTC for ERC20 tokens, ERC20 tokens for BTC, and exchange one ERC20 token for another. The application currently supports testnet BTC, testnet USDT, and ZBTC (ZBTC is a placeholder for an arbitrary bridged BTC token). +We have created a testnet demo of the P2P swap, allowing anyone to swap BTC for ERC20 tokens, ERC20 tokens for BTC, and exchange one ERC20 token for another. The application currently supports testnet BTC, testnet USDC, and WBTC (WBTC is a placeholder for an arbitrary bridged BTC token). ### Connecting Your Wallet @@ -37,11 +37,11 @@ The UI can sometimes fail to connect if you have multiple wallets installed. If You will need two accounts for this demo, so that you can both create and fulfil orders. For each account: -- Click the 'Get Gas' button to fund your account with ETH. This will be needed for transaction fees. +- Fund your account with ETH from a [Sepolia testnet](https://faucetlink.to/sepolia) and then transfer it to the BOB network using [Superbridge](https://puff-bob-jznbxtoq7h.testnets.superbridge.app/). This will be needed for transaction fees. - After the ETH tokens have arrived in your wallet, click on the 'Get Tokens' button to fund your account with ERC20 tokens to used when adding an order. - Import the ERC20 tokens from the following contract addresses: - - ZBTC: `0x4f01078121e90915F9f1448DE4b3C2515B5e2F3B` - - USDT: `0x3c252953224948E441aAfdE7b391685201ccd3bC` + - WBTC: `0x2868d708e442A6a940670d26100036d426F1e16b` + - USDC: `0x27c3321E40f039d10D5FF831F528C9CEAE601B1d` - You will also need some test BTC from the [Bitcoin testnet faucet](https://bitcoinfaucet.uo1.net/). :::note From 7448d9b7e65f88a64ff83fade452ff4f794116e9 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Mon, 11 Dec 2023 13:26:43 +0000 Subject: [PATCH 044/137] Revert "Update P2P demo docs" This reverts commit 0ae76feb73225bccce6a90d821e00eb0409f037a. --- docs/docs/build/examples/btc-swap/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs/build/examples/btc-swap/index.md b/docs/docs/build/examples/btc-swap/index.md index cf3b001d..44301b17 100644 --- a/docs/docs/build/examples/btc-swap/index.md +++ b/docs/docs/build/examples/btc-swap/index.md @@ -10,7 +10,7 @@ The code for this example can be [found in the P2P swap demo GitHub repository]( ## Demo -We have created a testnet demo of the P2P swap, allowing anyone to swap BTC for ERC20 tokens, ERC20 tokens for BTC, and exchange one ERC20 token for another. The application currently supports testnet BTC, testnet USDC, and WBTC (WBTC is a placeholder for an arbitrary bridged BTC token). +We have created a testnet demo of the P2P swap, allowing anyone to swap BTC for ERC20 tokens, ERC20 tokens for BTC, and exchange one ERC20 token for another. The application currently supports testnet BTC, testnet USDT, and ZBTC (ZBTC is a placeholder for an arbitrary bridged BTC token). ### Connecting Your Wallet @@ -37,11 +37,11 @@ The UI can sometimes fail to connect if you have multiple wallets installed. If You will need two accounts for this demo, so that you can both create and fulfil orders. For each account: -- Fund your account with ETH from a [Sepolia testnet](https://faucetlink.to/sepolia) and then transfer it to the BOB network using [Superbridge](https://puff-bob-jznbxtoq7h.testnets.superbridge.app/). This will be needed for transaction fees. +- Click the 'Get Gas' button to fund your account with ETH. This will be needed for transaction fees. - After the ETH tokens have arrived in your wallet, click on the 'Get Tokens' button to fund your account with ERC20 tokens to used when adding an order. - Import the ERC20 tokens from the following contract addresses: - - WBTC: `0x2868d708e442A6a940670d26100036d426F1e16b` - - USDC: `0x27c3321E40f039d10D5FF831F528C9CEAE601B1d` + - ZBTC: `0x4f01078121e90915F9f1448DE4b3C2515B5e2F3B` + - USDT: `0x3c252953224948E441aAfdE7b391685201ccd3bC` - You will also need some test BTC from the [Bitcoin testnet faucet](https://bitcoinfaucet.uo1.net/). :::note From 974beebe8d56ad25c80cb0d8f7e8ed5d810e0de6 Mon Sep 17 00:00:00 2001 From: Sander Bosma Date: Tue, 12 Dec 2023 10:47:38 +0100 Subject: [PATCH 045/137] fix: add missing addresses --- docs/docs/build/contracts/index.md | 23 ++++++++++++++++++--- docs/docs/build/getting-started/networks.md | 4 +++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/docs/docs/build/contracts/index.md b/docs/docs/build/contracts/index.md index 1812c473..384bea59 100644 --- a/docs/docs/build/contracts/index.md +++ b/docs/docs/build/contracts/index.md @@ -8,12 +8,29 @@ ### BOB Core Contracts -- tBTC Relay: `` +- tBTC Relay: `0x077c5ed60fABb260784891786c6573373fDa8A3E` ### Tokens (ERC20) - Erc20Minter (faucet): `0x7884560F14c62E0a83420F17832988cC1a775df1` -- TBTC: +- TBTC: `0xf87766ab34f863503d36394b624a436f436daf87` - USDC: `0x27c3321E40f039d10D5FF831F528C9CEAE601B1d` -- USDT: +- USDT: `0xF58de5056b7057D74f957e75bFfe865F571c3fB6` - WBTC: `0x2868d708e442A6a940670d26100036d426F1e16b` +- WBTC Oracle: `0x9AfBdFF0434acD4F325e3c35b739a62365099BCE` + +### Account Abstraction (ERC-4337) + +- Entrypoint: `0x8b57d6ec08e09078Db50F265729440713E024C6a` +- Deterministic deployer: `0x250f60877f1397002ae79528b218be925b6b4c79` +- WBTC Paymaster: `0x777FA19ea9e771018678161ABf2f1E2879D3cA6C` + +### Meta Tranactions (OpenGSN) + +- RelayHub: `0x7B72bA8c9f3Ba4A94E6d8fA07c822228034d2e61` +- RelayRegistrar: `0x6Ff484e7530C4ab20aEa1B19E5b33FE7415dB9Fd` +- StakeManager: `0xE5a27E68bE43A69dfd3A26be7DaE9Feac236C826` +- Penalizer: `0x1C36129916E3EA2ACcD516Ae92C8f91deF7c4146` +- Forwarder: `0xFd0042D3d05c82acb937aC86F23247a2D77785f2` +- TestToken (test only): `0x14d8b98c9f685FB3e13F5BB24B8016BD709A5446` +- ERC20 Paymaster: `0x25Aa86d188E37A47dd2011535534E53Cf994559d` \ No newline at end of file diff --git a/docs/docs/build/getting-started/networks.md b/docs/docs/build/getting-started/networks.md index b786e803..838d5279 100644 --- a/docs/docs/build/getting-started/networks.md +++ b/docs/docs/build/getting-started/networks.md @@ -14,10 +14,12 @@ BOB is fully EVM compatible so you can use any tools you are used to from Ethere - Description: Official public BOB testnet - Chain ID: 111 - RPC URL (BOB): https://testnet.rpc.gobob.xyz/ -- Explorer (BOB): https://explorerl2new-puff-bob-jznbxtoq7h.t.conduit.xyz/ +- Explorer (BOB): https://testnet-explorer.gobob.xyz/ - Bridge (BOB - Sepolia): https://puff-bob-jznbxtoq7h.testnets.superbridge.app/ - RPC URL (Ethereum Sepolia): https://chainlist.org/chain/11155111 - Explorer (Ethereum Sepolia): https://sepolia.etherscan.io/ - Faucet (Ethereum Sepolia): https://faucetlink.to/sepolia - Ordinals API (Bitcoin testnet): https://ord-testnet.gobob.xyz/docs/ - Explorer (Bitcoin testnet): https://blockstream.info/testnet/ +- ERC-4337 bundler: https://bundler-sepolia.gobob.xyz/ +- GSN relayer: https://gsn-relay-sepolia.gobob.xyz/ From e40d4abc89cf542b9bf9ddcb22f07022072975d0 Mon Sep 17 00:00:00 2001 From: Sander Bosma Date: Tue, 12 Dec 2023 12:59:08 +0100 Subject: [PATCH 046/137] fix: relay address --- docs/docs/build/contracts/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/build/contracts/index.md b/docs/docs/build/contracts/index.md index 384bea59..93b2d4ed 100644 --- a/docs/docs/build/contracts/index.md +++ b/docs/docs/build/contracts/index.md @@ -8,7 +8,7 @@ ### BOB Core Contracts -- tBTC Relay: `0x077c5ed60fABb260784891786c6573373fDa8A3E` +- tBTC Relay: `0xe92317b90E4Ee2a97933d774C7088c32A9AABC6D` ### Tokens (ERC20) From 473eb53ddab2c065f21e6e6b0668a40abc909a4c Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Wed, 13 Dec 2023 08:06:04 +0000 Subject: [PATCH 047/137] update snap documentation --- docs/docs/build/getting-started/helloworld.mdx | 2 +- docs/docs/build/how-to/ordinals.md | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/docs/docs/build/getting-started/helloworld.mdx b/docs/docs/build/getting-started/helloworld.mdx index be75ab44..1ba0c9aa 100644 --- a/docs/docs/build/getting-started/helloworld.mdx +++ b/docs/docs/build/getting-started/helloworld.mdx @@ -28,7 +28,7 @@ We will provide instructions for using Remix and Foundry. Before you can deploy smart contracts on BOB, ensure you have the following prerequisites: -- An EVM wallet with funds from the [testnet](networks) faucet. +- An EVM wallet with funds from the [testnet faucet](https://faucetlink.to/sepolia). - Setup either Remix or Foundry as your development environment. diff --git a/docs/docs/build/how-to/ordinals.md b/docs/docs/build/how-to/ordinals.md index 0dffc1c7..fac66258 100644 --- a/docs/docs/build/how-to/ordinals.md +++ b/docs/docs/build/how-to/ordinals.md @@ -12,11 +12,27 @@ Inscriptions are created using taproot script. That means you have to use a P2TR ### Wallets that support taproot addresses +#### BOB MetaMask Snap (Browser, MetaMask flask only) + +You can use the [BOB MetaMask Snap](https://github.com/bob-collective/btcsnap) with [MetaMask flask](https://metamask.io/flask/). + +:::tip Live Demo + +Check out the live demo at [ordinals.gobob.xyz](https://ordinals.gobob.xyz/). + +::: + +:::info Documentation and example code + +Check out the [documentation](../examples/metamask-ordinals/), the [BOB MetaMask snap code](https://github.com/bob-collective/btcsnap), and the [demo code](https://github.com/bob-collective/demo-brc20-metamask). + +::: + +#### Other Wallets - [`ord` wallet](https://docs.ordinals.com/guides/inscriptions.html) (Desktop, full Bitcoin node requirement) - [Sparrow wallet](https://sparrowwallet.com/) (Desktop) - [Xverse](https://www.xverse.app/download) (Browser and mobile) - [Unisat](https://unisat.io/download) (Browser) -- [MetaMask](https://metamask.io/) [btcsnap](https://github.com/bob-collective/btcsnap) (Browser) ### Inscribing data If you're developing an app with Javascript or Typescript you can use the BOB SDK to create the commit and reveal transactions required to inscribe data to an ordinal. Refer to the `inscribeText` function and provide a custom `RemoteSigner` implementation for your wallet. The test in [`sdk/test/ordinals.test.ts`](https://github.com/bob-collective/bob/blob/master/sdk/test/ordinals.test.ts) provides an example implementation using [`bitcoinjs-lib`](https://github.com/bitcoinjs/bitcoinjs-lib) and [`tiny-secp256k1`](https://github.com/bitcoinjs/tiny-secp256k1). From 565593c9d177ea0698d2d9e89526cbaab7a35b5a Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Wed, 13 Dec 2023 08:22:23 +0000 Subject: [PATCH 048/137] Minor documentation changes --- docs/docs/build/examples/btc-swap/index.md | 9 ++++++++- docs/docs/build/examples/metamask-ordinals/index.md | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/docs/build/examples/btc-swap/index.md b/docs/docs/build/examples/btc-swap/index.md index 44301b17..456cda2d 100644 --- a/docs/docs/build/examples/btc-swap/index.md +++ b/docs/docs/build/examples/btc-swap/index.md @@ -4,12 +4,19 @@ This example demonstrates how BOB is leveraged to build a peer-to-peer (P2P) swa :::info Example Code -The code for this example can be [found in the P2P swap demo GitHub repository](https://github.com/bob-collective/demo-p2p-swap) +You can find the code for this example [in the P2P swap demo GitHub repository](https://github.com/bob-collective/demo-p2p-swap/releases/tag/v0.0.1). ::: ## Demo +:::info Example Code + +This demo is running on our [Alpha network](https://app.conduit.xyz/published/view/fluffy-bob-7mjgi9pmtg). + +::: + + We have created a testnet demo of the P2P swap, allowing anyone to swap BTC for ERC20 tokens, ERC20 tokens for BTC, and exchange one ERC20 token for another. The application currently supports testnet BTC, testnet USDT, and ZBTC (ZBTC is a placeholder for an arbitrary bridged BTC token). ### Connecting Your Wallet diff --git a/docs/docs/build/examples/metamask-ordinals/index.md b/docs/docs/build/examples/metamask-ordinals/index.md index 4eea9db4..207bb604 100644 --- a/docs/docs/build/examples/metamask-ordinals/index.md +++ b/docs/docs/build/examples/metamask-ordinals/index.md @@ -4,7 +4,7 @@ This example demonstrates how users can use a single web wallet to manage assets :::info Example Code -Find the code for this example on [our GitHub repository](https://github.com/bob-collective/demo-brc20-metamask). +You can find the code for this example on [our GitHub repository](https://github.com/bob-collective/demo-brc20-metamask). ::: From 667e1f07f75892c6a1de10d92c2c843c8956a7f1 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Wed, 13 Dec 2023 12:32:47 +0000 Subject: [PATCH 049/137] update documentation --- .../account-abstraction/index.md | 28 +++++++++++------- .../account-abstraction/preview.png | Bin 57387 -> 197221 bytes 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md index c3d45656..567c83bb 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md @@ -32,13 +32,21 @@ Before the first user operation can be made, the paymaster smart contract has to ### Try it out +#### Connecting MetaMask anf funding your account + 1. Go to [demo-acccount-abstraction.gobob.xyz](https://demo-account-abstraction.gobob.xyz/) -2. Connect with your MetaMask account and get wBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 wBTC that you can spend.) -3. Add wBTC to your MetaMask, wBTC address is `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` -4. Transfer wBTC to the smart contract account via MetaMask (displayed above the amount field in the form). -5. Input the amount you wish to send and the recipient's address into the form fields. -6. Click on 'Transfer'. This will require three interactions with MetaMask: first one will deposit small amount of ETH to the entry point contract so that you can sign the user operation that allows the paymaster contract to spend your wBTC. Then you will sign the approval user operation. Finally, you will sign the transfer user operation. -7. Wait for the transfer user operation to be executed. +2. Fund your account with Sepolia ETH from the [Sepolia testnet faucet](https://faucetlink.to/sepolia). +3. Transfer Sepolia ETH to BOB using [Superbridge](https://puff-bob-jznbxtoq7h.testnets.superbridge.app/). +4. Connect with your MetaMask account and get wBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 wBTC that you can spend.) + +5. Add wBTC to your MetaMask, wBTC address is `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` +6. Transfer wBTC to the smart contract account via MetaMask (displayed above the amount field in the form). + +#### Making a transfer + +1. Input the amount you wish to send and the recipient's address into the form fields. +2. Click on 'Transfer'. This will require three interactions with MetaMask: first one will deposit small amount of ETH to the entry point contract so that you can sign the user operation that allows the paymaster contract to spend your wBTC. Then you will sign the approval user operation. Finally, you will sign the transfer user operation. +3. Wait for the transfer user operation to be executed. ## Limitations @@ -57,9 +65,9 @@ There are a interesting use cases that account abstraction enables being pushed ### Contract addresses and links - wBTC contract address: `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` -- Entry point contract address: `0x7A660708DB3D56BB0dC3694344777c805716Fca7` -- wBTC paymaster address: `0xD8Ae58534d5488571E248DdC0A3aD42aD5dBaD26` -- Bundler (eth-infinitism): `https://bundler-fluffy-bob.gobob.xyz/rpc` +- Entry point contract address: `0x8b57d6ec08e09078Db50F265729440713E024C6a` +- wBTC paymaster address: `0x777FA19ea9e771018678161ABf2f1E2879D3cA6C` +- Bundler (eth-infinitism): `https://bundler-sepolia.gobob.xyz/rpc` ### Installing the project @@ -86,7 +94,7 @@ To use `AaClient` in your app wrap it in the `AccountAbstractionProvider`: Now you can use the `useAccountAbstraction` hook anywhere within the app to get the client and utilize its functionality: ```typescript -const { client } = useAccountAbstraction(); +const { client } = useAccountAbstraction(); ... const userOp = await client.createUserOp({ address: contract.address, diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/preview.png b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/preview.png index 8336a20591c0df74fca851cc8c23578292d3e99a..210ae331d7099caf49b30d5572c79799aca23197 100644 GIT binary patch literal 197221 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ȋ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 From 4d5e1d65bb86039e2399220ff454d2cda14e9a47 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Wed, 13 Dec 2023 12:40:51 +0000 Subject: [PATCH 050/137] update docs --- .../account-abstraction/index.md | 1 - .../meta-transactions/index.md | 47 ++++++++++++------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md index 567c83bb..27fa71ce 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md @@ -38,7 +38,6 @@ Before the first user operation can be made, the paymaster smart contract has to 2. Fund your account with Sepolia ETH from the [Sepolia testnet faucet](https://faucetlink.to/sepolia). 3. Transfer Sepolia ETH to BOB using [Superbridge](https://puff-bob-jznbxtoq7h.testnets.superbridge.app/). 4. Connect with your MetaMask account and get wBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 wBTC that you can spend.) - 5. Add wBTC to your MetaMask, wBTC address is `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` 6. Transfer wBTC to the smart contract account via MetaMask (displayed above the amount field in the form). diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md index b9829a8d..5785d0b4 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md @@ -1,6 +1,6 @@ # Gas Fee Payment in wBTC using Meta Transactions (OpenGSN & ERC-2771) -In this example, we will show how wBTC can be used for gas fee payments using the OpenGSN and [ERC-2771 standard](https://eips.ethereum.org/EIPS/eip-2771) on the BOB testnet. This enables users to transact without the necessity to own ETH. +In this example, we will show how wBTC can be used for gas fee payments using the OpenGSN and [ERC-2771 standard](https://eips.ethereum.org/EIPS/eip-2771) on the BOB testnet. This enables users to transact without the necessity to own ETH. :::tip Live Demo @@ -35,20 +35,27 @@ Before the first relayed transaction is done, the paymaster smart contract has t ### Try it out -1. Go to [demo-meta-transactions.gobob.xyz](https://demo-meta-transactions.gobob.xyz) -2. Connect with your MetaMask account and get wBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 wBTC that you can spend.) -3. Add wBTC to your MetaMask, wBTC address is `0x833d9398A3DBa68994AdE7Db42Ff597831933aeD` -4. Input the amount you wish to send and the recipient's address into the form fields. -5. Click on 'Approve & Transfer' to approve the paymaster to spend your wBTC and to sign the relayed transaction. -6. Wait for the transfer transaction to be relayed. +#### Connecting MetaMask anf funding your account + +1. Go to [demo-acccount-abstraction.gobob.xyz](https://demo-account-abstraction.gobob.xyz/) +2. Fund your account with Sepolia ETH from the [Sepolia testnet faucet](https://faucetlink.to/sepolia). +3. Transfer Sepolia ETH to BOB using [Superbridge](https://puff-bob-jznbxtoq7h.testnets.superbridge.app/). +4. Connect with your MetaMask account and get wBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 wBTC that you can spend.) +5. Add wBTC to your MetaMask, wBTC address is `0x2868d708e442A6a940670d26100036d426F1e16b` + +#### Making a transfer + +1. Input the amount you wish to send and the recipient's address into the form fields. +2. Click on 'Approve & Transfer' to approve the paymaster to spend your wBTC and to sign the relayed transaction. +3. Wait for the transfer transaction to be relayed. ## Local development ### Contract addresses and links -- wBTC contract address: `0x833d9398A3DBa68994AdE7Db42Ff597831933aeD` -- Paymaster contract address: `0x7F1c9BFcBcc36a09a24473af485cf25e6cfe3Fd6` -- OpenGSN relayer: `https://gsn-relay-fluffy-bob.gobob.xyz` +- WBTC contract address: `0x2868d708e442A6a940670d26100036d426F1e16b` +- Paymaster contract address: `0x777FA19ea9e771018678161ABf2f1E2879D3cA6C` +- OpenGSN relayer: `https://gsn-relay-sepolia.gobob.xyz/` ### Installing the project @@ -63,31 +70,36 @@ Before the first relayed transaction is done, the paymaster smart contract has t ## Interacting with OpenGSN relay To allow simple interaction with the relay `ethers.Contract` instance is created using OpenGSN provider: + ```typescript const getRelayedContract = async (contractType: ContractType) => { if (!window.ethereum) { - throw new Error('Injected provider not found!'); + throw new Error("Injected provider not found!"); } const { address, abi } = contracts[contractType]; const config = { - preferredRelays: ['https://gsn-relay-fluffy-bob.gobob.xyz'], + preferredRelays: ["https://gsn-relay-sepolia.gobob.xyz/"], performDryRunViewRelayCall: false, gasPriceSlackPercent: 1000, maxPaymasterDataLength: 100, - paymasterAddress: erc20PaymasterAddress + paymasterAddress: erc20PaymasterAddress, }; const gsnProvider = await RelayProvider.newProvider({ provider: window.ethereum, config, - overrideDependencies: { asyncPaymasterData: getErc20PaymasterData } + overrideDependencies: { asyncPaymasterData: getErc20PaymasterData }, }).init(); const ethersProvider = new providers.Web3Provider(gsnProvider); - const relayedContract = new Contract(address, abi, ethersProvider.getSigner()); + const relayedContract = new Contract( + address, + abi, + ethersProvider.getSigner() + ); return relayedContract; }; @@ -96,7 +108,10 @@ const getRelayedContract = async (contractType: ContractType) => { Then the `Contract` instance can be used in a standard way: ```typescript -const transferTx = await relayedContract.transfer(form.address, atomicAmount.toString()); +const transferTx = await relayedContract.transfer( + form.address, + atomicAmount.toString() +); await transferTx.wait(); ``` From 60d0325099cfcaffaf289f69cf6db17f8c09049e Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Wed, 13 Dec 2023 12:42:45 +0000 Subject: [PATCH 051/137] fix typos --- .../how-to/bridged-btc-gas-fee/account-abstraction/index.md | 2 +- .../build/how-to/bridged-btc-gas-fee/meta-transactions/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md index 27fa71ce..9311ff92 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md @@ -32,7 +32,7 @@ Before the first user operation can be made, the paymaster smart contract has to ### Try it out -#### Connecting MetaMask anf funding your account +#### Connecting MetaMask and funding your account 1. Go to [demo-acccount-abstraction.gobob.xyz](https://demo-account-abstraction.gobob.xyz/) 2. Fund your account with Sepolia ETH from the [Sepolia testnet faucet](https://faucetlink.to/sepolia). diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md index 5785d0b4..a3d8a1fb 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md @@ -35,7 +35,7 @@ Before the first relayed transaction is done, the paymaster smart contract has t ### Try it out -#### Connecting MetaMask anf funding your account +#### Connecting MetaMask and funding your account 1. Go to [demo-acccount-abstraction.gobob.xyz](https://demo-account-abstraction.gobob.xyz/) 2. Fund your account with Sepolia ETH from the [Sepolia testnet faucet](https://faucetlink.to/sepolia). From 1b6af8a7bc3727e54e4483be4898d074f9f383f0 Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Wed, 13 Dec 2023 12:43:39 +0000 Subject: [PATCH 052/137] fix url --- .../build/how-to/bridged-btc-gas-fee/meta-transactions/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md index a3d8a1fb..721ce44e 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md @@ -37,7 +37,7 @@ Before the first relayed transaction is done, the paymaster smart contract has t #### Connecting MetaMask and funding your account -1. Go to [demo-acccount-abstraction.gobob.xyz](https://demo-account-abstraction.gobob.xyz/) +1. Go to [demo-meta-transactions.gobob.xyz](https://demo-meta-transactions.gobob.xyz) 2. Fund your account with Sepolia ETH from the [Sepolia testnet faucet](https://faucetlink.to/sepolia). 3. Transfer Sepolia ETH to BOB using [Superbridge](https://puff-bob-jznbxtoq7h.testnets.superbridge.app/). 4. Connect with your MetaMask account and get wBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 wBTC that you can spend.) From 4a19bec41ecefb38568fb75adc0f3d4497f6a10a Mon Sep 17 00:00:00 2001 From: Tom Jeatt Date: Wed, 13 Dec 2023 12:46:01 +0000 Subject: [PATCH 053/137] screenshots --- .../account-abstraction/preview.png | Bin 197221 -> 196758 bytes .../meta-transactions/preview.png | Bin 80409 -> 160559 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/preview.png b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/preview.png index 210ae331d7099caf49b30d5572c79799aca23197..c08cf596dbd0e62e186def4e311b4a56a82adcce 100644 GIT binary patch literal 196758 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 z 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 literal 197221 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ȋ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%0D_Z6;lAuI&{pheX4$P;9yq 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 XdL+w(38oF;KiR8tza?M3`}_X|CD$Bw literal 80409 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

+@@y%q6^yx=XVfKZQ0Y>;-r4Ti`j|WD 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 From 35f06b1a858815511cd042ca535caa48ebd609a6 Mon Sep 17 00:00:00 2001 From: tomjeatt <40243778+tomjeatt@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:32:50 +0000 Subject: [PATCH 054/137] Update docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Peter Slaný <47864599+peterslany@users.noreply.github.com> --- .../how-to/bridged-btc-gas-fee/account-abstraction/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md index 9311ff92..f12a7024 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md @@ -38,7 +38,7 @@ Before the first user operation can be made, the paymaster smart contract has to 2. Fund your account with Sepolia ETH from the [Sepolia testnet faucet](https://faucetlink.to/sepolia). 3. Transfer Sepolia ETH to BOB using [Superbridge](https://puff-bob-jznbxtoq7h.testnets.superbridge.app/). 4. Connect with your MetaMask account and get wBTC by clicking on the 'Get Tokens' button in the application header. (You will receive 30,000 wBTC that you can spend.) -5. Add wBTC to your MetaMask, wBTC address is `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` +5. Add wBTC to your MetaMask, wBTC address is `0x2868d708e442A6a940670d26100036d426F1e16b` 6. Transfer wBTC to the smart contract account via MetaMask (displayed above the amount field in the form). #### Making a transfer From a7ab619613de8d365d07ac69b875f44f9e50bdec Mon Sep 17 00:00:00 2001 From: tomjeatt <40243778+tomjeatt@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:32:59 +0000 Subject: [PATCH 055/137] Update docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Peter Slaný <47864599+peterslany@users.noreply.github.com> --- .../how-to/bridged-btc-gas-fee/account-abstraction/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md index f12a7024..c05af364 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/account-abstraction/index.md @@ -63,7 +63,7 @@ There are a interesting use cases that account abstraction enables being pushed ### Contract addresses and links -- wBTC contract address: `0x28A13b11551f91651e8Da8Cd997886aA0B46CD16` +- wBTC contract address: `0x2868d708e442A6a940670d26100036d426F1e16b` - Entry point contract address: `0x8b57d6ec08e09078Db50F265729440713E024C6a` - wBTC paymaster address: `0x777FA19ea9e771018678161ABf2f1E2879D3cA6C` - Bundler (eth-infinitism): `https://bundler-sepolia.gobob.xyz/rpc` From 3ecac345240fb27da952d68a15e181fe605db615 Mon Sep 17 00:00:00 2001 From: tomjeatt <40243778+tomjeatt@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:33:07 +0000 Subject: [PATCH 056/137] Update docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Peter Slaný <47864599+peterslany@users.noreply.github.com> --- .../build/how-to/bridged-btc-gas-fee/meta-transactions/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md index 721ce44e..3777a107 100644 --- a/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md +++ b/docs/docs/build/how-to/bridged-btc-gas-fee/meta-transactions/index.md @@ -54,7 +54,7 @@ Before the first relayed transaction is done, the paymaster smart contract has t ### Contract addresses and links - WBTC contract address: `0x2868d708e442A6a940670d26100036d426F1e16b` -- Paymaster contract address: `0x777FA19ea9e771018678161ABf2f1E2879D3cA6C` +- Paymaster contract address: `0x25Aa86d188E37A47dd2011535534E53Cf994559d` - OpenGSN relayer: `https://gsn-relay-sepolia.gobob.xyz/` ### Installing the project From d0a57baa24eb0117ab4c4aa9e3deac355e80f529 Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Fri, 1 Dec 2023 12:31:17 +0900 Subject: [PATCH 057/137] docs: order how to documents --- docs/docs/build/how-to/bitcoin-testing.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/docs/build/how-to/bitcoin-testing.md b/docs/docs/build/how-to/bitcoin-testing.md index 14ed0af4..535dd17b 100644 --- a/docs/docs/build/how-to/bitcoin-testing.md +++ b/docs/docs/build/how-to/bitcoin-testing.md @@ -1,7 +1,14 @@ +<<<<<<< HEAD --- sidebar_position: 1 sidebar_label: Test Bitcoin Locally with Regtest --- +||||||| parent of 1c12e27 (docs: order how to documents) +======= +--- +sidebar_position: 1 +--- +>>>>>>> 1c12e27 (docs: order how to documents) # Bitcoin Testing ## Starting a Local Bitcoin Development Environment From 0deb2e620747f3f0326e2976911d1813889fff25 Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 17 Nov 2023 17:04:45 +0100 Subject: [PATCH 058/137] fix: include scriptPubKey size in hash that is checked --- docs/docs/build/how-to/bitcoin-testing.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/docs/docs/build/how-to/bitcoin-testing.md b/docs/docs/build/how-to/bitcoin-testing.md index 535dd17b..14ed0af4 100644 --- a/docs/docs/build/how-to/bitcoin-testing.md +++ b/docs/docs/build/how-to/bitcoin-testing.md @@ -1,14 +1,7 @@ -<<<<<<< HEAD --- sidebar_position: 1 sidebar_label: Test Bitcoin Locally with Regtest --- -||||||| parent of 1c12e27 (docs: order how to documents) -======= ---- -sidebar_position: 1 ---- ->>>>>>> 1c12e27 (docs: order how to documents) # Bitcoin Testing ## Starting a Local Bitcoin Development Environment From 3b231006671f4b727f19451d1ee3dd1224e4655e Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Thu, 14 Dec 2023 15:32:20 +0900 Subject: [PATCH 059/137] docs: add stack --- .../introduction/bob-components.excalidraw | 416 -------------- .../learn/introduction/bob-stack.excalidraw | 517 ++++++++++++++++++ docs/docs/learn/introduction/bob-stack.png | Bin 0 -> 172149 bytes docs/docs/learn/introduction/stack.md | 4 +- 4 files changed, 520 insertions(+), 417 deletions(-) delete mode 100644 docs/docs/learn/introduction/bob-components.excalidraw create mode 100644 docs/docs/learn/introduction/bob-stack.excalidraw create mode 100644 docs/docs/learn/introduction/bob-stack.png diff --git a/docs/docs/learn/introduction/bob-components.excalidraw b/docs/docs/learn/introduction/bob-components.excalidraw deleted file mode 100644 index d1bc12b0..00000000 --- a/docs/docs/learn/introduction/bob-components.excalidraw +++ /dev/null @@ -1,416 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "id": "WpQRmBQrZbLK35c5dKsdG", - "type": "rectangle", - "x": 499.83203125, - "y": 245.96484375, - "width": 309.765625, - "height": 158.8203125, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "seed": 1838345696, - "version": 34, - "versionNonce": 149889056, - "isDeleted": false, - "boundElements": null, - "updated": 1693285941352, - "link": null, - "locked": false - }, - { - "id": "ShGCZa6eRQQDpQ17I0Ooi", - "type": "text", - "x": 530, - "y": 215.796875, - "width": 158.7039337158203, - "height": 35, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 887060960, - "version": 17, - "versionNonce": 1811410400, - "isDeleted": false, - "boundElements": null, - "updated": 1693286203982, - "link": null, - "locked": false, - "text": "BTC Bridge", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 25, - "containerId": null, - "originalText": "BTC Bridge", - "lineHeight": 1.25 - }, - { - "id": "fbbCNG_bYyIsmLkZf1J62", - "type": "text", - "x": 510.796875, - "y": 269.59375, - "width": 258.9398193359375, - "height": 125, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 765718560, - "version": 174, - "versionNonce": 825295904, - "isDeleted": false, - "boundElements": null, - "updated": 1693286075031, - "link": null, - "locked": false, - "text": "- Deploy on any EVM chain\n- Synthetically mint\n collateralized BTC\n- Swap P2P for BTC on \n Bitcoin", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 118, - "containerId": null, - "originalText": "- Deploy on any EVM chain\n- Synthetically mint\n collateralized BTC\n- Swap P2P for BTC on \n Bitcoin", - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "version": 71, - "versionNonce": 784447968, - "isDeleted": false, - "id": "byWWUb866C6Og_IfTY59m", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 982.828125, - "y": 238.30859375, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 309.765625, - "height": 158.8203125, - "seed": 1145905184, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [], - "updated": 1693286092181, - "link": null, - "locked": false - }, - { - "id": "qhDuHSDy_W_O8I7Vdai7u", - "type": "text", - "x": 993.1484375, - "y": 205.9140625, - "width": 307.6358947753906, - "height": 35, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 351784992, - "version": 86, - "versionNonce": 1840131552, - "isDeleted": false, - "boundElements": null, - "updated": 1693286103922, - "link": null, - "locked": false, - "text": "Rust smart contracts", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 25, - "containerId": null, - "originalText": "Rust smart contracts", - "lineHeight": 1.25 - }, - { - "id": "wCO8uCaGR0vgdcsom2j7r", - "type": "text", - "x": 993, - "y": 269, - "width": 302.17974853515625, - "height": 100, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1352938976, - "version": 143, - "versionNonce": 859214304, - "isDeleted": false, - "boundElements": null, - "updated": 1693286149593, - "link": null, - "locked": false, - "text": "- Write Rust programs\n- Use libs like rust-bitcoin\n- Write zk off-chain programs\n in Rust with on-chain verifier", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 93, - "containerId": null, - "originalText": "- Write Rust programs\n- Use libs like rust-bitcoin\n- Write zk off-chain programs\n in Rust with on-chain verifier", - "lineHeight": 1.25 - }, - { - "id": "M3Ocj1nyNFqQFdHC1XfZF", - "type": "rectangle", - "x": 497.578125, - "y": 454.98828125, - "width": 783.93359375, - "height": 100.04296875, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "seed": 373904864, - "version": 121, - "versionNonce": 648195552, - "isDeleted": false, - "boundElements": null, - "updated": 1693286287791, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 171, - "versionNonce": 1273329696, - "isDeleted": false, - "id": "hoLEm172scB10dWUq8zM7", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 813.3472518920898, - "y": 413.8203125, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 125.719970703125, - "height": 35, - "seed": 1719611872, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1693286218255, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "EVM core", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "EVM core", - "lineHeight": 1.25, - "baseline": 25 - }, - { - "id": "el-SUO0Bt-pMoE0O1hFYW", - "type": "text", - "x": 520, - "y": 487, - "width": 650.2195434570312, - "height": 50, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 683536416, - "version": 133, - "versionNonce": 793208864, - "isDeleted": false, - "boundElements": null, - "updated": 1693286282058, - "link": null, - "locked": false, - "text": "- Deploy any existing Solidity/EVM code base\n- Support account abstraction, EVM wallets, hardware wallets, ...", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 43, - "containerId": null, - "originalText": "- Deploy any existing Solidity/EVM code base\n- Support account abstraction, EVM wallets, hardware wallets, ...", - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "version": 252, - "versionNonce": 1223497760, - "isDeleted": false, - "id": "-WlmE4nfNLhIJlg0FONgH", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 497.154296875, - "y": 606.603515625, - "strokeColor": "#e03131", - "backgroundColor": "transparent", - "width": 783.93359375, - "height": 100.04296875, - "seed": 2110910944, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [], - "updated": 1693286298844, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 274, - "versionNonce": 1578538464, - "isDeleted": false, - "id": "aaTHGTX8y1Q61QHEsnB0X", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 835.4212646484375, - "y": 566.0625, - "strokeColor": "#e03131", - "backgroundColor": "transparent", - "width": 78.93196105957031, - "height": 35, - "seed": 718126560, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1693286312248, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "Rollup", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Rollup", - "lineHeight": 1.25, - "baseline": 25 - }, - { - "id": "LLZWluNzdshpk9uN_UP-f", - "type": "text", - "x": 510, - "y": 634, - "width": 638.41943359375, - "height": 50, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1074961888, - "version": 99, - "versionNonce": 1534370272, - "isDeleted": false, - "boundElements": null, - "updated": 1693286342460, - "link": null, - "locked": false, - "text": "- Access to Ethereum assets\n- Compatibility with emerging ecosystems (OP Stack, Arbitrum, ...)", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 43, - "containerId": null, - "originalText": "- Access to Ethereum assets\n- Compatibility with emerging ecosystems (OP Stack, Arbitrum, ...)", - "lineHeight": 1.25 - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/docs/docs/learn/introduction/bob-stack.excalidraw b/docs/docs/learn/introduction/bob-stack.excalidraw new file mode 100644 index 00000000..4c21e3c9 --- /dev/null +++ b/docs/docs/learn/introduction/bob-stack.excalidraw @@ -0,0 +1,517 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "09tCDbgTjZdAuMK9P26rj", + "type": "rectangle", + "x": 551, + "y": -17, + "width": 860.9999999999999, + "height": 113.00000000000001, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 197851263, + "version": 95, + "versionNonce": 384634746, + "isDeleted": false, + "boundElements": null, + "updated": 1702535184287, + "link": null, + "locked": false + }, + { + "id": "cB8RQ-A9tK0QxuaKl9NMC", + "type": "text", + "x": 593, + "y": -12.5, + "width": 131.0500030517578, + "height": 35, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1716755391, + "version": 48, + "versionNonce": 84497018, + "isDeleted": false, + "boundElements": null, + "updated": 1702535168304, + "link": null, + "locked": false, + "text": "BOB SDK", + "fontSize": 28, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 25, + "containerId": null, + "originalText": "BOB SDK", + "lineHeight": 1.25 + }, + { + "id": "D2S3eTSe1QF3_uRG7UwnC", + "type": "text", + "x": 591, + "y": 22.5, + "width": 807.7333374023438, + "height": 60, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1351902239, + "version": 353, + "versionNonce": 736949050, + "isDeleted": false, + "boundElements": null, + "updated": 1702535168304, + "link": null, + "locked": false, + "text": "An SDK to make working with Bitcoin from the EVM a breeze. Comes with a MetaMask Snap to\ntransfer BTC, ordinals, and BRC20s. Includes a BTC light client, methods for working with BRC20s, \nordinals, and more.", + "fontSize": 16, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 55, + "containerId": null, + "originalText": "An SDK to make working with Bitcoin from the EVM a breeze. Comes with a MetaMask Snap to\ntransfer BTC, ordinals, and BRC20s. Includes a BTC light client, methods for working with BRC20s, \nordinals, and more.", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 356, + "versionNonce": 356507046, + "isDeleted": false, + "id": "_m9RC5xeuyEbHUQ3nPg5O", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 552.1333312988281, + "y": 111.5, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 434.00000000000006, + "height": 113.00000000000001, + "seed": 741151718, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1702535202321, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 227, + "versionNonce": 1822485690, + "isDeleted": false, + "id": "_947Kyqmki97QcjoEjbMp", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 594.1333312988281, + "y": 116, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 204.0833282470703, + "height": 35, + "seed": 846047014, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1702535168304, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Bitcoin Bridges", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Bitcoin Bridges", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 577, + "versionNonce": 1779910010, + "isDeleted": false, + "id": "jMVc1Qz6X2UkiStAfX5DN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 592.1333312988281, + "y": 151, + "strokeColor": "#f08c00", + "backgroundColor": "transparent", + "width": 375.6666564941406, + "height": 18.999999999999993, + "seed": 565826150, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1702535168304, + "link": null, + "locked": false, + "fontSize": 15.199999999999994, + "fontFamily": 1, + "text": "Wrap Bitcoin, BRC20s, swap ordinals, stake BTC.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Wrap Bitcoin, BRC20s, swap ordinals, stake BTC.", + "lineHeight": 1.25, + "baseline": 14 + }, + { + "type": "rectangle", + "version": 425, + "versionNonce": 2105403046, + "isDeleted": false, + "id": "MlaxOJD62gPGuFQ29VWTb", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1003.5, + "y": 108.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 409.99999999999994, + "height": 113.00000000000001, + "seed": 1205776678, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1702535198905, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 299, + "versionNonce": 1338790118, + "isDeleted": false, + "id": "MGmy-e2MNWK9vCBiaRgQm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1046.5, + "y": 113, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 145.48333740234375, + "height": 35, + "seed": 947493990, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1702535193610, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Rust zkVM", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Rust zkVM", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 728, + "versionNonce": 2031961126, + "isDeleted": false, + "id": "BX-15fnUNThEZloAldSFz", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1044.5, + "y": 148, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 332, + "height": 37.999999999999986, + "seed": 85270438, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1702535193610, + "link": null, + "locked": false, + "fontSize": 15.199999999999994, + "fontFamily": 1, + "text": "Off-chain programs with on-chain verification\nand support for Rust Bitcoin libraries.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Off-chain programs with on-chain verification\nand support for Rust Bitcoin libraries.", + "lineHeight": 1.25, + "baseline": 33 + }, + { + "type": "rectangle", + "version": 158, + "versionNonce": 1858822394, + "isDeleted": false, + "id": "ZQEmT84ednziEaoIhAOds", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 554.1333312988281, + "y": 240.5, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 859, + "height": 113.00000000000001, + "seed": 1161256378, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1702535175771, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 121, + "versionNonce": 1606064442, + "isDeleted": false, + "id": "cfxbc-I9HtMXkFPO20k0K", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 596.1333312988281, + "y": 245, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 129.6999969482422, + "height": 35, + "seed": 683120250, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1702535168304, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "EVM Core", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "EVM Core", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 736, + "versionNonce": 373776890, + "isDeleted": false, + "id": "dOTf98quu1TiW6-PlLm5j", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 594.1333312988281, + "y": 280, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 812.0999755859375, + "height": 60, + "seed": 1228060474, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1702535168304, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Access to all the current EVM tooling like Remix, Foundary, Hardhat, OpenZeppelin, Safe, oracles, and\nmany more. Plus all the innovation happening for Account Abstraction, Meta Transaction, parallel EVM,\nscaling technologies, and a vast ecosystem of innovations.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Access to all the current EVM tooling like Remix, Foundary, Hardhat, OpenZeppelin, Safe, oracles, and\nmany more. Plus all the innovation happening for Account Abstraction, Meta Transaction, parallel EVM,\nscaling technologies, and a vast ecosystem of innovations.", + "lineHeight": 1.25, + "baseline": 55 + }, + { + "type": "rectangle", + "version": 223, + "versionNonce": 1227815418, + "isDeleted": false, + "id": "7987Z1nGzD2bMnZFK5Xml", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 557.1333312988281, + "y": 369.5, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 856.0000000000001, + "height": 113.00000000000001, + "seed": 1797439782, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1702535179321, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 200, + "versionNonce": 750693242, + "isDeleted": false, + "id": "owjPPlPgOLQqGnh6LeK5c", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 599.1333312988281, + "y": 375, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 168.86666870117188, + "height": 35, + "seed": 2025565286, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1702535168304, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Rollup Layer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Rollup Layer", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 735, + "versionNonce": 1167010874, + "isDeleted": false, + "id": "2ZVMEMek_QgCmnUQV6iuU", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 597.1333312988281, + "y": 410, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 820.4166870117188, + "height": 40, + "seed": 311766950, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1702535168304, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "Compatible with any rollup stack. Native ETH assets. Bitcoin security through optimistic merged mining. \nStarting as an OP rollup with a path to become a zk-verified rollup against Ethereum and Bitcoin.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Compatible with any rollup stack. Native ETH assets. Bitcoin security through optimistic merged mining. \nStarting as an OP rollup with a path to become a zk-verified rollup against Ethereum and Bitcoin.", + "lineHeight": 1.25, + "baseline": 35 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/docs/learn/introduction/bob-stack.png b/docs/docs/learn/introduction/bob-stack.png new file mode 100644 index 0000000000000000000000000000000000000000..ebeefe5f8cebd320ae3b257062f5030b4fab2205 GIT binary patch literal 172149 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