发布网友 发布时间:2022-04-20 13:14
共1个回答
热心网友 时间:2023-07-09 21:38
转。。
比特币原理
下面开始用简练的话来介绍比特币原理:
1.首先你要知道公钥和私钥的概念(已经懂的不用看这部分了)
公钥私钥是现代密码学分支非对称性加密里面的名词,通常都是用公钥加密信息,用私钥解密信息,为什么要这样? 因为你看电视剧的时候,发电报那种都是对称性加密,这种加密方式缺点是显而易见的,如果被人知道了密钥和加密方法,于是按照加密方法反着来就能解密。 一直到非对称性加密这种情况才有所改观,公钥就是可以对全世界公开的密钥,比如你和google通讯,用google给的1024位的公钥加密,送到google那里只有他有对应的私钥,只有他能解密,于是就保证了通讯安全
2.比特币主要用了ECDSA,也就是椭圆曲线签名算法,这个算法有两个特性,注意这两点对下面至关重要
a.只要知道私钥,可以算出相应的公钥;
b.你用私钥签名过的东西,可以用公钥算一下是不是你签的;
3.知识准备完了,下面开始讲比特币的交易,比特币其实没有钱包,只有交易账单,整个比特币就是一大堆交易账单
比如:
账单1 从A转到B 转了XXX比特币
账单2 从B转到C和D 转了XXX比特币
账单3 从C转到E 转了XXX比特币
。。。。任何人只要下载了客户端都能接收到从比特币成立那一天起的所有账单,所以,只要把所有账单都下载全了自然知道每个账户上应该剩多少钱(这里仔细思考下)
4.比特币的账户,就是刚才讲的一段公钥
5.下面我开始贴一个比特币的账单,这里是核心部分了!!! 每个账单都是一段数据,你签完了以后会发送到全网,把数据结构逆向成易懂的中文解释如下:
FROM(谁发送的,包括两部分)
Previous tx: 你要花的这笔钱的那个账单的id, 也就是说,你花的任何一笔钱都应该有人转给你过,需要出示那个账单的id
scriptSig: 你对这笔交易的签名,就是把单子用你的私钥做hash,只有你能做这个hash
TO(谁接受,包括两部分)
Value: 要发多少
scriptPubKey: 对方的公钥,比特币账户就是一段公钥
6.等你签完单子以后,开始往全网发送,怎么发呢? 比特币通讯没那么复杂,你可以类比成IRC频道,但和普通的“IRC”不同的是,任何一个客户端都是一台“IRC”服务器,当你启动客户端的时候,会接收到周围的有公网IP的客户端地址,就是“服务器”列表,这个列表也不断的刷新,都是其他的比特币用户,于是你在这个“IRC”喊一句话的时候,周围的人会听到,进而扩散的全世界。
7.把签单发送到全世界以后,所有收到这个单子的客户端会效验你这个单子对不对,比如会效验你的签名,是不是你发的,会效验你是否有那么多钱(根据历史交易可以推算出你有多少钱可以花)
如果这个交易大家算过没问题了,基本上就算转账成功了。
8.实际上现在对方已经接受了比特币,但是要想花的话,他得有那个地址(公钥)对应的私钥。于是他就能填下一个单子的 FROM头部,Previous tx就是刚才这笔交易的序号,scriptSig填用他私钥签名过的hash
如此往复。。。
挖矿
然后再解释挖矿部分,我在极力的简化整个过程,以方便大家理解,所以上面特地去掉了挖矿、双花问题(伪造货币、同一笔钱花两次)这些
其实上面那个解释读完了就会有个疑问,既然都是交易记录,那最初的钱是哪里来的?交易得有原始的那部分钱,那笔钱就是挖矿进来的
挖到矿以后也会得到一个交易记录的东西,但是FROM那边很特殊,整个体系也认可这个FROM
另外实际上,账单是要附着到块(block)上的 ,账单发到全网以后,需要全网去计算正不正确
刚才不是说全网一块算么,比特币规定,第一个算出来的有奖励,就是挖矿所得,现在这个奖励数额是25比特币,那么。。。。。
我只用一台pc算是不是太弱了,于是就有了矿机,挖矿这东西的作用就是核算比特币的交易是不是正确,矿机就是为了比别人算的快
洗钱
很多谈论比特币的人如果不是真的资深,都无法解释洗钱的问题,而这个问题才是关系到比特币的本质。 比特币为什么能洗钱,这个也是比特币的特性决定的,在上面我解释过比特币的账单,那个只是1个进(FROM),一个出(TO),实际上比特币的协议允许无数个进,无数个出,只要FROM的总额等于TO的总额就可以,为了大家更加形象的了解我特地从实际的比特币交易记录里面找了一笔多个FROM多个TO的交易,截图如下,链接见这里https://blockchain.info/zh-cn/tx/2a93e411d7cc829675d93fe2cd18fe32cd8833757cede9d27d8fb2485ef968