区块链基础概念

这篇具有很好参考价值的文章主要介绍了区块链基础概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

去中心化应用( DApp)

为了解决网络应用中过分依赖服务端的状况,出现了点对点( Peer to Peer, P2P )应用 在这类应用中并不存在对网络完全控制的中心节点 其中部分节点挂掉,并不影响整个 P2P 络的运行,这类应用就称为去中心化应用(Decentralized Application, DApp )。

在DApp中并没有中心服务器来协调节点,或者决定什么是对、什么是错,因此,这个挑战的难度是非常大的。通常的做法是采用一致性协议(concensus protocol)解决这个问题。不同的DApp通常使用不同的数据结构共识协议(一致性协议),例如比特币使用工作量证明协议(PoW)来达成共识。

DApp的内部货币

扫描获取学习资源对于中心化应用来说,所有者需要盈利才能长期维持应用的运行,因为中心化应用需要支付服务器维护费用、带宽费用、人员费用等。

DApp虽然没有所有者,但与中心化应用一样,维持DApp节点的正常运行仍然需要一定的费用,如硬件、网络支持等。

因此,DApp节点需要一些回报来维持运行,于是内部货币登场了。

大多数DApp都有内置的内部货币,或者说成功的DApp都有内部货币,如比特币网络中的比特币就是最著名的内部货币。

那么,每个节点到底应该收多少内部货币呢?这由共识协议决定。根据共识协议,只有为维护DApp安全和运行做出贡献的那些节点可以赚取内部货币,只进行数据读取的节点没有回报。

例如,在比特币网络中,只有矿工(miner)成功挖矿才能赚取比特币。

比特币

比特币(bitcoin)是一种去中心化的货币,是最热门的DApp。它的成功充扫描获取学习资源分展示了DApp的强大。比特币的成功大大鼓励了人们创建其他的DApp。

在了解比特币的细节以及为什么人们认为它是一种货币之前,需要先了解两个概念:账本和区块链。

账本

任何交易都需要记录,而用于记录比特币交易的就是账本(ledger)。

那么账本与数据库有什么区别呢?在数据库中,我们可以添加、修改和删除交易。

而在账本中,只能添加新的交易,不能修改和删除交易。

数据库可以用来实现账本,反过来却不可以。

区块链

区块链(blockchain)是用于创建去中心化账本的数据结构。

也就是说,区块链与数据库类似,是用于存储数据的。

区块链中的区块按序号排列。

每一个区块都包含一个交易集合、前一个块的哈希码、时间戳(指明区块被创建的时间)、块奖励、块序号等信息。

由于每一个块都包含了前一个块的哈希码,因此可以创建一个互相连接的块链表,所以称为区块链。

网络中的每一个节点都会保存一份区块链的副本。

为了保证区块链的安全,工作量证明(PoW,Proof-of-work)、股权证明(PoS,Proof-of-stake)以及其他一致性协议被应用于区块链。

由于有这些协议的存在,在区块链中添加新的区块并不容易。

例如在PoW中,向区块链中添加区块的过程被称为“挖矿”,挖矿从技术上说就是解决复杂的计算难题,那么为什么要解决复杂的计算难题呢?通过PoW及其他一致性协议是如何阻止某些节点对整个区块链进行攻击的呢?请读者继续往下面看。

工作量证明(PoW)

工作量证明就是在修改区块链之前先证明你没有对DApp网络进行攻击,那怎么证明呢?

就是在本地先完成一项艰巨的任务,然后将完成的结果上传到DApp网络进行验证。

这项艰巨任务不能让人用投机取巧的方式来完成,而必须用最原始、最暴力的方式一点一点完成,完全是拼体力。

那么可能有很多读者会问,完成任务和阻止攻击有什么关系呢?这就涉及到一个经济学的概念——经济惩罚。

大概的意思就是既然无法阻止攻击,那么就让攻击付出惨重的代价。

完成DApp网络交给你的任务是要付出代价的。

通常的任务是解决计算难题,这种解决计算难题的过程被称为“挖矿”。

在PoW中要解决的难题通常是计算一个哈希值。例如,给定一个基本字符串“Hello,world!”,我们的任务是在这个字符串后面添加一个名为nonce的整数值,对变更后的字符串进行SHA256哈希运算。

如果得到的哈希结果(以十六进制的形式表示)是以0000开头的,则验证通过。

为了达到这个工作量证明的目标。我们需要不停地变化nonce值,对得到的新字符串进行SHA256哈希运算。

按照这个规则,我们需要经过4251次计算才能找到恰好前4位为0的哈希散列。

我们发现,随着0的个数增加,计算难度会以指数级增加。

而且没有算法可以立即算出结果,但结果却是非常容易验证的。

所以要完成这项任务,就需要非常强的算力,也就是说,要想搞定这个任务,需要自己花钱买一大堆高性能的计算机。

而且现在区块链分派的任务越来越艰巨,计算量越来越大。

如果是以营利为目的的攻击,为了价值几百万的比特币,你可能要花几千万去购买计算机来完成相关的计算任务,完全是得不偿失。

所以很少有人去做这样的赔本攻击,因为攻击成本远大于收益。

股权证明(PoS)

PoS,简单来说,就是根据持有货币量和时间来分发利息的一个制度。

在股权证明模式下,有一个名词叫币龄,每个币每天产生1币龄。

例如,你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个PoS区块,那么你的币龄就会被减去一定的值,每减少365个币龄,将会从区块中获得0.05个币的利息(可理解为年利率5%),那么在这个案例中,利息=3000×5%/365=0.41个币。

要注意的是,5%的年利率仅仅是举例,并非每个PoS模式的币种的年利率都是5%,比如点点币(PPCoin)就是1%年利率。

51%攻击

由于区块链分配的任务难易程度不同,可能有很多人会想对策,我不用那么大的计算量,少买点计算机,是否可以找到一个盈利的平衡点呢?其实一开始我也是这么想的,但根据PoW算法机制,如果你的计算量不够大,是无法控制区块链的走向的,也就是说,即使你投入了大量的成本用于完成任务,也不能保证自己成功。

这就像花了数百万购买彩票,你只能保证比只花两元钱购买一张彩票的人的中奖几率大,但并不能保证你一定能中奖。

花几十万上百万就中袋洗衣粉,花两元中500万的也大有人在。

彩票奖金的设置永远要远小于购买所有彩票的成本,所以你是无法采用穷举的方式保证100%中奖率的。区块链也是一样,即使你的算力非常强,也不能保证100%成功,只是成功的可能性更大而已。

前面说过,谁的算力强,谁最先解决问题的概率就越大。当掌握超过全网一半算力时,从概率上就能控制网络中链的走向,这就是“51%攻击”。

这也是区块链的弱点,谁掌握了超过全网一半的算力,谁就可以主导区块链网络。

也就是说,区块链并非100%安全,但如果要蓄意攻击区块链网络,则需要付出很大的代价。

那么区块链受到攻击也只能存在于理论层面。

以太坊

以太坊是一个去中心的平台,允许在这个平台上运行DApp。

DApp需要依赖智能合约,而智能合约要使用Solidity语言编写。

一个或多个智能合约可以一起组成一个DApp。

因此,运行在以太坊上的程序就是智能合约。

我们可以将以太坊比喻成Android系统,而智能合约就相当于运行在Android系统上的各种底层的库。

智能合约之所以要运行在以太坊网络上,是因为运行在以太坊网络上的智能合约非常容易彼此交互,有了智能合约,开发人员并不需要为集成各种共识协议和其他东西而操心,这些以太坊都可以轻松为我们搞定,而开发人员只需要编写应用逻辑代码即可。

以太坊有一个内部货币,叫以太币(ether)。为了发布智能合约或执行智能合约中的方法,需要一定数量的以太币。

超级账本项目

超级账本是一个项目,是首个面向企业应用场景的开源分布式账本平台。

在Linux基金会的支持下,超级账本项目吸引了包括IBM、Intel、Cisco、摩根大通、腾讯等在内的众多科技和金融巨头的参与,以及在银行、供应链等领域的积极应用实践。

超级账本社区在成立一年多以来,也得到了广泛的关注和飞速的发展,目前已经拥有超过140家企业会员。

加入超级账本的有很多项目,Fabric项目就是最早加入超级账本项目的顶级项目。

它由IBM、DAH等企业于2015年年底提交到社区。

Fabric项目用Go语言实现,在gitHub上已经有超过5000次提交。

该项目的定位是面向企业的分布式账本平台,创新地引入了权限管理支持,设计上支持可插拔、可扩展,是首个面向联盟链场景的开源项目。

联盟区块链是指其共识过程受到预选节点控制的区块链。

例如,不妨想象一个由15个金融机构组成的共同体,每个机构都运行着一个节点,而且为了使每个区块生效,需要获得其中10个机构的确认(2/3确认)。

区块链允许每个人都可以读取、只受限于参与者或走混合型路线,例如区块的根哈希及其API(应用程序接口)对外公开,API可允许外界用来作有限次数的查询和获取区块链状态的信息。这些区块链可视为“部分去中心化”。

创世块

区块链是由若干个区块组成的。在私有链启动后,需要为区块链创建第一个区块(创世块),相当于数据结构中链表的头节点。

不过以太坊并不知道如何创建这个创世块,需要我们告诉以太坊如何创建,因此,首先需要建立一个创世块的描述文件,这个描述文件是JSON格式的。

区块链基础概念,区块链智能合约,区块链

  • chainld:指定了独立的区块链网络ID。网络ID在连接到其他节点的时候会用到,以太坊公网的网络ID是1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络ID。不同ID网络的节点无法相互连接。

  • homesteadBlock:以太坊推出的第2个主要的区块发行版本,Frontier是第1个推出的区块发行版本(也是测试版本)。建议使用homesteadBlock,值为0表示有效。dificulty:挖矿的难易程度,该值越小,挖矿越容易。也就是说,该值越小,挖矿需要的(算力越小)。在测试时,建议设置一个比较小的值,否则挖矿会需要很长时间。

  • gasLimit:挖每个区块需要消耗资源的上限。gas与以太币(ether)一样,都是以太坊中的单位。之所以将gas与ether分开,是为了防止ether的波动对挖每个区块消耗资源的影响。

  • alloc:为了测试挖矿而临时分配的账户,其中balance表示当前账户的余额,单位是Wei。文章来源地址https://www.toymoban.com/news/detail-778579.html

到了这里,关于区块链基础概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 区块链智能合约

    合同(Contract)又称契约、协议,是平等主体的自然人、法人、其他组织之间设立、变更、终止民事权利义务关系的协议。本质上讲,合同是当事双方或多方在并没有充足信任的情况下,通过文字的约定和法律的权威,对各自的权利与义务进行的约定。 制订合同的目的就在于

    2024年01月18日
    浏览(50)
  • 区块链与智能合约

    要想理解什么区块链,我们先来从本质上认识一下它 区块链:本质上是一个去中心化的分布式账本数据库,是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方法。 没有基础的人可能理解起来有点困难,我们来解释一下里边的名词 分布式账本数据库:了解过

    2024年03月26日
    浏览(91)
  • 区块链之智能合约

    智能合约( Smart Contract)是以计算机为主要工具,将数学算法嵌入到程序中,用以证明某个事件是否符合约定条件,并保证各方在约定时间内按照约定条件达成一致,以验证和执行合同条款的计算机文本。简单来说智能合约是一个计算机程序,可以在不需要第三方介入的情况

    2024年02月07日
    浏览(45)
  • 区块链智能合约开发学习

    最近正在肝区块链知识学习,入手学习智能合约的开发,由于网上资料实在是太少了,好不容易东拼西凑完成了智能合约的开发、编译、部署、web3js调用(网页页面)和web3j调用(java调用),赶紧趁热把重点提炼出来。 先上图,是我最近学习知识点的一个概括总结,此外还包

    2023年04月18日
    浏览(42)
  • 【区块链 | 审计】智能合约审计指南

    区块链技术正在改变各行各业的游戏规则,而智能合约是这一进程的关键部分。智能合约通过消除第三方中介机构来确保各方之间的信任,有助于降低成本,同时也增加透明度。如果你要写一个智能合约,关键是你要对代码进行审计,以确保它能正常工作--而且不会有任何错

    2024年02月07日
    浏览(54)
  • 区块链2——Solidity智能合约开发

    区块链 索引目录 智能合约是一种以代码形式编写的自动执行合约,它们运行在区块链上。这些合约定义了在特定条件下发生的事件以及相应的行为。 1.1 智能合约结构 版本声明(Version Declaration): 智能合约通常以声明版本开始,指定合约应该使用的Solidity编译器版本。例如

    2024年02月05日
    浏览(69)
  • 人工智能与金融技术:区块链与智能合约

    随着人工智能技术的不断发展,金融领域也在不断融合人工智能技术,为金融服务提供了更多高效、智能化的解决方案。其中,区块链技术和智能合约是人工智能与金融技术的重要组成部分,它们在金融领域中发挥着越来越重要的作用。本文将从以下几个方面进行阐述: 背景

    2024年04月14日
    浏览(93)
  • 区块链与智能合约:合作的未来

    区块链技术和智能合约是两个彼此紧密相连的概念,它们共同构成了一个新兴的技术领域,具有广泛的应用前景。区块链技术是一种分布式、去中心化的数据存储和传输方式,它可以确保数据的完整性和安全性。智能合约则是一种自动执行的协议,它可以在区块链网络中实现

    2024年04月10日
    浏览(51)
  • 区块链智能合约编程语言 Solidity

    上文介绍了区块链生态发展,我们知道以太坊的到来可以使开发人员基于区块链开发DApp,本文介绍 Solidity 编程语言的使用,然后基于 Solidity 编写一个简单的智能合约。 Solidity 是以太坊开发人员使用的编程语言,用来编写智能合约,运行在以太坊虚拟机(EVM)上。 有开发经

    2024年02月12日
    浏览(61)
  • 智能合约编写高级篇(一)获取区块时间

    本文档从区块时间基本概念出发,介绍了中移链的区块时间接口和应用方向。适用于EOS智能合约的高级开发人员,熟悉如何获取当前区块时间、下一个区块的区块时间、时间戳的转换等。 01 概述 (一)时间戳 时间戳是标识特定事件何时发生的字符序列或编码信息。如今,该术

    2024年02月17日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包