主页 > imtoken海外版 > 比特币和区块链学习笔记(二)比特币技术介绍
比特币和区块链学习笔记(二)比特币技术介绍
文章目录
比特币的基本概念比特币的性质比特币的组成部分用户身份用户身份
用户身份包括私钥和公钥)
公钥用于接收,私钥作为补充。
如何获取:随机选择私钥,然后通过ECC(椭圆曲线算法)生成公钥(这样就无法从公钥中推导出私钥)
比特币钱包
Hot Wallet:(在线)智能手机应用或在线网络钱包
冷存储:(离线)纸质钱包(???),硬件钱包(存储在硬盘中..),大脑钱包(还记得吗?)
Transactions Unspent 交易输出模型(UTXO 模型)
未使用的交易输出?
其实我这里还挺糊涂的,然后看到大佬的文章
这可能意味着我的模型只记录了我没有花的钱
比如我有一个10元(没有立美),一个5元,一个1元
那么第一条记录就是未花费的10、5、1
然后我花了8块钱买了东西,10块被扔掉了,我得到了2块
那么记录是5、2、1,或者这些未花掉的钱
在这种情况下,账本会记录最后剩余的,不需要记录历史中的所有交易,避免了记录的扩展。
交易
花费比特币需要证明来验证之前的交易输出
P2PKH
什么是P2PKH,简单来说就是支付给公钥的哈希
脚本是
OP_DUP OP_HASH160 <PubkeyHash> OP_EQUALVERIFY OP_CHECKSIG
解锁脚本是
PUSHDATA(<Cafe Signature>) <Cafe Public Key>
发送方的签名脚本被解析作为整个脚本的头部。
在P2PKH交易中,签名脚本包含了一个secp256k1的签名,和完整的公钥。
这样和上面的公钥脚本连在一起就创建了完整的脚本
知乎说这是最常用的交易方式,可以很好的保护公钥
这个过程主要是验证
P2SH
顾名思义,付款到脚本地址。和刚才不同的是:
如果要在P2PKH地址转账如果你有十元比特币如果你有1币,只需要提供公钥和私钥签名,形式比较固定。
这个公钥和私钥签名其实是一种验证方式
我的目的是验证
然后有人发明了一种新的验证方法,就是在签名脚本中提供一个输出脚本,只要提供的输出脚本的hash值和你的hash值配对,就用这个输出脚本来验证。
这让你可以更自由地设置更复杂的钱包。
具体来说,转出条件要写在赎回脚本中如果你有十元比特币如果你有1币,P2SH中的S代表赎回脚本。
其他方法
除了这两个之外,还有P2PK(Pay-to-Public-Key)、MS(Multiple Signatures)
都是验证方式
记录保存(区块链)记录保存(区块链)
这涉及到我们经常听到的区块链。
我们的加密货币交易一般都存储在分布式数据库中,其特点是
默克尔树默克尔树
这棵树我第一次听说,它是用来验证存储的数据的。
这棵树与二叉树非常相似。我从老板的博客里找到了一张图片
在构造这棵树的时候,首先检查数据块的哈希值,然后将数据块的哈希值成对配对(有奇数时最后一个与自身配对),然后计算上一层的hash值,直到计算出根hash值。
整个过程和图片一样,从叶子到根部。
这样一棵树的好处是很容易验证数据的正确性,你只需要验证根节点的hash值,因为如果任何一个块有问题,影响都会传递给根节点。希腊价值。
另外在寻找不同数据的时候,也可以遍历树,找出问题所在的数据块。
对区块挖矿的初步了解
经常听说比特币在挖矿,然后还有矿机、矿卡、矿池等等。
那没有真正的我的,怎么挖?
后来才知道挖矿是更新数据库的方式。
Consensus(proof-of-word) 共识
有了这个挖矿,有一个问题,就是我们如何保证独立工作的节点都是老老实实工作,而不被黑客入侵呢?
双花攻击/双花攻击
是一笔资金,攻击者反复发起和撤销交易,反复在账户中存入一定数量的代币,在它们之间转移资金以获取利润。
我搜了一下,对这对花的攻击有不少,有
总而言之,你有一笔钱,你让他一直用A方式花掉,也让他用B方式花掉。
(我怎么感觉这就是银行和金融界每天都在做的事情???)
女巫攻击
在对等网络中,单个节点具有多个身份,通过控制系统中的大部分节点来削弱冗余备份的作用。
题外话,这个名字最早来源于1973年的小说《女巫》(Sybil)。她被诊断出患有分离性身份障碍,这是 16 种人格的组合。
这个单一节点拥有多个身份是完美的匹配。
工作量证明 (PoW) 工作量证明
简单的理解是确认你已经完成了一定的工作量的证明。
需要发起者进行一定的计算。
你获得多少货币取决于你为挖矿贡献的有效工作,计算能力越高,挖矿时间越长,你获得的货币就越多
比特币的主链
最长链原理
区块确认
在 n 个区块确认后确认交易
共识规则变更 共识规则变更 硬分叉 硬分叉
硬分叉是由于共识协议不同,旧节点不接受新区块,从而产生新旧链的过程。
这意味着节点不再更新到最新版本,无法处理交易或向区块链添加新区块。
硬分叉的原因有很多,比如
等等
软叉
软分叉是对加密货币的向后兼容更改,这意味着不更新的节点可以处理交易并将块添加到区块链,因此它们不会破坏新协议。
我所说的仍然令人困惑。从图上看,意思是当有新规则出现时,链条分成两部分,一是只遵守旧协议,二是新旧都遵守,最后才能回去。
在硬分叉的情况下,新的不必遵守旧协议。
UTXO:UnspentTransactionOutput 的未使用输出
比特币开发者指南(二)续 --- P2PKH 脚本验证和 P2SH 脚本
bit 币种P2PKH(pay-to-public-key-hash)的锁定脚本和解锁脚本
比特币地址中的P2PK、P2SH、P2PKH是什么?
比特币的P2SH机制
默克尔树
【封堵风云路】双花攻击
什么是女巫攻击 |黄金百科