我正在上一门udemy课程,我遇到了这样的代码
我搞不懂为什么对方法的调用是直接调用的,而不是使用.call或其他什么的。如果我使用谷歌,那么调用合同方法的方法要么是使用.call,要么是.send,但此时作者只是直接调用它,这是允许的吗,为什么?
或多或少,从松露测试中调用智能契约方法的上下文是什么?它是否类似于在返回之前等待挖掘事务的真实环境,还是像普通函数一样直接调用它?
我在这里发这篇文章,因为udemy课程的作者没有反应,而且它几乎有一个星期,十几个问答问题都没有回答,所以作者可能很忙,或者已经忘记了这门课程(因为它有点老了,但是复习得很好)。
发布于 2021-04-26 08:03:42
在返回契约instance (第41行)之前,它使用ABI接口(由Solidity编译器提供)构建用于与契约交互的JS函数映射,包括receiveEthers()。
从松露测试中调用智能契约方法的上下文是什么?
尽管Truffle测试可以连接到公共测试网或主板网,但它通常与另一个Truffle -本地EVM和称为加纳奇的块链仿真器一起使用(参见作者定义到本地块链连接的配置文件 )。默认情况下,Ganache在每个事务之后挖掘一个块,这样您(作为开发人员或测试人员)在设置网络时不需要担心挖掘和其他进程,并且它几乎立即返回了来自本地块链的响应。
如果我使用google,调用合同方法的方法要么使用.call,要么使用.send。
只回答特弗莱的问题。其他软件包,如Web3js或Ethers.js,可能会有一些不同的规则。.call() 和和方法在中(用于与其他契约或地址交互),的行为也与这里解释的不同:
您可以通过两种不同的方式与契约进行交互:
默认情况下,如果不指定要进行事务处理还是调用,请使用Truffle 进行交易。您可以通过使用打个电话方法来重写此决定和.call()。
.send()方法仅用于低级别构建的事务。一个常见的用例是发送ETH --您需要构建transaction data字段,填充(ETH) value,并调用.send()方法(假设您已经配置了信托基金来使用私钥对事务进行签名)。
https://stackoverflow.com/questions/67262182
复制相似问题