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 }

  • 相关阅读:
    【转】 java中Class对象详解和类名.class, class.forName(), getClass()区别
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    107. Binary Tree Level Order Traversal II
    109. Convert Sorted List to Binary Search Tree
    108. Convert Sorted Array to Binary Search Tree
    110. Balanced Binary Tree
    STL容器迭代器失效问题讨论
    113. Path Sum II
    112. Path Sum
  • 原文地址:https://www.cnblogs.com/freebird92/p/10001039.html
Copyright © 2011-2022 走看看