Ⅰ 以太坊开发(2):在以太坊私有链上的基本操作
在上一讲 如何使用geth搭建以太坊私有链 完成了私有链的搭建,下面介绍在私有链上的基本操作。
启动私有链后在命令行输入:
执行完之后可以查看到生成的账户地址为
查询账户余额:
刚刚创建的私有链账户都是没有余额的,需要通过挖矿才会产生eth,下面介绍如何在私有链上挖矿。
在geth环境下执行:
这时候查看日志geth.log可以看到以太坊私有链有个启动的百分比,到100就正式启动了:
挖矿开始:
这时候有个疑问,挖矿挖到的eth到哪了,其实默认到了eth.account[0],就是第一个账户上:
如何修改挖矿所得的账户:
命令如下:
下面开始进行转账:
这时候出现报错,原因是转账的账户没有解锁,需要输入密码解锁转账的账户才能完成转账操作:
Ⅱ 怎么接以太坊公链
建立连接以接儒以太坊公链。
一、1、以太坊客户端下载,注意:需翻墙,下载版本为1.8.23-stable,否则可能出现与以太坊钱包客户端存在不匹配问题。
2、以太坊钱包客户端下载。
3、安装以太坊客户端。
二、私有链创建:创建创世区块。
三、安装并启动以太坊钱包客户端。
Ⅲ 以太坊多节点私有链部署
假设两台电脑A和B
要求:
1、两台电脑要在一个网络中,能ping通
2、两个节点使用相同的创世区块文件
3、禁用ipc;同时使用参数--nodiscover
4、networkid要相同,端口号可以不同
1.4 搭建私有链
1.4.1 创建目录和genesis.json文件
创建私有链根目录./testnet
创建数据存储目录./testnet/data0
创建创世区块配置文件./testnet/genesis.json
1.4.2 初始化操作
cd ./eth_test
geth --datadir data0 init genesis.json
1.4.3 启动私有节点
1.4.4 创建账号
personal.newAccount()
1.4.5 查看账号
eth.accounts
1.4.6 查看账号余额
eth.getBalance(eth.accounts[0])
1.4.7 启动&停止挖矿
启动挖矿:
miner.start(1)
其中 start 的参数表示挖矿使用的线程数。第一次启动挖矿会先生成挖矿所需的 DAG 文件,这个过程有点慢,等进度达到 100% 后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。
停止挖矿,在 console 中输入:
miner.stop()
挖到一个区块会奖励5个以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做 coinbase,默认情况下 coinbase 是本地账户中的第一个账户,可以通过 miner.setEtherbase() 将其他账户设置成 coinbase。
1.4.8 转账
目前,账户 0 已经挖到了 3 个块的奖励,账户 1 的余额还是0:
我们要从账户 0 向账户 1 转账,所以要先解锁账户 0,才能发起交易:
发送交易,账户 0 -> 账户 1:
需要输入密码 123456
此时如果没有挖矿,用 txpool.status 命令可以看到本地交易池中有一个待确认的交易,可以使用 eth.getBlock("pending", true).transactions 查看当前待确认交易。
使用 miner.start() 命令开始挖矿:
miner.start(1);admin.sleepBlocks(1);miner.stop();
新区块挖出后,挖矿结束,查看账户 1 的余额,已经收到了账户 0 的以太币:
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
用同样的genesis.json初始化操作
cd ./eth_test
geth --datadir data1 init genesis.json
启动私有节点一,修改 rpcport 和port
可以通过 admin.addPeer() 方法连接到其他节点,两个节点要要指定相同的 chainID。
假设有两个节点:节点一和节点二,chainID 都是 1024,通过下面的步骤就可以从节点二连接到节点一。
首先要知道节点一的 enode 信息,在节点一的 JavaScript console 中执行下面的命令查看 enode 信息:
admin.nodeInfo.enode
" enode://@[::]:30303 "
然后在节点二的 JavaScript console 中执行 admin.addPeer(),就可以连接到节点一:
addPeer() 的参数就是节点一的 enode 信息,注意要把 enode 中的 [::] 替换成节点一的 IP 地址。连接成功后,节点一就会开始同步节点二的区块,同步完成后,任意一个节点开始挖矿,另一个节点会自动同步区块,向任意一个节点发送交易,另一个节点也会收到该笔交易。
通过 admin.peers 可以查看连接到的其他节点信息,通过 net.peerCount 可以查看已连接到的节点数量。
除了上面的方法,也可以在启动节点的时候指定 --bootnodes 选项连接到其他节点。 bootnode 是一个轻量级的引导节点,方便联盟链的搭建 下一节讲 通过 bootnode 自动找到节点
参考: https://cloud.tencent.com/developer/article/1332424
Ⅳ 以太坊无法连接节点
把你的TCP/IP协议设置成自动获取状态试试,方法:右键网上邻居-属性- 右键"本地连接"属性-双击"Internet 协议 TCP/IP"-改为自动获取
IPX/SPX协议,IPX是NetWare最底层的协议,它只负责数据在网络中的移动,并不保证数据是否传输成功,也不提供纠错服务。IPX在负责数据传送时,如果接收节点在同一网段内,就直接按该节点的ID将数据传给它;如果接收节点是远程的(不在同一网段内,或位于不同的局域网中),数据将交给NetWare服务器或路由器中的网络ID,继续数据的下一步传输。SPX在整个协议中负责对所传输的数据进行无差错处理,所以我们将IPX/SPX也叫做“Novell的协议集”。
Ⅳ Docker 搭建以太坊私有链
首先需要安装 Docker,Docker 的安装和使用可以参看阮一峰老师的 《Docker 入门教程》 。
Ethereum 官方是支持 docker 的,可以参看 官方文档 。
centOS
其中 -v /home/linshan/works/block-chain/ethereum:/root 是把我们当前的 ethereum 目录,挂到了docker 的 /root 下。
在 Windows 环境下使用 -v /home/linshan/works/block-chain/ethereum:/root 不能启动容器,原因不明,所以在 Windows 下先不要使用目录挂载。
各字段具体用途参看 官方文档 。
Windows
Windows 不必创建 start-ethereum.sh 文件, genesis.json 也可以在 Docker 容器启动后创建。
centOS
Windows
运行成功后执行
进入 docker 容器命令行
因为 Windows 没有挂载共享目录,所以 root 目录下没有 genesis.json 文件,我们要在这里手动创建 genesis.json 文件,内容要和 centOS 的一致。
data 用来存放区块数据
geth 的参数参看 以太坊客户端Geth命令用法-参数详解
启动私有节点后进入 geth 命令行执行:
输出的内容就是节点信息,我们在手动连接节点是会用到,注意要把“0.0.0.0“换成你自己的IP,然后将这个信息发送给其他节点。手动连接节点有两种方式:
当然不管使用哪种方法连接节点都要保证创世区块文件 genesis.json 一致,还有在启动时 networkid 也要一致。
至此以太坊私有链已搭建完毕。
geth命令
docker命令
Ⅵ macstudio坏了数据
Mac Studio 的性能感到满意,但许多用户在使用其以太坊端口时遇到了问题。 虽然大部分用户可能更喜欢通过 Wi-Fi 连接到互联网,但对于需要更快、更可靠的互联网访问的人们来说,硬连线以太坊电缆仍然是最受欢迎的选择。
不幸的是,Apple 论坛上的一些用户抱怨他们在 Mac Studio 上的 10G 以太坊端口无法正常工作。 该端口拒绝响应,并且全天多次发生。 虽然这对某些人来说似乎是一个小问题,但我们知道当你参加会议或做办公室工作时会多么令人沮丧。 虽然 Mac Studio 10G 以太坊不工作问题可能表明硬件损坏,但并非总是如此。 以太坊端口无法正常工作的原因可能有几个罪魁祸首。无论 Mac Studio 20G 以太坊无法正常工作问题背后的原因是什么,我们都会为你提供帮助。 在本故障排除指南中,我们提到了几种解决方法,它们将有助于解决 Mac Studio 10G 以太坊最早无法工作的问题。
因此,毫不拖延地,让我们直接深入研究它们。
检查你的以太坊电缆
在我们开始查找 Mac Studio 中的故障之前,我们应该花点时间检查一下以太坊电缆。 寻找任何损坏迹象,例如销毁、割伤、电线扭曲等。 如果任何东西看起来很可疑,你可以抓住另一根以太坊电缆,看看问题是否已解决。
如果以太坊电缆状况良好,你可以断开电缆,然后尝试连接电缆以建立正确的连接。 你也可以使用此以太坊电缆连接到其他计算机并查看以太坊电缆是否正常工作。
调整错误配置的设置
如果你没有发现以太坊电缆有任何问题,你应该仔细检查 Mac Studio 的网络设置。 你的 Mac 有一个内置设置,你需要在其中选择以太坊选项而不是 Wi-Fi。 如果你选择了不正确的选项,你将无法使用有线选项连接到互联网,以免你尝试了多少。 所以让我们调整一下设置:
点击 Mac 屏幕左上角的 Apple 图标。
从下拉菜单中,选择系统偏好设置选项。
在这里,从窗口中选择网络选项。
现在你将在左侧边栏中看到所有网络服务。
在此处查找以太坊选项,然后选择它。 如果在任何情况下都找不到它,请选择添加选项。使用 Mac 终端重新启动无响应的以太坊
如果即使使用正确的互联网设置,以太坊连接也无法正常工作,那么是时候尝试一些高级方法了。 我们将重新启动 Mac Studio 的有线网络接口,以消除干扰 Mac 使用以太坊功能的技术故障和随机错误。 以下是如何开始:
在 Mac Studio 上调出 Finder 应用程序
转到应用程序,然后选择实用程序选项。
寻找终端选项并点击它。此之后,在终端窗口中输入以下命令并按回车键。
sudo ifconfig en0 关闭
系统可能会提示你输入密码。
执行上述命令后,键入下一条命令并按 Enter 键。
sudo ifconfig en0 up
注意:将 en0 替换为有线网络接口。
如果你不知道这一点,请转到 Apple 菜单 > 关于本机 > 系统偏好设置。
在这里,从左侧边栏中选择网络选项。
现在,以太坊名称将出现在右侧。
重启调制解调器和 Mac Studio
如果重新启动有线网络接口没有任何好处,你应该尝试重新启动 Mac Studio 和调制解调器。 这对于建立新连接并使有线互联网连接可用至关重要。 以这种方式重新启动你的设备:
首先,关闭你的 Mac 工作室。
然后你需要关闭/拔下调制解调器。
现在等待至少 30 秒,然后再次成功打开调制解调器。
按住,直到所有指示灯都处于指示调制解调器已成功进入位置的位置。
在此之后,打开你的 Mac Studio。
现在连接以太坊电缆,看看你是否可以正常访问互联网。 如果没有,请尝试其他故障排除方法。
如何移除或安装内存 – MacBook Pro
将以太坊重新添加到 Mac Studio
如果上述方法似乎都不适合你,那么是时候尝试另一种修复方法了。 我们将删除你 Mac 工作室上的以太坊配置文件,然后重新配置它。 这有助于清除可能导致以太坊工作问题的随机错误和错误配置的设置。
按照此处的步骤删除并重新配置 Mac Studio 上的以太坊配置文件:
将以太坊插入 Mac Studio 的端口并打开路由器。
现在点击屏幕左上角的 Apple 标志。
从下拉列表中选择系统偏好设置。
接下来,从左侧边栏中选择网络选项。
现在你将看到 Mac Studio 的所有网络服务列表。
在这里,选择以太坊选项,然后按底部的减号按钮。
最后,按应用按钮确认更改。
现在访问网络服务列表并选择蓝牙 PAN 选项。
Ⅶ 以太坊私有链如何更新版本
以太坊私有链更新版本的方法:
1、获取以太坊私有链系统的当前版本对应的当前版本号;
2、基于所述当前版本号,确定所述以太坊私有链系统的升级版本的升级版本号;
3、将所述以太坊私有链系统升级为所述升级版本号对应的升级版本。
Ⅷ 以太坊私有链搭建(2)--修改挖矿难度
官放解释就不多说了,Difficulty值越大,越难出区块,意味着交易不容易确认,默认的机制是难度越来越大,对私有链一般是不可接受的,当然这个值也不是越小越好,这样的话也会让机器的很卡,所以这个值要根据项目自己确定。
创世区块中的的难度能影响整体的挖矿速度,但是并不能改变难度上升这个趋势,所以在自己的项目中,仅仅在创世区块中指定难度是不够的。
当前geth版本 1.7 unstable
源文件 consensus/ethash/consensus.go 行290
好了,这里也不多想怎么实现了,我也看不懂,简单改下返回难度为恒定值就会~~
将这个函数改为
重新make geth,试试看出块难度是不是恒定了。
Ⅸ 搭建geth私有链和联盟链网络
操作系统:linux或Mac OS
安装geth执行以下命令:
linux:sudo apt-get install ethereum
Mac OS:brew install ethereum
直接创建两个geth的工作目录,用于之后的组建联盟链的使用:
mkdir eth-private1
mkdir eth-private2
首先 cd eth-private1 进入节点1的工作目录该目录下执行下面命令
geth --datadir data --nodiscover console (data是之后geth节点的数据目录,可自行修改)
使用geth自带的工具 puppeth 用于生成创世区块,过程如下:
puppeth
+-----------------------------------------------------------+
| Welcome to puppeth, your Ethereum private network manager |
| |
| This tool lets you create a new Ethereum network down to |
| the genesis block, bootnodes, miners and ethstats servers |
| without the hassle that it would normally entail. |
| |
| Puppeth uses SSH to dial in to remote servers, and builds |
| its network components out of Docker containers using the |
| docker-compose toolset. |
+-----------------------------------------------------------+
Please specify a network name to administer (no spaces, please)
输入私链名称后,会出现二级菜单,现在2:配置一个新的创世快
What would you like to do? (default = stats)
再次出现二级菜单,让你选择共识机制(这里采用poa共识)
Which consensus engine to use? (default = clique)
Ethash - proof-of-work(PoW) :工作量证明,通过算力达成共识 (以太坊就是使用这种方式)
Clique - proof-of-authority(PoA): 权威证明、通过预先设定的权威节点来负责达成共识 (不消耗算力,一般用于私有链测试开发)
如果选择Pow的共识方法,直接输入1,回车即可。
如果选择PoA的共识方法,输入2后会提示让你选择处快的间隔时间,一般测试开发使用可以设置相对的将处快时间设置较少5秒即可,然后会让你选择哪个账户来作为权威生成区块(至少有一个,输入刚才创建的账户,若只是单节点就输入那个节点目录生成的地址,若想组建联盟链就填写生成的两个地址)
How many seconds should blocks take? (default = 15)
选择好共识机制后会让你指定给那些账号初始化ether(至少有一个),输入我们刚才创建的账户地址回车即可。
Which accounts should be pre-funded? (advisable at least one)
选择输入私有链的网络ID,任意数字即可(不能为1,1是公链),也可以不输入会给定一个随机数作为私有链的网络ID
Specify your chain/network ID if you want an explicit one (default = random)
选择导出创世区块配置文件
选择导出创世区块配置文件的保存路径,可以保存到当前目录,直接按回车即可
Which file to save the genesis into? (default = my-private-chain.json)
INFO [02-09|14:56:33] Exported existing genesis block
这样就完成了创世区块文件的配置了,直接退出puppeth即可。
输入命令 geth --datadir data init private.json 其中data自己制定,private.json就是刚才生成的创世区块
若出现如图错误:
输入命令:
geth --datadir data --syncmode full --port 2001 --networkid 1234 --rpc --rpcport "8545" --rpccorsdomain "*" --rpcaddr "0.0.0.0" --rpcapi "db,eth,net,web3,personal,admin,clique" --nodiscover console 进入控制台
--datadir data:节点的数据目录
--syncmode full:块同步的方式(若只是单节点可不填)
--port 2001: 网卡监听端口
--networkid 1234:网络标识符
--rpc:开启rpc服务
--rpcport "8545":rpc服务的端口
--rpccorsdomain "*":允许跨域请求的域名列表(逗号分隔)(浏览器强制)
--rpcaddr "0.0.0.0" :HTTP-RPC服务器接口地址(默认值:“localhost”)
--rpcapi "db,eth,net,web3,personal,admin,clique":基于HTTP-RPC接口提供的API(私有链可以任意开发,公有链需要谨慎)
--nodiscover:不允许节点自动加入
若想搭建联盟链,必须保证创世区块一致,进入到刚才创建的eth-private2的目录
将之前生成的创世区块拷贝过来,初始化创世区块,然后使用启动命令启动分别启动两个节点,进入控制台,使用 admin.nodeInfo 命令获取节点的信息
总结:
两个服务器部署两个节点是可以联通的,但是只能使用两个节点对应的地址进行挖矿,所以只能是两个节点对应两个地址进行挖矿,使用poa共识,当一个节点挂掉,挖矿停止,因为poa共识挖矿必须超过50%的节点进行钱增,现在只是两个节点,挂掉一个节点挖矿就会停止等待另一个节点的确认,停掉的节点可以通过正常运作的节点信息重新连接到网络中。
问题:
同步块有可能报错情况:
1:Synchronisation failed "retrieved hash chain is invalid" 解决目前找到的方法是removedb 数据目录 ,重新init创世区块
2:内存溢出初步确认为开启rpc服务造成的,有可能服务器恶意被黑,暴力破解密码,占有内存,解决,将服务器的ip设置一条防火墙
若存在问题可给本人留言或访问本人的github: https://github.com/qi-shuo/geth-document 记录了一些本人搭建使用的命令
Ⅹ 官宣!以太坊“合并”9月6日启动,合并后以太坊会发生什么
以太坊合并9月6日启动,是加密行业最重要的事件,以太坊信标链社区顾问 Superphiz 合并将完成。以太坊研究员在以太坊丹佛会议上发表了题为“以太坊 POS 和我们的太阳能朋克的”的演讲。难度炸弹的时机是无可挑剔的,相信丹尼的话是他不想推迟难度炸弹。合并分叉将在爆炸之前发生,以化解难度炸弹。