如何使 tx.origin 不等于 msg.sender?以太签名者

问题描述 投票:0回答:1

我正在努力完成这个挑战: 炼金术挑战

我的脚本用于部署合约并使用不同的地址调用尝试函数: 我的脚本

const hre = require("hardhat");
require("dotenv").config();

async function main() {
  const Contract = await hre.ethers.getContractFactory("Contract");
  const contract = await Contract.deploy();

  console.log(`Contract was deployed to ${contract.target}`);

  const [owner, addr1] = await ethers.getSigners();

  await contract.connect(addr1).attempt();

}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });

我收到此错误: ProviderError:执行已恢复:msg.sender 等于 tx.origin

请问有什么帮助吗?

ethereum solidity ethers.js hardhat signer
1个回答
0
投票

创建智能合约并从 EOA 调用它。

EOA -> 智能合约 -> 你的挑战

tx.origin 将是 EOA(因为它是 tx 开始的地方),msg.sender 将是智能合约(因为它是发起挑战的地方)

您可以在这篇帖子

中阅读更多相关信息
© www.soinside.com 2019 - 2024. All rights reserved.