@@ -13,7 +13,9 @@ use babylon_bindings::BabylonMsg;
13
13
14
14
use babylon_apis:: finality_api:: { Evidence , PubRandCommit } ;
15
15
use babylon_merkle:: Proof ;
16
- use cosmwasm_std:: { to_json_binary, Deps , DepsMut , Env , Event , Response , WasmMsg } ;
16
+ use cosmwasm_std:: {
17
+ to_json_binary, Addr , Deps , DepsMut , Env , Event , MessageInfo , Response , WasmMsg ,
18
+ } ;
17
19
use k256:: ecdsa:: signature:: Verifier ;
18
20
use k256:: schnorr:: { Signature , VerifyingKey } ;
19
21
use k256:: sha2:: { Digest , Sha256 } ;
@@ -114,6 +116,7 @@ pub(crate) fn verify_commitment_signature(
114
116
pub fn handle_finality_signature (
115
117
deps : DepsMut ,
116
118
env : Env ,
119
+ info : MessageInfo ,
117
120
fp_btc_pk_hex : & str ,
118
121
height : u64 ,
119
122
pub_rand : & [ u8 ] ,
@@ -211,7 +214,7 @@ pub fn handle_finality_signature(
211
214
212
215
// slash this finality provider, including setting its voting power to
213
216
// zero, extracting its BTC SK, and emit an event
214
- let ( msg, ev) = slash_finality_provider ( & env, fp_btc_pk_hex, & evidence) ?;
217
+ let ( msg, ev) = slash_finality_provider ( & env, & info , fp_btc_pk_hex, & evidence) ?;
215
218
res = res. add_message ( msg) ;
216
219
res = res. add_event ( ev) ;
217
220
}
@@ -311,6 +314,7 @@ fn check_fp_exist(deps: Deps, fp_pubkey_hex: &str) -> Result<(), ContractError>
311
314
/// its voting power to zero, extracting its BTC SK, and emitting an event
312
315
fn slash_finality_provider (
313
316
env : & Env ,
317
+ info : & MessageInfo ,
314
318
fp_btc_pk_hex : & str ,
315
319
evidence : & Evidence ,
316
320
) -> Result < ( WasmMsg , Event ) , ContractError > {
@@ -328,6 +332,7 @@ fn slash_finality_provider(
328
332
// Emit slashing event.
329
333
// Raises slashing event to babylon over IBC.
330
334
let msg = ExecuteMsg :: Slashing {
335
+ sender : info. sender . clone ( ) ,
331
336
evidence : evidence. clone ( ) ,
332
337
} ;
333
338
let wasm_msg: WasmMsg = WasmMsg :: Execute {
@@ -357,12 +362,22 @@ fn slash_finality_provider(
357
362
Ok ( ( wasm_msg, ev) )
358
363
}
359
364
360
- pub ( crate ) fn handle_slashing ( evidence : & Evidence ) -> Result < Response < BabylonMsg > , ContractError > {
365
+ pub ( crate ) fn handle_slashing (
366
+ sender : & Addr ,
367
+ evidence : & Evidence ,
368
+ ) -> Result < Response < BabylonMsg > , ContractError > {
361
369
let mut res = Response :: new ( ) ;
362
370
// Send msg to Babylon
363
371
364
372
let msg = BabylonMsg :: EquivocationEvidence {
365
- evidence : Some ( evidence. clone ( ) ) ,
373
+ signer : sender. to_string ( ) ,
374
+ fp_btc_pk : evidence. fp_btc_pk . clone ( ) ,
375
+ block_height : evidence. block_height ,
376
+ pub_rand : evidence. pub_rand . clone ( ) ,
377
+ canonical_app_hash : evidence. canonical_app_hash . clone ( ) ,
378
+ fork_app_hash : evidence. fork_app_hash . clone ( ) ,
379
+ canonical_finality_sig : evidence. canonical_finality_sig . clone ( ) ,
380
+ fork_finality_sig : evidence. fork_finality_sig . clone ( ) ,
366
381
} ;
367
382
368
383
// Convert to CosmosMsg
@@ -376,8 +391,9 @@ pub(crate) fn handle_slashing(evidence: &Evidence) -> Result<Response<BabylonMsg
376
391
#[ cfg( test) ]
377
392
pub ( crate ) mod tests {
378
393
use super :: * ;
379
- use cosmwasm_std:: from_json;
380
394
use cosmwasm_std:: testing:: mock_env;
395
+ use cosmwasm_std:: Addr ;
396
+ use cosmwasm_std:: { from_json, testing:: message_info} ;
381
397
use std:: collections:: HashMap ;
382
398
383
399
use babylon_apis:: finality_api:: PubRandCommit ;
@@ -471,9 +487,9 @@ pub(crate) mod tests {
471
487
472
488
// Create mock environment
473
489
let env = mock_env ( ) ; // You'll need to add this mock helper
474
-
490
+ let info = message_info ( & Addr :: unchecked ( "test" ) , & [ ] ) ;
475
491
// Test slash_finality_provider
476
- let ( wasm_msg, event) = slash_finality_provider ( & env, & pk_hex, & evidence) . unwrap ( ) ;
492
+ let ( wasm_msg, event) = slash_finality_provider ( & env, & info , & pk_hex, & evidence) . unwrap ( ) ;
477
493
478
494
// Verify the WasmMsg is correctly constructed
479
495
match wasm_msg {
@@ -487,6 +503,7 @@ pub(crate) mod tests {
487
503
let msg_evidence = from_json :: < ExecuteMsg > ( & msg) . unwrap ( ) ;
488
504
match msg_evidence {
489
505
ExecuteMsg :: Slashing {
506
+ sender : _,
490
507
evidence : msg_evidence,
491
508
} => {
492
509
assert_eq ! ( evidence, msg_evidence) ;
0 commit comments