当前位置:首页 » 比特币问答 » 比特币16个0算法

比特币16个0算法

发布时间: 2024-04-09 07:15:09

A. 比特币计算

比特币计算需要以下参数:
1、block的版本 version
2、上一个block的hash值: prev_hash
3、需要写入的交易记录的hash树的值: merkle_root
4、更新时间: ntime
5、当前难度: nbits

挖矿的过程就是找到x使得
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式的x的范围是0~2^32, TARGET可以根据当前难度求出的。除了x之外,还可以尝试改动merkle_root和ntime。由于hash的特性,找这样一个x只能暴力搜索。
一旦计算者A找到了x,就可以广播一个新的block,其他客户端会验证计算者A发布的block是否合法。
如果发布的block被接受,由于每个block中的第一笔交易必须是将新产生25个比特币发送到某个地址,当然计算者A会把这个地址设为计算者A所拥有的地址来得到这25个比特币。

B. 比特币如何算出来的

要想了解bitcoin的技术原理,首先需要了解两个重要的密码技术: HASH码:将一个长字符串转换成固定长度的字符串,并且其转换不可逆,即不太可能从HASH码猜出原字符串。bitcoin协议里使用的主要是SHA256。
公钥体系:对应一个公钥和私钥,在应用中自己保留私钥,并公开公钥。当甲向乙传递信息时,可使用甲的私钥加密信息,乙可用甲的公钥进行解密,这样可确保第三方无法冒充甲发送信息;同时,甲向乙传递信息时,用乙的公钥加密后发给乙,乙再用自己的私钥进行解密,这样可确保第三者无法偷听两人之间的通信。最常见的公钥体系为RSA,但bitcoin协议里使用的是lliptic Curve Digital Signature Algorithm。 和现金、银行账户的区别? bitcoin为电子货币,单位为BTC。在这篇文章里也用来指代整个bitcoin系统。 和在银行开立账户一样,bitcoin里的对应概念为地址。每个人都可以有1个或若干个bitcoin地址,该地址用来付账和收钱。每个地址都是一串以1开头的字符串,比如我有两个bitcoin账户,和。一个bitcoin账户由一对公钥和私钥唯一确定,要保存账户,只需要保存好私钥文件即可。 和银行账户不一样的地方在于,银行会保存所有的交易记录和维护各个账户的账面余额,而bitcoin的交易记录则由整个P2P网络通过事先约定的协议共同维护。 我的账户地址里到底有多少钱? 虽然使用bitcoin的软件可以看到当前账户的余额,但和银行不一样,并没有一个地方维护每个地址的账面余额。它只能通过所有历史交易记录去实时推算账户余额。 我如何付账? 当我从地址A向对方的地址B付账时,付账额为e,此时双方将向各个网络节点公告交易信息,告诉地址A向地址B付账,付账额为e。为了防止有第三方伪造该交易信息,该交易信息将使用地址A的私钥进行加密,此时接受到该交易信息的网络节点可以使用地址A的公钥进行验证该交易信息的确由A发出。当然交易软件会帮我们做这些事情,我们只需要在软件中输入相关参数即可。 网络节点后收到交易信息后会做什么? 这个是整个bitcoin系统里最重要的部分,需要详细阐述。为了简单起见,这里只使用目前已经实现的bitcoin协议,在当前版本中,每个网络节点都会通过同步保存所有的交易信息。 历史上发生过的所有交易信息分为两类,一类为"验证过"的交易信息,即已经被验证过的交易信息,它保存在一连串的“blocks”里面。每个"block"的信息为前一个"bock"的ID(每个block的ID为该block的HASH码的HASH码)和新增的交易信息(参见一个实际的block)。另外一类指那些还"未验证"的交易信息,上面刚刚付账的交易信息就属于此类。 当一个网络节点接收到新的未验证的交易信息之后(可能不止一条),由于该节点保存了历史上所有的交易信息,它可以推算中在当时每个地址的账面余额,从而可以推算出该交易信息是否有效,即付款的账户里是否有足够余额。在剔除掉无效的交易信息后,它首先取出最后一个"block"的ID,然后将这些未验证的交易信息和该ID组合在一起,再加上一个验证码,形成一个新的“block”。 上面构建一个新的block需要大量的计算工作,因为它需要计算验证码,使得上面的组合成为一个block,即该block的HASH码的HASH码的前若干位为1。目前需要前13位为1(大致如此,不确定具体方式),此意味着如果通过枚举法生成block的话,平均枚举次数为16^13次。使用CPU资源生成block被称为“挖金矿”,因为生产该block将得到一定的奖励,该奖励信息已经被包含在这个block里面。 当一个网络节点生成一个新的block时,它将广播给其它的网络节点。但这个网络block并不一定会被网络接受,因为有可能有别的网络节点更早生产出了block,只有最早产生的那个block或者后续block最多的那个block有效,其余block不再作为下一个block的初始block。 对方如何确认支付成功? 当该笔支付信息分发到网络节点后,网络节点开始计算该交易是否有效(即账户余额是否足够支付),并试图生成包含该笔交易信息的blocks。当累计有6个blocks(1个直接blocks和5个后续blocks)包含该笔交易信息时,该交易信息被认为“验证过”,从而该交易被正式确认,对方可确认支付成功。 一个可能的问题为,我将地址A里面的余额都支付给地址B,同时又支付给地址C,如果只验证单比交易都是有效的。此时,我的作弊的方式为在真相大白之前产生6个仅包括B的block发给B,以及产生6个仅包含C的block发给C。由于我产生block所需要的CPU时间非常长,与全网络相比,我这样作弊成功的概率微乎其微。 网络节点生产block的动机是什么? 从上面描述可以看出,为了让交易信息有效,需要网络节点生成1个和5个后续block包含该交易信息,并且这样的block生成非常耗费CPU。那怎么样让其它网络节点尽快帮忙生产block呢?答案很简单,协议规定对生产出block的地址奖励BTC,以及交易双方承诺的手续费。目前生产出一个block的奖励为50BTC,未来每隔四年减半,比如2013年到2016年之间奖励为25BTC。 交易是匿名的吗? 是,也不是。所有BITCOIN的交易都是可见的,我们可以查到每个账户的所有交易记录,比如我的。但与银行货币体系不一样的地方在于,每个人的账户本身是匿名的,并且每个人可以开很多个账户。总的说来,所谓的匿名性没有宣称的那么好。 但bitcoin用来做黑市交易的还有一个好处,它无法冻结。即便警方追踪到了某个bitcoin地址,除非根据网络地址追踪到交易所使用的电脑,否则还是毫无办法。 如何保证bitcoin不贬值? 一般来说,在交易活动相当的情况下,货币的价值反比于货币的发行量。不像传统货币市场,央行可以决定货币发行量,bitcoin里没有一个中央的发行机构。只有通过生产block,才能获得一定数量的BTC货币。所以bitcoin货币新增量决定于: 1、生产block的速度:bitcoin的协议里规定了生产block的难度固定在平均2016个每两个星期,大约10分钟生产一个。CPU速度每18个月速度加倍的摩尔定律,并不会加快生产block的速度。 2、生产block的奖励数量:目前每生产一个block奖励50BTC,每四年减半,2013年开始奖励25BTC,2017年开始奖励额为12.5BTC。 综合上面两个因素,bitcoin货币发行速度并不由网络节点中任何单个节点所控制,其协议使得货币的存量是事先已知的,并且最高存量只有2100万BTC

C. 比特币算法原理

比特币算法主要有两种,分别是椭圆曲线数字签名算法和SHA256哈希算法。

椭圆曲线数字签名算法主要运用在比特币公钥和私钥的生成过程中,该算法是构成比特币系统的基石。SHA-256哈希算法主要是运用在比特币的工作量证明机制中。

比特币产生的原理是经过复杂的运算法产生的特解,挖矿就是寻找特解的过程。不过比特币的总数量只有2100万个,而且随着比特币不断被挖掘,越往后产生比特币的难度会增加,可能获得比特币的成本要比比特币本身的价格高。

比特币的区块由区块头及该区块所包含的交易列表组成,区块头的大小为80字节,由4字节的版本号、32字节的上一个区块的散列值、32字节的 Merkle Root Hash、4字节的时间戳(当前时间)、4字节的当前难度值、4字节的随机数组成。拥有80字节固定长度的区块头,就是用于比特币工作量证明的输入字符串。不停的变更区块头中的随机数即 nonce 的数值,并对每次变更后的的区块头做双重 SHA256运算,将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。

比特币的本质其实是一堆复杂算法所生成的一组方程组的特解(该解具有唯一性)。比特币是世界上第一种分布式的虚拟货币,其没有特定的发行中心,比特币的网络由所有用户构成,因为没有中心的存在能够保证了数据的安全性。

D. 请求懂得人简洁明了的讲一下,比特币是怎么制造出来的,是不是有条件人人都能造比特币在多少个国家合法

发明人中本聪。
比特币是一种数学公式算法。
有条件任何人都能够制造。
举个栗子:数学公式1+1=2张三可以写,王麻子可以写,你写可以写。
如果你拿到或者制造类似比特币的算法,修改相关参数就能够制造类似的“比特币”,名字你随便取可以叫A特币,C特币,也可以叫龙傲天币,赵日天币等等。
至于合不合法的问题:作为货币肯定是不合法的,一:这种算法的目的就是去中心化一个国家到底是有多想不开把发行货币的权利丢掉?因此楼上说美德日承认比特币的货币地位肯定是骗你的。比特二:全世界的人民每天都在不停的创造新的财富,而比特币数量有限只有区区2100万个根本不能够履行货币的职能等等原因。因此到目前为止世界上没有任何一个国家把比特币作为法定货币。

目前他在世界各国的地位上只是作为类似游戏装备,软件之类的东西,
说穿了就是一种虚拟商品。

E. 比特币为什么可以0点几个

比特币是数字货币,是数字就会有小数,如果没有小数,也是没法便于流通的。
比特币的小数最多有10位,仅仅是因为中本聪写原始代码的时候只支持了10位小数,可以理解成计算器上只能摁出这么多零。
与大多数货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。

F. 比特币哈希字符要求前几位为零

是的。运算是将任意长度的0,变成固定长度的0。所以比特币哈希字符要求前几位为零的,任何信息,不管多长算法“SHA1”,算出的结果是160位,也就是由160个0或1组成;比特币挖矿用到的是“SHA256”,算出的结果是256位。至于具体怎么算的,我们继续秉承最小知识集原则,不去管它。

G. 比特币有被完全挖完的一天吗比特币是如何挖出来的

每10min就会有一块BTC被挖掘出来,因为市场竞争这么剧烈,12.5比特币的区块链奖赏将根据其在这一过程中的哈希率奉献在竞争者中间进行分配。大部分BTC采掘也被挖币大农场和开采池所取代,因而,为了获得一些BTC,你必须加入其中一个或另一个开采池,并奉献你所能贡献的一切哈希率。应用传统的个人计算机,乃至GPU服务平台可能需要好多个月的时间才可以挣到BTC,由于ASIC芯片目前在BTC采掘行业占有主导性。

调整后的难度系数促使每形成一个区块链的预期时间为10min。现今难易度约为480PH/s,约是创世区块的680亿倍左右,换句话说,以现在的算率,各大网站挖矿需要经过约3000万亿元亿个哈希运算才能找到一个符合条件的回答,形成一个新的区块链。即使是能够证明你挖掘出来的BTC或者其他的加密数字货币是真实的,可是只不过是临时存有其他人帐户。一般这种手机上云挖矿方式都是要达到一定的总数之后才可以转币,而达到这一周期时间或是门坎必须很长一段时间,已经足够别人跑路了。

H. 比特币挖矿究竟在计算一个什么问题手动验证区块链给出答案

简单回顾下挖矿的流程。

首先先要对所有的交易做验证,剔除有问题的,然后通过一套自定义的标准来选择哪些交易希望打包进区块,比如说提供的交易费与交易占用的字节大小的比值超过某个门槛,这样的交易才被认为有利可图。当然,节点也可以特意选择要加入某条交易,或者故意忽略某些交易。如果是通过矿池挖矿的话,矿池的服务器会去筛选交易,然后分配给每个参与的矿机一个独立的任务。

一旦筛选好交易数据,层层约减,通过这些交易就可以计算出一棵Merkle树,可以确定一个唯一的摘要,这就是Merkl树的根。

然后我们再依次获取挖矿需要的其他信息,这些信息组成一个区块的头。

区块头的字节分配

区块头只有80个字节,挖矿只需要对区块头进行运算即可。交易数据都通过merkle树固定了下来,不需要再包含进来。

这些信息中大部分已经是固定下来的,或者是可计算的。

我们以区块277316为例,其信息来自网站 http://blockchain.info

Bitcoin Block #277316blockchain.info

选择这个区块的原因是在《Mastering Bitcoin》一书中,中文社区译本和英文原版在介绍这部分内容时有出入,而且作者Antonopoulos并没有提到一个关键点,就是字节顺序的问题,相信很多人可能会踩这个坑。这里还原的细节可以帮助读者与书籍做相互参考。

请大家注意下面的每个步骤,注意每一个变化,这是比特币最核心的算法。

转换时间,记住,一定要转为utc的时间戳,此处遇到过坑,小心。

这一步的发现异常艰辛,耗费了大量的查询,大坑,大坑,谨记。发明人中本聪可能为了让机器计算更快,而变为了更接近机器的编码方式little-endian.

最终得到的结果就是

16进制下前面15个0,然后是1; 而难度目标对应的数字是

16进制下前面15个0,然后是3. 计算结果小于难度目标,符合要求。这个结果与网站上公布的数字一致。

在挖矿时,nonce随机数是未知的,要从0试到2^32,但是这个数字其实不大,只有4294967296,以现在的矿机动辄14T每秒的算力,全部算完到上限也不需要一秒。刚才提到在这种情况下,需要使用创币交易中的附带信息,额外的字符串成为extra nonce。

另外,创世区块也可以通过上面的方法来验证,有好奇的朋友可以尝试下。

提示:

I. 离线生成的比特币地址是如何避免冲突的

BTC的地址生成过程如下,完整的可以查一下比特币中文维基:
比特币地址的生成过程

(说明: 有些数字以"0x"开头,意思是此数字使用十六进制表示法。"0x"本身没有任何含义,它是C语言流传下来的,约定俗成的写法,比如0xA就是十进制的10。另外,1个字节 = 8位二进制 = 2位十六进制)。

第一步,随机选取一个32字节的数、大小介于1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间,作为私钥。


第二步,使用椭圆曲线加密算法(ECDSA-secp256k1)计算私钥所对应的非压缩公钥。 (共65字节, 1字节 0x04, 32字节为x坐标,32字节为y坐标)关于公钥压缩、非压缩的问题另文说明。
第三步,计算公钥的 SHA-256 哈希值


第四步,取上一步结果,计算 RIPEMD-160 哈希值


第五步,取上一步结果,前面加入地址版本号(比特币主网版本号“0x00”)
00

第六步,取上一步结果,计算 SHA-256 哈希值


第七步,取上一步结果,再计算一下 SHA-256 哈希值(哈哈)


第八步,取上一步结果的前4个字节(8位十六进制)
D61967F6

第九步,把这4个字节加在第五步的结果后面,作为校验(这就是比特币地址的16进制形态)。
00D61967F6

第十步,用base58表示法变换一下地址(这就是最常见的比特币地址形态)。

热点内容
数字货币交易所为什么都要手持 发布:2024-11-19 11:19:49 浏览:267
币圈山寨币能不能搞 发布:2024-11-19 11:17:13 浏览:215
波场TRX202011月18日 发布:2024-11-19 11:12:18 浏览:936
比特币历史价格2015年 发布:2024-11-19 10:31:57 浏览:782
比特币中国地区三大交易所地址 发布:2024-11-19 10:14:35 浏览:750
简单地说区块链是什么 发布:2024-11-19 10:02:46 浏览:892
比特币算力合约哪家好 发布:2024-11-19 09:58:41 浏览:400
区块链数字生命管理平台 发布:2024-11-19 09:52:27 浏览:591
比特币冷钱包生成网站 发布:2024-11-19 09:28:53 浏览:295
币印矿池账户在哪 发布:2024-11-19 08:53:21 浏览:949