How to build a usdc/usdt custodial wallet on icp?

I am not sure if this is the right approach since the Principal is not specific to your canister and a user id. For example, let’s say that your user’s id is “abc”, you are then converting “abc” to a principal and then to an ETH address without any regard to the user specifically using your canister. Another dapp could convert the same text “abc" to a principal and then an ETH address. Multiple users could potentially share the same principal and ETH address.

Have you looked into Threshold ECDSA examples?