比特币 java java比特币开发详解

什么是比特币

当我们谈论比特币时,实际上在不同情况下存在不同的参考。

比特币首先是一种数字加密货币。用户可以使用比特币网络进行比特币转移或商品结算,就像传统货币一样:

但是,比特币是一种基于加密技术的虚拟货币。它没有实体,仅隐含在从发送方到接收方的事务中。接收者必须使用持有的密钥来消耗接收到的比特。货币。

对于技术从业者,比特币具有更多含义:比特币对应于划时代的数字加密货币系统,其中包括通信协议,激励机制,实现代码和承载网络等:

汇智网

事实上,比特币几十年来一直是密码学,分布式计算和其他领域的大师。它不是第一个出现的数字货币,但无疑是最成功的虚拟产品,具有对人性的洞察力。

区块链结构

比特币是一个特殊的数据库,它仅保存一种类型的数据记录交易,例如,张三将几枚硬币转移给李思,或者李四将几枚硬币转移给王武:

在筹集资金时,每个人都变得谨慎。因此,最好确保不会从技术上篡改交易记录,以便在出现问题时可以将旧帐户上交。这要求分类帐必须是可信任的。

比特币使用特殊的数据结构Blockchain / Blockchain,以确保交易不会被篡改。每个包含一批交易数据的区块还包含前一个区块的指纹:

在比特币中,使用加密中常用的哈希函数实现区块的指纹。哈希函数可以将大数据块压缩为压缩表示,并可以保证如果压缩表示不同,则对应的原始数据也将不同。

例如,如果上图中的攻击者篡改了块12#,则其哈希结果将不同于保存在块13#中的原始指纹,这使得识别被篡改块的任务很容易,否则很难篡改-攻击者必须同时修改12#之后的所有块,以确保成功进行指纹验证。

反之,如果攻击者直接篡改了14#块(我们假设这是最后一个块),则显然是可行的,因为它随后缺乏对更多块的保护。这引入了比特币中常用的概念:交易确认/确认数。

一旦确认交易并将其打包成一个区块,其确认号为1,每增加一个区块,确认号将增加1。例如,对于上图中的标记交易,当链增长到14#时,该交易的确认数量为3。

很明显,交易确认越多,攻击者篡改交易的可能性就越小。在比特币应用中,交易的接收者通常需要六次确认才能将交易视为成功。

课程地址:

去中心化机制

与当前流通的任何合法货币不同,比特币是去中心化的,并且没有中央机构来管理比特币的发行和流通,因此,比特币网络是典型的P2P网络,在每个(完整)节点中,所有节点均具有完整的区块链数据:

在这样的分布式计算环境中,如何确保新交易在每个节点的区块链中不断更新是一个经典的分布式一致性问题-每个节点都可以提交一个新交易,而不同节点提交的交易也可以是不同。哪个节点优先?

解决此问题的经典方法是(动态)选举决策者,其他节点可以复制决策者的行为,以避免节点之间的不一致。比特币的解决方案思想是相同的,但是它使用类似于应答机制的机制来动态选择获胜节点,而获胜节点负责生成区块和打包交易-所有节点同时解决相同的问题并获得第一个结果节点获胜并获得生产区块的权利,其他节点转向解决下一个区块问题:

比特币给的问题无法通过分析方法解决。节点必须剧烈尝试解决所有可能的结果。由于获胜的节点可以获得比特币的奖励,因此节点的动机和行为与金矿开采非常相似。西方牛仔,所以这个解决过程称为采矿。

理论上,每个节点都有获胜的可能性,但是显然,与此同时,具有强大计算能力的节点将比其他节点有更多的尝试机会,因此获胜的可能性也更大。响应机制,计算能力代替了智能,这种依靠暴力解决问题以实现节点一致性的共识算法称为工作量证明。

课程内容

本课程适合希望开发比特币应用程序的Java工程师。内容涵盖了比特币的基本概念,工作原理,应用程序开发接口,脱机密钥管理,分层确定性钱包,裸交易和许多其他关键知识点。

第一章比特币概述

主要介绍比特币的基本概念和核心工作原理。

第二章,比特币

本章主要介绍如何使用现有软件执行比特币操作,例如创建地址,转移资金,检查余额,浏览区块等,并介绍比特币应用程序中的核心概念,例如钱包,交易, UTXO等。

第3章使用RPC访问比特币网络

本章主要介绍如何在程序代码中使用节点软件的RPC API接口访问比特币网络,执行诸如传输,地址创建和余额查询之类的操作,并提供了一种简单的方法来支持比特币在网站“付款方案”中。

第4章管理密钥并给您自己地址

本章主要介绍如何离线管理密钥和地址,并详细说明了比特币中的脚本以及它们与地址和身份验证的关系。如果您想在自己的应用程序中添加类似于钱包的功能,那么这部分内容将使您受益匪浅。

第5章使用分层确定性钱包

本章主要介绍广泛使用的分层确定性钱包,并详细说明如何在程序代码中应用它。如果您需要管理大量的密钥和地址,则分层确定性钱包应该会有所帮助。

第6章裸体交易的离线构建

本章主要介绍裸交易的作用以及如何在程序代码中创建裸交易。如果您需要使用第三方节点来广播您的比特币交易,那么裸交易是您唯一的选择。

第7章使用SPV节点

本章介绍了bitcoinj SPV节点的实现机制和核心组件。 SPV节点是轻量级的比特币节点实现。它不需要下载完整的块,因此非常适合在手机上或在不需要完整节点的其他情况下实现比特币钱包。