数字货币

比特币系统的原理概述(入门级)

谁说胖子不能爱 提交于 2019-11-28 19:39:14
比特币系统 比特币系统 比特币私钥和地址 比特币钱包 神奇的账本——区块链 记账单比赛——挖矿 比特币网络 比特币私钥和地址 在比特币系统中:账号密码= 私钥 (取值范围为0~ 2 256 2 256 //--> )、账号= 地址 比特币系统会依赖外界的各种随机性,随机产生一个256位的二进制串作为私钥,并且私钥可以根据不同的编码方式有不同的表示。 私钥和地址之间是一一对应的,一个私钥只能对应一个地址。只要私钥确定,地址就是唯一确定的,这类似于现实世界中开了一张银行卡,账号和密码一一对应 比特币钱包 钱包的第一个功能 管理私钥——地址对:钱包可以根据用户给定的私钥或随机产生一个私钥,再根据特定的算法来产生对应的地址 钱包的第二个功能 管理账本:钱包并不一定需要联网,只需要在用户花钱或同步账本的时候,将钱包接入到比特币系统中,钱包会自动从其他拥有账本的钱包中导入账本 保存所有交易记录的钱包称为比特币网络中的全节点(保存了完整版的账本) 钱包的分类 钱包的安全 神奇的账本——区块链 比特币系统每十分钟中左右会生成一个账本包裹,该包裹中包含了本时间段内发生的所有交易记录,然后将其串联在账本链上。每个账本包裹称为一个区块,整条账本链称为区块链。 实际系统中的区块: 记账单比赛——挖矿 挖矿的主要工作就是准确记录该时间段内的所有交易记录,并将其打包,挂到区块链上。最后还要解答一个特殊的竞赛题

比特币交易签名过程详解

僤鯓⒐⒋嵵緔 提交于 2019-11-28 19:38:43
最近在研究比特币交易签名计算,网上没有完整介绍签名过程的例子。本文力图提供一个完整例子,详细介绍比特币签名的计算过程。 1. 比特币交易的格式 交易数据格式 大小   字段名称  数据类型     描述 4字节  协议版本   uint32_t    明确这笔交易参照的规则协议的版本号 1-9字节 输入数量   var_int   被包含的输入交易的数量 不定   输入列表   tx_in[]    一个或多个输入交易构成的数组 1-9字节 输出数量   var_int   被包含的输出交易的数量 不定   输出列表   tx_out[]   一个或多个输出交易构成的数组 4字节  锁定时间   uint32_t    一个UNIX时间戳或区块号 tx_in 格式 其中tx_in 包括: 字段尺寸 描述 数据类型 说明 36 previous_output outpoint 对前一输出的引用 1+ script length var_int signature script 的长度 ? signature script uchar[] 用于确认交易授权的计算脚本 4 sequence unit32_t Used for locktime or disabled(0xFFFFFFFF) OutPoint结构的构成: 字段尺寸 描述 数据类型 说明 32 hash char[32]

1.5 比特币架构详解

随声附和 提交于 2019-11-28 19:37:54
• 比特币前端 ○ 钱包 :钱包保存用户私钥,管理用户余额,提供比特币交易(支付,转账)功能 § 分类 □ 决定性钱包:决定性指私钥是否由种子生成 □ 非决定性钱包:直接保存私钥,私钥都保存在DB上面 ® 非决定性钱包不够安全 ® 管理不方便 □ 决定性钱包:所有私钥都由一个私钥种子通过单向的哈希算法生成 ® 备份方便,只要备份私钥种子,就可以一次性恢复所有的私钥 ® 分类 ◊ 普通决定性钱包:由私钥种子直接生成所有的私钥 ◊ 层级决定性钱包:由私钥种子生成父私钥,父私钥生成子私钥 § 部署场景分类 □ 移动钱包:运行在手机,移动终端的轻量级钱包。移动钱包不会下载整条区块链,采用“简化支付验证(SPV)”方法验证交易,也叫SPV钱包。 ® SPV验证:依靠网络上的可信任节点 查询所有区块的区块头,以及按照交易的确认数,再有就是能否在相应的区块中找到该笔交易来验证支付的真伪。 □ 桌面钱包 ® 分类 ◊ 厚钱包:下载整条区块链,进行完整交易 } bitcoinCore:提供完整钱包功能,包括签名,钱包加密,备份,密钥导入,导出等 } 厚钱包主要优势是安全,但有交易验证的开销,适合于安全性要求很高的场景 ◊ 薄钱包:不会下载整条区块链,而是采用SPV等方式来验证与用户相关支付交易 } 薄钱包主要优势是灵活性高,但是安全性相对较差,适合于小额支付场景 □ 互联网钱包 ®

比特币原理入门之五:神奇的账本——区块链

回眸只為那壹抹淺笑 提交于 2019-11-28 19:36:18
在上个文章中,我们认识了那个神奇的钱包。现在大家回忆一下,我们在最开始的故事中,还提到了一个神奇的东西,那就是那本账本对吗?在这个文章中,我们就来看看,这个神奇的账本。 账本的神奇之处 首先,我们回忆一下,这本账本的神奇之处在哪?对了,就是一、每家每户都有一本账本,二、每本账本上记录的交易都是一样的。那我们接下来就好好解读一下这两句话,来看看上面的这两点是如何做到的。在整个比特币的网络中,有一些节点叫做全节点,这些全节点保存了自2009年比特币系统产生以来所有的交易记录,这就是一本完整的账本。那现在如果你是刚加入到这个比特币网络这个新的世界中,你就需要有一个钱包,当然这个是从网上下载的,钱包一旦连上网,就会自动同步比特币网络上任意一个全节点上的交易记录的数据,也就是账本,这样的话,你的钱包中相当于也有了一本完整的账本了。我们之前也说过,我们如果仅仅作为普通的用户,可以根据自己的需要,选择同步一本完整的账本或者只同步一部分账本,这都是可以的。这样,我们就通过钱包的自动同步功能,其实说白了就是钱包从比特币网络下载数据,那就实现了随时随地都可以获取到账本。这些账本信息记录在每一个联网的钱包里。 账本长什么样? 好了,讲完账本的神奇之处,那我们来看看比特币的账本长什么样。我们先来想象一下现实生活中的账本。我们想象在一个单位里有一个资料室,里面存放了自单位开张以来所有的账目记录

最透彻的讲解《比特币白皮书》(一)

北战南征 提交于 2019-11-28 19:36:06
现在似乎比特币的热度已经过去,而在比特币、区块链流行的那段时间也是更多的作为一种投资手段被热议。 互联网已经普及,但是我们关于货币、金融、生产的认知还停留在资本论的时代,即使面对新兴的技术,也是在想,怎么才能大赚一笔。本文及本专栏并不是介绍如何暴富,而是想要借由这些新技术给大家展现一个新时代的缩影。 如果你也跟我一样看不懂很多介绍比特币的文章,那么这篇文章可能更适合你,因为我会和你一起站在一个小白的角度带着诸多疑问来了解这个技术 本文是基于中本聪的《比特币白皮书》来讲解的。先介绍一下中本聪,他是Bitcoin的创始人,2007年就致力于比特币的研究,而中本聪也可能并不是他的真名,也可能并不存在一个人是中本聪,而是一个团队。当然这些都不重要,更重要的是他的理论部分 互联网上的贸易,几乎都需要借助金融机构作为可资信赖的第三方来处理电子支付信息。虽然这类系统在绝大多数情况下都运作良好,但是这类系统仍然内生性地受制于“基于信用的模式”(trust based model)的弱点。 想想假如你在做生意,要给某个不熟悉的人A转一笔钱,那么你一定通过了第三方,可能是银行转账,可能是支付宝微信,也可能是双方签署了合同。 很少有人直接就把钱给对方了,因为你并不信任他。通过第三方,是因为我们信任银行,信任阿里巴巴和腾讯,信任合同的效力,归根结底可能是信任国家,信任现行的交易体系 但是信任是有很大成本的

用人话解释比特币原理(转载)

这一生的挚爱 提交于 2019-11-28 19:35:42
究竟是什么让一枚虚拟货币的汇率在3年间翻了25000倍,是什么力量让央行副行长“感兴趣”但“不承认”,抛开投机与商业欺诈比特币作为一种工具究竟有没有价值?欢迎收看今天的走进“伪”科学——用普通人也能理解的话解释比特币。   比特币大热,北京时间上周六下午五点多,比特币网络刚刚成交了有史以来最大的一笔交易——19 万比特币被抛向了市场,按照当时的价格 5000 左右计算,一个 10 亿人民币级的富翁就这样诞生了,你们随便感受下。   但是,这篇文章并不是教你如何投机的,本人也无意怂恿任何人进入比特币投机市场。请务必看准这几个大字再继续往下阅读:   比特币市场风险巨大,投机请异常谨慎!   好了,该打的预防针打了,接下来我们谈正事:这篇文章并不讨论比特币的商业逻辑,也不讨论它是不是骗局,而是将比特币的原理用通俗易懂、非极客也能听理解的语言进行解释,让大家来看看这个让央行副行长表示“有特点”而且“很有启发性”的电子货币究竟是个啥东西。因为考虑到要做到浅显易懂的原因,有些地方的解释并不十分严谨,有基础想要进一步研究的同学可以去看这篇比特币的原始论文《比特币:一种点对点的电子现金系统》。   下面,我们就开始走进比特币……   首先,从比特币的本质说起,比特币的本质其实就是一堆复杂算法所生成的特解。特解是指方程组所能得到无限个(其实比特币是有限个)解中的一组

【煊凌科技】区块链的发展经历了哪三个阶段?

大兔子大兔子 提交于 2019-11-28 19:35:01
区块链 的英文是Blockchain,首先被应用于比特币。比特币本身就是第一个,也是规模最大、应用范围最广的区块链。 区块链本质上是一个去中心化的分布式账本数据库,它提供了一套安全、稳定、透明、可审计且高效的记录交易以及数据信息交互的方式,其特点如下: 去中心化。 不可篡改。 公开透明。 可追溯性。 区块链可以存储数据,也可以运行应用程序。目前区块链技术主要应用在存在性证明、智能合约、物联网、身份验证、预测市场、资产交易、文件 存储等领域。随着区块链技术的快速演变,新的技术在不断结合,从而创造出更有效的应用解决方案。 一般将区块链的应用 范围划分成3个层面,分别称其为区块链1.0、2.0和3.0。 一、区块链1.0:可编程货币 区块链技术伴随比特币的产生而产生,其最初的应用范围完全聚集在数字货币上。比特币的出现第一次让区块链进入了大众视野,而后产生了莱特币、以太币、狗狗币等数字货币。可编程货币的出现,使得价值在互联网中直接流通成为可能。 区块链构建了一种全新的、去中心化的数字支付系统,随时随地进行货币交易、毫无障碍的跨国支付以及低成本运营的去中心化体系,都让这个系统变得魅力无穷。这样一种新兴数字货币的出现,强烈地冲击了传统金融体系。 二、区块链2.0:可编程金融 受到数字货币的影响,人们开始将区块链技术的应用范围扩展到其他金融领域。基于区块链技术可编程的特点,人们尝试将“智能合约

五句话了解区块链,扫盲系列

会有一股神秘感。 提交于 2019-11-28 19:28:05
1.区块链解决了啥问题 一个东西有价值,一定是解决了一个社会上的痛点。我们说人工智能是未来的趋势,因为它主要解决的是生产力的升级问题,工业革命代替人的简单体力劳动,人工智能代替的是例如思考之类的复杂劳动。区块链解决的是生产关系的问题,也就是信任的问题,想一下为什么淘宝需要有支付宝,因为如果没拿到货而直接付钱,卖家不发货怎么办?需要担保机制,这就是买卖间彼此不信任的问题。 2.区块链的核心技术理论是啥? 一句话,去中心化。我们聊微信,用支付宝,所有的数据都会上传到阿里或者腾讯的服务器,而不是存在本地。区块链是将所有数据都在每一个节点存储,有啥好处呢?比如用微信,数据都是在腾讯的服务器上,它想给你看什么你才能看到什么。如果全网的数据都在每个人的电脑上,是不是你的另一半跟哪个女的撩骚你一下就知道了。 3.区块链最大特点是啥? 每个节点的数据一致性,区块链是一个开放的数据库,任何服务器都可以加入区块链,并成为其中的一个节点,每个节点都保存着区块链的全部数据,而且是相同的,只有这个前提成立,前面介绍的两点才成立。那区块链是怎么做到 每个节点数据一致的呢?每个区块就是一个哈希值,哈希就是一串字母加数字,可以表示任何的事情。每个区块链都需要记录上一个区块链、生成时间、以及本区块链的一些信息。一旦一个区块链被修改了,那么它自己的哈希值就变了,因为下一个区块需要记录上个区块的哈希值

如何查询一个比特币地址的所有交易?

[亡魂溺海] 提交于 2019-11-28 18:48:09
在比特币应用开发中,一个常见的问题就是,在知道比特币地址的情况下,如何查询这个地址上发生的所有交易?或者类似的说法,如何查询一个指定的比特币地址发生的所有交易? 本文将给出这一问题的三种解决方案。 1、将比特币交易数据存入数据库 由于比特币的数据存储结构,不可能直接利用比特币的原始API来查询指定地址的历史交易数据。因此最朴素(Naive)的第一种解决方案,就是将比特币区块链上的每一笔交易数据存到自己的数据库里,然后针对交易地址信息(例如Scriptpubkey、pubkey或者地址本身)建立索引,这样就可以在数据库上自由、高效地查询了。 2、利用第三方的服务 朴素的第一种方案需要自己解析比特币区块链数据,自己搭建数据库环境,可能你觉得有点麻烦。好在有很多第三方机构已经做了这件繁琐的事情,并且通过开放API的形式提供出来,你可以直接使用。 例如,你可以使用blockchain.info的api来实现这个功能: $ curl https://blockchain.info/rawaddr/$bitcoin_address 3、换一种比特币节点实现软件 如果你不愿意自己搞数据库,也不愿意使用第三方的开放API,还有第三种解决方案,就是换一种支持按比特币地址查询交易的节点实现软件,例如 btcd ,这是一个go语言实现的比特币节点软件,当你启动btcd时,只要使用 --addrindex

04_存储和使用比特币

我是研究僧i 提交于 2019-11-28 16:06:07
一、简单的本地存储    公共信息:记录在区块链上的内容(例如 比特币的识别信息、币值等)    私密信息:即本人的私钥   1、存储和管理私钥的三个目标     可获取性;安全性;便利性(不能做到同时满足,根据具体应用情形,作出权衡)   2、几种管理比特的方法     比特币钱包软件:管理你比特币和私钥信息并方便使用的应用软件       比特币钱包就是一个简单的接口,告诉你前面包里有多少比特币,当你使用比特币的时候,他会处理关于密钥管理的一切技术细节,比如使用密钥和生成新的地址。     编码解码(encoding keys):Base58 编码和二维码       使用和接受比特币需要你和对方交换地址----比特币送达的地址。目前  两种主流的方式将地址加密:字符串和QR(QuickResponse)       为了给地址赋予一个字符串,把密钥的字节从二进制字符转换成base58码。Base58就是用一个包含58个字符的字符集来编码,被称为base58记号法(去掉了比较容易混淆的字符:0和o)。       QR码就是二维码,好处就是用手机拍张照片,然后钱包就会把QR码转换成代表比特币地址的字节。     虚荣地址:将地址转换成一些人能够识别的字符(Satoshi Bones,收款地址中就含有“骨头”(bones)),如下所示2-6为字符