diff --git a/README.md b/README.md index 114c31a..9958235 100755 --- a/README.md +++ b/README.md @@ -11,8 +11,8 @@ Getting Started Install Dependencies -------------------- -1. `rustc` >= 1.71.0 with the `wasm32-unknown-unknown` target installed. See https://soroban.stellar.org/docs/getting-started/setup#install-rust . If you have already a lower version, the easiest way to upgrade is to uninstall (`rustup self uninstall`) and install it again. -2. `soroban-cli`. See https://soroban.stellar.org/docs/getting-started/setup#install-the-soroban-cli, but instead of `cargo install soroban-cli`, run `cargo install_soroban`. This is an alias set up in [.cargo/config.toml](./.cargo/config.toml), which pins the local soroban-cli to a specific version. If you add `./target/bin/` [to your PATH](https://linuxize.com/post/how-to-add-directory-to-path-in-linux/), then you'll automatically use this version of `soroban-cli` when you're in this directory. +1. `rustc` >= 1.74.0 with the `wasm32-unknown-unknown` target installed. See https://soroban.stellar.org/docs/getting-started/setup#install-rust . If you have already a lower version, the easiest way to upgrade is to uninstall (`rustup self uninstall`) and install it again. +2. `soroban-cli` will be installed to a local hidden directory of project folder as part of setup performed later, there is an alias set up in [.cargo/config.toml](./.cargo/config.toml), which pins the local soroban-cli to a specific version. If you add `./target/bin/` [to your PATH](https://linuxize.com/post/how-to-add-directory-to-path-in-linux/), then you'll automatically use this version of `soroban-cli` when you're in this directory. 3. If you want to run everything locally: `docker` (you can run both Standalone and Futurenet backends with it) 4. Node.js v18 5. [Freighter Wallet](https://www.freighter.app/) ≥[v5.0.2](https://github.com/stellar/freighter/releases/tag/2.9.1). Or from the Firefox / Chrome extension store. Once installed, enable "Experimental Mode" in the settings (gear icon). @@ -28,18 +28,16 @@ Run Backend Make sure to start from a clean setup: ``` -npm run clean +npm run reset ``` You have three options: 1. Deploy on [Futurenet](https://soroban.stellar.org/docs/getting-started/deploy-to-futurenet) using a remote [RPC](https://soroban.stellar.org/docs/getting-started/run-rpc) endpoint, 2. Run your own Futerenet RPC node with Docker and deploy to it, 3. run in [localnet/standalone](https://soroban.stellar.org/docs/getting-started/deploy-to-a-local-network) mode. ### Option 1: Deploy on Futurenet -0. Make sure you have soroban-cli installed, as explained above - 1. Deploy the contracts and initialize them - npm run setup + `npm run reset` This runs `./initialize.sh futurenet` behind the scenes, which will create a `token-admin` identity for you (`soroban config identity create token-admin`) and deploy a Fungible Token contract as well as the [crowdfund contract](./contracts/crowdfund), with this account as admin. @@ -47,21 +45,15 @@ You have three options: 1. Deploy on [Futurenet](https://soroban.stellar.org/doc ### Option 2: Run your own Futurenet node -1. Run the backend docker container with `./quickstart.sh futurenet`, and wait for it to start. +1. In one terminal, run the backend docker container with `./quickstart.sh futurenet`, and wait for it to start. **Note:** This can take up to 5 minutes to start syncing. You can tell it is working by visiting http://localhost:8000/, and look at the `ingest_latest_ledger`, field. If it is `0`, the quickstart image is not ready yet. The quickstart container also prints console statements on start status, it will print `soroban rpc: waiting for ready state...` at first and then `soroban rpc: up and ready` when network sync has been reached. -2. Load the contracts and initialize them - - Use your own local soroban-cli: - - ./initialize.sh futurenet http://localhost:8000 +2. In second terminal, deploy the contracts and initialize them - Or run it inside the soroban-preview docker container: - - docker exec soroban-preview ./initialize.sh futurenet + `SOROBAN_RPC_HOST=http://localhost:8000 npm run reset` 3. Add the Futurenet custom network in Freighter (Note, the out-of-the-box "Future Net" network in Freighter will not work with a local quickstart @@ -81,11 +73,7 @@ You have three options: 1. Deploy on [Futurenet](https://soroban.stellar.org/doc ### Option 3: Localnet/Standalone -0. If you didn't yet, build the `soroban-preview` docker image, as described above: - - make build-docker - -1. In one terminal, run the backend docker containers and wait for them to start: +1. In one terminal, run the backend docker container with `./quickstart.sh futurenet`, and wait for it to start. ./quickstart.sh standalone @@ -93,17 +81,11 @@ You have three options: 1. Deploy on [Futurenet](https://soroban.stellar.org/doc You can stop this process with ctrlc -2. Keep that running, then deploy the contracts and initialize them: - - You can use your own local soroban-cli: - - NETWORK=standalone npm run setup - - Or run it inside the soroban-preview docker container: +2. In second terminal, deploy the contracts and initialize them: - docker exec soroban-preview ./initialize.sh standalone + `NETWORK=standalone npm run reset` - **Note:** this state will be lost if the quickstart docker container is removed, which will happen if you stop the `quickstart.sh` process. You will need to re-run `./initialize.sh` every time you restart the container. + **Note:** this state will be lost if the quickstart docker container is removed, which will happen if you stop the `quickstart.sh` process. You will need to run `NETWORK=standalone npm run setup` any time you restart the container. 3. Add the Standalone custom network in Freighter diff --git a/package.json b/package.json index dfa51fb..f9e58a2 100644 --- a/package.json +++ b/package.json @@ -7,14 +7,13 @@ "build": "next build", "start": "next start", "lint": "next lint", - "setup": "./initialize.sh ${NETWORK:-futurenet} && npm install", - "clean": "rm -rf .next .soroban .soroban-example-dapp", - "reset": "npm run clean && npm run setup", - "build:contracts": "./target/bin/soroban contract build", + "setup": "./initialize.sh \"${NETWORK:-futurenet}\" \"${SOROBAN_RPC_HOST}\" && npm run bindings", + "clean": "rm -rf .next .soroban .soroban-example-dapp target .node-modules", + "reset": "npm install && npm run setup", "bindings:crowdfund": "./target/bin/soroban contract bindings typescript --wasm ./target/wasm32-unknown-unknown/release/soroban_crowdfund_contract.wasm --id $(cat ./.soroban-example-dapp/crowdfund_id) --output-dir ./.soroban-example-dapp/crowdfund-contract --network $(cat ./.soroban-example-dapp/network) --overwrite", "bindings:abundance": "./target/bin/soroban contract bindings typescript --wasm ./target/wasm32-unknown-unknown/release/abundance_token.wasm --id $(cat ./.soroban-example-dapp/abundance_token_id) --output-dir ./.soroban-example-dapp/abundance-token --network $(cat ./.soroban-example-dapp/network) --overwrite", "bindings": "npm run bindings:crowdfund && npm run bindings:abundance", - "preinstall": "npm run build:contracts && npm run bindings" + "preinstall": "npm run clean" }, "dependencies": { "@radix-ui/react-dialog": "1.0.2",