主页 > imtoken新版本下载 > 这他妈是区块链?
这他妈是区块链?
大家好,我是JavaPub。
你一定听说过 web3.0、区块链、比特币和以太坊。 本文将带您快速了解它。 通过学习,您可以掌握以太坊的运作、实现原理,以及如何搭建自己的区块链节点。
数据模型
块状结构
案子
最后
参考
图像历史
说到区块链,我们第一时间会想到比特币、中本聪、最火的链以太坊,还有华人孙宇晨创立的波场[tron]。
但今天我们不讨论金融和娱乐,只是简单解释一下什么是区块链技术。 如果你打算涉足,希望对你有所帮助。 我是 JavaPub 的博主。
前提
在开始阅读本文之前,您可以先了解一下区块链中的一些专有名词,例如:什么是外部账户、合约账户、双重支付、同质代币、工作量证明等。
掌握这些概念将使您的其余阅读更容易。 如果你知道你可以访问以太坊浏览器:#contract-account
在本文中,我们以以太坊为例,它是目前社区中最活跃的区块链。
区块链节点
我们知道区块链是一个去中心化的账本,每个人都可以参与记账和对账。 更多的人参与也造成了区块链篡改的高成本。
图片
以太坊中存在三种类型的节点。
1、轻节点; 轻节点只包含Block Header,不存储Body,大大降低了存储空间需求。 当需要对交易进行验证时,会向相邻的全节点发起请求相关信息进行验证。 该应用程序用于个人钱包和个人本地测试。
2. 全节点存储所有区块的区块头和区块体(交易列表)。 因为它存储了所有的历史交易,所以可以验证每笔交易的合法性; 参与全网的验证和广播。
3. 与全节点相比,存档节点存储每个区块高度的区块状态。 例如,当需要查询一个账户在指定时间点的余额时,归档节点就派上用场了。 --syncmode snap --gcmode 存档
那么如何搭建自己的区块链节点呢?
构建以太坊包括两个服务。
图片
全节点构建命令
图像参数分析
重要参数
--datadir “xxx” 数据库和keystore密钥的数据目录
--cache value 分配给内部缓存的内存MB数量,缓存值(最低16 mb /数据库强制要求)(默认:128)
--maxpeers value 最大的网络节点数量(如果设置为0,网络将被禁用)(默认值:25)
--ws 启用WS-RPC服务器,允许以 websocket 方式提供访问
--http 启用HTTP服务器
--http.api 基于Http.rpc 提供的api
--http.vhosts "*" 设置访问来源设置
--http.corsdomain value 允许跨域请求的域名列表(逗号分隔)(浏览器强制)
--http-web3provider 指定可信任的ETH节点
https://learnblockchain.cn/2017/11/29/geth_cmd_options/
当然,全节点消耗的资源更多,主要是磁盘资源。 至此,正常运行需要准备4T硬盘空间。
轻节点建设
如果我们做测试使用,轻节点也足够了。
mac安装方法
只需三个简单的步骤
图片
数据模型
数据模型是维持区块链正常运行的底层结构,也是引入区块链的核心。
这是一个区块链的通用模型图,一个区块接一个区块。
图片
下面是一个block的内部数据结构模型图。
图片
有了模型,我们再来看看区块链暴露出来的数据结构是什么样子的。
图片
至此,我们对区块链的数据结构有了一定的掌握。
MPT
在开始了解区块链数据之前,先了解一下以太坊中最重要、最基础的数据结构;
第一张图是普通的二叉树,第二张是压缩前缀树。 其优势显而易见:
减少空间消耗。 还提高了查询速度。
图片
图片
我们再来看看这棵 Merkle 树。 树的根值是通过从子叶开始不断哈希计算得到最终能代表这棵树数据的哈希值。 提供良好的防篡改能力。
图片
下面这棵树是以太坊中使用最广泛的 Merkle 前缀数。
以太坊的Merkle前缀树在Merkle树和前缀树的基础上进行优化,衍生出扩展节点、分支节点和叶子节点。 要使用更少的空间,请更快地查询 vaule 值。
图像块结构
了解完默克尔前缀树,我们再来看看以太坊中最重要的三棵树。
首先是状态树,也称为全局状态树。 从右往左看,这棵树主要存储外部账户和合约账户。 外部帐户,也称为用户帐户,由密钥控制。 合约账户由智能合约的代码控制。
外部账户包含交易笔数和账户余额,而合约账户不仅包含交易笔数和账户余额,还包含合约代码的哈希值和合约代码使用的存储树。
图片
第二个重要的树是交易树,它在每个区块中单独维护,被打包区块的矿工打包后永远不会被修改。
交易树也是一棵Merkle前缀树,包含了当前区块中打包的交易,叶子节点记录了每笔交易的信息。 包括本次交易双方的地址、交易gas费、转账费等。
图片
图片
图片
第三棵树是交易回执树,记录了每笔交易的详细信息。
图片
图片案例
在使用中,我们一般使用geth与以太坊服务器进行交互。
这里有几个问题以太坊区块浏览器查询交易,大家可以测试一下自己是否掌握了。 可以从公众号JavaPub获取答案。
如何监控新合同?
如何监控合约产生新的交易? (如何做到实时监控)
查询指定区块时,外部用户的余额是多少?
如何监控生成的erc20合约
最后
推荐一套北大肖震老师讲授的课程,也算是国内最好的入门课程。
参考
以太坊黄皮书:
以太坊节点安装:
web3js命令交互:
链号:
关键字:#contract-account
web3js:
MPT:
@ethereumjs/TX
部署新合约:
共识:第 15 章.html
开通个人微信号,朋友可以加我为女王以太坊区块浏览器查询交易,名额有限,先到先得
扫描下方二维码加我微信,2022,抱在一起取暖,一起帅。