Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated xcc, advanced-xcc guides (after migration rust examples to SDK 5.0.0) #1811

Merged
merged 3 commits into from
Mar 15, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 34 additions & 41 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,11 +97,11 @@ 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"
<Github fname="batch_actions.js"
bucanero marked this conversation as resolved.
Show resolved Hide resolved
url="https://github.com/near-examples/cross-contract-calls/blob/main/contract-advanced-ts/src/internal/batch_actions.ts"
start="5" end="17" />
</Language>
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"}'

```