区块链之比特币篇(一)

什么是比特币?
比特币并不是真正的币,而是一种虚拟的加密数字货币,是电脑里一串虚拟的数字,由比特币软件通过一定的机制发行。比特币并不存在于任何地方,即使是硬盘上。有人如果持有比特币,那么他们其实是拥有特定比特币的地址,但是其实所谓的币并不是直接就存在于这个地址中的,地址就相当于你的银行账户。
如何像使用现金一样使用比特币呢?
答案是创建一笔交易。在一笔交易中,比特币的所有者(比特币的所有者是比特币地址)将所有权转移到一个新的比特币地址。所有的交易只记录资金的来源和去向。
一个交易长成啥样?
一笔比特币交易是一个含有输入值和输出值的数据结构,其中包含了将一笔资金从初始地址(输入)转移至目标地址(输出)的代码信息:版本规则、输入&其数量、输出&其数量、时间戳。
每一笔比特币交易创造输出,输出都会被比特币账簿记录下来。所有的输出都能创造一定数量的可用于支付的比特币(也就是UTXO)。这些UTXO会被整个网络所识别记录,其所有者可在未来的交易中使用它们。给隔壁老王发送比特币实际上是创造新的UTXO,并且能被他用于新的支付。
由于比特币采用的是 UTXO 模型,并非账户模型,并不直接存在“余额”这个概念,余额需要通过遍历整个交易历史得来。
比特币中的交易过程是怎样的?
需要两个东西,一个是比特币地址另一个是对应的私钥。
比特币地址是随机生成的,就是一串由字母和数字组成的字符串。比特币地址就好像一个透明的存钱罐,每个人都可以看到里面有什么,但是只有拥有私钥的人才能打开它。
私钥也是类似的一个字符串,但是这个是要严格保密的。
当 Alice 想要给 Bob 转币的时候,就用私钥来签署一段信息。这样,信息广播到比特币网络上,矿工就可以验证这次交易,把交易加入区块链中了。
输入和输出中的数额不相等怎么办?
因为比特币只是以交易记录的形式存在,所以很多时候你的一个地址上面其实是对应很多个交易的。可能 Jane 发送给了 Alice 40个比特币,Lucy 给了40个,Eve 给了20个,这些都是不同时间的不同的交易,他们并没有被合成到 Alice 的一个钱包里形成一个有100个币的文件,而是仍然作为独立的各个交易记录存在。
当 Alice 想要给 Bob 转币的时候,她的钱包就会找到几个交易,让它们的数额加起来正好是 Alice 想要转的数目。 当然,很可能在 Alice 想要给 Bob 转币的时候,她没有办法找到几个交易加起来正好是转账数额。也许她想要转 30 个币,但是钱包中根本没有一个交易或是多个交易的和正好是这个数目。
同时,她没有办法把一个交易切割成小的数额。就是这样,你没有办法切割一个大的交易成为多个小数额,每次都必须花掉整个交易。但是不用担心,系统会给她把多发送出去的币作为找零还给你。
Alice 这时就可以把 Jane 给她发送过来的40个币发送给 Bob,这样 Jane 就是“输入”,Bob 就是“输出”,“数额”是30个币,这是 Alice 真正想要转账的数目。这样,Alice 的钱包就会自动给她的这次交易创建两个输出:把30个币给 Bob,剩下的10个币放到一个新的地址中,这个是找回的零钱。
交易过程收费吗?
交易手续费是综合多种因素得出的。有些钱包可以让你手动设置手续费。交易中那部分没有被对方收到,同时也没有找零回来的就是手续费。这笔钱最终会被得到记账权的那个幸运的矿工所得到。
目前,很多矿工都不收手续费。但是随着每次挖矿成功系统奖励给矿工的币不断减少,未来肯定会有更多的矿工会收取手续费的。
交易中的签名加密是什么?
一笔比特币交易一旦被创建,它就会被资金所有者(可能存在多位所有者)签名,这个签名包含了前一个交易的哈希以及下一个用户的公钥。如果它是合法创建并签名的,则该笔交易现在就是有效的,它包含资金转移时所需要的所有信息。用户的私钥用于生成支付比特币所必需的签名,来证明资金的所有权,这样的签名加密是为了确保交易内容不被篡改。
网络中节点收到交易信息后,会对交易的合法性进行检查,资金所有者的签名加密是重要的验证依据,检查都通过后,则将交易标记为合法的未确认交易,才会在网络中进行广播。
UTXO(Unspent Transaction Output)
它是比特币交易的基本单位,是未经使用的一个交易输出。UTXO不能再分割,1 个UTXO可以是 1“聪” 的任意倍。
私钥
一个比特币钱包中包含一系列的密钥对,每个密钥对包括一个私钥和一个公钥。私钥是一个数字,通常是随机产生的。一个比特币地址中的所有资金的控制取决于相应私钥的所有权和控制权。私钥必须保密,因为一旦被泄露,相当于该私钥保护下比特币也就丢失了。
通过在一个密码学安全的随机源中取出一串随机字节,对其使用SHA256哈希算法进行运算,生成了一个256位的数字,这样的一个数字就可以作为私钥。以十六进制格式表示一个随机生成的私钥,即:
1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8
公钥
通过椭圆曲线算法可以从私钥计算得到公钥(512位),这是不可逆转的过程。由公钥经过单向的加密哈希算法生成的比特币地址以数字“1”开头,在交易中比特币地址就是收款人的地址。
哈希函数
密码学中的一种数学函数,比特币采用的是SHA-256函数。
SHA
是安全散列算法(Secure Hash Algorithm)的缩写,是一个密码散列函数家族,主要适用于数字签名标准。SHA256就是这个函数家族中的一个,是输出值为256位的哈希算法。到目前为止,还没有出现对SHA256算法的有效攻击。
钱包
比特币钱包是私钥的容器,钱包只包含私钥而不是比特币,每一个用户有一个包含多个私钥的钱包。钱包中包含成对的私钥和公钥,用户用这些私钥来签名交易。

猜你喜欢

转载自blog.csdn.net/weixin_43783865/article/details/84428359
今日推荐