在 Ethereum Remix JavaScript VM 上从特定账户执行solidity合约方法

Posted

技术标签:

【中文标题】在 Ethereum Remix JavaScript VM 上从特定账户执行solidity合约方法【英文标题】:Execute solidity contract methods from specific account on Ethereum Remix JavaScript VM 【发布时间】:2020-02-24 13:12:03 【问题描述】:

我目前在 ethereum.remix.org 上制作测试合约。 但是如何在测试文件中指定发送合约调用的账户?

contract test 
    MyContract contract;


address creator = address(0);
address payable account2 = address(1);
address payable account3 = address(2);
address payable account4 = address(3);

function beforeAll () public 
   contract = new MyContract();


function makeCallFromAccount2 () 
    contract.function1(10);


如何指定 contract.function1(10) 从账户 2 执行? (这很重要,因为合约方法使用 msg.sender 值)

【问题讨论】:

【参考方案1】:

虽然关于如何使用的文档很少,但显然你可以做到这一点: https://github.com/ethereum/remix/tree/master/remix-tests#use-a-different-sender-msgsender

【讨论】:

感谢您的回答,但我想在测试合约中切换账户,例如从账户 1 执行 method1,从账户 4 执行 method2。你当然是对的,我可以在 GUI 上手动切换账户并手动执行合约方法调用,但我想写一个测试合约,可以在测试文件 /contract 中切换账户。 抱歉,我错过了您想在测试合同中执行此操作。看起来你可以做到,虽然文档没有很多细节。

以上是关于在 Ethereum Remix JavaScript VM 上从特定账户执行solidity合约方法的主要内容,如果未能解决你的问题,请参考以下文章

Remix Ethereum 合约去哪儿了?

mac remix导入本地项目

RemixIDE连接本地并导入OpenZeppelin合约库

remix的使用

Remix编译合约的ABI以及ByteCode位置

Remix-IDE