Ⅰ 以太坊 cd go-ethereum 、make geth超时问题
解决https://proxy.golang.org/github.com 报443 超时问题
make geth
go: github.com/Azure/[email protected]: Get "https://proxy.golang.org/github.com/%21azure/azure-storage-blob-go/@v/v0.7.0.mod": dial tcp 172.217.24.17:443: i/o timeout
make: *** [geth] Error 1
替换一个国内的代理地址
终端命令执行:
go env -w GOPROXY=https://goproxy.cn
重新执行make geth
Ⅱ 以太坊挖矿,需要什么硬件配置
你好,根据我的经验来说,1.首先搭机架,然后固定显卡,再将CPU和风扇、内存、SSD硬盘插在主板的插槽内并连好电源和主板电源。
希望我的建议可以帮助到你,谢谢!
Ⅲ 以太坊多节点私有链部署
假设两台电脑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
Ⅳ Geth实现以太账户之间转账
1、打开控制台
F:\Geth>geth --datadir "data" console
2、查看目前所拥有的账户列表
> eth.accounts
[""]
3、新建账户
> personal.newAccount('123456')
""
4、查看目前所拥有的账户列表
> eth.accounts
["", "
efed9a8240"]
5、查看账户余额
> eth.getBalance(eth.accounts[0])
665000000000000000000
> eth.getBalance(eth.accounts[1])
0
6、定义变量
> var acc1=eth.accounts[0]
undefined
> acc1
""
> var acc2=eth.accounts[1]
undefined
> acc2
""
7、转账
> eth.sendTransaction({from: acc1 , to: acc2, value: web3.toWei(10,"ether")})
Error: authentication needed: password or unlock
at web3.js:3143:20
at web3.js:6347:15
at web3.js:5081:36
at <anonymous>:1:1
(账户被锁报错)
8、解锁账户
> personal.unlockAccount(acc1,"123456")
true
9、转账
> eth.sendTransaction({from: acc1 , to: acc2, value: web3.toWei(10,"ether")})
INFO [11-14|14:34:24.526] Setting new local account address=0xF4f
INFO [11-14|14:34:24.551] Submitted transaction fullhash=0x98
recipient=0x1DfA2
"0x98"
10、查看账户余额
> eth.getBalance(acc1)
665000000000000000000
> eth.getBalance(acc2)
0
11、挖矿
>miner.start(1);admin.sleepBlocks(20);miner.stop();
12、挖矿结束查看账户余额
> eth.getBalance(acc2)
10000000000000000000
(欢迎打赏,一分也是爱)
Ⅳ 如何搭建公链
搭建以太坊公链,其实就是在本地运行一个以太坊节点,然后连接到以太坊主网。考虑到主网的区块会占用很大的硬盘空间,启动节点的时候可以指定存放数据的目录,运行命令:./geth --ipcpath gethdir/geth.ipc --datadir gethdir console 成功启动节点后,进入控制台交互界面,主网的区块信息会主动同步。
Ⅵ CentOS 6.5上搭建以太坊私有链,编译时报错: make: *** [geth] Error 1,请各位大神指教
build/env.sh go run build/ci.go install ./cmd/geth
make: *** [geth] Error 1
没有这个目录,或者这个目录权限不够
Ⅶ ETH开发实践——批量发送交易
在使用同一个地址连续发送交易时,每笔交易往往不可能立即到账, 当前交易还未到账的情况下,下一笔交易无论是通过 eth.getTransactionCount() 获取nonce值来设置,还是由节点自动从区块中查询,都会获得和前一笔交易同样的nonce值,这时节点就会报错 Error: replacement transaction underpriced
在构建一笔新的交易时,在交易数据结构中会产生一个nonce值, nonce是当前区块链下,发送者(from地址)发出的交易(成功记录进区块的)总数, 再加上1。例如新构建一笔从A发往B的交易,A地址之前的交易次数为10,那么这笔交易中的nonce则会设置成11, 节点验证通过后则会放入交易池(txPool),并向其他节点广播,该笔交易等待矿工将其打包进新的区块。
那么,如果在先构建并发送了一笔从地址A发出的,nonce为11的交易,在该交易未打包进区块之前, 再次构建一笔从A发出的交易,并将它发送到节点,不管是先通过web3的eth.getTransactionCount(A)获取到的过往的交易数量,还是由节点自行填写nonce, 后面的这笔交易的nonce同样是11, 此时就出现了问题:
实际场景中,会有批量从一个地址发送交易的需求,首先这些操作可能也应该是并行的,我们不会等待一笔交易成功写入区块后再发起第二笔交易,那么此时有什么好的解决办法呢?先来看看geth节点中交易池对交易的处理流程
如之前所说,构建一笔交易时如果不手动设置nonce值,geth节点会默认计算发起地址此前最大nonce数(写入区块的才算数),然后将其加上1, 然后将这笔交易放入节点交易池中的pending队列,等到节点将其打包进区块。
构建交易时,nonce值是可以手动设置的,如果当前的nonce本应该设置成11, 但是我手动设置成了13, 在节点收到这笔交易时, 发现pending队列中并没有改地址下nonce为11及12的交易, 就会将这笔nonce为13的交易放入交易池的queued队列中。只有当前面的nonce补齐(nonce为11及12的交易被发现并放入pending队列)之后,才会将它放入pending队列中等待打包。
我们把pending队列中的交易视为可执行的,因为它们可能被矿工打包进最新的区块。 而queue队列因为前面的nonce存在缺失,暂时无法被矿工打包,称为不可执行交易。
那么实际开发中,批量从一个地址发送交易时,应该怎么办呢?
方案一:那么在批量从一个地址发送交易时, 可以持久化一个本地的nonce,构建交易时用本地的nonce去累加,逐一填充到后面的交易。(要注意本地的nonce可能会出现偏差,可能需要定期从区块中重新获取nonce,更新至本地)。这个方法也有一定的局限性,适合内部地址(即只有这个服务会使用该地址发送交易)。
说到这里还有个坑,许多人认为通过 eth.getTransactionCount(address, "pending") ,第二个参数为 pending , 就能获得包含本地交易池pending队列的nonce值,但是实际情况并不是这样, 这里的 pending 只包含待放入打包区块的交易, 假设已写入交易区块的数量为20, 又发送了nonce为21,22,23的交易, 通过上面方法取得nonce可能是21(前面的21,22,23均未放入待打包区块), 也可能是22(前面的21放入待打包区块了,但是22,23还未放入)。
方案二是每次构建交易时,从geth节点的pending队列取到最后一笔可执行交易的nonce, 在此基础上加1,再发送给节点。可以通过 txpool.content 或 txpool.inspect 来获得交易池列表,里面可以看到pending及queue的交易列表。
启动节点时,是可以设置交易池中的每个地址的pending队列的容量上限,queue队列的上容量上限, 以及整个交易池的pending队列和queue队列的容量上限。所以高并发的批量交易中,需要增加节点的交易池容量。
当然,除了扩大交易池,控制发送频率,更要设置合理的交易手续费,eth上交易写入区块的速度取决于手续费及eth网络的拥堵状况,发送每笔交易时,设置合理的矿工费用,避免大量的交易积压在交易池。
Ⅷ Geth 控制台使用及 Web3.js 使用
在以太坊的DAPP开发中,需要 页面开发 和 智能合约 开发,页面开发需要 H5 , 智能合约 开发用 Solidity 实现。页面和以太坊智能合约交互,就需要使用 Web3.js 。
Geth 控制台(REPL)实现了所有的 web3 API 及 Admin API ,如果你对Geth命令行不太熟悉,请参考之前的文章。
以太坊客户端Geth常用命令详解
重定向日志到文件
使用geth console启动时,会在当前的交互界面下时不时出现日志。
可以使用以下方式把日志输出到文件。
可以新开一个命令行终端输入以下命令查看日志:
重定向另一个终端
也可以把日志重定向到另一个终端,先在想要看日志的终端输入:
就可以获取到终端编号,如:/dev/test
然后另一个终端使用:
启动geth, 这是日志就输出到另一个终端。
如果不想看到日志还可以重定向到空终端:
日志级别控制
使用–verbosity可以控制日志级别,如不想看到日志还可以使用:
另外一个启动geth的方法是连接到一个geth节点:
Ⅸ 挖矿挖以太坊(ETH)搭配什么电源好
CPU
intel 奔腾G4560
¥390
散热器 九州风神玄冰400 ¥60
主板 磐正B250A-BTC ¥699
内存 金士顿8G 2400 ¥364
显卡 影驰GTX1060黑将*6 ¥8994
硬盘 影驰铁甲战将120G SSD ¥359
机箱 6卡挖矿机架 ¥999
电源 欣隆源Hin1600W-ATXG1 ¥425
转接卡 PCIE X1转X16转接卡*6 ¥180
键鼠装 用户自选 ----
显示器 用户自选 ----
Ⅹ 以太坊如何挖矿
目前市场上主流的以太坊矿机大多来自比特大陆、嘉楠耘智,不过随着以太坊价格的下跌,挖矿带来的利润已经十分微薄,投资者可以选择在数字货币交易所进行以太坊的交易投资。目前市场上主流的数字货币交易所有币安、火币网、比特网等。