Truffle 与合约交互

自己编写原始请求,与以太坊网络中的智能合约进行交互,是一件相当繁琐的工作。

Truffle简化了这个工作,利用Truffle提供的功能,我们可以方便地与合约进行交互。

读写数据

以太坊网络中,对于向网络写入数据,以及从网络读取数据的2种行为作了区分,这种区分对如何编写应用程序有重要影响。

通常,写入数据称为交易,而读取数据称为调用。交易和调用的处理方式非常不同。

交易

交易会向网络写入数据,改变网络状态。

交易可以是简单地向一个账户发送以太币,也可以复杂到执行合约函数或向网络添加新合约。

交易有运行成本,需要消耗Gas,Gas需要用以太币支付。

交易处理需要消耗时间,不会马上返回。如果你通过交易执行合约的函数,该函数不会马上返回,因为交易不是立即处理的。通常,通过交易执行的函数不会有返回值,而是返回一个交易id。

总结交易的特点:

有执行成本,消耗Gas

更改网络的状态

不立即处理

没有返回值(得到交易id)。

调用

与交易相比,调用是非常不同的,调用是只读的。

调用可用于在以太坊网络上执行代码,但不会更改网络中的数据。

调用可以免费执行。

当通过调用执行合约函数时,将立即收到返回值。

总结调用的特点

免费,不消耗Gas

不改变网络的状态

立即处理

有返回值

是交易还是调用,只需看是否向网络写入数据。

章节

Truffle – 合约抽象

Truffle – 执行交易

Truffle – 执行调用

Truffle – 交易执行结果

Truffle – 捕获事件

Truffle – 部署新版合约

Truffle – 获取指定地址合约的合约抽象

Truffle – 向合约发送以太

下一章:Truffle 合约抽象

  合约抽象对象在Javascript中表示一个合约,可以使用合约抽象对象与以太坊网络中的合约进行交互。 truff-contract包提供对合约抽象的支持。 注意 在前面章节中,我们提到过获取合约 ...