[CS] 区块链记账原理

比特比(数字货币)

基于分布式网络。
比特比的本质是一种数字货币。
数字货币是一种不依赖信用和实物的新型货币,它的价值由大家的共识决定。
比特币的记账由所有运行系统的人(即节点,可以简单理解为一台电脑)共同参与记录,每个节点都保存(同步)一份完整的账本。同时使用简单多数原则,来保证账本的一致性。举个例子:如果有人在自己电脑上把自己的余额从1万改为1百万,他这个账本和大多数人的账本不一致,就会被比特币系统认为是无效的。

记账原理(区块链1.0)

区块链1.0:基于密码学安全的分布式账本(方便验证、不可篡改);
区块链2.0:与智能合约相结合(例如以太坊);

Hash函数

哈希函数:Hash(原始信息) = 摘要信息
原始信息可以是任意的信息, hash之后会得到一个简短的摘要信息。
几个特点:

  • 同样的原始信息用同一个哈希函数总能得到相同的摘要信息
  • 原始信息任何微小的变化都会哈希出面目全非的摘要信息
  • 从摘要信息无法逆向推算出原始信息

主要作用:

  • 简化信息
  • 标识信息:摘要信息也称为原始信息的id。
  • 隐匿信息
  • 验证信息

记账的具体方法

区块链在记账时会把账页信息(包含序号、记账时间、交易记录)作为原始信息进行Hash, 得到一个Hash值。此时账页信息和Hash值组合在一起就构成了第一个区块,比如:

Hash(序号0、记账时间、交易记录) = 787635ACD

在记第2个账页的时候,会把上一个块的Hash值和当前的账页信息一起作为原始信息进行Hash:

Hash(上一个Hash值、序号1、记账时间、交易记录) = 456635BCD

这样第2个区块不仅包含了本账页信息,还间接的包含了第一个区块的信息。
依次按照此方法继续记账,则最新的区块总是间接包含了所有之前的账页信息
这样产生的区块链有两个重要的优势:

  1. 便于验证:只要验证最后一个区块的Hash值就相当于验证了整个账本;
  2. 不可更改:任何一个交易信息的更改,会让所有之后的区块的Hash值发生变化,这样在验证时就无法通过。
### 关于区块链 CS251 课程资料 对于希望深入了解区块链技术并获取相关课程资源的学习者而言,斯坦福大学开设的CS251课程是一个重要的学习途径[^3]。该课程不仅涵盖了基础理论还涉及实际应用案例研究。 #### 推荐参考资料 为了更好地理解CS251的内容,建议参考如下材料: - **中本聪白皮书** 和书籍《精通比特币》提供了对比特币这一最早期也是最具影响力的区块链项目的深入解析,有助于构建对去中心化账本系统的初步认识[^1]。 - IBM推出的Hyperledger系列教程能够帮助掌握企业级联盟链平台的设计理念和技术实现细节,《Hyperledger 源码分析之 Fabric》一书更是直接针对Fabric框架进行了详尽解读,这对于理解和实践CS251中的高级主题非常有益[^2]。 - 对于想要挑战自我、检验学习成果的人来说,可以尝试解答斯坦福大学发布的区块链期末考题集,这不仅能巩固课堂上学到的知识点还能锻炼解决复杂问题的能力。 ```python # 示例:如何查找特定版本的比特币客户端代码作为学习辅助工具 import requests def fetch_bitcoin_client_version(version="0.1"): url = f"https://github.com/bitcoin/bitcoin/releases/tag/v{version}" response = requests.get(url) if response.status_code == 200: print(f"成功找到Bitcoin v{version}的相关发布信息") else: print("未找到指定版本的信息") fetch_bitcoin_client_version() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值