zoukankan      html  css  js  c++  java
  • web3js 进行转账

     1、准备阶段

    部署以太坊geth

    安装nodejs

    npm install web3

    npm install 

    npm install ethereumjs-tx

    其中, web3是1.0.0.beta-36版本

    2、在部署有geth的机器上,执行node命令, 就入控制台模式,然后逐行执行下面程序: 

    const Web3 = require('web3')
    const EthereumTx = require('ethereumjs-tx')
    const web3 = new Web3( new Web3.providers.HttpProvider('http://47.254.215.233:8145') )                // 服务器RPC地址                                                            
    web3.eth.defaultAccount = 'af7574a21729d22e119df7456bf913194d73c209'                                  // 发送方地址                                                               
                                                                                                                                                                                      
    let details = {                                                                                                                                                                   
        "to": '0x5cf83df52a32165a7f392168ac009b168c9e8915',                                               // 接收方地址                                                               
        "value": 4052500000,                                                                              // 转账多少wei                                                              
        "gas": 51000,                                                                                     // GAS                                                                      
        "gasPrice": 2 * 1000000000,                                                                      // GAS PRICE 需要一个比较合理的价格, 不然可能会报错(replacement transaction underpriced)                                                                               
        "gasLimit": '0x420710',                                                                        
        "nonce": 40,                                                                                     // 序号ID, 重要, 需要一个账号的交易序号,可以通过web3.eth.getTransactionCount(web3.eth.defaultAccount)获得
        "chainId": 11243575,                                                                              
        "data":'0x40aabbccdd000011223344'                                                                                                                                             
      }                                                                                                    // 网络ID, 这是区别于具体在哪个网络上                                     
                                                                                                                                                                                      
    var tx = new EthereumTx(details)
    tx.sign( Buffer.from('FC1A5C66932BD7C93E05661A58FD534967739CE517D8695EBBE89135CEE78DA4', 'hex') )
    var serializedTx = tx.serialize();
    web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex')).on('receipt', console.log);
    

      

      

    输出输出:

    Promise {
    <pending>,
    _events: { receipt: EE { fn: [Function: bound ], context: [Circular], once: false } },
    emit: [Function: emit],
    on: [Function: on],
    once: [Function: once],
    off: [Function: removeListener],
    listeners: [Function: listeners],
    addListener: [Function: on],
    removeListener: [Function: removeListener],
    removeAllListeners: [Function: removeAllListeners] }

    最终成功,输出(这里等待了很长时间):

    { blockHash: '0x7a0f412ba0b09dfcfacb826712f4b8e5089e8d1c6d35385d2e29d5dc4400ab37',
    blockNumber: 155425,
    contractAddress: null,
    cumulativeGasUsed: 63000,
    from: '0xaf7574a21729d22e119df7456bf913194d73c209',
    gasUsed: 21000,
    logs: [],
    logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
    status: true,
    to: '0x5cf83df52a32165a7f392168ac009b168c9e8915',
    transactionHash: '0x6030b35f4d948a83370d0a759be98820eb72d94623e9d9063fabaab4a9543aed',
    transactionIndex: 2 }

  • 相关阅读:
    【问题备注】VS2012不能输入代码,文字…
    犯错了又
    关于实习…
    百度2014校招笔试题目题解(更新了第1题的算法,10.9下午)
    人人校招笔试题
    腾讯2014软件开发笔试题目
    阿里巴巴笔试题选解
    批处理文件——多个QQ一键登录
    动态规划---LIS
    动态规划--凑硬币问题
  • 原文地址:https://www.cnblogs.com/freebird92/p/10001039.html
Copyright © 2011-2022 走看看