钱包A调用合约B,合约B调用C,如何安全的在C合约内做来源权限判断? 1,是C msg.sender授权给B合约 ,B 设置msg.sender为A,但是可能有其他钱包操作B的风险? 2,C直接判断源头来源是A,这样会有其他风险么?
若限制msg.sender是指定地址则没有风险,如:在B里限制msg.sender == A,在C里限制msg.sender == B && tx.origin == A ;只在C里判断tx.origin == A是不安全的
如果 A 是 EOA 账号(用户账号), 可以 使用 tx.origin == A 来判断源头,但是这样有一个风险是 A 不通过 B 来执行 C , 如果允许这个情况,也不算风险。
tx.origin == A