您当前的位置: 首页 >  web3

【03】

暂无认证

  • 4浏览

    0关注

    196博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

web3与以太坊交互

【03】 发布时间:2021-07-09 16:31:13 ,浏览量:4

安装ganache-cli 执行安装命令
npm install -g ganache-cli
启动ganache-cli
ganache-cli

ganache-cli

启动参数,去官网查看 https://www.npmjs.com/package/ganache-cli/v/6.4.2

不带启动参数,系统会默认生成10个账户

地址:127.0.0.1:8545

web3对ganache-cli本地交易 下载web3
npm install web3

https://www.npmjs.com/package/web3

获取账户以及余额
// 获取账户以及余额
import React, {useState, useEffect} from 'react'
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
export default function Demo3() {
    const [accounts, setAccounts] = useState([])
    const [balanceMap, setBalanceMap] = useState([])

    /**
     * 获取所有账户
     */
    const getAccounts = () => {
        web3.eth.getAccounts().then((_accounts = []) => {
            setAccounts(_accounts)
            getBalance(_accounts)
        })
    }
    /**
     * 获取所有账户的余额
     * @param accounts
     */
    const getBalance = (accounts) => {
        const balanceMap = {}
        let c = accounts.length
        accounts.map(account => {
            web3.eth.getBalance(account).then(balance => {
                balanceMap[account] = web3.utils.fromWei(balance, 'ether')
                if (--c === 0) {
                    setBalanceMap(balanceMap)
                }
            })
        })
    }
    useEffect(() => {
        getAccounts()
    }, [])
    return (
        
            
                
                    
                        账户
                        余额
                    
                    {
                        accounts.map((it, idx) => 
                            {it}
                            {balanceMap[it]}
                        )
                    }
                
            
        
    )
}

交易

转账

/**
 * 转账
 */
const transfer = (_from,_to,balance) => {
    web3.eth.sendTransaction({
        from:_from,
        to:_to,
        value:balance
    },function(error,result){
        console.log(result);
		// 查看交易
        viewTransactions(result)
        getAccounts()
    })
}
transfer(accounts[0], accounts[accounts.length -2], web3.utils.toHex(web3.utils.toWei("3")))

创建账号

/**
 * 创建账号
 */
const createAccount = (password) => {
web3.eth.personal.newAccount(password,function(error,result){
        console.log(result);
        getAccounts()
    });
}

解锁账号

/**
 * 解锁账号
 */
const unlockAccount = (addr,password) => {
    web3.eth.personal.unlockAccount(addr,password,function(error,result){
        console.log(result);
    })
}

查看交易

/**
 * 查看交易
 * @param transactionHash
 */
const viewTransactions = (transactionHash) => {
    web3.eth.getTransactionReceipt(transactionHash,function (err, result) {
        if (err == null) {
            console.log('transaction:', result);
        } else {
            console.log('error:', err);
        }
    })
}

关注
打赏
1657344724
查看更多评论
立即登录/注册

微信扫码登录

0.0907s