比特币交找零机制备份钱包
A. 比特币使用教程
比特币是一种建立在全球网络上的货币。
比特币是一种没有央行参与发行的,总量固定的数字货币。
比特币建立在全球的P2P网络上。
全球无数的P2P节点全天候的在维护着比特币的网络。
英文:bitcoin 货币符号: 英文缩写:BTC或 XBT。
维基网络对比特币的介绍:
Bitcoin与传统货币不同,比特币运行机制不依赖中央银行、政府、企业的支持或者信用担保,而是依赖对等网络中种子文件达成的网络协议,去中心化、自我完善的货币体制,理论上确保了任何人、机构、或政府都不可能操控比特币的货币总量,或者制造通货膨胀。它的货币总量按照设计预定的速率逐步增加,增加速度逐步放缓,并最终在2140年达到2100万个的极限。
为什么要使用比特币?
全球交易畅通无阻。
比特币费用低廉。
比特币易于携带,在全球范围内交易畅通无阻,全世界很多地方都接受比特币。
去中心化。
比特币的发行由整个P2P网络完成,不受任何组织和个人控制,是一个完全去中心化的货币系统。
比特币的发行数量是固定的,不会因通胀而贬值,就像黄金一样。
如何使用比特币钱包?
我们从三个方面来说明这个问题。
一:什么是比特币钱包?
简单来说,比特币钱包可以让你和整个世界进行交易。利用比特币钱包中生成的比特币地址你可以接收来自他人的比特币,你也可以将你帐户上的比特币转到他人的比特币地址上面。比特币地址就像银行卡号一样,你只有知道别人的比特币地址才能进行比特币转账。比特币钱包中保存着你自己的所有比特币地址和私钥信息。
二:什么是比特币地址和私钥?
比特币地址和私钥是成对出现的,他们的关系就像银行卡号和密码。比特币地址就像银行卡号一样用来记录你在该地址上存有多少比特币。你可以随意的生成比特币地址来存放比特币。每个比特币地址在生成时,都会有一个相对应的该地址的私钥被生成出来。这个私钥可以证明你对该地址上的比特币具有所有权。我们可以简单的把比特币地址理解成为银行卡号,该地址的私钥理解成为所对应银行卡号的密码。只有你在知道银行密码的情况下才能使用银行卡号上的钱。所以,在使用比特币钱包时请保存好你的地址和私钥。
三:比特币地址和私钥的格式
比特币地址是一段由数学算法生成的二十七到三十四位长度的字符串,一般以数字“1”或者“3”开头。每个比特币地址都对应着一个比特币私钥。比特币私钥亦是由一串字符组成,一般以数字“5”开头。私钥保证了你对该比特币地址上比特币的所有权。比特币私钥有不同的格式,详细资料读者可参见下面的基础教学内容。
请注意
比特币的私钥可以生成该私钥对应的比特币地址,但是比特币地址不能计算出该地址所对应的私钥。因此,假如你忘记了私钥而只记得比特币地址,那么该地址上的比特币便不属于你了。所以,一定要备份好比特币钱包,保护好私钥。如何生成比特币地址和私钥呢?你可以用比特币钱包来生成任意数量的地址和私钥。当然,也有离线生成比特币地址和私钥的比特币钱包工具(关于钱包的概念详见后面的基础教学)。
比特币钱包的种类有哪些?
比特币常用的钱包有三种:软件钱包、手机钱包、在线钱包。
软件钱包:通常指可以在本地机子上运行的比特币客户端。使用软件钱包是最安全的保护你比特币的方式。
手机钱包:只装在手机上的比特币钱包,用手机钱包你可以随时随地的使用比特币。
在线网络钱包:让你可以在任何地方使用比特币,在线服务提供商帮助你保护你的比特币安全。但是值得注意的是,你要仔细谨慎的选择你的在线钱包提供商。
常用软件钱包介绍:
①Bitcoin-Qt:
是最早的比特币客户端,比特币初期的骨干网络就是建立在它上面的。它提供了最高级别的安全性,隐私性和稳定性。然而,它具有的功能并不多。
②Multibit:
是一个轻量级的客户端。Multibit专注于便捷和易用。它与网络同步是在几分钟内就可以使用。Multibit还支持多语言。对于非技术用户,这是一个不错的选择。
③Electrum:
和Multibit类似,Electrum是一款基于SPV原理的比特币钱包软件客户端,它能在几分钟之内完成同步。不同的是Electrum采用了和Bitcoin-qt和Multibit不同钱包的找零机制,所有的比特币私钥都由安全密码种子生成,因此他的安全性更高。Electrum适合对比特币技术原理已经有一定了解的玩家使用。
④Armory:
Armory客户端是运行于Bitcoin-Qt客户端之上的高级比特币客户端,为高级用户提供了更多的扩展功能,其中包括了很多关于备份和加密的功能,以及非常安全的线下冷存储。和Electrum一样,Armory适合对比特币有一定了解的用户使用。
常用的手机钱包介绍:
Bitcoin Wallet:
Bitcoin Wallet可以在Googleandroid商店找到。它是一个轻量级的移动客户端,支持Android和黑莓系统。这个客户端并不需要在线才能工作。它支持QR码(二维码)扫描和NFC(近距离无线通信)。
常用的在线钱包介绍:
①Blockchain:
Blockchain是最早的比特币在线钱包提供商,它提供的功能最多,也非常可靠。您可以用它在全球免费付款。它支持在手机上或个电脑上使用。
②P2PBUCKS:
提示:为保证安全,Blockchain.info在线钱包的用户请使用GoogleAuthenticator或Yubikey等双因子认证方式登陆。 并定时从Blockchain上下载自己的钱包备份到本地电脑。
我是在 完美生活 卫星号上看到这篇文章哦,详细的你可以去关注一下:funinusa
B. 如何理解比特币的找零机制
深入探讨比特币的神秘找零机制:理解UTXO记账方式的奥秘
在探讨比特币的世界里,找零机制是UTXO(未使用交易输出)的核心组成部分,它与我们日常生活中现金交易的找零方式有着异曲同工之妙,却又与数字钱包的账户系统截然不同。理解这个机制,就如同揭开区块链货币运作的神秘面纱。
想象一下,当你收到两笔转账,一笔10个比特币,一笔6个。这10个比特币就像一张完整的10元钞票,而6个比特币则是另一张6元钞票。当你想转出3个比特币,你不能直接给出3个,因为你的钱包里没有这样的零钞。相反,你可以选择使用那张10元钞票,或者那张6元钞票。如果选择前者,你将创建一个交易,输入10个比特币,输出7个和3个。3个比特币作为找零进入接收者的钱包,而你自己的账户则留下一个7元的“纸币”。原来的10元钞票虽然还在,但标记为已花费,不能再用于再次交易,这就是UTXO的由来,它记录了每一笔未被消费的资金。
然而,这个“账户”并非我们熟知的数字钱包里直接关联的余额数字。比特币钱包实际上是保存所有未花费的“纸币”,以及每张“纸币”的归属信息。这些“纸币”并不集中存储,而是分散在区块链的不同位置,这正是UTXO系统的关键所在。
为何需要找零机制?答案就在于比特币的余额是由一个个独立的“完整”交易输出构成的。如果采用单一账户与数字余额的模式,转账操作就像简单地从一个账户中减去N元,另一个账户增加N元,找零就不再是必要步骤。UTXO的机制确保了交易的精确性和复杂性,这是比特币独特的货币设计原则之一。
总之,比特币的找零机制并非表面看上去那么简单,它是由UTXO的分散存储和交易规则共同构建的。深入理解这个机制,能帮助我们更好地掌握这种去中心化货币的工作原理。
C. 什么是utxo区块链
区块链的核心技术是什么?简单来说,区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。
或许以上概念过于抽象,我来举个例子,你就好理解了。
你可以想象有100台计算机分布在世界各地,这100台机器之间的网络是广域网,并且,这100台机器的拥有者互相不信任。
那么,我们采用什么样的算法(共识机制)才能够为它提供一个可信任的环境,并且使得:
节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;
每个节点的数据会同步到最新数据,并且会验证最新数据的有效性;
基于少数服从多数的原则,整体节点维护的数据可以客观反映交换历史。
区块链就是为了解决上述问题而产生的技术方案。
二、区块链的核心技术组成
无论是公链还是联盟链,至少需要四个模块组成:P2P网络协议、分布式一致性算法(共识机制)、加密签名算法、账户与存储模型。
1、P2P网络协议
P2P网络协议是所有区块链的最底层模块,负责交易数据的网络传输和广播、节点发现和维护。
通常我们所用的都是比特币P2P网络协议模块,它遵循一定的交互原则。比如:初次连接到其他节点会被要求按照握手协议来确认状态,在握手之后开始请求Peer节点的地址数据以及区块数据。
这套P2P交互协议也具有自己的指令集合,指令体现在在消息头(MessageHeader)的命令(command)域中,这些命令为上层提供了节点发现、节点获取、区块头获取、区块获取等功能,这些功能都是非常底层、非常基础的功能。如果你想要深入了解,可以参考比特币开发者指南中的PeerDiscovery的章节。
2、分布式一致性算法
在经典分布式计算领域,我们有Raft和Paxos算法家族代表的非拜占庭容错算法,以及具有拜占庭容错特性的PBFT共识算法。
如果从技术演化的角度来看,我们可以得出一个图,其中,区块链技术把原来的分布式算法进行了经济学上的拓展。
在图中我们可以看到,计算机应用在最开始多为单点应用,高可用方便采用的是冷灾备,后来发展到异地多活,这些异地多活可能采用的是负载均衡和路由技术,随着分布式系统技术的发展,我们过渡到了Paxos和Raft为主的分布式系统。
而在区块链领域,多采用PoW工作量证明算法、PoS权益证明算法,以及DPoS代理权益证明算法,以上三种是业界主流的共识算法,这些算法与经典分布式一致性算法不同的是,它们融入了经济学博弈的概念,下面我分别简单介绍这三种共识算法。
PoW:通常是指在给定的约束下,求解一个特定难度的数学问题,谁解的速度快,谁就能获得记账权(出块)权利。这个求解过程往往会转换成计算问题,所以在比拼速度的情况下,也就变成了谁的计算方法更优,以及谁的设备性能更好。
PoS:这是一种股权证明机制,它的基本概念是你产生区块的难度应该与你在网络里所占的股权(所有权占比)成比例,它实现的核心思路是:使用你所锁定代币的币龄(CoinAge)以及一个小的工作量证明,去计算一个目标值,当满足目标值时,你将可能获取记账权。
DPoS:简单来理解就是将PoS共识算法中的记账者转换为指定节点数组成的小圈子,而不是所有人都可以参与记账。这个圈子可能是21个节点,也有可能是101个节点,这一点取决于设计,只有这个圈子中的节点才能获得记账权。这将会极大地提高系统的吞吐量,因为更少的节点也就意味着网络和节点的可控。
3、加密签名算法
在区块链领域,应用得最多的是哈希算法。哈希算法具有抗碰撞性、原像不可逆、难题友好性等特征。
其中,难题友好性正是众多PoW币种赖以存在的基础,在比特币中,SHA256算法被用作工作量证明的计算方法,也就是我们所说的挖矿算法。
而在莱特币身上,我们也会看到Scrypt算法,该算法与SHA256不同的是,需要大内存支持。而在其他一些币种身上,我们也能看到基于SHA3算法的挖矿算法。以太坊使用了Dagger-Hashimoto算法的改良版本,并命名为Ethash,这是一个IO难解性的算法。
当然,除了挖矿算法,我们还会使用到RIPEMD160算法,主要用于生成地址,众多的比特币衍生代码中,绝大部分都采用了比特币的地址设计。
除了地址,我们还会使用到最核心的,也是区块链Token系统的基石:公私钥密码算法。
在比特币大类的代码中,基本上使用的都是ECDSA。ECDSA是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC(椭圆曲线函数)。
从技术上看,我们先从生成私钥开始,其次从私钥生成公钥,最后从公钥生成地址,以上每一步都是不可逆过程,也就是说无法从地址推导出公钥,从公钥推导到私钥。
4、账户与交易模型
从一开始的定义我们知道,仅从技术角度可以认为区块链是一种分布式数据库,那么,多数区块链到底使用了什么类型的数据库呢?
我在设计元界区块链时,参考了多种数据库,有NoSQL的BerkelyDB、LevelDB,也有一些币种采用基于SQL的SQLite。这些作为底层的存储设施,多以轻量级嵌入式数据库为主,由于并不涉及区块链的账本特性,这些存储技术与其他场合下的使用并没有什么不同。
区块链的账本特性,通常分为UTXO结构以及基于Accout-Balance结构的账本结构,我们也称为账本模型。UTXO是“unspenttransactioninput/output”的缩写,翻译过来就是指“未花费的交易输入输出”。
这个区块链中Token转移的一种记账模式,每次转移均以输入输出的形式出现;而在Balance结构中,是没有这个模式的。
数字货币里的UTXO什么意思?UTXO的中文意思叫作:未花费的交易输出。
UTXO是数字货币中的账户模型,这个模型和我们现在银行的账户模型是不一样的。
拿转账来说,现在的情况是:
我要给依依转2000块钱,我要从我的招商银行卡里面给她转账,我的卡里面有5000块钱,转给她2000块钱以后,我的招商银行账户就被扣除了2000块钱,还剩下3000块钱。
那么如果是基于比特币的UTXO,情况是这样的:
我有5000比特币,我给依依转2000比特币,2000比特币消耗掉了对不对?注意!这2000不是从我这5000总数里面扣除的,而是:我的比特币总额会分成两份(一份
2000,一份3000),这就是所谓“生成两个新的UTXO”:依依收下2000比特币,我自己收下3000比特币,3000算是给我的找零。
转账成功以后,我给依依的2000比特币目前已经使用过了,被消耗掉了,就不能再叫UTXO了,而找零给我的3000比特币目前我还没有使用,所以它还能称作UTXO,也就是未花费的交易输出。那么,如果我总共有5000比特币,我全部转给依依,那么就只需要生成一个新的
UTXO给依依就可以了,不需要找零了。
基于UTXO,每笔交易出现,都要确认比特币之前的情况,检验比特币是不是存在于我的UTXO中,如果不存在,那么系统就会拒绝你的交易行为。
这样一来,每笔交易的输入和输出都是有关系的,可以通过UTXO不断向前追溯,一直追溯到比特币诞生的时候,也就是挖矿的源头。
如果我想用同一笔UTXO发送给两个人,那么系统只确认先接受到的那一笔,一旦确认UTXO已经被消耗了,那么你就不可以再把它转给下一个人,这样就避免了双重支付的问题。
既然系统只确认先接受到的那一笔,那么问题来了,系统怎么知道谁先谁后呢?系统当然知道,因为系统有一个叫“时间戳”的东西。
什么是区块链?不是比特币进化慢,而是我们进化慢
自从区块链(blockchain)这个词被从比特币中抽象出来之后,整个业内就弥漫着一种奇特的意识形态叙事(ideologicalnarrative)。这个叙事是这样的:比特币是一架又慢又旧的破马车,十几年了没有什么改进,什么炫酷的功能都没有。当然,从人类“无利不起早”的天然本性而言,给你讲这么一通破烂话的人,绝对不是吃饱了撑的无事生非,而通常都会在看到你对手里的大饼(BTC)起了半信半疑之心之后,趁机向你推销他正在兜售的拉风跑车项目。
北京时间11月14号下午13点15分27秒,随着区块高度709632的区块被挖出,比特币自2017年隔离见证升级之后最重要的升级之一,Taproot升级,宣告成功激活(今年6月份就已经获得超90%矿工投票lock-in了,本次激活属于明牌)。
该区块中包含了chainside联合创始人FedericoTenga的一笔V1_P2TR交易。在该笔交易中,Federico在OP_RETURNDATA中附加了一句话:gmtaproot。据信,这是历史上第一笔Taproot交易。为了抢到这个名次,Federico支付了2510sat/vB的矿工费(手续费),这大概是正常矿工费(不到10sat/vB)的5百多倍。[1]
Taproot升级为我们带来了区块扩容、更好的隐私性以及增强的扩展性等诸多好处。这些好处主要是由于两项技术的引入而带来的。其一就是Schnorr签名,而另一个就是MAST(默克尔化的抽象语法树)。
Schnorr签名能够压缩数字签名的尺寸。单签名比ECDSA节省约12%的尺寸,也就可以节省转账手续费。以及,它能够把多签名压缩成一个签名,这可以极大压缩多签地址的尺寸,并保护多签参与者的隐私。据说早在2012年MikeHearn就在bitcointalk论坛提出过类似想法。通过压缩签名尺寸,相当于扩大了区块容量,容纳更多交易量。
MAST则可以大大改善P2SH交易的交易尺寸、隐私性和灵活性。最早的BIP-114提案是由JohnsonLau于2016年提出的。早前的P2SH交易可以允许支付时不揭示script(比特币脚本代码)。但是,当花费UTXO(未花费的交易输出)时,便需要提供script且记录到链上,从而占据区块链的容量。如果script比较复杂,则会占据较多的空间。MAST的引入使得我们可以把包含很多条件的复杂脚本组织成默克尔树。在花费UTXO时,也只需要揭示默克尔证明和涉及的script,而不需要揭示整颗树。这就节省了区块容量,改善了脚本的隐私性。同时,由于打开了script尺寸的限制,这就为比特币的可编程性引入了更大的扩展性和灵活性。
应该说,上面几段话对一些只在中心化交易所炒炒币,甚至连私钥都不懂的朋友来说无异于天书。别说Taproot了,便是4年前的segwit(隔离见证),对很多所谓圈内的人来说都不知何物。这没有什么可耻的。我头一次看这些新技术、新名词也是脑袋爆炸。多学习,多研究,多琢磨琢磨,也就搞明白了。
相比于科技的进步,我们掌握知识的能力进化的实在是太慢了。时至今日,很多人还搞不清楚比特币究竟是存储在自己手机上的钱包里,还是在比特币网络上。自己手机或者电脑上的钱包软件又是起什么作用的。私钥是什么,助记词是什么,所谓的HD钱包又是什么。1开头的地址,3开头的地址,5开头的地址,bc1开头的地址都有啥分别。怎么把大饼从交易所提出来,放到所谓链上。怎么自己掌控自己的比特币。怎么签名转账比特币。怎么使用隔离见证地址。以及现在,如何构建Taproot交易呢?
有人于是说,那就不要让用户自己掌握私钥,远离这些技术细节好了。回到托管式的环境,回到互联网中心化的用户体验。这样一种用户体验的改善,就像中心化交易所一样,是以牺牲用户自主掌握资产为代价的。这直接抛弃了去中心化以来全部的价值观。这又是一种进化,还是一种退化呢?
如果只是为了发明一个噱头,让投机者去炒、去赌,那就尽可以不考虑这些。那就不仅不应该限制OP_RETURN的尺寸,甚至应该扩充script使之支持图灵完备的编程。这样就可以在比特币上发行各种空气币、土狗币,再搞出来各种为炒而生的应用出来,所谓繁荣的生态。但是比特币一路走来,似乎是走了相反的道路。不仅从一开始就极大限制了script的功能,而且主动缩短了OP_RETURN的数据尺寸,限制了在比特币链上玩各种花活儿的可能性。
比特币是审慎的。它清楚自己有更大的使命。Taproot的激活,可能会有利于二层的发展。但是,并不会给一层带来自限性的问题。相反的,它会因为压缩了数据尺寸,而扩大了一层的容量。
比特币是富有耐心的。它肩负着普及去中心化数字货币(而不是在中心化平台上进行投机)的历史任务。所以它必须耐心地等待,等待每一个人跟上技术发展的脚步。
UXTO与余额区块链入门从使用钱包开始,我们最关注的是钱包的账户余额。可看过很多区块链资料以后,一直存在一个疑问,钱包的余额信息存在区块链的什么位置?一直没有找到,只有一个相近的概念叫UTXO(UnspentTransactionOutput),但看完以后还是对应不上。直到翻遍网上所有关于UXTO的资料,才知道在中本聪设计的比特币系统中,并没有余额这个概念,“比特币余额”是由比特币等钱包应用派生出来的产物。钱包的余额是通过与账户相关的多个UXTO算出来的。下面且听我详细道来。
了解过一点点会计学,我们现在的会计系统绝大部分采用的是一种叫做“借贷记账法”的方法,账目分成借方和贷方,每发生一笔业务都要登记两个以上的科目。
简单来说,Alice转账给Bob1美元,使用借贷记账法至少要产生两条账目,Alice账户减少1美元,Bob账户增加1美元。这种记账法在企业经营、企业审计中有无数的好处。但是这种记账法也有一个最大的缺点,就是容易产生记账错误和记账误差。一笔交易需要登记两条以上的账目,本质上记录的是“交易的结果”,而不是“交易本身”。
中本聪发明了UTXO(UnspentTransactionOutput)交易模型,并将其应用到比特币当中。UTXO是“未花费的交易输出”,简单来说就是,每一笔比特币交易实际上都是由若干个交易输入和输出组成的。交易输入是资金来源,交易输出是资金去向,每一笔交易都要从交易输入中花费出去一部分,这一部分就是未花费的交易输出(UTXO)。每一次的交易输入都可以追溯到之前的UTXO,直至最初的挖矿所得。
由挖矿所得创建的比特币交易,是每个区块中的首个交易,又称之为coinbase交易,它由矿工创建,没有上一笔交易输出。
在比特币交易中UTXO就是基本单位,一个UTXO一旦被创建就不可被继续分割,它只能当作是下一笔交易的输入被花费掉,花费后产生新的UTXO,这样周而复始地实现货币的价值转移。所以我们在比特币钱包中所看到的账户余额,实际上是钱包通过扫描区块链并聚合所有属于该用户的UTXO计算得来的。
因此,当我们在说某人拥有1枚比特币的时候,我们实际上说的是,在当前的区块链记录中,有若干笔交易的UTXO收款地址写的是这个人的钱包地址,这些UTXO的总和是1个比特币。
比特币的UXTO系统遵守两个规则:
我们以以太账户为例,打开etherscan.io,选择BLOCKCHAIN-AllAccounts,这样可以看到所有地址与余额,可以选择其中一个查看详细信息。如果看不懂,没关系,把自己的以太地址输入到右上角的搜索框回车后,会显示地址的余额和详细交易记录,如下图。
至此,我能理解李笑来老师说为什么他的账户没有余额,只有UXTO了,O(∩_∩)O哈哈~,内行人不要说外行话嘛。
D. 怎么进行比特币交易和找零
比特币是一种数字货币,可以进行交易,具有非常高的信誉度,一起来看看比特币找零机制是什么样的吧。方法/步骤1比特币的转账可以一次把多个地址的余额转出。
2可以一次转入多个地址。
3当需要支付5个比特币给牛牛。
4每个地址的余额都不足以支付5个比特币。
5可以发起一笔转账,将三个地址的比特币全部转账给牛牛。
6当地址中有5个比特币,只需要转1个给牛牛。
7可以告诉矿工,1个转给牛牛,4个转给自己。
8转给自己的可以转回原地址,可以转到新建地址。
E. 怎样查看比特币钱包私钥
比特币钱包私钥在线无法查看,比特币存在平台要下载core 或者classic才是真正的钱包,然后就可以查看了。
【比特币钱包私钥的说明】:
1、钱包加密是指对储存有私钥的钱包进行自动加密存储。 比特币官方客户端从0.4.0 版本开始支持钱包加密。加密的钱包在每次付款的时候,都会提示您输入密码。如果密码错误,客户端会拒绝付款。
2、如果用最早备份的钱包(wallet.dat)替换回来,还是一样可以正常交易。考虑到比特币的原理应该也可得出,只要有私钥(钱包)存在,就可以证明你是这个钱包的合法拥有者,不管对这个钱包(核心就是某个地址对应的私钥)是进行了加密还是删除,都不能否定它。
3、备份比特币钱包时,还需注意由于比特币支付找零机制的存在(比如把一个完整的100 btc中的50 btc发送给某个地址,系统会发送其中的50 btc到对方的地址,并退回50 btc到你客户端的一个新地址上,这个地址不会直接显示在你的地址列表中)。
4、每发送了100次比特币给其它地址或者使用了100个不同的地址接收比特币后,请重新备份钱包,否则后面交易退回的和接收到的比特币会永久丢失。 除了给钱包加密外,用户还可以自行生成离线的纸钱包和脑钱包。
F. 小巴成长记-比特币的技术来源
我们经常说比特币具有去中心化、不可篡改、不可伪造等特点。这是为什么呢?当然下面的文字其实并没有看起来那么吓人,姑且从三个方面来讲讲,你也要耐着性子听听吧。
1、非对称加密是比特币去中心化的来源
中心化是需要一个类似银行的中心机构来验证交易的。去中心化本质上是让所有的节点都能验证交易的真伪,中本聪用了非对称加密的技术来解决中心化的问题。
非对称加密技术是什么?是指加密和解密的时候使用不同的密钥的加密算法。比如:A要向B发送信息,A和B都要产生一对用于加密的公钥和私钥顾名思义,私钥就是不能公开的,公钥就是要公开的。A发送信息给B时,A就用B的公钥对信息加密,B收到后,B用B的私钥解密A的消息,而其他所有收到这个信息的人都无法解密,因为只有B才拥有这个私钥。
简单的说,公钥和私钥在非对称加密机制里是成对存在的,公钥和私钥可以去相互验证对方,我们可以把地址理解为公钥,把签名输密码的过程理解为私钥的签名。每个矿工在拿到一笔转账交易时,都可以时都可以验证公钥和私钥到底是不是匹配的,如果是匹配的,这笔交易就合法。这样,我们每个人只需要保管好自己的私钥,自己的公钥和对方的公钥就可以安全地进行转账,不需要中心的机构来验证对方发来的比特币是不是真的。
2、工作量证明机制是比特币不可篡改的技术来源
工作量证明 机制,是一种对在差不多时间内发生的事物的先后顺序达成共识的一种算法。监测工作的整个过程通常是效率非常低的,而通过对工作的结果进行认证来证明完成了一定工作的工作量,是一种非常高效的方式。比如我们日常中的各种证 驾驶证 学位证 结婚证就是这样一种有结果获悉完成工作量的证明。
工作量证明 的特点,对于执行方来说难度是适中的,对于验证方来说是非常容易被验证的。矿工们通过哈希计算,最先算出结果,获得记账权,其他节点经过非常简单的验证之后,就可以同样其记账,并同步账本。打上时间戳后,紧接着进行下一轮计算。
如果这时候有人想把某个信息进行修改,他需要做什么呢?他需要从这个区块开始把之后所有的区块都重新计算一遍,把账本再同步给其他人。而在他进行计算的同时,其他矿工们已经在原来的的链上继续往前进行计算了。因为在比特币的网络里,大家认为最长的链才是正确的链。所以,这个恶意篡改的人,需要在很短的时间内赶上现有区块的高度度,让自己的这条链成为最长的链,并让其他矿工误以为自己的这条链是正确的,这基本上是一件不可能的事,除非这个恶意篡改的人拥有超强的算力,至少超过全网的50%。那么我们来算算,现在全网的算力是8亿哈希每秒,也就是每秒进行8乘10的18次方计算,现在市场上流行的主流矿机每台的算力是10T左右,如果你想拥有全网51%的算力,你最少需要40万台最新矿机,如果按1万元每台矿机计算,仅设备就需投入40亿元人民币,加上矿机的供不应求,老矿机算力下降,全网算力的不断上涨等因素,如果不是为了60亿以上的利润回报并有强大的技术做支撑,一般人很难有这个动机和能力。
3、“UTXO”结构是比特币不可伪造的技术来源
先问个问题,如果我发给你1个比特币,你怎么知道这个比特币是真的而不是我伪造出来的,或者我已经同时转给了其他人了呢,这就要说到UTXO结构了。
UTXO(Unspend Transaction Output)是个什么鬼?意思是未花费的交易输出。来个栗子,假设我要给你100元,其中有两张张50元纸钞,一张是隔壁老王给我的,另外一张是小卖部小丽找零给我的,拿到这两张张钞票我需要拿在手上并还未花出去时才能交易给你,这就是未花费的交易输出。而通过这两张钞票往前追溯可以知道是谁交给了老王和小丽,并最终追溯到是由哪家银行发行,什么时候央行批准发行的源头,比特币里也有这样一个原理。在比特币世界里的每一笔转账,都能够追溯到上一笔交易。每一笔付款,都可以追溯到上一笔的收款。一直往上追溯到它诞生时矿工挖出来的那个区块。
这个机制就保证了在比特币网络里,比特币是不可以伪造和重复交易的。在比特币世界里,重复支付被叫做“双花”,就是花费了两次的意思。
G. 比特币找零地址的私匙是备份的私匙吗
钱包加密是指对储存有私钥的钱包进行自动加密存储。 比特币官方客户端从0.4.0 版本开始支持钱包加密。加密的钱包在每次付款的时候,都会提示您输入密码。如果密码错误,客户端会拒绝付款。如果用最早备份的钱包(wallet.dat)替换回来,还是一样可以正常交易。考虑到比特币的原理应该也可得出,只要有私钥(钱包)存在,就可以证明你是这个钱包的合法拥有者,不管对这个钱包(核心就是某个地址对应的私钥)是进行了加密还是删除,都不能否定它。备份比特币钱包时,还需注意由于比特币支付找零机制的存在(比如把一个完整的100 btc中的50 btc发送给某个地址,系统会发送其中的50 btc到对方的地址,并退回50 btc到你客户端的一个新地址上,这个地址不会直接显示在你的地址列表中),每发送了100次比特币给其它地址或者使用了100个不同的地址接收比特币后,请重新备份钱包,否则后面交易退回的和接收到的比特币会永久丢失。 除了给钱包加密外,用户还可以自行生成离线的纸钱包和脑钱包。 纸钱包即只要在未对钱包加密前通过在比特币官方客户端的调试窗口中的控制台输入:“mpprivkey 你的比特币地址”(输入时不要带引号)来查看自己的私钥,然后把此私钥打印出来存放在某个地方再删除电脑上的钱包文件即可进行钱包的网络隔离。 脑钱包则是利用一段javascript脚本,针对用户自行设定的一个能永久记住的短语(一定要是特殊和唯一的,建议最少16个字符以上,中英文皆可),生成一对公钥和私钥,之后用户把所有比特币都转到此比特币地址(即公钥)上,以后只需要记住这个短语即可在任何时间任何地方还原自己的财富(除非你的短语不幸被其他人获知并转走了)。 为了确保绝对安全,Armory客户端将钱包和客户端进行分离,离线客户端内的钱包被严格地加密保护起来。在线客户端如果需要支付比特币,需要由掌握离线钱包的电脑进行签署,再通过在线客户端进行广播。
H. 为什么Blockchain上的余额和我的钱包里的余额不一致
是的,比特币有个找零机制。根据你之前的所有收款时的交易金额来算的。比如之前收款10B,想发出3个B,就得需要两个接收地址,一个收3个B,一个收7个B,保持收支相等。当然,这里的3个B是给别人的,而7个找给你的B则是放入你的隐藏的钥匙池里,这个客户端现在暂时还不提供显示功能(避免有些交易量大的客户端会显示太多地址了,比如只有一个收款地址,交易量有1W条,总不能在客户端现实上万个地址吧)