🌕写在前面
- 🍊博客主页:kikoking的江湖背景
- 🎉欢迎关注🔎点赞👍收藏⭐️留言📝
- 🌟本文由 kikokingzz 原创,CSDN首发!
- 📆首发时间:🌹2021年1月12日🌹
- 🆕最新更新时间:🎄2021年1月12日🎄
- ✉️坚持和努力一定能换来诗与远方!
- 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢感谢感谢!
- 🔥热榜杂谈必看文:你说,区块链也是一种数据结构?
目录
🔥1.基本知识
🍊1.1 区块
区块是一种容器数据结构,这种数据结构被包含在公开账簿里,聚合了交易信息;而这个公开账簿是区块链;区块是构成区块链的基本单元,由区块头和区块体构成。
🍊1.2 区块高度
区块高度是用来标识一个区块在区块链中位置的一个概念。
🍓为什么区块高度不能唯一标识一个区块?
因为在同一时间,有可能存在两个或两个以上的区块,他们相对于整条区块链来说,处于平等的位置,所以他们有着相同的区块高度。
✨✨✨我是分割线✨✨✨
🔥2.货币的发展阶段
🍊2.1 以物易物
以物易物的方式需要满足双重偶然性,举个例子来说就是我这恰好有一袋苹果,对方那刚好也有一袋面粉,同时我们彼此需要对方的东西,这时候才可以进行交换。
🍊2.2 实物货币
此时我们通过贝壳或者一些金银来作为等价物作为中介来交换,此时就不需要像之前的以物换物那样满足双重偶然性了;但是由于实物容易磨损、不易携带、数量有限等缺点进而发展出了纸币
🍊2.3 纸币
现在我们生活中的一张红色的毛爷爷制作成本其实很低,但是却可以用它购买价值100元的商品,这是因为国家的信用在背书,让人们相信一文不值的货币具有100元的购买力
“信用背书”意思是信用担保。比如用公司的信誉作为你的“信用背书”,意思就是我公司担保你为可信之人,可以与他建立业务。
🍊2.4 中心化记账货币
移动电子支付的实质为记账货币,是通过银行、第三方支付机构、央行负责记账的,而央行具有整个国家大账本的记账权,本质上就是一种中心化的记账方式。无论是使用微信或者支付宝,我们都不得不完全信任第三方,因为我们的钱存储在他们这仅显示为数字,假如第三方数据遭受到篡改,我们的财产就会遭受到损失。
🍊2.5 比特币诞生
为解决此问题,则必须要有一套独立的电子货币体系:于是乎比特币诞生了!
中本聪在《一种点对点的电子现金支付系统》中提到:
为了满足比特币的要求,区块链技术应运而生了,或者说比特币是区块链兴起的源头,是区块链最早、最成功的应用。
✨✨✨我是分割线✨✨✨
🔥3.比特币的钱包、私钥和签名
🍊3.1 比特币的所有权确立
比特币的所有权是通过私钥和地址来确立的。
·地址类似于一个银行账户的账号,要想给一个人转比特币,只要知道他的比特币地址就可以了。
·私钥的作用主要是给交易来签名,用来证明这笔交易是由你发起的,别人收到这笔交易,通过验证签名就可以确认交易中涉及的资金是合法的。
🍊3.2 公钥与私钥
比特币采用的就是非对称密码体制 。
公钥加密发明于20世纪70年代,自从公钥加密被发明之后,一些不可逆的数学函数被提出,就是说只能向一个方向计算,但不可以向相反方向倒推。
在比特币中,公钥用于接收比特币,私钥用于生成其对应地址上支付比特币所必需的签名,以唯一确定这些比特币的所有权。具体到比特币地址的生成,其实是先产生私钥,私钥通过椭圆曲线算法这种不可逆的函数来产生公钥,公钥经过一系列不可逆的运算再来产生地址。
🍊3.3 钱包
从上述内容我们可以知道,私钥持有者才是比特币的拥有者,那么私钥放在哪里呢?
钱包是私钥的容器,是密钥的管理工具,它只包含密钥而不是确切的某一个代币。一个比特币钱包中包含一系列的密钥对,每个密钥对包括一个私钥和一个公钥。
🍓钱包定义
wallet.dat文件其实是用我们自己设置的密码加密过的,登录钱包软件时,需要用户输入密码来对文件进行解密得到真正的私钥,这时私钥存在钱包程序的内存中,当我们需要发起一笔交易时,钱包软件去内存中获取这一私钥来对交易进行签名操作。
🍓冷钱包
🍓热钱包
🍊3.4 交易
比特币交易就是:从一个比特币钱包向另一个中转账,每笔交易都有数字签名来保证安全。一个交易一旦发生那么就是对所有人都公开的,每个交易的历史可以最终追溯到相应的比特币最初被挖出来的那个点。用户用钱包中的私钥来签名交易,从而证明他们拥有交易的输出,也就是其中的比特币。
·比特币是以交易输出的形式储存在区块链中的。
比特币并不存在于任何地方,即使是硬盘上。持有比特币其实是拥有特定比特币的地址,但是其实所谓的币并不是直接就存在于这个地址中的,地址就相当于你的银行账户。世界上没有一个可以摸得着的实物,或者是一个数据文件,可以被叫做 “比特币” 的。有的只是各个地址之间的转账记录,余额时增时减。所有的交易都存放在一个非常大的账本文件中,这个文件叫做“区块链”。如果想知道一个比特币地址中的余额,那么这个不是直接存放在比特币地址中的,我们需要到区块链中去计算出来。
🍇UTXO
第一笔矿工挖矿的收入交易通常被称为Coinbase,它没有输入,所以交易输入的哈希总是被标记为0000...0000;其他任何一个交易输入都会唯一追溯到区块链上在本区块之前的某个交易哈希以及索引。通过交易哈希和索引,即可唯一确定一个未花费的交易输出——UTXO。这样,每一个交易输入都和之前的某个交易输出关联了起来。
对于Bob来说,他有来自Alice的30个BTC输入,但是有0输出,则可以计算出Bob的UTXO=20+10=30
📜例1
Q1:请写出Alice和Bob交易时产生的“输入”中的信息,及Bob的UTXO值
Q2:请写出Bob与Tom和Jimmy交易时产生的“输入”中的信息,及Bob的UTXO值
A1:其中记录了最初Alice拥有这些币是从哪个地址转给她的;此时Bob的UTXO=10+20=30
A2:由上述交易过程中的信息可知,在Bob与Tom、Jimmy的交易过程中一共输出了25BTC,由于Bob与Alice的单笔交易中:10BTC与20BTC无法单独满足,因此在与Tom和Jimmy的交易信息的输入:应当包含Alice向Bob的两笔交易所包含的所有信息;此时Bob的UTXO=30-20-5=5
🍇公钥脚本
从上述的例子中我们不难发现,