{"content":{"title":"从小白角度看区块链基础","body":"## 区块链介绍\r\n\r\n1. 去中心化的数字账本，通过多个专用计算机记录交易数据\r\n2. 通过密码学和共识机制保证数据的完整性，不可篡改，且无法逆向更改\r\n3. 目的提高安全度，信任度，透明度，同时一定程度上保证隐私\r\n\r\n## 区块链认识\r\n\r\n#### 组成\r\n\r\n1. 一种特殊的数据库。这是由分布在世界各地计算机维护。\r\n2. 区块链数据组成区块，由密码学技术提供保护，按照时间顺序排列。\r\n\r\n#### 去中心化\r\n\r\n1. 将对网络的控制和决策权分散给用户，无第三方介入，点对点进行交流\r\n2. 交易由分布式计算机网络验证和记录，这些计算机协同工作以维护网络的完整性。\r\n\r\n#### 工作原理\r\n\r\n##### 特性\r\n\r\n1. 记录的数据不可更改\r\n2. 交易数据由专用计算机（即节点）的全球分布式网络进行记录。\r\n\r\n##### 过程\r\n\r\n1. 当一个用户发起交易，向其他用户发送一定数量的加密的货币，该交易就会被传到网络上的每一个节点，之后被每个节点验证。\r\n\r\n2. 交易经过验证后，与其他经过验证的交易一起，被打包，由矿工添加到区块中。使用加密方法，将区块链接在一起，形成区块链。这一过程就体现了共识机制。需要每个节点保持一致性，\r\n\r\n3. 密码学在其中的运用，例如哈希算法，这个过程就是将任意输入的信息转化成固定长度的字符串。这个值是几乎不可逆的，它的另外一个特性就是即使是轻微的改变数据，输出的结果也会截然不同\r\n\r\n   假设有一个哈希函数，称为SHA-256（Secure Hash Algorithm 256位），它是一种常用的哈希函数，输出长度为256位（32字节）。\r\n\r\n   现在我们有两个输入数据：\r\n\r\n   1. 输入数据1：\"Hello, World!\"\r\n   2. 输入数据2：\"Hello, world!\" （注意：第一个字母 \"w\" 是小写）\r\n\r\n   我们将使用SHA-256哈希函数对这两个输入数据分别进行处理，得到它们的哈希值。\r\n\r\n   1. 对输入数据1进行哈希处理，得到哈希值1：a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146\r\n   2. 对输入数据2进行哈希处理，得到哈希值2：ed076287532e86365e841e92bfc50d8c2d4bda1b8bd6fb378c8a9419d2652eda\r\n\r\n   你可以看到，尽管两个输入数据非常相似，只有一个字母的大小写不同，但它们的哈希值却是完全不同的。这展示了哈希函数的抗碰撞性，即使输入数据只有微小的变化，也会导致生成的哈希值完全不同。\r\n\r\n4. 区块中的每个区块都包含前一个区块的哈希值，从而形成一条不可逆的区块链。想要更改一个区块，就必须更改后续所有的区块。\r\n\r\n5. 公钥密码学在其中的应用为用户之间的交易保证安全。私钥保密，公钥公开，同时数字签名技术，也就是私钥配合一段信息进行加密形成的摘要，以此验证双方的身份。传输交易信息时用的对方的公钥，解开信息用的自己的私钥。保证了交易的准确性和安全性。\r\n\r\n6. 透明性。任何人都可以在公共区块链网站查看区块链的所有数据，包括交易数据和区块数据。\r\n\r\n#### \t公钥密码学\r\n\r\n1. 对称加密：双方首先要确定加密算法和解密算法，确定密钥后，需要发送确定的密钥进行验证是否是相同的，在密钥配送的过程中，便会产生安全问题，如何确保你的信道没有被人监听呢？那么就诞生了非对称加密\r\n\r\n2. (1976年)  非对称加密的原理就是，双方都有自己的一对公钥和密钥，也就是4个密钥。公钥是公开的，而私钥是自己保留的，不被任何人知道。私钥解公钥。这个过程就是:小红用小明发来的公钥来对发送的信息进行加密，当小明收到后，小明用自己独有的私钥，进行加密。小明私钥是不被任何人知道的。因此保证了在不安全的信道中信息传输的安全性。\r\n\r\n3. RSA  公开的非对称加密算法公开  1977 年\r\n\r\n4. 公钥数字签名的安全性概念   1988年\r\n\r\n   那么承接上面的一个问题，你怎么知道发送信息方到底是不是小红呢？我们上面说，小红用小明的公钥进行加密，小明用私钥解密，这一过程只是确定了接收方结果。假设信道是透明的，任何人都可以用小明的公钥加密，向小明发送信息，那么就无法保证信息的准确性。\r\n\r\n   那怎么办？这时候就体现了数字签名的作用。数字签名就是  用私钥配合一段信息，用哈希函数生成出来的一个摘要。等于是在传输的信件下再附加一个签名，当小明收到信件后，用小红给的公钥去解开，得到里面的摘要后，对信件本身使用哈希函数，得到的摘要2与信件里的摘要进行匹配，如果两个值是相同的，那么可以确定是小红发的。\r\n\r\n   哈希函数加密的特性就是，如果信件稍有更改，那么小明对信件本身使用哈希函数的值将与众不同。过程中，这样既保证了信息传输的安全性和确定性。\r\n\r\n5. 其实这样子还不是很安全，如果A,B方都要知道互相的公钥也是要发送的，如果没有人去做保证，如何辨别真假呢？这时就需要有一个双方都信任的第三方证书颁发机构来协调。\r\n\r\n   证书颁发机构，即认证中心**CA** 。将公钥与那个人的身份信息进行绑定，相当于防沉迷验证吧，如果CA像未成年人用爸妈的身份证进行验证呢？那都别玩了，难办啊，难办就不办了（掀桌子）。要改变这个情况，真正的要理解去中心化思想了。\r\n   \r\n#### 盲签名\r\n\r\n密码学家大卫·乔姆(David Chaum)于1982年发表的论文[《不可追踪支付的盲签名技术》](https://sceweb.sce.uhcl.edu/yang/teaching/csci5234WebSecurityFall2011/Chaum-blind-signatures.PDF)对此进行了详述。\r\n\r\n以转钱为例子。\r\n\r\n-A  -B  -C  分别是支付方，银行，收款方。\r\n\r\n-数字签名，盲化函数，随机函数\r\n\r\n你使用盲签名的目的是为了，，不想让银行知道 是A  转钱 给 C    以此保证A C双方的隐私，和这场交易的隐私。\r\n\r\n**流程是这样的**（我的理解）\r\n\r\n1. 首先 A 使用随机函数，生成一个随机数x，再用盲化函数生成 c(x),  把这个盲化的数交给 B，应该包含A账户的存钱的地址，不然逻辑不通。\r\n2. B使用它自己的私钥进行加密，生成   s‘(c(x))  ，发回给A，同时执行扣除这个地址的钱。（我不知道是否可以通过地址查询到A的身份。）\r\n3. 随后，A使用B的公钥进行解密，同时使用对应的解盲函数（因为是A选择的盲化函数）得出  s’(x)，应该是确定剩下的余额，和打包的钱。之后将计算的结果给B\r\n4. B确认完成后，应该再次用了私钥进行加密，接着给C\r\n5. C用B的公钥解密，此时为了确保转的钱是准确的，跟上面的数字签名一样，比对摘要是否一样。确认一样后，把确认的余额再次用B的公钥加密，返回给B。\r\n6. B检查签名，给账户加钱\r\n\r\n可能会看的很迷糊，不过明白一下几点更好理解\r\n\r\n1. 既然要确保A C 的隐私性，那首先至始至终都只用B的公钥，而B加密始终是用私钥\r\n2. 所有加钱，转钱，都是B这个中间人来完成，所有的行为只是为了验证到底要加减多少钱。第一步，A首先声明我要转多少钱，等于是我要减多少钱，然后B给A的存钱”地址“减了这么多钱后，A确认无误，返还信息给B，指明转钱的对象”地址“。然后B将这个信息发送给C，由C来确认，转多少钱,B有没有搞错，确认无误后，给C加钱\r\n\r\n## 共识机制\r\n\r\n1. 需要一个已经定死的事实为标准。即使一些节点出现故障，也就是上面提到的专用计算机。要确保其他节点都拥有相同的账本副本。其中包含了所有的交易记录。\r\n\r\n#### 工作量证明\r\n\r\n我的理解是对新区块的合理性的检验。工作量的话是指在得出合理性新区块所作出的计算量。新区块添加到区块链的过程通常是由矿工完成的。当矿工成功解决了一个复杂的数学问题（也称为哈希碰撞），他们就会创建一个新的区块并将其广播到网络中。这个新的区块需要满足一些标准才能被其他节点接受并添加到他们的区块链中，这些标准包括：\r\n\r\n1. **合法性验证**：新区块中的所有交易都必须是合法的，即遵循区块链的协议和规则。这包括检查交易的签名是否有效、发送方是否有足够的余额等。\r\n2. **工作量证明**：新区块的头部信息需要满足一定的工作量证明条件。这通常是通过在区块头部中包含一个特定的随机数（称为Nonce）来实现的，矿工需要找到一个合适的Nonce，使得区块的哈希值满足一定的条件，例如以一定数量的零开头。\r\n3. **前一个区块的引用**：新区块的头部信息需要包含对前一个区块的引用，以确保区块链的连贯性和顺序性。\r\n4. **时间戳**：新区块的头部信息中通常包含一个时间戳，表示这个区块被创建的时间。\r\n5. **奖励交易**：通常，新区块中会包含一个特殊的交易，即矿工的奖励交易，用来奖励成功创建新区块的矿工。这个交易会将一定数量的加密货币（如比特币）发送给矿工。\r\n\r\n这些标准确保了新区块的合法性和有效性，以及区块链的连贯性和安全性。一旦新区块被其他节点验证并接受，它就会成为区块链上的新的最后一个区块，包含在网络中的所有节点的区块链副本中。\r\n\r\n### 工作量证明产生价值？\r\n\r\n1. 用单向随机函数找出具有特征的值 \r\n\r\n   -找出  n  个0开头的哈希值\r\n\r\n   一个固定的字符可以有多个对应的哈希值，而你的任务是通过不断尝试来找到满足特定条件的哈希值。这个过程需要不断的尝试。那这个有什么用呢？\r\n\r\n2. 抵御垃圾邮件\r\n\r\n   不断尝试需要算力，算力是需要资源的，可以理解为钱。如果对邮件发送不做限制，便会造成邮件轰炸，类似于短信轰炸。而运用了这个，那么发送就需要一定的成本，可以很好抑制。我只需要验证符合条件哈希值就行了，验证一次，但是发送邮件可能需要大量计算。易于验证，难于计算。\r\n\r\n3. 怎么说明这种哈希值的稀缺性呢？（电子货币）\r\n\r\n   当一个人通过计算得到特定特征的哈希值，这时就变成了可花费的电子货币。比如要求你找到前面数位有多少个0的哈希值，因为哈希值生成的随机性与难改变，就需要通过类似暴力破解的方式去找。这就需要算力资源。而算力资源的提供需要电力和设备，这样就产生了成本，以此电子货币也拥有了类似于物质层面的价值。那么随着你前面的得到0的哈希值越大，那么代表着这个价值越大，随着技术与算力的提生，那么这个哈希值就会贬值。\r\n\r\n#### 权益证明\r\n\r\n基于加密货币持有量的共识算法。在PoS机制中，参与网络维护和验证交易的节点被选中的概率与它们持有的加密货币数量成正比。它弥补了工作量证明的一个缺点。如果大部分人都为了开一个新区块都花费资源，那将消耗巨大。不管能力强弱，一般是能力强的解决这个数学问题的概率高，当然能力弱的也有机会选中。选择少部分人去开新区块。\r\n\r\n## 区块链网络\r\n\r\n#### 公有区块链\r\n\r\n任何人都可以访问和使用它，无需特定的许可或授权。这些网络通常是开源的和透明的，意味着其代码和交易数据对所有人都是可见的。比特币和以太坊是公共区块链的典型例子。在公共区块链上，参与者可以自由地创建和验证交易，并参与共识过程。在安全性方面很高，但是效率低\r\n\r\n#### 私有区块链\r\n\r\n不对公众开放的区块链网络，通常由单个实体或组织管理和运营。这些网络主要用于内部目的和用途，可以更好地控制访问权限和数据可见性。不使用共识机制也没事，因为内部成员都是知道的，而且隔绝了外部访问。适用于企业，而且效率要高\r\n\r\n#### 联盟链\r\n\r\n联盟链是介于公共区块链和私有区块链之间的一种混合形式。在联盟链中，多个组织共同创建和管理一个共享的区块链网络。这些网络可以是开放的或封闭的，根据联盟成员的需求来设定访问权限和数据可见性。只要与验证者达成共识，就可以轻松的进行修改。能不能正常运行还要看参与者的行为了\r\n\r\n了解更多\r\nhttps://academy.binance.com/zh/articles/what-is-blockchain-and-how-does-it-work"},"author":{"user":"https://learnblockchain.cn/people/19204","address":"0x0c3743ac31156269ea0ea04bdb1864645017a92b"},"history":"bafkreicp2dy3whljfqkuxqhsaxk3bi33c4zvtkuniqaakqokzdbwcjfcg4","timestamp":1719016939,"version":1}