Skip to content

Commit

Permalink
sdk-wbg crate impl with dapp example, wasm target compatible interactor
Browse files Browse the repository at this point in the history
  • Loading branch information
mihaicalinluca committed Sep 24, 2024
1 parent 49a82cb commit 6957fe4
Show file tree
Hide file tree
Showing 85 changed files with 8,354 additions and 27 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Generated by Cargo
# will have compiled files and executables
**/target/**
**/dist

# Remove Cargo.lock from the framework, but not from the wasm contracts.
# In contracts it helps with tracing builds.
Expand Down
3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ members = [
"sdk/core",
"sdk/scenario-format",

"sdk-wbg/core",
"sdk-wbg/core/examples/ping-pong-dapp",

"tools/mxpy-snippet-generator",
"tools/payload-macro-generator",
# "tools/plotter",
Expand Down
1 change: 1 addition & 0 deletions contracts/examples/adder/interact/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ path = "src/basic_interact.rs"
clap = { version = "4.4.7", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
toml = "0.8.6"
tokio = { version = "1.24" }

[dependencies.adder]
path = ".."
Expand Down
1 change: 1 addition & 0 deletions contracts/examples/multisig/interact/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ path = "src/multisig_interact.rs"
clap = { version = "4.4.7", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
toml = "0.8.6"
tokio = { version = "1.24" }

[dependencies.multisig]
path = ".."
Expand Down
1 change: 1 addition & 0 deletions contracts/feature-tests/basic-features/interact/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ path = "src/bf_interact.rs"
[dependencies]
clap = { version = "4.4.7", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1.24" }
toml = "0.8.6"

[dependencies.basic-features]
Expand Down
1 change: 1 addition & 0 deletions contracts/feature-tests/composability/interact/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ path = "src/comp_interact_main.rs"
[dependencies]
clap = { version = "4.4.7", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1.24" }
toml = "0.8.6"

[dependencies.multiversx-sc]
Expand Down
6 changes: 3 additions & 3 deletions framework/snippets/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ keywords = ["multiversx", "blockchain", "contract", "snippets"]
categories = ["cryptography::cryptocurrencies"]

[dependencies]
tokio = { version = "1.24", features = ["full"] }
gloo-timers = { version = "0.3.0", features = ["futures"] }
hex = "0.4"
base64 = "0.22"
log = "0.4.17"
Expand All @@ -29,9 +29,9 @@ path = "../scenario"
version = "0.23.0"
path = "../../sdk/scenario-format"

[dependencies.multiversx-sdk]
[dependencies.multiversx-sdk-wbg]
version = "=0.6.0"
path = "../../sdk/core"
path = "../../sdk-wbg/core"

[dev-dependencies]
serde_json = "1.0"
4 changes: 2 additions & 2 deletions framework/snippets/src/account_tool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use multiversx_sc_scenario::{
imports::Bech32Address,
scenario_model::{Account, BytesKey, BytesValue, Scenario, SetStateStep, Step},
};
use multiversx_sdk::{
use multiversx_sdk_wbg::{
data::{address::Address, esdt::EsdtBalance},
gateway::GatewayProxy,
};
Expand Down Expand Up @@ -67,7 +67,7 @@ pub async fn retrieve_account_as_scenario_set_state(
}

fn set_account(
account: multiversx_sdk::data::account::Account,
account: multiversx_sdk_wbg::data::account::Account,
account_storage: HashMap<String, String>,
account_esdt: HashMap<String, EsdtBalance>,
account_esdt_roles: HashMap<String, Vec<String>>,
Expand Down
5 changes: 3 additions & 2 deletions framework/snippets/src/imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ pub use crate::{
dns_address_for_name, test_wallets, Interactor, InteractorPrepareAsync, StepBuffer,
};

pub use multiversx_sdk::{data::keystore::InsertPassword, wallet::Wallet};
pub use multiversx_sdk_wbg::{data::keystore::InsertPassword, wallet::Wallet};

pub use env_logger;
pub use tokio;
pub use gloo_timers;
// pub use tokio;
6 changes: 4 additions & 2 deletions framework/snippets/src/interactor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use multiversx_sc_scenario::{
multiversx_sc::types::Address,
scenario_model::AddressValue,
};
use multiversx_sdk::{
use multiversx_sdk_wbg::{
data::{address::Address as ErdrsAddress, network_config::NetworkConfig},
gateway::GatewayProxy,
wallet::Wallet,
Expand Down Expand Up @@ -61,7 +61,9 @@ impl Interactor {

pub async fn sleep(&mut self, duration: Duration) {
self.waiting_time_ms += duration.as_millis() as u64;
tokio::time::sleep(duration).await;
gloo_timers::future::sleep(duration).await;

// tokio::time::sleep(duration).await;
}

pub async fn with_tracer<P: AsRef<Path>>(mut self, path: P) -> Self {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use multiversx_sc_scenario::{
scenario::ScenarioRunner,
scenario_model::{ScCallStep, SetStateStep, TxCall},
};
use multiversx_sdk::{data::transaction::Transaction, utils::base64_encode};
use multiversx_sdk_wbg::{data::transaction::Transaction, utils::base64_encode};

impl Interactor {
pub async fn sc_call<S>(&mut self, mut sc_call_step: S)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use multiversx_sc_scenario::{
mandos_system::ScenarioRunner,
scenario_model::{ScDeployStep, SetStateStep},
};
use multiversx_sdk::{
use multiversx_sdk_wbg::{
data::{address::Address as ErdrsAddress, transaction::Transaction},
utils::base64_encode,
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use multiversx_sc_scenario::{
multiversx_sc::{abi::TypeAbiFrom, codec::TopDecodeMulti, types::ContractCall},
scenario_model::{ScQueryStep, TxResponse},
};
use multiversx_sdk::{data::vm::VmValueRequest, utils::base64_decode};
use multiversx_sdk_wbg::{data::vm::VmValueRequest, utils::base64_decode};

impl Interactor {
pub async fn sc_query<S>(&mut self, mut step: S) -> &mut Self
Expand Down
2 changes: 1 addition & 1 deletion framework/snippets/src/interactor_sender.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use log::debug;
use multiversx_sc_scenario::multiversx_sc::types::Address;
use multiversx_sdk::{data::transaction::Transaction, wallet::Wallet};
use multiversx_sdk_wbg::{data::transaction::Transaction, wallet::Wallet};

use crate::{address_h256_to_erdrs, Interactor};

Expand Down
7 changes: 4 additions & 3 deletions framework/snippets/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ pub use interactor_tx::*;
pub use log;
pub use multi::*;
pub use multiversx_sc_scenario::{self, multiversx_sc};
pub use multiversx_sdk as erdrs; // TODO: remove
pub use multiversx_sdk as sdk;
pub use tokio;
pub use multiversx_sdk_wbg as erdrs; // TODO: remove
pub use multiversx_sdk_wbg as sdk;
// pub use tokio;
pub use gloo_timers;

/// Imports normally needed in interactors, grouped together.
pub mod imports;
2 changes: 1 addition & 1 deletion framework/snippets/src/multi/interactor_multi_sc_exec.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use super::interactor_multi_sc_process::{update_nonces_and_sign_tx, SenderSet, Txs};
use crate::{network_response, Interactor, InteractorStep, StepBuffer};
use multiversx_sdk::data::transaction::Transaction;
use multiversx_sdk_wbg::data::transaction::Transaction;

impl Interactor {
pub async fn multi_sc_exec(&mut self, mut buffer: StepBuffer<'_>) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::{multiversx_sc::types::Address, Interactor, Sender};
use futures::future::join_all;
use multiversx_sdk::data::transaction::{Transaction, TransactionOnNetwork};
use multiversx_sdk_wbg::data::transaction::{Transaction, TransactionOnNetwork};
use std::collections::HashSet;

pub(crate) type Txs = Vec<Transaction>;
Expand Down
2 changes: 1 addition & 1 deletion framework/snippets/src/multi/interactor_step.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use multiversx_sc_scenario::{
mandos_system::ScenarioRunner,
scenario_model::{AddressValue, ScCallStep, ScDeployStep, TxResponse},
};
use multiversx_sdk::data::transaction::Transaction;
use multiversx_sdk_wbg::data::transaction::Transaction;

use crate::Interactor;

Expand Down
2 changes: 1 addition & 1 deletion framework/snippets/src/network_response.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use multiversx_sc_scenario::{
multiversx_chain_vm::crypto_functions::keccak256,
scenario_model::{Log, TxResponse, TxResponseStatus},
};
use multiversx_sdk::{
use multiversx_sdk_wbg::{
data::transaction::{ApiSmartContractResult, Events, TransactionOnNetwork},
utils::base64_decode,
};
Expand Down
2 changes: 1 addition & 1 deletion framework/snippets/src/test_wallets.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use multiversx_sdk::wallet::Wallet;
use multiversx_sdk_wbg::wallet::Wallet;

fn test_wallet(pem_file_contents: &str) -> Wallet {
Wallet::from_pem_file_contents(pem_file_contents.to_string()).unwrap()
Expand Down
4 changes: 2 additions & 2 deletions framework/snippets/tests/test_tx_deployed_address.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use multiversx_sc_scenario::imports::Address;
use multiversx_sc_snippets::network_response;
use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork};
use multiversx_sdk_wbg::data::transaction::{TransactionInfo, TransactionOnNetwork};

#[test]
fn test_deployed_address() {
Expand Down Expand Up @@ -55,7 +55,7 @@ fn test_deployed_address() {
.transaction;
let tx_response = network_response::parse_tx_response(tx_on_network);
let opt_address = tx_response.new_deployed_address.map(|e| {
multiversx_sdk::data::address::Address::from_bytes(*e.as_array())
multiversx_sdk_wbg::data::address::Address::from_bytes(*e.as_array())
.to_bech32_string()
.unwrap()
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use multiversx_sc_snippets::network_response;
use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork};
use multiversx_sdk_wbg::data::transaction::{TransactionInfo, TransactionOnNetwork};

#[test]
fn test_process_issued_token_identifier_fungible() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use multiversx_sc_snippets::network_response;
use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork};
use multiversx_sdk_wbg::data::transaction::{TransactionInfo, TransactionOnNetwork};

#[test]
fn test_with_multi_contract_same_shard_tx_that_has_no_sc_result() {
Expand Down
2 changes: 1 addition & 1 deletion framework/snippets/tests/test_tx_multiple_sc_results.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use multiversx_sc_snippets::network_response::{self, is_out_scr};
use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork};
use multiversx_sdk_wbg::data::transaction::{TransactionInfo, TransactionOnNetwork};

#[test]
fn test_transaction_multiple_sc_results() {
Expand Down
2 changes: 1 addition & 1 deletion framework/snippets/tests/test_tx_sc_result.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use multiversx_sc_snippets::network_response;
use multiversx_sdk::data::transaction::{TransactionInfo, TransactionOnNetwork};
use multiversx_sdk_wbg::data::transaction::{TransactionInfo, TransactionOnNetwork};

#[test]
fn test_with_tx_that_has_sc_result() {
Expand Down
3 changes: 3 additions & 0 deletions sdk-wbg/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# MultiversX tools and SDKs

This directory contains various tools and SDKs written in Rust for the MultiversX ecosystem specifically for the WASM targets, compatible with `wasm-bindgen`.
42 changes: 42 additions & 0 deletions sdk-wbg/core/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
[package]
name = "multiversx-sdk-wbg"
version = "0.6.0"
edition = "2021"

authors = ["MultiversX <contact@multiversx.com>"]
license = "MIT"
readme = "README.md"
repository = "https://github.com/multiversx/mx-sdk-rs"
homepage = "https://multiversx.com/"
documentation = "https://docs.multiversx.com/"
description = "SDK for interacting with the MultiversX blockchain for WASM environments"
categories = ["cryptography::cryptocurrencies", "api-bindings"]
keywords = ["multiversx", "blockchain", "sdk", "api", "wasm", "wasm-bindgen"]

[dependencies]
rand = { version = "0.8.5" }
getrandom = { version = "0.2.15", features = ["js"] }
wasm-bindgen = { version = "0.2.93" }
wasm-bindgen-futures = { version = "0.4.43" }
gloo-net = { version = "0.6.0" }
gloo-timers = { version = "0.3.0", features = ["futures"] }
serde = { version = "1.0.130", features = ["derive"] }
serde_json = { version = "1.0.68", features = ["preserve_order"] }
serde_repr = "0.1.8"
anyhow = "1.0.44"
bip39 = { version = "2.0.0", features = ["rand"] }
sha2 = "0.10.8"
sha3 = "0.10.8"
hmac = { version = "0.12.1", features = ["std"] }
hex = "0.4.3"
base64 = "0.22"
pbkdf2 = { version = "0.12.2", default-features = false }
zeroize = "1.4.2"
bech32 = "0.11"
itertools = "0.13.0"
pem = "3.0.2"
log = "0.4.17"
scrypt = "0.11"
aes = "0.8"
ctr = "0.9.2"
uuid = { version = "1.10.0", features = ["v4"] }
5 changes: 5 additions & 0 deletions sdk-wbg/core/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# MultiversX SDK for Rust

General purpose collection of tools & SDKs to interact with the MultiversX blockchain from Rust projects, wasm-bindgen compatible.

More examples in `./examples`.
20 changes: 20 additions & 0 deletions sdk-wbg/core/examples/ping-pong-dapp/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[package]
name = "ping-pong-dapp"
version = "0.1.0"
edition = "2021"

[dependencies]
console_log = "0.2"
log = "0.4"
serde = "1.0.210"
serde_json = "1.0"
wasm-bindgen-futures = "0.4"
yew = { version = "0.20.0", features = ["csr"] }
yew_icons = { version = "0.7.3", features = ["BootstrapHeartFill"] }
yew-router = { version = "0.17.0" }

[dependencies.interactor]
path = "interactor"

[dependencies.multiversx-sc-snippets]
path = "../../../../framework/snippets"
12 changes: 12 additions & 0 deletions sdk-wbg/core/examples/ping-pong-dapp/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!doctype html>
<html lang="en">

<head>
<link data-trunk rel="css" href="src/styles.css" />
</head>

<body>

</body>

</html>
13 changes: 13 additions & 0 deletions sdk-wbg/core/examples/ping-pong-dapp/interactor/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[package]
name = "interactor"
version = "0.1.0"
edition = "2021"

[lib]
path = "lib.rs"

[dependencies]
serde = { version = "1.0", features = ["derive"] }

[dependencies.multiversx-sc-snippets]
path = "../../../../../framework/snippets"
Loading

0 comments on commit 6957fe4

Please sign in to comment.