Solidity知识点集 — Keccak256与事件(二)

Keccak256生成伪随机数

keccak256("aaaab");
//6e91ec6b618bb462a4a6ee5aa2cb0e9cf30f7a052bb467b0ba58b8748c00d2e5
keccak256("aaaac");
//b1f078126895a1424524de5321b339ab00408010b7cf0e6ed451514981e58aa9

注: 在区块链中安全地产生一个随机数是一个很难的问题

类型转换

uint8 a = 5;
uint b = 6;
// 将会抛出错误,因为 a * b 返回 uint, 而不是 uint8:
uint8 c = a * b;
// 我们需要将 b 转换为 uint8:
uint8 c = a * uint8(b);

事件

事件 是合约和区块链通讯的一种机制。你的前端应用“监听”某些事件,并做出反应。

// 这里建立事件
event IntegersAdded(uint x, uint y, uint result);

function add(uint _x, uint _y) public {
  uint result = _x + _y;
  //触发事件,通知app
  IntegersAdded(_x, _y, result);
  return result;
}

你的 app 前端可以监听这个事件。JavaScript 实现如下:

YourContract.IntegersAdded(function(error, result) { 
  // 干些事
}

Web3.js

以太坊有一个 JavaScript 库,名为Web3.js。底层实现上,它通过RPC 调用与本地节点通信。web3.js可以与任何暴露了RPC接口的以太坊节点连接。

后面会继续讲到。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面 在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互。这种使用命令行交互的方法虽...
    yuyangray阅读 6,889评论 4 4
  • I迷宫的穿越 I迷宫这个游戏,让我倍感痛苦和纠结。老师说完游戏规则,我就很郁闷,我头脑很多声音在对话,我记不住路,...
    婷下脚步阅读 2,958评论 0 2
  • 心里一直藏着一个故事。 刚开始,它只是萌芽,只是放在心底。但放在心里越久,它就越发生长,逐至后来,长成一棵参天大树...
    安然无恙QIU阅读 3,237评论 0 2
  • 我,蜉蝣,爱上了一个萤火虫姑娘。 她不同与蝴蝶小姐的浓妆艳抹,也不同与飞蛾小姐的不施粉黛,她有着一种独特的魅力。 ...
    右肩上的墨点阅读 2,656评论 9 7
  • docker容器是一个独立的系统,相比于VM,不需要绑定整个操作系统,只需要程序运行所需要的library,set...
    Superwind20阅读 3,150评论 0 0