solidity-sha3
web3.sha3
doesn't always match the behavior of sha3
in Solidity. This one does.
- Hashes integers (default size:
uint256
) - Hashes tightly-packed arguments
- Supports hex strings and BigNumber instances
Install
$ npm install --save solidity-sha3
Usage
// 0x3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb // 0x0ef9d8f8804d174666011a394cab7901679a8944d24249fd148a6a36071151f8 // 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6 // 0xa9c584056064687e149968cbab758a3376d22aedc6a55823d1b3ecbee81b8fb9 // 0x26700e13983fefbd9cf16da2ed70fa5c6798ac55062a4803121a869731e308d2 // 0xb5cafab5b83d18303877bb912b2d66ca18ab7390cfd9be8a2e66cc5096e0ea02
You can also hash a value at a specific size:
// same as sha3(uint32(1)) in Solidity // 0x51f81bcdfc324a0dff2b5bec9d92e21cbebc4d5e29d3a3d30de3e03fbeab8d7f // same as sha3(1) in Solidity // 0x5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2
Be aware that strings will be converted into hex by default. You can use sha3num
to explicitly pad and hash a string as a number. This is useful for Wei that is not a BigNumber instance:
// same as sha3(uint(100 ether)) in Solidity // c7cc234d21c9cfbd4632749fd77669e7ae72f5241ce5895e410c45185a469273 // otherwise, it would convert the value '100000000000000000000' to '0x56bc75e2d63100000' and then hash that // 0x44bc2093d8a26b279e2eecbfdcb9cc0b960c2141b83a29dce25f2a18c2653bfa
License
ISC © Raine Revere