在浏览器中开发Eth用到的一些工具和库。
EthereumJS
各方面的工具库都比较全面, 虽然star数较少, 不过看上去相对比较靠谱。 著名的MetaMask和ConsenSys下的很多工具都有用到EthereumJS下的库。
https://github.com/ethereumjs/ethereumjs-wallet
用于产生privateKey, 导出成Eth V3类型的keystore文件等。
https://github.com/ethereumjs/ethereumjs-tx
可以在本地sign tx, 这样就可以用infura操作eth链上数据了。 注意, Eth JSON-RPC中的eth-sign并不能在infura上使用, 因为eth-sign其实是eth的client(比如geth)帮你管理的privateKey, 你不可能让infura管你的privateKey吧。
https://github.com/ethereumjs/ethereumjs-util 工具库
MetaMask
MetaMask作为很方便的浏览器插件, 旗下有很多项目可以参考。
ConsenSys
ConsenSys也有一些Javascript的项目可以参考, 然后可以从文件里看到它所依赖的项目, 进而找到一些比较靠谱的工具库。
https://github.com/ConsenSys/eth-signer 用于签名
https://github.com/ConsenSys/eth-lightwallet 钱包
EthJS
EthJS也有很多eth js工具, MetaMask和ConsenSys都有用到。
How to use sendRawTransaction
https://ethereum.stackexchange.com/questions/26770/how-to-use-sendrawtransaction-properly
注意, 自己签名Tx的话, 一定要保证nonce是对的, 可以通过eth_getTransactionCount获取到。
data的编码方式需要参考ABI spec, 函数的hash用得是keccak256, 可以用这个Keccak-256在线工具。
其他工具
https://github.com/ethers-io/ethers.js/ 看样子更新还比较勤
https://github.com/bitcoinjs/bip39 , 虽然是bitcoin, 但是Mnemonic和HD都是一样的。
https://github.com/ricmoo/scrypt-js
https://github.com/MikeMcl/bignumber.js/ 和 https://github.com/indutny/bn.js/ 有些工具两个库都用了, 感觉有点重复啊?
https://github.com/brix/crypto-js
https://github.com/feross/buffer
https://github.com/feross/safe-buffer
https://github.com/neocotic/qrious
https://github.com/cozmo/jsQR
领取专属 10元无门槛券
私享最新 技术干货