File tree 4 files changed +10
-7
lines changed
programs/example-native-token-transfers
4 files changed +10
-7
lines changed Original file line number Diff line number Diff line change @@ -56,8 +56,9 @@ pub struct Redeem<'info> {
56
56
space = 8 + InboxItem :: INIT_SPACE ,
57
57
seeds = [
58
58
InboxItem :: SEED_PREFIX ,
59
- endpoint_message. from_chain. id. to_be_bytes( ) . as_ref( ) ,
60
- endpoint_message. message. manager_payload. keccak256( ) . as_ref( ) ,
59
+ endpoint_message. message. manager_payload. keccak256(
60
+ endpoint_message. from_chain
61
+ ) . as_ref( ) ,
61
62
] ,
62
63
bump,
63
64
) ]
Original file line number Diff line number Diff line change @@ -17,9 +17,11 @@ pub struct ManagerMessage<A: Space> {
17
17
}
18
18
19
19
impl < A : Space + AnchorSerialize + fmt:: Debug + TypePrefixedPayload > ManagerMessage < A > {
20
- pub fn keccak256 ( & self ) -> Hash {
21
- let payload = TypePrefixedPayload :: to_vec_payload ( self ) ;
22
- solana_program:: keccak:: hash ( & payload)
20
+ pub fn keccak256 ( & self , chain_id : ChainId ) -> Hash {
21
+ let mut bytes: Vec < u8 > = Vec :: new ( ) ;
22
+ bytes. extend_from_slice ( & chain_id. id . to_be_bytes ( ) ) ;
23
+ bytes. extend_from_slice ( & TypePrefixedPayload :: to_vec_payload ( self ) ) ;
24
+ solana_program:: keccak:: hash ( & bytes)
23
25
}
24
26
}
25
27
Original file line number Diff line number Diff line change @@ -101,12 +101,12 @@ impl NTT {
101
101
manager_message : ManagerMessage < NativeTokenTransfer > ,
102
102
) -> Pubkey {
103
103
let mut hasher = Keccak256 :: new ( ) ;
104
+ hasher. update ( & chain. to_be_bytes ( ) ) ;
104
105
hasher. update ( & TypePrefixedPayload :: to_vec_payload ( & manager_message) ) ;
105
106
106
107
let ( inbox_item, _) = Pubkey :: find_program_address (
107
108
& [
108
109
InboxItem :: SEED_PREFIX ,
109
- & chain. to_be_bytes ( ) ,
110
110
& hasher. finalize ( ) ,
111
111
] ,
112
112
& self . program ,
Original file line number Diff line number Diff line change @@ -94,12 +94,12 @@ export class NTT {
94
94
const chainId = coalesceChainId ( chain )
95
95
const serialized = ManagerMessage . serialize ( managerMessage , NativeTokenTransfer . serialize )
96
96
const hasher = new Keccak ( 256 )
97
+ hasher . update ( new BN ( chainId ) . toBuffer ( 'be' , 2 ) )
97
98
hasher . update ( serialized )
98
99
const hash = hasher . digest ( 'hex' )
99
100
return this . derive_pda (
100
101
[
101
102
Buffer . from ( 'inbox_item' ) ,
102
- new BN ( chainId ) . toBuffer ( 'be' , 2 ) ,
103
103
Buffer . from ( hash , 'hex' )
104
104
] )
105
105
}
You can’t perform that action at this time.
0 commit comments