Lecture 1.2 Hash Pointer & Data Structure

Use Case 1. 什么是Block Chain呢?

想象一个像链表一样的结构,只不过与通常的指向下一块地址的指针不同的是,这里用的是Hash指针。

如图:

如果黑客篡改了block 0,那么他也必须篡改Block 1的H1,Block 2的H2等,会给他带来一定困难。

Use Case 2: Merkle Tree

Block Chain固然具有防止篡改的能力,但是每次验证某条记录没被篡改,就需要O(n)的时间来一一核对。比如看第i个block有没有被篡改,就要去查block i + 1, block i + 2...

Merkle Tree则使用Hash Pointer + 二叉树结合,将核对验证的代价降到了O(logn)。

具体格式见下图。

现在如果要验证L3没被篡改,那么就只要看Hash 1-0,Hash 1, Top Hash没算错就行了。

所以,如果一个客户端只用到L3,那么它只需要获取用于计算的Hash 1-1, Hash 0,用于对比的Hash 1-0, Hash 1和Top Hash这几个值,而不需要存储整个交易历史。

Lecture 1.4

Decentralized Identity Management 去中心化身份管理

用公钥作为身份,方便随时生成和丢弃。用私钥来发消息。

Lecture 1.5 A Simple Cryptocurrency

Case 1: Goofy Coin

Goofy学会了区块链,Goofy想要发行自己的比特币Goofy Coin。

一枚虚拟硬币至少有两种行为:

1. 被创建

2. 被交易

所以Goofy给自己创造的这枚硬币一个独一无二的CoinID,并且留下自己的数字签名。

接着Goofy要交易给Alice,于是他建立一个新的交易记录区块,并且留下自己的数字签名

到这里为止,如果使用了强大的数字签名算法和Hash算法,一切看起来似乎井然有序地开始了,不过还存在一个致命问题Double-Spending Attack:

如果Alice已经把这枚硬币给了Bob,但她又想再花一次-给Chuck,怎么办?

由于Chuck去验证的时候认为这枚比特币和自己的Hash值都是合法的,所以Chuck被骗了。

如何解决这个问题呢?

1. 交易的同时,发行这枚比特币的全部历史交易

2. 历史记录唯一

3. 在每个操作上添加会话号

Case 2: Scrooge Coin:

Scrooge吸取了Groofy的教训,决定自己来发行新硬币。

硬币有两种操作:

1. Create

2. Pay

Scrooge引入了面额这一概念,一枚硬币对应一个面额,就像纸币一样,方便拆分。

如果面额对不上,比如Scrooge有一枚5元钱的硬币,但是他要付3元,那么Scrooge就可以把这枚5元拆分为2元和3元两枚硬币,实际操作是通过Destroy&Recreation完成的。

每次操作、交易的原则是:价值守恒-比如Scrooge的5圆硬币拆给Groofy3元,自己剩下2元,现在Scooge+Groofy有2枚硬币了,但是整体价值还是5元。

现在还存在一个问题:历史由Scrooge维护,这违反了去中心化原则。

BTW: priceton的课程真的令人吐槽

Introduction to Cryto & Crptocurrencies Lecture 1的更多相关文章

  1. ML Lecture 0-1: Introduction of Machine Learning

    本博客是针对李宏毅教授在Youtube上上传的课程视频<ML Lecture 0-1: Introduction of Machine Learning>的学习笔记.在Github上也po ...

  2. 【Machine Learning】机器学习の特征

    绘制了一张导图,有不对的地方欢迎指正: 下载地址 机器学习中,特征是很关键的.其中包括,特征的提取和特征的选择.他们是降维的两种方法,但又有所不同: 特征抽取(Feature Extraction): ...

  3. 【Repost】A Practical Intro to Data Science

    Are you a interested in taking a course with us? Learn about our programs or contact us at hello@zip ...

  4. 【MT】牛津的MT教程

    Preamble This repository contains the lecture slides and course description for the Deep Natural Lan ...

  5. (转)Awesome Courses

    Awesome Courses  Introduction There is a lot of hidden treasure lying within university pages scatte ...

  6. Saw a tweet from Andrew Liam Trask, sounds like Oxford DeepNLP 2017 class have all videos slides practicals all up. Thanks Andrew for the tip!

    Saw a tweet from Andrew Liam Trask, sounds like Oxford DeepNLP 2017 class have all videos/slides/pra ...

  7. DEEP LEARNING 大满贯课程表

    Reinforcement Learning post by ISH GIRWAN Courses/Tutorials Deep Reinforcement Learning, Spring 2017 ...

  8. [C2P3] Andrew Ng - Machine Learning

    ##Advice for Applying Machine Learning Applying machine learning in practice is not always straightf ...

  9. 计算机电子书 2017 BiliDrive 备份

    下载方式 根据你的操作系统下载不同的 BiliDrive 二进制. 执行: bilidrive download <link> 链接 文档 链接 斯坦福 cs224d 深度学习与自然语言处 ...

随机推荐

  1. Spring分布式事务实现概览

    分布式事务,一直是实现分布式系统过程中最大的挑战.在只有单个数据源的单服务系统当中,只要这个数据源支持事务,例如大部分关系型数据库,和一些MQ服务,如activeMQ等,我们就可以很容易的实现事务. ...

  2. leecode第二题(两数相加)

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  3. git 先创建本地仓库,再关联远程

    之前都是先在GitHub或者bitbucket上创建repo,然后在本地直接git clone下来. 如果一定需要先在本地创建好文件夹,然后再关联远程仓库. 是这样: 1在远程创建仓库这步不变. 2 ...

  4. Dreamweaver 2

    1.CSS样式基本应用 1.1 概念 层叠样式表 <style type="text/css">body {background-color: #F00;} p{col ...

  5. 牛客OI周赛4-提高组 B 最后的晚餐(dinner)

    最后的晚餐(dinner) 思路: 容斥 求 ∑(-1)^i * C(n, i) * 2^i * (2n-i-1)! 这道题卡常数 #pragma GCC optimize(2) #pragma GC ...

  6. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合

    java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...

  7. 使用getCurrentPosition方法实时获取当前Geolocation信息(附源码文件)--html5、JavaScript

    使用getCurrentPosition方法实时获取当前Geolocation信息: 1.getCurrentPosition方法的使用 navigator.geolocation.getCurren ...

  8. SVN入门使用

    1.安装客户端:TortoiseSVN-1.9.7.27907-x64-svn-1.9.7     2.安装服务器:Setup-Subversion-1.8.5.msi 下载地址:http://sou ...

  9. 第一章:IPsecVPN

    第一章 一.VPN(virtual private Network,虚拟专用网)的基本概念 VPN连接模式分为两种,分别是传输模式和隧道模式 传输模式:在整个VPN传输中,ip包头并没有被封装进去 隧 ...

  10. Vue自动化工具(Vue-CLI)的安装

    安装VUM 前面学习了普通组件以后,接下来我们继续学习单文件组件则需要提前先安装准备一些组件开发工具.否则无法使用和学习单文件组件. 一般情况下,单文件组件,我们运行在 自动化工具vue-CLI中,可 ...