什么是比特币?当我们谈论比特币时,它实际上在不同的场景下有不同的指代。比特币首先是一种数字加密货币。用户可以通过比特币网络进行比特币转账或商品结算,就像传统货币一样:但是,比特币是一种基于密码学的虚拟货币。它没有实体,只是隐藏的。包含在从发送方到接收方的交易中,接收方必须使用它持有的密钥来花费它收到的比特币。对于技术从业者来说,比特币还有更多的意义:比特币对应一个划时代的数字加密货币体系,包括通信协议、激励机制、实现代码和承载网络等:比特币实际上是密码学技术的集大成者,分布式计算等领域几十年。它不是第一个出现的数字货币,但无疑是最成功的,一种洞察人性的虚拟产品。区块链结构比特币是一个专用的数据库,只保存一种数据记录——交易,比如张三转几个币给李四,或者李四转几个币给王五:一旦涉及到资金,大家都会变得谨慎。所以,最好从技术上保证交易记录不可篡改,万一出了问题,可以查到旧账,这就要求账本必须是可信的。比特币使用特殊的数据结构blockchain/Blockchain来保证交易不可篡改。每个包含一批交易数据的块也包含前一个块的指纹:在比特币中,一个块的指纹是使用密码学中常见的哈希函数实现的。哈希函数可以将一大块数据压缩成简化表示,并且可以保证如果简化表示不同,对应的原始数据也不同。比如上图中的12#区块被攻击者篡改,那么它的哈希结果就会和13#区块中保存的原始指纹不同,这使得识别被篡改区块的任务变得容易,换句话说,篡改非常困难——攻击者必须同时修改12#之后的所有块,才能保证指纹验证成功。另一方面,如果攻击者直接篡改14#块(我们假设这是最后一个块),那么显然是可行的,因为它缺少后面更多块的保护。这就引入了比特币中常用的一个概念:交易确认数/Confirms。一笔交易一旦被确认打包成一个区块,它的确认数就是1,每增加一个区块,确认数就增加1。例如上图中标记的交易,当链增长到14#块时,这笔交易的确认数为3。显然,一笔交易的确认数越多,攻击者篡改的可能性就越小与交易。在比特币的应用中,交易的接收方通常需要六次确认才能认为交易成功。课程地址:http://xc.hubwiz.com/course/5b9e779ac02e6b6a59171def去中心化机制不同于目前流通的任何法币。比特币是去中心化的,没有中央机构来管理比特币的发行和流通。因此,比特币网络是一个典型的P2P网络,每个(全)节点都有完整的区块链数据:在这样的分布式计算环境下,如何保证在每个节点的区块链中都能获得新的交易?一致性更新是一个典型的分布式一致性问题——每个节点都可能提交新的事务,不同节点提交的事务也可能不同。以哪个节点为准?解决这个问题的经典方法是(动态地)选举一个决策者,其他节点可以复制决策者的行为,以避免节点之间的不一致。比特币的解决方案是一样的,但它采用了一种类似于rushanswer的机制来动态选择获胜节点,获胜节点负责生成区块和打包交易——所有节点同时解决同一个问题,并且最先得到结果的节点获胜并获得出块权,其他节点转而解决下一个块的问题:比特币给出的问题无法用解析方法解决,节点必须暴力尝试解决所有可能的结果。节点可以获得比特币奖励,使得节点的动机和行为非常类似于淘金的西方牛仔,所以这个求解过程称为挖矿/Mining。理论上每个节点都有一定的获胜概率,但显然,在同一时间段内,算力强大的节点会比其他节点有更多的尝试机会,因此获胜的概率也更大——在这种抢答下机制,算力代替了智能,这种靠暴力解决问题来达成节点共识的共识算法被称为ProofofWork。课程内容本课程适合想要开发比特币应用程序的PHP工程师。涵盖了比特币的基本概念、工作原理、应用开发接口、离线密钥管理、分层确定性钱包以及裸交易等诸多关键知识点。第一章比特币概述主要介绍比特币的基本概念和核心工作原理。Chapter2Hi,Bitcoin本章主要介绍如何使用现有软件操作比特币,如创建地址、转账、查询余额、浏览区块等,并介绍比特币应用中的核心概念,如钱包、交易、UTXOs、等第三章使用RPC访问比特币网络本章主要介绍如何在程序代码中使用节点软件的RPCAPI接口访问比特币网络,进行转账、创建地址、余额查询等操作。支持网站比特币支付的解决方案。第4章自己管理密钥和地址本章主要介绍如何离线管理密钥和地址,并详细解释了比特币中的脚本及其与地址和身份验证的关系。如果您想为您的应用程序添加类似钱包的功能,本节将使您受益匪浅。第五章分层确定性钱包的使用本章主要介绍应用广泛的分层确定性钱包,并详细说明如何在程序代码中应用。如果您需要管理大量密钥和地址,分层确定性钱包应该会有所帮助。第六章离线构建裸交易本章主要介绍裸交易的功能以及如何在程序代码中创建裸交易。如果您需要使用第三方节点广播您的比特币交易,那么裸交易是您唯一的选择。课程地址:php比特币开发教程php以太坊,主要介绍使用php进行智能合约开发交互、账户创建、交易、转账、代币开发、过滤器和事件等。
