Skip to content

Commit

Permalink
evil: fix tx_unjail_validator from cubic slashing
Browse files Browse the repository at this point in the history
  • Loading branch information
brentstone committed May 27, 2023
1 parent 5dae524 commit 65c5a33
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 19 deletions.
35 changes: 20 additions & 15 deletions shared/src/ledger/tx.rs
Original file line number Diff line number Diff line change
Expand Up @@ -687,29 +687,34 @@ pub async fn submit_unjail_validator<
wallet: &mut Wallet<U>,
args: args::TxUnjailValidator,
) -> Result<(), Error> {
let args::TxUnjailValidator {
tx: tx_args,
validator,
tx_code_path,
} = args;
if !rpc::is_validator(client, &validator).await {
eprintln!("The given address {validator} is not a validator.");
if !tx_args.force {
return Err(Error::InvalidValidatorAddress(validator));
if !rpc::is_validator(client, &args.validator).await {
eprintln!("The given address {} is not a validator.", &args.validator);
if !args.tx.force {
return Err(Error::InvalidValidatorAddress(args.validator.clone()));
}
}

let data = validator
let tx_code_path = String::from_utf8(args.tx_code_path).unwrap();
let tx_code_hash =
query_wasm_code_hash(client, tx_code_path).await.unwrap();

let data = args
.validator
.clone()
.try_to_vec()
.expect("Encoding tx data shouldn't fail");
.map_err(Error::EncodeTxFailure)?;

let mut tx = Tx::new(TxType::Raw);
tx.header.chain_id = args.tx.chain_id.clone().unwrap();
tx.header.expiration = args.tx.expiration;
tx.set_data(Data::new(data));
tx.set_code(Code::from_hash(tx_code_hash));

let chain_id = tx_args.chain_id.clone().unwrap();
let tx = Tx::new(tx_code_path, Some(data), chain_id, tx_args.expiration);
let default_signer = validator;
let default_signer = args.validator;
process_tx(
client,
wallet,
&tx_args,
&args.tx,
tx,
TxSigningKey::WalletAddress(default_signer),
#[cfg(not(feature = "mainnet"))]
Expand Down
7 changes: 3 additions & 4 deletions wasm/wasm_source/src/tx_unjail_validator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
use namada_tx_prelude::*;

#[transaction]
fn apply_tx(ctx: &mut Ctx, tx_data: Vec<u8>) -> TxResult {
let signed = SignedTxData::try_from_slice(&tx_data[..])
.wrap_err("failed to decode SignedTxData")?;
let data = signed.data.ok_or_err_msg("Missing data")?;
fn apply_tx(ctx: &mut Ctx, tx_data: Tx) -> TxResult {
let signed = tx_data;
let data = signed.data().ok_or_err_msg("Missing data")?;
let validator = Address::try_from_slice(&data[..])
.wrap_err("failed to decode an Address")?;
ctx.unjail_validator(&validator)
Expand Down

0 comments on commit 65c5a33

Please sign in to comment.