当前位置:首页 » 比特币问答 » 比特币sha256

比特币sha256

发布时间: 2023-07-31 04:36:24

比特币算法原理

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

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

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

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

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

㈡ 虚拟货币有哪些

除了比特币之外,虚拟世界还存在很多别的虚拟货币。

Litecoin

Litecoin(LTC)发布于2011年10月7日,是目前市值最高的山寨币,约为 BTC 市值的2%。目前单价为2.31美元,总币值 3800 万美元。

这同样是一种分布式(去中心化)的数字货币。不同于比特币使用的 SHA256 挖矿算法,LTC 采用 scrypt 算法。独特的算法也是从山寨币中脱颖而出的关键,scrypt 算法使用 SHA256 作为其子程序,而 scrypt 自身需要大量的内存,每个散列作为输入的种子使用的,然后与需要大量的内存存储另一种子伪随机序列,共同生成序列的伪随机点而输出哈希值。在 BTC(Bitcoin)的开采依靠单纯的显卡挖矿已经力不从心(利用一般配置显卡挖到一个 BTC 大概需要十几到数十天),各种价格不菲挖矿机的出现提高了普通人通过挖矿获得 BTC 的门槛,而 LTC 在使用 PC 显卡挖矿上具有一定优势。(本段来源于知乎。)

Litecoin 对比 BTC 在技术上做了一点的改进,如果现在 BTC 是金,那 LTC 暂时是银。

Litecoin 的最大优点是能更快确认真伪,该虚拟货币由 Charles Lee 设计和维护。比特币的交易需要验证,验证的时间平均在10分钟以上,大多数交易网站验证需要1个小时。Litecoin 交易确认平均为2.5分钟,开发者声称缩短验证增加了虚拟货币的实用性。定制机器和 AMD GPU 的比特币采矿效率最高,令使用 CPU 采矿的矿工几乎无利可图。Litecoin 的采矿排除了 GPU 和定制处理器,因此不过于依赖少量专业矿工。

PPCoin

PPCoin(PPC) 发布于2012年8月19,在 BTC 原有技术上有所提升。使用 proof-of-stake,并加入 coin age 概念。

PPCoin 是 Bitcoin 的分叉项目,目标是实现能源效率,并尽可能保持原 Bitcoin 的最好性能。PPCoin 单价0.22美元,总币值 400 万美元。

PPCoin 没有一个固定的货币供应量上限,但这并不意味着 PPCoin 比 Bitcoin 有明显通胀。可以将 Bitcoin 比做黄金,黄金每年的通胀是1-3%左右,虽然黄金并没有已知的货币供应量上限,但我们仍知道它是可靠的稀缺品。

PPCoin 的铸造有两种类型,工作证明及股权证明。工作证明的铸币率受摩尔定律影响,这取决于我们的工作证明能力的成倍增长。而大家都知道的是摩尔定律最终会结束,到那时通胀的 PPCoin 可能已经接近黄金的水平。而股权证明铸造每年最多通胀 1%。与此同时,PPCoin 的交易费用被销毁以抗衡通胀。所以整体来说, PPCoin 的铸币设计仍是未来一个非常低的通胀设计,可以达到和 Bitcoin 相媲美的程度。

PPCoin 的奖励方式类似彩票,会根据矿工持有的 PPCoin 数量决定获胜几率,创始人之一的 Sunny King 说,他们的设计是基于长期能量效率的新概念。

Terracoin

Terracoin(TRC)发布于2012年10月26,总币量 4200 万。每块速度为2分钟,比 LTC 稍快一些。技术上没有太多特别之处,类似 BTC 每4年产量减半。

不过运营团队似乎有较强商业背景,可能会在流通上优于其他比特币。虚拟货币现在的发展越来越得到重视,现在一些有商业背景的团队进入,会加速虚拟货币的发展。

Namecoin

Namecoin 是一个基于比特币技术的分布式域名系统,其原理和 Bitcoin 一样, 这个开源软件首次发布的日期是2011年4月18日。

Namecoin 产生于一个不同于 Bitcoin 主交易区块的起源块, 使用一个新的区块链(blockchain),独立于 Bitcoin 的区块链之外,因为是基于 Bitcoin,域名的安全性, 分布性, 鲁棒性, 加密性, 迁移都有数学保证。可以用挖 Bitcoin 的方式,同时挖 Namecoin。

这个项目由 bitdns 讨论并提出,主要是对目前 DNS 的缺陷不满。Namecoin 惟一的顶级域名是 .bit, 注册 .bit 域名需要花费 Namecoin。

另外,什么q币,盛大币,起点币,各种网络游戏币等也是虚拟货币。

㈢ 即使美国也“杀不死”比特币

这篇文章的题目只是为了“报复”。

报复,3年前,美国的彭博社发的一篇《即使中国也杀不死比特币》(Even China Can't Kill Bitcoin) 。那篇文章,把中国政府2017年规范金融市场、关闭加密货币交易的行为,看成是中国政府要“杀死”比特币;把中国与土耳其、委内瑞拉、俄罗斯相提并论,一道列为对比特币不友好的国家。但是,不友好与“杀死”是有天壤之别的,为什么要用“杀”(kill)这种字眼呢?

2017年2月24日,彭博社《即使中国也杀不死比特币》网络截图

很显然,这是在夸大其词。所以,为了表达中国民间的不满,我要用“即使美国也杀不死比特币”做标题,来进行报复。

上一篇《比特币“泡沫”11年不破的秘密!》,通过最新的学术研究,我们知道是因为比特币累积了足够的信任才走到今天的;我们还知道,这些 信任主要来自一种比特币的属性“不可更改”(immutability) 。一旦,比特币变得可以更改了,那么比特币也就完蛋了。也就是说,如果美国想杀死比特币,只需要杀死这个“属性”就够了。

问题一下子就变得简单了。因为,美国政府是有办法让比特币变得可以更改的,甚至完全不一样的;又因为,比特币有个重要前提:比特币区块链只认最长的那个区块链,谁挖出的链最长、又合法,谁就会成为合法的比特币。所以,如果, 美国政府,只要汇集足够的算力,生成了最长的比特币区块链,那么,美国政府也就完全控制了比特币,从而将比特币玩弄于股掌之间,让比特币生不如死。 而且,在控制了记账权后,美国政府 不但可以获得所有的区块奖励,而且还可以决定哪一笔交易记入区块链,哪一笔不记入

现在你知道了,美国政府要想控制比特币,唯一要做的就是——通过算力竞赛获得记账权。你可能再想,算力竞赛比的是什么呢?比较复杂,一句话、两句话说不清楚。你就当那个比赛,是地球上最公平的 游戏 ,大家机会均等,唯一比拼的,也就是算力,谁的算力大,谁就能赢,不会有例外。

当然,开展行动之前,美国政府会首先了解的是比特币全网当前的算力,到底有多大?

为了便于理解下面的内容,需要先讲一下什么是算力。算力,是用计算机每秒可以运算SHA256哈希函数的次数来表达的,英文是hashrate。当前的最大单位是EH/s,表示1*10^18,1后面有18个0。

2016年2月2日,比特币的全网算力,也就是所有矿池的运算能力加起来,达到了1EH/s,此后一直处于增长过程中。

这样的算力到底有多强大呢?在2017年的时候,有人将比特币的算力与全球前100的超级计算机进行了比较。答案是: 100台超级计算机的算力都达不到比特币网络算力的十万分之一 。 不过,你千万不要以为,我们可以不要超级计算机了,有矿机就可以了。因为,矿机是专门用于SHA-256运算的,是专门设计的专用计算机,只可以用来挖矿,其他的什么也干不了。而超级计算机是通用计算机,可以干各种事情。请记住SHA-256,它在比特币中的地位非同小可,后面我们专门讲。

2017年6月比特币网络与Top100台超级计算机算力比较

你也许会想,现在5年过去了,这样的状况是否会有所改变呢?很遗憾,没有。

超级计算机的算力,与比特币全网的算力之间的差距,不是缩小了,而是还在加大。2017年6月,最快的超级计算机的峰值浮点运算次数是125,435.9TFlop/s ;2019年11月,最快的是IBM的Summit,它的理论峰值是200,794.9TFlop/s ,增长2倍都不到。而比特币网络,2017年6月的时候,算力只有5EH/s;2019年11月达到90EH/s,其算力一下子增加了18倍。

SUMMIT,排名第一的超级计算机,理论峰值200,795 TFlop/s

你可能也注意到了,这里的单位不一样。一个是TFlop/s ,一个是 EH/s。他们之间存在一种换算关系。一次hash运算,需要12700次浮点运算。换算过程是这样的,一次哈希计算需要6350次的整点运算,一次整点运算相当于2次浮点运算,6350 乘以 2 等于 12700。 关于Hash运算,是算力竞赛找到正确答案的手段。你可以理解为,这是一种比较复杂的计算过程,详细的后面会专门讲。

2020年10月12日,比特币全网的算力已经达到了140EH/s。从2016年2月达到1EH/s,4年多的时间,比特币全网的算力居然增加了140倍。

2020年10月12日比特币全网算力140EH/s

看了上面这些,你还在想用家用电脑挖矿吗?我劝你彻底打消这样的念头。因为,理论上公平的事情,由于算力的悬殊,已经变成实际的不可能了。但是,美国政府不一样,有的是钱,实在不行就发债。140Eh/s的算力,对于美国政府来说,可能真不是什么大事。

我们来帮美国政府计算一下,要想实现140EH/s的算力,需要多少钱?下面这张图片 ,是比特大陆宣传所说的,当前全网最强的矿机,已经卖光了。其算力达到了110TH/s,价格是2万多一点。

蚂蚁矿机S19 Pro110T

我们先把比特币的全网算力——140EH/s——换算一下单位,也就是在后面加6个0变成TH/s——140,000,000TH/s。美国要想实现这样的算力,需要1272728台这种S19 Pro蚂蚁矿机,人民币25,874,560,240元,约259亿人民币,40亿美元不到。电费、厂房及其他散热设施所需要的费用暂时先不算。因为,比特币挖出来后,还可以换成钱,经济上问题不大。

不过让人奇怪的是,比特币社区对此好像并不紧张。而且,还有一个网站 ,专门把重新生成整个比特币区块链所需要的时间实时公布了。据他们估算,2020年12月8日早上7:20,谁拥有比特币全网的算力, 只需要552.65天就可以把比特币区块链重新生成一次 。另外一个加密货币,BCH,用的时间更短,只需要32.67天。看来,美国政府杀死比特币的可能性正在加大,而且不用500多天,增加矿机的数量就可以了。这样,让杀死比特币的时间,会变得尽可能的短。

实时重写比特币、BCH区块链所需天数

那么,现在,美国政府在有了足够的算力之后,是否就可以杀死区块链了呢?

答案是:不可能。

因为有 “假定有效块”( AssumeValid ), 这是比特币核心(Bitcoin Core)软件里面的一个默认参数。

AssumeValid参数有两个作用,第一个就是可以减少验证开销;另一个好处是,这个参数就像定海神针一样告诉所有人,所有这个块前面的区块,包括这个区块是可靠的,你们的账户上的比特币是安全的。

这个参数是从0.14版本的时候开始有的,以后每次主要版本更新的时候,这个参数会被默认设置成几个月前的、已经确认的有效块。

现在的比特币核心是0.21.0版本,2020年6月3日发布的 。在这个版本的源代码中,已经更新了AssumeValid参数:

Bitcoin core 0.21 版本更新AssumeValid默认参数的截图

上面一行,有“-”号的,是被替换掉的以前的程序代码。,这个字符串代表的是写在比特币软件里的一个区块的hash,这个区块2019年10月1日18点46分生成的,区块的高度是597379。

下面那个有“+”号的,代表的是在代码里增加的程序代码,主要改变的是新的AssumeValid参数。,所代表的623950这个区块,是2020年4月2日2点13分。

被Bitcoin core 0.20替换掉的默认AssumeValid参数所代表的区块截图。

Bitcoin core 0.20软件里面最新的默认AssumeValid参数所代表的区块截图。

也就是说,因为AssumeValid参数的存在。美国政府把比特币区块链重新算一遍也没有用,它最多可以对AssumeValid参数后面的区块产生影响。

我们来算算算看,如果美国从参数后面开始做最长的区块链,是否有足够的利益?

先算一下到目前为止的数据,从2020年4月2日零点到2020年12月12日零点,一共有365810分钟。 比特币区块链,平均10分钟产生一个区块,每个区块的比特币奖励从50开始,已经经历了3次减半,现在是6.25个比特币,比特币的价格我们按照2万美元一个计算。

365810 10 6.25 20000 = 45.72625亿美元

正好,到目前为止所产生的比特币差不多价值45亿美元。应该说,还是很划算的,不管怎么说,没有亏。而且,未来还有很多比特币可以赚啊。且慢,即使只是从AssumeValid后面的区块开始,即使有利可图,美国最终还是不能杀死比特币。

关键还是AssumeValid参数。刚才说了,这个参数的 默认值是新的主要版本发布的时候设定的 。它也完全可以不是默认值,当比特币社区发现美国想杀死比特币的企图时,会通知大家出现的问题,让大家设置成新的参数。只要,大家把参数一改,就会让美国的那个最长的链,因为没有人认可而失效。那条最长的链,就会只剩下美国一个矿工在记账,自娱自乐。

就是这样简单,一个参数,就阻止了美国企图通过算力杀死比特币的阴谋。结论很简单,即使是美国也杀不死比特币。

AssumeValid参数,只是比特币11年成长的缩影。比特币核心软件的版本,已经进行了21次重大更新,小修小补更是不计其数。11年来,不只是比特币的价格在涨,比特币社区的能力也在不断提高。

最后,请允许我解释一下,这篇文章与《即使中国也杀不死比特币》不同,只是假设。实际上美国政府对比特币的态度,是相当的友好,其友好程度不是第一、也有第二。当然,也有更合适的国家可以拿来举例,但是我不敢。你懂的。

拿美国来举例,还有另一种考虑。因为,美国——现在是地球上最强大的国家,如果它都杀不死比特币了,那么其他的国家、组织、机构也就更没有这个可能了。那样的话,比特币也就可以高枕无忧了。但是,我还是要反复、再次,不厌其烦地提醒你,这一切并不能构成你——现在——就买比特币的理由,请切记。详细的原因,请看以前的文章:《小心!别上当!比特币从来没有牛市!》,很重要。

简单说,这篇文章写到这里的时候,是2020年12月12日凌晨,比特币的价格是18486美元。3年前,2017年12月17日,比特币价格开始从 历史 高点19000多美元回落,直到现在又重新站回了 历史 高点附近。我是想通过 历史 数据告诉你,比特币,还是很有可能再次跌倒1万美元以下的。波动性是比特币的天然属性,所以,你应该等等看。

实际上,你和我都相信,美国政府是不可能干这种事情的。这样的预算,首先就不会在国会通过。但是,我们的假定还是有价值的,这至少可以让更多的人丢掉幻想,让更多的人安心入眠。

还记得开头提到的《即使中国杀不死比特币》,那篇彭博社的文章吗?我真心希望你能亲自看到那篇文章 ,可惜的是,你看不到。里面有句话,非常好,借用一下,作为结尾。

如果你想废除一种人们喜欢的东西,它就会在其他地方冒出来!( If you try to abolish something people like, it just pops up somewhere else.


(待续,这是专题“比特币还能走多远”的第八篇)

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

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

㈤ 4. 比特币的密钥、地址和钱包 - 精通比特币笔记

比特币的所有权是通过密钥、比特币地址和数字签名共同确定的。密钥不存在于比特币网络中,而是用户自己保存,或者利用管理私钥的软件-钱包来生成及管理。

比特币的交易必须有有效签名才会被存储在区块中,因此拥有密钥就拥有对应账户中的比特币。密钥都是成对出现的,由一个公钥和一个私钥组成。公钥相当于银行账号,私钥就相当于银行卡密码。通常情况下密钥由钱包软件管理,用户不直接使用密钥。

比特币地址通常是由公钥计算得来,也可以由比特币脚本得来。

比特币私钥通常是数字,由比特币系统随机( 因为算法的可靠性与随机性正相关,所以随机性必须是真随机,不是伪随机,因此比特币系统可以作为随机源来使用 )生成,然后将私钥作为输入,使用椭圆曲线算法这个单向加密函数生成对应的公钥,再将公钥作为输入,使用单向加密哈希函数生成地址。例如,通过公钥K得到地址A的计算方式为:

其中SHA256和PIPEMD160被称为双哈希或者HASH160,Base58Check是带有验证功能的Base58编码,验证方式为先计算原始数据(编码前)的验证码,再比较编码后数据的验证码,相同则地址有效,否则无效。而在使用Base58Check编码前,需要对数据做处理。
处理方式为: 版本前缀 + 双哈希后的数据 + 校验码
其中版本前缀是自定义的,如比特币私钥的前缀是0x80,校验码是把版本前缀和双哈希后的数据拼接起来,进行两次SHA256计算,取前4字节。得到处理的数据后,再进行Base58编码,得到最终的结果。

下图是Base58Check版本前缀和Base58编码后的结果

密钥可以采用不同的编码格式,得到的编码后结果虽然不同,但密钥本身没有任何变化,采用哪种编码格式,就看情况而论了,最终目的都是方便人们准确无误的使用和识别密钥。
下图是相同私钥采用不同编码方式的结果:

公钥也有很多种格式,不过最重要的是公钥被分为压缩格式和非压缩格式,带04前缀的公钥为非压缩格式的公钥,而03,02开头的标识压缩格式的公钥。

前面说过,公钥是椭圆曲线上的一个点,由一对坐标(x, y)表示,再加上前缀,公钥可以表示为:前缀 x y。
比如一个公钥的坐标为:

以非压缩格式为例,公钥为(略长):

压缩格式的公钥可以节省一定的存储,对于每天成千上万的比特币交易记录来说,这一点点的节省能起到很大效果。

因为椭圆曲线实际上是一个方程(y2 mod p = (x3 + 7)mod P, y2是y的平方,x3是x的立方),而公钥是椭圆曲线上的一个点,那么公钥即为方程的一个解,如果公钥中只保留x,那么可以通过解方程得到y,而压缩公钥格式有两个前缀是因为对y2开方,会得到正负两个解,在素数p阶的有限域上使用二进制算术计算椭圆曲线的时候,y坐标或奇或偶,所以用02表示y为奇数,03表示y为偶数。

所以压缩格式的公钥可以表示为:前缀x
以上述公钥的坐标为准,y为奇数为例,公钥K为:

不知道大家发现没有,这种压缩方式存在一个问题,即一个私钥可以得出两个公钥,压缩和非压缩公钥,而这两个公钥都对应同一个私钥,都合法,但生成的比特币地址却不相同,这就涉及到钱包软件的实现方式,是使用压缩公钥还是非压缩公钥,或者二者皆用,这个问题后面来介绍。

比特币钱包最主要的功能就是替用户保管比特币私钥,比特币钱包有很多种,比如非确定性(随机)钱包,确定性(种子)钱包。所谓的非确定性是指钱包运行时会生成足够的私钥(比如100个私钥),每个私钥仅会使用一次,这样私钥管理就很麻烦。确定性钱包拥有一个公共种子,单向离散方程使用种子生成私钥,种子足够回收所有私钥,所以在钱包创建时,简单备份下,就可以在钱包之间转移输入。

这里要特别介绍下助记码词汇。助记码词汇是英文单词序列,在BIP0039中提出。这些序列对应着钱包中的种子,种子可以生成随机数,随机数生成私钥,私钥生成公钥,便有了你需要的一切。所以单词的顺序就是钱包的备份,通过助记码词汇能重建钱包,这比记下一串随机数要强的多。

BIP0039定义助记码和种子的创建过程如下:

另外一种重要的钱包叫做HD钱包。HD钱包提供了随机(不确定性) 钥匙有两个主要的优势。
第一,树状结构可以被用来表达额外的组织含义。比如当一个特定分支的子密钥被用来接收交易收入并且有另一个分支的子密钥用来负责支付花费。不同分支的密钥都可以被用在企业环境中,这就可以支配不同的分支部门,子公司,具体功能以及会计类别。
第二,它可以允许让使用者去建立一个公共密钥的序列而不需要访问相对应的私钥。这可允许HD钱包在不安全的服务器中使用或者在每笔交易中发行不同的公共钥匙。公共钥匙不需要被预先加载或者提前衍生,但是在服务器中不具有可用来支付的私钥。

BIP0038提出了一个通用标准,使用一个口令加密私钥并使用Base58Check对加密的私钥进行编码,这样加密的私钥就可以安全地保存在备份介质里,安全地在钱包间传输,保持密钥在任何可能被暴露情况下的安全性。这个加密标准使用了AES,这个标准由NIST建立,并广泛应用于商业和军事应用的数据加密。

BIP0038加密方案是: 输入一个比特币私钥,通常使用WIF编码过,base58chek字符串的前缀“5”。此外BIP0038加密方案需要一个长密码作为口令,通常由多个单词或一段复杂的数字字母字符串组成。BIP0038加密方案的结果是一个由base58check编码过的加密私钥,前缀为6P。如果你看到一个6P开头的的密钥,这就意味着该密钥是被加密过,并需个口令来转换(解码) 该密钥回到可被用在任何钱包WIF格式的私钥(前缀为5)。许多钱包APP现在能够识别BIP0038加密过的私钥,会要求用户提供口令解码并导入密钥。

最通常使用BIP0038加密的密钥用例是纸钱包一一张纸张上备份私钥。只要用户选择了强口令,使用BIP0038加密的私钥的纸钱包就无比的安全,这也是一种很棒的比特币离线存储方式(也被称作“冷存储”)。

P2SH函数最常见的实现时用于多重签名地址脚本。顾名思义,底层脚本需要多个签名来证明所有权,然后才能消费资金。这类似在银行开设一个联合账户。

你可以通过计算,生成特殊的比特币地址,例如我需要一个Hello开头的地址,你可以通过脚本来生成这样一个地址。但是每增加一个字符,计算量会增加58倍,超过7个字符,需要专门的硬件或者矿机来生成,如果是8~10个字符,那么计算量将无法想象。

㈥ 比特币基础知识 你绝对想不到


椭圆曲线数字签名算法
椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线对数字签名算法(DSA)的模拟,该算法是构成比特币系统的基石。
私钥
非公开,拥有者需安全保管。通常是由随机算法生成的,说白了,就是一个巨大的随机整数,32字节,256位。
大小介于1 ~ 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141之间的数,都可以认为是一个合法的私钥。
于是,除了随机方法外,采用特定算法由固定的输入,得到32字节输出的算法就可以成为得到私钥的方法。于是,便有了迷你私钥(Mini Privkey),原理很简单,例如,采用SHA256的一种实现:
private key = SHA256()1
迷你私钥存在安全问题,因为输入集合太小,易被构造常见组合的彩虹表暴力破解,所以通常仿轮纳还是使用系统随机生成的比较好,无安全隐患。
公钥
公钥与私钥是相对应的,一把私钥可以推出唯一的公钥,但公钥却无法推导出私钥。公钥有两种形式:压缩与非压缩。
早期比特币均使用非压缩公钥,现大部分客户端已默认使用压缩公钥。
这个貌似是比特币系统一个长得像feature的bug,早期人少活多代码写得不够精细,openssl库的文档又不足够好,导致Satoshi以为必须使用非压缩的完整公钥,后来大家发现其实公钥的左右两个32字节是有关联的,左侧(X)可以推出右侧(Y)的平方值,有左侧(X)就可以了。
现在系统里两种方式共存,应该会一直共存下去。两种公钥的首个字节为标识位,压缩为33字节,非压缩为65字节。以0x04开头为非压缩,0x02/0x03开头为压缩公钥,0x02/0x03的选取由右侧Y开方后的奇偶决定。
压缩形式可以减小Tx/Block的体积,每个Tx Input减少32字节。
签名
使用私钥对数据进行签署(Sign)会得到签名(Signature)。通常会将数据先生成Hash值,然后对此Hash值进行签名。签名(signature)有两部分组成: R + S。由签名(signature)与Hash值,便可以推出一个公钥,验证此公钥,便可知道此签名是否由公钥对应的私钥签名。
通常,每个签名会有三个长度:73、72、71,符合校验的概率为25%、50%、25%。所以每次签署后,需要找出符合校验的签名长度,再提供给验证方。
地址
地址是为了人们交换方便而弄出来的一个方案,因为公钥太长了(130字符串或66字符串)。地址长度为25字节,转为base58编码后,为34或35个字符。base58是类似base64的编码,但去掉了易引起视觉混淆的字符,又在地址末尾添加了4个字节校验位,保障在人们交换个别字符错误时,也能够因地址校验失败而制止了误操作。
由于存在公钥有两种形式,那么一个公钥便对应两个地址。这两个地址都可由同一私钥签署交易。
公钥生成地址的算法:
Version = 1 byte of 0 (zero); on the test network, this is 1 byte of 111
Key hash = Version concatenated with RIPEMD-160(SHA-256(public key))
Checksum = 1st 4 bytes of SHA-256(SHA-256(Key hash))
Bitcoin Address = Base58Encode(Key hash concatenated with Checksum)1234
下图是非压缩公钥生成地址的过程:
对于压缩公钥生成地址时,则只取公钥的X部分即可。
推导关系
三者推导关系:私钥
公钥
两个地址。过程均不可逆。拥有私钥便拥有一切,但通常为了方便,会把对应的公钥、地址也存储起来。
交易
比特币的交易(Transation,缩写Tx),并不是通常意义的桐散交易,例如一手交钱一手交货,而是转账。交易由N个输入和M个输出两部分组成。交易的每个输入便是前向交易的某个输出,那么追踪到源头,必然出现一个没有输入的交易,此类交易称为CoinBase Tx。CoinBase类备没交易是奖励挖矿者而产生的交易,该交易总是位于Block块的第一笔。
拥有一个输入与输出的Tx数据:
Input:
Previous tx:
Index: 0
scriptSig:
241501
Output:
Value: 5000000000
scriptPubKey: OP_DUP OP_HASH160
OP_EQUALVERIFY OP_CHECKSIG12345678910
一旦某个Tx的第N个输出成为另一个Tx的输入,那么该笔比特币即为已花费。每个交易有唯一Hash字符串来标识,通过对交易数据做两次SHA256哈希运算而来:
Tx Hash ID = SHA256(SHA256(Tx Data))1
矿工费
矿工费(Transaction Fee)是鼓励矿工将Tx打包进Block的激励报酬。计算一笔交易的矿工费:
Transaction Fee = SUM(Inputs amount) - SUM(Outputs amount)1
每笔Tx的矿工费必然大于等于零,否则该笔Tx即为非法,不会被网络接收。
数据块
数据块(Block)是存储Block Meta与Tx的地方。Block的第一笔Tx总是CoinBase Tx,因此Block中的交易数量总是大于等于1,随后是这段时间内网络广播出来的Tx。
找到合适的Block是一件非常困难的事情,需要通过大量的数学计算才能发现,该计算过程称为“挖矿”。首个发现者,会得到一些比特币作为奖励。
数据链
多个Block连接起来成为数据链(Block Chain)。
为了引入容错与竞争机制,比特币系统允许Block Chain出现分叉,但每个节点总是倾向于选择最高的、难度最大的链,并称之为Best Chain,节点只认可Best Chain上的数据。
首个Block称为Genesis Block,并设定高度为零,后续每新增一个Block,高度则递增一。目前是不允许花费Genesis Block中的比特币的。
每个Block中的Tx在此Block中均唯一
一个Tx通常只会在一个Block里,也可能会出现在多个Block中,但只会在Best Chain中的某一个Block出现一次
货币存储
比特币是密码货币、纯数字化货币,没有看得见摸得着的硬币或纸币。一个人持有比特币意味着:
其拥有一些地址的私钥
这些地址是数笔交易的输出,且未花费
所有货币记录均以交易形式存储在整个blockchain数据块中,无交易无货币。货币不会凭空产生,也不会凭空消失。遗失了某个地址的私钥,意味着该地址上的Tx无法签署,无法成为下一个Tx的输入,便认为该笔比特币永久消失了。
货币发行
既然所有交易的输入源头都是来自CoinBase,产生CoinBase时即意味着货币发行。比特币采用衰减发行,每四年产量减半,第一个四年每个block的coinbase奖励50BTC,随后是25btc, 12.5btc, 并最终于2140年为零,此时总量达到极限为2100万个btc。
减半周期,严格来说,并不是准确的四年,而是每生成210000个block。之所以俗称四年减半,是因为比特币系统会根据全网算力的大小自动调整难度系统,使得大约每两周产生2016个block,那么四年约21万块block。
该函数GetBlockValue()用于计算挖得Block的奖励值:
int64 static GetBlockValue(int nHeight, int64 nFees)
{
int64 nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210000 blocks, which will occur approximately every 4 years
nSubsidy = (nHeight / 210000);
return nSubsidy + nFees;
}123456789
当达到2100万btc以后,不再有来自CoinBase的奖励了,矿工的收入来源仅剩下交易的矿工费。此时,每个block的收入绝对值btc很低,但此时比特币应当会非常繁荣,币值也会相当的高,使得矿工们依然有利可图。
杜绝多重支付
传统货币存在多重支付(Double Spending)问题,典型的比如非数字时代的支票诈骗、数字时代的信用卡诈骗等。在比特币系统里,每笔交易的确认均需要得到全网广播,并收录进Block后才能得到真正确认。每笔钱的花销,均需要检测上次输入交易的状态。数据是带时间戳的、公开的,BlockChain由巨大的算力保障其安全性。所以比特币系统将货币的多重支付的风险极大降低,几近于零。通过等待多个Block确认,更是从概率上降低至零。一般得到6个确认后,可认为非常安全。但对于能影响你人生的重大支付,建议等待20~30个确认。
匿名性
任何人均可以轻易生成大量的私钥、公钥、地址。地址本身是匿名的,通过多个地址交易可进一步提高匿名性。但该匿名性并不像媒体宣传的那样,是某种程度上的匿名。因为比特币的交易数据是公开的,所以任何一笔资金的流向均是可以追踪的。
不了解比特币的人为它的匿名性产生一些担忧,比如担心更利于从事非法业务;了解比特币的人却因为它的伪匿名性而苦恼。传统货币在消费中也是匿名的,且是法律保障的,大部分国家都不允许个人涂画纸币。
地址本身是匿名的,但你可以通过地址对应的私钥签名消息来向公众证明你拥有某个比特币地址。
其他名词
哈希
哈希(Hash)是一种函数,将一个数映射到另一个集合当中。不同的哈希函数映射的空间不同,反映到计算机上就是生成的值长度不一样。同一个哈希函数,相同的输入必然是相同的输出,但同一个输出却可能有不同的输入,这种情况称为哈希碰撞。
常见的哈希函数有CRC32, MD5, SHA1, SHA-256, SHA-512, RIPEMD-160等,哈希函数在计算中有着非常广泛的用途。比特币里主要采用的是SHA-256和RIPEMD-160。
脑钱包纸钱包
前面提到过的脑钱包与纸钱包,这其实不算是钱包的分类,只是生成、存储密钥的方式而已。脑钱包属于迷你私钥的产物。脑钱包就是记在脑袋里的密钥,纸钱包就是打印到纸上的密钥,仅此而已。
有同学提到过,以一个计算机文件作为输入,例如一个数MB大小的照片,通过某种Hash运算后得到私钥的方法。这个方案的安全性还是不错的,同时可以防止盗私钥木马根据特征扫描私钥。文本形式存储私钥是有特征的,而一个照片文件却难以察觉,即使放在云盘等第三方存储空间中都是安全的。

㈦ 比特币私钥是52位还是64

比特币私钥是64位,WIFI格式是52位
比特币私钥是一个256位的随机数,通过SHA-256算法产生。比特币私钥的定义非常简单,一个是256位(256个二进制数字)另一个是随机数,意思是这个数的产生没有规律。
比特币私钥是一个数字,这个数字可以取从0到2___-1之间的任意值。

㈧ 什么是SHA256

SHA 家族
SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院 (NIST) 发布的一系列密码散列函数。正式名称为 SHA 的家族第一个成员发布于 1993年。然而现在的人们给它取了一个非正式的名称 SHA-0 以避免与它的后继者混淆。两年之后, SHA-1,第一个 SHA 的后继者发布了。 另外还有四种变体,曾经发布以提升输出的范围和变更一些细微设计: SHA-224, SHA-256, SHA-384 和 SHA-512 (这些有时候也被称做 SHA-2)。
SHA-0 和 SHA-1
最初载明的算法于 1993年发布,称做安全散列标准 (Secure Hash Standard),FIPS PUB 180。这个版本现在常被称为 "SHA-0"。它在发布之后很快就被 NSA 撤回,并且以 1995年发布的修订版本 FIPS PUB 180-1 (通常称为 "SHA-1") 取代。根据 NSA 的说法,它修正了一个在原始算法中会降低密码安全性的错误。然而 NSA 并没有提供任何进一步的解释或证明该错误已被修正。1998年,在一次对 SHA-0 的攻击中发现这次攻击并不能适用于 SHA-1 — 我们不知道这是否就是 NSA 所发现的错误,但这或许暗示我们这次修正已经提升了安全性。SHA-1 已经被公众密码社群做了非常严密的检验而还没发现到有不安全的地方,它现在被认为是安全的。
SHA-0 和 SHA-1 会从一个最大 2^64 位元的讯息中产生一串 160 位元的摘要然后以设计 MD4 及 MD5 讯息摘要算法的 MIT 教授 Ronald L. Rivest 类似的原理为基础来加密。
SHA-0 的密码分析
在 CRYPTO 98 上,两位法国研究者展示了一次对 SHA-0 的攻击 (Chabaud and Joux, 1998): 散列碰撞可以复杂到 2^61 时被发现;小于 2^80 是理想的相同大小散列函数。
2004年时,Biham 和 Chen 发现了 SHA-0 的近似碰撞 — 两个讯息可以散列出相同的数值;在这种情况之下,142 和 160 位元是一样的。他们也发现了 SHA-0 在 80 次之后减少到 62 位元的完整碰撞。
2004年8月12日,Joux, Carribault, Lemuet 和 Jalby 宣布了完整 SHA-0 算法的散列碰撞。这是归纳 Chabaud 和 Joux 的攻击所完成的结果。发现这个碰撞要复杂到 2^51, 并且用一台有 256 颗 Itanium2 处理器的超级电脑耗时大约 80,000 CPU 工作时 。
2004年8月17日,在 CRYPTO 2004 的 Rump 会议上,Wang, Feng, Lai, 和 Yu 宣布了攻击 MD5、SHA-0 和其他散列函数的初步结果。他们对 SHA-0 攻击复杂到 2^40,这意味着他们攻击的成果比 Joux 还有其他人所做的更好。该次 Rump 会议的简短摘要可以在 这里找到,而他们在 sci.crypt 的讨论,例如: 这些结果建议计划使用 SHA-1 作为新的密码系统的人需要重新考虑。
更长的变种
NIST 发布了三个额外的 SHA 变体,每个都有更长的讯息摘要。以它们的摘要长度 (以位元计算) 加在原名后面来命名:"SHA-256", "SHA-384" 和 "SHA-512"。它们发布于 2001年的 FIPS PUB 180-2 草稿中,随即通过审查和评论。包含 SHA-1 的 FIPS PUB 180-2,于 2002年以官方标准发布。这些新的散列函数并没有接受像 SHA-1 一样的公众密码社群做详细的检验,所以它们的密码安全性还不被大家广泛的信任。2004年2月,发布了一次 FIPS PUB 180-2 的变更通知,加入了一个额外的变种 "SHA-224",定义了符合双金钥 3DES 所需的金钥长度。
Gilbert 和 Handschuh (2003) 研究了新的变种并且没有发现弱点。
SHAd
SHAd 函数是一个简单的相同 SHA 函数的重述:
SHAd-256(m)=SHA-256(SHA-256(m))。它会克服有关延伸长度攻击的问题。
应用
SHA-1, SHA-224, SHA-256, SHA-384 和 SHA-512 都被需要安全散列算法的美国联邦政府所应用,他们也使用其他的密码算法和协定来保护敏感的未保密资料。FIPS PUB 180-1 也鼓励私人或商业组织使用 SHA-1 加密。Fritz-chip 将很可能使用 SHA-1 散列函数来实现个人电脑上的数位版权管理。
首先推动安全散列算法出版的是已合并的数位签章标准。
SHA 散列函数已被做为 SHACAL 分组密码算法的基础。
SHA-1 的描述
以下是 SHA-1 算法的伪代码:
(Initialize variables:)
a = h0 = 0x67452301
b = h1 = 0xEFCDAB89
c = h2 = 0x98BADCFE
d = h3 = 0x10325476
e = h4 = 0xC3D2E1F0
(Pre-processing:)
paddedmessage = (message) append 1
while length(paddedmessage) mod 512 > 448:
paddedmessage = paddedmessage append 0
paddedmessage = paddedmessage append (length(message) in 64-bit format)
(Process the message in successive 512-bit chunks:)
while 512-bit chunk(s) remain(s):
break the current chunk into sixteen 32-bit words w(i), 0 <= i <= 15
(Extend the sixteen 32-bit words into eighty 32-bit words:)
for i from 16 to 79:
w(i) = (w(i-3) xor w(i-8) xor w(i-14) xor w(i-16)) leftrotate 1
(Main loop:)
for i from 0 to 79:
temp = (a leftrotate 5) + f(b,c,d) + e + k + w(i) (note: all addition is mod 2^32)
where:
(0 <= i <= 19): f(b,c,d) = (b and c) or ((not b) and d), k = 0x5A827999
(20 <= i <= 39): f(b,c,d) = (b xor c xor d), k = 0x6ED9EBA1
(40 <= i <= 59): f(b,c,d) = (b and c) or (b and d) or (c and d), k = 0x8F1BBCDC
(60 <= i <= 79): f(b,c,d) = (b xor c xor d), k = 0xCA62C1D6
e = d
d = c
c = b leftrotate 30
b = a
a = temp
h0 = h0 + a
h1 = h1 + b
h2 = h2 + c
h3 = h3 + d
h4 = h4 + e
digest = hash = h0 append h1 append h2 append h3 append h4
注意:FIPS PUB 180-1 展示的构想,用以下的公式替代可以增进效能:
(0 <= i <= 19): f(b,c,d) = (d xor (b and (c xor d)))
(40 <= i <= 59): f(b,c,d) = (b and c) or (d and (b or c)))

㈨ 比特币机制研究

现今世界的电子支付系统已经十分发达,我们平时的各种消费基本上在支付宝和微信上都可以轻松解决。但是无论是支付宝、微信,其实本质上都依赖于一个中心化的金融系统,即使在大多数情况这个系统运行得很好,但是由于信任模型的存在,还是会存在着仲裁纠纷,有仲裁纠纷就意味着不存在 不可撤销的交易 ,这样对于 不可撤销的服务 来说,一定比例的欺诈是不可避免的。在比特币出来之前,不存在一个 不引入中心化的可信任方 就能解决在通信通道上支付的方案。
比特币的强大之处就在于:它是一个基于密码学原理而不是依赖于中心化机构的电子支付系统,它能够允许任何有交易意愿的双方能直接交易而不需要一个可信任的第三方。交易在数学计算上的不可撤销将保护 提供不可撤销服务 的商家不被欺诈,而用来保护买家的 程序化合约机制 也比较容易实现。

假设网络中有A, B ,C三个人。
A付给B 1比特币 ,B付给C 2比特币 ,C付给A 3比特币
如下图所示:

为了刺激比特币系统中的用户进行记账,记账是有奖励的。奖励来源主要有两方面:

比特币中每一笔交易都会有手续费,手续费会给记账者

记账会有打包区块的奖励,中本聪在08年设计的方案是: 每10分钟打一个包,每打一个包奖励50个比特币,每4年单次打包的奖励数减半,即4年后每打一个包奖励25个比特币,再过四年后就奖励12.5个比特币... 这样我们其实可以算出比特币的总量:

要说明打包的记录以谁为准的问题,我们需要引入一个知名的 拜占庭将军问题 (Byzantine failures)。拜占庭将军问题是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。

假设有9个互相远离的将军包围了拜占庭帝国,除非有5个及以上的将军一起攻打,拜占庭帝国才能被打下来。而这9个将军之间是互不信任的,他们并不知道这其中是否有叛徒,那么如何通过远距离协商来让他们赢取战斗呢?

口头协议有3个默认规则:
1.每个信息都能够被准确接收
2.接收者知道是谁发送给他的
3.谁没有发送消息大家都知道
4.接受者不知道转发信息的转发者是谁
将军们遵循口头规则的话,那就是下面的场景:将军1对其他8个将军发送了信息,然后将军2~9将消息进行转达(广播),每个将军都是消息的接受者和转发者,这样一轮下来,总共就会有9×8=72次发送。这样将军就可以根据自己手中的信息,选择多数人的投票结果行动即可,这个时候即便有间谍,因为少数服从多数的原则,只要大部分将军同意攻打拜占庭,自己就去行动。
这个方案有很多缺点:
1.首先是发送量大,9个将军之间要发送72次,随着节点数的增加,工作量呈现几何增长。
2.再者是无法找出谁是叛徒,因为是口头协议,接受者不知道转发信息的转发者是谁,每个将军手里的数据仅仅只是一个数量的对比:

这里我们假设有3个叛徒,在一种最极端的情况下即叛徒转发信息时总是篡改为“不进攻”,那么我们最坏的结果就如上图所示。将军1根据手里的信息可以推出要进攻的结论,却无法获知将军里面谁是叛徒。
这样我们就有了方案二:书面协议。

书面协议即将军在接受到信息后可以进行签字,并且大家都能够识别出这个签字是否是本人,换种说法就是如果有人篡改签字大家可以知道。书面协议相对比口头协议就是增加了一个认证机制,所有的消息都有记录。一旦发现有人所给出的信息不一致,就是追查间谍。
有了书面协议,那么将军1手里的信息就是这样的:

可以很明显得看出,在最坏的一种情况——叛徒总是转发“不进攻”的消息之下,将军7、8、9是团队里的叛徒。
这个方案解决了口头协议里历史信息不可追溯的问题,但是在发送量方面并没有做到任何改进。

在我们的示例中,比特币系统里的每个用户发起了一笔交易,都会通过自己的私钥进行签名,用数学公式表示就是:

所以之前的区块就变成了这样:

这样每一笔交易都由交易发起者通过私钥进行数字签名,由于私钥是不公开的,所以交易信息也就无法被伪造了。

如书面协议末尾所说的那样,书面协议未能解决信息交流过多的问题。当比特币系统中存在上千万节点的时候,如果要互相广播验证,请求响应的次数那将是一个非常庞大的数字,显然势必会造成网络拥堵、节点处理变慢。为了解决这个问题,中本聪干脆让整个10分钟出一个区块,这个区块由谁来打包发出呢?这里就采用了工作量证明机制(PoW)。工作量证明,说白了就是解一个数学题,谁先解出来数学题,谁就能有打包区块的权力。换在拜占庭将军的例子中就是,谁先做出数学题,谁就成为将军们里面的总司令,其他将军听从他发号的命令。

首先,矿工会将区块头所占用的128字节的字符串进行两次sha256求值,即:

这样求得一个值Hash,将其与目标值相比对,如果符合条件,则视为工作量证明成功。
工作量证明成功的条件写在了区块链头部的 难度数 字段,它要求了最后进行两次sha256运算的Hash值必须小于定下的目标值;如果不是的话,那就改变区块头的 随机数 (nonce),通过一次次地重复计算检验,直到符合条件为止。

此外, 比特币有自己的一套难度控制系统,使得比特币系统要在全网不同的算力条件下,都保持10分钟生成一个区块的速率。这也就意味着:难度值必须根据全网算力的变化进行调整。难度调整的策略是由最新2016个区块的花费时长与期望时长(期望时长为20160分钟即两周,是按每10分钟一个区块的产生速率计算出的总时长)比较得出的,根据实际时长与期望时长的比值,进行相应调整(或变难或变易)。也就是说,如果区块产生的速率比10分钟快则增加难度,比10分钟慢则降低难度。

PoW其实在比特币中是做了以下的三件事情。

这样可以防止一台高性能机器同时跑上万个节点,因为每完成一个工作都要有足够的算力。

有经济奖励就会加速整个系统的去中心化,也鼓励大家不要去作恶,要积极地按照协议本来的执行方式去执行。(所以说,无币区块链其实是不可行的,无币区块链一定导致中心化。)

也就是说,每个节点都不能以自身硬件条件去控制出快速度。现在的比特币上平均10分钟出一个块,性能再好的机器也无法打破这个规则,这就能够保证 区块链是可以收敛到共同的主链上的 ,也就是我们所说的共识。

综上,共识只是PoW三个作用中的一点,事实上PoW设计的作用有点至少有这么三种。

默克尔树的概念其实很简单,如图所示

这样,我们区块的结构就大致完整了,这里分成了区块头和区块体两部分。

区块链的每个节点,都保存着区块链从创世到现在的每一区块,即每一笔交易都被保存在节点上,现在已经有几百个GB了。
每当比特币系统中有一笔新的交易生成,就会将新交易广播到所有的节点。每个节点都把新交易收集起来,并生成对应的默克尔根,拼接完区块头后,就开始调整区块头里的随机数值,然后就开始算数学题

将算出的result和网络中的目标值进行比对,如果是结果是小于的话,就全网广播答案。其他矿工收到了这个信息后,就会立马放下手里的运算,开始下一个区块的计算。
举个例子,当前A节点在挖38936个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第38936个区块(前一个区块为38935)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。
整个流程就像下一张图所展示的这样:

简单来说,双花问题是一笔钱重复花了两次。具体来讲,双花问题可分为两种情况:
1.同一笔钱被多次使用;
2.一笔钱只被使用过一次,但是通过黑客攻击或造假等方式,将这笔钱复制了一份,再次使用。
在我们生活的数字系统中,由于数据的可复制性,使得系统可能存在同一笔数字资产因不当操作被重复使用的情况,为了解决双花问题,日常生活中是依赖于第三方的信任机构的。这类机构对数据进行中心化管理,并通过实时修改账户余额的方法来防止双重支付的出现。而作为去中心化的点对点价值传输系统,比特币通过UTXO、时间戳等技术的整合来解决双花问题。

UTXO的英文全称是 unspent transaction outputs ,意为 未使用的交易输出 。UTXO是一种有别于传统记账方式的新的记账模型。
银行里传统的记账方式是基于账户的,主要是记录某个用户的账户余额。而UTXO的交易方式,是基于交易本身的,甚至没有账户的概念。在UTXO的记账机制里,除了货币发行外,所有的资金来源都必须来自于前面某一个或几个交易。任何一笔的交易总量必须等于交易输出总量。UTXO的记账机制使得比特币网络中的每一笔转账,都能够追溯到它前面一笔交易。
比特币的挖矿节点获得新区块的挖矿奖励,比如 12.5 个比特币,这时,它的钱包地址得到的就是一个 UTXO,即这个新区块的币基交易(也称创币交易)的输出。币基交易是一个特殊的交易,它没有输入,只有输出。
当甲要把一笔比特币转给乙时,这个过程是把甲的钱包地址中之前的一个 UTXO,用私钥进行签名,发送到乙的地址。这个过程是一个新的交易,而乙得到的是一个新的 UTXO。
这就是为什么有人说在这个世界上根本没有比特币,只有 UTXO,你的地址中的比特币是指没花掉的交易输出。
以Alice向Bob进行转账的过程举例的话:

UTXO 与我们熟悉的账户概念的差别很大。我们日常接触最多的是账户,比如,我在银行开设一个账户,账户里的余额就是我的钱。
但在比特币网络中没有账户的概念,你可以有多个钱包地址,每个钱包地址中都有着多个 UTXO,你的钱是所有这些地址中的 UTXO 加起来的总和。
中本聪发明比特币的目标是创建一个点对点的电子现金,UTXO 的设计正可以看成是借鉴了现金的思路:我们可能在这个口袋里装点现金,在那个柜子角落里放点现金,在这种情况下不存在一个账户,你放在各处的现金加起来就是你所有的钱。
采用 UTXO 设计还有一个技术上的理由,这种特别的数据结构可以让双重花费更容易验证。对比一下:

热点内容
区块链网站上边的特效 发布:2025-07-07 22:04:33 浏览:972
元宇宙和虚拟实境 发布:2025-07-07 22:04:12 浏览:279
中国比特币海外app 发布:2025-07-07 22:04:07 浏览:72
比特币端 发布:2025-07-07 22:03:17 浏览:407
区块链发朋友圈的句子 发布:2025-07-07 22:02:06 浏览:831
比特币会增量吗 发布:2025-07-07 21:45:15 浏览:28
数字货币与中币 发布:2025-07-07 21:43:07 浏览:547
比特币单日 发布:2025-07-07 21:40:09 浏览:326
区块链币圈今天的话题 发布:2025-07-05 15:22:06 浏览:796
玩区块链的人群 发布:2025-07-05 15:06:06 浏览:123