Tx.origin是利用msg.sender后面的处理地址的一种旧方法。但是,假设我,作为一个用户,正在调用一个合同,而这个合同称为一个合同。合同B有什么办法..。具体来说,只接收来自合同A的电话,意思是,在msg.sender前面有什么东西,比如tx.origin在msg.sender后面。
示例
我=>合同A =>合同B
Tx.origin => Msg.sender => ??
如果我从“我”的地址打电话到合同A,那么合同B有什么办法来说明“嘿,只有合同A才能打电话给我”?
发布于 2021-05-12 05:48:29
您唯一的选择是tx.origin和msg.sender。tx.origin是发送事务的原始EOA (外部拥有的帐户),而msg.sender是当前(内部)事务的发件人。
从合同的角度来看,msg.sender始终是调用链中的前一个契约或EOA。因此,在"EOA => ContractA => ContractB“链中,在ContractB的上下文中,msg.sender就是ContractA。在ContractA的上下文中,msg.sender是EOA。
如果链为"EOA => ContractA = ContractB => ContractC",则ContractC无法知道中间有ContractA。
https://ethereum.stackexchange.com/questions/98796
复制相似问题