美文网首页MOOC
Bitcoin and Cryptocurrency Techn

Bitcoin and Cryptocurrency Techn

作者: 哈士奇_银桑 | 来源:发表于2018-07-08 21:39 被阅读36次

    课程介绍

    1. 名称:Bitcoin and Cryptocurrency Technologies

    2. 平台:Coursera

    3. 难易度:中级

    4. 地址:https://www.coursera.org/learn/cryptocurrency/home/welcome

    5. 授课教师:Arvind Narayanan

    6. 最早开课时间:2016

    评价

    比特币和其衍生币,和其背后的区块链技术已经越来越火了。从各种币火热的炒作,到现在各个行业的技术人员专注于区块链的各种场景应用的开发,甚至连传销诈骗都已经扯上区块链了(见下图),可见区块链的火爆程度。

    区块链诈骗.jpg

    本门课程告诉你比特币是什么,背后的实现的技术原理,以及比特币交易,安全等一些知识。课程不难,还有免费的配套书籍,遇到不会的可以去搜索下遇到的难点,毕竟目前关于比特币介绍的资料非常多,另外这也是一门老课程,有很多学习者都分享了一些经验。如果你对区块链感兴趣,可以从此门课程入手。

    课堂笔记

    作业1

    问题描述

    原文:1. pdf 或 2:作业1

    Scrooge要实现一个记录交易的账本,账本的目的是可以验证每一笔Scrooge收到的交易,并向它的用户发布验证有效的交易。但这里有个double-spend的问题,所以验证每笔交易时,要和所有的交易都比对一遍。

    目前,已经实现的Transaction类,包含了Output和Input的内部类,实现了交易账本的基础。其中Output类包含一个value和一个公共密钥成员,公共密钥由Java的内置PublicKey实现;Input类包含一个Output对象的hash,这个Output对象对应的索引(从0开始)和一个数字签名成员。

    交易签名可以由Crypto.java中的verifySignature方法验证,如下:

    public static boolean verifySignature(PublicKey pubKey, byte[] message,
    byte[] signature)
     /**
     pubKey: Input对象对应的Output的公共密钥
     message:tx中input对象对应的raw data
     signature:Input的signature
     */
    

    一次交易包含一些Input,Output和一个唯一ID(由getRawTx()方法获得),和对Input,Output等的一些操作。

    还有一个已经实现好的UTXO类,包含一个源交易的hash,和在交易中对应的Output index 成员 。并提供了一些验证UTXO的对象的方法。

    另外一个已经实现的类UTXOPool,包含了当前的UTXO集合和每一个UTXO到对应交易Output的映射。并提供了一些方法对UTXO的操作。

    你的任务是实现TxHandler.java, 见 github

    其中handleTx是应该同时更新它内部的UTXO集合,用于下次处理时可以使用最新的结果。

    附加作业:

    创建一个名为MaxFeeTxHandler.java的文件,其handleTxs()方法找到一组具有最大总交易费用的交易 - 即该组中所有交易的(输入值之和 - 输出值之和) 的最大值 。

    参考

    1. 左耳听风-区块链

    2. UTXO

    相关文章

      网友评论

        本文标题:Bitcoin and Cryptocurrency Techn

        本文链接:https://www.haomeiwen.com/subject/azhauftx.html