区块链学习之2Ubuntu以太坊私有链的节点操作

一节课的知识当然不止我写的这一点点啦,我这里写的理论知识只是我觉得需要单拎出来强调一下的内容,是按我的理解总结出来的,如果有说的不对的地方欢迎师傅们指正~


一、理论知识

1.什么叫“挖矿”?
消耗你的计算机资源去找到一串随机数,满足其哈希值的前4位为0,这个过程就叫挖矿。
该台计算机就称为矿工。
而比特币是对挖矿的奖励机制。

2.数字签名
关于对数字签名的理解,可以看看下面这篇博客,非常形象、好懂:
https://www.cnblogs.com/lovelinux199075/p/9022589.html

看完以后可能存在疑虑,那原文不就是明文传输了吗,那还安全吗?
所以要弄明白的是:数字签名的根本作用只是为了证明消息是鲍勃发出的、且原文没有被篡改。
如果原文是需要保密传输的话,就需要配合其他的安全机制。

二、实验操作

接下来就进入正题,接着上一篇《区块链学习之1在Ubuntu中搭建以太坊私有链》继续完成后续的节点操作。
在这里插入图片描述

1.创建账户

首先要创建账户以后才能挖矿。

1.创建新账户

personal.newAccount("密码")

在这里插入图片描述
创建成功以后将会返回账户的地址:“0x47e724836f7bd160c9bc6587452de96c442f4e0c”。

2.查询账户余额

eth.getBalance("账户地址")

由于这是一个新建的账户,所以现在查询的值为0:
在这里插入图片描述

2.挖矿

挖到一个区块会奖励以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做 coinbase,默认情况下 coinbase 是本地账户中的第一个账户,可以通过 miner.setEtherbase() 将其他账户设置成 coinbase。

1.查看矿工账户

eth.coinbase

这里查看到的矿工的账户,其实就是我们上一步创建的新账户:
在这里插入图片描述
2.设置挖矿的账号

miner.setEtherbase("账户地址")

在这里插入图片描述

3.开始挖矿

miner.start(1)

这个命令的意思是启动账号在节点上开始挖矿动作,括号里的1代表的是只启动一个进程,如果不填的话,它会不断的启动进程、消耗计算机资源。
在这里插入图片描述
出现这样的界面就表示挖到矿了:
在这里插入图片描述

  • 我执行miner.start(1)命令的时候,每次执行到percentage=99以后就卡住了然后过很久很久以后出现“程序错误”的弹窗,不知道到到底是什么原因:
    在这里插入图片描述
    折腾了几天、快照不知道恢复了多少次,每次都是这种情况!我也记不清我最后是怎么弄把它弄好的……我估摸着分析吧,可能是我文件的路径没弄对……
    当我终于看到挖矿成功的页面时:
    在这里插入图片描述

4.停止挖矿

miner.stop()

3.查看区块高度

1.查看区块数量

eth.blockNumber

在这里插入图片描述
2.查看具体某个区块的内容

eth.getBlock(数字)

在这里插入图片描述

4.转账

1.创建第二个账户

方法和上面一样:
在这里插入图片描述
第二个账户的地址为:“0x1ceb8f15c5ec750260bc1a1992f0b85a05e77917”。

2.查询账户余额

查询第一个账户余额

web3.fromWei(web3.eth.getBalance(web3.eth.accounts[0]),"ether")  

查询第二个账户余额

web3.fromWei(web3.eth.getBalance(web3.eth.accounts[1]),"ether")  

在这里插入图片描述

  • 至于单位的转换关系,我看别人是这样介绍的:
    在这里插入图片描述
    3.解锁钱包

首先要解锁钱包,否则无法进行转账。
因为我们要从第一个账户转出ether,所以我们需要解锁第一个账户:

personal.unlockAccount(web3.eth.accounts[0])
  • 可以看到我们在解锁的时候遇到了报错:
    在这里插入图片描述
    查了一下,原来是因为新版本geth出于安全考虑,默认禁止了HTTP通道解锁账户。
    解决方法:先exit关闭节点,然后添加–allow-insecure-unlock参数重新启动节点:
    【geth --identity “TestNode” --rpc --rpcport “8545” --datadir mydata --port “30303” --networkid 6666 --nodiscover console --allow-insecure-unlock】
    重新执行解锁命令,成功:
    在这里插入图片描述

4.开始转账

web3.eth.sendTransaction({from:web3.eth.accounts[0] , to: web3.eth.accounts[1],value: web3.toWei(1, "ether")})

在这里插入图片描述
上图只是转账提交成功,而不是交易成功,需要矿工挖到新的区块才能算交易成功。

所以再次执行miner.start(1)
在这里插入图片描述

  • 其实miner.stop()命令的返回值应该是true而不是null,但再不影响结果的前提下我也不想再去纠错了,如果有师傅们知道原因,欢迎留言哦~

再查看两个账户的余额:
在这里插入图片描述
转账成功!
在这里插入图片描述

发布了74 篇原创文章 · 获赞 39 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u011785309/article/details/104923360
今日推荐