传统数据库与Web3数据库的差异
• Web2数据库:采用MySQL、PostgreSQL等关系型数据库,支持标准的SQL查询和索引
• Web3数据库:基于区块链技术,没有传统意义上的表和索引,数据以区块形式链式存储
区块链数据结构详解
- 区块组成
◦ 区块头(信封):
▪ 版本号:区块链协议版本
▪ 父区块哈希:前一个区块的哈希值
▪ 默克尔根:区块体交易的哈希汇总值
▪ 时间戳:区块创建时间
▪ 目标难度:挖矿难度值
▪ 随机数:矿工猜解的数值
◦ 区块体(信纸):
▪ 存储实际交易数据
▪ 采用默克尔树结构组织交易
2. 默克尔树工作原理
◦ 叶子节点存储交易哈希
◦ 非叶子节点存储子节点哈希的合并值
◦ 根哈希存储在区块头中
◦ 优势:
▪ 高效验证交易完整性
▪ 支持轻节点(只需存储区块头)
3. 区块链安全机制
◦ 哈希算法的单向性和抗碰撞性
◦ 修改任一区块数据会导致后续所有区块失效
◦ 矿工通过修改随机数满足哈希难度要求
以太坊的数据结构扩展
- 三棵默克尔树:
◦ 交易树:记录所有交易
◦ 收据树:记录交易执行结果
◦ 状态树:存储账户当前状态
- 账户模型:
◦ 每个账户包含:
▪ nonce:交易计数
▪ balance:账户余额
▪ storageRoot(合约账户):状态变量存储根
▪ codeHash(合约账户):合约代码哈希
3. 智能合约执行流程:
◦ 合约代码编译为字节码
◦ 通过交易部署到链上
◦ 调用时通过合约地址找到代码并执行
◦ 状态变更记录在状态树中
遗留问题与思考
• Web3数据库如何实现高效查询?
• 与传统数据库的索引机制有何不同?
• 以太坊采用了哪些优化方案?