主页 > imtoken官方app > 比特币疯了,区块链到底是什么鬼?

比特币疯了,区块链到底是什么鬼?

imtoken官方app 2023-01-16 22:44:41

方法是将上一条记录的特征码一起编织成本条的特征码,例如:

lastHash:ca8d85b134922fe48d17bf36ceb38046;姓名:Jim;年龄:19

然后获取特征码:

from hashlib import md5

m = md5()
m.update(b"lastHash:ca8d85b134922fe48d17bf36ceb38046;name:Jim;age:19")
m.hexdigest()
# '82391695a3760b2de1c92d512b83cc14'  当前记录的特征码

这样就完成了记录直接链接

要体验一条记录是否被修改或连续比特币区块链通俗解释,只需要重新计算这条记录和它之前的记录的特征码。

当然,比特币,或者区块链的实际应用会更加复杂,比如字段、加密算法等。

实施区块链

比特币区块链通俗解释

接下来我们来实现一个比较完整的区块链

首先定义一个块类:

class Block:
    def __init__(self, index, timestamp, data, previous_hash):
        self.index = index
        self.timestamp = timestamp
        self.data = data
        self.previous_hash = previous_hash
        self.hash = self.hash_block()

    def hash_block(self):
        sha = hasher.sha256()
        sha.update((str(self.index) + str(self.timestamp) + str(self.data) + str(self.previous_hash)).encode("utf-8"))
        return sha.hexdigest()

接下来,区块链中第一个区块的特征值是如何计算的,它的前一个特征值是多少?

让我们定义一个方法来生成起始块:

def create_genesis_block():
    # 手工创建第一个区块,其索引为 0,且随意取给紧前特征值 '0'
    return Block(0, date.datetime.now(), "Genesis Block""0")

然后,我们定义一个方法来生成一个新块:

def next_block(last_block):
    this_index = last_block.index + 1
    this_timestamp = date.datetime.now()
    this_data = "Hey! I'm block " + str(this_index)
    this_hash = last_block.hash
    return Block(this_index, this_timestamp, this_data, this_hash)

比特币区块链通俗解释

现在所有的基础工作都完成了,我们建立一个区块数据库比特币区块链通俗解释,区块链,并计算第一个区块

blockchain = [create_genesis_block()]

最后我们模拟一个生成块的过程:

# 设置产生区块的个数
num_of_blocks_to_add = 20

# 产生区块并加入区块链
for i in range(0, num_of_blocks_to_add):
    previous_block = blockchain[-1]
    block_to_add = next_block(previous_block)
    blockchain.append(block_to_add)
    # 发布当前区块的信息
    print("Block #{} has been added to the blockchain!".format(block_to_add.index))
    print("Hash: {}\n".format(block_to_add.hash))

运行后,我们可以得到如下结果:

Block #1 has been added to the blockchain!
Hash: 788ec79310315740f7df959e03c8788f102c3e02d6b6ce6488ed7b7d04cc3e01

Block #2 has been added to the blockchain!
Hash: 5b6c6e0be9659ae359356015ffe9ba9e4645f181d848bfd5127dd24d29f1747c

Block #3 has been added to the blockchain!
Hash: c40e3accb5de25728770754f24d7504cc72b8138d465f5d8f1b84ad149c9b59c

Block #4 has been added to the blockchain!
Hash: 9a118b7c8b90aaab2fe6a59dd84224adb90ba4af8aaa03bf4c9b08799cc81d9b

Block #5 has been added to the blockchain!
Hash: f8fbd5b6684d926fb96dd36b89f61db3c868...<省略>...

显示的结果是区块链上的信息

在实践中,它运行在分布式环境中,需要考虑更多的因素,例如调度、合并和选举。加密算法也需要更加安全。比如椭圆曲线加密算法(ECC),常用来加强区块链的安全性和可靠性,但最基本的实现逻辑是一样的。

比特币区块链通俗解释

应用

有句话很伤感:

我明白了很多道理,但我的生活仍然很糟糕

虽然我对区块链的基本概念和实现有一个肤浅的了解,但是有什么用呢?

既不能获取和改变比特币(也不需要改变它),也不能创建区块链应用程序(尽管并非不可能)

但是这个想法可以应用在很多地方

这里我举一个我实际工作的例子:

在一个项目上,需要实现一个审计日志的功能,基本要求是连续的、防篡改的

比特币区块链通俗解释

如果不知道区块链的算法,可能需要想了很久,然后想出一个蹩脚的办法,比如用一个额外的记录来控制日志记录,或者记录关联关系(即以前做过)

现在,只需在记录中添加两个字段:上一条记录的签名和当前签名

实现另一种方法,根据指定字段计算特征码

为了方便识别,加个测试方法,就好了

除了这些应用程序之外,您还能想到哪些其他应用程序?欢迎留言

总结

截至发稿时(2021年1月9日),比特币价格接近27万,如此火爆(并不总是那么火爆,理财有风险,投资需谨慎),其内在原理就是这么简单

基于加密算法,可以完成承载海量信息的数据货币世界。这就是所谓的更简单、更有效、更稳定的解释。

比特币区块链通俗解释

不管怎样,总有它内在的基本原理和理论支持它。只有理解和掌握了它的内在原理,我们才能更好地理解一个事物。我们只需要更加好奇和耐心。

参考

PS:在公众号回复“Python”进入Python新手学习交流群,一起来

老规矩,兄弟们,你们还记得吗,点击右下角的“看”,如果觉得文章内容不错,记得分享到朋友圈让更多人知道!

【密码获取方式】

识别文末二维码,回复:210112