以太坊钱包搭建与使用

前言

本文使用系统:centos7。

以太坊客户端:geth

安装

下载geth:

官方下载地址:https://geth.ethereum.org/downloads

直接下载:

wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.9.6-bd059680.tar.gz

解压

tar zxvf geth-linux-amd64-1.9.6-bd059680.tar.gz
cd geth-linux-amd64-1.9.6-bd059680

移动

mv geth /usr/bin/

创建一个目录用来存放区块数据

mkdir /ethereum

常规配置

监听端口

--port 30303
geth网络监听端口 默认30303

设置区块目录

--datadir ‘/ethereum‘
--datadir选项指定在哪里存储区块数据  没有提供则默认为家目录下的.ethereum目录。

指定网络

--networkid 1
--networkid指定网络ID  1代表主网络  2代表测试网络  没有提供则默认测试网络,乱写代表创建私有链

同步方式

--syncmode ‘fast‘ --cache 1024
fast意为快速同步(同步区块有full、fast、light三种模式,推荐fast,同步完成后geth会自动切换到full同步)
--cache分配到内部缓存的内存,单位MB,1024即为1G。

RPC配置

--rpc
启用HTTP-RPC服务

--rpcaddr ‘0.0.0.0‘
HTTP-RPC服务白名单  默认localhost

 --rpcport 8545
HTTP-RPC服务监听端口  默认8545

--rpcapi ‘db,eth,net,web3‘
这个命令决定允许什么API能够通过PRC进入,默认情况下geth会激活IPC上所有API以及PRC的db,eth,net,web3API。

--rpccorsdomain ‘*‘
跨域,多个域名可用逗号分割。

搭建主链节点

星火节点

由于国内以太坊节点非常稀少,并且国内外网络不通畅等原因导致国内服务器同步区块数据非常缓慢还容易丢包,由EthFans发起的星火节点计划可以帮助我们加快同步速度。

下载节点列表:https://upyun-assets.ethfans.org/uploads/doc/file/b0c5266be42f43f1baf7207c432bede6.json?_upd=static-nodes.json

下载后将static-nodes.json文件放在区块存储目录下即可。

生成配置文件

geth --datadir ‘/ethereum‘ --networkid 1  --syncmode fast --cache 1024 --rpc --rpcaddr ‘0.0.0.0‘ --rpcport 8545 --rpcapi ‘db,eth,net,web3‘ --rpccorsdomain ‘*‘ dumpconfig > /ethereum/geth_config

后台启动

nohup geth --config /ethereum/geth_config  >> /var/log/geth.log  2>&1  &

监控区块同步日志

tail -f /var/log/geth.log

我是4核8G带宽10M的服务器同步了两天半,占用硬盘190G。

当你看到日志里无穷无尽的 Imported state entries ...,不要急,你还需要继续等待。。。

搭建私链环境

创世区块

先创建几个账户

geth --datadir /ethereum account new

创世区块文件

vim /ethereum/genesis.json

内容如下:

{
    "config": {
        "chainId": 100,
        "homesteadBlock": 0,
        "eip150Block": 0,
        "eip155Block": 0,
        "eip158Block": 0,
        "byzantiumBlock": 0,
        "constantinopleBlock": 0,
        "petersburgBlock": 0,
        "ethash": {}
    },
    "nonce": "0x42",
    "timestamp": "0x0",
    "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
    "gasLimit": "0x1388",
    "difficulty": "0x1",
    "alloc": {
        "0xDFeDb94Ab496d6b68795dB890AcbbBdc2557860A": {
            "balance": "100000000000000000000000000000000"
        }
    }
}

其中的 alloc 属性是给账户分配余额 。切记,余额是以wei为单位的,就是balance值要除以10的18次方才等于eth的数量。

初始化创世区块

geth --datadir /ethereum init /ethereum/genesis.json

生成配置文件

geth --datadir ‘/ethereum‘ --networkid 100  --cache 512 --rpc --rpcaddr ‘0.0.0.0‘ --rpcport 8545 --rpcapi ‘db,eth,net,web3,personal‘ --rpccorsdomain ‘*‘  --allow-insecure-unlock  dumpconfig > /ethereum/geth_config

后台启动

nohup geth --config /ethereum/geth_config_8888  >> /var/log/geth_8888.log  2>&1  &

JavaScript控制台

进入控制台

geth console --config /ethereum/geth_config 2>> /var/log/geth.log

如果你后台启动了geth则不能进入,它会提示你端口已占用,这时候可以使用链接节点的方式进入:

geth attach /ethereum/geth.ipc

此时进入了控制台环境(退出控制台使用exit;)

查看当前同步情况

eth.syncing

如果返回的是false,证明同步完成了,可以使用当前节点。
否则会返回同步状态

currentBlock为当前下载到的区块高度,请注意,下载块不等于同步数据了,下载块是一个简单快速的过程,只验证相关的工作量证明,在下载块的同时geth也在一直下载所有的区块数据,当数据下载完成后届时才会处理曾经发生过的所有交易,重新组装整个链。

查询区块高度

eth.blockNumber

fast方式有个特点,在完全完成同步之前,geth无法提供有关区块或或账户信息,所以会返回0。

查询某个区块的信息

eth.getBlock(39)

创建账户

personal.newAccount()

列出本地账户

eth.accounts

查余额

eth.getBalance(‘0xca3ac4f946b997db24515a7ae7779f2e587d5a26‘)

查到的余额除以18位小数就是真实的余额数字

我个人喜欢这么查

web3.fromWei(eth.getBalance(‘0x317188e4a00de2f689aEb79E9b7565DabEd360dB‘), "ether");

解锁账户

转账之前必须解锁账户

personal.unlockAccount(‘0x317188e4a00de2f689aEb79E9b7565DabEd360dB‘,‘123456‘)

如果你解锁出现这个错

(anonymous): Line 1:24 Unexpected token ILLEGAL (and 3 more errors)

检查一下,字符串改成用单引号试试,别用双引号,这个是巨坑。

如果你解锁出现这个错

Error: account unlock with HTTP access is forbidden

那么在启动项中添加参数 --allow-insecure-unlock

转账

personal.sendTransaction({from: ‘0xfbe8bfaef37e49a278fbe760b9517ebbbec20eb8‘, to: ‘0x68d41149e5bbe35f3fe49cdb47474bf2e2ac5a55‘, value: web3.toWei(1,‘ether‘)},‘123456‘)

注意:燃费最少是21000,这个值必须要比eth.getBlock(最新块) 中的gasLimit值要小,否则会报燃费太低或太高错误,也就是说,正常情况下,最新区块的gasLimit值必须要大于21000才会转账成功,否则就继续挖矿等待。

根据hash查询交易详情

eth.getTransaction(‘0xd7f78761ddd26468700d21cefb431cda19a03d3fe11e8b1b5af6c1df2470e5fb‘)

挖矿

设置挖矿账户

miner.setEtherbase(‘0x317188e4a00de2f689aEb79E9b7565DabEd360dB‘)

挖矿所得费用会自动进入该账户余额

开始挖矿

miner.start()

结束挖矿

miner.stop() 

查看是否在挖矿

eth.mining

API调用

各编程语言现成类库
Java:https://github.com/web3j/web3j
Python:https://github.com/ethereum/web3.py
PHP:https://github.com/sc0Vu/web3.php
NodeJs:https://github.com/ethereum/web3.js

原文地址:https://www.cnblogs.com/fengyumeng/p/12209226.html

时间: 2024-10-09 01:45:35

以太坊钱包搭建与使用的相关文章

区块链以太坊环境搭建(详细篇)

以太坊合约的配置(以在私有链上配置投票合约为例) 以太坊合约配置步骤大体如下: 一.安装Mist浏览器(已经集成以太坊钱包) 二.安装配置基于Go语言的geth命令 三.在本地搭建私有链 四.在私有链上完成挖矿工作 五.使用Mist在私有链上配置投票合约 具体步骤如下: 一.安装Mist浏览器(已经集成以太坊钱包) 1登陆https://github.com/ethereum/mist/releases/根据需求下载最新版本的客户端: 下载完成解压压缩文件后找到可运行文件运行安装即可 安装过程中

c#实战开发:用.net core开发一个简单的Web以太坊钱包 (六)

今天就来开发一个C# 版的简易钱包 先回顾以前的内容 c#实战开发:以太坊Geth 命令发布智能合约 (五) c#实战开发:以太坊Geth 常用命令 (四) c#实战开发:以太坊钱包快速同步区块和钱包卡死解决方案 (三) c#实战开发:以太坊钱包对接私链 (二) c#实战开发:以太坊私链搭建(一) 先看一下可视化钱包有哪些功能呢? 那这个钱包得有什么功能呢? 1.查看用户 2.查看交易记录 3.转账 4.发布智能合约 5.代币转账 6.代币查询 7.实时同步区块对比 8.智能填写手续费 首先新建

登链钱包(一款功能强大的以太坊钱包)完全开源

你是否和我前段时间一样,苦苦的寻找一款好用的开源以太坊钱包,你会发现可用都很少,因为很多钱包说开源,仅仅是开源部分代码,现在不需要再找了, 登链钱包完全开源,登链钱包完全开源,登链钱包完全开源,重要的事情说三遍. 再也不用傻乎乎找人开发以太坊钱包了, 直接拿去用吧:再也不用担心私钥会被上传到别人的服务器上. <!-- more --> 写在前面 区块链是开放的,很难想象一个封闭的项目如何产生信任,开源一直是区块链社区所倡导的行为准则. 我们也希望开源能够降低行业的开发门槛,吸引更多的开发者和公

牛奶ddw如何通过以太坊钱包实现互相打赏

很多朋友不清楚如何转账ddw,但是万能的网友是无敌的先就自己摸索的一点经验总结下今天的转账经验. 1. 提取到自己的账户 这个大家都知道如何操作,使用官方的钱包 在“日日盈app”中点击"我的设备”,点击提取收益,如果顺利币会瞬间提取到你的主账户钱包中 如果失了(查看账户余额不为0则失败),稍后使用4G或者其他网络再次尝试,多次尝试后即可 2. 如何互相转账 2.1 请下载网友提供的以太坊万能钱包:http://ox0ubbr6d.bkt.clouddn.com/Ethereum-Wallet-

(转)以太坊 钱包 创建 导入 Keystore

最近闲来无事 研究了下以太坊钱包 下边分享下 准备工作 : 需要用到的加密:BIP32 BIP39 BIP44 SCRYPT 加密算法 githab地址 https://github.com/NovaCrypto/BIP32 https://github.com/NovaCrypto/BIP39 https://github.com/NovaCrypto/BIP44 https://github.com/wg/scrypt/ 官方依赖 https://github.com/web3j/web3j

Android开发以太坊钱包生成应用程序

Android应用程序以太坊钱包生成,要做的工作不少,不过如果我们一步一步来应该也比较清楚: 1.在app/build.gradle中集成以下依赖项: compile ('org.web3j:core-android:2.2.1') web3j核心是用于从服务器下载以太坊区块链数据的核心类库.它通常用于以太坊开发. 2.我们将设计一个Android UI示例,屏幕上将有文本编辑和按钮.在EditText中,将要求用户输入钱包的密码.然后在按钮的单击事件上,我们将开始发送密码的过程.以下是layo

以太坊钱包开发系列2 - 账号Keystore文件导入导出

以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Token(代币),这是第二篇,主要介绍钱包账号导出与导入,将对Keystore文件的生成的原理进行介绍. 如何导入Geth创建的账号? 在上一篇文章,介绍了如何使用私钥及助记词来创建账号,如果是使用已有的私钥及助记词,这其实也是账号导入的过程. 有一些同学会问,我的账号是Geth生成的,如何导入到钱包呢

以太坊-windows-私有链-搭建(非源码)

初 接触以太坊,只安装,不讲道理: 1.win10系统,64位 2.以太坊钱包 3.以太坊geth客户端 geth 和 钱包可以到ethfans.org的资料库里下载,那里提供国内镜像和官网地址. 钱包工具:https://ethfans.org/wikis/Ethereum-Wallet-Mirror geth :https://ethfans.org/wikis/Ethereum-Geth-Mirror 首先,安装geth,选择安装目录d:\blockchain,安装完成之后,该文件夹下回出

Windows 10下搭建以太坊私有链环境

通过网上的资料,结合自己的搭建的eth环境,希望能对大家搭建区块链环境有所帮助了解.下面开始进入准备. 本次是windows环境下的私有链环境搭建,所以需要做以下准备: 1.win10系统(家庭版),64位 2.以太坊钱包Ethereum-Wallet-win64-0-10-0(我用的版本0.10.0) 3.以太坊geth客户端(我用的是1.4.11版) 1.1 安装geth Windows要求必须是64位系统,从官方网站下载编译好的win64客户端,下载解压后只有一个Geth.exe,运行安装