|
22 | 22 | - sepolia |
23 | 23 | - arbitrum_sepolia |
24 | 24 | default: sepolia |
| 25 | + dry_run: |
| 26 | + description: 'Dry run mode (only prepare and display transaction, do not propose to Safe)' |
| 27 | + required: false |
| 28 | + type: boolean |
| 29 | + default: false |
25 | 30 |
|
26 | 31 | jobs: |
27 | 32 | prepare-pause-operation: |
@@ -53,31 +58,56 @@ jobs: |
53 | 58 | BRIDGE_ADDRESS=$(jq -r ".${CHAIN}.iexecLayerZeroBridgeAddress" config/config.json) |
54 | 59 | echo "bridge-address=$BRIDGE_ADDRESS" >> $GITHUB_OUTPUT |
55 | 60 | |
56 | | - # Determine the function selector based on operation |
| 61 | + # Determine the function selector and name based on operation |
57 | 62 | case "${{ inputs.operation }}" in |
58 | 63 | "pause-bridge") |
59 | 64 | # pause() function selector |
60 | | - SELECTOR="0x8456cb59" |
| 65 | + TRANSACTION_DATA=$(cast calldata "pause()") |
| 66 | + FUNCTION_NAME="pause()" |
61 | 67 | ;; |
62 | 68 | "unpause-bridge") |
63 | 69 | # unpause() function selector |
64 | | - SELECTOR="0x3f4ba83a" |
| 70 | + TRANSACTION_DATA=$(cast calldata "unpause()") |
| 71 | + FUNCTION_NAME="unpause()" |
65 | 72 | ;; |
66 | 73 | "pause-outbound") |
67 | 74 | # pauseOutboundTransfers() function selector |
68 | | - SELECTOR="0x47e7ef24" |
| 75 | + TRANSACTION_DATA=$(cast calldata "pauseOutboundTransfers()") |
| 76 | + FUNCTION_NAME="pauseOutboundTransfers()" |
69 | 77 | ;; |
70 | 78 | "unpause-outbound") |
71 | 79 | # unpauseOutboundTransfers() function selector |
72 | | - SELECTOR="0x63ba0d00" |
| 80 | + TRANSACTION_DATA=$(cast calldata "unpauseOutboundTransfers()") |
| 81 | + FUNCTION_NAME="unpauseOutboundTransfers()" |
73 | 82 | ;; |
74 | 83 | esac |
75 | 84 | |
76 | | - echo "transaction-data=$SELECTOR" >> $GITHUB_OUTPUT |
| 85 | + echo "transaction-data=$TRANSACTION_DATA" >> $GITHUB_OUTPUT |
77 | 86 | echo "safe-address=${{ secrets.SAFE_ADDRESS }}" >> $GITHUB_OUTPUT |
| 87 | + |
| 88 | + # Display transaction details for dry-run or verification |
| 89 | + echo "==========================================" |
| 90 | + echo "Transaction Details" |
| 91 | + echo "==========================================" |
| 92 | + echo "Network: ${{ inputs.network }}" |
| 93 | + echo "Operation: ${{ inputs.operation }}" |
| 94 | + echo "Function: $FUNCTION_NAME" |
| 95 | + echo "Target Contract: $BRIDGE_ADDRESS" |
| 96 | + echo "Transaction Data: $TRANSACTION_DATA" |
| 97 | + echo "Transaction Value: 0" |
| 98 | + echo "Safe Address: ${{ secrets.SAFE_ADDRESS }}" |
| 99 | + echo "Dry Run: ${{ inputs.dry_run }}" |
| 100 | + echo "==========================================" |
| 101 | + |
| 102 | + if [ "${{ inputs.dry_run }}" == "true" ]; then |
| 103 | + echo "✅ DRY RUN MODE: Transaction prepared successfully" |
| 104 | + echo "ℹ️ This transaction would be proposed to Safe multisig" |
| 105 | + echo "ℹ️ Re-run with dry_run=false to actually propose to Safe" |
| 106 | + fi |
78 | 107 |
|
79 | 108 | propose-to-safe: |
80 | 109 | needs: prepare-pause-operation |
| 110 | + if: ${{ inputs.dry_run == false }} |
81 | 111 | uses: iExecBlockchainComputing/github-actions-workflows/.github/workflows/propose-safe-multisig-tx.yml@main |
82 | 112 | secrets: |
83 | 113 | safe-proposer-private-key: ${{ secrets.SAFE_PROPOSER_PRIVATE_KEY }} |
|
0 commit comments