以太坊(北大肖臻老师公开课笔记

  • ETH-概述
    • mining puzzle对内存要求提升,限制ASIC芯片使用,用用权益证明代替工作量证明挖出区块链,达到去中心化货币fiat currency
    • smart contract增加对(去中心化)智能合约decentralized contract的支持
      • 用去中心化合约代替司法机构
    • 最小单位一wei
  • ETH-账户
    • account-based ledger 基于账户的管理,显示每个账户上的余额,很大程度解决double spending attack
      比特币是进行一次交易换一个账户,自己也难以知道账户余额,比特币面对主要挑战:double spending attack
    • replay attack收钱方想重复收钱,进行交易重放,为防范加入计数器,计数总共进行过多少个交易,防止交易重放
    • externally owned account 外部账户
      • balance
      • nonce
    • smart contract account
      • balance
      • nonce
      • 不能主动发起交易,只能外部账户发起交易,合约账户发送message调用另一个合约
      • code
      • storage
      • 创建时返回地址,可根据地址进行调用
    • 防止身份变更给交易带来的不便
  • ETC-状态树
    • 账户地址到状态的映射addr->state 地址表示成40位十六进制数
      • 所有以太坊账户一起构成Merkle tree,可证明账户余额和维护全节点之间的一致性
        BTC里每个区块的交易构成merkle tree 是一定的,新区块发布有一个新的merkle tree
        • 查找慢
        • sorted merkle tree不规定账户顺序 merkle tree不唯一=
      • tric结构,查找效率取决于P长
        • 优点:
          • 不存在哈希碰撞
          • 输入顺序不同但最终结构相同
          • 更新的局部性
          • 二分法查找
        • 缺点:
          • 存储浪费
      • patricia tree 可路径压缩
        • 访问内存次数减少,效率提高
        • 新插入单词后原来压缩路径可能需要展开
        • 键值分布稀疏,压缩效果好
      • MPT merkle patricia tree
        • 所有账户形成merkle tree,然后patricia压缩路径,普通指针转换成哈希指针,计算根哈希值储存header里
        • 以太坊header中三个根哈希值,交易树,状态树,收据树
        • 证明未被篡改,账户余额,证明某个已经发生交易的账户不存在于MPT里
      • Modified MPT以太坊采用
        • 原来状态保留,新建分支
        • 大MPT包含小MPT,每一个账户是一个小MPT,新增交易即新建分支
        • 保留历史状态以支持roll back(以太坊中有智能合约,编程能力较强,难以推算原来状态
      • (key,value) 实现RLP:recursive length profix
        • 极简主义产生序列化
        • nested array of bytes
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值