首页 > 其他分享 >这破玩意就是区块链?

这破玩意就是区块链?

时间:2022-12-22 23:23:07浏览次数:62  
标签:玩意 以太 -- 节点 交易 https 区块 这破

eth tron 快速入门

这破玩意就是区块链?

@

目录
web3.0、区块链、比特币、以太坊这些一定有听过,这篇带你快速入门。通过学习你可以掌握以太坊的运转,实现原理,及如何搭建自己的区块链节点。

image

历史

说到区块链,我们马上就会想到比特币、中本聪、当下最火的链以太坊,以及华人孙宇晨创立的波场[tron]。

但是今天我们不讨论金融和娱乐,单纯讲解什么是区块链技术,如果你打算涉猎,希望可以帮助到你,我是 JavaPub 博主。

前提

在开始阅读本文以前,你可以先了解区块链中的一些专有名词,例如:什么是外部账户、合约账户、双重支付、同质化代币、工作量证明等。

掌握这些概念会让你接下来的阅读更轻松。如果你了解可以访问以太坊浏览器:https://ethereum.org/zh/glossary/#contract-account

本篇我们以以太坊为例讲解,它也目前社区活跃度最高的区块链。

区块链节点

我们知道区块链是一个去中心化的账本,每个人都可以参与记账和对账,更多的人参与也造就了区块链被篡改的高成本。

image

以太坊有三种节点方式。

1、轻节点;轻节点只包含区块标头Block Header,没有储存Body,借此大幅降低储存空间的需求。当需要验证交易时会向邻近的全节点发起相关信息请求以进行验证。应用在个人钱包,个人本地测试时使用。

2、全节点储存了所有区块的Block Header与Body(交易列表)。因为存储全部历史交易,它可以验证每一个交易的合法性;参与全网络的验证并广播。

3、归档节点相对于全节点,它存储了每个区块高度时的区块状态。比如当需要查询某个账户在指定时间点的余额时,归档节点就派上了用场。
--syncmode snap --gcmode archive

https://geth.ethereum.org/docs/interface/sync-modes

那么如何搭建自己的区块链节点呢?

搭建以太坊包含俩个服务。

image

  • 共识端是处理区块传播和分叉选择、也就是向执行客户端提供权益证明共识机制。

  • 执行端是处理和传播交易,因为我们在以太坊上执行操作都是发起一次转账交易。

https://ecn.mirror.xyz/kFzA6fZKF-qIjAOvOkJT03WizNea0Bo2Gx6tUDamFsY

全节点搭建命令

image

参数解析

重要参数

--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 安装方式

只需简单三步

image

https://ecn.mirror.xyz/kFzA6fZKF-qIjAOvOkJT03WizNea0Bo2Gx6tUDamFsY

数据模型

数据模型是维持区块链正常运转的底层结构,也是介绍区块链的核心。

这是一张区块链的大体模型图,一个接一个的区块。

image

下面这张是一个区块的内部数据结构模型图。

image

既然有模型,我们来看看区块链对外暴露的数据结构长什么样。

image

到这里,我们对区块链的数据结构有了一定掌握。

MPT

在开始了解区块链数据以前,看一下以太坊中最重要、也是基础的一个数据结构;

第一张图是一个普通的二叉树,第二张是一个压缩前缀树。可以明显看到它的优势:

  1. 减少空间消耗。
  2. 也增加了查询速度。

image

image

https://learnblockchain.cn/books/geth/part3/mpt.html

再来看一下这棵默克尔树。树根值是由从子叶开始不断进行哈希计 算得到最终能代表这棵树数据的哈希值。提供了很好地防篡改性。

image

下面这棵就是以太坊中使用最广泛的默克尔前缀数了。

以太坊的默克尔前缀树是在默克尔树和前缀树的基础上又做了优化,衍生出了扩展节点、分支节点和叶子节点。以使用更少的空间、更快速的查询到vaule值。

  • 扩展节点:它是一个k-v结构,这里的value是其他节点的hash值,通过hash可以快速连接到其他节点。
  • 分支节点:分支节点是16长度数组,故该节点有效减少了层高和存储空间。
  • 叶子节点:也就是我们树结构的叶子节点,存储了真实的数据。

image

区块结构

了解完默克尔前缀树后,来看一下以太坊中最重要的三棵树。

首先是状态树、也称为全球状态树。从右往左看,这棵树主要存储来外部账户和合约账户。外部账户也就是用户账户、由密钥控制。合约账户由智能合约的代码控制。

外部账户包含交易次数和账户余额,合约账户除了包含交易次数和账户余额、还包含合约代码的哈希值和合约代码用到的存储树。

image

第二棵重要的树是交易树,它是在每个区块中单独维护、由打包区块的矿工打包后永远不再修改。

交易树也是一棵默克尔前缀树,它包含了当前区块中中打包的交易、叶子节点记录了每笔交易的信息。包括当前交易的双方地址、交易的gas费用、转账费用等。

https://foresightnews.pro/article/detail/14814

image

image

image

第三棵是交易收据树,记录了每笔交易发生的详细信息。

image

image

案例

在使用中,我们一般使用 geth 和以太坊服务端做交互。

这里出几个题,可以自我检验一下自己有没有掌握。答案可以来公号 JavaPub 获取。

  1. 如何监控新合约?

  2. 如何监控合约产生新交易?(如何做到实时监控)

  3. 查询指定区块时,某外部用户余额?

  4. 如何监控产生了erc20合约

最后

推荐一套北大肖臻老师的课程,这套课程也被当做国内最好的入门课程。https://www.bilibili.com/video/BV1Vt411X7JF

参考

  1. 以太坊黄皮书:https://ethereum.github.io/yellowpaper/paper.pdf

  2. 以太坊节点安装:https://ethereum.org/zh/developers/docs/nodes-and-clients/

  3. web3js命令交互:https://learnblockchain.cn/docs/web3js-0.2x/web3.eth.html

  4. chainID: https://learnblockchain.cn/books/geth/part1/config.html

  5. 关键词:https://ethereum.org/zh/glossary/#contract-account

  6. web3js:https://web3.tryblockchain.org/Web3.js-api-refrence.html

  7. MPT:https://learnblockchain.cn/books/geth/part3/mpt.html

  8. https://www.npmjs.com/package/@ethereumjs/tx

  9. 部署新合约: https://blog.csdn.net/ffzhihua/article/details/81502844

  10. 共识:https://www.8btc.com/books/834/ethereum-book/_book/第十五章.html

原文:https://blog.csdn.net/qq_40374604/article/details/128414747

标签:玩意,以太,--,节点,交易,https,区块,这破
From: https://www.cnblogs.com/JavaPub/p/16999798.html

相关文章

  • GO语言凭什么是区块链的首选语言
    GO语言凭什么是区块链的首选语言区块链的火热也带动了GO语言开发者的突增,那凭什么GO语言会成为最主要的区块链构建语言之一。我认为这得益于GO语言的性能、抽象度、简单性......
  • Docker安装FISCO BCOS区块链平台
    2.0版本提供docker镜像,支持容器化部署,省去了很多编译安装过程遇到的各种问题。FISCOBCOS官方镜像docker地址:https://hub.docker.com/r/fiscoorg/fiscobcos/builds  我......
  • 区块链,中心去,何曾着眼看君王?用Go语言实现区块链技术,通过Golang秒懂区块链
    区块链技术并不是什么高级概念,它并不比量子力学、泡利不相容原则、哥德巴赫猜想更难以理解,但却也不是什么类似“时间就是金钱”这种妇孺皆知的浅显道理。区块链其实是一套......
  • 项目中引进这玩意,排查日志又快又准!
    大家好,我是三友~~背景随着微服务盛行,很多公司都把系统按照业务边界拆成了很多微服务,在排错查日志的时候,因为业务链路贯穿着很多微服务节点,导致定位某个请求的日志以及上......
  • 区块链技术和DeFi,在去中心化使命中发挥关键作用!
       在传统的金融观念中,流动性在整个经济金融体系中的重要性不言而喻,甚至可以说现代金融交易体系甚至整个货币体系,都是在为更好的提升市场交易的流动性,而在不断演变和......
  • 区块链相关理解整理
    对于区块链,有人视之为宝物,有人视之为妖魔。那么它到底是否是很重要,甚至是可以产生重大影响的技术呢?比特币的出现已经证明了它可以带来重要影响了。那么它的作用只能是提......
  • 一些让我当年搞混的玩意:传参
    前言记得大一刚开始学后端语言的时候,在基础阶段学的"传参"知识点让我一脸懵,现在凭着感觉简单写写,最近给自己定了任务:每周至少写3篇blog,反正也没什么人看,就随便叨叨几句分......
  • GO语言凭什么是区块链的首选语言
    GO语言凭什么是区块链的首选语言区块链的火热也带动了GO语言开发者的突增,那凭什么GO语言会成为最主要的区块链构建语言之一。我认为这得益于GO语言的性能、抽象度、简单性......
  • 跟我一起搞区块链吧!
    Web3.0与区块链不管你是从事任何职业,最近身边是不是总有人对你说:"诶你知道吗,现在web3.0可火了!“web3.0?当你第一次听到这个词是否会感到云里雾里呢?其实它指的就是第三代互联......
  • 如何轻松快速构建区块链应用?技术大牛带来一线技术实践分享
    在Web3、数字藏品浪潮下,区块链的热度再次飙升。它虽然在过去发展中起起伏伏,但是从未沉寂。最近几年,从政务、供应链金融、司法存证到跨境贸易、保险、教育和医疗等领域,区块链......