Skip to content

Commit

Permalink
refactor: use PDAs to limit source sender + chain together
Browse files Browse the repository at this point in the history
  • Loading branch information
aalu1418 committed Jan 31, 2025
1 parent 2847314 commit bf87960
Show file tree
Hide file tree
Showing 19 changed files with 1,109 additions and 964 deletions.
385 changes: 156 additions & 229 deletions chains/solana/contracts/programs/example-ccip-receiver/src/lib.rs

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,6 @@ pub struct SetData<'info> {
// router CPI signer must be first
#[account(
constraint = counter.state.is_router(authority.key()) @ CcipReceiverError::OnlyRouter,
constraint = counter.state.is_valid_chain(message.source_chain_selector) @CcipReceiverError::InvalidChain,
)]
pub authority: Signer<'info>,
// ccip router expects "receiver" to be second
Expand Down
167 changes: 87 additions & 80 deletions chains/solana/contracts/target/idl/example_ccip_receiver.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@
"isMut": true,
"isSigner": false
},
{
"name": "tokenAdmin",
"isMut": true,
"isSigner": false
},
{
"name": "authority",
"isMut": true,
Expand Down Expand Up @@ -50,6 +55,11 @@
"isMut": false,
"isSigner": true
},
{
"name": "approvedSender",
"isMut": false,
"isSigner": false
},
{
"name": "state",
"isMut": false,
Expand All @@ -66,7 +76,7 @@
]
},
{
"name": "enableList",
"name": "updateRouter",
"accounts": [
{
"name": "state",
Expand All @@ -81,25 +91,24 @@
],
"args": [
{
"name": "listType",
"type": {
"defined": "ListType"
}
},
{
"name": "enable",
"type": "bool"
"name": "newRouter",
"type": "publicKey"
}
]
},
{
"name": "addChainTo",
"name": "approveSender",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "approvedSender",
"isMut": true,
"isSigner": false
},
{
"name": "authority",
"isMut": true,
Expand All @@ -112,47 +121,53 @@
}
],
"args": [
{
"name": "listType",
"type": {
"defined": "ListType"
}
},
{
"name": "chainSelector",
"type": "u64"
},
{
"name": "remoteAddress",
"type": "bytes"
}
]
},
{
"name": "removeChainFrom",
"name": "unapproveSender",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "approvedSender",
"isMut": true,
"isSigner": false
},
{
"name": "authority",
"isMut": false,
"isMut": true,
"isSigner": true
},
{
"name": "systemProgram",
"isMut": false,
"isSigner": false
}
],
"args": [
{
"name": "listType",
"type": {
"defined": "ListType"
}
},
{
"name": "chainSelector",
"type": "u64"
},
{
"name": "remoteAddress",
"type": "bytes"
}
]
},
{
"name": "updateRouter",
"name": "transferOwnership",
"accounts": [
{
"name": "state",
Expand All @@ -167,13 +182,13 @@
],
"args": [
{
"name": "newRouter",
"name": "proposedOwner",
"type": "publicKey"
}
]
},
{
"name": "transferOwnership",
"name": "acceptOwnership",
"accounts": [
{
"name": "state",
Expand All @@ -186,28 +201,57 @@
"isSigner": true
}
],
"args": [
{
"name": "proposedOwner",
"type": "publicKey"
}
]
"args": []
},
{
"name": "acceptOwnership",
"name": "withdrawTokens",
"accounts": [
{
"name": "state",
"isMut": true,
"isSigner": false
},
{
"name": "programTokenAccount",
"isMut": true,
"isSigner": false
},
{
"name": "toTokenAccount",
"isMut": true,
"isSigner": false
},
{
"name": "mint",
"isMut": false,
"isSigner": false
},
{
"name": "tokenProgram",
"isMut": false,
"isSigner": false
},
{
"name": "tokenAdmin",
"isMut": false,
"isSigner": false
},
{
"name": "authority",
"isMut": false,
"isSigner": true
}
],
"args": []
"args": [
{
"name": "amount",
"type": "u64"
},
{
"name": "decimals",
"type": "u8"
}
]
}
],
"accounts": [
Expand All @@ -227,42 +271,19 @@
{
"name": "router",
"type": "publicKey"
},
{
"name": "allow",
"type": {
"defined": "ChainList"
}
},
{
"name": "deny",
"type": {
"defined": "ChainList"
}
}
]
}
}
],
"types": [
},
{
"name": "ChainList",
"name": "ApprovedSender",
"type": {
"kind": "struct",
"fields": [
{
"name": "isEnabled",
"type": "bool"
},
{
"name": "chains",
"type": {
"vec": "u64"
}
}
]
"fields": []
}
},
}
],
"types": [
{
"name": "Any2SVMMessage",
"type": {
Expand Down Expand Up @@ -315,20 +336,6 @@
}
]
}
},
{
"name": "ListType",
"type": {
"kind": "enum",
"variants": [
{
"name": "Allow"
},
{
"name": "Deny"
}
]
}
}
],
"events": [
Expand Down Expand Up @@ -361,8 +368,8 @@
},
{
"code": 6002,
"name": "InvalidChain",
"msg": "Invalid chain"
"name": "InvalidChainAndSender",
"msg": "Invalid combination of chain and sender"
},
{
"code": 6003,
Expand Down
Loading

0 comments on commit bf87960

Please sign in to comment.