Skip to content

Commit

Permalink
Implement avail-light-web
Browse files Browse the repository at this point in the history
  • Loading branch information
aterentic-ethernal committed Nov 26, 2024
1 parent cae96a4 commit 7e71e4f
Show file tree
Hide file tree
Showing 13 changed files with 296 additions and 10 deletions.
8 changes: 6 additions & 2 deletions .github/workflows/default.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ jobs:
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy
- run: cargo clippy --workspace -- -D warnings
# TODO: Enable avail-light-web once issue with rocksdb feature being applied
# accross the workspace is resolved
- run: cargo clippy --workspace --exclude avail-light-web -- -D warnings

test:
name: cargo test
Expand All @@ -42,7 +44,9 @@ jobs:
- uses: actions/checkout@v4
- uses: arduino/setup-protoc@v2
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo test --workspace --benches --tests
# TODO: Enable avail-light-web once issue with rocksdb feature being applied
# accross the workspace is resolved
- run: cargo test --workspace --benches --tests --exclude avail-light-web
env:
RUSTFLAGS: "-C instrument-coverage"
LLVM_PROFILE_FILE: "profile-%p-%m.profraw"
Expand Down
43 changes: 43 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ members = [
"crawler",
"fat",
"relay",
"web",
]
default-members = ["client"]
resolver = "2"
Expand All @@ -25,7 +26,7 @@ anyhow = "1.0.71"
async-std = { version = "1.12.0", features = ["attributes"] }
async-trait = "0.1.73"
clap = { version = "4.4.4", features = ["derive", "cargo"] }
color-eyre = "0.6.2"
color-eyre = { version = "0.6.2", default-features = false }
confy = "0.5.1"
hex = "0.4.3"
rand = { version = "0.8.5", default-features = false }
Expand Down
9 changes: 6 additions & 3 deletions core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ async-stream = "0.3.5"
async-trait = { workspace = true }
base64 = "0.21.0"
better-panic = "0.3.0"
chrono = "0.4.19"
clap = { workspace = true }
codec = { package = "parity-scale-codec", version = "3", default-features = false, features = ["derive", "full", "bit-vec"] }
color-eyre = { workspace = true }
convert_case = "0.6.0"
color-eyre = { workspace = true, default-features = true }
confy = { workspace = true }
derive_more = { version = "1", features = ["from"] }
dusk-bytes = "0.1.7"
futures = { workspace = true }
Expand Down Expand Up @@ -75,16 +77,17 @@ opentelemetry_sdk = { workspace = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
blake2b_simd = "1.0.2"
color-eyre = { workspace = true }
ed25519-compact = "2.1.1"
# NOTE: This is used due bug explained at: https://github.com/tomaka/wasm-timer/pull/13
fluvio-wasm-timer = "0.2.5"
libp2p = { workspace = true, features = ["wasm-bindgen"] }
libp2p-webrtc-websys = { workspace = true }
thiserror-no-std = "2.0.2"
rand = { workspace = true, features = ["std_rng"] }
thiserror-no-std = "2.0.2"
tokio_with_wasm = { version = "0.7.1", default-features = false, features = ["sync", "macros", "rt", "time"] }
wasm-bindgen = "0.2.90"
web-time = "1.1.0"
wasm-bindgen = "0.2.90"

[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
hex-literal = "0.4.1"
Expand Down
1 change: 1 addition & 0 deletions core/src/light_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ use crate::{
utils::{blake2_256, calculate_confidence, extract_kate},
};

#[derive(Debug)]
pub enum OutputEvent {
RecordBlockProcessingDelay(f64),
CountSessionBlocks,
Expand Down
5 changes: 2 additions & 3 deletions core/src/network/p2p.rs
Original file line number Diff line number Diff line change
Expand Up @@ -315,10 +315,9 @@ async fn build_swarm(
};
#[cfg(target_arch = "wasm32")]
{
use libp2p_webrtc_websys as webrtc;
swarm = tokio_swarm
.with_other_transport(|key| {
libp2p_webrtc_websys::Transport::new(libp2p_webrtc_websys::Config::new(&key))
})?
.with_other_transport(|key| webrtc::Transport::new(webrtc::Config::new(&key)))?
.with_relay_client(noise::Config::new, yamux::Config::default)?
.with_behaviour(behaviour)?
.with_swarm_config(|c| generate_config(c, cfg))
Expand Down
3 changes: 2 additions & 1 deletion core/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use avail_rust::{
avail_core::DataLookup,
kate_recovery::{commitments, matrix::Dimensions},
sp_core::{bytes, ed25519},
AvailHeader, Keypair, H256,
AvailHeader, H256,
};
#[cfg(not(target_arch = "wasm32"))]
use avail_rust::{
Expand All @@ -15,6 +15,7 @@ use avail_rust::{
bip39::{Language, Mnemonic},
SecretString, SecretUri,
},
Keypair,
};
use base64::{engine::general_purpose, DecodeError, Engine};
use codec::{Decode, Encode, Input};
Expand Down
7 changes: 7 additions & 0 deletions core/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,12 +119,19 @@ pub fn filter_auth_set_changes(header: &AvailHeader) -> Vec<Vec<(AuthorityId, u6
}

pub fn install_panic_hooks(shutdown: Controller<String>) -> Result<()> {
#[cfg(not(target_arch = "wasm32"))]
// initialize color-eyre hooks
let (panic_hook, eyre_hook) = color_eyre::config::HookBuilder::default()
.display_location_section(true)
.display_env_section(true)
.into_hooks();

#[cfg(target_arch = "wasm32")]
// initialize color-eyre hooks
let (panic_hook, eyre_hook) = color_eyre::config::HookBuilder::default()
.display_env_section(true)
.into_hooks();

// install hook as global handler
eyre_hook.install()?;

Expand Down
30 changes: 30 additions & 0 deletions web/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[package]
name = "avail-light-web"
version = "0.1.0"
authors.workspace = true
edition = "2021"
repository.workspace = true

[lib]
crate-type = ["cdylib", "rlib"]

[features]
default = ["console_error_panic_hook"]

[dependencies]
avail-light-core = { workspace = true }
avail-rust = { workspace = true }
clap = { workspace = true }
console_error_panic_hook = { version = "0.1.7", optional = true }
futures = { workspace = true }
libp2p = { workspace = true }
sp-io = { version = "30", features = ["disable_allocator", "disable_panic_handler"], default-features = false }
tokio = { version = "^1", default-features = false, features = ["sync", "macros", "io-util", "rt"] }
tokio_with_wasm = { version = "0.7.1", features = ["sync", "macros", "rt"] }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
tracing-wasm = "0.2.1"
wasm-bindgen = "0.2.93"
wasm-bindgen-futures = "0.4.43"
web-sys = { version = "0.3.70", features = ["console", "Window", "UrlSearchParams"] }
web-time = "1.1.0"
16 changes: 16 additions & 0 deletions web/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Avail Light Client (Web)

## Compile

`wasm-pack build --target web --dev`

## Run

`cp www/index.html pkg/`
`cd pkg`
`python3 -m http.server --directory .`

# Start LC

- Safari: http://localhost:8000/?network=hex&bootstrap=%2Fip4%2F209.38.38.158%2Fudp%2F39001%2Fwebrtc-direct%2Fcerthash%2FuEiCVz-CTCrMq4I2xwW_WznQPML3dos4GNWiXE_fJjvHiIg
- Firefox: 0.0.0.0:8000/?network=hex&bootstrap=%2Fip4%2F209.38.38.158%2Fudp%2F39001%2Fwebrtc-direct%2Fcerthash%2FuEiCVz-CTCrMq4I2xwW_WznQPML3dos4GNWiXE_fJjvHiIg
Loading

0 comments on commit 7e71e4f

Please sign in to comment.