草庐IT

每个开发人员都应该知道的区块链的五个关键组件

Siddharth Singh 2023-03-28 原文
如果您对以太坊区块链开发感兴趣,请查看我在此处[1]讨论的路线图。

在这篇文章中,我将讨论区块链的五个基本概念,每个开发人员都应该知道他们是否想进入 web3 环境。此外,dev.to[2]上的本系列文章将是以太坊区块链开发的完整指南,敬请期待。

理解文章的一些关键字:•公钥- 它是一个加密密钥(一长串十六进制数字),任何人都可以获得并使用它来加密针对特定收件人的消息或交易,这样加密的消息只能通过使用第二个密钥来解密只有收件人知道(私钥)。

•私钥——如上所述,私钥是由相应的公钥加密的消息或交易的解密器或解码器。私钥不得与任何人共享,因为它能够从您的地址进行交易。

•共识机制——共识机制是指用于在分散的计算机网络中达成协议、信任和安全的任意数量的方法。在区块链和加密货币中,工作量证明 (PoW) 和权益证明 (PoS) 是两种最普遍的共识机制,区块链通过这些机制同步每个节点的相同数据。

1. 匿名

所以,像以太坊和比特币这样的区块链确实是透明的,换句话说,例如,每个 BTC 的历史都可以从它被开采的区块到当前存储它的钱包进行追踪。同样,也可以跟踪所有地址的交易历史,因为地址是由公钥识别的,而且这些对每个人都是可见的。

尽管如此,区块链还是以某种方式保持匿名:

化名或假名

假名,意思是某人使用的名字,而不是他/她的真名。区块链做同样的事情,而不是像传统银行系统那样使用你的原始名字,区块链通过你的地址(公钥)进行交易。例如,您的真实姓名可以是 Mike,但在区块链环境中,您将被识别为“1ExAmpLe0FaBiTco1NAdDr3sSV5tsGaMF6hd”或其他名称,更长的名称。

上图显示了传统银行系统如何暴露用户的姓名、地址甚至联系电话,而区块链交易使用别名即公钥(钱包地址)进行交易。

区块链是强大的,因此仅仅隐藏我们的名字并不能使我们在这个非常广阔的环境中安全,因为强大的力量会带来更大的威胁。观看这个 5 分钟的 Youtube 视频以了解区块链匿名性

https://www.youtube.com/watch?v=4pKBvJEk6Nc

2.权力下放

现在我们经常听到“去中心化为王”这样的话。那么,这是什么意思,什么是去中心化?

•去中心化是将控制和决策从中心化实体(个人、组织、政府或其团体)转移到分布式网络。

为了清楚地理解它,假设您与您的朋友进行了交易,并且您的朋友收到了这笔交易。现在在这里,交易发生在你和你的朋友之间,但是交易的知识对四个实体是可用的,你、朋友、涉及的银行(你的和你朋友的),以及支付网络处理器(VISA、万事达卡等) .).

支付流程是这样的(见下图)。在这个传统的银行系统中,假设你向你的银行“A”发送了一个请求,要求向你的朋友发送 500 美元,现在银行需要验证你和你的朋友,但是假设你朋友的账户在银行“B”中,那么银行“A”无法验证您朋友的详细信息,因为银行不共享客户信息(由于竞争)。支付网络处理器(VISA、MasterCard 等)来了,每家银行都将所有客户的数据出售给这些公司,他们代表银行验证用户。

这就是为什么去中心化为王,在去中心化系统中,如加密货币(BTC、ETH、DogeCoin 等),如果用户将加密货币发送给他们的朋友或任何人,只有发送者和接收者会知道交易。下图比较了中心化金融(CeFi)和去中心化金融(Defi)。

3.容错

去中心化的区块链网络看起来像这样(见下图)。世界各地的几个节点(或区块)在没有任何中央当局监管的情况下连接在一起。所有节点都通过共识协议连接,因此每个节点都是同步的,并且在整个区块链网络中具有相同的交易账本。由于所有节点中都存在相同的数据,因此如果一个或两个节点受到威胁或受到威胁,系统仍然不会出现故障。这些故障节点将从网络中移除,区块链继续运行。

4.不变性

不可变性是 web3 社区中一个被大量创造的术语。区块链是一个不可变的数据库,你不能操纵已经存在于区块链中的数据。怎么来的?为此,让我们看看哈希码是如何生成的以及块结构是什么样的。

Hash Code - 哈希码是通过各种算法(如 SHA-1)生成的长十六进制序列。只需更改您姓名的字母,哈希码就会有很大差异。例如,DEV可以散列为“ FA489B5C2003 ”,但是,DAV将变为“ A8DC567B89E ”。因此,黑客试图操纵区块链中的交易会立即导致哈希码发生变化,系统会指示节点出现故障。

请参阅下面的猴子 gif,以了解哈希码通过更改一些内容而变化的范围。

块结构- 区块链中的每个块都包含两个长哈希码。一个是区块本身的哈希值,另一个是前一个区块的哈希值(见下图)。前一个块的哈希值用于将两个块连接在一起,类似于链表。现在,假设任何黑客更改了任何一个区块中的交易细节,其哈希码将被完全更改,从而导致链从故障节点中断。

这就是更新区块链节点如此困难的原因,因为如果有人试图更新一个节点,所有连续的节点都应该同时更新,因此区块链几乎是不可变的。

5. 无需信任

无信任是去中心化的特质。区块链网络被称为无信任,不是因为你不能信任它,而是因为你不必为你的交易信任任何第三方。加密环境中的交易完全是基于点对点(P2P)的交易,没有中心化的机构(政府、银行等)参与。因此,区块链被称为一个无信任的环境。虽然没有一个系统可以完全无信任,但在某些时候,我们必须信任任何组织,但在区块链中,任何人都将是一个代码,而不是一个人。

原文:https://web3maniac.hashnode.dev/5-key-components-blockchain-developer-should-know

有关每个开发人员都应该知道的区块链的五个关键组件的更多相关文章

  1. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  4. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  5. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  6. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  7. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  8. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  9. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  10. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

随机推荐