Skip to content

Commit 4a333bf

Browse files
authored
Track the admin chain by default. (#4641)
## Motivation It's useful to see the admin chain in the wallet, even for non-admin users. ## Proposal Add the admin chain on `wallet init`. Do not make chains the default unless we own them. ## Test Plan CI I also ran the README tests locally. ## Release Plan - These changes _could_ be backported to the latest `testnet` branch, then - be released in a new SDK. ## Links - [reviewer checklist](https://github.com/linera-io/linera-protocol/blob/main/CONTRIBUTING.md#reviewer-checklist)
1 parent 9cf68a0 commit 4a333bf

File tree

4 files changed

+12
-10
lines changed

4 files changed

+12
-10
lines changed

linera-client/src/wallet.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ impl Wallet {
4545
}
4646

4747
pub fn insert(&mut self, chain: UserChain) {
48-
if self.default.is_none() {
48+
if self.default.is_none() && chain.owner.is_some() {
4949
self.default = Some(chain.chain_id);
5050
}
5151

linera-service/src/cli/main.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1595,13 +1595,15 @@ impl Runnable for Job {
15951595
let Some(network_description) = storage.read_network_description().await? else {
15961596
anyhow::bail!("Missing network description");
15971597
};
1598-
let context = options.create_client_context(storage, wallet, signer.into_value());
1598+
let mut context =
1599+
options.create_client_context(storage, wallet, signer.into_value());
15991600
let faucet = cli_wrappers::Faucet::new(faucet_url);
16001601
let committee = faucet.current_committee().await?;
16011602
let chain_client = context.make_chain_client(network_description.admin_chain_id);
16021603
chain_client
16031604
.synchronize_chain_state_from_committee(committee)
16041605
.await?;
1606+
context.update_wallet_from_client(&chain_client).await?;
16051607
}
16061608

16071609
Wallet(WalletCommand::FollowChain { chain_id, sync }) => {

linera-service/tests/linera_net_tests.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2030,7 +2030,7 @@ async fn test_wasm_end_to_end_allowances_fungible(config: impl LineraNetConfig)
20302030
let client3 = net.make_client().await;
20312031
client3.wallet_init(None).await?;
20322032

2033-
let chain1 = *client1.load_wallet()?.chain_ids().first().unwrap();
2033+
let chain1 = *client1.load_wallet()?.owned_chain_ids().first().unwrap();
20342034

20352035
// Generate keys for all clients.
20362036
let owner1 = client1.keygen().await?;
@@ -2356,7 +2356,7 @@ async fn test_wasm_end_to_end_same_wallet_fungible(
23562356
// Get a chain different than the default
23572357
let chain2 = client1
23582358
.load_wallet()?
2359-
.chain_ids()
2359+
.owned_chain_ids()
23602360
.into_iter()
23612361
.find(|chain_id| chain_id != &chain1)
23622362
.expect("Failed to obtain a chain ID from the wallet");
@@ -3912,7 +3912,7 @@ async fn test_end_to_end_multiple_wallets(config: impl LineraNetConfig) -> Resul
39123912
client2.wallet_init(None).await?;
39133913

39143914
// Get some chain owned by Client 1.
3915-
let chain1 = *client1.load_wallet()?.chain_ids().first().unwrap();
3915+
let chain1 = *client1.load_wallet()?.owned_chain_ids().first().unwrap();
39163916

39173917
// Generate a key for Client 2.
39183918
let owner2 = client2.keygen().await?;
@@ -3957,7 +3957,7 @@ async fn test_end_to_end_open_multi_owner_chain(config: impl LineraNetConfig) ->
39573957
let client2 = net.make_client().await;
39583958
client2.wallet_init(None).await?;
39593959

3960-
let chain1 = *client1.load_wallet()?.chain_ids().first().unwrap();
3960+
let chain1 = *client1.load_wallet()?.owned_chain_ids().first().unwrap();
39613961

39623962
// Generate keys for both clients.
39633963
let owner1 = client1.keygen().await?;
@@ -4071,7 +4071,7 @@ async fn test_end_to_end_assign_greatgrandchild_chain(config: impl LineraNetConf
40714071
let client3 = net.make_client().await;
40724072
client3.wallet_init(None).await?;
40734073

4074-
let chain1 = *client1.load_wallet()?.chain_ids().first().unwrap();
4074+
let chain1 = *client1.load_wallet()?.owned_chain_ids().first().unwrap();
40754075

40764076
// Generate keys for client 2.
40774077
let owner2 = client2.keygen().await?;
@@ -4461,7 +4461,7 @@ async fn test_end_to_end_listen_for_new_rounds(config: impl LineraNetConfig) ->
44614461
let (mut net, client1) = config.instantiate().await?;
44624462
let client2 = net.make_client().await;
44634463
client2.wallet_init(None).await?;
4464-
let chain1 = *client1.load_wallet()?.chain_ids().first().unwrap();
4464+
let chain1 = *client1.load_wallet()?.owned_chain_ids().first().unwrap();
44654465

44664466
// Open a chain owned by both clients, with only single-leader rounds.
44674467
let owner1 = client1.keygen().await?;

linera-service/tests/local_net_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ async fn test_end_to_end_retry_notification_stream(config: LocalNetConfig) -> Re
509509

510510
let (chain, chain1) = {
511511
let wallet = client1.load_wallet()?;
512-
let chains = wallet.chain_ids();
512+
let chains = wallet.owned_chain_ids();
513513
(chains[0], chains[1])
514514
};
515515

@@ -576,7 +576,7 @@ async fn test_end_to_end_retry_pending_block(config: LocalNetConfig) -> Result<(
576576
let (mut net, client) = config.instantiate().await?;
577577
let (chain_id, chain1) = {
578578
let wallet = client.load_wallet()?;
579-
let chains = wallet.chain_ids();
579+
let chains = wallet.owned_chain_ids();
580580
(chains[0], chains[1])
581581
};
582582
let account = Account::chain(chain_id);

0 commit comments

Comments
 (0)