From f00a417898d0dfd6c2af6b13266278a9ebb433bf Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Thu, 19 Oct 2023 22:38:09 +0900 Subject: [PATCH 1/3] docs: reorganize hello world and builder docs --- docs/docs/build/deploy/_category_.yml | 4 - .../deploy/deployed_contract_on_remix.png | Bin 107432 -> 0 bytes docs/docs/build/deploy/foundry.md | 152 ----------- docs/docs/build/deploy/remix.md | 127 --------- docs/docs/build/examples/_category_.yml | 2 +- .../docs/build/getting-started/_category_.yml | 5 + .../deployed_contract.png} | Bin .../docs/build/getting-started/helloworld.mdx | 251 ++++++++++++++++++ docs/docs/build/getting-started/index.md | 30 +++ .../{deploy => getting-started}/remix_ide.png | Bin .../remix_ide_terminal.png | Bin docs/docs/build/getting-started/testnet.md | 29 ++ docs/docs/build/how-to/_category_.yml | 4 + docs/docs/build/{ => how-to}/bonsai.md | 2 +- docs/docs/build/{ => how-to}/relay.md | 18 +- docs/docs/build/index.md | 40 --- docs/docs/build/testnet.md | 13 - docs/docusaurus.config.js | 7 +- docs/src/pages/index.mdx | 2 +- 19 files changed, 344 insertions(+), 342 deletions(-) delete mode 100644 docs/docs/build/deploy/_category_.yml delete mode 100644 docs/docs/build/deploy/deployed_contract_on_remix.png delete mode 100644 docs/docs/build/deploy/foundry.md delete mode 100644 docs/docs/build/deploy/remix.md create mode 100644 docs/docs/build/getting-started/_category_.yml rename docs/docs/build/{deploy/deployed_contract_on_foundry.png => getting-started/deployed_contract.png} (100%) create mode 100644 docs/docs/build/getting-started/helloworld.mdx create mode 100644 docs/docs/build/getting-started/index.md rename docs/docs/build/{deploy => getting-started}/remix_ide.png (100%) rename docs/docs/build/{deploy => getting-started}/remix_ide_terminal.png (100%) create mode 100644 docs/docs/build/getting-started/testnet.md create mode 100644 docs/docs/build/how-to/_category_.yml rename docs/docs/build/{ => how-to}/bonsai.md (91%) rename docs/docs/build/{ => how-to}/relay.md (91%) delete mode 100644 docs/docs/build/index.md delete mode 100644 docs/docs/build/testnet.md diff --git a/docs/docs/build/deploy/_category_.yml b/docs/docs/build/deploy/_category_.yml deleted file mode 100644 index a5a9b8e4..00000000 --- a/docs/docs/build/deploy/_category_.yml +++ /dev/null @@ -1,4 +0,0 @@ -position: 5 -label: 'Deploy Smart Contracts' -collapsible: true -collapsed: true \ No newline at end of file diff --git a/docs/docs/build/deploy/deployed_contract_on_remix.png b/docs/docs/build/deploy/deployed_contract_on_remix.png deleted file mode 100644 index bd4c5b83d9ff0d5fb6c1289a2870bc9931dd1377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107432 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 A7XSbN diff --git a/docs/docs/build/deploy/foundry.md b/docs/docs/build/deploy/foundry.md deleted file mode 100644 index e5571508..00000000 --- a/docs/docs/build/deploy/foundry.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Foundry - -This guide provides step-by-step instructions on how to deploy smart contracts on BOB using Foundry. - -## Objectives -1. **Set Up Foundry for BOB**: Learn how to set up Foundry, a development environment, and configure it for your BOB smart contract development. - -2. **Create an Smart Contract for BOB**: Understand how to create your own Coin smart contract. - -3. **Compile a Smart Contract for BOB**: Compile your Coin smart contract using the Foundry development environment. - -4. **Deploy a Smart Contract to BOB**: Deploy your compiled Coin smart contract to the BOB platform. - -5. **Interact with a Smart Contract Deployed on BOB**: Learn how to interact with the smart contract you've deployed on the BOB platform. - -## Prerequisites - -Before you can deploy smart contracts on BOB, ensure you have the following prerequisites: - -- An account on BOB. You should have already set up an account on the network. -- [Foundry](https://book.getfoundry.sh/) installed and configured on your development environment. [Installation guide](https://book.getfoundry.sh/getting-started/installation) for foundry. - -## Creating Contract - -- Start a new project with Foundry. - -```shell -$ forge init coin -``` - -- Create a new `Coin.sol` file in src directory. - -```shell -$ cd coin -$ touch Coin.sol -``` - -- Enter the below code in `Coin.sol` file, To learn more about the contract [checkout guide](https://github.com/ethereum/solidity/blob/develop/docs/introduction-to-smart-contracts.rst). - -```solidity - -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.4; - -contract Coin { - // The keyword "public" makes variables - // accessible from other contracts - address public minter; - mapping(address => uint) public balances; - - // Events allow clients to react to specific - // contract changes you declare - event Sent(address from, address to, uint amount); - - // Constructor code is only run when the contract - // is created - constructor() { - minter = msg.sender; - } - - // Sends an amount of newly created coins to an address - // Can only be called by the contract creator - function mint(address receiver, uint amount) public { - require(msg.sender == minter); - balances[receiver] += amount; - } - - // Errors allow you to provide information about - // why an operation failed. They are returned - // to the caller of the function. - error InsufficientBalance(uint requested, uint available); - - // Sends an amount of existing coins - // from any caller to an address - function send(address receiver, uint amount) public { - if (amount > balances[msg.sender]) - revert InsufficientBalance({ - requested: amount, - available: balances[msg.sender] - }); - - balances[msg.sender] -= amount; - balances[receiver] += amount; - emit Sent(msg.sender, receiver, amount); - } -} -``` - -## Compiling Contract - -- To compile contract run the followling command. - -```shell -$ forge build -``` - -## Deploying Contract - -- To deploy the contract via the terminal, you'll need your private key. If you're using MetaMask, be cautious when exporting your private key as it can be risky. Checkout [article](https://support.metamask.io/hc/en-us/articles/360015289632-How-to-export-an-account-s-private-key) to get your private key from metamask. - -- Deploy compiled smart contract - -```shell -$ forge create --rpc-url --private-key src/.sol: -``` - -- For coin smart contract - -```shell -$ forge create --rpc-url wss://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz --private-key src/Coin.sol:Coin -``` - -- The rpc url can be changed checkout [conduit](https://app.conduit.xyz/published/view/fluffy-bob-7mjgi9pmtg) to get the latest endpoints. - -- The output in the terminal should look similar to this - -```shell -Deployer: 0xd8a0bb324b46D89C105BA98C402dF0972b9164Af -Deployed to: 0xbd56c1FFF2d2073F84825D582808885dbB2085C6 -Transaction hash: 0x263ead5ea07e6122d4d1fe6544158502d278b23e86b2a5b143770b82eead1588 -``` - -## Interaction with Contract - -- Checkout [testnet explorer](https://explorerl2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz) to get contract details using Transaction hash. - -![Contract details on Explorer Image](deployed_contract_on_foundry.png) - -- Get [ABI](https://docs.soliditylang.org/en/latest/abi-spec.html) of Coin contract. - -```shell -$ forge build --silent && jq '.abi' ./out/Coin.sol/Coin.json > coin_contract_abi.json -``` - -## Notes - -Please note the following: - -- Links provided in this guide can change over time. Make sure to check for the most up-to-date resources and documentation. - -- Testnet environments, like the one mentioned in this guide, may be restarted or reset periodically. Be prepared for changes and interruptions in testnet activities. - -Feel free to revisit this guide and check for updates or changes in the links and testnet status as needed. - -## References -- [Coin contract Code](https://github.com/ethereum/solidity/blob/develop/docs/introduction-to-smart-contracts.rst) -- [Foundry](https://book.getfoundry.sh/) -- [Testnet Conduit](https://app.conduit.xyz/published/view/fluffy-bob-7mjgi9pmtg) \ No newline at end of file diff --git a/docs/docs/build/deploy/remix.md b/docs/docs/build/deploy/remix.md deleted file mode 100644 index 4a59b14e..00000000 --- a/docs/docs/build/deploy/remix.md +++ /dev/null @@ -1,127 +0,0 @@ - - -# Remix - -This guide provides step-by-step instructions on how to deploy smart contracts on BOB using Remix. - -## Objectives -1. **Set Up Remix for BOB**: Learn how to set up Remix, a development environment, and configure it for your BOB smart contract development. - -2. **Create an Smart Contract for BOB**: Understand how to create your own Coin smart contract. - -3. **Compile a Smart Contract for BOB**: Compile your Coin smart contract using the Remix IDE. - -4. **Deploy a Smart Contract to BOB**: Deploy your compiled Coin smart contract to the BOB platform. - -5. **Interact with a Smart Contract Deployed on BOB**: Learn how to interact with the smart contract you've deployed on the BOB platform. - -## Prerequisites - -Before you can deploy smart contracts on BOB, ensure you have the following prerequisites: - -- An account on BOB. You should have already set up an account on the network. -- Login to [Remix](https://remix.ethereum.org/) IDE. - -## Creating Contract - -- Create a new project with Remix. Under `contracts` folder create a new file `Coin.sol`. - -- Enter the below code in `Coin.sol` file, To learn more about the contract [checkout guide](https://github.com/ethereum/solidity/blob/develop/docs/introduction-to-smart-contracts.rst). - -```solidity - -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.4; - -contract Coin { - // The keyword "public" makes variables - // accessible from other contracts - address public minter; - mapping(address => uint) public balances; - - // Events allow clients to react to specific - // contract changes you declare - event Sent(address from, address to, uint amount); - - // Constructor code is only run when the contract - // is created - constructor() { - minter = msg.sender; - } - - // Sends an amount of newly created coins to an address - // Can only be called by the contract creator - function mint(address receiver, uint amount) public { - require(msg.sender == minter); - balances[receiver] += amount; - } - - // Errors allow you to provide information about - // why an operation failed. They are returned - // to the caller of the function. - error InsufficientBalance(uint requested, uint available); - - // Sends an amount of existing coins - // from any caller to an address - function send(address receiver, uint amount) public { - if (amount > balances[msg.sender]) - revert InsufficientBalance({ - requested: amount, - available: balances[msg.sender] - }); - - balances[msg.sender] -= amount; - balances[receiver] += amount; - emit Sent(msg.sender, receiver, amount); - } -} -``` - -## Compiling Contract - -- To compile contract go to `Solidity Compiler` section of IDE, select and compile `Coin` smart contract. - -- `Coin` smart contract can also be directly compiled by right clicking on `Coin.sol` file and selct compile. - - -## Deploying Contract - -- To deploy the compiled coin smart contract first open the metamask extension and make sure the wallet is connected to the BOB network. - -- Choose the Remix `ENVIRONMENT` aand `Injected Provider - MetaMask`. Remix will deploy contract to connected network ie BOB. - -- Select contract as `Coin` click `Deploy` and sign the transaction pop up message on metamask. - -![Remix IDE image](remix_ide.png) - -- The contract details will be displayed in remix terminal. - -![Remix IDE terminal image](remix_ide_terminal.png) - - -## Interaction with Contract - -- Checkout [testnet explorer](https://explorerl2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz) to get more contract details. - -![Contract details on Explorer Image](deployed_contract_on_remix.png) - - -- Get [ABI](https://docs.soliditylang.org/en/latest/abi-spec.html) of Coin contract from remix IDE under `Solidity Compiler` Section. - - -## Notes - -Please note the following: - -- Links provided in this guide can change over time. Make sure to check for the most up-to-date resources and documentation. - -- Testnet environments, like the one mentioned in this guide, may be restarted or reset periodically. Be prepared for changes and interruptions in testnet activities. - -Feel free to revisit this guide and check for updates or changes in the links and testnet status as needed. - -## References -- [Coin contract Code](https://github.com/ethereum/solidity/blob/develop/docs/introduction-to-smart-contracts.rst) -- [Remix](https://remix.ethereum.org/) -- [Testnet Conduit](https://app.conduit.xyz/published/view/fluffy-bob-7mjgi9pmtg) \ No newline at end of file diff --git a/docs/docs/build/examples/_category_.yml b/docs/docs/build/examples/_category_.yml index 2ffb6099..a5254fb1 100644 --- a/docs/docs/build/examples/_category_.yml +++ b/docs/docs/build/examples/_category_.yml @@ -1,4 +1,4 @@ position: 6 label: 'Examples' collapsible: true -collapsed: true \ No newline at end of file +collapsed: false \ No newline at end of file diff --git a/docs/docs/build/getting-started/_category_.yml b/docs/docs/build/getting-started/_category_.yml new file mode 100644 index 00000000..61dd2535 --- /dev/null +++ b/docs/docs/build/getting-started/_category_.yml @@ -0,0 +1,5 @@ + +position: 1 +label: 'Getting Started' +collapsible: true +collapsed: false \ No newline at end of file diff --git a/docs/docs/build/deploy/deployed_contract_on_foundry.png b/docs/docs/build/getting-started/deployed_contract.png similarity index 100% rename from docs/docs/build/deploy/deployed_contract_on_foundry.png rename to docs/docs/build/getting-started/deployed_contract.png diff --git a/docs/docs/build/getting-started/helloworld.mdx b/docs/docs/build/getting-started/helloworld.mdx new file mode 100644 index 00000000..c094da77 --- /dev/null +++ b/docs/docs/build/getting-started/helloworld.mdx @@ -0,0 +1,251 @@ +--- +sidebar_position: 2 +--- +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Hello World + +This guide provides step-by-step instructions on how to deploy smart contracts on BOB. + +We will provide instructions for using Remix and Foundry. + +- [Remix](https://remix.ethereum.org/) is a web-based IDE for writing smart contracts. This is a great option if you do not want to install any software on your computer. +- [Foundry](https://book.getfoundry.sh/) is a Rust-based development environment for writing smart contracts. This is a great option if you want to use a local development environment. + +## Coin Contract + +### Objectives + +- **Set up a development environment**: Learn how to set up a development environment for your BOB smart contract development. +- **Create a Smart Contract for BOB**: We will use the a [simple example contract to create a token](https://docs.soliditylang.org/en/v0.8.21/introduction-to-smart-contracts.html#subcurrency-example) smart contract. +- **Compile a Smart Contract for BOB**: Compile your token smart contract using the development environment. +- **Deploy a Smart Contract to BOB**: Deploy your compiled token smart contract to the BOB platform. +- **Interact with a Smart Contract Deployed on BOB**: Learn how to interact with the smart contract you've deployed on the BOB platform. + +### Prerequisites + +Before you can deploy smart contracts on BOB, ensure you have the following prerequisites: + +- An EVM wallet with funds from the [testnet](testnet) faucet. +- Setup either Remix or Foundry as your development environment. + + + + +Open the [Remix IDE](https://remix.ethereum.org/) in your browser. + + + + +Follow the steps from the [foundry book](https://book.getfoundry.sh/getting-started/installation) to install the Foundry toolsuite, which contains the `forge`, `cast`, `anvil` and `chisel` tools. + + + + +### Creating the Coin Contract + + + + +Create a new project with Remix. Under `contracts` folder create a new file `Coin.sol`. + + + + +Start a new project with Foundry. + +```shell +forge init coin +``` + +Create a new `Coin.sol` file in src directory. + +```shell +cd coin +touch Coin.sol +``` + + + + +Enter the below code in `Coin.sol` file. To learn more about the contract [checkout the Solidity tutorial guide](https://docs.soliditylang.org/en/v0.8.21/introduction-to-smart-contracts.html#subcurrency-example). + +```solidity + +// SPDX-License-Identifier: GPL-3.0 +pragma solidity ^0.8.4; + +contract Coin { + // The keyword "public" makes variables + // accessible from other contracts + address public minter; + mapping(address => uint) public balances; + + // Events allow clients to react to specific + // contract changes you declare + event Sent(address from, address to, uint amount); + + // Constructor code is only run when the contract + // is created + constructor() { + minter = msg.sender; + } + + // Sends an amount of newly created coins to an address + // Can only be called by the contract creator + function mint(address receiver, uint amount) public { + require(msg.sender == minter); + balances[receiver] += amount; + } + + // Errors allow you to provide information about + // why an operation failed. They are returned + // to the caller of the function. + error InsufficientBalance(uint requested, uint available); + + // Sends an amount of existing coins + // from any caller to an address + function send(address receiver, uint amount) public { + if (amount > balances[msg.sender]) + revert InsufficientBalance({ + requested: amount, + available: balances[msg.sender] + }); + + balances[msg.sender] -= amount; + balances[receiver] += amount; + emit Sent(msg.sender, receiver, amount); + } +} +``` + +### Compile the Coin Contract + + + + +To compile contract go to `Solidity Compiler` section of the IDE, select and compile the `Coin` smart contract. + +You can also directly compile the `Coin` smart contract by right-clicking on the `Coin.sol` file and select compile. + + + + +To compile the contract run the followling command: + +```shell +forge build +``` + + + + +### Deploy the Coin Contract + + + + +To deploy the compiled coin smart contract first open the MetaMask extension and make sure the wallet is connected to the BOB network. + +Choose the Remix `ENVIRONMENT` and `Injected Provider - MetaMask`. Remix will deploy contract to connected network, i.e., BOB. + +Select contract as `Coin` click `Deploy` and sign the transaction pop up message on . + +![Remix IDE image](remix_ide.png) + +The contract details will be displayed in the Remix terminal. + +![Remix IDE terminal image](remix_ide_terminal.png) + + + + +To deploy the contract via the terminal, you'll need your private key. If you're using MetaMask, be cautious when exporting your private key as it can be risky. Checkout [this article](https://support.metamask.io/hc/en-us/articles/360015289632-How-to-export-an-account-s-private-key) to get your private key from MetaMask. + +Deploy the compiled smart contract using the following command: + +```shell +forge create --rpc-url --private-key src/.sol: +``` + +For Coin smart contract using the Fluffy BOB testnet: + +```shell +forge create --rpc-url wss://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz --private-key src/Coin.sol:Coin +``` + +The output in the terminal should look similar to this: + +```shell +Deployer: 0xd8a0bb324b46D89C105BA98C402dF0972b9164Af +Deployed to: 0xbd56c1FFF2d2073F84825D582808885dbB2085C6 +Transaction hash: 0x263ead5ea07e6122d4d1fe6544158502d278b23e86b2a5b143770b82eead1588 +``` + + + + +### Interact with the Coin Contract + +Checkout the [testnet explorer](https://explorerl2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz) to get contract details using the transaction hash from the previous step. + +![Contract details on Explorer Image](deployed_contract.png) + + + + +Get the [ABI](https://docs.soliditylang.org/en/latest/abi-spec.html) of Coin contract from remix IDE under `Solidity Compiler` section: + + + + +Get the [ABI](https://docs.soliditylang.org/en/latest/abi-spec.html) of Coin contract: + +```shell +forge build --silent && jq '.abi' ./out/Coin.sol/Coin.json > coin_contract_abi.json +``` + + + + +### Finished + +:::tip Congratulations! + +Congratulations! You have successfully deployed your first smart contract on BOB. + +::: + +## Next Steps + +BOB is built to make it easy to interact with Bitcoin. + +### Verifying Bitcoin Transactions + +You might be interested in verifying Bitcoin transactions on BOB. Checkout the [Bitcoin Light Client](/docs/build/components/relay.md) guide to learn more. + +### Examples + +Checkout a full smart contract and UI example that uses BOB to build a [Bitcoin P2P Marketplace](/docs/build/examples/btc_swap/). + +### Join the Discord + +Join the [Discord](https://discordapp.com/invite/interlay) to connect with the community and ask questions. + +## Notes + +Please note the following: + +- Links provided in this guide can change over time. Make sure to check for the most up-to-date resources and documentation. + +- Testnet environments, like the one mentioned in this guide, may be restarted or reset periodically. Be prepared for changes and interruptions in testnet activities. + +Feel free to revisit this guide and check for updates or changes in the links and testnet status as needed. + +## References + +- [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) diff --git a/docs/docs/build/getting-started/index.md b/docs/docs/build/getting-started/index.md new file mode 100644 index 00000000..f1c75963 --- /dev/null +++ b/docs/docs/build/getting-started/index.md @@ -0,0 +1,30 @@ +--- +sidebar_position: 1 +sidebar_label: Getting Started +--- + +# Welcome to BOB + +This is a guide to get you started with building on BOB. BOB is an OP Stack-based rollup and EVM compatible. This means that you can use the same tools and libraries that you are used to from Ethereum. In addition, BOB provides several useful tools to interact with Bitcoin. + +Our docs are open source and we are happy to receive both [feedback](https://forms.gle/etYqChR3aahUFuEZ9) and [contributions](https://github.com/bob-collective/bob/tree/master/docs). + +:::info Get Involved + +This is alpha-stage software. We love to work closely with you to make BOB useful to your use-case and ideas. For help, feedback, and bug reports, talk to us in the #bob-devs channel in our [Discord](https://discordapp.com/invite/interlay) server. + +::: + +## Getting Started + +- [Hello World](helloworld.md): Develop your first smart contract on BOB. +- [Testnet](testnet.md): Learn how to deploy your contracts to the testnet and interact with them. + +## How To + +- [Bitcoin Light Client](/docs/build/components/relay.md): Learn how to interact with Bitcoin by proving transaction inclusion on BOB. +- [Rust zkVM](/docs/build/components/bonsai.md): Learn how to write Rust off-chain code that can be verified on-chain on BOB. + +## Examples + +- [Bitcoin Marketplace](/docs/build/examples/btc_swap/): Learn how to build a P2P Bitcoin marketplace on BOB. diff --git a/docs/docs/build/deploy/remix_ide.png b/docs/docs/build/getting-started/remix_ide.png similarity index 100% rename from docs/docs/build/deploy/remix_ide.png rename to docs/docs/build/getting-started/remix_ide.png diff --git a/docs/docs/build/deploy/remix_ide_terminal.png b/docs/docs/build/getting-started/remix_ide_terminal.png similarity index 100% rename from docs/docs/build/deploy/remix_ide_terminal.png rename to docs/docs/build/getting-started/remix_ide_terminal.png diff --git a/docs/docs/build/getting-started/testnet.md b/docs/docs/build/getting-started/testnet.md new file mode 100644 index 00000000..a5ae7e32 --- /dev/null +++ b/docs/docs/build/getting-started/testnet.md @@ -0,0 +1,29 @@ +--- +sidebar_position: 3 +--- + +# Testnet + +## Start Building + +BOB is fully EVM compatible so you can use any tools you are used to from Ethereum. We recommend using [Remix](/docs/build/how-to/remix) or [Foundry](/docs/build/how-to/foundry) to get started. + +## 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. + +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] +``` diff --git a/docs/docs/build/how-to/_category_.yml b/docs/docs/build/how-to/_category_.yml new file mode 100644 index 00000000..ec405bd0 --- /dev/null +++ b/docs/docs/build/how-to/_category_.yml @@ -0,0 +1,4 @@ +position: 4 +label: 'How to' +collapsible: true +collapsed: false \ No newline at end of file diff --git a/docs/docs/build/bonsai.md b/docs/docs/build/how-to/bonsai.md similarity index 91% rename from docs/docs/build/bonsai.md rename to docs/docs/build/how-to/bonsai.md index 3add9653..63c7d3ab 100644 --- a/docs/docs/build/bonsai.md +++ b/docs/docs/build/how-to/bonsai.md @@ -2,6 +2,6 @@ sidebar_position: 4 --- -# Bonsai +# Rust zkVM - Bonsai BOB supports running Rust code through Bonsai. More detailed documentation will be added soon, but until then, see the [official Bonsai documentation](https://dev.risczero.com/bonsai/quickstart). diff --git a/docs/docs/build/relay.md b/docs/docs/build/how-to/relay.md similarity index 91% rename from docs/docs/build/relay.md rename to docs/docs/build/how-to/relay.md index 9779855c..dc75387d 100644 --- a/docs/docs/build/relay.md +++ b/docs/docs/build/how-to/relay.md @@ -1,8 +1,8 @@ --- -sidebar_position: 2 +sidebar_position: 3 --- -# Relay +# Bitcoin Light Client We have chosen to use the production ready [**tBTC-v2**](https://github.com/keep-network/tbtc-v2/blob/main/solidity/contracts/relay/LightRelay.sol) (summa / keep-network) relay contracts and supporting libraries to support the initial development of the BOB stack. The contracts are already well-optimized for gas consumption and have been used on mainnet Ethereum for quite some time. @@ -24,6 +24,20 @@ There was only one issue highlighted in the Least Authority audit related to the The code for the light relay is in [`src/relay/LightRelay.sol`](https://github.com/bob-collective/bob/blob/master/src/relay/LightRelay.sol) which stores the difficulty for the current and previous epoch. To update this it is possible to use `retarget(headers)` with `proofLength * 2` block headers from Bitcoin (before and after the retarget) serialized sequentially. +### Adding BOB contracts as dependency + +To add the BOB contracts to your own projects, if your project is using Foundry, you can simply run `forge install bob-collective/bob` to add BOB contracts as a dependency to your project. + +### Build the code + +To build all the contracts, run `forge build`. + +### Run the tests + +To run the built-in tests, run `forge test`. + +### Using the Contracts from TypeScript + :::tip BOB SDK To get the required input data for the contract, use the `getBitcoinHeaders` function to automatically read `numBlocks` from the configured Electrs REST API. diff --git a/docs/docs/build/index.md b/docs/docs/build/index.md deleted file mode 100644 index 9d962425..00000000 --- a/docs/docs/build/index.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Getting Started - -:::note - -This is alpha-stage software. There will be dragons. If you are planning to play with this, feel free to reach out in the #builders-lounge on our Discord server for help, feedback, and to report bugs. - -::: - -## Contracts - -### Installation - -#### Installing prerequisites - -Follow the steps from the [foundry book](https://book.getfoundry.sh/getting-started/installation) to install the Foundry toolsuite, which contains the `forge`, `cast`, `anvil` and `chisel` tools. - -#### Adding BOB contracts as dependency - -To add the contracts to your own projects, if your project is using `forge`, you can simply run `forge install bob-collective/bob` to add BOB contracts as a dependency to your project. - -### Build the code - -To build all the contracts, run `forge build`. - -### Run the tests - -To run the built-in tests, run `forge test`. - -### Examples - -The repository contains various code samples in the `src/swap` folder. To deploy a contract like the bitcoin marketplace swap example, run `forge create src/swap/Btc_Marketplace.sol:BtcMarketPlace --rpc-url 'https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz' --private-key "your private key here" --chain 901 --verify --verifier blockscout --verifier-url 'https://explorerl2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz/api?'`. - -You can then interact with the contract using through the normal means, e.g. via cast: `cast send 0x0b7bb3e86b620b06e8cdc0e72e142b0bff8c3804 "placeBtcSellOrder(uint,address,uint)" --rpc-url "https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz" --private-key "your private key here" 1 0x0000000000000000000000000000000000000001 1` - -You will be able to see your contract deployed using the [explorer](https://explorerl2-ideal-lavender-parrotfish-s3gs5qpznm.t.conduit.xyz/). Interacting with the contract via the explorer is currently not possible due to a deployment bug in conduit. - diff --git a/docs/docs/build/testnet.md b/docs/docs/build/testnet.md deleted file mode 100644 index 5b774c94..00000000 --- a/docs/docs/build/testnet.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Testnet - -We have a public testnet running and all links can be found [here](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: - -- [Chain Explorer](https://explorerl2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz) -- [Faucet](https://app.conduit.xyz/published/view/fluffy-bob-7mjgi9pmtg) - use the L2 faucet box. Sometimes this faucet fails, in which case you can use curl to directly call the API: -`curl -XPOST -i https://faucetl2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz/drip/[address]`. -- RPC: https://l2-fluffy-bob-7mjgi9pmtg.t.conduit.xyz - diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index eacd8180..90fdd54e 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -99,6 +99,11 @@ const config = { position: "left", label: "API", }, + { + href: DISCORD, + label: "Discord", + position: "right", + }, { href: GITHUB_LINK, label: "GitHub", @@ -146,7 +151,7 @@ const config = { announcementBar: { id: "sign_up", content: - 'Missing something? Want to know more? Provide feedback..', + 'Missing something? Want to know more? Provide feedback.', backgroundColor: "#f58b00", textColor: "#fff", isCloseable: true, diff --git a/docs/src/pages/index.mdx b/docs/src/pages/index.mdx index 67657e33..cd61e805 100644 --- a/docs/src/pages/index.mdx +++ b/docs/src/pages/index.mdx @@ -60,7 +60,7 @@ BOB encompasses a set of core values enabling builders to innovate on Bitcoin.

From 37b90bf189bb626a5d1c9e283e3d7cfb35953073 Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Thu, 19 Oct 2023 22:46:12 +0900 Subject: [PATCH 2/3] fix: broken links --- docs/docs/build/getting-started/helloworld.mdx | 2 +- docs/docs/build/getting-started/index.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/docs/build/getting-started/helloworld.mdx b/docs/docs/build/getting-started/helloworld.mdx index c094da77..1f1056f3 100644 --- a/docs/docs/build/getting-started/helloworld.mdx +++ b/docs/docs/build/getting-started/helloworld.mdx @@ -223,7 +223,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. Checkout the [Bitcoin Light Client](/docs/build/components/relay.md) guide to learn more. +You might be interested in verifying Bitcoin transactions on BOB. Checkout the [Bitcoin Light Client](/docs/build/how-to/relay) guide to learn more. ### Examples diff --git a/docs/docs/build/getting-started/index.md b/docs/docs/build/getting-started/index.md index f1c75963..578470d7 100644 --- a/docs/docs/build/getting-started/index.md +++ b/docs/docs/build/getting-started/index.md @@ -17,13 +17,13 @@ This is alpha-stage software. We love to work closely with you to make BOB usefu ## Getting Started -- [Hello World](helloworld.md): Develop your first smart contract on BOB. -- [Testnet](testnet.md): Learn how to deploy your contracts to the testnet and interact with them. +- [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. ## How To -- [Bitcoin Light Client](/docs/build/components/relay.md): Learn how to interact with Bitcoin by proving transaction inclusion on BOB. -- [Rust zkVM](/docs/build/components/bonsai.md): Learn how to write Rust off-chain code that can be verified on-chain on BOB. +- [Bitcoin Light Client](/docs/build/how-to/relay): Learn how to interact with Bitcoin by proving transaction inclusion on BOB. +- [Rust zkVM](/docs/build/how-to/bonsai): Learn how to write Rust off-chain code that can be verified on-chain on BOB. ## Examples From 0eb4dda404ff2c6d088717571a51036f9177ace4 Mon Sep 17 00:00:00 2001 From: Dominik Harz Date: Thu, 19 Oct 2023 22:52:54 +0900 Subject: [PATCH 3/3] fix: broken links --- docs/docs/build/getting-started/testnet.md | 2 +- docs/docs/learn/introduction/contribution.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/build/getting-started/testnet.md b/docs/docs/build/getting-started/testnet.md index a5ae7e32..a8107002 100644 --- a/docs/docs/build/getting-started/testnet.md +++ b/docs/docs/build/getting-started/testnet.md @@ -6,7 +6,7 @@ sidebar_position: 3 ## Start Building -BOB is fully EVM compatible so you can use any tools you are used to from Ethereum. We recommend using [Remix](/docs/build/how-to/remix) or [Foundry](/docs/build/how-to/foundry) to get started. +BOB is fully EVM compatible so you can use any tools you are used to from Ethereum. ## Fluffy BOB diff --git a/docs/docs/learn/introduction/contribution.md b/docs/docs/learn/introduction/contribution.md index 72249a97..b9b44caf 100644 --- a/docs/docs/learn/introduction/contribution.md +++ b/docs/docs/learn/introduction/contribution.md @@ -7,5 +7,5 @@ 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) +- Try the early alpha: [builder docs](/docs/build/getting-started/helloworld) - Join the [Discord](https://discordapp.com/invite/interlay)