重新认识比特币!
一:理解现实银行的中心化场景。现金是存入银行的,银行给你一张银行卡,上面有余额。
操作1:你要取100万现金,扣除账户100万,银行给你100万现金。
操作2:你要转账给小明10万,扣除账户余额10万,小明的卡余额增加10万。
不管是操作1,还是操作2,你的现金都是存在银行里的,你的所有转账都经过银行的确认,银行需要确保是你本人转账,通过手机验证码,身份证等识别。
二:理解去中心化场景。
一个村每个人手里都有一本专门记账的帐本。假设最开始A原本账户有200万元,某天A转账给B 50万,村里的所有人都会更新帐本,帐本上记录了这笔转账,村里的每个人都承认A一开始有200万元,有一天A转账了50万给B,现在A有150万,B有50万。
在去中心化模型,一般的冷钱包软件,你的余额、交易记录都是从这个大家都认可的账本里找出来的,帐本大家都有,你的余额,你的每个转账记录大家都可以查得到。
三:比特币转账的安全理论。
如何确定比特币账号(身份),如上面的村民记账帐本,如何确定这笔转账是A转账的?
A拥有1个私钥密码,1个公钥密码。
A的公钥密码,会告诉所有人。A的私钥密码,只能A知道。
A转账50万给B的过程是这样的。A发送1条信息给所有村民,信息里写着A转账50万给B,并且A的这条信息附带一个签名,签名是由A的私钥密码生成的,所有村民收到这条转账信息,会用A的公钥去验证这条信息是不是A转账的。(非对称加密的特点就是村民不需要拿到A的私钥密码,但是却知道这个签名是A的私钥密码生成的)
一般的冷钱包,你转账1个比特币给到朋友的地址,就是使用你的私钥密码生成的交易信息公布到全网,大家不用知道你的私钥密码,但却能100%确定是你发起的转账。这就是为什么不能透露私钥,私钥暴漏等同于比特币直接给人家了。(备注:助记词等同于私钥!)
那么比特币转账是这样的,A使用了A的私钥发送了一条转账记录,村民们通过A公开的公钥密码验证了转账是否是由A发起的,并且在帐本里发现A有200万元,那么A的转账是合法的,大家就会在帐本里记录了最新的信息,也可以得出最新的余额,A的最新余额是150万,B的最新余额是50万。
四:你应当了解的事实。
更通俗的讲,假设小明使用imtoken钱包,导入小明的私钥,联网从帐本里更新了小明的余额是11比特币,小明转账了5个比特币给小红,那么过程是imtoken钱包使用小明的私钥签名了(小明转账5比特币给小红)这条信息并公布到全网,全网都可以验证这条信息是小明发送的,并且从历史的帐本里检查小明是否有5个以上比特币,确定有5个以上的比特币那么这条转账记录就生效,大家都认可即账本上有(小明转账5比特币给小红),这样无论是谁,从帐本里都可以知道小明剩余6个比特币,小红剩余5个比特币。
你要发现一个事实,你的钱不存储于任何机构,也就是无论你使用哪个冷钱包软件,他都不帮你存储比特币。比如你使用了imtoken,你的钱并不在于imtoken,你的钱是存储在比特币帐本里,全网任何人都拥有的帐本里,并且这个帐本都一模一样。这也就是为什么有些比特币软件,你下载下来要100多个G,那100多个G就是从比特币诞生到现在记录的所有转账,软件从这100多G里 找到你的余额,(假如帐本里有记录着某个地址往你这帐本里转账了1个比特币,那么你的余额就是1个比特币)
你要发现一个事实,imtoken冷钱包软件,他其实就是一个工具,你能使用它更好的转账而已。它做的事情就是让你导入了私钥或者助记词(私钥和助记词是一个东西),查找公开的帐本,查到你的最新余额,查到你的历史交易记录。你的转账,它帮你使用了你的私钥,发送到公网进行交易,而它只能将你的私钥存储在设备本地,而绝不上传(你也绝不允许别人知道你的私钥)。不管你使用多少个手机 多少冷钱包软件导入你的私钥,他们都不会出现掉线,被挤掉的情况,因为这只是个类似单机工具。
你要发现一个事实,这些过程,没有任何一个中心机构帮你做主,也就是你没有任何客服电话,假设你用imtoken软件,他只是个工具,类似单机应用而已,根本不能帮你解决一些售后问题,一旦你比特币转错,那是天王老子来了也拿不回来的,转账是不能撤销的,因为中心帐本是修改不掉的,全网所有人都同步一样的帐本,大家手里都有一本,假设有小部分人修改,这小部分人的帐本跟大部分人的不一样,这小部分人会马上纠正成部分人的,以此确保帐本是可靠的,否则这小部分人向大部分人转账,大部分人是不承认的。
五:创建钱包出现的事情。
问题来了,怎么创建一个比特币地址。一般的钱包软件,创建地址会给你一个私钥(或者助记词),一个地址(收款,查账用的地址)。
冷钱包软件一般是这样帮你创建比特币地址的,在一个非常非常大的数之间,随机挑选一个数字,作为你的私钥。等同于给你一枚硬币,抛256次,正面填1,反面填0,把10101010这样总共256位填写在一起,这个数字(是二进制)就是你的私钥(通常写成16进制甚至是12个助记词是一个意思),在人类灭亡,宇宙爆炸之前,没有可能有人使用一枚硬币抛256次出现正反顺序跟你一模一样,比特币地址总共有 2^256个地址。
那么问题来了,我们创建钱包除了私钥(助记词),还会给你一个唯一的地址。比特币地址 是由比特币私钥经过一系列算法生成的,imtoken钱包在我们导入私钥的时候帮我们做了这个操作,生成了比特币地址。
六:如何创建一个绝对安全的钱包,纸钱包
创建比特币的地址的过程,概率学上生成的地址不可能跟别人一样,创建地址其实是不需要联网的。我们创建的地址只是那2^256个里面的一个而已。
我们可以这样处理。
1.使用不联网的设备 单机生成这个比特币私钥密码假设为Q(或者手抛256次硬币),使用私钥生成比特币地址假设生成的比特币地址为P。(不联网,不可能被人窃取私钥)
2.购买100个比特币,并且让店家转账到比特币地址P。(店家转账成功 即全网都承认该店家向P地址转账了100个比特币)
3.销毁步骤1中使用的设备,记录1中的私钥Q写在纸张上面,比特币地址P可不写。(地址可以通过私钥单机生成,为了查询方便最好记录一下)
4.将这张记录了比特币私钥密码的纸张锁进去保险柜。
经过这几个步骤,你就得到了纸钱包,”钱被写进去了纸张“。但我们说过了,比特币实际上不在任何设备和载体上,比特币实际上在公开的帐本里,我们可以下载最新的公开帐本,这个帐本全网都知道,我们可以在帐本里找到这么一条(有人往我们1中生成的比特币地址P 转账了100个比特币,这是全网公认的)。纸钱包的威力在于,纸张写入的这个私钥Q,可以用来操作地址P的转账,并且全网会认可,这样我拥有了私钥Q,就相当于我拥有了100个比特币。
例如
我抛了256次硬币 或者使用不联网的设备使用编程软件机器模拟生成这256次的结果 二进制为256位0~1的数,这一串就是私钥。
1010011100010000100010001010110000111100101110110001110010000001010100110110110000111011100000000111100110101101111000110110110011111000001111011010111101101100110101111101011111101110000111000101100110100010111101111111110011001011001001110001011000101
我们将256位写成16进制形式,就变成64位0~F的数字 14e21115879763902a6d87700f35bc6d9f07b5ed9afafdc38b345eff9964e2c5 这一串大部分软件是可以导入的,这就是私钥的一般形势,我们把这一串记录到纸上。
使用特定算法生成比特币地址。18jbbe8s9JUosQ94xNPvQL48m5jaGuWFeQ
购买比特币转账到该地址 18jbbe8s9JUosQ94xNPvQL48m5jaGuWFeQ
记录私钥的纸张锁进去保险柜,不要透露。可以通过公网查询到该地址的余额。
某天需要变现,将纸张上面的私钥导入到冷钱包 就可以操作转账了。