区块链开发之Solidity编程基础(四)合约事件

本文介绍了Solidity编程中事件的用途,包括作为智能合约返回值给用户接口,异步带数据的触发器,以及作为一种成本较低的存储方式。事件利用EVM的日志基础设施,前端可通过监听事件获取智能合约的执行结果,并能实现异步操作。此外,文章还讨论了使用indexed参数进行过滤和提高效率的方法。
摘要由CSDN通过智能技术生成

事件

事件是以太坊虚拟机(EVM)日志基础设施提供的一个便利接口。用于获取当前发生的事件。

事件和日志有三个用途:

  • 智能合约返回值给用户接口
  • 异步的带数据的触发器
  • 一种比较便宜的存储

智能合约返回值给用户接口

我们可以在 dapp 的用户界面中监听事件,EVM 的日志机制可以反过来“调用”用来监听事件的 Javascript 回调函数。

contract ExampleContract {
   
	//一些状态变量
	function foo(int256 value) returns (int256) {
   
		//改变状态
		return value;
	}
}

假设exampleContract就是ExampleContract的一个实例,一个前端使用web3.js,通过模拟函数的执行可以获得返回值:

	var returnValue = exampleContract.foo.call(2);
	console.log(returnValue);

但是一旦提交合约调用成为一个交易,则无法得到返回值

	var returnValue = exampleContract.foo.sendTransaction(2,{
   from: web3.eth.coinbase});
	//交易的话,这里应该是一个交易哈希值
	console.log(returnValue);

sendTransa

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值