Skip to content

Commit

Permalink
docs(autonomi): update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
mickvandijke committed Sep 30, 2024
1 parent e2568f3 commit 039dc87
Showing 1 changed file with 88 additions and 6 deletions.
94 changes: 88 additions & 6 deletions autonomi/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,101 @@ Connect to and build on the Autonomi network.

## Usage

See [docs.rs/autonomi](https://docs.rs/autonomi) for usage examples.
Add the autonomi crate to your `Cargo.toml`:

```toml
[dependencies]
autonomi = { path = "../autonomi", version = "0.1.0" }
```

## Running tests

Run a local network with the `local-discovery` feature:
### Using a local EVM testnet

1. If you haven't, install Foundry, to be able to run Anvil
nodes: https://book.getfoundry.sh/getting-started/installation
2. Run a local EVM node:

```sh
cargo run --bin evm_testnet -- --royalties-wallet <ETHEREUM_ADDRESS>
```

Take note of the console output for the next step (`RPC URL`, `Payment token address` & `Chunk payments address`).

3. Run a local network with the `local-discovery` feature and pass the EVM params:

```sh
cargo run --bin=safenode-manager --features=local-discovery -- local run --build --clean --rewards-address <ETHEREUM_ADDRESS> evm-custom --rpc-url <RPC_URL> --payment-token-address <TOKEN_ADDRESS> --chunk-payments-address <CONTRACT_ADDRESS>
```

4. Then run the tests with the `local` feature and pass the EVM params again:

```sh
$ RPC_URL=<RPC_URL> PAYMENT_TOKEN_ADDRESS=<TOKEN_ADDRESS> CHUNK_PAYMENTS_ADDRESS=<CONTRACT_ADDRESS> cargo test --package=autonomi --features=local
# Or with logs
$ RUST_LOG=autonomi RPC_URL=<RPC_URL> PAYMENT_TOKEN_ADDRESS=<TOKEN_ADDRESS> CHUNK_PAYMENTS_ADDRESS=<CONTRACT_ADDRESS> cargo test --package=autonomi --features=local -- --nocapture
```

### Using a live testnet or mainnet

Using the hardcoded `Arbitrum One` option as an example, but you can also use the command flags of the steps above and
point it to a live network.

1. Run a local network with the `local-discovery` feature:

```sh
cargo run --bin=safenode-manager --features=local-discovery -- local run --build --clean
cargo run --bin=safenode-manager --features=local-discovery -- local run --build --clean --rewards-address <ETHEREUM_ADDRESS> evm-arbitrum-one
```

Then run the tests with the `local` feature:
2. Then run the tests with the `local` feature. Make sure that the wallet of the private key you pass has enough gas and
payment tokens on the network (in this case Arbitrum One):

```sh
$ cargo test --package=autonomi --features=local
$ EVM_NETWORK=arbitrum-one PRIVATE_KEY=<PRIVATE_KEY> cargo test --package=autonomi --features=local
# Or with logs
$ RUST_LOG=autonomi cargo test --package=autonomi --features=local -- --nocapture
$ RUST_LOG=autonomi EVM_NETWORK=arbitrum-one PRIVATE_KEY=<PRIVATE_KEY> cargo test --package=autonomi --features=local -- --nocapture
```

## Faucet (local)

There is no faucet server, but instead you can use the `Deployer wallet private key` printed in the EVM node output to
initialise a wallet from with almost infinite gas and payment tokens. Example:

```rust
let rpc_url = "http://localhost:54370/";
let payment_token_address = "0x5FbDB2315678afecb367f032d93F642f64180aa3";
let chunk_payments_address = "0x8464135c8F25Da09e49BC8782676a84730C318bC";
let private_key = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";

let network = Network::Custom(CustomNetwork::new(
rpc_url,
payment_token_address,
chunk_payments_address,
));

let deployer_wallet = Wallet::new_from_private_key(network, private_key).unwrap();
let receiving_wallet = Wallet::new_with_random_wallet(network);

// Send 10 payment tokens (atto)
let _ = deployer_wallet
.transfer_tokens(receiving_wallet.address(), Amount::from(10))
.await;
```

Alternatively, you can provide the wallet address that should own all the gas and payment tokens to the EVM testnet
startup command using the `--genesis-wallet` flag:

```sh
cargo run --bin evm_testnet -- --royalties-wallet <ETHEREUM_ADDRESS> --genesis-wallet <ETHEREUM_ADDRESS>
```

```shell
*************************
* Ethereum node started *
*************************
RPC URL: http://localhost:60093/
Payment token address: 0x5FbDB2315678afecb367f032d93F642f64180aa3
Chunk payments address: 0x8464135c8F25Da09e49BC8782676a84730C318bC
Deployer wallet private key: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
Genesis wallet balance: (tokens: 20000000000000000000000000, gas: 9998998011366954730202)
```

0 comments on commit 039dc87

Please sign in to comment.