主页 > imtokenios下载 > 区块链基础

区块链基础

imtokenios下载 2023-11-14 05:13:27

区块链技术基础 什么是区块链技术?运行区块链客户端的计算节点可以相互通信。每个节点维护一个账本。每个节点的收支记录都会广播给其他节点。过滤掉一个节点作为一段时间的总记录。其他节点接收所选节点的记录并将其与自己的账本进行比较。如果没有问题,他们将存储它。被选中的节点将在此期间获得一定的劳动报酬。节点通过非对称加密的公钥表示其身份,并通过加密传输数据。区块链的组成部分是区块链账本。区块链账本用于记录数据。区块分为区块头和区块体。块头存储前一个块的哈希值,使每个块串联起来,通过默克尔根关联记录块头。交易。如果链上的某个数据块被修改,则该数据块无法链接到区块链账本中,在其他节点验证时会被发现,因此区块链账本可以防止数据被篡改。共识机制。一种筛选算法,可以选择特定的节点,作为大家对账的参考。密码算法。其中包括计算区块哈希值的算法,计算区块内交易的哈希值和默克尔根算法,以及创建账户和签署交易的算法。脚本系统。脚本系统驱动节点发送和接收数据,通过实现不同功能的脚本实现不同的服务。网络路由。在这些节点组成的网络中,没有固定的节点路由服务器,所以每个节点都扮演着路由服务器和用户的角色,通过路由交换数据。什么是挖矿

挖矿是争夺区块打包权,通过计算打包获得奖励。

什么是难度值?

难度值描述了获得打包权的门槛。计算结果必须小于难度值才有机会获得打包权。整个系统每次都会更新难度值,10分钟后可以计算出一个区块的速度。 .

初始难度值很大,通过比赛很容易获得。以下是0号区块链的难度值:

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

值越大,越容易满足。随着算力的增加,为了保持每 10 分钟出块的速度,值会逐渐降低,越来越难以满足。初始难度值表达信息如下,bits为上述值的压缩值,上述值(近似值)可通过0x00FFFF*2^(8*(0x1D-3))还原。区块0的难度为1比特币算法有什么意义,当前难度为初始难度值除以当前难度值:

"nonce": 2083236893, 
"bits": "1d00ffff", 
"difficulty": 1

如何获得包装权?

每笔交易都会以广播的形式发送给其他节点,因此计算节点会拉取缓存一段时间的交易记录,然后使用如下公式计算:

SHA256(SHA256(version + prev_ hash + merkle_ root + ntime + nbits + nonce)) < TARGET

如果计算值小于目标难度值TARGET,则成功。参数说明如下:

名称含义说明

版本

区块的版本号

固定值

prev_hash

前一个区块的哈希值

固定值

比特币算法有什么意义

merkle_root

要打包的交易哈希树的根值,即Merkle根值

变量比特币算法有什么意义,由获取的交易交易决定,获取交易的交易也有一定的优先级规则,比如根据手续费的大小

及时

区块时间戳

必须大于前11个区块的平均时间戳,距离当前网络时间不超过2小时,可能小于前一个区块的时间戳

nbits

当前难度值

固定值

随机数

随机数

0~2^32 值

如果想要小于目标难度值,需要不断尝试各种参数组合,消耗大量计算资源。一旦计算成功,就会广播一个新的区块,其他客户端验证通过后会写入自己的区块链账本。

什么是挖矿?

获得打包权后,整个区块链系统都会给客户账户一定的奖励。这个奖励是打包交易的第一条记录。该奖励相当于发行新货币。比特币的总数是有限的。奖励的比特币每 4 年减半。 2140年,所有比特币都将被挖出,挖矿的收入来源将是交易手续费。

多个节点都符合条件?

如果多个节点同时计算出符合条件的区块,它们会一起广播,最后传播得最多,最长链的区块会被保留。

如何生成比特币地址 随机数生成器生成一个随机数作为私钥。私钥作为参数,公钥由椭圆曲线算法SECP256K1算法生成。但是不能从公钥计算出私钥。计算公钥哈希。通过SHA256和RIPEMD160计算公钥的hash值,保证值的唯一性。将地址版本号连接到公钥哈希值,Bitnet的主版本号为0x00,然后两次SHA256得到前四个字节作为校验值。连接版本号+公钥哈希值+校验值,进行BASE58编码,最终得到比特币地址。比特币如何验证交易

比特币算法有什么意义

SPV钱包的验证流程:

下载标头中包含 Merkle 根的完整区块链标头。计算您要验证的交易的哈希值。根据哈希值找到对应的区块头。获取计算 Merkle 根所需的哈希值。计算默克尔根。检查默克尔根是否正确。根据区块高度位置,可以判断交易收到了多少确认。比特币如何管理交易记录

比特币中的交易交易模型是UTXO(Unspent Transaction Output),即未花费的交易输出。用户拥有的 UTXO 等价于他的资产。 UTXO只记录用户获得的比特币,一次未使用的交易输出只能使用一次。

交易分为输入和输出。在 A 向 B 转移 10 个比特币的交易中,整个模型的工作原理如下:

账户 A 有两个 UTXO,5 个比特币和 6 个比特币。 A找出他名下满足10个比特币的UTXO,可以由多个未使用的交易(5+6),这些UTXO作为输入。输出是B得到10个比特币的UTXO,A获得1比特币(找零)UTXO。区块链技术的含义数据不可篡改。分布式存储,数据多地备份。匿名。用户通过地址识别,地址通过公钥生成。因此,真正的其背后的用户不能仅通过这个地址获得价值传递自包含的信任机制,工作量表明比特币是有价值的,比特币可以在任何比特币节点交付比特币自动网络共识一个交易是所有其他节点见证和自动达成共识。区块链开发中的合约是什么?

契约是每个人行为的共同标准,少数人不遵守契约不会影响整个系统。

在比特币中,所有节点都遵循合约来处理每笔转账交易。比如A向B转账100个比特币,A所在节点需要验证使用的UTXO是否属于A,并保证里面有足够的钱给B,然后将交易记录广播给所有其他节点,其他节点会验证 A 使用的输入 UTXO 属于 A 并且是真实的(检查交易记录签名),并且转账输入和输出相等,验证成功后交易记录在区块链中。如果部分节点没有按照上述流程进行传输和验证,整个系统最终会保证正确的结果。

密码算法哈希计算

哈希计算的特点:

输入长度为任意长度,输出为固定长度。计算过程高效

为了满足密码安全性,哈希函数需要满足以下条件:

反冲突。两个不同的输入产生相同的输出,这会产生冲突。为了满足安全性,散列函数需要保证很难找到两个具有相同输出的输入,而且需要大量的时间。信息隐藏。得到哈希函数的输出,输入不能取反。益智友好。给定结果需要满足的条件,很难找出输入满足该条件。

常用哈希算法:MD5、SHA1、SHA2、SHA3。

区块链中使用的哈希计算:

区块链哈希。区块头在区块链中经过哈希处理,得到区块的哈希值。该散列存储为下一个块的一部分,因此散列充当指针,将块链接在一起。这确保了每个块在添加到链中后无法修改。默克尔树。默克尔根用于验证区块中的交易记录是否正确。比特币中的默克尔根是一棵二叉默克尔树。首先将交易交易的哈希值配对计算一个新的哈希值,然后将新的哈希值配对计算下一个哈希值。哈希值,递归,直到计算出最后一个哈希值,从而形成一棵哈希树。 Merkle 树可以验证交易记录的完整性。非对称加密算法

常用的非对称加密算法:

RSA。 RSA算法的公钥和私钥是一对大素数。从公钥和密文中恢复明文的难度相当于分解两个大素数的乘积。质数越大,破解难度越大。但计算速度较慢。椭圆曲线密码学。安全性高,公钥生成方便,存储空间小。比特币使用 SECP256k1 算法。编码和解码算法 ASCII 编码。常见的字节编码。 Base64 编码。一个二进制文件用64个字符表示,所以每3个字节表示为4个字符,不足3个字节的补码为x00。 Base58 编码。删除了 Base64 中的一些混淆,例如 0、O、I、1 和容易转义的 +、/。 Base58 检查。在Base58的基础上增加了校验码。比特币最终在生成地址的时候使用了Base58check,可以在收到地址的时候进行校验。如果计算出的校验值与接收到的校验值不同,则认为数据无效。密码算法的具体应用生成账户地址。使用公钥生成地址并作为账户,使用私钥验证账户。价值转移防御。私钥用于签署交易,其他人使用公钥验证交易是我发送的。交易数据用他人的公钥加密,只有接收方才能解密数据。完整性证明。块数据通过哈希因子进行验证。零知识证明。为了证明您对某笔交易的所有权,您只需对交易的部分内容进行解码即可证明所有权,而无需提交您自己的密码进行验证。共识算法FLP定理(可靠通道,节点故障)

在具有可靠网络和节点故障的最小化异步模型中,没有可以解决一致性问题的确定性算法。

比特币算法有什么意义

CAP 定理

分布式计算不能同时保证一致性、可用性和分区容错。

两军之间的问题(渠道不靠谱)

A->BA和C需要联手攻击B才能获胜,所以双方需要约定一定的攻击时间,并且双方的信使都需要经过B,所以信使可能会被拦截B. A 向 C 发送消息,C 需要发送确认消息告诉 A 消息已经到达。如果没有发送确认,A也会认为消息被B截获;同样,A收到C的确认后,也需要向C发送确认消息,否则C会认为该消息被B截获。这样,A和C就无法达成最终协议。

两军问题的关键在于两点之间的通道传输不可靠。

拜占庭将军问题(通道可靠,节点不失效,节点生成错误数据)

N位将军通过信使传递信息,需要商定一个计划,但是这N位将军中有叛徒会故意发送虚假信息来破坏计划。事实证明,如果1/3以上的将军背叛,就不可能达成一致的计划。

如何达成共识

既然在保证一致性方面存在上述问题,那么如何实现一个实用的共识算法呢?

激励机制:采用一定的激励机制。根据博弈论,每个节点都会最大化自己的利益,最终大部分节点都会按照规则行事。

随机性:拜占庭问题是每个将军通过协调达成共识。如果有一位将军来做最后的决定,问题就会简单很多。在去中心化的系统中,如何选择这个“将军”?

常用的共识算法:

以下是一些共识算法的简单介绍。

Paxos 算法

Paxos算法解决非拜占庭问题,有故障节点,但没有恶意节点。

算法分为提议者和接收者。提议者发送提案,由接收者投票表决,超过一半的提案视为通过。

在处理多个proposer和多个receiver时,采用“两阶段提交”的方案:准备阶段决定对哪个提案进行投票,提交阶段确认提案是否通过。

筏算法

比特币算法有什么意义

该算法通过选举“大将军”角色来解决一致性问题。容错数为(n-1)/2.

当没有“将军”时,将发起选举,每个人都会投票,得票最多的将成为“将军”。如果票数相同,则选举失败,每个人都被分配一个随机的睡眠时间。沉睡者只能投票,不能被选举。最先醒来的将启动新一轮的选举。 The elected "General" keeps a heartbeat with everyone, and once the "General" fails, a new election is required. “将军”负责发布指令。村长接到上级指示后,会给大家下达指示。在收到过半的反馈后,“将军”向上级确认数据已收到。 “将军”收到上级的回复后,会通知大家数据已经提交。 PBFT算法

Pbft算法的基本过程主要包括以下四个步骤,其中f代表错误节点的个数。容错次数为n/3。

客户端向主节点发送请求。主节点是随机选择的。主节点将请求广播给其他节点,节点执行pbft算法的三阶段共识过程。节点处理完三阶段流程后,向客户端返回消息。当客户端从f+1个节点收到相同的消息时,表示共识已经正确完成。

PBFT算法多用于联盟链,达成共识的延迟以秒为单位,基本满足商业需求。

PoW 工作量证明算法

算法过程:

将交易广播到所有节点;每个节点接收到交易信息并放入区块;在每一轮中,获得打包权的节点广播其保留的区块;其他节点在验证区块中的交易正确后接收区块;其他节点通过将接收到的块的哈希放入他们创建的块中来确认块的正确性。

节点将最长的链作为有效链。节点可以选择在收到其他人的块后拒绝,或者根据该块继续挖掘。如果选择拒绝,则需要自己计算出正确的区块,但自己启动的链不会比主流链长,所以自己构建的链不会被识别;根据“不利原则”,节点会主动接收他人广播的区块,并根据该区块进行挖矿。

PoW 的特点:

完全去中心化;性能消耗高,效率低;更长的共识周期; 1/2 容错。 PoS 权益证明

PoS不像PoW,任何人都可以参与出块,但需要提前在区块链上投入一些权益,投入越多,越受信任。整个过程如下:

加入PoS机制的人成为持币者和验证者;根据持有的币量,选择其中一种给予打包区块的权利;如果在规定时间内没有计算出新的区块,则选择下一个节点给予打包权:打包成功后广播,被大家接受后,可以获得一定的利息。这种利息由持有的硬币数量和硬币的年龄决定。每次打包成功后,币龄清零。 DPoS

Delegated Proof of Stake,在 PoS 的基础上进行了改造。每个持币者都可以选举一个代表来代替自己计算和验证区块链。因此,代表将获得一定数额的金钱。报酬,代表人可以自愿退出或被淘汰。该算法减少了参与节点的数量,减少了节点响应时间,提高了交易效率。

区块链扩容遇到的问题

比特币的区块限制为1M,导致记录的交易数量较少,限制了比特币在大规模快速交易中的应用,因此提出了两种解决方案来解决这个问题:

块扩展。将块大小设置为更大。隔离见证。从区块中删除证明交易有效性的签名。

由于比特币是去中心化的,不可能所有节点都进行改造,这些节点的所有者对改造意见不一。因此,不同的节点选择会导致整条链分叉,从而形成两条区块链。

比特币算法有什么意义

侧链

为了让资产在不同区块链之间转移,提出了侧链的概念。主链和侧链之间的转移步骤如下:

在比特币主链上锁定一定数量的比特币,并激活侧链上的等值资产;侧链根据自己的游戏规则对这些资产进行交易;相应地,侧链可以冻结相应的资产,并将返还的比特币转移到主链。闪电链

为了加快交易速度,减轻主链压力,提出了闪电网络的概念。闪电网络在主链外开辟了快速交易通道,临时记录一段时间内的频繁交易,并定期将最终结果提交给主链。

区块链分叉中的问题

由于部分节点使用新版合约,与旧版节点不兼容,导致区块链分叉为旧节点生成的区块链和新节点生成的区块链。在这种情况下,整个区块链将分裂为两个系统,形成“互相玩”的局面。

除了版本差异造成的分叉外,还有可能因为网络问题导致部分节点被隔离,这样这些分裂的节点就形成了一个小的区块链系统,由此产生的区块链和主链也会产生。巨大差距。在某个时间,这部分节点重新加入主链,整个系统需要花费一些成本来弥合原来的差异。

51% 的计算能力

如果一个人拥有区块链一半以上的算力,他就拥有了大部分的打包权,他可以在打包交易时作弊从中获利。

有算力优势的人也可以拒绝一些交易记录,让一些交易长时间无法完成。

如果拥有算力优势的人采取某种手段违反原有协议,会挫伤其他人的挖矿积极性,对整个区块链造成负面影响。

丢失的私钥

私钥丢失代表着整个区块链所持有的财富丢失,目前没有办法找回。

交易确认延迟

并不是所有的交易都会立即打包进区块,一笔交易需要一定的时间才会被打包进区块链。交易在被确认之前被缓存在内存中。打包块需要时间来计算,并且块的大小是有限的。即使打包成块,也会被大多数节点接受,因此一笔交易的最终确认周期更长。 .

有些节点会根据手续费来控制打包的顺序,所以普通交易更难打包成块。

不断扩展的区块链

随着时间的推移,随着交易数量的积累,带有记账功能的区块链数据将会越来越多,这些数据的查询和存储也将变得越来越困难。

内容参考“白话区块链”