区块链系列二十二:在浏览器中开发Eth

在浏览器中开发Eth用到的一些工具和库。

EthereumJS

各方面的工具库都比较全面, 虽然star数较少, 不过看上去相对比较靠谱。 著名的MetaMaskConsenSys下的很多工具都有用到EthereumJS下的库。

MetaMask

MetaMask作为很方便的浏览器插件, 旗下有很多项目可以参考。

ConsenSys

ConsenSys也有一些Javascript的项目可以参考, 然后可以从package.json文件里看到它所依赖的项目, 进而找到一些比较靠谱的工具库。

EthJS

EthJS也有很多eth js工具, MetaMask和ConsenSys都有用到。

How to use sendRawTransaction

  • https://ethereum.stackexchange.com/questions/26770/how-to-use-sendrawtransaction-properly

    var Tx = require('ethereumjs-tx');
    var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109','hex')
    var rawTx = {
    nonce: '0x00',
    gasPrice: '0x09184e72a000', 
    gasLimit: '0x2710',
    to: '0x0000000000000000000000000000000000000000', 
    value: '0x00', 
    data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057'
    }
    var tx = new Tx(rawTx);
    tx.sign(privateKey);
    var serializedTx = tx.serialize();
    //console.log(serializedTx.toString('hex'));
    //0xf889808609184e72a00082271094000000000000000000000000000000000000000080a47f74657374320000000000000000000000000000000000000000000000000000006000571ca08a8bbf888cfa37bbf0bb965423625641fc956967b81d12e23709cead01446075a01ce999b56a8a88504be365442ea61239198e23d1fce7d00fcfc5cd3b44b7215f
    web3.eth.sendRawTransaction(serializedTx.toString('hex'), function(err, hash) {
    if (!err)
    console.log(hash); // "0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385"
    });
    

    注意, 自己签名Tx的话, 一定要保证nonce是对的, 可以通过eth_getTransactionCount获取到。

data的编码方式需要参考ABI spec, 函数的hash用得是keccak256, 可以用这个Keccak-256在线工具

其他工具