首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sha3是keccak256的别名吗?

Sha3是keccak256的别名吗?
EN

Ethereum用户
提问于 2018-03-03 10:16:29
回答 1查看 484关注 0票数 0

密码-

代码语言:javascript
复制
pragma solidity ^0.4.18;

contract CA18 {

address public owner;

function CA18 () {
    owner = msg.sender;
}



mapping(address=>uint16) public balances;

function getBalance() view returns (uint16, bytes32) {
    require(msg.sender == owner);
    uint16 mybalance = 1000;
    bytes32 c = keccak256(owner);
    return (mybalance, c);
}



}

> con.getBalance()
[1000, "0x0679d661b585d1b4f0c3fd18f943f19e7fa9777fe23cb96b94f469c20d6f0bd5"]
> web3.sha3(eth.coinbase)
"0x3ba2c5fae04972f5960bd8d1b7f098bf7d4c844da67accd23da00f62e4910fc0"
> con.owner()
"0x46fb9a22689c4a4bfb494baeafbb8b2993725305"
> web3.sha3(con.owner())
"0x3ba2c5fae04972f5960bd8d1b7f098bf7d4c844da67accd23da00f62e4910fc0"

Web3.sha与keccak256(所有者)不一样。

文档状态-

代码语言:javascript
复制
sha3(...) returns (bytes32):
alias to keccak256

输出显示sha3是不同的keccak256。应该是一样的吗?

(con是合同实例。)

我刚为所有者添加了sha3,这是输出-

代码语言:javascript
复制
> con.getBalance()
[1000, "0x0679d661b585d1b4f0c3fd18f943f19e7fa9777fe23cb96b94f469c20d6f0bd5", "0x0679d661b585d1b4f0c3fd18f943f19e7fa9777fe23cb96b94f469c20d6f0bd5"]

function getBalance() view returns (uint16, bytes32, bytes32) {
    require(msg.sender == owner);
    uint16 mybalance = 1000;
    bytes32 c = keccak256(owner);
    bytes32 d = sha3(owner);
    return (mybalance, c, d);
}

因此,差异是由于web3和坚实。有没有人解释过这一点,因为sha3被用于存储的寻址算法中,并且它们工作,而且它们也是基于keccak256的。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-03-03 10:58:08

代码语言:javascript
复制
> web3.sha3(con.owner(),  {encoding:"hex"})
"0x0679d661b585d1b4f0c3fd18f943f19e7fa9777fe23cb96b94f469c20d6f0bd5"
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/41546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档