在Windows下的安装,是按着老师下发的安装教程做的。由于前面有在Ubuntu搭建的经验,所以感觉步骤大致相同,而且感觉Windows的简单一些。
1.区块链中私钥、公钥和比特币地址三者的关系
1.用户首先会得到一个私钥,私钥是由程序调用操作系统自带的一个算法模块,在本地自动的生成的。
2.然后钱包这个应用会将这个私钥通过椭圆曲线算法这个矩阵相乘,得到用户的公钥。因为是与矩阵相乘,所以公钥也是矩阵,横向和纵向都是32位。
3.因为公钥十分复杂、不方便使用,所以又通过哈希函数得到了一个比特币地址(也叫钱包地址)。
2.比特币地址与传统账号的区别
1.相同点:
都是进行交易的一个支付转账的“凭证”。
2.不同点:
(1)比特币地址是由区块链网络自发生成,而传统账号地址是由第三方机构生成。
(2)通过比特币地址查询到的是所有的转账记录,而传统账号查询到的是余额。
3.为什么一开始只是转账提交成功,需要矿工挖到新的区块才能算交易成功?
网上找了找相关的文章,我觉得下面这篇理解起来好懂一点:
https://www.zxbcc.com/ad/478
上面那篇文章讲的是原理,然后用我的话总结一下结论:
我们可以把 [挖矿行为] 理解为 [争夺记账权] ,所以 [挖到矿] 就可以理解为 [记了一笔账] 。
所以当我们想要转账的时候,一开始只是把转账信息提交成功,需要挖到新的区块,把这笔转账信息记到新的区块里,相当于 [把这笔账记下] 以后,才能算真正的交易成功。
4.区块链交易过程
假设Alice要向Bob转一笔账,那么需要解决以下问题;
1.如何证明Alice有钱?
答:公钥,通过公钥哈希判断出钱包地址是Alice的。
2.如何证明现在发起交易的是Alice?
答:数字签名,验证Alice的数字签名。
3.如何防止Alice的钱被使用两次(即“双花”问题)?
答:打标签(就像火车票检票一样)
1.安装Win10 虚拟机
这是官方的虚拟机下载地址:
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
然后选择VMWare的就行:
然后直接导入就好:
开机密码是 Passw0rd!
。
(虚拟机里只有一个盘,C盘,所以接下来的实验都是在C盘完成的;如果用物理机的话,可以放在D盘E盘里)
2.安装Ethereum-Wallet
1.在C盘新建文件夹 Eth
,专门放置以太坊开发环境 :
2.把下载的Ethereum-Wallet-win64-0-8-10.zip压缩包win-unpacked解压到 C:\Eth
目录下:
3.安装geth
1.geth下载:https://ethereum.github.io/go-ethereum/downloads/
2.安装geth,安装在 C:\Eth
目录下
3.在 C:\Eth
目录下创建 privatechain
文件,用以存放区块链数据。
1.创建第一个节点
1.在 C:\Eth
目录下创建创世块文件 genesis.json
,文件内容如下:
{
"nonce": "0x0000000000000042",
"difficulty": "0x40000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
"gasLimit": "0xffffffff",
"alloc": {
"3282791d6fd713f1e94f4bfd565eaa78b3a0599d": {
"balance": "1337000000000000000000"
},
"17961d633bcf20a7b029a7d94b7df4da2ec5427f": {
"balance": "229427000000000000000"
}
},
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}
2.创建创世块文件
打开cmd,进入 C:\Eth
目录下(该目录下有 geth.exe
和 genesis.json
文件,便于运行geth命令),创世块文件初始化命令如下:
geth -datadir "%cd%\privatechain\node1" init genesis.json
执行该命令后会在 C:\Eth\privatechain
下自动新建 node1
文件夹,并在node1下生成 geth
和 keystore
两个文件夹。
初始化完成以后你就拥有一条自己的私有链了,之后就可以启动自己的私有链进行一些操作。
3.启动私有链节点:
geth --targetgaslimit 4294967295 --rpc --rpcport "8101" --port "30301" --rpcapi "eth,web3,personal" --networkid 2020 --identity 2020 --nodiscover --maxpeers 5 --datadir "%cd%\privatechain\node1" --unlock 0 --rpccorsdomain "*" console
注释:
出现这个页面则代表启动成功!
1.新建账户:
personal.newAccount("密码")
创建成功以后将会返回账户的地址:
如果没有账号直接开始挖矿的话,会遇到如下报错:
2.查看矿工账户:
eth.coinbase
3.设置挖矿的账号
miner.setEtherbase("账户地址")
4.开始挖矿:
miner.start(1)
出现以下界面就表示挖矿成功(那个问号代表的是小锤锤,这里没显示出来):
5.停止挖矿:
miner.stop()
返回值为true就对了。
第一次stop的时候也会初始化一次,不要慌,不要以为没停住……好吧我承认我当时慌了,连续执行了几次stop命令:
6.查看账户余额:
查询的是第一个账户的余额,当我们挖矿时,奖励金存储默认的是第一个账户。
eth.getBalance(eth.accounts[0])
换算成以太币的单位来查看余额:
web3.fromWei(eth.getBalance(eth.accounts[0]),‘ether‘)
7.转账
1.转账的前提是有两个账户,所以先新建一个账户:
2.转账前确认一下两个账户的余额:
3.解锁钱包,否则会报错:
personal.unlockAccount(eth.accounts[0])
4.开始转账:
web3.eth.sendTransaction({from:web3.eth.accounts[0] , to: web3.eth.accounts[1],value: web3.toWei(1, "ether")})
现在只是转账提交成功,需要矿工挖到新的区块才能算交易成功。(原因上面的理论知识第3点已经讲过了)
5.再次执行挖矿命令后,查看余额:
转账成功!
区块链学习之3Windows平台下以太坊私有链搭建及钱包部署和运行
原文:https://www.cnblogs.com/augustuss/p/12700871.html