前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >以太坊的安装、私有链创世区块搭建以及智能合约的部署

以太坊的安装、私有链创世区块搭建以及智能合约的部署

作者头像
梦飞
发布2022-06-23 13:21:00
1.3K0
发布2022-06-23 13:21:00
举报
文章被收录于专栏:csdn文章同步csdn文章同步

相关阅读:

区块链项目——区块链网上安全商铺(合约代码、前端、后台)

文章目录

代码语言:txt
复制
- [1. 以太坊的安装、私有链创世区块搭建、私有链节点的加入](https://cloud.tencent.com/developer)
    - [1.1 以太坊的安装](https://cloud.tencent.com/developer)
    - [1.2 私有链创世区块搭建](https://cloud.tencent.com/developer)
    - [1.3 私有链节点的加入](https://cloud.tencent.com/developer)
- [2. 对getBlock中所得区块的各个字段的解释](https://cloud.tencent.com/developer)
- [3. 对日志输出的解释](https://cloud.tencent.com/developer)
- [4. 智能合约的部署](https://cloud.tencent.com/developer)
- [5. 对交易的字段的解释](https://cloud.tencent.com/developer)
- [6. 附:常用指令小记](https://cloud.tencent.com/developer)

1. 以太坊的安装、私有链创世区块搭建、私有链节点的加入

1.1 以太坊的安装

官方下载地址:https://geth.ethereum.org/downloads/

下载相应系统版本的geth,安装成功后可以查看版本信息:

1.2 私有链创世区块搭建

  • 先创建一个genesis.json文件,内容如下:
  • 使用geth --datadir “./chain” init ./genesis.json命令初始化创世区块 –datadir指定当前区块链网络数据存放的位置在chain目录中。
  • 启用私有链

–nodiscover:私有链地址,不会被网上看到;

console:启动命令行模式,在Geth中执行命令;

在当前目录执行tail -f eth_output.log,可以看到输出日志:

(注:windows要执行tail命令首先先下载tail.exe,并把该文件加入到C:\Windows\System32下,下载地址:http://files.cnblogs.com/hantianwei/tail.zip)

  • 添加和查看账户
  • 挖矿

这时eth_output.log可以看到挖矿的记录。

再次查询余额发现不再是0,这是挖矿所得。

1.3 私有链节点的加入

  • 查看第一个节点的enode url信息
  • 再打开另一个终端,以相同的方式初始化第二个节点:

启动第二个节点:

因为在同一台计算机上,所以要指定另一个端口。

  • 把第一个节点作为peer添加进来
  • 验证 在第二个节点中输入:

第一个节点输入:

peerCount为1,且该peer的node id与第二个节点相符,说明添加成功。

2. 对getBlock中所得区块的各个字段的解释

  • difficulty:BigNumber,当前块的难度,会随着计算速度的变化而调整。
  • extraData: 字符串,额外数据,可以包含个性信息,或者是附加说明。
  • gasLimit:Number,设置对gas的消耗总量限制,用来限制区块能包含的交易信息总和。
  • gasUsed:Number,当前区块累计使用的总的gas
  • hash:字符串,区块的哈希值
  • logsBloom:字符串,由日志信息组成的一个Bloom过滤器(数据结构)
  • miner:字符串,20字节,挖出该区块(获得奖励)的矿工
  • mixHash:一个Hash值,当与nonce组合时,证明此区块已经执行了足够的计算
  • nonce:字符串,8字节,POW生成的哈希,当与mixHash组合时,证明此区块已经执行了足够的计算
  • number:当前区块的计数(从创世区块0开始递增1)
  • parentHash:字符串,32字节,父区块的Hash值
  • receiptsRoot:此区块所有交易收据的树的根节点Hash值
  • sha3Uncles:字符串,32字节,叔区块(父区块的兄弟区块)的哈希值
  • size:Number,当前区块的字节大小
  • stateRoot:字符串,32字节,此区块最终状态树根节点的Hash值
  • timestamp:Number,此区块初始化时的unix的时间戳
  • totalDifficulty:BigNumber,从区块链的第一个区块到此区块的难度的总和
  • transactions:数组,交易对象,或32字节的交易哈希
  • transactionsRoot:字符串,32字节,此区块的所有交易组成的树的根节点Hash值
  • uncles:数组,叔哈希(父区块的兄弟区块)的数组

其他未在这里出现的值:

  • ommerHash:当前区块ommers列表的Hash值
  • beneficiary:接收挖此区块奖励的账户地址

3. 对日志输出的解释

  • 启用时日志: 主要是一些配置、协议的初始化; 内存、缓存等的分配、生效和加载等。
  • 挖矿日志: Updated mining threads:每次开始挖矿时更新挖矿线程; Transaction pool price threshold updated:每次开始挖矿时更新交易池的价格阈值; Commit new mining work:提交新的挖矿工作; Generating DAG in progress:挖矿一开始都要生成DAG(Directed Acyclic Graph,有向无环图),从生成的DAG里面找随机数做hash,生成之后就正常挖矿了; Successfully sealed new block:成功封装新区块; block reached canonical chain:区块到达权威链,number是区块号; mined potential block:挖矿,挖掘潜在区块。
  • 其他 Seting new local account:设置新本地账户 Submitted transaction:提交交易

4. 智能合约的部署

  • 编写简单智能合约
  • 在Remix下编译合约

编译成功后,点击Details会弹出一个信息框,复制WEB3DEPLOY框中的代码:

  • 部署合约
    • 在geth启用私链,解锁账户地址:
代码语言:txt
复制
- 开始挖矿产生新的区块,合约才能成功部署。开始挖矿后,把复制的代码粘贴进来,回车,过一会能看到Contract mined! 说明部署成功。
代码语言:txt
复制
- 现在可以在geth中调用合约中的函数f:(3 \* 8 = 24)

5. 对交易的字段的解释

解锁账户 --> 发送交易 --> 挖矿 --> 查询交易

blockHash:交易所在块的Hash;

blockNumber:交易所在块的块号;

from:交易发送者的地址;

gas:该交易允许消耗的最大gas数量;

gasPrice:交易发送者愿意支付给矿工的gas单价;

nonce:用来区别同一用户发出的不同交易的标记;

hash:该交易的哈希值,作为交易的ID;

input:存在的数据字段,如果存在,则表明该交易是一个创建或者调用智能合约交易;

to:交易接收者的地址;

r、s、v:交易签名的三个部分,由发送者的私钥对交易hash进行签名生成。

value:发送者要转移给接收者的以太币数量;

6. 附:常用指令小记

  • 初始化一个创世区块,启用私链,显示输出日志 geth --datadir “./chain” init ./genesis.json geth --datadir “./chain” --nodiscover console 2>>eth_output.log tail -f eth_output.log
  • 查看账户信息 (web3.)eth.accounts (web3.)eth.accounts0eth.getBalance[eth.accounts0] web3.fromWei(web3.eth.getBalance(acc0)) web3.toWei(3,“ether”)
  • 创建与解锁账户 (web3.)personal.newAccount(“123456”) acc0 = web3.eth.accounts0personal.unlockAccount(acc0,“123456”)
  • 挖矿 miner.start(1) miner.stop()
  • 交易相关 eth.sendTransaction({from:acc0,to:acc1,value:web3.toWei(3,“ether”)}) eth.getTransaction(“0x78af0530e0e77c3b5b8a91a0720a11abe4436500a169953234ec987ebb3725c7”)

一个相对完整的区块链项目:

区块链项目——区块链网上安全商铺(合约代码、前端、后台)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 以太坊的安装、私有链创世区块搭建、私有链节点的加入
    • 1.1 以太坊的安装
      • 1.2 私有链创世区块搭建
        • 1.3 私有链节点的加入
        • 2. 对getBlock中所得区块的各个字段的解释
        • 3. 对日志输出的解释
        • 4. 智能合约的部署
        • 5. 对交易的字段的解释
        • 6. 附:常用指令小记
        相关产品与服务
        区块链
        云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档