资讯专栏INFORMATION COLUMN

PHP程序员如何基于比特币开发各种相关功能

KaltZK / 2922人阅读

摘要:课程地址比特币开发教程以太坊,主要是介绍使用进行智能合约开发交互,进行账号创建交易转账代币开发以及过滤器和事件等内容。

什么是比特币

当我们谈到比特币时,其实在不同的场景下有不同的指代。

比特币首先是一种数字加密货币,用户可以通过比特币网络进行 比特币转账或商品结算,就和传统的货币一样:

不过比特币是基于密码学技术的虚拟化货币,它没有实体,仅仅 隐含在从发送方到接收方的交易中,接收方必须使用其持有的密钥来 消费收到的比特币。

对于科技从业者而言,比特币则更多了一层含义:比特币对应着 一种划时代的数字加密货币系统,其内容包含通信协议、激励机制、实现代码 与承载网络等:

事实上,比特币是数十年来密码学技术、分布式计算等领域的集大成者, 它不是第一个出现的数字货币,但无疑是最成功的,一个洞察了人性的虚拟产品。

区块链结构

比特币是一个专用数据库,它只保存一种类型的数据记录 —— 交易,例如 张三转给李四几个币,或者李四转给王五几个币:

一旦涉及到资金,大家都会变得慎重了。因此交易记录最好在技术上可以保证 是不能篡改的,这样出了问题可以翻翻老账,这就要求账本必须值得信赖。

比特币采用一种特殊的数据结构区块链/Blockchain来保障交易的不可篡改性, 每一个包含一批交易数据的区块,同时也包含了前一个区块的指纹:

在比特币中,一个区块的指纹是使用密码学中常见的哈希函数来实现的。 哈希函数可以将大块数据压缩成精简的表示,而且可以保证如果精简 的表示不同,那么其对应的原始数据也不同。

例如,在上图中如果12#区块被攻击者篡改,那么它的哈希结果将不同于在 13#区块中保存的其原始指纹,这使得识别篡改的区块这一任务很容易,或者 说篡改的难度很大 —— 攻击者必须同时修改12#之后的所有区块才能保证 指纹校验成功。

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

交易一旦被确认打包到区块中,它的确认数就是1,之后每增长一个区块 则确认数加1。例如对于上图中的标注交易,当链增长到14#块时,该交易的 确认数就是3。

显然一个交易的确认数越多,意味着攻击者篡改交易的可能性越小。在比特币 中的应用当中,交易的接收者通常需要在六个确认之后,才可以将该笔 交易视为成功。

课程地址:http://xc.hubwiz.com/course/5b9e779ac02e6b6a59171def

去中心化机制

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

在这样的分布式计算环境下,如何保证新的交易在各个节点区块链中得以 一致的更新,就是经典的分布式一致性问题了 —— 每个节点都有可能提交 新的交易,而不同节点提交的交易也可能不相同,到底以哪个节点为准?

解决这种问题的经典方法就是(动态)选举一个决策者,其他节点复制 决策者的行为即可避免节点之间的不一致了。比特币的解决思路也一样, 不过它采用了一种类似于抢答的机制来动态选择胜出的节点,由胜出的 节点负责出块并打包交易 —— 所有节点都同时求解同一个问题,最先得到结果 的节点获胜并获得出块权利,其他节点则转而求解下一次出块的问题:

比特币给出的问题不可以通过解析方法求解,节点必须在所有的可能 结果中暴力尝试求解,由于胜出的节点可以获得比特币奖励,使得 节点旳动机和行为颇为类似于淘金的西部牛仔,因此这一求解过程被 称为挖矿/Mining

理论上每个节点都有获胜的概率,但显然,在同样的时间内,计算力强大的 节点会比其他节点尝试的机会更多,因此获胜的概率也越大 —— 在这种抢答机制下, 算力代替了智力,而这种依赖于暴力求解问题从而达成节点一致性的共识算法 被称为工作量证明/Proof Of Work

课程内容

本课程适合于希望开发比特币应用的PHP工程师,内容涵盖比特币的基本 概念、工作原理、应用开发接口、离线密钥管理、分层确定性钱包以及 裸交易等诸多关键知识点。

第一章 比特币概述

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

第二章 Hi,比特币

这一章主要介绍如何使用现有软件进行比特币的操作,例如创建地址、转账、 查询余额、浏览区块等,同时介绍比特币应用中的核心概念,如钱包、交易、UTXO等。

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

这一章主要介绍如何在程序代码中利用节点软件的RPC API接口访问比特币 网络,进行转账、地址创建、查询余额等操作,同时给出了一种简单的 在网站中支持比特币支付的方案。

第四章 自己管理密钥与地址

这一章主要介绍如何离线管理密钥与地址,并详细讲解比特币中的脚本以及 其与地址、身份验证之间的关系。如果你希望在自己的应用中增加类似于 钱包的功能,这部分的内容将让你收益匪浅。

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

这一章主要介绍被广泛使用的分层确定性钱包,并详细讲解如何在程序代码 中加以应用。如果你需要管理大量的密钥和地址,那么分层确定性钱包应该 很有帮助。

第六章 离线构造裸交易

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

课程地址:php比特币开发教程

php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24297.html

相关文章

  • PHP序员如何基于比特开发各种相关功能

    摘要:课程地址比特币开发教程以太坊,主要是介绍使用进行智能合约开发交互,进行账号创建交易转账代币开发以及过滤器和事件等内容。 什么是比特币 当我们谈到比特币时,其实在不同的场景下有不同的指代。 比特币首先是一种数字加密货币,用户可以通过比特币网络进行 比特币转账或商品结算,就和传统的货币一样: showImg(https://segmentfault.com/img/remote/14600...

    Kylin_Mountain 评论0 收藏0
  • 一个比特交易的完整流程。

    摘要:本文解释了比特币交易的内容,目的和结果。本文底部的信息图提供了从钱包到区块链的整个比特币交易流程的全面说明。在文本中使用的任何地方是比特币交易的缩写。目的比特币交易的目的是将一定数量的比特币的所有权转移到比特币地址。 本文解释了比特币交易的内容,目的和结果。下面的解释适用于新手和中级比特币用户。 作为加密货币用户,你需要熟悉交易雏形——为了你对这种不断发展的创新有信心,以及作为理解新兴...

    My_Oh_My 评论0 收藏0
  • Java开发区块链的三大sdk库

    摘要:是企业与区块链相遇的地方。的框架旨在成为开发区块链解决方案的支柱。以太坊,主要是针对工程师使用进行区块链以太坊开发的详解。 如果你想将区块链合并到一个Java项目中,现在我们来看看就是这个细分领域中三个最大的OSS玩家。 好的伙计们,我们都听说过比特币,以太坊或其他加密货币,其中有一些时髦的名字围绕着我们常见的新闻,但我们作为Java开发人员知道如何轻松地与这些区块链技术进行交互吗?以...

    iKcamp 评论0 收藏0
  • 区块链开发中使用的最流行的编程语言

    摘要:我们目前正处于一个新兴的区块链开发行业中。,一种在以太坊开发人员中流行的新的简单编程语言,因为它是用于开发以太坊智能合约的语言。它是全球至少万开发人员使用的世界上最流行的编程语言之一。以太坊,主要是针对工程师使用进行区块链以太坊开发的详解。 我们目前正处于一个新兴的区块链开发行业中。区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣。由于许多...

    2shou 评论0 收藏0
  • 如何开发比特钱包应用程序

    摘要:创建比特币钱包需要一组优秀的程序员。如何使用流行的库构建自己的比特币钱包应用程序创建比特币钱包应用程序的一种方法是依赖现有工具。具有以下功能它允许开发人员使用密码加密创建比特币钱包应用程序。 尽管目前加密货币市场相当黯淡,但比特币和其他山寨币继续受欢迎。每天都有新的交易者加入市场,希望能够在下一个价格高涨时获利。 随着市场的突飞猛进,开发商也在获益。新交易者的首要任务是设置比特币钱包。...

    Cympros 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<