Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
d31188a
works
pauldelucia Aug 19, 2025
16f3356
works
pauldelucia Aug 19, 2025
623b25f
fix
pauldelucia Aug 19, 2025
d01ea0f
ok
pauldelucia Aug 21, 2025
fb014f0
ok
pauldelucia Sep 1, 2025
b25c8b5
ok
pauldelucia Sep 9, 2025
d8664b2
ok
pauldelucia Sep 10, 2025
4f8c408
ok
pauldelucia Sep 11, 2025
ab8cc40
fix verification message showing in generation screen
pauldelucia Sep 11, 2025
a2c3e06
remove advanced settings. set default 16 grinding bits and 128 bit se…
pauldelucia Sep 11, 2025
4d827bb
ok
pauldelucia Oct 6, 2025
4922bc3
lock
pauldelucia Oct 9, 2025
ce000ee
ok
pauldelucia Oct 15, 2025
f4c09ae
clippy
pauldelucia Oct 15, 2025
9cf718b
fmt
pauldelucia Oct 15, 2025
789674c
clippy and fmt
pauldelucia Oct 15, 2025
af95249
pin grovestark dep
pauldelucia Oct 15, 2025
4387cf1
Merge branch 'v1.0-dev' into feat/grovestark
pauldelucia Oct 15, 2025
16e08a3
fix
pauldelucia Oct 15, 2025
0760c25
ok
pauldelucia Oct 16, 2025
95bb5b9
clippy
pauldelucia Oct 16, 2025
8fd8545
rename file
pauldelucia Oct 16, 2025
37c7744
Merge branch 'v1.0-dev' into feat/grovestark
pauldelucia Oct 22, 2025
118cd00
remove ProofData
pauldelucia Oct 22, 2025
d8b1d3e
cleanup
pauldelucia Oct 23, 2025
d40d2f2
fix
pauldelucia Oct 23, 2025
c4f7b09
rename GroveStark to GroveSTARK
pauldelucia Oct 23, 2025
07dcd46
rename zk_proofs_screen to grovestark_screen
pauldelucia Oct 23, 2025
d9fdb5c
rename ZKProofs tool subscreen to GroveSTARK
pauldelucia Oct 23, 2025
9a930d8
move grovestark prover to model
pauldelucia Oct 23, 2025
921ee98
rename ContractsDashpayComingSoon to ContractsDashpay
pauldelucia Oct 23, 2025
0605078
rename ContractsDashpay to Dashpay
pauldelucia Oct 23, 2025
bad6a3b
rename dashpay stuff
pauldelucia Oct 23, 2025
c0ab63f
fixes
pauldelucia Oct 23, 2025
5c33f53
ok
pauldelucia Oct 23, 2025
d0c4eea
update grovestark rev
pauldelucia Oct 24, 2025
f713d44
update
pauldelucia Oct 24, 2025
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
3,397 changes: 2,390 additions & 1,007 deletions Cargo.lock

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ qrcode = "0.14.1"
nix = { version = "0.30.1", features = ["signal"] }
eframe = { version = "0.32.0", features = ["persistence"] }
base64 = "0.22.1"
dash-sdk = { git = "https://github.com/dashpay/platform", features = ["core_key_wallet", "core_bincode", "core_quorum-validation", "core_verification", "core_rpc_client"], rev = "d6f9d9e74b885fbac27948bce6bae60b0cbd7135" }
dash-sdk = { git = "https://www.github.com/dashpay/platform", rev = "68f77c085643edb9a46afd4ff51c9d20b4ce2912", features = ["core_key_wallet", "core_bincode", "core_quorum-validation", "core_verification", "core_rpc_client"] }
grovestark = { path = "../grovestark" }
rayon = "1.8"
thiserror = "2.0.12"
serde = "1.0.219"
serde_json = "1.0.140"
Expand All @@ -37,6 +39,7 @@ envy = "0.4.2"
chrono = "0.4.41"
chrono-humanize = "0.2.3"
sha2 = "0.10.9"
ed25519-dalek = "2.1"
arboard = { version = "3.6.0", default-features = false, features = [
"windows-sys",
] }
Expand Down Expand Up @@ -68,9 +71,11 @@ native-dialog = "0.9.0"
raw-cpuid = "11.5.0"

[dev-dependencies]

tempfile = { version = "3.20.0" }
egui_kittest = { version = "0.32.0", features = ["eframe"] }

[lints.clippy]
uninlined_format_args = "allow"

[patch.crates-io]
elliptic-curve-tools = { git = "https://github.com/mikelodder7/elliptic-curve-tools", rev = "c989865fa71503d2cbf5c5795c4ebcf4a2f3221c" }
21 changes: 15 additions & 6 deletions src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use crate::database::Database;
use crate::logging::initialize_logger;
use crate::model::settings::Settings;
use crate::ui::contracts_documents::contracts_documents_screen::DocumentQueryScreen;
use crate::ui::contracts_documents::dashpay_coming_soon_screen::DashPayComingSoonScreen;
use crate::ui::contracts_documents::dashpay_coming_soon_screen::DashpayScreen;
use crate::ui::dpns::dpns_contested_names_screen::{
DPNSScreen, DPNSSubscreen, ScheduledVoteCastingStatus,
};
Expand All @@ -21,6 +21,7 @@ use crate::ui::theme::ThemeMode;
use crate::ui::tokens::tokens_screen::{TokensScreen, TokensSubscreen};
use crate::ui::tools::contract_visualizer_screen::ContractVisualizerScreen;
use crate::ui::tools::document_visualizer_screen::DocumentVisualizerScreen;
use crate::ui::tools::grovestark_screen::GroveSTARKScreen;
use crate::ui::tools::masternode_list_diff_screen::MasternodeListDiffScreen;
use crate::ui::tools::platform_info_screen::PlatformInfoScreen;
use crate::ui::tools::proof_log_screen::ProofLogScreen;
Expand Down Expand Up @@ -220,14 +221,15 @@ impl AppState {
let mut contract_visualizer_screen = ContractVisualizerScreen::new(&mainnet_app_context);
let mut proof_log_screen = ProofLogScreen::new(&mainnet_app_context);
let mut platform_info_screen = PlatformInfoScreen::new(&mainnet_app_context);
let mut grovestark_screen = GroveSTARKScreen::new(&mainnet_app_context);
let mut document_query_screen = DocumentQueryScreen::new(&mainnet_app_context);
let mut tokens_balances_screen =
TokensScreen::new(&mainnet_app_context, TokensSubscreen::MyTokens);
let mut token_search_screen =
TokensScreen::new(&mainnet_app_context, TokensSubscreen::SearchTokens);
let mut token_creator_screen =
TokensScreen::new(&mainnet_app_context, TokensSubscreen::TokenCreator);
let mut contracts_dashpay_screen = DashPayComingSoonScreen::new(&mainnet_app_context);
let mut contracts_dashpay_screen = DashpayScreen::new(&mainnet_app_context);

let mut network_chooser_screen = NetworkChooserScreen::new(
&mainnet_app_context,
Expand Down Expand Up @@ -261,11 +263,12 @@ impl AppState {
document_visualizer_screen = DocumentVisualizerScreen::new(testnet_app_context);
contract_visualizer_screen = ContractVisualizerScreen::new(testnet_app_context);
document_query_screen = DocumentQueryScreen::new(testnet_app_context);
grovestark_screen = GroveSTARKScreen::new(testnet_app_context);
wallets_balances_screen = WalletsBalancesScreen::new(testnet_app_context);
proof_log_screen = ProofLogScreen::new(testnet_app_context);
platform_info_screen = PlatformInfoScreen::new(testnet_app_context);
masternode_list_diff_screen = MasternodeListDiffScreen::new(testnet_app_context);
contracts_dashpay_screen = DashPayComingSoonScreen::new(testnet_app_context);
contracts_dashpay_screen = DashpayScreen::new(testnet_app_context);
tokens_balances_screen =
TokensScreen::new(testnet_app_context, TokensSubscreen::MyTokens);
token_search_screen =
Expand All @@ -288,6 +291,7 @@ impl AppState {
document_query_screen = DocumentQueryScreen::new(devnet_app_context);
masternode_list_diff_screen = MasternodeListDiffScreen::new(devnet_app_context);
contract_visualizer_screen = ContractVisualizerScreen::new(devnet_app_context);
grovestark_screen = GroveSTARKScreen::new(devnet_app_context);
wallets_balances_screen = WalletsBalancesScreen::new(devnet_app_context);
proof_log_screen = ProofLogScreen::new(devnet_app_context);
platform_info_screen = PlatformInfoScreen::new(devnet_app_context);
Expand All @@ -311,11 +315,12 @@ impl AppState {
document_visualizer_screen = DocumentVisualizerScreen::new(local_app_context);
contract_visualizer_screen = ContractVisualizerScreen::new(local_app_context);
document_query_screen = DocumentQueryScreen::new(local_app_context);
grovestark_screen = GroveSTARKScreen::new(local_app_context);
wallets_balances_screen = WalletsBalancesScreen::new(local_app_context);
masternode_list_diff_screen = MasternodeListDiffScreen::new(local_app_context);
proof_log_screen = ProofLogScreen::new(local_app_context);
platform_info_screen = PlatformInfoScreen::new(local_app_context);
contracts_dashpay_screen = DashPayComingSoonScreen::new(local_app_context);
contracts_dashpay_screen = DashpayScreen::new(local_app_context);
tokens_balances_screen =
TokensScreen::new(local_app_context, TokensSubscreen::MyTokens);
token_search_screen =
Expand Down Expand Up @@ -445,13 +450,17 @@ impl AppState {
RootScreenType::RootScreenToolsPlatformInfoScreen,
Screen::PlatformInfoScreen(platform_info_screen),
),
(
RootScreenType::RootScreenToolsGroveSTARKScreen,
Screen::GroveSTARKScreen(grovestark_screen),
),
(
RootScreenType::RootScreenDocumentQuery,
Screen::DocumentQueryScreen(document_query_screen),
),
(
RootScreenType::RootScreenContractsDashPay,
Screen::DashPayComingSoonScreen(contracts_dashpay_screen),
RootScreenType::RootScreenDashpay,
Screen::DashpayScreen(contracts_dashpay_screen),
),
(
RootScreenType::RootScreenNetworkChooser,
Expand Down
65 changes: 65 additions & 0 deletions src/backend_task/grovestark.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
use crate::backend_task::BackendTaskSuccessResult;
use crate::model::grovestark_prover::{GroveSTARKProver, ProofDataOutput};
use dash_sdk::Sdk;

pub async fn run_grovestark_task(
task: GroveSTARKTask,
sdk: &Sdk,
) -> Result<BackendTaskSuccessResult, String> {
match task {
GroveSTARKTask::GenerateProof {
identity_id,
contract_id,
document_type,
document_id,
key_id,
private_key,
public_key,
} => {
let prover = GroveSTARKProver::new();

match prover
.generate_proof(
sdk,
&identity_id,
&contract_id,
&document_type,
&document_id,
key_id,
&private_key,
&public_key,
)
.await
{
Ok(proof_data) => Ok(BackendTaskSuccessResult::GeneratedZKProof(proof_data)),
Err(e) => Err(format!("Failed to generate proof: {}", e)),
}
}
GroveSTARKTask::VerifyProof { proof_data } => {
let prover = GroveSTARKProver::new();

match prover.verify_proof(&proof_data) {
Ok(is_valid) => Ok(BackendTaskSuccessResult::VerifiedZKProof(
is_valid, proof_data,
)),
Err(e) => Err(format!("Failed to verify proof: {}", e)),
}
}
}
}

#[derive(Debug, Clone, PartialEq)]
pub enum GroveSTARKTask {
GenerateProof {
identity_id: String,
contract_id: String,
document_type: String,
document_id: String,
key_id: u32,
private_key: [u8; 32],
public_key: [u8; 32],
},
VerifyProof {
proof_data: ProofDataOutput,
},
}
30 changes: 19 additions & 11 deletions src/backend_task/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,23 @@ use crate::backend_task::identity::IdentityTask;
use crate::backend_task::platform_info::{PlatformInfoTaskRequestType, PlatformInfoTaskResult};
use crate::backend_task::system_task::SystemTask;
use crate::context::AppContext;
use dash_sdk::dpp::dashcore::bls_sig_utils::BLSSignature;
use dash_sdk::dpp::dashcore::network::message_qrinfo::QRInfo;
use dash_sdk::dpp::dashcore::BlockHash;
use crate::model::qualified_identity::QualifiedIdentity;
use crate::model::grovestark_prover::ProofDataOutput;
use crate::ui::tokens::tokens_screen::{
ContractDescriptionInfo, IdentityTokenIdentifier, TokenInfo,
};
use crate::utils::egui_mpsc::SenderAsync;
use contested_names::ScheduledDPNSVote;
use dash_sdk::dpp::balances::credits::TokenAmount;
use dash_sdk::dpp::dashcore::network::message_sml::MnListDiff;
use dash_sdk::dpp::data_contract::associated_token::token_perpetual_distribution::distribution_function::evaluate_interval::IntervalEvaluationExplanation;
use dash_sdk::dpp::group::group_action::GroupAction;
use dash_sdk::dpp::prelude::DataContract;
use dash_sdk::dpp::state_transition::StateTransition;
use dash_sdk::dpp::tokens::token_pricing_schedule::TokenPricingSchedule;
use dash_sdk::dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice;
use dash_sdk::dpp::voting::votes::Vote;
use dash_sdk::platform::proto::get_documents_request::get_documents_request_v0::Start;
Expand All @@ -27,12 +33,14 @@ use futures::future::join_all;
use std::collections::BTreeMap;
use std::sync::Arc;
use tokens::TokenTask;
use grovestark::GroveSTARKTask;

pub mod broadcast_state_transition;
pub mod contested_names;
pub mod contract;
pub mod core;
pub mod document;
pub mod grovestark;
pub mod identity;
pub mod mnlist;
pub mod platform_info;
Expand All @@ -56,6 +64,7 @@ pub enum BackendTask {
SystemTask(SystemTask),
MnListTask(mnlist::MnListTask),
PlatformInfo(PlatformInfoTaskRequestType),
GroveSTARKTask(GroveSTARKTask),
None,
}

Expand Down Expand Up @@ -97,30 +106,26 @@ pub enum BackendTaskSuccessResult {
ActiveGroupActions(IndexMap<Identifier, GroupAction>),
TokenPricing {
token_id: Identifier,
prices: Option<dash_sdk::dpp::tokens::token_pricing_schedule::TokenPricingSchedule>,
prices: Option<TokenPricingSchedule>,
},
UpdatedThemePreference(crate::ui::theme::ThemeMode),
PlatformInfo(PlatformInfoTaskResult),
GeneratedZKProof(ProofDataOutput),
VerifiedZKProof(bool, ProofDataOutput),
// MNList-specific results
MnListFetchedDiff {
base_height: u32,
height: u32,
diff: dash_sdk::dpp::dashcore::network::message_sml::MnListDiff,
diff: MnListDiff,
},
MnListFetchedQrInfo {
qr_info: dash_sdk::dpp::dashcore::network::message_qrinfo::QRInfo,
qr_info: QRInfo,
},
MnListChainLockSigs {
entries: Vec<(
(u32, dash_sdk::dpp::dashcore::BlockHash),
Option<dash_sdk::dpp::dashcore::bls_sig_utils::BLSSignature>,
)>,
entries: Vec<((u32, BlockHash), Option<BLSSignature>)>,
},
MnListFetchedDiffs {
items: Vec<(
(u32, u32),
dash_sdk::dpp::dashcore::network::message_sml::MnListDiff,
)>,
items: Vec<((u32, u32), MnListDiff)>,
},
}

Expand Down Expand Up @@ -200,6 +205,9 @@ impl AppContext {
BackendTask::PlatformInfo(platform_info_task) => {
self.run_platform_info_task(platform_info_task).await
}
BackendTask::GroveSTARKTask(grovestark_task) => {
grovestark::run_grovestark_task(grovestark_task, &sdk).await
}
BackendTask::None => Ok(BackendTaskSuccessResult::None),
}
}
Expand Down
6 changes: 4 additions & 2 deletions src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,9 @@ impl AppContext {
.map(|w| (w.seed_hash(), Arc::new(RwLock::new(w))))
.collect();

let animate = match config.developer_mode.unwrap_or(false) {
let developer_mode_enabled = config.developer_mode.unwrap_or(false);

let animate = match developer_mode_enabled {
true => {
tracing::debug!("developer_mode is enabled, disabling animations");
AtomicBool::new(false)
Expand All @@ -166,7 +168,7 @@ impl AppContext {

let app_context = AppContext {
network,
developer_mode: AtomicBool::new(config.developer_mode.unwrap_or(false)),
developer_mode: AtomicBool::new(developer_mode_enabled),
devnet_name: None,
db,
sdk: sdk.into(),
Expand Down
Loading
Loading