Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
3c594c8
Add support for delegated address in forest-wallet
sudo-shashank Mar 9, 2026
4a662d3
Add wallet test
sudo-shashank Mar 9, 2026
ca1d974
fix test
sudo-shashank Mar 10, 2026
414f300
fix getting eth addr
sudo-shashank Mar 10, 2026
1d717cd
fix balance check
sudo-shashank Mar 10, 2026
cace07c
fund delegate wallet for test
sudo-shashank Mar 10, 2026
04d7d15
update changelog
sudo-shashank Mar 10, 2026
6b652f2
increase delegate test wallet fund
sudo-shashank Mar 10, 2026
57cb5d4
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 10, 2026
65ea290
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 10, 2026
9d2ea9d
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 10, 2026
4591458
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 11, 2026
ed652e8
refactor and add test
sudo-shashank Mar 11, 2026
3c928c8
refactor resolve_method_num
sudo-shashank Mar 11, 2026
675da0a
lint fix
sudo-shashank Mar 11, 2026
4b7ac40
more lint fix
sudo-shashank Mar 11, 2026
cce81a9
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 11, 2026
73db886
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 11, 2026
a8a54a5
update changelog
sudo-shashank Mar 11, 2026
d299b36
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 11, 2026
4fa870a
refactor test
sudo-shashank Mar 11, 2026
51275e3
run wallet tests in parallel
sudo-shashank Mar 11, 2026
2508b46
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 11, 2026
90aa7b1
Increase delegated wallet test fund
sudo-shashank Mar 11, 2026
6ee251f
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 11, 2026
0d59a3d
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 12, 2026
5a38954
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 12, 2026
65dd517
send only required fund
sudo-shashank Mar 12, 2026
501461b
Merge branch 'main' into shashank/add-f4-support
sudo-shashank Mar 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ This is a non-mandatory release for all node operators. It enables F3 finality r

### Added

- [#6710](https://github.com/ChainSafe/forest/pull/6710): Added support for f4 addresses in forest-wallet.

### Changed

- [#6631](https://github.com/ChainSafe/forest/issues/6631): Backported F3 finality resolution to ETH v1 RPC methods.
Expand Down
109 changes: 109 additions & 0 deletions scripts/tests/calibnet_wallet_check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ sleep 5s
# Show balances
$FOREST_WALLET_PATH list

FOREST_URL="http://127.0.0.1:2345/rpc/v1"

echo "Creating a new address to send FIL to"
ADDR_TWO=$($FOREST_WALLET_PATH new)
echo "$ADDR_TWO"
Expand Down Expand Up @@ -154,6 +156,113 @@ while [[ $i != 20 && $ADDR_THREE_BALANCE == "$FIL_ZERO" ]]; do
ADDR_THREE_BALANCE=$($FOREST_WALLET_PATH --remote-wallet balance "$ADDR_THREE" --exact-balance)
done

ETH_ADDR_TWO=$(curl -s -X POST "$FOREST_URL" \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $ADMIN_TOKEN" \
--data "$(jq -n --arg addr "$ADDR_TWO" '{jsonrpc: "2.0", id: 1, method: "Filecoin.FilecoinAddressToEthAddress", params: [$addr, "pending"]}')" \
| jq -r '.result')
echo "ETH address: $ETH_ADDR_TWO"

ETH_ADDR_THREE=$(curl -s -X POST "$FOREST_URL" \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $ADMIN_TOKEN" \
--data "$(jq -n --arg addr "$ADDR_THREE" '{jsonrpc: "2.0", id: 1, method: "Filecoin.FilecoinAddressToEthAddress", params: [$addr, "pending"]}')" \
| jq -r '.result')
echo "ETH address: $ETH_ADDR_THREE"

MSG_ETH=$($FOREST_WALLET_PATH send "$ETH_ADDR_TWO" "$FIL_AMT")
: "$MSG_ETH"

MSG_ETH_REMOTE=$($FOREST_WALLET_PATH --remote-wallet send "$ETH_ADDR_THREE" "$FIL_AMT")
: "$MSG_ETH_REMOTE"

ETH_ADDR_TWO_BALANCE=$ADDR_TWO_BALANCE
i=0
while [[ $i != 20 && $ETH_ADDR_TWO_BALANCE == "$ADDR_TWO_BALANCE" ]]; do
i=$((i+1))

: "Checking balance $i/20"
sleep 30s
ETH_ADDR_TWO_BALANCE=$($FOREST_WALLET_PATH balance "$ADDR_TWO" --exact-balance)
done

ETH_ADDR_THREE_BALANCE=$ADDR_THREE_BALANCE
i=0
while [[ $i != 20 && $ETH_ADDR_THREE_BALANCE == "$ADDR_THREE_BALANCE" ]]; do
i=$((i+1))

: "Checking balance $i/20"
sleep 30s
ETH_ADDR_THREE_BALANCE=$($FOREST_WALLET_PATH --remote-wallet balance "$ADDR_THREE" --exact-balance)
done

: Begin delegated wallet tests

# The following steps do basic delegated wallet handling tests.

echo "Creating delegated wallet DELEGATE_ADDR_ONE"
DELEGATE_ADDR_ONE=$($FOREST_WALLET_PATH new delegated)
echo "$DELEGATE_ADDR_ONE"
$FOREST_WALLET_PATH export "$DELEGATE_ADDR_ONE" > delegated_wallet.key
$FOREST_WALLET_PATH --remote-wallet import delegated_wallet.key

# Fund delegated wallet from preloaded wallet
DELEGATE_FUND_AMT="2 micro FIL"
$FOREST_WALLET_PATH set-default "$ADDR_ONE"
MSG_DELEGATE_FUND=$($FOREST_WALLET_PATH send "$DELEGATE_ADDR_ONE" "$DELEGATE_FUND_AMT")
: "$MSG_DELEGATE_FUND"

DELEGATE_ADDR_ONE_BALANCE=$FIL_ZERO
i=0
while [[ $i != 20 && $DELEGATE_ADDR_ONE_BALANCE == "$FIL_ZERO" ]]; do
i=$((i+1))
: "Checking DELEGATE_ADDR_ONE balance $i/20"
sleep 30s
DELEGATE_ADDR_ONE_BALANCE=$($FOREST_WALLET_PATH balance "$DELEGATE_ADDR_ONE" --exact-balance)
done

echo "Creating delegated wallet DELEGATE_ADDR_TWO"
DELEGATE_ADDR_TWO=$($FOREST_WALLET_PATH new delegated)
echo "$DELEGATE_ADDR_TWO"
$FOREST_WALLET_PATH set-default "$DELEGATE_ADDR_ONE"

echo "Creating delegated (remote) wallet DELEGATE_ADDR_THREE"
DELEGATE_ADDR_THREE=$($FOREST_WALLET_PATH --remote-wallet new delegated)
echo "$DELEGATE_ADDR_THREE"
$FOREST_WALLET_PATH --remote-wallet set-default "$DELEGATE_ADDR_ONE"

$FOREST_WALLET_PATH list
$FOREST_WALLET_PATH --remote-wallet list

MSG_DELEGATE_TWO=$($FOREST_WALLET_PATH send "$DELEGATE_ADDR_TWO" "$FIL_AMT")
: "$MSG_DELEGATE_TWO"

MSG_DELEGATE_THREE=$($FOREST_WALLET_PATH send "$DELEGATE_ADDR_THREE" "$FIL_AMT")
: "$MSG_DELEGATE_THREE"

DELEGATE_ADDR_TWO_BALANCE=$FIL_ZERO
i=0
while [[ $i != 20 && $DELEGATE_ADDR_TWO_BALANCE == "$FIL_ZERO" ]]; do
i=$((i+1))
: "Checking DELEGATE_ADDR_TWO balance $i/20"
sleep 30s
DELEGATE_ADDR_TWO_BALANCE=$($FOREST_WALLET_PATH balance "$DELEGATE_ADDR_TWO" --exact-balance)
done

DELEGATE_ADDR_THREE_BALANCE=$FIL_ZERO
i=0
while [[ $i != 20 && $DELEGATE_ADDR_THREE_BALANCE == "$FIL_ZERO" ]]; do
i=$((i+1))
: "Checking DELEGATE_ADDR_THREE balance $i/20"
sleep 30s
DELEGATE_ADDR_THREE_BALANCE=$($FOREST_WALLET_PATH --remote-wallet balance "$DELEGATE_ADDR_THREE" --exact-balance)
done

$FOREST_WALLET_PATH list
$FOREST_WALLET_PATH --remote-wallet list

: End delegated wallet tests
Comment thread
sudo-shashank marked this conversation as resolved.
Outdated

# wallet list should contain address two with transferred FIL amount
$FOREST_WALLET_PATH list
$FOREST_WALLET_PATH --remote-wallet list
Expand Down
9 changes: 8 additions & 1 deletion src/message_pool/msgpool/msg_pool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@ use crate::eth::is_valid_eth_tx_for_sending;
use crate::libp2p::{NetworkMessage, PUBSUB_MSG_STR, Topic};
use crate::message::{ChainMessage, Message, SignedMessage, valid_for_block_inclusion};
use crate::networks::{ChainConfig, NEWEST_NETWORK_VERSION};
use crate::rpc::eth::types::EthAddress;
use crate::shim::{
address::Address,
address::{Address, Protocol},
crypto::{Signature, SignatureType},
econ::TokenAmount,
gas::{Gas, price_list_by_network_version},
Expand Down Expand Up @@ -265,6 +266,12 @@ where
if to_vec(msg)?.len() > MAX_MESSAGE_SIZE {
return Err(Error::MessageTooBig);
}
let to = msg.message().to();
if to.protocol() == Protocol::Delegated && EthAddress::from_filecoin_address(&to).is_err() {
return Err(Error::Other(format!(
"message recipient {to} is a delegated address but not a valid Eth Address"
Comment thread
sudo-shashank marked this conversation as resolved.
)));
}
valid_for_block_inclusion(msg.message(), Gas::new(0), NEWEST_NETWORK_VERSION)?;
if msg.value() > *crate::shim::econ::TOTAL_FILECOIN {
return Err(Error::MessageValueTooHigh);
Expand Down
2 changes: 1 addition & 1 deletion src/rpc/methods/eth.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1012,7 +1012,7 @@ async fn execute_tipset<DB: Blockstore + Send + Sync + 'static>(
))
}

fn is_eth_address(addr: &VmAddress) -> bool {
pub fn is_eth_address(addr: &VmAddress) -> bool {
if addr.protocol() != Protocol::Delegated {
return false;
}
Expand Down
Loading
Loading