首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动测试谁可以从智能合同中提取以太

自动测试谁可以从智能合同中提取以太
EN

Ethereum用户
提问于 2017-12-30 11:45:28
回答 2查看 186关注 0票数 1

有什么方法可以自动测试谁可以从智能合同中提取以太呢?我需要自动执行这个测试。所以我不能手动检查说明书。

我是否可以设计一个聪明的合同,使它变得容易测试?我想确保只有智能契约的创建者才能通过一种特定的功能撤回以太。我可以很容易地测试该函数是否存在,但如何自动测试智能契约的创建者(或任何其他人)是否可以通过该函数提取以太呢?

更新

我知道如何设计一个智能契约,这样只有创建者才能撤回以太。然而,我需要自动测试谁可以从给我的智能合同中提取乙醚。

EN

回答 2

Ethereum用户

发布于 2020-07-04 08:16:48

一个聪明的合同可以有很多功能,所以要实现你想要的,你必须独立地测试每一个功能。您必须考虑所有可能的输入,这些输入可以提供给函数。

mocha测试套件中的基本TypeScript示例:

代码语言:javascript
复制
describe("my exhaustive test suite", function() {
  it("checks that foo doesn't change the contract balance", async function() {
    const currentBalance: BigNumber = ...
    await myContract.foo();
    const balanceAfterContractCall: BigNumber = ... 
    expect(currentBalance).to.equal(balanceAfterContractCall);
  });
});

请注意,在上面的示例中,测试没有具体检查foo不允许取款-它只检查余额的相等性。合同调用者可以被允许提取,但立即发送一个相等的金额回来。要彻底检查这一点,您必须窃听内部交易

在任何情况下,您可能需要的是正式验证和符号执行,而不是自动检查函数做或不做某事的方式。这是一种先进的安全技术,可以从数学上证明程序所做的事情。有关详细信息,请参阅太棒了-以太-安全

票数 1
EN

Ethereum用户

发布于 2017-12-30 18:12:17

创建私有地址变量所有者。在构造函数中,将地址指定为所有者。创建一个名为isOwner的修饰符。在取款功能上使用此修饰符,这将自动检查取款人是否为所有者。

这应该很容易在松露中测试。

如何自动测试智能合同的创建者(或任何其他人)是否存在其他功能可以撤回以太?

别做任何这样的事。如果您已经使用了修饰符。

希望能帮上忙。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/34723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档