你应该知道的区块链运作7个核心技术

区块链运作的7个核心技术,你知道几个?

1.区块链的链接

顾名思义,区块链即由一个个区块组成的链。每个区块分为区块头和区块体(含交易数据)两个部分。区块头包括用来实现区块链接的前一区块的哈希(PrevHash)值(又称散列值)和用于计算挖矿难度的随机数(nonce)。前一区块的哈希值实际是上一个区块头部的哈希值,而计算随机数规则决定了哪个矿工可以获得记录区块的权力。

2.共识机制

区块链是伴随比特币诞生的,是比特币的基础技术架构。可以将区块链理解为一个基于互联网的去中心化记账系统。类似比特币这样的去中心化数字货币系统,要求在没有中心节点的情况下保证各个诚实节点记账的一致性,就需要区块链来完成。所以区块链技术的核心是在没有中心控制的情况下,在互相没有信任基础的个体之间就交易的合法性等达成共识的共识机制。
区块链的共识机制目前主要有4类:PoW、PoS、DPoS、分布式一致性算法。

3.解锁脚本

脚本是区块链上实现自动验证、自动执行合约的重要技术。每一笔交易的每一项输出严格意义上并不是指向一个地址,而是指向一个脚本。脚本类似一套规则,它约束着接收方怎样才能花掉这个输出上锁定的资产。

交易的合法性验证也依赖于脚本。目前它依赖于两类脚本:锁定脚本与解锁脚本。锁定脚本是在输出交易上加上的条件,通过一段脚本语言来实现,位于交易的输出。解锁脚本与锁定脚本相对应,只有满足锁定脚本要求的条件,才能花掉这个脚本上对应的资产,位于交易的输入。通过脚本语言可以表达很多灵活的条件。解释脚本是通过类似我们编程领域里的“虚拟机”,它分布式运行在区块链网络里的每一个节点。

4.交易规则

区块链的交易就是构成区块的基本单位,也是区块链负责记录的实际有效内容。一个区块链交易可以是一次转账,也可以是智能合约的部署等其他事务。

就比特币而言,交易即指一次支付转账。其交易规则如下:
1)交易的输入和输出不能为空。
2)对交易的每个输入,如果其对应的UTXO输出能在当前交易池中找到,则拒绝该交易。因为当前交
易池是未被记录在区块链中的交易,而交易的每个输入,应该来自确认的UTXO。如果在当前交易池中找到,那就是双花交易。
3)交易中的每个输入,其对应的输出必须是UTXO。
4)每个输入的解锁脚本(unlocking script)必须和相应输出的锁定脚本(locking script)共同验证交易的合规性。

5.交易优先级

区块链交易的优先级由区块链协议规则决定。对于比特币而言,交易被区块包含的优先次序由交易广播到网络上的时间和交易额的大小决定。随着交易广播到网络上的时间的增长,交易的链龄增加,交易的优先级就被提高,最终会被区块包含。对于以太坊而言,交易的优先级还与交易的发布者愿意支付的交易费用有关,发布者愿意支付的交易费用越高,交易被包含进区块的优先级就越高。

6.Merkle证明

Merkle证明的原始应用是比特币系统(Bitcoin),它是由中本聪(Satoshi Nakamoto)在2009年描述并且创造的。比特币区块链使用了Merkle证明,为的是将交易存储在每一个区块中。使得交易不能被篡改,同时也容易验证交易是否包含在一个特定区块中。

7.RLP

RLP(Recursive Length Prefix,递归长度前缀编码)是Ethereum中对象序列化的一个主要编码方式,其目的是对任意嵌套的二进制数据的序列进行编码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • 用不到50行的Python代码构建最小的区块链
  • Python学习入门之区块链详解
  • 14张图看懂什么是区块链技术
  • 200行代码轻松实现一个简单的区块链
  • 利用swoole+redis实现股票和区块链服务
  • Python从零开始创建区块链
(0)

相关推荐

  • 用不到50行的Python代码构建最小的区块链

    译者注:随着比特币的不断发展,它的底层技术区块链也逐步走进公众视野,引起大众注意.本文用不到50行的Python代码构建最小的数据区块链,简单介绍了区块链去中心化的结构与其实现原理. 尽管一些人认为区块链是一个等待问题的解决方案,但毫无疑问,这种新技术是计算机的奇迹.但是,区块链到底是什么呢? 区块链 它是比特币或其他加密货币进行交易的数字账本,账本按时间顺序记录并对外公开. 在更一般的术语中,它是一个公共数据库,新数据存储在一个名为块的容器中,并被添加到一个不可变链(后来的区块链)中添加了过去

  • 14张图看懂什么是区块链技术

    区块链技术最初源于解决"拜占庭将军"问题,金融科技的发展使得区块链技术有了更好的应用场景.它最显著的特征是去中心化,当然在应用中也存在一些技术和安全的挑战.欲知何为区块链?且看图示详解. 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们. 您可能感兴趣的文章: 用不到50行的Python代码构建最小的区块链 Python学习入门之区块链详解 你应该知道的区块链运作7个核心技术 200行代码轻松实现一个简单的区块链 利用swoole+redis实现股票和区块链服务

  • 200行代码轻松实现一个简单的区块链

    英文原文:Lauri Hartikka 区块链的基础概念很简单:一个分布式数据库,存储一个不断加长的 list,list 中包含着许多有序的记录.然而,在通常情况下,当我们谈到区块链的时候也会谈起使用区块链来解决的问题,这两者很容易混淆.像流行的比特币和以太坊这样基于区块链的项目就是这样."区块链"这个术语通常和像交易.智能合约.加密货币这样的概念紧紧联系在一起. 这就令理解区块链变得不必要得复杂起来,特别是当你想理解源码的时候.下面我将通过 200 行 JS 实现的超级简单的区块链来

  • Python从零开始创建区块链

    作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Python来创建一个区块链. 对数字货币的崛起感到新奇的我们,并且想知道其背后的技术--区块链是怎样实现的. 但是完全搞懂区块链并非易事,我喜欢在实践中学习,通过写代码来学习技术会掌握得更牢固.通过构建一个区块链可以加深对区块链的理解. 准备工作 本文要求读者对Python有基本的理解,能读写基本的Python,并且需要对HTTP请求有基本的了解. 我们知道区块链是由区块的记录构成的不可变.有序的链结构,记录可以是交易.文件或任何你

  • 利用swoole+redis实现股票和区块链服务

    本文主要给大家介绍了关于swoole+redis实现股票和区块链服务的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. PHP 的redis扩展是阻塞式 IO ,使用订阅/发布模式时,会导致整个进程进入阻塞.因此必须使用Swoole\Redis异步客户端来实现. $server = new swoole_websocket_server("0.0.0.0", 9501); $server->on('workerStart', function ($ser

  • Python学习入门之区块链详解

    前言 本文将给大家简单介绍关于区块链(BlockChain)的相关知识,并用Python做一简单实现.下面话不多说,来一起看看详细的介绍: 什么是区块链 简单来说,区块链就是把加密数据(区块)按照时间顺序进行叠加(链)生成的永久.不可逆向修改的记录.具体来说,它区块链是由一串使用密码学方法产生的数据块组成的,每一个区块都包含了上一个区块的哈希值(hash),从创始区块(genesis block)开始连接到当前区块,形成块链.每一个区块都确保按照时间顺序在上一个区块之后产生,否则前一个区块的哈希

  • 你应该知道的区块链运作7个核心技术

    区块链运作的7个核心技术,你知道几个? 1.区块链的链接 顾名思义,区块链即由一个个区块组成的链.每个区块分为区块头和区块体(含交易数据)两个部分.区块头包括用来实现区块链接的前一区块的哈希(PrevHash)值(又称散列值)和用于计算挖矿难度的随机数(nonce).前一区块的哈希值实际是上一个区块头部的哈希值,而计算随机数规则决定了哪个矿工可以获得记录区块的权力. 2.共识机制 区块链是伴随比特币诞生的,是比特币的基础技术架构.可以将区块链理解为一个基于互联网的去中心化记账系统.类似比特币这样

  • 区块链java代码实现

    概述 MerkleTree被广泛的应用在比特币技术中,本文旨在通过代码实现一个简单的MerkleTree,并计算出Merkle tree的 TreeRoot. Merkle Tree 是一种数据结构,用于验证在计算机之间和之间存储,处理和传输的任何类型的数据. 目前,Merkle树的主要用途是确保从对等网络中接收的数据块未受损和未改变,和检查其他对等网络没有撒谎发送假数据块. Merkle Tree应用举例 比特币 GitA mazon's Dynamo Gassandra 比特币中的应用 比特

  • 使用Java实现简单的区块链程序的方法

    在本文中,我们将学习区块链技术的基本概念.我们还将用Java实现一个基本的应用程序,重点介绍这些概念. 此外,我们还将讨论该技术的一些先进概念和实际应用. 什么是区块链? 那么,让我们先来了解一下区块链到底是什么- 好吧,它的起源可以追溯到Satoshi Nakamoto在2008年发表的关于比特币的白皮书. 区块链是一个分散的信息分类帐.它由通过使用密码学连接的数据块组成.它属于通过公共网络连接的节点网络.当我们稍后尝试构建一个基本教程时,我们将更好地理解这一点. 我们必须了解一些重要的属性,

  • 用Django实现一个可运行的区块链应用

    对数字货币的崛起感到新奇的我们,并且想知道其背后的技术--区块链是怎样实现的. 但是完全搞懂区块链并非易事,我喜欢在实践中学习,通过写代码来学习技术会掌握得更牢固.通过构建一个区块链可以加深对区块链的理解. 准备工作 本文要求读者对Python有基本的理解,能读写基本的Python,并且需要对HTTP请求有基本的了解. 我们知道区块链是由区块的记录构成的不可变.有序的链结构,记录可以是交易.文件或任何你想要的数据,重要的是它们是通过哈希值(hashes)链接起来的. 环境准备 环境准备,确保已经

随机推荐