当前位置:首页 » 以太坊知识 » 以太坊私有链不出块

以太坊私有链不出块

发布时间: 2023-10-01 05:30:59

区块链技术安全都需要了解哪些问题

区块链技术相信大家应该都不陌生了,而今天我们就一起来了解一下,在区块链技术安全领域都有哪些问题是需要我们注意的,下面就开始今天的主要内容吧。

目前,企业内部进行的大多数区块链项目都是所谓的“带权限的私有链”。与公有链不同的是,私有链只能由选定的用户组访问,这些用户有权在该账本上进行输入、验证、记录和交换数据。

当然,对于一个从未获准加入的“局外人”而言,这样的网络几乎不可举正能被攻陷的。但随着私有链的出现,另一个问题就出现了:为了提高隐私性和安全性,我们真的需要舍弃去中心化吗?

来自《麻省理工科技评论》(MITTechnologyReview)的MikeOrcutt写道,私有链系统“可能会让它的所有者感到更安全,但它实际上只是给予了他们更多的控制权,这意味着无论其他网络参与者是否同意,他们都可以进行更改。”这类系统需要提出平衡机制,为不同的用户组授予不同级别的权限,并对验证者进行身份检查,以确保他们是自己所声称的那个人。

这就是为什么许多公司都在寻找两者兼备的方法——公有链的去中心化和私有链的额外安全性。由IBM、Corda、Ripple等主要厂商开发的联盟链,目前看来似乎是好的安全选择。简而言之,它们为企业提供了访问集中式系统的权限,且系统本身又具有一定程度的加密可审计性和安全性。

其他企业也在考虑如何通过调整公有链来满足他们的安正滑悔全需求。例如,以太坊区块链已经提供了一些机制,可以利用这些机制让闷来确保网络参与者的隐私,包括环签名、隐身地址和存储公有链的私有数据。

总的来说,区块链领域正在朝着为公有链、私有链、联盟链网络定义技术粒度隐私层的新解决方案稳步发展。IT培训发现各家公司正在积极调查和修补已知漏洞,并采用新的机制来确保各方都受到保护,任何恶意的骇客都无法攻破并利用账本中的漏洞。


㈡ 以太坊存在的问题

1.扩展性不足:

以太坊社区的主要开发人员和研究人员始终认为区块链技术要实现大规模采用,可扩展性是区块链应用程序需要解决的唯一最重要的关键。

以太坊的底层设计,最大的问题是以太坊只有一条链,没有侧链,它把所有的程序对等的跑在全球所有节点的矿机上。这样一个很耗资源的程序,会导致问题越来越严重。

2.合约程序漏洞,无法抵御DDOS攻击

据相关研究表明,在基于以太坊的近100万个智能合约上,发现有34,200(约3%)个含有安全漏洞,将允许黑客窃取ETH、冻结资产或删除合约。这几年,以太坊面对合约程序漏洞和DDOS攻击的问题,也一直无法找到很好的解决办法。(更好用的数字货币交易平台“币汇”)

3.对于ICO泡沫和项目方砸盘

目前的ETH下跌,很大程度上来自于项目方的砸盘套现,这个问题可以在ICO代币融资上进行规则限制,不能像现在这样毫无成本的就能发一个币,而且还没有任何监督惩罚机制。任何事情都需要有一套合理的演进规则,大家按规则办事,所谓无规矩不成方圆。在规则的基础上,各类ICO项目有效监督,有序进出,才是一个正常的市场,这样才可能维系着代币生态的持续、稳定发展。

4.智能合约费用过高

在以太坊上现在还是POW的挖矿模式,交易是有手续费的,用来激励矿工来处理交易和保护网络,不同的是以太坊是以“gas”的形式来收费的。

在以太坊协议中规定,交易手续费=Gas 数量 x Gas 价格,其中 Gas 数量由智能合约的复杂程度决定,而 Gas 价格则由合约发起人决定。这对开发者和用户意味着什么呢?虽然读取本地区块链是免费的,但写入和运算是花钱的,储存更是尤其昂贵,因为任何写入的信息都会被永久的储存着。

5.社区对共识协议改变的分歧

以太坊计划实现将 POW 机制改为 POW/POS 混合共识机制。但这个涉及到技术开发和矿工双方能否达到利益共识的问题了。如果协议发生了变化,社区意见不合时,就会导致分叉,大家各自玩各自的。

㈢ 以太坊多节点私有链部署

假设两台电脑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

㈣ 在区块链中以太坊(eth)目前有哪些问题

在区块链中以太坊(eth)目前有哪些问题?
以太坊区块链目前暴露出三大问题,长时间以来其创始人Vitalik
Buterin一直无力解读。第一是以太坊区块链整体很低的性能和TPS;第二是资源不隔离,CryptoKitties虚拟猫咪的事件,一度占据了整个以太坊
20%
的流量,直接造成以太坊网络用户无法展开及时的交易,就是资源不隔离最大的痛点;第三个问题在于以太坊治理结构的体现,区块链作为去中心化的分布式账本,以太坊过去以来,创始人团队主导了其网络发展,过于中心化的治理模式,让目前的以太坊出现了ETH、ETC、ETF等分叉,以太坊社区目前进入四分五裂的治理状态。而以太坊网络目前出现的各种弊病,在「aelf」创始人与CEO马昊伯看来,这是无法接受的。于是,「aelf」定位,就是为对标以太坊的下一代去中心化底层计算平台,重点解决目前以太坊存在的性能不足、资源不隔离、治理结构三方面的问题而诞生的。

㈤ 搭建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 记录了一些本人搭建使用的命令

㈥ CentOS 6.5上搭建以太坊私有链,编译时报错: make: *** [geth] Error 1,请各位大神指教

build/env.sh go run build/ci.go install ./cmd/geth
make: *** [geth] Error 1
没有这个目录,或者这个目录权限不够

热点内容
百金挖矿提现 发布:2024-11-17 05:22:39 浏览:477
数字货币5连网是什么 发布:2024-11-17 05:06:13 浏览:959
禁止访问挖矿ip 发布:2024-11-17 04:54:42 浏览:970
挖矿的大型挖煤机 发布:2024-11-17 04:44:52 浏览:765
dcr矿池排名 发布:2024-11-17 04:43:18 浏览:596
eth建筑硕士申请作品集 发布:2024-11-17 04:37:01 浏览:534
比特币奖励有几类 发布:2024-11-17 04:29:29 浏览:908
今天eth走势涨幅 发布:2024-11-17 04:26:38 浏览:496
比特币精灵是真的吗 发布:2024-11-17 04:23:33 浏览:594
第一枚比特币什么时候 发布:2024-11-17 04:20:03 浏览:525