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 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uniapp中,可以通过调用web3.js库来实现拉起web3转账的功能。下面是一个简单的示例代码: 1. 首先,需要在uniapp项目中引入web3.js库。可以通过npm安装web3.js,然后在需要使用的页面中引入: ```javascript import Web3 from 'web3'; ``` 2. 在需要拉起web3转账的地方,可以创建一个web3实例,并连接到以太坊网络: ```javascript const web3 = new Web3(window.ethereum); ``` 3. 接下来,需要获取用户的授权来访问其以太坊账户。可以使用`ethereum.enable()`方法来请求用户授权: ```javascript await window.ethereum.enable(); ``` 4. 然后,可以使用web3实例来发送转账交易。以下是一个简单的示例: ```javascript const account = web3.eth.accounts[0]; // 获取当前用户的以太坊账户地址 const transaction = { from: account, to: '0x1234567890abcdef', // 目标地址 value: web3.utils.toWei('1', 'ether'), // 转账金额(以太为单位) }; web3.eth.sendTransaction(transaction) .on('transactionHash', function(hash){ console.log('Transaction hash:', hash); }) .on('receipt', function(receipt){ console.log('Transaction receipt:', receipt); }) .on('error', function(error){ console.error('Transaction error:', error); }); ``` 以上代码中,`from`字段表示转账发起者的以太坊账户地址,`to`字段表示目标地址,`value`字段表示转账金额。 需要注意的是,以上代码只是一个简单示例,实际使用时还需要进行错误处理、用户授权状态检查等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值