Skip to content

Commit

Permalink
Updated xcc, advanced-xcc guides (after migration rust examples to SD…
Browse files Browse the repository at this point in the history
…K 5.0.0) (#1811)

* updated xcc, advanced-xcc guides

* Apply suggestions from code review

---------

Co-authored-by: Damián Parrino <bucanero@users.noreply.github.com>
  • Loading branch information
garikbesson and bucanero authored Mar 15, 2024
1 parent df77f9f commit 39285c7
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 61 deletions.
73 changes: 33 additions & 40 deletions docs/3.tutorials/examples/advanced-xcc.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,11 @@ The smart contract is available in two flavors: Rust and JavaScript

```bash
┌── sandbox-ts # sandbox testing
│ ├── src
│ │ ├── external-contracts
│ │ │ ├── counter.wasm
│ │ │ ├── guest-book.wasm
│ │ │ └── hello-near.wasm
│ │ └── main.ava.ts
│ ├── ava.config.cjs
│ └── package.json
│ ├── external-contracts
│ │ ├── counter.wasm
│ │ ├── guest-book.wasm
│ │ └── hello-near.wasm
│ └── main.ava.ts
├── src # contract's code
│ ├── internal
│ │ ├── batch_actions.ts
Expand All @@ -69,25 +66,20 @@ The smart contract is available in two flavors: Rust and JavaScript
<TabItem value="🦀 Rust">

```bash
┌── sandbox-ts # sandbox testing
│ ├── src
│ │ ├── external-contracts
│ │ │ ├── counter.wasm
│ │ │ ├── guest-book.wasm
│ │ │ └── hello-near.wasm
│ │ └── main.ava.ts
│ ├── ava.config.cjs
│ └── package.json
┌── tests # sandbox testing
│ ├── external-contracts
│ │ ├── counter.wasm
│ │ ├── guest-book.wasm
│ │ └── hello-near.wasm
│ └── main.ava.ts
├── src # contract's code
│ ├── batch_actions.rs
│ ├── lib.rs
│ ├── multiple_contracts.rs
│ └── similar_contracts.rs
├── build.sh # build script
├── Cargo.toml # package manager
├── README.md
├── rust-toolchain.toml
└── test.sh # test script
└── rust-toolchain.toml
```

</TabItem>
Expand All @@ -105,8 +97,8 @@ Methods called this way are executed sequentially, with the added benefit that,
they **all get reverted**.

<CodeTabs>
<Language value="🌐 JavaScript" language="js">
<Github fname="contract.ts"
<Language value="🌐 JavaScript" language="js">
<Github fname="contract.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/contract.ts"
start="37" end="40" />
<Github fname="batch_actions.ts"
Expand Down Expand Up @@ -153,12 +145,12 @@ all in parallel. If one of them fails the rest **ARE NOT REVERTED**.

<CodeTabs>
<Language value="🌐 JavaScript" language="js">
<Github fname="contract.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/contract.ts"
start="47" end="50" />
<Github fname="contract.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/contract.ts"
start="47" end="50" />
<Github fname="multiple_contracts.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/internal/multiple_contracts.ts"
start="6" end="21" />
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/internal/multiple_contracts.ts"
start="6" end="21" />
</Language>
<Language value="🦀 Rust" language="rust">
<Github fname="multiple_contracts.rs"
Expand All @@ -176,7 +168,7 @@ value returned by each call, or an error message.
<Language value="🌐 JavaScript" language="js">
<Github fname="contract.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/contract.ts"
start="42" end="45" />
start="52" end="55" />
<Github fname="multiple_contracts.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/internal/multiple_contracts.ts"
start="24" end="41" />
Expand All @@ -187,7 +179,7 @@ value returned by each call, or an error message.
<Language value="🦀 Rust" language="rust">
<Github fname="multiple_contracts.rs"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-rs/src/multiple_contracts.rs"
start="58" end="91" />
start="58" end="92" />
</Language>
</CodeTabs>

Expand All @@ -203,16 +195,16 @@ In this case, we call multiple contracts that will return the same type:
<CodeTabs>
<Language value="🌐 JavaScript" language="js">
<Github fname="contract.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/contract.ts"
start="57" end="60" />
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/contract.ts"
start="57" end="60" />
<Github fname="similar_contracts.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/internal/similar_contratcs.ts"
start="6" end="35" />
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/internal/similar_contracts.ts"
start="6" end="35" />
</Language>
<Language value="🦀 Rust" language="rust">
<Github fname="similar_contracts.rs"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-rs/src/similar_contracts.rs"
start="18" end="31" />
start="7" end="30" />
</Language>
</CodeTabs>

Expand All @@ -225,9 +217,9 @@ results.
<Language value="🌐 JavaScript" language="js">
<Github fname="contract.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/contract.ts"
start="42" end="45" />
start="62" end="65" />
<Github fname="similar_contracts.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/internal/similar_contratcs.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/internal/similar_contracts.ts"
start="37" end="54" />
<Github fname="utils.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/internal/utils.ts"
Expand All @@ -236,7 +228,7 @@ results.
<Language value="🦀 Rust" language="rust">
<Github fname="similar_contracts.rs"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-rs/src/similar_contracts.rs"
start="33" end="61" />
start="32" end="57" />
</Language>
</CodeTabs>

Expand All @@ -260,7 +252,7 @@ yarn test

```bash
cd contract-advanced-rs
./test.sh
cargo test
```

</TabItem>
Expand Down Expand Up @@ -299,9 +291,10 @@ near create-account <accountId> --useFaucet
# Deploy the contract
cd contract-advanced-rs
./build.sh
near deploy <accountId> ./target/wasm32-unknown-unknown/release/cross_contract.wasm --initFunction init --initArgs '{"hello_account":"hello.near-example.testnet","guestbook_account":"guestbook_account.near-example.testnet","counter_account":"counter_account.near-example.testnet"}'
cargo near build
# During deploying pass {"hello_account":"hello.near-example.testnet","guestbook_account":"guestbook_account.near-example.testnet","counter_account":"counter_account.near-example.testnet"} as init arguments
cargo near deploy <accountId>
```

</TabItem>
Expand Down
55 changes: 34 additions & 21 deletions docs/3.tutorials/examples/xcc.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Check the tutorial on how to perform cross-contract calls [in batches and in par

## Obtaining the Cross Contract Call Example

You have two options to start the Donation Example:
You have two options to start the project:

1. You can use the app through `Github Codespaces`, which will open a web-based interactive environment.
2. Clone the repository locally and use it from your computer.
Expand All @@ -39,12 +39,9 @@ The smart contract is available in two flavors: Rust and JavaScript

```bash
┌── sandbox-ts # sandbox testing
│ ├── src
│ │ ├── hello-near
│ │ │ └── hello-near.wasm
│ │ └── main.ava.ts
│ ├── ava.config.cjs
│ └── package.json
│ ├── hello-near
│ │ └── hello-near.wasm
│ └── main.ava.ts
├── src # contract's code
│ └── contract.ts
├── package.json
Expand All @@ -56,22 +53,18 @@ The smart contract is available in two flavors: Rust and JavaScript

<TabItem value="🦀 Rust">

=======
```bash
┌── sandbox-ts # sandbox testing
│ ├── src
│ │ ├── hello-near
│ │ │ └── hello-near.wasm
│ │ └── main.ava.ts
│ ├── ava.config.cjs
│ └── package.json
┌── tests # sandbox testing
│ ├── hello-near
│ │ └── hello-near.wasm
│ └── tests.rs
├── src # contract's code
│ ├── external.rs
│ └── lib.rs
├── build.sh # build script
├── Cargo.toml # package manager
├── README.md
├── rust-toolchain.toml
└── test.sh # test script
└── rust-toolchain.toml
```

</TabItem>
Expand All @@ -82,6 +75,7 @@ The smart contract is available in two flavors: Rust and JavaScript

## Smart Contract

### Contract
The contract exposes methods to query the greeting and change it. These methods do nothing but calling `get_greeting` and
`set_greeting` in the `hello-near` example.

Expand Down Expand Up @@ -118,7 +112,7 @@ yarn test

```bash
cd contract-simple-rs
./test.sh
cargo test
```

</TabItem>
Expand All @@ -129,6 +123,24 @@ yarn test
The `integration tests` use a sandbox to create NEAR users and simulate interactions with the contract.
:::

In this project in particular, the integration tests first deploy the `hello-near` contract. Then,
they test that the cross-contract call correctly sets and retrieves the message. You will find the integration tests
in `sandbox-ts/` for the JavaScript version and in `tests/` for the Rust version.

<CodeTabs>
<Language value="🌐 JavaScript" language="rust">
<Github fname="main.ava.ts"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-simple-ts/sandbox-ts/src/main.ava.ts"
start="9" end="59" />
</Language>
<Language value="🦀 Rust" language="rust">
<Github fname="lib.rs"
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-simple-rs/tests/tests.rs"
start="5" end="77" />
</Language>
</CodeTabs>


<hr class="subsection" />

### Deploying the Contract to the NEAR network
Expand Down Expand Up @@ -157,11 +169,12 @@ near create-account <accountId> --useFaucet
# Deploy the contract
cd contract-simple-rs
./build.sh
near deploy <accountId> ./target/wasm32-unknown-unknown/release/cross_contract.wasm --initFunction init --initArgs '{"hello_account":"hello.near-example.testnet"}'
```
cargo near build
# During deploying pass {"hello_account":"hello.near-example.testnet"} as init arguments
cargo near deploy <accountId>
```
</TabItem>
</Tabs>

Expand Down

0 comments on commit 39285c7

Please sign in to comment.