Truffle 与合约交互
自己编写原始请求,与以太坊网络中的智能合约进行交互,是一件相当繁琐的工作。
Truffle简化了这个工作,利用Truffle提供的功能,我们可以方便地与合约进行交互。
读写数据
以太坊网络中,对于向网络写入数据,以及从网络读取数据的2种行为作了区分,这种区分对如何编写应用程序有重要影响。
通常,写入数据称为交易,而读取数据称为调用。交易和调用的处理方式非常不同。
交易
交易会向网络写入数据,改变网络状态。
交易可以是简单地向一个账户发送以太币,也可以复杂到执行合约函数或向网络添加新合约。
交易有运行成本,需要消耗Gas,Gas需要用以太币支付。
交易处理需要消耗时间,不会马上返回。如果你通过交易执行合约的函数,该函数不会马上返回,因为交易不是立即处理的。通常,通过交易执行的函数不会有返回值,而是返回一个交易id。
总结交易的特点:
有执行成本,消耗Gas
更改网络的状态
不立即处理
没有返回值(得到交易id)。
调用
与交易相比,调用是非常不同的,调用是只读的。
调用可用于在以太坊网络上执行代码,但不会更改网络中的数据。
调用可以免费执行。
当通过调用执行合约函数时,将立即收到返回值。
总结调用的特点
免费,不消耗Gas
不改变网络的状态
立即处理
有返回值
是交易还是调用,只需看是否向网络写入数据。
章节
Truffle – 合约抽象
Truffle – 执行交易
Truffle – 执行调用
Truffle – 交易执行结果
Truffle – 捕获事件
Truffle – 部署新版合约
Truffle – 获取指定地址合约的合约抽象
Truffle – 向合约发送以太
合约抽象对象在Javascript中表示一个合约,可以使用合约抽象对象与以太坊网络中的合约进行交互。 truff-contract包提供对合约抽象的支持。 注意 在前面章节中,我们提到过获取合约 ...